diff --git a/.circleci/config.yml b/.circleci/config.yml index 4185f4d58f9..3b36cc48022 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,12 +3,18 @@ version: 2.1 orbs: browser-tools: circleci/browser-tools@1.4.8 -commands: - test_core: +executors: + docker-container: parameters: - py: - default: "310" + python_version: + description: "python version" + default: "3.12" type: string + docker: + - image: cimg/python:<>-browsers + +commands: + test_core: steps: - checkout - browser-tools/install-chrome @@ -16,23 +22,29 @@ commands: - run: name: Install dependencies command: | - cd packages/python/plotly - python -m venv venv - . venv/bin/activate - pip install --upgrade pip wheel - pip install -r ./test_requirements/requirements_<>_core.txt + curl -LsSf https://astral.sh/uv/install.sh | sh + uv venv + source .venv/bin/activate + uv pip install . + uv pip install -r ./test_requirements/requirements_core.txt + - run: + name: List installed packages and python version + command: | + source .venv/bin/activate + uv pip list + python --version - run: name: Test core command: | - cd packages/python/plotly - . venv/bin/activate - pytest plotly/tests/test_core + source .venv/bin/activate + python -m pytest tests/test_core no_output_timeout: 20m test_optional: parameters: - py: - default: "310" + pandas_version: + type: string + numpy_version: type: string steps: - checkout @@ -41,105 +53,74 @@ commands: - run: name: Install dependencies command: | - cd packages/python/plotly - python -m venv venv - . venv/bin/activate - pip install --upgrade pip wheel - pip install -r ./test_requirements/requirements_<>_optional.txt + curl -LsSf https://astral.sh/uv/install.sh | sh + uv venv + source .venv/bin/activate + uv pip install . + uv pip install -r ./test_requirements/requirements_optional.txt cd js npm ci npm run build - - run: - name: Install plotly-geo - command: | - cd packages/python/plotly-geo - . ../plotly/venv/bin/activate - pip install -e . + + - when: + condition: + not: + equal: + - <> + - "" + steps: + - run: + name: Install pandas + command: | + source .venv/bin/activate + uv pip install pip + python -m pip install pandas==<> numpy==<> + - run: name: Test core command: | - cd packages/python/plotly - . venv/bin/activate - pytest plotly/tests/test_core + source .venv/bin/activate + python -m pytest tests/test_core no_output_timeout: 20m + - run: + name: List installed packages and python version + command: | + source .venv/bin/activate + uv pip list + python --version - run: name: Test optional command: | - cd packages/python/plotly - . venv/bin/activate - pytest plotly/tests/test_optional + source .venv/bin/activate + python -m pytest tests/test_optional no_output_timeout: 40m - run: name: Test utils command: | - cd packages/python/plotly - . venv/bin/activate - pytest _plotly_utils/tests/ + source .venv/bin/activate + python -m pytest tests/test_plotly_utils/ no_output_timeout: 20m - run: name: Test io command: | - cd packages/python/plotly - . venv/bin/activate - pytest plotly/tests/test_io + source .venv/bin/activate + python -m pytest tests/test_io no_output_timeout: 20m - run: - name: Test dependencdies not imported + name: Test dependencies not imported command: | - cd packages/python/plotly - . venv/bin/activate - pytest -x test_init/test_dependencies_not_imported.py + source .venv/bin/activate + python -m pytest -x test_init/test_dependencies_not_imported.py - run: name: Test lazy imports command: | - cd packages/python/plotly - . venv/bin/activate - pytest -x test_init/test_lazy_imports.py - test_orca: - parameters: - py: - default: "310" - type: string - steps: - - checkout - - browser-tools/install-chrome - - browser-tools/install-chromedriver - - run: - name: Install dependencies - command: | - cd packages/python/plotly - python -m venv venv - . venv/bin/activate - pip install --upgrade pip wheel - pip install -r ./test_requirements/requirements_<>_optional.txt - - run: - name: Install plotly-geo - command: | - cd packages/python/plotly-geo - . ../plotly/venv/bin/activate - pip install -e . - - run: - name: Install orca - command: | - npm install electron@1.8.4 - npm install orca - sudo apt-get update - sudo apt-get install -y poppler-utils libxtst6 xvfb libgtk2.0-0 libgconf-2-4 libnss3 libasound2 rename - echo 'export PATH="/home/circleci/project/node_modules/.bin:$PATH"' >> $BASH_ENV - - run: - name: Test orca - command: | - cd packages/python/plotly - . venv/bin/activate - pytest plotly/tests/test_orca - no_output_timeout: 20m - - store_artifacts: - path: packages/python/plotly/plotly/tests/test_orca/images/linux/failed + source .venv/bin/activate + python -m pytest -x test_init/test_lazy_imports.py jobs: check-code-formatting: docker: - - image: cimg/python:3.7 + - image: cimg/python:3.12 steps: - checkout @@ -155,115 +136,40 @@ jobs: . venv/bin/activate black --check . --exclude venv - # Core - python_38_core: - docker: - - image: cimg/python:3.8-browsers - steps: - - test_core: - py: "38" - - python_39_core: - docker: - - image: cimg/python:3.9-browsers - steps: - - test_core: - py: "39" - - python_310_core: - docker: - - image: cimg/python:3.10-browsers - steps: - - test_core: - py: "310" - - python_311_core: - docker: - - image: cimg/python:3.11-browsers - steps: - - test_core: - py: "311" - - python_312_core: - docker: - - image: cimg/python:3.12-browsers - steps: - - test_core: - py: "312" - - # Optional - - python_38_optional: - docker: - - image: cimg/python:3.8-browsers - steps: - - test_optional: - py: "38" - - python_39_optional: - docker: - - image: cimg/python:3.9-browsers - steps: - - test_optional: - py: "39" - - python_310_optional: - docker: - - image: cimg/python:3.10-browsers - steps: - - test_optional: - py: "310" - - python_311_optional: - docker: - - image: cimg/python:3.11-browsers - steps: - - test_optional: - py: "311" - - python_312_optional: - docker: - - image: cimg/python:3.12-browsers - steps: - - test_optional: - py: "312" - - # Pandas - - python_39_pandas_2_optional: - docker: - - image: cimg/python:3.9-browsers - steps: - - test_optional: - py: "39_pandas_2" - - # No numpy - python_312_no_numpy: - docker: - - image: cimg/python:3.12-browsers + test_core_py: + parameters: + python_version: + default: "3.12" + type: string + executor: + name: docker-container + python_version: <> steps: - - run: - name: Check that numpy is not installed - command: | - if pip list | grep numpy > /dev/null 2>&1 - then exit 1 - else exit 0 - fi - - test_optional: - py: "312_no_numpy" + - test_core - python_312_np2: - docker: - - image: cimg/python:3.12-browsers + test_optional_py: + parameters: + python_version: + default: "3.12" + type: string + pandas_version: + default: "" + type: string + numpy_version: + default: "" + type: string + executor: + name: docker-container + python_version: <> steps: - test_optional: - py: "312_np2" - + pandas_version: <> + numpy_version: <> # Percy - python_39_percy: + python_311_percy: docker: - - image: cimg/python:3.9-browsers + - image: cimg/python:3.11-browsers environment: PERCY_ENABLED: True PERCY_PROJECT: plotly/plotly.py @@ -280,62 +186,44 @@ jobs: - run: name: Install requirements command: | - python -m venv venv - . venv/bin/activate - pip install --upgrade pip wheel - pip install -e ./packages/python/plotly - pip install -e ./packages/python/plotly-geo - pip install -r ./packages/python/plotly/test_requirements/requirements_39_pandas_2_optional.txt + curl -LsSf https://astral.sh/uv/install.sh | sh + uv venv + source .venv/bin/activate + uv pip install -e . + uv pip install -r test_requirements/requirements_optional.txt + - run: name: Build html figures (Pandas 2) command: | - . venv/bin/activate - python test/percy/plotly-express.py + source .venv/bin/activate + python tests/percy/plotly-express.py - run: name: Build html figures (Pandas 1) and compare command: | - . venv/bin/activate - mkdir test/percy/pandas2 - mv test/percy/*.html test/percy/pandas2/ - # 1.1 is the earliest minor with Py3.9 wheels - pip install "pandas==1.1.5" - python test/percy/plotly-express.py - python test/percy/compare-pandas.py - rm -rf test/percy/pandas2 + source .venv/bin/activate + mkdir tests/percy/pandas2 + mv tests/percy/*.html tests/percy/pandas2/ + uv pip install pip + python -m pip install pandas==1.5.3 numpy==1.26.4 + python tests/percy/plotly-express.py + python tests/percy/compare-pandas.py + rm -rf tests/percy/pandas2 - run: - name: Run percy snapshots + name: List installed packages and python version command: | - npm i @percy/cli - npx percy snapshot -c test/percy/snapshots.yml test/percy/ - rm test/percy/*.html - - # Chart studio - python_38_chart_studio: - docker: - - image: cimg/python:3.8 - resource_class: large - - steps: - - checkout - - run: - name: Install dependencies - command: | - cd packages/python/chart-studio - python -m venv venv - . venv/bin/activate - pip install --upgrade pip wheel - pip install -r ./test_requirements/requirements_38.txt + source .venv/bin/activate + uv pip list + python --version - run: - name: Tests + name: Run percy snapshots command: | - cd packages/python/chart-studio - . venv/bin/activate - pytest -x chart_studio/tests/ - no_output_timeout: 20m + npm i @percy/cli + npx percy snapshot -c tests/percy/snapshots.yml tests/percy/ + rm tests/percy/*.html plotlyjs_dev_build: docker: - - image: cimg/python:3.8-node + - image: cimg/python:3.12-node environment: LANG: en_US.UTF-8 resource_class: large @@ -345,54 +233,36 @@ jobs: - run: name: Install dependencies command: | - cd packages/python/plotly - python -m venv venv - . venv/bin/activate - pip install --upgrade pip wheel - pip install -r ./test_requirements/requirements_38_core.txt black inflect - pip install jupyterlab - - run: - name: Update jupyter widget plotly.js version - command: | - cd packages/python/plotly - . venv/bin/activate - python setup.py updateplotlywidgetversion + curl -LsSf https://astral.sh/uv/install.sh | sh + uv venv + source .venv/bin/activate + uv pip install -e . + uv pip install -r ./test_requirements/requirements_core.txt black inflect jupyterlab - run: name: Update plotly.js to dev command: | - cd packages/python/plotly - . venv/bin/activate - python setup.py updateplotlyjsdev + source .venv/bin/activate + python commands.py updateplotlyjsdev - run: name: Test core command: | - cd packages/python/plotly - . venv/bin/activate + source .venv/bin/activate locale - pytest -k 'not nodev' plotly/tests/test_core + pytest -k 'not nodev' tests/test_core no_output_timeout: 20m - - run: - name: Commit - command: | - cd packages/python/plotly - git config --global user.email "you@example.com" - git config --global user.name "Your Name" - git add -A - git commit -m "Codegen" - when: always - run: name: Build source distribution packages command: | - cd packages/python/plotly - . venv/bin/activate - python setup.py sdist + source .venv/bin/activate + uv pip install build + python -m build --sdist --wheel -o dist when: always - store_artifacts: - path: packages/python/plotly/dist + path: dist/ full_build: docker: - - image: continuumio/miniconda3:24.3.0-0 + - image: cimg/python:3.12-node environment: LANG: en_US.UTF-8 resource_class: large @@ -400,22 +270,12 @@ jobs: steps: - checkout - - run: - name: Create conda environment - command: | - conda config --remove channels defaults - conda config --add channels conda-forge - conda create -n env --yes python=3.9 conda-build=3.28.4 conda-verify - conda install -n env -c conda-forge jupyterlab nodejs=16 - conda init bash - mkdir output - - run: name: initial NPM Build command: | - eval "$(conda shell.bash hook)" - conda activate env - cd packages/python/plotly/js + python -m venv venv + . venv/bin/activate + cd js npm ci npm run build git status @@ -423,51 +283,23 @@ jobs: - run: name: PyPI Build command: | - eval "$(conda shell.bash hook)" - conda activate env - cd packages/python/plotly - python setup.py sdist bdist_wheel - cp -R dist ../../../output/dist - git status - - - run: - name: Conda Build - command: | - eval "$(conda shell.bash hook)" - conda activate env - cd packages/python/plotly - conda build recipe/ - mv /opt/conda/envs/env/conda-bld/noarch/plotly*.tar.bz2 ../../../output + . venv/bin/activate + pip install build + python -m build --sdist --wheel -o dist + cp -R dist output git status - - run: - name: Build Widget javascript bundle - command: | - eval "$(conda shell.bash hook)" - conda activate env - cd packages/python/plotly/js - npm ci - npm run build - - run: name: Zip output command: | tar czf output.tgz output - - run: - name: Git Diff - command: | - git status - git diff - - store_artifacts: path: output.tgz build-doc: resource_class: xlarge docker: - # specify the version you desire here - # use `-browsers` prefix for selenium tests, for example, `3.9-browsers` - image: cimg/python:3.9-browsers steps: @@ -476,52 +308,33 @@ jobs: - "dc:5f:39:48:00:b4:72:34:e1:d2:c4:e1:1f:d1:e2:ce" #plotlydocbot - checkout - - # Download and cache dependencies - - restore_cache: - key: v2-dependencies-{{ checksum "doc/requirements.txt" }}-{{ checksum ".circleci/config.yml" }} - browser-tools/install-chrome - browser-tools/install-chromedriver - run: - name: install dependencies + name: Install dependencies command: | cd doc - python -m venv venv - . venv/bin/activate - pip install --upgrade pip wheel - pip uninstall -y plotly - pip install -r requirements.txt + curl -LsSf https://astral.sh/uv/install.sh | sh + uv venv + source .venv/bin/activate + uv pip install -r requirements.txt if [ "${CIRCLE_BRANCH}" != "doc-prod" ]; then - pip uninstall -y plotly - cd ../packages/python/plotly - pip install -e . + uv pip uninstall plotly + cd .. + uv pip install -e . cd js npm ci npm run build - cd ../../../../doc + cd ../doc fi cd .. - - run: - name: Install orca - command: | - npm install electron@1.8.4 - npm install orca - sudo apt-get update - sudo apt-get install -y poppler-utils libxtst6 xvfb libgtk2.0-0 libgconf-2-4 libnss3 libasound2 rename - echo 'export PATH="/home/circleci/project/node_modules/.bin:$PATH"' >> $BASH_ENV - - - save_cache: - paths: - - ./doc/venv - - ./doc/node_modules - key: v1-dependencies-{{ checksum "doc/requirements.txt" }}-{{ checksum ".circleci/config.yml" }} - run: name: make html command: | cd doc - . venv/bin/activate + source .venv/bin/activate echo ${mapbox_token} > python/.mapbox_token make -kj8 || make -kj8 curl https://raw.githubusercontent.com/plotly/graphing-library-docs/master/front-matter-ci.py > front-matter-ci.py @@ -570,15 +383,15 @@ jobs: name: make doc command: | cd doc - . venv/bin/activate + source .venv/bin/activate # For the API doc, we need to use the local version of plotly # since we are tweaking the source because of # graph_objs/graph_objects if [ "${CIRCLE_BRANCH}" == "doc-prod" ]; then - pip uninstall -y plotly - cd ../packages/python/plotly - pip install -e . - cd ../../../doc + uv pip uninstall plotly + cd .. + uv pip install -e . + cd doc cd apidoc make html cd _build/html @@ -610,18 +423,30 @@ workflows: build: jobs: - - python_38_core - - python_39_core - - python_310_core - - python_311_core - - python_312_core - - python_38_optional - - python_39_optional - - python_310_optional - - python_311_optional - - python_312_optional - - python_39_pandas_2_optional - - python_39_percy - - python_312_no_numpy - - python_312_np2 + - test_core_py: + matrix: + parameters: + python_version: + - "3.8" + - "3.9" + - "3.10" + - "3.11" + - "3.12" + - "3.13" + - test_optional_py: + matrix: + parameters: + python_version: + - "3.8" + - "3.9" + - "3.10" + - "3.11" + - "3.12" + - "3.13" + - test_optional_py: + name: "test_optional_py-3.9_pandas-1.2.4" + python_version: "3.9" + pandas_version: "1.2.4" + numpy_version: "1.26.4" + - python_311_percy - build-doc diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 1d36346c0d4..00000000000 --- a/.flake8 +++ /dev/null @@ -1,2 +0,0 @@ -[flake8] -max-line-length = 88 \ No newline at end of file diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index de2c3848b55..00000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -packages/python/plotly/plotly/_version.py export-subst diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 288a71d2de9..b5c5d2649d0 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -7,7 +7,7 @@ below :-). ### Documentation PR - [ ] I've [seen the `doc/README.md` file](https://github.com/plotly/plotly.py/blob/master/doc/README.md) -- [ ] This change runs in the current version of Plotly on PyPI and targets the `doc-prod` branch OR it targets the `master` branch +- [ ] This change runs in the current version of Plotly on PyPI and targets the `doc-prod` branch OR it targets the `main` branch - [ ] If this PR modifies the first example in a page or adds a new one, it is a `px` example if at all possible - [ ] Every new/modified example has a descriptive title and motivating sentence or paragraph - [ ] Every new/modified example is independently runnable @@ -27,7 +27,7 @@ below :-). ## Code PR -- [ ] I have read through the [contributing notes](https://github.com/plotly/plotly.py/blob/master/contributing.md) and understand the structure of the package. In particular, if my PR modifies code of `plotly.graph_objects`, my modifications concern the `codegen` files and not generated files. +- [ ] I have read through the [contributing notes](https://github.com/plotly/plotly.py/blob/master/CONTRIBUTING.md) and understand the structure of the package. In particular, if my PR modifies code of `plotly.graph_objects`, my modifications concern the `codegen` files and not generated files. - [ ] I have added tests (if submitting a new feature or correcting a bug) or modified existing tests. - [ ] For a new feature, I have added documentation examples in an existing or diff --git a/.github/workflows/test-release.yml b/.github/workflows/test-release.yml new file mode 100644 index 00000000000..12d6e039559 --- /dev/null +++ b/.github/workflows/test-release.yml @@ -0,0 +1,67 @@ +name: Publish Python 🐍 distribution πŸ“¦ to PyPI and TestPyPI + +on: + workflow_dispatch + +jobs: + build: + name: Build distribution πŸ“¦ + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install Node + uses: actions/setup-node@v2 + with: + node-version: '18' + + - name: Install npm dependencies + run: | + cd js + npm ci --verbose + npm run build --verbose + + - name: Install pypa/build + run: >- + python3 -m + pip install + build + --user + - name: Build a binary wheel and a source tarball + run: python3 -m build + - name: Store the distribution packages + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + publish-to-testpypi: + name: Publish Python 🐍 distribution πŸ“¦ to TestPyPI + needs: + - build + runs-on: ubuntu-latest + + environment: + name: testpypi + url: https://test.pypi.org/p/plotly + + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + - name: Publish distribution πŸ“¦ to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7f8615b184c..0da5fe396a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ 0 0.html iframe_figures/ -packages/python/plotly/plotly/tests/test_orca/images/linux/failed/ +tests/test_orca/images/linux/failed/ *.egg-info @@ -15,6 +15,7 @@ doc/python/raw.githubusercontent.com/ # Don't ignore dataset files !*.csv.gz +!*.geojson.gz *.ipynb @@ -48,9 +49,9 @@ plotly.egg-info/ # macOS utility file **/.DS_Store -plotly/tests/test_orca/images/*/failed -plotly/tests/test_orca/images/*/tmp -/plotly-package/plotly/tests/test_core/test_offline/plotly.min.js +tests/test_orca/images/*/failed +tests/test_orca/images/*/tmp +tests/test_core/test_offline/plotly.min.js temp-plot.html .vscode doc/python/.ipynb_checkpoints @@ -58,11 +59,7 @@ doc/python/.mapbox_token doc/.ipynb_checkpoints tags doc/check-or-enforce-order.py +plotly/package_data/widgetbundle.js -packages/javascript/jupyterlab-plotly/lib/ -packages/python/plotly/jupyterlab_plotly/labextension/ -packages/python/plotly/jupyterlab_plotly/nbextension/index.js* -packages/python/plotly/plotly/package_data/widgetbundle.js - -test/percy/*.html -test/percy/pandas2/*.html +tests/percy/*.html +tests/percy/pandas2/*.html diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index b85fe421d04..00000000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,6 +0,0 @@ -repos: - - repo: https://github.com/ambv/black - rev: 22.3.0 - hooks: - - id: black - language_version: python diff --git a/CHANGELOG.md b/CHANGELOG.md index 30def8488f5..d201359d273 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,24 @@ -# Change Log +# Changelog All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## Unreleased + +### Fixed +- Fix third-party widget display issues in v6 [[#5102]https://github.com/plotly/plotly.py/pull/5102] + +## [6.0.1] - 2025-03-14 + +### Updated +- Updated Plotly.js from version 3.0.0 to version 3.0.1. See the [plotly.js CHANGELOG](https://github.com/plotly/plotly.js/blob/master/CHANGELOG.md#301----2025-02-18) for more information. + + +### Fixed +- Fix `TypeError` when using `orjson` to serialize `pandas.NA` [[#5040](https://github.com/plotly/plotly.py/pull/5040)]. +- Fix issue where using `category_orders` on `px.pie` raised `ColumnNotFoundError` [[#5000](https://github.com/plotly/plotly.py/pull/5000)]. +- Fix incorrect `DeprecationWarning` shown when creating a `px` chart [[#5080](https://github.com/plotly/plotly.py/pull/5080), [#5086](https://github.com/plotly/plotly.py/pull/5086)] + + ## [6.0.0] - 2025-01-28 ### Added @@ -716,7 +733,7 @@ This version includes several performance improvements ([#2368](https://github.c - Introduce range breaks on date axes (for example, to remove week-ends) via `layout.xaxis.rangebreaks` - Introduce a new unified x (or y) hovermode (`layout.hovermode="x unified"`), in which the hover box shows the information for all traces at a given x (or y) position - Add `node.customdata` and `link.customdata` to sankey traces -- Updated [contributing notes](https://github.com/plotly/plotly.py/blob/master/contributing.md) for more explanations on how to contribute to plotly.py [#2290](https://github.com/plotly/plotly.py/pull/2290). Please give feedback on these notes! +- Updated [contributing notes](https://github.com/plotly/plotly.py/blob/master/CONTRIBUTING.md) for more explanations on how to contribute to plotly.py [#2290](https://github.com/plotly/plotly.py/pull/2290). Please give feedback on these notes! - Updated documentation examples [#2325](https://github.com/plotly/plotly.py/pull/2325), and to show how to color links in Sankey diagrams [#2291](https://github.com/plotly/plotly.py/pull/2291). - Special thanks to [@SylwiaOliwia2](https://github.com/SylwiaOliwia2) and [@dangercrow](https://github.com/dangercrow) for improving our documentation! @@ -1738,7 +1755,7 @@ This is a major version with many exciting updates. See the [Introducing plotly. - Error message for `plotly.figure_factory.create_choropleth` is now helpful to Anaconda users who do not have the correct modules installed for the County Choropleth figure factory. ### Changed / Deprecated -Please see the [migration guid](migration-guide.md) for a full list of the changes and deprecations in version 3.0.0 +Please see the [migration guide](MIGRATION_GUIDE.md) for a full list of the changes and deprecations in version 3.0.0 diff --git a/contributing.md b/CONTRIBUTING.md similarity index 73% rename from contributing.md rename to CONTRIBUTING.md index 6c27f87e593..a9c8fa76232 100644 --- a/contributing.md +++ b/CONTRIBUTING.md @@ -20,14 +20,14 @@ There are many ways to contribute to plotly.py. To contribute effectively, it is is [generated from the Plotly.js schema](https://plotly.com/python/figure-structure/), so changes to be made in this package need to be [contributed to Plotly.js](https://github.com/plotly/plotly.js) or to the `codegen` system - in `packages/python/plotly/codegen`. Most of the codegen code concerns the generation of docstrings from + in `codegen/`. Most of the codegen code concerns the generation of docstrings from the schema JSON in Plotly.js. Traces and Layout classes have a direct correspondence with their Javascript - counterpart. Higher-level methods that work on figures regardless of the current schema (e.g., `BaseFigure.for_each_trace`) are defined in `packages/python/plotly/plotly/basedatatypes.py`. Additional helper methods are defined there for the `Figure` object, such as + counterpart. Higher-level methods that work on figures regardless of the current schema (e.g., `BaseFigure.for_each_trace`) are defined in `plotly/basedatatypes.py`. Additional helper methods are defined there for the `Figure` object, such as `update_layout`, `add_trace`, etc. - [the `plotly.express` module](https://plotly.com/python/plotly-express/) (usually imported as `px`) is a high-level - functional API that uses `graph_objects` under the hood. Its code is in `packages/python/plotly/plotly/express`. + functional API that uses `graph_objects` under the hood. Its code is in `plotly/express/`. Plotly Express functions are designed to be highly consistent with each other, and to do *as little computation in Python as possible*, generally concerning themselves with formatting data and creating @@ -49,13 +49,13 @@ There are many ways to contribute to plotly.py. To contribute effectively, it is as we are introducing more features into `plotly.express`. Some issues in the tracker are labeled "figure_factory" and can be good issues to work on. More instructions on figure factories are found - [here](packages/python/plotly/plotly/figure_factory/README.md). + [here](plotly/figure_factory/README.md). - other pure-Python submodules are: `plotly.io` (low-level interface for displaying, reading and writing figures), `plotly.subplots` (helper function for layout of multi-plot figures) -- tests are found in `packages/python/plotly/plotly/tests`. Different +- tests are found in `plotly/tests`. Different directories correspond to different test jobs (with different dependency sets) run in continuous integration. More is explained about tests in the following "Technical aspects" section. @@ -138,7 +138,7 @@ We will support Python 3.12 and higher versions soon. ### Install development requirements (Non-Windows) ```bash -(plotly_dev) $ pip install -r packages/python/plotly/requires-optional.txt +(plotly_dev) $ pip install -r requires-optional.txt ``` ### Install development requirements (Windows + Conda) Because Windows requires Visual Studio libraries to compile some of the optional dependencies, follow these steps to @@ -146,19 +146,17 @@ complete installation and avoid gdal-config errors. ```bash (plotly_dev) $ conda install fiona -(plotly_dev) $ pip install -r packages/python/plotly/requires-optional.txt +(plotly_dev) $ pip install -r requires-optional.txt ``` ### Editable install of plotly packages ```bash -(plotly_dev) $ pip install -e packages/python/plotly/ -(plotly_dev) $ pip install -e packages/python/chart-studio/ -(plotly_dev) $ pip install -e packages/python/plotly-geo/ +(plotly_dev) $ pip install -e . ``` **Note**: To test `go.FigureWidget` locally, you'll need to generate the javascript bundle as follows: ``` -cd packages/python/plotly/js +cd js npm install && npm run build ``` @@ -176,7 +174,7 @@ documentation on _development mode_. This repo uses the [Black](https://black.readthedocs.io/en/stable/) code formatter, and the [pre-commit](https://pre-commit.com/) library to manage a git commit hook to run Black prior to each commit. Both pre-commit and black are included in the -`packages/python/plotly/requires-optional.txt` file, so you should have them +`requires-optional.txt` file, so you should have them installed already if you've been following along. To enable the Black formatting git hook, run the following from within your virtual @@ -200,7 +198,7 @@ a PR as follows. ### Making a Development Branch -Third, *don't* work in the `master` branch. As soon as you get your master branch ready, run: +Third, *don't* work in the `main` branch. As soon as you get your main branch ready, run: **DO THIS (but change the branch name)** ```bash @@ -216,13 +214,12 @@ make that pull request! ## Update to a new version of Plotly.js -First update the version of the `plotly.js` dependency in `packages/python/plotly/js/package.json`. +First update the version of the `plotly.js` dependency in `js/package.json`. Then run the `updateplotlyjs` command with: ```bash -$ cd packages/python/plotly -$ python setup.py updateplotlyjs +$ python commands.py updateplotlyjs ``` This will download new versions of `plot-schema.json` and `plotly.min.js` from @@ -236,7 +233,7 @@ For dev branches, it is also possible to use `updateplotlyjsdev` in two configur If your devbranch is part of the official plotly.js repository, you can use ```bash -python setup.py updateplotlyjsdev --devrepo reponame --devbranch branchname +python commands.py updateplotlyjsdev --devrepo reponame --devbranch branchname ``` to update to development versions of `plotly.js`. This will fetch the `plotly.js` in the CircleCI artifact of the branch `branchname` of the repo `reponame`. If `--devrepo` or `--devbranch` are omitted, `updateplotlyjsdev` defaults using `plotly/plotly.js` and `master` respectively. @@ -251,16 +248,13 @@ $ npm run build $ npm pack $ mv plotly.js-*.tgz plotly.js.tgz -# In your plotly.py/packages/python/plotly/ directory: -$ python setup.py updateplotlyjsdev --local /path/to/your/plotly.js/ +# In your plotly.py/ directory: +$ python commands.py updateplotlyjsdev --local /path/to/your/plotly.js/ ``` ## Testing -We take advantage of two tools to run tests: - -* [`tox`](https://tox.readthedocs.io/en/latest/), which is both a virtualenv management and test tool. -* [`pytest`](https://docs.pytest.org/en/latest/), a powerful framework for unit testing. +To run tests, we use [`pytest`](https://docs.pytest.org/en/latest/), a powerful framework for unit testing. ### Running Tests with `pytest` @@ -269,72 +263,31 @@ Since our tests cover *all* the functionality, to prevent tons of errors from sh After you've done that, go ahead and run the test suite! ```bash -pytest packages/python/plotly/plotly/tests/ +pytest tests/ ``` Or for more *verbose* output: ```bash -pytest -v packages/python/plotly/plotly/tests/ +pytest -v tests/ ``` Either of those will run *every* test we've written for the Python API. You can get more granular by running something like: ```bash -pytest packages/python/plotly/plotly/tests/test_core/ +pytest tests/test_core/ ``` ... or even more granular by running something like: ```bash -pytest plotly/tests/test_plotly/test_plot.py +pytest tests/test_plotly/test_plot.py ``` or for a specific test function ```bash -pytest plotly/tests/test_plotly/test_plot.py::test_function -``` - -### Running tests with `tox` - -Running tests with tox is much more powerful, but requires a bit more setup. - -You'll need to export an environment variable for *each* tox environment you wish to test with. For example, if you want to test with `Python 3.9` and -`Python 3.6`, but only care to check the `core` specs, you would need to ensure that the following variables are exported: - -``` -export PLOTLY_TOX_PYTHON_39= -export PLOTLY_TOX_PYTHON_36= -``` - -Where the `` fixing any errors that come up. + - If Plotly.js contains any new traces or trace or layout attributes, you'll get a warning `β€œmissing key in attributes: `. To resolve, add the attribute to the relevant section in `/_data/orderings.json` in the position you want it to appear in the reference docs. + 3. rebuild the Algolia `schema` index with `ALGOLIA_API_KEY= make update_ref_search` + 4. Rebuild the Algolia `python` index with `ALGOLIA_API_KEY= make update_python_search` + 5. Commit and push the changes to `master` in that repo + +### Notify Stakeholders + +* Post an announcement to the Plotly Python forum, with links to the README installation instructions and to the CHANGELOG. +* Update the previous announcement to point to this one +* Update the Github Release entry and CHANGELOG entry to have the nice title and a link to the announcement +* Follow up on issues resolved in this release or forum posts with better answers as of this release + +## Release process - Release *Candidate* of `plotly` package + +(rough notes for a rough/ad hoc process!) + +It's the same process as above except that the `X.Y.Z` version has a suffix and there are special instructions below for publishing an RC: note that the `npm` suffix is `-rc.1` and the PyPI suffix is `rc1`. We also don't update the docs with RC information and we inform a limited number of stakeholders. + +PyPI RC (no special flags, just the `rc1` suffix): + +```bash +(plotly_dev) $ twine upload dist/plotly-X.Y.Zrc1* +``` + +The `--tag next` part ensures that users won't install this version unless +they explicitly ask for the version or for the version with the `next` tag. diff --git a/packages/python/plotly/_plotly_utils/README.md b/_plotly_utils/README.md similarity index 100% rename from packages/python/plotly/_plotly_utils/README.md rename to _plotly_utils/README.md diff --git a/packages/python/chart-studio/chart_studio/tests/test_core/__init__.py b/_plotly_utils/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_core/__init__.py rename to _plotly_utils/__init__.py diff --git a/packages/python/plotly/_plotly_utils/basevalidators.py b/_plotly_utils/basevalidators.py similarity index 100% rename from packages/python/plotly/_plotly_utils/basevalidators.py rename to _plotly_utils/basevalidators.py diff --git a/packages/python/plotly/_plotly_utils/colors/__init__.py b/_plotly_utils/colors/__init__.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/__init__.py rename to _plotly_utils/colors/__init__.py diff --git a/packages/python/plotly/_plotly_utils/colors/_swatches.py b/_plotly_utils/colors/_swatches.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/_swatches.py rename to _plotly_utils/colors/_swatches.py diff --git a/packages/python/plotly/_plotly_utils/colors/carto.py b/_plotly_utils/colors/carto.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/carto.py rename to _plotly_utils/colors/carto.py diff --git a/packages/python/plotly/_plotly_utils/colors/cmocean.py b/_plotly_utils/colors/cmocean.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/cmocean.py rename to _plotly_utils/colors/cmocean.py diff --git a/packages/python/plotly/_plotly_utils/colors/colorbrewer.py b/_plotly_utils/colors/colorbrewer.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/colorbrewer.py rename to _plotly_utils/colors/colorbrewer.py diff --git a/packages/python/plotly/_plotly_utils/colors/cyclical.py b/_plotly_utils/colors/cyclical.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/cyclical.py rename to _plotly_utils/colors/cyclical.py diff --git a/packages/python/plotly/_plotly_utils/colors/diverging.py b/_plotly_utils/colors/diverging.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/diverging.py rename to _plotly_utils/colors/diverging.py diff --git a/packages/python/plotly/_plotly_utils/colors/plotlyjs.py b/_plotly_utils/colors/plotlyjs.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/plotlyjs.py rename to _plotly_utils/colors/plotlyjs.py diff --git a/packages/python/plotly/_plotly_utils/colors/qualitative.py b/_plotly_utils/colors/qualitative.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/qualitative.py rename to _plotly_utils/colors/qualitative.py diff --git a/packages/python/plotly/_plotly_utils/colors/sequential.py b/_plotly_utils/colors/sequential.py similarity index 100% rename from packages/python/plotly/_plotly_utils/colors/sequential.py rename to _plotly_utils/colors/sequential.py diff --git a/packages/python/plotly/_plotly_utils/data_utils.py b/_plotly_utils/data_utils.py similarity index 100% rename from packages/python/plotly/_plotly_utils/data_utils.py rename to _plotly_utils/data_utils.py diff --git a/packages/python/plotly/_plotly_utils/exceptions.py b/_plotly_utils/exceptions.py similarity index 100% rename from packages/python/plotly/_plotly_utils/exceptions.py rename to _plotly_utils/exceptions.py diff --git a/packages/python/plotly/_plotly_utils/files.py b/_plotly_utils/files.py similarity index 100% rename from packages/python/plotly/_plotly_utils/files.py rename to _plotly_utils/files.py diff --git a/packages/python/plotly/_plotly_utils/importers.py b/_plotly_utils/importers.py similarity index 100% rename from packages/python/plotly/_plotly_utils/importers.py rename to _plotly_utils/importers.py diff --git a/packages/python/plotly/_plotly_utils/optional_imports.py b/_plotly_utils/optional_imports.py similarity index 100% rename from packages/python/plotly/_plotly_utils/optional_imports.py rename to _plotly_utils/optional_imports.py diff --git a/packages/python/plotly/_plotly_utils/png.py b/_plotly_utils/png.py similarity index 100% rename from packages/python/plotly/_plotly_utils/png.py rename to _plotly_utils/png.py diff --git a/packages/python/plotly/_plotly_utils/utils.py b/_plotly_utils/utils.py similarity index 100% rename from packages/python/plotly/_plotly_utils/utils.py rename to _plotly_utils/utils.py diff --git a/binder/requirements.txt b/binder/requirements.txt deleted file mode 100644 index 399bdd51a12..00000000000 --- a/binder/requirements.txt +++ /dev/null @@ -1,21 +0,0 @@ -jupytext -plotly==6.0.0 -jupyter -notebook -pandas==2.2.2 -statsmodels==0.14.2 -scipy -patsy==0.5.6 -numpy -plotly-geo -psutil -requests -networkx -scikit-image -datashader -pyarrow -cufflinks==0.17.3 -kaleido -scikit-learn -umap-learn -wget diff --git a/packages/python/plotly/codegen/__init__.py b/codegen/__init__.py similarity index 98% rename from packages/python/plotly/codegen/__init__.py rename to codegen/__init__.py index 6b4a3261312..ffc15257213 100644 --- a/packages/python/plotly/codegen/__init__.py +++ b/codegen/__init__.py @@ -90,8 +90,8 @@ def perform_codegen(): # --------------------------------- # (relative to project root) abs_file_path = opath.realpath(__file__) - packages_py = opath.dirname(opath.dirname(opath.dirname(abs_file_path))) - outdir = opath.join(packages_py, "plotly", "plotly") + project_root = opath.dirname(opath.dirname(abs_file_path)) + outdir = opath.join(project_root, "plotly") # Delete prior codegen output # --------------------------- @@ -113,7 +113,7 @@ def perform_codegen(): # Load plotly schema # ------------------ plot_schema_path = opath.join( - packages_py, "plotly", "codegen", "resources", "plot-schema.json" + project_root, "codegen", "resources", "plot-schema.json" ) with open(plot_schema_path, "r") as f: diff --git a/packages/python/plotly/codegen/compatibility.py b/codegen/compatibility.py similarity index 100% rename from packages/python/plotly/codegen/compatibility.py rename to codegen/compatibility.py diff --git a/packages/python/plotly/codegen/datatypes.py b/codegen/datatypes.py similarity index 94% rename from packages/python/plotly/codegen/datatypes.py rename to codegen/datatypes.py index deb1c9bbdf9..178c777850e 100644 --- a/packages/python/plotly/codegen/datatypes.py +++ b/codegen/datatypes.py @@ -102,8 +102,11 @@ def build_datatype_py(node): ) buffer.write(f"import copy as _copy\n") - if node.name_property in deprecated_mapbox_traces: - buffer.write(f"from warnings import warn\n") + if ( + node.name_property in deprecated_mapbox_traces + or node.name_property == "template" + ): + buffer.write(f"import warnings\n") # Write class definition # ---------------------- @@ -375,9 +378,24 @@ def __init__(self""" f""" _v = arg.pop('{name_prop}', None) _v = {name_prop} if {name_prop} is not None else _v - if _v is not None: - self['{name_prop}'] = _v""" + if _v is not None:""" ) + if datatype_class == "Template" and name_prop == "data": + buffer.write( + """ + # Template.data contains a 'scattermapbox' key, which causes a + # go.Scattermapbox trace object to be created during validation. + # In order to prevent false deprecation warnings from surfacing, + # we suppress deprecation warnings for this line only. + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=DeprecationWarning) + self["data"] = _v""" + ) + else: + buffer.write( + f""" + self['{name_prop}'] = _v""" + ) # ### Literals ### if literal_nodes: @@ -413,7 +431,7 @@ def __init__(self""" if node.name_property in deprecated_mapbox_traces: buffer.write( f""" - warn( + warnings.warn( "*{node.name_property}* is deprecated!" + " Use *{node.name_property.replace("mapbox", "map")}* instead." + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", diff --git a/packages/python/plotly/codegen/figure.py b/codegen/figure.py similarity index 100% rename from packages/python/plotly/codegen/figure.py rename to codegen/figure.py diff --git a/packages/python/plotly/codegen/resources/plot-schema.json b/codegen/resources/plot-schema.json similarity index 100% rename from packages/python/plotly/codegen/resources/plot-schema.json rename to codegen/resources/plot-schema.json diff --git a/packages/python/plotly/codegen/utils.py b/codegen/utils.py similarity index 100% rename from packages/python/plotly/codegen/utils.py rename to codegen/utils.py diff --git a/packages/python/plotly/codegen/validators.py b/codegen/validators.py similarity index 100% rename from packages/python/plotly/codegen/validators.py rename to codegen/validators.py diff --git a/commands.py b/commands.py new file mode 100644 index 00000000000..9c529e87e91 --- /dev/null +++ b/commands.py @@ -0,0 +1,307 @@ +import os +import sys +import time +import platform +import json +import shutil + +from subprocess import check_call +from distutils import log + +project_root = os.path.dirname(os.path.abspath(__file__)) +node_root = os.path.join(project_root, "js") +is_repo = os.path.exists(os.path.join(project_root, ".git")) +node_modules = os.path.join(node_root, "node_modules") +targets = [ + os.path.join(project_root, "plotly", "package_data", "widgetbundle.js"), +] + +npm_path = os.pathsep.join( + [ + os.path.join(node_root, "node_modules", ".bin"), + os.environ.get("PATH", os.defpath), + ] +) + +# Load plotly.js version from js/package.json +def plotly_js_version(): + path = os.path.join(project_root, "js", "package.json") + with open(path, "rt") as f: + package_json = json.load(f) + version = package_json["dependencies"]["plotly.js"] + version = version.replace("^", "") + + return version + + +# install package.json dependencies using npm +def install_js_deps(local): + npmName = "npm" + if platform.system() == "Windows": + npmName = "npm.cmd" + + try: + check_call([npmName, "--version"]) + has_npm = True + except: + has_npm = False + + skip_npm = os.environ.get("SKIP_NPM", False) + if skip_npm: + log.info("Skipping npm-installation") + return + + if not has_npm: + log.error( + "`npm` unavailable. If you're running this command using sudo, make sure `npm` is available to sudo" + ) + + env = os.environ.copy() + env["PATH"] = npm_path + + if has_npm: + log.info("Installing build dependencies with npm. This may take a while...") + check_call( + [npmName, "install"], + cwd=node_root, + stdout=sys.stdout, + stderr=sys.stderr, + ) + if local is not None: + plotly_archive = os.path.join(local, "plotly.js.tgz") + check_call( + [npmName, "install", plotly_archive], + cwd=node_root, + stdout=sys.stdout, + stderr=sys.stderr, + ) + check_call( + [npmName, "run", "build"], + cwd=node_root, + stdout=sys.stdout, + stderr=sys.stderr, + ) + os.utime(node_modules, None) + + for t in targets: + if not os.path.exists(t): + msg = "Missing file: %s" % t + raise ValueError(msg) + + +# Generate class hierarchy from Plotly JSON schema +def run_codegen(): + if sys.version_info < (3, 8): + raise ImportError("Code generation must be executed with Python >= 3.8") + + from codegen import perform_codegen + + perform_codegen() + + +def overwrite_schema_local(uri): + path = os.path.join(project_root, "codegen", "resources", "plot-schema.json") + shutil.copyfile(uri, path) + + +def overwrite_schema(url): + import requests + + req = requests.get(url) + assert req.status_code == 200 + path = os.path.join(project_root, "codegen", "resources", "plot-schema.json") + with open(path, "wb") as f: + f.write(req.content) + + +def overwrite_bundle_local(uri): + path = os.path.join(project_root, "plotly", "package_data", "plotly.min.js") + shutil.copyfile(uri, path) + + +def overwrite_bundle(url): + import requests + + req = requests.get(url) + print("url:", url) + assert req.status_code == 200 + path = os.path.join(project_root, "plotly", "package_data", "plotly.min.js") + with open(path, "wb") as f: + f.write(req.content) + + +def overwrite_plotlyjs_version_file(plotlyjs_version): + path = os.path.join(project_root, "plotly", "offline", "_plotlyjs_version.py") + with open(path, "w") as f: + f.write( + """\ +# DO NOT EDIT +# This file is generated by the updatebundle commands.py command +__plotlyjs_version__ = "{plotlyjs_version}" +""".format( + plotlyjs_version=plotlyjs_version + ) + ) + + +def request_json(url): + import requests + + req = requests.get(url) + return json.loads(req.content.decode("utf-8")) + + +def get_latest_publish_build_info(repo, branch): + url = ( + r"https://circleci.com/api/v1.1/project/github/" + r"{repo}/tree/{branch}?limit=100&filter=completed" + ).format(repo=repo, branch=branch) + + branch_jobs = request_json(url) + + # Get most recent successful publish build for branch + builds = [ + j + for j in branch_jobs + if j.get("workflows", {}).get("job_name", None) == "publish-dist" + and j.get("status", None) == "success" + ] + build = builds[0] + + # Extract build info + return {p: build[p] for p in ["vcs_revision", "build_num", "committer_date"]} + + +def get_bundle_schema_local(local): + plotly_archive = os.path.join(local, "plotly.js.tgz") + plotly_bundle = os.path.join(local, "dist/plotly.min.js") + plotly_schemas = os.path.join(local, "dist/plot-schema.json") + return plotly_archive, plotly_bundle, plotly_schemas + + +def get_bundle_schema_urls(build_num): + url = ( + "https://circleci.com/api/v1.1/project/github/" + "plotly/plotly.js/{build_num}/artifacts" + ).format(build_num=build_num) + + artifacts = request_json(url) + + # Find archive + archives = [a for a in artifacts if a.get("path", None) == "plotly.js.tgz"] + archive = archives[0] + + # Find bundle + bundles = [a for a in artifacts if a.get("path", None) == "dist/plotly.min.js"] + bundle = bundles[0] + + # Find schema + schemas = [a for a in artifacts if a.get("path", None) == "dist/plot-schema.json"] + schema = schemas[0] + + return archive["url"], bundle["url"], schema["url"] + + +# Download latest version of the plot-schema JSON file +def update_schema(plotly_js_version): + url = ( + "https://raw.githubusercontent.com/plotly/plotly.js/" + "v%s/dist/plot-schema.json" % plotly_js_version + ) + overwrite_schema(url) + + +# Download latest version of the plotly.js bundle +def update_bundle(plotly_js_version): + url = ( + "https://raw.githubusercontent.com/plotly/plotly.js/" + "v%s/dist/plotly.min.js" % plotly_js_version + ) + overwrite_bundle(url) + + # Write plotly.js version file + plotlyjs_version = plotly_js_version + overwrite_plotlyjs_version_file(plotlyjs_version) + + +# Update project to a new version of plotly.js +def update_plotlyjs(plotly_js_version): + update_bundle(plotly_js_version) + update_schema(plotly_js_version) + run_codegen() + + +# Update the plotly.js schema and bundle from master +def update_schema_bundle_from_master(): + + if "--devrepo" in sys.argv: + devrepo = sys.argv[sys.argv.index("--devrepo") + 1] + else: + devrepo = "plotly/plotly.js" + + if "--devbranch" in sys.argv: + devbranch = sys.argv[sys.argv.index("--devbranch") + 1] + else: + devbranch = "master" + + if "--local" in sys.argv: + local = sys.argv[sys.argv.index("--local") + 1] + else: + local = None + + if local is None: + build_info = get_latest_publish_build_info(devrepo, devbranch) + + archive_url, bundle_url, schema_url = get_bundle_schema_urls( + build_info["build_num"] + ) + + # Update bundle in package data + overwrite_bundle(bundle_url) + + # Update schema in package data + overwrite_schema(schema_url) + else: + # this info could be more informative but + # it doesn't seem as useful in a local context + # and requires dependencies and programming. + build_info = {"vcs_revision": "local", "committer_date": str(time.time())} + devrepo = local + devbranch = "" + + archive_uri, bundle_uri, schema_uri = get_bundle_schema_local(local) + overwrite_bundle_local(bundle_uri) + overwrite_schema_local(schema_uri) + + # Update plotly.js url in package.json + package_json_path = os.path.join(node_root, "package.json") + with open(package_json_path, "r") as f: + package_json = json.load(f) + + # Replace version with bundle url + package_json["dependencies"]["plotly.js"] = ( + archive_url if local is None else archive_uri + ) + with open(package_json_path, "w") as f: + json.dump(package_json, f, indent=2) + + # update plotly.js version in _plotlyjs_version + rev = build_info["vcs_revision"] + date = str(build_info["committer_date"]) + version = "_".join([devrepo, devbranch, date[:10], rev[:8]]) + overwrite_plotlyjs_version_file(version) + install_js_deps(local) + + +# Update project to a new development version of plotly.js +def update_plotlyjs_dev(): + update_schema_bundle_from_master() + run_codegen() + + +if __name__ == "__main__": + if "updateplotlyjsdev" in sys.argv: + update_plotlyjs_dev() + elif "updateplotlyjs" in sys.argv: + print(plotly_js_version()) + update_plotlyjs(plotly_js_version()) diff --git a/doc/README.md b/doc/README.md index 6362a8de3b1..cb66bb726f2 100644 --- a/doc/README.md +++ b/doc/README.md @@ -25,10 +25,10 @@ where you can edit the page on Github). For more important edits where you need to run the notebook to check the output, clone the repository and setup an environment as described in the [main -contributing notes](../contributing.md). If you're writing documentation at the +contributing notes](../CONTRIBUTING.md). If you're writing documentation at the same time as you are developing a feature, make sure to install with editable install (`pip install -e`, as described in [main -contributing notes](../contributing.md)), so that you only need to restart +contributing notes](../CONTRIBUTING.md)), so that you only need to restart the Jupyter kernel when you have changed the source code of the feature. ### Branches @@ -41,7 +41,7 @@ released, or which has just been included but not yet released. your branch off the `doc-prod` branch and open your pull request against this `doc-prod` branch. - Case of a new (not released yet) feature: start your branch / pull request - against the `master` branch. `master` and `doc-prod` will be synchronized at + against the `main` branch. `main` and `doc-prod` will be synchronized at release time, so that the documentation of the feature is only deployed when it is available in a released version of `plotly.py`. diff --git a/doc/apidoc/Makefile b/doc/apidoc/Makefile index 0e5987301d9..88d2ad14a82 100644 --- a/doc/apidoc/Makefile +++ b/doc/apidoc/Makefile @@ -18,24 +18,24 @@ help: # For sphinx-apidoc the first positional path is the module to document # then all the other ones are paths to exclude for the doc generation %: Makefile - sed -i 's/:class:`plotly.graph_objects/:class:`plotly.graph_objs/g' ../../packages/python/plotly/plotly/graph_objs/*.py - sed -i 's/:class:`plotly.graph_objects/:class:`plotly.graph_objs/g' ../../packages/python/plotly/plotly/graph_objs/*/*.py - sed -i 's/:class:`plotly.graph_objects/:class:`plotly.graph_objs/g' ../../packages/python/plotly/plotly/graph_objs/*/*/*.py - sed -i 's/:class:`plotly.graph_objects/:class:`plotly.graph_objs/g' ../../packages/python/plotly/plotly/graph_objs/*/*/*/*.py + sed -i 's/:class:`plotly.graph_objects/:class:`plotly.graph_objs/g' ../../plotly/graph_objs/*.py + sed -i 's/:class:`plotly.graph_objects/:class:`plotly.graph_objs/g' ../../plotly/graph_objs/*/*.py + sed -i 's/:class:`plotly.graph_objects/:class:`plotly.graph_objs/g' ../../plotly/graph_objs/*/*/*.py + sed -i 's/:class:`plotly.graph_objects/:class:`plotly.graph_objs/g' ../../plotly/graph_objs/*/*/*/*.py # Copy _plotly_utils file so that they appear in the API doc - cp ../../packages/python/plotly/_plotly_utils/colors/sequential.py ../../packages/python/plotly/_plotly_utils/colors/diverging.py ../../packages/python/plotly/_plotly_utils/colors/qualitative.py ../../packages/python/plotly/_plotly_utils/colors/cyclical.py ../../packages/python/plotly/_plotly_utils/colors/colorbrewer.py ../../packages/python/plotly/_plotly_utils/colors/carto.py ../../packages/python/plotly/_plotly_utils/colors/cmocean.py ../../packages/python/plotly/plotly/colors - cp ../../packages/python/plotly/_plotly_utils/colors/sequential.py ../../packages/python/plotly/_plotly_utils/colors/diverging.py ../../packages/python/plotly/_plotly_utils/colors/qualitative.py ../../packages/python/plotly/_plotly_utils/colors/cyclical.py ../../packages/python/plotly/_plotly_utils/colors/colorbrewer.py ../../packages/python/plotly/_plotly_utils/colors/carto.py ../../packages/python/plotly/_plotly_utils/colors/cmocean.py ../../packages/python/plotly/plotly/express/colors + cp ../../_plotly_utils/colors/sequential.py ../../_plotly_utils/colors/diverging.py ../../_plotly_utils/colors/qualitative.py ../../_plotly_utils/colors/cyclical.py ../../_plotly_utils/colors/colorbrewer.py ../../_plotly_utils/colors/carto.py ../../_plotly_utils/colors/cmocean.py ../../plotly/colors + cp ../../_plotly_utils/colors/sequential.py ../../_plotly_utils/colors/diverging.py ../../_plotly_utils/colors/qualitative.py ../../_plotly_utils/colors/cyclical.py ../../_plotly_utils/colors/colorbrewer.py ../../_plotly_utils/colors/carto.py ../../_plotly_utils/colors/cmocean.py ../../plotly/express/colors # Run sphinx-apidoc script to create hierarchy of rst files to generate # docstrings. The first path is the one to process, the following ones # are excluded from the search. rm -rf _build generated - sphinx-apidoc -M -o generated ../../packages/python/plotly/plotly ../../packages/python/plotly/plotly/validators ../../packages/python/plotly/plotly/tests ../../packages/python/plotly/plotly/matplotlylib/ ../../packages/python/plotly/plotly/offline ../../packages/python/plotly/plotly/api + sphinx-apidoc -M -o generated ../../plotly ../../plotly/validators ../../plotly/tests ../../plotly/matplotlylib/ ../../plotly/offline ../../plotly/api # Run sphinx-build to build html pages from the rst pages @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - git checkout -- ../../packages/python/plotly/plotly/graph_objs + git checkout -- ../../plotly/graph_objs # Remove files which were added only for docstring generation - rm ../../packages/python/plotly/plotly/colors/diverging.py ../../packages/python/plotly/plotly/colors/sequential.py ../../packages/python/plotly/plotly/colors/qualitative.py ../../packages/python/plotly/plotly/colors/cyclical.py ../../packages/python/plotly/plotly/colors/colorbrewer.py ../../packages/python/plotly/plotly/colors/carto.py ../../packages/python/plotly/plotly/colors/cmocean.py - rm ../../packages/python/plotly/plotly/express/colors/diverging.py ../../packages/python/plotly/plotly/express/colors/sequential.py ../../packages/python/plotly/plotly/express/colors/qualitative.py ../../packages/python/plotly/plotly/express/colors/cyclical.py ../../packages/python/plotly/plotly/express/colors/colorbrewer.py ../../packages/python/plotly/plotly/express/colors/carto.py ../../packages/python/plotly/plotly/express/colors/cmocean.py + rm ../../plotly/colors/diverging.py ../../plotly/colors/sequential.py ../../plotly/colors/qualitative.py ../../plotly/colors/cyclical.py ../../plotly/colors/colorbrewer.py ../../plotly/colors/carto.py ../../plotly/colors/cmocean.py + rm ../../plotly/express/colors/diverging.py ../../plotly/express/colors/sequential.py ../../plotly/express/colors/qualitative.py ../../plotly/express/colors/cyclical.py ../../plotly/express/colors/colorbrewer.py ../../plotly/express/colors/carto.py ../../plotly/express/colors/cmocean.py rename 's/graph_objs/graph_objects/' _build/html/*.html _build/html/generated/*.html _build/html/generated/generated/*.html mv _build/html/generated/plotly.graph_objs.html _build/html/generated/plotly.graph_objects.html sed -i 's/graph_objs/graph_objects/g' _build/html/*.html diff --git a/doc/apidoc/conf.py b/doc/apidoc/conf.py index 03772179ae4..3c80a1af82f 100644 --- a/doc/apidoc/conf.py +++ b/doc/apidoc/conf.py @@ -26,7 +26,7 @@ # The short X.Y version version = "" # The full version, including alpha/beta/rc tags -release = "6.0.0" +release = "6.0.1" # -- General configuration --------------------------------------------------- diff --git a/doc/python/horizontal-bar-charts.md b/doc/python/horizontal-bar-charts.md index ae9b02e3d30..35c017c9c36 100644 --- a/doc/python/horizontal-bar-charts.md +++ b/doc/python/horizontal-bar-charts.md @@ -217,6 +217,76 @@ fig.update_layout(annotations=annotations) fig.show() ``` +### Diverging Bar (or Butterfly) Chart + +Diverging bar charts show counts of positive outcomes or sentiments to the right of zero and counts of negative outcomes to the left of zero, allowing the reader to easily spot areas of excellence and concern. This example allows the reader of the graph to infer the number of people offering a neutral response because the neutral category, which is left implicit, would make the responses add to 100%. + +```python +import plotly.graph_objects as go +import pandas as pd + + +df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/refs/heads/master/gss_2002_5_pt_likert.csv') + +df.rename(columns={'Unnamed: 0':"Category"}, inplace=True) + +#achieve the diverging effect by putting a negative sign on the "disagree" answers +for v in ["Disagree","Strongly Disagree"]: + df[v]=df[v]*-1 + +fig = go.Figure() +# this color palette conveys meaning: blues for positive, red and orange for negative +color_by_category={ + "Strongly Agree":'darkblue', + "Agree":'lightblue', + "Disagree":'orange', + "Strongly Disagree":'red', +} + + +# We want the legend to be ordered in the same order that the categories appear, left to right -- +# which is different from the order in which we have to add the traces to the figure. +# since we need to create the "somewhat" traces before the "strongly" traces to display +# the segments in the desired order +legend_rank_by_category={ + "Strongly Disagree":1, + "Disagree":2, + "Agree":3, + "Strongly Agree":4, +} +# Add bars for each category +for col in ["Disagree","Strongly Disagree","Agree","Strongly Agree"]: + fig.add_trace(go.Bar( + y=df["Category"], + x=df[col], + name=col, + orientation='h', + marker=dict(color=color_by_category[col]), + legendrank=legend_rank_by_category[col] + )) + +fig.update_layout( + title="Reactions to statements from the 2002 General Social Survey:", + yaxis_title = "", + barmode='relative', # Allows bars to diverge from the center + plot_bgcolor="white", +) + +fig.update_xaxes( + title="Percent of Responses", + zeroline=True, # Ensure there's a zero line for divergence + zerolinecolor="black", + # use array tick mode to show that the counts to the left of zero are still positive. + # this is hard coded; generalize this if you plan to create a function that takes unknown or widely varying data + tickmode = 'array', + tickvals = [-50, 0, 50, 100], + ticktext = [50, 0, 50, 100] +) + +fig.show() + +``` + ### Bar Chart with Line Plot ```python @@ -335,4 +405,4 @@ fig.show() ### Reference -See more examples of bar charts and styling options [here](https://plotly.com/python/bar-charts/).
See https://plotly.com/python/reference/bar/ for more information and chart attribute options! \ No newline at end of file +See more examples of bar charts and styling options [here](https://plotly.com/python/bar-charts/).
See https://plotly.com/python/reference/bar/ for more information and chart attribute options! diff --git a/doc/requirements.txt b/doc/requirements.txt index 4e3b17ef58b..65aa3f0aad4 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,4 +1,4 @@ -plotly==6.0.0 +plotly==6.0.1 jupytext==1.16.4 jupyter-client<7 jupyter diff --git a/packages/python/plotly/js/package-lock.json b/js/package-lock.json similarity index 99% rename from packages/python/plotly/js/package-lock.json rename to js/package-lock.json index d2b36e2fc51..11c27e62d48 100644 --- a/packages/python/plotly/js/package-lock.json +++ b/js/package-lock.json @@ -6,7 +6,7 @@ "": { "dependencies": { "lodash-es": "^4.17.21", - "plotly.js": "3.0.0" + "plotly.js": "3.0.1" }, "devDependencies": { "@types/plotly.js": "^2.33.4", @@ -3407,9 +3407,9 @@ } }, "node_modules/plotly.js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-3.0.0.tgz", - "integrity": "sha512-vo4sClOWEsKBST5gKwzKi3wjMno7lPQpy/LBXNFJowlXeqL/RQN7oi+eU9rOj5+qjXGtqKUv560gnUD+1WL3fQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-3.0.1.tgz", + "integrity": "sha512-eWEUkqdv4sblmUQJ7xGlEA+LghzEVPJOlPBZMJuagG0CsQxlmBb+7rd0UFVig5jhRnN8PQqRQaLv6qXIjnvzgg==", "dependencies": { "@plotly/d3": "3.8.2", "@plotly/d3-sankey": "0.7.2", @@ -3423,7 +3423,7 @@ "color-alpha": "1.0.4", "color-normalize": "1.5.0", "color-parse": "2.0.0", - "color-rgba": "2.1.1", + "color-rgba": "3.0.0", "country-regex": "^1.1.0", "css-loader": "^7.1.2", "d3-force": "^1.2.1", @@ -3469,6 +3469,20 @@ "node": ">=18.0.0" } }, + "node_modules/plotly.js/node_modules/color-rgba": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-3.0.0.tgz", + "integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==", + "dependencies": { + "color-parse": "^2.0.0", + "color-space": "^2.0.0" + } + }, + "node_modules/plotly.js/node_modules/color-space": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/color-space/-/color-space-2.3.1.tgz", + "integrity": "sha512-5DJdKYwoDji3ik/i0xSn+SiwXsfwr+1FEcCMUz2GS5speGCfGSbBMOLd84SDUBOuX8y4CvdFJmOBBJuC4wp7sQ==" + }, "node_modules/point-in-polygon": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", diff --git a/packages/python/plotly/js/package.json b/js/package.json similarity index 94% rename from packages/python/plotly/js/package.json rename to js/package.json index 2d6e68e4d24..f7ad6a37993 100644 --- a/packages/python/plotly/js/package.json +++ b/js/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "lodash-es": "^4.17.21", - "plotly.js": "3.0.0" + "plotly.js": "3.0.1" }, "devDependencies": { "@types/plotly.js": "^2.33.4", diff --git a/packages/python/plotly/js/tsconfig.json b/js/tsconfig.json similarity index 100% rename from packages/python/plotly/js/tsconfig.json rename to js/tsconfig.json diff --git a/packages/python/plotly/js/widget.ts b/js/widget.ts similarity index 100% rename from packages/python/plotly/js/widget.ts rename to js/widget.ts diff --git a/packages/python/chart-studio/CHANGELOG.md b/packages/python/chart-studio/CHANGELOG.md deleted file mode 100644 index e012def1283..00000000000 --- a/packages/python/chart-studio/CHANGELOG.md +++ /dev/null @@ -1,23 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. -This project adheres to [Semantic Versioning](http://semver.org/). - -## [1.1.0] - 2020-01-4-01 - -### Updated - - The default URLs have been changed from `plot.ly` to `plotly.com` to match the changes to Chart Studio Cloud. - -## [1.0.0] - 2019-07-16 - -The initial release of the stand-alone `chart-studio` package. This package contains utilities for interfacing with Plotly's Chart Studio service (both Chart Studio cloud and Chart Studio On-Prem). Prior to plotly.py version 4, This functionality was included in the `plotly` package under the `plotly.plotly` module. As part of plotly.py version 4, the Chart Studio functionality was removed from the `plotly` package and released in this `chart-studio` package. - - -### Updated - - The `chart_studio.plotly.plot`/`iplot` functions have been ported to the Chart Studio [v2 API](https://api.plot.ly/v2/). - - The `chart_studio.plotly.plot`/`iplot` functions now support uploading figures that contain frames. This makes the legacy `chart_studio.plotly.create_animations`/`icreate_animations` functions unnecessary, though they are still included for backward compatibility. - -### Fixed - - Fixed iframe warning resulting from `chart_studio.plotly.iplot` - -### Removed - - The `fileopt` argument to `chart_studio.plotly.plot`/`iplot` was deprecated in plotly.py version 3.9.0 and has been removed in this initial release of the `chart-studio` package. diff --git a/packages/python/chart-studio/LICENSE.txt b/packages/python/chart-studio/LICENSE.txt deleted file mode 100644 index 359e5d343ef..00000000000 --- a/packages/python/chart-studio/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016-2019 Plotly, Inc - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/python/chart-studio/README.md b/packages/python/chart-studio/README.md deleted file mode 100644 index a24b0e42fd6..00000000000 --- a/packages/python/chart-studio/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# chart-studio -This package contains utilities for interfacing with Plotly's Chart Studio service (both Chart Studio cloud and Chart Studio On-Prem). Prior to plotly.py version 4, This functionality was included in the `plotly` package under the `plotly.plotly` module. As part of plotly.py version 4, the Chart Studio functionality was removed from the `plotly` package and released in this `chart-studio` package. diff --git a/packages/python/chart-studio/chart_studio/__init__.py b/packages/python/chart-studio/chart_studio/__init__.py deleted file mode 100644 index f613e4f4b40..00000000000 --- a/packages/python/chart-studio/chart_studio/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from __future__ import absolute_import -from chart_studio import plotly, dashboard_objs, grid_objs, session, tools diff --git a/packages/python/chart-studio/chart_studio/api/__init__.py b/packages/python/chart-studio/chart_studio/api/__init__.py deleted file mode 100644 index eb018c3ff09..00000000000 --- a/packages/python/chart-studio/chart_studio/api/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import utils diff --git a/packages/python/chart-studio/chart_studio/api/utils.py b/packages/python/chart-studio/chart_studio/api/utils.py deleted file mode 100644 index eff4595cda5..00000000000 --- a/packages/python/chart-studio/chart_studio/api/utils.py +++ /dev/null @@ -1,41 +0,0 @@ -from base64 import b64encode - -from requests.compat import builtin_str, is_py2 - - -def _to_native_string(string, encoding): - if isinstance(string, builtin_str): - return string - if is_py2: - return string.encode(encoding) - return string.decode(encoding) - - -def to_native_utf8_string(string): - return _to_native_string(string, "utf-8") - - -def to_native_ascii_string(string): - return _to_native_string(string, "ascii") - - -def basic_auth(username, password): - """ - Creates the basic auth value to be used in an authorization header. - - This is mostly copied from the requests library. - - :param (str) username: A Plotly username. - :param (str) password: The password for the given Plotly username. - :returns: (str) An 'authorization' header for use in a request header. - - """ - if isinstance(username, str): - username = username.encode("latin1") - - if isinstance(password, str): - password = password.encode("latin1") - - return "Basic " + to_native_ascii_string( - b64encode(b":".join((username, password))).strip() - ) diff --git a/packages/python/chart-studio/chart_studio/api/v2/__init__.py b/packages/python/chart-studio/chart_studio/api/v2/__init__.py deleted file mode 100644 index 9013e3197df..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -from __future__ import absolute_import - -from chart_studio.api.v2 import ( - dash_apps, - dashboards, - files, - folders, - grids, - images, - plot_schema, - plots, - spectacle_presentations, - users, -) diff --git a/packages/python/chart-studio/chart_studio/api/v2/dash_apps.py b/packages/python/chart-studio/chart_studio/api/v2/dash_apps.py deleted file mode 100644 index 5d55e9bc062..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/dash_apps.py +++ /dev/null @@ -1,26 +0,0 @@ -""" -Beta interface to Plotly's /v2/dash-apps endpoints. -""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, request - -RESOURCE = "dash-apps" - - -def create(body): - """Create a dash app item.""" - url = build_url(RESOURCE) - return request("post", url, json=body) - - -def retrieve(fid): - """Retrieve a dash app from Plotly.""" - url = build_url(RESOURCE, id=fid) - return request("get", url) - - -def update(fid, content): - """Completely update the writable.""" - url = build_url(RESOURCE, id=fid) - return request("put", url, json=content) diff --git a/packages/python/chart-studio/chart_studio/api/v2/dashboards.py b/packages/python/chart-studio/chart_studio/api/v2/dashboards.py deleted file mode 100644 index 1855f1f9287..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/dashboards.py +++ /dev/null @@ -1,41 +0,0 @@ -""" -Interface to Plotly's /v2/dashboards endpoints. - -Partially complete at the moment. Only being used by -plotly.plotly.dashboard_ops. -""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, request - -RESOURCE = "dashboards" - - -def create(body): - """Create a dashboard.""" - url = build_url(RESOURCE) - return request("post", url, json=body) - - -def list(): - """Returns the list of all users' dashboards.""" - url = build_url(RESOURCE) - return request("get", url) - - -def retrieve(fid): - """Retrieve a dashboard from Plotly.""" - url = build_url(RESOURCE, id=fid) - return request("get", url) - - -def update(fid, content): - """Completely update the writable.""" - url = build_url(RESOURCE, id=fid) - return request("put", url, json=content) - - -def schema(): - """Retrieve the dashboard schema.""" - url = build_url(RESOURCE, route="schema") - return request("get", url) diff --git a/packages/python/chart-studio/chart_studio/api/v2/files.py b/packages/python/chart-studio/chart_studio/api/v2/files.py deleted file mode 100644 index 9ed248a23df..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/files.py +++ /dev/null @@ -1,85 +0,0 @@ -"""Interface to Plotly's /v2/files endpoints.""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, make_params, request - -RESOURCE = "files" - - -def retrieve(fid, share_key=None): - """ - Retrieve a general file from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) share_key: The secret key granting 'read' access if private. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - params = make_params(share_key=share_key) - return request("get", url, params=params) - - -def update(fid, body): - """ - Update a general file from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - return request("put", url, json=body) - - -def trash(fid): - """ - Soft-delete a general file from Plotly. (Can be undone with 'restore'). - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="trash") - return request("post", url) - - -def restore(fid): - """ - Restore a trashed, general file from Plotly. See 'trash'. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="restore") - return request("post", url) - - -def permanent_delete(fid): - """ - Permanently delete a trashed, general file from Plotly. See 'trash'. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="permanent_delete") - return request("delete", url) - - -def lookup(path, parent=None, user=None, exists=None): - """ - Retrieve a general file from Plotly without needing a fid. - - :param (str) path: The '/'-delimited path specifying the file location. - :param (int) parent: Parent id, an integer, which the path is relative to. - :param (str) user: The username to target files for. Defaults to requestor. - :param (bool) exists: If True, don't return the full file, just a flag. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, route="lookup") - params = make_params(path=path, parent=parent, user=user, exists=exists) - return request("get", url, params=params) diff --git a/packages/python/chart-studio/chart_studio/api/v2/folders.py b/packages/python/chart-studio/chart_studio/api/v2/folders.py deleted file mode 100644 index 4ba239b9909..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/folders.py +++ /dev/null @@ -1,103 +0,0 @@ -"""Interface to Plotly's /v2/folders endpoints.""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, make_params, request - -RESOURCE = "folders" - - -def create(body): - """ - Create a new folder. - - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE) - return request("post", url, json=body) - - -def retrieve(fid, share_key=None): - """ - Retrieve a folder from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) share_key: The secret key granting 'read' access if private. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - params = make_params(share_key=share_key) - return request("get", url, params=params) - - -def update(fid, body): - """ - Update a folder from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - return request("put", url, json=body) - - -def trash(fid): - """ - Soft-delete a folder from Plotly. (Can be undone with 'restore'). - - This action is recursively done on files inside the folder. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="trash") - return request("post", url) - - -def restore(fid): - """ - Restore a trashed folder from Plotly. See 'trash'. - - This action is recursively done on files inside the folder. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="restore") - return request("post", url) - - -def permanent_delete(fid): - """ - Permanently delete a trashed folder file from Plotly. See 'trash'. - - This action is recursively done on files inside the folder. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="permanent_delete") - return request("delete", url) - - -def lookup(path, parent=None, user=None, exists=None): - """ - Retrieve a folder file from Plotly without needing a fid. - - :param (str) path: The '/'-delimited path specifying the file location. - :param (int) parent: Parent id, an integer, which the path is relative to. - :param (str) user: The username to target files for. Defaults to requestor. - :param (bool) exists: If True, don't return the full file, just a flag. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, route="lookup") - params = make_params(path=path, parent=parent, user=user, exists=exists) - return request("get", url, params=params) diff --git a/packages/python/chart-studio/chart_studio/api/v2/grids.py b/packages/python/chart-studio/chart_studio/api/v2/grids.py deleted file mode 100644 index 505829d942a..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/grids.py +++ /dev/null @@ -1,192 +0,0 @@ -"""Interface to Plotly's /v2/grids endpoints.""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, make_params, request - -RESOURCE = "grids" - - -def create(body): - """ - Create a new grid. - - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE) - return request("post", url, json=body) - - -def retrieve(fid, share_key=None): - """ - Retrieve a grid from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) share_key: The secret key granting 'read' access if private. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - params = make_params(share_key=share_key) - return request("get", url, params=params) - - -def content(fid, share_key=None): - """ - Retrieve full content for the grid (normal retrieve only yields preview) - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) share_key: The secret key granting 'read' access if private. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="content") - params = make_params(share_key=share_key) - return request("get", url, params=params) - - -def update(fid, body): - """ - Update a grid from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - return request("put", url, json=body) - - -def trash(fid): - """ - Soft-delete a grid from Plotly. (Can be undone with 'restore'). - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="trash") - return request("post", url) - - -def restore(fid): - """ - Restore a trashed grid from Plotly. See 'trash'. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="restore") - return request("post", url) - - -def permanent_delete(fid): - """ - Permanently delete a trashed grid file from Plotly. See 'trash'. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="permanent_delete") - return request("delete", url) - - -def destroy(fid): - """ - Permanently delete a grid file from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - return request("delete", url) - - -def lookup(path, parent=None, user=None, exists=None): - """ - Retrieve a grid file from Plotly without needing a fid. - - :param (str) path: The '/'-delimited path specifying the file location. - :param (int) parent: Parent id, an integer, which the path is relative to. - :param (str) user: The username to target files for. Defaults to requestor. - :param (bool) exists: If True, don't return the full file, just a flag. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, route="lookup") - params = make_params(path=path, parent=parent, user=user, exists=exists) - return request("get", url, params=params) - - -def col_create(fid, body): - """ - Create a new column (or columns) inside a grid. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="col") - return request("post", url, json=body) - - -def col_retrieve(fid, uid): - """ - Retrieve a column (or columns) from a grid. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) uid: A ','-concatenated string of column uids in the grid. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="col") - params = make_params(uid=uid) - return request("get", url, params=params) - - -def col_update(fid, uid, body): - """ - Update a column (or columns) from a grid. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) uid: A ','-concatenated string of column uids in the grid. - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="col") - params = make_params(uid=uid) - return request("put", url, json=body, params=params) - - -def col_delete(fid, uid): - """ - Permanently delete a column (or columns) from a grid. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) uid: A ','-concatenated string of column uids in the grid. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="col") - params = make_params(uid=uid) - return request("delete", url, params=params) - - -def row(fid, body): - """ - Append rows to a grid. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="row") - return request("post", url, json=body) diff --git a/packages/python/chart-studio/chart_studio/api/v2/images.py b/packages/python/chart-studio/chart_studio/api/v2/images.py deleted file mode 100644 index 5cca9bc4ba5..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/images.py +++ /dev/null @@ -1,18 +0,0 @@ -"""Interface to Plotly's /v2/images endpoints.""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, request - -RESOURCE = "images" - - -def create(body): - """ - Generate an image (which does not get saved on Plotly). - - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE) - return request("post", url, json=body) diff --git a/packages/python/chart-studio/chart_studio/api/v2/plot_schema.py b/packages/python/chart-studio/chart_studio/api/v2/plot_schema.py deleted file mode 100644 index e8a0e92f72e..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/plot_schema.py +++ /dev/null @@ -1,19 +0,0 @@ -"""Interface to Plotly's /v2/plot-schema endpoints.""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, make_params, request - -RESOURCE = "plot-schema" - - -def retrieve(sha1, **kwargs): - """ - Retrieve the most up-to-date copy of the plot-schema wrt the given hash. - - :param (str) sha1: The last-known hash of the plot-schema (or ''). - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE) - params = make_params(sha1=sha1) - return request("get", url, params=params, **kwargs) diff --git a/packages/python/chart-studio/chart_studio/api/v2/plots.py b/packages/python/chart-studio/chart_studio/api/v2/plots.py deleted file mode 100644 index 07e906affd4..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/plots.py +++ /dev/null @@ -1,120 +0,0 @@ -"""Interface to Plotly's /v2/plots endpoints.""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, make_params, request - -RESOURCE = "plots" - - -def create(body): - """ - Create a new plot. - - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE) - return request("post", url, json=body) - - -def retrieve(fid, share_key=None): - """ - Retrieve a plot from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) share_key: The secret key granting 'read' access if private. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - params = make_params(share_key=share_key) - return request("get", url, params=params) - - -def content(fid, share_key=None, inline_data=None, map_data=None): - """ - Retrieve the *figure* for a Plotly plot file. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (str) share_key: The secret key granting 'read' access if private. - :param (bool) inline_data: If True, include the data arrays with the plot. - :param (str) map_data: Currently only accepts 'unreadable' to return a - mapping of grid-fid: grid. This is useful if you - want to maintain structure between the plot and - referenced grids when you have READ access to the - plot, but you don't have READ access to the - underlying grids. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="content") - params = make_params( - share_key=share_key, inline_data=inline_data, map_data=map_data - ) - return request("get", url, params=params) - - -def update(fid, body): - """ - Update a plot from Plotly. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :param (dict) body: A mapping of body param names to values. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid) - return request("put", url, json=body) - - -def trash(fid): - """ - Soft-delete a plot from Plotly. (Can be undone with 'restore'). - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="trash") - return request("post", url) - - -def restore(fid): - """ - Restore a trashed plot from Plotly. See 'trash'. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="restore") - return request("post", url) - - -def permanent_delete(fid, params=None): - """ - Permanently delete a trashed plot file from Plotly. See 'trash'. - - :param (str) fid: The `{username}:{idlocal}` identifier. E.g. `foo:88`. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, id=fid, route="permanent_delete") - return request("delete", url, params=params) - - -def lookup(path, parent=None, user=None, exists=None): - """ - Retrieve a plot file from Plotly without needing a fid. - - :param (str) path: The '/'-delimited path specifying the file location. - :param (int) parent: Parent id, an integer, which the path is relative to. - :param (str) user: The username to target files for. Defaults to requestor. - :param (bool) exists: If True, don't return the full file, just a flag. - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, route="lookup") - params = make_params(path=path, parent=parent, user=user, exists=exists) - return request("get", url, params=params) diff --git a/packages/python/chart-studio/chart_studio/api/v2/spectacle_presentations.py b/packages/python/chart-studio/chart_studio/api/v2/spectacle_presentations.py deleted file mode 100644 index eb5df977356..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/spectacle_presentations.py +++ /dev/null @@ -1,32 +0,0 @@ -""" -Interface to Plotly's /v2/spectacle-presentations endpoint. -""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, request - -RESOURCE = "spectacle-presentations" - - -def create(body): - """Create a presentation.""" - url = build_url(RESOURCE) - return request("post", url, json=body) - - -def list(): - """Returns the list of all users' presentations.""" - url = build_url(RESOURCE) - return request("get", url) - - -def retrieve(fid): - """Retrieve a presentation from Plotly.""" - url = build_url(RESOURCE, id=fid) - return request("get", url) - - -def update(fid, content): - """Completely update the writable.""" - url = build_url(RESOURCE, id=fid) - return request("put", url, json=content) diff --git a/packages/python/chart-studio/chart_studio/api/v2/users.py b/packages/python/chart-studio/chart_studio/api/v2/users.py deleted file mode 100644 index ec5601fd13c..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/users.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Interface to Plotly's /v2/files endpoints.""" -from __future__ import absolute_import - -from chart_studio.api.v2.utils import build_url, request - -RESOURCE = "users" - - -def current(): - """ - Retrieve information on the logged-in user from Plotly. - - :returns: (requests.Response) Returns response directly from requests. - - """ - url = build_url(RESOURCE, route="current") - return request("get", url) diff --git a/packages/python/chart-studio/chart_studio/api/v2/utils.py b/packages/python/chart-studio/chart_studio/api/v2/utils.py deleted file mode 100644 index 4c022957293..00000000000 --- a/packages/python/chart-studio/chart_studio/api/v2/utils.py +++ /dev/null @@ -1,181 +0,0 @@ -from __future__ import absolute_import - -import requests -import json as _json -from requests.exceptions import RequestException -from retrying import retry - -import _plotly_utils.exceptions -from chart_studio import config, exceptions -from chart_studio.api.utils import basic_auth -from _plotly_utils.utils import PlotlyJSONEncoder - - -def make_params(**kwargs): - """ - Helper to create a params dict, skipping undefined entries. - - :returns: (dict) A params dict to pass to `request`. - - """ - return {k: v for k, v in kwargs.items() if v is not None} - - -def build_url(resource, id="", route=""): - """ - Create a url for a request on a V2 resource. - - :param (str) resource: E.g., 'files', 'plots', 'grids', etc. - :param (str) id: The unique identifier for the resource. - :param (str) route: Detail/list route. E.g., 'restore', 'lookup', etc. - :return: (str) The url. - - """ - base = config.get_config()["plotly_api_domain"] - formatter = {"base": base, "resource": resource, "id": id, "route": route} - - # Add path to base url depending on the input params. Note that `route` - # can refer to a 'list' or a 'detail' route. Since it cannot refer to - # both at the same time, it's overloaded in this function. - if id: - if route: - url = "{base}/v2/{resource}/{id}/{route}".format(**formatter) - else: - url = "{base}/v2/{resource}/{id}".format(**formatter) - else: - if route: - url = "{base}/v2/{resource}/{route}".format(**formatter) - else: - url = "{base}/v2/{resource}".format(**formatter) - - return url - - -def validate_response(response): - """ - Raise a helpful PlotlyRequestError for failed requests. - - :param (requests.Response) response: A Response object from an api request. - :raises: (PlotlyRequestError) If the request failed for any reason. - :returns: (None) - - """ - if response.ok: - return - - content = response.content - status_code = response.status_code - try: - parsed_content = response.json() - except ValueError: - message = content if content else "No Content" - raise exceptions.PlotlyRequestError(message, status_code, content) - - message = "" - if isinstance(parsed_content, dict): - errors = parsed_content.get("errors", []) - messages = [error.get("message") for error in errors] - message = "\n".join([msg for msg in messages if msg]) - if not message: - message = content if content else "No Content" - - raise exceptions.PlotlyRequestError(message, status_code, content) - - -def get_headers(): - """ - Using session credentials/config, get headers for a V2 API request. - - Users may have their own proxy layer and so we free up the `authorization` - header for this purpose (instead adding the user authorization in a new - `plotly-authorization` header). See pull #239. - - :returns: (dict) Headers to add to a requests.request call. - - """ - from plotly import version - - creds = config.get_credentials() - - headers = { - "plotly-client-platform": "python {}".format(version.stable_semver()), - "content-type": "application/json", - } - - plotly_auth = basic_auth(creds["username"], creds["api_key"]) - proxy_auth = basic_auth(creds["proxy_username"], creds["proxy_password"]) - - if config.get_config()["plotly_proxy_authorization"]: - headers["authorization"] = proxy_auth - if creds["username"] and creds["api_key"]: - headers["plotly-authorization"] = plotly_auth - else: - if creds["username"] and creds["api_key"]: - headers["authorization"] = plotly_auth - - return headers - - -def should_retry(exception): - if isinstance(exception, exceptions.PlotlyRequestError): - if isinstance(exception.status_code, int) and ( - 500 <= exception.status_code < 600 or exception.status_code == 429 - ): - # Retry on 5XX and 429 (image export throttling) errors. - return True - elif "Uh oh, an error occurred" in exception.message: - return True - - return False - - -@retry( - wait_exponential_multiplier=1000, - wait_exponential_max=16000, - stop_max_delay=180000, - retry_on_exception=should_retry, -) -def request(method, url, **kwargs): - """ - Central place to make any api v2 api request. - - :param (str) method: The request method ('get', 'put', 'delete', ...). - :param (str) url: The full api url to make the request to. - :param kwargs: These are passed along (but possibly mutated) to requests. - :return: (requests.Response) The response directly from requests. - - """ - kwargs["headers"] = dict(kwargs.get("headers", {}), **get_headers()) - - # Change boolean params to lowercase strings. E.g., `True` --> `'true'`. - # Just change the value so that requests handles query string creation. - if isinstance(kwargs.get("params"), dict): - kwargs["params"] = kwargs["params"].copy() - for key in kwargs["params"]: - if isinstance(kwargs["params"][key], bool): - kwargs["params"][key] = _json.dumps(kwargs["params"][key]) - - # We have a special json encoding class for non-native objects. - if kwargs.get("json") is not None: - if kwargs.get("data"): - raise _plotly_utils.exceptions.PlotlyError( - "Cannot supply data and json kwargs." - ) - kwargs["data"] = _json.dumps( - kwargs.pop("json"), sort_keys=True, cls=PlotlyJSONEncoder - ) - - # The config file determines whether reuqests should *verify*. - kwargs["verify"] = config.get_config()["plotly_ssl_verification"] - - try: - response = requests.request(method, url, **kwargs) - except RequestException as e: - # The message can be an exception. E.g., MaxRetryError. - message = str(getattr(e, "message", "No message")) - response = getattr(e, "response", None) - status_code = response.status_code if response else None - content = response.content if response else "No content" - raise exceptions.PlotlyRequestError(message, status_code, content) - validate_response(response) - return response diff --git a/packages/python/chart-studio/chart_studio/config.py b/packages/python/chart-studio/chart_studio/config.py deleted file mode 100644 index 5cb2b30ad48..00000000000 --- a/packages/python/chart-studio/chart_studio/config.py +++ /dev/null @@ -1,35 +0,0 @@ -""" -Merges and prioritizes file/session config and credentials. - -This is promoted to its own module to simplify imports. - -""" -from __future__ import absolute_import - -from chart_studio import session, tools - - -def get_credentials(): - """Returns the credentials that will be sent to plotly.""" - credentials = tools.get_credentials_file() - session_credentials = session.get_session_credentials() - for credentials_key in credentials: - - # checking for not false, but truthy value here is the desired behavior - session_value = session_credentials.get(credentials_key) - if session_value is False or session_value: - credentials[credentials_key] = session_value - return credentials - - -def get_config(): - """Returns either module config or file config.""" - config = tools.get_config_file() - session_config = session.get_session_config() - for config_key in config: - - # checking for not false, but truthy value here is the desired behavior - session_value = session_config.get(config_key) - if session_value is False or session_value: - config[config_key] = session_value - return config diff --git a/packages/python/chart-studio/chart_studio/dashboard_objs/__init__.py b/packages/python/chart-studio/chart_studio/dashboard_objs/__init__.py deleted file mode 100644 index 8fa4a4d3249..00000000000 --- a/packages/python/chart-studio/chart_studio/dashboard_objs/__init__.py +++ /dev/null @@ -1,72 +0,0 @@ -""" -dashboard_objs -========== - -A module for creating and manipulating dashboard content. You can create -a Dashboard object, insert boxes, swap boxes, remove a box and get an HTML -preview of the Dashboard. - -The current workflow for making and manipulating dashboard follows: -1) Create a Dashboard -2) Modify the Dashboard (insert, swap, remove, etc) -3) Preview the Dashboard (run `.get_preview()`) -4) Repeat steps 2) and 3) as long as desired - -The basic box object that your insert into a dashboard is just a `dict`. -The minimal dict for a box is: - -``` -{ - 'type': 'box', - 'boxType': 'plot' -} -``` - -where 'fileId' can be set to the 'username:#' of your plot. The other -parameters -a box takes are `shareKey` (default is None) and `title` (default is ''). - -You will need to use the `.get_preview()` method quite regularly as this will -return an HTML representation of the dashboard in which the boxes in the HTML -are labelled with on-the-fly-generated numbers which change after each -modification to the dashboard. - -Example: Create a simple Dashboard object -``` -import plotly.dashboard_objs as dashboard - -box_1 = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box 1' -} - -box_2 = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box 2' -} - -box_3 = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box 3' -} - -my_dboard = dashboard.Dashboard() -my_dboard.insert(box_1) -# my_dboard.get_preview() -my_dboard.insert(box_2, 'above', 1) -# my_dboard.get_preview() -my_dboard.insert(box_3, 'left', 2) -# my_dboard.get_preview() -my_dboard.swap(1, 2) -# my_dboard.get_preview() -my_dboard.remove(1) -# my_dboard.get_preview() -``` -""" -from .dashboard_objs import Dashboard diff --git a/packages/python/chart-studio/chart_studio/dashboard_objs/dashboard_objs.py b/packages/python/chart-studio/chart_studio/dashboard_objs/dashboard_objs.py deleted file mode 100644 index ca2d2ea059d..00000000000 --- a/packages/python/chart-studio/chart_studio/dashboard_objs/dashboard_objs.py +++ /dev/null @@ -1,654 +0,0 @@ -""" -dashboard_objs -========== - -A module for creating and manipulating dashboard content. You can create -a Dashboard object, insert boxes, swap boxes, remove a box and get an HTML -preview of the Dashboard. -``` -""" - -import pprint - -import _plotly_utils.exceptions -from _plotly_utils import optional_imports -from chart_studio import exceptions - -IPython = optional_imports.get_module("IPython") - -# default parameters for HTML preview -MASTER_WIDTH = 500 -MASTER_HEIGHT = 500 -FONT_SIZE = 9 - - -ID_NOT_VALID_MESSAGE = ( - "Your box_id must be a number in your dashboard. To view a " - "representation of your dashboard run get_preview()." -) - - -def _empty_box(): - empty_box = {"type": "box", "boxType": "empty"} - return empty_box - - -def _box(fileId="", shareKey=None, title=""): - box = { - "type": "box", - "boxType": "plot", - "fileId": fileId, - "shareKey": shareKey, - "title": title, - } - return box - - -def _container(box_1=None, box_2=None, size=50, sizeUnit="%", direction="vertical"): - if box_1 is None: - box_1 = _empty_box() - if box_2 is None: - box_2 = _empty_box() - - container = { - "type": "split", - "size": size, - "sizeUnit": sizeUnit, - "direction": direction, - "first": box_1, - "second": box_2, - } - - return container - - -dashboard_html = """ - - - - - - - - - - -""".format( - width=MASTER_WIDTH, height=MASTER_HEIGHT -) - - -def _draw_line_through_box( - dashboard_html, - top_left_x, - top_left_y, - box_w, - box_h, - is_horizontal, - direction, - fill_percent=50, -): - if is_horizontal: - new_top_left_x = top_left_x + box_w * (fill_percent / 100.0) - new_top_left_y = top_left_y - new_box_w = 1 - new_box_h = box_h - else: - new_top_left_x = top_left_x - new_top_left_y = top_left_y + box_h * (fill_percent / 100.0) - new_box_w = box_w - new_box_h = 1 - - html_box = """ - context.beginPath(); - context.rect({top_left_x}, {top_left_y}, {box_w}, {box_h}); - context.lineWidth = 1; - context.strokeStyle = 'black'; - context.stroke(); - """.format( - top_left_x=new_top_left_x, - top_left_y=new_top_left_y, - box_w=new_box_w, - box_h=new_box_h, - ) - - index_for_new_box = dashboard_html.find("") - 1 - dashboard_html = ( - dashboard_html[:index_for_new_box] - + html_box - + dashboard_html[index_for_new_box:] - ) - return dashboard_html - - -def _add_html_text(dashboard_html, text, top_left_x, top_left_y, box_w, box_h): - html_text = """ - context.font = '{}pt Times New Roman'; - context.textAlign = 'center'; - context.fillText({}, {} + 0.5*{}, {} + 0.5*{}); - """.format( - FONT_SIZE, text, top_left_x, box_w, top_left_y, box_h - ) - - index_to_add_text = dashboard_html.find("") - 1 - dashboard_html = ( - dashboard_html[:index_to_add_text] - + html_text - + dashboard_html[index_to_add_text:] - ) - return dashboard_html - - -class Dashboard(dict): - """ - Dashboard class for creating interactive dashboard objects. - - Dashboards are dicts that contain boxes which hold plot information. - These boxes can be arranged in various ways. The most basic form of - a box is: - - ``` - { - 'type': 'box', - 'boxType': 'plot' - } - ``` - - where 'fileId' can be set to the 'username:#' of your plot. The other - parameters a box takes are `shareKey` (default is None) and `title` - (default is ''). - - `.get_preview()` should be called quite regularly to get an HTML - representation of the dashboard in which the boxes in the HTML - are labelled with on-the-fly-generated numbers or box ids which - change after each modification to the dashboard. - - `.get_box()` returns the box located in the dashboard by calling - its box id as displayed via `.get_preview()`. - - Example 1: Create a simple Dashboard object - ``` - import plotly.dashboard_objs as dashboard - - box_a = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box a' - } - - box_b = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box b' - } - - box_c = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box c' - } - - my_dboard = dashboard.Dashboard() - my_dboard.insert(box_a) - # my_dboard.get_preview() - my_dboard.insert(box_b, 'above', 1) - # my_dboard.get_preview() - my_dboard.insert(box_c, 'left', 2) - # my_dboard.get_preview() - my_dboard.swap(1, 2) - # my_dboard.get_preview() - my_dboard.remove(1) - # my_dboard.get_preview() - ``` - - Example 2: 4 vertical boxes of equal height - ``` - import plotly.dashboard_objs as dashboard - - box_a = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box a' - } - - my_dboard = dashboard.Dashboard() - my_dboard.insert(box_a) - my_dboard.insert(box_a, 'below', 1) - my_dboard.insert(box_a, 'below', 1) - my_dboard.insert(box_a, 'below', 3) - # my_dboard.get_preview() - ``` - """ - - def __init__(self, content=None): - if content is None: - content = {} - - if not content: - self["layout"] = None - self["version"] = 2 - self["settings"] = {} - else: - self["layout"] = content["layout"] - self["version"] = content["version"] - self["settings"] = content["settings"] - - def _compute_box_ids(self): - from plotly.utils import node_generator - - box_ids_to_path = {} - all_nodes = list(node_generator(self["layout"])) - all_nodes.sort(key=lambda x: x[1]) - for node in all_nodes: - if ( - node[1] != () - and node[0]["type"] == "box" - and node[0]["boxType"] != "empty" - ): - try: - max_id = max(box_ids_to_path.keys()) - except ValueError: - max_id = 0 - box_ids_to_path[max_id + 1] = node[1] - - return box_ids_to_path - - def _insert(self, box_or_container, path): - if any(first_second not in ["first", "second"] for first_second in path): - raise _plotly_utils.exceptions.PlotlyError( - "Invalid path. Your 'path' list must only contain " - "the strings 'first' and 'second'." - ) - - if "first" in self["layout"]: - loc_in_dashboard = self["layout"] - for index, first_second in enumerate(path): - if index != len(path) - 1: - loc_in_dashboard = loc_in_dashboard[first_second] - else: - loc_in_dashboard[first_second] = box_or_container - - else: - self["layout"] = box_or_container - - def _make_all_nodes_and_paths(self): - from plotly.utils import node_generator - - all_nodes = list(node_generator(self["layout"])) - all_nodes.sort(key=lambda x: x[1]) - - # remove path 'second' as it's always an empty box - all_paths = [] - for node in all_nodes: - all_paths.append(node[1]) - path_second = ("second",) - if path_second in all_paths: - all_paths.remove(path_second) - return all_nodes, all_paths - - def _path_to_box(self, path): - loc_in_dashboard = self["layout"] - for first_second in path: - loc_in_dashboard = loc_in_dashboard[first_second] - return loc_in_dashboard - - def _set_dashboard_size(self): - # set dashboard size to keep consistent with GUI - num_of_boxes = len(self._compute_box_ids()) - if num_of_boxes == 0: - pass - elif num_of_boxes == 1: - self["layout"]["size"] = 800 - self["layout"]["sizeUnit"] = "px" - elif num_of_boxes == 2: - self["layout"]["size"] = 1500 - self["layout"]["sizeUnit"] = "px" - else: - self["layout"]["size"] = 1500 + 350 * (num_of_boxes - 2) - self["layout"]["sizeUnit"] = "px" - - def get_box(self, box_id): - """Returns box from box_id number.""" - box_ids_to_path = self._compute_box_ids() - loc_in_dashboard = self["layout"] - - if box_id not in box_ids_to_path.keys(): - raise _plotly_utils.exceptions.PlotlyError(ID_NOT_VALID_MESSAGE) - for first_second in box_ids_to_path[box_id]: - loc_in_dashboard = loc_in_dashboard[first_second] - return loc_in_dashboard - - def get_preview(self): - """ - Returns JSON or HTML respresentation of the dashboard. - - If IPython is not imported, returns a pretty print of the dashboard - dict. Otherwise, returns an IPython.core.display.HTML display of the - dashboard. - - The algorithm used to build the HTML preview involves going through - the paths of the node generator of the dashboard. The paths of the - dashboard are sequenced through from shorter to longer and whether - it's a box or container that lies at the end of the path determines - the action. - - If it's a container, draw a line in the figure to divide the current - box into two and store the specs of the resulting two boxes. If the - path points to a terminal box (often containing a plot), then draw - the box id in the center of the box. - - It's important to note that these box ids are generated on-the-fly and - they do not necessarily stay assigned to the boxes they were once - assigned to. - """ - if IPython is None: - pprint.pprint(self) - return - - elif self["layout"] is None: - return IPython.display.HTML(dashboard_html) - - top_left_x = 0 - top_left_y = 0 - box_w = MASTER_WIDTH - box_h = MASTER_HEIGHT - html_figure = dashboard_html - box_ids_to_path = self._compute_box_ids() - # used to store info about box dimensions - path_to_box_specs = {} - first_box_specs = { - "top_left_x": top_left_x, - "top_left_y": top_left_y, - "box_w": box_w, - "box_h": box_h, - } - # uses tuples to store paths as for hashable keys - path_to_box_specs[("first",)] = first_box_specs - - # generate all paths - all_nodes, all_paths = self._make_all_nodes_and_paths() - - max_path_len = max(len(path) for path in all_paths) - for path_len in range(1, max_path_len + 1): - for path in [path for path in all_paths if len(path) == path_len]: - current_box_specs = path_to_box_specs[path] - - if self._path_to_box(path)["type"] == "split": - fill_percent = self._path_to_box(path)["size"] - direction = self._path_to_box(path)["direction"] - is_horizontal = direction == "horizontal" - - top_left_x = current_box_specs["top_left_x"] - top_left_y = current_box_specs["top_left_y"] - box_w = current_box_specs["box_w"] - box_h = current_box_specs["box_h"] - - html_figure = _draw_line_through_box( - html_figure, - top_left_x, - top_left_y, - box_w, - box_h, - is_horizontal=is_horizontal, - direction=direction, - fill_percent=fill_percent, - ) - - # determine the specs for resulting two box split - if is_horizontal: - new_top_left_x = top_left_x - new_top_left_y = top_left_y - new_box_w = box_w * (fill_percent / 100.0) - new_box_h = box_h - - new_top_left_x_2 = top_left_x + new_box_w - new_top_left_y_2 = top_left_y - new_box_w_2 = box_w * ((100 - fill_percent) / 100.0) - new_box_h_2 = box_h - else: - new_top_left_x = top_left_x - new_top_left_y = top_left_y - new_box_w = box_w - new_box_h = box_h * (fill_percent / 100.0) - - new_top_left_x_2 = top_left_x - new_top_left_y_2 = top_left_y + box_h * (fill_percent / 100.0) - new_box_w_2 = box_w - new_box_h_2 = box_h * ((100 - fill_percent) / 100.0) - - first_box_specs = { - "top_left_x": top_left_x, - "top_left_y": top_left_y, - "box_w": new_box_w, - "box_h": new_box_h, - } - second_box_specs = { - "top_left_x": new_top_left_x_2, - "top_left_y": new_top_left_y_2, - "box_w": new_box_w_2, - "box_h": new_box_h_2, - } - - path_to_box_specs[path + ("first",)] = first_box_specs - path_to_box_specs[path + ("second",)] = second_box_specs - - elif self._path_to_box(path)["type"] == "box": - for box_id in box_ids_to_path: - if box_ids_to_path[box_id] == path: - number = box_id - html_figure = _add_html_text( - html_figure, - number, - path_to_box_specs[path]["top_left_x"], - path_to_box_specs[path]["top_left_y"], - path_to_box_specs[path]["box_w"], - path_to_box_specs[path]["box_h"], - ) - - # display HTML representation - return IPython.display.HTML(html_figure) - - def insert(self, box, side="above", box_id=None, fill_percent=50): - """ - Insert a box into your dashboard layout. - - :param (dict) box: the box you are inserting into the dashboard. - :param (str) side: specifies where your new box is going to be placed - relative to the given 'box_id'. Valid values are 'above', 'below', - 'left', and 'right'. - :param (int) box_id: the box id which is used as a reference for the - insertion of the new box. Box ids are memoryless numbers that are - generated on-the-fly and assigned to boxes in the layout each time - .get_preview() is run. - :param (float) fill_percent: specifies the percentage of the container - box from the given 'side' that the new box occupies. For example - if you apply the method\n - .insert(box=new_box, box_id=2, side='left', fill_percent=20)\n - to a dashboard object, a new box is inserted 20% from the left - side of the box with id #2. Run .get_preview() to see the box ids - assigned to each box in the dashboard layout. - Default = 50 - Example: - ``` - import plotly.dashboard_objs as dashboard - - box_a = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box a' - } - - my_dboard = dashboard.Dashboard() - my_dboard.insert(box_a) - my_dboard.insert(box_a, 'left', 1) - my_dboard.insert(box_a, 'below', 2) - my_dboard.insert(box_a, 'right', 3) - my_dboard.insert(box_a, 'above', 4, fill_percent=20) - - my_dboard.get_preview() - ``` - """ - box_ids_to_path = self._compute_box_ids() - - # doesn't need box_id or side specified for first box - if self["layout"] is None: - self["layout"] = _container( - box, _empty_box(), size=MASTER_HEIGHT, sizeUnit="px" - ) - else: - if box_id is None: - raise _plotly_utils.exceptions.PlotlyError( - "Make sure the box_id is specfied if there is at least " - "one box in your dashboard." - ) - if box_id not in box_ids_to_path: - raise _plotly_utils.exceptions.PlotlyError(ID_NOT_VALID_MESSAGE) - - if fill_percent < 0 or fill_percent > 100: - raise _plotly_utils.exceptions.PlotlyError( - "fill_percent must be a number between 0 and 100 " "inclusive" - ) - if side == "above": - old_box = self.get_box(box_id) - self._insert( - _container(box, old_box, direction="vertical", size=fill_percent), - box_ids_to_path[box_id], - ) - elif side == "below": - old_box = self.get_box(box_id) - self._insert( - _container( - old_box, box, direction="vertical", size=100 - fill_percent - ), - box_ids_to_path[box_id], - ) - elif side == "left": - old_box = self.get_box(box_id) - self._insert( - _container(box, old_box, direction="horizontal", size=fill_percent), - box_ids_to_path[box_id], - ) - elif side == "right": - old_box = self.get_box(box_id) - self._insert( - _container( - old_box, box, direction="horizontal", size=100 - fill_percent - ), - box_ids_to_path[box_id], - ) - else: - raise _plotly_utils.exceptions.PlotlyError( - "If there is at least one box in your dashboard, you " - "must specify a valid side value. You must choose from " - "'above', 'below', 'left', and 'right'." - ) - - self._set_dashboard_size() - - def remove(self, box_id): - """ - Remove a box from the dashboard by its box_id. - - Example: - ``` - import plotly.dashboard_objs as dashboard - - box_a = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:some#', - 'title': 'box a' - } - - my_dboard = dashboard.Dashboard() - my_dboard.insert(box_a) - my_dboard.remove(1) - my_dboard.get_preview() - ``` - """ - box_ids_to_path = self._compute_box_ids() - if box_id not in box_ids_to_path: - raise _plotly_utils.exceptions.PlotlyError(ID_NOT_VALID_MESSAGE) - - path = box_ids_to_path[box_id] - if path != ("first",): - container_for_box_id = self._path_to_box(path[:-1]) - if path[-1] == "first": - adjacent_path = "second" - elif path[-1] == "second": - adjacent_path = "first" - adjacent_box = container_for_box_id[adjacent_path] - - self._insert(adjacent_box, path[:-1]) - else: - self["layout"] = None - - self._set_dashboard_size() - - def swap(self, box_id_1, box_id_2): - """ - Swap two boxes with their specified ids. - - Example: - ``` - import plotly.dashboard_objs as dashboard - - box_a = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:first#', - 'title': 'box a' - } - - box_b = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:second#', - 'title': 'box b' - } - - my_dboard = dashboard.Dashboard() - my_dboard.insert(box_a) - my_dboard.insert(box_b, 'above', 1) - - # check box at box id 1 - box_at_1 = my_dboard.get_box(1) - print(box_at_1) - - my_dboard.swap(1, 2) - - box_after_swap = my_dboard.get_box(1) - print(box_after_swap) - ``` - """ - box_ids_to_path = self._compute_box_ids() - box_a = self.get_box(box_id_1) - box_b = self.get_box(box_id_2) - - box_a_path = box_ids_to_path[box_id_1] - box_b_path = box_ids_to_path[box_id_2] - - for pairs in [(box_a_path, box_b), (box_b_path, box_a)]: - loc_in_dashboard = self["layout"] - for first_second in pairs[0][:-1]: - loc_in_dashboard = loc_in_dashboard[first_second] - loc_in_dashboard[pairs[0][-1]] = pairs[1] diff --git a/packages/python/chart-studio/chart_studio/exceptions.py b/packages/python/chart-studio/chart_studio/exceptions.py deleted file mode 100644 index 675edff9103..00000000000 --- a/packages/python/chart-studio/chart_studio/exceptions.py +++ /dev/null @@ -1,91 +0,0 @@ -""" -exceptions -========== - -A module that contains plotly's exception hierarchy. - -""" -from __future__ import absolute_import - -from chart_studio.api.utils import to_native_utf8_string - - -# Base Plotly Error -from _plotly_utils.exceptions import PlotlyError - - -class InputError(PlotlyError): - pass - - -class PlotlyRequestError(PlotlyError): - """General API error. Raised for *all* failed requests.""" - - def __init__(self, message, status_code, content): - self.message = to_native_utf8_string(message) - self.status_code = status_code - self.content = content - - def __str__(self): - return self.message - - -# Grid Errors -COLUMN_NOT_YET_UPLOADED_MESSAGE = ( - "Hm... it looks like your column '{column_name}' hasn't " - "been uploaded to Plotly yet. You need to upload your " - "column to Plotly before you can assign it to '{reference}'.\n" - "To upload, try `plotly.plotly.grid_objs.upload` or " - "`plotly.plotly.grid_objs.append_column`.\n" - "Questions? chris@plotly.com" -) - -NON_UNIQUE_COLUMN_MESSAGE = ( - "Yikes, plotly grids currently " - "can't have duplicate column names. Rename " - 'the column "{0}" and try again.' -) - -# Local Config Errors -class PlotlyLocalError(PlotlyError): - pass - - -class PlotlyLocalCredentialsError(PlotlyLocalError): - def __init__(self): - message = ( - "\n" - "Couldn't find a 'username', 'api-key' pair for you on your local " - "machine. To sign in temporarily (until you stop running Python), " - "run:\n" - ">>> import plotly.plotly as py\n" - ">>> py.sign_in('username', 'api_key')\n\n" - "Even better, save your credentials permanently using the 'tools' " - "module:\n" - ">>> import plotly.tools as tls\n" - ">>> tls.set_credentials_file(username='username', " - "api_key='api-key')\n\n" - "For more help, see https://plotly.com/python.\n" - ) - super(PlotlyLocalCredentialsError, self).__init__(message) - - -# Server Errors -class PlotlyServerError(PlotlyError): - pass - - -class PlotlyConnectionError(PlotlyServerError): - pass - - -class PlotlyCredentialError(PlotlyServerError): - pass - - -class PlotlyAccountError(PlotlyServerError): - pass - - -class PlotlyRateLimitError(PlotlyServerError): - pass diff --git a/packages/python/chart-studio/chart_studio/files.py b/packages/python/chart-studio/chart_studio/files.py deleted file mode 100644 index 453c18b6f8c..00000000000 --- a/packages/python/chart-studio/chart_studio/files.py +++ /dev/null @@ -1,30 +0,0 @@ -from __future__ import absolute_import - -import os - -# file structure -from _plotly_utils.files import PLOTLY_DIR - -CREDENTIALS_FILE = os.path.join(PLOTLY_DIR, ".credentials") -CONFIG_FILE = os.path.join(PLOTLY_DIR, ".config") - -# this sets both the DEFAULTS and the TYPES for these files -FILE_CONTENT = { - CREDENTIALS_FILE: { - "username": "", - "api_key": "", - "proxy_username": "", - "proxy_password": "", - "stream_ids": [], - }, - CONFIG_FILE: { - "plotly_domain": "https://plotly.com", - "plotly_streaming_domain": "stream.plotly.com", - "plotly_api_domain": "https://api.plotly.com", - "plotly_ssl_verification": True, - "plotly_proxy_authorization": False, - "world_readable": True, - "sharing": "public", - "auto_open": True, - }, -} diff --git a/packages/python/chart-studio/chart_studio/grid_objs/__init__.py b/packages/python/chart-studio/chart_studio/grid_objs/__init__.py deleted file mode 100644 index ae484f25e17..00000000000 --- a/packages/python/chart-studio/chart_studio/grid_objs/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -"""" -grid_objs -========= - -""" -from __future__ import absolute_import - -from chart_studio.grid_objs.grid_objs import Grid, Column diff --git a/packages/python/chart-studio/chart_studio/grid_objs/grid_objs.py b/packages/python/chart-studio/chart_studio/grid_objs/grid_objs.py deleted file mode 100644 index e8ebe03317b..00000000000 --- a/packages/python/chart-studio/chart_studio/grid_objs/grid_objs.py +++ /dev/null @@ -1,300 +0,0 @@ -""" -grid_objs -========= - -""" -from __future__ import absolute_import - -import _plotly_utils.exceptions - -try: - from collections.abc import MutableSequence -except ImportError: - from collections import MutableSequence - -import json as _json - -from _plotly_utils.optional_imports import get_module -from chart_studio import utils, exceptions - -__all__ = None - - -class Column(object): - """ - Columns make up Plotly Grids and can be the source of - data for Plotly Graphs. - They have a name and an array of data. - They can be uploaded to Plotly with the `plotly.plotly.grid_ops` - class. - - Usage example 1: Upload a set of columns as a grid to Plotly - ``` - from plotly.grid_objs import Grid, Column - import plotly.plotly as py - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - ``` - - Usage example 2: Make a graph based with data that is sourced - from a newly uploaded Plotly columns - ``` - import plotly.plotly as py - from plotly.grid_objs import Grid, Column - from plotly.graph_objs import Scatter - # Upload a grid - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - - # Build a Plotly graph object sourced from the - # grid's columns - trace = Scatter(xsrc=grid[0], ysrc=grid[1]) - py.plot([trace], filename='graph from grid') - ``` - """ - - def __init__(self, data, name): - """ - Initialize a Plotly column with `data` and `name`. - `data` is an array of strings, numbers, or dates. - `name` is the name of the column as it will apppear - in the Plotly grid. Names must be unique to a grid. - """ - - # TODO: data type checking - self.data = data - # TODO: name type checking - self.name = name - - self.id = "" - - def __str__(self): - max_chars = 10 - jdata = _json.dumps(self.data, cls=utils.PlotlyJSONEncoder) - if len(jdata) > max_chars: - data_string = jdata[:max_chars] + "...]" - else: - data_string = jdata - string = '' - return string.format(name=self.name, data=data_string, id=self.id) - - def __repr__(self): - return 'Column("{0}", {1})'.format(self.data, self.name) - - def to_plotly_json(self): - return {"name": self.name, "data": self.data} - - -class Grid(MutableSequence): - """ - Grid is Plotly's Python representation of Plotly Grids. - Plotly Grids are tabular data made up of columns. They can be - uploaded, appended to, and can source the data for Plotly - graphs. - - A plotly.grid_objs.Grid object is essentially a list. - - Usage example 1: Upload a set of columns as a grid to Plotly - ``` - from plotly.grid_objs import Grid, Column - import plotly.plotly as py - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - ``` - - Usage example 2: Make a graph based with data that is sourced - from a newly uploaded Plotly columns - ``` - import plotly.plotly as py - from plotly.grid_objs import Grid, Column - from plotly.graph_objs import Scatter - # Upload a grid - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - - # Build a Plotly graph object sourced from the - # grid's columns - trace = Scatter(xsrc=grid[0], ysrc=grid[1]) - py.plot([trace], filename='graph from grid') - ``` - """ - - def __init__(self, columns_or_json, fid=None): - """ - Initialize a grid with an iterable of `plotly.grid_objs.Column` - objects or a json/dict describing a grid. See second usage example - below for the necessary structure of the dict. - - :param (str|bool) fid: should not be accessible to users. Default - is 'None' but if a grid is retrieved via `py.get_grid()` then the - retrieved grid response will contain the fid which will be - necessary to set `self.id` and `self._columns.id` below. - - Example from iterable of columns: - ``` - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - ``` - Example from json grid - ``` - grid_json = { - 'cols': { - 'time': {'data': [1, 2, 3], 'order': 0, 'uid': '4cd7fc'}, - 'voltage': {'data': [4, 2, 5], 'order': 1, 'uid': u'2744be'} - } - } - grid = Grid(grid_json) - ``` - """ - # TODO: verify that columns are actually columns - pd = get_module("pandas") - if pd and isinstance(columns_or_json, pd.DataFrame): - duplicate_name = utils.get_first_duplicate(columns_or_json.columns) - if duplicate_name: - err = exceptions.NON_UNIQUE_COLUMN_MESSAGE.format(duplicate_name) - raise exceptions.InputError(err) - - # create columns from dataframe - all_columns = [] - for name in columns_or_json.columns: - all_columns.append(Column(columns_or_json[name].tolist(), name)) - self._columns = all_columns - self.id = "" - - elif isinstance(columns_or_json, dict): - # check that fid is entered - if fid is None: - raise _plotly_utils.exceptions.PlotlyError( - "If you are manually converting a raw json/dict grid " - "into a Grid instance, you must ensure that 'fid' is " - "set to your file ID. This looks like 'username:187'." - ) - - self.id = fid - - # check if 'cols' is a root key - if "cols" not in columns_or_json: - raise _plotly_utils.exceptions.PlotlyError( - "'cols' must be a root key in your json grid." - ) - - # check if 'data', 'order' and 'uid' are not in columns - grid_col_keys = ["data", "order", "uid"] - - for column_name in columns_or_json["cols"]: - for key in grid_col_keys: - if key not in columns_or_json["cols"][column_name]: - raise _plotly_utils.exceptions.PlotlyError( - "Each column name of your dictionary must have " - "'data', 'order' and 'uid' as keys." - ) - # collect and sort all orders in case orders do not start - # at zero or there are jump discontinuities between them - all_orders = [] - for column_name in columns_or_json["cols"].keys(): - all_orders.append(columns_or_json["cols"][column_name]["order"]) - all_orders.sort() - - # put columns in order in a list - ordered_columns = [] - for order in all_orders: - for column_name in columns_or_json["cols"].keys(): - if columns_or_json["cols"][column_name]["order"] == order: - break - - ordered_columns.append( - Column(columns_or_json["cols"][column_name]["data"], column_name) - ) - self._columns = ordered_columns - - # fill in column_ids - for column in self: - column.id = self.id + ":" + columns_or_json["cols"][column.name]["uid"] - - else: - column_names = [column.name for column in columns_or_json] - duplicate_name = utils.get_first_duplicate(column_names) - if duplicate_name: - err = exceptions.NON_UNIQUE_COLUMN_MESSAGE.format(duplicate_name) - raise exceptions.InputError(err) - - self._columns = list(columns_or_json) - self.id = "" - - def __repr__(self): - return self._columns.__repr__() - - def __getitem__(self, index): - return self._columns[index] - - def __setitem__(self, index, column): - self._validate_insertion(column) - return self._columns.__setitem__(index, column) - - def __delitem__(self, index): - del self._columns[index] - - def __len__(self): - return len(self._columns) - - def insert(self, index, column): - self._validate_insertion(column) - self._columns.insert(index, column) - - def _validate_insertion(self, column): - """ - Raise an error if we're gonna add a duplicate column name - """ - existing_column_names = [col.name for col in self._columns] - if column.name in existing_column_names: - err = exceptions.NON_UNIQUE_COLUMN_MESSAGE.format(column.name) - raise exceptions.InputError(err) - - def _to_plotly_grid_json(self): - grid_json = {"cols": {}} - for column_index, column in enumerate(self): - grid_json["cols"][column.name] = { - "data": column.data, - "order": column_index, - } - return grid_json - - def get_column(self, column_name): - """Return the first column with name `column_name`. - If no column with `column_name` exists in this grid, return None. - """ - for column in self._columns: - if column.name == column_name: - return column - - def get_column_reference(self, column_name): - """ - Returns the column reference of given column in the grid by its name. - - Raises an error if the column name is not in the grid. Otherwise, - returns the fid:uid pair, which may be the empty string. - """ - column_id = None - for column in self._columns: - if column.name == column_name: - column_id = column.id - break - - if column_id is None: - col_names = [] - for column in self._columns: - col_names.append(column.name) - raise _plotly_utils.exceptions.PlotlyError( - "Whoops, that column name doesn't match any of the column " - "names in your grid. You must pick from {cols}".format(cols=col_names) - ) - return column_id diff --git a/packages/python/chart-studio/chart_studio/plotly/__init__.py b/packages/python/chart-studio/chart_studio/plotly/__init__.py deleted file mode 100644 index 6758807a156..00000000000 --- a/packages/python/chart-studio/chart_studio/plotly/__init__.py +++ /dev/null @@ -1,31 +0,0 @@ -""" -plotly -====== - -This module defines functionality that requires interaction between your -local machine and Plotly. Almost all functionality used here will require a -verifiable account (username/api-key pair) and a network connection. - -""" -from .plotly import ( - sign_in, - update_plot_options, - get_credentials, - iplot, - plot, - iplot_mpl, - plot_mpl, - get_figure, - Stream, - image, - grid_ops, - meta_ops, - file_ops, - get_config, - get_grid, - dashboard_ops, - presentation_ops, - create_animations, - icreate_animations, - parse_grid_id_args, -) diff --git a/packages/python/chart-studio/chart_studio/plotly/chunked_requests/__init__.py b/packages/python/chart-studio/chart_studio/plotly/chunked_requests/__init__.py deleted file mode 100644 index 1433ad88e21..00000000000 --- a/packages/python/chart-studio/chart_studio/plotly/chunked_requests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .chunked_request import Stream diff --git a/packages/python/chart-studio/chart_studio/plotly/chunked_requests/chunked_request.py b/packages/python/chart-studio/chart_studio/plotly/chunked_requests/chunked_request.py deleted file mode 100644 index a6a669e018e..00000000000 --- a/packages/python/chart-studio/chart_studio/plotly/chunked_requests/chunked_request.py +++ /dev/null @@ -1,353 +0,0 @@ -import http.client -import os -import ssl -import time -from io import StringIO - -from urllib.parse import urlparse, unquote - -from chart_studio.api import utils - - -class Stream: - def __init__( - self, - server, - port=80, - headers={}, - url="/", - ssl_enabled=False, - ssl_verification_enabled=True, - ): - """Initialize a stream object and an HTTP or HTTPS connection - with chunked Transfer-Encoding to server:port with optional headers. - """ - self.maxtries = 5 - self._tries = 0 - self._delay = 1 - self._closed = False - self._server = server - self._port = port - self._headers = headers - self._url = url - self._ssl_enabled = ssl_enabled - self._ssl_verification_enabled = ssl_verification_enabled - self._connect() - - def write(self, data, reconnect_on=("", 200, 502)): - """Send `data` to the server in chunk-encoded form. - Check the connection before writing and reconnect - if disconnected and if the response status code is in `reconnect_on`. - - The response may either be an HTTPResponse object or an empty string. - """ - - if not self._isconnected(): - - # Attempt to get the response. - response = self._getresponse() - - # Reconnect depending on the status code. - if (response == "" and "" in reconnect_on) or ( - response - and isinstance(response, http.client.HTTPResponse) - and response.status in reconnect_on - ): - self._reconnect() - - elif response and isinstance(response, http.client.HTTPResponse): - # If an HTTPResponse was recieved then - # make the users aware instead of - # auto-reconnecting in case the - # server is responding with an important - # message that might prevent - # future requests from going through, - # like Invalid Credentials. - # This allows the user to determine when - # to reconnect. - raise Exception( - "Server responded with " - "status code: {status_code}\n" - "and message: {msg}.".format( - status_code=response.status, msg=response.read() - ) - ) - - elif response == "": - raise Exception("Attempted to write but socket " "was not connected.") - - try: - msg = data - msglen = format(len(msg), "x") # msg length in hex - # Send the message in chunk-encoded form - self._conn.sock.setblocking(1) - self._conn.send( - "{msglen}\r\n{msg}\r\n".format(msglen=msglen, msg=msg).encode("utf-8") - ) - self._conn.sock.setblocking(0) - except http.client.socket.error: - self._reconnect() - self.write(data) - - def _get_proxy_config(self): - """ - Determine if self._url should be passed through a proxy. If so, return - the appropriate proxy_server and proxy_port. Assumes https_proxy is used - when ssl_enabled=True. - - """ - - proxy_server = None - proxy_port = None - proxy_username = None - proxy_password = None - proxy_auth = None - ssl_enabled = self._ssl_enabled - - if ssl_enabled: - proxy = os.environ.get("https_proxy") or os.environ.get("HTTPS_PROXY") - else: - proxy = os.environ.get("http_proxy") or os.environ.get("HTTP_PROXY") - - no_proxy = os.environ.get("no_proxy") or os.environ.get("NO_PROXY") - no_proxy_url = no_proxy and self._server in no_proxy - - if proxy and not no_proxy_url: - p = urlparse(proxy) - proxy_server = p.hostname - proxy_port = p.port - proxy_username = p.username - proxy_password = p.password - - if proxy_username and proxy_password: - username = unquote(proxy_username) - password = unquote(proxy_password) - proxy_auth = utils.basic_auth(username, password) - - return proxy_server, proxy_port, proxy_auth - - def _get_ssl_context(self): - """ - Return an unverified context if ssl verification is disabled. - - """ - - context = None - - if not self._ssl_verification_enabled: - context = ssl._create_unverified_context() - - return context - - def _connect(self): - """Initialize an HTTP/HTTPS connection with chunked Transfer-Encoding - to server:port with optional headers. - """ - server = self._server - port = self._port - headers = self._headers - ssl_enabled = self._ssl_enabled - proxy_server, proxy_port, proxy_auth = self._get_proxy_config() - - if proxy_server and proxy_port: - if ssl_enabled: - context = self._get_ssl_context() - self._conn = http.client.HTTPSConnection( - proxy_server, proxy_port, context=context - ) - else: - self._conn = http.client.HTTPConnection(proxy_server, proxy_port) - - tunnel_headers = None - if proxy_auth: - tunnel_headers = {"Proxy-Authorization": proxy_auth} - - self._conn.set_tunnel(server, port, headers=tunnel_headers) - else: - if ssl_enabled: - context = self._get_ssl_context() - self._conn = http.client.HTTPSConnection(server, port, context=context) - else: - self._conn = http.client.HTTPConnection(server, port) - - self._conn.putrequest("POST", self._url) - self._conn.putheader("Transfer-Encoding", "chunked") - for header in headers: - self._conn.putheader(header, headers[header]) - self._conn.endheaders() - - # Set blocking to False prevents recv - # from blocking while waiting for a response. - self._conn.sock.setblocking(False) - self._bytes = b"" - self._reset_retries() - time.sleep(0.5) - - def close(self): - """Close the connection to server. - - If available, return a http.client.HTTPResponse object. - - Closing the connection involves sending the - Transfer-Encoding terminating bytes. - """ - self._reset_retries() - self._closed = True - - # Chunked-encoded posts are terminated with '0\r\n\r\n' - # For some reason, either Python or node.js seems to - # require an extra \r\n. - try: - self._conn.send("\r\n0\r\n\r\n".encode("utf-8")) - except http.client.socket.error: - # In case the socket has already been closed - return "" - - return self._getresponse() - - def _getresponse(self): - """Read from recv and return a HTTPResponse object if possible. - Either - 1 - The client has succesfully closed the connection: Return '' - 2 - The server has already closed the connection: Return the response - if possible. - """ - # Wait for a response - self._conn.sock.setblocking(True) - # Parse the response - response = self._bytes - while True: - try: - _bytes = self._conn.sock.recv(1) - except http.client.socket.error: - # For error 54: Connection reset by peer - # (and perhaps others) - return b"" - if _bytes == b"": - break - else: - response += _bytes - # Set recv to be non-blocking again - self._conn.sock.setblocking(False) - - # Convert the response string to a http.client.HTTPResponse - # object with a bit of a hack - if response != b"": - # Taken from - # http://pythonwise.blogspot.ca/2010/02/parse-http-response.html - try: - response = http.client.HTTPResponse(_FakeSocket(response)) - response.begin() - except: - # Bad headers ... etc. - response = b"" - return response - - def _isconnected(self): - """Return True if the socket is still connected - to the server, False otherwise. - - This check is done in 3 steps: - 1 - Check if we have closed the connection - 2 - Check if the original socket connection failed - 3 - Check if the server has returned any data. If they have, - assume that the server closed the response after they sent - the data, i.e. that the data was the HTTP response. - """ - - # 1 - check if we've closed the connection. - if self._closed: - return False - - # 2 - Check if the original socket connection failed - # If this failed, then no socket was initialized - if self._conn.sock is None: - return False - - try: - # 3 - Check if the server has returned any data. - # If they have, then start to store the response - # in _bytes. - self._bytes = b"" - self._bytes = self._conn.sock.recv(1) - return False - except http.client.socket.error as e: - # Check why recv failed - # Windows machines are the error codes - # that start with 1 - # (http://msdn.microsoft.com/en-ca/library/windows/desktop/ms740668(v=vs.85).aspx) - if e.errno == 35 or e.errno == 10035: - # This is the "Resource temporarily unavailable" error - # which is thrown cuz there was nothing to receive, i.e. - # the server hasn't returned a response yet. - # This is a non-fatal error and the operation - # should be tried again. - # So, assume that the connection is still open. - return True - elif e.errno == 54 or e.errno == 10054: - # This is the "Connection reset by peer" error - # which is thrown cuz the server reset the - # socket, so the connection is closed. - return False - elif e.errno == 11: - # This is the "Resource temporarily unavailable" error - # which happens because the "operation would have blocked - # but nonblocking operation was requested". - # We require non-blocking reading of this socket because - # we don't want to wait around for a response, we just - # want to see if a response is currently available. So - # let's just assume that we're still connected and - # hopefully recieve some data on the next try. - return True - elif isinstance(e, ssl.SSLError): - if e.errno == 2: - # errno 2 occurs when trying to read or write data, but more - # data needs to be received on the underlying TCP transport - # before the request can be fulfilled. - # - # Python 2.7.9+ and Python 3.3+ give this its own exception, - # SSLWantReadError - return True - raise e - else: - # Unknown scenario - raise e - - def _reconnect(self): - """Connect if disconnected. - Retry self.maxtries times with delays - """ - if not self._isconnected(): - try: - self._connect() - except http.client.socket.error as e: - # Attempt to reconnect if the connection was refused - if e.errno == 61 or e.errno == 10061: - # errno 61 is the "Connection Refused" error - time.sleep(self._delay) - self._delay += self._delay # fibonacii delays - self._tries += 1 - if self._tries < self.maxtries: - self._reconnect() - else: - self._reset_retries() - raise e - else: - # Unknown scenario - raise e - - # Reconnect worked - reset _closed - self._closed = False - - def _reset_retries(self): - """Reset the connect counters and delays""" - self._tries = 0 - self._delay = 1 - - -class _FakeSocket(StringIO): - # Used to construct a http.client.HTTPResponse object - # from a string. - # Thx to: http://pythonwise.blogspot.ca/2010/02/parse-http-response.html - def makefile(self, *args, **kwargs): - return self diff --git a/packages/python/chart-studio/chart_studio/plotly/plotly.py b/packages/python/chart-studio/chart_studio/plotly/plotly.py deleted file mode 100644 index 589b7aa1c85..00000000000 --- a/packages/python/chart-studio/chart_studio/plotly/plotly.py +++ /dev/null @@ -1,2123 +0,0 @@ -""" -plotly -====== - -A module that contains the plotly class, a liaison between the user -and ploty's servers. - -1. get DEFAULT_PLOT_OPTIONS for options - -2. update plot_options with .plotly/ dir - -3. update plot_options with _plot_options - -4. update plot_options with kwargs! - -""" -from __future__ import absolute_import - -import base64 -import copy -import json -import os -import time -import urllib -import warnings -import webbrowser - -import json as _json - -import _plotly_utils.utils -import _plotly_utils.exceptions -from _plotly_utils.basevalidators import CompoundValidator, is_array -from _plotly_utils.utils import PlotlyJSONEncoder - -from chart_studio import files, session, tools, utils, exceptions -from chart_studio.api import v2 -from chart_studio.plotly import chunked_requests -from chart_studio.grid_objs import Grid -from chart_studio.dashboard_objs import dashboard_objs as dashboard - -# This is imported like this for backwards compat. Careful if changing. -from chart_studio.config import get_config, get_credentials - -__all__ = None - -DEFAULT_PLOT_OPTIONS = { - "world_readable": files.FILE_CONTENT[files.CONFIG_FILE]["world_readable"], - "auto_open": files.FILE_CONTENT[files.CONFIG_FILE]["auto_open"], - "validate": True, - "sharing": files.FILE_CONTENT[files.CONFIG_FILE]["sharing"], -} - -SHARING_ERROR_MSG = ( - "Whoops, sharing can only be set to either 'public', 'private', or " "'secret'." -) - - -# don't break backwards compatibility -def sign_in(username, api_key, **kwargs): - session.sign_in(username, api_key, **kwargs) - try: - # The only way this can succeed is if the user can be authenticated - # with the given, username, api_key, and plotly_api_domain. - v2.users.current() - except exceptions.PlotlyRequestError: - raise _plotly_utils.exceptions.PlotlyError("Sign in failed.") - - -update_plot_options = session.update_session_plot_options - - -def _plot_option_logic(plot_options_from_args): - """ - Given some plot_options as part of a plot call, decide on final options. - Precedence: - 1 - Start with DEFAULT_PLOT_OPTIONS - 2 - Update each key with ~/.plotly/.config options (tls.get_config) - 3 - Update each key with session plot options (set by py.sign_in) - 4 - Update each key with plot, iplot call signature options - - """ - default_plot_options = copy.deepcopy(DEFAULT_PLOT_OPTIONS) - file_options = tools.get_config_file() - session_options = session.get_session_plot_options() - plot_options_from_args = copy.deepcopy(plot_options_from_args) - - # Validate options and fill in defaults w world_readable and sharing - for option_set in [plot_options_from_args, session_options, file_options]: - utils.validate_world_readable_and_sharing_settings(option_set) - utils.set_sharing_and_world_readable(option_set) - - user_plot_options = {} - user_plot_options.update(default_plot_options) - user_plot_options.update(file_options) - user_plot_options.update(session_options) - user_plot_options.update(plot_options_from_args) - user_plot_options = { - k: v - for k, v in user_plot_options.items() - if k in default_plot_options or k == "filename" - } - - return user_plot_options - - -def iplot(figure_or_data, **plot_options): - """Create a unique url for this plot in Plotly and open in IPython. - - plot_options keyword arguments: - filename (string) -- the name that will be associated with this figure - sharing ('public' | 'private' | 'secret') -- Toggle who can view this graph - - 'public': Anyone can view this graph. It will appear in your profile - and can appear in search engines. You do not need to be - logged in to Plotly to view this chart. - - 'private': Only you can view this plot. It will not appear in the - Plotly feed, your profile, or search engines. You must be - logged in to Plotly to view this graph. You can privately - share this graph with other Plotly users in your online - Plotly account and they will need to be logged in to - view this plot. - - 'secret': Anyone with this secret link can view this chart. It will - not appear in the Plotly feed, your profile, or search - engines. If it is embedded inside a webpage or an IPython - notebook, anybody who is viewing that page will be able to - view the graph. You do not need to be logged in to view - this plot. - world_readable (default=True) -- Deprecated: use "sharing". - Make this figure private/public - """ - from plotly.basedatatypes import BaseFigure, BaseLayoutType - - if "auto_open" not in plot_options: - plot_options["auto_open"] = False - url = plot(figure_or_data, **plot_options) - - if isinstance(figure_or_data, dict): - layout = figure_or_data.get("layout", {}) - if isinstance(layout, BaseLayoutType): - layout = layout.to_plotly_json() - elif isinstance(figure_or_data, BaseFigure): - layout = figure_or_data.layout.to_plotly_json() - else: - layout = {} - - embed_options = dict() - embed_options["width"] = layout.get("width", "100%") - embed_options["height"] = layout.get("height", 525) - try: - float(embed_options["width"]) - except (ValueError, TypeError): - pass - else: - embed_options["width"] = str(embed_options["width"]) + "px" - - try: - float(embed_options["height"]) - except (ValueError, TypeError): - pass - else: - embed_options["height"] = str(embed_options["height"]) + "px" - - return tools.embed(url, **embed_options) - - -def plot(figure_or_data, validate=True, **plot_options): - """Create a unique url for this plot in Plotly and optionally open url. - - plot_options keyword arguments: - filename (string) -- the name that will be associated with this figure - auto_open (default=True) -- Toggle browser options - True: open this plot in a new browser tab - False: do not open plot in the browser, but do return the unique url - sharing ('public' | 'private' | 'secret') -- Toggle who can view this - graph - - 'public': Anyone can view this graph. It will appear in your profile - and can appear in search engines. You do not need to be - logged in to Plotly to view this chart. - - 'private': Only you can view this plot. It will not appear in the - Plotly feed, your profile, or search engines. You must be - logged in to Plotly to view this graph. You can privately - share this graph with other Plotly users in your online - Plotly account and they will need to be logged in to - view this plot. - - 'secret': Anyone with this secret link can view this chart. It will - not appear in the Plotly feed, your profile, or search - engines. If it is embedded inside a webpage or an IPython - notebook, anybody who is viewing that page will be able to - view the graph. You do not need to be logged in to view - this plot. - world_readable (default=True) -- Deprecated: use "sharing". - Make this figure private/public - - """ - import plotly.tools - - figure = plotly.tools.return_figure_from_figure_or_data(figure_or_data, validate) - for entry in figure["data"]: - if ("type" in entry) and (entry["type"] == "scattergl"): - continue - for key, val in list(entry.items()): - try: - if len(val) > 40000: - msg = ( - "Woah there! Look at all those points! Due to " - "browser limitations, the Plotly SVG drawing " - "functions have a hard time " - "graphing more than 500k data points for line " - "charts, or 40k points for other types of charts. " - "Here are some suggestions:\n" - "(1) Use the `plotly.graph_objs.Scattergl` " - "trace object to generate a WebGl graph.\n" - "(2) Trying using the image API to return an image " - "instead of a graph URL\n" - "(3) Use matplotlib\n" - "(4) See if you can create your visualization with " - "fewer data points\n\n" - "If the visualization you're using aggregates " - "points (e.g., box plot, histogram, etc.) you can " - "disregard this warning." - ) - warnings.warn(msg) - except TypeError: - pass - - plot_options = _plot_option_logic(plot_options) - - # Initialize API payload - payload = {"figure": figure, "world_readable": True} - - # Process filename - filename = plot_options.get("filename", None) - if filename: - # Strip trailing slash - if filename[-1] == "/": - filename = filename[0:-1] - - # split off any parent directory - paths = filename.split("/") - parent_path = "/".join(paths[0:-1]) - filename = paths[-1] - - # Create parent directory - if parent_path: - file_ops.ensure_dirs(parent_path) - payload["parent_path"] = parent_path - - payload["filename"] = filename - else: - parent_path = "" - - # Process sharing - sharing = plot_options.get("sharing", None) - if sharing == "public": - payload["world_readable"] = True - elif sharing == "private": - payload["world_readable"] = False - elif sharing == "secret": - payload["world_readable"] = False - payload["share_key_enabled"] = True - else: - raise _plotly_utils.exceptions.PlotlyError(SHARING_ERROR_MSG) - - # Extract grid - figure, grid = _extract_grid_from_fig_like(figure) - - # Upload grid if anything was extracted - if len(grid) > 0: - if not filename: - grid_filename = None - elif parent_path: - grid_filename = parent_path + "/" + filename + "_grid" - else: - grid_filename = filename + "_grid" - - grid_ops.upload( - grid=grid, - filename=grid_filename, - world_readable=payload["world_readable"], - auto_open=False, - ) - - _set_grid_column_references(figure, grid) - payload["figure"] = figure - - file_info = _create_or_update(payload, "plot") - - # Compute viewing URL - if sharing == "secret": - web_url = file_info["web_url"][:-1] + "?share_key=" + file_info["share_key"] - else: - web_url = file_info["web_url"] - - # Handle auto_open - auto_open = plot_options.get("auto_open", None) - if auto_open: - _open_url(web_url) - - # Return URL - return web_url - - -def iplot_mpl(fig, resize=True, strip_style=False, update=None, **plot_options): - """Replot a matplotlib figure with plotly in IPython. - - This function: - 1. converts the mpl figure into JSON (run help(plotly.tools.mpl_to_plotly)) - 2. makes a request to Plotly to save this figure in your account - 3. displays the image in your IPython output cell - - Positional arguments: - fig -- a figure object from matplotlib - - Keyword arguments: - resize (default=True) -- allow plotly to choose the figure size - strip_style (default=False) -- allow plotly to choose style options - update (default=None) -- update the resulting figure with an 'update' - dictionary-like object resembling a plotly 'Figure' object - - Additional keyword arguments: - plot_options -- run help(plotly.plotly.iplot) - - """ - import plotly.tools - - fig = plotly.tools.mpl_to_plotly(fig, resize=resize, strip_style=strip_style) - if update and isinstance(update, dict): - fig.update(update) - elif update is not None: - raise _plotly_utils.exceptions.PlotlyGraphObjectError( - "'update' must be dictionary-like and a valid plotly Figure " - "object. Run 'help(plotly.graph_objs.Figure)' for more info." - ) - return iplot(fig, **plot_options) - - -def plot_mpl(fig, resize=True, strip_style=False, update=None, **plot_options): - """Replot a matplotlib figure with plotly. - - This function: - 1. converts the mpl figure into JSON (run help(plotly.tools.mpl_to_plotly)) - 2. makes a request to Plotly to save this figure in your account - 3. opens your figure in a browser tab OR returns the unique figure url - - Positional arguments: - fig -- a figure object from matplotlib - - Keyword arguments: - resize (default=True) -- allow plotly to choose the figure size - strip_style (default=False) -- allow plotly to choose style options - update (default=None) -- update the resulting figure with an 'update' - dictionary-like object resembling a plotly 'Figure' object - - Additional keyword arguments: - plot_options -- run help(plotly.plotly.plot) - - """ - import plotly.tools - - fig = plotly.tools.mpl_to_plotly(fig, resize=resize, strip_style=strip_style) - if update and isinstance(update, dict): - fig.update(update) - elif update is not None: - raise _plotly_utils.exceptions.PlotlyGraphObjectError( - "'update' must be dictionary-like and a valid plotly Figure " - "object. Run 'help(plotly.graph_objs.Figure)' for more info." - ) - return plot(fig, **plot_options) - - -def _swap_keys(obj, key1, key2): - """Swap obj[key1] with obj[key2]""" - val1, val2 = None, None - try: - val2 = obj.pop(key1) - except KeyError: - pass - try: - val1 = obj.pop(key2) - except KeyError: - pass - if val2 is not None: - obj[key2] = val2 - if val1 is not None: - obj[key1] = val1 - - -def _swap_xy_data(data_obj): - """Swap x and y data and references""" - swaps = [ - ("x", "y"), - ("x0", "y0"), - ("dx", "dy"), - ("xbins", "ybins"), - ("nbinsx", "nbinsy"), - ("autobinx", "autobiny"), - ("error_x", "error_y"), - ] - for swap in swaps: - _swap_keys(data_obj, swap[0], swap[1]) - try: - rows = len(data_obj["z"]) - cols = len(data_obj["z"][0]) - for row in data_obj["z"]: - if len(row) != cols: - raise TypeError - - # if we can't do transpose, we hit an exception before here - z = data_obj.pop("z") - data_obj["z"] = [[0 for rrr in range(rows)] for ccc in range(cols)] - for iii in range(rows): - for jjj in range(cols): - data_obj["z"][jjj][iii] = z[iii][jjj] - except (KeyError, TypeError, IndexError) as err: - warn = False - try: - if data_obj["z"] is not None: - warn = True - if len(data_obj["z"]) == 0: - warn = False - except (KeyError, TypeError): - pass - if warn: - warnings.warn( - "Data in this file required an 'xy' swap but the 'z' matrix " - "in one of the data objects could not be transposed. Here's " - "why:\n\n{}".format(repr(err)) - ) - - -def byteify(input): - """Convert unicode strings in JSON object to byte strings""" - if isinstance(input, dict): - return {byteify(key): byteify(value) for key, value in input.items()} - elif isinstance(input, list): - return [byteify(element) for element in input] - elif isinstance(input, unicode): - return input.encode("utf-8") - else: - return input - - -def get_figure(file_owner_or_url, file_id=None, raw=False): - """Returns a JSON figure representation for the specified file - - Plotly uniquely identifies figures with a 'file_owner'/'file_id' pair. - Since each file is given a corresponding unique url, you may also simply - pass a valid plotly url as the first argument. - - Examples: - fig = get_figure('https://plotly.com/~chris/1638') - fig = get_figure('chris', 1638) - - Note, if you're using a file_owner string as the first argument, you MUST - specify a `file_id` keyword argument. Else, if you're using a url string - as the first argument, you MUST NOT specify a `file_id` keyword argument, - or file_id must be set to Python's None value. - - Positional arguments: - file_owner_or_url (string) -- a valid plotly username OR a valid plotly url - - Keyword arguments: - file_id (default=None) -- an int or string that can be converted to int - if you're using a url, don't fill this in! - raw (default=False) -- if true, return unicode JSON string verbatim** - - **by default, plotly will return a Figure object. This representation used - to decode the keys and values from unicode (if possible) and remove - information irrelevant to the figure representation. Now if in Python 2, - unicode is converted to regular strings. Also irrelevant information is - now NOT stripped: an error will be raised if a figure contains invalid - properties. - - Finally this function converts the JSON dictionary objects to plotly - `graph objects`. - - Run `help(plotly.graph_objs.Figure)` for a list of valid properties. - - """ - import plotly.tools - - plotly_rest_url = get_config()["plotly_domain"] - if file_id is None: # assume we're using a url - url = file_owner_or_url - if url[: len(plotly_rest_url)] != plotly_rest_url: - raise _plotly_utils.exceptions.PlotlyError( - "Because you didn't supply a 'file_id' in the call, " - "we're assuming you're trying to snag a figure from a url. " - "You supplied the url, '{0}', we expected it to start with " - "'{1}'." - "\nRun help on this function for more information." - "".format(url, plotly_rest_url) - ) - head = plotly_rest_url + "/~" - file_owner = url.replace(head, "").split("/")[0] - file_id = url.replace(head, "").split("/")[1] - else: - file_owner = file_owner_or_url - try: - int(file_id) - except ValueError: - raise _plotly_utils.exceptions.PlotlyError( - "The 'file_id' argument was not able to be converted into an " - "integer number. Make sure that the positional 'file_id' argument " - "is a number that can be converted into an integer or a string " - "that can be converted into an integer." - ) - if int(file_id) < 0: - raise _plotly_utils.exceptions.PlotlyError( - "The 'file_id' argument must be a non-negative number." - ) - - fid = "{}:{}".format(file_owner, file_id) - response = v2.plots.content(fid, inline_data=True) - figure = response.json() - # Fix 'histogramx', 'histogramy', and 'bardir' stuff - for index, entry in enumerate(figure["data"]): - try: - # Use xbins to bin data in x, and ybins to bin data in y - if all( - (entry["type"] == "histogramy", "xbins" in entry, "ybins" not in entry) - ): - entry["ybins"] = entry.pop("xbins") - - # Convert bardir to orientation, and put the data into the axes - # it's eventually going to be used with - if entry["type"] in ["histogramx", "histogramy"]: - entry["type"] = "histogram" - if "bardir" in entry: - entry["orientation"] = entry.pop("bardir") - if entry["type"] == "bar": - if entry["orientation"] == "h": - _swap_xy_data(entry) - if entry["type"] == "histogram": - if ("x" in entry) and ("y" not in entry): - if entry["orientation"] == "h": - _swap_xy_data(entry) - del entry["orientation"] - if ("y" in entry) and ("x" not in entry): - if entry["orientation"] == "v": - _swap_xy_data(entry) - del entry["orientation"] - figure["data"][index] = entry - except KeyError: - pass - - # Remove stream dictionary if found in a data trace - # (it has private tokens in there we need to hide!) - for index, entry in enumerate(figure["data"]): - if "stream" in entry: - del figure["data"][index]["stream"] - - if raw: - return figure - return plotly.tools.get_graph_obj(figure, obj_type="Figure") - - -@_plotly_utils.utils.template_doc(**tools.get_config_file()) -class Stream: - """ - Interface to Plotly's real-time graphing API. - - NOTE: Streaming is no longer supported in Plotly Cloud. - Streaming is still available as part of Plotly On-Premises. - - Initialize a Stream object with a stream_id - found in {plotly_domain}/settings. - Real-time graphs are initialized with a call to `plot` that embeds - your unique `stream_id`s in each of the graph's traces. The `Stream` - interface plots data to these traces, as identified with the unique - stream_id, in real-time. - Every viewer of the graph sees the same data at the same time. - - View examples and tutorials here: - https://plotly.com/python/streaming/ - - Stream example: - # Initialize a streaming graph - # by embedding stream_id's in the graph's traces - import plotly.plotly as py - from plotly.graph_objs import Data, Scatter, Stream - stream_id = "your_stream_id" # See {plotly_domain}/settings - py.plot(Data([Scatter(x=[], y=[], - stream=Stream(token=stream_id, maxpoints=100))])) - # Stream data to the import trace - stream = Stream(stream_id) # Initialize a stream object - stream.open() # Open the stream - stream.write(dict(x=1, y=1)) # Plot (1, 1) in your graph - - """ - - HTTP_PORT = 80 - HTTPS_PORT = 443 - - @_plotly_utils.utils.template_doc(**tools.get_config_file()) - def __init__(self, stream_id): - """ - Initialize a Stream object with your unique stream_id. - Find your stream_id at {plotly_domain}/settings. - - For more help, see: `help(plotly.plotly.Stream)` - or see examples and tutorials here: - https://plotly.com/python/streaming/ - - """ - self.stream_id = stream_id - self._stream = None - - def get_streaming_specs(self): - """ - Returns the streaming server, port, ssl_enabled flag, and headers. - - """ - streaming_url = get_config()["plotly_streaming_domain"] - ssl_verification_enabled = get_config()["plotly_ssl_verification"] - ssl_enabled = "https" in streaming_url - port = self.HTTPS_PORT if ssl_enabled else self.HTTP_PORT - - # If no scheme (https/https) is included in the streaming_url, the - # host will be None. Use streaming_url in this case. - host = urllib.parse.urlparse(streaming_url).hostname or streaming_url - - headers = {"Host": host, "plotly-streamtoken": self.stream_id} - streaming_specs = { - "server": host, - "port": port, - "ssl_enabled": ssl_enabled, - "ssl_verification_enabled": ssl_verification_enabled, - "headers": headers, - } - - return streaming_specs - - def heartbeat(self, reconnect_on=(200, "", 408, 502)): - """ - Keep stream alive. Streams will close after ~1 min of inactivity. - - If the interval between stream writes is > 30 seconds, you should - consider adding a heartbeat between your stream.write() calls like so: - >>> stream.heartbeat() - - """ - try: - self._stream.write("\n", reconnect_on=reconnect_on) - except AttributeError: - raise _plotly_utils.exceptions.PlotlyError( - "Stream has not been opened yet, " - "cannot write to a closed connection. " - "Call `open()` on the stream to open the stream." - ) - - @property - def connected(self): - if self._stream is None: - return False - - return self._stream._isconnected() - - def open(self): - """ - Open streaming connection to plotly. - - For more help, see: `help(plotly.plotly.Stream)` - or see examples and tutorials here: - https://plotly.com/python/streaming/ - - """ - streaming_specs = self.get_streaming_specs() - self._stream = chunked_requests.Stream(**streaming_specs) - - def write(self, trace, layout=None, reconnect_on=(200, "", 408, 502)): - """ - Write to an open stream. - - Once you've instantiated a 'Stream' object with a 'stream_id', - you can 'write' to it in real time. - - positional arguments: - trace - A dict of properties to stream - Some valid keys for trace dictionaries: - 'x', 'y', 'text', 'z', 'marker', 'line' - - keyword arguments: - layout (default=None) - A valid Layout object or dict with - compatible properties - Run help(plotly.graph_objs.Layout) - - Examples: - - Append a point to a scatter trace - >>> write(dict(x=1, y=2)) - - Overwrite the x and y properties of a scatter trace - >>> write(dict(x=[1, 2, 3], y=[10, 20, 30])) - - Append a point to a scatter trace and set the points text value - >>> write(dict(x=1, y=2, text='scatter text')) - - Append a point to a scatter trace and set the points color - >>> write(dict(x=1, y=3, marker=go.Marker(color='blue'))) - - Set a new z value array for a Heatmap trace - >>> write(dict(z=[[1, 2, 3], [4, 5, 6]])) - - The connection to plotly's servers is checked before writing - and reconnected if disconnected and if the response status code - is in `reconnect_on`. - - For more help, see: `help(plotly.plotly.Stream)` - or see examples and tutorials here: - - """ - - # Convert trace objects to dictionaries - from plotly.basedatatypes import BaseTraceType - - if isinstance(trace, BaseTraceType): - stream_object = trace.to_plotly_json() - else: - stream_object = copy.deepcopy(trace) - - # Remove 'type' if present since this trace type cannot be changed - stream_object.pop("type", None) - - if layout is not None: - stream_object.update(dict(layout=layout)) - - # TODO: allow string version of this? - jdata = _json.dumps(stream_object, cls=PlotlyJSONEncoder) - jdata += "\n" - - try: - self._stream.write(jdata, reconnect_on=reconnect_on) - except AttributeError: - raise _plotly_utils.exceptions.PlotlyError( - "Stream has not been opened yet, " - "cannot write to a closed connection. " - "Call `open()` on the stream to open the stream." - ) - - def close(self): - """ - Close the stream connection to plotly's streaming servers. - - For more help, see: `help(plotly.plotly.Stream)` - or see examples and tutorials here: - https://plotly.com/python/streaming/ - - """ - try: - self._stream.close() - except AttributeError: - raise _plotly_utils.exceptions.PlotlyError( - "Stream has not been opened yet." - ) - - -class image: - """ - Helper functions wrapped around plotly's static image generation api. - - """ - - @staticmethod - def get(figure_or_data, format="png", width=None, height=None, scale=None): - """Return a static image of the plot described by `figure_or_data`. - - positional arguments: - - figure_or_data: The figure dict-like or data list-like object that - describes a plotly figure. - Same argument used in `py.plot`, `py.iplot`, - see https://plotly.com/python for examples - - format: 'png', 'svg', 'jpeg', 'pdf', 'emf' - - width: output width - - height: output height - - scale: Increase the resolution of the image by `scale` - amount (e.g. `3`) - Only valid for PNG and JPEG images. - - example: - ``` - import plotly.plotly as py - fig = {'data': [{'x': [1, 2, 3], 'y': [3, 1, 5], 'type': 'bar'}]} - py.image.get(fig, 'png', scale=3) - ``` - - """ - # TODO: format is a built-in name... we shouldn't really use it - import plotly.tools - - figure = plotly.tools.return_figure_from_figure_or_data(figure_or_data, True) - - if format not in ["png", "svg", "jpeg", "pdf", "emf"]: - raise _plotly_utils.exceptions.PlotlyError( - "Invalid format. This version of your Plotly-Python " - "package currently only supports png, svg, jpeg, and pdf. " - "Learn more about image exporting, and the currently " - "supported file types here: " - "https://plotly.com/python/static-image-export/" - ) - if scale is not None: - try: - scale = float(scale) - except: - raise _plotly_utils.exceptions.PlotlyError( - "Invalid scale parameter. Scale must be a number." - ) - - payload = {"figure": figure, "format": format} - if width is not None: - payload["width"] = width - if height is not None: - payload["height"] = height - if scale is not None: - payload["scale"] = scale - - response = v2.images.create(payload) - - headers = response.headers - if "content-type" in headers and headers["content-type"] in [ - "image/png", - "image/jpeg", - "application/pdf", - "image/svg+xml", - "image/emf", - ]: - return response.content - elif "content-type" in headers and "json" in headers["content-type"]: - return response.json()["image"] - - @classmethod - def ishow(cls, figure_or_data, format="png", width=None, height=None, scale=None): - """Display a static image of the plot described by `figure_or_data` - in an IPython Notebook. - - positional arguments: - - figure_or_data: The figure dict-like or data list-like object that - describes a plotly figure. - Same argument used in `py.plot`, `py.iplot`, - see https://plotly.com/python for examples - - format: 'png', 'svg', 'jpeg', 'pdf' - - width: output width - - height: output height - - scale: Increase the resolution of the image by `scale` amount - Only valid for PNG and JPEG images. - - example: - ``` - import plotly.plotly as py - fig = {'data': [{'x': [1, 2, 3], 'y': [3, 1, 5], 'type': 'bar'}]} - py.image.ishow(fig, 'png', scale=3) - """ - if format == "pdf": - raise _plotly_utils.exceptions.PlotlyError( - "Aw, snap! " - "It's not currently possible to embed a pdf into " - "an IPython notebook. You can save the pdf " - "with the `image.save_as` or you can " - "embed an png, jpeg, or svg." - ) - img = cls.get(figure_or_data, format, width, height, scale) - from IPython.display import display, Image, SVG - - if format == "svg": - display(SVG(img)) - else: - display(Image(img)) - - @classmethod - def save_as( - cls, figure_or_data, filename, format=None, width=None, height=None, scale=None - ): - """Save a image of the plot described by `figure_or_data` locally as - `filename`. - - Valid image formats are 'png', 'svg', 'jpeg', 'pdf' and 'emf'. - The format is taken as the extension of the filename or as the - supplied format. - - positional arguments: - - figure_or_data: The figure dict-like or data list-like object that - describes a plotly figure. - Same argument used in `py.plot`, `py.iplot`, - see https://plotly.com/python for examples - - filename: The filepath to save the image to - - format: 'png', 'svg', 'jpeg', 'pdf', 'emf' - - width: output width - - height: output height - - scale: Increase the resolution of the image by `scale` amount - Only valid for PNG and JPEG images. - - example: - ``` - import plotly.plotly as py - fig = {'data': [{'x': [1, 2, 3], 'y': [3, 1, 5], 'type': 'bar'}]} - py.image.save_as(fig, 'my_image.png', scale=3) - ``` - """ - # todo: format shadows built-in name - (base, ext) = os.path.splitext(filename) - if not ext and not format: - filename += ".png" - elif ext and not format: - format = ext[1:] - elif not ext and format: - filename += "." + format - - img = cls.get(figure_or_data, format, width, height, scale) - - f = open(filename, "wb") - f.write(img) - f.close() - - -class file_ops: - """ - Interface to Plotly's File System API - - """ - - @classmethod - def mkdirs(cls, folder_path): - """ - Create folder(s) specified by folder_path in your Plotly account. - - If the intermediate directories do not exist, - they will be created. If they already exist, - no error will be thrown. - - Mimics the shell's mkdir -p. - - Returns: - - 200 if folders already existed, nothing was created - - 201 if path was created - Raises: - - exceptions.PlotlyRequestError with status code - 400 if the path already exists. - - Usage: - >> mkdirs('new folder') - >> mkdirs('existing folder/new folder') - >> mkdirs('new/folder/path') - - """ - response = v2.folders.create({"path": folder_path}) - return response.status_code - - @classmethod - def ensure_dirs(cls, folder_path): - """ - Create folder(s) if they don't exist, but unlike mkdirs, doesn't - raise an error if folder path already exist - """ - try: - cls.mkdirs(folder_path) - except exceptions.PlotlyRequestError as e: - if "already exists" in e.message: - pass - else: - raise e - - -class grid_ops: - """ - Interface to Plotly's Grid API. - Plotly Grids are Plotly's tabular data object, rendered - in an online spreadsheet. Plotly graphs can be made from - references of columns of Plotly grid objects. Free-form - JSON Metadata can be saved with Plotly grids. - - To create a Plotly grid in your Plotly account from Python, - see `grid_ops.upload`. - - To add rows or columns to an existing Plotly grid, see - `grid_ops.append_rows` and `grid_ops.append_columns` - respectively. - - To delete one of your grid objects, see `grid_ops.delete`. - - """ - - @classmethod - def _fill_in_response_column_ids(cls, request_columns, response_columns, grid_id): - for req_col in request_columns: - for resp_col in response_columns: - if resp_col["name"] == req_col.name: - req_col.id = "{0}:{1}".format(grid_id, resp_col["uid"]) - response_columns.remove(resp_col) - - @staticmethod - def ensure_uploaded(fid): - if fid: - return - raise _plotly_utils.exceptions.PlotlyError( - "This operation requires that the grid has already been uploaded " - "to Plotly. Try `uploading` first." - ) - - @classmethod - def upload( - cls, grid, filename=None, world_readable=True, auto_open=True, meta=None - ): - """ - Upload a grid to your Plotly account with the specified filename. - - Positional arguments: - - grid: A plotly.grid_objs.Grid object, - call `help(plotly.grid_ops.Grid)` for more info. - - filename: Name of the grid to be saved in your Plotly account. - To save a grid in a folder in your Plotly account, - separate specify a filename with folders and filename - separated by backslashes (`/`). - If a grid, plot, or folder already exists with the same - filename, a `plotly.exceptions.RequestError` will be - thrown with status_code 409. If filename is None, - and randomly generated filename will be used. - - Optional keyword arguments: - - world_readable (default=True): make this grid publically (True) - or privately (False) viewable. - - auto_open (default=True): Automatically open this grid in - the browser (True) - - meta (default=None): Optional Metadata to associate with - this grid. - Metadata is any arbitrary - JSON-encodable object, for example: - `{"experiment name": "GaAs"}` - - Filenames must be unique. To overwrite a grid with the same filename, - you'll first have to delete the grid with the blocking name. See - `plotly.plotly.grid_ops.delete`. - - Usage example 1: Upload a plotly grid - ``` - from plotly.grid_objs import Grid, Column - import plotly.plotly as py - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - ``` - - Usage example 2: Make a graph based with data that is sourced - from a newly uploaded Plotly grid - ``` - import plotly.plotly as py - from plotly.grid_objs import Grid, Column - from plotly.graph_objs import Scatter - # Upload a grid - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - - # Build a Plotly graph object sourced from the - # grid's columns - trace = Scatter(xsrc=grid[0], ysrc=grid[1]) - py.plot([trace], filename='graph from grid') - ``` - - """ - # transmorgify grid object into plotly's format - grid_json = grid._to_plotly_grid_json() - if meta is not None: - grid_json["metadata"] = meta - - payload = {"data": grid_json, "world_readable": world_readable} - - # Make a folder path - if filename: - if filename[-1] == "/": - filename = filename[0:-1] - - paths = filename.split("/") - parent_path = "/".join(paths[0:-1]) - filename = paths[-1] - - if parent_path != "": - file_ops.ensure_dirs(parent_path) - - payload["filename"] = filename - if parent_path: - payload["parent_path"] = parent_path - - file_info = _create_or_overwrite_grid(payload) - - cols = file_info["cols"] - fid = file_info["fid"] - web_url = file_info["web_url"] - - # mutate the grid columns with the id's returned from the server - cls._fill_in_response_column_ids(grid, cols, fid) - - grid.id = fid - - if meta is not None: - meta_ops.upload(meta, grid=grid) - - if auto_open: - _open_url(web_url) - - return web_url - - @classmethod - def append_columns(cls, columns, grid=None, grid_url=None): - """ - Append columns to a Plotly grid. - - `columns` is an iterable of plotly.grid_objs.Column objects - and only one of `grid` and `grid_url` needs to specified. - - `grid` is a ploty.grid_objs.Grid object that has already been - uploaded to plotly with the grid_ops.upload method. - - `grid_url` is a unique URL of a `grid` in your plotly account. - - Usage example 1: Upload a grid to Plotly, and then append a column - ``` - from plotly.grid_objs import Grid, Column - import plotly.plotly as py - column_1 = Column([1, 2, 3], 'time') - grid = Grid([column_1]) - py.grid_ops.upload(grid, 'time vs voltage') - - # append a column to the grid - column_2 = Column([4, 2, 5], 'voltage') - py.grid_ops.append_columns([column_2], grid=grid) - ``` - - Usage example 2: Append a column to a grid that already exists on - Plotly - ``` - from plotly.grid_objs import Grid, Column - import plotly.plotly as py - - grid_url = 'https://plotly.com/~chris/3143' - column_1 = Column([1, 2, 3], 'time') - py.grid_ops.append_columns([column_1], grid_url=grid_url) - ``` - - """ - grid_id = parse_grid_id_args(grid, grid_url) - - grid_ops.ensure_uploaded(grid_id) - - # Verify unique column names - column_names = [c.name for c in columns] - if grid: - existing_column_names = [c.name for c in grid] - column_names.extend(existing_column_names) - duplicate_name = utils.get_first_duplicate(column_names) - if duplicate_name: - err = exceptions.NON_UNIQUE_COLUMN_MESSAGE.format(duplicate_name) - raise exceptions.InputError(err) - - # This is sorta gross, we need to double-encode this. - body = {"cols": _json.dumps(columns, cls=PlotlyJSONEncoder)} - fid = grid_id - response = v2.grids.col_create(fid, body) - parsed_content = response.json() - - cls._fill_in_response_column_ids(columns, parsed_content["cols"], fid) - - if grid: - grid.extend(columns) - - @classmethod - def append_rows(cls, rows, grid=None, grid_url=None): - """ - Append rows to a Plotly grid. - - `rows` is an iterable of rows, where each row is a - list of numbers, strings, or dates. The number of items - in each row must be equal to the number of columns - in the grid. If appending rows to a grid with columns of - unequal length, Plotly will fill the columns with shorter - length with empty strings. - - Only one of `grid` and `grid_url` needs to specified. - - `grid` is a ploty.grid_objs.Grid object that has already been - uploaded to plotly with the grid_ops.upload method. - - `grid_url` is a unique URL of a `grid` in your plotly account. - - Usage example 1: Upload a grid to Plotly, and then append rows - ``` - from plotly.grid_objs import Grid, Column - import plotly.plotly as py - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([5, 2, 7], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - - # append a row to the grid - row = [1, 5] - py.grid_ops.append_rows([row], grid=grid) - ``` - - Usage example 2: Append a row to a grid that already exists on Plotly - ``` - from plotly.grid_objs import Grid - import plotly.plotly as py - - grid_url = 'https://plotly.com/~chris/3143' - - row = [1, 5] - py.grid_ops.append_rows([row], grid=grid_url) - ``` - - """ - grid_id = parse_grid_id_args(grid, grid_url) - - grid_ops.ensure_uploaded(grid_id) - - if grid: - n_columns = len([column for column in grid]) - for row_i, row in enumerate(rows): - if len(row) != n_columns: - raise exceptions.InputError( - "The number of entries in " - "each row needs to equal the number of columns in " - "the grid. Row {0} has {1} {2} but your " - "grid has {3} {4}. ".format( - row_i, - len(row), - "entry" if len(row) == 1 else "entries", - n_columns, - "column" if n_columns == 1 else "columns", - ) - ) - - fid = grid_id - v2.grids.row(fid, {"rows": rows}) - - if grid: - longest_column_length = max([len(col.data) for col in grid]) - - for column in grid: - n_empty_rows = longest_column_length - len(column.data) - empty_string_rows = ["" for _ in range(n_empty_rows)] - column.data.extend(empty_string_rows) - - column_extensions = zip(*rows) - for local_column, column_extension in zip(grid, column_extensions): - local_column.data.extend(column_extension) - - @classmethod - def delete(cls, grid=None, grid_url=None): - """ - Delete a grid from your Plotly account. - - Only one of `grid` or `grid_url` needs to be specified. - - `grid` is a plotly.grid_objs.Grid object that has already - been uploaded to Plotly. - - `grid_url` is the URL of the Plotly grid to delete - - Usage example 1: Upload a grid to plotly, then delete it - ``` - from plotly.grid_objs import Grid, Column - import plotly.plotly as py - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - - # now delete it, and free up that filename - py.grid_ops.delete(grid) - ``` - - Usage example 2: Delete a plotly grid by url - ``` - import plotly.plotly as py - - grid_url = 'https://plotly.com/~chris/3' - py.grid_ops.delete(grid_url=grid_url) - ``` - - """ - fid = parse_grid_id_args(grid, grid_url) - grid_ops.ensure_uploaded(fid) - v2.grids.trash(fid) - v2.grids.permanent_delete(fid) - - -class meta_ops: - """ - Interface to Plotly's Metadata API. - - In Plotly, Metadata is arbitrary, free-form JSON data that is - associated with Plotly grids. Metadata is viewable with any grid - that is shared and grids are searchable by key value pairs in - the Metadata. Metadata is any JSON-encodable object. - - To upload Metadata, either use the optional keyword argument `meta` - in the `py.grid_ops.upload` method, or use `py.meta_ops.upload`. - - """ - - @classmethod - def upload(cls, meta, grid=None, grid_url=None): - """ - Upload Metadata to a Plotly grid. - - Metadata is any JSON-encodable object. For example, - a dictionary, string, or list. - - Only one of `grid` or `grid_url` needs to be specified. - - `grid` is a plotly.grid_objs.Grid object that has already - been uploaded to Plotly. - - `grid_url` is the URL of the Plotly grid to attach Metadata to. - - Usage example 1: Upload a grid to Plotly, then attach Metadata to it - ``` - from plotly.grid_objs import Grid, Column - import plotly.plotly as py - column_1 = Column([1, 2, 3], 'time') - column_2 = Column([4, 2, 5], 'voltage') - grid = Grid([column_1, column_2]) - py.grid_ops.upload(grid, 'time vs voltage') - - # now attach Metadata to the grid - meta = {'experment': 'GaAs'} - py.meta_ops.upload(meta, grid=grid) - ``` - - Usage example 2: Upload Metadata to an existing Plotly grid - ``` - import plotly.plotly as py - - grid_url = 'https://plotly.com/~chris/3143' - - meta = {'experment': 'GaAs'} - - py.meta_ops.upload(meta, grid_url=grid_Url) - ``` - - """ - fid = parse_grid_id_args(grid, grid_url) - return v2.grids.update(fid, {"metadata": meta}).json() - - -def parse_grid_id_args(grid, grid_url): - """ - Return the grid_id from the non-None input argument. - - Raise an error if more than one argument was supplied. - - """ - if grid is not None: - id_from_grid = grid.id - else: - id_from_grid = None - args = [id_from_grid, grid_url] - arg_names = ("grid", "grid_url") - - supplied_arg_names = [ - arg_name for arg_name, arg in zip(arg_names, args) if arg is not None - ] - - if not supplied_arg_names: - raise exceptions.InputError( - "One of the two keyword arguments is required:\n" - " `grid` or `grid_url`\n\n" - "grid: a plotly.graph_objs.Grid object that has already\n" - " been uploaded to Plotly.\n\n" - "grid_url: the url where the grid can be accessed on\n" - " Plotly, e.g. 'https://plotly.com/~chris/3043'\n\n" - ) - elif len(supplied_arg_names) > 1: - raise exceptions.InputError( - "Only one of `grid` or `grid_url` is required. \n" "You supplied both. \n" - ) - else: - supplied_arg_name = supplied_arg_names.pop() - if supplied_arg_name == "grid_url": - path = urllib.parse.urlparse(grid_url).path - file_owner, file_id = path.replace("/~", "").split("/")[0:2] - return "{0}:{1}".format(file_owner, file_id) - else: - return grid.id - - -def add_share_key_to_url(plot_url, attempt=0): - """ - Check that share key is enabled and update url to include the secret key - - """ - urlsplit = urllib.parse.urlparse(plot_url) - username = urlsplit.path.split("/")[1].split("~")[1] - idlocal = urlsplit.path.split("/")[2] - fid = "{}:{}".format(username, idlocal) - body = {"share_key_enabled": True, "world_readable": False} - response = v2.files.update(fid, body) - - # Sometimes a share key is added, but access is still denied. - # Check that share_key_enabled is set to true and - # retry if this is not the case - # https://github.com/plotly/streambed/issues/4089 - time.sleep(4) - share_key_enabled = v2.files.retrieve(fid).json()["share_key_enabled"] - if not share_key_enabled: - attempt += 1 - if attempt == 50: - raise _plotly_utils.exceptions.PlotlyError( - "The sharekey could not be enabled at this time so the graph " - "is saved as private. Try again to save as 'secret' later." - ) - add_share_key_to_url(plot_url, attempt) - - url_share_key = plot_url + "?share_key=" + response.json()["share_key"] - return url_share_key - - -def get_grid(grid_url, raw=False): - """ - Returns the specified grid as a Grid instance or in JSON/dict form. - - :param (str) grid_url: The web_url which locates a Plotly grid. - :param (bool) raw: if False, will output a Grid instance of the JSON grid - being retrieved. If True, raw JSON will be returned. - """ - fid = parse_grid_id_args(None, grid_url) - response = v2.grids.content(fid) - parsed_content = response.json() - - if raw: - return parsed_content - return Grid(parsed_content, fid) - - -def _create_or_update(data, filetype): - """ - Create or update (if file exists) and plot, spectacle, or dashboard - object - Parameters - ---------- - data: dict - update/create API payload - filetype: str - One of 'plot', 'grid', 'spectacle_presentation', or 'dashboard' - Returns - ------- - dict - File info from API response - """ - api_module = getattr(v2, filetype + "s") - - # lookup if pre-existing filename already exists - if "parent_path" in data: - filename = data["parent_path"] + "/" + data["filename"] - else: - filename = data.get("filename", None) - - if filename: - try: - lookup_res = v2.files.lookup(filename) - if isinstance(lookup_res.content, bytes): - content = lookup_res.content.decode("utf-8") - else: - content = lookup_res.content - - matching_file = json.loads(content) - - if matching_file["filetype"] == filetype: - fid = matching_file["fid"] - res = api_module.update(fid, data) - else: - raise _plotly_utils.exceptions.PlotlyError( - """ -'{filename}' is already a {other_filetype} in your account. -While you can overwrite {filetype}s with the same name, you can't overwrite -files with a different type. Try deleting '{filename}' in your account or -changing the filename.""".format( - filename=filename, - filetype=filetype, - other_filetype=matching_file["filetype"], - ) - ) - - except exceptions.PlotlyRequestError: - res = api_module.create(data) - else: - res = api_module.create(data) - - # Check response - res.raise_for_status() - - # Get resulting file content - file_info = res.json() - file_info = file_info.get("file", file_info) - - return file_info - - -def _create_or_overwrite_grid(data, max_retries=3): - """ - Create or overwrite (if file exists) a grid - - Parameters - ---------- - data: dict - update/create API payload - filetype: str - One of 'plot', 'grid', 'spectacle_presentation', or 'dashboard' - - Returns - ------- - dict - File info from API response - """ - api_module = v2.grids - - # lookup if pre-existing filename already exists - if "parent_path" in data: - filename = data["parent_path"] + "/" + data["filename"] - else: - filename = data.get("filename", None) - - if filename: - try: - lookup_res = v2.files.lookup(filename) - if isinstance(lookup_res.content, bytes): - content = lookup_res.content.decode("utf-8") - else: - content = lookup_res.content - - matching_file = json.loads(content) - - fid = matching_file["fid"] - - # Delete fid - # This requires sending file to trash and then deleting it - res = api_module.destroy(fid) - res.raise_for_status() - - except exceptions.PlotlyRequestError as e: - # Raise on trash or permanent delete - # Pass through to try creating the file anyway - pass - - # Create file - try: - res = api_module.create(data) - except exceptions.PlotlyRequestError as e: - if max_retries > 0 and "already exists" in e.message: - # Retry _create_or_overwrite - time.sleep(1) - return _create_or_overwrite_grid(data, max_retries=max_retries - 1) - else: - raise - - # Get resulting file content - res.raise_for_status() - file_info = res.json() - file_info = file_info.get("file", file_info) - - return file_info - - -class dashboard_ops: - """ - Interface to Plotly's Dashboards API. - - Plotly Dashboards are JSON blobs. They are made up by a bunch of - containers which contain either empty boxes or boxes with file urls. - For more info on Dashboard objects themselves, run - `help(plotly.dashboard_objs)`. - - Example 1: Upload Simple Dashboard - ``` - import plotly.plotly as py - import plotly.dashboard_objs as dashboard - box_1 = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:123', - 'title': 'box 1' - } - - box_2 = { - 'type': 'box', - 'boxType': 'plot', - 'fileId': 'username:456', - 'title': 'box 2' - } - - my_dboard = dashboard.Dashboard() - my_dboard.insert(box_1) - # my_dboard.get_preview() - my_dboard.insert(box_2, 'above', 1) - # my_dboard.get_preview() - - py.dashboard_ops.upload(my_dboard) - ``` - - Example 2: Retreive Dashboard from Plotly - ``` - # works if you have at least one dashboard in your files - import plotly.plotly as py - import plotly.dashboard_objs as dashboard - - dboard_names = get_dashboard_names() - first_dboard = get_dashboard(dboard_names[0]) - - first_dboard.get_preview() - ``` - """ - - @classmethod - def upload(cls, dashboard, filename, sharing="public", auto_open=True): - """ - BETA function for uploading/overwriting dashboards to Plotly. - - :param (dict) dashboard: the JSON dashboard to be uploaded. Use - plotly.dashboard_objs.dashboard_objs to create a Dashboard - object. - :param (str) filename: the name of the dashboard to be saved in - your Plotly account. Will overwrite a dashboard of the same - name if it already exists in your files. - :param (str) sharing: can be set to either 'public', 'private' - or 'secret'. If 'public', your dashboard will be viewable by - all other users. If 'private' only you can see your dashboard. - If 'secret', the url will be returned with a sharekey appended - to the url. Anyone with the url may view the dashboard. - :param (bool) auto_open: automatically opens the dashboard in the - browser. - """ - if sharing == "public": - world_readable = True - elif sharing == "private": - world_readable = False - elif sharing == "secret": - world_readable = False - - data = { - "content": json.dumps(dashboard), - "filename": filename, - "world_readable": world_readable, - } - - file_info = _create_or_update(data, "dashboard") - - url = file_info["web_url"] - - if sharing == "secret": - url = add_share_key_to_url(url) - - if auto_open: - webbrowser.open_new(file_info["web_url"]) - - return url - - @classmethod - def _get_all_dashboards(cls): - dashboards = [] - res = v2.dashboards.list().json() - - for dashboard in res["results"]: - if not dashboard["deleted"]: - dashboards.append(dashboard) - while res["next"]: - res = v2.utils.request("get", res["next"]).json() - - for dashboard in res["results"]: - if not dashboard["deleted"]: - dashboards.append(dashboard) - return dashboards - - @classmethod - def _get_dashboard_json(cls, dashboard_name, only_content=True): - dashboards = cls._get_all_dashboards() - for index, dboard in enumerate(dashboards): - if dboard["filename"] == dashboard_name: - break - - dashboard = v2.utils.request( - "get", dashboards[index]["api_urls"]["dashboards"] - ).json() - if only_content: - dashboard_json = json.loads(dashboard["content"]) - return dashboard_json - else: - return dashboard - - @classmethod - def get_dashboard(cls, dashboard_name): - """Returns a Dashboard object from a dashboard name.""" - dashboard_json = cls._get_dashboard_json(dashboard_name) - return dashboard.Dashboard(dashboard_json) - - @classmethod - def get_dashboard_names(cls): - """Return list of all active dashboard names from users' account.""" - dashboards = cls._get_all_dashboards() - return [str(dboard["filename"]) for dboard in dashboards] - - -class presentation_ops: - """ - Interface to Plotly's Spectacle-Presentations API. - """ - - @classmethod - def upload(cls, presentation, filename, sharing="public", auto_open=True): - """ - Function for uploading presentations to Plotly. - - :param (dict) presentation: the JSON presentation to be uploaded. Use - plotly.presentation_objs.Presentation to create presentations - from a Markdown-like string. - :param (str) filename: the name of the presentation to be saved in - your Plotly account. Will overwrite a presentation of the same - name if it already exists in your files. - :param (str) sharing: can be set to either 'public', 'private' - or 'secret'. If 'public', your presentation will be viewable by - all other users. If 'private' only you can see your presentation. - If it is set to 'secret', the url will be returned with a string - of random characters appended to the url which is called a - sharekey. The point of a sharekey is that it makes the url very - hard to guess, but anyone with the url can view the presentation. - :param (bool) auto_open: automatically opens the presentation in the - browser. - - See the documentation online for examples. - """ - if sharing == "public": - world_readable = True - elif sharing in ["private", "secret"]: - world_readable = False - else: - raise _plotly_utils.exceptions.PlotlyError(SHARING_ERROR_MSG) - data = { - "content": json.dumps(presentation), - "filename": filename, - "world_readable": world_readable, - } - - file_info = _create_or_update(data, "spectacle_presentation") - - url = file_info["web_url"] - - if sharing == "secret": - url = add_share_key_to_url(url) - - if auto_open: - webbrowser.open_new(file_info["web_url"]) - - return url - - -def _extract_grid_graph_obj(obj_dict, reference_obj, grid, path): - """ - Extract inline data arrays from a graph_obj instance and place them in - a grid - - Parameters - ---------- - obj_dict: dict - dict representing a graph object that may contain inline arrays - reference_obj: BasePlotlyType - An empty instance of a `graph_obj` with type corresponding to obj_dict - grid: Grid - Grid to extract data arrays too - path: str - Path string of the location of `obj_dict` in the figure - - Returns - ------- - None - Function modifies obj_dict and grid in-place - """ - - from chart_studio.grid_objs import Column - - for prop in list(obj_dict.keys()): - propsrc = "{}src".format(prop) - if propsrc in reference_obj: - val = obj_dict[prop] - if is_array(val): - column = Column(val, path + prop) - grid.append(column) - obj_dict[propsrc] = "TBD" - del obj_dict[prop] - - elif prop in reference_obj: - prop_validator = reference_obj._validators[prop] - if isinstance(prop_validator, CompoundValidator): - # Recurse on compound child - _extract_grid_graph_obj( - obj_dict[prop], - reference_obj[prop], - grid, - "{path}{prop}.".format(path=path, prop=prop), - ) - - # Chart studio doesn't handle links to columns inside object - # arrays, so we don't extract them for now. Logic below works - # and should be reinstated if chart studio gets this capability - # - # elif isinstance(prop_validator, CompoundArrayValidator): - # # Recurse on elements of object arary - # reference_element = prop_validator.validate_coerce([{}])[0] - # for i, element_dict in enumerate(obj_dict[prop]): - # _extract_grid_graph_obj( - # element_dict, - # reference_element, - # grid, - # '{path}{prop}.{i}.'.format(path=path, prop=prop, i=i) - # ) - - -def _extract_grid_from_fig_like(fig, grid=None, path=""): - """ - Extract inline data arrays from a figure and place them in a grid - - Parameters - ---------- - fig: dict - A dict representing a figure or a frame - grid: Grid or None (default None) - The grid to place the extracted columns in. If None, a new grid will - be constructed - path: str (default '') - Parent path, set to `frames` for use with frame objects - Returns - ------- - (dict, Grid) - * dict: Figure dict with data arrays removed - * Grid: Grid object containing one column for each removed data array. - Columns are named with the path the corresponding data array - (e.g. 'data.0.marker.size') - """ - from plotly.basedatatypes import BaseFigure - from plotly.graph_objs import Figure - - if grid is None: - # If not grid, this is top-level call so deep copy figure - copy_fig = True - grid = Grid([]) - else: - # Grid passed in so this is recursive call, don't copy figure - copy_fig = False - - if isinstance(fig, BaseFigure): - fig_dict = fig.to_dict() - elif isinstance(fig, dict): - fig_dict = copy.deepcopy(fig) if copy_fig else fig - else: - raise ValueError("Invalid figure type {}".format(type(fig))) - - # Process traces - reference_fig = Figure() - reference_traces = {} - for i, trace_dict in enumerate(fig_dict.get("data", [])): - trace_type = trace_dict.get("type", "scatter") - if trace_type not in reference_traces: - reference_traces[trace_type] = reference_fig.add_trace( - {"type": trace_type} - ).data[-1] - - reference_trace = reference_traces[trace_type] - _extract_grid_graph_obj( - trace_dict, reference_trace, grid, path + "data.{}.".format(i) - ) - - # Process frames - if "frames" in fig_dict: - for i, frame_dict in enumerate(fig_dict["frames"]): - _extract_grid_from_fig_like(frame_dict, grid, "frames.{}.".format(i)) - - return fig_dict, grid - - -def _set_grid_column_references(figure, grid): - """ - Populate *src columns in a figure from uploaded grid - - Parameters - ---------- - figure: dict - Figure dict that previously had inline data arrays extracted - grid: Grid - Grid that was created by extracting inline data arrays from figure - using the _extract_grid_from_fig_like function - - Returns - ------- - None - Function modifies figure in-place - """ - from plotly.basedatatypes import BaseFigure - - for col in grid: - prop_path = BaseFigure._str_to_dict_path(col.name) - prop_parent = figure - for prop in prop_path[:-1]: - prop_parent = prop_parent[prop] - - prop_parent[prop_path[-1] + "src"] = col.id - - -def create_animations(figure, filename=None, sharing="public", auto_open=True): - """ - BETA function that creates plots with animations via `frames`. - - Creates an animated plot using 'frames' alongside 'data' and 'layout'. - This BETA endpoint is subject to deprecation in the future. In relation - to `plotly.plotly.plot`, folder-creation and overwriting are not supported - but creating a plot with or without animations via frames is supported. - - :param (str) filename: if set to 'None', an automatically-generated plot - name will be created. Does not support folder creation, meaning that - a folder of the form 'folder/name' will NOT create a the folder and - place the plot in it. - :param (str) sharing: see `plotly.plotly.plot()` doc string. - :param (bool) auto_open: if True, opens plot in the browser. If False, - returns the url for the plot instead. - - Example 1: Simple Animation - ``` - import plotly.plotly as py - from plotly.grid_objs import Grid, Column - - column_1 = Column([0.5], 'x') - column_2 = Column([0.5], 'y') - column_3 = Column([1.5], 'x2') - column_4 = Column([1.5], 'y2') - - grid = Grid([column_1, column_2, column_3, column_4]) - py.grid_ops.upload(grid, 'ping_pong_grid', auto_open=False) - - # create figure - figure = { - 'data': [ - { - 'xsrc': grid.get_column_reference('x'), - 'ysrc': grid.get_column_reference('y'), - 'mode': 'markers', - } - ], - 'layout': {'title': 'Ping Pong Animation', - 'xaxis': {'range': [0, 2], 'autorange': False}, - 'yaxis': {'range': [0, 2], 'autorange': False}, - 'updatemenus': [{ - 'buttons': [ - {'args': [None], - 'label': u'Play', - 'method': u'animate'} - ], - 'pad': {'r': 10, 't': 87}, - 'showactive': False, - 'type': 'buttons' - }]}, - 'frames': [ - { - 'data': [ - { - 'xsrc': grid.get_column_reference('x2'), - 'ysrc': grid.get_column_reference('y2'), - 'mode': 'markers', - } - ] - }, - { - 'data': [ - { - 'xsrc': grid.get_column_reference('x'), - 'ysrc': grid.get_column_reference('y'), - 'mode': 'markers', - } - ] - } - ] - } - - py.create_animations(figure, 'ping_pong') - ``` - - Example 2: Growing Circles Animation - ``` - import plotly.plotly as py - from plotly.grid_objs import Grid, Column - - column_1 = Column([0.9, 1.1], 'x') - column_2 = Column([1.0, 1.0], 'y') - column_3 = Column([0.8, 1.2], 'x2') - column_4 = Column([1.2, 0.8], 'y2') - column_5 = Column([0.7, 1.3], 'x3') - column_6 = Column([0.7, 1.3], 'y3') - column_7 = Column([0.6, 1.4], 'x4') - column_8 = Column([1.5, 0.5], 'y4') - column_9 = Column([0.4, 1.6], 'x5') - column_10 = Column([1.2, 0.8], 'y5') - - grid = Grid([column_1, column_2, column_3, column_4, column_5, - column_6, column_7, column_8, column_9, column_10]) - py.grid_ops.upload(grid, 'growing_circles_grid', auto_open=False) - - # create figure - figure = { - 'data': [ - { - 'xsrc': grid.get_column_reference('x'), - 'ysrc': grid.get_column_reference('y'), - 'mode': 'markers', - 'marker': {'color': '#48186a', 'size': 10} - } - ], - 'layout': {'title': 'Growing Circles', - 'xaxis': {'range': [0, 2], 'autorange': False}, - 'yaxis': {'range': [0, 2], 'autorange': False}, - 'updatemenus': [{ - 'buttons': [ - {'args': [None], - 'label': u'Play', - 'method': u'animate'} - ], - 'pad': {'r': 10, 't': 87}, - 'showactive': False, - 'type': 'buttons' - }]}, - 'frames': [ - { - 'data': [ - { - 'xsrc': grid.get_column_reference('x2'), - 'ysrc': grid.get_column_reference('y2'), - 'mode': 'markers', - 'marker': {'color': '#3b528b', 'size': 25} - } - ] - }, - { - 'data': [ - { - 'xsrc': grid.get_column_reference('x3'), - 'ysrc': grid.get_column_reference('y3'), - 'mode': 'markers', - 'marker': {'color': '#26828e', 'size': 50} - } - ] - }, - { - 'data': [ - { - 'xsrc': grid.get_column_reference('x4'), - 'ysrc': grid.get_column_reference('y4'), - 'mode': 'markers', - 'marker': {'color': '#5ec962', 'size': 80} - } - ] - }, - { - 'data': [ - { - 'xsrc': grid.get_column_reference('x5'), - 'ysrc': grid.get_column_reference('y5'), - 'mode': 'markers', - 'marker': {'color': '#d8e219', 'size': 100} - } - ] - } - ] - } - py.create_animations(figure, 'growing_circles') - ``` - """ - # This function is no longer needed since plot now supports figures with - # frames. Delegate to this implementation for compatibility - return plot(figure, filename=filename, sharing=sharing, auto_open=auto_open) - - -def icreate_animations(figure, filename=None, sharing="public", auto_open=False): - """ - Create a unique url for this animated plot in Plotly and open in IPython. - - This function is based off `plotly.plotly.iplot`. See `plotly.plotly. - create_animations` Doc String for param descriptions. - """ - from plotly.basedatatypes import BaseFigure, BaseLayoutType - - url = create_animations(figure, filename, sharing, auto_open) - - if isinstance(figure, dict): - layout = figure.get("layout", {}) - if isinstance(layout, BaseLayoutType): - layout = layout.to_plotly_json() - elif isinstance(figure, BaseFigure): - layout = figure.layout.to_plotly_json() - else: - layout = {} - - embed_options = dict() - embed_options["width"] = layout.get("width", "100%") - embed_options["height"] = layout.get("height", 525) - try: - float(embed_options["width"]) - except (ValueError, TypeError): - pass - else: - embed_options["width"] = str(embed_options["width"]) + "px" - - try: - float(embed_options["height"]) - except (ValueError, TypeError): - pass - else: - embed_options["height"] = str(embed_options["height"]) + "px" - - return tools.embed(url, **embed_options) - - -def _open_url(url): - try: - from webbrowser import open as wbopen - - wbopen(url) - except: # TODO: what should we except here? this is dangerous - pass diff --git a/packages/python/chart-studio/chart_studio/presentation_objs/__init__.py b/packages/python/chart-studio/chart_studio/presentation_objs/__init__.py deleted file mode 100644 index 2782f2af936..00000000000 --- a/packages/python/chart-studio/chart_studio/presentation_objs/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -""" -presentation_objs - -A wrapper for the spectacle-presentations endpoint. -=========== - -""" -from .presentation_objs import Presentation diff --git a/packages/python/chart-studio/chart_studio/presentation_objs/presentation_objs.py b/packages/python/chart-studio/chart_studio/presentation_objs/presentation_objs.py deleted file mode 100644 index d96599110f2..00000000000 --- a/packages/python/chart-studio/chart_studio/presentation_objs/presentation_objs.py +++ /dev/null @@ -1,1267 +0,0 @@ -""" -dashboard_objs -========== - -A module for creating and manipulating spectacle-presentation dashboards. -""" - -import copy -import random -import re -import string -import warnings - -import _plotly_utils.exceptions -from chart_studio import exceptions -from chart_studio.config import get_config - -HEIGHT = 700.0 -WIDTH = 1000.0 - -CODEPANE_THEMES = ["tomorrow", "tomorrowNight"] - -VALID_LANGUAGES = [ - "cpp", - "cs", - "css", - "fsharp", - "go", - "haskell", - "java", - "javascript", - "jsx", - "julia", - "xml", - "matlab", - "php", - "python", - "r", - "ruby", - "scala", - "sql", - "yaml", -] - -VALID_TRANSITIONS = ["slide", "zoom", "fade", "spin"] - -PRES_THEMES = ["moods", "martik"] - -VALID_GROUPTYPES = [ - "leftgroup_v", - "rightgroup_v", - "middle", - "checkerboard_topleft", - "checkerboard_topright", -] - -fontWeight_dict = { - "Thin": {"fontWeight": 100}, - "Thin Italic": {"fontWeight": 100, "fontStyle": "italic"}, - "Light": {"fontWeight": 300}, - "Light Italic": {"fontWeight": 300, "fontStyle": "italic"}, - "Regular": {"fontWeight": 400}, - "Regular Italic": {"fontWeight": 400, "fontStyle": "italic"}, - "Medium": {"fontWeight": 500}, - "Medium Italic": {"fontWeight": 500, "fontStyle": "italic"}, - "Bold": {"fontWeight": 700}, - "Bold Italic": {"fontWeight": 700, "fontStyle": "italic"}, - "Black": {"fontWeight": 900}, - "Black Italic": {"fontWeight": 900, "fontStyle": "italic"}, -} - - -def list_of_options(iterable, conj="and", period=True): - """ - Returns an English listing of objects seperated by commas ',' - - For example, ['foo', 'bar', 'baz'] becomes 'foo, bar and baz' - if the conjunction 'and' is selected. - """ - if len(iterable) < 2: - raise _plotly_utils.exceptions.PlotlyError( - "Your list or tuple must contain at least 2 items." - ) - template = (len(iterable) - 2) * "{}, " + "{} " + conj + " {}" + period * "." - return template.format(*iterable) - - -# Error Messages -STYLE_ERROR = "Your presentation style must be {}".format( - list_of_options(PRES_THEMES, conj="or", period=True) -) - -CODE_ENV_ERROR = ( - "If you are putting a block of code into your markdown " - "presentation, make sure your denote the start and end " - "of the code environment with the '```' characters. For " - "example, your markdown string would include something " - "like:\n\n```python\nx = 2\ny = 1\nprint x\n```\n\n" - "Notice how the language that you want the code to be " - "displayed in is immediately to the right of first " - "entering '```', i.e. '```python'." -) - -LANG_ERROR = ( - "The language of your code block should be " - "clearly indicated after the first ``` that " - "begins the code block. The valid languages to " - "choose from are" + list_of_options(VALID_LANGUAGES) -) - - -def _generate_id(size): - letters_and_numbers = string.ascii_letters - for num in range(10): - letters_and_numbers += str(num) - letters_and_numbers += str(num) - id_str = "" - for _ in range(size): - id_str += random.choice(list(letters_and_numbers)) - - return id_str - - -paragraph_styles = { - "Body": { - "color": "#3d3d3d", - "fontFamily": "Open Sans", - "fontSize": 11, - "fontStyle": "normal", - "fontWeight": 400, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - "wordBreak": "break-word", - }, - "Body Small": { - "color": "#3d3d3d", - "fontFamily": "Open Sans", - "fontSize": 10, - "fontStyle": "normal", - "fontWeight": 400, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - "Caption": { - "color": "#3d3d3d", - "fontFamily": "Open Sans", - "fontSize": 11, - "fontStyle": "italic", - "fontWeight": 400, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - "Heading 1": { - "color": "#3d3d3d", - "fontFamily": "Open Sans", - "fontSize": 26, - "fontStyle": "normal", - "fontWeight": 400, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - "Heading 2": { - "color": "#3d3d3d", - "fontFamily": "Open Sans", - "fontSize": 20, - "fontStyle": "normal", - "fontWeight": 400, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - "Heading 3": { - "color": "#3d3d3d", - "fontFamily": "Open Sans", - "fontSize": 11, - "fontStyle": "normal", - "fontWeight": 700, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, -} - - -def _empty_slide(transition, id): - empty_slide = { - "children": [], - "id": id, - "props": {"style": {}, "transition": transition}, - } - return empty_slide - - -def _box( - boxtype, - text_or_url, - left, - top, - height, - width, - id, - props_attr, - style_attr, - paragraphStyle, -): - children_list = [] - fontFamily = "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace" - if boxtype == "Text": - children_list = text_or_url.split("\n") - - props = { - "isQuote": False, - "listType": None, - "paragraphStyle": paragraphStyle, - "size": 4, - "style": copy.deepcopy(paragraph_styles[paragraphStyle]), - } - - props["style"].update( - { - "height": height, - "left": left, - "top": top, - "width": width, - "position": "absolute", - } - ) - - elif boxtype == "Image": - # height, width are set to default 512 - # as set by the Presentation Editor - props = { - "height": 512, - "imageName": None, - "src": text_or_url, - "style": { - "height": height, - "left": left, - "opacity": 1, - "position": "absolute", - "top": top, - "width": width, - }, - "width": 512, - } - elif boxtype == "Plotly": - if "?share_key" in text_or_url: - src = text_or_url - else: - src = text_or_url + ".embed?link=false" - props = { - "frameBorder": 0, - "scrolling": "no", - "src": src, - "style": { - "height": height, - "left": left, - "position": "absolute", - "top": top, - "width": width, - }, - } - elif boxtype == "CodePane": - props = { - "language": "python", - "source": text_or_url, - "style": { - "fontFamily": fontFamily, - "fontSize": 13, - "height": height, - "left": left, - "margin": 0, - "position": "absolute", - "textAlign": "left", - "top": top, - "width": width, - }, - "theme": "tomorrowNight", - } - - # update props and style attributes - for item in props_attr.items(): - props[item[0]] = item[1] - for item in style_attr.items(): - props["style"][item[0]] = item[1] - - child = {"children": children_list, "id": id, "props": props, "type": boxtype} - - if boxtype == "Text": - child["defaultHeight"] = 36 - child["defaultWidth"] = 52 - child["resizeVertical"] = False - if boxtype == "CodePane": - child["defaultText"] = "Code" - - return child - - -def _percentage_to_pixel(value, side): - if side == "left": - return WIDTH * (0.01 * value) - elif side == "top": - return HEIGHT * (0.01 * value) - elif side == "height": - return HEIGHT * (0.01 * value) - elif side == "width": - return WIDTH * (0.01 * value) - - -def _return_box_position(left, top, height, width): - values_dict = {"left": left, "top": top, "height": height, "width": width} - for key in iter(values_dict): - if isinstance(values_dict[key], str): - var = float(values_dict[key][:-2]) - else: - var = _percentage_to_pixel(values_dict[key], key) - values_dict[key] = var - - return ( - values_dict["left"], - values_dict["top"], - values_dict["height"], - values_dict["width"], - ) - - -def _remove_extra_whitespace_from_line(line): - line = line.lstrip() - line = line.rstrip() - return line - - -def _list_of_slides(markdown_string): - if not markdown_string.endswith("\n---\n"): - markdown_string += "\n---\n" - - text_blocks = re.split("\n-{2,}\n", markdown_string) - - list_of_slides = [] - for text in text_blocks: - if not all(char in ["\n", "-", " "] for char in text): - list_of_slides.append(text) - - if "\n-\n" in markdown_string: - msg = ( - "You have at least one '-' by itself on its own line in your " - "markdown string. If you are trying to denote a new slide, " - "make sure that the line has 3 '-'s like this: \n\n---\n\n" - "A new slide will NOT be created here." - ) - warnings.warn(msg) - - return list_of_slides - - -def _top_spec_for_text_at_bottom(text_block, width_per, per_from_bottom=0, min_top=30): - # This function ensures that if there is a large block of - # text in your slide it will not overflow off the bottom - # of the slide. - # The input for this function are a block of text and the - # params that define where it will be placed in the slide. - # The function makes some calculations and will output a - # 'top' value (i.e. the left, top, height, width css params) - # so that the text block will come down to some specified - # distance from the bottom of the page. - - # TODO: customize this function for different fonts/sizes - max_lines = 37 - one_char_percent_width = 0.764 - chars_in_full_line = width_per / one_char_percent_width - - num_of_lines = 0 - char_group = 0 - for char in text_block: - if char == "\n": - num_of_lines += 1 - char_group = 0 - else: - if char_group >= chars_in_full_line: - char_group = 0 - num_of_lines += 1 - else: - char_group += 1 - - num_of_lines += 1 - top_frac = (max_lines - num_of_lines) / float(max_lines) - top = top_frac * 100 - per_from_bottom - - # to be safe - return max(top, min_top) - - -def _box_specs_gen( - num_of_boxes, - grouptype="leftgroup_v", - width_range=50, - height_range=50, - margin=2, - betw_boxes=4, - middle_center=50, -): - # the (left, top, width, height) specs - # are added to specs_for_boxes - specs_for_boxes = [] - if num_of_boxes == 1 and grouptype in ["leftgroup_v", "rightgroup_v"]: - if grouptype == "rightgroup_v": - left_shift = 100 - width_range - else: - left_shift = 0 - - box_spec = ( - left_shift + (margin / WIDTH) * 100, - (margin / HEIGHT) * 100, - 100 - (2 * margin / HEIGHT * 100), - width_range - (2 * margin / WIDTH) * 100, - ) - specs_for_boxes.append(box_spec) - - elif num_of_boxes > 1 and grouptype in ["leftgroup_v", "rightgroup_v"]: - if grouptype == "rightgroup_v": - left_shift = 100 - width_range - else: - left_shift = 0 - - if num_of_boxes % 2 == 0: - box_width_px = 0.5 * ( - (float(width_range) / 100) * WIDTH - 2 * margin - betw_boxes - ) - box_width = (box_width_px / WIDTH) * 100 - - height = (200.0 / (num_of_boxes * HEIGHT)) * ( - HEIGHT - (num_of_boxes / 2 - 1) * betw_boxes - 2 * margin - ) - - left1 = left_shift + (margin / WIDTH) * 100 - left2 = left_shift + (((margin + betw_boxes) / WIDTH) * 100 + box_width) - for left in [left1, left2]: - for j in range(int(num_of_boxes / 2)): - top = (margin * 100 / HEIGHT) + j * ( - height + (betw_boxes * 100 / HEIGHT) - ) - specs = (left, top, height, box_width) - specs_for_boxes.append(specs) - - if num_of_boxes % 2 == 1: - width = width_range - (200 * margin) / WIDTH - height = (100.0 / (num_of_boxes * HEIGHT)) * ( - HEIGHT - (num_of_boxes - 1) * betw_boxes - 2 * margin - ) - left = left_shift + (margin / WIDTH) * 100 - for j in range(num_of_boxes): - top = (margin / HEIGHT) * 100 + j * ( - height + (betw_boxes / HEIGHT) * 100 - ) - specs = (left, top, height, width) - specs_for_boxes.append(specs) - - elif grouptype == "middle": - top = float(middle_center - (height_range / 2)) - height = height_range - width = (1 / float(num_of_boxes)) * ( - width_range - (num_of_boxes - 1) * (100 * betw_boxes / WIDTH) - ) - for j in range(num_of_boxes): - left = ((100 - float(width_range)) / 2) + j * ( - width + (betw_boxes / WIDTH) * 100 - ) - specs = (left, top, height, width) - specs_for_boxes.append(specs) - - elif "checkerboard" in grouptype and num_of_boxes == 2: - if grouptype == "checkerboard_topleft": - for j in range(2): - left = j * 50 - top = j * 50 - height = 50 - width = 50 - specs = (left, top, height, width) - specs_for_boxes.append(specs) - else: - for j in range(2): - left = 50 * (1 - j) - top = j * 50 - height = 50 - width = 50 - specs = (left, top, height, width) - specs_for_boxes.append(specs) - return specs_for_boxes - - -def _return_layout_specs( - num_of_boxes, url_lines, title_lines, text_block, code_blocks, slide_num, style -): - # returns specs of the form (left, top, height, width) - code_theme = "tomorrowNight" - if style == "martik": - specs_for_boxes = [] - margin = 18 # in pxs - - # set Headings styles - paragraph_styles["Heading 1"].update( - { - "color": "#0D0A1E", - "fontFamily": "Raleway", - "fontSize": 55, - "fontWeight": fontWeight_dict["Bold"]["fontWeight"], - } - ) - - paragraph_styles["Heading 2"] = copy.deepcopy(paragraph_styles["Heading 1"]) - paragraph_styles["Heading 2"].update({"fontSize": 36}) - paragraph_styles["Heading 3"] = copy.deepcopy(paragraph_styles["Heading 1"]) - paragraph_styles["Heading 3"].update({"fontSize": 30}) - - # set Body style - paragraph_styles["Body"].update( - { - "color": "#96969C", - "fontFamily": "Roboto", - "fontSize": 16, - "fontWeight": fontWeight_dict["Regular"]["fontWeight"], - } - ) - - bkgd_color = "#F4FAFB" - title_font_color = "#0D0A1E" - text_font_color = "#96969C" - if num_of_boxes == 0 and slide_num == 0: - text_textAlign = "center" - else: - text_textAlign = "left" - if num_of_boxes == 0: - specs_for_title = (0, 50, 20, 100) - specs_for_text = (15, 60, 50, 70) - - bkgd_color = "#0D0A1E" - title_font_color = "#F4FAFB" - text_font_color = "#F4FAFB" - elif num_of_boxes == 1: - if code_blocks != [] or ( - url_lines != [] and get_config()["plotly_domain"] in url_lines[0] - ): - if code_blocks != []: - w_range = 40 - else: - w_range = 60 - text_top = _top_spec_for_text_at_bottom( - text_block, 80, per_from_bottom=(margin / HEIGHT) * 100 - ) - specs_for_title = (0, 3, 20, 100) - specs_for_text = (10, text_top, 30, 80) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="middle", - width_range=w_range, - height_range=60, - margin=margin, - betw_boxes=4, - ) - bkgd_color = "#0D0A1E" - title_font_color = "#F4FAFB" - text_font_color = "#F4FAFB" - code_theme = "tomorrow" - elif title_lines == [] and text_block == "": - specs_for_title = (0, 50, 20, 100) - specs_for_text = (15, 60, 50, 70) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="middle", - width_range=50, - height_range=80, - margin=0, - betw_boxes=0, - ) - else: - title_text_width = 40 - (margin / WIDTH) * 100 - - text_top = _top_spec_for_text_at_bottom( - text_block, - title_text_width, - per_from_bottom=(margin / HEIGHT) * 100, - ) - specs_for_title = (60, 3, 20, 40) - specs_for_text = (60, text_top, 1, title_text_width) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="leftgroup_v", - width_range=60, - margin=margin, - betw_boxes=4, - ) - bkgd_color = "#0D0A1E" - title_font_color = "#F4FAFB" - text_font_color = "#F4FAFB" - elif num_of_boxes == 2 and url_lines != []: - text_top = _top_spec_for_text_at_bottom( - text_block, 46, per_from_bottom=(margin / HEIGHT) * 100, min_top=50 - ) - specs_for_title = (0, 3, 20, 50) - specs_for_text = (52, text_top, 40, 46) - specs_for_boxes = _box_specs_gen( - num_of_boxes, grouptype="checkerboard_topright" - ) - elif num_of_boxes >= 2 and url_lines == []: - text_top = _top_spec_for_text_at_bottom( - text_block, 92, per_from_bottom=(margin / HEIGHT) * 100, min_top=15 - ) - if num_of_boxes == 2: - betw_boxes = 90 - else: - betw_boxes = 10 - specs_for_title = (0, 3, 20, 100) - specs_for_text = (4, text_top, 1, 92) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="middle", - width_range=92, - height_range=60, - margin=margin, - betw_boxes=betw_boxes, - ) - code_theme = "tomorrow" - else: - text_top = _top_spec_for_text_at_bottom( - text_block, - 40 - (margin / WIDTH) * 100, - per_from_bottom=(margin / HEIGHT) * 100, - ) - specs_for_title = (0, 3, 20, 40 - (margin / WIDTH) * 100) - specs_for_text = ( - (margin / WIDTH) * 100, - text_top, - 50, - 40 - (margin / WIDTH) * 100, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="rightgroup_v", - width_range=60, - margin=margin, - betw_boxes=4, - ) - - elif style == "moods": - specs_for_boxes = [] - margin = 18 - code_theme = "tomorrowNight" - - # set Headings styles - paragraph_styles["Heading 1"].update( - { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 55, - "fontWeight": fontWeight_dict["Black"]["fontWeight"], - } - ) - - paragraph_styles["Heading 2"] = copy.deepcopy(paragraph_styles["Heading 1"]) - paragraph_styles["Heading 2"].update({"fontSize": 36}) - paragraph_styles["Heading 3"] = copy.deepcopy(paragraph_styles["Heading 1"]) - paragraph_styles["Heading 3"].update({"fontSize": 30}) - - # set Body style - paragraph_styles["Body"].update( - { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 16, - "fontWeight": fontWeight_dict["Thin"]["fontWeight"], - } - ) - - bkgd_color = "#FFFFFF" - title_font_color = None - text_font_color = None - if num_of_boxes == 0 and slide_num == 0: - text_textAlign = "center" - else: - text_textAlign = "left" - if num_of_boxes == 0: - if slide_num == 0 or text_block == "": - bkgd_color = "#F7F7F7" - specs_for_title = (0, 50, 20, 100) - specs_for_text = (15, 60, 50, 70) - else: - bkgd_color = "#F7F7F7" - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=90, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=20, - ) - specs_for_title = (0, 2, 20, 100) - specs_for_text = (5, text_top, 50, 90) - - elif num_of_boxes == 1: - if code_blocks != []: - # code - if text_block == "": - margin = 5 - specs_for_title = (0, 3, 20, 100) - specs_for_text = (0, 0, 0, 0) - top = 12 - specs_for_boxes = [ - (margin, top, 100 - top - margin, 100 - 2 * margin) - ] - - elif slide_num % 2 == 0: - # middle center - width_per = 90 - height_range = 60 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=100 - height_range / 2.0, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="middle", - width_range=50, - height_range=60, - margin=margin, - ) - specs_for_title = (0, 3, 20, 100) - specs_for_text = (5, text_top, 2, width_per) - else: - # right - width_per = 50 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=30, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="rightgroup_v", - width_range=50, - margin=40, - ) - specs_for_title = (0, 3, 20, 50) - specs_for_text = (2, text_top, 2, width_per - 2) - elif url_lines != [] and get_config()["plotly_domain"] in url_lines[0]: - # url - if slide_num % 2 == 0: - # top half - width_per = 95 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=60, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="middle", - width_range=100, - height_range=60, - middle_center=30, - ) - specs_for_title = (0, 60, 20, 100) - specs_for_text = (2.5, text_top, 2, width_per) - else: - # middle across - width_per = 95 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=60, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="middle", - width_range=100, - height_range=60, - ) - specs_for_title = (0, 3, 20, 100) - specs_for_text = (2.5, text_top, 2, width_per) - else: - # image - if slide_num % 2 == 0: - # right - width_per = 50 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=30, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, grouptype="rightgroup_v", width_range=50, margin=0 - ) - specs_for_title = (0, 3, 20, 50) - specs_for_text = (2, text_top, 2, width_per - 2) - else: - # left - width_per = 50 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=30, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, grouptype="leftgroup_v", width_range=50, margin=0 - ) - specs_for_title = (50, 3, 20, 50) - specs_for_text = (52, text_top, 2, width_per - 2) - elif num_of_boxes == 2: - # right stack - width_per = 50 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=30, - ) - specs_for_boxes = [(50, 0, 50, 50), (50, 50, 50, 50)] - specs_for_title = (0, 3, 20, 50) - specs_for_text = (2, text_top, 2, width_per - 2) - elif num_of_boxes == 3: - # middle top - width_per = 95 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=40, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, - grouptype="middle", - width_range=100, - height_range=40, - middle_center=30, - ) - specs_for_title = (0, 0, 20, 100) - specs_for_text = (2.5, text_top, 2, width_per) - else: - # right stack - width_per = 40 - text_top = _top_spec_for_text_at_bottom( - text_block, - width_per=width_per, - per_from_bottom=(margin / HEIGHT) * 100, - min_top=30, - ) - specs_for_boxes = _box_specs_gen( - num_of_boxes, grouptype="rightgroup_v", width_range=60, margin=0 - ) - specs_for_title = (0, 3, 20, 40) - specs_for_text = (2, text_top, 2, width_per - 2) - - # set text style attributes - title_style_attr = {} - text_style_attr = {"textAlign": text_textAlign} - - if text_font_color: - text_style_attr["color"] = text_font_color - if title_font_color: - title_style_attr["color"] = title_font_color - - return ( - specs_for_boxes, - specs_for_title, - specs_for_text, - bkgd_color, - title_style_attr, - text_style_attr, - code_theme, - ) - - -def _url_parens_contained(url_name, line): - return line.startswith(url_name + "(") and line.endswith(")") - - -class Presentation(dict): - """ - The Presentation class for creating spectacle-presentations. - - The Presentations API is a means for creating JSON blobs which are then - converted Spectacle Presentations. To use the API you only need to define - a block string and define your slides using markdown. Then you can upload - your presentation to the Plotly Server. - - Rules for your presentation string: - - use '---' to denote a slide break. - - headers work as per usual, where if '#' is used before a line of text - then it is interpretted as a header. Only the first header in a slide is - displayed on the slide. There are only 3 heading sizes: #, ## and ###. - 4 or more hashes will be interpretted as ###. - - you can set the type of slide transition you want by writing a line that - starts with 'transition: ' before your first header line in the slide, - and write the types of transition you want after. Your transition to - choose from are 'slide', 'zoom', 'fade' and 'spin'. - - to insert a Plotly chart into your slide, write a line that has the form - Plotly(url) with your url pointing to your chart. Note that it is - STRONGLY advised that your chart has fig['layout']['autosize'] = True. - - to insert an image from the web, write a line with the form Image(url) - - to insert a block of text, begin with a line that denotes the code - envoronment '```lang' where lang is a valid programming language. To find - the valid languages run:\n - 'plotly.presentation_objs.presentation_objs.VALID_LANGUAGES'\n - To end the code block environment, - write a single '```' line. All Plotly(url) and Image(url) lines will NOT - be interpretted as a Plotly or Image url if they are in the code block. - - :param (str) markdown_string: the block string that denotes the slides, - slide properties, and images to be placed in the presentation. If - 'markdown_string' is set to 'None', the JSON for a presentation with - one empty slide will be created. - :param (str) style: the theme that the presentation will take on. The - themes that are available now are 'martik' and 'moods'. - Default = 'moods'. - :param (bool) imgStretch: if set to False, all images in the presentation - will not have heights and widths that will not exceed the parent - container they belong to. In other words, images will keep their - original aspect ratios. - Default = True. - - For examples see the documentation:\n - https://plotly.com/python/presentations-api/ - """ - - def __init__(self, markdown_string=None, style="moods", imgStretch=True): - self["presentation"] = { - "slides": [], - "slidePreviews": [None for _ in range(496)], - "version": "0.1.3", - "paragraphStyles": paragraph_styles, - } - - if markdown_string: - if style not in PRES_THEMES: - raise _plotly_utils.exceptions.PlotlyError( - "Your presentation style must be {}".format( - list_of_options(PRES_THEMES, conj="or", period=True) - ) - ) - self._markdown_to_presentation(markdown_string, style, imgStretch) - else: - self._add_empty_slide() - - def _markdown_to_presentation(self, markdown_string, style, imgStretch): - list_of_slides = _list_of_slides(markdown_string) - - for slide_num, slide in enumerate(list_of_slides): - lines_in_slide = slide.split("\n") - title_lines = [] - - # validate blocks of code - if slide.count("```") % 2 != 0: - raise _plotly_utils.exceptions.PlotlyError(CODE_ENV_ERROR) - - # find code blocks - code_indices = [] - code_blocks = [] - wdw_size = len("```") - for j in range(len(slide)): - if slide[j : j + wdw_size] == "```": - code_indices.append(j) - - for k in range(int(len(code_indices) / 2)): - code_blocks.append( - slide[code_indices[2 * k] : code_indices[(2 * k) + 1]] - ) - - lang_and_code_tuples = [] - for code_block in code_blocks: - # validate code blocks - code_by_lines = code_block.split("\n") - language = _remove_extra_whitespace_from_line( - code_by_lines[0][3:] - ).lower() - if language == "" or language not in VALID_LANGUAGES: - raise _plotly_utils.exceptions.PlotlyError( - "The language of your code block should be " - "clearly indicated after the first ``` that " - "begins the code block. The valid languages to " - "choose from are" + list_of_options(VALID_LANGUAGES) - ) - lang_and_code_tuples.append((language, "\n".join(code_by_lines[1:]))) - - # collect text, code and urls - title_lines = [] - url_lines = [] - text_lines = [] - inCode = False - - for line in lines_in_slide: - # inCode handling - if line[:3] == "```" and len(line) > 3: - inCode = True - if line == "```": - inCode = False - - if not inCode and line != "```": - if len(line) > 0 and line[0] == "#": - title_lines.append(line) - elif _url_parens_contained("Plotly", line) or _url_parens_contained( - "Image", line - ): - if ( - line.startswith("Plotly(") - and get_config()["plotly_domain"] not in line - ): - raise _plotly_utils.exceptions.PlotlyError( - "You are attempting to insert a Plotly Chart " - "in your slide but your url does not have " - "your plotly domain '{}' in it.".format( - get_config()["plotly_domain"] - ) - ) - url_lines.append(line) - else: - # find and set transition properties - trans = "transition:" - if line.startswith(trans) and title_lines == []: - slide_trans = line[len(trans) :] - slide_trans = _remove_extra_whitespace_from_line( - slide_trans - ) - slide_transition_list = [] - for key in VALID_TRANSITIONS: - if key in slide_trans: - slide_transition_list.append(key) - - if slide_transition_list == []: - slide_transition_list.append("slide") - self._set_transition(slide_transition_list, slide_num) - - else: - text_lines.append(line) - - # make text block - for i in range(2): - try: - while text_lines[-i] == "": - text_lines.pop(-i) - except IndexError: - pass - - text_block = "\n".join(text_lines) - num_of_boxes = len(url_lines) + len(lang_and_code_tuples) - - ( - specs_for_boxes, - specs_for_title, - specs_for_text, - bkgd_color, - title_style_attr, - text_style_attr, - code_theme, - ) = _return_layout_specs( - num_of_boxes, - url_lines, - title_lines, - text_block, - code_blocks, - slide_num, - style, - ) - - # background color - self._color_background(bkgd_color, slide_num) - - # insert title, text, code, and images - if len(title_lines) > 0: - # clean titles - title = title_lines[0] - num_hashes = 0 - while title[0] == "#": - title = title[1:] - num_hashes += 1 - title = _remove_extra_whitespace_from_line(title) - - self._insert( - box="Text", - text_or_url=title, - left=specs_for_title[0], - top=specs_for_title[1], - height=specs_for_title[2], - width=specs_for_title[3], - slide=slide_num, - style_attr=title_style_attr, - paragraphStyle="Heading 1".format(min(num_hashes, 3)), - ) - - # text - if len(text_lines) > 0: - self._insert( - box="Text", - text_or_url=text_block, - left=specs_for_text[0], - top=specs_for_text[1], - height=specs_for_text[2], - width=specs_for_text[3], - slide=slide_num, - style_attr=text_style_attr, - paragraphStyle="Body", - ) - - url_and_code_blocks = list(url_lines + lang_and_code_tuples) - for k, specs in enumerate(specs_for_boxes): - url_or_code = url_and_code_blocks[k] - if isinstance(url_or_code, tuple): - # code - language = url_or_code[0] - code = url_or_code[1] - box_name = "CodePane" - - # code style - props_attr = {} - props_attr["language"] = language - props_attr["theme"] = code_theme - - self._insert( - box=box_name, - text_or_url=code, - left=specs[0], - top=specs[1], - height=specs[2], - width=specs[3], - slide=slide_num, - props_attr=props_attr, - ) - else: - # url - if get_config()["plotly_domain"] in url_or_code: - box_name = "Plotly" - else: - box_name = "Image" - url = url_or_code[len(box_name) + 1 : -1] - - self._insert( - box=box_name, - text_or_url=url, - left=specs[0], - top=specs[1], - height=specs[2], - width=specs[3], - slide=slide_num, - ) - - if not imgStretch: - for s, slide in enumerate(self["presentation"]["slides"]): - for c, child in enumerate(slide["children"]): - if child["type"] in ["Image", "Plotly"]: - deep_child = child["props"]["style"] - width = deep_child["width"] - height = deep_child["height"] - - if width >= height: - deep_child["max-width"] = deep_child.pop("width") - else: - deep_child["max-height"] = deep_child.pop("height") - - def _add_empty_slide(self): - self["presentation"]["slides"].append(_empty_slide(["slide"], _generate_id(9))) - - def _add_missing_slides(self, slide): - # add slides if desired slide number isn't in the presentation - try: - self["presentation"]["slides"][slide]["children"] - except IndexError: - num_of_slides = len(self["presentation"]["slides"]) - for _ in range(slide - num_of_slides + 1): - self._add_empty_slide() - - def _insert( - self, - box, - text_or_url, - left, - top, - height, - width, - slide=0, - props_attr={}, - style_attr={}, - paragraphStyle=None, - ): - self._add_missing_slides(slide) - - left, top, height, width = _return_box_position(left, top, height, width) - new_id = _generate_id(9) - child = _box( - box, - text_or_url, - left, - top, - height, - width, - new_id, - props_attr, - style_attr, - paragraphStyle, - ) - - self["presentation"]["slides"][slide]["children"].append(child) - - def _color_background(self, color, slide): - self._add_missing_slides(slide) - - loc = self["presentation"]["slides"][slide] - loc["props"]["style"]["backgroundColor"] = color - - def _background_image(self, url, slide, bkrd_image_dict): - self._add_missing_slides(slide) - - loc = self["presentation"]["slides"][slide]["props"] - - # default settings - size = "stretch" - repeat = "no-repeat" - - if "background-size:" in bkrd_image_dict: - size = bkrd_image_dict["background-size:"] - if "background-repeat:" in bkrd_image_dict: - repeat = bkrd_image_dict["background-repeat:"] - - if size == "stretch": - backgroundSize = "100% 100%" - elif size == "original": - backgroundSize = "auto" - elif size == "contain": - backgroundSize = "contain" - elif size == "cover": - backgroundSize = "cover" - - style = { - "backgroundImage": "url({})".format(url), - "backgroundPosition": "center center", - "backgroundRepeat": repeat, - "backgroundSize": backgroundSize, - } - - for item in style.items(): - loc["style"].setdefault(item[0], item[1]) - - loc["backgroundImageSrc"] = url - loc["backgroundImageName"] = None - - def _set_transition(self, transition, slide): - self._add_missing_slides(slide) - loc = self["presentation"]["slides"][slide]["props"] - loc["transition"] = transition diff --git a/packages/python/chart-studio/chart_studio/session.py b/packages/python/chart-studio/chart_studio/session.py deleted file mode 100644 index 9f7fccd04d2..00000000000 --- a/packages/python/chart-studio/chart_studio/session.py +++ /dev/null @@ -1,156 +0,0 @@ -""" -The session module handles the user's current credentials, config and plot opts - -This allows users to dynamically change which plotly domain they're using, -which user they're signed in as, and plotting defaults. - -""" -from __future__ import absolute_import - -import copy - -import _plotly_utils.exceptions - - -_session = {"credentials": {}, "config": {}, "plot_options": {}} - -CREDENTIALS_KEYS = { - "username": str, - "api_key": str, - "proxy_username": str, - "proxy_password": str, - "stream_ids": list, -} - -CONFIG_KEYS = { - "plotly_domain": str, - "plotly_streaming_domain": str, - "plotly_api_domain": str, - "plotly_ssl_verification": bool, - "plotly_proxy_authorization": bool, - "world_readable": bool, - "auto_open": bool, - "sharing": str, -} - -PLOT_OPTIONS = { - "filename": str, - "fileopt": str, - "validate": bool, - "world_readable": bool, - "auto_open": bool, - "sharing": str, -} - -SHARING_OPTIONS = ["public", "private", "secret"] - - -def sign_in(username, api_key, **kwargs): - """ - Set set session credentials and config (not saved to file). - - If unspecified, credentials and config are searched for in `.plotly` dir. - - :param (str) username: The username you'd use to sign in to Plotly - :param (str) api_key: The api key associated with above username - :param (list|optional) stream_ids: Stream tokens for above credentials - :param (str|optional) proxy_username: The un associated with with your Proxy - :param (str|optional) proxy_password: The pw associated with your Proxy un - - :param (str|optional) plotly_domain: - :param (str|optional) plotly_streaming_domain: - :param (str|optional) plotly_api_domain: - :param (bool|optional) plotly_ssl_verification: - :param (bool|optional) plotly_proxy_authorization: - :param (bool|optional) world_readable: - - """ - # TODO: verify these _credentials with plotly - - # kwargs will contain all our info - kwargs.update(username=username, api_key=api_key) - - # raise error if key isn't valid anywhere - for key in kwargs: - if key not in CREDENTIALS_KEYS and key not in CONFIG_KEYS: - raise _plotly_utils.exceptions.PlotlyError( - "{} is not a valid config or credentials key".format(key) - ) - - # add credentials, raise error if type is wrong. - for key in CREDENTIALS_KEYS: - if key in kwargs: - if not isinstance(kwargs[key], CREDENTIALS_KEYS[key]): - raise _plotly_utils.exceptions.PlotlyError( - "{} must be of type '{}'".format(key, CREDENTIALS_KEYS[key]) - ) - _session["credentials"][key] = kwargs[key] - - # add config, raise error if type is wrong. - for key in CONFIG_KEYS: - if key in kwargs: - if not isinstance(kwargs[key], CONFIG_KEYS[key]): - raise _plotly_utils.exceptions.PlotlyError( - "{} must be of type '{}'".format(key, CONFIG_KEYS[key]) - ) - _session["config"][key] = kwargs.get(key) - - # add plot options, raise error if type is wrong. - for key in PLOT_OPTIONS: - if key in kwargs: - if not isinstance(kwargs[key], CONFIG_KEYS[key]): - raise _plotly_utils.exceptions.PlotlyError( - "{} must be of type '{}'".format(key, CONFIG_KEYS[key]) - ) - _session["plot_options"][key] = kwargs.get(key) - - -def update_session_plot_options(**kwargs): - """ - Update the _session plot_options - - :param (str|optional) filename: What the file will be named in Plotly - :param (str|optional) fileopt: 'overwrite', 'append', 'new', or 'extend' - :param (bool|optional) world_readable: Make public or private. - :param (dict|optional) sharing: 'public', 'private', 'secret' - :param (bool|optional) auto_open: For `plot`, open in new browser tab? - :param (bool|optional) validate: Error locally if data doesn't pass? - - """ - # raise exception if key is invalid or value is the wrong type - for key in kwargs: - if key not in PLOT_OPTIONS: - raise _plotly_utils.exceptions.PlotlyError( - "{} is not a valid config or plot option key".format(key) - ) - if not isinstance(kwargs[key], PLOT_OPTIONS[key]): - raise _plotly_utils.exceptions.PlotlyError( - "{} must be of type '{}'".format(key, PLOT_OPTIONS[key]) - ) - - # raise exception if sharing is invalid - if key == "sharing" and not (kwargs[key] in SHARING_OPTIONS): - raise _plotly_utils.exceptions.PlotlyError( - "'{0}' must be of either '{1}', '{2}'" - " or '{3}'".format(key, *SHARING_OPTIONS) - ) - - # update local _session dict with new plot options - _session["plot_options"].update(kwargs) - - -def get_session_plot_options(): - """Returns a copy of the user supplied plot options. - Use `update_plot_options()` to change. - """ - return copy.deepcopy(_session["plot_options"]) - - -def get_session_config(): - """Returns either module config or file config.""" - return copy.deepcopy(_session["config"]) - - -def get_session_credentials(): - """Returns the credentials that will be sent to plotly.""" - return copy.deepcopy(_session["credentials"]) diff --git a/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_configuration.py b/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_configuration.py deleted file mode 100644 index 34e53cc4c66..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_configuration.py +++ /dev/null @@ -1,15 +0,0 @@ -from __future__ import absolute_import - -from unittest import TestCase - -from chart_studio.files import CONFIG_FILE, FILE_CONTENT -from chart_studio.tools import get_config_defaults - - -class TestGetConfigDefaults(TestCase): - def test_config_dict_is_equivalent_copy(self): - - original = FILE_CONTENT[CONFIG_FILE] - copy = get_config_defaults() - self.assertIsNot(copy, original) - self.assertEqual(copy, original) diff --git a/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_file_tools.py b/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_file_tools.py deleted file mode 100644 index db994d931c3..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_file_tools.py +++ /dev/null @@ -1,113 +0,0 @@ -from chart_studio import tools -from chart_studio.tests.utils import PlotlyTestCase - -import warnings - - -class FileToolsTest(PlotlyTestCase): - def test_set_config_file_all_entries(self): - - # Check set_config and get_config return the same values - - domain, streaming_domain, api, sharing = ("this", "thing", "that", "private") - ssl_verify, proxy_auth, world_readable, auto_open = (True, True, False, False) - tools.set_config_file( - plotly_domain=domain, - plotly_streaming_domain=streaming_domain, - plotly_api_domain=api, - plotly_ssl_verification=ssl_verify, - plotly_proxy_authorization=proxy_auth, - world_readable=world_readable, - auto_open=auto_open, - ) - config = tools.get_config_file() - self.assertEqual(config["plotly_domain"], domain) - self.assertEqual(config["plotly_streaming_domain"], streaming_domain) - self.assertEqual(config["plotly_api_domain"], api) - self.assertEqual(config["plotly_ssl_verification"], ssl_verify) - self.assertEqual(config["plotly_proxy_authorization"], proxy_auth) - self.assertEqual(config["world_readable"], world_readable) - self.assertEqual(config["sharing"], sharing) - self.assertEqual(config["auto_open"], auto_open) - tools.reset_config_file() - - def test_set_config_file_two_entries(self): - - # Check set_config and get_config given only two entries return the - # same values - - domain, streaming_domain = "this", "thing" - tools.set_config_file( - plotly_domain=domain, plotly_streaming_domain=streaming_domain - ) - config = tools.get_config_file() - self.assertEqual(config["plotly_domain"], domain) - self.assertEqual(config["plotly_streaming_domain"], streaming_domain) - tools.reset_config_file() - - def test_set_config_file_world_readable(self): - - # Return TypeError when world_readable type is not a bool - - kwargs = {"world_readable": "True"} - self.assertRaises(TypeError, tools.set_config_file, **kwargs) - - def test_set_config_expected_warning_msg(self): - - # Check that UserWarning is being called with http plotly_domain - - with warnings.catch_warnings(record=True) as w: - warnings.simplefilter("always") - kwargs = {"plotly_domain": "http://www.foo-bar.com"} - tools.set_config_file(**kwargs) - assert len(w) == 1 - assert issubclass(w[-1].category, UserWarning) - assert "plotly_domain" in str(w[-1].message) - - def test_set_config_no_warning_msg_if_plotly_domain_is_https(self): - - # Check that no UserWarning is being called with https plotly_domain - - with warnings.catch_warnings(record=True) as w: - warnings.simplefilter("always") - kwargs = {"plotly_domain": "https://www.foo-bar.com"} - tools.set_config_file(**kwargs) - assert len(w) == 0 - - def test_reset_config_file(self): - - # Check reset_config and get_config return the same values - - tools.reset_config_file() - config = tools.get_config_file() - self.assertEqual(config["plotly_domain"], "https://plotly.com") - self.assertEqual(config["plotly_streaming_domain"], "stream.plotly.com") - - def test_get_credentials_file(self): - - # Check get_credentials returns all the keys - - original_creds = tools.get_credentials_file() - expected = [ - "username", - "stream_ids", - "api_key", - "proxy_username", - "proxy_password", - ] - self.assertTrue(all(x in original_creds for x in expected)) - - def test_reset_credentials_file(self): - - # Check get_cred return all the keys - - tools.reset_credentials_file() - reset_creds = tools.get_credentials_file() - expected = [ - "username", - "stream_ids", - "api_key", - "proxy_username", - "proxy_password", - ] - self.assertTrue(all(x in reset_creds for x in expected)) diff --git a/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_get_embed.py b/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_get_embed.py deleted file mode 100644 index 6aedf87bb62..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/test_get_embed.py +++ /dev/null @@ -1,47 +0,0 @@ -from __future__ import absolute_import - -from unittest import TestCase - -import pytest - -import chart_studio.tools as tls -from _plotly_utils.exceptions import PlotlyError - - -def test_get_valid_embed(): - url = "https://plotly.com/~PlotBot/82/" - tls.get_embed(url) - - -def test_get_invalid_embed(): - url = "https://plotly.com/~PlotBot/a/" - with pytest.raises(PlotlyError): - tls.get_embed(url) - - -class TestGetEmbed(TestCase): - def test_get_embed_url_with_share_key(self): - - # Check the embed url for url with share_key included - - get_embed_return = tls.get_embed( - "https://plotly.com/~neda/6572" + "?share_key=AH4MyPlyDyDWYA2cM2kj2m" - ) - expected_get_embed = ( - '" - ).format( - plotly_rest_url="https://" + "plotly.com", - file_owner="neda", - file_id="6572", - share_key="AH4MyPlyDyDWYA2" + "cM2kj2m", - iframe_height=525, - iframe_width="100%", - ) - self.assertEqual(get_embed_return, expected_get_embed) diff --git a/packages/python/chart-studio/chart_studio/tests/test_optional/test_grid/test_grid.py b/packages/python/chart-studio/chart_studio/tests/test_optional/test_grid/test_grid.py deleted file mode 100644 index 5b55bf69cfe..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_optional/test_grid/test_grid.py +++ /dev/null @@ -1,31 +0,0 @@ -""" -test_grid: -========== - -A module intended for use with Nose. - -""" -from __future__ import absolute_import - -from unittest import TestCase - -from chart_studio.exceptions import InputError -from chart_studio.grid_objs import Grid - -import pandas as pd - - -class TestDataframeToGrid(TestCase): - - # Test duplicate columns - def test_duplicate_columns(self): - df = pd.DataFrame([[1, "a"], [2, "b"]], columns=["col_1", "col_1"]) - - expected_message = ( - "Yikes, plotly grids currently " - "can't have duplicate column names. Rename " - 'the column "{}" and try again.'.format("col_1") - ) - - with self.assertRaisesRegex(InputError, expected_message): - Grid(df) diff --git a/packages/python/chart-studio/chart_studio/tests/test_optional/test_matplotlylib/test_plot_mpl.py b/packages/python/chart-studio/chart_studio/tests/test_optional/test_matplotlylib/test_plot_mpl.py deleted file mode 100644 index 8ca36145216..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_optional/test_matplotlylib/test_plot_mpl.py +++ /dev/null @@ -1,51 +0,0 @@ -""" -test_plot_mpl: -============== - -A module intended for use with Nose. - -""" -from __future__ import absolute_import - - -import _plotly_utils.exceptions -from plotly import optional_imports -from chart_studio.plotly import plotly as py -from unittest import TestCase -import pytest - -matplotlylib = optional_imports.get_module("plotly.matplotlylib") - -if matplotlylib: - import matplotlib.pyplot as plt - - -@pytest.mark.matplotlib -class PlotMPLTest(TestCase): - def setUp(self): - py.sign_in("PlotlyImageTest", "786r5mecv0", plotly_domain="https://plotly.com") - - def test_update_type_error(self): - fig, ax = plt.subplots() - ax.plot([1, 2, 3]) - update = [] - with pytest.raises(_plotly_utils.exceptions.PlotlyGraphObjectError): - py.plot_mpl(fig, update=update, filename="nosetests", auto_open=False) - - def test_update_validation_error(self): - fig, ax = plt.subplots() - ax.plot([1, 2, 3]) - update = {"invalid": "anything"} - with pytest.raises(KeyError): - py.plot_mpl(fig, update=update, filename="nosetests", auto_open=False) - - def test_update(self): - fig, ax = plt.subplots() - ax.plot([1, 2, 3]) - title = "new title" - update = {"layout": {"title": title}} - url = py.plot_mpl(fig, update=update, filename="nosetests", auto_open=False) - un = url.replace("https://plotly.com/~", "").split("/")[0] - fid = url.replace("https://plotly.com/~", "").split("/")[1] - pfig = py.get_figure(un, fid) - assert pfig["layout"]["title"]["text"] == title diff --git a/packages/python/chart-studio/chart_studio/tests/test_optional/test_utils/test_utils.py b/packages/python/chart-studio/chart_studio/tests/test_optional/test_utils/test_utils.py deleted file mode 100644 index b72962d4f37..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_optional/test_utils/test_utils.py +++ /dev/null @@ -1,39 +0,0 @@ -import json as _json -from unittest import TestCase - -import _plotly_utils.utils -from chart_studio.grid_objs import Column -from datetime import datetime as dt -import numpy as np - -np_list = np.array([1, 2, 3, np.NaN, np.NAN, np.Inf, dt(2014, 1, 5)]) -numeric_list = [1, 2, 3] -mixed_list = [ - 1, - "A", - dt(2014, 1, 5), - dt(2014, 1, 5, 1, 1, 1), - dt(2014, 1, 5, 1, 1, 1, 1), -] - - -class TestJSONEncoder(TestCase): - def test_column_json_encoding(self): - columns = [ - Column(numeric_list, "col 1"), - Column(mixed_list, "col 2"), - Column(np_list, "col 3"), - ] - json_columns = _json.dumps( - columns, cls=_plotly_utils.utils.PlotlyJSONEncoder, sort_keys=True - ) - print(json_columns) - assert ( - '[{"data": [1, 2, 3], "name": "col 1"}, ' - '{"data": [1, "A", "2014-01-05T00:00:00", ' - '"2014-01-05T01:01:01", ' - '"2014-01-05T01:01:01.000001"], ' - '"name": "col 2"}, ' - '{"data": [1, 2, 3, null, null, null, ' - '"2014-01-05T00:00:00"], "name": "col 3"}]' == json_columns - ) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/__init__.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/__init__.py deleted file mode 100644 index 72d362744e4..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/__init__.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import absolute_import - -from requests import Response - -from chart_studio.session import sign_in -from chart_studio.tests.utils import PlotlyTestCase - -import sys - -# import from mock -if sys.version_info >= (3, 3): - from unittest.mock import patch -else: - from mock import patch - - -class PlotlyApiTestCase(PlotlyTestCase): - def mock(self, path_string): - patcher = patch(path_string) - new_mock = patcher.start() - self.addCleanup(patcher.stop) - return new_mock - - def setUp(self): - - super(PlotlyApiTestCase, self).setUp() - - self.username = "foo" - self.api_key = "bar" - - self.proxy_username = "cnet" - self.proxy_password = "hoopla" - self.stream_ids = ["heyThere"] - - self.plotly_api_domain = "https://api.do.not.exist" - self.plotly_domain = "https://who.am.i" - self.plotly_proxy_authorization = False - self.plotly_streaming_domain = "stream.does.not.exist" - self.plotly_ssl_verification = True - - sign_in( - username=self.username, - api_key=self.api_key, - proxy_username=self.proxy_username, - proxy_password=self.proxy_password, - stream_ids=self.stream_ids, - plotly_domain=self.plotly_domain, - plotly_api_domain=self.plotly_api_domain, - plotly_streaming_domain=self.plotly_streaming_domain, - plotly_proxy_authorization=self.plotly_proxy_authorization, - plotly_ssl_verification=self.plotly_ssl_verification, - ) - - def to_bytes(self, string): - try: - return string.encode("utf-8") - except AttributeError: - return string - - def get_response(self, content=b"", status_code=200): - response = Response() - response.status_code = status_code - response._content = content - response.encoding = "utf-8" - return response diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_files.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_files.py deleted file mode 100644 index db18b190317..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_files.py +++ /dev/null @@ -1,96 +0,0 @@ -from __future__ import absolute_import - -from chart_studio.api.v2 import files -from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase - - -class FilesTest(PlotlyApiTestCase): - def setUp(self): - super(FilesTest, self).setUp() - - # Mock the actual api call, we don't want to do network tests here. - self.request_mock = self.mock("chart_studio.api.v2.utils.requests.request") - self.request_mock.return_value = self.get_response() - - # Mock the validation function since we can test that elsewhere. - self.mock("chart_studio.api.v2.utils.validate_response") - - def test_retrieve(self): - files.retrieve("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/files/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {}) - - def test_retrieve_share_key(self): - files.retrieve("hodor:88", share_key="foobar") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/files/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {"share_key": "foobar"}) - - def test_update(self): - new_filename = "..zzZ ..zzZ" - files.update("hodor:88", body={"filename": new_filename}) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "put") - self.assertEqual(url, "{}/v2/files/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], '{{"filename": "{}"}}'.format(new_filename)) - - def test_trash(self): - files.trash("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual( - url, "{}/v2/files/hodor:88/trash".format(self.plotly_api_domain) - ) - - def test_restore(self): - files.restore("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual( - url, "{}/v2/files/hodor:88/restore".format(self.plotly_api_domain) - ) - - def test_permanent_delete(self): - files.permanent_delete("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "delete") - self.assertEqual( - url, "{}/v2/files/hodor:88/permanent_delete".format(self.plotly_api_domain) - ) - - def test_lookup(self): - - # requests does urlencode, so don't worry about the `' '` character! - - path = "/mah plot" - parent = 43 - user = "someone" - exists = True - files.lookup(path=path, parent=parent, user=user, exists=exists) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - expected_params = { - "path": path, - "parent": parent, - "exists": "true", - "user": user, - } - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/files/lookup".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], expected_params) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_folders.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_folders.py deleted file mode 100644 index 22ce20b3974..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_folders.py +++ /dev/null @@ -1,107 +0,0 @@ -from __future__ import absolute_import - -from chart_studio.api.v2 import folders -from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase - - -class FoldersTest(PlotlyApiTestCase): - def setUp(self): - super(FoldersTest, self).setUp() - - # Mock the actual api call, we don't want to do network tests here. - self.request_mock = self.mock("chart_studio.api.v2.utils.requests.request") - self.request_mock.return_value = self.get_response() - - # Mock the validation function since we can test that elsewhere. - self.mock("chart_studio.api.v2.utils.validate_response") - - def test_create(self): - path = "/foo/man/bar/" - folders.create({"path": path}) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual(url, "{}/v2/folders".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], '{{"path": "{}"}}'.format(path)) - - def test_retrieve(self): - folders.retrieve("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/folders/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {}) - - def test_retrieve_share_key(self): - folders.retrieve("hodor:88", share_key="foobar") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/folders/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {"share_key": "foobar"}) - - def test_update(self): - new_filename = "..zzZ ..zzZ" - folders.update("hodor:88", body={"filename": new_filename}) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "put") - self.assertEqual(url, "{}/v2/folders/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], '{{"filename": "{}"}}'.format(new_filename)) - - def test_trash(self): - folders.trash("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual( - url, "{}/v2/folders/hodor:88/trash".format(self.plotly_api_domain) - ) - - def test_restore(self): - folders.restore("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual( - url, "{}/v2/folders/hodor:88/restore".format(self.plotly_api_domain) - ) - - def test_permanent_delete(self): - folders.permanent_delete("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "delete") - self.assertEqual( - url, - "{}/v2/folders/hodor:88/permanent_delete".format(self.plotly_api_domain), - ) - - def test_lookup(self): - - # requests does urlencode, so don't worry about the `' '` character! - - path = "/mah folder" - parent = 43 - user = "someone" - exists = True - folders.lookup(path=path, parent=parent, user=user, exists=exists) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - expected_params = { - "path": path, - "parent": parent, - "exists": "true", - "user": user, - } - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/folders/lookup".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], expected_params) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_grids.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_grids.py deleted file mode 100644 index 3fdd588c5d4..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_grids.py +++ /dev/null @@ -1,165 +0,0 @@ -from __future__ import absolute_import - -import json as _json - -from chart_studio.api.v2 import grids -from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase - - -class GridsTest(PlotlyApiTestCase): - def setUp(self): - super(GridsTest, self).setUp() - - # Mock the actual api call, we don't want to do network tests here. - self.request_mock = self.mock("chart_studio.api.v2.utils.requests.request") - self.request_mock.return_value = self.get_response() - - # Mock the validation function since we can test that elsewhere. - self.mock("chart_studio.api.v2.utils.validate_response") - - def test_create(self): - filename = "a grid" - grids.create({"filename": filename}) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual(url, "{}/v2/grids".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], '{{"filename": "{}"}}'.format(filename)) - - def test_retrieve(self): - grids.retrieve("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/grids/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {}) - - def test_retrieve_share_key(self): - grids.retrieve("hodor:88", share_key="foobar") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/grids/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {"share_key": "foobar"}) - - def test_update(self): - new_filename = "..zzZ ..zzZ" - grids.update("hodor:88", body={"filename": new_filename}) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "put") - self.assertEqual(url, "{}/v2/grids/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], '{{"filename": "{}"}}'.format(new_filename)) - - def test_trash(self): - grids.trash("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual( - url, "{}/v2/grids/hodor:88/trash".format(self.plotly_api_domain) - ) - - def test_restore(self): - grids.restore("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual( - url, "{}/v2/grids/hodor:88/restore".format(self.plotly_api_domain) - ) - - def test_permanent_delete(self): - grids.permanent_delete("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "delete") - self.assertEqual( - url, "{}/v2/grids/hodor:88/permanent_delete".format(self.plotly_api_domain) - ) - - def test_lookup(self): - - # requests does urlencode, so don't worry about the `' '` character! - - path = "/mah grid" - parent = 43 - user = "someone" - exists = True - grids.lookup(path=path, parent=parent, user=user, exists=exists) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - expected_params = { - "path": path, - "parent": parent, - "exists": "true", - "user": user, - } - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/grids/lookup".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], expected_params) - - def test_col_create(self): - cols = [ - {"name": "foo", "data": [1, 2, 3]}, - {"name": "bar", "data": ["b", "a", "r"]}, - ] - body = {"cols": _json.dumps(cols, sort_keys=True)} - grids.col_create("hodor:88", body) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual(url, "{}/v2/grids/hodor:88/col".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], _json.dumps(body, sort_keys=True)) - - def test_col_retrieve(self): - grids.col_retrieve("hodor:88", "aaaaaa,bbbbbb") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/grids/hodor:88/col".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {"uid": "aaaaaa,bbbbbb"}) - - def test_col_update(self): - cols = [ - {"name": "foo", "data": [1, 2, 3]}, - {"name": "bar", "data": ["b", "a", "r"]}, - ] - body = {"cols": _json.dumps(cols, sort_keys=True)} - grids.col_update("hodor:88", "aaaaaa,bbbbbb", body) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "put") - self.assertEqual(url, "{}/v2/grids/hodor:88/col".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {"uid": "aaaaaa,bbbbbb"}) - self.assertEqual(kwargs["data"], _json.dumps(body, sort_keys=True)) - - def test_col_delete(self): - grids.col_delete("hodor:88", "aaaaaa,bbbbbb") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "delete") - self.assertEqual(url, "{}/v2/grids/hodor:88/col".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {"uid": "aaaaaa,bbbbbb"}) - - def test_row(self): - body = {"rows": [[1, "A"], [2, "B"]]} - grids.row("hodor:88", body) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual(url, "{}/v2/grids/hodor:88/row".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], _json.dumps(body, sort_keys=True)) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_images.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_images.py deleted file mode 100644 index e0dff23efb5..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_images.py +++ /dev/null @@ -1,37 +0,0 @@ -from __future__ import absolute_import - -import json as _json - -from chart_studio.api.v2 import images -from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase - - -class ImagesTest(PlotlyApiTestCase): - def setUp(self): - super(ImagesTest, self).setUp() - - # Mock the actual api call, we don't want to do network tests here. - self.request_mock = self.mock("chart_studio.api.v2.utils.requests.request") - self.request_mock.return_value = self.get_response() - - # Mock the validation function since we can test that elsewhere. - self.mock("chart_studio.api.v2.utils.validate_response") - - def test_create(self): - - body = { - "figure": {"data": [{"y": [10, 10, 2, 20]}], "layout": {"width": 700}}, - "width": 1000, - "height": 500, - "format": "png", - "scale": 4, - "encoded": False, - } - - images.create(body) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual(url, "{}/v2/images".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], _json.dumps(body, sort_keys=True)) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_plot_schema.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_plot_schema.py deleted file mode 100644 index b52c4ece657..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_plot_schema.py +++ /dev/null @@ -1,27 +0,0 @@ -from __future__ import absolute_import - -from chart_studio.api.v2 import plot_schema -from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase - - -class PlotSchemaTest(PlotlyApiTestCase): - def setUp(self): - super(PlotSchemaTest, self).setUp() - - # Mock the actual api call, we don't want to do network tests here. - self.request_mock = self.mock("chart_studio.api.v2.utils.requests.request") - self.request_mock.return_value = self.get_response() - - # Mock the validation function since we can test that elsewhere. - self.mock("chart_studio.api.v2.utils.validate_response") - - def test_retrieve(self): - - plot_schema.retrieve("some-hash", timeout=400) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/plot-schema".format(self.plotly_api_domain)) - self.assertTrue(kwargs["timeout"]) - self.assertEqual(kwargs["params"], {"sha1": "some-hash"}) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_plots.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_plots.py deleted file mode 100644 index 7ed5f72fd7d..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_plots.py +++ /dev/null @@ -1,106 +0,0 @@ -from __future__ import absolute_import - -from chart_studio.api.v2 import plots -from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase - - -class PlotsTest(PlotlyApiTestCase): - def setUp(self): - super(PlotsTest, self).setUp() - - # Mock the actual api call, we don't want to do network tests here. - self.request_mock = self.mock("chart_studio.api.v2.utils.requests.request") - self.request_mock.return_value = self.get_response() - - # Mock the validation function since we can test that elsewhere. - self.mock("chart_studio.api.v2.utils.validate_response") - - def test_create(self): - filename = "a plot" - plots.create({"filename": filename}) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual(url, "{}/v2/plots".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], '{{"filename": "{}"}}'.format(filename)) - - def test_retrieve(self): - plots.retrieve("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/plots/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {}) - - def test_retrieve_share_key(self): - plots.retrieve("hodor:88", share_key="foobar") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/plots/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], {"share_key": "foobar"}) - - def test_update(self): - new_filename = "..zzZ ..zzZ" - plots.update("hodor:88", body={"filename": new_filename}) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "put") - self.assertEqual(url, "{}/v2/plots/hodor:88".format(self.plotly_api_domain)) - self.assertEqual(kwargs["data"], '{{"filename": "{}"}}'.format(new_filename)) - - def test_trash(self): - plots.trash("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual( - url, "{}/v2/plots/hodor:88/trash".format(self.plotly_api_domain) - ) - - def test_restore(self): - plots.restore("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "post") - self.assertEqual( - url, "{}/v2/plots/hodor:88/restore".format(self.plotly_api_domain) - ) - - def test_permanent_delete(self): - plots.permanent_delete("hodor:88") - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "delete") - self.assertEqual( - url, "{}/v2/plots/hodor:88/permanent_delete".format(self.plotly_api_domain) - ) - - def test_lookup(self): - - # requests does urlencode, so don't worry about the `' '` character! - - path = "/mah plot" - parent = 43 - user = "someone" - exists = True - plots.lookup(path=path, parent=parent, user=user, exists=exists) - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - expected_params = { - "path": path, - "parent": parent, - "exists": "true", - "user": user, - } - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/plots/lookup".format(self.plotly_api_domain)) - self.assertEqual(kwargs["params"], expected_params) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_users.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_users.py deleted file mode 100644 index 2514221f8ea..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_users.py +++ /dev/null @@ -1,25 +0,0 @@ -from __future__ import absolute_import - -from chart_studio.api.v2 import users -from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase - - -class UsersTest(PlotlyApiTestCase): - def setUp(self): - super(UsersTest, self).setUp() - - # Mock the actual api call, we don't want to do network tests here. - self.request_mock = self.mock("chart_studio.api.v2.utils.requests.request") - self.request_mock.return_value = self.get_response() - - # Mock the validation function since we can test that elsewhere. - self.mock("chart_studio.api.v2.utils.validate_response") - - def test_current(self): - users.current() - assert self.request_mock.call_count == 1 - args, kwargs = self.request_mock.call_args - method, url = args - self.assertEqual(method, "get") - self.assertEqual(url, "{}/v2/users/current".format(self.plotly_api_domain)) - self.assertNotIn("params", kwargs) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_utils.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_utils.py deleted file mode 100644 index bed79b06114..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/test_utils.py +++ /dev/null @@ -1,240 +0,0 @@ -from __future__ import absolute_import - -import json as _json -from requests.exceptions import ConnectionError - -from plotly import version -from chart_studio.api.utils import to_native_utf8_string -from chart_studio.api.v2 import utils -from chart_studio.exceptions import PlotlyRequestError -from chart_studio.session import sign_in -from chart_studio.tests.test_plot_ly.test_api import PlotlyApiTestCase - - -class MakeParamsTest(PlotlyApiTestCase): - def test_make_params(self): - params = utils.make_params(foo="FOO", bar=None) - self.assertEqual(params, {"foo": "FOO"}) - - def test_make_params_empty(self): - params = utils.make_params(foo=None, bar=None) - self.assertEqual(params, {}) - - -class BuildUrlTest(PlotlyApiTestCase): - def test_build_url(self): - url = utils.build_url("cats") - self.assertEqual(url, "{}/v2/cats".format(self.plotly_api_domain)) - - def test_build_url_id(self): - url = utils.build_url("cats", id="MsKitty") - self.assertEqual(url, "{}/v2/cats/MsKitty".format(self.plotly_api_domain)) - - def test_build_url_route(self): - url = utils.build_url("cats", route="about") - self.assertEqual(url, "{}/v2/cats/about".format(self.plotly_api_domain)) - - def test_build_url_id_route(self): - url = utils.build_url("cats", id="MsKitty", route="de-claw") - self.assertEqual( - url, "{}/v2/cats/MsKitty/de-claw".format(self.plotly_api_domain) - ) - - -class ValidateResponseTest(PlotlyApiTestCase): - def test_validate_ok(self): - try: - utils.validate_response(self.get_response()) - except PlotlyRequestError: - self.fail("Expected this to pass!") - - def test_validate_not_ok(self): - bad_status_codes = (400, 404, 500) - for bad_status_code in bad_status_codes: - response = self.get_response(status_code=bad_status_code) - self.assertRaises(PlotlyRequestError, utils.validate_response, response) - - def test_validate_no_content(self): - - # We shouldn't flake if the response has no content. - - response = self.get_response(content=b"", status_code=400) - try: - utils.validate_response(response) - except PlotlyRequestError as e: - self.assertEqual(e.message, "No Content") - self.assertEqual(e.status_code, 400) - self.assertEqual(e.content.decode("utf-8"), "") - else: - self.fail("Expected this to raise!") - - def test_validate_non_json_content(self): - response = self.get_response(content=b"foobar", status_code=400) - try: - utils.validate_response(response) - except PlotlyRequestError as e: - self.assertEqual(e.message, "foobar") - self.assertEqual(e.status_code, 400) - self.assertEqual(e.content, b"foobar") - else: - self.fail("Expected this to raise!") - - def test_validate_json_content_array(self): - content = self.to_bytes(_json.dumps([1, 2, 3])) - response = self.get_response(content=content, status_code=400) - try: - utils.validate_response(response) - except PlotlyRequestError as e: - self.assertEqual(e.message, to_native_utf8_string(content)) - self.assertEqual(e.status_code, 400) - self.assertEqual(e.content, content) - else: - self.fail("Expected this to raise!") - - def test_validate_json_content_dict_no_errors(self): - content = self.to_bytes(_json.dumps({"foo": "bar"})) - response = self.get_response(content=content, status_code=400) - try: - utils.validate_response(response) - except PlotlyRequestError as e: - self.assertEqual(e.message, to_native_utf8_string(content)) - self.assertEqual(e.status_code, 400) - self.assertEqual(e.content, content) - else: - self.fail("Expected this to raise!") - - def test_validate_json_content_dict_one_error_bad(self): - content = self.to_bytes(_json.dumps({"errors": [{}]})) - response = self.get_response(content=content, status_code=400) - try: - utils.validate_response(response) - except PlotlyRequestError as e: - self.assertEqual(e.message, to_native_utf8_string(content)) - self.assertEqual(e.status_code, 400) - self.assertEqual(e.content, content) - else: - self.fail("Expected this to raise!") - - content = self.to_bytes(_json.dumps({"errors": [{"message": ""}]})) - response = self.get_response(content=content, status_code=400) - try: - utils.validate_response(response) - except PlotlyRequestError as e: - self.assertEqual(e.message, to_native_utf8_string(content)) - self.assertEqual(e.status_code, 400) - self.assertEqual(e.content, content) - else: - self.fail("Expected this to raise!") - - def test_validate_json_content_dict_one_error_ok(self): - content = self.to_bytes(_json.dumps({"errors": [{"message": "not ok!"}]})) - response = self.get_response(content=content, status_code=400) - try: - utils.validate_response(response) - except PlotlyRequestError as e: - self.assertEqual(e.message, "not ok!") - self.assertEqual(e.status_code, 400) - self.assertEqual(e.content, content) - else: - self.fail("Expected this to raise!") - - def test_validate_json_content_dict_multiple_errors(self): - content = self.to_bytes( - _json.dumps({"errors": [{"message": "not ok!"}, {"message": "bad job..."}]}) - ) - response = self.get_response(content=content, status_code=400) - try: - utils.validate_response(response) - except PlotlyRequestError as e: - self.assertEqual(e.message, "not ok!\nbad job...") - self.assertEqual(e.status_code, 400) - self.assertEqual(e.content, content) - else: - self.fail("Expected this to raise!") - - -class GetHeadersTest(PlotlyApiTestCase): - def test_normal_auth(self): - headers = utils.get_headers() - expected_headers = { - "plotly-client-platform": "python {}".format(version.stable_semver()), - "authorization": "Basic Zm9vOmJhcg==", - "content-type": "application/json", - } - self.assertEqual(headers, expected_headers) - - def test_proxy_auth(self): - sign_in(self.username, self.api_key, plotly_proxy_authorization=True) - headers = utils.get_headers() - expected_headers = { - "plotly-client-platform": "python {}".format(version.stable_semver()), - "authorization": "Basic Y25ldDpob29wbGE=", - "plotly-authorization": "Basic Zm9vOmJhcg==", - "content-type": "application/json", - } - self.assertEqual(headers, expected_headers) - - -class RequestTest(PlotlyApiTestCase): - def setUp(self): - super(RequestTest, self).setUp() - - # Mock the actual api call, we don't want to do network tests here. - self.request_mock = self.mock("chart_studio.api.v2.utils.requests.request") - self.request_mock.return_value = self.get_response() - - # Mock the validation function since we can test that elsewhere. - self.validate_response_mock = self.mock( - "chart_studio.api.v2.utils.validate_response" - ) - - self.method = "get" - self.url = "https://foo.bar.does.not.exist.anywhere" - - def test_request_with_params(self): - - # urlencode transforms `True` --> `'True'`, which isn't super helpful, - # Our backend accepts the JS `true`, so we want `True` --> `'true'`. - - params = {"foo": True, "bar": "True", "baz": False, "zap": 0} - utils.request(self.method, self.url, params=params) - args, kwargs = self.request_mock.call_args - method, url = args - expected_params = {"foo": "true", "bar": "True", "baz": "false", "zap": 0} - self.assertEqual(method, self.method) - self.assertEqual(url, self.url) - self.assertEqual(kwargs["params"], expected_params) - - def test_request_with_non_native_objects(self): - - # We always send along json, but it may contain non-native objects like - # a pandas array or a Column reference. Make sure that's handled in one - # central place. - - class Duck(object): - def to_plotly_json(self): - return "what else floats?" - - utils.request(self.method, self.url, json={"foo": [Duck(), Duck()]}) - args, kwargs = self.request_mock.call_args - method, url = args - expected_data = '{"foo": ["what else floats?", "what else floats?"]}' - self.assertEqual(method, self.method) - self.assertEqual(url, self.url) - self.assertEqual(kwargs["data"], expected_data) - self.assertNotIn("json", kwargs) - - def test_request_with_ConnectionError(self): - - # requests can flake out and not return a response object, we want to - # make sure we remain consistent with our errors. - - self.request_mock.side_effect = ConnectionError() - self.assertRaises(PlotlyRequestError, utils.request, self.method, self.url) - - def test_request_validate_response(self): - - # Finally, we check details elsewhere, but make sure we do validate. - - utils.request(self.method, self.url) - assert self.request_mock.call_count == 1 diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_dashboard/test_dashboard.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_dashboard/test_dashboard.py deleted file mode 100644 index ca6e0ecc7dc..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_dashboard/test_dashboard.py +++ /dev/null @@ -1,146 +0,0 @@ -""" -test_dashboard: -========== - -A module intended for use with Nose. - -""" -from __future__ import absolute_import - -from unittest import TestCase -from _plotly_utils.exceptions import PlotlyError -import chart_studio.dashboard_objs.dashboard_objs as dashboard - - -class TestDashboard(TestCase): - def test_invalid_path(self): - - my_box = { - "type": "box", - "boxType": "plot", - "fileId": "AdamKulidjian:327", - "shareKey": None, - "title": "box 1", - } - dash = dashboard.Dashboard() - - message = ( - "Invalid path. Your 'path' list must only contain " - "the strings 'first' and 'second'." - ) - - self.assertRaisesRegex(PlotlyError, message, dash._insert, my_box, "third") - - def test_box_id_none(self): - - my_box = { - "type": "box", - "boxType": "plot", - "fileId": "AdamKulidjian:327", - "shareKey": None, - "title": "box 1", - } - - dash = dashboard.Dashboard() - dash.insert(my_box, "above", None) - - message = ( - "Make sure the box_id is specfied if there is at least " - "one box in your dashboard." - ) - - self.assertRaisesRegex(PlotlyError, message, dash.insert, my_box, "above", None) - - def test_id_not_valid(self): - my_box = { - "type": "box", - "boxType": "plot", - "fileId": "AdamKulidjian:327", - "shareKey": None, - "title": "box 1", - } - - message = ( - "Your box_id must be a number in your dashboard. To view a " - "representation of your dashboard run get_preview()." - ) - - dash = dashboard.Dashboard() - dash.insert(my_box, "above", 1) - - # insert box - self.assertRaisesRegex(PlotlyError, message, dash.insert, my_box, "above", 0) - # get box by id - self.assertRaisesRegex(PlotlyError, message, dash.get_box, 0) - - # remove box - self.assertRaisesRegex(PlotlyError, message, dash.remove, 0) - - def test_invalid_side(self): - my_box = { - "type": "box", - "boxType": "plot", - "fileId": "AdamKulidjian:327", - "shareKey": None, - "title": "box 1", - } - - message = ( - "If there is at least one box in your dashboard, you " - "must specify a valid side value. You must choose from " - "'above', 'below', 'left', and 'right'." - ) - - dash = dashboard.Dashboard() - dash.insert(my_box, "above", 0) - - self.assertRaisesRegex( - PlotlyError, message, dash.insert, my_box, "somewhere", 1 - ) - - def test_dashboard_dict(self): - my_box = { - "type": "box", - "boxType": "plot", - "fileId": "AdamKulidjian:327", - "shareKey": None, - "title": "box 1", - } - - dash = dashboard.Dashboard() - dash.insert(my_box) - dash.insert(my_box, "above", 1) - - expected_dashboard = { - "layout": { - "direction": "vertical", - "first": { - "direction": "vertical", - "first": { - "boxType": "plot", - "fileId": "AdamKulidjian:327", - "shareKey": None, - "title": "box 1", - "type": "box", - }, - "second": { - "boxType": "plot", - "fileId": "AdamKulidjian:327", - "shareKey": None, - "title": "box 1", - "type": "box", - }, - "size": 50, - "sizeUnit": "%", - "type": "split", - }, - "second": {"boxType": "empty", "type": "box"}, - "size": 1500, - "sizeUnit": "px", - "type": "split", - }, - "settings": {}, - "version": 2, - } - - self.assertEqual(dash["layout"], expected_dashboard["layout"]) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_file/test_file.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_file/test_file.py deleted file mode 100644 index 4dccef14467..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_file/test_file.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -test_meta: -========== - -A module intended for use with Nose. - -""" -import random -import string - - -from chart_studio import plotly as py -from chart_studio.exceptions import PlotlyRequestError -from chart_studio.tests.utils import PlotlyTestCase - - -class FolderAPITestCase(PlotlyTestCase): - def setUp(self): - super(FolderAPITestCase, self).setUp() - py.sign_in("PythonTest", "xnyU0DEwvAQQCwHVseIL") - - def _random_filename(self): - choice_chars = string.ascii_letters + string.digits - random_chars = [random.choice(choice_chars) for _ in range(10)] - unique_filename = "Valid Folder " + "".join(random_chars) - return unique_filename - - def test_create_folder(self): - try: - py.file_ops.mkdirs(self._random_filename()) - except PlotlyRequestError as e: - self.fail("Expected this *not* to fail! Status: {}".format(e.status_code)) - - def test_create_nested_folders(self): - first_folder = self._random_filename() - nested_folder = "{0}/{1}".format(first_folder, self._random_filename()) - try: - py.file_ops.mkdirs(nested_folder) - except PlotlyRequestError as e: - self.fail("Expected this *not* to fail! Status: {}".format(e.status_code)) - - def test_duplicate_folders(self): - first_folder = self._random_filename() - py.file_ops.mkdirs(first_folder) - try: - py.file_ops.mkdirs(first_folder) - except PlotlyRequestError as e: - pass - else: - self.fail("Expected this to fail!") diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_figure/test_get_figure.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_figure/test_get_figure.py deleted file mode 100644 index 04816fed5d6..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_figure/test_get_figure.py +++ /dev/null @@ -1,97 +0,0 @@ -""" -test_get_figure: -================= - -A module intended for use with Nose. - -""" -from __future__ import absolute_import - -import _plotly_utils.exceptions -from chart_studio import exceptions -from chart_studio.plotly import plotly as py -from chart_studio.tests.utils import PlotlyTestCase - - -def is_trivial(obj): - if isinstance(obj, (dict, list)): - if len(obj): - if isinstance(obj, dict): - tests = (is_trivial(obj[key]) for key in obj) - return all(tests) - elif isinstance(obj, list): - tests = (is_trivial(entry) for entry in obj) - return all(tests) - else: - return False - else: - return True - elif obj is None: - return True - else: - return False - - -class GetFigureTest(PlotlyTestCase): - def test_get_figure(self): - un = "PlotlyImageTest" - ak = "786r5mecv0" - file_id = 13183 - py.sign_in(un, ak) - py.get_figure("PlotlyImageTest", str(file_id)) - - def test_get_figure_with_url(self): - un = "PlotlyImageTest" - ak = "786r5mecv0" - url = "https://plotly.com/~PlotlyImageTest/13183/" - py.sign_in(un, ak) - py.get_figure(url) - - def test_get_figure_invalid_1(self): - un = "PlotlyImageTest" - ak = "786r5mecv0" - url = "https://plotly.com/~PlotlyImageTest/a/" - py.sign_in(un, ak) - with self.assertRaises(exceptions.PlotlyError): - py.get_figure(url) - - def test_get_figure_invalid_2(self): - un = "PlotlyImageTest" - ak = "786r5mecv0" - url = "https://plotly.com/~PlotlyImageTest/-1/" - py.sign_in(un, ak) - with self.assertRaises(exceptions.PlotlyError): - py.get_figure(url) - - # demonstrates error if fig has invalid parts - def test_get_figure_invalid_3(self): - un = "PlotlyImageTest" - ak = "786r5mecv0" - url = "https://plotly.com/~PlotlyImageTest/2/" - py.sign_in(un, ak) - with self.assertRaises(ValueError): - py.get_figure(url) - - def test_get_figure_does_not_exist(self): - un = "PlotlyImageTest" - ak = "786r5mecv0" - url = "https://plotly.com/~PlotlyImageTest/1000000000/" - py.sign_in(un, ak) - with self.assertRaises(_plotly_utils.exceptions.PlotlyError): - py.get_figure(url) - - def test_get_figure_raw(self): - un = "PlotlyImageTest" - ak = "786r5mecv0" - file_id = 2 - py.sign_in(un, ak) - py.get_figure("PlotlyImageTest", str(file_id), raw=True) - - -class TestBytesVStrings(PlotlyTestCase): - def test_proper_escaping(self): - un = "PlotlyImageTest" - ak = "786r5mecv0" - url = "https://plotly.com/~PlotlyImageTest/13185/" - py.sign_in(un, ak) - py.get_figure(url) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_requests/test_get_requests.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_requests/test_get_requests.py deleted file mode 100644 index 02ef22ee655..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_requests/test_get_requests.py +++ /dev/null @@ -1,122 +0,0 @@ -""" -test_get_requests: -================== - -A module intended for use with Nose. - -""" -import copy - -import requests -import json as _json - -from chart_studio.tests.utils import PlotlyTestCase - -default_headers = { - "plotly-username": "", - "plotly-apikey": "", - "plotly-version": "2.0", - "plotly-platform": "pythonz", -} - -server = "https://plotly.com" - - -class GetRequestsTest(PlotlyTestCase): - def test_user_does_not_exist(self): - username = "user_does_not_exist" - api_key = "invalid-apikey" - file_owner = "get_test_user" - file_id = 0 - hd = copy.copy(default_headers) - hd["plotly-username"] = username - hd["plotly-apikey"] = api_key - resource = "/apigetfile/{0}/{1}/".format(file_owner, file_id) - response = requests.get(server + resource, headers=hd) - content = _json.loads(response.content.decode("unicode_escape")) - error_message = ( - "Aw, snap! We don't have an account for {0}. Want to " - "try again? Sign in is not case sensitive.".format(username) - ) - self.assertEqual(response.status_code, 404) - self.assertEqual(content["error"], error_message) - - def test_file_does_not_exist(self): - username = "PlotlyImageTest" - api_key = "786r5mecv0" - file_owner = "get_test_user" - file_id = 1000 - hd = copy.copy(default_headers) - hd["plotly-username"] = username - hd["plotly-apikey"] = api_key - resource = "/apigetfile/{0}/{1}/".format(file_owner, file_id) - response = requests.get(server + resource, headers=hd) - content = _json.loads(response.content.decode("unicode_escape")) - error_message = ( - "Aw, snap! It looks like this file does " "not exist. Want to try again?" - ) - self.assertEqual(response.status_code, 404) - self.assertEqual(content["error"], error_message) - - def test_wrong_api_key(self): # TODO: does this test the right thing? - username = "PlotlyImageTest" - api_key = "invalid-apikey" - file_owner = "get_test_user" - file_id = 0 - hd = copy.copy(default_headers) - hd["plotly-username"] = username - hd["plotly-apikey"] = api_key - resource = "/apigetfile/{0}/{1}/".format(file_owner, file_id) - response = requests.get(server + resource, headers=hd) - self.assertEqual(response.status_code, 401) - # TODO: check error message? - - # Locked File - # TODO - - def test_private_permission_defined(self): - username = "PlotlyImageTest" - api_key = "786r5mecv0" - file_owner = "get_test_user" - file_id = 1 # 1 is a private file - hd = copy.copy(default_headers) - hd["plotly-username"] = username - hd["plotly-apikey"] = api_key - resource = "/apigetfile/{0}/{1}/".format(file_owner, file_id) - response = requests.get(server + resource, headers=hd) - content = _json.loads(response.content.decode("unicode_escape")) - self.assertEqual(response.status_code, 403) - - # Private File that is shared - # TODO - - def test_missing_headers(self): - file_owner = "get_test_user" - file_id = 0 - resource = "/apigetfile/{0}/{1}/".format(file_owner, file_id) - headers = list(default_headers.keys()) - for header in headers: - hd = copy.copy(default_headers) - del hd[header] - response = requests.get(server + resource, headers=hd) - content = _json.loads(response.content.decode("unicode_escape")) - self.assertEqual(response.status_code, 422) - - def test_valid_request(self): - username = "PlotlyImageTest" - api_key = "786r5mecv0" - file_owner = "get_test_user" - file_id = 0 - hd = copy.copy(default_headers) - hd["plotly-username"] = username - hd["plotly-apikey"] = api_key - resource = "/apigetfile/{0}/{1}/".format(file_owner, file_id) - response = requests.get(server + resource, headers=hd) - content = _json.loads(response.content.decode("unicode_escape")) - self.assertEqual(response.status_code, 200) - # content = _json.loads(res.content) - # response_payload = content['payload'] - # figure = response_payload['figure'] - # if figure['data'][0]['x'] != [u'1', u'2', u'3']: - # print('ERROR') - # return res diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_grid/test_grid.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_grid/test_grid.py deleted file mode 100644 index 1bf6f06ec78..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_grid/test_grid.py +++ /dev/null @@ -1,176 +0,0 @@ -""" -test_grid: -========== - -A module intended for use with Nose. - -""" -from __future__ import absolute_import - -import random -import string -from unittest import skip - - -from chart_studio import plotly as py -from chart_studio.exceptions import InputError, PlotlyRequestError -from _plotly_utils.exceptions import PlotlyError -from plotly.graph_objs import Scatter -from chart_studio.grid_objs import Column, Grid -from chart_studio.plotly import parse_grid_id_args -from chart_studio.tests.utils import PlotlyTestCase - - -def random_filename(): - choice_chars = string.ascii_letters + string.digits - random_chars = [random.choice(choice_chars) for _ in range(10)] - unique_filename = "Valid Grid " + "".join(random_chars) - return unique_filename - - -class GridTest(PlotlyTestCase): - - # Test grid args - _grid_id = "chris:3043" - _grid = Grid([]) - _grid.id = _grid_id - _grid_url = "https://plotly.com/~chris/3043/my-grid" - - def setUp(self): - super(GridTest, self).setUp() - py.sign_in("PythonTest", "xnyU0DEwvAQQCwHVseIL") - - def get_grid(self): - c1 = Column([1, 2, 3, 4], "first column") - c2 = Column(["a", "b", "c", "d"], "second column") - g = Grid([c1, c2]) - return g - - def upload_and_return_grid(self): - g = self.get_grid() - unique_filename = random_filename() - py.grid_ops.upload(g, unique_filename, auto_open=False) - return g - - # Nominal usage - def test_grid_upload(self): - self.upload_and_return_grid() - - def test_grid_upload_in_new_folder(self): - g = self.get_grid() - path = "new folder: {0}/grid in folder {1}".format( - random_filename(), random_filename() - ) - py.grid_ops.upload(g, path, auto_open=False) - - def test_grid_upload_in_existing_folder(self): - g = self.get_grid() - folder = random_filename() - filename = random_filename() - py.file_ops.mkdirs(folder) - path = "existing folder: {0}/grid in folder {1}".format(folder, filename) - py.grid_ops.upload(g, path, auto_open=False) - - def test_column_append(self): - g = self.upload_and_return_grid() - new_col = Column([1, 5, 3], "new col") - py.grid_ops.append_columns([new_col], grid=g) - - def test_row_append(self): - g = self.upload_and_return_grid() - new_rows = [[1, 2], [10, 20]] - py.grid_ops.append_rows(new_rows, grid=g) - - def test_plot_from_grid(self): - g = self.upload_and_return_grid() - url = py.plot( - [Scatter(xsrc=g[0].id, ysrc=g[1].id)], - auto_open=False, - filename="plot from grid", - ) - return url, g - - def test_get_figure_from_references(self): - url, g = self.test_plot_from_grid() - fig = py.get_figure(url) - data = fig["data"] - trace = data[0] - assert tuple(g[0].data) == tuple(trace["x"]) - assert tuple(g[1].data) == tuple(trace["y"]) - - def test_grid_id_args(self): - self.assertEqual( - parse_grid_id_args(self._grid, None), - parse_grid_id_args(None, self._grid_url), - ) - - def test_no_grid_id_args(self): - with self.assertRaises(InputError): - parse_grid_id_args(None, None) - - def test_overspecified_grid_args(self): - with self.assertRaises(InputError): - parse_grid_id_args(self._grid, self._grid_url) - - # not broken anymore since plotly 3.0.0 - # def test_scatter_from_non_uploaded_grid(self): - # c1 = Column([1, 2, 3, 4], 'first column') - # c2 = Column(['a', 'b', 'c', 'd'], 'second column') - # g = Grid([c1, c2]) - # with self.assertRaises(ValueError): - # Scatter(xsrc=g[0], ysrc=g[1]) - - def test_column_append_of_non_uploaded_grid(self): - c1 = Column([1, 2, 3, 4], "first column") - c2 = Column(["a", "b", "c", "d"], "second column") - g = Grid([c1]) - with self.assertRaises(PlotlyError): - py.grid_ops.append_columns([c2], grid=g) - - def test_row_append_of_non_uploaded_grid(self): - c1 = Column([1, 2, 3, 4], "first column") - rows = [[1], [2]] - g = Grid([c1]) - with self.assertRaises(PlotlyError): - py.grid_ops.append_rows(rows, grid=g) - - # Input Errors - def test_unequal_length_rows(self): - g = self.upload_and_return_grid() - rows = [[1, 2], ["to", "many", "cells"]] - with self.assertRaises(InputError): - py.grid_ops.append_rows(rows, grid=g) - - # Test duplicate columns - def test_duplicate_columns(self): - c1 = Column([1, 2, 3, 4], "first column") - c2 = Column(["a", "b", "c", "d"], "first column") - with self.assertRaises(InputError): - Grid([c1, c2]) - - # Test delete - def test_delete_grid(self): - g = self.get_grid() - fn = random_filename() - py.grid_ops.upload(g, fn, auto_open=False) - py.grid_ops.delete(g) - py.grid_ops.upload(g, fn, auto_open=False) - - # Plotly failures - @skip( - "adding this for now so test_file_tools pass, more info" - + "https://github.com/plotly/python-api/issues/262" - ) - def test_duplicate_filenames(self): - c1 = Column([1, 2, 3, 4], "first column") - g = Grid([c1]) - - random_chars = [random.choice(string.ascii_uppercase) for _ in range(5)] - unique_filename = "Valid Grid " + "".join(random_chars) - py.grid_ops.upload(g, unique_filename, auto_open=False) - try: - py.grid_ops.upload(g, unique_filename, auto_open=False) - except PlotlyRequestError as e: - pass - else: - self.fail("Expected this to fail!") diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_image/test_image.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_image/test_image.py deleted file mode 100644 index 22cdc2450b5..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_image/test_image.py +++ /dev/null @@ -1,69 +0,0 @@ -from __future__ import absolute_import - -import imghdr -import tempfile -import os -import itertools -import warnings -import pytest - -import _plotly_utils.exceptions -from chart_studio.plotly import plotly as py - -from chart_studio.tests.utils import PlotlyTestCase - - -@pytest.fixture -def setup_image(): - py.sign_in("PlotlyImageTest", "786r5mecv0") - data = [{"x": [1, 2, 3], "y": [3, 1, 6]}] - - return data - - -@pytest.mark.parametrize("image_format", ("png", "jpeg", "pdf", "svg", "emf")) -@pytest.mark.parametrize("width", (None, 300)) -@pytest.mark.parametrize("height", (None, 300)) -@pytest.mark.parametrize("scale", (None, 3)) -def test_image_get_returns_valid_image_test( - setup_image, image_format, width, height, scale -): - # TODO: better understand why this intermittently fails. See #649 - data = setup_image - num_attempts = 2 - for i in range(num_attempts): - if i > 0: - warnings.warn("image test intermittently failed, retrying...") - try: - image = py.image.get(data, image_format, width, height, scale) - if image_format in ["png", "jpeg"]: - assert imghdr.what("", image) == image_format - return - except (KeyError, _plotly_utils.exceptions.PlotlyError): - if i == num_attempts - 1: - raise - - -@pytest.mark.parametrize("image_format", ("png", "jpeg", "pdf", "svg", "emf")) -@pytest.mark.parametrize("width", (None, 300)) -@pytest.mark.parametrize("height", (None, 300)) -@pytest.mark.parametrize("scale", (None, 3)) -def test_image_save_as_saves_valid_image( - setup_image, image_format, width, height, scale -): - data = setup_image - f, filename = tempfile.mkstemp(".{}".format(image_format)) - py.image.save_as( - data, - filename, - format=image_format, - width=width, - height=height, - scale=scale, - ) - if image_format in ["png", "jpeg"]: - assert imghdr.what(filename) == image_format - else: - assert os.path.getsize(filename) > 0 - - os.remove(filename) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_meta/test_meta.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_meta/test_meta.py deleted file mode 100644 index 777598c3060..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_meta/test_meta.py +++ /dev/null @@ -1,59 +0,0 @@ -""" -test_meta: -========== - -A module intended for use with Nose. - -""" -from __future__ import absolute_import - -import random -import string - -from unittest import skip - -from chart_studio import plotly as py -from chart_studio.exceptions import PlotlyRequestError -from chart_studio.grid_objs import Column, Grid -from chart_studio.tests.utils import PlotlyTestCase - - -class MetaTest(PlotlyTestCase): - - _grid = grid = Grid([Column([1, 2, 3, 4], "first column")]) - _meta = {"settings": {"scope1": {"model": "Unicorn Finder", "voltage": 4}}} - - def setUp(self): - super(MetaTest, self).setUp() - py.sign_in("PythonTest", "xnyU0DEwvAQQCwHVseIL") - - def random_filename(self): - random_chars = [random.choice(string.ascii_uppercase) for _ in range(5)] - unique_filename = "Valid Grid with Meta " + "".join(random_chars) - return unique_filename - - def test_upload_meta(self): - unique_filename = self.random_filename() - grid_url = py.grid_ops.upload(self._grid, unique_filename, auto_open=False) - - # Add some Metadata to that grid - py.meta_ops.upload(self._meta, grid_url=grid_url) - - def test_upload_meta_with_grid(self): - c1 = Column([1, 2, 3, 4], "first column") - Grid([c1]) - - unique_filename = self.random_filename() - - py.grid_ops.upload( - self._grid, unique_filename, meta=self._meta, auto_open=False - ) - - @skip( - "adding this for now so test_file_tools pass, more info" - + "https://github.com/plotly/python-api/issues/263" - ) - def test_metadata_to_nonexistent_grid(self): - non_exist_meta_url = "https://local.plotly.com/~GridTest/999999999" - with self.assertRaises(PlotlyRequestError): - py.meta_ops.upload(self._meta, grid_url=non_exist_meta_url) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_plotly/test_credentials.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_plotly/test_credentials.py deleted file mode 100644 index 6659dbab6ff..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_plotly/test_credentials.py +++ /dev/null @@ -1,84 +0,0 @@ -from __future__ import absolute_import - -import _plotly_utils.exceptions -from chart_studio import plotly as py, exceptions -import chart_studio.session as session -import chart_studio.tools as tls -from chart_studio.tests.utils import PlotlyTestCase - -import sys - -# import from mock -if sys.version_info >= (3, 3): - from unittest.mock import patch -else: - from mock import patch - - -class TestSignIn(PlotlyTestCase): - def setUp(self): - super(TestSignIn, self).setUp() - patcher = patch("chart_studio.api.v2.users.current") - self.users_current_mock = patcher.start() - self.addCleanup(patcher.stop) - - def test_get_credentials(self): - session_credentials = session.get_session_credentials() - if "username" in session_credentials: - del session._session["credentials"]["username"] - if "api_key" in session_credentials: - del session._session["credentials"]["api_key"] - creds = py.get_credentials() - file_creds = tls.get_credentials_file() - self.assertEqual(creds, file_creds) - - def test_sign_in(self): - un = "anyone" - ak = "something" - # TODO, add this! - # si = ['this', 'and-this'] - py.sign_in(un, ak) - creds = py.get_credentials() - self.assertEqual(creds["username"], un) - self.assertEqual(creds["api_key"], ak) - # TODO, and check it! - # assert creds['stream_ids'] == si - - def test_get_config(self): - plotly_domain = "test domain" - plotly_streaming_domain = "test streaming domain" - config1 = py.get_config() - session._session["config"]["plotly_domain"] = plotly_domain - config2 = py.get_config() - session._session["config"]["plotly_streaming_domain"] = plotly_streaming_domain - config3 = py.get_config() - self.assertEqual(config2["plotly_domain"], plotly_domain) - self.assertNotEqual(config2["plotly_streaming_domain"], plotly_streaming_domain) - self.assertEqual(config3["plotly_streaming_domain"], plotly_streaming_domain) - - def test_sign_in_with_config(self): - username = "place holder" - api_key = "place holder" - plotly_domain = "test domain" - plotly_streaming_domain = "test streaming domain" - plotly_ssl_verification = False - py.sign_in( - username, - api_key, - plotly_domain=plotly_domain, - plotly_streaming_domain=plotly_streaming_domain, - plotly_ssl_verification=plotly_ssl_verification, - ) - config = py.get_config() - self.assertEqual(config["plotly_domain"], plotly_domain) - self.assertEqual(config["plotly_streaming_domain"], plotly_streaming_domain) - self.assertEqual(config["plotly_ssl_verification"], plotly_ssl_verification) - - def test_sign_in_cannot_validate(self): - self.users_current_mock.side_effect = exceptions.PlotlyRequestError( - "msg", 400, "foobar" - ) - with self.assertRaisesRegex( - _plotly_utils.exceptions.PlotlyError, "Sign in failed" - ): - py.sign_in("foo", "bar") diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_plotly/test_plot.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_plotly/test_plot.py deleted file mode 100644 index 2f828e42dca..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_plotly/test_plot.py +++ /dev/null @@ -1,414 +0,0 @@ -""" -test_plot: -========== - -A module intended for use with Nose. - -""" -from __future__ import absolute_import - -import urllib - -import requests -import sys -import json as _json -import warnings - - -import chart_studio.tools as tls -import plotly.tools -from chart_studio import session -from chart_studio.tests.utils import PlotlyTestCase -from chart_studio.plotly import plotly as py -from _plotly_utils.exceptions import PlotlyError, PlotlyEmptyDataError -from chart_studio.files import CONFIG_FILE - - -# import from mock -if sys.version_info >= (3, 3): - from unittest.mock import patch -else: - from mock import patch - - -class TestPlot(PlotlyTestCase): - def setUp(self): - super(TestPlot, self).setUp() - py.sign_in("PlotlyImageTest", "786r5mecv0") - self.simple_figure = {"data": [{"x": [1, 2, 3], "y": [2, 1, 2]}]} - - def test_plot_valid(self): - fig = { - "data": [{"x": (1, 2, 3), "y": (2, 1, 2)}], - "layout": {"title": {"text": "simple"}}, - } - url = py.plot(fig, auto_open=False, filename="plot_valid") - saved_fig = py.get_figure(url) - self.assertEqual(saved_fig["data"][0]["x"], fig["data"][0]["x"]) - self.assertEqual(saved_fig["data"][0]["y"], fig["data"][0]["y"]) - self.assertEqual( - saved_fig["layout"]["title"]["text"], fig["layout"]["title"]["text"] - ) - - def test_plot_invalid(self): - fig = {"data": [{"x": [1, 2, 3], "y": [2, 1, 2], "z": [3, 4, 1]}]} - with self.assertRaises(ValueError): - py.plot(fig, auto_open=False, filename="plot_invalid") - - def test_plot_invalid_args_1(self): - with self.assertRaises(TypeError): - py.plot(x=[1, 2, 3], y=[2, 1, 2], auto_open=False, filename="plot_invalid") - - def test_plot_invalid_args_2(self): - with self.assertRaises(ValueError): - py.plot([1, 2, 3], [2, 1, 2], auto_open=False, filename="plot_invalid") - - def test_plot_empty_data(self): - self.assertRaises(PlotlyEmptyDataError, py.plot, [], filename="plot_invalid") - - def test_plot_sharing_invalid_argument(self): - - # Raise an error if sharing argument is incorrect - # correct arguments {'public, 'private', 'secret'} - - kwargs = {"filename": "invalid-sharing-argument", "sharing": "privste"} - - with self.assertRaisesRegex(PlotlyError, "The 'sharing' argument only accepts"): - py.plot(self.simple_figure, **kwargs) - - def test_plot_world_readable_sharing_conflict_1(self): - - # Raise an error if world_readable=False but sharing='public' - - kwargs = { - "filename": "invalid-privacy-setting", - "world_readable": False, - "sharing": "public", - } - - with self.assertRaisesRegex( - PlotlyError, "setting your plot privacy to both public and private." - ): - py.plot(self.simple_figure, **kwargs) - - def test_plot_world_readable_sharing_conflict_2(self): - - # Raise an error if world_readable=True but sharing='secret' - - kwargs = { - "filename": "invalid-privacy-setting", - "world_readable": True, - "sharing": "secret", - } - - with self.assertRaisesRegex( - PlotlyError, "setting your plot privacy to both public and private." - ): - py.plot(self.simple_figure, **kwargs) - - def test_plot_option_logic_only_world_readable_given(self): - - # If sharing is not given and world_readable=False, - # sharing should be set to private - - kwargs = { - "filename": "test", - "auto_open": True, - "validate": True, - "world_readable": False, - } - - plot_option_logic = py._plot_option_logic(kwargs) - - expected_plot_option_logic = { - "filename": "test", - "auto_open": True, - "validate": True, - "world_readable": False, - "sharing": "private", - } - self.assertEqual(plot_option_logic, expected_plot_option_logic) - - def test_plot_option_logic_only_sharing_given(self): - - # If world_readable is not given and sharing ='private', - # world_readable should be set to False - - kwargs = { - "filename": "test", - "auto_open": True, - "validate": True, - "sharing": "private", - } - - plot_option_logic = py._plot_option_logic(kwargs) - - expected_plot_option_logic = { - "filename": "test", - "auto_open": True, - "validate": True, - "world_readable": False, - "sharing": "private", - } - self.assertEqual(plot_option_logic, expected_plot_option_logic) - - def test_plot_url_given_sharing_key(self): - - # Give share_key is requested, the retun url should contain - # the share_key - - validate = True - fig = plotly.tools.return_figure_from_figure_or_data( - self.simple_figure, validate - ) - kwargs = { - "filename": "is_share_key_included2", - "world_readable": False, - "auto_open": False, - "sharing": "secret", - } - plot_url = py.plot(fig, **kwargs) - - self.assertTrue("share_key=" in plot_url) - - def test_plot_url_response_given_sharing_key(self): - - # Given share_key is requested, get request of the url should - # be 200 - - kwargs = { - "filename": "is_share_key_included2", - "auto_open": False, - "world_readable": False, - "sharing": "secret", - } - - plot_url = py.plot(self.simple_figure, **kwargs) - # shareplot basically always gives a 200 if even if permission denied - # embedplot returns an actual 404 - embed_url = plot_url.split("?")[0] + ".embed?" + plot_url.split("?")[1] - response = requests.get(embed_url) - - self.assertEqual(response.status_code, 200) - - def test_private_plot_response_with_and_without_share_key(self): - - # The json file of the private plot should be 404 and once - # share_key is added it should be 200 - - kwargs = { - "filename": "is_share_key_included2", - "world_readable": False, - "auto_open": False, - "sharing": "private", - } - - private_plot_url = py.plot(self.simple_figure, **kwargs) - private_plot_response = requests.get(private_plot_url + ".json") - - # The json file of the private plot should be 404 - self.assertEqual(private_plot_response.status_code, 404) - - secret_plot_url = py.add_share_key_to_url(private_plot_url) - urlsplit = urllib.parse.urlparse(secret_plot_url) - secret_plot_json_file = urllib.parse.urljoin( - urlsplit.geturl(), "?.json" + urlsplit.query - ) - secret_plot_response = requests.get(secret_plot_json_file) - - # The json file of the secret plot should be 200 - self.assertTrue(secret_plot_response.status_code, 200) - - -class TestPlotOptionLogic(PlotlyTestCase): - conflicting_option_set = ( - {"world_readable": True, "sharing": "secret"}, - {"world_readable": True, "sharing": "private"}, - {"world_readable": False, "sharing": "public"}, - ) - - def setUp(self): - super(TestPlotOptionLogic, self).setUp() - - # Make sure we don't hit sign-in validation failures. - patcher = patch("chart_studio.api.v2.users.current") - self.users_current_mock = patcher.start() - self.addCleanup(patcher.stop) - - # Some tests specifically check how *file-level* plot options alter - # plot option logic. In order not to re-write that, we simply clear the - # *session* information since it would take precedent. The _session is - # set when you `sign_in`. - session._session["plot_options"].clear() - - def test_default_options(self): - options = py._plot_option_logic({}) - config_options = tls.get_config_file() - for key in options: - if key in config_options: - self.assertEqual(options[key], config_options[key]) - - def test_conflicting_plot_options_in_plot_option_logic(self): - for plot_options in self.conflicting_option_set: - self.assertRaises(PlotlyError, py._plot_option_logic, plot_options) - - def test_set_config_updates_plot_options(self): - original_config = tls.get_config_file() - new_options = { - "world_readable": not original_config["world_readable"], - "auto_open": not original_config["auto_open"], - "sharing": ( - "public" if original_config["world_readable"] is False else "secret" - ), - } - tls.set_config_file(**new_options) - options = py._plot_option_logic({}) - for key in new_options: - self.assertEqual(new_options[key], options[key]) - - -def generate_conflicting_plot_options_in_signin(): - """sign_in overrides the default plot options. - conflicting options aren't raised until plot or iplot is called, - through _plot_option_logic - """ - - def gen_test(plot_options): - def test(self): - py.sign_in("username", "key", **plot_options) - self.assertRaises(PlotlyError, py._plot_option_logic, {}) - - return test - - for i, plot_options in enumerate(TestPlotOptionLogic.conflicting_option_set): - setattr( - TestPlotOptionLogic, - "test_conflicting_plot_options_in_signin_{}".format(i), - gen_test(plot_options), - ) - - -generate_conflicting_plot_options_in_signin() - - -def generate_conflicting_plot_options_in_tools_dot_set_config(): - """tls.set_config overrides the default plot options. - conflicting options are actually raised when the options are saved, - because we push out default arguments for folks, and we don't want to - require users to specify both world_readable and secret *and* we don't - want to raise an error if they specified only one of these options - and didn't know that a default option was being saved for them. - """ - - def gen_test(plot_options): - def test(self): - self.assertRaises(PlotlyError, tls.set_config_file, **plot_options) - - return test - - for i, plot_options in enumerate(TestPlotOptionLogic.conflicting_option_set): - setattr( - TestPlotOptionLogic, - "test_conflicting_plot_options_in_" "tools_dot_set_config{}".format(i), - gen_test(plot_options), - ) - - -generate_conflicting_plot_options_in_tools_dot_set_config() - - -def generate_conflicting_plot_options_with_json_writes_of_config(): - """if the user wrote their own options in the config file, - then we'll raise the error when the call plot or iplot through - _plot_option_logic - """ - - def gen_test(plot_options): - def test(self): - config = _json.load(open(CONFIG_FILE)) - with open(CONFIG_FILE, "w") as f: - config.update(plot_options) - f.write(_json.dumps(config)) - self.assertRaises(PlotlyError, py._plot_option_logic, {}) - - return test - - for i, plot_options in enumerate(TestPlotOptionLogic.conflicting_option_set): - setattr( - TestPlotOptionLogic, - "test_conflicting_plot_options_with_" "json_writes_of_config{}".format(i), - gen_test(plot_options), - ) - - -generate_conflicting_plot_options_with_json_writes_of_config() - - -def generate_private_sharing_and_public_world_readable_precedence(): - """Test that call signature arguments applied through _plot_option_logic - overwrite options supplied through py.sign_in which overwrite options - set through tls.set_config - """ - plot_option_sets = ( - { - "parent": {"world_readable": True, "auto_open": False}, - "child": {"sharing": "secret", "auto_open": True}, - "expected_output": { - "world_readable": False, - "sharing": "secret", - "auto_open": True, - }, - }, - { - "parent": {"world_readable": True, "auto_open": True}, - "child": {"sharing": "private", "auto_open": False}, - "expected_output": { - "world_readable": False, - "sharing": "private", - "auto_open": False, - }, - }, - { - "parent": {"world_readable": False, "auto_open": False}, - "child": {"sharing": "public", "auto_open": True}, - "expected_output": { - "world_readable": True, - "sharing": "public", - "auto_open": True, - }, - }, - ) - - def gen_test_signin(plot_options): - def test(self): - py.sign_in("username", "key", **plot_options["parent"]) - options = py._plot_option_logic(plot_options["child"]) - for option, value in plot_options["expected_output"].items(): - self.assertEqual(options[option], value) - - return test - - def gen_test_config(plot_options): - def test(self): - tls.set_config(**plot_options["parent"]) - options = py._plot_option_logic(plot_options["child"]) - for option, value in plot_options["expected_output"].items(): - self.assertEqual(options[option], value) - - for i, plot_options in enumerate(plot_option_sets): - setattr( - TestPlotOptionLogic, - "test_private_sharing_and_public_" - "world_readable_precedence_signin{}".format(i), - gen_test_signin(plot_options), - ) - - setattr( - TestPlotOptionLogic, - "test_private_sharing_and_public_" - "world_readable_precedence_config{}".format(i), - gen_test_config(plot_options), - ) - - -generate_private_sharing_and_public_world_readable_precedence() diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_session/test_session.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_session/test_session.py deleted file mode 100644 index 081342f6034..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_session/test_session.py +++ /dev/null @@ -1,34 +0,0 @@ -from __future__ import absolute_import - -from chart_studio.tests.utils import PlotlyTestCase - -from chart_studio import session -from chart_studio.session import update_session_plot_options, SHARING_OPTIONS -from _plotly_utils.exceptions import PlotlyError - - -class TestSession(PlotlyTestCase): - def setUp(self): - super(TestSession, self).setUp() - session._session["plot_options"].clear() - - def test_update_session_plot_options_invalid_sharing_argument(self): - - # Return PlotlyError when sharing arguement is not - # 'public', 'private' or 'secret' - - kwargs = {"sharing": "priva"} - self.assertRaises(PlotlyError, update_session_plot_options, **kwargs) - - def test_update_session_plot_options_valid_sharing_argument(self): - - # _session['plot_options'] should contain sharing key after - # update_session_plot_options is called by correct arguments - # 'public, 'private' or 'secret' - from chart_studio.session import _session - - for key in SHARING_OPTIONS: - kwargs = {"sharing": key} - update_session_plot_options(**kwargs) - - self.assertEqual(_session["plot_options"], kwargs) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_spectacle_presentation/test_spectacle_presentation.py b/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_spectacle_presentation/test_spectacle_presentation.py deleted file mode 100644 index 921855d5c21..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_spectacle_presentation/test_spectacle_presentation.py +++ /dev/null @@ -1,495 +0,0 @@ -""" -test_spectacle_presentation: -========== - -A module intended for use with Nose. - -""" -from __future__ import absolute_import - -from unittest import TestCase -from _plotly_utils.exceptions import PlotlyError -import chart_studio -import chart_studio.presentation_objs as pres - - -class TestPresentation(TestCase): - def test_invalid_style(self): - markdown_string = """ - # one slide - """ - - self.assertRaisesRegex( - PlotlyError, - chart_studio.presentation_objs.presentation_objs.STYLE_ERROR, - pres.Presentation, - markdown_string, - style="foo", - ) - - def test_open_code_block(self): - markdown_string = """ - # one slide - - ```python - x = 2 + 2 - print x - """ - - self.assertRaisesRegex( - PlotlyError, - chart_studio.presentation_objs.presentation_objs.CODE_ENV_ERROR, - pres.Presentation, - markdown_string, - style="moods", - ) - - def test_invalid_code_language(self): - markdown_string = """ - ```foo - x = 2 + 2 - print x - ``` - """ - - self.assertRaisesRegex( - PlotlyError, - chart_studio.presentation_objs.presentation_objs.LANG_ERROR, - pres.Presentation, - markdown_string, - style="moods", - ) - - def test_expected_pres(self): - markdown_string = "# title\n---\ntransition: zoom, fade, fade\n# Colors\nColors are everywhere around us.\nPlotly(https://plotly.com/~AdamKulidjian/3564/)\nImage(https://raw.githubusercontent.com/jackparmer/gradient-backgrounds/master/moods1.png)\n```python\nx=1\n```\n---\nPlotly(https://plotly.com/~AdamKulidjian/3564/)\nPlotly(https://plotly.com/~AdamKulidjian/3564/)\nPlotly(https://plotly.com/~AdamKulidjian/3564/)\nPlotly(https://plotly.com/~AdamKulidjian/3564/)\nPlotly(https://plotly.com/~AdamKulidjian/3564/)\nPlotly(https://plotly.com/~AdamKulidjian/3564/)\nPlotly(https://plotly.com/~AdamKulidjian/3564/)\n---\n" - - my_pres = pres.Presentation(markdown_string, style="moods", imgStretch=True) - - exp_pres = { - "presentation": { - "paragraphStyles": { - "Body": { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 16, - "fontStyle": "normal", - "fontWeight": 100, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - "wordBreak": "break-word", - }, - "Body Small": { - "color": "#3d3d3d", - "fontFamily": "Open Sans", - "fontSize": 10, - "fontStyle": "normal", - "fontWeight": 400, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - "Caption": { - "color": "#3d3d3d", - "fontFamily": "Open Sans", - "fontSize": 11, - "fontStyle": "italic", - "fontWeight": 400, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - "Heading 1": { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 55, - "fontStyle": "normal", - "fontWeight": 900, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - "Heading 2": { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 36, - "fontStyle": "normal", - "fontWeight": 900, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - "Heading 3": { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 30, - "fontStyle": "normal", - "fontWeight": 900, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "textAlign": "center", - "textDecoration": "none", - }, - }, - "slidePreviews": [None for _ in range(496)], - "slides": [ - { - "children": [ - { - "children": ["title"], - "defaultHeight": 36, - "defaultWidth": 52, - "id": "CfaAzcSZE", - "props": { - "isQuote": False, - "listType": None, - "paragraphStyle": "Heading 1", - "size": 4, - "style": { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 55, - "fontStyle": "normal", - "fontWeight": 900, - "height": 140.0, - "left": 0.0, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "position": "absolute", - "textAlign": "center", - "textDecoration": "none", - "top": 350.0, - "width": 1000.0, - }, - }, - "resizeVertical": False, - "type": "Text", - } - ], - "id": "ibvfOQeNy", - "props": { - "style": {"backgroundColor": "#F7F7F7"}, - "transition": ["slide"], - }, - }, - { - "children": [ - { - "children": ["Colors"], - "defaultHeight": 36, - "defaultWidth": 52, - "id": "YcGQJ21AY", - "props": { - "isQuote": False, - "listType": None, - "paragraphStyle": "Heading 1", - "size": 4, - "style": { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 55, - "fontStyle": "normal", - "fontWeight": 900, - "height": 140.0, - "left": 0.0, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "position": "absolute", - "textAlign": "center", - "textDecoration": "none", - "top": 0.0, - "width": 1000.0, - }, - }, - "resizeVertical": False, - "type": "Text", - }, - { - "children": ["Colors are everywhere around us."], - "defaultHeight": 36, - "defaultWidth": 52, - "id": "G0tcGP89U", - "props": { - "isQuote": False, - "listType": None, - "paragraphStyle": "Body", - "size": 4, - "style": { - "color": "#000016", - "fontFamily": "Roboto", - "fontSize": 16, - "fontStyle": "normal", - "fontWeight": 100, - "height": 14.0, - "left": 25.0, - "lineHeight": "normal", - "minWidth": 20, - "opacity": 1, - "position": "absolute", - "textAlign": "left", - "textDecoration": "none", - "top": 663.0810810810812, - "width": 950.0000000000001, - "wordBreak": "break-word", - }, - }, - "resizeVertical": False, - "type": "Text", - }, - { - "children": [], - "id": "c4scRvuIe", - "props": { - "frameBorder": 0, - "scrolling": "no", - "src": "https://plotly.com/~AdamKulidjian/3564/.embed?link=false", - "style": { - "height": 280.0, - "left": 0.0, - "position": "absolute", - "top": 70.0, - "width": 330.66666666666663, - }, - }, - "type": "Plotly", - }, - { - "children": [], - "id": "yScDKejKG", - "props": { - "height": 512, - "imageName": None, - "src": "https://raw.githubusercontent.com/jackparmer/gradient-backgrounds/master/moods1.png", - "style": { - "height": 280.0, - "left": 334.66666666666663, - "opacity": 1, - "position": "absolute", - "top": 70.0, - "width": 330.66666666666663, - }, - "width": 512, - }, - "type": "Image", - }, - { - "children": [], - "defaultText": "Code", - "id": "fuUrIyVrv", - "props": { - "language": "python", - "source": "x=1\n", - "style": { - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", - "fontSize": 13, - "height": 280.0, - "left": 669.3333333333333, - "margin": 0, - "position": "absolute", - "textAlign": "left", - "top": 70.0, - "width": 330.66666666666663, - }, - "theme": "tomorrowNight", - }, - "type": "CodePane", - }, - ], - "id": "7eG6TvKqU", - "props": { - "style": {"backgroundColor": "#FFFFFF"}, - "transition": ["zoom", "fade"], - }, - }, - { - "children": [ - { - "children": [], - "id": "83EtFjFKM", - "props": { - "frameBorder": 0, - "scrolling": "no", - "src": "https://plotly.com/~AdamKulidjian/3564/.embed?link=false", - "style": { - "height": 96.57142857142857, - "left": 400.0, - "position": "absolute", - "top": 0.0, - "width": 600.0, - }, - }, - "type": "Plotly", - }, - { - "children": [], - "id": "V9vJYk8bF", - "props": { - "frameBorder": 0, - "scrolling": "no", - "src": "https://plotly.com/~AdamKulidjian/3564/.embed?link=false", - "style": { - "height": 96.57142857142857, - "left": 400.0, - "position": "absolute", - "top": 100.57142857142856, - "width": 600.0, - }, - }, - "type": "Plotly", - }, - { - "children": [], - "id": "DzCfXMyhv", - "props": { - "frameBorder": 0, - "scrolling": "no", - "src": "https://plotly.com/~AdamKulidjian/3564/.embed?link=false", - "style": { - "height": 96.57142857142857, - "left": 400.0, - "position": "absolute", - "top": 201.1428571428571, - "width": 600.0, - }, - }, - "type": "Plotly", - }, - { - "children": [], - "id": "YFf7M2BON", - "props": { - "frameBorder": 0, - "scrolling": "no", - "src": "https://plotly.com/~AdamKulidjian/3564/.embed?link=false", - "style": { - "height": 96.57142857142857, - "left": 400.0, - "position": "absolute", - "top": 301.71428571428567, - "width": 600.0, - }, - }, - "type": "Plotly", - }, - { - "children": [], - "id": "CARvApdzw", - "props": { - "frameBorder": 0, - "scrolling": "no", - "src": "https://plotly.com/~AdamKulidjian/3564/.embed?link=false", - "style": { - "height": 96.57142857142857, - "left": 400.0, - "position": "absolute", - "top": 402.2857142857142, - "width": 600.0, - }, - }, - "type": "Plotly", - }, - { - "children": [], - "id": "194ZxaSko", - "props": { - "frameBorder": 0, - "scrolling": "no", - "src": "https://plotly.com/~AdamKulidjian/3564/.embed?link=false", - "style": { - "height": 96.57142857142857, - "left": 400.0, - "position": "absolute", - "top": 502.85714285714283, - "width": 600.0, - }, - }, - "type": "Plotly", - }, - { - "children": [], - "id": "SOwRH1rLV", - "props": { - "frameBorder": 0, - "scrolling": "no", - "src": "https://plotly.com/~AdamKulidjian/3564/.embed?link=false", - "style": { - "height": 96.57142857142857, - "left": 400.0, - "position": "absolute", - "top": 603.4285714285713, - "width": 600.0, - }, - }, - "type": "Plotly", - }, - ], - "id": "S6VmZlI5Q", - "props": { - "style": {"backgroundColor": "#FFFFFF"}, - "transition": ["slide"], - }, - }, - ], - "version": "0.1.3", - } - } - - for k in ["version", "paragraphStyles", "slidePreviews"]: - self.assertEqual(my_pres["presentation"][k], exp_pres["presentation"][k]) - - self.assertEqual( - len(my_pres["presentation"]["slides"]), - len(exp_pres["presentation"]["slides"]), - ) - - for slide_idx in range(len(my_pres["presentation"]["slides"])): - childs = my_pres["presentation"]["slides"][slide_idx]["children"] - # transitions and background color - self.assertEqual( - my_pres["presentation"]["slides"][slide_idx]["props"], - exp_pres["presentation"]["slides"][slide_idx]["props"], - ) - for child_idx in range(len(childs)): - # check urls - if my_pres["presentation"]["slides"][slide_idx]["children"][child_idx][ - "type" - ] in ["Image", "Plotly"]: - self.assertEqual( - ( - my_pres["presentation"]["slides"][slide_idx]["children"][ - child_idx - ]["props"] - ), - ( - exp_pres["presentation"]["slides"][slide_idx]["children"][ - child_idx - ]["props"] - ), - ) - - # styles in children - self.assertEqual( - ( - my_pres["presentation"]["slides"][slide_idx]["children"][ - child_idx - ]["props"] - ), - ( - exp_pres["presentation"]["slides"][slide_idx]["children"][ - child_idx - ]["props"] - ), - ) diff --git a/packages/python/chart-studio/chart_studio/tests/utils.py b/packages/python/chart-studio/chart_studio/tests/utils.py deleted file mode 100644 index 8f58ed11d94..00000000000 --- a/packages/python/chart-studio/chart_studio/tests/utils.py +++ /dev/null @@ -1,51 +0,0 @@ -import copy -from unittest import TestCase - -from chart_studio import session, files, utils -from plotly.files import ensure_writable_plotly_dir - - -class PlotlyTestCase(TestCase): - - # parent test case to assist with clean up of local credentials/config - - def __init__(self, *args, **kwargs): - self._credentials = None - self._config = None - self._graph_reference = None - self._session = None - super(PlotlyTestCase, self).__init__(*args, **kwargs) - - @classmethod - def setUpClass(cls): - session._session = {"credentials": {}, "config": {}, "plot_options": {}} - - def setUp(self): - self.stash_session() - self.stash_files() - defaults = dict( - files.FILE_CONTENT[files.CREDENTIALS_FILE], - **files.FILE_CONTENT[files.CONFIG_FILE], - ) - session.sign_in(**defaults) - - def tearDown(self): - self.restore_files() - self.restore_session() - - def stash_files(self): - self._credentials = utils.load_json_dict(files.CREDENTIALS_FILE) - self._config = utils.load_json_dict(files.CONFIG_FILE) - - def restore_files(self): - if self._credentials and ensure_writable_plotly_dir(): - utils.save_json_dict(files.CREDENTIALS_FILE, self._credentials) - if self._config and ensure_writable_plotly_dir(): - utils.save_json_dict(files.CONFIG_FILE, self._config) - - def stash_session(self): - self._session = copy.deepcopy(session._session) - - def restore_session(self): - session._session.clear() # clear and update to preserve references. - session._session.update(self._session) diff --git a/packages/python/chart-studio/chart_studio/tools.py b/packages/python/chart-studio/chart_studio/tools.py deleted file mode 100644 index cc6546c9856..00000000000 --- a/packages/python/chart-studio/chart_studio/tools.py +++ /dev/null @@ -1,400 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -tools -===== - -Functions that USERS will possibly want access to. - -""" -from __future__ import absolute_import - -import urllib -import warnings - -import copy - -from _plotly_utils import optional_imports -import _plotly_utils.exceptions -from _plotly_utils.files import ensure_writable_plotly_dir - -from chart_studio import session, utils -from chart_studio.files import CONFIG_FILE, CREDENTIALS_FILE, FILE_CONTENT - -ipython_core_display = optional_imports.get_module("IPython.core.display") -ipython_display = optional_imports.get_module("IPython.display") - -sage_salvus = optional_imports.get_module("sage_salvus") - - -def get_config_defaults(): - """ - Convenience function to check current settings against defaults. - - Example: - - if plotly_domain != get_config_defaults()['plotly_domain']: - # do something - - """ - return dict(FILE_CONTENT[CONFIG_FILE]) # performs a shallow copy - - -def ensure_local_plotly_files(): - """Ensure that filesystem is setup/filled out in a valid way. - If the config or credential files aren't filled out, then write them - to the disk. - """ - if ensure_writable_plotly_dir(): - for fn in [CREDENTIALS_FILE, CONFIG_FILE]: - utils.ensure_file_exists(fn) - contents = utils.load_json_dict(fn) - contents_orig = contents.copy() - for key, val in list(FILE_CONTENT[fn].items()): - # TODO: removed type checking below, may want to revisit - if key not in contents: - contents[key] = val - contents_keys = list(contents.keys()) - for key in contents_keys: - if key not in FILE_CONTENT[fn]: - del contents[key] - # save only if contents has changed. - # This is to avoid .credentials or .config file to be overwritten randomly, - # which we constantly keep experiencing - # (sync issues? the file might be locked for writing by other process in file._permissions) - if contents_orig.keys() != contents.keys(): - utils.save_json_dict(fn, contents) - - else: - warnings.warn( - "Looks like you don't have 'read-write' permission to " - "your 'home' ('~') directory or to our '~/.plotly' " - "directory. That means plotly's python api can't setup " - "local configuration files. No problem though! You'll " - "just have to sign-in using 'plotly.plotly.sign_in()'. " - "For help with that: 'help(plotly.plotly.sign_in)'." - "\nQuestions? Visit https://support.plotly.com" - ) - - -### credentials tools ### - - -def set_credentials_file( - username=None, - api_key=None, - stream_ids=None, - proxy_username=None, - proxy_password=None, -): - """Set the keyword-value pairs in `~/.plotly_credentials`. - - :param (str) username: The username you'd use to sign in to Plotly - :param (str) api_key: The api key associated with above username - :param (list) stream_ids: Stream tokens for above credentials - :param (str) proxy_username: The un associated with with your Proxy - :param (str) proxy_password: The pw associated with your Proxy un - - """ - if not ensure_writable_plotly_dir(): - raise _plotly_utils.exceptions.PlotlyError( - "You don't have proper file permissions " "to run this function." - ) - ensure_local_plotly_files() # make sure what's there is OK - credentials = get_credentials_file() - if isinstance(username, str): - credentials["username"] = username - if isinstance(api_key, str): - credentials["api_key"] = api_key - if isinstance(proxy_username, str): - credentials["proxy_username"] = proxy_username - if isinstance(proxy_password, str): - credentials["proxy_password"] = proxy_password - if isinstance(stream_ids, (list, tuple)): - credentials["stream_ids"] = stream_ids - utils.save_json_dict(CREDENTIALS_FILE, credentials) - ensure_local_plotly_files() # make sure what we just put there is OK - - -def get_credentials_file(*args): - """Return specified args from `~/.plotly_credentials`. as dict. - - Returns all if no arguments are specified. - - Example: - get_credentials_file('username') - - """ - # Read credentials from file if possible - credentials = utils.load_json_dict(CREDENTIALS_FILE, *args) - if not credentials: - # Credentials could not be read, use defaults - credentials = copy.copy(FILE_CONTENT[CREDENTIALS_FILE]) - - return credentials - - -def reset_credentials_file(): - ensure_local_plotly_files() # make sure what's there is OK - utils.save_json_dict(CREDENTIALS_FILE, {}) - ensure_local_plotly_files() # put the defaults back - - -### config tools ### - - -def set_config_file( - plotly_domain=None, - plotly_streaming_domain=None, - plotly_api_domain=None, - plotly_ssl_verification=None, - plotly_proxy_authorization=None, - world_readable=None, - sharing=None, - auto_open=None, -): - """Set the keyword-value pairs in `~/.plotly/.config`. - - :param (str) plotly_domain: ex - https://plotly.com - :param (str) plotly_streaming_domain: ex - stream.plotly.com - :param (str) plotly_api_domain: ex - https://api.plotly.com - :param (bool) plotly_ssl_verification: True = verify, False = don't verify - :param (bool) plotly_proxy_authorization: True = use plotly proxy auth creds - :param (bool) world_readable: True = public, False = private - - """ - if not ensure_writable_plotly_dir(): - raise _plotly_utils.exceptions.PlotlyError( - "You don't have proper file permissions " "to run this function." - ) - ensure_local_plotly_files() # make sure what's there is OK - utils.validate_world_readable_and_sharing_settings( - {"sharing": sharing, "world_readable": world_readable} - ) - - settings = get_config_file() - if isinstance(plotly_domain, str): - settings["plotly_domain"] = plotly_domain - elif plotly_domain is not None: - raise TypeError("plotly_domain should be a string") - if isinstance(plotly_streaming_domain, str): - settings["plotly_streaming_domain"] = plotly_streaming_domain - elif plotly_streaming_domain is not None: - raise TypeError("plotly_streaming_domain should be a string") - if isinstance(plotly_api_domain, str): - settings["plotly_api_domain"] = plotly_api_domain - elif plotly_api_domain is not None: - raise TypeError("plotly_api_domain should be a string") - if isinstance(plotly_ssl_verification, (str, bool)): - settings["plotly_ssl_verification"] = plotly_ssl_verification - elif plotly_ssl_verification is not None: - raise TypeError("plotly_ssl_verification should be a boolean") - if isinstance(plotly_proxy_authorization, (str, bool)): - settings["plotly_proxy_authorization"] = plotly_proxy_authorization - elif plotly_proxy_authorization is not None: - raise TypeError("plotly_proxy_authorization should be a boolean") - if isinstance(auto_open, bool): - settings["auto_open"] = auto_open - elif auto_open is not None: - raise TypeError("auto_open should be a boolean") - - # validate plotly_domain and plotly_api_domain - utils.validate_plotly_domains( - {"plotly_domain": plotly_domain, "plotly_api_domain": plotly_api_domain} - ) - - if isinstance(world_readable, bool): - settings["world_readable"] = world_readable - settings.pop("sharing") - elif world_readable is not None: - raise TypeError("Input should be a boolean") - if isinstance(sharing, str): - settings["sharing"] = sharing - elif sharing is not None: - raise TypeError("sharing should be a string") - utils.set_sharing_and_world_readable(settings) - - utils.save_json_dict(CONFIG_FILE, settings) - ensure_local_plotly_files() # make sure what we just put there is OK - - -def get_config_file(*args): - """Return specified args from `~/.plotly/.config`. as tuple. - - Returns all if no arguments are specified. - - Example: - get_config_file('plotly_domain') - - """ - # Read config from file if possible - config = utils.load_json_dict(CONFIG_FILE, *args) - if not config: - # Config could not be read, use defaults - config = copy.copy(FILE_CONTENT[CONFIG_FILE]) - - return config - - -def reset_config_file(): - ensure_local_plotly_files() # make sure what's there is OK - f = open(CONFIG_FILE, "w") - f.close() - ensure_local_plotly_files() # put the defaults back - - -### embed tools ### -def _get_embed_url(file_owner_or_url, file_id=None): - plotly_rest_url = ( - session.get_session_config().get("plotly_domain") - or get_config_file()["plotly_domain"] - ) - if file_id is None: # assume we're using a url - url = file_owner_or_url - if url[: len(plotly_rest_url)] != plotly_rest_url: - raise _plotly_utils.exceptions.PlotlyError( - "Because you didn't supply a 'file_id' in the call, " - "we're assuming you're trying to snag a figure from a url. " - "You supplied the url, '{0}', we expected it to start with " - "'{1}'." - "\nRun help on this function for more information." - "".format(url, plotly_rest_url) - ) - urlsplit = urllib.parse.urlparse(url) - file_owner = urlsplit.path.split("/")[1].split("~")[1] - file_id = urlsplit.path.split("/")[2] - - # to check for share_key we check urlsplit.query - query_dict = urllib.parse.parse_qs(urlsplit.query) - if query_dict: - share_key = query_dict["share_key"][-1] - else: - share_key = "" - else: - file_owner = file_owner_or_url - share_key = "" - try: - test_if_int = int(file_id) - except ValueError: - raise _plotly_utils.exceptions.PlotlyError( - "The 'file_id' argument was not able to be converted into an " - "integer number. Make sure that the positional 'file_id' argument " - "is a number that can be converted into an integer or a string " - "that can be converted into an integer." - ) - if int(file_id) < 0: - raise _plotly_utils.exceptions.PlotlyError( - "The 'file_id' argument must be a non-negative number." - ) - - if share_key == "": - return "{plotly_rest_url}/~{file_owner}/{file_id}.embed".format( - plotly_rest_url=plotly_rest_url, file_owner=file_owner, file_id=file_id - ) - else: - return ( - "{plotly_rest_url}/~{file_owner}/" "{file_id}.embed?share_key={share_key}" - ).format( - plotly_rest_url=plotly_rest_url, - file_owner=file_owner, - file_id=file_id, - share_key=share_key, - ) - - -def get_embed(file_owner_or_url, file_id=None, width="100%", height=525): - """Returns HTML code to embed figure on a webpage as an " - ).format(embed_url=embed_url, iframe_height=height, iframe_width=width) - - -def embed(file_owner_or_url, file_id=None, width="100%", height=525): - """Embeds existing Plotly figure in IPython Notebook - - Plotly uniquely identifies figures with a 'file_owner'/'file_id' pair. - Since each file is given a corresponding unique url, you may also simply - pass a valid plotly url as the first argument. - - Note, if you're using a file_owner string as the first argument, you MUST - specify a `file_id` keyword argument. Else, if you're using a url string - as the first argument, you MUST NOT specify a `file_id` keyword argument, - or file_id must be set to Python's None value. - - Positional arguments: - file_owner_or_url (string) -- a valid plotly username OR a valid plotly url - - Keyword arguments: - file_id (default=None) -- an int or string that can be converted to int - if you're using a url, don't fill this in! - width (default="100%") -- an int or string corresp. to width of the figure - height (default="525") -- same as width but corresp. to the height of the - figure - - """ - try: - s = get_embed(file_owner_or_url, file_id=file_id, width=width, height=height) - - # see if we are in the SageMath Cloud - if sage_salvus: - return sage_salvus.html(s, hide=False) - except: - pass - if ipython_core_display: - if file_id: - plotly_domain = ( - session.get_session_config().get("plotly_domain") - or get_config_file()["plotly_domain"] - ) - url = "{plotly_domain}/~{un}/{fid}".format( - plotly_domain=plotly_domain, un=file_owner_or_url, fid=file_id - ) - else: - url = file_owner_or_url - - embed_url = _get_embed_url(url, file_id) - return ipython_display.IFrame(embed_url, width, height) - else: - if ( - get_config_defaults()["plotly_domain"] - != session.get_session_config()["plotly_domain"] - ): - feedback_contact = "Visit support.plotly.com" - else: - - # different domain likely means enterprise - feedback_contact = "Contact your On-Premise account executive" - - warnings.warn( - "Looks like you're not using IPython or Sage to embed this " - "plot. If you just want the *embed code*,\ntry using " - "`get_embed()` instead." - "\nQuestions? {}".format(feedback_contact) - ) diff --git a/packages/python/chart-studio/chart_studio/utils.py b/packages/python/chart-studio/chart_studio/utils.py deleted file mode 100644 index 62c747b1cb2..00000000000 --- a/packages/python/chart-studio/chart_studio/utils.py +++ /dev/null @@ -1,181 +0,0 @@ -""" -utils -===== - -Low-level functionality NOT intended for users to EVER use. - -""" -from __future__ import absolute_import - -import os.path -import re -import threading -import warnings - -import json as _json - -from _plotly_utils.exceptions import PlotlyError -from _plotly_utils.optional_imports import get_module - -# Optional imports, may be None for users that only use our core functionality. -numpy = get_module("numpy") -pandas = get_module("pandas") -sage_all = get_module("sage.all") - - -### incase people are using threading, we lock file reads -lock = threading.Lock() - - -http_msg = ( - "The plotly_domain and plotly_api_domain of your config file must start " - "with 'https', not 'http'. If you are not using On-Premise then run the " - "following code to ensure your plotly_domain and plotly_api_domain start " - "with 'https':\n\n\n" - "import plotly\n" - "plotly.tools.set_config_file(\n" - " plotly_domain='https://plotly.com',\n" - " plotly_api_domain='https://api.plotly.com'\n" - ")\n\n\n" - "If you are using On-Premise then you will need to use your company's " - "domain and api_domain urls:\n\n\n" - "import plotly\n" - "plotly.tools.set_config_file(\n" - " plotly_domain='https://plotly.your-company.com',\n" - " plotly_api_domain='https://plotly.your-company.com'\n" - ")\n\n\n" - "Make sure to replace `your-company.com` with the URL of your Plotly " - "On-Premise server.\nSee " - "https://plotly.com/python/getting-started/#special-instructions-for-plotly-onpremise-users " - "for more help with getting started with On-Premise." -) - - -### general file setup tools ### - - -def load_json_dict(filename, *args): - """Checks if file exists. Returns {} if something fails.""" - data = {} - if os.path.exists(filename): - lock.acquire() - with open(filename, "r") as f: - try: - data = _json.load(f) - if not isinstance(data, dict): - data = {} - except: - data = {} # TODO: issue a warning and bubble it up - lock.release() - if args: - return {key: data[key] for key in args if key in data} - return data - - -def save_json_dict(filename, json_dict): - """Save json to file. Error if path DNE, not a dict, or invalid json.""" - if isinstance(json_dict, dict): - # this will raise a TypeError if something goes wrong - json_string = _json.dumps(json_dict, indent=4) - lock.acquire() - with open(filename, "w") as f: - f.write(json_string) - lock.release() - else: - raise TypeError("json_dict was not a dictionary. not saving.") - - -def ensure_file_exists(filename): - """Given a valid filename, make sure it exists (will create if DNE).""" - if not os.path.exists(filename): - head, tail = os.path.split(filename) - ensure_dir_exists(head) - with open(filename, "w") as f: - pass # just create the file - - -def ensure_dir_exists(directory): - """Given a valid directory path, make sure it exists.""" - if dir: - if not os.path.isdir(directory): - os.makedirs(directory) - - -def get_first_duplicate(items): - seen = set() - for item in items: - if item not in seen: - seen.add(item) - else: - return item - return None - - -### source key -def is_source_key(key): - src_regex = re.compile(r".+src$") - if src_regex.match(key) is not None: - return True - else: - return False - - -### validation -def validate_world_readable_and_sharing_settings(option_set): - if ( - "world_readable" in option_set - and option_set["world_readable"] is True - and "sharing" in option_set - and option_set["sharing"] is not None - and option_set["sharing"] != "public" - ): - raise PlotlyError( - "Looks like you are setting your plot privacy to both " - "public and private.\n If you set world_readable as True, " - "sharing can only be set to 'public'" - ) - elif ( - "world_readable" in option_set - and option_set["world_readable"] is False - and "sharing" in option_set - and option_set["sharing"] == "public" - ): - raise PlotlyError( - "Looks like you are setting your plot privacy to both " - "public and private.\n If you set world_readable as " - "False, sharing can only be set to 'private' or 'secret'" - ) - elif "sharing" in option_set and option_set["sharing"] not in [ - "public", - "private", - "secret", - None, - ]: - raise PlotlyError( - "The 'sharing' argument only accepts one of the following " - "strings:\n'public' -- for public plots\n" - "'private' -- for private plots\n" - "'secret' -- for private plots that can be shared with a " - "secret url" - ) - - -def validate_plotly_domains(option_set): - domains_not_none = [] - for d in ["plotly_domain", "plotly_api_domain"]: - if d in option_set and option_set[d]: - domains_not_none.append(option_set[d]) - - if not all(d.lower().startswith("https") for d in domains_not_none): - warnings.warn(http_msg, category=UserWarning) - - -def set_sharing_and_world_readable(option_set): - if "world_readable" in option_set and "sharing" not in option_set: - option_set["sharing"] = "public" if option_set["world_readable"] else "private" - - elif "sharing" in option_set and "world_readable" not in option_set: - if option_set["sharing"] == "public": - option_set["world_readable"] = True - else: - option_set["world_readable"] = False diff --git a/packages/python/chart-studio/recipe/meta.yaml b/packages/python/chart-studio/recipe/meta.yaml deleted file mode 100644 index 33dbf0cbf03..00000000000 --- a/packages/python/chart-studio/recipe/meta.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{% set sdata = load_setup_py_data() %} - -package: - name: chart-studio - version: {{ sdata['version'] }} - -source: - path: .. - -build: - noarch: python - script: "{{ PYTHON }} -m pip install . --no-deps --ignore-installed --no-cache-dir -q" - -requirements: - build: - - python - - pip - run: - - python - {% for dep in sdata.get('install_requires',{}) %} - - {{ dep }} - {% endfor %} - -test: -# imports: -# - chart_studio - -about: - home: {{ sdata['url'] }} - summary: {{ sdata['description'] }} - license: {{ sdata['license'] }} - license_file: LICENSE.txt diff --git a/packages/python/chart-studio/setup.py b/packages/python/chart-studio/setup.py deleted file mode 100644 index 5342b1fa97f..00000000000 --- a/packages/python/chart-studio/setup.py +++ /dev/null @@ -1,46 +0,0 @@ -from setuptools import setup -import os - - -def readme(): - parent_dir = os.path.dirname(os.path.realpath(__file__)) - with open(os.path.join(parent_dir, "README.md")) as f: - return f.read() - - -setup( - name="chart-studio", - version="1.1.0", - author="Chris P", - author_email="chris@plot.ly", - maintainer="Jon Mease", - maintainer_email="jon@plot.ly", - url="https://plot.ly/python/", - project_urls={"Github": "https://github.com/plotly/plotly.py"}, - description="Utilities for interfacing with plotly's Chart Studio", - long_description=readme(), - long_description_content_type="text/markdown", - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Topic :: Scientific/Engineering :: Visualization", - ], - license="MIT", - packages=[ - "chart_studio", - "chart_studio.api", - "chart_studio.api.v2", - "chart_studio.dashboard_objs", - "chart_studio.grid_objs", - "chart_studio.plotly", - "chart_studio.plotly.chunked_requests", - "chart_studio.presentation_objs", - ], - install_requires=["plotly", "requests", "retrying>=1.3.3"], - zip_safe=False, -) diff --git a/packages/python/chart-studio/specs/gridspec.md b/packages/python/chart-studio/specs/gridspec.md deleted file mode 100644 index 3386a0714cd..00000000000 --- a/packages/python/chart-studio/specs/gridspec.md +++ /dev/null @@ -1,255 +0,0 @@ -### Creating a grid with `grid_objs` - -```python -from plotly.grid_objs import Column, Grid - -column_1 = Column([1, 2, 3], 'column 1') - -column_2 = Column(['a', 'b', datetime.datetime.now()], 'column 2') - -grid = Grid(column_1, column_2) - -unique_url = py.grid_ops.upload(grid, filename, world_readable=True) -``` - -### Updating grids - -Grids are identified with either `grid` or `grid_url`, or `filename` -`filename` will be unsupported in this version -```python - -rows = [[1, 'a'], [2, 'b']] - -grid = Grid(c1, c2) - -py.grid_ops.upload(grid, 'my file') - -# We recommend this call signature, since `row` gets appended to the grid -py.grid_ops.append_rows(rows, grid=grid) - -# But, these all do the same thing -py.grid_ops.append_rows(rows, grid_url="https://plot.ly/~chris/3") #shortcut -py.grid_ops.append_rows(rows, filename='my file') # currently unsupported. - # will do a get request behind - # the scenes to get the grid_id -``` - -Similarly for appending columns: -```python -from plotly.grid_objs import Column - -new_col = Column([1,2,3], 'new col name') - -# these are equivalent -py.grid_ops.append_columns([new_col], grid_url='https://plot.ly/~chris/3') -py.grid_ops.append_columns([new_col], filename='my file') # Currently unsupported - -# this, too: -grid = Grid(Column([1,2,3], 'first column name')) -py.grid_ops.upload(grid, 'my file') - -py.grid_ops.append_columns([new_col], grid=grid) # also implicitly adds new_col to grid - -grid[0].name # 'first column name' -grid[1].name # 'new col name' -``` - - -### On overwriting and duplicate file names and deletion - -Overwriting currently isn't possible. For now, -```python ->> py.grid_ops.upload(grid, 'my grid') -"PlotlyFileException: Yikes, a file already exists with this filename." -"You can delete that file with:" -"> py.grid_ops.delete('my grid')" -"Warning: If any graphs were made from this grid, the data in those graphs" -"will also be lost. If you make a new grid after you delete with the same filename, " -"the new grid's URL will also be different." -"That's confusing and you're probably not having a good time."" -"Questions? chris@plot.ly" -``` - -In the near future: -```python -# Updates the data, but not the column ids, of the grid. Referenced plots don't break. -# Behind the scenes, this: -# 1 - Makes a `GET` request to retrieve a {column_name: column_id} hash -# 2 - Makes a `PUT` request to update the data of the columns ->> py.grid_ops.upload('my grid') # overwrite defaults to True - -# Or, recieve an exception with: ->> py.grid_ops.upload(grid, 'my grid', overwrite=False) -"PLotlyFileException: Yikes! ..." -``` - -Deleting: - -``` -# throw good errors if none or more than 1 were specified -py.grid_ops.delete(filename=None, grid_url=None, grid=None, grid_id=None) -``` - -In the future, once we can delete Plots and Folders - -``` -py.file_ops.delete(file_path=None, fid=None, url=None) -``` - - -### Appearance and Access - -```python ->> print(Column([1,2,3], 'column 1')) - -``` - -```python ->> print(Grid(col1, col2)) -, ]> -``` - -```python ->> grid = Grid(col1, col2) ->> print(grid[0]) - -``` - -```python ->> grid = Grid(col1, col2) ->> print(grid.get_column('column 1')) - -``` - -### Creating a graph from a grid - -If you have the grid -```python ->> from plotly.grid_objs import Grid ->> grid = Grid(column_1, column_2) ->> grid.upload(grid, 'experimental data') - ->> fig_data = [Scatter(xsrc=grid[0], ysrc=grid[0])] ->> print(Scatter(xsrc=grid[0], ysrc=grid[1])) -[{"xsrc": "chris/8:3dkb", "ysrc": "chris/8:cbk8", "type": "scatter"}] ->> py.plot(fig_data) - ->> Scatter(x=[1,2,3], y=[2,1,2]) -"High five!" ->> Scatter(xsrc=[1,2,3], ysrc=[2,1,2]) -"PlotlyTypeException: xrc and ysrc must be type string or plotly.grid_obj.Column" ->> Scatter(xsrc=Column('myCol', [1,2,3]), ysrc=Column('otherCol', [2,1,2])) -"PlotlyFileException: you must upload a grid before you can reference it in plots" ->> Scatter(xsrc=localGrid[0], ysrc=localGrid[1]) -"PlotlyFileException: you must upload a grid before you can reference it in plots" ->> Scatter(x=grid[0], y=grid[1]) -"PlotlyTypeException: Yikes, column objects aren't currently supported here." -"x must be an array of strings, numbers, or datetimes." ->> print(Scatter(xsrc=grid[0], yscr=grid[1])) -{"xsrc": "chris/3:3dfbk", "ysrc": "chris/3:dk3c"} -``` - -Otherwise, download the grid (Not currently supported) -``` ->> grid = grid_ops.get(filename=None, grid_id=None, grid_url=None) -``` - -(Download should use same endpoint as `grid_url.json`, e.g. [https://plot.ly/~chris/142.json](https://plot.ly/~chris/142.json)) - -### Errors -```python ->> grid = Grid(column_1, column_2) ->> trace = Scatter(x=grid[0], y=grid[1]) -"PlotlyGridException: Grid must be uploaded to Plotly before figures can be created." -"Call `py.grid_ops.upload(grid)`" -``` - -```python ->> col1 = Column([], 'my column name') ->> col2 = Column([], 'my column name') ->> Grid(col1, col2) -"PlotlyGridException: Grid can't have duplicate column names" -``` - -```python ->> py.grid_ops.append_row(Row({'column 1': 1}), grid=grid) -"PlotlyGridException: Missing column entries, partial row update is not supported." -"Supply data for 'column 2' and try again." -``` - -Type checking boiler plate -```python ->> Column({'a': 'b'}, 'col1') -"PlotlyColumnException: Data argument must be an array of numbers, strings, Nones, or datetimes" -``` - -```python ->> Column([{'a': 'b'}], 'col1') -"PlotlyColumnException: Data values must be an array string, a number, Nones, or a datetime" -``` - -### Exceptions from Requests -A `PlotlyRequestError` that prints a useful error message from the server: -1. Print `response.detail` if provided (Plotly error message) -2. Otherwise, print `response.body` if the response is plain-text -3. Otherwise, print the original `requests.exceptions.HTTPError` error message. - -Also, store the status code. - - -### Adding metadata to grids - -```python -c1 = Column('first column', [1, 2, 3, 4]) -grid = Grid([c1]) -meta = {"settings":{"scope1":{"model":"Unicorn Finder","voltage":4}}} -py.grid_ops.upload( - grid, - unique_filename, - meta=meta, - auto_open=False) -``` - -```python -# First, create a grid -c1 = Column('first column', [1, 2, 3, 4]) -grid = Grid([c1]) -grid_url = py.grid_ops.upload(grid, unique_filename, auto_open=False) - -# Add some Metadata to that grid -meta = {"settings": {"scope1": {"model": "Unicorn Finder", "voltage": 4}}} -meta_url = py.meta_ops.upload( - meta, - grid_url=grid_url) -``` - -### Plotly File system - -```python - ->> py.file_ops.mkdirs('new folder in root') - ->> py.file_ops.mkdirs('make/each/of/these/folders') -``` - -Note that this is like `mkdir -p`. `mkdirs` is a Java convention. -We could also use our own, like: - -- `py.file_ops.create_folders('new/folders')` -- `py.file_ops.new_folders('new/folders')` - -These commands will: -- return status codes: `200` if nothing created, `201` if created -- raise exception if a file or folder already exists with that path - - -In the future, once we can delete Plots and Folders - -``` -py.file_ops.delete(file_path=None, fid=None, url=None) -``` - -Or, if we want to keep unix convention (do we?) -``` -py.file_ops.rm(file_path=None, fid=None, url=None) -``` diff --git a/packages/python/chart-studio/test_requirements/requirements_37.txt b/packages/python/chart-studio/test_requirements/requirements_37.txt deleted file mode 100644 index 32bba34afbc..00000000000 --- a/packages/python/chart-studio/test_requirements/requirements_37.txt +++ /dev/null @@ -1,11 +0,0 @@ -decorator==4.0.9 -nose==1.3.7 -requests==2.12.4 -pytz==2016.10 -retrying==1.3.3 -pytest==3.5.1 -pandas==0.23.2 -numpy==1.14.3 -anywidget -matplotlib==2.2.3 ---editable=./plotly diff --git a/packages/python/plotly-geo/CHANGELOG.md b/packages/python/plotly-geo/CHANGELOG.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly-geo/LICENSE.txt b/packages/python/plotly-geo/LICENSE.txt deleted file mode 100644 index 359e5d343ef..00000000000 --- a/packages/python/plotly-geo/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016-2019 Plotly, Inc - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/python/plotly-geo/README.md b/packages/python/plotly-geo/README.md deleted file mode 100644 index a23077d3510..00000000000 --- a/packages/python/plotly-geo/README.md +++ /dev/null @@ -1 +0,0 @@ -Package containing the geo shape files used by plotly.py \ No newline at end of file diff --git a/packages/python/plotly-geo/_plotly_geo/__init__.py b/packages/python/plotly-geo/_plotly_geo/__init__.py deleted file mode 100644 index bd6fe4ca347..00000000000 --- a/packages/python/plotly-geo/_plotly_geo/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# https://packaging.python.org/guides/packaging-namespace-packages/ -# pkgutil-style-namespace-packages -__path__ = __import__("pkgutil").extend_path(__path__, __name__) diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.dbf b/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.dbf deleted file mode 100644 index 1ef3b1499fe..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.dbf and /dev/null differ diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.shp b/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.shp deleted file mode 100644 index 45b3f041f32..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.shp and /dev/null differ diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.shx b/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.shx deleted file mode 100644 index 715e770c755..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_county_500k.shx and /dev/null differ diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.dbf b/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.dbf deleted file mode 100755 index c3e3b13e212..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.dbf and /dev/null differ diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.shp b/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.shp deleted file mode 100755 index f2a32cd6a2f..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.shp and /dev/null differ diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.shx b/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.shx deleted file mode 100755 index 95347eb02db..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/cb_2016_us_state_500k.shx and /dev/null differ diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.dbf b/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.dbf deleted file mode 100755 index 8397f541eca..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.dbf and /dev/null differ diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.shp b/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.shp deleted file mode 100755 index a1177e7b3ca..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.shp and /dev/null differ diff --git a/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.shx b/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.shx deleted file mode 100755 index 85675d9254e..00000000000 Binary files a/packages/python/plotly-geo/_plotly_geo/package_data/gz_2010_us_050_00_500k.shx and /dev/null differ diff --git a/packages/python/plotly-geo/recipe/meta.yaml b/packages/python/plotly-geo/recipe/meta.yaml deleted file mode 100644 index 6602d5baaf4..00000000000 --- a/packages/python/plotly-geo/recipe/meta.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{% set sdata = load_setup_py_data() %} - -package: - name: plotly-geo - version: {{ sdata['version'] }} - -source: - path: .. - -build: - noarch: python - script: "{{ PYTHON }} -m pip install . --no-deps --ignore-installed --no-cache-dir -q" - -requirements: - build: - - python - - pip - run: - - python - {% for dep in sdata.get('install_requires',{}) %} - - {{ dep }} - {% endfor %} - -test: - imports: - - _plotly_geo - -about: - home: {{ sdata['url'] }} - summary: {{ sdata['description'] }} - license: {{ sdata['license'] }} - license_file: LICENSE.txt diff --git a/packages/python/plotly-geo/setup.py b/packages/python/plotly-geo/setup.py deleted file mode 100644 index b267556ed30..00000000000 --- a/packages/python/plotly-geo/setup.py +++ /dev/null @@ -1,36 +0,0 @@ -from setuptools import setup -import os - - -def readme(): - parent_dir = os.path.dirname(os.path.realpath(__file__)) - with open(os.path.join(parent_dir, "README.md")) as f: - return f.read() - - -setup( - name="plotly-geo", - version="1.0.0", - author="Chris P", - author_email="chris@plot.ly", - maintainer="Jon Mease", - maintainer_email="jon@plot.ly", - url="https://plot.ly/python/", - project_urls={"Github": "https://github.com/plotly/plotly.py"}, - description="geo shape files for use with plotly.py", - long_description=readme(), - long_description_content_type="text/markdown", - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Topic :: Scientific/Engineering :: Visualization", - ], - license="MIT", - packages=["_plotly_geo"], - package_data={"_plotly_geo": ["package_data/*"]}, -) diff --git a/packages/python/plotly/LICENSE.txt b/packages/python/plotly/LICENSE.txt deleted file mode 100644 index 98b37b6f421..00000000000 --- a/packages/python/plotly/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016-2018 Plotly, Inc - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/python/plotly/MANIFEST.in b/packages/python/plotly/MANIFEST.in deleted file mode 100644 index b890876fc2c..00000000000 --- a/packages/python/plotly/MANIFEST.in +++ /dev/null @@ -1,7 +0,0 @@ -include LICENSE.txt -include README.md -include versioneer.py -include plotly/_version.py -include requires-install.txt -include requires-express.txt -include plotly/package_data/widgetbundle.js diff --git a/packages/python/plotly/README.md b/packages/python/plotly/README.md deleted file mode 120000 index 8a33348c7d8..00000000000 --- a/packages/python/plotly/README.md +++ /dev/null @@ -1 +0,0 @@ -../../../README.md \ No newline at end of file diff --git a/packages/python/plotly/_plotly_future_/__init__.py b/packages/python/plotly/_plotly_future_/__init__.py deleted file mode 100644 index 3fb7f72b1ca..00000000000 --- a/packages/python/plotly/_plotly_future_/__init__.py +++ /dev/null @@ -1,78 +0,0 @@ -import warnings -import functools - -# Initialize _future_flags with all future flags that are now always in -# effect. -_future_flags = { - "renderer_defaults", - "template_defaults", - "extract_chart_studio", - "remove_deprecations", - "v4_subplots", - "orca_defaults", - "timezones", - "trace_uids", -} - - -def _assert_plotly_not_imported(): - import sys - - if "plotly" in sys.modules: - raise ImportError( - """\ -The _plotly_future_ module must be imported before the plotly module""" - ) - - -warnings.filterwarnings( - "default", ".*?is deprecated, please use chart_studio*", DeprecationWarning -) - - -def _chart_studio_warning(submodule): - warnings.warn( - "The plotly.{submodule} module is deprecated, " - "please use chart_studio.{submodule} instead".format(submodule=submodule), - DeprecationWarning, - stacklevel=2, - ) - - -def _chart_studio_error(submodule): - raise ImportError( - """ -The plotly.{submodule} module is deprecated, -please install the chart-studio package and use the -chart_studio.{submodule} module instead. -""".format( - submodule=submodule - ) - ) - - -def _chart_studio_deprecation(fn): - - fn_name = fn.__name__ - fn_module = fn.__module__ - plotly_name = ".".join(["plotly"] + fn_module.split(".")[1:] + [fn_name]) - chart_studio_name = ".".join( - ["chart_studio"] + fn_module.split(".")[1:] + [fn_name] - ) - - msg = """\ -{plotly_name} is deprecated, please use {chart_studio_name}\ -""".format( - plotly_name=plotly_name, chart_studio_name=chart_studio_name - ) - - @functools.wraps(fn) - def wrapper(*args, **kwargs): - warnings.warn(msg, DeprecationWarning, stacklevel=2) - - return fn(*args, **kwargs) - - return wrapper - - -__all__ = ["_future_flags", "_chart_studio_error"] diff --git a/packages/python/plotly/_plotly_future_/extract_chart_studio.py b/packages/python/plotly/_plotly_future_/extract_chart_studio.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_future_/orca_defaults.py b/packages/python/plotly/_plotly_future_/orca_defaults.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_future_/remove_deprecations.py b/packages/python/plotly/_plotly_future_/remove_deprecations.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_future_/renderer_defaults.py b/packages/python/plotly/_plotly_future_/renderer_defaults.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_future_/template_defaults.py b/packages/python/plotly/_plotly_future_/template_defaults.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_future_/timezones.py b/packages/python/plotly/_plotly_future_/timezones.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_future_/trace_uids.py b/packages/python/plotly/_plotly_future_/trace_uids.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_future_/v4.py b/packages/python/plotly/_plotly_future_/v4.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_future_/v4_subplots.py b/packages/python/plotly/_plotly_future_/v4_subplots.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/_plotly_utils/tests/validators/__init__.py b/packages/python/plotly/_plotly_utils/tests/validators/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/_version.py b/packages/python/plotly/plotly/_version.py deleted file mode 100644 index 078d620a6e0..00000000000 --- a/packages/python/plotly/plotly/_version.py +++ /dev/null @@ -1,556 +0,0 @@ -# This file helps to compute a version number in source trees obtained from -# git-archive tarball (such as those provided by githubs download-from-tag -# feature). Distribution tarballs (built by setup.py sdist) and build -# directories (produced by setup.py build) will contain a much shorter file -# that just contains the computed version number. - -# This file is released into the public domain. Generated by -# versioneer-0.18 (https://github.com/warner/python-versioneer) - -"""Git implementation of _version.py.""" - -import errno -import os -import re -import subprocess -import sys - - -def get_keywords(): - """Get the keywords needed to look up the version information.""" - # these strings will be replaced by git during git-archive. - # setup.py/versioneer.py will grep for the variable names, so they must - # each be defined on a line of their own. _version.py will just call - # get_keywords(). - git_refnames = "$Format:%d$" - git_full = "$Format:%H$" - git_date = "$Format:%ci$" - keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} - return keywords - - -class VersioneerConfig: - """Container for Versioneer configuration parameters.""" - - -def get_config(): - """Create, populate and return the VersioneerConfig() object.""" - # these strings are filled in when 'setup.py versioneer' creates - # _version.py - cfg = VersioneerConfig() - cfg.VCS = "git" - cfg.style = "pep440" - cfg.tag_prefix = "v" - cfg.parentdir_prefix = "plotly-" - cfg.versionfile_source = "plotly/_version.py" - cfg.verbose = False - return cfg - - -class NotThisMethod(Exception): - """Exception raised if a method is not valid for the current scenario.""" - - -LONG_VERSION_PY = {} -HANDLERS = {} - - -def register_vcs_handler(vcs, method): # decorator - """Decorator to mark a method as the handler for a particular VCS.""" - - def decorate(f): - """Store f in HANDLERS[vcs][method].""" - if vcs not in HANDLERS: - HANDLERS[vcs] = {} - HANDLERS[vcs][method] = f - return f - - return decorate - - -def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None): - """Call the given command(s).""" - assert isinstance(commands, list) - p = None - for c in commands: - try: - dispcmd = str([c] + args) - # remember shell=False, so use git.cmd on windows, not just git - p = subprocess.Popen( - [c] + args, - cwd=cwd, - env=env, - stdout=subprocess.PIPE, - stderr=(subprocess.PIPE if hide_stderr else None), - ) - break - except EnvironmentError: - e = sys.exc_info()[1] - if e.errno == errno.ENOENT: - continue - if verbose: - print("unable to run %s" % dispcmd) - print(e) - return None, None - else: - if verbose: - print("unable to find command, tried %s" % (commands,)) - return None, None - stdout = p.communicate()[0].strip() - if sys.version_info[0] >= 3: - stdout = stdout.decode() - if p.returncode != 0: - if verbose: - print("unable to run %s (error)" % dispcmd) - print("stdout was %s" % stdout) - return None, p.returncode - return stdout, p.returncode - - -def versions_from_parentdir(parentdir_prefix, root, verbose): - """Try to determine the version from the parent directory name. - - Source tarballs conventionally unpack into a directory that includes both - the project name and a version string. We will also support searching up - two directory levels for an appropriately named parent directory - """ - rootdirs = [] - - for i in range(3): - dirname = os.path.basename(root) - if dirname.startswith(parentdir_prefix): - return { - "version": dirname[len(parentdir_prefix) :], - "full-revisionid": None, - "dirty": False, - "error": None, - "date": None, - } - else: - rootdirs.append(root) - root = os.path.dirname(root) # up a level - - if verbose: - print( - "Tried directories %s but none started with prefix %s" - % (str(rootdirs), parentdir_prefix) - ) - raise NotThisMethod("rootdir doesn't start with parentdir_prefix") - - -@register_vcs_handler("git", "get_keywords") -def git_get_keywords(versionfile_abs): - """Extract version information from the given file.""" - # the code embedded in _version.py can just fetch the value of these - # keywords. When used from setup.py, we don't want to import _version.py, - # so we do it with a regexp instead. This function is not used from - # _version.py. - keywords = {} - try: - f = open(versionfile_abs, "r") - for line in f.readlines(): - if line.strip().startswith("git_refnames ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["refnames"] = mo.group(1) - if line.strip().startswith("git_full ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["full"] = mo.group(1) - if line.strip().startswith("git_date ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["date"] = mo.group(1) - f.close() - except EnvironmentError: - pass - return keywords - - -@register_vcs_handler("git", "keywords") -def git_versions_from_keywords(keywords, tag_prefix, verbose): - """Get version information from git keywords.""" - if not keywords: - raise NotThisMethod("no keywords at all, weird") - date = keywords.get("date") - if date is not None: - # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant - # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 - # -like" string, which we must then edit to make compliant), because - # it's been around since git-1.5.3, and it's too difficult to - # discover which version we're using, or to work around using an - # older one. - date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - refnames = keywords["refnames"].strip() - if refnames.startswith("$Format"): - if verbose: - print("keywords are unexpanded, not using") - raise NotThisMethod("unexpanded keywords, not a git-archive tarball") - refs = set([r.strip() for r in refnames.strip("()").split(",")]) - # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of - # just "foo-1.0". If we see a "tag: " prefix, prefer those. - TAG = "tag: " - tags = set([r[len(TAG) :] for r in refs if r.startswith(TAG)]) - if not tags: - # Either we're using git < 1.8.3, or there really are no tags. We use - # a heuristic: assume all version tags have a digit. The old git %d - # expansion behaves like git log --decorate=short and strips out the - # refs/heads/ and refs/tags/ prefixes that would let us distinguish - # between branches and tags. By ignoring refnames without digits, we - # filter out many common branch names like "release" and - # "stabilization", as well as "HEAD" and "master". - tags = set([r for r in refs if re.search(r"\d", r)]) - if verbose: - print("discarding '%s', no digits" % ",".join(refs - tags)) - if verbose: - print("likely tags: %s" % ",".join(sorted(tags))) - for ref in sorted(tags): - # sorting will prefer e.g. "2.0" over "2.0rc1" - if ref.startswith(tag_prefix): - r = ref[len(tag_prefix) :] - if verbose: - print("picking %s" % r) - return { - "version": r, - "full-revisionid": keywords["full"].strip(), - "dirty": False, - "error": None, - "date": date, - } - # no suitable tags, so version is "0+unknown", but full hex is still there - if verbose: - print("no suitable tags, using unknown + full revision id") - return { - "version": "0+unknown", - "full-revisionid": keywords["full"].strip(), - "dirty": False, - "error": "no suitable tags", - "date": None, - } - - -@register_vcs_handler("git", "pieces_from_vcs") -def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): - """Get version from 'git describe' in the root of the source tree. - - This only gets called if the git-archive 'subst' keywords were *not* - expanded, and _version.py hasn't already been rewritten with a short - version string, meaning we're inside a checked out source tree. - """ - GITS = ["git"] - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - - out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True) - if rc != 0: - if verbose: - print("Directory %s not under git control" % root) - raise NotThisMethod("'git rev-parse --git-dir' returned error") - - # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] - # if there isn't one, this yields HEX[-dirty] (no NUM) - describe_out, rc = run_command( - GITS, - [ - "describe", - "--tags", - "--dirty", - "--always", - "--long", - "--match", - "%s*" % tag_prefix, - ], - cwd=root, - ) - # --long was added in git-1.5.5 - if describe_out is None: - raise NotThisMethod("'git describe' failed") - describe_out = describe_out.strip() - full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) - if full_out is None: - raise NotThisMethod("'git rev-parse' failed") - full_out = full_out.strip() - - pieces = {} - pieces["long"] = full_out - pieces["short"] = full_out[:7] # maybe improved later - pieces["error"] = None - - # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] - # TAG might have hyphens. - git_describe = describe_out - - # look for -dirty suffix - dirty = git_describe.endswith("-dirty") - pieces["dirty"] = dirty - if dirty: - git_describe = git_describe[: git_describe.rindex("-dirty")] - - # now we have TAG-NUM-gHEX or HEX - - if "-" in git_describe: - # TAG-NUM-gHEX - mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe) - if not mo: - # unparseable. Maybe git-describe is misbehaving? - pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out - return pieces - - # tag - full_tag = mo.group(1) - if not full_tag.startswith(tag_prefix): - if verbose: - fmt = "tag '%s' doesn't start with prefix '%s'" - print(fmt % (full_tag, tag_prefix)) - pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % ( - full_tag, - tag_prefix, - ) - return pieces - pieces["closest-tag"] = full_tag[len(tag_prefix) :] - - # distance: number of commits since tag - pieces["distance"] = int(mo.group(2)) - - # commit: short hex revision ID - pieces["short"] = mo.group(3) - - else: - # HEX: no tags - pieces["closest-tag"] = None - count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root) - pieces["distance"] = int(count_out) # total number of commits - - # commit date: see ISO-8601 comment in git_versions_from_keywords() - date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[ - 0 - ].strip() - pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - - return pieces - - -def plus_or_dot(pieces): - """Return a + if we don't already have one, else return a .""" - if "+" in pieces.get("closest-tag", ""): - return "." - return "+" - - -def render_pep440(pieces): - """Build up version string, with post-release "local version identifier". - - Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you - get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty - - Exceptions: - 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += plus_or_dot(pieces) - rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_pre(pieces): - """TAG[.post.devDISTANCE] -- No -dirty. - - Exceptions: - 1: no tags. 0.post.devDISTANCE - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += ".post.dev%d" % pieces["distance"] - else: - # exception #1 - rendered = "0.post.dev%d" % pieces["distance"] - return rendered - - -def render_pep440_post(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX] . - - The ".dev0" means dirty. Note that .dev0 sorts backwards - (a dirty tree will appear "older" than the corresponding clean one), - but you shouldn't be releasing software with -dirty anyways. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%s" % pieces["short"] - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += "+g%s" % pieces["short"] - return rendered - - -def render_pep440_old(pieces): - """TAG[.postDISTANCE[.dev0]] . - - The ".dev0" means dirty. - - Eexceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - return rendered - - -def render_git_describe(pieces): - """TAG[-DISTANCE-gHEX][-dirty]. - - Like 'git describe --tags --dirty --always'. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render_git_describe_long(pieces): - """TAG-DISTANCE-gHEX[-dirty]. - - Like 'git describe --tags --dirty --always -long'. - The distance/hash is unconditional. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render(pieces, style): - """Render the given version pieces into the requested style.""" - if pieces["error"]: - return { - "version": "unknown", - "full-revisionid": pieces.get("long"), - "dirty": None, - "error": pieces["error"], - "date": None, - } - - if not style or style == "default": - style = "pep440" # the default - - if style == "pep440": - rendered = render_pep440(pieces) - elif style == "pep440-pre": - rendered = render_pep440_pre(pieces) - elif style == "pep440-post": - rendered = render_pep440_post(pieces) - elif style == "pep440-old": - rendered = render_pep440_old(pieces) - elif style == "git-describe": - rendered = render_git_describe(pieces) - elif style == "git-describe-long": - rendered = render_git_describe_long(pieces) - else: - raise ValueError("unknown style '%s'" % style) - - return { - "version": rendered, - "full-revisionid": pieces["long"], - "dirty": pieces["dirty"], - "error": None, - "date": pieces.get("date"), - } - - -def get_versions(): - """Get version information or return default if unable to do so.""" - # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have - # __file__, we can work backwards from there to the root. Some - # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which - # case we can only use expanded keywords. - - cfg = get_config() - verbose = cfg.verbose - - try: - return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, verbose) - except NotThisMethod: - pass - - try: - root = os.path.realpath(__file__) - # versionfile_source is the relative path from the top of the source - # tree (where the .git directory might live) to this file. Invert - # this to find the root from __file__. - for i in cfg.versionfile_source.split("/"): - root = os.path.dirname(root) - except NameError: - return { - "version": "0+unknown", - "full-revisionid": None, - "dirty": None, - "error": "unable to find root of source tree", - "date": None, - } - - try: - pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) - return render(pieces, cfg.style) - except NotThisMethod: - pass - - try: - if cfg.parentdir_prefix: - return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) - except NotThisMethod: - pass - - return { - "version": "0+unknown", - "full-revisionid": None, - "dirty": None, - "error": "unable to compute version", - "date": None, - } diff --git a/packages/python/plotly/plotly/_widget_version.py b/packages/python/plotly/plotly/_widget_version.py deleted file mode 100644 index 207ab05785d..00000000000 --- a/packages/python/plotly/plotly/_widget_version.py +++ /dev/null @@ -1,5 +0,0 @@ -# This file is generated by the updateplotlywidgetversion setup.py command -# for automated dev builds -# -# It is edited by hand prior to official releases -__frontend_version__ = "^6.0.0" diff --git a/packages/python/plotly/plotly/api/__init__.py b/packages/python/plotly/plotly/api/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/api/utils.py b/packages/python/plotly/plotly/api/utils.py deleted file mode 100644 index 7a19c52c6f9..00000000000 --- a/packages/python/plotly/plotly/api/utils.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("api.utils") diff --git a/packages/python/plotly/plotly/api/v1.py b/packages/python/plotly/plotly/api/v1.py deleted file mode 100644 index 45256933e95..00000000000 --- a/packages/python/plotly/plotly/api/v1.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("api.v1") diff --git a/packages/python/plotly/plotly/api/v2.py b/packages/python/plotly/plotly/api/v2.py deleted file mode 100644 index 1bde2ce0946..00000000000 --- a/packages/python/plotly/plotly/api/v2.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("api.v2") diff --git a/packages/python/plotly/plotly/config.py b/packages/python/plotly/plotly/config.py deleted file mode 100644 index f611aa70c23..00000000000 --- a/packages/python/plotly/plotly/config.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("config") diff --git a/packages/python/plotly/plotly/dashboard_objs.py b/packages/python/plotly/plotly/dashboard_objs.py deleted file mode 100644 index 50aa0e47628..00000000000 --- a/packages/python/plotly/plotly/dashboard_objs.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("dashboard_objs") diff --git a/packages/python/plotly/plotly/grid_objs.py b/packages/python/plotly/plotly/grid_objs.py deleted file mode 100644 index c82c8957883..00000000000 --- a/packages/python/plotly/plotly/grid_objs.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("grid_objs") diff --git a/packages/python/plotly/plotly/offline/_plotlyjs_version.py b/packages/python/plotly/plotly/offline/_plotlyjs_version.py deleted file mode 100644 index b566cbba9ea..00000000000 --- a/packages/python/plotly/plotly/offline/_plotlyjs_version.py +++ /dev/null @@ -1,3 +0,0 @@ -# DO NOT EDIT -# This file is generated by the updatebundle setup.py command -__plotlyjs_version__ = "3.0.0" diff --git a/packages/python/plotly/plotly/plotly/__init__.py b/packages/python/plotly/plotly/plotly/__init__.py deleted file mode 100644 index 82e48bddb4f..00000000000 --- a/packages/python/plotly/plotly/plotly/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("plotly") diff --git a/packages/python/plotly/plotly/plotly/chunked_requests.py b/packages/python/plotly/plotly/plotly/chunked_requests.py deleted file mode 100644 index 5cab6418a2f..00000000000 --- a/packages/python/plotly/plotly/plotly/chunked_requests.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("plotly.chunked_requests") diff --git a/packages/python/plotly/plotly/presentation_objs.py b/packages/python/plotly/plotly/presentation_objs.py deleted file mode 100644 index 9822278c9e6..00000000000 --- a/packages/python/plotly/plotly/presentation_objs.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("presentation_objs") diff --git a/packages/python/plotly/plotly/session.py b/packages/python/plotly/plotly/session.py deleted file mode 100644 index 857bf31b30d..00000000000 --- a/packages/python/plotly/plotly/session.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("session") diff --git a/packages/python/plotly/plotly/tests/test_core/test_colors/__init__.py b/packages/python/plotly/plotly/tests/test_core/test_colors/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_widget_backend/__init__.py b/packages/python/plotly/plotly/tests/test_core/test_figure_widget_backend/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_core/test_optional_imports/__init__.py b/packages/python/plotly/plotly/tests/test_core/test_optional_imports/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_core/test_subplots/__init__.py b/packages/python/plotly/plotly/tests/test_core/test_subplots/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_core/test_update_objects/__init__.py b/packages/python/plotly/plotly/tests/test_core/test_update_objects/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/__init__.py b/packages/python/plotly/plotly/tests/test_optional/__init__.py deleted file mode 100644 index ad01b4a2866..00000000000 --- a/packages/python/plotly/plotly/tests/test_optional/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -try: - # Set matplotlib backend once here - import matplotlib - - matplotlib.use("Agg") -except: - pass diff --git a/packages/python/plotly/plotly/tests/test_optional/test_autoshapes/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_autoshapes/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/test_figure_factory/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_figure_factory/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/test_graph_objs/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_graph_objs/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/test_kaleido/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_kaleido/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/__init__.py deleted file mode 100644 index e1565c83f71..00000000000 --- a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -import warnings - - -def setup_package(): - warnings.filterwarnings("ignore") diff --git a/packages/python/plotly/plotly/tests/test_optional/test_offline/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_offline/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_px/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/test_subplots/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_subplots/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/test_tools/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_tools/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_optional/test_utils/__init__.py b/packages/python/plotly/plotly/tests/test_optional/test_utils/__init__.py deleted file mode 100644 index e1565c83f71..00000000000 --- a/packages/python/plotly/plotly/tests/test_optional/test_utils/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -import warnings - - -def setup_package(): - warnings.filterwarnings("ignore") diff --git a/packages/python/plotly/plotly/tests/test_orca/__init__.py b/packages/python/plotly/plotly/tests/test_orca/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/plotly/tests/test_orca/images/darwin/fig1.eps b/packages/python/plotly/plotly/tests/test_orca/images/darwin/fig1.eps deleted file mode 100644 index c5e0186fc62..00000000000 --- a/packages/python/plotly/plotly/tests/test_orca/images/darwin/fig1.eps +++ /dev/null @@ -1,2026 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%Produced by poppler pdftops version: 0.81.0 (http://poppler.freedesktop.org) -%%Creator: Chromium -%%LanguageLevel: 2 -%%DocumentSuppliedResources: (atend) -%%BoundingBox: 0 0 529 379 -%%HiResBoundingBox: 0 0 529 379 -%%DocumentSuppliedResources: (atend) -%%EndComments -%%BeginProlog -%%BeginResource: procset xpdf 3.00 0 -%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC -/xpdf 75 dict def xpdf begin -% PDF special state -/pdfDictSize 15 def -/pdfSetup { - /setpagedevice where { - pop 2 dict begin - /Policies 1 dict dup begin /PageSize 6 def end def - { /Duplex true def } if - currentdict end setpagedevice - } { - pop - } ifelse -} def -/pdfSetupPaper { - % Change paper size, but only if different from previous paper size otherwise - % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size - % so we use the same when checking if the size changes. - /setpagedevice where { - pop currentpagedevice - /PageSize known { - 2 copy - currentpagedevice /PageSize get aload pop - exch 4 1 roll - sub abs 5 gt - 3 1 roll - sub abs 5 gt - or - } { - true - } ifelse - { - 2 array astore - 2 dict begin - /PageSize exch def - /ImagingBBox null def - currentdict end - setpagedevice - } { - pop pop - } ifelse - } { - pop - } ifelse -} def -/pdfStartPage { - pdfDictSize dict begin - /pdfFillCS [] def - /pdfFillXform {} def - /pdfStrokeCS [] def - /pdfStrokeXform {} def - /pdfFill [0] def - /pdfStroke [0] def - /pdfFillOP false def - /pdfStrokeOP false def - /pdfLastFill false def - /pdfLastStroke false def - /pdfTextMat [1 0 0 1 0 0] def - /pdfFontSize 0 def - /pdfCharSpacing 0 def - /pdfTextRender 0 def - /pdfPatternCS false def - /pdfTextRise 0 def - /pdfWordSpacing 0 def - /pdfHorizScaling 1 def - /pdfTextClipPath [] def -} def -/pdfEndPage { end } def -% PDF color state -/cs { /pdfFillXform exch def dup /pdfFillCS exch def - setcolorspace } def -/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def - setcolorspace } def -/sc { pdfLastFill not { pdfFillCS setcolorspace } if - dup /pdfFill exch def aload pop pdfFillXform setcolor - /pdfLastFill true def /pdfLastStroke false def } def -/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if - dup /pdfStroke exch def aload pop pdfStrokeXform setcolor - /pdfLastStroke true def /pdfLastFill false def } def -/op { /pdfFillOP exch def - pdfLastFill { pdfFillOP setoverprint } if } def -/OP { /pdfStrokeOP exch def - pdfLastStroke { pdfStrokeOP setoverprint } if } def -/fCol { - pdfLastFill not { - pdfFillCS setcolorspace - pdfFill aload pop pdfFillXform setcolor - pdfFillOP setoverprint - /pdfLastFill true def /pdfLastStroke false def - } if -} def -/sCol { - pdfLastStroke not { - pdfStrokeCS setcolorspace - pdfStroke aload pop pdfStrokeXform setcolor - pdfStrokeOP setoverprint - /pdfLastStroke true def /pdfLastFill false def - } if -} def -% build a font -/pdfMakeFont { - 4 3 roll findfont - 4 2 roll matrix scale makefont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /Encoding exch def - currentdict - end - definefont pop -} def -/pdfMakeFont16 { - exch findfont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /WMode exch def - currentdict - end - definefont pop -} def -% graphics state operators -/q { gsave pdfDictSize dict begin } def -/Q { - end grestore - /pdfLastFill where { - pop - pdfLastFill { - pdfFillOP setoverprint - } { - pdfStrokeOP setoverprint - } ifelse - } if -} def -/cm { concat } def -/d { setdash } def -/i { setflat } def -/j { setlinejoin } def -/J { setlinecap } def -/M { setmiterlimit } def -/w { setlinewidth } def -% path segment operators -/m { moveto } def -/l { lineto } def -/c { curveto } def -/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } def -/h { closepath } def -% path painting operators -/S { sCol stroke } def -/Sf { fCol stroke } def -/f { fCol fill } def -/f* { fCol eofill } def -% clipping operators -/W { clip newpath } def -/W* { eoclip newpath } def -/Ws { strokepath clip newpath } def -% text state operators -/Tc { /pdfCharSpacing exch def } def -/Tf { dup /pdfFontSize exch def - dup pdfHorizScaling mul exch matrix scale - pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put - exch findfont exch makefont setfont } def -/Tr { /pdfTextRender exch def } def -/Tp { /pdfPatternCS exch def } def -/Ts { /pdfTextRise exch def } def -/Tw { /pdfWordSpacing exch def } def -/Tz { /pdfHorizScaling exch def } def -% text positioning operators -/Td { pdfTextMat transform moveto } def -/Tm { /pdfTextMat exch def } def -% text string operators -/xyshow where { - pop - /xyshow2 { - dup length array - 0 2 2 index length 1 sub { - 2 index 1 index 2 copy get 3 1 roll 1 add get - pdfTextMat dtransform - 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put - } for - exch pop - xyshow - } def -}{ - /xyshow2 { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval show moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval show moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/cshow where { - pop - /xycp { - 0 3 2 roll - { - pop pop currentpoint 3 2 roll - 1 string dup 0 4 3 roll put false charpath moveto - 2 copy get 2 index 2 index 1 add get - pdfTextMat dtransform rmoveto - 2 add - } exch cshow - pop pop - } def -}{ - /xycp { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval false charpath moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval false charpath moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/Tj { - fCol - 0 pdfTextRise pdfTextMat dtransform rmoveto - currentpoint 4 2 roll - pdfTextRender 1 and 0 eq { - 2 copy xyshow2 - } if - pdfTextRender 3 and dup 1 eq exch 2 eq or { - 3 index 3 index moveto - 2 copy - currentfont /FontType get 3 eq { fCol } { sCol } ifelse - xycp currentpoint stroke moveto - } if - pdfTextRender 4 and 0 ne { - 4 2 roll moveto xycp - /pdfTextClipPath [ pdfTextClipPath aload pop - {/moveto cvx} - {/lineto cvx} - {/curveto cvx} - {/closepath cvx} - pathforall ] def - currentpoint newpath moveto - } { - pop pop pop pop - } ifelse - 0 pdfTextRise neg pdfTextMat dtransform rmoveto -} def -/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0 - pdfTextMat dtransform rmoveto } def -/TJmV { 0.001 mul pdfFontSize mul neg 0 exch - pdfTextMat dtransform rmoveto } def -/Tclip { pdfTextClipPath cvx exec clip newpath - /pdfTextClipPath [] def } def -/Tclip* { pdfTextClipPath cvx exec eoclip newpath - /pdfTextClipPath [] def } def -% Level 2/3 image operators -/pdfImBuf 100 string def -/pdfImStr { - 2 copy exch length lt { - 2 copy get exch 1 add exch - } { - () - } ifelse -} def -/skipEOD { - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pdfIm { image skipEOD } def -/pdfImM { fCol imagemask skipEOD } def -/pr { 2 index 2 index 3 2 roll putinterval 4 add } def -/pdfImClip { - gsave - 0 2 4 index length 1 sub { - dup 4 index exch 2 copy - get 5 index div put - 1 add 3 index exch 2 copy - get 3 index div put - } for - pop pop rectclip -} def -/pdfImClipEnd { grestore } def -% shading operators -/colordelta { - false 0 1 3 index length 1 sub { - dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { - pop true - } if - } for - exch pop exch pop -} def -/funcCol { func n array astore } def -/funcSH { - dup 0 eq { - true - } { - dup 6 eq { - false - } { - 4 index 4 index funcCol dup - 6 index 4 index funcCol dup - 3 1 roll colordelta 3 1 roll - 5 index 5 index funcCol dup - 3 1 roll colordelta 3 1 roll - 6 index 8 index funcCol dup - 3 1 roll colordelta 3 1 roll - colordelta or or or - } ifelse - } ifelse - { - 1 add - 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch - 6 index 6 index 4 index 4 index 4 index funcSH - 2 index 6 index 6 index 4 index 4 index funcSH - 6 index 2 index 4 index 6 index 4 index funcSH - 5 3 roll 3 2 roll funcSH pop pop - } { - pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul - funcCol sc - dup 4 index exch mat transform m - 3 index 3 index mat transform l - 1 index 3 index mat transform l - mat transform l pop pop h f* - } ifelse -} def -/axialCol { - dup 0 lt { - pop t0 - } { - dup 1 gt { - pop t1 - } { - dt mul t0 add - } ifelse - } ifelse - func n array astore -} def -/axialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index axialCol 2 index axialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index axialSH - exch 3 2 roll axialSH - } { - pop 2 copy add 0.5 mul - axialCol sc - exch dup dx mul x0 add exch dy mul y0 add - 3 2 roll dup dx mul x0 add exch dy mul y0 add - dx abs dy abs ge { - 2 copy yMin sub dy mul dx div add yMin m - yMax sub dy mul dx div add yMax l - 2 copy yMax sub dy mul dx div add yMax l - yMin sub dy mul dx div add yMin l - h f* - } { - exch 2 copy xMin sub dx mul dy div add xMin exch m - xMax sub dx mul dy div add xMax exch l - exch 2 copy xMax sub dx mul dy div add xMax exch l - xMin sub dx mul dy div add xMin exch l - h f* - } ifelse - } ifelse -} def -/radialCol { - dup t0 lt { - pop t0 - } { - dup t1 gt { - pop t1 - } if - } ifelse - func n array astore -} def -/radialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index dt mul t0 add radialCol - 2 index dt mul t0 add radialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index radialSH - exch 3 2 roll radialSH - } { - pop 2 copy add 0.5 mul dt mul t0 add - radialCol sc - encl { - exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 0 360 arc h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 360 0 arcn h f - } { - 2 copy - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arcn - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arcn h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arc - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arc h f - } ifelse - } ifelse -} def -end -%%EndResource -%%EndProlog -%%BeginSetup -xpdf begin -%%EndSetup -pdfStartPage -%%EndPageSetup -gsave -[528.96 0 0 378.96 0 0] concat -/DeviceRGB setcolorspace -<< - /ImageType 1 - /Width 2204 - /Height 1579 - /ImageMatrix [2204 0 0 -1579 0 1579] - /BitsPerComponent 8 - /Decode [0 1 0 1 0 1] - /DataSource currentfile - /ASCII85Decode filter - /LZWDecode filter ->> -image -J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H ->q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA -=M/6)*KS9PE`kN%="Tc_Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"P -DKfeXi0S^6MAH=;fBr>1IXb_>kP+oS^^pnX!PjdJ%0OEX9GI`IODGpB_@VYP -$,Ve*/ITH-bV]jIOR,+@`"`Y"/@)9.f?D&^M-b]OrH -OmIKN1*g(o[EC"elTX_ZZ,c*_ECQL2A(g_UF= -ESQm4c#_\W:"=CBQYkQ&hA;15H/=mim3UV:)/KA -Qu3q"iY[\%M;jo*/W8X+c8CUAR-m+uj;AFrOlVo_9p=ZV:0!S@R;Q;sjr'1jRHBp? -D4B]+c?5]@RI5KqkSaqbU$.ptNMG_V:6h[?RVn[ol5G\ZWToqTXfLb+cF'e?RdRkm -ll-GRZ0[r4c*QdV:=Zc>Rr7&kmMh2J\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U -:DLk=S8TFgnf3]:amtt*/^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sj*caE0; -T'sA]r#ZHgnbf"4c1ClU:Y#.:T5WQ[rZ@3_q>R"imJHo*ch78:TC;^Xhuj(2:_!Ol -=:G;h6j\E@/d=Sn*moVE0nrNM)FIVD%H55cLJ[C[6eHetiWMQ';%=d<=H*pP6qN54/ga!=SJ1"9 -;2S4G.RdIA(#m/7Mc"@E7G,9iirieL;3!D$=Nq`D6tqWXXu8c%h&GC-EK3oA3_*<> -*TP(`O&>=/8(db^j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;-03"4P>Z9n -8_H6SjTM9A;N=XI=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_HjoiMf -;\!81=cG/u7*1iq/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>taF90r@pq -RT!C,:$KVWVc<)U;qcXql30JP<=Ya&>)cDE77jIY/uDV%SQ"g-;6!VkW`<6)0U497;8l(Y-qBbh-93!ENWt#)=5*U[ -lihsE7G$-7>\9M0#h#J*FnGiOg8"_b#qq#AaIC(ZW:th=kc)Pm002j>8i!7B*[qY1?e2?#/h]Z*m]Yg07cuD=,MFREmKLG:E*Xj7EN)A -0'6EnSTF4QdCNCSlKqH^7HqKeY4c2Vh0\UE -n\/)MqHmIoIIG/N^K9k&?ebO/n-/p/=:YI@>Rc8R7L?n50*Yh>*JYU(F7Oc;YY81U&?&S6-0ud>A)Im#hNUb"Ka&qdO -A))KnnchD$=Uu]e>`Fm:7S1^)0.(5bSWiW!;9E$;.V2keQ1Dptb?8a9A_atco*/XI -=cY=M>g8].7VU+MY;U"Jh4+"jER%_53bM^bSb'jHcWT^#BAEHXoEKln=qn*M" -7Z#Mr01KX2*M`7]Oj[E/8nhQ_V=_cqdopZbC#(qMo`h,>>)uQr>tq&.D\XnB]Ef37WLCYaEBp'/@c>7Y1Z?&c,_7`j=f04o%VS[8$EdFqf# -C2I7Y[J%VngKST6D;Dn7pBKU3>Eh7NE9n_RKrH>d*V^%]PB -hcoPuDr(B,p]giX>RuF*?4FaG7g\-Z08=H&*Q.Z-&`R%kMK)rS`V@Ikj'6M_ES`k! -q$/)(>`Y%g?;8Q;7k*P)YEj4c?-E&!1$2`eRWDePc2#C?k?RJIF5D>kq?K=M>n>6Gjo!/eo3Q@\H/CdJrSb)i9dJ@3Gl@!$Ap&<"bqd4:0 -IG_a4rs.N\?]Xc,?d8EH8*TtZYP*G&h>@5-nbunAqL;l>rVsq6s'P6oJ)C2(n,WMC -"TWKJ!3cn4n.>[T'`i7k!O*RFn0%ie,m&$7!jF6Xn1b#!2$7eX"0aojn3I1270IR$ -"L(T'n50?C<<[>E"gD89n6lMTAHm*f#-_qKn8S[eFU)l2#I&U]n::j!Ka;XS#dB9o -n<"#2PmMDt$*]s,n=^1CV$_1@$F$W>n?E?T[0pra$a@;PnA,Me`=-_-%'[tbnBh\! -eI?KN%C"XtnDOj2jUQ7o%^>=1nF7#Coac$;&$Z!CnGs1U"V>Y[&?uZUnIZ?f'bPF' -&[<>gnKAN",nb2H'!X#$nM(\32%ssi'BLV'sV$Z -nR31fAJT9"(9q]lnSo@"FVf%C(U8B)nUVN3Kc"fd(pT&;nW=\DPo4S0)6o_MnY$jU -V&F?Q)R6C_nZa#f[2X+r)mR'qn\H2"`>im>*3ma.n^/@3eK&Y_*O4E@n_kNDjW8F+ -*jP)RnaR\UocJ2L+0kbdnc9jg"X%gl+L2G!ne!$#'d7T8+gN+3nf]24,pI@Y,-idE -nhD@E2'[-%,I0HWnj+NV73lnF,dL,inkg\g<@)Zg-*gf&nmNk#AL;G3-F.J8no6$4 -FXM3T-aJ.Jnpr2EKd^tu.'eg\nrY@VPppaA.C,Knnt@NgV(-Mb.^H0+o!']#[4?:. -/$ci=o"ck4`@Q&O/@*MOo$K$EeLbgp/[F1ao&22VjXtT<0!ajso'n@goe1@]0=(O0 -o)UO$"YanI+2Rjso*c`"qB(n90pNo.V8m&MWe_1UB1fZP"@d -1`h4t+5t]fiVjeTKHK0[(IA$>!GW_8WYPX7)M)0PZYqbNA/6t.2BfLF@K%5IMBCg. -)^52%U"_;#2)-mO3O>851Dqsae/H1&)Ui@:+VGmUE"=,k(1>u@iE?Y`rY8hW4EJ\. -Jc6D"br_TW4$`E[iJ8*;H6;+u)fmGg;`?_coe:G#1;WZ+1P7PnKf^GI$3C,=TPbk1 -)?g0@&AU+Ei<04(+[T-P+5m\3Jc67s<$1'M#9j'\i34<^M@osh*.a=roD^QZR6Pdr -0;7GH_>YFJRl0/:+5qqd;nrebrY"id6$+X[_>Xug,TktD!Rurse;HWn-m.CZ"8!92 -+oW,tHlq'+u5uC)0(b:1-U7i.(>5oSaA= -mM93B3h\YXiSkf_NZB;B+!KlN2:3pQ78*5E*C6nOiPRWrYTMgj$.P5DeYcb3nR$F; -&E#K7p$YKAcWrFH.aoFZ_8.uPL*,BI'_N@SU&G^5M+BHL>8?s@ -<]ss/$3L>.'0q'iiF>L0Ys*5e@CBGk;_/qF:`@hu(j&>31j0,43Fhc.A2Z_EeFF^? --3doX'NEp)FWMEO5t3]EAbMZDU%f^1Qlk:W'XQR:iCXINKEegX89TDo[XVY+.n@E. -#F;S$Ztp?)i#)0[D6fEq+iA/JNY:=M'nF@IiAq9%1KOSXCY$C=pAnW$"&RKq6_XJq -+SHo9\/2U0EO'pn@I>5rmN)E.*YjhV_.4YHFq>DQ?IoStFR*mi")JcF<:rR"i=Z8: -rXp>^@e3_[f,Y#ipRumlV0[?bHFL#&pT]'([C%RK.niF@?3[#Kt(EBpgJn:AVPGD -L:D)Tpi2'KFbb3eLU_bfpjn5\Knsu1LptmmR#Qq^Q&0aRM7B+5pnT:?Mmr*p6-LAN[M^7L)51.RTmRI2n.f?X+(6i/=>g84r"*6g+2J![@Jtf0 -8T6ZU!^ZYoi&i*4)?jRC'#8`5_.F29j;K1SMqK,5q&tn]-'EMG'HiDM3A$F409\CV -PBfm6M"e^,^ -*MM1-fCBruef=eIMuh]S!QH.rc5\"a*5T=<@Bpp4_A]r&)'S,[JQ*\aGS+BP'nFjW -5ro=?"]lQ6V780Y=Sa,5&d2;N#!qkp@#c;ED@aSE)I[QWRXqCuKrB5J!4>3\+s5d^)$ulK^mYtl6*si`[!PNS]2>r)IJle[[Uj:]5b:VFgg%M[l\rGH[WCcJ[g&V\@[I)gPNH;Q+8uE\Jq*MH_7j\Tt5TI -]"=`Kql.1HXh-[*]6h6'>J[q`_n5fb]Xu:uqo?B3c+R?/]mJSK]A^Gmjh:QS^,tSh -qVN"[M.&:Y2#B6M2d]G`l*HI]TpS:-.4q*aW2t]I4s$^1"1P.e%IQdrAi@J4k)Vd -e9t'@>uB+b;q1_hacRnkqWFVQ\/JE!+5sdJ!WF#]E$+&5'g)a7_>Y7E"l6$Nr'cl_4FfjQuL']Elah8/^t"a$0f -_$*V7TA$uHd$A\6o>P>Xm6"dp+5p3^^/*Niaj5;[FELkg(.]$#bRrc9DZGbZFEAg -#U#W8";ZK]6uV^R`Vu5H^XNDCWP73>XHg5>Y%9j7R- --/\%,"8u\CJ#\F1odNo?Tnt/=:\k5%JtXR,eAZ.4H2ait^XY&=.8h9^J#5`_TnE:Z -,_)SC0VNjl-o@E\+7'\OrN`n^\=##E;dKCmF$JO,kPOB+s*h^ip`(%[$&-9*nJIcs -0,]biA+CKWQ;8rpb@U8_SCVU=S^1s@)BBTS8YsmMobsAnR$so'CULbPQH*^DgMHT\ -?,l>U^"i)NS.52tM8S@m\K"pO+-k+5F8:5*G>"XYlZIOp:=ij^g$X(]hB)-H_;t-3 -I3*l>S(['"qYf:nLX4lNq0fuLJ(NlZq#*q3tF^K"@EbhE?n0j7.EZD'h*+Q>8K`uKOYlhEMR@h7e+E<*Ck,1 -(Mau3gpkP;>cTB>ZsJ"3BVjD;PQsPkqE6t2N7'*O^b<\H) -&1ZZ@DPrh2q>Oog8,9;k:M,!,+eGT?ru]:iKqi?cG,;6T>3nW^!F'LP]5:d'jhGe? -2^Q:]>^&?SFBs)jgN;9GA`7i>2l5\a?<>,3I,=VJqWurR"p9EaGU8HMk;f@`aX-=4<2nrOE.Q'o_g.7drdfd=4_S#LKiF( -pO=jNG5]I&h04;1Hf'&H#D:u[IOC'6GlC3sj`u;fRqUkQq<;MY$^D)dHDgScC9?Va -s.lK*Bo5J(jgal[.HK-=J!$F2?3m3[)%$eFi;0qrX5RM%)'@qLH+Gge85bXs)--hj -:FB&q3L[k6BuU.%U^&$qOpbu7WU+65BJ;Id&FUSbi-1Nmk1I^H5o\(IBJmXd-HV'p -.A;EqKGO.Te]P?PNSmWu@9a\D=T985J:ER0^lY5ZHS;/dIQZhV&n4g56I+",4#io" -U6JH2ECMEHGc_`jXBUSpE\0`4_&),G?AsY[-:W7-)Il`^NKLY.7ekp^A!D%pOk)Ta -Gjuhbe%6\(aFB5Wrt#JnK,UPUBSr\DptmMp$q'qiPsID+KW$nZDmVk4k%"S7qskig -1&HeTp*L-fSgYeI/!4B#7Yp"E)PY'LW3mP:L\UFVV=CGoiVq/4`Ta0G$ -d/"nRBU'7*PZE]>H8.m&eJk9JG)oMs5`"?+i17b>:oXO28h!TK-=WJsV.'?Ga=r2I -KD[ur2IQEXb;aEl+o7$>(afA-s*uQ.RgXc?Ya-Ef([Wfp&#&FOgkbkM90"+2q/\.t -0`ICREa4tsklZg+4`*ok7U9o<'Qa83366kPf`>3u.o\QK^,fT22h -bmE*3s-Y]u_cV6sC?TMmTp@Tjf_ZOs/9R)\Q;5V+.ktUOc'Pb,d_si96"k*MUU6>Q -doq)qC2HtO[?e8Q/R"h>?CF5Y1;Y-A!a(V=JH$CYe:3@ka`$SV^`VR/S;EV@,/H,u -&>3mS^N?d;M_LJ&8PNNK1tjHt#e(VUpdeec5KApiO\6&9Lr,K,t9'4Q>dMK)ZI`L++N)7edE7c;"o=0Q+hpW3/aCc[fu -r([B-pf9es67X6\lFtA!F/d6>/0\M/e599TKog-nio9Bb+W#YO37]?)4X(;3r](0l -J=*`9BiU"CT$uq@-,O.ALS?+a7*n8M'\]#)k\@3a2;V<,R62jrA3Itf0@6.&Na^0E -LU:)&d@)FPke/"4FG?",qH$6LbmgOlesk-WG>DrO6)\oAUXYa!;]%S#2_&L_':@pV -'>bNOhl):E+qaX,0JQ7DcFB_o?TU%hbTLVuPQp4lMMmSk5OlBKLVm5XNXW_rkDeUG -&;FCn'q\QnV/)CN$S^^)f+,bk9G5/0>uP:X+Mb!i"%3(aj5#fsWAreZ)4+:jIIN.O -^AH?Jo1O#Y!PeCFrns:OK((r4m!$b`iLDi^E;h$!GaB*'S6(VgEsK/^mbT";Y$&2< -$QmjrJKOKjPR?_u5K0::W.c]mah.*cgZL>1CqZ4kf(rI$IJa_7>_cZKp+Or-c;aUZ -4:Dsd5K@RdShV+@nf?tS@GNQI>j!B]Tb+Bt*l]AK1*+oCYdK9ZR;u1=EB"-umtQ0R&hFol=iS7H5)8o?'\HE]CS.L)J$ZqA'08ei -Z2Xt]MQ0#q3]l4(QusSu-q)4r_?;%#jA/)V:W2Tr73#/n/5Wi=9gq`U79ik^Cfa&Q -=@J0O.%8f!#sK&E)AY#VL58gIQsd5@>EX=-Xt#dU/'Kn"73B+2KK8n:M]]M1:PuMm -]eWP?BKmb5Itho?0G(^jW-/C)+eE(g+T-/m]"a_[9Eh`Z"ZS%Tj)Yk9?CtD?`,mb% -0NeKs[#80$\MH(]S:;d=;oL#4`AE-:/:pDTJ]LN;85[W%r.dgjLe*J]8=YQ.XG]W[ -%7(?nUakk%)W!(:m6`$TKZ\?=H1lo,c%Jos"A-9lF6!H"9a"m0S#BC'PEi[WQ:\Vg -`lr;:fQFs7+XQo0VLude=lq5=_l&HcOs"3o3D>)[Ua7ui/mK+2MG(jI>\4_dk9:WRdXLh-;I$T(_4mOl)*-.9P -PGqN.ML_Q-!%0;M/-0`DP6aAlj'`T7G.Pfm1T3j:fSGBZ.Q1C>"NZp'jNYZt6qdXd -,LaQ3)@D4d<\g]CWY/(0=@AG,6S<=FYK3puR4H:E?6Nib/0%;,)I"89%a2fL(o4U` ->dR6gj%`;-cLuiQdDH:7UTEXQrWolqY[^4?=WS\8?rT?,c-\+RMM1MnX/,ImH2Ol"Qo?!N8qA66H]gAsqB`Ib:=TsmPikn+k0Zlcd9RG` -AJJ'Z(_7>od@D1QXW(-N*)Xs$;:sD`UqeS)D,2^F#Q&PNEPR6Ip;p9%c%.REj)lfU -pW8*^M\o6GOGg);IA_1j]qVDONA!W)qCaR9UXQ+`N%):FP>+DU-J2IRJk$Jf9-g5M -"Apg._>_U,Y#","`OL*(>m2^s*`NF[d>\rA/OEE"(Xu/H<)l=]9gMa,85tR?<1QW\ -X\1bb&#N;;eCqAt%0\O<1p[nC1ZVu-TqE9N`tL-m)2pDc$fmL4r61EP;F$$DPeiMc -8ZLZp0=*C!Z_IKr@%%US!3Lc%ITPa[81\)-DehPc`#G8o6bMgYG-Q^f8!a -&8anfm7(.T7Fque%`Xa8>=0*[ZjL/V-a -&p+53M5bl8KRg28_Rp"-G+8,L2f\fE-r$][U9WAuP'nIappM/=EgB?Tdi-Z+K`t1. -@(^gZ$WB4@H5TLmp4S+<"I]5>E)_\8>0>ciT(MLnUYJ#_5Z`Z1%*`ip/Y?)jTNUZT -g&7UJ.F6]'UfpKh>$\"/D5UQ_Cb#!!#4q'`GZ)]OX?_kU"Do:c(b(W9._0lh_g+'f -Y^s_u3]D#43W-cI-n\34/2(CLb%Pf<\O39BhRku`XWjhhMXs'-OIj!FP#3P]N?V;_ -Z)%$2c"O4a3/\*IABa%J:b4(Bh5FSg_V-l@gtg4[m@mkacC80+ -Lgl%6Mhh4N[/tTZADEu'YGDr7oiWE(&(uC -pg7n5hgFTo(1;]MW*eQ5>]t(k2l\/4Q -7XO6rfL."(PmY$Vd*Q&f\7QoRD3TWTA!SKA%O'n^,34b.A=c>&VF`k`7c_ihADU'l -mS@Bi4KCMJ.`8/FEj[C!"PoN0WB5@).p0T!=#L\oVb&*\YPsh[K<#GQq,A#Y9+tVYRE+VA#EPf:enGkk2&bnmRq0kDJ'/l -*6rB`/otYhFD"?kB3Bu4e(lC1.itEf=NjB+eVaV5Pi57V\bnDJK:/4hS7;0ueM'hX -]a[QHXd(K=ZXu;&9kqr<_Rhk:U(WV%4OiLJ?Y2o&`+EUKAhh#?mU.S27k=F9k&sCp -E9U,;l!A@DDO"pZQ6S;Ol(4>XY+'.>S8$(KX=W5K/p^b?Xlm2^RO!7a1j6m.T?jl& -h=c?/X-uD&d_pg/-I&\P$iIlqoZC>I4@95%ZE$((X@F97ecG8:g^$Arj#OMK_gKVT -*fuSRmpo9^_%*#/%[ZLqR-W%bCYl^>k"0?k^haLsC`^H0/p&a$l:_-)JqMQP1Q$@A,FAr]K^ -6lXX%.P5*_!,MhFV!?b0Z4"E6R/E&Rt_VZLge#]Ph2E1[J+CGNFCC^Y2t -"dqpNk7+7mCJ5kNL]*ECcq+U%2mq],ApYUT"3V$=bOKuOah0Ai]K*icAL].:o0'b`GDS2<([L/bK?EFUHH: -hc"Y^<-:u:F]sa(_XhYVD=O2C#9HHtFYfYck3jcb`W&]4LG, -A2Eii\rNoT`/2D/P>L[p1Y>Hm-'enrKZ%"JX06=&00L'\!^3&m-2VU,[iY3PZZR(, -FXL&\DfteuFsqQVGFs2*YBtK.Hl`#q_u70?7RNFFU%;jP7Pd&\BjS)hK0q]_La.&X -F'+p6%;r;26&^gL(Ol.j$e+)J^8.uK&g;57!#?YpMJ/oc.5S,L,i5ikmS;f>/2h&)@@1-19,sAVg -"]VPD6_qap\cNlH#)cu.C?l\33,bGe0:mPMTR9PR88#d:Do[6TaF'&j%%=T?%)/0F -_5n][T"^h\eGj4%l\,!&EFn$\$2=/Liq<3MejL:3,@Z>L-]1lme]%Z7lhXQno0`PS -V/5^LR"h7+3Kj$dfg@lTlQAb.l\8h/:AO6B$GuO%ag="Gr'0Io=6fdWlZqs_rnm-m -n*b`*;nP4DLC*D0::UM52QnFZb?A.F$JI) -(].WWs(*Q"la-3]<*t-P8+6)#\c.X*5LI?GqF"Zi9b8E316_ZCBRd9"&,+H5rpF^> -hJT7gjln%r=_uZ97AeUN[TdV"qh<&OF1PXpf6J:%R\mc*06c1Trrmkg?uWV<2CB)p -_rG`=lt/I.Oih2iffZuM0q6F#F#j0\K0>pVB_:"17[I&OeSB;rrEdNMZIj!egKhhJ -Fgp2pGFSR*#CFAHEB%307j"#9k&Pa[^358$e*;(%h1!CW[G1+nHen],LW/,4"tjQM]!Kr=_`';+>V7":<6nbtiW-i!fMTB#D\Iut=0JtAn%#b[^s#Phsk -+6F.TJ!u(;>aQY3q;cUhkG/`;SgX@+HQVG8q#a7;]F'+[Vtp+9TBS*1-S*@CNc,a^ -q1_D3j[cn2P2Y,FTb.;&;@B,X3&lDM5mdN^"pas/18]`Prc/m3q:]_YkGd2e;:L"; -8CCJ,g??*^]:VdFeC?9Je(!bN:/k3k7o7^#4\\o*[9ZX1f@BhN@+\L#M.5,g4cs:.a8$M`&)_a46-dk?oFbQA3>I/Z_9r9& -:^Wn64J1a2&:^).\c-@[BDKhe>IMgCOJ<&3`daH=U&JC1Vtj@ITB,L,5)+%s8j\/M -?n".SGM-dnTB9iUX;=ba]QBtV;=o4-kOJM5C"e$0W4nPIDlW)k]lC.=g=EO2le:dC -Y&%;@a0=p"50^J$]3`mnD,jo=\F*Rml+6<;^@Al)>Mf1in([jC_!kSN$,Z2e3Z`Vg -f-.SPS0gEoP[1Qi)Ln(UeGqD)ihSIXo=XlU+fH(R#XAGicq8eNU!?sjot>W6f+k&8 -ra(\1A__!bWJY;*QjIdjumhd>(1dJJFP[shP"l1k7mTC)RV+5cPds%iIi5PPB^?mG`& -`i8\tQk]\\A.=+:4pXFk,mH'`U.Lc/oKFJ8 -1*Zp@\ek^+p`TXc/4ID]$E)6ak0`+,LTp\Z_r6IuM28P]j/d'Y64>tH/*M6\jEdXZ -[g++NEEctI`PfUl3C\8n)FCZXMuaPUh3e3UJK5:'Jc6c/!/?6&/f0?U@h/aIG9>ik -64KfH3l]TQ9@6d*8/VOsTH"2eZ5,i!GnhKuA;QGS/k8JN+XH,rQ',$K8fUt=-KO6Y -PL=nV8f:&GjWp[ed[jE1R8kXJU0h,]7"^S`mQ;1eN?1H\E3`IVq,^ss+6)LSMO1+b -_]/k7m#)6i;'9 -KXa4B>jWd>VCfd7VCRb6(_qU`Iu/]'S^X;_L=*(.P`TE?`=Yr_J^QWY7Fs-DqI"$$ -\qj2uRjI9oRA/,=N)W]s!TbKk\iUj)RR!9rE#t?>E$>)u3V)0N\N/^/(L'dTZ -.RNFk%I:]PN-$=%Kin?oK)2fSMU,I.iuUcFVOPsMTKregru>bnCC;TV5NfRN#Z"Pi -Vb*ED*E0$R!B>Re5j(IFi9;0%,$YZ#fj&?iPruFBP1c9qB'dL,ZW;7r=o1X#XX0[J -[Z3j\CK5-:AZ`Ak^=ZX/ASgb1[C4ZANQTcgU(gR3+6.HMO7B5$?,O'nn182PaF4#:gWYPdqO7>CI/5;%`"8lu#WR@"DQ12WB4Ghd.-#,-1Vo%(^ -$fP>FL@Eb7_`3,U2LH[(nKoR#fUijeS5kI:AhD!SY(suBjusRS1h5tu,S0FZ0[^[- -)._B-LrV(/"Ya($o51!o$)%iAoJF-^4@;h2kTZ^FPQo&';dI4Y*ln'!'A!+<]I[D^ -.FBdjo?P&$fnkpTN,*P!_e6) -^3A`7hpcFdE#o1upa67'g`M2gSe],t,%>r[A6]Z8SgeoN']OC[:V>k`.DjU1f-49H -M&HU+TnZjU90_][I2`mcdJgcX%L0@\[C -MuZ.pKOg]92S@ZS#'/b;S'O-jL>R@XIeA/tep?L]leQK_p"mO;3j3,]h4M&tT%2Ql -B5R%iEeiO#Y:M-N@Om*/D2YhRKS@d&Qi6fqo)bKtar*jt((D&?[K<"tp//@l_I6\[ -/EK>3P]El.RQ1M=gZ8KE*90a:,YbH['G-Z]_A4&G3-$-ZW!uMdjJS>YYpXE!DHlg2pq]E]M^D#XTT98^D48/FK5NmM;V=abbeb\01ln+ZJ9/^+N -*((jM'ro@GhIsOi_RQUO\\!&M:o!N3>?pS;O$I@k.,Lb7o__0USOP6r-ot8Dkp@QHi;$)?E[T:_(^cg`-ZE -+UJ#I:f9PsRe]c^q2eeb&75W<>m?C##-PWC:ickB&OR707hh(Y'[][,WZLo><_IF58uZ". -:@9VUrYV=U+5pZV]LHK -'9P-cZ1/o5miR\`+0kP^dK2+blQD>u+OUcD&ecEd(EnCuU$VD^NL$j8*?nB3$gQ=, -6';mr^gZ4$'EFa9d/^cZ!h&!Q:=/kF5o^&;P)a0UN51>?E3Td:N;p_mSqeAiMW#_W -1C]/0)XngY70%L^73i#m^M)+/LftDo4q_I>'8NTgM86akA9g\j]oZ#.;KjWX,9QKg -+B#lq'#Q75a"-`(/4gX.EmlU9]7(([/kJL*gB9Z5)YhF"$'N7G"=%.c: -^.I7-:2h2(RU&`"GsRN*.ZYoB=#(J7AWn7PB<gZn:t4XVcL)YW+YRQNr5t2G%#ed4^t0;N -rWfQ!LJ7]+OX'>H;pWtT_0cg?C`?f-h+I%fJ^>9;!:XtG#Q'5>cQWWpL3-C!['r+r4Vco@d>0j.e_9*Y6 -)VHs=AYe+KTaa+;;"8H1:F.]o![O1NL^fE#Tsu#mb5TtN!ALs4&kI0[+JVSjqX5.n -%)M.4'6e1d%qITQA(KIH(>j"1j)1$rD0GAd(@uHFpMZAoC$e'#!k/<<-lcb8%J"?5 -L#*AAa!r5tHd-+#Zb^;*HC8`JgigPnLM9hiNE0\Vk-\'.&AM46_H^huDoa-#;Bk_r -MG46(4/Y;Djp:K1j_Np8N<*T,1tWaBoZYGq5BflO(?'L=kBM19GaFJ9f95"bJU*TO -H.S[7(Sc:D`l?BL\'X"MibKcu@*N*qFWhAnQ,Lq(V&8qTWbo>?JtgPIb)]EY:(,_# -9Po5I]Ve061KUH%O*b7Y`a#uU@&,Wo86Gk0'5/2t6Y&8M[`BC'D%'KqIgjAB\0H89 --$`T?K%MT+#qpl)2hRJZK@iDA(/E?!OSasa-"rci@CXVuAuNae&;R!P,+OB]Pb6T? -esLA)#h;KI.L-E/edqS'=5)gIGD%CJ[qgBTf8Z0PNRAV^1+4*;cE2?VXUmZ_b_5\C -ekNIk;JaqJbacqYq.R&rYmV)(d$B?_06O7@-kf%-']CQ%hLb%U+tUuFbuXcTFCn>5 -)"6PspMC47qBhFS<3XB5Gpp+g`Kch6Q+5/*fjgJHr#F@q>gG^h1Xn&W!arG-+ -G_-]58keo-\MJBH2,\SNrc8EY`+5=\XWtm!'pBdVYn4a>aL-;#T@meJq.ZK?#G>.^ -T:-:a)AAfJ(SQ^_U%VZUK"gD,q]_]>]r!? -6l"M%XIVo7@sp4LS29?)bJ`(9k1Nl[_/D95kW"k@,.Gi@V.kB+28;%X)N@c4%qP<. -Jr$(c`L@>lFckQ?.MtiPjfg1$WnOGPqa%Sn5I?nHd@35*)cO.K=1+N$9$KK7HOX\7 -(upZ!PHKn@OJTEU%)_]pnK* -)tUgKpV2;-AVQFC8`@HO<4@$YA?D8+g%,8=ja@_j6'1YF-uu=&aRRd%J5TA.3`/K- -TG6Q/r"fIMWD*&5dgQP-(hA45!4F:bM@k2\4?L:[>"gB]<3)a4BBai/pI;iPY.e)/ -`$aBT]B?mjK?0ROV1pu -;1E#cK*')qLQ-TotUed_.Ap`/n';nF41,J\Oitb:I]@TQcgP1 -=]9@.)qLLEriJV&i%.)BX9Ln0iN>rCGD -3R`E2h0n,8K+6WWkMDcqhVIWA[K5(&UVJ5nE&UiTS@6UR/BaUi(C+<*W7%EN0VIs[gJ^jC2/qas;DtY$=&'M&>F;t] -Au4>_BAPgfhB$UtRLA7AGNYQEkMC[T7)]SYb[##QeO4rW>D3Vc!t]pI'Bd&n/-/[O -B1WsKlGA%4]5)h7%*QR-60FNUU:)Sccfb[1pTVW@h-8fS@:sPPr_F3HVKUTAPo6HJ -BKM/Y-\Z[!b%*\Wn(qpMrc.EL#?a7dnD=cH*u"0<:A^N^blNZYg+_.eoUf8I&`T/J -mg?gO`gYH*8N@?8^HtafbO2n1]%:!!GP_2qp!R1_PR8IW*KIVWpIeq'g=88cr$LZ5 -aqC\abq'47)YCMn!VOF0n3VLp]&XqUl,Nok%Jk,29^ -EPa4[SMk:$Ll&#[PGgZ;RGn3q -#=$T[-i.eBs&^3^lpQL)ZF>=q>L3'(l2LX15MsfMr-gpTO\"Pr=Yu^I.@!NeP1ark -@540Dk*&rThJkQH:?Rhoo_sD-S10;pC*adV8#9*tP_sT9T1u7`l;_#I?E%&-:#l]BsV!F(;"^tiG?&/mWTVHhX,U"hX;9(eb9)o_-aF6*%ha2M8Wlm -ptSn3)3;mMEg[?E:G8!W>3K,Ep4#B%d:i0@>rJe3e*U;S3%8!d/j5d)+XM\EMFr:V\V_+FC,kS0p>#nTB@r%oqFo)-OQQ# -i/3$!80SI-Jqs./%NjbnBRc6*@MC[CUl$:O*@A>rGat]-n9N#ooY3(R1D>YjZVrY9 -1eb5LcS\G'AD]8i1N__<:33f.4AM*imleuQjSqG@1[PE4:m;\&6nU89(Ih9/FWX.P -1mKF\;REhb9N*du2bm;Yofl8P2&/VZ<4+SCNB8M/^@7ZtU&K"ua8*)ITB;8L<*FZc!bd.0;>`3al_.,mBghRBo]HrEPWkjCOQ@CKCjZ.s[2M=OW563BaU$@e0= -$3!EuVti4p>=Km8CR1;9Sq!>EFbHd+L$GMRJVc[NHIrYL@LGeQ+tjEWpjQf`S-GG")F5*r/1T4c:FH6&Mi^N:D9 -n%Ni]184\Y_hJ'#>X"\Gd/2giJ6?Ld-iOa.O^U'Z)-F=1NVss[\34b)n59Eur[ZEQ -]b"jk%Ln"8H(Mq-HB:T&5r3E!Og6qbim`I^1b:r@!07[?.\I0HNI:4F`0[8H5=c"%#OU$-88DkE*UhNPk[3$fV(E``_:`K?/+pna\hQ -*1rH+6%-/NcE/5C4G0AZ@)'Md#=nVZKLl=FM3*=BK$aN5U"*D>_>_42%)8/4^*h,a -UG652a-`&7@n`;Y1?N]$RM.Smbk\&CV@;(G'4u)U\[aY2o\Z/PL2fsKaJN:bru;To -AdTAW,,]8G(Ld;I/6%uZJ=?pM!X36gpZ!B#JHJG0N%,A.DB;=C]F\$`K[>;L1.9W* -NC1L%*F\A#hQ[h@$D`-3e`Sr+ocI,q]D&g)!YX$FfOd&gSHND;kBu:XKFP -+*dgOPK[LH0uf'L"[@U&g\$$[ -#YP904?pdtfbOl^?T)nn3tH^YZ4s%>V01g#CpfU!':nWRp+ekP30omDl@BK9/DC;H -.7iB/Hk8`8,QW%6+6(L(5!_@s`urU-oqZel-uAU?jVE11P0@/gmo1ns;RmN3j]m/! -Ec,I7\^s=5h)h:T/g],](M<&?]=E-'p#!CuL@H5HDf0*MPSsUnIuH*(5q"Fh%&T6'qs -*!`Eb-%%%s[#VUSq*SG!/>KCkhS.U1s']^aM6Jlpak%IZASf&JZZ^N/Y&cbCQKTuI(^cY]( -gfphqN$T]NY["6!H854c7ICrtjok-]m!Xf9q6r6E*7LI"IWs(_k<.li#GH6'M:$W. -8*M$AV&H1/LEO17(O\ZM%BcIP>kki?MeH#mOoJ'qa>eX\cT/5?n&AI`W"Nf"4ZBYG -JC(63+7LGYM2NR[;(TCg"4cdZrg2MYYl(<%Q&`-Bh-2qE_@_]>:P>MVI`-jO&\tHR -g.'cTe`mhbZm9@dJ^?8c+SQos)o$\Rs3LN8VrtdldsA2plMYq/p)^KiqG1hmICH][ -*p;@+^NhLOd->u)Ae"<>Mt&td\dlXX1V]CR,$9$$5XWVF>]`[5?%8:$eN(V#XFU+^mk\GU^OuF%)Anl5]dLOoFJb@&A]%m_'BYR -&QGSG]bc!$L>[Qokn41lYd#.cKo*R\Wg1E9;$)k++ZY9'JSGm'Xe]dp5k5l=$g9=*'5RqR;Hq>;5d'L`R/OGZJ\^ca7<9<2b!T[SZX\9-\Q$ -7\i5fZopmkC<"2/`menA`+_^EE5rZ4a!>]G1ioA5b,j;V.sP2!H#&d'r\pO-/)c70 -N-e("C-J(P"C$/_o8&2!E_$RYa:eZ1LfCL`B0RX;+L:R7*!XGOLnL3!XniD1A/9pA -d((XYK9F,U&pL6@0CXj"ad/\"GnblDarf(aeY?H[$aM(R`WdC -W[*s'oUj8/TZRtBas<^@]1Igr7BQKSY:Eep>`5X\(SQXm-Za`#ds.u\!D:bML`@M; -pd>,a^aZpA&;(%>r09`N[$r>?,cXM84JPQ$.D>NI8Bb&j(smE!X$X0]3(o./akXnXeAo\laNSbJ9SCO3Ye<_8bfnS]biI'noZtF2IB^'R -6!U>n48T6s(l$eFO+P]V<3l`h>K")d*3m,AM7:O4g.=8&!l8_2Ejr:[J?\mY.q?3/ -@4dZ/cq[Hu'hK=g3qKtR]?7c\bL1hZe0@OIJ4pZo0Q]a[*9F(4bKQdPcP5roXRja` -oM7<5:B^C;FSF+7ps53#Y/9)&$!/K>odoIfb=$Oi\0rpO*B<;>(0%t+8m"^=Bd=<& -71b0NI"RP(A3k:_8qSh4V$j*RCU>lf:SePiGj;Y@dP:(kL-rNURi=ZC*Z/#^62;eC -$Cj&rdLr>&eK`L2,go[=dUaboK1ZWj -b/o&\]aWr#m-Z\3\#5%3YCVOtWP#RK=?_[>-$+1W0dOpCqQX-m(/l,InV`LnNA1"P -;KY$k.-dYuCmCr/`DmSp`(j5O"=+OI0jKp]k[;%q3'hp,/c:E'Z743R,#jgNe>5^c -X\%$M9UT0VeE'HTohX*A:t63L+iL<5Ct-:TfJO5ZA=>dK[B/PGfNuj_5>&Kc<$GD,1N^JiY6A#_ -#P_SX!np%Y(DV8eekt^3eP"L_F4XDc=(QL*D0:a?En?S%f;3fF[0$pN5uG8P2U)[W)noCm -OHg2A-Tji-FZrI3'VF;LWNoVor-kEqYQYI97Hun7lEaV*j]@/,f6s7BFe@@KTNUoX -g!-8F25AkoUtSc'ejVVV6btT2%7=&YKb\L'OBf-bX@>QA"]Qciq>$CX0W2OfWN,q5 ->!N4B&;;)UKsTip')((-Z`e)YS:hY]?+ZLDJuk6%"f.1%-q62S6E.8;2c[[VQqOM( -?R\u*]G!\3V.:<8OB]Ps=q/X.*R!.ObhTVN>f2ubS^6*qd+oGah'1h/6?B!ogSC*J -2[T$Xo7"1Hs%VNp?(s_/EJTud3`@&d7+o_:+=aFk>nuAm0`r"O(#tt;4V=sh26G<` -ED<+3#:l([RKjr[JSk#r86''Sr?m@!,`_ZJCkbMX>kj9Wkjcg"d0W)O57TM,(@S:9/uuM -c0U!f+DDc/"P#mVb(^DBCP&4dn)*7>P5@Wi[,]\)1eY&V[k#W)9X(oUOVV(FZ'6KP -lN=KtnhBYh]G;+rXncE0qI138i[,f-/g6W8+(A7siasOsFsiE0Od/XO@\T$SdYlSK -F2&<*-X^0]h-",Vs-p>kQ>hD_)LhkkRE5ea(g/(#A[K0LJ]0ck#5^\/[O>Y%9?DO4 -Y\7W#X%pUV_[NjkQ9'"8jSdn>& -p.scS:urHiM5s(-WHV.X<0_kN[)ioe!]eTu[j0>8@jUPr3@)B_7]es""JKTg>/M,s -<5pn$X,QGk%KIRHb2js]Od6Y7Uo6ONLDA6C"Z9GMW(!g8k9Wts'(bf5VaCufX*N5Q@Bdjm3Y+t0GUh@-4 -l;je(m\9!$W9T\JlD3OHm?>Le`LAcfgMHnU6ci.r!?B*8#T,uIIZ(Ht7UHht=8aYN -W9WH(Wp>c,l[Y$U-te5W$CpT[Q6pEVShY$cM%VfJ"W[Rt+S6Hp=gYWJNfL#PAu+dJ -a6],4CnkJ+B$9P\bjiRmpbdKX)B+lE,*p\($T)1UO4"s(?`:M##3fUKf9&Z\jaV0AEe-V6FA>FgOd7AA8cAmNO%HO/eki_\#klH -D.I$_LdiK"`+B)'XdZ`XXPp6U)^b)<[,Fi(UDlKo;D7(jS^AqYK^KY%'3g(kiNC.W8A.lTQa -YaKZ9M"X&iG$g.%Ud'*RN;2"apudZp'fnX*C5&!O`2?D[;21BM6P<*J],H-@a%Re8 -9p,_90cc2.CI/,lMnTYJ4dETS>8Q(;hp&PWn^G&Z[>Tr1oYWjM_]FB:ma1:;blMFIniDC -]T:m]P'4$3T!*?.;'V\hkS+0.o54?=f7&gNejk+ZpS>Z5j7iEcZb0(s -&tHPj1fJuc2Y<@7&(:D@o`%GSrC?S8-gCYdLPL*Ls/5_n\,63Gr;YCIs6'C]n:3Tn -:cK^9%0qPQ@8OIE2B<pV%L)[tEds&=Uo;:iacJ`t.SBg;- -Y&TNDA9(g8VH5@9b[tp!]]OE$T8Pd:Y30#_guraigl84q8Sn$,,d$4ldWhA]7uUfq -n;W)Hr]p_R@E7@a\WZILoM^4WQ>lum_]\GCl=U$m4frZdr5oKSeK1cYQ63@RV;-J^pa[e!)V:cK,)J-e`BeUmMhK'Y!ERJm7NA9.1>52tU -LY:(VBo0iSXsK!8R(bG:j-[hLNT9g%6':52/jki`R79o8jdBF\Q"CnOA!c=\X;?[> -TE]NuB:819TBI1'Kq[_!/rcXj)GZQol'cL\Vs51ZH(8Waml^I7TYGE'R -^MTPhTlfL`'WiumOGCAS3?JDf7Sa?5G`01Oc9Qo/&]&OChc7K1p.5J/d5E7V_TD4H -NJFcT59?Zs+F0@Y'dQqiV8"h1Y@\dfC9]_qoIWis54"\J5?^W5ZeHr -i'[m&:bDr;fGt(PKFrf4:'s9h/Ht(N)1tb'%RJ`0Qj80&+6.`X&+Q/=#PbtDKD\aS -62i4J+TE'>b^YH,=?j`+,p2+l&OX'T%gVlc"9\Qg!MTK85a_Q_5ZSa)62i:LT`5dY -b^YRK-9oM[Zle>$C(Kje2TP^F+61Re`\H!]UHnMn_u+nC;>rdMllV6bc8nHtm2b6* -H&kO]Ih1N;5)6ZJ*ok*o%WS@1`n7pGj#g5#nSTAfpmqcor'GscrZD2g8r4`'$P2bG -$:jl[#\3d3L!flP"47&c,%Q1_Tlh.1llh@@dQPcVD(XH)V?ruc>t`:`04k@%Qrk+B6b'6]Bm6,+#oUf(=IF">W5Nh\?Tkl21O3iQ+OVc82"8s?)l -+N-4"%:Qc3#6Xm&"c6#)7R3E-U@+Y7qH6FkKlO7qcFR(\m#rYjruIkZIuZg`5K7*& -+6(@"O7=n7+fHk4i[>A[5Vincq#:s,[\a/3r[@o1rt_95D/AUQ[C6q>h-8WTDscZ%\(:iD>W[paY!p=?2]h'c -gR3-N?.$479'BPBXZ>d.ft1='mTnS\GOG^o]N:-a?XE;pQdh]i9F=;Yd4I>#InIuY\7BrsgLV:aBT -?5p(j1Ic$%='%:lSD0M(G&beFcSt#ljdi`TGL'FT5%fiQT(Dr0\J^`#BO)(@oL=\b -=t`?Yh&W9_L69ndd!^t;r]8'KLlk%Y:fn/gV_n#p&7bW=L/Ipt!]Ero,"*;?ks5k) -/=-Dt7]TN]\V:@aV6%Pd4'Br](*_:XMg2UPNS@,eL])K?6eb3!h4:nGL=&Pen9s#Z -@8)HUP8FNZH"3IgtBW:Pj't,K8hHs5R@&NcEo=a8#r` -jBRb/EaDJ^dM-Ys\lq#5+lc8:A7LS+mnF>_OXgULp#e(lSSqA!(3315&0OnS7&ZNT -6ms";SL^Mcn2XQd=e]UdLqnj7-Y!nht-#? -reFN*>Widp=FZ8A'7OlPiu(5^G7Fsf4SH55ls:-sEDA7-]Jk];*\YG+h\G1aB92Ui -8'6)f/`ciEQ(Yi)c?\;1kPYXZoNmU,H='D2mkfQm>ALMTn\]c.e;KHtHRt6J>T)OG -;tiKB;>[%@&'+YaP2Jr)FSK]O.WCd],QHkQc^#r1;#_6gCE\GDO&CD!d1or#J):TS -l9>O4r*PF<>'NOD7W)JP3"mKn%$2c$cbYhLI])h=%u5JG2A7#0J*kt^YCZ$\n&YQ? -Wq-c1o2$"i0GOTW(BH3-!Uq*20H1(4+Td`O!ibtqO>R,Z3MK&5b9+.u;$gp,!%flODdMg4=Xc@9@iG=Yd -FSPt:&F1MO88SaV2kc'D3jYY>lX%lQ/R`9aJ=]E5j^iUYtD28 -.]=o$i/%fJ_5n\`Nh"6b//:Fae3X'N5ogdsLDW>Vr@_EiJ`u5N4W1Mq)=,kODpG;= -N0Oe]h$YWfDhb8`1B)hUYlRhI!IE76Zle8N)D;0"N`?u.58"Ra&lIU#1$'GGk8lAB -*qAV>1$]p$nBXtb+7]FT1'Je@#p?M_+S$(WN,I;,rq3I$Q(`6Qn$^0.rYJuB$)'Zm -/2$oMK[u)+P;(r#/>TN]TWF$p'u82iYu2\&W"mYRM_FiEb^@kKq]R_3-Lu,9YQF^& -ii#KM'IqE&@4'duKFj1!k`Buun*l$):;ns5muI=L/70bW4Wgu3+&]9aP-HNX[4APh -/+U5%'"ohIs!j2V/Fq1?1=[ssfe'MbdP7(._4^gZP-%V5KnrtJ+JC5V`8(irL^Y:K -d:0.0Nn"\K$r?F3&,.CO]^'"I)3T7!F!W/h`2=%p/b:\Q1Gia'`ZD9ln$/'(nq.CO -RYT1GWXj]ucD`7+ehdrRG=FZ6XP2tM5Q0GuciM)_i$ -3:i7m1R0tAQqAi1V2eP:.-!?=h!ds<'Z%'k#c\M'rY@!k'<*=7&SVMGi",+Z4O2jr -$F;ljM@aJ_''g,6+oW;:%c5$*h_VGrZh6P(pe)7[2=3`nDgJJub*+Po(=1qFn<5;` -b:2mZ]rKkKe,%'_I5k/V6F8I6oJJtb3C>Vb6ZbIYe0dY+8OTp[7.a>F1fWLM=HIM% -%'gf\e6tfVoH3&%(SUgHTjX-`ljs_srQLH1$FoK^&@%oMhB=;iP`k%\f!8+ -7s(dXPc[kqEoQ5E*n1[C'VMV.J:-aJd5;MC8V-jT;DcIRJB1\//oaB`$Kk6N -%pP=4:t<7(%/kr%1&u* -WZ_AnF4i[A#scY4,G@"$XG.1?;MB.Z.=m'_Ma4XF]fOE=64R!FFl?hR3;eu3O32HE -XZK4TUIaAD(6cb%1Y>ta0!&kJ,.)_:;Bnj.3i#d%>aB;5eo>>GF_A.(BD-Ua%+/[q -M.j>WB_IR&2O*]L"Xe"pqpQT.o,@Xm'_\qE8iEkfiBGE#+9iEr0IVG`m%Z54@*$di -'nFC$t"H\a9931>1eqJ0gK6+JLF4WEnpI00_8R.T7%cS,*C&11IEVcR2lRD -&+EA;f;3e1Rkisd*GE*E'P\PnXS.3b$/nL6+XIWM%)K*&&FQ,%E.;]+90RF^e.uU8 -dEsj./CN.KJp0k0G -T1r5c&5J'$=>YksD.#7sWdu"O(:G=DAe$Mg+q!tpf:sL/7a-*^V!WMn$Qo(orU?ac*aSN;1dbZT=t_AB/T_a-b[0P+NoVYSP`5s"VD?:PBQ^ -4T:S'5_18=c[M$2Bg,O00!"T(f:PLaduh0\]Mp#O%V]Z9p6!H>'FZu#m%E0QJqm(Y -b"BYf:=L%;)",6>)?ENb@>9^a_V_^A^"FH?pqr$CBpO$]Mtq@Y\T=)2qj'6jQhc3" -3JEi>1p8RG-:.ZW=d;'KD/-.@40&``_*He^9.;YoO-o\S:8HJYQ5-(:s!XuB:\d6i -?lgn^$^ljB3Rjh,<9:GKVmS$aBiO7,f^=;=M:jfC+WA5APgno+'SrJ!W2LSB4#A`C -jteZ]ApK`3)4,XiQWbQ+\g*pF,nTnfUA?U>3]3[Y35%>sC0=Te!Jrn,7_dE_RIP\7 -fsL#X:t@A/KA!K[X!MPt7'e%O%]i4>a^'TZ.&Rn_NRKP8H98'OLk?1;'ImH_q;7t: -U_c_3'C]^UBflO^Lr&=8WT]=\LgKmk+!m(UM@fdK\r'28/#&KWU3b4g]$mbWeZGq- -XErj.3p!Mjl)prfoh+hNpEp,&UF$UT%<`Pl+^nf1;Q4IG1tXqA3<&\W(rFUP&hr]= -2>s@4SHY*\Vd\*`):>VA3O>YE.H-f3Xa*q)\CC3d&aLjr#`XJQ*3he(=YJ>E!D]RM -a$pZ;7G8E]`1sHgf=/A;\,+df4+4VCJ=>58\GME!4-d@'Qq,c37PD7i:%;u'a,,\< -_b@1@-spCeZkE%tq"e6Z[+UObMnH4CS#oC'f,Z\6X;5fR[`Wk[4.Es2k\:E8LRPlj -_''P//deWf_,T((GrQG_j.I?n]mHRddV1(Ul:Cf1_>B)+4,:\#+i9`qJ6X&24>k$( -3Q&?8k(1!3!L!]'E85B0,BO3lniJ*Z=L'_[0KTo'f6$jn9;_#4V]9O9Gn:p0fH#j" -N(pV?%Jn:l28e4/aQ1IH#hPjD!Kt&F;LuNHEKPFPOPTEn,VSD7dR0+DYqG"- -Pq@\B1r$L^2pC)`boL6:rFOOXB@\kodbSop4a#A)Gm"W]a>]`+F`#P!p(j=cDu$9I -lnT0!W>=2t#SKS1qJ+NJ^?9Y`e2uE"9RWar]kQAPD;W$Bhu3B/*W4.[a5FZ@i;O>I/YMc4]m3H' -)VsMp@3jC,O/77i_=Q(-q#:*!o6.:C:0d8.d/VC_8;s8)N;IRjrY=OD%5R[Q\b>(> -%(0*a9-cS3Z1:9AC<5TOn&o.R(q?F"?3f\C"mEZ&kl-G'*fR]P=m>:(6)MJS7s=+M&pJ7"8*C6s"oUN,Q(LcU"l9Y&e%BOf5=n>Jc+1S:qYq`9+"@):[JRH? -pclUm5K3PMa@b.Bs1t]N0om_#/!@2=kBp'4e.[&pL#Vkl5_2!$OI-doXoFH^+:n/) -"oc\@^Y=[uqiR?IFLC#ok55,'':IAM -W%!S'CkbS-PKRNY),/Ug2jqs(o@b2PO$TShBlt>BL=Xn,rgo5]@tV"$l?D'*U[@A/`FZVr@WT+6Uc2 -Mk2U;:-/jP*<^G-(mdPZ?8/NBjFd4 -h/cn(mHlc>=EZ!K@p&FnP@[m?AXd=8p4]8U>'?aCCKgGKH@*O7H,>'$`ej\5(bl>, -2j?$?*.O9l](ds$jVXtA?<<(o)%pAbo-+_Xd1R$5jG78pP9L>4;$n]H<\U0-R,WU^ -j?a2L+6L+IJ"$VU09"orq8-Yd-NX3p*qmlPP@XJY;jCp>Am5CBBDL+q+6NBTJ!pO, -ra6=.q-Z)<_Kl,QL@Q5]5_9Znp-s_uq'g^M8,7a*ig@!eRiM^4rcfEEbVr'jflk8I -fG3htZ>B4-e$Emq7b>+d]8#"LD>Tpb\o.DRo=FC;`qd;K3u8"8E-s#@_f5ND'?+s= -B,em2r.cN=-teC\J"/u"rb7Xqq1qS6jf%HocA23V,G4&,H@M)DOo@kS*Ih>,&YWCX -&4^a,H%99k!1bBp-i&-Vguq%PbN%bJ5^&Wpq:]b4^42Z&nu0,TISu].ZgE*gkI^20 -q)S1@*n5)9_Q`1MFlFNl(p:ISX(WLoJnOle+-A'^1*@\#8@oTInW"pJTX.84@#6bk -.YM.3$U2i7#<1ihhdDZZJoF0d6$Osc@&t<"&984GfKfc$'HVp_!X:u9;$p`2.ts(n -(IIn*$t5AVL60pjWHYM@@FO4k9T9B&@IQD:4.:5L5_"[>fg0ie&UYXm5A^n!,f`Li)WT#F6&bTGlXEAAk3fE^pFNNuNN65W?$jM[OO;KbaU -q)KiKoV%M4N`/P!;(6'MV`Sp&=%`9s/7k'PQBKg'96kM0A^V#S&0^9TBSS8g"#XQX -OD"uCTHhYTGV=dG:5"5c$mNVpM=EK>#TtU%bGtXpje^gpnPEABLi%Ai$tZ[uY8IQn -c7:[@tm4D0oM-1LF61'4mc7Y%?Xiq,MjQ51k\OHj0.!.Tg_<58mWP6POp:ag+!a'KWa:!@M,d)XAL!I^QB>'[8P//H.A`9'QVtD%95/t*U\*-, -;gNFYC"5;CPkL_JqLD?bj3([p%"G*GNg4?J8D!`@"t7>r/?YQC-BQ -8STh7WO8%pf354`CMf'7PW"ER>C1@-D:Q8-QM03?qg_BdR/a[5K"2H1"[<1V_msj^ -jub@r?\G@#:T?q`=V/ApmKfco -P/Sbc/>\H7CK>kJEgYB^e7(kQ*Ag2uk*=Sg(Lq9(X@DO@hcqCB?0<.b/nh'>Wfc@3 -d$U[S&g[t!/tO>(U;*T!!a1=`+^sS_'tSTYld7f#F`-$o]D%WZhNX4FDgh/iGLlZK -S+hDNnl:s[I:un*8:TqaG)kRlJUW1S*A>RE`&N9sBc$I<3u.$5"4gl?K(=ES.PF7] -Lugrl>RW;ken20:1p -1MAdp?J`),U;SOBtO^NFQF?,6jPa8SKj,$5kPP4g;UPo/FX%@#Z$#U)Qu7TTQIQ8H`(*BqC%s*sSZ&]AGll$UDoG5hll8dr[jF&O@BL5qE[8 -4;9C+o*4MU#"je;U[0>c6a_!JMh3Q%dtSI@MS$H7_8o4e+B'gV>r.,.'4Vjm=K@[, -N[rm3,Cp/pb2L01.70OS.C*9Rik<,(c+)dR]CK[Pe".T,]>/0=.nQ0IZXH2!VniKG -_dj:qCcFe03C@mL6]='q/2]f=4[\!g6gR$)q-u#rR>:Q`#?jT_nSZ9-76d6M\/Y+T -OFMtW3Oh.0/t4[Xi[-bF7kBTnW&i"QH2']%,q>+q(jj00#]D7,"/Y?L7;Q$oH\?NbBL\L% -`^FT3]PL']D+<;u$#3eo=\HILu"P`<+ -&VE1cHp9*#Vs$F%pgaNG/\Gb:4'6Y1gSCtr8k/0%88O&$;N7\!EMR+F]]uG_,(lM< -6%HKf&XaPjW#[B"-lM9A]J-Ms"+d&>LP]PV7[.Q-I$[E`QH>Ya8Yhb+1mQ2,SOqV. -8aN'.gLUUh@])bHL+#X9/>L?EUbTE)!h1DrfFj+0[N]5M-H%S@6/0JulR#l>6%S_6 -E)FJ-35;8BR=`,\<1h?-[7aY2+j.KdKIo`pJ$I2-T;au`TcL#S"MqL4M+&!K:T!m/X!D$A"7LhoJ7TaqijnkX*H:LtbHFX0j:,gnh%2iSBsI4/!Q -.8l]d$>W;0RpIhR=YD>]"Gt^Jlb6!-gJ]+I4WLLTgit/jIt_hu(jUqQ#][pBcpa%A -^T/k`]$Mh;6-D\He*T@uplW!a6)VBa#6W3TTN<#[_hBi>"CiX/!VmE"/0_b^7'V'b -J74dE6oh726;8WOAPc91;,V7-eKn)C/Qd26mBu9'Nn3# -XtcB^);-9u=AH%=CVKX[Y/JsYW3s7l,/jT5W+p8#_IWqJ'3h]kduV\PL'V_,m>9+8Ra'_S6n40%La<,]X -Qk3$,cr6.,=g'5`fY*/>r'Nq:I96ZQ=<4Eo-*,bEX'4>\%3:j?rNKK8Z!/.NLQJVC -#raX9F0_@E[/9GF&YOfaONj^o:5HKp*8"BqY*$LiJT2MVRp=M9!/D/I]1ia,1Fkj6 -I+ose>\o[p!Zk%r6Ti8ndFkIdi)D1^9?@O[Ostn.NR'"6KW$%>dqE;KRcGNQHbt_C -g?mKqe^rO:fNk'$?)r0SFkg9Ih-Jjn+f.I9ZjALo@92Ks8NVqK@$eL@V*8nfp$5:b&!uRW6q$Jun!hg:Q>k6-KJI@=#6lhrEL@ -L'U78gO[]--ea+Y3MVjL*^jO3jKVZO:u1-Wn6X01`R -;fSN'4lX1R@b+H:k#5hd<+T2(A6)cCITU0A=U@tGOI8Wr\rG#>io,,fKDSjk'Tem9 -]cqHl6-7q,fcUsaO#dPDb&CQ7Hq7k,AQZ8UdGgm3Snr#^r@=&?W^N$S;0UcX/4ejS -,+@k+q0Kl-AH_?U`$@]:GtMH9''2<'AQF-=Ap\19HsNmlBC:7^rd\6o*7"cV5BHNB -,:UAonmK[=WluIF*&#%f"?t#q2Z+C[K`;7l>8Y)6kg]SR;E<4/JE\,<3r0p@3KI56 -7-=;hZ<0U=Ka'0F77rA/9D2uS9.?_\FgTORZcj*G^7],iT]b1*l7SbacB@HfV.s>6 -;$%gWOG#%(3)ar"Qp-Bop(+dqdEBOc;\kh-Cj&41)_+5k4&jRqb+`ZCjrTXBdMA_G -I^h9[?GM]g4&&Gk0NE`?k<@=qY/B]k1"ae&S7c$tY?UhVPS7diU1um2lu'dYI`=Y` -\Eog0Cp(rI.cR/<8g2L*CtOaZS$KsgJVIQ/+8^^?C"_N::PrFBq'd=6)YB' -ALOin:BUOb-PQ)A2/tQ4o1q7R(FaEd3HLfR.C&.Bif&USJS8+K5>Gk5'310n56,AH -oH-El,6.9bn#H^n+7NT,s$#icj&Oi,o<1f/](dGp/"Gc,Qs>_5k="d<4lH>_a6[k8 -:G_Tl2g&Icol!iQG?,-u9Qct2Fg#!jb.0DEmjikMkk$ZE;dAlBG#BXSP_kk*bG<.;9MDpEi.phdRp -/%u-+)j0RMP!p=(a!;usCa1-5-4pf/LDX;pd!)C=GqY@-Rc2+W7.GuS>?r3c8U&k_ -\4G]u$]mcI]c']Z(1=N`*]`AS@5Z_bZ$5B*GL*#XhkPKlJU'JWH>f^-GluFHNWpj> -d"O=i2K?p`SjC]*+/=Z#HL8LA]&]A[BL4_t)SO"4N]'tIHW`sO5H&pi\KRZN-0o+` -U0pG-@%#qN(R9&os$B\8[ZSERET/XsDmImLK-$/B4!16qJ#.OJUjSfV1`s:+^W_)O -bmB]HON$g,=.fF%(gJD?lCN]":f&&=f)![J9nm5c4PGJ+\l2F(7qNhmDe\H-o6fHP -IHjoPLFX:f9rgG$XJr)lJj>P4f.;bF*@SUT@>3;5J#q3dC_^:,tF8XjM"#WFF -CFl+FjpV.3d=8cu&,3]PrtC8Y@aTG=Ai1Nf7q9sB"GT>iP"B34GsnN0/!`h>deSR9 -AM]cLB%)%Dk&ibW:M8/Q"U9ZJU/>URH:90G9;YX%doY#Srq:QNhG/k'SYZ:&Y2AU- -)uY/;J#`uRoZ7"1OVg=1ilCmP;#a&oTBUpmrBO&+X,O7U,!l4^>sI/IfDEh@s*VLo -q##k:+JpKbZC,O3?T"7sAi&,Qrc^Z'd:m\`I3t^`WRbhWg9$+=A$=R&G+3oOkA@fc -DYMoB#4mP`iUD)^IQ&X4bN*_)>i(6#V9\@JHG)MOB99o,k6 -d!qE.=oN/&MUDEL*K$9?J"Ht0(rm_2ao6a]OE@`Yb>R-+0$D]@_(a)3*6Bt[dl[te -+4@6nINMIF+GiZ[q7^;l&D9l3+69qT[k7e;2LgfrUfIlB'F?%nQ,>?UAWs%faC[-M -6E)e>cg00T;bp+J9[gB)4]'WC*C!HO -i6q;sJRI,2*Jn7Xeif.+fiDCHB%ba`TkN.\I,'N!.^H:%S&b?QCJk@Nrb`Omq3Xu# -jl$>lQ14IuF[O,iJkl\gEpQ#B'GV&j+66nn7YOKps*lYZBdt)EjNrR0PbP_f>)nOB -,9iEHr/u3VGePnkj&k.uNoSdk6'1/$M;3$BKpoqI+6@>V:^P2<-lX8h=A9J3VtgE] -&G`k#,bO2&lUK:a_/"oL#9j(ma_0#gOm0rXHX1AiNi?=Lg7GLJlPeWfY3S.J\Zfl( -%`u!BgD82Bm5mI:VsW5fiOJ;[T'T!)b51(DL[l0C&Uqd4YKU[+6?&,`ZO=D&q?:m>+6Rpg-ZD0AJ`-<0+,T"PhER.`U`*.:BqOP0ES2"\q/ehCj\WaBPCb_IIupp4 -#oF:[aZ_"^C\`9BTBI$-ELdtrVt4;!'eO-s54jtJ<1fS -5aVo\c6Mq3coq_$(aT=CU_SL.?49,e2"=M3iYb,]BF9Jlq9eCo+6#6pZS5#6SD],( -aJ'Kfk%p]QBRp4pr')EW*Xg0<:EST?34&,A&>C;a&^3fPO7D-ff#('NA)1pc'\N]M -UfE<"?7\O4[2.EKeOf+-k+ks)0Eb7$%.@ou+uEbgKHc-_#b4C$!CZ1kX$IT^@)84- -fJb#6=b.,>"\8@l+ClaJOO=V+aB9*!jA_,$1-S0!#on0Lm$3a^?;*qY2(%DFSWhKN -:_Voe[>[ZAM,>sM%C,p0h6XUrU\nDR!WFRl4-pO%N?!`GEA!dHpdD'P2+J8X,_;?_ -'$9cE"d/d9_nc9hia(4cpLc)H0uX[/oI*M_,5OAZuc8EhEHUsoNsb*N=k7_#g1MjRn.ad*uN>)]&L -THLF.]V&it4\#e"RBoa?%UBZoHOdU*&+Pf0a8"*uU`>&c<9TmQOUI"?+t6E9[8uSS -?)uM)YS*Z#4WW26+6/Su&4-eeb:$nSYBCd_!>Ps[UBVCnn6-&WofiZIrZ))A-DbIo -:ajj3Ygd.#=BcGIlrB%MQ9N:@)]`IjKSZjU?HcQA2.l4:S[6mrck4+R3E)Ti/)lY? -Mpf^-lZeQs:n5$$\5p=s+;mWscCZ>LhB]"i2m4J(@gPI$94_CZO)ggi`W>;BY$EHK -FpcUP)l7ZEV:E0#1k#tA)-I3M9cZT5[8'n?p4>@^"S24%_`MF,B>"&4D`h9cn^i"< -c.=8M:Ae7!ojofI6#`,YaOqX\A=Sl[<2emroed(Wb?6l;qCB#$fbi_r,AZ(npL3)%91P0S[aUdW -8u),,j1G\Lo4Dd_fGcd3gu4dpQ?CJ5h`D$11NWG-6 -FC'jPKDhN.Ys_t.&@i=.!dY#:mLUt'^:'lX'T$l$p>\W='C3oo6h'&L?W>>nj%*1r -gP^)m-A0n'hcsrfFZ3-In#XEd8J#+E.k>\-&d>[k04[J-.N>+(MmfF?nOlh19RO^f -V`SO^[C18@Gh]iKDf-T3\G#p`TmH0LDOo=hpL`gKgUrrs1"J7g%O0cI0+mZ4=^-#$ -c-'\:'Y1;Y+TU(rb.+*oMK$'i`JABiS3)JD97q3JFQ-M_Gf,U4i]300s.F_VOE)C2 -aS@%s^9.Mk?2MO(P[YbC&E+T72=cUB?0B^)r)*]9(`OfDclc: -([h7b^%^C`i-Z4P[E"O4*BGE8Bb?nN"t5ZWqHM'Qhk]>=mg*9dh0(`_l(TPc_0#/NB9T/6%]'jJ00JrrnE!E7`+G") -8ju#m#-$gX_.M54fGYo2E,?BI@hL:'XS%ZD"L.t=:e;4 -&eQ?$8[]_Bcs!QSMGZ,Y6m1S$\n%n\bR*^@5sU4A)MK\^Q\]ZOL$m+ldRAr(i2g7P -kH9.ZdY%WrrpTFDYpU?MHPb(YZY^%(@FW[*]GO%iN1id_5n6^Fg/)C#`M!o4kJg#h -&f!o?/7JMr-q#$ENkT7)YYcm];&'ZT(EB^+*0J\idFB6Lf,_al(_PdL;n\<2_ZJ^bVHOLq4d!tqdk -;[5"?$hgL5=f'T-6tMTePpJD@ske&PQmc5pj"u17^^1mm2W(6Fsm* -kejPeZdP6jo2deJ>:J$,23VB*;dr[h%5u[R2\U6k:p?Ut`>g/W]1_H#CP[ecc@&!( -39Sd,+P]?F6?DZr7^6"PcJL[:md8s77WR5Nn7lqj(7]s$H-&Q8F2pD,b<3_]*f3TE -N=o"&R)EEP%o.)m9W/Q+!Y@d,!2O<"D_s%ZGYr%nE=eNKALe`r+*C;U?:"82i']i(( -k>'2F8_!?-<;01QqNMEAlTn-C">e7gB]6_ -R&8=JK@lAmAeni>bN`!/$U&PJ`%-Zsn7aM^Hpd5B'%#*08DbC"hm -H5E>P8A;2=]jBYu$oQ>.CogH$@6WgmL@_W=1TX'po07dCi%Mb82gu]=io;H$bfHU6 -pZB?77pjeFH<9]f=8(H)`0>!A)sngdA2dh38osU!3p:JLQ@F+Ps'q,4lkbG&GUIc= -.s[L2K(ppM$7gUn4+l0MKFd5!n>Nl05D7$N%rqCON?Z()TG:P7/EQRXF/%.QJS>s= -0%Q-p!moDI4D39N#*QdM!Gn$6i)7'PM&;G5:"6_TSSDUCJ7[4>-S'TRX&?b<7COOb -:*YWSW/34#M!@'S=N?%RbCb&]N;1YW#q:^UgPskCNX]r*Y#R,Q!KP3qE@IOsO2Med -GSL](qprj/$ss9XCn41:OU:BOpGiGD)aoZ0dF:6PF&@rX/!AR<]$=.p;o+9#.RRWO -MK^._87]mTJT=%98,.W2(3VBj5+n2ES+tTp=_E^SCR/+?QC2VRR5(%rH^EE7ZVED$ -nALUNLgiB'@Lp@TF1)ZPEG1#(H^-0DN*<]F'Od$H=P:#E/R=XE1BOc4P_:0DEQ+:_ -bFI82U\F]P@iXMPZ&"dBJ?E/`PG655g(58)@)U4"e`F5 -TNT[9=r3m$)M6&,0DU:]0OZ\oM%hD+6]QC,)DpW:;A0L!F7.oQ7mC91DO>3Ga$EKK -@"V<,c@H!9<+rLqq`V]'TF')s&:\!]/-9*p>o+VmJ1\mFp'5H8\9U:r04 -@2%ugl_GY,Zj`#,&$"=mWu;SN>-FuISYoZ+X;]!X7Qe5g3rLX:'p$@?(;W\(;Z"C[ -8#1X;%W<'30"iS7'*?[DDA+C:c5)4g1"N-?/Je__$?33"d)E&eHP`rV)M1@"n>`UU -TpB[:eeP4?';U'hL218=]LB.^e%55gci"&VX&-D51q'QUl_'F;\[C.t[JIMD>@Y+) -TsK10r"H#dS+'5Kc(3`"%.1S009>k(inR$KA*J`Y#(=/=A -'A'KELUFa&^`-q%4);W:$c%]3]UTYO>Sk5.>9$$S0DWB"8PILOH*o)'\;hnrY&NQ( -+"ac:q[G_r:l2""-&+7-(J/N5;2pR`Z/L.7QT8^jsq.B<()C_+\_'!KFs#A -BU+*TBNI!Acn.O]moigjVktCjPEUcho`X0b#W9Eq#Kkg2b5A<`*4E0.B?T)FbStZX -nkMaW]aS/jQu/e$b*9sJILu$o1nAb.ajY9kdbT@=Dcl/tRhn0*M7&K`RCeX^#/h&Fq9CY%/mjW#tNgOQ7nVq6sKVN0,=3_k@l;N44Y_r^@* -'P8".EiA^pha_T2$]cB4^P%HHbg!?!ST!8R]A(6sTV\Z]CRV9YRW_AT(H[?d/f-=h -e@#4'71K]=Rl2mXEABiZ(ds0b>miJe*(ARCo`+q(qf*d'1XJ'K#A5-W,QiGS,OGj -?>&DR!a<;94`J<]MG2+XLm,0X7jg?qW7B%YuI)V -3bR+`JA6_CM.5>X\H4^irHb*cjfbpr=8CaGq>sFX7,UtMf'F86)6G7X+YqN.(TAA6 -!;qW)L0W82*:MGOM*,*rhadX;:&VgurZC"\J#!"8li,'_^8_D'^*ZEg%)\e>noR+S -:\U?Trq(?JhQGK-h;J<\]jL6Kg\roFNCMrhpZqAKqg:f'OSFaaf`lR`h!HKd;-s91 -UEAehPPnHgJ#Gs-oZ6k-Ntst,_7078*j+om*P9 -_FD;mM&Rb0b5Z0*hsONe4l[Qn>jdq_[GLG!]jC/og\(RIJ\ba`Qs;Nk&W+J9nX/*T -59Z02AFc-n[U1bWc"?R8h"H4`U![QGRU%hD;5r)\opX]YH9gG!^Y#MEqP:f/Y,$eP -2u3q8s$27pkOs9d\)HfOHbQ*oYKuV3r-nYFhp_N&5O]?h!^I;R#6VcG6l-"mYY6,C64e5`$:8^= -,n*,EbV'DmYiJ"X`%^gP&4CLp9,'dV<)47J0k=W-7PS^l(e0XPCBQ`he9;s(Z1NMg -82:m7,"T!rO!I:P<0nq'Z?2]e8huX/.S?g_r-olH8^qOJk4+%QRcU7BBU't@Qr"me -8N/M$P?IlrPNVb7<$18-Aq-;Hq>PISLe:`"0;lD@GFU&Vb\52K!NK8GjU/l0QG^"I -0;%>+S:?_h)?*6`#PfJXWrWR#Vl=>)&eQ5HMgA'Q-i$.YTB01lJ!OT$ra1d$K]Hqb -Y*!^2fI$ueJ"=UTrd>j9[?kK.[WS3U=uMYDC0J'RYA@E$e[KF#[ds'>];Jf=J"&mK -raV,Sq/SYH$.1XT+68Mr;hT$%LdM9rOD'--_HOUV(ljNP5#94MaHBcp>]C_AZ*ka/ -@Mj85MILh=-&ccj%OCWVp99`tT<_o"B3G)V'@9Jn/RV'+=Dk(H# -ep!]u\b:NGBK?o`aj;sUMX02Y8T$Y_j`&RrPbPiC9N(_\r_\Q.q-#Qrjfn2E9JaN9 -CqGK$!kb*p3W="98,9#`3X>Iq3ZmH;Y^_jg1&ah$\!),."`?RtWiG,>3Dqh%MOFn& -6&r*LN@4OL6QbH)76Jn/&X&FuDQ16Wf_.6jJo,1Q.Z]>QOeGc29rn/Um^API8lOM!q1`,C -HiFjenpEYTa7F^D8([A2^K97bIK,YoqL0NqkPP7h&%hgj^[qJU&-`/#3!fUn1^ARC -,hA%)/j>)dV]8&@IuJq,f#&Y8Ddl*O&+Ku2N[[O1n:7a -?lm4uIuf0AFpSK0=Y(m<3RV6h7KA8eij&rKJ:MQu0hQFu%,h4XQP2b$9FtbtW0N)' --UL2>3TCP3NHKWYi)F'B&V`#036<%J1hVd[VDT7mg?8a`^c&H+]XP-WoHI+^EFg:l -Wf]8B:2p4M@Q].@dJc33g;mDan9m3.`;ZQRq2u9J8P&Y),\3^;P1!r7agj,R,h/BL -&q3\Lkt$J;>c3i"VH$7!=Y"'*YEfg@=W(Z5_?VV))If5)#]dT07.FOqCX>M8W1sU[ -1a+PH$ZnTPql5Kj[LIg)g-tOtf -V\J!Y;egSQC$e![eHV[G3e("A'h5-XVM\?aR8[jC:T>.!WDu!Y(WVW^9HmX!X$Jrb -`4DNPcV-`lE=,Zu$]CDfUnlR^Tf_;5rt3&DHE#jchSh`_CX(C\(8BJge<'\EiFtpf -dX8*KQo01C:$7b8R:=+53GT(;uV+Rju&V-:AY(AcNaR'R89Q9gFA8PL[/ -c`%^MUYS#*FY8s0],+f@?#-uoDXH2jaK!iu43;bd2]?Mi#/U?YDqo2L+6$ZL&,H0@`2RT* -m2\I#L^A;]2;cLlLEkl]PEPK[:!+>0.:i@SP\IQSb8FqEA\>R?EqWkY"79Y1P#=J_ -puQQ!"Peg]WIF<\pW_C2qqtq8:rM9\2Wj0af*;I`,++8kb,F0RC]5ZGFMH-Hr*9QW -iB^\#Df.U"2pKs`Qo)7n,249Bh9&*4l#Tm-URoH07EG*qtGU0*XBN+56tbf5C"EIr\&&Oi$V]L>uV%F)Me6* -+::f]H#X9"1^pFKb`!jH1WKZR%'<#1r&6&_bHE;^-^-!(C -1U/H?=,L[hK[:kIpfT4?AH_!6L\P`jli./sItpR1*;G#o_(?Ks]YN;H_DELS6mTWH -f-F:c50JWaYssHl5r\Z^/.bOlKD3$:*!C$_KW#iIgH5WqIKeXpRs7u5GqOl.EsmRh -*Gc%tPW6I;3Q$M26^0XL`&kld4!^%:_t613"@0m>6)AgGL06A:b*3/+:P)GD-Y^T: -6fLC(r%k'VKIET)_94p122O*9Ud1#u)dirX]oMGG75Rr^6r_-)CrH -BI=p/KFjXTktI@_AsGC?";%F5)C@I86jfSbRa>IG>ZjLQMaA[J_q[AljCh#IB?$`\ -`iNmoZu!N?<^u.f`q32bFE#87EQ9>Fa#%kX7!-IKFiS$9a)lOGKQtP%H,l_,a0^36 -`-fVTIE1Dta7Ol&"G"Q-J]K*ga>A/IBQf/eCBa3RL%%Tf^f(=0I0@n@LYtZ'@"0d3 -8P%n$L[[M.G^fi%$A\+;!8)aR3"Uk\Gb&jQ(KW*%XWQM$:b-\4l`2q,2XN?QJLDXh4 -J8U*DGm9X@#G>Q0k^*KK5_m-TK/e8^n0WqK8-+g$`41:"*0Mg3Ilf?4KV0;V=>0uY -?3EN=L,`"&+BsVOD[(h!iV]nP9;XcSY4=7.O,Q -o?U\6cXbqW[.qZeDpP6Uc`u5#Pl/kWrQjR(ch.7a"F%p\Kn];JL%n2o^f5q/I0A1I -LYt[RFH&\A8]6RK8Hc[+`0:9.IKX$n95$/;Qt:t>R)tm!d5;Tb724-L("$S.d<-8Q -Kc&4&):>9!dBsq@`>m:U*REqm#?8bL&9imPD$PT0L3Rrt\6k#QB8(SV"s?VF\6&j' -\4_t"LZh-W%$H.NIj#)HZiGN-YTAS@;$*D;Km5Q^W*Y-g&;Ad)0I;H]5rDuqX@^#s#X$R8 -$PJc!]pdYTV:oLXg2k%M3,bd8@kma\/BP!-@,s-O`L^O%"DP[TkiN%hP_kei)]>r: -TTm5*]c"J!>BFZ8KPaqQ\(d1ZgSMO:RI]'[^"_Y_g\&=pWBud=D?bEQ)YgG/\gc>B -?,WD5'^4;jaBjND^*2Q7g]bmV`Q[,fc)i[J#J/7qbF40);Efo?*0QKjr4e-)XWfgF -KSda6dsdbmlp(@WPVO65D7nW2h-7kSh=]X]"lik#&7HE<*jfN3\7>Pn* -P!Fft;?Ej.2asBG_m-E1.i2?3P[Jur)7MZ.2dU(dh_k#_7J*.%UYB!ZUM4b84fT6q -S%`p(KDW!8+@74A`Iu-/)W7"iTU7;+e(r:.?o?m#4lYC#"Q3kp@!2^Z?1hTk$/hZf -i3D^[aF`;tdDSt.]))E1FiCPb#;>DHVB*_o6EN*WdD^b?i4^#dL)Am8)3Qg'\Ck8E -6W/cJ7@3n!.23PX.-'#-mM^>"L'.*5ksRi@2B=n,QL5"9D?s^;.,q*P@^[`F^+,Ln -)Ihh]iq>%c!@,>36&74J.*G%=&s!0J[aMsgN[>>oRDl4Q'1L,?gH#7YIQk2o/E/b<[:=4B^e6P>Ft2(iu5<(makHjRt-9 -"taC%:ZWWojX%KK*`V6%3/@oJYq@hQ\`\4@kM@pUhJ5iHE -.GPeo^>6tDG%B`9A`dR='FGi!KMH&I*9:,rVkf<*$793V7$k,LW@F*c?npIe65Vm] -jYh2A/p-2=FD"p&B4cA$L1]V7H0;&Nh_U!p&78\5Z&.2O"IS&!B]WYa=G090BImJT -33.^8HN[hDT[ZEKBNCe9?3C89"]QO/p3UK(NTfMb`CW=j1Z+Nj\XTOh.tF=H6%(ad -#K8s'4'aP1%EMEccqotHXU3ZS"X#8Q5ZaD,$&/Id##7iVlajqCV<_a%lZTbK -MY@BG9aCH1_9"M=pg-D!5L;1Y\$.6$3CKjp)5"4VH.Qj6`.= -U$<,^m&%tm[`n*@c0W7KCPL1 `NV`9$"40qOqC>.I9AAh#GS?#)c;atVYI3=r# -'.ru:_d-_MhZt`km2k0Q#2nn_&NG4%?QQ+/U`(2ArNnl.\N:`;+qI5``#@LH_^e4B -Wt&:HEnapBm+0JN#4M!rc>Ocnmj9N%*q\o%p$ZB'`>acTJ^M*.CQlPIPHOdJn_bH( -e@kIl\BZI?DZK8C!Uq;0`J+')0RngS2JA:WDMY5$$l3`(?a8"WRa>9'Qt9gDD2$Y1 -PY0=l)nb4q,k!Z)mk5@C58/$4'QI&^E%`$tLD]QE=IM>=\B`Q;$A<7l*MA_Z,4^Y+ -\<4dL)=f.!ni%f'^lkY(pQmX#*["MH&5Xf?$G;CPTlZK#/$^\]W<^Nj\@E3,(G)f-1RE..L;p+iHGm -)ECZn\):\Q*^jeA&0tUL&iWqcLMZX5D>)"fG1UVocX(f3EVCi$pG[0f7s+K&C2GAP -4nF<@mZE4=4WCZ="J?]I8e)2m?_HD&M>q%TRfN_%3BoNUYj2gj57s%@E-D89p@j@; -B8CeV'mF#BppZ1Va,KfFNVM[sMm#7"/&^p[lq!pY\L\-Vl93 -J0#Y##Phg$/$!C3+F&s=pn+2RQ_=0KTjjXTH8hVq8#5u_V>=i%mKq:r/*K=>>`'bJ -4J/[O8pi1h>SYfj=hgMis.T<+TR.cTHT/8-6R;MP[JOUFqffOHLUd5H^hks.'52mi -RWS6`a1&p0/7RS9;-=X->`!]mmb*765HkT8[/3(nI!Os" -I.,tl#N5RtiVk4ar\C>A]qgH4D^OW.>Wqr^=JMPl#+SlrVpSZGJ!2&=1B"E5IFm?T -s7$$^nc&ZeIR!H(8+cg_p&A[us)F^d>L@mg*F[+cEVu0RI(Q:gn;7P\12Pqh#U_5*bN_Lga8L78[>c(XWQV:ts -3J>gl24RD(;eb=THTRirBGM_AiC`k -aCKJ91n -ID=]ZG[*E[(QHJrEd:p(B/cC-k]D,Ra4o_tl%VQplo4ej3r`D)TB[Var@C$[U4eU! -n2^K'&&6NOkPAG0s&,->lU-m7KL[-HTj3);`ej\BSrI4I]0V@V*>c,)PN+EmHOfWC=`t?O<*QOjOH6R9pNpFFKTB-oe -J!'hbf_5pWM>fblL\V,_+67BAJ!2&Wr_a*$q051Ik/hRlSu6B>(=A7U*>d,qD';L! -<37BA6CQ7\)+\#7X?m%DRoah)]*&- -BU(7@)#]IN8>(Hq6&aq3:;Ek.6j(L*(_\"Pi/3#Lj&,eaOluP5<$18]I".[KS`>!e -a*$t=1H;NbMsX_dfsg?qNnq6`)kQH.mi/.s]C1*hf9u+J%gBf=S1b>hnJk=>`UTI: -*QR^jO!Vp=S?FK^bBl>^"J3*%e8(]=nUc7Z78a%gNr"QfIulp\]Ec`'OU!q0JOK8U -g4IM`nJMJSRU'_K&`@[pkH4d!GoQ4;^3Q;GS)sJ&O.kh6ri`0aHCh^qbPRn"^$kk@ -&&n):T.eI\r?"hcp&1M$h=pD?m1Dc-VWn)#)2J$Oh\G03rZqT>it4P4J$'C_,/G,r -&g4j`Sq0FX7AE-cJjBC00uPgd)oZkoaN-N#4SGAj+bT9A&4/?N$"64IKi"?U_Nr^L -+bVS):sKtH=D\N+`&WTLmN+aJI1PTo5 -M,85>c\o,Q.sUdocqbA,Ye^nrr+_,[&i$9lp7)^4R[AAg60:lIR<0d1:q@Z6W.b\T -1d1(tl7GHg`>PFMDN7TJ4\+`?+f&(tOuXqM&dS>,IdcAc&7Q3Da7uTl_GD1:F4UGG -$?Bj5r(I48@MYLoG_r.oIuRlG5K=VaTHjA]%eC9#l@fkN<)T_r)QQj&[99OFDQAs^ -93:E_@B2*=um=hgRA\6&6T?4*N.6a>i'50g6TjiX&s)Pg#$k_2&+(K,!SVc/ -a7uYC,Rf9a(JKB]YjtHOL:O?k-_qhXLZ$-WBH"@6UY\M%.-`q[N,:-N;:;C-tK%h5S`CO:GKDt138]*OQD;Ms- -U@Vg+4bn"]*5ks/&`ONWIW7h+`E9;Z@bb7InV/d<=O.m&fShp_./t;?J8L4boHpRG -\NJC:patZ6+]dfa\?s\O`aT7.)(BHcHhc6".TRouKI!Y#21Ic00$dop6Rm+n)9p0Q/"gIl3&h,1TR -`nB*NDf0FJ]sm_?iM3IYg5s?7j.k`u3o1+F5\GV4BENZ;!C, -83k4!dH@DUJI>eQMFP`S;qLOSI(MIq&iOCQ.h@m1>r_lo1ACAe[J9Cu7DM[OYP6G@rCBOU(d^-50 -Jr#^-@6dQpOIR^Z^I79Kn%Er%L#;djJFCQdW;'^/iVZ3&nQmlgGi'NW%]i0,Z\u:% -@:VUYlt>.eOSUR+$NX*mnbu&#q-P_q3L,l?LDG`o@oQPkF2TCknGa$W2sl%>\+Yl, -U4<*L0uXuu,mF'I%plJ.MX[DfKg8BI?MjSH&+/ica7]HshhV-Ur;Z6e!&+QVE!ZNK -%05FcAu@\d+hir0P(,uLSO*5gD0h-H]WiSEQ3V4=,hs$4C(s>K(')c$5g0T:NXPp= -(LXNZiF!!Y-5Bp[m]Q!H0DPgUpBL*Z#;C!":iM+B&I7fV#V^re-U\h$in]l+Kc9, -?j^57%o&&2=>"E=!2]%1r%@`FgrT:S+CTP,PQ: -(l#?3::QPI.$Yqk4_kOMLKo"2p(*fC*FS(7Tr\\'U_k5a%^4O`_'o:+6P$G1&!:E6 -d:j@NCDLBu&M\DEEHrA*I2DF)(bp]+:28RgSGH)*+5r4mbjO*!0`*"+Q/N(\$P"8r -g)`NK"@9s8i-6/JbR3klM*)h -+#3F1EVU]]r?(S2+=2jN:mbRjW0]'r4+XOMJc6Je'Y5F$YUNIajgZD-g)g=g"!QG0 -TMZ,*DB!!5#pGrMJ@HGh]FFsc$NU;E@&O[rI^oSC2]FCQV$NUAFTV<)4D'q*t/b8!N''Ckqm3n.f0/E2REqqAor@da4])iJ` -/0\gOMB5%N"@;Gd+>t<,p&^ra&"k(#?o/mSjoqHq%A88'@&b'Z^($cT$K2E]!A=WX -3uuc82)=DREpY`j#F@em-9U[N29U$_>Zl_T@'Ej!V -%mVp9P9i[@0fi]F1E_65TVr_.^^X1>&.i%U+J9BCm-bWE6aSdD1mppWSOldV8i3A: -FK%m>X\/5iE2gX:JTM7X#;a0M7=_F"^j/E`U*!e:!gM%5PG0(JkQR0-#=5X)+IX2+ -`XCa]$_ZMhJHckWj%35O8[SXlo`\0rDbDr";)K(cFW"&a*Dtm\nh-dSTV)rS64hY_ -9N2$_!V-ad0gN(;7NaH-@."-uedc(p/-'u7i6VfEZjjib$DA>6F_O\&CJ^:9be7@mD;]r"@L,*$EihP;3C62?a-J%mVrn5kkDSq(bsQ!]?\SJ_gmP -9H:k+#2uEfTWf6j[LZAup-CJ\o1fV.6QOKfk7qi?F`UlSF^EVfde/H(FnoCPrEo7! -?o4l/F2L*3-R?Ld:;FL]5h$*KapnDm=n46JnuG%Wl45"!=lI((J;#7V\/8Vb%RGCK -+T3$_U_9kB8AL`/p$Z4q?"LHQ?T)@kp'#':D.`K]B/XmFEI];M]h_"0=gh^ebT)Z\4kiL10?`#)?L(>u8+%pflGf]P/* -D)PsBG$f*Pe5=eBDDpToG3NnQm;D?\-c&[eiBIL>./fD$%RI6,+J0?5>@M`R!jOsM -_"[ts/d&Mm"Tcs[5\(gAed2AK%"Q$-!9t@CYRl!$(!gXgi1"%RgNLWW -nTFS7FuNuUGA26%?74-+AMDsRF1N53_@6)!$+:l[2,4>6iXXm>BqRR0F-dgG6lm$Y -EaWK!!87]9=:,(n$m9E^`@/%X9#$E%U`]ZTVZ^kfFX@l-/h"/GV+PM4,MU`K:&E7pe?XUXbunYM`A,& -Ai;.oh%!M1CdAYeP^Ep+U^Wp%)o1)3PthM5U'#KL><%+Wi(6Zu8dZ`0CY$92R#VqI -V@jUl'/rFdJWa/eQoTkf -H&7p!N&0N`?'nbg6-]r_Be-tpLD(j4iVX4sW"6CbRhH>9F,C32X:4$bN3^kCG0UDs -FdIB%SJftE\^p7qO.H+*SiPo(H0L\!77d3m,f&;B@'P3sO+qqR3C#f-TJ)b,+)6UcLr?G'HDV7p,RKBX#no -'D`&XFa16f<"g;oT^W'8TENp6%/M%c<^mVQD2DFTW&cZ3=uiOZT;7p -6:Kj+P-48G1/DU@FXt7)5e3qb3-UhD#H'V+%9'lM3f0rLLTL?3XU%Frg=`U>h6$P4 -XtfKG2<0/VAWds&B2R.M78-C+2%tGrdqYR;oc40hh)kbaferug. -f/pN!Z9*37Rs2/BHuJmB\3#DSH\o8EN8!A^?8k@hgI5g:7>@I89mNX%]2A]2Vup7/ -%NoPA!1?j^r";)<]K:DOH[i\]+h7Es]fXcXHeH*5jC1%G@,S[,p\"tse-LWT%R=Bj -@IIB"Y<^K$J@D0STumi&F.\Rk%b??.Gr&`jO-"_5_E5rXHc,/$Xi@O@(%&*i!3K_"#cj. ->Q6Ec1TM@))h?I[!6>PV^^bT9p(P?c*9kQBmE%7jauo@CI/2+$rQjX6DjZf.dEW>) -&UNEbLfan%p*\'CQin9uEaWDsT\'O[c3l=$%u>,qBsR:8`0KAi#S_,h7)=V%H.3tiB@r584V$7V/P:n -&Qi2?^rq'$92uXi"4n>n3-j@>V0_irPMHVfb -0FIm^l(K']*r#:KNV!14oLT#T5FM>^Sb`;ZG,co1gkEB4q+M\%@sd\T5\%"/%8Cmm -TNGiB5bIKo.Z*EO5rh9/-E1OuBhYUt.[J7(di!ha -?T"6GVNZ;Tk'8qY:?V6&"V-5TT[DtfMDZ`K9;b[f'\\O1V,aNql?/Q'C9_!H=)8Vp -'n423ZC:om9'--9Es -__.J5-;rg"+^f)K+\+S^japt-a\6]bc'%fle5I1K_e":`+3'_iK7,A;UD%0Cg>0T>,G -YX"I_JN5PcESW]5e!0eo:fMQP92O.2,uIT@2.]ijJlCF5gEn@ -IT?dYdQgT@\_]3QA%R3E\8HYZlaZB[VX_9:46H:P.2gG6_/OcL$c?r]7h`j]HtOD= -EVtS:a`;d,/'Du$T)Ve)PB>_3'!muC?OK6[N\?BHJB0=3j(O.D"ZJ[kF93AJ. -lO73d1PV"B)aeji%UmjKLQM3O6hl3D@MD0h0XV](;EuU2nV)a&7cUYCck,:c6gM$:D<-$(WUc+*b$sN -O)aGK8,3$*A*ei/&J@H%GnD62NRLBb_kgPa7M2H;R:K<'-i"q"8MX-@5! -dAk#alP3a-Q%lT1qH$j9@K(`$(CO#CH\Goes=]eCIr7- -;qeDj[b"^[@;KeGZaQ1NgKT#EDJdeY[:Q^CYXWqaUR7[12-&Q=&]>W>o_4t6m<&Ep -+Oq/#+))kMCke%@@BA6)\$pP1h>:&oDY<#%(QS)%X*8l.b[eF,*iI#R/o=gRA -pKhrC#=\u(%a!Rt[#f/e_l+uAKB3%D:aD^LW:1:iSHFM6YBFZ2]aH"[-+7eNo2l1Gp#*]O?^Z0>c@fZN6fD/g8X_ -JWUEFQl$4hKEMN6&18IV`#<&'%>=oOSXim;''3q"Q?'uLb5$65.VrgdEu&90R?o^A -I*nC(BB%\s#^c7c[8sBT=VClM2p=_4_GS^J?S/6fsIM'GA;^(&;Fb3:E0IH,lNnc[qSE(5l4[["+ca3(CAUNZf6m7_\(>s+@I/E/ZhC!@b'K'g3\ut5 -6E_0(#;MYa_[`agiRei0\c#@YSdQ%$RfEo5e.MtDWp=*(ip5hk8AuCToj;pmrVsG' -54gH#hj%Os.NJ`'hfSVtUVQkI&Fq>pq: -Rdni/@WmCh-Fen`4VM6g'F@!^n\D44^pFFc;tn)_%RB@k5l;0Z$kYcEo>&GR(a;^( -J^=Is70Xoa)X&\(808(%3<>T2!:oBeWlZBN(5E_cJ_F%S9;M^\W<9-HV";sF/.=jM -$c6]n6=_I\E4Wk2.RL3e6G+j9bUl0:/hoI:M[34pdc$hH%0S@n!pD[/#V`8d-c,9n -,-VduQkCd^%ir55#EV%K'B4R1`<#TSXP7)0;jG4a6:1Su6p*fS6ph,70#VQr7!qNn -N(HF-8jo[%`)sL9,PhJ?7\BH?W%^'@3%5m#*\:Ke/oc$HJd%nT'"Va$XM?ZKcp+:W -XLfTP]/32L<*_mc?:E(E[2_h/$t2UF@R_nY7Qb3N8S,m1[2e2?_,+;:TLOaa59bF6 -QcO6#J/YEYW>@>QU?!3nP#Hs"41a'&`KY%h@5tL@?cQtp7GN+-FEf4XAOihK8%a4> -b^E":IRiVY7uT,41Ym`3T;$(RZ0A"b>?:i@b,fW5*NJ@pH**W.tC("Y`?O!8;t/#T1a;>pF#F8C0c+r5;7`]M0s* -9g$g[KYpMhekKu49mkSfN7fAme<,&uKdpF4N6`g!VLh)t!J>HT"Q9IH#Ko@@\AZYp -&2?d+T?XIe9f2$.N9DtVg!6\b:;#pgbjA0\mM;ng&R'<8o5HADhE#aW"1So'lGn]8 -6%H9G!B]Is<$=;*DZc*oKI]I#N:5*Jl-=\V:Z=L^m/^$(!`1HN:d"qX8F4\']Gjg` -!h`"Wf`roB,Ku+gcYFd.a:5F!`K-Z7*V?'\gt^7erm<"kd4H%fblpsLf8"Jb;109Y -N>YTa)H!UU;8!rHboK[;*`;;H;>hV8%3\Ui,#U!;;EZ:'9dN\C-;n\.;LKrkN@@br -.T3B!;S=VZbq2iL/lM'i;Z/:J%5Cd%1/fb\;`us99f5jT2H+HO;ggW(NB'q.3`E.B -;nY:lbro"]5#^i5;uJNV#U>$45u]-re1F'f4[i=-7T<)Oe6PRDNC[$>8(=Y4<4,=t -]hMJN:/o2.<8C@"m8-d7:^%CTK_SCG5YhPs-Nmg`K"*iG?n_ZGD$*$JWRr%\5Re8, -FN[kj!2tYR%%mW?DZa)`L.Es"!*TGc5ueq&CEtbNOIT4\6Gf?>HPPB]tIXX^0AjrgYKVL%DZ3h^XQPRdc^[99nQ\T -)-f>F>^a[uNQGFrb$;'l>eS?dc-9MLclE#T%FJH%dTnHR=M;RV'uJd,elLn; -K[<_N?q:HW-j250!iS4bW&+^'0`nRrK1I18fGC!$%Bb,TW\=hdO?5S4Tn]d-!bGmE -#[d_T2[-]@"6HWf:fRR)8Hgdo"Np0UPfhd,t`NVHkO -pYW+K?aYAh4X"'Ara5'm?iC%5%KS@C'+lWj6P0_WqTc1r__kl(^-Fm_FGGYlb`h8e -!W'u)9C&Ykr>7Eod7t5"4qV3/Y2C?7@6PB6:).2D(.-"R'_5\5qS7c"c:i=%!Sg^% -K?9I1$cAb@3k,qml8/]K27EsgYe^^BW$]76#iU4EiIOQEe(?2JI@_OC&c7NM[ -KApkc(_S+P:b)ZGiQQCF,u>T@!e@q`=>$+'9T0%L+=rV*rWHtDM"s!FL+2,B04X-/ -A(g<[k!)`UN\,96m9:^3jSJt,$a!\C?4"9=m`!4'Wk -PW(X"0#a+oV"'"H?<(M7%Oj@-K\?kR.D\+)3h'b5Y=oU`F=EN -$NmUF^\C!CMLQaR3(7l*2[Y5-0IS0.$tIjnj^r=?G&5Pa>NY?lB)Za^%WQ,!o&dJ> -Z\^X"O=CBYie@^jK$/ic%G*6>Ejoh;<:1[=5h/*I%,>tjnG -U.SkV[[?=AWbS-+0^bKHcE1j7WKdkq`6YC>t]eM1*ZoU6Z]P* -`TrWk67\hWf"GnV^22rL6>")O%af,7dVUVc?lmX]aAP!fcSa4^35ji)gpOKSN<&UD -!M6-V+>:23M7P=<_H+tM%b0nfcQk-lmQT]L:??A"k"=Li(k>MbqkM:df.9RR9US7J -nGbASP-neE4OaP*%aAl,ipS5cDL2t5DY7pSp2=jCDgX2+6&3>rXJ"ibDQ"jtH808u -K25I&\Ikt2bGDW+-1@/kmk4c[:AAd8#&nJcE.8-TY6:>A7'nX1n%tWHRj@(Zft;uo -"2GGAYSFr)M`O$I]-2a'7LrsH"EA>^nUCk@%g_]t)KDr"EPEJM`u()-0a(8[-[\c* -?m!?C0C>'9g1"/Xdg35E.6J83_Eg-E-Ppd[.IsYZ)h/jucRj1p/opD6/\`cLl8g:k -7%Pt+[FBl>_:tE=::678b`8O6Qn?*H.:]Fo2@h>0cS4tJ.ns(uoD_'t%mb:Z6=n2$ -[Q7/)3(PO!GF`+b'DN(cmKgIWIH,>uj$GROUebL'84CQdo@He0k>2nK6M3!1F[&iJ -:K8L?;&E%RX8B(_j#`"r2f]d_^*jZX_HA1<3CAN?RP6'E]GC[-K]I_1ns<5HDc$.7 -AAXs=p4$b!O(id0C)O3d)!3Mc_6b.+E5PX54A[-_ckjJ2b+dlJ7:X?t5\^B\.aP78 -o=0nU^Nk!8H)RWUpV2*"c[C#pIMM$lQtTC/01AQB0*?S(K#_$qql>9a4963n]Ro=8 -McgtR+e'9C.aNV=Vi>k@/)C5aU+_)B^[eM64!i -'4L$6!.pp(!,dEs,5HlV`hSBSNg:MHNqko7H7u'/Q]h2PVL!0YH@Mk&IuKkhCt2W9 -KZXeL"BdphbV0*KR]m7?5R8Rr+@qru[FT"6g*O53WV^V/qf,R2O1BV0\pLWmHaph; -JVJk&i*omK!cUrCoE;6\,eRlB[?_)D_?@(s$Q$3["'?bT;Q0bn3^20/H[j7c:-\Wr -c@#*,I/hQ98'@T1$q6=:"!N'6XG)l5&670A:*BL=GT#'\,;iNY//)Ct%]Oj-hL-L' -2J:D9&)hsZidNNQrV>n7)m:@Y5U(P:l<=6/GsaCSofB<;efZjP-eg<:BUAbBI*^l' -&+D/`j*r`RImnrN^b8@\GUM9,EYQ.13k.>9duB#jjL,][UUtY -9kKT7SE=ZLS5/7rg'$u#5G?G;P^526MbBjE.9,#T5,D#N^Zs?q`FcM^Y#fDhqZV_n -A$T6RepBi_eSDTtD:\T<`oV9Q?#J8@`THi?^0bg1r!!B0K>M&9fR-.9'oU(AES12D -7jXAAATHIO`b./uc=_4OrfJ31%*nr':n4;&i.?`6g\E'ZEpS=Vf!(Hsml3;4M>=`mMG=*61q3Gok#Rr.-!3 -;B1N;aO3.7%`<80PpXV9I$Tt]!c^V0$7*/s.ZoGKZ9LBFUTEedVg.J@*lH&YncA1J -13jAG+kAZ-k6Tca)T+P1Adh$MJh@PS.25bgjQrEcd'Pp/6r;B-)+Ds&fO.q/RD?j -m=>Y0ZC+'G'@O-=/kaKZW[=72J8fbXkNMaIT7c&GI1K_d]F7t0,LdSN'<.c_M^AG4 -4NbU]I)2@,&INaO, -=Ipt!in1t"*T+?^nW)XsqC_f4AXKDd3UVg&C^gGkau>)'OR<]%_pC;i%tLAM568gG -p^8-]6/4MT-MZ4:cU/jr/!,I0Ue6oHM)&(fjPuL)PXnqKNU'^?[ubBork5Q%],neo -Cg/G$N9shUfs^;&Ic7g)>Ft)jmb>JG]^K(]q7c=PrrCYeg`FkLnB'Ga;HXXS(M+HC -pt'PE05-AeN^9OM&KcYh+FT4?&@ab;@_i%J93PaR -a^jrM8cd+lo5-pJ4#dY0o;Cfpp-+>*`*KhLHOU9ahd4i>Va+!KtY5Sl`k#EX05 -6aSn+Z,dmcaO^kE4emr9\/iPu4M"MhL -jF**:r]j!l"X)kOKoj_(6qE^[pnOp8OjZ(\5uBhW`J@G*/"f!5i5QSQk\LO*4<+jH -kR1ju,!=e3T7RAAcp9qZ%NsIN"@8t(K!<6&iO,J;8)3tW,`n&WqFAa)KeR*a^mNRZ -S]J@,1?N,lRF=?59c9cak+pOrdp?ibQ_-"p/BF=!_3#_6"=IKZN.M)sA;1ZC/AeXK -%A=++!s.7!JMa?_J7a/>5X%:t\0O-9dKKe/L)34G=V6\Q@nk)\2s=N&U!tuV:s(&8 --Iij*e6\)2RPdRujW1,GIZRGG77cBk&Y\hl7_>UL']L*$5%2D)"hA,-a+/:8a*7uu -OnY4kquJ@A -C@,H@ZW;8%2J0$W"T.O#iC$=,&KWNUY_f#]b\Dl?W]>]^2kPV`TK1pUk.lm2"(T,. -!`@hf%unHHLGG4^":!n?Q8*Sn"o]( -Q\t]I<@5fjF7^E&W$JrnATRr&h-/`*C&nIe[Xb=D%[JE8N=a5JXo"'$Z*("^S'QPf -jr;4jCCj0$m>19Z-,eH.'OmS4MXb:1`Rqi>iZ(1<=3AT#JRh!\d*Zf!XKf?EcKG=< -l5i4Sq[[(4!5L9W!J-.s#Zs_,:dkA57%-bh\\'m;V_3c8EJfL0[-Xb"(!NR/pq@'sj:>sng -qg`Q:"i'"ChVd02KQ*Lt_Y@aQiS6YR0Fe3$32+2kNBBm90d3Xm85IR)lN[KrmN+XI -e4jS*Gj(/Ol@N"jdC/O4bMEKBq56%2gfKuE4sSAKk<8"`s.FHTL!]ZD75#Y4S90pg -.3(uVekX\9Ka(]jGE0:0==%a6"1AGV7^s@FPUo*#q'_uT=+C;hpD8POA`A1 -M#/dUZ4J5l0*`<['?=3s"l:`$!9a5S]&+[km&29P+Na/*Y_nDMAGM:Y!)NatO1sV7 -\H*6T!DjR5O;e5I*s)tP!73(*VF3Y"1uh/J).`H)TSdD*;J#nuaC%(!%#+kG6NcR< -)b3r-TXku5]FGH_&5=EPcRf3[$NP-a#>fG#YTjD"Ig?U<#Z-9^OGaCg7gF!Q!$Omr -6hh-QlI7(#Jngu?soUW7[0lMT1S/Ja7'9V`m;K(%03'X^sn]& -,c+"X#r(NIOHg<;lpK-\%oE!2OS]R8rt#bE&4gLFnHtcK'"2I)[mt'.n'W*SapW/L -ShS7hAo%O2/Fa)M$\2V'^sEESKF=I:9/$4BJ=M5\lO_G5'i@m90aAH@?PX5`(/\][ -O_Y`O@24o$k.sUjmPLn9IZm%2)aMgXN;ClYkQN6aIqL[U7WanFp]mlG5!Z[h%J%8o -0V!!D(GSu-;7RXn[NX%:*)X`rOin`lcQ*VH*CDJ"&\>U[e:Pu9cD0ftn6QS7^'bGW -9Rog8#'^3iqK*i8MZ?`d!-n5E1^km`]8e_RESDH&h'*IR,"p<(E[r?^0-_)c,>pHF -OSp?N5)mSq=Gpj@L"=[?q@:_oVMh1Zd?qJ+9$!#Zai>YD^q:-$*Y;nF,SDIK13Y+e -h'94X-rPgKP)Ca:O!tPL-h;NRc$PHg -)IUbrna(]1IZdR9-aM>QP*[cC-Rgh2/lLjbP3XaKmk5&7/b7WRD']BaC(8LBjbZ7T -.8GCE(u?Ot"j[Js&aX3T$Ede]b0nrrF"9#0/s4TR1K-4gP<1SL5;X$?Kp+)AN[V%Q -U>m[R97ZlZ7.(CJ`ilLs.ngSlN^a+JpG%iQ0G%d,dkN\CIlGi.E7768PD_ELO#[l; -3E)5F;h6d,1j9E#.H&`6c9?;$h@G,^jN@t:#SAUqY:p6<&?dKYE90&XSNRY44[_.f -PM87Lh`__65#^W.K5!J)T%XNNn$Ag1'<h801-F06W?!3PWM7L_a8G6g+UH1Vf;>q#:\T_29P\!c9flj33^Z] ->O/-jNJ=)\luA7W7oV!/D`pJ[In19+85t@8P`$bCHV"GL=Uf")AF9eDcj+-X"E?!' -8,F0]J=^.D\:AC9:;iZ:,cSUJhk6F]'R_6SscsPhSp^hbFmG:/@c^2!SSk -ffs:lQGD3p6eVgd/-_&bF=M;A^`N"N8-@*JQ6Di`C68]lb-p7[V*gKio^,@Q02g(C -:3AKoPrhpp5?&@aeC??Kl*siW0%*@VP72Q+.(8Dnd/GP_Y[l#]Etj05JdRD)%&M;\ -mU3=M<77$d<4.K`:Lt;>D>$8&X?:JX89]$G(SJ/nJA;UP.*&"5#`8QiLGMd8!gRAN^eh*=Nr_@9 -,)>a>A[Y`UQ9pt)2ef^e?bi0G-ZN-O[Z`-u\tG)lJ7?a3cn;UTlqbR6n44-@ -TNIfO#.]d/\E\_PM:fjA+'QmfBd<^u=$(-J4;?BJFB:tSQV2GP:NZ``F;ItDn8Gr[I:EPlPieV(`?jY$iBF2a;Q=#C-mLFZ5Y4Q^`9PT6_78 -FdJ8l<6FH_SncbG'59/@QHO+&oE.nKVid@W9F2UGGkd3,L\I]pQ]GITP]] -Qg6fdgNngiGGjA=i7g-6L<&q^h5.M$jf7.BWWgQ?#OH_3BS[5?E=O7nIi'P]fIK;? -m=Q63K31'bQoc;?.=WeVE@5aWbjGu1W=;+d2?8#R#u8;2#ghr@Km4H#m:KmqLer=^ -LKH,]GWgi7Iu"qoLffE/G^"fk3-V>IV+\>nN-TtN5:_GffCT8Oph%$3M$?[^'0(u0 -R!FV7V21MVN*+,ZR*1H6(Q5e`bGui<@?(`2g6Q-I2?8&,5YG.:(r8"EYls7r$3K]/ -X9sM"=Va#W=OWA]c]%Z5O]`K_R2_:4=ciFdZ\X*UF!!(Qj,S/o4Q&LZjgUFk6L&Mj -$#bM$i82)1+d,u,OuBY/q-0-;?^;R>Q:f&[GeTOO_BC;[6(naNl\1CZK7JmnJ1hd* -2]D\X=-U45QFU"]fpYMnB:9^5RTZPWRAu?/Q^\)7dTG7`o=oIo6W"R'I"sohd)bKb -,cM;$C)I>I3LQGf6^l]gSlt6JRHpHbSXm=^.8!TbEc@[ZjVTB3$+-B.lO=_i%0Xlp -fM*)!9=E7`,G/,rRG$PjqCA;o0;BFAUJ<,0H96#"HJ=Vcn;BRX:sNFf*k<]ZfS(:153if);7FW"K09H&)Re -k*;V!#50GPa']CUJeA<./HQR%p,f3VK<,hWVu"H8R`hedc`IucVY\ni(&ekL[L3*; -SKQ;R&C:Zk]UjsTPpUq_1pa"hEEp;rd@kRg%3c-F.1+13X?++uO^"qL+0lh1ZqP]BmGOS6Ntf?cF'qA@tpYloa;@;".1uj=[mmlji+$GE/qf -8^Q3[p`iI9]uHS+`FL45>arjjT?8.K9q7KgWIULaG94n:0P4SB/`S?UG6D_%"e:6A -*/Uo&28D.2aaC)4Ju?arhp*5%chdE$Uf`Bf92hYCm!+'aiW\^k4KKCUUtc*5 -5;h4g$R#;\RG#i5+3sb%cCH?2SL`.E0-,H-dm@A$8)P5hW?2`E%\QV@Y)Dgk.)) -&onXd^R'l5rOp@E\_eG!hd-!6NP"''W0l\%CRrQgm_P7PKY]:B>-:QU4V>o2^(!nM -!r`/U^&`-mqr8_Rj'F\)N*kS94sGaqfDu0!,N -lJD%J?%.XrSZV*>^[*#Zls@]+rk%>cUO(lg=I#ltk"`cYZBQ/JiFb.%o5(W&Bdtn> -1-WtOQ&4k!s6q*4n6ZB\T)7m?@%;&4'PV@mfMZhbbas[XM6!2NON<^&D\Je?:N0j; -fH=p@X3Fu^nCOT-T1eh6:\>f-HJ_6VC>XA.h#,o1%;uB84%*a):3/,-FK>dF$"Kup -lj[BH`u3A?4WX0%>PRT\oj=']T:>Z6SmpS[q'b"b-[UMsXq8[nK]'fVUTLn$#*g\I -Iro1J&3f3JAV&4%]0E.jO9bV(hu4_Xra4efhqS!BV=?VW[t,6m$Lk5c!,!aj%AXe; -aC+X&#N&%eU[\*lI\22;K@jVXE>l6E"VsCOeA!T,IE>XH+dPQQeV35!J/'pndduoRE]@8RG@Lc6(u\>oU9&DT2DTK+2*g$EnLrN>U1^#AI*qu0q=S&sjdH@;B! -Ee[Va=-SlK;Q;Hp=?nQuLK8*,0Um\kOEHRlH0@ACaKR@S![q_1G`L`41)cX7=H7)( -UtZ,=0=8$V]9+@n7% -LE]9p1linR1/sSe8[je8mH:ER`Ss -c'),]3)0"/h)\:[nOQT8V%_]c$0:VY-kf$i;Z)V'E5jRO6Z@Es%\ZQ-L*=X**s\Ct -cn]j+_&:=B5$Z?!:8dX_1j>.GW0S=1.^N -?s#<%LLOAo2329N2H?)U=giIFBNd[02ka)BbB(!NnJ -!g+i/%]5W;/"hIpdPut\a@:PTkKro0T7c&GI?/oHhE$>^i-&oG!e!HmQX\&;&ebs# -,Uei?5qR3lAWWi\^;OPNO:%ddAh"D3NDjs4R#Ll;:F-atF65K;B67arQ>N(&q:!/s -kIL;9TP-A%LSAIn2NOYJ3`_TEBtAJ[W+nAZVlFLC['Q:g3QAP!l^HD:Y\WdR!)46g -Yn1<$K<^du%!;9>70h0f??m%>)=folp[BAQO!*]B3X&#-i#CW!H'0ij(i]O^M^.me -4sWMCLb=]I@A#@`VMNAHo6g!e6]A;G&8Hr-Wo=+I*tQ;_9"gRop7V$uKFi/962,!`+Z(R#&>g1/\602JF>&@[ -`Yh-'BanLX2hqt,*>dp0#[nuCLX?;I`&Kr.7DMq8c;6L2iP$64*"6`c>^_C3./Uf2 -'*8G-&ro68_?3>))aUDL+^gK0!\+m_+I2a5i;*PNA8[C-j:&hs<]J!A4 -IREts&l"J^`(5Rn,UA/,dO%<%Z?m)BFH;Rt7S-03.4&N3Q]i%o9hDlU-Y2kAPQou4 -8BDSpjYWg!&s0I-OIR^:30G($>XFB'\fB^;C^epk'd5ho3Y#3sKn:fC$A0HRL2hGP_s"91Y\mF_GuZpR -FR,M3[1u:Okri[dpR`,]I8@EL5A0WgTG.T]:c\mmVgS'/'HVs()A\djaJ3=*9bC#i -D!*!Xl4-Uo49=F=+.nB",/@b\2pa\a8$I:AO4!ben/jMtJ.@Ic>^M6f1dZ`fmgd.# -Fb`4c3!1it).>W^$Xf&?-uDJJPpV16Wf[j+/PiA]7]BBKWE!]@=0!'JX];sC=).@T -WO7JX<]ZRMCD#N:NL3+%V`#XW%7Rrt"$K]N;-)?L.94YSH`F=8:TA -U;@?\6*Lo[J=$tgn3RX0Ua6?K:_O^k9b`kabuRIr=fg_W4#MK7>!#;iD)J6!(8fVc -]3/odFg&4dB$T-m6#A1G[tglq=3D0\70\QY$['0h!nhnu/%(&@('`jP3s.u(i"Q3Wu+U$,V#C?9;qJD8kY:[`7uH]@hOLFmm$\`q`t'l$[KX -pV-m_nm6\=IdcsnB%/uoM:O<"SL^'8K6/u(A`sPXR!/ZL*p$flR>#Na*O)oZNt5X` -#"KeH#9uVf"d+.fFZ-/J)Q-SM]ihCYELkRia&$P' -4`///:D<"00OUQ43Wk0o_>$D^f6j^*FH4AEC]k%T;"3A[TIF:6*&'PW$`u=qZeHDL -cKbA=[s%K&g`)#gDEZ+PG;eW=]3fDlS^k>[q^c`\q90#nj%dF5,f:NbI;Fik('nRg -;S[1?!eI?h_P/+_qn%"?^(nOlY3=jb7u8P^h8OWJ(ZQKJNH)Zma*@>#j;`r;E^!(: -GrI,4*2f'B^0/X)G;&(ua-h!4C!Cq42s21DSTDMjc[#7LkT'o%F?YQ/H8e@Y*@I\* -^7!GrG>IKE8#^VpWRZ=(=6gl>X`_@gf6[0ullCkdG!=%$HT+_7+WO>PT%D].B5d1n -a0t_+iS?S^Fmg@.]m"AihL"^ZSV=f:ufD;+Ll[>D9pARj#m/0ZL -IQZH]5<%d(+/ed\^Y/L6GOPMQa8(3Ll2?+@p\u>urI;TXs*sY?^]XYQ'EPup!l-Vd -^@U_W;sqG+"MeOQ^iTjtC^In1$:'g_^r-Vre*K4G9a/<^K@jc"TK^0H%)B4l_=Skdllj4K,!ltf_F,Wc<$OZ@ -"1fTT6A+hqPUWl]-TW4o6;/ps>V*bQ/].-36Nf$Z$noL41;b@n_]1MN1c7Wg28aMo -_h9p8PW-K".mp[*_o+[Te31_15/["W_ur?D'LBLX3Q$e:6psD\<'s&a7)Wn1`,iW- -lf!KSAV0\10MioMn//u4&&DKe70@$DYm&)3fEQj\K!ZOaj@I4BFBHMX -=h^Cm3LhQfe6U&OkdY\g2e6=9"C]:I@`B*l7O2K$A7!8dB#\n57RUq0<+O"B=#+3j -"?9lmn2H)p1P2mALO_Ge4AWe0EjU@FKBNW2W"LFB)2@?5!]X`n#W+&2Bh#1NJ)tAaL$iHK69_jTu[``d%QDCk1<4U2:]$"?jbG;dDYcCEM^%73CGCRu03bpkSp7XN**0PalgqR!aPE$R84D!_Ek(A?m&q!R)Or -bs^$RjM4K#f$/1fbuDR)N7?+:g-knn.l9P+L;+oKK/_)GaPSVs%r@ad/*C\eIg1T&rjj/d016372=2Z(=?+u$H3ZU -Po7uCWDR4CdD[&^_M?.Id@;u$T>EWZ#SSNLOcW1u.3`S`O?3IeB,d7kYYbf?d<:d@ -Wf7>&G9m0U->#iY0+O[Y;PgL`.1fs'nU/Q_F -i'u;0!RTYFf<'^,mVo3(9'o")8iNJqA5BZ=Ll*m?uW)@9D?Tfu/ACV2nd@S_<\)g$H*!c(Wi;U5]n[ -g'sjfFT;RcD-7GFR#Pn8Oc#VQ!SNG4foRP7/YlS3TJ<:<>6V7?4g*L=Y?NligI8D- -[bGc=>?/#aNO7H*]%a$3>CF0=do5"l^>$'1>J7gP?+o#>_V<>O>Q)Lq%E2R@ -`N(T.>_U8*FiN45`a#pl>cl3^jiLchcId9`h$)!X%F&0):gE\Bh*V"p*S&s\f%hq0 ->]&!HQ.a[sem3^Yh6l%oKo=c`hVIbR?.I_9h;MZdi7BRuNb!oNDJ?L@gOe:kM\<8iD(4u4rK7g(?)\@Z_eUK -eemB.)I_lL@E'GL&`7$R+(@,Pi^OC:*[TfU*9'^60*2VA:?p>`^XL99$N)]AB%2Oek"Y@94[`lV%-72 -c;A-/;;492AO]X^DGk%X;e7R_bEc.>Q1 -?Y23+a9H&7-=u=?B$[>bAqjuZ*bK"*B4e#VT`/Y;enq!*ChBhgk4WbZeo#+IEfH*! -B*N-amB?#=Xrd*biH=uqu0m7tY(4hnQIcpugkVe*N -eq.RIL5^#(BL[L8L5CbQLM4,SQ=c"fNfE8RC1tVJklAE\mYPX)NbL%OkmisB;)7AW -PA,3+jGoMiQB5g8PNfNBl+GhdSt5-).d=++C'L,Z6]'FOOlWKV@T"X4Y]^,:'C]0i?k/$C,g2%8:litDiI_tG`47#GLCf\U4NlLF_ -b)IaiClZa+LN4./O*nBWnf&Kf\D2&hn4k0Eekf#DXJ -qepr_`^]pr(!,kKs6qrHA(LbN-RSCK.e9IHEgJ??0.ZUC/onDuo%,SDmk8`0 -0(Ug`Eu-[qLGJH#2Y1?YF&t?K2`L=m3cf:^F-f#NT0%,W3qMl&F4W\'?U"(r6M)Tm -oG9pVY=%p]7W^?UFB;#XIn+UY7eEqSoTr83s%;p5:A!VUFOs@4Io#^O;KVPBobUTf -#?,bX;Y>$8oiG8;^K1"l>4jgWFiGTtVd8tEO*/cUhnNB5gD04e]B -A9N'$p1IiXNuW=mC>`H5p;^ld5APH&nb1:?p=F8(LMli5l?Q.:29V#%9m -onTOCePZ1`Y55j7HJbsL:TsW(ZMO&hHPa'<=0qd:ZVrcJ3k5N#?t,Sggo -KL0*D\7@K<%ulL?cWRnRp]3W/6GJ2o'G^Ng^-^W*@oQkpl\PH_9 -n+V3Uh`lnFjn8P"s'K^-kPG.lcjTpU^[NcX"$hm1f`f3RC`Nbt&<%nA_N:iN$c3>k9N`1Nd>V9IZLHXd)oiQ7FWJMbm!Tts&e'G` -7M2G-,0:H[Pp8k`9Ud?MdYskKamuO0.nYbjLFp]4m(G'r'+Di7b`aU&1S@XYeL\t. -`8*;qo5*AGc;Uh)43j&.m6%U/7/]?s'Fb43d$-*k6dScmpI3D-D&#QMb0([_BTi)hI[Hf5f:'ntV6DB4MYfJWtk -i`N>iMrL,D/WA_WgR!_,)%K)tjI%Vp1h51h'n"/d4DOm]j)NLVPBc=.>X6D[jXfZ@WhS#@mHOe$"m$fWP -Zb5#k\[Cg/DS*CFRtfb/cML)u]C-]aotAS=T)H3=)lEYOE',3O_QLN6'uf^5D]Qmb -Hp7qZnm&@1b&[Eh0s'pcmlf"h*=kQ+F'UFTe+7uH;q,qqCmWQC*KOdbp78:uf6)Mf -ES^;YmrdN3OB6;Xpms-uj6<-GQ/HqYs./9IrbnI0Goj/klh_aL[$gc>QbDV\*q.#8 -r**73oDKb,eb.od-f+=l+"uOIIQsG,p4"11p&4o\J*?piZh8iF!Wg(R#_4#`$%Yo* -#!gX=!T5dHJ?VcS5tE:*:NR)!:i6b/fK?QL`#")'=qX.=9*jK2AqTTU(.-YZ$cl!j -Kb2NC_cUIZTqhgG&FLT,fR4:WN&QPhjs!0KN=b)2E/5)Y-:HLVk[HqWLp9Pt`E9)S -etc*";/S!TfXsl:`)_b8N\O"*_\pp>?]@pc2Fc78)C%(LNY0Ps7p+c,@s!!W;=6V9 -f]aF:r.0mV$:%-?%j,=MM31[f6-)V<+f$ZOOn)+8'Y,)-jM[IM:D-7@fdeH2UnO"! -ekO:i9e#0j%$Ye8:eJhu.qOA&PqpWg93H)VATYJK1?qrafm'A?]YTt6%Up*^IkKkO -^6pbuAN]481ZjAQAZC3!'0br4`Od@<"qG#$`G -NMe>lSFaaH:H@cgkC!)t;sm(M=lhm2o`:ZUqL27E%702DWh<;mJ^E*g6g.bmTeoN% -;-5tLBQY/d'P9AU[>V%h4?;bCUq75Zcs -<:6>U.W8,I[6^]*!a/IUND\t.A>kbGTiB0i;dDg`W`;fo9M1jUl@i$7.n#' -"E1=uEjA_,buW^"@BEP4[RRjO=t>;FY#V#of%TLslb^<;FiM!ogA,+5V0T:G%`1Kb -pL3C\Lp.X@'\HV1A*eeVYuXW>=M$.r(!VlICCGX":qtBhVqd%NGf:)_7)qpX8kE>Q'%j!a;uo`E::uZ+OG'n]!SVfZtUK>^MGU-9B4N -%Ao0PNKNd$8]b*g-=ko&POaH*b#qLiAR))\69([^)/Ceb]Y0YQ#$fATIkg(*adM`Y -C!=,k1hOt^Rra=&c<7b?B,p6-oWL!^el7;1Kj -U\&/[dFq)_Bg"&D[)SB[3aYTqh)VD*hP&EPMbn.O9rW8)Ut&Y@45d5h0lL##/Sqr%q9?\NNr1Hak9lOAo-:oZhB.$g07?fD-a9Op;Ye? ->AnCrh7^;jrial,O&k[S`OWH)kM9@?G&E;q](^[@hAaddDdDD:pSR`BgZO$(^&>[T -#6!IAs+,,p$b//c_8r-"L(eG<_tEI&i-\=WEF&sjpnntggh2Xe^-0KH#9DkfJ!"bX -8]gcM.HK9bP].*UbP?oJk$66$F'`_.q8YMY>jn8*hL3`H#=7QZ&#+/P+3St#/EpEC -VKAE!de\/bl5`Zuoj4KF\u/Wq?"^<_NkMMT2_b:QO,!@7bY#JX1$a7;Y4fTcgO"]l -mTmT\^HLb.#FtEmJ'n*78Z'.le*R(;ee1bW[(S]$p0O*>HQR%irO9?3*q.k\ -hf\D$kC*%'&)qtDNUd!P\:ch8gH5p1*RI,l^[1r`KX%rr:aOJ&8;dJ+*A-TCW!.!<;Nks%iLlYRJ=O -#66FG!H8a90Fn3R+GoS$!cT"YO;^D=,6KVV]$N#2YU]hF/mM43"E6o+n3I0'6No/? -=V+40Y[#(b:BiLQ##J?@n6ZChE.)\@#&nhmE-sA/EsOIQX`/apY\=C4N,cmO!(3+#A -nRE=HE>A"c:U+[OZ$]K4D\mD7(b0G?nVnCKqL)0(?JVl:OGTc,F-)3L1%dA[i- -V&M.rGnI(rZ*,(h=W;A"*+X12dD6gMd"HD\*HB_QdF0**^E)e%*O4iMU`1@Piu^#7 -%FOPbZ2AFcnK2cR+E20>ndQ`%]-*7?+&Wf1OqAl.+I<]Y,'"JDYYcT"0d@o9+gNOA -Ot;h12'aqF\^EPbZ9KW'lQgLN-":p?dTn-H?PM.R/jZbGg51BO+6a-MY'O19D#J_[(J'A`D&+K9U*jtZJSAUi4tT1:3=^b<9$aE -B24]I::0dG<:NcMgJ:fQ:TCs%'b)BF#>]IW-8c<2YW5OF+]3A+;=tr-Z2[ZY0iDf; -;Umb9oeTKG5p95i<,pMgohA@Y=]CYc[+.rO2,P$0=&q&NCKGY4B($Sot=O$ -+'Y#KW:do028K@Ea'CCJ>d`6il*4Moi2+uY>h/'E[GtT_WEs`??-,H@(&Xf6pKk9& -`g-R3Y]4&/&R];>@+H2)PkcX`>QAZ,]C(2T<1B4[BN_,bJeXrD"3JS('hB@_m'[Y&49 -KX2GPBl%d&p75nIUM6$iT=1G-(9M0!Ve[h>C%e`F[0pbN^l?pUCj*I?p;:_=j_VB; -D06_5(>Oh6a_d?nW0Z=YX5.YOnSVsTDV"T=(@uEF!>\`5E-37A2YD%>l#;t((=s(8 -pDdZZ(NM$WEVC&cL*^kA0S>]DEORp1(Gg-u;0-q3F/bRL(JKB=79n&H$Dg1Su\*uF;pOF_$J(O.>W5F-f&KhniJCkZJ3"pl:3J"[dJWY),(bBD] -$%k2a^fW7BWM+rH.>.f&K@i_-GX[70:j4llKkZ0mpd9`kCPA-dA9_C7\7%T=B87p1 -L=fjgWrn,ZJ75s5Lj3i6fRo"E(PnH,Lo`t#(n=pBQ&7PZM>4$1=J^k!Y]gqbMe0SZ -pq;9(\VqrMMtjW8QHb@jcrbP7NHaEB38B@Xfo3H%V3p/#WqD>'kDpDCNnF/IR.HC6 -ibNf9OE-JE=UgH-2isFBF'0$83?%sd(Qp'ROkC>0VNI$E0S*@UPBRP$3BU+U3Ki&: -?l;1nVqI:p;/3X9Q"7q#3CT5-09qr9HPp+T[TAc?E(bInQ5N1&)0;/0A!a`[Q^*Jr -)2qeqLR336R/*+m3L-!mTf&7-RUe4Bq2'M;WLG7sRb>5RRC/ON,FUX)ReMr7)9d"Z -a.5(4SGCf#RFRgqi0YD:Sp2!A3Q7TV0:nU(4F,hV[/6JA!=kOfT@rRl)?ZYm\"K0) -8fA;8VKnk]$Z8!GU17E%)D+=f.AJ4aUA?+-A*Kal5rKWCUj>%KRRFKu=ZLOl>OF*FIWHs#RqNIo? -YGg0E?@&+)aE:e1CU[;c5T3to#k9sZoe[UaHf)f5t0 -Bs5-e[PYV*4+3R06b#4'C--pIqffR>Ogr#f6@4j)H=aX5e%*)e"<4&GZ1#2,VjNsU -XBW$CYM6[9^cacm\^W">3j$&Ad)B56]m9Fc)r8/_Q+`WM]fY2E)s+g)'>=;-8:0m* ->PGm7gV:B(2>dEf[O&_8D8hb/t_a2sjJ3aA;uQP%Acl,qegUV*kTU.rgYTkbX];m4?r -&&eAVa3?`oc$[j^][b9^g!0HVc91=Ur6*C`n]s>jc[>Q7]`$1T!RNt5cu#&n*=^;B -&'hj#d4lXS3T2WD=i,ZQ6goKB2_OHk1i>r;?h?08H)r`a4 -i8,.,\TX#t-0!JNiVBnA5!5,Zg#N&hiSGC3IRR4B3LZO8iK[:$5$?t'?FE$jjaLWI -*`M0,A*6$j7@mfJIW^KR1$AOikL=;0q2a[0OGocXkrsr*hIl&$R8tAgR@^2='PZf\ -Xm*R*3*q7'?G2,cVs9k_m!c]2aOTRib>]Opm2jrd^;H>pg[-_$lQ50SQ^R5imI*7( -0&GLR*qeqT`U9?!n+r+0rqGo(8aj3@nK/Tn^BO,!&+UZ"nc'j)[pef0J+:9*2kMPj -?T`*Fnah6!FC-bh5UtCj7Klpp)d-pT2kU"BjdPBpHMgT?Y,Lp -H1qr:ML&YG3]s/3+DR?`9*qV(2nT==^ZQhB74 -r-jM"5ILE]_'6Xhqk)PL5K3T9dGZ1lPi'sh^Vfs+j8L.DqS2Ft9:d7:p_42E"bT," -&=?EL)%D?giXm#l:+6p97H4uIe8@8eO%87D)&/*&-'Lp^&t)_%=Y5t5jqAVsc=o/* -:$31XeF%T?;\N-Zq@*L[7Ajh>j`UV*%(gKfX'og4CnTc*t -9-KM.cZ9toeo!"(b3/>a*;5:VUXNq")GO8)=/jbdp"LL)cXF36D0HqIf%YJ\hX:-n -)eO/J`T(sJ>Q.\ORDA!+q>B*):SlV*p%k5>[qE8+mrl>ah[b3La7FTT*hQN;g$SN\ -rZ<5Kcft-"IK(C]fC(f]s#a*[aT4Wq*!67-n2(d[_/Md["[TAG*sk6[U?__EnA9SZ -_Q]Oh%n!T)3>"XK*((?,nMF/W`Gn:K'eo.$@i6U*FDDZ3nU,Bs7o@3K+%NU>Gp,]K -*.oFh0q=FR8TJ@2-V7FKE7 --;?:Lf/ZQ(UuOM]F0tO$:NO2G4ZejM"!u:c,l'dQe27n-;04r?78_QG*q7NUV(52: -oYiU\;fq+_:K-ohX[lE5Pp94,Ps%c>m -I9G3=jb$rCp&1(a=]RtXB3DZsR/g?TV5nB8p;O@T>B],?Dd2F:T4qP3-)5M9G;[ik -?$AG/E*_];gN?h(A`nDH\&IT[?ME3>G[K\=qgi+A-1c`HGW$4g@fS)6Er=fN*V,a+6d^"(-VMp1oH-6HF1l3Hf6)Lk>3pAH#@lM3*QMaI -G5^<=bP%23H/Wu(-[XluIQoXHH%'CqkB[&^UZl>209PRH^;lH)HMPmb9)G4cZgdjA -(X)ANT(Xu3I",e\pO*!Zi?8(`VsF5/s2Xa0;h'l*pV5nQ!+5p3.o5O^^dnV.i)C#6 -O04&@8km5DPe)a\5Ndo -PVIoQ"r=#eCCK0T4,6Z+*4?,k&7Q>@LliGt4U?NJ,"t1W;)TaZR#ZY?>Z6L,;CBFs -Y`'c`(Q1"S.`M1r(h2clMfG%=7X3kQJolubc8WdgjW5Y:H@QUW -qT$\K+Cj2YO:huda6=0[A5nJLOu3#+=Wnq6P_P>V:nUA>eKnbUPEU#j:HXIfHR.sQ -PEM5-b%N.NAQ5^qP."Fangu::4L:>Oel4`!@'O:U[$Pge?;('[/l!t3R$./Q9F6a7 -Ae`FVP;[&Ipk(;57+7T'[1 -p@1/@Pj+c\SpMg+i(Rdbqjs#FHdCdQ5"VRJTC`nN:jN+ZkS4K!PW":norUP/2$p"! --q[PdZoVpn^Q]PprSPSsr"Q@(^3U -4/S89S($F1:.Z`rW0HkIe-QR\W`;]kPr>NQg5f3J2,gIe(8m:pV,_9,=f[W:X-(Q: -_ICK5&L[>qB?qV>CKm;$XJ_RA'Bm9X7MF?d1U]iU*i?t7`7Ya-'B -=F%5\/6.2)Q3sftJeqn_Fd'+3MFpQY#WTSPUbTrgQunt -L!qjp!pa-=Z$'?Je@IS^mToO#D_D:N\lY3g2=%AhmoAM`GFk(*X5SGEQ1JhdZMRto -msA-4^;!b3s'L]bjR.Hr^UOLM@!,h)0NJRtQo3g[N!k;XL(c=$o*SnW%>Ji>^UNuV -$fV"@Lb7Hn`0cl)@W\B#Ymr;'E1Gcji&)2+(P5!I'LsU -aI*Ni@f24GnkMWY\#1N_r0`di?6%$H="@j0YYHsF:s4,V\7CQ/Qu_n1bIK\iAh:Q_ -BVnqWRC>+enjT"R5',"HG;*Z'd@PF!HSTl93p3UET-ZC7d$bbP5dW- -]`k3RKA=f,2bE7N0kBoGS(!gM/*VI.VKE*-\JgB)C)p/^['$CXqN"\>]fiH>QF"D2 -]2i]qCudF%YLa]a>g.UtYP%>$fM(=/CjhGOD\g(?RhKD]h0636QGqPIK4+(PVm\L[ -Ze8Q,Df,@$[eCQkgl4s?mQInfG='L,ql=c*^#&Ro#4p]@esL@bh7e*Qm*rZ5Gjk&$ -'t8)Xhu".Jf:-i+rQ=rf1ZsQAPk-MYcMA!Bj#m(0FFK0b\]7A- -SMhX5Nec,1J[O\>:SdY9YJr9b=mMVgY;@;kfR"EEIm%#>p"moU31jmOSY*AFNaLQ< -De\WPs0?itn_RSZFREH/^(jDDh0\mJn+SoGpcfALHqS&>?8ooLp@I:VQ\=b?#K?Lg --g!&mQLd:ab&3gpk^=8BB\n*\H@@=+4TD;ORe+&chbi\;O_"*Uf@tY!lg0&OYhOW- -h>9E^m/;FLpn%NG*PZUbITO]rrs.T^?%qa]GLQC*n)=3EZ1U/=bkn#VmjXm:pjTB. -qHoRE`b%DXe/5g0Z`'FMWt%kmhb_!DXuZUd=Q&j[KJZeQ#+ ->S]V=bX"o>5sjSI$kpIY(pRDh67Q9WbU#S$ --SWI]_Mfp1R#aR--c0W669Hecgafn9-:7&L6OGh?UbY:g1C/(W6Nf"rF1&nb2a^4_ -^m$fG>WP0h1W-jf6TdBHHoe5h/OSSa6e]AoPWm#:5e)b8`(WTd$pd9<7\uV>`-b-E -EjJ.Z6c?W/Wt\"@geL,a9Z6j$,7I,^$rB@/DSlY`7S=$M@<75S-mXAQs, -/i+!`_'#qe7(mHA1C8\`f+UoHtUI#B16>h -`jB?tg/Q"tD+=G=[kqg>*-++TE(8o-U!.#e9Qion9h+bua#nVa/98e4HTAHYa)l^4 -ghb#iIn/!"7tcC`*.=o9HcS=&2lqVP,_)GFFi\*L86NjO'T#@sM]gN&aNTW%a@55P"A'.T1"d_N1*=hP0#PFaip3JKU0aHT/1S[ -apaaQm"`^tSOsif8]7Ar>bihXT?;P[1'FIH4K::rREB?Gb/.Q/<38dZXMfdjb7(X0 -FK*G7Y;$u-b5AS=;3j[^[EEs(WPl'bS@U?&\4^AF8*%&#]Y7$qInJe7bOiNjPe,'i -_b8e$9ME7A>cZ(R_9@8Nb\Y?oFN"qV_p#d;/Hj2>grce$a\;'D9ab6#"O9^UcoT\# -btQY<9[_1%du3jmc$[u7R>jj]fhHSB&<,/agtjN&geI_$M]CBobi2A"*]uRF:/'T" -1u?Mok:(N7:+YMO6InnjlV3Vu:6b-@\CF?%mnW_6cK+Li"Q@ZHmEV.P:.4_M4SD=9 -n5"H,-PZ/JSA.iNp!9H-NZ?JC]`(^KQHtNj:^Ud[`<&ZMqbQkdch-SN9a3rG!Dn1M -,uk/r7/i3@"43SI5LfqaXU\1$AC-;I;$o]fbn!C*$de8R6er4!/JM&r;c+8H;2R-V -9c$CW'@CA2:,Nd6V&[hK),^>T-B/ql*?LSB)q!am4;Amb,p^dd+OYZd+RLN(S3p1; --;qN$O=_d,bq)WO.+8&J+13RrjYAK:`)A6?dn*!Vh(dAob0peZ;i9M^t,0<=-4cohnW:9N6Fh0mN(]@lFSN#"\C0#-;<`NqdgG)`gDcZ[O -Im4*b=0qMK -]n"`e939)\fJIGHrJ".!G?B9L=H//>SVgOOMcdZO=Nuh-h2YV)O'(=:JiHT[%?]h4**bSQYWW=oG$t%AI#0UKS\5 -g+B+(?):_AUtU6o>(rkXNN-0QX'1di>-4m[]rbK*Y$1e+gC:>j'sLm_ZWf#g>:$[] -4gj$=[Te0h>E-)GS[_n#\Qc27f_rKfh7d+\^K^ZP>ReMS*Pu&5^Y?`>geGCc?,TuZ -`E[9$>^a_!FimsKb1rQ2>g:Jth94U@c!9qe>lE&U%FSMcdp4!Ch(@,^?)Lpbf3NgW -?&dNCS_@AO_qe>J>ts-\A_l1ehHg*;?4GcJ*T16MiEe+s?9RCV2k2'D,?B+/R -jkF+DlX%8[fPU"3AaEajmp1A+?@D?N%J!hrn_Z4ph`^X>:%hp_pKq5#hei-qSbZWp -ptrcd?N'h0h>UdKs';c(?`![.%K^#Z"(2lI?nMT?4p>>3#%2l`i/S%MQ3^]+s5:U" -@*T3hh21']%q)OO@&=NDrXn*!&n*s;@87Ho?5-g['k(sai8tnafDo?^mGYZ"@@eKG -mMKA]+(9=8@I>8srZP`',%<_Zi_C_-<[;(E*TDMr@ZDm>`[0WI-K;`d@a6K5egt:e -04O?'@cfCSrT7R\1LiU*@@f5a?81DO1#m.2@t$FJFuj,n3ocen?=#JKh7mC<5>H?P -=B,H)V1dn\Nn?fdj>BkGr^LF7"6WN=Cn$5j_e@8f]6V`>NH>tAc>jomTX9E -@90O;AklnDc=:I%7ck1nAilYt/mi4K-0ANMB#pD&[VEdqBP-[H5^$mT%WF^/D.c%S -$!(qV,U[4'G%Y"HB-);1/"Yp!HY9p\B7>/,c?EomI6@d5kPfre/pq=bK*]2BkM+MI --A:Rt-"mdCk_cBR5)O$PLZk%Z5H]J!kq8B<*ggZC) -C5Xb12Pt4O`G/GQC9')SI]d8^=Cp)/qp_IUWU$G@mReO;roR:*j_ckYmO$n1S-SH4kO-!/DJniB -NpLY<_X4esDX9T((@c;N&8p@s<7mj@XEKKAQsqc/CDn'$D9VYtG. -..4P>n*6rl^B.B,!H8E?m[!ll3cAsB"n4mnn1P)I*sQ\`ip^"WE-k)nQORoV:@Oke -;i_H.LE'>AYog`\=@r?HcCJ!u0G0(_IG@PfclZSV4pC?Zc^N)nQD0HXZoLF"I?P<%@F8(/a -pFge_:O%(m6$DF;oe0cucYlDQ[jDpQ-Ju!'-Q)^s[mH.aH=@C(e1p(+Y0 -g`Lmh\U%>Yqu=DOB=7XR__%4hHqY:Q+3#S@Zi"aR;1H6+5KGeH`I,<"r3+7i2o,?P -bpQScr;VuYa3m3pdDBEc[B#"I4s8;pXX[=eU;r&7dn_&LYT1jg&:g9 -IBVKh#KQfcj*8&TrU8ie+5hT`g\r#No3]fBLO/oCl@(_`IWt0BYNu1Kcu8+6Ih-5k -hsZ$Z14J-Q4GWNX'\`O>o)E=+s!RL>J'!19q`E."q2a;1chIt4lNdMK9W!A,+E1FN -*Yem66=I+.F@IDeLW*_"BV\rl)3.02dCB*t5pML`A28EUU.m)&9'+L#KXPADR8%:W -H(=#63h/t.e(OrqKg29XBU!g#-AtNm;^k]"Kg)>.W`3`5BDlGM>HV%Ceb]N)`FH2V -CtA_sgKuW4q\m94*Hc>.?HbNj*fDGgX"bX[#E7fP--P_QZ@r^0!L.T!a^d!QuB_GH_Tr^+rd0`49l -]JU2:OSh$K_pK/a&]E'J;%bbUUfeJ=YtRq.7PUEA)TGX]BcG)ib]t0udG03mWA/LO -,-^VPOW_bD"IUOWZo4VpN#Zh5Io;:M-U9$rm: -.83XhbrJMIeC:Nie5[M\;Uj5[;,l(G?!14Ydlfch<]-F4>#nY*EEh$p[Gi#p#m:bN(]EfQhcLWpJ`,05&SL"2>47.&pa./>i`L@Q -LuPq7Q\K!PhDpVVf`"0ujB3KrMr`O!;2f'h5$+!1RTp\]'[,Dl+Cod^>lrrg]%;in6@%A_Q@%g&\[^=f,;Ns]NoBl ->hjNPaE$'c1!9)M]Q;2#*7mL%FBm]pd.G!jLX1*K?WktQh1&kcdTo@We+VTVESC.M -\o$,#h;G[9Khi:st"I:._a6!=#ci*o0(^0oi9DO%`*WnZopB%!T -]mts*#!j(B"Q4)2Jl#R/_"?"Xi8bT)Y[S/0p/qTn,UJ,jSeOMY<0?,2/VGgh&OQh8 -$cnhgG&YkH_h_q8@H9LX:t[KhfQ@bb'Ldf)&VWUYPnN(e9o77\lpPNL']P?WM"+UZ -`<7V*,32g`d8DX:fD-2EA7CMFL,;@*eJZ[1A<#!N3(FhI*7ml#NmX^c`jkO[dN!?p -;dX-M'B<(e*?/EN\8QGp:59:9->V/3hXdbSW\\V2]6*5%Zb,%)rN -M_aE?c'\)`:J@1Q2!1UaRaD1Lc'atXVM*c+1L/#Gai-1$,i5&l%WE:Ga#U&.l^cLq -/C'[F4QiO5T$@[ecIq/?Vr[ZCoA%8[l1[H@m/s$'14U4Q#t!i=%%ssic;9rU7-LH^ -U^jtdaFRq9^/B2VU9:IdgC.k -l$Y[:1u3X[l@i#K,s&!&)P@nXNDf$^9W7K]Ut$B[<9g;[0U4]#<8+`Yil+qN2.j!k -]"qM*rE_+!P-EN+d9>BIB!'Ut\5sU+>:W]_Y1;+9=!nMal_T$5Q2UI/Uaob%on9Ob -("688'k6N@NLUb._q>tt7/65*[=Xu4=e]jC2[W9UG)aS/erLUCIT%$r2[:q3- -R^L_T.GCN,CFuBd[^O!hgEO=JmH(dcf&:+CX+bN\-,k3(p>B2FO`Jdu`4;3ahq\+) -C@3eU\p$L-?$iqjDQVa,f7*3HCU\J)NTIg4T''Eqa*R2Sm6-e:p0N++I.)4:^=V6> -?^;LV09tt?Q]C^qg]`2rp'"N!_ZO:?#D-o(E5,L>#[n\uWj#M=_73[Hi#FJ+n@fpZ -E7X&XbWgog,iumfT+kb)<=j-C-,b&;(bH,NMm9-6`j-6\@f1A.n`BG_GlJms*/&l_ -mQ8GA+!V_`23K^I:!&VA*9?IMPd7(MaE_,DAXp,cnt&Y#\UQ)o/=2_Zp0l1o1FVBj -eX84*@EWr23+j5l>r+Z]c$@l-@m'4OoQ(#<@0Q:W7BV*=4RgHXS&Hu -^A=a4CE7Na[6ChHg?2i)$q%2k#0#5S)d@-LQ*TdP`n3@;B/T('[!"X[g96E8m;98= -2V`]5Rt#Bp)X"O&-JdJ+k@s?i\[qN5QJ4L-F7.lE"a:aThV6nTmg\s&\(W@Y>L.cf -*VcB'IfnUK)hC#/n\Y'6%A%qpLiAA"W-A7Ri;?r?-%66A31h)KX@J%d*_"03T-!$_ -T9CNPe&jZM/EP57NUiZFbdi#+jIG+tF-u(63Ti3]`ugT<1kWLT!FcNJ_q2\_Fh.Nrbrh8!A-Y7e@Dm8p6cqO;NC$j`[[3:"2 -g\[%Rm`ZKRGFnKah2cOCrR\dqDVO)s#DMXB/#2l8&)sfpI.?&Xa>a\JiOkd]n:"<[ -GeZ#D4AVI]nWqG5XMHjLelogoco\SK\H^jcqrNEm. -c,5G9s*O,s&IIlT&*/+CPO?.tc2#OUjSVfM[lnBOqVNcSI"/Eprh%u?5UhLDt;oV[/\JX!"8T$n.,O. -iWtV^!K\6$clW<#,6C[h!g"o6cn>J41BUH-%A5*YYWDsV4Tl6E -"cudhcrC8]>6Zcg##K(>ODb>BEsC!6#7u(ad!H$0GmI5r#]PD%OH0[oP6eCZ#nWL2 -:n%e'T*eDc$BV"iYbqiTZO7>R$LkY8:q[6u^C3rV%$8:6d)QRab7,$7%8bdg0]*>$ -i=4/o$*Z>ud-hJVo++[l&!6Z!d/OXh!tTA8%WMjd;%F5#&J3>'&WmkAd1m9+)\OkI -&lC.lOY7>e1D8(m'+m/:d5r$S3>>=T'QHJSO\Z9\"Vjm9'p2]8d9dY$@he^D'lfc^EPEI?_\r!\*-&q;Oj>#pdi>XE*>-sF;;3-(h]>YN*g!??OmaA(o,gj( -(,=tn1$]q0"!A3]+7]d^;@Ob3%j=ga+d*E\dMF(t)\!DT,*FH#dOugV+!M=V,#UKH -1-["H5pOfF,a(YCdR>Gp9-l>h,uD?$11)+'!@C[K-B`+^Z=,*nF!jk0-^&g(dXNYX -K.'WQ.$BK:dZ5giP:9Cr.?^/Ld[r!%UFK0>.[$h^d]Y/6ZR\q_/!@Lpd_@=G_^n^+ -/<\1-da'KXdk+JL/X"j?d`j,ej"O3g6U*e#thHZTD*p4-R9&j$$E)5*P:re*fL7o061J5Ekt/e,MZI"$ffj5a2XAe.4hZ'1#S66'N86UXmD7$L>4e5&LI;ajYe7?h"Fe6bZZ@n'F1 -7[.[Xe8IhkF%92R8!J?je:1"'K1Jss8IUInL`8sHAK -e?;LZZV+9,99d%]eA"Zk_b=%M9U*^oeB^i'dnNfn9pFC,eDF"8j%`S::6b'>eF-0I -o1r?[:R(`PeGi>["&Mu&:mDDbeIPLl'2_aG;3`(teK7[(,>qMh;O&b1eLsi91K.:4 -;jBFCeN["J6W@&U<0^*UePB0[;cQh!l@ocTBIZeXp"[UKUZq>*Z-leZW0lZWgG=>Eug)e\>?( -_d$3^>a5f8k1nPBg5rH'b"Gf:R@*UO$"> -HC([Yf<9N;Z[5c_H^D?kf=u\L_gGP+I$`$(f?\j]dsYDcfM@2<;h\=TKpZ(ufO'@M@tn)uL6ub2fPcN^F,*kA -LR`R[L4Ffrpk_Z^Y+,S!gmXftX$p_jjlMS=.Qjg!?3, -e"'XnSXJ6'g#&A=j.9E:Sseo9g$bONo:K1[T:,SKg&I]`"/&g&TUH7]g(0kq';8SG -Tpcpog)m%-,GJ?hU7*U,g+T3>1S\,4URF9>g-;AO6_mmUUmarPg/"O`;l*Z!V4(Vb -g0^]qA#K;_t/W1&XCg5i3OPGq`PWLB6ge#cg*Xd\"Hg>B%Oj/uSK -Y+"[Zg@)3`o<2?lYF>?lgAeAr"0bu7YaZ$)gCLP.'3r;mfh2[@:C.gL%B.A%#TS[[V'@gMaP? -F15@t\!q`RgOH^PK=G-@\=8DdgQ/laPIXna\XT)!gRl%rUUj[-\sob3gTS4.Zb'GN -]:6FEgV:B?_n93o]UR*WgX!PPe%Ju;]pmcigY]^aj1\a\^74H&g[Dlro=nN(^RP,8 -g],&/"2J.H^mkeJg^h4@'>[oi_42I\g`OBQ,Jm\5_ON-ngb6Pb1W*HV_jig+gcr^s -6c<5"`10K=geYm/;oN!C`LL/OggA&@A&_bd`gghagi(4QF2qO0a..LsgjdBbK?.;Q -aIJ10glKPsPK@'radejBgn2_/UWQi>b+,NTgonm@ZccU_bFH2fgqV&Q_ouB+bacl# -gs=4be'2.Lc(*P5gu$Bsj3ComcCF4Gh!`Q/o?U\9c^amYh#G_A"41:uh65QRZeJcpgRYt2h7q_c_q\P -grestore -showpage -%%PageTrailer -pdfEndPage -%%Trailer -end -%%DocumentSuppliedResources: -%%EOF diff --git a/packages/python/plotly/plotly/tests/test_orca/images/darwin/latexfig.eps b/packages/python/plotly/plotly/tests/test_orca/images/darwin/latexfig.eps deleted file mode 100644 index 030d424a19d..00000000000 --- a/packages/python/plotly/plotly/tests/test_orca/images/darwin/latexfig.eps +++ /dev/null @@ -1,1273 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%Produced by poppler pdftops version: 0.81.0 (http://poppler.freedesktop.org) -%%Creator: Chromium -%%LanguageLevel: 2 -%%DocumentSuppliedResources: (atend) -%%BoundingBox: 0 0 529 379 -%%HiResBoundingBox: 0 0 529 379 -%%DocumentSuppliedResources: (atend) -%%EndComments -%%BeginProlog -%%BeginResource: procset xpdf 3.00 0 -%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC -/xpdf 75 dict def xpdf begin -% PDF special state -/pdfDictSize 15 def -/pdfSetup { - /setpagedevice where { - pop 2 dict begin - /Policies 1 dict dup begin /PageSize 6 def end def - { /Duplex true def } if - currentdict end setpagedevice - } { - pop - } ifelse -} def -/pdfSetupPaper { - % Change paper size, but only if different from previous paper size otherwise - % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size - % so we use the same when checking if the size changes. - /setpagedevice where { - pop currentpagedevice - /PageSize known { - 2 copy - currentpagedevice /PageSize get aload pop - exch 4 1 roll - sub abs 5 gt - 3 1 roll - sub abs 5 gt - or - } { - true - } ifelse - { - 2 array astore - 2 dict begin - /PageSize exch def - /ImagingBBox null def - currentdict end - setpagedevice - } { - pop pop - } ifelse - } { - pop - } ifelse -} def -/pdfStartPage { - pdfDictSize dict begin - /pdfFillCS [] def - /pdfFillXform {} def - /pdfStrokeCS [] def - /pdfStrokeXform {} def - /pdfFill [0] def - /pdfStroke [0] def - /pdfFillOP false def - /pdfStrokeOP false def - /pdfLastFill false def - /pdfLastStroke false def - /pdfTextMat [1 0 0 1 0 0] def - /pdfFontSize 0 def - /pdfCharSpacing 0 def - /pdfTextRender 0 def - /pdfPatternCS false def - /pdfTextRise 0 def - /pdfWordSpacing 0 def - /pdfHorizScaling 1 def - /pdfTextClipPath [] def -} def -/pdfEndPage { end } def -% PDF color state -/cs { /pdfFillXform exch def dup /pdfFillCS exch def - setcolorspace } def -/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def - setcolorspace } def -/sc { pdfLastFill not { pdfFillCS setcolorspace } if - dup /pdfFill exch def aload pop pdfFillXform setcolor - /pdfLastFill true def /pdfLastStroke false def } def -/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if - dup /pdfStroke exch def aload pop pdfStrokeXform setcolor - /pdfLastStroke true def /pdfLastFill false def } def -/op { /pdfFillOP exch def - pdfLastFill { pdfFillOP setoverprint } if } def -/OP { /pdfStrokeOP exch def - pdfLastStroke { pdfStrokeOP setoverprint } if } def -/fCol { - pdfLastFill not { - pdfFillCS setcolorspace - pdfFill aload pop pdfFillXform setcolor - pdfFillOP setoverprint - /pdfLastFill true def /pdfLastStroke false def - } if -} def -/sCol { - pdfLastStroke not { - pdfStrokeCS setcolorspace - pdfStroke aload pop pdfStrokeXform setcolor - pdfStrokeOP setoverprint - /pdfLastStroke true def /pdfLastFill false def - } if -} def -% build a font -/pdfMakeFont { - 4 3 roll findfont - 4 2 roll matrix scale makefont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /Encoding exch def - currentdict - end - definefont pop -} def -/pdfMakeFont16 { - exch findfont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /WMode exch def - currentdict - end - definefont pop -} def -% graphics state operators -/q { gsave pdfDictSize dict begin } def -/Q { - end grestore - /pdfLastFill where { - pop - pdfLastFill { - pdfFillOP setoverprint - } { - pdfStrokeOP setoverprint - } ifelse - } if -} def -/cm { concat } def -/d { setdash } def -/i { setflat } def -/j { setlinejoin } def -/J { setlinecap } def -/M { setmiterlimit } def -/w { setlinewidth } def -% path segment operators -/m { moveto } def -/l { lineto } def -/c { curveto } def -/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } def -/h { closepath } def -% path painting operators -/S { sCol stroke } def -/Sf { fCol stroke } def -/f { fCol fill } def -/f* { fCol eofill } def -% clipping operators -/W { clip newpath } def -/W* { eoclip newpath } def -/Ws { strokepath clip newpath } def -% text state operators -/Tc { /pdfCharSpacing exch def } def -/Tf { dup /pdfFontSize exch def - dup pdfHorizScaling mul exch matrix scale - pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put - exch findfont exch makefont setfont } def -/Tr { /pdfTextRender exch def } def -/Tp { /pdfPatternCS exch def } def -/Ts { /pdfTextRise exch def } def -/Tw { /pdfWordSpacing exch def } def -/Tz { /pdfHorizScaling exch def } def -% text positioning operators -/Td { pdfTextMat transform moveto } def -/Tm { /pdfTextMat exch def } def -% text string operators -/xyshow where { - pop - /xyshow2 { - dup length array - 0 2 2 index length 1 sub { - 2 index 1 index 2 copy get 3 1 roll 1 add get - pdfTextMat dtransform - 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put - } for - exch pop - xyshow - } def -}{ - /xyshow2 { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval show moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval show moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/cshow where { - pop - /xycp { - 0 3 2 roll - { - pop pop currentpoint 3 2 roll - 1 string dup 0 4 3 roll put false charpath moveto - 2 copy get 2 index 2 index 1 add get - pdfTextMat dtransform rmoveto - 2 add - } exch cshow - pop pop - } def -}{ - /xycp { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval false charpath moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval false charpath moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/Tj { - fCol - 0 pdfTextRise pdfTextMat dtransform rmoveto - currentpoint 4 2 roll - pdfTextRender 1 and 0 eq { - 2 copy xyshow2 - } if - pdfTextRender 3 and dup 1 eq exch 2 eq or { - 3 index 3 index moveto - 2 copy - currentfont /FontType get 3 eq { fCol } { sCol } ifelse - xycp currentpoint stroke moveto - } if - pdfTextRender 4 and 0 ne { - 4 2 roll moveto xycp - /pdfTextClipPath [ pdfTextClipPath aload pop - {/moveto cvx} - {/lineto cvx} - {/curveto cvx} - {/closepath cvx} - pathforall ] def - currentpoint newpath moveto - } { - pop pop pop pop - } ifelse - 0 pdfTextRise neg pdfTextMat dtransform rmoveto -} def -/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0 - pdfTextMat dtransform rmoveto } def -/TJmV { 0.001 mul pdfFontSize mul neg 0 exch - pdfTextMat dtransform rmoveto } def -/Tclip { pdfTextClipPath cvx exec clip newpath - /pdfTextClipPath [] def } def -/Tclip* { pdfTextClipPath cvx exec eoclip newpath - /pdfTextClipPath [] def } def -% Level 2/3 image operators -/pdfImBuf 100 string def -/pdfImStr { - 2 copy exch length lt { - 2 copy get exch 1 add exch - } { - () - } ifelse -} def -/skipEOD { - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pdfIm { image skipEOD } def -/pdfImM { fCol imagemask skipEOD } def -/pr { 2 index 2 index 3 2 roll putinterval 4 add } def -/pdfImClip { - gsave - 0 2 4 index length 1 sub { - dup 4 index exch 2 copy - get 5 index div put - 1 add 3 index exch 2 copy - get 3 index div put - } for - pop pop rectclip -} def -/pdfImClipEnd { grestore } def -% shading operators -/colordelta { - false 0 1 3 index length 1 sub { - dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { - pop true - } if - } for - exch pop exch pop -} def -/funcCol { func n array astore } def -/funcSH { - dup 0 eq { - true - } { - dup 6 eq { - false - } { - 4 index 4 index funcCol dup - 6 index 4 index funcCol dup - 3 1 roll colordelta 3 1 roll - 5 index 5 index funcCol dup - 3 1 roll colordelta 3 1 roll - 6 index 8 index funcCol dup - 3 1 roll colordelta 3 1 roll - colordelta or or or - } ifelse - } ifelse - { - 1 add - 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch - 6 index 6 index 4 index 4 index 4 index funcSH - 2 index 6 index 6 index 4 index 4 index funcSH - 6 index 2 index 4 index 6 index 4 index funcSH - 5 3 roll 3 2 roll funcSH pop pop - } { - pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul - funcCol sc - dup 4 index exch mat transform m - 3 index 3 index mat transform l - 1 index 3 index mat transform l - mat transform l pop pop h f* - } ifelse -} def -/axialCol { - dup 0 lt { - pop t0 - } { - dup 1 gt { - pop t1 - } { - dt mul t0 add - } ifelse - } ifelse - func n array astore -} def -/axialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index axialCol 2 index axialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index axialSH - exch 3 2 roll axialSH - } { - pop 2 copy add 0.5 mul - axialCol sc - exch dup dx mul x0 add exch dy mul y0 add - 3 2 roll dup dx mul x0 add exch dy mul y0 add - dx abs dy abs ge { - 2 copy yMin sub dy mul dx div add yMin m - yMax sub dy mul dx div add yMax l - 2 copy yMax sub dy mul dx div add yMax l - yMin sub dy mul dx div add yMin l - h f* - } { - exch 2 copy xMin sub dx mul dy div add xMin exch m - xMax sub dx mul dy div add xMax exch l - exch 2 copy xMax sub dx mul dy div add xMax exch l - xMin sub dx mul dy div add xMin exch l - h f* - } ifelse - } ifelse -} def -/radialCol { - dup t0 lt { - pop t0 - } { - dup t1 gt { - pop t1 - } if - } ifelse - func n array astore -} def -/radialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index dt mul t0 add radialCol - 2 index dt mul t0 add radialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index radialSH - exch 3 2 roll radialSH - } { - pop 2 copy add 0.5 mul dt mul t0 add - radialCol sc - encl { - exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 0 360 arc h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 360 0 arcn h f - } { - 2 copy - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arcn - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arcn h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arc - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arc h f - } ifelse - } ifelse -} def -end -%%EndResource -%%EndProlog -%%BeginSetup -xpdf begin -%%EndSetup -pdfStartPage -%%EndPageSetup -gsave -[528.96 0 0 378.96 0 0] concat -/DeviceRGB setcolorspace -<< - /ImageType 1 - /Width 2204 - /Height 1579 - /ImageMatrix [2204 0 0 -1579 0 1579] - /BitsPerComponent 8 - /Decode [0 1 0 1 0 1] - /DataSource currentfile - /ASCII85Decode filter - /LZWDecode filter ->> -image -J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H ->q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA -=M/6)*KS9PE`kN%="Tc_Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"P -DKfeXi0S^6MAH=;fBr>1IXb_>kP+oS^^pnX!PjdJ%0OEX9GI`IODGpB_@VYP -$,Ve*/ITH-bV]jIOR,+@`"`Y"/@)9.f?D&^M-b]OrH -OmIKN1*g(o[EC"elTX_ZZ,c*_ECQL2A(g_UF= -ESQm4c#_\W:"=CBQYkQ&hA;15H/=mim3UV:)/KA -Qu3q"iY[\%M;jo*/W8X+c8CUAR-m+uj;AFrOlVo_9p=ZV:0!S@R;Q;sjr'1jRHBp? -D4B]+c?5]@RI5KqkSaqbU$.ptNMG_V:6h[?RVn[ol5G\ZWToqTXfLb+cF'e?RdRkm -ll-GRZ0[r4c*QdV:=Zc>Rr7&kmMh2J\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U -:DLk=S8TFgnf3]:amtt*/^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sj*caE0; -T'sA]r#ZHgnbf"4c1ClU:Y#.:T5WQ[rZ@3_q>R"imJHo*ch78:TC;^Xhuj(2:_!Ol -=:G;h6j\E@/d=Sn*moVE0nrNM)FIVD%H55cLJ[C[6eHetiWMQ';%=d<=H*pP6qN54/ga!=SJ1"9 -;2S4G.RdIA(#m/7Mc"@E7G,9iirieL;3!D$=Nq`D6tqWXXu8c%h&GC-EK3oA3_*<> -*TP(`O&>=/8(db^j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;-03"4P>Z9n -8_H6SjTM9A;N=XI=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_HjoiMf -;\!81=cG/u7*1iq/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>taF90r@pq -RT!C,:$KVWVc<)U;qcXql30JP<=Ya&>)cDE77jIY/uDV%SQ"g-;6!VkW`<6)0U497;8l(Y-qBbh-93!ENWt#)=5*U[ -lihsE7G$-7>\9M0#h#J*FnGiOg8"_b#qq#AaIC(ZW:th=kc)Pm002j>8i!7B*[qY1?e2?#/h]Z*m]Yg07cuD=,MFREmKLG:E*Xj7EN)A -0'6EnSTF4QdCNCSlKqH^7HqKeY4c2Vh0\UE -n\/)MqHmIoIIG/N^K9k&?ebO/n-/p/=:YI@>Rc8R7L?n50*Yh>*JYU(F7Oc;YY81U&?&S6-0ud>A)Im#hNUb"Ka&qdO -A))KnnchD$=Uu]e>`Fm:7S1^)0.(5bSWiW!;9E$;.V2keQ1Dptb?8a9A_atco*/XI -=cY=M>g8].7VU+MY;U"Jh4+"jER%_53bM^bSb'jHcWT^#BAEHXoEKln=qn*M" -7Z#Mr01KX2*M`7]Oj[E/8nhQ_V=_cqdopZbC#(qMo`h,>>)uQr>tq&.D\XnB]Ef37WLCYaEBp'/@c>7Y1Z?&c,_7`j=f04o%VS[8$EdFqf# -C2I7Y[J%VngKST6D;Dn7pBKU3>Eh7NE9n_RKrH>d*V^%]PB -hcoPuDr(B,p]giX>RuF*?4FaG7g\-Z08=H&*Q.Z-&`R%kMK)rS`V@Ikj'6M_ES`k! -q$/)(>`Y%g?;8Q;7k*P)YEj4c?-E&!1$2`eRWDePc2#C?k?RJIF5D>kq?K=M>n>6Gjo!/eo3Q@\H/CdJrSb)i9dJ@3Gl@!$Ap&<"bqd4:0 -IG_a4rs.N\?]Xc,?d8EH8*TtZYP*G&h>@5-nbunAqL;l>rVsq6s'P6oJ)C2(n,WMC -"TWKJ!3cn4n.>[T'`i7k!O*RFn0%ie,m&$7!jF6Xn1b#!2$7eX"0aojn3I1270IR$ -"L(T'n50?C<<[>E"gD89n6lMTAHm*f#-_qKn8S[eFU)l2#I&U]n::j!Ka;XS#dB9o -n<"#2PmMDt$*]s,n=^1CV$_1@$F$W>n?E?T[0pra$a@;PnA,Me`=-_-%'[tbnBh\! -eI?KN%C"XtnDOj2jUQ7o%^>=1nF7#Coac$;&$Z!CnGs1U"V>Y[&?uZUnIZ?f'bPF' -&[<>gnKAN",nb2H'!X#$nM(\32%ssi'BLV'sV$Z -nR31fAJT9"(9q]lnSo@"FVf%C(U8B)nUVN3Kc"fd(pT&;nW=\DPo4S0)6o_MnY$jU -V&F?Q)R6C_nZa#f[2X+r)mR'qn\H2"`>im>*3ma.n^/@3eK&Y_*O4E@ji/=gjW8F( -Hr9,Lna.Cfl?n`e+(rD3Z/m&_!?`c-+E?Vn")Y[j=PV-&8fQa0?h/#p[kk,f6#t#HoK[ -XX@"V+u3jVdXNM48LP3f.?\q%P)aj/P'XF"H8:q8&nN8MLEnX5-LuR0;Qh=.ZR@R, -.h[OdP)1\e^FGtC.Hd:pPd/$g?HZOhAf -6?n\`Ggf90;bhQms"gtB1ZF6K-\4/\Il:5*1=D:CdZlVO_([ZN2=kd5;eUB]K/Re# -.FX2,Eud-%GrMIO3+mFqa)sEJGreH83eqW2F*BX.5reG]4-J&SducFagFRD%4;.$D -e$LF-XEN(DG-fpao?_b]hKEtF/(;I#,'c@bANr[p5Ek=q1D;m72`W\#56?I%a'V+; ->sUth6&/T/a&bI2b:8_b-hJO(<%`;M1IFB"ra!j^f-VLcR96@roFOY>1 -ic6m=9m#2L[(f8`l>cIj*VB2J[/P'1!cc`pEE*?c1taU*o1e4U;!/Ef`t)&_&Phq- -;Nlr&PXRp(),)n=GL[sX[6IPH4#g513coj@1e1Je)cX/9[.[=I!khQ+oK4:Kb*%>2iglVY=@#oj(&_?&%lT`p[$;X'1e4,k^)5ea@=_o3O;k -G*Vc=FlbBdX^7_r?fpHX`oCJC!FN25?uhZ?FS/ef#UMACD>#Greh1hU12W=8D0?"i -p)RUO7:W4FA;8QDeidH*pLR;#@MIR-2FJf+:i,i;CtWC_j$dQEG"HHT*j4C%U@u<#9?U>AGRt -Ckf94`j'<#JS\>-D$I1\`iX+odqt=0CU:orPVI(k)/_pCDhb0.`iF%_UMr\rD,ZF3 -f"<4D#\j#KC"F;C[e3(5,=M6n=`pEX2PG/5;fbH%EVC>lPZr5DF]0$I3Hm3!2\A.G -;_M3@F15@D(LK`m.pdCiFS:?11lHPlO*=Z:F`YlQdd_L("^[O3,?I!AGE-B=P%g8K -Bc!4OpC2$5bBTaGH01*4`f#0[Tm)`fH^(dWQ)AZsWHS#e5$,EiQd:#fbDC1:LU`n1R%];fH\__DM+1X* -``J'8Q\LaRMj3UV#EO`:V2@7ON**'035&'hdnZ:^MtbtAR,;b*^j(+IN0s!kGk$AF -c650SAN9Nt)#e)L!bBsgA@S"MGjCDMmu]S.O(&EWVFcpT8!7!aNO8MEeHpe^H'+L2 -PIVE`q&CN&-tG>-A/S!M=\`J[;Id6IG$-hhq-T"u)_*j^QFUjuq/M`]FdIB!QaqO2 -q14nnKp[.BR(83Dq2q(*Q'locRCSlVq4X6;V4)\/R^oPhq6?DL[@;HPS%65%q8&R] -`LM4qS@Qn7q9b`neX_!=S[mRIq;Io*jdpb^T"46[q=1(;oq-O*T=Oomq>m6M"e^/J -TXkT*q@T6#A!>U_LYIXUUiU`qE^o<7AP6$Uq09r -qGF(M9n5GTa3NYb0 -XdN=U'`kHP"d<&,XLcH73CB$7jDfM$@ljLh](]%U"&aC+GP^d2g<6ZD"g@&AZ%aj8 -`\Fb'.C)DjQ)@]fqT6'()m;=O@Ttm&4$U$_#>t@g<*K]Q].p]Qn$-";[&4A?-6KZ8 -6+,6/[ZuEHRkM#c27H]4[@7u@eTnY>ICNL"J+Q%:e9SFa?+!m\\[_=AgKV3&IC`Cc -\snnD2\3M:V7T5d\XU9i4.m_nA7<*i@@PDJgWj53dU>3gEkB)A_?[Cd_cL'!=Bk)q -gTA&6\TM-NFdnV;45[Akl+]2X]k.kl`Xfm)ftR-e_3MR?#;O"R-6erp%,<=?S1\2s -117aQ?p$JX)qo:Z,Sl^]_9om4jo<:'rP`#-`7<>Ue^qYC*Q3;r,b57aL2X__K"PM2>bYOEZho0]*<'36 -"!0R8Dg\Tjr6ZG=#$bFL>Wj%QS-`*,,?"I];&p,n*@hBn10_FM>FdfZh*,%K65_[TSJ#h2?P'D'd0WS3&ggP(^Ch5f:2&):2!d&,"@!e&i8 -:#/6ph1^X?`J`RVKAK%Jg;]i;ifW)Z6/P+Zhh?F7`IHeLGMko4hStu>!fc-"2;puD -iIu4/`H1#BCZ7csi5Uo<*V8'KUZ-u?j+V()hCIVe/`]qegr?DT'-kqLa5dD4jb7(' -`FJ$6>NS@Wil6E(!j1UH)+B%I$;Ql%MXl`CoJ" -6g@*+kf.K(!ibIH!UE0;l\.Fd`BW\m2s`sjlGd2o!lOAcp$G1&m=d4\`A?oc/+,hT -m)E,o!ls_il0h%emtE"T`@(-Y+7M]>m`&&g!l+5ch=3oOnV%eL`>e@O'CnR(nA[ug -*n024SaqIFo7[YFh^e;!3V6?Nb[u.h!o+R6fJ[pPYNYBMacY-:rmef*q9^pL/jWR*.YY1[[$>OE:HQ-SW:]3XkAS(6s&ID9.Y(`@Imh1EOQnJIcs -/t6RpA+CKWQ;6h#b%:/^SCVS)QHj.8)BBTR-(`P!obsB%1C468lh288kJmQK$0.npA+nT@`Q-rVo+O"9S;2n.Z645O]p/"[R';'*^blK>@dZ -0Vg2\_Jlk<%6-">$Ot#AZf:gL9.QPA6kMgc'h*+Q>8K`uJsR.j0r/Qt`c8A,*A0(b -G99?@4F82AE[$Vh8?tXHS\qa4R_qOSS=o_hniWHn9(Kp,/PC-F]#L_toYWC/;QRnp -9[bQ=2,$qBf/H>9Cu76E;InrP-ZYIBgq'hNmlsV?"Tq%eF<]C%d'Q2*6d[`$.n.jm -KHj"81o(LNd^6pj3n#qF'0Sa(N:uVdo^,:M<:r[Y ->rYj/G@*;9h1%Xfo_Zg*cS%elK60]&26XotnGq -2\`B'<%k#oE*Tk`gNQrtKY)B`2kmL$hRC@uHf$dATmbh.!fMQd3$UKW@'Qi[:gGaq -\V+DdL*MOaDfuAC@d-'.N+6oU*KFY([QT^_C1]>dAE^/;PX)`YMYuPg?=TC8H)>>8 -jr(UAS7ajJGFiDlp4&:i3Yk5NBWjU(F=WFWM54k^L81_P3d.EXC:^hsXD9eU\#s,- -p:l,kq\,["@."V,>k^n?FT"QcdWIEk=4UAWG@+AD -4dAaqG-p^"gbE(=(C^$9hh0m4INjL(GdM+EjA?t"QULY`FTpuT1^A0g0-0@s7<&7@ -]C1+H!itS`1O$n19j]j*2>oa?j"PnmedqO.50_IhrL]_RrI9.&nbshYr;Y2e!J!aF -!^K_I!T6:4HI+4;5?E5ii)C2,^++/'.0u>sm -(qgsM$nOp=g,m@N!?bG@D3.@"5=ecL+XBI1O]!bq89l2?+rl`+DM^DFfcqhSe=25U -c;$LD0dkF4OH`6Z;G'lC.HNl9P&_=1V)4YkV-L?mP1>+U)/PV8Pdr[bmTphMI4ri= -_3d]`4N0*4F.BPHQo[umd@W!bX>8ef7mO@aVF&%#- -@]&e^1%VPk*SIJTi=,7J:m--#=ALncr8UKbhL&,q!C05@m\!#JJl#If5H$s(Rrg5( -:jO*fAir&FO.q>*)DO]pd0ZN]Cq7sI4HCo(+[L4%Or!=W8^oTnLm'/Y-MgY5WKf8` -'ZQRV8o7;SeK^thC513k)*)F6pSF*Od'e_rokEMTWKfA3;js4Rl@i*$o_tj=lBbMs -'iV/+5,,q%.\LP6e`\rL'u[G0X7=4_O-a2mJ[- -h,--&?;uoY[+;\;-sKhibq5d#7]P+q>A%M!`HJ^km-%W.eS:eK[("X&j"m0CEQCSj -\O7@u>ga.(mT%]FpAsbg,r9ZrL"j5'g>:Z=;fOGkPe1!lnQn!tH#<6*H.GG7?2N#s -Dj)H[3"G]4 -/.mVUdg3fkNt0kP5D8MY)_]iuc!a+RKp@rN`0e"M83?d.k)L\+7H5.dgi$bDc&K[P -QM4dWBoR-K6`F2.+rQ>`@^8`ia>k<(A8IcHn`uIZ;#_m(*3kf@elU$d#;0T9Xci5: -?d'5E11j^5CN"&[@7tf!ArP]=93uP?g![UtCBL.YY'R6R9tk-3!L`PFK@#_76"j/U -T.>AJc[$[$'MTHKF7X@t%JNA+r@t0`p))7[pJ,GO';T_VQdc0$;-$sLgG5pLe=)_* -C@ej4lR&p<]$jVnh-`qL[9(m1F&f@`GHQ*)_]a@2W9e8iZ7;`oWLGZ:ldh])=3f+D -Ro`[.8pduqf%R&AEggk1B=&QUdU0V=CMnP,\Z&WpV#.HcDX'U%./)Y4])@"p/^_:Q -cM4/=nr3&&2o$i&!hnArR."^ZXuFr?iJssmE7.+i-smVFHpXL6MZ\q0;D$'>Y<(cmhjb9RGrthC''9X1 -T6(!odU*e\ksYEGFOPH_qLK+>1UF+,Sqb*C0-BIb:Tnp>:"O^s=.L@qX*-,1fr$c3 -?T`V,G)jDoH]]iH*Da(;rpMlEbh;H+>IH1+[s^?AF7>b;N,pW\9mc6UnU:#Fo\UTD -qtf^L/>L;]T/"*.InK;'2pV4P2q!*O_X_Jtb1;&0k'^=3URnBUqDj&l-82Zk513Y] -W5h_3-34+\KR*[_\aS6/!2BdO%9N^VL$O_@qjE![U.; -6pM@168T`MC(A*i+Mr^P6BWNZU)ZM*)T"d+6,C=Q`$[nK(_H$g6Q@jK/2KXU1daqo -6X2N:Cc=_/3(&Wb6_$2)X?/e^4@@=U6ejjmlp!l85XZ#H6l\N]/42ff6ps^;6sN2L -Ce$m@848D.7%?k;X@kso9LR*!7,1O*lq^%I:dkdi73#2o/5nu"<(0J\79ik^Cfa&Q -=@J0O6\8CYS6JFp>XckB7GKW8"CDn>?:G?37N>l,/7V.3A4B7(7U0OpChH4bBL[qp -7\"3_XD:;_bjtLdP-caI3?#nefHR -(eDRd_BXk-dM0RG0gajJ8G%d2.HSYq&]m?N8Q$3n@LYnL$crE%8J0HDKTf!I=n`4&D8 -WCudM9G-^:+n*W0l:aM-b*cZJkVlYFhA@8F/J:_CfG+iR84`6Z7" -:Xl)b"TM;F;:"=3cp>THV$#(c=AZ@WcCl=TZk^s,#Z1t5d00KrPcdj5$IL(rd6n#^ -i>YU(-dbp+;4D1FP>9M6]2?DY;:2sPZV=7nUpFVU$QJ]bobp^iE7-O9;;o"4@Cag. -*7@bUdK&daJeujh,Z;`Rd_lgIP=/=1.+'lRdf^$*E=bt="k*&q;d4k&;fpK06.7,4 -dhJWWOf[!(l-cpedtK\Yl^lS$UslUJe)`O<"IrF)h:"(c;q*&A,sP@UXAj6t<(+OO -P;q'cW78Y^;o%HnA09=/86$&4<"N"r>+ -*Nn,0Zq.=*bal/F"g?X6Yg6miYiUk7*JI_/aXOp6gJ,C6jg`WB]pf26Y=66o%DnST -\rDu\]_0+qmDhjO`ie.8[k5\(mE)k4V8m_`Mljt3"jGbMco5gaY&2@jS^H5Xe#oh& -Xu4IrV7[G([TtK3h4'm=r*N`lHJQQh?*l:kdL9AOcrpfqh-J`@/DT)+rE\J;h=]R[ -6Mk)0r*BBJ>jJ`Q2]#ei5'2;-4AaA&7IpG@*lXGif%;(&7LJ9@8diu -U@DU#n@(bH>c!_A*@N4RjdjAN<$fU&Y@St8,1GRfVo%e^;Y(e94-7^mD --Se^RX?J,([OnR-/s]5_U+RlE7D.WW0B0]'=:R0oXu>d9Yil9'%;fAO0P]i/V>Z&`m%jAXs@nPNZRd>@kWVA^_CT_cu2! -lsn26f8a'HVINc+@_MJA,/.D@Q=f6gD^.D3dDOmA7 -[H8P;k"f5/ETYPh@U=/b5'FA0GICh&dB7#nmV.J`C?#MDk?`UJ:2S7aE3L[8^4(U- -Y'mbHEf$rHimr\DmY=VVL:pW>Pt$Vo(4XT3MOh2/M0Dp]')*e(@"T"%:0t]nm^p]/ -_pT',Po -qRhRYfnQ+)[dI`SoP]ck9@!IJk5Do!"7N,fd%:H/(&=$;=M$m -E7V6#Zgs8E2O=LNt4F8'AW1YD;?nahI@%$Rpg8?i$T0;e@]14P/aa-RQXULILfA5h$<1^8R?>2&l1[7.eXkoBa]njLb')6?J3FFRsnd -+%oI<:it;h?*@+,s&?b:;KVA.fIp=%?TRBu>4l6./[nubIpUe%=S2W$[m*BGa&DGN -@J/Mh@W,fN7p4PY?d^T>cQ?hq?XrdWCA)"O%*rCLQYaH%Dko%(P36hIs'*<@Eq\<@ -G=a@[@V,8&CNjsRpObGL4p^lnFa(rEpS2!fOoopKE-LCPp];K0^E!"rI<\&d[QjLj3!\&\j:UYDH+0BD$J0ogb.LCke!XN-R(9q-Lp`6B0<`bf[,nKl7K9iC -T -IFBcr.-3`RfPu]'IAc'JDqm\*j2g-:eM$")^ZM%#Oa[fYrKlOCWF^MK,^s$*rdX$Y -VpPG%\]a1#GX(SE\+;'[YhDV:8T4:M^\6C%nu;))#QO>b?hjXcr",dmIQ./0+8put -rWNCU6"&&a6m`WVL-oCrpk2*_'8f$1dM8S$7p7&Es7Q:kf; -q1K)21RQF!ds8moFZZ0jB@H\[-pDiY;!>8Y2("GYUXNpM8USgZm\&*FeU#2H[9Ke8 -CX`]]?GC!U=_uZ97AeUN[TdV"qh<&OF1PXpf6bL!om;\NC7!-K#6fas@;<:<2CB5t -`aa#8X@>E#PKIHWf"@#M24Mm(F4./8Imp-\BkB4#75Ik;VG2!VXZ"42ZeAl14'fkh -Fh?LKGME*%#DL(TEGQC32^am6k!8Yq -+UQ$4\p3hSOPD[f-Z`R0"B'1NS(BY?l4XDo5_&\N6- -a3./%+37=uZQR>P49Z5.1/ae*[IQ_Z.''X1V(0X9]Wj$2;V\dBb*),-0VK-W`A5Y9 -,gA0i'1CA/b0snW34;^qkglc]"Q_bk1PGEbcdVgn5gWIKeNQfo4@MV7'O2qQ;3ZGK -7oC%k$KP*L]-TMUP$3[D:DCc6("-(k8Q+'g4],1p'cg:T\ohRi=Lj]NAQlWEV/9JI -'ub<%Uf>lq:<"quI:Bn_jc*g(sOQ9Oc8Wr/f5#IR+=^G6sjk5)kR-%PCBq"2; -^2]\+=l+FqkLoicT]fQ#M5'4f5*;Z*>$dVol.UT[W9RQXWN,7;^9Od*>2Hfmle;?S -TO@EQ2mDZ'51-b)>@-!kmG!*%M=+T>kq6im^@Al)>Mf1in([jC_!kSN$,Z2e57tj( ->[JAgn_AU;aRWT..E_58T#YlNr4b8;oA'@3d.CHp!RgDL5>fqN>p!5#p"b++f_/UC -C"i::^N&''?/KqapYGk#i:pV#0sYja-^!Kc?=0,u5\T*s`59TK1q=:kf.j#Z1rf -A1`MUeeLOET+#.kc%_>1B1$o_Z=26E3H0r-RqPS.T56ZHOWGc9R$>A;j@akt)CI#e -TbLLK;i6I(.n+Mn&._CcLiI.n7@:n.j!82pcZ/HoG>B'N;N-Tt[7A73i1VB[F"u'^ -EgZV8*M;,$O-0E,8/VP2j/dl.;AMVHkn,+.S9UZ^0%r>V>8V/mV_BQ]#$QbP?Ju -AeNsf1DHG'o@.ELPfSV8qI`M?V)7'La-qg]CJAnH2J1AcS!.t':&2RrAlP$PF#J$= -RDh4"AF5r/rcQNZ=#;:fWh)#tH-AkLX_57b;GK-IfOt=#1ZdsSL=kc3O/=iP) -beQ-DXn4J=-iJbQm$bD;-1Gt[):`. -i-oTmo-a:`/RBo.F"ag*^DHVE?l,Mdn.O*^=;:;`9G)iYmL)83.O&(82M:J\%R6=J -$XoP_#&laF3r!1q&q!!$8OarCKT?d5g[qc?XsZCmV\`h_ANqm:1UB&")duE[N_agP -a+R516+g9WnSURff[h?YS*J!SM\VVe%.b?C)gBO2%d@IpubT?m.%&beuPT, -bmE6$=dlaAZe!jd?L"%nY-F;*`nL;+C^(cY&AGI%#)co+I?h+i?FAIF2eQt'IC+0_ -WjUS^NbqC$!MLca[/"o^)9nATG:)E+H]J\TN&S>Q%d_(p\Thi!_mhW[Q/3J3HuG24 -^$oA+_&N7VE!uocQF=_#],Q09IC6q:B+;&W08D6P8]4Zm&E93QC[lJR`MT6t\_8Ej -7*[U0GpanUgiJZM:/T/30.Z.AH^AdMj2CV>gg$@6OE2`Rb^%f'kJrL4?k.g=H6*+N -\'LhMXuqY&7mFKlX< -,ATE1DXaV=\p1Nqja>[Ne6[1Cq?oUQXZ*&^hO,sgU/HfeF[U6*(mC\V7$c2@%8p<7bL -qqlnmINQQ(s!Qq+\LZps5LWt(?&&lI?"e[01"c -rbA8*n0n:qBa%=:1f-%6&7Yo?r86tN"i:cQWiZL[8I!OZ+L$#T&5Gs(*s]Ya#S;m) -:hKXb@gPrP^0VGAkUoH,IW"?$pE.j@X;[E`Vp5llp!oX>m`scjj#I(fJ$PNs< -_[S)>%B)\Wd,Jlo"V3A;@O0h2r[.i-NUW6n^&Du/pbB`\lmU2c-ed?(',PW/,OMGWUTd2`Vb -UDe_i$#j5XcM\T@obiW#)mP_KDt=q.EtfoT(K%1Un])X^es_`NT@)GdET!LPjIWX? -1m,p[1!^kr)&tC*+3s0nakn3k6Q`SD+Kr6s@kS_=N?;$t#8.OjdN[l&&tP16SMDae -Z7qd]1bl9O=]-1_6_,D66R78"qs;?JM7"WYY9dnp-)mdgis-Y0AL%m[-8J3#E6?8M -DOJptR1an914Y`iKT^<8;bT1ZP&SJT7k%=V-UJ%EYJA[cV^\>R.#E4!nqSZTO"2F1 -,K7,=Z9p.JWh`O8.P\+,;RZAK`g5'*QP/)=ZJ[:^Am'/l,#[MRMCfI8$S:cB/Ma:Y -0RkZMLG';#0Q24jU:W%6D&O&h+O^uYaq5IW&J)_h12K`A$[4;nCGRD,1T<;hii=eI -B/-_;,Z=_#do%J)d5$e9+nJgl1H+r*6BY8]1_XEn1MeEo^0`Y_+u=@!8\6k^'/*f6 -3,CH3#n8mD#>VL]'K%,=;#4PLEqqU)>`Y*Bt&t6`?PDkc%!!Pso-g -5Y3b!Eud]V4H]43.RFpg'CRdm3CL&47W_d'Y;JbU?=20^+7t%PM%)r'M$$J%81tcN -#^o;nO%O)*7.c:CP=[V.:GiY>PkQgg%#))+acufJ'd-4."Fh+q -:R*5''*CX>gJ\U$;92g;oc$i4V`^4mDRA:APs\J![8V-V;,YM983L!%;-%?b3HWu( -Pu/QECK5)D$@-'5s2mX$cJ -P^:l&*>PVXk[-g0`rg12>:t&'#T[2.X]=qm1Gu[haqe'A49u$;.-aoAG/!6p,su#5WuPEAM-\gkN->(fd?CsL:-+]Q?QpH -#?i<77l3eGZB])pX(Ld&BkX,QU^q+ZGA%S`C%d:1oF`Em[,O/ff"l):P:$u' -ATcO52;N'!YiiI),aR6Lf%/jS`EkIaC\I,S1+d>8fl!&1D\h":2W3e"ro(<_>IOoW -2\>FZ'KfEo6IsUof,8N=Mf;FJE_Z(Ca/UA56?7\WC'!["J1=crn%=;q0R% -SI51`OZ@WS00>WO\!jNQJD%2-H+96p_'Ku_b3ok/P7;*1&"ZqP:jLYd);CU&V4AC( -T$7S7m/`n4-)"dVQKfWQnJe+2r(o><+^,&?fJB20CS@rZUUh>Y3cJ8+ -Q)8kWJ/W)GqB$B>HWPNeW!j9:Jg[E!+F1Q1X4k=i)T/X[a/k`QXP2"&)Ukflf<(Lr -Xi=he>2QJdkH:9>Y1i?HHEO;P[\N]hYM0#\)[!B3QCEN8ZQlpQ/\)cG[sBp/fn[-*Hb*Yk -VeQg<0_MpPP$r^(FW6g^>H=^r6XP2ZHhlS`gTI5SZO].,]7dSe)rleJ?+N&l][i4Z -[LKtFRD0ui\8AbnH;?UAh7_mS^0D1WS7F>/Ei3-p`4V5Qb+lSul`3&Kb'TPte(r.bA'97`b;9Th ->U]05;kVp2atf%KMWk=nBI2C53bksdhb.eZI`_%_:=EbM#i3gO4e/@^FRFiQk[rgc_Qs]a)nh -f=Z9B_u3#T*P^?7cMl!Kgi(m$\$Opsd&m.IfG!MrS__ZKP>_AD+PmPN(E(gFC"oJ, -iP#"]3\B7YBt>>DM]MQD4tu@f1qG0[hX>IA3hP@P+QV=/eU9=2r,#@r*nNS8n.tEO -mrcZl10V(e1@k\hd2\4u;G[HhtWTjGhq*nTd#iTbmV -2KbSWrkIh[iU1%)Z.anlhYQdb"L\6JkJ$=B2'qOi.IVVSnK.VuIJppP/Z/OSb^U`& -s"Qpkea\+#k'XT.?Qipc>fWHFT&2*,5>6sL;"V,ImleM[78`bC6rNj^np[e!5=7tK -=n;Ou=hc]arTElh$hp9,[@Mg%T8KuTL/bpTM]\5H?[O7$4-SP@]K^Q6c?4Kgna`0G -q[XG;hhh7&f.!>E[i`Id+49s2V<#FKjW4[([0ugPM>VJs+TK[DJ$$Rplht[?rLs9[ -JNr(S=>V'2$&(_)OP"Y=+VBQ!ifR?M?83=W7cTW`oR9(LO\"ZO[M,_-lc"/++2cM8`ro -R+ujL+d'lWns!5l?SRtnB(MGGp0T>Dd:i06Cd+1_WRYbVOtAl,@BnL%ot(+!hf63_ -@WpM>pA]][WGcJE4uL6=Eo^C`>i'Zgl[>l,3h9Td?9,sjG5IiepOC$'@8iAm4oY[r,EN`Gn;saL/j& ->dho#F??rpdrn3GjkG#FG?s6T9=K4SB3Eigp:FM;jo5&3GQnD)@(38ZL=(g3&VF.E -()r&b\:,Z[1)QT5N%ru!1QF/Vg&HHR&7.G]9p=F,PW!dc;jM"*FJTQlBN.c\Zh]#B -Q0.njVjupqnsuB8q@]!bk^#":H/pl4Q_WfD`Vl]L/-_$3C:^jVkN4Ei&"4Wpm]en> -Rg-lolrtg^m,%V/eu7riB&8C!3`PLVD#/nP]I97mo=f.To!PSfHM7LRDt/=4B(O&_qdkVpj@`Q#W:'T(2^BmnknjOW2dt<'uAdS3[pb1\'?]oW@Oaagd^&;rCU]#]S"cP=;"GWQH -"^MZ\">/gP!nT65J^)^*OVdN9+H,i%n6O"!#W2ipoH/_jedb"^YleDY_M$:,@`"L3 -VdQSZEm$ofY8@!Ch/"NZ6VmT9,Jlt8"N.a`WkQ-2p%9,)"ijeCCn'&?+$(n10[e3Ssir[>k@ -Ke[0oV0M'Te4b$K/nSRuQI@u,9c9b2k&f-L1@dd^8[,+(/DZPS?>rY"aA_5(,+S7h -kftX,V5C'U?;n.S:?gk&dcB,Do@ZITq=P=IXSne+#';IA?TMj4==cWhidDo_tsj -3j;=n[9Y]`I]tT-R97ku@][QRVpT1M>#F*7Xjp%=0CG`mA73DoTS?Y,0Z!G@'VJ>Cg7$$o5G-mc*(;"a7'qk?1YsAM\,K6E`96UpbaI -*W+`Amu;D&`iAIU/+S+l*W80'f)T2920u5:m(aGG!Ya?(K#u"A_8PLB?!I&Ime&ER --aNd2R9tCsjr\X](m!JN9mLLQcRJ8^`*.JIq>6!RiQX\L`:Gaf[_]Qh?! -IQad"ZQN0*Q]UE;5KLe'))e"=P"s"9ai=W,AK7\7;s%$$`)eL$QK+,`jaPD+I$%i: -mROS>@NkP71h7SaRe(]@Ed45cKQkmd:gAp_%&oS2@J>IPo,)#9DkF -L?%f17A'B',pbZLLiRjs[.mE7jVp!lEtZ1/\YhCL%gSDAS=.FnifE8Ms.5G!/^(R5 -0^)aPRq*"qdX#mN1Kqhrj3FQ_qQIl@p$;2XtT8&om=;s!s*V^n?;9kCu9j; -)H5@75@s8-73TTo,6%Jp'CPc'`5%uh%=;S2nuoNtpXu%rI35Cc0bGK"QV6LK5IZ#( -n'CiPn'C>rEV4`/deq&pn,Algn34n0^H\mms!u4i01Y__T8_\er1I@%T[jikAk65[4PMbNM3rg-5uS^u1?WK$(cs$Gbk_5`4a@ -/(VMiJO#UV5s")B`"@l+'Z#G?]j))Je.B8\)F$>(_9ge"PInYFc9KcN_>CIQHle8( -,/Q_oQOFf^oGfn;-4Al\3d`'Q<%Apc+c^@i/_hSfA1g34/jaTN_Lr.]$m.bL1TlB\ -68USI//=1u0J0@Z6'_m7l]lINlLfgH.I_h0>SF.kss,X`V6Z0U_n -e42^P6b3+`XTV6J4A-S,6Ed1V3TNTElqBfW(drn6^<@6Yj.+'ia[JhH79Pkldi1YJ -:rMuH7;Pf)r)&:";Sp(F\\q[Q1g_eU?l6gV%t%e9lrh0#@n!^h_ot;5j."%d]#K\= -`d0C0,6(-5R)VN3`ggVHS,tj$Cq2rOX)rA4UiR>GCQIh(.i`EBKQ]iV0h2>u`tOWV -K!*/,G/pU'72@;7_T*(U6WB[,CniG\U_EBV-*3InA=c&nV+LO2apZ`b4<@+^L<>[?b1`'% -kqpOlZc[?Cb(L#Br2ctVWl];l90.pQC5>N/N(]!Zai(GV,W!Uol3$ed#Q29Ym(Q-b -^ruqtb='4(WariVNBb(\\4!m+4NAjda:_I`P#TOO"MDC;_+X^Nbgaq^,gB">d&7pI -Lh'a&,(`C6]>G'#-g]D4%+c)]Y`deo-_/CC*7%=>ccstpc/d5G']51g"!9Pb#c,p% -1tj=1jSgt=,]k;W%f41s?D[,'$?hTR8':>oC%+be0,/C+a*_Mmoq4S$fS -SP<(XcB6&hV!--00>I-+:<`R[`;@j0oZtqG:AcHMM/gi\mS@VG:1A7j/EP4s#r&X> -VtBc%XSK_TSrE`!,?:4Y[X)J[QmYgBKYcc$XG -]`#m4*e7D,!FYBob8(5de -[7f#g9[qTeeE'HTohX*A:t6:Xe@cVt2'UFZ;H6^^;F5_-N75VN-IlC)eYQI"[9M2# ->h.A1e`C,foj?8R@+H'$eg4eV2.P3+ACaale+H8_AS9SJB\&G_etm-4[;4@4Ct@,l -eNG-Xm;L2(D:UZH=!^nFd0$!l9AF=(=Ro[0KF?INKBni:'' -3a[]7hVpM$Uh&6_=^MoEPPtC940N!l!3=A&:IQ)WRPWk_2rI5q?5`1gCLgcS!ajd/ -2uWm9r#+E.%'6g^?hAR#HXku?"CV/(cs@?k.C\7C/`;NXi19DbZ+XQe$aKsG@AME* -]^B3#/7H[S@G$WJWM*bc.H+IniGDO5DA_>r*a`$Ai`n+q6X&IV-t8&a@[N$]q57]% -+lXEl@P/!JQ4DnISmlB)iuC)=HWah#+Ce"g@p"KDBrPTW*TGet@dU6)(-(=\iaXC, -A)':Y4/l`e=C]2hA/UJ;145\u5dbJiX4B>k1V%!"4QM`djG]>a;bppR*FhhpiC6JI -mRA]J7p.h.AG/U(J\a,(9VH?(+]_VeSfZtP%HOU^hobS&(-=[n)s&po=KAN7.no&F -&nVVSjnTDHH,&J[&7kp1A\Far(1cO\T#kcWAh-:3Je)J-AS.nJjuLOqaphrdLh:O% -^YWhiN.Tt&ULuBtAXo^^>=;cbDOguMTY>BCmW$c2gh3L*TFMlJgbOn\

-@MdB,YcV4@.:4Dk,eok8V82M/j+n -EVDfS2^.`^7<1%MnkVb?5:,lE-LuXXhPVdmVbD-'9ldLilg/fcrsX#[_.i'gFY>NC -4S=T01u/[%ol!oSIopiS2tNXWo;kN"s#fu#4nI0S$T,dP&?Ys-mF>m]Q04YX/ -7.b,(FFRopDeM@B8G&fOG->XJ#2sU3:%ZbKG4%nfoE7lq:j4!8B1GjB7oOIVFZ,:\ -C+!&)Q[!_8H$>m,B?sb*^KVQD48%cBGNW8@DYNi?Y4Mr`GTI9::Lj#]Kk$`dp32:8 -O,*FYM0>L`p:#qQ]bh*#D><",GihA[m[I38Eci1=o`ks#:R$&nPt&N3nJ';nYF'Tr -Ro.m2YFKaM(jH"OGP@^n=+L'!@!F%>C=`7V8#1B:V"+.gpkPblQ\bL!Vl>oC -pp[;Ka/deLV0Ma;Gjhh\s&f(=Z$A!Cq*1/?:NcOu-Ao94pN-pkYIJq?\U0s[8!f_B -^O5DBSb`;Wp[>jN-U.AYL^MIZ;cfaj=2]>Z`DHT3qM2'JJ&cqtWC#75qT$d(^W]@o -UjDKII.,?h]Vf_ZK_ljSI4s#X2>?uL[/F@=B999CDXDeSfmTLHIBVC,kIg]4S@[$O -Hgfj=kMRm]_#,i*$Ff#.GD#fhV>ai`:1cQbLWTOVk^K,1+P4g5cg6+m+T1-#r;Z3a -rYi^Fe,(Hc(T6g%2tDG^Fc&uGI95#"F:*;3fP]m,s0)\,$&-6iOSEoe)\\#r,#MI\?8WLY7Ur^5oS,XVO3(p1BdB9M.@*RPd^ab6 -@5F45I)Co`BV/U/:('.Rb,:8#9-uPknZTSOf>PC=##4At`D-2j`.k:0%W1uf("+#?Z.n#joYL4_I2lc/4LEhLW*bC -R/C8\*KnKSmhQhIh/M&lB/=hh#(K(5dV*a64Z938X4-BW>4#q:A[0s*2VUC/f5\FY -Dg+;Ak6$.Kic+\J/k6_Aa5qAfS*\+J)MVU@qRoY5BhrnfBLfCSb8It*OVpAhhnMKi*bk'RU@5k%Gb"i8Pb+U5e;HmK-: -OLuqL_U-de%E$QZ5n679,Y8Wed6(8?`DKl4AJo,#>]I`F;5e4M&Zfmi7hOO!*lg#5 -Gp#W*%#H.KdM.0Ka\cT,,Y>:hO!mTJN2\8KdL9/s*+sr4/k^6O_(X#1oZ8f2ZQ.4H -bnF@.2U,0Bff.2TN9N;se"#kfcP,+,50l%_q*7a*%1,>Idj16[*Qe6qHI9*J)+`0) -Pp&`Ie4hYkdo>-`:=I_k5u?'2*D'/YeNHc/eQ#mXus2@FPW:3h0@ba`)`DbagLQ,?PhPkIc!*_q1)i)%LI^EfG5'J71//oYMlML -+c#&Kr@s/g3-I$7X:\A^b2^^C6&t"cr^E"2R6F-*jOmR2Q0$\:@?rV[6_*9#frf;W -k5!SLS`e\oJY$OXreI01RQc_,kcR%4s$0BbSZ(flStE%J>.1E2lWVTEXD?PH^AGlg -r'do-d14L.m2KB^[d?/(%q]]M1h4,9qm9eDmp"*5,t_D>X2%@*%gg)AdD]t=EEk.5 -_ss7EP8-p$(FdJse3>V/o,QXFcLX0u3RDj'%nY0?'b)\Cd[aYq9(%+W@G(9ZT5!$Q -h7msbpKc[%hY5k+J`-<0+,T"PhER.`q-I>cG[>iCTm:rJJ#2H,T"h2iqVKi/FPaM[ -'8-3)+3!gK5L"2VK[ZL]]<"jl1lJ"MD]3hBF1kLop4m`0U+Sgh]]*&NRm#(ndiP -KN3m!?7AsdmaV^(ZQcLN3SC!7[VPjSO9K$::<)98;/&DUih^FhE4;q -ocE/SI?2eT5Y)ar+QOf%OO>1<4#a\ohV=*;Z9C`L#ot:%Um$,GU%M!DgErP?S!29D -:eAbt-fl9OIP:+g5H.W^(sJnCEi)kP'N"sDU^r%)hHJ*ZD(]D\]9gt2?o#5:#U(2+ -R*^_#bZU&`k#BTn1HoDF"/)AsPgtLE?5cOpXYsePgRHZ,E$"dk%q5\'SQ<&Q$'5ehRZdE)F`-U.]slSTS(np!E9Y?Y\@3+2/in,OmU\ku -[1_\.qk\A:U[G)r0'l4=[8[L,R(J]4W%-N3Gj=t`X1+\k?Am'SDbXWAQbKlb)V]Z. -L%N)\f)/m$gkr/_rNA0Z]3l$FJ8ch;L8_,gi0sb!X;22[a?a(`r$>jWV2N4#:CCU! -nRa?/*Q+7nc!h)ELhu+7[2+r?>'s8*nQ%6\R(^rt]2ssOQ+t>kh]--rFcQ"S4ic4T -+ClIGORaU1\Mk`Y>^Vg!nm4nN2_OCO4/8$\VGkXj9.XXYYBK?Yi6.I#T&nbHQkg.t -]m64BAt7,7ZUS`2Qb*-&Cup+eSoN&Dh`GJ@l>TU,#/FCA!pC'kTQDN5Rs"<-i6<"2 -FCktM9$[o[*&",WcB?Ve;&!J58#GelS^Ubh:20@,N%oK+eCp6gC/%^-m/fo"QF;b5 -?"L,1VR>"/hcsrfFftE"^";!:'kGRCPI;f4f\6n+8W9^9Ek]`MgG`e^c(r0eG%8_M -?SRXZZ'WVn[*@:5E+[A6\+^s&c$@2ikDdr^[oVnPS%j+7(cS(/(A6%dgI#n=otC+Y -ek'$u7rSqAUNcjEdbGp:E/cNfnA^mG4?lY^*C%L;LD3A7O&g7k;oZ4P)ro^tO=&IY -X8+)"fGpNJEh6:Rq.D;@gqT4t*bERB-HP?((Rsc?ER*11.b]5>BCl+Vd!@')g)F+2 -D/PWeF!1M;H$SFf:8PM4VWI+!:TKf+dCZlRnEZWpYBCu!f_YmFhn/?)p3tQGHY7#, -RNm@P:?C8XVZg'_/%fhmotrlK%7L+u^i<]b`4R1C_tJ;9nbtQ.r)\mJ5!KmZ5"ht/ -B/K29?d*ef2AH%#)H65WL^;&6G+'_OGhbWKcgST=T -R3-aq^$8FqVpY@qmsk'q#Mjj\h1pl7 -]_BakpjXZ>_RqtII\.)Gr%II9:.)sEcQV>`QhC?Mhta+^>o\6hYOkWj!"]54:^6u^ -$NSNa!>#m*cVFS&9``R=!U#uq%qbs)@03WD!mi^dYA3e#3qkoEP%/qpLrm10D0XhE$\tLE(no#lV:ra!+b7)bD%1ptt:tH/< -aT8Uh%M7M-:3bGg0+Q>d%e)1`;"FaM3Ko[;$@Mm8HggZ"VDCO;&4`oM["-1 -#-f6_;'Q^9+MQ3@#LI`$0fKbC3tj']7W=+ZO[g*_8jjq+$*][00UWYQ>-Unr$F+(J -;.U)sAtY/=$dcEl;0*P9G7.6_s,b+K0\[G,M\sj&)%i&M;3r/_RZDFN%PT+G;55%` -UB5E))\D`_0_lZ-\fjh2&2D'6EQ&KOaJ4k8&Q',\&_:M)=V>^+*V&/&Z/m#=k(:u8 -'9PL$1%u@/ptq.='Te4edK:VF,o%"t'ljs2&f1CB@2@7++q\N5;BAH8E>R#F,8#8I -1+s"GpA_CM,R#h=dRPRG9-hq],na-&;HG/r%iQ'f)KK7)V84)?[3j;3-Lnbs&p>Pj -_&RKF*3t,8P(pRu595m8.2%[9%_!M,lRC6G.MA4#1$]nnq^U"d.e3Hf87#58#:n4+ -/.Ul4&eu.Eb:Jh%Sh_<11+=f9d1(t`b;KV*kr@!h]1D;Dt;MYr0t=2=e(36d/Mm^EBi"2U:YWda9Vo))m`"r=\!>Z6qV1MXYSg -0(S<\F-AVJQ?0A'(fL)FEt(0oX#e_53tnq^;n"iBKeYA$47g>AYj4'.,1Hi''4k&FT!eR7i5;Z=-..^"fF&OpepHR.(5S'GSo3jnJB0`e5+6?ig1N>^E -DUHnQ2q0'2ZmRg"0^nUi6PG5B;iM,?OZCmU6kc%X1d:q8,pY:@[<&rK<*)MQ>=I%K -7MK>dF2^6T(Ij=B1"4H=;q4BZd7;&p4d4tjoS5t:M`u6=gT+gJe<`!?)a@:(5P+\C -<23'MTK*M,5kMBJe@.^P%T\f16.E_E8^0R9.7-ua9[qLHo7KCe3DJ#X:'dUI1e1<* -78D?'rj/:do_1C92b$dH:_a(/<)chgJ7.el. -<6nX/)aa0U:,Lj1'o$_)2bpaM=S7kQjT8F];,6sar2&TV@ -\m"^I;H:V429/U[ahBk76OdRO]ci\@`Kls[@L+#;d2.EA/7OC -<_$\d94Z"?>Lg8]G#DV2_-GPu>de-I;7B(Rfk/ddB,068/%A"KarGukB@_WHm"&JC -6=sb(?WHQ/?:G(CA&'kFqJ/+]4"aT#nkctE\: -#-T -LDXrb=DW*HFWD(MIWsb,=G)Erj*lp^IlHh-qP&eBN&$&[8[9pc`J -2fjmQdSgu+J_7l!%QAVl.sOtbK@nY4=P&P"gPskBO'"i2=@52h=+p=KNu7>H9VmGf -@tkj#L%tgA\&!iEF,-.mOVnOh=V$:*>*rCGLj4oB3@BWn-tq,8M3sWn=HosJSVe:L -MHN:CGc?SqX+5D,M`A84=LXQR07gXRJiL`8-RMnSc'H`Ued+5)4K6ZRi*$33NnoQLB'=\P.AK#)97o^ -VF9)tP<%$SEk"t+URg((S`E:B3DYmml]eqYQ+9tS\b(bj23o+kTGd`%V1k61cWV3; -Tc+T<=r3m$)ki[RU)Ac6R>mUq/"%;/R:7&%\Y5ddT;1)9&@nd0\[eN(\"q_JV#!`\ -)8-#qadcMWV>=[OR$!qcCRnXHmH$3s3d7/6H5ZJ[Pe)L=M]\Q/pRaL-W6oK[3X(gq -Rr,'3TXplYg)[2^X/amWWuA>=Z&aX/h^cU.;nWg;C=eagJYOO1NlCqe*?A -CT:nOY.JbXRs2$iFgnu.\(60LHMP(>pUJ[HYPSR/)jca70sLPIYrP1VHQB\dKgL!! -Z?rp`>*6,F1V;BqN!S[SR*E"MbIlTU]c5G6:^sfN]sTLi8R#Q9>@"t19t!+7[[Zfq -g[^XuQ;Kd"2L6V,b'^q]GJCe0;b5,YWO/I":#W&UUhBV_ZVp0H`b2T -)K-S"]6c!F4"%YP_6Wp-OF,#mHZ-TF>K,B)`Z/L.9S^;*3sB>^+4ecbB;P -^O1[KADQ\UY1_7PcN4;_aW0u@.[b8d^iKNZ1i]>Dn-_gFVk ->H8Lo6,[$S]3N]PfjD\p^LIUD`E:I+I-8eFld";ScO*7`gYL25Dn\=!a1VN#<.1k' -Kub6hd/#oH]UR<=RF0f\dCg^Nr?H_BJ]`Bob$?c7go\G@ZdZL$PM@t;rC,5!%A%sh -eJpY%]Zn\a>JtXDc(*V@;EB((g)XVff%k>srGu,S=0o:4cTQp5?&.('MqH'uc[D"j -r;Xg.#LGW'-[cBM*=^_nV^N=-dXAIM?+87Q[G/C*gYEp[*AP^-bM7_i\NI:KrRZ.^ -6d+:Ye8[pASB'/cl:(RnebmtT=Lm!F:"F"#H(B$7?$G4tFl;)#A+.<>e"1L6SoJkdFm$HqnJJ0HrdjU1m,P90-p&FTI]qt,2D?$=1mj_8iQ.kJH]j>WDMtQNJ#ZK7 -rT=!(^Ys-VS.7IgO2^1#q-;cP5FKm]FF'KA[nF!Vm.L6]hS/9Vb%8*\?;DZ0dHC1J -]q1j7YMJaDI/X(PQeUd!rI06gO7W'b]En>3C)mj2%0F?7<"fI%&9J]n_6AS?#stkT -0+(&XZni1ZE:c"!6a7%a&O`lL:D(Q"bQSb3a!&HI7Ic=F)+Lm,D]-SMZum?YEV+T# -8!4R9+ilDaO!)EI<0nq'Z!l@/T!F$G.*?S;X"6l+e?:II1??2'9JYtT.EU$qcSS?P -<7a$&ZZP(a:,A-t3_m#gmlXB%eFu.&Zh48_:c&ml6;Y$H%n'8O<>S,%ZumH];DaXd -8lE%(02,;$eMg6%[.QX[:P,678(;Z58Q/VH79#lBGB3Wrp`HPTh -[EX2-=;CL]@T8Ogich!f7?qE:G'09f=dG>FC"bJAYA7?#Xg`+NQIWTd>PAlGEa1OT -a)bNF7FuV:[oM7-?2'WEH(/u`>?[Pa"RGkO4\A!n)sOlSML:Qo?M/i+iZ3HGXrYo/:/R:a!iDjk;V -[WA$QH1lBRB#G`jY;N]%4QtC\nmb -Z>:$KR/h(WmaV:(HZn/RD4?jK\\4/B9bg)9`qR/b]?^GjE#\NR_Jjl]"U@fN7#T') -Hut@hEP.>S+]L7F_(n\ha#D7a][&gfF8WL;dWE/]:XjMM='*sq]m!i9G!21)g310= -DqoP"f6?(q^%[$7FquZ`icoo0LZE]o:QOU_^1X)"eWrAaH/@D]YNgHu\$bRLIeUJD -H_2+hnbbTtaa@P><[[S"5BklWI@lk`q>NUVn,%S^Xt,cK)-d)j&,$#gp]ge,,R8kH --3Cum&5cSG4_QDG#XLEr"^m9*JrjFL6'sY:i:2=hX\KHc=@gsc1a@\CQ4uZq<=<5, -QqZn4Z*n=Y%:PJ[L61C66^W+>dVEu]%FQCY(l&Z3,Y*[2\ML`s&JH@0LPbOZ-q-+l -'k3,!EDB7\3@ME!,4o)/:BZZg(s(m8/"hjKVDLcO0c6[-DiPFL3Cc'n*FlI#NtLM; -8%A@:A+Y84&dCWm3=+uCK?ecu,"5%J)'WU-Mil=3l+VAd-!r3iP*09I8XVRcjRen* -&p:V`1L?Dk!$3[oY'<>jJZ&S.hd5:5\j.X7^hCp%79> -altp(/G$*s-H&;4m6BdqO0R8*JCuFrAE(IKMtA3G34T,YXS!13oLdKa1p]e+25dht -VU\k^=_hksYI54dfipOPD/HVhVGtRk;[[kgD=+sEeC'sg)i&EJ"ie'=*p$XrR(FG7 -8u]9hkZp6?F`*Jq\rXk09\dsH"En%Eqb['VmY -I;?OiY.*Qk?b>`Blck$s('akB$jhH'.E/NW.`:2W'n^=/$pAIab2GE2Kl"13_Y@1C^\9hG-=c79C0?+jL).PdCNH)Bc`u*t[;1!_PD?`>7 -q$/!P-&e:1D9KI--R<68O-=Tb:0uO9lt&8^Q#=lKb*c`i8mAcMY81KX\UuPI*6FT> -2-%=+b4o<0eXLVlDpR?k:)=kXfRB\bWCR<'.q -g=p6rmB*Y%p@0r`3Q!lF4iOsQQKHtlSA+/kpRXF)<6*gO7F>^aa#lE -bIM8Po%n#H/08BJ4SLo"5)7J\00ltVkKKh<;;hqG\4C\f,;ksI)X_0_MfqVPkqn:(,gHaho0 -hhHP)eX(-Emsj?R&&A19/`Ch1.e94Pq0tWnrI;n]Hlla.J+hnW(^EI-Yg,"sr -lBBEa6??"[lO^HK_a:+5^Z6o^`%8dT/]-R$_XoM!">H(0s$J%3_^ki!>L(#X#")oY -_fQ("H;Tk_#f*MJ_k]B3Zoj/60#7*C_!F;$r'80l5mfF[_*er&,X]LL7)WQB5uJCa -&O+%48\q2p_6ckO`#_4o*lR)h/8QNL"`L]1bIcG6\JseCh,nlA\$"i6c;%*KP/;h4["'; -6mQQd*,NOrD+;GP6o7BO>XV'rE5s5C)5LUS$q`q#F[ot8//(E>lqL!7Gdo"p`>![< -,^dQMKLI^C78[a;Ji+PdDNk!!`JGs28LHAHKti:_89BX.KS[^6M9)KMaL$ki*+6c3 -NC`,=Q,I0%9T[8)O[`<5WUnTYUm/lXPt%:/[\R\.jI!sBRE"T^ac`dGr,Kb6SOqm_ -am>S!A;h4]G/mj38i39\_6c_&:!."CVf[8Ue9jdAWCin78*G;a.J"35/ff83'D-oD -KS2u,.DL89aqV2*7't-:[EE*hbB15.m#Of(NQ[iPWGIYf*5'BM]h'K`T0/?0FI(,b -Q:rR>T3OQOUmoS-`6;b]9PKTt%%p:YT?O+'9XGMWJO.F(c,r/o8jT]%KVlecd7kb[ -8qa1dN7?*?eWE8#PFEsmfdP*jnXW@X0e"tN3@.4,ZFiiQ`_.c8"9N -XQ7R#jiapfbJ_*>KYL9@^.tJ&P$GiI2!iN+mE@#/^q@]`"NA[qa3Q%$b`']gSBK5H -p!6P3c8dmYo_?Ysq98[Vbm^LE*;iMZs$?S69iS.=o`1p&1JY1U9A)g-dF:mrLD+KW -b9Yogm.\kl$.,LUd'X8.`=1#pk0?s::1Xp@.5Xej&^HXScE+cMFRIOUm87-V5c!kp -'c>7K),D7k`mjV+D"Q-)p/0WcWshP5nN0O2qU-Z5dP0P(]_p2WrR,3u4/DpTK`BJc -!B]BT;)@g.3_c0.2N"iV:i*D"AI(W(h9a\-dkrr175WIn2:H*Gd/>oMof0r/2UNfa -e$V6c_jaLt(/s<2;tUp:r>8D&6.*),;5HXgboBUJ7FC3ddIg"g1QBhX]"s@%;EZ5R -[7n(%V,CRs<:s#4jX8KI.+Fec8&XT=]@.H"^k@G<)^J0eh(C\b*u'.5L]!b(Y -f(EpOohs<\ENGQf<5!A&eT7gDk4#FS$- -EAgo*(/kq(G\s(Q'5?^^"H]*fgWX_FdH6rQs#usga#8?Xef2i -S6T!J0E%Nrm7^cLF[XJu=s_?^Usn+9`a%WE[*>IPM0bAlAr@*FKrUAj-!J7A -`Kc']Ks!bMZJDA2h6l"n`SB:uqHHBs?1$OF9oN?e\)&.89?fWSXlS6Uj]f!?>LgMq -KtlK0^0[1O>SY.]*UMY%mCL!Lh!NAAp$b0`-h/<#L%*NU -iEd[Ec't7;4k#1WrEn),XXQ<`)$+$/!QCVci&1\q7KhXM"lNkCh?De@i>;c..I+`RnR9 -/`PnFiq>%c"u)VA$"/cKi.M,=V@6k@,3)S]@+GhGjpts\Q!jk0@29L9`]M*c'B*O< -j7X3u!jcq?XpdM#A(icZ[1 -##AEiNb&u(jSXVeq)Vmi(>pLki%?`qL03Q'=llMajfqZm2DSc+>omT7j(;ZZc8O6N --=`?$Ai=,\5_S1#4QEk^k%88>aYRH;5ND0Gk-c%hAj^+;D:]OkA6q]8AoKFMT]D,R -iTom_N_8HbFc^<%jp]#a,R3>t:ZXK2kGEUh[X@8@;*o/"PI7I4<\3?M>NdDckVe(W -7YKlX?=hE:jkM]UNaZRLM:&W -F_PH*>#oQS%WCTtE9AQhjG'-7XeTTRS`\<`BVp"eG"uLAHtV<1C,UKT5,.5`oL4$f -AQ[c%*ee?pWTp@\lF*bGAqjuJXm4Dsk`0%aY-;[V<^WInf#6fu5AC*k<\>2+CruKt,mIn//qIPjk`G=>ia5ul+No]O2jY/U/lo+%k_Bihij(mdLkB>E% -`lHQU2Jeu.m&odF##g^Cee?VbD'&<;7eH.Mp$ZFHD*I^]2Y_rS?Ys]Wm_nC#IbJY) -[-ubBD786h#2F/5h9:K(D@Zj;"5[o:lL(PSYg+/)B*dp4$-.HhDN;U'^7=V_ic*tY -m_7:5f^M@JH1(D>mgg(LrtOQ7J@NVi]I*@BLD]QJ)=aUC]O(AM7i^n[qJX+FEC+5&o1MDa*dX/7s4!Dp&$W>%q9c";f:IEF@Tnc7t[tr7*85D8(0`G6^o_cGXtBOhr2jpa0AB?WVH$Q$I"Dc&GhJP)3iN -Is@TSq6ujha.2U2Is(4Ojk#]?5G7cma(?]QGYb+06S:rcL\bY=H?Q_0BP.NoEr)-& -HCq56YFQ?IMg$M]FMEi_#B!60O)juUmXL@FmuhX!lhH3^p*(R+\=(4&cOHuGet0)t^-Vtt>Ri?tT#^WcP` -c2,K*I.,@.pX&jDdJX$jpTL`J7Mu"%Z$R"@b"3t-0A,VE[!b`W_DeoN=2[W7\9jk) -qj64'k;W:IRWkBl;X=#hf>.Aejo/oTrcNtn-_Gc>l#30DIFm9Ra&A+=a8Y8BIe!C5 -?cmj7bC$GUI)jZ`(Xi=Zp&@PUs&\rEBD;Fmq#&^CIBWOu53.-)rV^i4HQ[hogh`o' -&dJSn6/bXRA0r6'LI>S`3.+aQ(5bQ@;4-ER4UHVZA5YE5Q)N2S8`_^a<45p_Q-5u`24RAg;gI0\Gs@otB=']'&qrc;dV2JnHet/cVUOg1)Pod&;leGa'tVq=ZX9k; -/(PXcNm2%?=`"kRA[Y4rF?Jt-.uhjAFhD!5=*rccq1$.eDn%n6''!l<]3T>[<\kO< -`oM,b/9Y)6Ls0IA=\RsR4dOFWF;d9UCJC_VC3<^nB")'LfPG_84f6hJ\(kkF>J91n -ID=]ZG[*E[(QHJrEd:p(B/cC-k]D,V5,VJafBd[-?,#KG^#/=(HsT#bQXj&/U\u7; -:TrUApj522s.@?rp\TDg^V@h\o_uW:qum$bO:2Kt^sGae"i0VCkh*"6MU)S\0Us^% -_[rV$$c?r-3=j$T$p,'>$WC;SSYrPd'h'i^>o(ElA7ZRsEK"TN`mN"G*QJcQFWSU9 -r.Q4`Opm6laO3bE--5XnPp].dI&/!oB.:oH9%(Y]/Ba43]e)njm)(L#;_6$Hb]?J& -2,+`hh)bqF,]?FcI:#'4jOf&ofg_9r<5D^PRS!dd*tb'eX=F&b=9nOFWj?) -<37Bh>7s -I9fqim;CMj,rqT,f_.1bA_C+$P@rR7Kq2o2QCY-l>8F?ICYMnW\Sp5H%D?ad(ELb@ -h%qBAeYD?n2g4$oIH>ZZQ]:_*1nh*d*uW2c./?O=3pK/#j*t3%r5tS#!J!uV!^Kis!T6?P -JP[s'5hI(Zi.M\o:eh?`==j^%@p*T/C(<,23sOX8+bUDe&&ItPqO_iqKb1C%6J,3E -iF<9amJ\"_k\T0#`&3<(hAnu9Gn8lgGAp;T+usn*jruoZLs[h#7*(W,@Y@O7;)uY, -VdSh]N*)!8?7n[6],'Du@>keY0?.,5)5AHiNCm=24t,4^@sd6r;8tXNGC]:[_pFH? -5!DK(q]=eiJWLK.krl!Sp1-PGOYRtH8C>HOUP+biE_8C72h#\=F>8tWAkk5dDZ/In -o99lJ;*T\^s'PlNPnL1E_22GJjb0n);U/H==`#bP`4;44mTrQ>I4s^c"ba+;@DYTm -1$1=7R'SDU+S0"hADAl-'2E79=edjsH)l`TqJF.W\Mr[CiL@06E)&m[&E9K_SM+;^k?RPJe&lo231CYX>\Ka.k'fdfrBBEBrLai7JP]MP6/sE*P-ci6:t[Ef.!\-; -1&d&$.OuY*]c!QoDN$39$R4g-:kn -MJXf519=HpZ;qme=Q[`*SCOc_f%J#HX(?4Phbfj -mY0'"=&/$d>HN&9`3lYRDQd@#\TdJtiOd.5'AJu%H1*WT[o]6+9rd0!l^dOJQcf/3 -)sr%#h0-#'!lrP1Al!DbcbA8ju!_,a>8i1([;n9,D[\1$'8>V0eH`LFaj -cAC7j98Dm]+iDrj&5hajCN2eH[FhYs]p8>HnV.t%_2)o>]&6gUH]RS, -F+T-Em,VE2On(t5a]U8DADE`>nqL#a9bQu&$ceP'[TUb`D$FEUoKt_/ -I;d,>bo*]@k1nIK0@gihN_VK^?frr_4B+eQ!)J'_@(6>-f;T^\O+`d#N3 -ke/!)0^^78=Hc?d4YK_:V5t/nM,hZ$&UWfi'6%C9:F@og[?^`J66]rN2PI -^2D[EDf%jXj.:H!GhcHjEUFjh\b@jmcak?EBO0AdpNH)`)p``kqdZUIIe_E^jka.r -0;Wd2!T4q.J#mKEW&4M\e(cR=7c!aTpZ'!;qbN)co3Ja5DR8A,bDoMLLWB2q+llmh -P&al'an\FUj]nnDm%'-Zq0+RHI)u9Jm@hLBQT+)/ReL[TZd8@.5j-r.U,'&Z\i296 -koDF!oWF\4-][NL>M#kI?0TnNVcW1iAQKf+pXf1q@,`onfl0[i_0\C\m*Yicn?*A@ -4*P[NB,e+"?6O1]a*G]E2>?X443$rSJ_#4T_K]DsiVZ3&nQmlgGi'P%fk3/4>gLQ6 -%kGi6[lO%clco%5G%u=>U$04KU&&+f%d->Yoj'f5FRNN#rI:qB1ZPQ`?FT=5kIC7m -hqh.mA)4a=_>"p-Is/!BgAX=Yps1J!pCEhLreGO&#;>'0*DCFbn(EF#1VeFqs7cF' -LFH@6aF7L@q>WtLrElc%Ic&uYjmSE(hp;+J?S=/rkM#Obn,7al>9`mu[?a9*F^J -Zd5*:0:r#:>f@q`qQNAo0(An%336V]qp3.bE-2Dh`;U=!#V^r-h]9aWUMC9KE*nQ?5S>fQ03$^#!. -nRi7bB[*Zo%+02,0m=(HGo,tn%C#(,;!Ss\N>QYt(oZ*Qd.\-7(E)KX2c0GkE<@,A -"?"R="gPHHko<`$Ri2H\2Xqq*WA=c6.ie(.*AK+Bd7#(\h&Z%E*\latETnOLlnqX5 -'bU*\1&1=Co,Nno(%MF'K3K,>%2Q5](@hrR&T\d$HQhr#+u+KiCBGDNPp5aZ,8$+a -1-"RGmhsNf,VhXg0r5eo9b:1(&(.X$EO-UI>nJQ(( -;P>(NW5iD1-W:a-ZPOutk:%&f1,C43F"&lN/McoOAl=mMEgnkJS?).Y0_2+qdmugr -XXfRD2);QsF&5;G]e$J0//)SQ1MJ`M_(>05/X"XC1O1p#Hur7N0QQ87Ep.nGJM/gA -0,'TGN)),?><29R?UJ!:J]8`EWB/M/3qKMJ;i#ff7)jjX1p]T=j&Z)1=Y[810pC-B -`\0,(h*(Ag4u;:aF6PloOYbJV1UHa1n*i5V`BWra5VDpAF&b*)%7%9423*VQP@lf' -)aX(265+2p'7VsIF[G^P6Sj-C'>$W6-qJ'6Td1/5R5`fc"J]XdlioH8+_IEZgC;jNC`](8Ml](FI:[$o08J58bAfD -EskJpXZUM`(,Q[ioG($+\?4,u6.@,QFN$q\,k_p$6PM%FFOa*m2&MO06e#gFFQDeM -8NCle:DEG,@pqD4=&8Jd,6MFEe72=?#tAr'_R#1Y<-;'65e#6q;D`r&FGEbPKh8[, -;`-F2FZEC.4]CP\8p$gmF[]9)dn7!P9(a1`dL/_?[oN(6D["PX/'PMcfBm2`1+o[.bKVBi$Wd=qq!*Zsce]X%!2G?fFa[e$tE- -&QMiH6o?,ce]C^sbu.A\<#*qhFkL'.h-K^4?6b5)eONrRkp]ME1'mLe>uiia -?hOUoZX6c,%9HR@Q?Zf:]C1/slASLi?C).#C[L6LZX^QCV@5bLK6X+"X*GbA^Cc3Wsegk5Gc!pCo ->=e3cQJ#cVfJYU`DDjp1"*%l&m:?s>Jla(CY=B(lC?$@-;D%<2%REAnVP -G8U9ZLM59_EU]H32Ig[7.l>d\C0*9-2`YV`R;018F>gUMX%2=HT3m8GWCDd4bNMpJXo$EMYqTK=FXF**Jg*qLi11^30A`9Pf/rWJJaqgK;j`2/W)PCAOF(+j.hM,-$aaG -PW6FB;]Ui89pGHNPrVj0Guu0`eW%+JQ0PJY39-=7iBUmMNgY$MflmhVo8f;jO*QG? -biqh^$(1MnR5kX,)%Vj3Mj_^dObK;WR2_U*+.?\DP'J>3K9MJnWKT?UMF4516^O"f -@m%:lSN+6PGt9TV>FkTKSiPo(H0JU;AW<,HQ7B5#q9>5tF\>kaTK.:jC[HP\LR:)Y -TfNb#=cJhPOdUM;U+^dh)&&G7/Vq;J=T_Nifc?icK9A7&UaNZ3H,H-j9q1uVGU$:d -6SkOK1cY=.Do5SG\^dRFfhtu=V`JsuH?lF"I3.)5W&aCHC:0\%D5K"fTGe-0=RW5H -l8;`]T_bLY>,S'ZH(nIcU"ZoT2SDsk/$&K=pk+9qR`S?O6&E2"OMcXGg=`:ugSHkN -,WahcGr"B)rIoJDVY]t_gA*,-J$8_MYWE#mHO0/1KqDQ]YimsCg@);Q`Mm%1WI#qs -3IRnGX0VT$ZT=j_@oKFsZ*X;9Zk\?6R_b`p_YW;LXL^Q`je"sZ\$bO-GT,DHHJu\[e[V&RiQbis/*DZYBtmV]*l-\NO\kJ\N?%t)\o<@S$=<:Z'pfaYcWq4-`Pk( -].t80gGQ;V2nSt"E`sEggI&Wcah7+'=IW*n]@f:KNO>'^DVO641iGC_8O:t]R*)dHd0O!d4P5e]mOCu`WS;kj0`u#G?a=PHX\lQ!QY*; -a?0RGI">ie?b2Wc2LH7LI$qf*dDB.^aulNCI&Y8cGJ^tcb<3"sf8n#n2[^S,`#Qb6 -r5aZK8&ZIq`;J0(O(YKj>L!(Qc9,AWgge?ngWmtn3W*gABa)O\7E:1^2Oo]PI"fq; -M9rh0>Pu1>Wb]`4*Q`^OYM?8.I4H,?"e;Ke^#9+f.ct[?$kJ*_7kNh2iM]i%4jhd9:#re:]:Id.hHA[FLYa'7jur%m -IHcP4=k?u"h_n^q2Dd;irR]KlfGt"VCg8lI&)giWkl-jUSJBq$a0.ZQl92')GVeAd -Xm5njlTV_/hDso8^IeDjl/'AMq/b?Jc/elL8%K/khV%">gK.MYk+6/H^?=Wan)%IA -k;#W(4'Cb30=BX?k^l+@h@o.&POQ=!nG6MV^-t[T60`oqlCT;lhRE'j/b8oro/5:g -hEC3)4@-^!n\7MHS3,gRe+EW6m=*maITuK.amM@WmU'Q!5A;!aDs(JImkp)n?@hjR -c0ua-ch.P557RD&M>7%9bJ)$.^E<#R+o2//#CeW-J#W:ZXnqWDo:NG^p$pg%Qi$d( -!$9PcInfiqqt4<#rBB-;EI%7!lh5hcp:T;Nrq69*F'0_dn)!oi5)&Jjr#cEW)u^-I -K0eH-LEhf;$\lPBd27O3*u0W$U60]MAiU]h7cX$l"HGnsONHRHM);(C/XJdF0)*#u -B/5oMk0oa"mVt@[:M:F<'`*YPUB0Vc'NplID?*DR!HK=)8WK -'mdu1ZInNpRmjL+D7*TMQMZrel#=7=l1^[tmeM:G?gnmP((U_*_dW'PS5q9\NQ5Q" -)'"r<.@&(fo,4(LD`OB7BCm)_(6;%`dqSInSQ;psXk.@^)]b6jBsl]4pD][Smq,N4 -U\EOQrs+Cuj)DOK?;DZ.c/s*CI3*T*U!r=MHQ>l5?an_VGPg56DT)Y.tl1"Rtrr6,e&`2o$^T[P5!'kK;$NS!3,S:,E0Ott)5u<4R#f6"p.geW4 -S21O?:rG:'6a6bS&OZ(.6P;fW$OCdCLP/_E`K>7P(e/LmCDfUhUi.8D1$!IOdHEA6NQ"`g,W -4k"IXG=C2-?+5OFH!T$uj*KR+[I\cQBG2;Khs"GKQ!eh@$%ZKo7Lt2\fO>im^DMUr -M*Ets,Ds0N,3HM?\CNa%A,+nJO(;At8!@Jo7S'tsR:]ZiAbh'jR:^`ACR\r3`cI\` -H00IGBDMgbTkJa!Mkat^7['Z_D_@LMl0gO*VeTCiVlORD`i6(TqVJOM0\F+WMemX0 -ag#Zo7aCcnOZ(r,mI<[)[r+:)kIYV9`p:;*qptYY6P3;0_+U:D^V]Jf2\X,LHp8Rh -ESP1Ka`9MA+j4n=KYpJ]e=ShJF8Xo_cZEFt8(2Rn7nM6QrEiLSFo?F`9iq$)CYEt* -+*61\?,q0HGJ4<-iHP7D$#eU*5Eg'^?:U@FH+o'%kud[+n*==e^%q#AIb!q@Hag-U -L#G"0a7F\n8'1FOs'>oKD-JsZ[/OEaM2^OV5#qO\J&hHb5NhhAi"Q2Cbq9)`GS(!b -<""8=2?uMB+Tu2;'7u;&1:mEU)Ie]9RFL2C:ieQPq`V3dX,4o<&OcD4e.+&oB9P9>^[PfJqB(4Xb`/]u*4%C^h*Fm<; -O&>T*4D18XhMd#IOq'iM.1m_0X5&%W2F^73_'@'DO^7F4oY/F%-03PBPEKNQaf&PT -iO#AE;O%-I3!fR2qBQ$@tW4\>>'6]/nNPEQ]h&L9DO,mAe`.MP87Y% -H'$2m<%XMZ2AT!NR5t0f -&YbEYMbuMg7;0TX0QJL-aBC_tBa#`Vl\r[%8KCDKKdijO%&ZZ1+XcN=Su.ZgRaX<7 -:1XjhViuS$_h/+DV1c1RFV^ZMHAPNL0iFDs2Q'ONTi>cl;lZ*`X&XJNt5p:AOWlB@VX, -[M$DY>7k<1Ah:?XFAtScg%mWsXVIM9G)"FKF\dbn`.^kSMg;tQ39FPJl\!5b,;k&,Q/bpMCQ+j]Y)iRQd%8+0r-Ke@? -TlY+2cRP3+lWnkBG&Gjb]9d^0?2MH_D\_P@>Z#6LmBO(/[b,'U=\#Tb[`4Q8)d@@\pT<8ha-R/U>TAg\rq<7o:f[j,M_MGWce"2Hkq3bNj-So_&]6<40oBD`jEE+X^K)@o2K>nMaop)Lt2 -2b%KZ(Sl.rP0t1p_;];dMKI,ke!b2N.r/.CobK:3R);iRS7diOXgci=Ye]:o"d!a' -6IqUO>AGdEfJAP*f4X7ljP6H5Fp>k,3u.j/*KdXN3tgDau!A5.?ZF,&\PZ\L\VN;:$YaLU6P7tJ%o?=g!k:X0J_G0 -R!F05k'=)Wk^Ia%H2g1oI2A[NSsRoPIo'[e=0(QaZ_dNu>^&;kPO`!Hg1Mnuep=g; -pKmTrqs*je4#^aGSWi)]5EG>`69X4sa1-Nrht2AAdeY%[7/&n8p3YEGmlu#NpWilt -]FX'#6U/E^DpcTf.AHA31\Z._htpc#N:se!Qle+?k.Ja(s.Ac[.T=j4$irU5!^J:= -5Wf079Ed[b$U'F!^jF^!KEjc!W4Hd!]sJ2/F#gr;%R'_#4ld-hkn5fDjM/niE72Lc --9mG:5D1F;,Pj[:isf5k6G*66_uITqPe^f_6MrN)$o(*h1.*TK6TbFcS2EQr2F+&q -ZWg^#bUPuLVnh(!_n6OJbRm4t%m_HV6i7\;$l)/M5XZd8_/pVa9H(iS)FSC16uggE -`#h:p8jVf9`0k$u"4B4gCPRQmSR#'2-e6,-! -/]FeoY(SW#b[!Zm?:F3f7JpO_$t1&R2o[C,`\]VD3jgtA3^nEV1MFise3$+ZBh#1= --U^0e'LKgpD+tng$rt@_<]M#B7WYO;oNTCA>"E1.88Kou*/R4VMFah,8A'mPb`,/` -A4Z&u7SJn7nEiKJB?3JQZ9ZdVZt[WePt>dU7a,g@oPhpBR7XKI_.^[*7!6W,SOr0j -8bOP7fuQ:AO$bPEAG'Uq[i -S'3.q9H:tpRE\=aT?M,k9RNL,M[IT@U<4J!9WZG_^r8gVc:V=1b'KA2H]4AWWli9/ -9e=ddaNR;q]g'`F9,uSYI+_.([S(_s9t]7UbhZ"KhG*@o)/Qk/%(T+Q\kX[3]pt8/ -bgn-BRS2`)9D%Djr4u&X`6:@/:;#mfaWo#7a\7B.:@.IFr:)a.9?bW'auo8k9+]>& -cVJAS^Eh/X^q[#$J-_gb9ha$Y]_kRYo8KtmM0+E0FP+j7!`0m>9pi*.r<6#'##K.A -:jiUGN82\mj%^m-:qCAa[,k->jGIZH:5of[Kb6!Al-@fF:9>4-4V^HImS=hlcLi#O -I2Pn(G#'[];7uMJbk3B?`m!fDdJFa+N.-^:W=:k>MtI!Ebp?7^-5]k,V%C>C:s.-J -!mj@d;QVK*PmL@E/lM'i;Z/:J%5BmI$rF&^;_9gEbmdM9jhmf!d1!ff*B4Vd'%'De -;nY7kbn[r=(=A*[;tWCQSNtL@b#-+ue3-/u9MCCV+&m(N*]V0P6(G@(K[O]`cdb]g -],sprZ41q+<;e>t"Y@`S1"@jSdle(=NEAHAjATnR9?LPhSN0^* -Q-"_B;r(h]rF&XR6cU33e.lLp4_7S3kgV1)<)l=eI:nMH7oBL\StZWm[;AmfD:I$; -:\4JnD,F@T:tI9r\[>Ji9m'NCG#rO)=+,<3'j'"X=]_G&c9+):[=(uQ`84pqGC*FRGEL0.`:4#k"+9kILmMH4#?YdJ+ENK$tmN__XYeub#nZ4,=O -P#g\.E`YDifm>*uNL.aN<&ASl`%d=1`D&bmmh13fG)0 -g-'r>7=eWJV-#$M==pH_2.'I&Kj(UY>.o^041&+tY#q6tfY+L;22p2TNRjB#at8\* -]k^5KTSU8XffbMO7CcW[:S;Ql=`ndi]?XR0^0C!>>Q)?B%Dc%MT%X@c>V)";XeFNS -E/Z*>>^`F'NM]sGaBY*X>'5JOI9p*JXPE3D>kP1'q&39kY?``ah)2Cl8_;];ZWea- -?#64cV6sG6Mj_u`$f/BuL##t(h://$gXWsn%D4g:_;6d(?9R@U:$#\dMVLXmhK?`m -Gi-tUU0arsg,7#Zc-'@omU"H3gq!sKNQeTV3o'u2>nt`D9g.;Ye),#m?Zjk*NRh;s -fAEFW7%N"8?.q#ugEajo?1%\ujoJc0L($uFNTK))*X(/5k$W'3@"&AhNX9*_d,'Kb -?Bsa'20Nf6.'@QjeO7KLqV`7!#bi*G;NKl`\*C5/s7iiXfk[Obn- -$=`EV@fA&k%P_H1hVcB]i6F-igr:((Q53nX5%/V! -@>pT4Sf;+@*+U*X<#-K_mR:Kk7R#)(hprqr0[`0d@STU+>PX4[]F;a^MKUF[ -%Of*VUZ1,^ANh[,:/b_!11b?)AU[`mN`fq\QfCgsA\L!4`I&(H%d!&A$iW1s[UEbX -@UlQMg0QmHe3;M[53)o\Ao;9m%B\\T6>!B8B"cZP%Ro@MDJ%aBN.rJ9Js-U3[g?g- -MLJ4Zeo^(\PDk(jN,DL#<`/%AZ=PXfAR9as^3sQnIH@>UBE!Ep%Y8:6G\+,33#6@ADJs5i -Q=8VIk6rO[[";ZaF_&d@Bs*s4@)o8\?g"#*l2%+mq08%?=8"[ -g@*nu*3DElk1smp!cT*-mIoLV#/'G*O&T`Nc[`oNB'&GV$#m$o:_r;3'7#Q%4=5WLKsGLk])p9]UmRD+$auk@PG=JGJANLc[?'p?2*enGPLCpp@^YQ@.m*#Fshoe:PMu'W8 -HG>CQ2iW(VNcsTh56$^bX[il@P'\jGq_MH#5BV6]Q_:gUqgY#\O.,s4\8Lc,Hb[4? -cb4\^#^Q0ZGQh1D(HlpG2u6n!H:PmLB>o6o@Oc;pI"/,AO!AtKXEq@Wr3+c[P>crqb(: -p"Bi#ds4ISs#g:>B=7PKXei5Ts*r^OLY@6=qKo^.J%to2ci&@Kg\pmH#QUD:<.R=X -E*,LL'aBCZ@Bd7`7NiG#`F;\XUg>nrN^)ROq#lF@,EFrmms-aa:FVT%jjL,][UUtY -9kKT5]TRD!RnW"o\cdH,k'9eeZq<2&O\;IuBiOA/5,D,V<%?EZ]iMCBX]K9qqW3=B -@Bs#%egj1Tdq?'jBK#aA`oV9Q?#J8=qj#7l]jEF:g]d]]I_oK3\3)Ys&W=QeEEMR> -5:)H7A2;h#^/m%Yc"D)Xr8rVpU!dWHg+4Q+SBl6@ot&Cka'l=+m<2]NVVcO,hJP:, -^&IbW_r5T[4FSY&NQL='q:r-.2l"^`FaBU-T4b:[lur9^hZlL9e7q$,So69Se`ldR -4l3r'\)HrSI==D1VrR1?rdOmne,]K`0DktT^lUY`"MiA`&I$"tC[A\Y`CWg;_N;,T -$c>fb3=J:%gcl:e&A0:"S;/!@'?)[o<>NQ9Hrh0(d?J&W`mLl-)FmZ;G9"Ycr-]^. -Z5eE>85_"$,KWh?R3]n[>b*:c&tF(WVajV2H-6iMZRsAKm(k;J;Z+Qhb`b061sE:2 -d5F]tCuI=u8"?\BcI9GqSJnB1dll$`jS_?j'HI->cr;k/6d\k-)+7?O>ouPa'V-OB -dPSWd9N'Bb3DIkabs>1UhlC[r0r$rOHlOf+#iAgt*:g -EnrZ;eTTc8IFa(samJ;^?E*VdHdoOI:D0e1AcT6s=8iGTi0Z\;K]'@H&Va^rDBX^; -fUDB[[&leNN8iLH0ofaGmQlop=S>=JjLG(dn@S,N=dA+%)oQb`3C:NXMd0VZ*$I%7&;9t>7Sb) -CqCb5[-\f=caN4FG1j@m>D_<:c80Y6]C/[ipUosar7?g.FR:s&n=2X)_f7e/'uod6 -Ii$2re@,V(o%^u7bk#)s3R76Os$>$(>ouYdo\D`/eFd*S=k<9%Ipq!^f7i%*p:\4T -h"KRUES^BFmt'>??2_6XhVLEcjBnKNF&aTo[NgQR?B;(@qVIjJlMDX[[I3oAY@VD. -GrNk8r7O<^o)1d;eb8s6AlG>bT:b6AkT?_kqgT^Fp&=tErVf%er,^R*:k6ec"1;5C -!oR#eJM97l5mSJ6:H^>j-#2%mN4h6JIpf:OG<9H,Xe#b'&mFrM:"L872Vj8ihTS3 -d9\@mR'd^hjA'r<"l_ug_&220AW0KT1.HN=)G'.9H#^OZ7hT49*qS06n_-)q=S3]p -gj+sCr]^o;mQ3p@oT54S6HFEe+_'`9IIF=053X::jHPpmP$U_I2ran6j8kIk%T#aM -6RUt0V3I.7;9G*3!FV]:Q-`-*9%d])jcm0=P23"OBJV:!g_uO#IV9U:'.C0U5eD6UXIVm@J]f:d@f::<]FAA7S3p1&@ -S^Y;t:Dr7VkG7dBe)#I&(stP->l9SFqLDAq"[D2k!>4cERpPo>,t)-XjsjsdTYa;l_Sa,e_[r?Re:"QjaF>_rkMVSs$<_4 -"gHJh`)p4W@I-tmTbJut4GBV#BZ67BQQ3eD5BA'eG@nRMf3KMjh&"B8t].QKi7=b9"$JlLiZ-pKHoh>IAV9H?cN4d;M[5Yhp?Q8*Sn"o]k -fA?F4S+V7!jo&>*2TB,D(P(uZ"Me+U";!(*6SN'ZH)j9Wi>Xe1m+rJo=Bc+d90[.[ -jefrHQOmT\6Uu(b+LX8$fOC=WMTgLT\+]OO@iSp9nU<@8=PFa!!pt$5jiPQp0-90_ -IumJAcYKPS&7$fqG&HG:adG@>jW'eU.h1ILl*bZigXga,k$-$^CG9>T_P=@gA^&i" -1hN9.Re(-.c.TikB,ou;E)$V_g"/>oI.a'%g>bse7gD/^mShYZ(XUfI6t)&iU%DWZ -7(A.G@JqF,oVRi#fTS4&N*2%FeZhNPhb[gR7?05PU"$Z7;bAQmOYRu[aBH>ZCCOQ# -Z8B@")+,k=ST1h'QFtgDWb>scZTE4L`QVO.0C4[XZ?Bh`c?hchD&oI[p86BogL"c6 -S[GoL[X$2gIrB3EqmcA(LV\9A#-Xcf>EpOoh:a6#khY@5GE.a4>Mi'ANA&"ik54%] -cVE`M"fCO8Gh"jMKPGrN_>%@DiLE$]C;"8uop6EE4Cm -(M#j<]=%PYJaiPL`VnaCdf:O`)bM"pHq!t[Bmn2dI#P55]Zq/Ah,:eLQh55NW( -qQO#t&6NfX"T0r_r"*Kp'_h+>I4GOp3K)m2$@[(K(niOr#:i'd=)9*b#'cOt.Ai0,UuMiK90= -Z'ciaQR!2)C#rB3.]F>l:E#Bof*hBnZ*bn+>:'rq-1YUYAF1B-D]I2H*>3QD%@JD\ -Ijbq^-rPgKP)Ca:Nae.B*qAnPEgnLOlQ;2]?a'JP;QCqGXWZ&s.oHs&nf&c.].=T0 -/5j/4NW1F/lQXb7,8/HWOc7>$74o3;/i#dH8.?I!jsO$.02bWubO[&9B.stu0N)U= -P62cc6RT2R-W:a-P8>so)_CS*1/fPUP:JE;0/F5n.Irl_Eh,"M5)k\!+06P+o!Kt= -:Fe4u1s]P_'#Q9+a#2=U2A9^\o4n`_105+C/Q6jP9iWe9lRnBR/oue-"9'Z=.Sd;D -,uXP!KOW0s#;FW%3YSDFZ`,V^;)+9@1%Ve-Zb$G5EBFoP4B'9_PKQ);cH^Jm4]=X0 -F$2\'%4X'*'f/iRP>aZo=$HuV(3=%FdqM%1s$,!85I:YGZd=S.HS'-],En$OPD)WPZpT+?Ub`= -MGr8!PM&FSha[4qNRFX[P,UXOo02er85t3*E"P@""[Ec_8Q:mFP`\PdCIV7E68TiX -PTNNIVEXQF6F3-X/oa8N^I-Mg6kmI2FN#1U77=N37249?eCu?mUJ;N`:/pCOPj;)o -mT%bP7hk\n<;RbZG80VF0!pC)'amj'%nMN\8CX,#FIuEq+&UQ5;7.ah6LGi0arWDn -;`-:.u\l;cN8bFKnfpX&S_p,IFjFdAHLLa]9,#<`I7CQ"*k$%TF.o=&e!W -FP0ad`0h("lkMONhoH?<'j/PuS=e=\F[a9#PuPoke'dB4(=M -?rT4_87 -Q+^E\9k>'UAN!=q;C!mFh.@DVAl[AnG%5-MDe@RAB!jp6M:#XPm:Z-F?E9>u'Id&U -!GN;SBf6'-QBu=:Pn=0q@.k=MQD\KK(35^fCK@o[QFgq`^MF;H@lDA;(<^2V_./`5 -/s]"EQ9fAr75^@:A[Y`ZQ<.tTkAKpU>]t+"G56(-F`7!NE#/auCICKITP]] -Qg9+>RKU+WrEKXg3*=0if%[Vi!CL)BZ=\G:k= -s,Yh8F/"4Zj]dKX%u48.O\`lNGoMn!+-IKdP#f>RfD1T_.^?q^A%-<3fEmEQ4-U9d -0"@gDR&uU_Z'B)jD4XpKpB?,@RK]?&H`.j4W*4VJRY.QMLR3;rTir%q3gu>t -\"]<;U:R8&>-"YaYF.gnUO'DE>.^PhQ_^(fXBNZGR`heY-)C@WX]j1D7:i=LAYpC' -2-:esYM05b)[E:PQ)WK(Z!.lgBVDIFXf@j4ZALDc -kapNUS!gVhlGb<38Q(0^;L?d'KqbZnZ% -HBW,lC32R`c!5>7I!a,mQbcp`a?8Y2>jBO\REllEcWp4jSGNuTS^8?:aoWnh]WK+8 -%EbiG`14HeS@-bW\Mftmbe5CJSL_oI/V>srZ))B`]fXK05L'-me(f(o*/2ntl.#U8 -ceV[QSQjY#?c%3rem/@?`:M@sDp\H'hH^rFh0[QjJ'me&0&_$kJ[sF(NS(q*fj0fp -SWVULcdMced[d5`*NNf.1h^cle31:jICn!7^Y>FWK`/ -SaD7Zlec#ih`c6!:9EG\!T8EZkS%mm^)c0]O6GGaiZ=BL*gc-JS*D#_FWN!kri>=U -YIBk!KYm9?5!S+W]BgTRlrF6g?<>rhc/i6]k$H[,T%iYhhc-1_hS//K=j>iqH08N% -O?NR+?@VG#qsY*3ke<\RT*t.\&*c@knD=oLT,7%T("q\WlQ31g+"QoOHHlPo)ZeL\ -?TI_-47jUZoNscRT0r7c8+b\;ocI9-s',/'?1jgsp0V>$AF_rK3UD44lecp\?[LjF -9C3gRm/Mjk?K(\:O80l]q,9*;?^p321JiPjqHij`./VVg"7Q5Eq`Y29Iin3q+oD;W -qqoHl+3FFfbN[^Go)C*9T.U#P>'.Mlp)iJs?gIEXl2L_Mru_"8?i0jI!8)EOi(ura -((ge*6(sC-Cb?_?Ld^4jpp=?^)3%+SNCQB[59>nUjH*W9j=..0GQ.W]KXQcrk -X>W-tQI06N=m^C%A\Qu?[bU9e99n)uGJ.:cQ^dC1rIMaln+^-')[V;=@W@coFtXqs -aCHgS>dduoRE]@8RG@Lc6(u\>oU9&DT2DTuEu_*;,>$<_ -V(YJ?1p&]1;j>fo:fI$%4]56:/Or`>2+:SFe[8C_<`SgX@p2nJ[:`^p[Dd>q=1-00 -clr)q-"3O6-')P=2D(8+=dE'WBNb%oSSD=dXf#r=2T<.@TZnB@E$SKsd*O:8c-ECr -2`9--?$CGGG[6Z$hg+';V=/b<2l^uLZ>>g*aP]#N"b:!*2@G1GQrX`OiAbEkLLN5\ -!psI,[P*SL37^$KA%;4sOCU?e8!7Dn2G]QK3EB4IA[utkQtA@EB::gL1^fg=RFZ;I -k;h[ST4g7QLS/=L(5i:$Oh>>(7bVaHVeS8IVl/gkQE@0%qUW!UCDugi*6e"Ta0BHe -?I,oo)`H0RD0pHV\8AjOe_oe2t-Tm+1Lk@It.(dId<9&[FVeei%tUg&/#.3 -GS^EhA.O7<70L%7k65(s(2f4G$phBV#@Q%&K91No65Il'*%QY\d%V7AGZbA^Cb(4^ -%E(9)0+D?c2fk)?)ag!<%cR%@L_05d3TjT2U,5;q%_GE3?u4\*$X -+(OqmO:ha`83$u"A2K((&gg%l1\CtAT+46]"$?!j]u@r'<`/5]iVf@?Yf=aYSIGZ=??gt -Cc-ur<+C'sFPo`n+E5M,W\^\#HgugKU^uDXI%XW\nDIisjYBm"F'd`2(6*+Q:EE,QKJa;9US -j8=UnE[F2gGpanK]U=t(G#-6u7k&"3WKhM/YJ5;Drai1AQ?)X;^Xs2S@!p"GF#IUS -)3G;7S0rtGG&>MA7lb2Zk6UR[)p]@24Q4N[06$V1ckrB?i`uk`oJV;!R&:_[%2ko4 -FtqD]$Kbih.??.]ihCYG-BI8a'!1@ -BrtOH>Kchd>\h#qY@#R`bupZHk+.42Fsb7o)7)Bj]]lbDNm?=I5A:X%n"-trIG4Mc -D+l`EU,4LZd//<4DB6hRFB4OOqDWM6^"'_qG*CA/a%YqR2n\mnodF!f;sI&/>5.1V -i#7r54e6H+GW,ld*%-GZ^)=h5G7W[DRp>JHH,VZ8("\oW@r+=h`q]8Kj8=$d/Nh6"%SL:4T -^%'ORJ\L&i"Mu0CUXaSgtX;Y(SZ1=LZNoJ -9Bc=5VKD8ek5=tB>mBc!A;3\>qS/rn=+dgT^KKlNGH^]]a4Yf(C$f%&D"esJh"JL) -J3.sqm_9"bHp6fb&SH=V^F-eo^A[YP$%B -^$FN?qXWF7qoL*l6jA2tPOjMEASo_hfog^V]D(/1&/D --GjjP_Ls>SPUXJEM*O`=6GtCke-/#5$:=@k_ZU=a'*H%_%`:+46TblH<&ChPcbU;. -_h9tdO[R#J(;mKp6c9d.dm69Q)F9V3o/;P^ZP_[J39*)smf=P7C67; -S:&BcGeXcUa;$aJ>oYS&pY#N(W`%b5@8c -d*kQ/_O08(LJW:i7(#Z][EE[#bCm;sPdei#,"X>tQrKGGe@j&d^boU)c(SBp8u/FYK[@sgn%T:4 -9&.oj<37LoeB89Pb66J@'2?E0]Lag>bG/_6%!0:AGOJDqFt,E8@7'reC[RPff,EDb:);njT3X)!_s1+cp\&`:s7$bohHa] -:3?ihPmPg6$IH0gd),TRSES0k%BOBbcFiOA'bJb:#X^03;+0p$9^t_3&5P^c;2#h& -0[J'n)UDt6:P57Vm/'Z@qU+s4Z&m@/jWVtC,1#P[VjuKLf\B:\-I>I7:fSoAPlupp -hGA>@7d+s@bq7B*0%0DGdfhGS&bo2q%b!9F4&lhebnADE2:HT2;*>XmPnm;h'uNHV -:H^hfNBGNe*7;_idChfP2'(*C*mt3Z:SIkf4X*j2,?/,,;GA^#AL:<'9%&\l;OpJ1 -eL1^R!uSFA%SNciksNV,gZ/G1Uk\f7eJ$Pu?.l=49ACu$8=G:>+/?;foB\9_M^EmVq]k^ZnNS*`s`j.E2c#_JW -P1LG4fd2kWptFCqQI;U+f2B-1SXJ0-Rb>*bZ`Y37pZRg4b5JI>6C6LY.lmg9dm0-&^?>Y1hrHe5_R^jg!PTZAF+WaUs_> -Fd60B[G,hf:h\6\IC@ma934hZ,DD[me\0`!^>&=qg]N=7je(,A<(Xj,YOcHh -gSNQS,u39MfA2_GbDj-a&AMHZhVIk^h?Dio(#c5/_V+VB1>pmA?,U&\`C]_^gkFtI -Q0I(]%:#aQgo[Nr/>lb7XPW@5h!nb*h9oXVdGH^]g'uQd2:^S`fcPq&?\R9@^%pQF -qHoNac4u^N_27"prnmDKi!'2>('1%uj5;f3?o[V7`T>s"#2j"L?A7ZNQ0R;!$CacU -hUW+lb1Y#Cmp?P8i:TBC*V8/?d,?8J?VU6&<]+=%^"?bRB7[Me%Y)I\pMh:7mN -joSuR*oZf7iW^Ob&Ed@h,2c%_hGr^rIO/H6B\bQ^iEc0;8?/VS)WPu[j+\L_Q8dip]3j(giZ:5Beii'U53)?$ -MXD]s7R=?$fA^*A@W"QkKqr1T.:BSRjFJZ%eh#mZ%B8bIi331sji1QeeXGP7?K*s=gce,<(.Db- -H!G5Wk!hjQ8<%NFr/gk682q/ot_RFD3XSksgj#:6Xj3 -cf^%LkC/f]NgOOP3t6!skMD`net)'fT'>l?BC;GA4^$taU?Er!0LeNF:8R/\Kj9'8 -Ap1-:HD03XMWgY4lEeOi*fXpsN`tk3Bb%Aj)YN>qZKYu-l!Ca_2RR6_F_R/1CPK=a -QC@-9:hdTKC&Yd2f"LD3^?bBGl5"kc&YdRRU[0mjl9d>dI\pk'`b]c5cR,W)L<4%f -Wp$mmCqd!gcE6C*Y3=`GV_4'J&U:U![I#lZD*GCF+dIH]"*jXZ(DEe3n -%g+^bV/T37E^(h]f*?2[-LcP'E1[O-Y3^2'W+a3\ElSYepCCB\eo=25nNS_t:G?i3 -0lKLHEK:n,4o@/ot]='f3P$K54f(enfM8R59k8/@e;<`\OT'WO!eUj -7e30aoS7*?pFGm6C@nli7gDh5f2-YR:\OO"pA]%)#>gBZ<;/=MG<]&N7s4&]h=Y\g -GCOl1I_0aKHM=mqpW%[Udk#GC4l/SOF:Woq#D#`2@Wk7OF?bF\53MWPL@eV2G'@Wp -QUph5BjCsZFK^Y>ZiYFnEHq4sq$2rU&!-N&P4[\XpJ7%JB9d[BQLd)lGF*PuT:,M@ -H$A/8q8]$$f:DZF??c#np%Mm>+//NC#4P-:GX&#!:!*0CL\c4+PE1OpVht2PWa,>D -Gh6a+_oXssPBe7RqY.5i-aEORZ?m=]N;&Wb=-`YqQ[=hH[jQBGLcRteo)tiH`+E$YM&l?)>iUOrQ!^lfA5Ec^\Rb5 -r"$Yn(S^NqU\mXBr*SMFB[;!Sa*r63I(-/(Y7'upc$J:5-M#%P-ggjkmeng-ro`d" -p[In^e9uQ4rGV?,=*3t>g3o%Vs**1FkP>.UqZ"&%f:UrGp7d!`iVY*S4IkhQ'G:WS -KL+QnBOiG/$\q,Z&NG/=,o2A#TCKGPG!-q-4'cbr'Tts4PY't7Bk4)F/!iqA'01Hk -AN#uOk>Rf0idEn\cY+"R'c)ElU/EDhRUn+B8uP['1hd+oXLqju.i#)/DS9>[="IAK -*JV[KZW_1R]1'$UD7Eg<90oon2XjcTOqd$r!GJ2o'G[la]'>MZOo(i5jT4aqT -if6&>mk:$VkOnb$s'K^-kPG.lcjTpU^[NcX"$hr1'a2@76lcHGO+K9-S#:'O$UV)1 -2%7Ba`'"RInE`FQ`)/'Q'?$#$9bbR/>[8(6&St5L05"G;H:H<#D]Hf[gjL26&aY,l -aAORG,KOn!N?q./>b*4a&nIgdb&WH?/'?;aX"DL-jL#uIP75Dbb`aU&1X-S,eMYU8 -Cu%%q'9)$5cBG?s43nSaof^Wbm/9/q'Fb43d$-*k6dZTB'h-N7D&l-p'TFD1dZgjc -9@FU"2,2Pam6*uIJN4fKe9)Kt;q0>l93'LWAQ;d^'n'Xp0N#[;4N?c+.cIf#u"2>`*sPWSJ@R -eT5#_:"sgHf8\a7h=n&5HX7;Yo"8=f^&LZS%ZAPD4KdW -hL1r.%kME#BTR+i#O'l:Oeq:RRolRnQ*23.R*hn>(u*q.#8 -r*M,!oDF)2"-@+4Dr(-d)3<\NIQsIlqYq#[pRp^Fn+cq?oDsHG%KJab"O1*h:Ou4q -"gnUV"(6cjJk/2,24q.'LKl?QJAPr -L/?/66We17iP[a3;!oAlfR4:i"@7i@%O+;CN=k/<8Q'G[dR;0Hki-taM@iT43^hE` -h5"23&T-=BaL)go"CI*bH87r)VXE;?BmDG8ji5s')l$q^N`!eW7fn!]T#>o#na5U3 -aRpWc"5%rrWUrAg#pJ@dM3,"q6qGE7,>D\7IZdG&a[bqKAAjgu;Hcg9K\6B;":(/f -)H'0F9.8mY#Wse)$,IK^/*1lXQ*SX1SgZZPi<6ZCddCC6flDdN'J>bL[UMT!NA0KW -`L.Al(dt?o1ZjArB;f6JIftB?-"Q>kCDCEe4WB$]SkabYCdD^@T -46%=MN3gNM:H@f)Vo88#.k3AG=Q^^&r;iP?%Y.AJ"[QfgnW+:YL.E4%+6\ChU.b>K -aSIJ5W5OdloP0?4\iiPoAg:^SR -"_"K4Nj;\hbuJC]l(+*>[T8jQ>3C#(Y#F2fcarLLCW1D!:SDkk`_dZo7-o&YU3'Ft;9LO]m(J[j(2hB"fagWQ9dcc\L=06e9k^XpZ:rcr -el+Y99l5TdVA.mZ;p'/umBsL5Vs^3WMN;]@28QcR$*;XVTlK@gaJq0Oj]pG@=mh!k -\lVYl?!FFRm`!kk=)RG3gV%h"!SjgM[^FsRc$=4mO01A.][t?_HZ+W)^/r&Ef.-`. -/2`:!=6BKhMuA+nqY<639#ojp$%_Gt$%"'mc<6YXK5cO9_Djad@8Z&u/Nor<3+i_0 -]KM"0@PkMqNn<8`@u51kn!/(agg\HLMfFG1\$lFtj'6;XmNo]&=!o%ob^4E9p-Hb+ -0(@q,NKNd$8]b*g-=ko&POaH*b#qI`hL!A0o!V]7.bW9X)sN^[p0k\GO"b0>`'\IW -!6nU>2;fJ1Rra=#T@PXu?u-RKF2iEM7uI]:gb#/&VLd)4%mQJP0o,8d+ON5'6tk3C -Gd0/h`B$X*ku\=10odm8>%^T>paCg#[Q2huNuVn&AsfkF5LimE45d5h0f`Qel^+B%q09SI[K^baiq@M1[Nq_ZaOAMT=M]sD,%.&G.uM] -)f20[9_Fsc#'nucI>"14$)"XXkhTI8G&Ed(U%DBGd@81&Da!H.oS/Re>$HF>:&K?[ -`h(Y,$Vp1PI>mh7V;YZ,L2(IeW\n],ebZn8E@[]5XBhEApT#9i/5O-34C -K?@X*ouNhO.pMEN)k#^mcdrZ -V=*3.e,","hAb?umk1`mHH$r^47fUnrk#pl!:Si.)hRci$/+6t#iXPl[IE&+:pJmk -in_qkG?udS3A5[H?15LOhYl@0#D)AN&&N*W%Q/O$$E'%n5]1+45C>$.=-T:%_hjeo`'9e%2/QlCQ>THX=#"0c+9ahXB9I -epZ3J2e;:t#N@RcD;4r3amHhr\0bPNoD>H4mb^GPpg:/rrl<^h?Z5@\hnAda#N8KC -,K9XXc*7cqQ2P#^p%_D:qu:XJo) -qN%NXWhB8d@0SDs#&n8\Y\aU6EX7+@3Y8%;DXSjg1rNM+aE/acMMQ[H:rihdi -&=WVqSI-kOH*@AMmn!lUX=eEg!Dj:7O:r#+_$fKO4>7ugYTXGE,n.W?!g#&EYVQaU -.g'`T"0b'$XpG5-9+N^J%rb9(3*n$ -Yf.!s)%A:I%8hBeD&u#?h#e7C(bI0H;!ea4OVmFn%hSOI:eqt26;?tT&.tl[E;pO_ -Yo>F*)f`D-Z+V+H_&P"a&lC4nOiWD6KbNu:*Dns?ESVY:cpCT$'bO.]EU=gPn0YD? -$Sbj-O^@[a[hdA*(@hVOZ3]8`Eu2*(+`\;@VG@Y_i>@_&,&'T!0pN630c;NL)3LO9 -Z(3--g.kMI&2HfqY3?p(;'dtt-$!-7Z<\dI@4!9`*:_9#Z-(_(diIu3-ZX>WZ/G1k -k8oe?*qG(.15PN6pE-]++7bf)AAo[3TchdY+S)CkdM!GF)(Q=?.jedj&g\B8.4amE -6;fT`nhhugQIHO1)A:XRYk',<9-eOP/oE.'Cr[ge/lR$J1OO$0s#;fg3-0p9Z]-s9OZ=qu -0QM"jP6=la$Sc]53cc#sPGECY)_r'S4*.ekZQsauq(gF<1Gd$sACtCdXY_ia1_\Ou -lTYfA:Ge9q1t1N87)_$I=#I>U,-tW-e,;1'rp:rJ2\ZQVoF0]@V)S!m/sI&fPEeH+ -+[S"36?FYCZn4W-!BJXe3O'u%PH@4DX$ebI6tNnj1VZ?L\O@1F73[pX1W`)W01I=\ -:.&;&1Yk39D`tII4VQdt.e%4LFnl72\U;F\jo9:hCM#FFcs3K2DtT[<.C*ZhI"n`BU_p8X1Z$YX:!ATg87H -;_O=<1p9O$YqB"r<-:c3[7sWn;,oJR-+(iqX4#Z8h+`$'<]+S>&`ld;kt^no=#G4J -FRr;8oiO)%/;5$>'a[]:NEF^?;)Jke[@"lXd8C^U;:1;"<0pM5.7nWP;cUA,Pr=8t -j&?c4;sdXdFj41ad9SW[?$4h+Y5_MOcAIRm'1ojPP%K^Y@BGr@s,7be[o&Z5>#J4>]iD= -OBZ#A;.VXcATh3f[U!J1\R#bG??PdM[HhGTm[fY;?Zp^%epCcpOYX?QBQa\qYQRc\ -&RfjHBlLsu[NB5W,9^)8@b*&E[OG]%2d7'*))aQe(-QI,]]%r%AJ`oUeJd;:el -D0FTL[bYfbTk6`= -"T4R"DV"E&QYgXHZYt$cGBX(+pO%rZ"`UpUG^"jDK_oajO`?^(+V]9<(F+4U%nLmp -H?UfaUX*ut2g[J@),H<7pUtZ-^A4SZCq!,dKS=Rcd=!t(IQtQ[otfUc4c`(SQE/j*Fe/HC$3mlrSOX -1P7Tr;]!9&[m>Z-4[D$MFLTIapYgf#;2$u0Km6aS\6M+^mtNdgL3IKA=8RaHq1gp. ->o3Zo\:&mpJU#'+JAg8pGS>@)NDR,(H2&P>R%6)o.tW#BEqh;?=>>/(3J3\bK@e#! -Uh+Xm7uTE"*gg;n\BU!-d>^-9NHJ$O=7M:Fh1#-9LKJPOGjUNimQt"ZLcBmFD8]3e -PDL.\LuT_"fU[Th%aeCPJsdL6E[c>PYEClH[b!U!fXI%>/;,jZKUFiBf\)Ja6'OAu -P^,ibZ*fTOBpBOo?'[?rO'):F\G;HSr_T!bOI:;BGn#lRJVg;fOa.t7 -\>'-$+d.)TR;FsI\@J%'0c@C:PISWR),6RqZ(!b]RsDQ6Xu2JI_3I%"7!JKR/%\nOQ25/R@.2'ds7LQ3Xq92]XZXo -Tl"/+g)Zm`+eh"DU3\5gH,Gnn0r"@*S@Qt@\^R>F]m)QpSXN-@as_4sl(pBFT%W_& -3a-tmpRf$.R*NU;3Wl8U#.F@9Tc+H1(VE5*X.bB6U:Q2[\rEZbOf:C+EV_P_HCLZb -J"rGuUY4%pZQl8L9;Hl.X*"8YH<$<"jtp7EV:s%`"-'0=BrsDn`7f(+3X)YWBo?/? -Y'PMSRMCcbKW9?bYBp#J])Ai0!O*jDWV["$gC4'BV5i7IZ$R2m>-Y,sZa)Y9B]eic -q^kWJa/n#QV<1XW)V:j55hHTe_TZ)pZ+ -Xh.0:]1bJYGI9Kr[;\]r)M>HYOgb/;]mJGG]A:0pfsf]H^0>piqgl8(K=IECru6s. -48lI3Pgn_0DH\qmF9;6Bp68]DG74] -6,YlS`-b.p[EZFU;8.EW^)QOUHh#)Q>h`K[^`3cLgm/b%-2o1pR -_;$9I4Grn0!Q*V@]?5W2*&YB6Tg82-]c=#igo\`sZ-,8;bB!Et46t)f]Zf/8^HBWX -*6Z?&KuX%)c$XBQN##5]*]mP@SW2;#OkDm_fksC1 -*M(XWT`/4Ue(m%5rN"0F_9LfDe@iE4jV>>=$Jae87t]dO*R2o,f,,NDh0f6prH$S] -iR!=E]KLnp4mfnXj4KH#fq%rr^&?jf!T5KGg&3_b^'L@%VqTt+iI2KU=kDDV8`DoW -Z5&6P"NT:f%Q'tqh#1g?"+,W*Dr&,odeo<,::'4mG3m@U7OF?.n:R -?dLu2l[!R4?)4XgCI1l^goB^/ND8_<$.mTe7MN)YNKi1%RUeo7&dl -V)Rf@%IP8FmTtV>^?bF.O5^)#mseF-P;Dkt\F@6>n9OQMT+gN4DVuR/jWAd_Onh5,q1"h.V!%@lU%D,2oUeqU^?tRp?.;)AqgVoKN"e@3*:No? -l?Zb0hf8SjBBroOnX9XIhhV11L#p7jprnTjhsLFCnc(iHs*pg95PuW6G;IAF"G+Bt -&9q.m)$u&7iR&Kq:*14#`T%Pte8;bnbe!U!dZIg79k";68;`FrL=F]4nP(m.T2)`eQ&'EBEpM -%K?Zi_rG^H**uD_Q-JH4q0a<.9;0i#FaG-(f3c#?mW,V9LHE\ujRN%o*e.7\g$/5, -rSJ]PcenEkID2>'fB;u)s$(H!qZ&kiZ7^$aVeckH_%9Qb#!q``,6pP3KI7-oYf%t" -6L`bd%R]aX6Oq%S"A'1nYs_A&7+#O1 -,\\(9njJZf8TJ@2-V__Fi+,g.u;o0h%b9ljk" -2bimsj#KkUV!C*;o>L5`:NPUo5>UnT"$ob*,n!(:oL.hu,.(VoMG_l7+%]?eV'/K0 -FM01u;fpPO9[iXq5u1H;,tCm5?KGKQ"sQ(opp/.=&m4`?WXZ: -kfU,q,6MDZ[QTga=a!6%AQcHqT4qHZV5%eZCP8H>$1,hq@_f/jth8OEiQSm66 -?$AHdE4<"CipPZ@rT/@^QaQF4?['3\I692!!s%7u*X./RQo5V2@s -Q7Ii%pms:"@p$`0O(5^)3=SP8%#Z:i\OKA[AD(P%QY#uIA!pqSVJDZ5q8RKHB6iWd -T4e!)K:ut)-B"X4qF6[FBmOB\VePbi;cD2WQE.$#qOY$oCKe`eYA:`S\Zo'j?%ZM9 -Rmt`3CtiRN[dAEbj1&uRI=kt^qo,\N>J&b`^2NoC"2=8P#784Lnk-)IE4fbq0&;jo -h8jVaQRg/Jr229m1m`plI:(e(6dTq&s%Ca]cK5.^@Jsh?f4!Kb>M++IQ3E**3;uA% -pO1)/h07]_sr,( --d2+/qI[LIlp"S+p3lsJj7e"0LZeP4HS4Eks'OpQrkGr@!+5p3J++3S'IN8,TMpi$ -DB9$JfHC>>PRi@b7LBmZ-pfS"A -\hA5e`Z%9IE:%)H3eoEUp,dJQn0/Q4LlW/l`+Y&@i_gA!O"MeBLn=2Mlfa4g<\$U` -Yngfu>DnVe01GZP(h47iN00D^7X3S*bM8pFhq@@f2^GAPHdqL8-AJ:?W -[Yn!T0+?rq\>,5DO%X4R7qi8"QW"B%;JChVkuB1/PaZ(*M2sE+MSbk4esfTaEDC5u -4/\>:T2YT;:hg_4W0J-n(jXRjC/jDrFXEtbqOID[>k4K8d]-;nX]B2=>H84ca\Z0W -5q)H&'d8*g[0Ya,^s -R9Efeks^N8<]7nKp+Z$9Pq]M#%\q^(0kP7PS$SE(cWU-2BPeKZ[$I$,1qKG\D,jE? -G,EhoqOIP"eQoVLcJ)@BDf'@0m@P,f[T9GWE,Gis\+^Zs>\f0^P>u_8Q-/7@4.Knu -[=,6$k3?6!XM!ltK"IE,qnJKks!X@BJ8K0+[MTYY?r\XlXkgS)QKJK\]H;cFJN-*m-OX1<0lc^6(W1K1 -%Uo4d\*f7&`0W\%@PhG7EE1Z1G@q]=UFg\pQ/KZ+LDn'7a*OpXji(.;=$"a#ZQuJX)b^#(2iESO7 -E:.M[)7)24gu4aoPR:)DT+^-Gm@IB3.E._L(ME)A7IK"k`gR\_BPe$'CdpS/)Daln -r?%&_Y!ftV(Fj-I0rB'DS(!gM:MKbnW-&lNMj\K^AXuV`2-*r)fpc&T?"'-YQESkN -#;g&[EL_0sF4XUi?>KL`E+I(A1:c^4m!Xl!DN[Q;3WE`.h4Z;T*f/O=+)>P[CQ4;Fg -D"YNVfK9h"C^pulGXi/#;C>r:NZk\fNlm$Co4R7s0u`q8e(T.UC@.$GaC2O2g`2Z! -npS'k)&cK0F";M+raF#rQS[cof:-i1ER&jY3Sp7_T6&k?^)t2qi&g\.E"7rVH:>4! -Ho$HJrghP`Dc#_I98)g6-.[==>N.(ZB^remfD?0#j1L#*G(.]i@Fg@tgo%W)hVlV_ -$;KWc2kB\ln_SWEHgdO"^N]\Yi,Wa%kPYe*pjWQ8GLoFVSM-garu:#H]jL']=/u(F -WTJT;Re%DtXEDgr`;LLG21/W5p(($bnS`""?)t>YhdN7@066IZe%#9^E>&slFmr`3 -hg>BSn9u1kpn&A_I!=&u]MH]GSg2-fh]qc@GLH%h=6^E6HfmTES,8e$msVscpKU"I -oH0FIrbC_LI90kUSu06ucX6TuGOtMUQ]c]6na:nQ\$F46=1u#=*)2']\C@S-hHe$GO.\^ru)Z'Fm>9%mL1.5jT&ro?Y06'0RT4/#1QX -C\>Ga(EEVQ5GS$=X;X"'qnLW#5ND^Yg*N_ER6Y""64>#(*$R^#,=4L<6;!reN!I(5 --:25L^pGOU`$rLG.\H>B_#+d2gatkZ&]4Gu/kcno6kdC1196T&_0d"c>W!#@(r<9k -6]?66ju@L*(!%E6UWr&6@:.K>UIC'84&7b7#WWa -PUj\H!^b*b6M)tMgeC3'9Z6b>OaJrP,Z7&L;N-hU`Cr0Y;:*4.)9$t`7>!rpX?8qQ -42niq&JRDM4@DX)?Uam#7LW]p*+DAg6,Z_m6tBg[MkWVH8]H-M`e7tI4A80(:djqk -7a,[U#CKTAN-7RY=ZI?F7C6=?S9[W(%)prD7PoN` -gjVc[In0Ee8.:&)N+L".K18K:4BuSk>\M2pBukT'4JZjae8E@'Mb'@s7_EZ[%#u=L -UIRF)aTR_8r,p&%G/nuoSV108`-Y"MQ:8`>&_qrZS=3$NRn:8_8^*_sg+l2MKLtg/ -#[E'SFG<>>U.RO>7]_Qi]Saj:Vb1d(0[,Ns)t]ajOi\#RaTRdK7$C70Xr(:ea_\4R -I$[4ESkD2Q92)`d>dd:A[nD"<8dq?54Ll/2Tuo4)8h@YJ7"rc_W60Lb9FS^1*5A:: -.*B3@9$<19gm#tR`le)Ra]u-p*6HAK8P=`\9[(aTgs/U[cV48`.R^jB*4aindtk>$C-9o"c?l;;s2.U;:9 -<>n\.)c0\Dcts'8FWOE9+&JKDd&d^P9d2!V%8cF;:uiPAr;+iY&Q3V-d;:=1SLRO> -.oO&3;TYNXK`TWe3m52V;8!ms%5L8gM,FL6;=-3frA?^C.Yf-dLP7]dPrR6`4&`7D -;l)WU]fjih5#_DE<"2%?e.p?D,17B/dQJmQh*st!-;o7_;&q&/74hK@92rSu<6\-: -h+eQ1/l_cdPjL/'*E#fN;c>2N;a!%fAQD`8=&iH_RN4Xm*Egpp5uk[bNCh]4B-JWser=BESSD3-CKA*neHIU+#uO\C;q3I! -S0M(bMbk-+f):S0'ogf^O&moUf2[r79p/Wd -:(T")fhHnHeWs?IoD2MLKUKTgV ->"ths>Ba2_D;'C>N/`m#jf2LTE*3@,feom8c)t2#DcoMsfmU,.Q*K'QZ7I%S -]s_#Cm+Kp\=l#[['_pB&T\*M8g1@s%h7d+\^K^ZP/Np":)gb]3Wn?^W>Wm&[`NNN` -Xk\'%gj$Y>"gZpcZs:#Ggr7NC]pDr/[op\s-$pK`S[i#X@p/cB>tqt2NPO@ef3NgW -?&dNCRPNYEW(9(h>.)<)e\sY9`a"eMh@7P4*HdKmc((t+0e4jqM:M/n@.5A54c/Kmr%l),8[:j#/[RR=jJD2 -6)eA6-KF5OANL**L-Xj<5\5C1aMpR-?:8A%7:iV;a"BknhFLtU11gGV0(nUBc8=Z5 -o48DBAkloL?=mecS7N_=AN!MiaGsh$CL;f\ATh2;A\N.q[W5SNok!8U -c-Al@VI8S%+2+7=kDj%8c=^dmHY:'?B?kol5%n:s]21Cc6E)?pSnkhOCupCiB'+b[ ->H2*g14iPA*4F3OXCr7O;^U -`fjGTBlULeNeHZ"L2")M-n^9gNh0p=T4jdE&mf\D]N-%RNG:Y$@E*P)Su-3(DWsop -C6#9.SuQP-!+dL,'eYg"aMqqMW"_G!>Y^`%^9VIuS811I@_SK!m\"?5[UT4:l6H#f -2PfZANYkf*kmkCACA$l#^MEhaC_"9t)U%AL_J7f.&tQ(l7^0\*Z0O[D"H-C#1;jV]4A(@m687%RU9odlYaH'DU.We -g$S0ifBoH'lN2D[Ss\p%hsKjiDbfpI`li6XipV?U?foXO:@8qY28Z_%<0?1EW'-] -mgnhb5B":LDpK"rN:WYeoZnjtpF#RA:Ii/aoaaoB+&[57;^5p@'uDZg -C7oZ57L2FoN+r^L;6]Q1e!qG>E@*?ZpIV)l"J4 -*qs@AVgtUQ[+%p$/]E@]?_/J -N-V=ZH-Q/0f8fX`I9aO9nFr#&GEMRmUMnJBpFi@<0:7'(Vgl+>qa*`BXI#lBpGJ3mob59f6I*5pfpV6S1 -cI\[4Hmb$N"k!3;dr?2CHXG<2GKKf%f6r/$I?,lU^Y4(egAK"H+D8uI#Msk$62_>1 -rXWpq0=1X2UjH1>rE^NCQf`a8kC.pED-,KkTA+guh#=RqP#'tahp7(52Z=N?4\)7E -8)ml.eG`899/l)7?hStfpO@X&rho)^TD6+E1FN -*Yem666G^lKLR7$F?/2T=M.fl)i[?t1&0g]4X#tZjO,JFQ;]/r94a:^>fL&)QqZYk -=i@$^4.\hZXk.CgK0Z,-BU!f`-B1Wn;X)]bKefK#WRP[JHF7@c>HCmVA_sgKuW4q\m94*Hc>.?HbNj*fDGgX"bX[#E7fP--P_QZ@r^0!L.?GcGas4)-]Q:0Er"MILGPdQl1B:mI^`sjg[',G?/Gm:`SU01I(hg(VpXi%qgDf> -B>ba0TsP'ifKag.G1.O48Z_Qp7`bdf=KdaZ)cbVK+81hM$[ -dsU+6c;U7t3mQ3enN>,rh"a.[e,9;4cr;"l6I=4F&Ob#G>o?,Ze9rK&^p$KC8^c+j -0hPAD]f/X6Pl3aAe$U2^;H-XJ;,c"F2-Eo/[9['0_/VS;>1StO;dQG2gsY0hH-94HJ[8enU04qh>)NWfDYf$i)h$,K&G9F&VT+F>kqLQ(k#bIiRjG> -M;m0j0oBIC^,M#2R/T71j1-3rqc7k,JWs_Gr`>?GR=8FH=B:-FRT]HhELZ,o[X"Ca -X,X`agKG?*U?J%0LSUe+"ke"^g2":a&oGo#`&apg,&!iqV@pD8U=_(R=.YSq!*jq;.I3l2'8?Z0H[32\F,Xgjd/[r'(-) -\oU!CdI[T9<::^'=G@UW%cgCctdaFMS6j8+f*X"`q'a!<( -%=uki#XK:R"Q6'jK$[f/]m$pY@+63LOF@YU(d/.u"=&THQ4tdBlM.&_jFtp?(dc_' -jI^6GI?<:Z6^V]8++s<:YMpYB(jutDMbJXSrVj`[PnIP8C+i".$q2#0']PogMU>`] -7@:IuioFC'd=*c=(rTci4=#m5Q8Cpqdi%1FD2j[l29-QhFWk!CL/Heh8!mb@TqjZ' -EW/0n(j-s`r&oiJ&g9ek'd@0s-]$/.-,bWd,\3WVN,i5u8XVF_jQ)kqdXG"b)+>t8 -,c-aR@Q?pak:5RmXd(ZU<_Ea)/7kW`4)rh7bF%fPUXV&[Z4:85$%jBJ,WUt72FY]D -Pqlr^5;*XM8]_:81hNFePk/3t9prCIk2b?fdsc72)9"Su,it4Fb&g9Zdk.J&m@@1i -G#&G#4AJS[QZM"ic^B%#V>S3&dh[GW3WtG4m)YjK/q_C%&54Eue!^t7LJ\jl3N/bh -U=gM,R>j:p(VfW8te9^db/)<[uK?C">b6:f1,u,pI -HGipT'k6N@NNq%uaB9H.AF-(!XO^^bfo"kVeo&g,U?PDFTVM/?QUpf)FT4)hi8!-,mC6+F+IumrCq3a19Z:cIrZ& -FDdqK]%9^Ch-!rd/Nor4pN7&$Rp0X2-0)Y]7\JKTCM`Hn)aM_fDbhY*!LlN?-L+9.ct,4'c:i>%D+S`lsUkSKWp1E;jVOniL@N8d)G"P -f9[$)HpEa0L$Zb0X_fG$jbiMe/WrQFr8SabN3C5W`n0M[j.(7Pn`E!Tf`*()'30VO -?3nX*(?X[/PlreL(!5*,-tM,.POb!m_\dG(?4$7^0b.L-G`+7^K&MRTDIat"`ti#E -eXC5uEQ4E])s7WLP4PPncIq);B:SXdm#FK[fcL@[blmNVY#Nd$:IJl%';>%tWQP$P -/85pC??6T`bM$"/b^<9UED'T^R(H.k"%A`f-?6cr%od;7_(Xju.=iT*>STCPIY -elosr2LQO>2P;L:5GJT3CZBc&rH`J_Za.H#,Wt]_2j.hHS`\Dg/]soS3=sm'+1i -]q)sK,WOKqRngUd=TN]d%Fk9mLiFI^`;$5FinR=PnX\4MpJ2g\Goqt8'b.mdcR%Hg -T9=5T9pE(=aQ;1Q)4,d[_"M\&ICpXrP;^+l[aq>$EgrY;N^_=k-Um7T+/F"J'umcP -9^1>OT(MrEd^l-cjZQt9oq#17qSuj,YBQ?%rks]O2`9sWe$NR89;^>`60I(9T(a2q -coZ`"mQFXaGFnKaqr`CrcqC?_*]`/iD9=&O'3];16/VTKM])K?hLSaFqS%3`W8*W"iNV2/CfR"]Om/<[LnK&4rG[GU\rSP0[ -S$1QD'&hrbVigc3(Z]s>P^g?dA+NknSGEaX0KtQHLOP+KVk7,Vro^9Xhf%u^hcKPt -kJI/STCdT)eb];SQM:CUpj:o[qu<;YpP(WFrnUfLr_LT7O8f1+!r3@qlnAdRO/hg5 -Lc*NlI.+;-@q,?I,5dNLr%KW&:b%#,=tf@t`fKcpcp%XE6Ng4Tp.soUcg:lHlNL*\ -"`RAjim.Pm8C#Q^s0-8CODb+qE3(\-q=&_%B#aq4%)"*O1GCfjOGs=gNsSXH$'35* -OHBk]QM^gY$8&Rg:p16!J)19h&qd01*o!te?j0(BG`OOFgS,8*j$ -&s4ZEYfd[kcP'."'9P'aYr<<>#7`IY%M;>CnP9jS[0MfZ#Kkt@0_#19$-QCXHPr6K]+no,(?V(pVg41#3k4h]>YT*g,50n`(PXo,gj( -+-HFBa*S`0UEEF5+E@Q,Oq-,,)BYIYG@O\E=[&'*YLOU -E]kJL59s,o,a(G=d=@^m$m-^#JtdN^.1 -,VCgl!7611Oj+CkA?TJ@,dKocns_*AT.3a0.[$P6_KdWZFXpA!/!@Lpd_7V[BdWDk -/5jY=&5t+f,:BdJ/X"^;dXr"GjX?;SO$rQNYRr)eHOi]=,Ef)WEih#.s"I@L0TuSa -6749=dkOc;0pB4#o)] -3E)C4F%%plUGVS?1iGB37?K63)eQk -Ze[T^.m7XD3HOLHe*T/Zns34J3g6Bse,L/hXY2Gn23"Do_Y$$5'0K514HpRHZl(/g -k<`,q6Biuec!`dM1Hk@h4u1)Dl:!oO6U(-45?(3=Eecld;a;$s5Kgq1YH4mjZJ$Mm -6,It7e8IYfF$]GB7h<:#oRBCGK1JsrX3qV4e29V#3CspO$ri%XF@AU)UIl5u7)ngN -<*;j.=%cLrV\;uoC'-ptr5KFmmW9%7Pg;jad7:Rq.Wh4UeDF"8j%`1T8X,E6eE]mD -Mb\"?8sH/E[/Ef8qL_`B96@L5PmX.*"\&fX#]=]Kio(_A-V]iS;O&V-eC>*EpJY'N -;jBFCa=g=Gmn$ML<)lQ[Ps1^\"]+ek:c2O -^fPXn3p]F>:(Xka+Td:C=LEbn<,#IbgIATO?Bsh_eaHiKq-$em=uH1\EB.AT9j9Kc -@!2o^Di%*Z_cugN@8:(NPns5hcV`6A9QI:3[H0LQ%q?@1;K`.Pej![\6Y&UP?^:Y% -[SJZE7[*NT@$V=7elu_i?!Gl!>ZM_SY/o%VEBo-Y*@:esE<\2LIpOpHAQF_&erOM\ -Ou-3:AC^WmP9jp72eA;QAbN*8/UM)QDeiBj@?$Ob8dLV=Kd?ggCf\_bG,&midqr.; -D3H2Yf&(2Mj([uBD6+Ui[dRu)o4l_*'m=;,QMkb6%PLO+S(>h$@ngpo''Ij3EL.Va -f,n]BkAF>ZE`"u?#e+_qnT-V]F%tn72ZIQ:"*=Yqi$ef)G846?:N[ISiV,!Jf3`\; -@nns5EgLQ^GAg%(A:k[WGF(C4Q[\%S7s&rDGaCa`Frje$[prodFd>$^[rm!5UO$"> -2qMbf(N"KK:O7gKGIN-If=QD8ZZGl!G^#-p[(7l$L9\.;?'^7kfA>p3[shEAI[B@B -f<]f?o6U&rI`Nsc2na_Xs+!TCI!F,j>(NTYkNR(n\!muKhuN&\q?fT/8@ -q.KpTNAt2[GjCJ0'9QE5\mRr!?r -PaP1/fhSR#+-(Ui>$4[Fq(IoaA!4B7Gs_7hR;\:6`mkWt?TCJD\QtR?K:#erS=*BE -fi]ZTLi'\2QC2UG]$J-5E?l_aCOESZOh&YN>AY)W.e=JfAR:gQ/l^gBI'9Y^;kJRKL)H)7QAH[p,oBKibXN:V0h^ -X-N4_<\qHm;&HgSZE9k7K"N;O.%gb6PZS[P:@^g&s#S2*o[ -i_CI0^-!:!]H+`!,K2MNBY5d-S3b.7A&_Gk"cqKMgc`HAD8p,bXsEPUS:@e%B>/a: -`I*JD2H@`H.E?h&adehJ=irApEQV6@ai58=jT!:@9?TdbDkeo*\<&).^Lm2%aZB+; -][+hBdhs.'a#r+A>guQP;Gb$4cBu7=]-"1\<7po>bd.Q"*<4A+!sW#`d%#$LSHM__ -mSSAtbC!"ZK^6-8%Er&FBjCPW>nPO+1Xf-.d(J2]h)tF;2H!:D;EYoIeQu&>?o+?$ -930Tkd;dZAA(FptkhS>Oh*2f`BMRnAZeZYL]man],19t&eX>N9*FI.KFkL&efor8d$`U9_q\P;cMaNi*REFM%GZWtX9Jp`rSGoc -8)&2-D4QeZIFm?soA<4@gtgH:fj!?]7]e!NhArjt$,,29n(tamE8C]UhB1_bHf)Ob -h&Hg^4p7I3\)=tYNQO-;/@TVimFE=3jIT$*b-saU!TK[MDB;PJBZb-T3T/M@WZF@d -,'Pm[lf;->jkb@IhLA(udCGiOka^Po*\kUqdH4c%]*bt&HEb<$(U$"?PQ$X.hQQ5Q -rT/L;LL.8\rISlMRHA9KZ+IMVrhF=ZGM`>4m@N)"b8]c=Mrh\1h3buprl+=:0!\Z4 -0gm+#^=OJ9-GJ?Z8KWOZM!0'_D<>2aMr/e^?^^a4U\[K5pj]@#?`'m=Q.O%CqZs\,dg>od_u*l] -D*P/tT'-$/YPV[FmbcHMhnKN5h>UdEre:gYhhV32Xo3V(s!XrI!W^en[@g>e*#9+k -KgDDo-i?.O&W&p8O]\ts0c>s?j,r!dIR,->8E>q:1nIPnPtL/$flXr:0pt_tP?G9L -EB0RbkEFTkrddA/;!=-I2'.lOV,HQBg3#TQ;5mO[Q!1S%Z!"20l]p2sI_c\C42?gibn*Oi_/) -R9Fq,GhgMTZT5\lGpA<[sqg#s8 -E-Rl_2\1tgdUftZhKM2XdHPcLPuqiT'A)VpH_$2kDnk,tGl1lT&"gu-me)""hflio -nbIS3T3o(bnbN-4s.A3?rr>;<'F+\)YVZiJ0W[nX"[TA'*sKM8F#+/k`MB^G&>;'Enl]P;LH>6ShE^2,1Df -h_hZ;*9T@XZaB/a7e*;K4\r?$q*33T"U@=iZjdO47.\A67T$O8*f7uoALC&IZ>D6e -;\CZ*:/eOm5>Y<:'h;/$[5C`Zf*.aS6!)W[T4hCW`@Xd;[\^0%>;ih4Bj8%=^MmF:'ut?"[l)KR>rPd* ->ZTCOgN[#uQ/-a\G?sZb?T6CbAm%([Q[`C&"p]Y9\/#M'hfr0;r?]!cAN(<<^0RI5.' -B:DZB[;ENffs:$-QDpVC)n,(FBeNfU^2LXWs1iS9(C.fr]JCk;EB=B>`c57#F2RQ2 -QMJ#WI(%kSo"<"%br>Qm5LJ=PP>$jL(j6/^U*n&s$!'Or_nVCjDjN56:Gm5GY)i,()*CMlC9OTIrM%LcU`)rE@@WYD'&On3<1jY[K*&NQb -g)@r?ZE7T3?]5-]+3$9g).F"dISkhW76$P -.:a-jP_`(29":cDV0%W\nig2:kufTEjHkl^k"A@F;_=j<^R,Z=@8&\;V^4a.Pqsat -9Xf'aLNr2-dlqHi$)K@cCpBHB_JMq+[V"[/hfa&"?-YIL*2`r&SJ.lC::]%>9T7#` -'.S7NalHg)4OT\)\eWJX\Na`fs(:lfJN.qu0.8[,b6][8[l2-oP>$`oU;_+lK[@;IfV -Yne\**pVonCSd)sejR/Q]-t2Tja4j^)*u#A@uE$Fa(@iESI$EG?5k\JDX8>4u0?Y&]K0p=@ID -'5_gYZD+gpB&CP=YBOmWhn0b[3S^*lGqV%uMV!aY-$uV5mrd&;\$#NTbI)8,ZdHL2 -k5AZ!q0u_akIe:!!FQ_gJ$:[O]skl^_5n0";XO.o(N%UYlm[X-[MQgi`rKP\#DX_1 -)8ldK"lB/Hk4&p/8m"R[i@'hG0m54i(rmLDHp*I.mPhqKcQ+#G994';!loQi&)s[I -M\MIDaVcHPAA":]0t%4f"@FQN>aq!P?9Z2-rO1g(\:Ck;/'JGQ0'5:3N$j$MTtpF5AD1kVmS6,cFQMFe/_>c9+I9=)Ilia4__$@ -[@Pec*Z>YsEn5BI^EYeC878!>YtDa8deb<^ltr/sG';3*qY*ldJkjq):=FUbWdIN4 -TsP0(_UVj!eSX]p;RT'X\,2M7DS=`8A>UVe;FtA:?JCoqkBAh$`OL-_.c5UV -TPfaSVD_c_i>a5!E4A'D3-/LT$epL&)tUd&`saAcK8i(o0ulkp"QU7=O)dEUaa#\G -iVUXWPF4k_32YEaS*#]NEd>\!r?16mjHag*lq(Ur3p7RhTl`2fb&VbjZ=OhMh_$M) -H6G60h*qlrrhr>tjX)6RMlQHa\^u/ukigc2QBQq&<41UjcQ,ZJ]T1Co8?Z+6SS#3O -mciPS[s(dLLR!$h>_\-IAa^P,[cnRI*\5R]q`no,"^A!O14j)kM6kjP"*,Q -V'X?RF^C\a6G7jHi#`c=HTYO"H_8IW+%PRD18"%/[hIk=Qeq[4g%#!f]_e['N]0m&@ -F4CpYICH!e,`E9`r#%O(&jBhF6.?pkj-%5g^BpsGQt,p-l8q;+bebnM^l0SU.[<=o --c1Nb[X912fUG*q+ecOt,J58$r%0q)*("+.6M*"M,Vl`s.QDsL_Pr:*ln]nL/hgfp -3@ljNBl-5%42]!!Z;`XgCSV?;OMb*JmNl.WD6p*oVA4Ecn<=#Y#`,mRu -Jdb&:Oi0pIPf-55jA*YagqjV]0_A/XN(U2,;E/2\_lC&^6rq9K=0$F.[2VsKUVKbO`ft2WU8Gh52SJVh -`i/mH]1,7o/]QOg`U%66lu:!%F2pV$`K5Sg#`qNoFH;?W\'m?,q4C01ECV:%_)-MZ -jF5/??bRdh_ap"Wb^Y\,Gt4&T8#mb'1N,c'[\XP3B=^]=_ -E_(MlaS_1B,a-4O/BKU.aP/hul"8%1B1WL%8UQrJUme'blcHKa8SLRab@X>(T#p>l -aqUPC>b"D2dn/4Uaua!&qu4`CVoj[kT1l"PPKQQi)9T!_b%pUkbc]+\YFSpu9*<2V -\JRsY;p*g6b<32UA@@td,"m!s9.:_$Mb_Gfr(F-(bLF4n'X:X1_TZd^9I\FaN69AObEY`Z9Z+KdGiMKP5YR[Gbl#l5,gqkj(sOkF -bj.@89/K?Ll:l*Ic'6noMq+skHVL1r9j6=Hb;7CgC9d79-m@2 -<_mQ,c]n7Cn@L92@S`a%6mOba;O9+jspGd8a.!"Uoe\Ek92fsme!2r>9f5i.q+I8> -1"A6^eNVIT5L#HT8C^"]ZLH>f5V\4)<(07*AOala5rk2s7dB<^9h-p,79$ZgeC@:9 ->t@rf8N,kne?)J#!u4f^;q48.;a"*;h+uO[=4M?O8F9G3ZMN+J>LgY"d3W&JD,=5d -?WD5?XjpS)is.0t@b*tY]=fNA:o78&?rhtgeU$2orFW8+A(J&(f$g'XD/G/1B@`>e -3e>*GHY2Ff>W0ij(;36IYo_&g(g=8+Sj^POP,%q -Yfn$>/Z.6EVqQj'MUeKUV4Or4=PB%Ag=<=ZjfXHjWnKnGfc)(Y'sCh!ZeIpUgJEd^ -"gCNs93Y]3gQf>(V4lX\UtLYk/+'q&jhBLB^Xq;RgCpJBEJ.R#_q[]!gf7N_'sY3" -c.lUGgm-":V(^V@_Dk[]>cl9+jj)ZS&)7hk^.lr0-.:U,e'=ebh*olMA_,[[f;Wn[ -?%ptfV:sb5gSQ!B?,bXUjkehdhkR#Mh?Dlp-0!c=j.Q?jhF6P_A`hilkFQ8*?A7Y# -VB)W -qqoBjhpq\_jo401s54(]i"c@O-3E*`"5lWOi)U$>Ad71:#N1=Bi0F]-V@)7i$fK#5 -i78@qjpp>C&)d^(i>*$a-5,8q'B)CpiDp]PAes?K(ZC)ciKbA?VAeF%)r\dViRT%. -jrWLT+6!JIiYE]s-6hG-,N;0Ze -0B36jitaB0-8OU>1ZLq]j&S%tAiA[m2rfWPj-D^cVE3bG46+=Cj46BRk!%i!5NE#6 -j;(&B-:6cO6f^^)jAn_1Ak(j)8*#CqjH`BuVFopX9B=)djOR&dk"b"2:ZVdWjVC_T --;rq`;rpJJj]5CCAle#:=650=jd''2VHW)i>NNk0jjm`!k$I0C?fhQ#jq_Cf-=Z*q -A*-6kk#Q'UAnL1KBBFq^k*B`DVJ>8%CZ`WQk14D3k&0>TDs%=Dk8&(#-?A9-F6?#7 -k>l`gAp3?\GNX^*kE^DVVL%F6HfrCrkLP(Ek'lLeJ*7)ekSAa5-A(G>KBPdXkZ3E$ -AqoMmLZjJKka%(hVMaTGMs/0>kgkaWk)S[!O6Hk1kn]EG-BdUOPNbQ$kuO)6AsV\) -Qg'6ll'@b%VOHbXS*@q_l.2Eik+:i2TBZWRl5$)Y-DKc`UZt=El;jbHAu=j:Vs9#8 -lB\F7VQ/piX6R^+lIN*&k-""CYNlCslP?bk-F2qqZg1)flW1FZB"%#K\*JdYl^#*I -VRl*%]BdJLldic8k.^0T^[)0?lk[G(-Go+-_sBk2lrM*lB#a1\a6\Q%m$>c[VTS86 -bO!6mm+0GJk0E>ecg:q`m2"+:-IV9>e*TWSm8hd)B%H?mfBn=Fm?ZGmVV:FGg[3#9 -mFL+\k2,M!hsL^,mM=dL-K=GOj6fCtmT/H;B'/N)kO+)gm[!,*VX!TXlgDdZmagdn -k3h[2n*^JMmhYH^-M$U`oC#0@moK,MB(k\:p[MnlI..B.!1n-h<$@ns:frV^h8H/+U_3o%,Jak:Z?"0CoE&o+s.Q-Sk9P -1\4*no2dg@B/]@*2tMeao9VK/V`OFY47gKTo@H.sk([D:\=rhobUKu-W9Ur;tWX[oiG/d -B3+\L=7q>Nop8hSVcrc&>P6$Ap"*LBk?diU?hO_4p(q02-Xud.A+iE'p/bi!B4gj] -BD.*op6TLeVeYq7C\Gebp=F0TkAL"fDtaKUpD7iD-Z\r?F8&1HpK)M3B6O#nGP?l; -pQp1"VgA*HHhYR.pXaifkC31"J+s8!p_SMV-\D+PKD7ripfE1EB862*L\QX\pm6j4 -Vi(8YMtk>Opt(N#kDo?3O80$Bq%o1h-^+9aPPI_5q,`jWB9r@;QhcE(q3RNFVjdFj -S,(*pq:D25kFVMDTDAecqA5k%-_gGrU\[KVqH'NiB;YNLVtu1IqNn2XVlKU&X89l< -qU_kGkH=[UYPSR/q\QO7-aNV.Zhm8"qcC3&B=@\]\,1rjqj4kjVn2c7]DKX]qq&OY -kJ$if^\e>Pr"m3I-c5d?_u*$Cr)^l8B?'jna8C_6r0PP'VonqHbP]E)r7B3kkKa#" -ci"*qr>3l[-dqrPe,;edrE%PJB@d$*fDUKWrKl49VqV*Yg\o1JrR]m(kMH13hu3l= -rYOPm-fY+aj8MR0r`A4\BBK2;kPg8#rg2mKVs=8jli+rkrn$Q:kO/?Dn,EX^rtk5* --h@9roD_>Qs&\mnBD2@Lp]$$Ds-NQ]Vu$G&qu=_7s4@5LkPkMNJ3Vsg3$]7K#D>EP -:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=AlC^cenm@9 -:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA=M/6)*KS9PE`kN% -="Tc_Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"PDKfeXi0S^6MAH=;fBr>1IXb_>kP+oS^^pnX!PjdJ%0OEX9GI`IODGpB_@VYP$,Ve*/ITH-bV]jI -OR,+@`"`Y"/@)9.f?D&^M-b]OrHOmIKN1*g(o[EC"elTX_ZZ,c*_ECQL2A(g_UF=ESQm4c#_\W:"=CB -QYkQ&hA;15H/=mim3UV:)/KAQu3q"iY[\%M;jo* -/W8X+c8CUAR-m+uj;AFrOlVo_9p=ZV:0!S@R;Q;sjr'1jRHBp?D4B]+c?5]@RI5Kq -kSaqbU$.ptNMG_V:6h[?RVn[ol5G\ZWToqTXfLb+cF'e?RdRkmll-GRZ0[r4c*QdV -:=Zc>Rr7&kmMh2J\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U:DLk=S8TFgnf3]: -amtt*/^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sj*caE0;T'sA]r#ZHgnbf"4 -c1ClU:Y#.:T5WQ[rZ@3_q>R"imJHo*ch78:TC;^Xhuj(2:_!Ol=:G;h6j\E@/d=Sn -*moVE0nrNM -)FIVD%H55cLJ[C[6eHetiWMQ';%=d<=H*pP6qN54/ga!=SJ1"9;2S4G.RdIA(#m/7 -Mc"@E7G,9iirieL;3!D$=Nq`D6tqWXXu8c%h&GC-EK3oA3_*<>*TP(`O&>=/8(db^ -j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;-03"4P>Z9n8_H6SjTM9A;N=XI -=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_HjoiMf;\!81=cG/u7*1iq -/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>taF90r@pqRT!C,:$KVWVc<)U -;qcXql30JP<=Ya&>)cDE77jIY/uDV%S:QJ%~> -grestore -showpage -%%PageTrailer -pdfEndPage -%%Trailer -end -%%DocumentSuppliedResources: -%%EOF diff --git a/packages/python/plotly/plotly/tests/test_orca/images/linux/fig1.eps b/packages/python/plotly/plotly/tests/test_orca/images/linux/fig1.eps deleted file mode 100644 index 2fdbaa3d65c..00000000000 --- a/packages/python/plotly/plotly/tests/test_orca/images/linux/fig1.eps +++ /dev/null @@ -1,1557 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%Produced by poppler pdftops version: 22.02.0 (http://poppler.freedesktop.org) -%%Creator: Chromium -%%LanguageLevel: 2 -%%DocumentSuppliedResources: (atend) -%%BoundingBox: 0 0 529 379 -%%HiResBoundingBox: 0 0 529 379 -%%DocumentSuppliedResources: (atend) -%%EndComments -%%BeginProlog -%%BeginResource: procset xpdf 3.00 0 -%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC -/xpdf 75 dict def xpdf begin -% PDF special state -/pdfDictSize 15 def -/pdfSetup { - /setpagedevice where { - pop 2 dict begin - /Policies 1 dict dup begin /PageSize 6 def end def - { /Duplex true def } if - currentdict end setpagedevice - } { - pop - } ifelse -} def -/pdfSetupPaper { - % Change paper size, but only if different from previous paper size otherwise - % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size - % so we use the same when checking if the size changes. - /setpagedevice where { - pop currentpagedevice - /PageSize known { - 2 copy - currentpagedevice /PageSize get aload pop - exch 4 1 roll - sub abs 5 gt - 3 1 roll - sub abs 5 gt - or - } { - true - } ifelse - { - 2 array astore - 2 dict begin - /PageSize exch def - /ImagingBBox null def - currentdict end - setpagedevice - } { - pop pop - } ifelse - } { - pop - } ifelse -} def -/pdfStartPage { - pdfDictSize dict begin - /pdfFillCS [] def - /pdfFillXform {} def - /pdfStrokeCS [] def - /pdfStrokeXform {} def - /pdfFill [0] def - /pdfStroke [0] def - /pdfFillOP false def - /pdfStrokeOP false def - /pdfLastFill false def - /pdfLastStroke false def - /pdfTextMat [1 0 0 1 0 0] def - /pdfFontSize 0 def - /pdfCharSpacing 0 def - /pdfTextRender 0 def - /pdfPatternCS false def - /pdfTextRise 0 def - /pdfWordSpacing 0 def - /pdfHorizScaling 1 def - /pdfTextClipPath [] def -} def -/pdfEndPage { end } def -% PDF color state -/cs { /pdfFillXform exch def dup /pdfFillCS exch def - setcolorspace } def -/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def - setcolorspace } def -/sc { pdfLastFill not { pdfFillCS setcolorspace } if - dup /pdfFill exch def aload pop pdfFillXform setcolor - /pdfLastFill true def /pdfLastStroke false def } def -/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if - dup /pdfStroke exch def aload pop pdfStrokeXform setcolor - /pdfLastStroke true def /pdfLastFill false def } def -/op { /pdfFillOP exch def - pdfLastFill { pdfFillOP setoverprint } if } def -/OP { /pdfStrokeOP exch def - pdfLastStroke { pdfStrokeOP setoverprint } if } def -/fCol { - pdfLastFill not { - pdfFillCS setcolorspace - pdfFill aload pop pdfFillXform setcolor - pdfFillOP setoverprint - /pdfLastFill true def /pdfLastStroke false def - } if -} def -/sCol { - pdfLastStroke not { - pdfStrokeCS setcolorspace - pdfStroke aload pop pdfStrokeXform setcolor - pdfStrokeOP setoverprint - /pdfLastStroke true def /pdfLastFill false def - } if -} def -% build a font -/pdfMakeFont { - 4 3 roll findfont - 4 2 roll matrix scale makefont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /Encoding exch def - currentdict - end - definefont pop -} def -/pdfMakeFont16 { - exch findfont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /WMode exch def - currentdict - end - definefont pop -} def -% graphics state operators -/q { gsave pdfDictSize dict begin } def -/Q { - end grestore - /pdfLastFill where { - pop - pdfLastFill { - pdfFillOP setoverprint - } { - pdfStrokeOP setoverprint - } ifelse - } if -} def -/cm { concat } def -/d { setdash } def -/i { setflat } def -/j { setlinejoin } def -/J { setlinecap } def -/M { setmiterlimit } def -/w { setlinewidth } def -% path segment operators -/m { moveto } def -/l { lineto } def -/c { curveto } def -/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } def -/h { closepath } def -% path painting operators -/S { sCol stroke } def -/Sf { fCol stroke } def -/f { fCol fill } def -/f* { fCol eofill } def -% clipping operators -/W { clip newpath } def -/W* { eoclip newpath } def -/Ws { strokepath clip newpath } def -% text state operators -/Tc { /pdfCharSpacing exch def } def -/Tf { dup /pdfFontSize exch def - dup pdfHorizScaling mul exch matrix scale - pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put - exch findfont exch makefont setfont } def -/Tr { /pdfTextRender exch def } def -/Tp { /pdfPatternCS exch def } def -/Ts { /pdfTextRise exch def } def -/Tw { /pdfWordSpacing exch def } def -/Tz { /pdfHorizScaling exch def } def -% text positioning operators -/Td { pdfTextMat transform moveto } def -/Tm { /pdfTextMat exch def } def -% text string operators -/xyshow where { - pop - /xyshow2 { - dup length array - 0 2 2 index length 1 sub { - 2 index 1 index 2 copy get 3 1 roll 1 add get - pdfTextMat dtransform - 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put - } for - exch pop - xyshow - } def -}{ - /xyshow2 { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval show moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval show moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/cshow where { - pop - /xycp { - 0 3 2 roll - { - pop pop currentpoint 3 2 roll - 1 string dup 0 4 3 roll put false charpath moveto - 2 copy get 2 index 2 index 1 add get - pdfTextMat dtransform rmoveto - 2 add - } exch cshow - pop pop - } def -}{ - /xycp { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval false charpath moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval false charpath moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/Tj { - fCol - 0 pdfTextRise pdfTextMat dtransform rmoveto - currentpoint 4 2 roll - pdfTextRender 1 and 0 eq { - 2 copy xyshow2 - } if - pdfTextRender 3 and dup 1 eq exch 2 eq or { - 3 index 3 index moveto - 2 copy - currentfont /FontType get 3 eq { fCol } { sCol } ifelse - xycp currentpoint stroke moveto - } if - pdfTextRender 4 and 0 ne { - 4 2 roll moveto xycp - /pdfTextClipPath [ pdfTextClipPath aload pop - {/moveto cvx} - {/lineto cvx} - {/curveto cvx} - {/closepath cvx} - pathforall ] def - currentpoint newpath moveto - } { - pop pop pop pop - } ifelse - 0 pdfTextRise neg pdfTextMat dtransform rmoveto -} def -/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0 - pdfTextMat dtransform rmoveto } def -/TJmV { 0.001 mul pdfFontSize mul neg 0 exch - pdfTextMat dtransform rmoveto } def -/Tclip { pdfTextClipPath cvx exec clip newpath - /pdfTextClipPath [] def } def -/Tclip* { pdfTextClipPath cvx exec eoclip newpath - /pdfTextClipPath [] def } def -% Level 2/3 image operators -/pdfImBuf 100 string def -/pdfImStr { - 2 copy exch length lt { - 2 copy get exch 1 add exch - } { - () - } ifelse -} def -/skipEOD { - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pdfIm { image skipEOD } def -/pdfImM { fCol imagemask skipEOD } def -/pr { 2 index 2 index 3 2 roll putinterval 4 add } def -/pdfImClip { - gsave - 0 2 4 index length 1 sub { - dup 4 index exch 2 copy - get 5 index div put - 1 add 3 index exch 2 copy - get 3 index div put - } for - pop pop rectclip -} def -/pdfImClipEnd { grestore } def -% shading operators -/colordelta { - false 0 1 3 index length 1 sub { - dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { - pop true - } if - } for - exch pop exch pop -} def -/funcCol { func n array astore } def -/funcSH { - dup 0 eq { - true - } { - dup 6 eq { - false - } { - 4 index 4 index funcCol dup - 6 index 4 index funcCol dup - 3 1 roll colordelta 3 1 roll - 5 index 5 index funcCol dup - 3 1 roll colordelta 3 1 roll - 6 index 8 index funcCol dup - 3 1 roll colordelta 3 1 roll - colordelta or or or - } ifelse - } ifelse - { - 1 add - 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch - 6 index 6 index 4 index 4 index 4 index funcSH - 2 index 6 index 6 index 4 index 4 index funcSH - 6 index 2 index 4 index 6 index 4 index funcSH - 5 3 roll 3 2 roll funcSH pop pop - } { - pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul - funcCol sc - dup 4 index exch mat transform m - 3 index 3 index mat transform l - 1 index 3 index mat transform l - mat transform l pop pop h f* - } ifelse -} def -/axialCol { - dup 0 lt { - pop t0 - } { - dup 1 gt { - pop t1 - } { - dt mul t0 add - } ifelse - } ifelse - func n array astore -} def -/axialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index axialCol 2 index axialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index axialSH - exch 3 2 roll axialSH - } { - pop 2 copy add 0.5 mul - axialCol sc - exch dup dx mul x0 add exch dy mul y0 add - 3 2 roll dup dx mul x0 add exch dy mul y0 add - dx abs dy abs ge { - 2 copy yMin sub dy mul dx div add yMin m - yMax sub dy mul dx div add yMax l - 2 copy yMax sub dy mul dx div add yMax l - yMin sub dy mul dx div add yMin l - h f* - } { - exch 2 copy xMin sub dx mul dy div add xMin exch m - xMax sub dx mul dy div add xMax exch l - exch 2 copy xMax sub dx mul dy div add xMax exch l - xMin sub dx mul dy div add xMin exch l - h f* - } ifelse - } ifelse -} def -/radialCol { - dup t0 lt { - pop t0 - } { - dup t1 gt { - pop t1 - } if - } ifelse - func n array astore -} def -/radialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index dt mul t0 add radialCol - 2 index dt mul t0 add radialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index radialSH - exch 3 2 roll radialSH - } { - pop 2 copy add 0.5 mul dt mul t0 add - radialCol sc - encl { - exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 0 360 arc h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 360 0 arcn h f - } { - 2 copy - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arcn - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arcn h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arc - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arc h f - } ifelse - } ifelse -} def -end -%%EndResource -%%EndProlog -%%BeginSetup -xpdf begin -%%EndSetup -pdfStartPage -%%EndPageSetup -gsave -[528.96 0 0 378.96 0 0] concat -/DeviceRGB setcolorspace -<< - /ImageType 1 - /Width 2204 - /Height 1579 - /ImageMatrix [2204 0 0 -1579 0 1579] - /BitsPerComponent 8 - /Decode [0 1 0 1 0 1] - /DataSource currentfile - /ASCII85Decode filter - /LZWDecode filter ->> -image -J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H ->q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA -=M/6)*KS9PE`kN%="Tc_Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"P -DKfeXi0S^6MAH=;fBr>1IXb_>kP+oS^^pnX!PjdJ%0OEX9GI`IODGpB_@VYP -$,Ve*/ITH-bV]jIOR,+@`"`Y"/@)9.f?D&^M-b]OrH -OmIKN1*g(o[EC"elTX_ZZ,c*_ECQL2A(g_UF= -ESQm4c#_\W:"=CBQYkQ&hA;15H/=mim3UV:)/KA -Qu3q"iY[\%M;jo*/W8X+c8CUAR-m+uj;AFrOlVo_9p=ZV:0!S@R;Q;sjr'1jRHBp? -D4B]+c?5]@RI5KqkSaqbU$.ptNMG_V:6h[?RVn[ol5G\ZWToqTXfLb+cF'e?RdRkm -ll-GRZ0[r4c*QdV:=Zc>Rr7&kmMh2J\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U -:DLk=S8TFgnf3]:amtt*/^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sj*caE0; -T'sA]r#ZHgnbf"4c1ClU:Y#.:T5WQ[rZ@3_q>R"imJHo*ch78:TC;^Xhuj(2:_!Ol -=:G;h6j\E@/d=Sn*moVE0nrNM)FIVD%H55cLJ[C[6eHetiWMQ';%=d<=H*pP6qN54/ga!=SJ1"9 -;2S4G.RdIA(#m/7Mc"@E7G,9iirieL;3!D$=Nq`D6tqWXXu8c%h&GC-EK3oA3_*<> -*TP(`O&>=/8(db^j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;-03"4P>Z9n -8_H6SjTM9A;N=XI=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_HjoiMf -;\!81=cG/u7*1iq/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>taF90r@pq -RT!C,:$KVWVc<)U;qcXql30JP<=Ya&>)cDE77jIY/uDV%SQ"g-;6!VkW`<6)0U497;8l(Y-qBbh-93!ENWt#)=5*U[ -lihsE7G$-7>\9M0#h#J*FnGiOg8"_b#qq#AaIC(ZW:th=kc)Pm002j>8i!7B*[qY1?e2?#/h]Z*m]Yg07cuD=,MFREmKLG:E*Xj7EN)A -0'6EnSTF4QdCNCSlKqH^7HqKeY4c2Vh0\UE -n\/)MqHmIoIIG/N^K9k&?ebO/n-/p/=:YI@>Rc8R7L?n50*Yh>*JYU(F7Oc;YY81U&?&S6-0ud>A)Im#hNUb"Ka&qdO -A))KnnchD$=Uu]e>`Fm:7S1^)0.(5bSWiW!;9E$;.V2keQ1Dptb?8a9A_atco*/XI -=cY=M>g8].7VU+MY;U"Jh4+"jER%_53bM^bSb'jHcWT^#BAEHXoEKln=qn*M" -7Z#Mr01KX2*M`7]Oj[E/8nhQ_V=_cqdopZbC#(qMo`h,>>)uQr>tq&.D\XnB]Ef37WLCYaEBp'/@c>7Y1Z?&c,_7`j=f04o%VS[8$EdFqf# -C2I7Y[J%VngKST6D;Dn7pBKU3>Eh7NE9n_RKrH>d*V^%]PB -hcoPuDr(B,p]giX>RuF*?4FaG7g\-Z08=H&*Q.Z-&`R%kMK)rS`V@Ikj'6M_ES`k! -q$/)(>`Y%g?;8Q;7k*P)YEj4c?-E&!1$2`eRWDePc2#C?k?RJIF5D>kq?K=M>n>6Gjo!/eo3Q@\H/CdJrSb)i9dJ@3Gl@!$Ap&<"bqd4:0 -IG_a4rs.N\?]Xc,?d8EH8*TtZYP*G&h>@5-nbunAqL;l>rVsq6s'P6oJ)C2(n,WMC -"TWKJ!3cn4n.>[T'`i7k!O*RFn0%ie,m&$7!jF6Xn1b#!2$7eX"0aojn3I1270IR$ -"L(T'n50?C<<[>E"gD89n6lMTAHm*f#-_qKn8S[eFU)l2#I&U]n::j!Ka;XS#dB9o -n<"#2PmMDt$*]s,n=^1CV$_1@$F$W>n?E?T[0pra$a@;PnA,Me`=-_-%'[tbnBh\! -eI?KN%C"XtnDOj2jUQ7o%^>=1nF7#Coac$;&$Z!CnGs1U"V>Y[&?uZUnIZ?f'bPF' -&[<>gnKAN",nb2H'!X#$nM(\32%ssi'BLV'sV$Z -nR31fAJT9"(9q]lnSo@"FVf%C(U8B)nUVN3Kc"fd(pT&;nW=\DPo4S0)6o_MnY$jU -V&F?Q)R6C_nZa#f[2X+r)mR'qn\H2"`>im>*3ma.n^/@3eK&Y_*O4E@n_kNDjW8F+ -*jP)RnaR\UocJ2L+0kbdnc9jg"X%gl+L2G!ne!$#'d7T8+gN+3nf]24,pI@Y,-idE -nhD@E2'[-%,I0HWnj+NV73lnF,dL,inkg\g<@)Zg-*gf&nmNk#AL;G3-F.J8no6$4 -FXM3T-aJ.Jnpr2EKd^tu.'eg\nrY@VPppaA.C,Knnt@NgV(-Mb.^H0+o!']#[4?:. -/$ci=o"ck4`@Q&O/@*MOo$K$EeLbgp/[F1ao&22VjXtT<0!ajso'n@goe1@]0=(O0 -o)UO$"Yb!(0XD3Bo+<]5'esbI0s_lTo-#kF,q7gJ+(>-iU"UUIiZ+Zk*b!P?iU@n> -rZAuT136/F@JV'srZ*/`+5s48_>Y;q:*8GT'*8(L@3-NLM@tL>)$)oCiLCY!rYo9l -+5uQ,dml7$:H;]krX[p-4*/"qPJ'(%"p1Lt&n#;n -iN*f93ZTCC++a)FPMn/<[)"Zu=i!MTK(+toERK%)?jRK(I8!VZTgcu<@pMP -(r?1c^pQQE4[_,@7W`K0TP,G+J.Zm)8$^2XU&-_k3CZu)7^S(Ci@Y@VN#gmW2)K_Q -o!LLlDA'=;9!jRMo=>Q"AO>uR*d")KnuNmRfGEKU9%7cP'WM`f5Terk%3b]k_8/eV -?6.P[::0C`o^P^6ohT]*:UL'ro`7lH"]0=J:pga/oat%Y'iB)k;7.EAoc[3j,uSk7 -;RJ)SoeBB&2,eWX;mebeog)P779"D$<4,G"ohe^HPHV-8#@>.(J9os%^Y -[9Ida>ID.Kotalj`E[Q->d_g]p!I&&0&`)G?+&Kop#047j^*)o?FB0,p$lBHoj;k; -?a]i>p&SPY@N>Kf*^QM9J`mrE3ZeB'%,psni*f_ecXM!,+2J']U%f58=rm^O)"n,C -p-E4I7:^R5?D0[kiBq/L;e6_EA[Y`Qp/bia?"R,GAp/$'[W,oFF_:>kB/Y$Jp3gU4 -HY@SRBU4?c[ZP7sQ"\a:Bf;GpG+EA+Tk\bCC:9sReua;KR/I#4j;^mYti!J"8SJ9VNR\.O7Y'nH&qJN+Nup`4rG -)hN;XJs[j9\1rU121jI@K/brFGWg^>6%jJIKXaI(fL^bk9#< -L:C`Jph>L#D21)rLNn6&=Fl7;K895ULq&:tpkO\cNJUc"M0PSJ\=nbHV2=uFME%Sg -pVdqWc5K"J(mB#"!WE_)Da?WH+5m>(QfX2ckr^*e4.uWU62hY8mN:E5)L)4=f^Xj/ -onrP9O-o[&\H.ce"cq=CO?!]1Gn#lr&Wq>LOgu3hfboqJ-'C8;Or5j7GqY>k0p?if -M_Sla6$#)nXqQ>A+5nGR3DVk\ac1RKI^moq_&NVErY8F`)PLW/=YlC)3Lc[Ta1a'a9:1'S[6*D!'VL`:((M0)O#kM(]/TZOd]FHR[NuDq>HsHqk/69 -TUH%W\e1V3'qj7uTfO-dH6&_@+bZ8c';>%>iVji`Z6/&D)->H)62hZ#o6oPhS^_Nh -i*%5]1I"0(=93:M)8Z`3rXeg$SGI)3RG]1G4:)&f(a0Wh+gF'(0UTEtU&'bI\ri_5 -O/ZCC(Ld:XTZA5I -e0!WV"$"Pb!?;C;ffGV6+5rnOHXWaM1_DuAXV8OZ@9L$$,<);K+5t'RiVjl! -`Zi7h9>T=$_>YE_Qc)!V`*>mPpp[/&(@$gR_fqAL)(o`Va-HVqe"%5FKRqPKQU-6jaiZ7tJf#_O7I2=Z8Vn -+5o;ZRql+L#Qje<#914cgV=p0'UG9td!ZASrGC.LCY*uSf:@'9]n+f5LX?[`8/m36 -qE$SY1WI5LdZ_SQg=`&ZHVL46bT'S4@@&q32@*akg)85]RCj)tom`1\Q9BZOrI`oH -L#$%fh*'TMIG`koiRhFm%3adPo5kU.nfQgS$$p6,*EUqCrZC*(%,q6/>YZ?iREZb2 -.o\#_TnD9Rc#k03NZ6C!RC1i+j5YRNhHiA*Sj28L60*J`jM"!LhU_Q2qom=Hl!s?I5)@urK&qFiVpJ]Oi -j#?pGPb0>o5:Q@LL%kV(pcj]3IuX7`(%T_(8^sSao//=TKFt`3N.4>bgN0S^;o,)( -+5sdJ"!Sc>n(T#b'H0VRoDLokee.sh+5qWA^(m7rP*;N!rkF`thi[q'nc++-s1e1K -"P#8r"U'Cm@1[Z_)Arj9_Vrk.r(\[UMacYr()n!Ka^qe]m1u0kJ_Jq0[?aV]_fF.Z`$%p-'Yn-J4 -h*b+iY"t,Q4&,_JG"XYlZIOp:=ij^g$X(]hB)-H_;t-3 -I3*l>S(['"qYf:nLX4lNq0fuLJ(NlZq#*q3tF^K"@EbhE?n0j7.EZD'h*+Q>8K`uKK+8uL\[`G7^9L32':np -H@M'n;cb,"Z6KuI!XJNl.A,^(`.+.BCIHSkL>+D0`[O4EHCs@4P(/eX\c,..;CmJe -JubhFdYN\SYZi44WS8t!F/8+`:@7ru"]'3hqZfo\r;AlWF;50Kd.AUr6W#[O(Iq>% -Kc?=htKk"7dFerkXi<"Lm+oTGl -gl)7<$X<^mG^kpZ3H.+BV=$Hd)7b;$J!.XnD.OA)!WHPk-i)V=AD5&0X[SUp]8,A" -#/.8,q\IA\D#5:&ZY`o9f=,V/L=s+SmRF[tDYqHF]l/8[qnI(I#6Ve]Hm]<>E:+>1 -HVP0HZs;A6r5(jT)Kp*V9a!F;*X@JrLe)U"q9j%o#GKaU=2[WrJ*0?"O34[0W,^,J -PDT:anK#Ykh'O)=Harh)T7>gE4stpAG^_l8jEZ2US)jDEA%CFlI]'74HN(skm-1&`MO#lbWjNVnZBr]%o"ruP[L^q4f*[g2]8%Zk!*_(c",ikVf.`Oo?7 -n_uR'1jb:>VAdMMBcpiCJrgTT6V(>l+XC$BO`Dd<2OO@eA<`:@P#b4IGqgXVe=2Yb -G#&^TmQ=rT`0=d0@#25mf.BtaBb*n_sG&L+N_)Q'Aj.)=!F&%#. -3_<`N*@?W=%.Qt,"!mFZi]J""p24>Eb=d"FPUd:7OsZIPW#t&aB0IKm2k#hk>RQD> -7:Q>I(I4NsBiKKkH.>Atd2e]UG&,Li[n(3:,GXmsO]#pc8a0-;UNEr2;YjfqBpCKO -Ph)=&H>m$-i;5Giobih\S1)GQTF$h@V`NcB"pb)u+6"CRO8&)p@K[$QA,JrOGUN_F -0T$!*rH50PG>;ofS#&!.PZE*3=t;IEXd-&u5I8q/Tn>,QHn5h.T:)ae[r;Vp>9*OJT,KA_mkBQgUQPt-\=V` -&n'.BeXDHYK\/U5iqPiC;0G1Se_4)JH:a0;i>m^M3_W#a5QLU^,JdnqMo/^[gfr^p -Xi7]^G2E(&HgQ9#Xo#jLo)1!Vj+)(a"2L9?"(6KgJoFY=G,(^FVUXHV"@3!Zb80(qiq=mPZ'G:-QiA"74E$4!`]M4> -?Pm;NJWOmf6cbZ3,@l1`;WtXj/\*RE%3\b:`R'$]!CI6rX3QdB?0/'si*V:^CQr`/ -kC99)?&/cm(?aHdWRAXd$o&a5f4gYp3Rq&b:lTXLUrLe66HHt4\6YLl[ -U3'Fod@)t4O0l*'LG7+1k![9$nL+ie\n*OLTF@/bn!*/oeJL.!r@BXfM6)#7F4n_Q -B^K2a1`h.tRL<Yno:7B3c9IP%b0Y^c#L -ef=&tU(M/X<[?Y5G&6=Cjb6W[ErG1F2nq02>h>A7IV<`sD`d-PpRcO+J^A]XFgI;L -IuMcACr:Zg$+ck-e?-o(`0`>PS5AKCGHI^"K+@1#3Jj(D3`.cWT_d -<`3RYF`fG2lm4r24pK<"3.HlG5&%TUXEBLW)N)B14,3j/97@i3&cVCgHfq^'?J!nX -IqS1O8$DZYpYU>tJae+)_`/EO`GO3BBZKnj'8\FkGpb3*"<\MkQTK:k9sp,'=J'2B -8'5!Y/RjG)d>^oYid1'5mCh-9rL^:fI]q`-<;5STT@`siJ+,*RmY7$W$.aJ=XU4m?-ST5%P;PpI=<[X9V^Z3'n -PS69/'>KJ?6!P-jC_X]2(dX)u6(AiZX;`o]>m:9sP"?t,b=jb@.QD\(Yg?P_Wti"/ -ItpR1]'DeniG0'60W\F"3?_l95V9;K`^.4e_+ZIIA1k]?01-.%6Q98se2'HS1daqo -6X2Mr9E,4s@jSJ_04QV"5p7W/TGdORKnqV#>NV\ZA?=-qL'#LOda81J:V\+m-8[Wh -6ncK+0gp[M7#X`+S4bHX7`4um -eq?tW"MrAKdP&SOeN%+dL!W%:Hm#O(W.nt_4\O>E"%G\CA43M0`4TYNCh?.^jMj#j -7\"3_XD:;)EIQ@0?q>1AfBWTXd`lfPq>^o4bJ&[.l80!1O.[ETcKLedj86gm?Cki>TFs-AM*.UR-]#Gke -$UoTa]1MW'F%`SBY.d!4Ws[/t&CQ.ie.#;8$g:-J&6a^bgC;'(aEn$1%%Bd5S&dFV -8_fk.l01d8TLoWd8fXQt/2\PHC'AR+b".#9Lc2S3HEUS5$mTL:LfCuo@0C,.Y2`Ts -lHKP0;?aFp4Ltii?q,]?2\Tn?%()c^,b3&*SkFa/98pGTS4cLk]M$J^9AI6Sl[O[m -?+;C@7HdR?<5PlHWJh`(&kFJufRJXc=rD%@QHT5q34TqE8K$j9"Y_Jg4CQI0^FT5m -9cUah,eHc-e4hCNbm`/tCtDC/fM.7[2WT$:E`0'F*[UHsRE;"QK+cH#Ks%3VXSaq> -:gJ_OE(?['N(PZM>!+!&;,*4YbtQU2<9hcAl;#Rh-Ih9Tm-d^In4sJ_,cklEqTCZO -j:_O+*7Wfc^sji4dkMdRY1ubp;\(["C/.X(*JpaH.rIVRnYp?l:;lPH/HSa3!ROFP -:^mV*D$Nmc#Z-Al`o6MElY&QY]E%Pcc<=6uN=*2Mm)rpW7,cn9P:-\2;hEF'V.:)> -F"NPi%a^A\crC3F2&]?*)c=iuQi.e!m2o4(+ArXl'bnG3!eDKIc)i71Oq_%cK;6"K -E/$J%8)`3q<0IK\OXuAL%=5/dS&^8n>,/qt;As(C`?!Db1f;d[dlde3,r\bN3)bes -;jaaHjX?+r.0am&Kql\bm3R]1:=J]-!\9+"_'m>sj@a1@ZBHa@\^!J%%P3G_;DJ.m -of=A#2:Tl.<8BH3m7gRM#LpFaQ>4K-a(^aIc,/oX[HE+FXC -J'b8^9ko?P!M;RS%La843^h^YV,SWB:Y&68<`MssD.YHoA(HWRaG/+L6[=^"b#&eI9B9n=[eU`ooe!VQs#E:=dupo,EK9C98*bNcf?0+V"V<+?8Fl+ -#Q)h0o.eYr[NK-_4M:V4[,>*Z6omB9^lYVW?[/jsWD -CrBH@<[ZNq8O-Ii&839kcrD7C_gm6Qdh3[(1bh)"b>T0KmBE)IX]i-K>0Xn=%Dk'# -^YDQ&>[>?SC9]O"&5`Pk=>b-Mq'8X;obpu1\N3p9SUWWj9;R#;d,R%8m,nUV.a]9W -)V)`2D8P+W_qfIfRuPtSXkR-pgg/&nWsdt()`+fV1fmu+*EoQe@jqhFXM^=,2*0h. -F";tpL,*Q9?."_hQ0V_0leS-!?H@b*V=.ahn6ZXp*QmGCCl6)poK`'BV0f8Ir!?Fm -DVF[-#)\"+43:B9KXX\GR*G&*`W'9#s535E*c:l6/d#KF"COf*Y1RKCMHY^i2AuH[ -=B,"H<%B)5/%')X7O?j&9tge">$:O*8EfbrNe7T#>g6f_9NAWBr)>b5MU>\22dA_ln("^@o/ ->QlCmfQ:KT6-EcoR%YJGDLhMg*:CI1Ke[br]9tM(E9."."GXKj,L,`aFL-f@\2Mm7< -c!]@`9Zj+u5_%!;BtZkhkrB+7:53JsRq^0&[B>s4m[n4mTLP[$,Kn=Y,D6.lk<0gY -\;I?8FZh2W@CFISM#DS*]R++>d8ZQZA.GT!#+]JJSa-KbCAYR,m^$[mZti=o/EN?M -pgL6fQ=S@X10rglQ4#]C_lA$ -aD?mYCn#rKY[%ZsFbEtS?WN2UFu0sfh&3+KTLlN;>HFAa -h"K0R`l7>Za)/i9D;8glY2=*qi,/o+1G"C(Ro*6-t="3!oMXW*EOu]? -V-`7$h1o*S>$--6@5eN"XHPKTQ;iH::2>d;Y&2-"&rFp=n6ZE?V]0WE(3,BUEShgW -l.oCV/)`0gKGhkr`m0bsf)uZ!l>=.;[CGbrRSU1q64XeRSu0J!T'#2a$$RA/Y:f@[ -067I6o%u3D0/IZ0N?uONQShjml7?tZ,E,>gWX\\I1^RGh1^S:;VeB`l+B*m:ZgPpl -:'S>d7m)W(0D&$pFB:/q-fO_"YC#'COo8.$\:fY$'9;O7gFJ,,N -.Pk#5=hK/7;!!bdC,Tu'%s9"SoOh?L?X%Vr>KB$3Fl-MJmp?O_P\gq>2*A,]R@;H; -C/f;R"[s/1[XM79?]"`m/MkjsJRqM\ZZQZ_En=UiY?Z8NDg)\Fp5a6<06;=sVCDN. -Bo;GukZC4>LJM_/l"-D0C+%RXOEWsb['RSC4<[a&BUBFiqLIub,E-9K\GYa&8 -#CUiHLj4u;#o)U)iS3%n\#"]i0$aZoJ4?A0)8#A#]-p?;J^#P_FoI1#H3 -`!Xqbb632s^OR<1LkSTT@Q+\d`u]UM_#+/^I8AE*#L*-rfR8cd10acCp/ZMdqfLcI -f_EF\F%e3*#2Vg243EAIs-2$%BYfI^f<*`U*p5 -rWNCU6"&&a6m`WVL-oCrpk2*_'8f4fdM8S$7p7&Es7Q:kf; -q1Qb!1R_$Mds8moFZZ0jB@H\\#),F=;/"I*74+9mVGh3YqLqD8;lWMq.u3u:eGi+! -TBNO+I_p[D5L89R258E2[T`(LX+U@+5_$#cn+T1Lrpk-FhJS\Wjlod^@;skH7OJq/ -QT^ncp4A_3TdO&^2Z0o[(alDRhsJDV1I\(eBlr'REgW;meS@$gh1i[UY1d]8]03Uc -EP'uoG?aIss+S;KE&cW:58TI*j`>]0rb"ThdHYiMh(H`LZe+SgH_(/nLV;^:Gl6E* -8!DKdp%j*.s*)NbC1n]b&954HUo28\*i$`3D=32BV61AK%\0g&>%]a8*;S+6VVW--T:-aU^Wj -"OR1n;`rYgc'*P236ee"iAs_4XRSBu;mc?_ca2F*5gU2bs$G(32$lXt:;"b>dF+8fjPI\3q)Iqm^5G+i.P!."Uho;b/*)P?.P._qXg?W#>G8GSKFTB)qhcL[RD -0M@16q1;$Wk=Mf+pYGZf]'h_qL#Vm!5DS=phH,j$q;-%`k'C?`Vs(k/#I3Xm?Ji<] -qqh@hnGHW8an!@4EP?pjIE*5>a+<# -clJ");;+7S_Sm6uM-E2ArZM9PRTp/4]GILS![-M@HB'D -A1<5:Xqr/#3t1)D229K7*(-*9%cQJ3LX>stN\Qb_`Z]O@+`r3jJ9qo<=G?p>8_Or2 --4L4TZ43T,B8TRc36#)#*2>X0Nei6'j!%qe`dH-jTY*M-80NioTl7(K`\g2:k?Tg. -4=M+W$mXgdO4!A[a4UJ9j:m<01*/bQM%&t8b`.b55"J6_,p_QIQ'0R%9GHQW(PZo/ -*$ZL'^[YVK?[M=#0M2),+Fbkrpo=fJr*p%)3@8=5[5?q*e#K\P/CA8&NUTUM&+N+' -QQkQFo%IUsW=q&J>g8C05%[LqSMXrSe!e`XCe[q411oV'S'uh*:)V#1k9T/ZaDcTh -aMQ#0$rmbaaeq!V:FX4I+!9K)(6@uX'hA&C'D(pINrd?_kTpB[UTeVHnT#](Qn)B+ -Am_SNr\R&2>+jAMUeRjH2<`iKUQg4g;AqVfkli?.<0`)5MH*:5AM'b.^6hh;APCtU -p)W8E]8D-J6Y62e!Mu6WMU9LV"Zs=7o[9O7Otuk=prO1D/Z+=(,qm2e0-B3O6e&-C -8guW'V%fN*pAe4ET+.Ai`+6#-& -8sH;;hm%!i"8lC/WBDX7E8Vi-."AYIm:>I-V1<(RE"#VC-UL)u&AW/i,s`sG7EBj[ -92TA*92ppe7:rZ&[b+d\AS\EEZ*q*dgKTl$C@1,r\(:Q:>T8B9mN[E=O>'mDJc7;* -%/QT]Xnqd5iYIdb8R^Ic`Gi#DoNn0S=SfH16(P*A$4g^Ft+>XMeE,U.dSd8qc) -:odH2*SS,.)]'iS@&udP(7N#KU\mXalmsVr=OEJ-dS&KRs26Ksk`Z7)*>U%hhC&+P`-a886Q;Em>-I8ulH?E)JD -^K51k>H7?[[FX'h>\fmQY4^aCa\c[:O7>>k,D_3[DT`D9KqhkXBAlAD+)<=;qU!Bsp)UEKmS^"b?7dSr8[MA4)jh1>bp"nH\Ht+2; -5DT03+6%.7fQZk]/1NS^Z)hIBL.99T?4FUfkD20udlPMD_htpp36H4B"BepD=@6b- -:;.qI2g6S))o%VXDH"[Q="WNk1Qh8MA^'tJ2,iScQr%ROdET*\C`bbud"6G3:!Y6O)Y!\bc( -&0D3TNsTch$'!18YbMP%V[ANd$HU6@"Lq+N#cC4\+7G6o"#,u`2@+8&SZGGnn?39i -6748(X[^L&VCog%X3YhapalT%r-9,k^lTj(J=H=VKO#0[0Xt8',B`WA_.=nKERF%AB@-Kk=AgKFu?H(.mB0 -nesf6i>qJN*R[.sP!L>@69nF+,goI7&lU)Q.h/Y->cp1jc8uF\]Nbo3fl<)m$m*jf -=!rYdacH9K7\%l2Qn<3X%)KRn:7!?'73n$d.FLX7&t:@+T+Fne.akLN'!j)_G1=@R -)K<'_Te_sF>5'0AWcD]'M0ou[3u!@?/^W6&EoKF0Pf0M\+6@b_&XZ2uKe:Ik/jcBa -;ZeM5#:ad&0N/D9')s[b(GV*m1!:oO+l4230XF3#-7uh]#%21^Y'(t7&4dX?VL(&h -7R@J6nEh\X9[b+U:EWDm7)JjB9hK)_818Ni2U_sjo+ipXAFo"%42O -@fB3m20"upM1Q>T<=I94icGeZF59!CeO*:t6^0f&Bt$GD7mrS77+=t/beP(C`YF:Q -+L2@Co.l1oW@/pWlYK2k+lnS];+H6ON:8eKiDL&>fT"+P9*d7[9u@CPA:jcY -Y.>%>67$$QVQi#nhBJ2\:Xl@9FTYG4"],;*:R)Gf!`U2j(K$G:;:Qad'dHUV-W63[ -;UmF!'f/cg2cGu';q4*3'gkr#7oYaH<7OcE'iS+4=&kMi'Y@Gi++VB/$r(1HJE@1XM(8dg4K/CTt<+o7&3 -q@R+1+(6c,iU.GRefLN4&b@7donQgQf3OZr?.Ih=(#rV#k?aG>?IeLO(%Yd4.NSW% -)1h2k!9>5q'Ej!bAg.)VJasKTU)ma''GZWI14_0jGA@>!=el-,q=(M#/AQE)JQ="6)@qM$8B%CU,p1n:VG@ss'B/Y6PQ@W]" -K4pR+B\%lO(5llbO(hXaBpPB*G,&d&V.pdDC=]G$(9)(MYA8(I8BM+\2tap^t;E>/2C*_#ONp&O5ID*s#+F!U(AO1*.UE(no_*@F?1H -MfC[[Fk9uD(LqViB6KVWG1Bb:U"UOg]G]8B&]+/R^jU7dlZ40k++YI;!ULT\!I"4, -H.S[6f&LWaVeu1/H<74pQ`ka;Z[8%DHe5`RpUbeha*^t3HoKB!QdL34ds[S7IFm"u -(YaBthgSYmB_S3%J,t.#msgAZIi&-8(^#:j#Cr0LJCkB`(__I#?618k(W#GRJFRja -H67\T"TeIK@Jo[0R!W(d]"SoFi@'+3k*$Qo"lPm2MqGY#(qGT-^PmETN0qqMf[Gehf8UX#NE=G`i?Zugg( -"Eu]MQNGP!L[bl&n;><7S%7B4m(kI)rs.ng"\o]8kSHMVQ^X?>RecoN\c\T3':p*M -T\9pM%Us(SqU&^[>Ccr<;3tK!173!ArdhHjq&Q.i2C_6)\EmJ,aIaF6jV_FiBUA%U,RBn6oRVf#j -T%aX5hgnD3'/>[SYjXTm9%mXQ)I9CI@B2H!OP6&&)T/X[`i\XJ)8S_3_>Y*uLrB_' -L_[.S1t;GU4r:-trmpD:Rdqo2p+N^,(+J+uc8=R;iYLn"8/]B7]">4N\$:7mZ.g1C -qXq-u-aK3kP&>Cmfbj]3ACrO_SE]$UnP9:EKY#!Eq(0'Cq^o3BU>i_..u:/-nX2^c -Jr'rDNmXsp)^2JUGHq$j[p+0?qcC:3LU`h2H_KjK)4R&d)A\a%\Yq*dq$+%_3N[,J -/2RaEgTi:9R?f;iTtpj5Bn*J4[b=WE5$NNM)h#D(J\=.t5$PG/)rnY:k%F-mQZ<8B -"K/mnJQj!"R;dAH)8D[;285Rf-c[A>]=X6i,mWrq(R%'?;rbR(-bXmV^"b8;Hk!tu -2oD.H;COM7M.%B44pb-T/(A(-.gl(@aTNK/0.S*(r&r%dK]6g875+S*m\qVXRBoi8 -_VBXX]S"*AKtY-3aP;iu*0NRF;TkPHOX4C9:5[^=b93K^%#0jX;dRDDQ-!:B-n?G2 -]4mZP@VQ1H/9pnMS:Sb/f?IRTaI,WCguH[bkK\[,\FHFn5Lm!'4$?$9 -`#Kq^U>5(^!e/U]1)E4TAoQg_9IO)D?dB:i%oXLngtBsN2:J*P8mN+[*CJ=^7Nq.m -*i7?8jG$44CbfKN9Wk<+3H*IqB0q8oR;kBt4\=6lI'O]_dS$I%ku(QH#cWfg0qCJV -I?E!lPM)FVf6s:F*M^_Bcl/&U8+I-?]0XZ(d14QrU=,./3@CSaYT&2r$` -?K(=%2=mFqc6!_l+%,Ztk=?JU\j6NO[BJl0=>Lmd7;LbWlQk4)$1r^^,q^OM;mSQ6 -f/5;l&_a?5+$K4FL%E'7prm[MhimkCQNIX`+pbFt1QNW>9+KIopujCHcpAU92[1sE -$U:'W!bn0(oYm'=Pl%8\nq3msN?8+VrSN\7s,6kFn,,E9rnm/3:VuUnZ`QKNs.TMn -6AD,qn8oEV#)#>%:tSH)rf\6be`MYa.5q3FZ/\^%PG/""O\"Pr=Yu^I.@!NeP1ark -@540Dk*&rThJkQH:?Rhoo_sD-Thss;=u@@`8Yo>LPhL7DTi%dglB>;U\c1;g5Lee] -qBSE:LdRkL_)qU'CO`bCYP4ftX)Y[Tm[%.chKYnEWNTCHh=gr"_-aF6*%ha2M8Wlm -ptSn3)3;mMEg[?E:G8!WB(K0\c@7jIcY.Eh4Z83qV:=c&>2/CJk5TkGhXL:[:)=_/a5qS)`Nh=],UVr;TdDejFI+AsZ@o,)9!XDZ.SCD]ZS"mkoX-AGZOFT'9X?"j -1!ML2eML!AF&+(,1R.&`::%=r4ARc_pHDBZo`%0Q1_g6^:p`(ioUi&?ri=G(_8'P& -jtS?8Q"(F*5QUE"2[?$e0K=QE@3PVDL[["QJ!f<-rf>GAF^J6O23hfX -DEK$%:dffM1urcf_e,TIJ"EQTDe<.X<82(\QB^9@g,>e2CKi^![qo97e[od)pD(A^ ->W47TF'U^m^Lpi]Fl.FM2jNQP?FR?2Hs\h_pO6JYo>5dD:uj`I&Z>Fe,bO-?0Ro0L -V2'k*V/XY.R=tbDB:nA/l@5F=_>\p+fD\:'A@XToP[uAMqL5("=g^h!K[>@+Jp<._ -6"\'.Ck%fT<`Pea2c\1uBR2PfU?NR[PGW&?G*T"?\rND^C:^:GWTu-*K[[hq0G=KjQMR+`rpotIuqJ&DnZi-Km#PMk37>ESOUa#H(?qG -3OSCiG9=nH4Hm.#*p<@YF)XSQjb2+[jb-6]>BpL(S46BTH_*?lf6HFj"O@;FU+_-T.LC<'W7u7g),t,&'7`Y;2%O:mA -!iU9/`F*23K"QSo!QPipA06HOL(;3__&4I3AW7:n2+D94)ImT!G4Bl=7l]`RA$gH@ -&`u5H\G1Roru!"pe.2aKaJ@R$NRGg+9/tf\AX'WhP29J;R<^D2oXe@k^0s\q -M(rU!a-dSfAPBL:4%AH6)PY&RX4\\X,\2ptF(C(4YY%.!(fDI8kW_%(YWpIds,Zb, -F\]L#4&a5u+)u+;5/BiUjG_e9@KZuJnLj$[8=>Pq\WY/D#qosC^S'('KM]5j6YKI0 -Tp.][cmgJ5BXJYO'P<>%\iC-6;#_F8RZLDk.YWGhrt1ou774p7.0>n:'qpkAN'SRN -a#MKhnJH\8RQF;ZofoAYb&k9U:(a8!9:@UL9Z2*.tA4[uCPKI4tUqXk$ZXgo5pj\#'U -0U4Wt&jXH+:V#s>JQVpe6%/H).R(pk>"H#DMXajha`q_Uj1O!@oNo/Td4YCd^)+fb -?T[M#DmCc5"3SKU'&"piYlDJdL>FIQXKT\A1K>o$A#Vc@2/g2>_AG`*%cP.J6qgJ^ -2bkiZJ9q3b6].HP8GlepgPIXBm)8[c'On^TMfDH&`)t%t@m"IbEOIg?DmY"O!1)JG -gt%q:B*"[A6ki/dd1n,d"M^;oU9V^6ar*WrfL>ssT(@H("=egC1FLF1-:<_o-SVn[pPp8H0Ai6DG,O4dKej$^*96 -Qr>0(.c5Kt8=AL0Bg!l:no4%;3ESp8/IaSbYUjYeHuk91.X(E4Vp3qn2RjG7-!/Nuc@X\F'L8SuUTX\IX3Q7HZUdrX\f3:aZD):-e -AOQU?[EY8ndJc&Ck0u"Ea&hQNagh('inYQ?FRFCm\2SU"hAaL\Da!)BLH-@sj"sTg -JAJuBp;J3W*"NSM0sMeXru#9g!MEBo]f:3HiW[PP,Z1WoOmlDVbVb1%N!uPR.rJ@o -mtd2Kf?&5<-f(;jPB*g'b5$%]jF#"9F$=<_H*nON6f(jbWTCj.'*B`"h8&^PIT+ -\;5s/+,BW""Cm.k<";3I(pJqZL2^#)EdJtY:8.4W#P`?(EgXpH -K%(c%npDo`=HGdeL-gF&KI"IR-,\4Y6f^AIlohG_1W0tn`$@[f16)^gIt_<(KM!77 -;Pc/'k7lQA[NK%4P=W+AB>@2.`8j[o$P9FdJ#ZYc1(n@QHUbW+5=JO:7:\X%FB-;- -"qR:.ObBEa:IiPp*D:WOUtJIqn';^;cQr!)*9^0d -oZpM0\;Y1:PJXrKln6]Sb6\@moB&5@*eft@5#?;WK_A4G!1]Os#,3\CYo=:n3"bKQ -"jG33,1j8^n]s'!:o*[/XU3@YiD:6ud,bbao,7jQE(CgSL\P>3M+X#B:T1QL -P6=23VE.qYYb_lX[2YSpE!@_?a`EEZOB0A"ogYue:q\("bm[K=,>q5\SfJeKFXPUk -.&m&bXaHC">Sad((5RXd('t9M0S0F2;$D4`c\3fH2)C]d:=8-Z9,UD;dn[8KKW#7H -2(^+Q[3ehk-.CC+e(DLc76f9*5h$E0:\8Noo!pjK8Bd6E+nBQL$HUI87i:KOe/_02 -Z$Ekp6Frp6,-/kr.#Wo(F476Re)aKX,u`:[<6kG8eR_e3F]Y,(^#9[X(>YWb&@+Gom7+Fh_3(kk*.ar61e!2)`PuC[_<*"]ees1!fj^H`ZCt@-R -Q^eU<6uK_D`lqqgda3]KXJ3,tJ$#d/X5^lpj`f=-5cc7^6)^qRBLO3[Hl:"TK\.H9 -lX3:o44^6AfHl+$2/?;TL"D<5O#Q^Mj2L>q7.@tH;gEemS$3jYjio]l[r -4YAUIfd2fFq`]p(rfC%f/un6A$7?O(cSC3-fqj@)[=[)FR]e$$=ll7.oq.8:#fo -24Rl>ZDF\'gL[hJFgm4&&@'XRaDFZo*A1M`)hs#QXJDu%e8SWG^t]Lr13$@Kbkb:A -S/J[8L%%Gn'-(4VaP/l">><5pZ.dtRbhUanfPQHL5uiUhN!-GMc5jR?&hCrn*l7_' -gu[,CE:pMW,?i<.[-GZa>i(878?o;>?008cmE48hhi,P+hBh1<2%I1XJk."qK^p7q -,7`JQ/d06<(cd9*6q^&jJQ`fKhW=0d']i@WXfIg]WBK$BdhppVhd9CAhd,m3A^"KR -ptqA4b*pI>[?N$Xh&ui&2)'p(,%jFMu[':2"9$o_`$Q;H%EjUl43m<3BW6u,p?\?p$ftQq-k[.iZ:#;2E+`504U;.j.gn)%#(npO,/aE -:+M;i/UiKRgc"]>S3"('mQ0Du7#Dt!L1!g/$G!pE>FYt;d3A>FAiJej9B=Y`9nl)I -p.scP.)r3%$Z2u];Rp#QKfVYBg+62fekkI_=Gc?;(p6A>"f4'>8$r@"SLcgho&O?< -9]Y>EAgUpF5$;JeAEHe*+3XUIdO,5U0nfr+?AVBA.IWNMJ'^/hKk'*(?>o!,R6F9a -k+/:&8I:KW=G(2d`7!1J2IYct@crJke(/L$[X72SFh,Xq@V`eB'&VHe/^jW?/\5qV -+rT''I-=UbM*hiaCql*Ur2&Z -l=QpYETRL/_rfu(X@35q7=7BO"&W!H91DMakl9psYj!EH?kbLEH+k9j@0P*=X'0VG -7\si`\Eem[l9^2?(;&nP]UIk.t#aPc-:[<&.7$b%oSIk[KU8PGL`0 -.]]U]/'NmO2S*[i]'R_em)(VqB$]iKd$A_(c;f"]K29<8NKB@)1#jcnDUEn1oqqlFQka/Jj>D!oPbm`o\Ci3.%NmO$r]0fZ6Z-4tj]kruuO9r*l6CHLoZY['h< -53qGY[gMQ0`0TfWIUB+(hsV?>D][hT0lHF!o^>iRO.@do7'ncYUsj1n]WD:sP*)9H -4h9\smq2R]9qbNu78rT2G@-F2O]]"RWcMXe.oEPF,HpFVgU --Z^(YnniZHk]&tkZmh$u470]G`*jLSr$_o$g:oCa[Y;dL?6Sr4F,n;T8r@Zp0(]Z- -oG9iX:HS2=7.)Q:`7*e7/j8WK;4(2e3^kdTB16p^P1*H<()%iiJlC`JN#]5d->,X; -2a_^P6>MWUok.=k$\m#Ge0L'@@\X?cd`Bog.a,S.FlmZ)qhF(5'c;Y$>&/dN<^ZO5 -<-D>CF\cWC=QstsB_I`gZDo(B*H5k6.IWt"<,ro%2Wj:^FAma7-6)PHm;.c0%4ahu4L'5", -Qli?/?__qeS7S@#gi,_0mC['rWOD,2Xacoea.N2E[!PlI^<`nXGIQ)9?a8$TfB%K- -Mlh=.ThS7:UYY+a8D9;Hl's'[12j= -;$BPnq[c6$cM@p-[do%l&L:lhJD3jm/!dIFl2)*G(rtP@`'6$I10uHc5qD2d8LK]oA?ra6Z;iKD -9BK.:UrI1+RndT0\\.WY5+YR6<#R%aNC0JgBb\-Y2Npq6<%6?9V,"-jXAs$nHI[2L -?`hsreggoac"47b/QR4(VV+1l>]*V)V:P$X]O#MX]B/bbJ&#H2=?IoH%>Vl2EEKkc -2][t#A9(g8VH5@9b[tp!]]OE$T?q7n>!44!9mD-%+7H\YY?L^H5M>fJ":3#>^rBdo@F)KX*WS*XfuUV#=4H!,m_AL -KImMIn>n>R_bf\U&&XM44V5Po*).#6&M-io`DLB."@`u^AJrLMXDJos&^5AVtlEITB7:>a:+WIT+67ZN,tWlC -a$%ESFB;,`eBD&idhLn$:=L!V78HmJ%80RJeP/n@eFdZY=&k@\.9Y5eX_h:o(!Ul, -f9P`O?e?,'Kj5^4ao6,n-i&cq+6?nMJ!-M9r^hj"q#h#Np<:&('4MjY=cO1*#':c] -rQ'J[kDb7>h3W!7GMX-qja#^LXmEjO8,8HGTB,L(D,Cc8U48L3dJe)%\%=q.iK]-< -=5k'7,DY8\Xso:gGg7n#@i4&cNoV&>7&46o/kqPk),=1sjdC!lQf]0G>'QRG4d'4c -L\XUoTB*4uIusa1!MR7r3'2THjf%BmRKY_O,Tl33c^AO:Y-"bj)U>aml^I.LG8qFH -4F`P]$]YU.NZB-YNT^,WAY8/5n#nD^r^W(_JY:[qlLXGI0*\'bNW67;.`/JL[.1i4:,kOropBbb:XgWXi3 -YAN%g*RAlapP_E!FDO[PDZ4a[knk'UjcJ8IS>LdHHM=@F&aAglY7p6uT#[u"qju]Y -mpjMQmg!4:Rjk0\4s(%4%nQ6+o50#($LnI08 -6h(+g"8m(r2rb"uKFrf4:'s9h/9VIq:Iuahs+hdGE=ObY5=Zl8LDQ=6L\Uch:UTc- -86krKKIqp4^)9:?Bas$k3JPoG*&mXG&)m^XLf"X+6s,E\glf`#ij^eCcr`NN80Ed% -8e4/kL*f4_9bIR+Fq):e4U5*h*i$"'`/)YUj$[U@;6Df4B&l1rnA8Raj_:i!6u^'E -%mO_"dCSqHq]XaGLU%C286H*>Ua1_X;C4k(M&dej9Poqj:.e)\/LBJrR?L$$FUaK4 -2+;i8FK'G'_O*U$3'N,IctdTOaR.7GS[1nKt1g0%)5>qp[_:7>*b -D,'963N#b_H]J4--YQ&_9EEDs,qqtVf#WJ\!^T?!Jc7=@3laq3Zu8mSX]=Z*=fYP> -,=8@n/4]K3$F0"L79O.ZB;kMEmb4"+.UcOsKl=+o]"1r]lWib`G,pnr^/s%e?gIrI -:RBoq3c54m0/F*RB>0q_0YRsVG -L\TO=&>f4`HLkGpKm0t+^=h6[Bl37F\[JS+cJ.*%DsdeF\5s)pNq'uZ7*WdpifGU] -,ebFPjc!Rr>^qY#d$P_SZQJj<0b2V15=b+Z]N:-a?)IEt(P8TJ/hY`)r'5@TOU7?A$KEip$Z'OF`)QNMVL4L!_qILa7cNp)VFO!+4N. -J+<4ua;GL1jBRD$PeJKd=YD+4gmsYYV%pg?*JC@>Q5PJQOTlY&U7]gk&;U6lM/b@_ -gmhB/1Ic*'=g'_2W8<%pps(dLL5a@3AT\-K2':iQ6P'*m:L%L&crhGWA5*H)oJVQR -)D;$Oh&W9_L69nf9Z#Wes$^Z&bS0_M1lq0-(mJ?33,f^acll'u1PhdU,Q)bG/Ldan -L9]<5bj(/G960H6M?J&GlOWNs0HH;DCRR%JBRPlFG"0F'>9@GCQsZsRL=+^Z:MO,T -/?r[^@2NH5J(f./3][2MdaL"[p3GgK/Q9h;,^;JJ0#5.T/lI"1^.Kq@t/r -Vr"uDeoks4fpiRcE*`^a\0hO?76>b`hAsN/LCoM?5[9)`VZ6<8n$2cPJ/dP25PVD[ -dd5RN)U9YNq*umq=Gk#(!Fd!DgIL:k_Gc,-s/),O5&/k+KQH!qchL:%kM6N=ClVTE -qF=-A>qM>RnbtD"QVZljl\c)t8D/D_C$73-jIG_R-;H3^VY4[D;`+J -[J)lBh0[[4kl(h'pg4QND2?#(jR`,`[r/4sX1rmMPeg]ZG:AIJqNQB$\uAammX9Y% -;$Pslpn*Wc$ZuZ*b88\J*B()f`V3Wb32(aW.S1*9S6e&4.$Wbnj,9k$\NmN\qVb!jU(U -CoLmO%oEUC#9=ET+7]FT,K -;Df\>3?tAF*/F"uXKW7HYo]!'>AP]#:q.2^RRoe"!RC0S_4`+%BdU-&-K=[miM%&> -im1)Gj)Np75q906po!['&4M?udZl$iR3M3m.<;%0VF`-JW@G3U.c_'UBgX/o\DsLl -J7/T9JO9ZNVA6DA/Fq1?1=$t4C_]fr&SI3fBpo`'rZ/hhq;m;['(m_Pq'n/u067(3 -ZILXM#r&[o1*Q40@?M>Q:FIQED..%0diommYSP8>0'rZno//=F3=sFd*s(NSNEm#i -\AgrO&B9b/Jc6Q:7SO&90G@kJZXY[FBf:$Kg%.9a1N[X\h)DZg2tMS[1PIf0M)_i$ -3:i7m1R0tAR5qUE3V/q*1Sm-RWB.Af3qKU<1UT;c\N@.247g9N1W;G,hAi6#*hdt> -Ek8hJp(H;6*s#=LZd9^d)!FV2s@($YTp(^ud).>EB@*oU93;t4-Nf4[J+@TFRd2R.%@+`"NoCY$%3p;Li+a_Va; -Cj+-@[aAr8eSVbDD>)Y#(>WAAXZDb*DYEU=.e`,CM@t&8Q%9!@!AKET`#0?`E;'ra -07_KjTV#'N0uJ=Bdj?'NUFucA2Y1]B=#G%X3HH!!VABth2aqh-W0e`odrnN-"*JVr[pH*G?Km:(`GkZrI(MS/=R`Ob8/qmTG'BL(2mn!Kg<^Db)%2V#8?0["L_P`e!Ui',AW0A#NHmJ;IJ8kQ -(YsNa_0_O9IeW?fTtK"^#(UopBWIjAC,-if)1OUTJG9\kMCWV=rY,uL%en&fbeW9c -cEQBaITS=RQfj!G1P;&OEHi.M3(8L:PqLGZ%_!M7$QKgR?Fs;kKU?2&3+T4K1)b^M -f+)8kW';].5r0dCK=HJbpk=@QM24-K,WKFn30f>93Z`#QO/scnD8cn*4H>esMYOH7 -.O)TE\D0qbgVh6"KFCCRNJtB&N7a2N37,ba[>h]PNTq^Z+km$tTYaT#'EFN_mdM8@ -c&NY>O8/d=9`W=EF:YC5RBRn,:;r0Zc]P`fOkA9K)'tF)_iQl1P5-epm,/fJ5T&H. -j9QCRlP.gqIX,"!%:PL30LLnh1R5LVQ09A#k+JB@reh8"`_B"iJW*`o-qCfmP*pfe -3@C1sJ<@BNR/)l4-mVTdB9$F"*$L?od'+J9Lh[T.ht`P,3OP>h/rf6R'GqboGb["; -n6/,GS-@3*,]/p:fpI'@R(;1HWp-"@l(5HQT)%oK3V;r[jI[nWonQ4#_'fN-#[ka5 -I\^\L=r!V)(S3Z*U$2rWH6o;3.AFC*UA?Rg:$+UseAA?]+7a!:3[(3.8YgZ,U"W>4 -=u3"$=f&]8V>=Vt.W#XX5SaZ"G`q,PWVIkLEiij'Uq0L#qLPSkKrD):VHT+]3gH[j -RAmcgQ6Y1u;AU^`juKN]mdBX/)MtCR\Z:%iW7lg%qSfO^afN(uXSU:Smn1+YXI73g -1rG81_>Y;)4rl6+4M&;.]"tRrorksu,GHTO,nT -Y'aHp4GCk(M9*>gm79""3Lgl-5YK-iJ7/jNTiP=TUcNR%1OOVkI'q-[\]"2;]iE^5L"O(D6+q-g -4dF]KRG#9DC56Dp7[0;0b -kJ?4CC$*-Hk5KA`+qW2K*:bgfJ8&O5C4n7S?0K"4kh]m!^3/[hRH_GVl2?pg9W7"P -p8J[R'cS&1&2GnFOmB`Bli*+7*hhqLam?adm/2`aHDF4[TbdSnBQ#43J>c%4PF&$. -le]PJ54S)e*UOpHn,EFX56\QB]ck4V'8('H^>>-Cb5oFKm!_tZT)%h]_=E(-0>@b` -5;i%^3V0i*I2MHe#)+nToO)qPl?uDNs"Er8=nR8M0OI!:5@sPOoOgpqMq@Ir5"2RJFUgq=nC(f*]*iYMl$@-g:CEh]M,RV>1(I -qu=A-3@XeHao&our;Y/a#A+rMkSM&CWfC]ZSfdi7i#t>$q*2jts7FB>e,R2\+:n5] -%LE;k6/`BB<%]$tLI:&5(mIcE'oPN@&X_'c3?=/Nj:W=EN_(O\8`^SQ<3B@UQV6HS -)3iE\24I>'':IAqD&j!+Ck -ncXRg89,u6,=qAnP9ie@A=Fr?:F9F'Uii -dHrcZBDHX5TB))D3^G7k":?73:dferiRrf8%cq)k:"-Pi3Gh]^$(h -EEq*AcZNMPA^P]VFku)'??`73HX?Hco6jtijnjO7p]^hO@!F"+K4+IBLiaPjq0"up -jIg9uc?;OkF,hEKQn]#GTW1IeGCA5-A9eq`OQ?3a;3PQOAlk=1=b^.Jjm;CKRqDK9 -F.Hrhk'N_5q?DSGBR2"`UM0KnPGMr*.@u$V"A/Se#WSEUXW=18=D/+pl!u7V)4&1/ -CjDVqZ#&/Aca@UOB$n))H[a_Z?5d/9]5IMco=]'hk52o3r!*>?E-s#@_f5N?&pbR2 -q4^i\jE0lY",H[R$#7gahE(lZfXb/l7%m@&P^B"`dr%<=9@WV4='O6urEj'dG$Te< -`:j/MF5;%gkBl*1rWe)7G^_#uj*:PkKR4`[q6XELj[d%6O^TmsXrjG.*deK+aiHDr -7>Rg4G(1lTo6-`rbOk`4=53Fss'Og\6_7*>qgSRcoDO/gkPP9Dp]1A&'E`lI'VVCD -r]S;QBcA;p>6eU9,=+uR.o0OY&!6Df#4QF7UC8c10jYQIX7M"*_@jU39aY;s.tmE# -'gh+e$dGaWL60t*6[3S\@FRAoOS0b`pjiuc'LO99P\2iC&3n+c6@s_IIg=mO4bM*# -*?iKAN6oQ]TaW0#:rY.U#f.;2b*T$*+P4SNfhmS7sOPF -A'sH[UNh9IK$YfpaSQL@:*u7GYR;Yj@MYY:7>cVc-t?4iN7(Ho8Qdbo,h/0EEb8'& -./,-$'VgnUQ;^D$;(?-VX-JjV="g903huJ;*J)QQO.c7OA3!hN5\t6@OImb.I$'W` -H=KP"OYLHAa-fjaAk`#dB'"EhRZgcf9mO!%B%5S)PBLk=q+R1]q"u4#kUZu_bT&pe -]8=jEIL"4E0>_\:$Gn-&9cjZ!LS;'nJme*Ymo[7%PZZK7OVRQ -%tmKq!C]_`'fE(Wb-KSZc!"mOCL!,;[oW@a>\fUGY*ISM=*jCC<=+6l_*gqU&BYe5 -W%tC#2QI=\jpX_HAd^/37S*n4=mVDgZ?I"iIhD(?%rF;fZbUbINrt -k?RnXFDdAmG=GHW$9D'F6\Od6Cf6AF+i51M"VqVM*qNW0cZ--Wlb-B.oWek(HuG;A -^6dFJ?[M?pt#rU7WoNe[K^XU5SsN<4PotgKJ.K\_O++,@4X,A -n)bS,R!0'Lr'?-Y(*gba8CLeJ4tZoHKqfeCX9,Zt*rrZBMEl3G"2U-;"%E7-3+!$Q -gjtOW(-]g*q\%t;Ocj`c9?ES\-Y3.K%F'<_Z,8+HL/H;;6);$1GBBuY5UJS1W$`Fu -Ho?m:W$A7.T#`o.+m.S=S+Dq`cB,plkBufkF4P]aRJ/pYr;`nFnAl"=Wkm^8]6BI' -:BAaS'Fd=Q'rNa#/f'i'bfl7Og9.2bLr@DB5IO?I1\YYSAGY9 -KPV;`0MU7+3KuG(B!k+(%mF+/,SH.P.@LZ(\9&LX7S;!!'"K%e/j -jrOO7dgVp\?omfVd%#+"e.Qd^81;8=s]#Ue&f?JUoli!HbpO;gXb'J<#X'rl-J_OZl#,,9hF@0XM(!dK"naK.B7$S&AuK30@Q&2"'Z -&;7D(5tiXmCa_SK.2R(E6ED\(]IZCn/OJ4t*E*[U1<"jf>(L`a0q^Z0iJW8eV?7ea -_MfkZS2Wfo3('.[_W3dG]KAR*4[\!g30DmonVmVgblKUS-Xp81@>u,^.YMT:6[VBk -PXiWe848im_sC#a]M(`;9gmc30a[M;S3X?,6FdZ1#J)@=\28eihCA_$7#Y29Cfj)i -.E(RV7BB]^]NdnL>q+b,"Y7VI#X?#>FtKaK-28jqlrcc)AAsL=7VlZEb[&5IBh"V- -7]^Ap\fr:YM1k1!K>;>V==$)*1:\)@JGTMe5WVA^A]J%g7q?a+,]#u0Gt4BN8$%&- -\\FhjE%t0UL2\l"!iLS^W@Tdl#7rfpn6uI_3B5Mh7s'MVCktT/M)=:@8?@_?]SoD* -NC_`+UmqCq?nAenI"U)Q\ItqJ83)6a^]N616u7_$N/,N&R7W8gaQ/g^]UVR;SOqV. -&"7&oX>Im875!iMVA%!AS7CiTWAXH!&h7EHI"/4:[J'Vr2.eW!Djd<:b;cG3n1;(D7+=J -T\(GHbeF."^`Mtcc32SAo^U;Q$rGa['_MT*r=Dg8&Q'P]-n=8^70Yo5fn6Wbd#-JW -)`!%f2UKtadB+AZ+3!$O<"5jJ]U!,Pg&O*-E_9@YFV'sfP.T;T] -9iWfE]f]6<4]C0#(creT]>k)lV([KjE8hBi^d>=j$n1TKG.>47)ennO@4``SoCY)j8=)E._I,]\L*NWGhX]jP`7^M'RnjU%G'$:h6`&j/` -5UlnaQWg5o>+N-+Z.)tE\QbW9>HPM(Zh#jH7C7/fd#:m'ePOgkIp7WD>A_7,Q+PgG -`EZ]g>\iCc(fE.pZ30/r:lAP`irT:8A6XK">j]gAqFTIbd9Rd@>qOMc]I&>7-\U_u -"168R8uI4dVFp?("2GI@#U*?Q_qj.p?0'Pl4lBWUiEdPa2+0A^"eu9H0nT=Rg[/E' -9S3B=R`Jka.h1@l^!L*)h[P"nhX0cA$"03V -a*SLP@b1^<)nsIq#5C*.-->(_#%8PVi@)3DVA*H6'k(Da,oi8PkY*D/4f=MB:l?7M -oWcRf[Y6%?@5\a,ld0'X+^uK:@P/lJ1o*gG't&iBZujU(',n)ZDc".j@K%ccou(<' -/RmQh@dYlh9XE!L7p"M5:#h?l"RX9$34RGMik?o%`](=!0B8WbA$.n'\Xq)80LHeS -,(_/cfP)mHkla/cj*!e"L-s*Q4ChbfA8XnJH!F*329Wd!T\(IIX^N]DOatF^!ZH@f -<]K/8;.N(,jG$TE5#c)g<>*7L>u4:MfIV[[:=+]'$K>C:!$=G..V0YtjX+<77TJR\ -@:gQiAh@=rZP5k4:t>_uV9T'lU\`ZX?fgEbAb1W<2Jd!ND._XB%TPO;F4c)H?o1;i -b4FCL'CY(dC$)jI2]cl"IX#LcH"WM1eU9*'!&VSf1=J8MU1eg5^78o_SS?rPC$qU-rh+!9TkYXCC+c8r5,;pgV.s>6 -C2TqaI]."AWG8$)C9FUP^8u(pX_Q^qC@7i##U>$5Y\P#YlQ3BJ0!oC@[;.t6lV=m( -I^a*Q[d0NpCSnXXY.SPa]kb'jCX0Z[hS3k:["T&9ZX>'^^fgf$5mKY7!K6:0V"XkXLf"l/$d;9BAC^/@**n0L/e88OBD/RkjIb&@jf56Q% -D4]L!QJ?>[h!Mi3D=67trnZuPhej4fDB@hU0'$msj_d9DmS;n^IckU/k3^HtCA*?U -Np?&Xm;CeKDXQt2rpXh9nS]K>D_CX"54ibgol"11Df5;fIe[iAq/;l$Dm&tU^AMop -nSXZVDP$jrrr-jHfEEBCK\0Mqi+iEK-ARC=!?G&Ec3=GIjf>u.<;%1Ej%!6^@ZES/TIC7n\3k6Qmi.T -C',k3\)YWXLopso2M'4aK&AG=GUJ/G0(Y\fF0@6WkBFh_S_DfZqSCA2(Y -GAh\/`])U/'et,a3>GK$j5!n"FSA:SG<,KnIt2bSJTr2Xjm'$ke&l&EDZcXJ3YAOu -L%tE:IJB.XNG!if^PmE`NDnDNYQ%<[V2I7ZmQ?:Sf[j;OT9OT(Q!Fo[q/;UFJ!a%r -K0d=h0-b?^@p>t>aF]]%pnsa09t5J0Tm@fTH7[\AB3A>]3oX^=F`QqL<OXa8copH&>_WNCd6k1)#7!6p?il-G$QLAIgVHCqYSs/p^0\U0s[7_bq] -Kb\^I6sjP=fA6W]O1+no\,6Xqqldnb5K%qC4FA!U:'/8m_KK#m>H]R"C(k\:cSQ4I=pKifWA&qg6A-&8kM>8J$7hmn*pA'rI<`(2';@E!B!QJ -JO(Dt-:*13m5g.ILX:tSr!n4KifRoU?8V(2MOGkidb(XXJghhjGV#^&/!N[Q;V?`; -AM0EFB!XM)k&EJPcY$2@jSjj!U/38f3^"7@9;PR$2#:cMSPcCdlI@B'=F_*B;`N3f)(0@j`A"=DV'6Sk4O)8?Z4Qo"pYXBdV3gWI7C,7X4D'/gAQcHA[C*-G2%GbkB4Dn -Dg0t8#7#t#ic04uIRbcNbNQYU;R/')%m]*j2[BU1]K$^YJMe`Eo/)Xe -bu7+04]BhS5s<^hq,/T(jlj'8Rfc3QG`L`.YkLc1d.dseIpefBf\fbRkYB%](i%8L)-SZ-AXf"J>)gK*.@DVNb@_/S12*Q`?W -f0.N'h,disAm,smh0?")OJk\gUH#2t%cJFA$R/K^AG7(=J9#.Xj'c=E&snm@L>eMJ -iJ?IFQ6D+EfWHrd@nO_nNoSdk6'1/1*_DOUffi8tj]PnmQK?eK@@61[RuNBdptfju -(*].lAIJZ,dPutoi:r,&FcHG,*^d_2BdN -GRhPEXu$Ihd',g$6?t`.n!r8/cLY<83R@>'%nY,>)okh*oj(p-f(IjK@G(9ZT5!$Q -h7msbpJ%PUds&M%AlOW+"Iq]G,=nARIm;?QrEipbpANluiVRKI.aFtFpine)]*'q4Z -0OWPH"G?T!O?Nn8(\n1VS.^F8?$AMh2$W""*J;^f&4.4&#iR$TK[?;)6C,^sTk"mQ -YP:I$6j"iL#ClQ6eE61^d*`DL^JKaG]j6%pb=dQ -1D&Rd:63fr5XnH&!G9ZLEpF*%l!JY7dt4"U.hL&+eofh,`l^uY)YW4uP21n.l,CldQc*/3H!:]%Yi9Y"Z -&C@T`_$#RY!d;tJs$g\`)l(nrVbbH(8EhEHUsu!#;OUTXl")HC`bpjbg-C0kfTI,g -N%_B-7XQU])'OO8K*L%Ee/FT.VDTEi<17Arl9lGboff'VoVcN\IBV3#^fVNZ -@-f1nYgsl6,WbC#lcD8QWJjO[!4X'e(c\G"E'F@+W4g'9+s`I,crf$k@kB"#[&e;d -g7))Wm:EE-f"Td@)eEjH9rGGKTtq-k\fBgF7;6.eZd>^o2a^tC(a3]WgNuG)Y%>ee -f.+@99;QauV:E0/?L1se[mb]O$[Jb$`W:_L6eCpNoB<>CR$PtPgV7uO*Tas.VY/fkj)sgW8hra6 -Bd8/*33W/n6-/h+53M*Nn#b9[pf@nk>Mk6V*[Sc"V\S4H?]6Ed*Q'6nOM2n$=Qp*4 -[\YRhi:;)Ont$N;pua5(4D1%&*bERkV`!VlhjbVaf/iAd -F2!pfH=o?*4QiYc*i7B_VcE$Mit$cU2$DP:HIB%p%tIS6"+>5N3cA3h -h7'n:Z?b"_VfhF`hn40)p"o,/DsgNP&Q\07RE2Vn%KPf9#5uId]D%f&?gN35[J'U_h,Af% -keV_ZGrl""Vc50`8t\O_B+rtp?bc+0&*:%0p\"OChu%trp&>!MbPlG>M!#$TV,dog -Idhk-9;$gUJD=dPjSf\i!Y?FT7lp[S.g"'N!t[6j:cAK2o)`kTK'3(4AQYGGK_1uq -*GB[8JA_kQ54q`<"qX!':]O7p3sO&M#7tq]:j3/)W,=Bc!ZX!$"XH? -gB\AH$g,,1OQR+8lOM;1%hS<9Yi?7GdZ^[ZgYhAFN7+Ck\k?J9%02uS&Glq,)\J)h -%oFPa;(!!=.h^5^Qa%VB#Jdu\!skjj"UYnGiTLdp50[JuS4k(0nM_'-=VFY95uB?P -;.gZ,CDP<9(C/J*nTHK6C)PsNV^@el:emqT`4h1%("&3\&U>7'_&"hu)A/__;5Y=p -Wantp)Zmfo;18np-I;;?@Q[iulb\+VGG3;AUL/I39.D.Ek1'+Om+#G6$pNL-]\a -i=@+F#pZ`>8Fd]F;F`!q9-hq],m+#j&j0s1+L49%5,Y+X&VgZEB*bDmddgHe;?nRY -_^.'f-k_.\;MQZ_ALFdD->O`E+J@WZCBWkR!t-TO8O"RXGq.6F.hBHEZF;?I].;=E -/._+s'!cRe9#lJ9*DD!W:IZOCcAr@t/99c#np;oClRpWS0,!k0:2_a_aD8sB!G--Q -cjph@51-$fc-lJD;WfcrCG0`N1(tlf;^X>[!ASWm@]^+QZHaHJj9DC-k\7?4J;ko] -!Aa7B0sK[nZWB#J>;al:2@HcI'/41"K$6O!%D[AT:eo78ncPq=q8Y3JF,)V/MR=+- -3>7T:;jTM.R\_fs2MS8i>CYipH[4]5c&rqF>lRO4%%L^6jC\!1b<'j"RF";#P3-G,co6@H5JoY -%^(p]'M1cYB"?DY7hg#7<-LisHFq[B6tS"*X5XXh:mA3.H0,;91gUZL.7c:f8.OZM -e>Gp'X%LmF9*As$'Pq6VXQ0kL8Fq'hcO:&#Qka/"96AWT/Y>ZmgJ-2T:))_`;B8JR -e7)iWJVK[&:_'Sna9Kn1:=TGAXHcP'$W,@a;&'aA6Q8j$\79911JU./7hmKALkfAC -)IU\q"\KI$)cP8kZrIoAL9]6i/DMO1MH-O!WAQTF]/NN4Q09-GdoZ["LJF-j^l -=6G%!l[Hn'IM^dKb(pnm^^ZIT"uGLblS@3mhI0LWJJ9\bp_SLK)hHW_D0Q_D7GO*j -'RGiO)q6&JTX#*\-%jXLJf$k.=@\%38mOD@Jn?;b8qM$ELA:+j0XF4b@'U=[XaTt_ -KeTKZfQW+=!j8:rJP`XUjO>Ot/`ZU\,q/N?jPLfgQ5MZdUK -3-&DkJuNYpf:=QVV'gP^eC'TL80+OLL? -"?eWa58^5Wq$+Dil&aR/OVngp6V3_=B_o1>1]mFgF0Y> -Fm[?X5oQI?c]>OtgJ.^IFuu]"i?3I&YT!\K>6c2FrN-:7F%m4i;m2,%>%^0C-\)>QCN^d$L@b^K4+WA!_ol1>I)0JZ^YI5>A(C+ -F0jV+F6[MoJ@KnJ5;X0=_Qa/u2qteF,/5MhBt[DrAbGNlS4<"p,4^ -S\VCZS"7#&V7E)1]Gnc$:A)5gN+U0m^4Duh=$+!lh^2.B#eo)=_)q^AWut(9ja[cgN1%%uLuR/TX:0WN(;QlTr'SG*EQ%d) -a;fiR9i]6HGu[UfK7UNA5a0'#J?pp?!9(-j5aW:ZSt`lU`@7A!I(.:h]?AD7b;hNr -XY,Z1RAP@C\tlER+?UR8bR/a8b6`75r9)@qld"*4c9.'`!G2[)*#i;.#i),u"4A/s -g]s7\?!Q@77n_/+)q!I`dL*D0=aUrLS.hTr$t,pY>gbdVFp3GG$R#*Kr:A?M-djj, -*SjZE?!#RI>LhP:efA8O?"_`ZCY%<[f,\qa?$FnkHe7)'fH#Us?&.('MqHjHfc?:0 -?'j68S(ZVig)ZsB?)QDIX4lC5gE!WT?+8RZ]A)/Vg`=;f?,t`kbM:q"h&Xu#?.[o' -gYL]ChAtY5?0C(8le^Idh];=G?,dR$NYFYRhu3N3*XCV0$fF2Zi1:P=h@nk>(ZF3c -iZ9&u4s/cj/)m-RidN]ChDO=72riaVj;p>B?9dM"6fah7jPEhr^/sD;=lisojrRml -?k2)n_YS]^F/Ro.Ipgro,fXW -?S1ib>RB@+)^*K6*eDQE/farO"lW>cJLC&]1\JLAp"s9Q+(t9HC\D+Pp7H9t?ZYt6 -&_d9dp`@TT?[^Z.EVSF8q#>X85F;0fS,$E^q4F;U?_dIiU&*ZEqZ!Vn+1M,S]DFh- -qk(^p^PVl\bP^8Dr?'Me?e>7Kg\p$erZC1h?bQA%li*OFr*T'pht@!kp]&)1Td-LD -:e2QA&I3lfaloVDTTK1)pd2PEgD;sJKDV-^9,Wn-JM(Nk2C -@Bir$Qjdq_[GLG!]jC/og\(RIJ\ba`Qs;Nk&W+J9nX/*T -59Z02AFc-n[U1bWc"?R8h"H4`U![QGRU%hD;5q,UM5kE)]3DJlCj)9W[a/m"ghujj -h9Q%G^u'*US3Ak>Oi?DOq-;ch5F9d\FLiJV[o]iamq%g50P<#5a)Y]Lrm684WO$::u( -0+:3%e2Ik)Yk0dR^ekdJ&k"H*7h\8[=;I.8$nAY:7XJA3V\>ZLkmc9J[C'1/,#2cSS?P -<7a$&Yf*ds92gN,3DQo>mlF5X[.?IWF7f,j:UCQ15u=p7%meT"2&+qBe9)j(;DaXd -8lE%(02,;$eMg6%ZY^LT;&'NX;H.cr79!6o94&qXB!BW28(EiN>"AqPi&ZP28AI%s -6?t^meQ*E;@T@S/LL\uF6a]]m[WS3U=uMYDC0J'RYA@Dsop'Dt2YEDSg_Tk+Ea3fG -`H5@o:![rf[q4GD>?@*QH="(gmsJJ$eb=N"\+:P_?$I+eJmK9H#D5EU5b([i@jnZd -f%?94MObuJA6B7MM,#C^GWn?Fi>ECsOlSMI?[q/t<`bSu\TV>IAiZ/h^uY;LDj'9D -[WS*QH1lTXB:9TcU$+N^ELLT&D[^E2!VJ*n&+!],e -MH7>=3.2\O#Nfjn;2+]eW-"OBLP7-qNagiK@,`J:Y -&q3\Lkt$Wkbbp^=VH$7!=W(d%UQdOJ=\BWH/1%[0QKHb!bIMmOAbq -bf?+"-=Y3-F"h3Jc^GM:Bh^JR18[I`RaYkb9t@GdB%!KDPD4'P3QX9jFPiW&EcfRj -eN7DSn""*WF&+g\4_M.rT*C0tcKY'c-fk<"e-:BFM=X#H2$]fh-'chh']$5VNk&d5tIt,/uB>GR*thB9j6@( -V\J9a;n@57l(pVAFU"=7.Y1F]1'"5[-Da\QR8[N/7>CW75"M<9gkh7C>1Yq;,JXjuRI=1\379`9+<(#Hc. -CC+Bb.p0"+-H0*!)"qc'O0Edo_q@*tAPI$$ZPI/t=h<9tXJM&d(4OY6lU`P,jeoL% -VU[I195*]%XgT"ZfimFVC@/F<[he+G>8q9p/bQHZp@`*&X,1h629/TR#3B(tR;f+l!6BMF^XU`],*Blh#"L'Aj+_X(P_Hd1KAVe2;Z"?EqNb(Q$G$*n%KUW]AC`Y -I;`Eb^6d^Fh^eMPDtX,_pZDQaN!Xs;*X6.7!sN)F)1tt=#Jq;o#iLXjK\Am*_\d"q ->)Y%dYkAgLpid9,S2Z:E2CHHLB+\Uc6]5q*/B-d>']V;iNG7f7`u)E.iuE>MEOJ*Q -)$_<&/9d4rejmck,6R!hR?MZ5iQ0\".:jKuP,o^#b8FqEA/qY7o!VlK)0[06]ZHR_ -1hOs7Il-:-eXLP"B?hC83F4i"STAstc'd\^B0?!^F7\,3)@&@f4S>Bq?@U?@-Uh.> -"eg$]NRA^_`+Zh5V0'%idQ0TaBrsCm@31cb)M_0f]fi7c/tLMGVFYGb=fZ[cqpbJ_ -@2@:S]/-?(>mpeVfb.Na1HORmbF5nFmhKX]k/&Kh]'U\DnYa? -2n&bE*!N?\c1Shr2[/.V[t/M4)8f,Q"QCCCM"$nI_mm/lisXn(n\-Zk8NfVF1u;53NVZ34U7[&1qCrD2a-CF -rq1A.RF?6O8*O;HWH=U!e%3"ilNX8docC*aHKOb`4bp:RcFqg+2eD@k)mT+Ng"T2E -BC#N6\TX8@gUjq=^`Cb2pJ1P@o*9O0*XBLt0(n1MmtU;cDo)4`)0*;ZO7<-=`5qrt -ja=O3nfCTOH(R'S4MRN\(1YYc^Er+B1Xkt[Vq#d*:[(#dXnE?beb_RF=+-.5oY0MD -;dX>/IJ2Rlrs.A-0/`4t2ojF?&*8/QM=Xb4aSHuKP+qHmn&:QM^P^A$1U -&+f2f5KTGpn)=0DT9t(7g&#B*lMWrfoRAe?qnKW7m%;c&Ih25P=kij>"9>7(r]h_, -^bc!RPQ=$K"gCr-^dJFCF&Tkb$,E9V^cVn<]F;T,GX/>?_"-eV`!sNs&@5UP_))gu -*"kNd'gWe\5suO*K+:1P)8U,-_-nY+N#][]h8-`B60oOO9HCta+ff],_DE?$6\IcO --,O*'_E8r-KI6 -6UWlNJU9b#1..Qi1Aj,L`&som3lC#>6h:XPe3LqaB#Ess6o761/4%3R7AW[G6i9GB -3p+@k8]7;]7"e4OHq^XV9#TdcU81INN)7IpCIIem`A=7,e5=1Y".LT\YNKM"CRf0?,cGF7PQJa'P,3]I7qg8[1\*PaokF<(VJ, -afM):N1J**4\>RGan2?pN1nBnV3$A*8d)%Xr2*)N0?SsD9!"qm1o\XIXc50mSFb#>dhod&aKKPmk/+$;fgl0?jr'"BSFe$dfn>d1$bu<>*[O(!mC(;05E- -<>&/=o?ht)[[e8_`>Q&=)c>[j;:QO^"U\,o+h?,FdENfYI3MQg1K$@_dPE.H>q!*$ --W3A_dA89i`$Nj./^etD;U$l%>qT$_0"fF_;`#??'f=AaMUO^HZ^!CH*B:`L2cHNa -;dDC^]XZFm4gNm';tW8TSN^!e!7Um/<&;3e*CR1R6I]R3/"K+.KC[N/6e$1?e;[,+ -SOq>]8udkE<:f7r;cR>]"_o2DDc\0]rmujG=1!leSU@MEGLsNSZAj97 -"-D-rJ_0KbfF9aWqD'J`JLZbMcf"^fZf7U!uP/- -OfD]Jfena9D3A%%)qdZDfaDTK?'qV1QW^/NS;iq>`?Nu`S_:'*=j)fB4_Vj.MXf&"rg@_EXXfbkA5$IodgB01b -*ON69ZeK&t;/N^FKg+7.ZJ2/(>E-7kot&n#]g9WM>P1G>S\X"8YhT,nV-Uf?'uV]+ -_d$bHgeGiE*6$]MaeZ&X>d_W_RJb -?0JE0kMAA&hNdE.Fm@i6kfT#^a_S+j7pYY'1?d8V@"o[?oEF8tPWr<%VmJ&f@"(5QM?q(CO6im'4:jtL9<0]OK7j#/W%7Pa"!1ZMLoj(:71?9$tg3Fde(j0h"*?6j%34lbZg -j7Y^u#!h5b60'@Zj>KBd7RZ<<7HA&MjE=&SL.LBk8`Za@jL._B`_>IE:#tG3jRuC2 -##OCs;<30eAMuX35!3COlZT`& -L:1lZV/$RPlaFFk`k:Wg^$Fgplh8*[#/KR@_2EKIl]/I@2T4rO`U#e.lrM/CB#j8( -aR!NUA/;B+2BH\aqs;>JV]O+Ama.IVcYXh?m0;%b2U^tjBC/19@J,WI?J(M1f'T9W -m?ZM'hV.@?h7rsED=XoJIbnrOJ*m6pUrM5.7&4]Yjck5TmM=uQ53?aG2"#PPaYrDO -_8,I[mI#WMm`t9qQKrGVn[MWhD_Wn`(A-EHoC$-!moK!siB_C"q2jb5n$I@YVYm)f -qsT:=n!rcNbWa6)el`,4].*nkUXVs!I;D+>K32Ej;G2T.I]`/+VW7En;d^"jHQ+ -0pur5o/%8)-T$b-1\2,+-.b"qKREB03V*20oLZ'-Ua9@6hD).FB:q/O9Q`j!D]`!M:KI.PF*37APa>PGFPM#J*d,M0_WP4u!B,)p>i#EfnZQBp732(\ -AWo&`p*LW"B,>`8BsW"sp9?=FVe=;YC[hXGp@ThWkAZaE;0OC)/!k6pf5LC@rc^kU -Yubu?<-3>.#Bu5R?/Kr%_$P=hFiJWQn2Gdj!rI39JWOf#pZ7Wa-N/0JKuB=2pi-C\ -B7nr_L[Ujkpp/9AVi6U"MtiN-Gh2K]kE,F&O80pFGo)Ll2j3V/PPJcbq,`pQ[sNBj -RA/l3DP*6jV?m",SW'J:H1I)Ck2lF=SCb6CqD<,9Q_D=#U[A)XH;Be%B;gbZVg9Ve -qNff\Vl[H7X8;!4H@MskqB^IUeb[n%<>Vq;5ed+K[AC(6m3f>h1_BP.\ZcUKqmX*4 -Dn9]`\9m=Pqq&TjpD"\iQ[GAq@DS6qs8bi$%>D,ftZYEkN@:fao7#!I[BB7J*Qjem!bIMrmh1# -kO=^+n+jH_IdQ*D-2`6OoollWq1&*f4B?rSr;VQKP)oG70Dg6YjT!3pJ'`]pM5k5' -&dJSn6/bXRA0r6'LI>S`3.+aQ(5bQ@;4-ER4WBI&A.gm:Q:!$_8gMiQA?K2fQqM$H -q39HE2jqs'e#C:RI5l`'BN.#=(6(h[;JB+AAN$)TW)RM33i,lZ=0,G<&@J91n -ID=]ZG[*E[(QGoUEco%.B/c+$k&^B)*iDB-e*H[R*PU-LZet1q45M&,O3Q[Jnble/ -B=H^cpj@Nt5H!-#p\]Ji?bbahb4Ipf$dSi=&0),\_%7k,"2SqM)$e")N#N)?&>UTZ -Tl99T%E":o4V,IC$q1cHOXs3?`=!Y;'uLTq>o#m!Cge4$;647H`f\2V*642sI2tAr -9SFY2Ot;S;aV%:4--;$h)EUmN8lTeP8rmDcI:#-4jNZcofl69r<5I5NdTqUd1f:i7F@?:*CnNlN86`s -PT;8@daZMr:"&\$2,@/8rC'PXep8t0,>*ck0Cr8/B]l2[B%E3>BQS"D< -gDi]F`N^oMu\ZTM5AspAU -SCdRcI@o^A%Y^V?NW*pmkB]UCV.lAnSYbTH`f$h]R]`cnlPe"cVWo)f\Zb9[%_],` -)]fBhD&Z7#[I'H#o[9nJg'j`Gn"I -*A_Y^O!Vp=S?FL;EP0U8c11_p29th6rLM.(SM*^doc6bnd<",^6e?IOIq@:+O`+7S -pDqS&h=Y'WB@qGLs+T?TSe$^tpRY0GjnYKdSG.:-O,`E!I]'%-q],X.mJELD^$j`? -^W#MdT$PUMr817Bn9ppIh=pmjMM(PMT0M`9IfHVArR1_4r;Y[X!J!^\rBOHU!T2rD -JC#VI+_V)_i.M\o:ed1i\1IcT`!q>Q?4B3L-NtXr+bW[P&f,.@$/jSfK@$V46F^8f -Te%pQ:sKtH<7_Ld`%6[?^)b+YGjM-26&8AJ,!P4=&`N(JL[cQ7`22E)@Y@U9;,/S[ -fU3K6FBOI*DCe5qD&$O`@>n'CX$t[c(8EuuNDZQ2')9Qfj+ME4;9b'>M!Z,@]PW]A -mQEi!ko\shJWNM?50''#+!`t&OV06583%\8jFiYFdOIj[R4TX/]TnIS8kqt24X\Z7 -RZp]^;Fu^>.,f9@Pu=bc9%MfJ-%r+\17hWAgjfLH[l9NkfUPm#E_]Te2s3TbSMPk@ -:9tZqVhFT3;X/I$WU2c[]_.m'P'PC,rBKKHoq,1nI*c$j5q"`YTJS9U:tVU2."ql" -1a\)PMB,.L`>PF>g5452,tI1$+IG!'P#>IWqrm\rV,X=X;CO7jl%Ljh<6V/dg/gqH -]fDt-1fXI8R%F6EX+!>3+LTKmBk%mM]/Ql!LL!J$;Vl -^0"SK@FT.EYuV@RfGbfh/4G],<_`#7gFZnd`K.>SK$%6N4_N1`Qa9_Qd99a4F"IQp -[8sEFg1s8omA\6'IC$?tlIfCRI!=ts_73PUQhbcU -DGANh(Ja'n/"^tP`S"Ji9'Y5*\Td5Mg:ULIneKoqGAfq5]iTsZhV6k5e4o8B2gY=- -47%,DL&&Jbk4rB=l[Q+N9##T]!anuaJ1sFl_,po@?u-j9mD]IKQqIco[gRjC`YlZa -dgG%r/Viih+bghP&n5&;LN,d+`Ai^Z@Vf>.nU\-fGg@+7>Zhj4N]G-Zq\islH]R^' -UW7Wj,%OU#O>6Gpa]TssjD:BNkQXT#=YD5bb;keB``^JR2_*qEWL*1a/^&F#1/)Mt -Qub`0bt.jik1ndTZX.@i)94cY>i2+D`0&?UbqL6,QC6/^Db9*90;nIG-.?%A;JJ?bW-(S/[9B%pC<]DP:Hkf0 ->0]_*%:?71G.B]gdp?hDiNBT.[b)G#?Yj#,o(F-Afin\nA1`kKp4Y?V4#^a<46CE>AEQ]WOL?jg>#nmL2G2O\$n6-gmbKj2P&=.2hpMP<^V'!?0sLnIe2DXk.kn` -rP.XCqqt]EJoAnD^c4gjPPcAOn3.^e3*-^O9EU(>mOc>$_49M4DiR=//&lhK+/'Zu -P&aR9aLMg1j;b;CEc,1+iNFZkS?&&P*b!=h_Q)b2e"1VEHpN&(60M-0Sb)i-d:qc2 -l!5l#FH2F2qDSQASPQ7KcCNI2^KG:L=0?\qPLd=c;!\cMYBF6rl2)Q3m9PK8p3tiP -d/RhIS]eSshVm;f_gLmccaEMVYMOX3JNc6o^A)%1NVjTLnP'P2G^g[mdiXM=?;<"q -D^"/R[BT4nDpC(E0B`8ZR!TludX"lfk^<]1oef[sHJ_u;rElMs?E0NAs)%/o5I:&I -e)!r?EUWl.YP3MWh0`E5n:!mL.c1orr,7u:r`@MD8h9*&n#c1nQdbh=Cngl8Z1l!9 -DYp&eng*\Ap\qqj:`l%tI%SscIu!6KJ%,9(<)NPmQh^I8g\uNVo_pNCs">SrYR(<) -q#E)\!"]i20F\&d(BH2n!\bbRO<"D,/9;@=!cTptB0cUg4RMVq!`1l[/+E`29a'L% -"HZ+WE($#];$H6L*RJ@%E+oN\D$KKL#;C9*E-V\mI0]7m#V^]A+H@-iM$VId#k4)c -0UW4YSI'8-$*^*1E2num<(,9A9 -EG62nD&2Y](GU%KEHrA*I2DF)(bp^]EJYO;N>V2J))7BoEEl/1*:_Q!dFfNpgDt:i*\cUlOm*Ub@34R] -*jPAQ1$'GGr?&:";q-8K!VEaL/u3?thL-SffZdUacR -Bd^3;-h;s=dYTA-M^WV*.5I#7EfVZTPpt.L&b:,qE-;3oXWJ1[C=9(3E,R2r]dbeR -.MB]No#E::aXm#-/MbL$EmZJ%eLe)'/!B!HEp+Oli@XWj/^j;Eo(Odmq(M=;0J`MZ -ErdtY"Xqgb0f'OlEsj_/%l*Yb1,Bq+;^!o;/MaXe16XRNnf]`.V^jPgV!q@fZUX6J -4U%$B2%rr*kiXfZ8MtQo-Z_X5DEBa4@5d^`AB<^fdrRI-b`7m82\Ug&V7SXLN8[]j -3AZ?kP>=0%SN0W?XclsLF/(e&T`&qm4"^Opo;Og5,<<*D4>XS\ce/:Pb -Kg4'0gf+eNF;it7$UN8k6PM"gF7DUS4[X'X68V*a1d=?,9gLTh7'or^$DTmd=%)[` -7NkJoFD0=V?UjZuiY5<]1jMP)Hrr3e8$m8+oB/TMN7X;L8Ml+3PN>?"SOleQ34,/I -'WFZ>7nE9VePrSA1q;M/Vb5IJ9J:0P1qQEqbtOpa9/P/J'ZEc\g7([2:F!bOFSO:kktb:Jbk0pkoa+GD92="<;)J_Co_VLf"]9Cc:s&H.FX9pC']i=, -;UmX&W3oLQ4O4a$;Y[j -20DtXB\AY\==gp_eVRA+&Q\Ra=7qHsQ$HM4P?DYF=B20>'qne'XN_KB=k0o`Y1ls! -Y?R:-bZ1QGCkl7Q[p/3c>;aZ2FjW-=j^".t?7W-_Q0?7GiEl32@9(ib2>LQT=]r0& -?e,@SFmEG:?XPc(?_u.WFpDGV*T9Q5O15.:^W?>Ll#K -G"4`^04aE(A/7aJ77h!t=(V(t_H%mn2IU0Wa^l6,^p\)l[Wq[+G@m.lB5F&JJTg-o2YD"NV.c2'EAn2, -QMY[&RrHsoEX._>pEajh+sXPbEn;+K6:#VC4LfSqEq_J:2[=F`7s*lTF#QO0f%kEA ->djB0Fa%A3[nCmg@s&PIE>NV=GA_hQ?[(m=G1VFlPaQQYLNg4fMt_@>(Q!F7"aCiV -ZhKl6G4g$fSU!/tBQ`3Z(TDa5SU*61Ynt$"G-?5Daa;XLe(;'W(YO2tYC&:eYkQt% -2qh?bc$l#BI]s]8GO^0lokl_KJ1OKGfCNR?msk*=JLH"j=:p+o$;4J)Jh#Z/p`4oR -V1A=iK/>lFQo0K*4@#8[KIY#p\4Kg_0nS%TKBK4dQrA[J<&E5rL+9B\fP+=[:PJRZ -LBA]RR!"1oEoU85Lan[FpfiQLRtg]pLY.R(GLq[2SOQ_8MCO+4pm$`@8r`VFM`#1u_MjG>tVA9!)g2j0mJ#7OBOkP5]0jF""ZI@oYppj"qZ!gP0<1K\Z8DTc -],e2f0sOq:LmnjZC!^g5IXjT\*nUN)i_DIV7KM7[!0]W\TPqq-E\e%P#U]%bcL)md$.l+ZgP]tHSAEI_S'%8Kc8V6:gtg3K)9mQuEa7qVG=g("mE_;4`#Sg&;gH\P -$ugUqd6+VYh%e:Rjj'D'dQG_"r?uU?)q*m3bZu7<$^]4G3Rd`id_/%c]g:+i1!uO< -e?jA?>uT:b7FZ`nh;)Ae9l8?bC"1]ae(nZgG(J4-Httl`fJBAFh0IXXn(-!HeWtqBH=eA[=R%; -fA5V,g>1`DM=o[flt,#9h^QJ!h9FfAgX7,@i%Fc\rWm(@p#&j!hjtG=H3rAu&)lRm -i4^IH*[0L2!T@?8j!.X`*];s.IH#]@@U;.WIH0*(8`S=ZhHg$>p;,fR>iM>Vju0p+ -*`;&o:ZYnuk:[e9rchea=m!m4k+7(ce[?*WfQEdVGOJl>nD;@T?PDmFVso0Y=J$?!C)--.)tNk4nXh9% -#Z^F[4SW8(oJK)'h`&n'rUaGi>[K_gAPr+b323$:ocIbl4rs?H>ugo-pE`Q-s)#,- -&bho)lMia9^OqhZFnk&=p`G_CIq/8gSA64Bq>Z:`?]k2](\rQVW?6WdJ%5JbU\c&N -qVT4g+2RiWs8.;Pr4'T:^XN,0=8[R+l+c'Q[%7$-e]0nhrdXCks5X-TdNAm+C75;/ -J\bb+GZ5S!$&6=Ud27O3*u0W$U60]MAiU]h7cX$l"HGnsONHRHM);)4/!il*'%r5X -AMooNk&Zrtl>\nX:M:Ea'`NkRU/C.(ROp.S9Vk[&'`+(UWDT\FlI.-ZDRj&V=6p\A -'opCIZWZZ2RoQWED7mh]3QhXu<2?gi4Yp'UnR_dRO%9NE5OM8j&q -fc4m*+dC)[Et\AAD`OB7BCm)_(6:nPbA$V&SA)1(XOV*0)Z>u6BsHCYp=l.Xmr,nq -Dmu+9-P)'Qj)Ol7Sl[S5c0'0E*?LPCWR^n@ -m.G^S*rhS=l1+WJrnj?gn*g4G]W_M@!BH4ir;Jsc6k9Gdct!do_/OK@#XWKX.g\Ph -U722$E9'(,_XRab&OR-U6P@=W1fG)WEBIG?7F>XPU-m>(CE#b5`,cqhETDHg8+He8 -+\6W!M^(dY6tI4WEJ0f-8^_.A.7u@kTdr`U]W2F^''-Y8b>SPM0hW0*__TGW1t+9U -F$/272\PcC3AY_uff.4J[.??)F2[l;:UC9)5s;QF$U[b_72&*eFCcC];=oPe8Q'I@ -rC]sD]a%50FO`HHe+D`f:J$eI9-;Y`771'SF_+KPeTH"E=B9Qj.oTL=ojq=YB]tW>$AB[X)Qkg -"k.HsG=C2-?+5OEa]u4[Z@8!3bFL*BR0$:VT(J\PW/mla#s554?1'46AuBiHrTI^$o7p#K(Mn77FuM]I+Z9 -n_?n^a`9M>\&Iq9a"tt]I-3T;/E_4Ed<'da9@J"]7oRr\I:ld9Fo@)#:l+3DBA3'M -[r^>KID:-bGMVG3iHRO6J`D!(5E"TJITN$"q>P$#kB]=iVsAY8a/eS'rn"dMHiDp? -msJIIa7F\n8'1FOs'O7KIK+NOpATPsl1oeCa7&tUhrjV1^UO.A?j$R]n.l$iBF+^s -)mOsU2?uMB+Tu2;'7uLJ[[56&:('@MD1cOVT00GV]jS<',quqBj.jSJ5Od;i1$F -.7IpL(#m_GMihI%7C^)K@g$;#:q@oAGgRF8$_NE@[Pp\Ni>c#0C6"G-+N?si*b3-8 -N3VY3a2n3%A-@OGneOM^BaGsDZQtan[qF -,kRdpP)`I5.8_O*9W*Bg>$">l@4YuRV3Os0<_I^>/nME$QP/^n9A+kL-5=4^Es?)< -=_BL#O8t]2b%FEDTepAGdo#]dCI^sW0rEI>S!.H%c+1MIB*@7ao9OAkBuqj%]^),P -[Wad3cTGi6o:6QGGu&/=4m1>jT9J8a:Un)"kS42mP:D)ZH2BoUr<]0^/r*9'+[]q& -&#)pEK$efd2(6uoUQfq_;>NO_>_ODCFHO_o>#@lU;5U-=8s<0L;bSWG0rC2\RhD/n -V(%ZkVR5o`e(T@KgdO6%Pnp,oHBD*?;MqC&2PARbKiBOe:JV]W6rc:C<@Z6tWtff[ -.@RA;.fEkXQ'/=O>1$L%X^S>s[^T<6iEU/\TWM4_]2kBh?#.E+En/DZ=/u@.C__?% -Fp>eu9)P#l22e]I2T+1j+(L+LM6`FJb?90HAn,tFZ^+50=W9Y>CIO[kp3tCmHVJ6l -%B=7\OW`A9=);`-ZaH+LP?R9lDJdq9\!H]"gIl*pXp)_Q^"S#9F:&KWqTt -_jG'"@=1@sE>Be;Pq*AR]MF<&7Oto,Pj;eK@>ck#.`RHH(EJHINcC@H`jkUZ@siih -EY_$`NO'X8gl[`i<^(!g'^'#>PERb^;p#Oo-QNVrPd8S6b?8t*AUM=]Eu&90M^pCA -I(bt(k%dQaPiHAWiL4hRCsI=82]R5*SMSiBc^E;?B70fRF;BMULt=iR]`"Q];lhi_ -Yr3N-\a)CuXL6Wd_`HOZC]/ggF=t,URdX^%H`sZ3*`:&T=!cl(\!M.7@+T[2.HFacRTI3fc+0H.k?R[7Ec-YIZ`') -;[2I!&"rRoSDQ?Q;WJ=I+\Vf?Am0V5>UQD-^XLt\(>s(TB\QuZh@U1c[/Gfm=!4=OTD*fliU;6qoDYB6ao7@kqu=i5r85Qn5PtIG$Z.kurP0ra -5V[XNZir^"#!+jL5^W[LMQOY[#XB(15cMUbA.1`9%R@Ac^haQJ$kYFG%D_TK_)Yph -U^k4/'1#gn^sj/dC`,NJm6M^26+e0pZl25h*Pn5%5(jtD$m.eT<'c0]651KX8Vk4, --:2Mr1V>##4=NUT.ma@f_F,qA]:6Yo.RM?3_U6=hHndu.1,3l(_`TS>8Nagg0LJer -6Ym(CZo>mm2aaV/_^mo;bWRVd3^\Qa_t^j]A3`NS4%'qf_W4&%9L;-NfL+Fa7!qNW -e3cW'8]5$L`"Yg3bY(@XZc#7,7+=iJ$*H[T;FN-82rme(9M`W2]gTe>79!,QH""Y` -=N.@D7CfeE4C(D2?7B\p7?h/sHricG>XfuH#rGgT/7h:5AjWS*`dDGhME&U4C.;Fo -7N?25b\"lB>t.M)`r'Sl!ij8)E^q[%**dI'9Q!9uCe#1`7oX\pA8atkH:M4/a#n`> -b^CBDHH1to8*GlOCk,$_J\iCPa0PE6I%Q9Ou+$m(c;Rb"RJgbXBZKbfpVca3YoTfhFT`9"^lm]\:Vh%o%0':&Np.7,?-.h+YK.c6V7A -9);7=j\@Ah`,+AWN9O&YkKZK]3qV-$FR.5R/^;N-:AjL\r9;NInk;I@:=Snu,id3E -nBYY*5U?'L4S^OMo$=E79)SM2FSr9Em*FJ^che2IAH5NurB;4ucohM',m$nK!NOZK -ctrj2N:fu##uH<[37S/Ybmd3\$de8K.8:&oXV"D$G0gs9d/=WoPmu,H(.OQ%;10-J -F+)Gi'[`Vq;)K:iN?(BG(=DLk73rr$XW=U)&CM"4;B0]'V'FD'-8D&5dXZN;Ce[8mf%:l`??Iit+3H\e3NF`QI@FgubQe:Y=3Y=NPpAooN;3 -OtWqqffbQU/Wn]aP,hl9fkm*Z@B,A;1%Am=bXtUlsgAPSdNNCj)YXqj">:m3V -9s35V[P%fkgE!d;4gWlh\m(+dfS-okI3mWb^0BmZ>LgCA%(P!p^g"4a8bK`$4i(AP -%9rMG>^FTKA]?iJs>a<9429T7LbZ-79>lE#"NR$=mb$1F^>p[s_D6$r2dFjf3 -h0mp12:c'(e?j(4?*2gdC7JO'h-J9U?&dcK$BX*2gg2RI>i"CG9Z::Cj'D??]TqG^ -NThdTj^*A]?:F$`XN01/m9\$C?CgRm$9-i/lX''Z>rD1[9Qj_'o3YM!?PW?CM9TCM -qHdIo?S21_W.nX?p>>98LgBga%KRN&rEq1^?Ub!&2)!kKs57api#W/3M4rj.$;*2Z -@!2\12?mQl$s29l@/^]Tedc+.P[M3<@-i@#h@/@3g0kI-@tu,C -AfXt((h)hS(TnY7]U@`]*T@gM@Ep"T/PtF*-=U\&@SS=@efnR`,t3h>@Q#^iSgS"( -/euAU@f0J?Sh+@S`T"T_j#u_fmPSKW7cPgS7+O)&7PWSV1Lkko;&2'"c92k"4(IWl -hnD:.5dJ5ic`4j,QW?4;MG06Y),(A6qr?bcp0:9$SbSAF<#j --;%hZ;H^_.ANj'*VG:\S04b&_AUOsJ*`_\5Tu0RdGB:*!nh@HLLiAe%pTFZsD$C1aGlAsR,mc=U\.B#NP>B'sV72JZqHE_PV5 -B0GG?hJD?`PihseB4I$9/pV)sdV";Yi3ltT?@1SLGA#KV:$-b8%Y5:jIHRulB3'Xu -9,;1.KkL<@BHDtCMeVB-MHi&mBWd*!NeV5eNbCV5B`=)I2NI"FHYC-KBg(kE-B`(4 -Hta(WBb$EmMl:>JR;$8OBi^A\c!opdSnS+ll2-raVO_H(eEGbYC*a2Nm\OQnUhUqC -f^>X%5*kILWG8N#C0muSSuCr/gLng7C:5h\`is5"=R+2r+[;.#CC,WNd -MONip\n4.:CN_Jup8;]GX6UP5lhol1Y/+\X^h`(qldisi:4R-R^$I9:llO5Yf#MTC -+_t]4Cf[P%7`k#:S*Z0]A5:D:%Ya9#bO#u8l\_G2I0gDs`kPmWiql[chU=,OS=m@J8sR -b11BQj)1_CDC4ago\T#MnmN$tml^Ga#4ugIp$W+QmoqpC0)8n@phtN/DW^Y2[W_+_ -r9s&>n"0SHGTq)K!cTdpE'FJE:Bb]E#&nJcE.8.4NsTcU2LqGYn?35h[g[65%<1bE -nG`u<#7keb&of!,E>K=/0,3q@'le.-EIS_nNu)f&(ic/eEN^@%V]Bcl*V%GsEW7,$ -%j(9`+EAhQE\A\Y5:(>/-?;m/nme01>Fs7:M"]V -!UpV4.q`I;O(i_Y@s/r0G->_*5ATuED"cb)G40BnkAb\FEVBuaG<^.m:NH2:-?c#* -GCOj]O*PkDFa$?!GHZC<^O:=8IWs+epYUIF%tJmHJ+t[JGW14q#C6)OL3RWlG^fhj -5DaV\MKhXLGb9ohYDd_`NHjoNq#?A"#EO-@/,4m`GC!j$#AO/[GtWd:kL -HG?P-c`MNNY'TQ?HN13r&$^I'Z?k]"HTIpK0=?.6[X2r%H[iPPO1BV0\pLWmHb[4? -cb4\_^3f=`HiLm/&&EW8_L+#SHp>Ps:W7]g`dD]nqa\_TO3)dAb'^D9I)!mQccpjp -c@#*,I/hQA&(,eIdX^GJ%to2ci&@NrdXD:#Qt&0"+igH -d!.r*'aoa`@F4e&7O8_*7:OYh`+CkGN^mU,q#lF@,EbW/dWn6X<@aA.A^^C-`aprp -9kMk"`9)2(Skj"Jq?7(W6_[Fke9XP1PtRuQC"3!57\s%`M&9fR-.9'oU(AES12D -7jXAAATHIO`b./uc=_4OrZ\gjVa@Q-8<2H//CS8#=]"FaDkma(Mg7mWX$6rs+=uj77JChLA%nea)pU -IGY!Za5uphI=C('a63-mrdTFDquHf5:`KcC^sG1U"Mmo>)$[q(Hm&d4:n/sA_U,qM -%)Yos3=`sRr':n4;&i.?`6g\E'ZEpS=Vf!(Hsml3;4M>=`mMG=*61q3Gok#Rr.-!3 -;B1N;aO325,frqhR3p&(I%_t2;Oj^9b0mr-/B^rH\Lu(Rr4t)2;]Nn7bgS]%1sJs( -ff%+(I,R'1;k3)5cI9Gr4O6s]q**-Rr;f11<#l93d*t2j7+"t>)+N$'I3D/0<1PI1 -daYrb9[cts3DS&QrBX90h)2@,&INaO, -=Ipt!in1t"N8n$s3KE.Pr]uY,=WU.tjOl^oPiZ%S=dJ1&IUSW+=e9>rk1RIgSEF&3 -H(O3Prdga+=rrNpkh84_V!2&hRAT6&I\E_*>+V^nlIrtWXQs'H\ZY8PrkYi*>9:nl -m+X_O[-_((fs^;&Ic7g)>Ft)jmb>JG]^K(]q7c=PrrKq)>TX9hnD$5?`:7)>)924% -Ij)o(>b$(>ouYdo\D`/eFd*S=k<9%Ipq"'?(Yibp>*K' -h"P+3H/A;Os+0,'?6>$`pte5tjS<+hRHF>%J"c*&?D"4^qVJulm/(,H\aK@Os2"4& -?Q[D\r80`do_i-(g%PC%J)U2%?_?TZrnkK\r;U-]q>UE?rW#2#"T[I+"b=r@"@/=h -!oRSuJ^?Rd5o:mNi1q*>cs@,HQo,*+j;im"ILng_70qit-%sX:'LJ0e$K5MIL![ON -6PsACiM8>cd,#a0Qurntj?8:FrZFTGKb35h7>T>4,Xe#b'&mFrM:"L872Vj8ihTS3 -d9\@mR'd^hjB[\kIP=5.`>IV\AW5$.1e*k_)WP@FNR>I"7i:>-j.pgXdG?uUR.VN\ -jF**:r]j!l"X)kOKoj_(6qE^\,339oOjZEa8Jrg"jJ8'(dU#U=R5H>PjIML_IS`WS -74@7CV3KE"<(`QY.ck3CQ.!BK9,V:ljeT;Mdb\5%R<:.DjLpo.ra8D;KeVX7`L,*q -A5&DV1?N,lRF=?59c9cak+pOrdp?ibRC+s8jP?q]5lD7L\eR#=WR^H2]j^"q; -I]uik`E;FPAZXFRZrWXG>3fa:Xjt.q_rkMVT"^p[C -Ks9,L`)rKD@dIZcZ.;+[=W8Ytm%ouQem?R'Rl+gEjdia/IaD7;7;2'7V6ngFe68>A -C@,T7[FW(E>8q-imA75!fdRrrW9jh8.Srnq$#KlHH+`OOM@jBS1>EpdM`\^s%/ ->oTV^m\SIFf3[fLS$dG-jk[Q#IdgY_`H^htjh03:oNn$;HLGG4^":!n?Q8*Sn"o]k -fA?F4S+V7!jo)sGrr?FH"b?(h"i/b4"CR`7K(*@]_:UsX@2pSHn>6r;fO#%qS2H&j -jrM@lIh6'/7>UI\-,eH.'OmS4MXb:1`RqpB@iT'=nYS1`f\[ZYS99k^jupc;rubhl -KokjP7EF.(,\3F1P4E3Zak8m,AK7P2ntoF0fj?:AS@+[Rk$?0`IkYIS`L-6DA^&i" -1hN9.Re(-.c.TikB,p$'o;6ZUg#"o)SFrKFk'bS/s$16<"ebK7L!\Nq6ti,+U@`&W -dFpfUBcSLqoVRo%g0[NfSMd;:k+0uTIo'l#7B#l+V:=4k<,.t(WqBu+e_7c?CE6uf -oqo.Jg>?.NSTV+.k.TC#s'TX`Ks:7t`RroeA8Ig%ZM%nTg"S`)D&oI[p86BogL"c6 -S[Gp"k2"eHIrK9G`OPXhjkSU_FDdZ"](]h(h:o\hD]RrPpSRW?gY[BsSb9_kk5F2l -s+#&0"i0m\"lS/XKQ*Lt_Y@aQiS6YRE?6FEpnnkdgg?"[Si+O_k8iUN"mG5Oe -G95l$qknT)h;>khT(Ut;kC)gTs1ik$"lT;+L%*q@`-@mhir!GKn_QLOGon?nr25hN -hI"KPT/Gd/kFM5$J'`K`7Hj[tV=`W:e9[`elMY@tp"mI9HQQhcrMR'shV[+8T69T# -kIpWHs588HL%,'h`VA=4jF!Sbo)<:Hq;4F#I35_uT=+ClkM?$mJ+.n/ -`VBH\jo"#.oR -grestore -showpage -%%PageTrailer -pdfEndPage -%%Trailer -end -%%DocumentSuppliedResources: -%%EOF diff --git a/packages/python/plotly/plotly/tests/test_orca/images/linux/latexfig.eps b/packages/python/plotly/plotly/tests/test_orca/images/linux/latexfig.eps deleted file mode 100644 index 2c71047cafd..00000000000 --- a/packages/python/plotly/plotly/tests/test_orca/images/linux/latexfig.eps +++ /dev/null @@ -1,1275 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%Produced by poppler pdftops version: 22.02.0 (http://poppler.freedesktop.org) -%%Creator: Chromium -%%LanguageLevel: 2 -%%DocumentSuppliedResources: (atend) -%%BoundingBox: 0 0 529 379 -%%HiResBoundingBox: 0 0 529 379 -%%DocumentSuppliedResources: (atend) -%%EndComments -%%BeginProlog -%%BeginResource: procset xpdf 3.00 0 -%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC -/xpdf 75 dict def xpdf begin -% PDF special state -/pdfDictSize 15 def -/pdfSetup { - /setpagedevice where { - pop 2 dict begin - /Policies 1 dict dup begin /PageSize 6 def end def - { /Duplex true def } if - currentdict end setpagedevice - } { - pop - } ifelse -} def -/pdfSetupPaper { - % Change paper size, but only if different from previous paper size otherwise - % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size - % so we use the same when checking if the size changes. - /setpagedevice where { - pop currentpagedevice - /PageSize known { - 2 copy - currentpagedevice /PageSize get aload pop - exch 4 1 roll - sub abs 5 gt - 3 1 roll - sub abs 5 gt - or - } { - true - } ifelse - { - 2 array astore - 2 dict begin - /PageSize exch def - /ImagingBBox null def - currentdict end - setpagedevice - } { - pop pop - } ifelse - } { - pop - } ifelse -} def -/pdfStartPage { - pdfDictSize dict begin - /pdfFillCS [] def - /pdfFillXform {} def - /pdfStrokeCS [] def - /pdfStrokeXform {} def - /pdfFill [0] def - /pdfStroke [0] def - /pdfFillOP false def - /pdfStrokeOP false def - /pdfLastFill false def - /pdfLastStroke false def - /pdfTextMat [1 0 0 1 0 0] def - /pdfFontSize 0 def - /pdfCharSpacing 0 def - /pdfTextRender 0 def - /pdfPatternCS false def - /pdfTextRise 0 def - /pdfWordSpacing 0 def - /pdfHorizScaling 1 def - /pdfTextClipPath [] def -} def -/pdfEndPage { end } def -% PDF color state -/cs { /pdfFillXform exch def dup /pdfFillCS exch def - setcolorspace } def -/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def - setcolorspace } def -/sc { pdfLastFill not { pdfFillCS setcolorspace } if - dup /pdfFill exch def aload pop pdfFillXform setcolor - /pdfLastFill true def /pdfLastStroke false def } def -/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if - dup /pdfStroke exch def aload pop pdfStrokeXform setcolor - /pdfLastStroke true def /pdfLastFill false def } def -/op { /pdfFillOP exch def - pdfLastFill { pdfFillOP setoverprint } if } def -/OP { /pdfStrokeOP exch def - pdfLastStroke { pdfStrokeOP setoverprint } if } def -/fCol { - pdfLastFill not { - pdfFillCS setcolorspace - pdfFill aload pop pdfFillXform setcolor - pdfFillOP setoverprint - /pdfLastFill true def /pdfLastStroke false def - } if -} def -/sCol { - pdfLastStroke not { - pdfStrokeCS setcolorspace - pdfStroke aload pop pdfStrokeXform setcolor - pdfStrokeOP setoverprint - /pdfLastStroke true def /pdfLastFill false def - } if -} def -% build a font -/pdfMakeFont { - 4 3 roll findfont - 4 2 roll matrix scale makefont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /Encoding exch def - currentdict - end - definefont pop -} def -/pdfMakeFont16 { - exch findfont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /WMode exch def - currentdict - end - definefont pop -} def -% graphics state operators -/q { gsave pdfDictSize dict begin } def -/Q { - end grestore - /pdfLastFill where { - pop - pdfLastFill { - pdfFillOP setoverprint - } { - pdfStrokeOP setoverprint - } ifelse - } if -} def -/cm { concat } def -/d { setdash } def -/i { setflat } def -/j { setlinejoin } def -/J { setlinecap } def -/M { setmiterlimit } def -/w { setlinewidth } def -% path segment operators -/m { moveto } def -/l { lineto } def -/c { curveto } def -/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } def -/h { closepath } def -% path painting operators -/S { sCol stroke } def -/Sf { fCol stroke } def -/f { fCol fill } def -/f* { fCol eofill } def -% clipping operators -/W { clip newpath } def -/W* { eoclip newpath } def -/Ws { strokepath clip newpath } def -% text state operators -/Tc { /pdfCharSpacing exch def } def -/Tf { dup /pdfFontSize exch def - dup pdfHorizScaling mul exch matrix scale - pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put - exch findfont exch makefont setfont } def -/Tr { /pdfTextRender exch def } def -/Tp { /pdfPatternCS exch def } def -/Ts { /pdfTextRise exch def } def -/Tw { /pdfWordSpacing exch def } def -/Tz { /pdfHorizScaling exch def } def -% text positioning operators -/Td { pdfTextMat transform moveto } def -/Tm { /pdfTextMat exch def } def -% text string operators -/xyshow where { - pop - /xyshow2 { - dup length array - 0 2 2 index length 1 sub { - 2 index 1 index 2 copy get 3 1 roll 1 add get - pdfTextMat dtransform - 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put - } for - exch pop - xyshow - } def -}{ - /xyshow2 { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval show moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval show moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/cshow where { - pop - /xycp { - 0 3 2 roll - { - pop pop currentpoint 3 2 roll - 1 string dup 0 4 3 roll put false charpath moveto - 2 copy get 2 index 2 index 1 add get - pdfTextMat dtransform rmoveto - 2 add - } exch cshow - pop pop - } def -}{ - /xycp { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval false charpath moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval false charpath moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/Tj { - fCol - 0 pdfTextRise pdfTextMat dtransform rmoveto - currentpoint 4 2 roll - pdfTextRender 1 and 0 eq { - 2 copy xyshow2 - } if - pdfTextRender 3 and dup 1 eq exch 2 eq or { - 3 index 3 index moveto - 2 copy - currentfont /FontType get 3 eq { fCol } { sCol } ifelse - xycp currentpoint stroke moveto - } if - pdfTextRender 4 and 0 ne { - 4 2 roll moveto xycp - /pdfTextClipPath [ pdfTextClipPath aload pop - {/moveto cvx} - {/lineto cvx} - {/curveto cvx} - {/closepath cvx} - pathforall ] def - currentpoint newpath moveto - } { - pop pop pop pop - } ifelse - 0 pdfTextRise neg pdfTextMat dtransform rmoveto -} def -/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0 - pdfTextMat dtransform rmoveto } def -/TJmV { 0.001 mul pdfFontSize mul neg 0 exch - pdfTextMat dtransform rmoveto } def -/Tclip { pdfTextClipPath cvx exec clip newpath - /pdfTextClipPath [] def } def -/Tclip* { pdfTextClipPath cvx exec eoclip newpath - /pdfTextClipPath [] def } def -% Level 2/3 image operators -/pdfImBuf 100 string def -/pdfImStr { - 2 copy exch length lt { - 2 copy get exch 1 add exch - } { - () - } ifelse -} def -/skipEOD { - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pdfIm { image skipEOD } def -/pdfImM { fCol imagemask skipEOD } def -/pr { 2 index 2 index 3 2 roll putinterval 4 add } def -/pdfImClip { - gsave - 0 2 4 index length 1 sub { - dup 4 index exch 2 copy - get 5 index div put - 1 add 3 index exch 2 copy - get 3 index div put - } for - pop pop rectclip -} def -/pdfImClipEnd { grestore } def -% shading operators -/colordelta { - false 0 1 3 index length 1 sub { - dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { - pop true - } if - } for - exch pop exch pop -} def -/funcCol { func n array astore } def -/funcSH { - dup 0 eq { - true - } { - dup 6 eq { - false - } { - 4 index 4 index funcCol dup - 6 index 4 index funcCol dup - 3 1 roll colordelta 3 1 roll - 5 index 5 index funcCol dup - 3 1 roll colordelta 3 1 roll - 6 index 8 index funcCol dup - 3 1 roll colordelta 3 1 roll - colordelta or or or - } ifelse - } ifelse - { - 1 add - 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch - 6 index 6 index 4 index 4 index 4 index funcSH - 2 index 6 index 6 index 4 index 4 index funcSH - 6 index 2 index 4 index 6 index 4 index funcSH - 5 3 roll 3 2 roll funcSH pop pop - } { - pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul - funcCol sc - dup 4 index exch mat transform m - 3 index 3 index mat transform l - 1 index 3 index mat transform l - mat transform l pop pop h f* - } ifelse -} def -/axialCol { - dup 0 lt { - pop t0 - } { - dup 1 gt { - pop t1 - } { - dt mul t0 add - } ifelse - } ifelse - func n array astore -} def -/axialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index axialCol 2 index axialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index axialSH - exch 3 2 roll axialSH - } { - pop 2 copy add 0.5 mul - axialCol sc - exch dup dx mul x0 add exch dy mul y0 add - 3 2 roll dup dx mul x0 add exch dy mul y0 add - dx abs dy abs ge { - 2 copy yMin sub dy mul dx div add yMin m - yMax sub dy mul dx div add yMax l - 2 copy yMax sub dy mul dx div add yMax l - yMin sub dy mul dx div add yMin l - h f* - } { - exch 2 copy xMin sub dx mul dy div add xMin exch m - xMax sub dx mul dy div add xMax exch l - exch 2 copy xMax sub dx mul dy div add xMax exch l - xMin sub dx mul dy div add xMin exch l - h f* - } ifelse - } ifelse -} def -/radialCol { - dup t0 lt { - pop t0 - } { - dup t1 gt { - pop t1 - } if - } ifelse - func n array astore -} def -/radialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index dt mul t0 add radialCol - 2 index dt mul t0 add radialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index radialSH - exch 3 2 roll radialSH - } { - pop 2 copy add 0.5 mul dt mul t0 add - radialCol sc - encl { - exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 0 360 arc h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 360 0 arcn h f - } { - 2 copy - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arcn - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arcn h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arc - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arc h f - } ifelse - } ifelse -} def -end -%%EndResource -%%EndProlog -%%BeginSetup -xpdf begin -%%EndSetup -pdfStartPage -%%EndPageSetup -gsave -[528.96 0 0 378.96 0 0] concat -/DeviceRGB setcolorspace -<< - /ImageType 1 - /Width 2204 - /Height 1579 - /ImageMatrix [2204 0 0 -1579 0 1579] - /BitsPerComponent 8 - /Decode [0 1 0 1 0 1] - /DataSource currentfile - /ASCII85Decode filter - /LZWDecode filter ->> -image -J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H ->q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA -=M/6)*KS9PE`kN%="Tc_Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"P -DKfeXi0S^6MAH=;fBr>1IXb_>kP+oS^^pnX!PjdJ%0OEX9GI`IODGpB_@VYP -$,Ve*/ITH-bV]jIOR,+@`"`Y"/@)9.f?D&^M-b]OrH -OmIKN1*g(o[EC"elTX_ZZ,c*_ECQL2A(g_UF= -ESQm4c#_\W:"=CBQYkQ&hA;15H/=mim3UV:)/KA -Qu3q"iY[\%M;jo*/W8X+c8CUAR-m+uj;AFrOlVo_9p=ZV:0!S@R;Q;sjr'1jRHBp? -D4B]+c?5]@RI5KqkSaqbU$.ptNMG_V:6h[?RVn[ol5G\ZWToqTXfLb+cF'e?RdRkm -ll-GRZ0[r4c*QdV:=Zc>Rr7&kmMh2J\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U -:DLk=S8TFgnf3]:amtt*/^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sj*caE0; -T'sA]r#ZHgnbf"4c1ClU:Y#.:T5WQ[rZ@3_q>R"imJHo*ch78:TC;^Xhuj(2:_!Ol -=:G;h6j\E@/d=Sn*moVE0nrNM)FIVD%H55cLJ[C[6eHetiWMQ';%=d<=H*pP6qN54/ga!=SJ1"9 -;2S4G.RdIA(#m/7Mc"@E7G,9iirieL;3!D$=Nq`D6tqWXXu8c%h&GC-EK3oA3_*<> -*TP(`O&>=/8(db^j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;-03"4P>Z9n -8_H6SjTM9A;N=XI=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_HjoiMf -;\!81=cG/u7*1iq/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>taF90r@pq -RT!C,:$KVWVc<)U;qcXql30JP<=Ya&>)cDE77jIY/uDV%SQ"g-;6!VkW`<6)0U497;8l(Y-qBbh-93!ENWt#)=5*U[ -lihsE7G$-7>\9M0#h#J*FnGiOg8"_b#qq#AaIC(ZW:th=kc)Pm002j>8i!7B*[qY1?e2?#/h]Z*m]Yg07cuD=,MFREmKLG:E*Xj7EN)A -0'6EnSTF4QdCNCSlKqH^7HqKeY4c2Vh0\UE -n\/)MqHmIoIIG/N^K9k&?ebO/n-/p/=:YI@>Rc8R7L?n50*Yh>*JYU(F7Oc;YY81U&?&S6-0ud>A)Im#hNUb"Ka&qdO -A))KnnchD$=Uu]e>`Fm:7S1^)0.(5bSWiW!;9E$;.V2keQ1Dptb?8a9A_atco*/XI -=cY=M>g8].7VU+MY;U"Jh4+"jER%_53bM^bSb'jHcWT^#BAEHXoEKln=qn*M" -7Z#Mr01KX2*M`7]Oj[E/8nhQ_V=_cqdopZbC#(qMo`h,>>)uQr>tq&.D\XnB]Ef37WLCYaEBp'/@c>7Y1Z?&c,_7`j=f04o%VS[8$EdFqf# -C2I7Y[J%VngKST6D;Dn7pBKU3>Eh7NE9n_RKrH>d*V^%]PB -hcoPuDr(B,p]giX>RuF*?4FaG7g\-Z08=H&*Q.Z-&`R%kMK)rS`V@Ikj'6M_ES`k! -q$/)(>`Y%g?;8Q;7k*P)YEj4c?-E&!1$2`eRWDePc2#C?k?RJIF5D>kq?K=M>n>6Gjo!/eo3Q@\H/CdJrSb)i9dJ@3Gl@!$Ap&<"bqd4:0 -IG_a4rs.N\?]Xc,?d8EH8*TtZYP*G&h>@5-nbunAqL;l>rVsq6s'P6oJ)C2(n,WMC -"TWKJ!3cn4n.>[T'`i7k!O*RFn0%ie,m&$7!jF6Xn1b#!2$7eX"0aojn3I1270IR$ -"L(T'n50?C<<[>E"gD89n6lMTAHm*f#-_qKn8S[eFU)l2#I&U]n::j!Ka;XS#dB9o -n<"#2PmMDt$*]s,n=^1CV$_1@$F$W>n?E?T[0pra$a@;PnA,Me`=-_-%'[tbnBh\! -eI?KN%C"XtnDOj2jUQ7o%^>=1nF7#Coac$;&$Z!CnGs1U"V>Y[&?uZUnIZ?f'bPF' -&[<>gnKAN",nb2H'!X#$nM(\32%ssi'BLV'sV$Z -nR31fAJT9"(9q]lnSo@"FVf%C(U8B)nUVN3Kc"fd(pT&;nW=\DPo4S0)6o_MnY$jU -V&F?Q)R6C_nZa#f[2X+r)mR'qn\H2"`>im>*3ma.n^/@3eK&Y_*O4E@ji/=gjW8F( -Hr9,Lna.Cfl?n`e+(rD3Z/m&_!?`c-+E?Vn")Y[j=PV-&8fQa0?h/#p[kk,f6#t#HoK[ -XX@"V+u3jVdXNM48LP3f.?\q%P)aj/P'XF"H8:q8&nN8MLEnX5-LuR0;Qh=.ZR@R, -.h[OdP)1\e^FGtC.Hd:pPd/$g?HZOhAf -6?n\`Ggf90;bhQms"gtB1ZF6K-\4/\Il:5*1=D:CdZlVO_([ZN2=kd5;eUB]K/Re# -.FX2,Eud-%GrMIO3+mFqa)sEJGreH83eqW2F*BX.5reG]4-J&SducFagFRD%4;.$D -e$LF-XEN(DG-fpao?_b]hKEtF/(;I#,'c@bANr[p5Ek=q1D;m72`W\#56?I%a'V+; ->sUth6&/T/a&bI2b:8_b-hJO(<%`;M1IFB"ra!j^f-VLcR96@roFOY>1 -ic6m=9m#2L[(f8`l>cIj*VB2J[/P'1!cc`pEE*?c1taU*o1e4U;!/Ef`t)&_&Phq- -;Nlr&PXRp(),)n=GL[sX[6IPH4#g513coj@1e1Je)cX/9[.[=I!khQ+oK4:Kb*%>2iglVY=@#oj(&_?&%lT`p[$;X'1e4,k^)5ea@=_o3O;k -G*Vc=FlbBdX^7_r?fpHX`oCJC!FN25?uhZ?FS/ef#UMACD>#Greh1hU12W=8D0?"i -p)RUO7:W4FA;8QDeidH*pLR;#@MIR-2FJf+:i,i;CtWC_j$dQEG"HHT*j4C%U@u<#9?U>AGRt -Ckf94`j'<#JS\>-D$I1\`iX+odqt=0CU:orPVI(k)/_pCDhb0.`iF%_UMr\rD,ZF3 -f"<4D#\j#KC"F;C[e3(5,=M6n=`pEX2PG/5;fbH%EVC>lPZr5DF]0$I3Hm3!2\A.G -;_M3@F15@D(LK`m.pdCiFS:?11lHPlO*=Z:F`YlQdd_L("^[O3,?I!AGE-B=P%g8K -Bc!4OpC2$5bBTaGH01*4`f#0[Tm)`fH^(dWQ)AZsWHS#e5$,EiQd:#fbDC1:LU`n1R%];fH\__DM+1X* -``J'8Q\LaRMj3UV#EO`:V2@7ON**'035&'hdnZ:^MtbtAR,;b*^j(+IN0s!kGk$AF -c650SAN9Nt)#e)L!bBsgA@S"MGjCDMmu]S.O(&EWVFcpT8!7!aNO8MEeHpe^H'+L2 -PIVE`q&CN&-tG>-A/S!M=\`J[;Id6IG$-hhq-T"u)_*j^QFUjuq/M`]FdIB!QaqO2 -q14nnKp[.BR(83Dq2q(*Q'locRCSlVq4X6;V4)\/R^oPhq6?DL[@;HPS%65%q8&R] -`LM4qS@Qn7q9b`neX_!=S[mRIq;Io*jdpb^T"46[q=1(;oq-O*T=Oomq>m6M"e^/J -TXkT*q@T6#A!>U_LYIXUUiU`qE^o<7AP6$Uq09r -qGF(M9n5GTa3NYb0 -XdN=U'`kHP"d<&,XLcH73CB$7jDfM$@ljLh](]%U"&aC+GP^d2g<6ZD"g@&AZ%aj8 -`\Fb'.C)DjQ)@]fqT6'()m;=O@Ttm&4$U$_#>t@g<*K]Q].p]Qn$-";[&4A?-6KZ8 -6+,6/[ZuEHRkM#c27H]4[@7u@eTnY>ICNL"J+Q%:e9SFa?+!m\\[_=AgKV3&IC`Cc -\snnD2\3M:V7T5d\XU9i4.m_nA7<*i@@PDJgWj53dU>3gEkB)A_?[Cd_cL'!=Bk)q -gTA&6\TM-NFdnV;45[Akl+]2X]k.kl`Xfm)ftR-e_3MR?#;O"R-6erp%,<=?S1\2s -117aQ?p$JX)qo:Z,Sl^]_9om4jo<:'rP`#-`7<>Ue^qYC*Q3;r,b57aL2X__K"PM2>bYOEZho0]*<'36 -"!0R8Dg\Tjr6ZG=#$bFL>Wj%QS-`*,,?"I];&p,n*@hBn10_FM>FdfZh*,%K65_[TSJ#h2?P'D'd0WS3&ggP(^Ch5f:2&):2!d&,"@!e&i8 -:#/6ph1^X?`J`RVKAK%Jg;]i;ifW)Z6/P+Zhh?F7`IHeLGMko4hStu>!fc-"2;puD -iIu4/`H1#BCZ7csi5Uo<*V8'KUZ-u?j+V()hCIVe/`]qegr?DT'-kqLa5dD4jb7(' -`FJ$6>NS@Wil6E(!j1UH)+B%I$;Ql%MXl`CoJ" -6g@*+kf.K(!ibIH!UE0;l\.Fd`BW\m2s`sjlGd2o!lOAcp$G1&m=d4\`A?oc/+,hT -m)E,o!ls_il0h%emtE"T`@(-Y+7M]>m`&&g!l+5ch=3oOnV%eL`>e@O'CnR(nA[ug -*n024SaqIFo7[YFh^e;!3V6?Nb[u.h!o+R6fJ[pPYNYBMacY-:rmef*q9^pL/jWR*.YY1[[$>OE:HQ-SW:]3XkAS(6s&ID9.Y(`@Imh1EOQnJIcs -/t6RpA+CKWQ;6h#b%:/^SCVS)QHj.8)BBTR-(`P!obsB%1C468lh288kJmQK$0.npA+nT@`Q-rVo+O"9S;2n.Z645O]p/"[R';'*^blK>@dZ -0Vg2\_Jlk<%6-">$Ot#AZf:gL9.QPA6kMgc'h*+Q>8K`uJsR.j0r/Qt`c8A,*A0(b -G99?@4F82AE[$Vh8?tXHS\qa4R_qOSS=o_hniWHn9(Kp,/PC-F]#L_toYWC/;QRnp -9[bQ=2,$qBf/H>9Cu76E;InrP-ZYIBgq'hNmlsV?"Tq%eF<]C%d'Q2*6d[`$.n.jm -KHj"81o(LNd^6pj3n#qF'0Sa(N:uVdo^,:M<:r[Y ->rYj/G@*;9h1%Xfo_Zg*cS%elK60]&26XotnGq -2\`B'<%k#oE*Tk`gNQrtKY)B`2kmL$hRC@uHf$dATmbh.!fMQd3$UKW@'Qi[:gGaq -\V+DdL*MOaDfuAC@d-'.N+6oU*KFY([QT^_C1]>dAE^/;PX)`YMYuPg?=TC8H)>>8 -jr(UAS7ajJGFiDlp4&:i3Yk5NBWjU(F=WFWM54k^L81_P3d.EXC:^hsXD9eU\#s,- -p:l,kq\,["@."V,>k^n?FT"QcdWIEk=4UAWG@+AD -4dAaqG-p^"gbE(=(C^$9hh0m4INjL(GdM+EjA?t"QULY`FTpuT1^A0g0-0@s7<&7@ -]C1+H!itS`1O$n19j]j*2>oa?j"PnmedqO.50_IhrL]_RrI9.&nbshYr;Y2e!J!aF -!^K_I!T6:4HI+4;5?E5ii)C2,^++/'.0u>sm -(qgsM$nOp=g,m@N!?bG@D3.@"5=ecL+XBI1O]!bq89l2?+rl`+DM^DFfcqhSe=25U -c;$LD0dkF4OH`6Z;G'lC.HNl9P&_=1V)4YkV-L?mP1>+U)/PV8Pdr[bmTphMI4ri= -_3d]`4N0*4F.BPHQo[umd@W!bX>8ef7mO@aVF&%#- -@]&e^1%VPk*SIJTi=,7J:m--#=ALncr8UKbhL&,q!C05@m\!#JJl#If5H$s(Rrg5( -:jO*fAir&FO.q>*)DO]pd0ZN]Cq7sI4HCo(+[L4%Or!=W8^oTnLm'/Y-MgY5WKf8` -'ZQRV8o7;SeK^thC513k)*)F6pSF*Od'e_rokEMTWKfA3;js4Rl@i*$o_tj=lBbMs -'iV/+5,,q%.\LP6e`\rL'u[G0X7=4_O-a2mJ[- -h,--&?;uoY[+;\;-sKhibq5d#7]P+q>A%M!`HJ^km-%W.eS:eK[("X&j"m0CEQCSj -\O7@u>ga.(mT%]FpAsbg,r9ZrL"j5'g>:Z=;fOGkPe1!lnQn!tH#<6*H.GG7?2N#s -Dj)H[3"G]4 -/.mVUdg3fkNt0kP5D8MY)_]iuc!a+RKp@rN`0e"M83?d.k)L\+7H5.dgi$bDc&K[P -QM4dWBoR-K6`F2.+rQ>`@^8`ia>k<(A8IcHn`uIZ;#_m(*3kf@elU$d#;0T9Xci5: -?d'5E11j^5CN"&[@7tf!ArP]=93uP?g![UtCBL.YY'R6R9tk-3!L`PFK@#_76"j/U -T.>AJc[$[$'MTHKF7X@t%JNA+r@t0`p))7[pJ,GO';T_VQdc0$;-$sLgG5pLe=)_* -C@ej4lR&p<]$jVnh-`qL[9(m1F&f@`GHQ*)_]a@2W9e8iZ7;`oWLGZ:ldh])=3f+D -Ro`[.8pduqf%R&AEggk1B=&QUdU0V=CMnP,\Z&WpV#.HcDX'U%./)Y4])@"p/^_:Q -cM4/=nr3&&2o$i&!hnArR."^ZXuFr?iJssmE7.+i-smVFHpXL6MZ\q0;D$'>Y<(cmhjb9RGrthC''9X1 -T6(!odU*e\ksYEGFOPH_qLK+>1UF+,Sqb*C0-BIb:Tnp>:"O^s=.L@qX*-,1fr$c3 -?T`V,G)jDoH]]iH*Da(;rpMlEbh;H+>IH1+[s^?AF7>b;N,pW\9mc6UnU:#Fo\UTD -qtf^L/>L;]T/"*.InK;'2pV4P2q!*O_X_Jtb1;&0k'^=3URnBUqDj&l-82Zk513Y] -W5h_3-34+\KR*[_\aS6/!2BdO%9N^VL$O_@qjE![U.; -6pM@168T`MC(A*i+Mr^P6BWNZU)ZM*)T"d+6,C=Q`$[nK(_H$g6Q@jK/2KXU1daqo -6X2N:Cc=_/3(&Wb6_$2)X?/e^4@@=U6ejjmlp!l85XZ#H6l\N]/42ff6ps^;6sN2L -Ce$m@848D.7%?k;X@kso9LR*!7,1O*lq^%I:dkdi73#2o/5nu"<(0J\79ik^Cfa&Q -=@J0O6\8CYS6JFp>XckB7GKW8"CDn>?:G?37N>l,/7V.3A4B7(7U0OpChH4bBL[qp -7\"3_XD:;_bjtLdP-caI3?#nefHR -(eDRd_BXk-dM0RG0gajJ8G%d2.HSYq&]m?N8Q$3n@LYnL$crE%8J0HDKTf!I=n`4&D8 -WCudM9G-^:+n*W0l:aM-b*cZJkVlYFhA@8F/J:_CfG+iR84`6Z7" -:Xl)b"TM;F;:"=3cp>THV$#(c=AZ@WcCl=TZk^s,#Z1t5d00KrPcdj5$IL(rd6n#^ -i>YU(-dbp+;4D1FP>9M6]2?DY;:2sPZV=7nUpFVU$QJ]bobp^iE7-O9;;o"4@Cag. -*7@bUdK&daJeujh,Z;`Rd_lgIP=/=1.+'lRdf^$*E=bt="k*&q;d4k&;fpK06.7,4 -dhJWWOf[!(l-cpedtK\Yl^lS$UslUJe)`O<"IrF)h:"(c;q*&A,sP@UXAj6t<(+OO -P;q'cW78Y^;o%HnA09=/86$&4<"N"r>+ -*Nn,0Zq.=*bal/F"g?X6Yg6miYiUk7*JI_/aXOp6gJ,C6jg`WB]pf26Y=66o%DnST -\rDu\]_0+qmDhjO`ie.8[k5\(mE)k4V8m_`Mljt3"jGbMco5gaY&2@jS^H5Xe#oh& -Xu4IrV7[G([TtK3h4'm=r*N`lHJQQh?*l:kdL9AOcrpfqh-J`@/DT)+rE\J;h=]R[ -6Mk)0r*BBJ>jJ`Q2]#ei5'2;-4AaA&7IpG@*lXGif%;(&7LJ9@8diu -U@DU#n@(bH>c!_A*@N4RjdjAN<$fU&Y@St8,1GRfVo%e^;Y(e94-7^mD --Se^RX?J,([OnR-/s]5_U+RlE7D.WW0B0]'=:R0oXu>d9Yil9'%;fAO0P]i/V>Z&`m%jAXs@nPNZRd>@kWVA^_CT_cu2! -lsn26f8a'HVINc+@_MJA,/.D@Q=f6gD^.D3dDOmA7 -[H8P;k"f5/ETYPh@U=/b5'FA0GICh&dB7#nmV.J`C?#MDk?`UJ:2S7aE3L[8^4(U- -Y'mbHEf$rHimr\DmY=VVL:pW>Pt$Vo(4XT3MOh2/M0Dp]')*e(@"T"%:0t]nm^p]/ -_pT',Po -qRhRYfnQ+)[dI`SoP]ck9@!IJk5Do!"7N,fd%:H/(&=$;=M$m -E7V6#Zgs8E2O=LNt4F8'AW1YD;?nahI@%$Rpg8?i$T0;e@]14P/aa-RQXULILfA5h$<1^8R?>2&l1[7.eXkoBa]njLb')6?J3FFRsnd -+%oI<:it;h?*@+,s&?b:;KVA.fIp=%?TRBu>4l6./[nubIpUe%=S2W$[m*BGa&DGN -@J/Mh@W,fN7p4PY?d^T>cQ?hq?XrdWCA)"O%*rCLQYaH%Dko%(P36hIs'*<@Eq\<@ -G=a@[@V,8&CNjsRpObGL4p^lnFa(rEpS2!fOoopKE-LCPp];K0^E!"rI<\&d[QjLj3!\&\j:UYDH+0BD$J0ogb.LCke!XN-R(9q-Lp`6B0<`bf[,nKl7K9iC -T -IFBcr.-3`RfPu]'IAc'JDqm\*j2g-:eM$")^ZM%#Oa[fYrKlOCWF^MK,^s$*rdX$Y -VpPG%\]a1#GX(SE\+;'[YhDV:8T4:M^\6C%nu;))#QO>b?hjXcr",dmIQ./0+8put -rWNCU6"&&a6m`WVL-oCrpk2*_'8f$1dM8S$7p7&Es7Q:kf; -q1K)21RQF!ds8moFZZ0jB@H\[-pDiY;!>8Y2("GYUXNpM8USgZm\&*FeU#2H[9Ke8 -CX`]]?GC!U=_uZ97AeUN[TdV"qh<&OF1PXpf6bL!om;\NC7!-K#6fas@;<:<2CB5t -`aa#8X@>E#PKIHWf"@#M24Mm(F4./8Imp-\BkB4#75Ik;VG2!VXZ"42ZeAl14'fkh -Fh?LKGME*%#DL(TEGQC32^am6k!8Yq -+UQ$4\p3hSOPD[f-Z`R0"B'1NS(BY?l4XDo5_&\N6- -a3./%+37=uZQR>P49Z5.1/ae*[IQ_Z.''X1V(0X9]Wj$2;V\dBb*),-0VK-W`A5Y9 -,gA0i'1CA/b0snW34;^qkglc]"Q_bk1PGEbcdVgn5gWIKeNQfo4@MV7'O2qQ;3ZGK -7oC%k$KP*L]-TMUP$3[D:DCc6("-(k8Q+'g4],1p'cg:T\ohRi=Lj]NAQlWEV/9JI -'ub<%Uf>lq:<"quI:Bn_jc*g(sOQ9Oc8Wr/f5#IR+=^G6sjk5)kR-%PCBq"2; -^2]\+=l+FqkLoicT]fQ#M5'4f5*;Z*>$dVol.UT[W9RQXWN,7;^9Od*>2Hfmle;?S -TO@EQ2mDZ'51-b)>@-!kmG!*%M=+T>kq6im^@Al)>Mf1in([jC_!kSN$,Z2e57tj( ->[JAgn_AU;aRWT..E_58T#YlNr4b8;oA'@3d.CHp!RgDL5>fqN>p!5#p"b++f_/UC -C"i::^N&''?/KqapYGk#i:pV#0sYja-^!Kc?=0,u5\T*s`59TK1q=:kf.j#Z1rf -A1`MUeeLOET+#.kc%_>1B1$o_Z=26E3H0r-RqPS.T56ZHOWGc9R$>A;j@akt)CI#e -TbLLK;i6I(.n+Mn&._CcLiI.n7@:n.j!82pcZ/HoG>B'N;N-Tt[7A73i1VB[F"u'^ -EgZV8*M;,$O-0E,8/VP2j/dl.;AMVHkn,+.S9UZ^0%r>V>8V/mV_BQ]#$QbP?Ju -AeNsf1DHG'o@.ELPfSV8qI`M?V)7'La-qg]CJAnH2J1AcS!.t':&2RrAlP$PF#J$= -RDh4"AF5r/rcQNZ=#;:fWh)#tH-AkLX_57b;GK-IfOt=#1ZdsSL=kc3O/=iP) -beQ-DXn4J=-iJbQm$bD;-1Gt[):`. -i-oTmo-a:`/RBo.F"ag*^DHVE?l,Mdn.O*^=;:;`9G)iYmL)83.O&(82M:J\%R6=J -$XoP_#&laF3r!1q&q!!$8OarCKT?d5g[qc?XsZCmV\`h_ANqm:1UB&")duE[N_agP -a+R516+g9WnSURff[h?YS*J!SM\VVe%.b?C)gBO2%d@IpubT?m.%&beuPT, -bmE6$=dlaAZe!jd?L"%nY-F;*`nL;+C^(cY&AGI%#)co+I?h+i?FAIF2eQt'IC+0_ -WjUS^NbqC$!MLca[/"o^)9nATG:)E+H]J\TN&S>Q%d_(p\Thi!_mhW[Q/3J3HuG24 -^$oA+_&N7VE!uocQF=_#],Q09IC6q:B+;&W08D6P8]4Zm&E93QC[lJR`MT6t\_8Ej -7*[U0GpanUgiJZM:/T/30.Z.AH^AdMj2CV>gg$@6OE2`Rb^%f'kJrL4?k.g=H6*+N -\'LhMXuqY&7mFK(c6Jj2Tj2 -,N3oDJb%Z)b^#g-%`1L&,p>[nCJ2T$L1IiEA%t;3ttOb$.28M$S(TLm[l:Dg;R1SIW&M\>*O`)*LQMaU7Uf!YX0qb=^ -UnZ883)PR)d:jJM5oS.Za`%=0Od,mN\tQCMU2eDN1!hjVA5j/%)pf0:;;WE]Y60_Z -*D-h`l3SO^&Kb`]+/;ONMD#oGk8?!++Hd3dEU"Zc#551R*\Z[ul0BNJr?:X_,%EPN -"cFDL&:5$!,Eb5AOq]$:)&s+;,-T$2lU)rg+XM'A,pOi`.!ZqU5U"Q_-Ar*8@L4<@ -"N+,RSMGS_Ee'^DKU]9'0ergMOG>1Bq^&P7.<+u(;KoHDe($^d,6[hpN"EF1>nUAjI$YE/okE*;E$&Qm4?D2/Wuk\ -66.NdD'RL*+S,;oo+7:q'ULTm/TSX0EqLl&*AGW?0CmQb+sf#4Ke:Vj15Tj(l#AO/ ->;Tg01'h_J;_&+%$T1jd-8RP&nAHMl@/;Z?p!ZNto5QUND"Vjk.oT2tF&Os&I5T.^ -2NgQa+sAr6M)UJE3/_u@ZYqlWo/YfY0*U_u;K"V&MP-.;+L7ddF1gD:VXG2,P7u0( -PL,H`e0`Xp>P#0JPM&$SnL&>r0Fp#ddoeQWjH.jcOd#^);ue4cgm4.X2,j`CC"Y\V -0g$,i5?!>"NpAtF"%"Wb6>=ONjYVoQ%5P:D5q17\'H$Y0o&OmV+ga@lFAS$_qTJHe\6A&_]EsT>_nSKcj*hk'hME^ -jd#4=Q2L"B"@`"EHZeQou/>74kr$=*?@Z<^))c<.GW2@)q59Z+X_75_[`F,aN93ekkB"Aq*j,A[Z^?P8.Zl -j^p6VB@^aM(2tO"PeAu9=gik?2Oo6iUm(MG%B[3_.*H;/R;/%LPtq?],@Ob6\qmes -BK")nP-neB5?Cb'CmM_u2OOQR9l8J.iATS*(@9pVM.gQECN5\Z(>t?V8NE+$06[!F -2ZeDo'RTD!Dl=n!nW@gX"H_3q]XK7rpCQ3u0laZZhQeACFO+g5%rg,L348>X(;`5C -a)fMMF,.GOo`]K5X`+pZGU:c$T3\:05g`FH(&DAMb4:GSg=-P0GmZEIUIDJ[J4&%AeX= -nU_uuH\e#;0hm7E&p78,dC;,)1ojOl6%YI9<>[2B\1^Xf%=IqFK9C/*bnYnd,DKeR -L913)(`A)a0n<4\.l^[*3-U)DQ\I'cL?9A0jqik&",KZa%2`''fJ=5OQ\]md5kqmP7K@l'm\B:!p][U'69Xra)0V=:PiJ_b0NS)I,=O?I1 -i7&V3?F]o?3<4]!pb-jK0"?I^pg&pt3KHrNOGt9B9KA5;:Qfl7OlGbgBa9['.?Z\, -?4\Q>!6;1WWXPZ2X0GtUo#AO*dV>Zk!] -fmkZb>s3HF:mm$'C_:*dD3jcLPa&"eR=/[MOdJ/*B\B>LfR$0ZI@/\:QW]LiH#]7? -Redno=B3J0KuKT25FW)6osomCR:-\1f:3!lR<)l.R;5+A^J&q:>C$01q:a(H7@jfc -Sl"mK)_U):>*Nc(R/tU27j?H4#sa%h@;DTg^,=R2\&+m?]i,H?q3j ->#D#_<6uOc-M\)h\[u#@?)-b3UfKsbO9tIZ.]m-HhJdJB][m,mCDp2V]o!ZZT5hrmDr#Nah2c9GXnT8/JWY7RXCICDF;N&F%O5SbB@sM -).Ueca`Vh!b]Ns`'bf?n\_74'\6XReIB@Nq -_qR9?S@3@lr:>5?:XPSSh4(+p[)f]Sd'2>Y$XLs3V#?fe8"&/[h`:Sjr5%0:Hf6T^ -GWki5IFY@RV;O!7`Y(qpSKm*9(ZM!Tj04?C*N;PW#JZiLii>5^*21orQfE5cj8K#= -gjeFr$e7e[TRJ2g^0fshlbRFjju4sVmb?qhA`3E3BHA>Grc,UmFm!ZlFU_@8OT"Bk -X6MBUi!!Yi?BNT@Y#[`sl(nnjXGuPeVG#.CtH^IrU*K2gO4;0]"@Hoa7!?ZnSe&krrBVNr0.C -IHBKr'>Ar;s5,CFe19pg-1G$Yn\6]eZutm[=4+cG,2Z1Yhd%NAVt=g4oXt(iT2@e% -&*P*H)8BSLT7HGRKa+/s+Wi#h?\n?(Q1mqPpR[*6c^",.Z2(#MpG`!Gid^b=2rp2f -qL=r-?;olF-2KC#qS/BpZF_C^CV'2$&(_)OP"Y=+VBQ!ifR?M?83=W7cTW`oR9(LO\"Pr=Yu^I-@s=tP*pF+ -@540Dk*&rThJkQH:?Rhoo_sD-Thss;=u@@`5U'+jPhL7DTi%dgl-u00?EmY8;`!d?@gf^QJ6PriGlD(D,T,ZhXPm)?LO4"X1J1Z_-lc">Vr>X@1Sp[ -R(R;m*KeERnbHFQdgqkkB(MADrNA;Vd:i0@>.u@YWRYbVRb`/%@BnL%k;>uBhf2TK -DYKXRStg_MiGeRWXp5c*alRR12dU,]U!`*pGl9h8?a8#De[#//VgC"[m.gLM=PeMo -k4O'!RSMbLiUQ_krh!Q,hFY9VIeMZ[oDZ<]ciaRT5cN5i"$nV?(6CfnA02(D.$P_Y -6Emg?$7G9F2XePe$S`%-0bV:o0G,:#'L35R;\hg,FC,kS/_g,W.HmgR)+Q>r?<[% -qd!:2om^@7']L?GU3+A,A0MbBP@d(G?(5Ll(4Drm;,u_YCdM0k0j2Y@/ST%V/%oqB ->d.5;F'U_)f6/M7/Ma>#.ZN1j>o0@*hd4pRp=\>)jo3oifEMQ0i(/:.DW$m[NH/HP -F-VAdpm*:b-G.p>,244A9PV(QP;jJt[=q?9jnGZX\,^=3B -S1sbfF.R$ToHaEG#[TKFBUSeOS`ooJGGOJLEc%]tS1UH\#k.uC`3KkK0jh*6>e6-$P;q?*)EaQlNI#E.! -`>nVfU\=Z+IGK*ms*NX9(8"$toUZOAe+il3J`V0kG-)`dSXtPugKe0e`d+/q61'#E -&%h:>Fbbf&HoP2ko5O^7e+S4"Q`57D5BI_7rceD.qd4ino6u1=ipBQ'3g*IZ3.rZV$>m(-\W,/'bVoh -$J!WXL!&*d6PXYNiM*>7"A03BQuUeSmu;J8MO*n7lLSk+fmng -c[IZ?R/%h#WVhh#=fTOZ`?+(c,*:4o!(`LlY@EfX>S8no7Ca\TUO8>j&nJIB#rHq' -]U`&C1/L9i74?`GT9RDt84Q4S,\9T6P*3OW83(65A[04-)D<%>gWVH8kLZRV8lc,;\Q!$ -l(QS'eD/SP$-a57dT2o1'clCj!2PS0Tg -G:?*5jWgP.I^)W$P?D#<@np#^Zm2$A>0Uo$Xi@r^f\:J%hnOp3Fo"Nfrfk.?1 -kHrg2qHB@fEGUnDAlc?Y)>duHD&p$n&JEFClZ1eJ]tHgW-K#^+=`D^#_RRP,f?B_J -5OLtb/JgV7>rD^NaT^8+[n>p@l\fr4Xu=%O?:niSmO)9lXbs2u"m?.stoeaqc#1oS4A+He4;> -hDN@,#9c$2?]`B15fh%_n`6-MOtpH%^e>gifh@uXna9DW\N;?R]XZ+)/mT]iIkVJ9 -`L+t8>0Op3.,#lYRW$0Pc.DD1k8``W=jCU(cDrtgP@^=Ak'G:_ru:&^#*i#&B[Bfo -3,"M2T?(S::HVpu1,:hl0(VDNb) -de^.0k-A?q1esgrL(dd,SU%D5m^pgB"$UNQ"gKP#Ztc$7?R2^?ZHX0)g"T#2)BGNB -2Qh&Rq:BH2SN>U"2Ua?@j)>et\%)/jkM2NLFCBUJ]$LrEh8skaj;kkE2hpkM>F.)5 -Xms/MnQ+P8GC\f##FIJ%pt5fYKB6CX^WRu4iS6q[2neCmac@"TS7@:n>Vj5h58qVu -2iAF-3QV"T-eJ9_PZV6lb1X6Ujk>32lTGQ7[;Rb],_(qtQ5Rt.k;2Eu9$0X]%6PAaK`Jlt1.S -MgK=gmJW*L>:r(hqk%RGSWg]D%e&9OnV*fdCVKQ6%GYq>L@-)maELPDi\8])n=3k) -GonG?r!qrD`YRqJk'Qit_&gJuHRMtZ9HUXV -^6dAjcVa-/n\"GRLD=&)EIPVRp\=aNf2YT`@D5J)pKme`r4f*$9#ni\oLB2c:=Jh6 -hnAm?fBuReRV+hWl2!W"0`F;eqaqB7q_YeGIa5(kmjIi+q^W3S@nZeRoCTe=U;*K( -^`_@E@$87@gqWFI^fp"gC]D0gK0S=Y5`;SV"9P^srBS:1NKW+u.el8TkWoRP^B>$' -4;,9$R]ecO5c^VE]FtQu&]')t5k<7;";\QW)(m`d5pQmm$hB;4*^1f\_3gQU'I'o[ -)QP\6_*fOSZm3@c*'gk[-<(;WbU12K%)Sd26A-ns9I2t$q81''#`LC<2%0rnP0 -%SS]2C_su6_SY(f_kE%,!SP>#+%*)s6e"8mA3%3u2]FRr%X^Po4?,^(6UUH!5Ceb^ -Ca$\q7>O?#/IY6>4?t0n68E@J`0<8=>Y`37:.5:_M<"eqoM\+>9K??N/DO8oXApM3 -9b/LN/?D6,N*8Xp+N6`=51B-mK9O9k`l8Ej`VM>W@fm$J>eZ_(``)QL'P>@8R)R^; -`gYFI)T0S+_FD\e7bNVeOSHi\]u@?67gs(C]YHbkYc8(YK2)BaUF*6jD)WGB>g$tWk=Wh'TA]$O-$H0.ZBM,FIGcVpd;UG -5Ko$WaG3@(V9048aasT8;ThZ_J'#&C8fXJ+Cn75H?V+3cb%dVBWhW1s8kM)Wb0$3r ->U%>WV_($0)bc.0Cp?(GUpp!#WRS?ir0\.U[jb"S_48&/6H[Ipq+",N9>!j>;guoq -QV7]EbCLa/)NROe(ed'+X2MZnMrRJ-Hq[_&9Us$pM:]o(gIJWX9M>)3p]h'%cclmF -9bc%#,h'tJe;4%CLcYl0ZDC)#WPeANW0H"0Us#;+bbYa$6eou#o[?MSi6DJabs^Ja -<9'R5Z\WE#`-U:bZA),#K[,I0cC#`t.4riFInfO`:*edn/FUmVnBNlO:F(G7K\))q -ps!mWc,4\Lb'hT^JBs&dcFGZ*RWqT^_G9IrcNO5C'\#o0jA'5lLnp7e,l=Kf"=JX_G[/SFjs3M2U:a%XAl=n"rnBbWd;&XH%.Ws-!"&OP.;+b\% -UU8C]%8i*&blnR"m/b>fNR']k:m5rtC2;5nDUJgec`'-,)JDupZr*Y;:sC<6[(D^9 -[0Ta_)D)uFFWS"4,Go<0-B0Vg2'S8r0.%\b].G>X2($WQ-d+o8)d19'PoR2/'%<++ -e"o+S[6)jV4O_hDe)`dBofpq05h$N7e0RH22+,k^7+>4*e7D,!F[sr88CWnre>5de -[7f#g9[qTeeE'HTohX*A:t6:XeKn,D2,i$o<7OuKeR_e3F][+I=Oi[%YSCh.A1e`C,foj?8R@+H'$eg4eV2.P1m-<=,&dUcriF]).9G=Vl.5k/GeI;@EQCt@-R -f&^f#ol&FcE7YhEf-PIh207A1\IRf;3fF[W\VN7c[?f]A.GooIc0 -OP$+L=V[+Q23Z]^PhB'%fk$K$-%]56Al-1-=NQ)b\tmc:'H7"eR,!TFL!: -+dFT;"Yr(qR9>NGfnGnj4@[3sfZ`-U=qY&nWa=DhfMPfgg,!Hs6[W';VV;Osg3'^K -e@dO>XJM2i-%33JXg\`cXd0F+,os1u*O4=0]NT0Y>N7YHU/5(j:>?;ig?EY4P$-M/ -Vd$K4gXX+p)>UsLC)GJr"_-EsQ=s7qAb"CGn9\acq>_US\S^YTT&(0Ip -6`n\1Q.I;#fF)iIUd`j&9RODLdG<@$hMQ5i9YX?(m&2g,iY/+(&%49b< -/0a4.#lY2LmOf\Y,q_)&,Eb:/K+< -Id^TjD=SAlE:&Xt#Pl'B\=a -k8Qm"7T5fMC8!h,WD79^)^SjoDT`[K]M;j-Y&_3nHY!t@("RJ;L3tf&FspsH;KHG_ -k'95QS\4ZH1U_EL-AQ3AL/K?g-Scq1PKZL*k\)8n64Sq;6S;i;f]`"CBcAnmL3;`/ -o&c@kkrK7:&oD=jQCM;Dd!VG^rq$Vd^BAI6]CFpV!^l'cbA/,DVuSUh4]#Klu\S6f$H&/jS%BDG3b`Kn8=9JN#'a5%e1TXkogQ%:]b!B-LoH/halTC#C1#Hr!XDdmDDK]<)S#kuuY%B9[ -&oS'F3P=`cq=%'pE4`7B.iIjN#]Vi/n?+nD>ISRs\o?OEn05ScD\'_YZKik*CGo9h -:DB@L+PFcSc[&f#M3!nug'F[!o?0+B.1[G"Pa-\\@]EQ?CM9VKZkMT6'_HA%hVT -S(Dh-:Ml1hDVDR@@4r]EGA#a8G]uQ(7n'D$[(c9S]6Fj0pS!sfVAH63JX`!FQmZm@ -+,+plLJqb5W_[,Ke9gtF?hh9_^->cJ2hKm&O:a^)?h]\-MQcfGC+L%[G>m>maj0]@ -OQq=?pc1\l?^I;7,b.)S))%M*3IggqKm0\=iW#4W=.abnUC>b":iE0n2hi*/Or:0n -H2jO9GD]Tp*H(>*a'YiX8#LYt(\mXfH&^A?s.1-1YBm0q0iri"="/*$J'5U7)S`k0 -s/li%Z-9\]4K#+mDlFokZMRh#HZ$*NY2QWm_/;3G4HI)mp>u-`^&,`]qsd;V#Ft^) -_<1L1HZ_:4DoMXEBRFh5r)^4OQXkBA.`@+h`c'"aB?RS.deqO_r%-rFkI>O#RIU=1 -Cq&8Ihp\]Oe?;7\rV+8(BpsI*@XQMT[HH9$T+S.(d@,RL)L(Ip-fp4]]h*_?45\X' -(US4lir3DMYG]\Ba3X]Ch+VJIHVa0\-gh<]*E=e=PiI]O#MX]B/aOFf/TN=?--S*<3oc0_h/M -0-,qk@raR,Q<,/]b[tomHj4LPT?q7n>!44!9rHKUF]>:d[p?2i5iR,2QEP/7ghjC0 -S`]Zp^YhcZHlaXONQ:*EpjAZG2kA:@o(]YrV4Xf(lui.F^?9Z@ddMF.?9]^u!F,-k -@C^3H\(U5mI!r`4VMi:`r-j-&^ZY@hs1en=B`Z#2'F=fU0ME1s54Det#JpoA)[O -*lns&Kd"O#/<#\+nk'iH_"'UY)9;;qV('5YN2\>N&'V.,bED25/[TL39/4X`%)"I; -ZNSZ5c&Mp:),7-LEuRlia.`0B?'9N2Mp2,Mef.tnhiac,U-::4Wq<6(7E@9M0HX_h:o(!T$I -=&nX/?<>\eBjb%D/R`*@'_R_dXd1i7kem+BV.36nRO(ta[`u'm6Zto/Dql-<`Gs\" -.Z\LQf1`/c>utj'G$W^YMg-^P>fgSVpQbBHhO!'s'\^#"Z%:HX/cPt2\3:X]iL"L' -LWUBm+c49b:+;+E=I(\$i[WD9HXm^H3K^+^[Rl[pQjoU<>?E`NPWlW9@@?8GXkQ0' -%BaPIk#pPghIjCuK[o9I*fSV4WRaF`l'af+KkWSsUs3IN^0.MubeBtBl8me8YNumk -@cZm&%02`QLA.+j$XLf."nH*1&D)V4>ss]BPLq3K`ph+&%]0[$LmFi8$JIde2FWA_F&' -@oM-*Osa\npR6jhhY7E_GMr7f)CNmR*[VuhH!R%@5kUWgZf\aRB;t4o*mBrs1gS/0 -(4+j;1%>*GVoeN#s#LnU?Ok]8KDf/,&a.E1O6l[k:"Omms.AcX7T;'00MhrQXk3:J -?phY%:r`Yg_6%aptc3J*#q)QlVF%p>\I8?d7],Ii8;iVZ3&;(Z`RV$9WQF5Db/ -mNfb02\ff.(Q/l:N&`:5dc09EMfFH+6mR$i@.ETBOWkaa\D8+WZr)i\c8lmMi-qF@ -G@/b[4YNc0+'73=Mt#se8-Ph3j>-"ZaDs+'fb1Y7>`Y%G9nu5A/LB.&PW^cG9eI;D --W^/;PS&d2P">lgjVlX5ZDIB+oM6]UB2I03`P+QjW+e -9Jq.8V)n=;b5Pbl[_j<8r32/6ib'*"M`#+bffl_09MM;&2:YPMmR>7"elLlg -bDgRYV9c^Z`n]2SVRl2\f=.!W_-AK(G)E]@]GHV!,]A\D5.%T\YCE//"@ZV@;f#deMdrq4I_R??7X2n^B21j@p/C%@*puI2f7c.OVj[4RX)A,kY"]uDk;$s -nXi,3&[SI6EVZ`7rf+hcl1)/4T9GGLCh&Cn!I= -"7tC,7JNL#4oMQNojmOCktd4pI,D^2hXBQRe,M?409H"%3>d,cW)Z#E=nlP=m-(Xb -JN](G`.(SQIT+G^4Vi>?qA]+k?e\>'WDEKgoD.6LZ)%CWOo1j7rZ0>3Ni^n4XR-!] -k5^Atr\(MUDu(\t%(MAderUZfDlj'p-pd>$QYaVAYQFo&.cX>PgMaP%0L#ZC"TscU -q'.m$&4m"#I0FRp6Y@H:YV(WGWrl&I#0bI"$/l"2\HbgC#KmDW!Zp&,?77LY#d;2O -+u#?WYmBi7"ON5RYah,#&EBq($7koTDW^j@0aNlF4OBc0nAI,"Zm611afqYb0[e)T -es2>si\7bKDgMi[WE&hIl5#i?320b[5l'?TtY_I3re,ZO9n'X:IrcGJq1/IkWC`A(\U -E8KiA(DSL]'^`dMYeZi-D%TV/(U8LkjPLeoM&`%D)Y('O0sqs?\Jqfe)tC`a0uY,PaW.S1*:_Ds1"@:afc@?R*V&)01$'HrkoR+s -*qAbB1%cW.OQ-rK+7]FT1'Je@#p?M_+S$*f1)1sQ)'Q:++n>i78gbeq.3c&L,4[H5 -1,U:s3?tg=(c"?_E]k[g8L1T9,k=eY10#W@=XC@Z-1YIk11_eQBdU-&+AF./noZ=# -GpfnG-h;g:15.,s=X$Jj@$6?q16j;/R45G4.IjGa18IGrTdm@M.e9hp1:8WQ\LXu! -/+UM-1;teaM'k(#/Fq1?1=[ssfe'Mc*E%kL,N16Fkq9:/0(SNZJ,q3Qr!p#A#jV;`KlD3_0')mF+-*!BZL546r@tbPaOrpH43S3f1U4 -d%`_DPrQtS"]N2^1YFrJkd@b[3O@6B'CK`o;R95M5-o5g//:6>dm%Wk5h#g#.j71d -a$GX"6,ofeU]EdiY3i;Mq5P.FU<)RQi#WWJg -6g_EPZscF5IZhp%7;J#U$]deI8OVVU7uMdd#),DPDb*N<8CV>,O=nM:OL>jm51F,: -PU(e/"[Q+ZA<^8ad?Uf]`YXi@<@>je>kkl -hb4JF&&JtgZ_L7!.o*-$:W:@E`)0>=-W#NI9/J"`<9u&uq,)8S,P:UOn#aLaobC?f'fM=K<9"9_+sQI!#ug-ra;Y=]qFcNT3Q;Z7#;j=amo7p(`V-:&;=fTSJ&VX>$ -,u\?N>=uG2"T_\&WDn#:>ZIn3.+_`5EEeM"?&PYPBQg4%&RE`S?3IrEotOb^IpWr? -Vt!g`E]*Ym()pWGB2qoGNmGCHn&o0TF(9lY@3kk_ -b&:fY=^gCG7J(;)Q7/MiQmT'e#PL"P<`Gp(Ajt7`A2[onp1co/oVY]aATVEcQ@Usd -`;1ZJ:CO^FC.2i/5A>d(B&snEau='&q..GbAJAclQA2#4Me1ls@aNe@0<&_Z/Sp(B -C'>u$ar,%`]k=07CD:2oQF<=A-J$1:RuFAO(uXHDA5pgZf.V,XLKG`^(6]f9^]C?$H[$Af"N42k$/d[P[^Y>F2pgf>9-VDI#2r:7%l)O@aQ2(J/hU<7THF -Bn:_&5@-oV@CPHe(\0$lSphG"<;6-88b7/C3GB:0IMJu8.;+2uqfsV^HS`KhJqn`_ -nUL4'Jli/F=4g><%gP&AoXHT>(d_@am=_N^FI58a(e2jC0f&+tL);L>pfE(sZ%.F/ -K5h!I00b2*-\mXTKZGKPG^PYKL*V!lV:L-3G`.<5JVM$IM9M$;B`X)^qhfu^Hg3nP -:H=GNP2bB'D_iTIYJ]9.#aKph-]U1\M;0`n;M'mhj2iP!tMbb.P.&W7q6]2.a -PDGQ]\F+8p_*5CqP"?`bf'e\:hi0OFPj"0o%.B2nhh:eGNcUV?=W2]K+&:L#PmJ+M -fV+'\EB/;nL:N+C)mZ)1YkW78AXHBkOB-*(3:WK**o3du.=]RMeaW0nI&'U,W0\ZMmT -X:C#fLYmT-`caE)U"\IB\YH?=l$1q4ANKFbgBCeC!p@C#IS`dUTSqljg9`I#udX&NO/L6[-DqC8$fTnZ#[HPh-)>C[p2mI#m -\jq[iK(6:8qm'8_]3Ci=2YXio'tX^'Bq&F_S'6*jOgtf*[aT0.Hc<^8qjnbe]T*M5 -S'm*3jftN%KpqnAR0<*Sb*S,V8f3P*ne_/C@2(alMCd8M!tEBGP_r%sdg -$?hq#H/(/;4<0-h5H7sT-Cb.;S-Lsb9>c-^5J10BggYBu_7s[B`b/!J>MQ8A=#O<' -`Vb7n>YaC.'?-Jr31OfHgjcDqN[)28aresWQADBm+ebsF`G?Eful#$bJg[% -SA[/jaiC_TaaC/6,Ibo&a35,GaJAjZR&A3SpWe@"am2aHdm;6Ke^(',cHU@TLX"0J -29@:ccpoGLr-(aPQ'M:SceT^u>nD#s-?4.2d+?7am82YEnO6]XG?m)S4[l%"6I]9k -W#\J_I,pUL:2qk8d<$nfpSH.U8(O^9eYud(SG1PX\^c'ff8j4DrAq[*oe5-@f%lH( -R9aBPNc29Rf?(;N\m;HZ@6;/6I3!I`4geLBZS0"gTfp!'H\IcT$/@;3[_7F5SVu7Y -J_PV/[=-d(h;Zir`R>U#hJF19SZRGgSc7"7^2?lSg)J)fdR'hEdu$#hTlE*kC_XJ -38T5/*q'gk2=573k+0id^>n]pSa7]>nA`3C?LkA9&;*]Hn'M+%\^g.u$1bcZnrZT8 -VRHI&b-#).BZ]Pj]Z-)cRIXMXo,fRW3#D'e>O2"Fq#>*L%WChX(\W?*q<5Hdd%C*\?-_>`\=\4[&&PR_?hp9F -qHoro.*MN"ebk`NqL\>41sPsB*W(=Up/?,.3_0,j`W!CUrLP&/OM9X[eO]`0+:n5] -%LE;k6/`BB<%]$tLI:&5(mIcE'oPN@&X_'c3?=/Nj%&T[r^A)pa^l*1<16r=QHJ=< -)2-:B246u_':IAd4n,rgo.dd*B!Pn1m'"^>H<#Z'.n:W"m6?&_N -$UX.V)%8lOj>r+7;"R*e6u`<`ou-;u;YIIP**X4&&M.9,7W,j9rPn,"V8mP9ie@A=Fr#t3BCr'"L -jWbLA(':gJ=>hD3:".Z^NrE.hA6i'c[Y8d%=uN4XCKgGNZT2-2e[l(@QM&,u>RRZ\ -0NZbp`Hoel=eVfei*RHTY>WmsRL2D>/Nep]^hO?u$e[Jme"!%>8/,mM*+b -fS+g0@$l*bM^Q!*1O3JSU03E7m9T=FA8Y^(P%=AX;jCp:/kqXCn6MrZAp',E^Z%19 -F.-FgG'B3]=RLa6?Ffce\)^^NP/6=m1KaV -Cc;!BT];M"J[0-=]F2/blRp5fDL88H]5Hmljh,MRDRmK"l2L=Mlh^>_>&Y5^"iOBp -:=7*/W&GZ+EI=K.UiO,b5K.\+k<%"2q'S,JDS6iV\b)m$$(S]b2-\RQZVMn#7gPGn -gia\C0ALbb2dbEcrWe)7;P!Q;Vg,p6Q/j1'E -0$r;k1D9Es)JhQp9WBP\fYJD7'>TOrNT`d/bf-04:4_PN1o?Y`)p8@bEUW"c`e`]m -,34#XOiBRTq#MUAI"%/L)F?ts,p!?QCk`QG/P(.,`ZqRKL@87q7@>@=j4p&0E^EMm -q*?E1<1]=IDFI/t]]S9bL6W'G;G,@\*@.Y$3te,e/VuDr:O2Io:Sd]V:QepXeOqpDUumr,!cLm2$ppk&ZVBcFKM[pg -4QqBjT9N*/;0jq;BRLb[e8C9o.L>"S/KoQ7I2UF7BgU[n!i6U!EOP.;l_sJ2VNfZ$ -:ASTte$Ud*7p;'DptF@Ll8#9!&sZ5?BS:+P6Tt'6VC/sA;sKWHWeBN5ePiqWlG=mH -'`OcA$FYbje)71s1(5>ka&l*-:9@*Z[+\_5rY"(7Y=&V[lX40tL#^3hkg<3+Q -4ZT^P=*8]0lsV:0#[aW(N/\IqPeW+!HYnTN2p4L06rY5j^a]U8k^1jHDu2) -^.A\*?X*&L92\$iQhLGdquM=e('D@>(B\&m&V=t&$c/2h#@RHQKQ*4j_O+C4@=0ea -E7PuGR!0'Lr'?-Y(*gbbQP3hU;2T?o,/"St(#o."N,b.>`gG?s@si9VERm4lR.h6J -X$)NL(.602(F*IeRm%aS9(!;cC*9GB7*.0/Gen_)>?@.r;iR5(5'u&(IMka&YaAJ -7K=>c/a3"'U@ab8d[F61Bmh_5FOlr1Ke#)bFM4Sp(8KBJQW%XH+.fl@I+9.E=).\B -XEBi8esb2pCODnQ2:fCN2of5G9CK(*AtQMUVdUZaK!$bKZWp]^A!Mt[ZdLJ?g07Wo -662W)e"5(D7DE;@h7@tlb+[L4cc7:M05m -[rp!a=!&?iT)>$X++bUumD8R!$]-tBL2B*p_om5ufXt7YE?h6q;hkA+N2MYTJiUF< -"a8gOO-=U-UW<0r(?JSpMK8C;b0GJg8c3R<_u:n)Wm:n4>P,(>hLX$Xa#*!J1SRuX -@2h`q`9=*_u?"`c4&f)sSts -]CrtLeb_usls7rLGBO/F3o>7\4dL]DSb:hV:L@7q\!t.I$/hu44Rl^X`;&45jA`=1 -lFp/LpZ[uB]XM#7B9U4i7pG/&%s%5GqZjl0eAqETR>dTmUNT`qAc9fI!a!*^;o"*PDAOR -fJE9jYKL2tZg.-8c=q`oTR^CIOo9dG%Y#;brh%^KIdTN$,>[Co7E>?kHhk4Q4hr#m -+Y3T&Hh]h3j?O+W5\pZb6j>o%[_<,^^Z4GaoE2VA%#]c2S=1WegP%md#n%FY5o^P( -306EVJjE9H5dU$n$e@U/_nf`c5jF*!*#^bp&ODQn5boGer#cPM*4LSETBm@GU=VYh -+GpjWML6?gZ9lEDFMZ`YMOZ+^X=QZu/%4drSpVc`!8PHWE5N6X6@%=mN$Ug3SO0,0 -4Oc4*CcFe>hnsh%3=Iqsj=e!sK#.(?^2,lkgbU=HbB5($JOl`3JN?c?32-er-""CT2&nO8s(WH;FQKNpu3N(/2/ -7]Z_^4DMm0T11(L7`9'IqtrokQReSE7RUq0q9)8ZF@TSZ3](tJltmV.D@iUg[!U'< -'O!#OHEYP6a(U5ugj_j&A&n`JaS4F%B-4a26Z6e:TDRI`N(S8;rEs])>1* -n]9+#84(/4aS"aS4X3a6gUEtA>>E;RjL67asb;&(lq8BZa/)VXu)eCKW<1:XXoF4XsC07 -`2/Y;YHB@Lb*-[8)VW?HQche!bA+W3@b/_R5/nj>0!qQG3bcboSi;&-/PNQDAA66/ -_+,c49GnAa\^4!F8hlH,&OM'8[ ->ZXZ,brYdN4[e;QHcAfZQ;%eP:9>GY3cYB]1/:gU(oZu5n:Xm6RC%+oDFjK^WS+QPCPl`TIkg/>E -c)h1HHoY"qWR-ah:_A3(V$.4n"2fg$.V/HJ%1^a=&L6BKWU1=XbmP@o'/O-Wk.-3(io6iP!&(764;>d0:qM\:1G1/l3dqT4gA6RG*:f;;7 -dt0k`Pi,KGLf78r;q3g*q>aIbK2`D];k_[hPHN@l-.G=?;ri)N,sYFfl;V:Fe:=4A -0u)5D(t6GSeC&_DFECLT8Q?YkeJ(a-Te0$uh:47_b*;s*rDk:7:e(CceKnE?j]\Pc ->_mf.*_fq3j\AD_/C(A)VVPCp[:7\"AK:ARVS-T8FYMC)MP$GPSV9KEKiCC@Cf5b6IolD83HQ.BK_mNpu -Q$oLrGZ"]j=/CO@7=rlTKTHXjTj<2;D060hLS_\@cg>Vu7>f_\N>e(@V*u-K`J7Q! -[b'hf=VMNOlngAl;;"BtfkI88@b'-cle)COfohh,Lojg3:g)4BfGoUsrKg[qr7SF^ -c@)-Y[A#(WP!eo8:(1uJMkuq7m]N]tU>GN\"]d):>[+j8k>?gSgos\'u=0EXT6%n=KQ+\FP -ZH:A+>NNmS28l9nK3Sk4ghJWKpsr]-5MXd%>K%dkji?0d!Sk$K`SJ[;2:<[#_POB3 -e'6Cg(!faZcs7C?-/I1e,ViXdHek):>f2uc]A_T*1u)>@hA+c$4RV$AgHj*?;r-@S -%FpK@j$CZI^&?qfFm@gPm3^BJUD*[aD9-&*l!V8pe7/edtFtb.q._E!kigTIJpq,N/39*=>@q5[IN>c;M0]SU'@iX<*c8.643=A#$ -W9tg&^-//*0$aGXA#;V&ej?teB4K/:j@Nh@;rZj8_dj-k@tbNUVF0FgS)fgMUaAPu -*_-rO5*^Rj=4U3[N_<4b;WQD0-RMd(ggfFC($0^1A:[us=pX6,"_8VKAYrMirH%)l -VOp=\=rpEWc;C9I@6-#H+?j+,c=Q,BBcf6FTHVfs/)KEF/S24bk1!aM4L\pM6ftOc -k:9m%"Lac=Ch8?C)*Vp\?>jH$G08BU8iCqW2LHPeE^+c]KeK#/;V>2co?uR2J=0_sTC.T/eq;DRK'6O$-]X,9Trqi-/SDTsAkB#dq=nYi -o]XLYkuNi/Gk($@8W2Gf<,Rj0Neu5fS%c>%\NZp'T>PQFl5lu9QE$M\UYa"dP[9lm7]snRT[HT:T$FY,^9eb1Z*r5cejd', -DNc+WZdg\;\ -a,@sIkU)&4f#?u&)q5)9lu(,tf"T!*aOBS!Mfur"k0V@RdcI(FeV;W@rn&*[cGn[S -/XFUtGd$J6+)RH%D8[H29aC(Jf^9U6D=YF.*3IGne)F-_9BPBGB"QQqkO'\^3#:#W -<+9_[>],q"mFA@Wj=Y?RZgIu$DV"+A4:H-@QV\Ih*Q3tU?-_lNo5@QCDN$,bDY.kg -]'mIOfr"`h1hZ7LMJo:Wn0;Xc[;Bk@rGZ(\mus/H#61566>qH]E/EB><^uIn2fQ51 -E9mbtF,"=7%T[2nn.jdK_dRO&cL=4JnQ-6@HrB=CddBAOnT!r3?OBd4'L_C1[HA<, --Q_f5+VlFE'DAl9Iiu/KHg5&jc%dRaLF:-Nnk\EmnfKAK[j\!&,M8>6b,.MqbntKf -N:Ra4Eh*+!Y:K3<2fSoho%u=pQ&K)M0MhYbiQ!],`uioO47cN;.$$NaO#IET1hn>[ -EAGu7)8pV_^iR^AoN+6KHr+lne8u3,@/G(+ZZ^o2,EG31Y@K9[C/dD,@1R2JGAp1kDk#p($[6H\5c2R=XEGrn -pDfh"Ft.\'LNeMmpT166ZK$-Y/9WlL)`I-WG:)MQH=;#%eYctZ-\;$$Kjl]gRTFni -=+\AoJ=WloC1Z^UC>ehH\+F9pplC.(q9jN(Q2#i:GnRjL=G$7Y[.r%WH"",Ujb7sR -OEmIaq([a%+Op4,QqhC!5sLnZ&"fg%Jc9] -qF6\FQ_SlK%!o.fH,1U!_Q`l^qrR:HCmVH^2gK8TZhi:^3QHRra0.JKYUZQU5+V_# -?/kaR9m]TQHcNSlq3lWfX`U<1qpM28XJtko\)WOe9](KT#KHZFA[TS$I':^Jgs:A_ -c$\EoI-Ukl?](mCc[?n`I4s&t5Lb*WeU:fUI;d_cJ(T11feE`RHro#"^YC\"bl,lE -IIH&KLX:JW$iU+bIP9`15NI8hjaLS!IW+CuJ*;?>-a[OeIBL&.QgB1E,Q6NeIdc`S -O5YKnlMghSIkUDC5P0G$om^?BIrG(2J+t]Nl[P;:r"+g7,1(].GPju#l>>,Y"1eX< -GiP"B34GsnN*"I;ZVdeSR9 -AM]cLB%)%Dk&ibW6`$"A/G=cbU/>URH:90G9;Y2B&1VNdV,OBoC=RXLB!kjG=)6@` -"bt!+Z<;"pHUXg::S?FDf)(.05'L18m^Gisk4*f1heuT^jo5L8^0GX+4(]QLMoK7H -d<#(Cs,kFaZC-*KB.KIqB/<]H#(K(5dV*a64Z938X3K\tgAQcHAR!+>p=k#8kB0AM -me>K8#7#r'[QsV8IRbcN^Y\PWh#<(!V:4^PHJO%jB=6L6o6[&-V@N^fnTf)F:He`o -h5C,JhZ&75]5fCAb:It',@irHkk)fkC4O?=*X[nnmr#/SZ5%cXK"KII8F -b:FM=_bf,K%`?Zk5nLt3*(\pLYq/_G][&uK'ueKl$P]Wqb[h^4aZKM$7kaLW*ljE@ -G9FrN1iFSZd'RL3a\lA(,fu3sTa&A,CniK&cqKu\b>R-+0$D]@_(a)-Pd<*dEI:t- -9f$"m1FTR\h)N%;'S.FQe#`(#5#],XcH]Ae!40rb%1,A&F<(fYd8?D[7FBV2^I1s6 -SLI1Ze@dS1dn@J5rDUrANZ@.<@q%Ica2_94OpiC;cm'89kde*8Gp%=]P1o?#[P.-+s63 -QTY:b>o-bRF^:>]TjZ^nS^U?jQbDp:hcJY0>2@fq^M6K/[KV1*fDZ4J>e"(UL0Q5- -*JEEL/eNs"d`(U3j&$iYNT8Cr/!&ao*_DOUff]k)jU0!2QJds-=(:8oN5(-[fPY[N -g%h4RT"Xq0IA"-=k(TP@\F,?P]%R@RVWlf`Tr?goAu(DtfH.:SC8_'1Xh.`L`LQ92 -)j.;hgH73bD&Z\$ZYc1[(ujs&RpEL@S%eF*mp"Q^]5@DZ!LL"%VZ"4`],nr0lo-`2 -_XQ?,GK4_DRh<&KS@YVoEu`o7a`F!P6.#70*)*#ILd)!Cn5F6IcZJGZ&]OH,RjBM( -h1'C5FktAhR<79RJ=?(9%u?KpIP6iEq-ICjj5g/7TttfAGF4NdSX1)D`1Em-e,,a* -61=^mSK%+saN)9krEipbp=k'l%I!IlS(6-i+'5ZDq_Pmequ+e0s$-5G!+6JbI'=@f -^do%=i+*:Jac6NWLZJZlK?/WsM>]Sn2"m.:(P1sk%mfo]#[nB@G]8r5_FRN2iFFNo -a;u'I3%4_G=`f&\`O3OLFT1')R>2?eT#:>Ral4"%A?_XM44oH(@Ur2id6,H;[5ABP -U+q0q8X%'%2\-XlaGUWrMoGJ,_4q]S?a1e24r8,U@q9G9dCe7(<=K[OUKE3^aa;"* -obS%bpQ#p&H:Rc2]&XQX>k+OU3,&aEA7U[^dQE.Q[)3n-S4Sl9r]S622&BBeQ]__/ -:J(59-tO%.OV3qgb"5G[j^bKE&ud\)=R,0]9X%B7Am@jGP:`VOrf(skW6<;5VWBqX -QnnYN9UV/$jD;\$E`-$a\J$c^m(&=#kl6igRF']Db]m>0kV.dS26IQ:79VX -V`G?W'$TsiM;!dJ[.S&dWSc"0TfhMdAtP:[0ht=@af#(>T[Y$989p;pVgJ!&1_g'f -Bs0qebK6Im,q`&@0U6>%)dY3>O"uSS880@rUrl#dSLPR8B8l&N-U*Ac'jCbhI4%Rm -esdkPEDBW4+K(09S^[Fh;!K5`W$_A+cNa\@l8c#E<)RNo=IE*&.NYUT<=@?'Y_?a* ->@&%ZY>uR\=O18\0sr?3;JOFo.ZI9,aR3Ze]#_H5?#r8Rf"3%C]3\NtGd!D3^fV7[ -?]-dTV3N[-=@.pEls`/HFt1MN5C]9d6&h!smg2cBBJMfjDc -V=hRHVY6_,]i)"]8%a'F52@a8IF*uF^lWaB@!(LX0N*J;GW,n:)FK.umJCYm`c0iD -aTeu8'Z*;.%q5%HLiF&i[eQ+Ui_34,nRTGS6pD&]Hm'U$ef)N'58W@'i_T*oj2!_K -NadBdS$C7+aOqUgA"7$LEGQH2[]5bVLXD1RP"`s-<2=)QYYhW:>=j*U04l3Bs6umY -<-_'WAGeA61E+rhRC:K)r8>UOQ?-RS$TfX3_4G`1I=Bl!a6%$2RoY8Y`nC-OkIhF$ -1ffM\qDUo,D"4;uY)q)#?VEAi$)"'%Ma-,VWFfhAqeZ7BB -94dL2I@rLGg=n]2KPZXaDt`>RgtSGVDGln0P?qbQ\qRG-K!i)^QLrsZgMh$^jgV^" -qqp0,ilc2l1pT%.f50c'(6.jp\6dnJ]3fu*PGuIpQPJN%?:+-@.uAL.:ZCcNIe!#b -`AVW[fpkQp*55.iH"S]s;+llu9Fo0fKurGt09GdSEO7aVR-1"6MKP*fJ/9cV]Q_=0!1`;:\IN;sU!(YZj;q7(Q_E[s^;a*,`W8HM5AG -]$n.S5.B8#Y@I!khn1K+/kPpn1:+ZhR[Qoih7LrTn=C@\G^g9,]8j2bIOrB]h]_(Y -Ti@&*B>4#\oADZTUEi#r3E'm57$"h?:t8c[hoVT>1+b+K#*C*UpeZ?2IuQ -n9tu`o0&'Pq>PKeQ4La)5@<1As+mHLh#$h1JQMhXfDKspan!*ol29d$lVHC;,)#s^ -r;`qd!:8kIO9XGN"Ta],!X"PaC\Xg:V?o#AgS'Wb]%OF:_s>_#mRV\#S;S=0Na4S*sLl8Y4-oH -6:V8W7g;eUF0Lo:%93_9]aD!A$OrR,Ba4q26E8D/$R.S*%aaWOnFI/W,7Nq$#E\f00_l8W$P:07h2"K0BJQ4-#nZ3D -&^_XCE;mrK.*0d<&jf#"d5)GpV%G)k&Sg$hYp0pE2\NAe'/<2$YqZod4V^gu((=C\ -k=64;2HTET`pn$`ED[?GFN'AF(+k.TOb4L4h\Khm(9n^_E1[uAAJ`a8(i^'(lqnT3 -Rh$+!)UYl19Ig($A8?1JQUVW,CeGaa$997[>0;Z9ALq8:Eo<$-EGN?&htah -=XVB;-Sf(G#Mgc.ZRE,%-LgIPl`2CR.k,Lg.LP>WEeM*(>q,+:.5:WKl^98=I4;H0 -/$bp$8ui1pW?s'0.kod11:\tjgF[2b/+Nuuo#EA?Eqg9k@OYA2CMPSDi@V:a0<8G4 -1'93clS-I>if`f&l.%Jg5;BJJ0CZk6lT6e?j"bZd1CdAXOCK\$[F\;@lH1i -3:NV$Wq//hh`5b-3XIu@K+Bq3(F!pa$$2^udqq,p,:bL]:>t+?J6IZ$+0NCU-:IVOj8$lbs7r_";@.+e]UpQ7Se9;'QPeqN"4HuC- -FJa-OM`)*.8lH+%jjB"VetaZr9RR[fj(fT[^jr[,F]c -l>@99.9,+*eEK\GMbLMR1K:&2[.R2E$H7"#(c;;c<>;)@))7B_!]9!UPoW]O.VZ$p --$:W4eKI_23ff/S+S!?DX2.9J7C1VNb1GrjN -ogo3"FI?-VU%JRX*;J2$k`#a+g#Ok'[M[M`K(.^p+q6$=BR2AKHi3E7scq\CIm -2F1g'9/r5.q"?P,Q;qBP;#&UDOOci:[U!FpCGFCRpJt[`G''0rE:rpLNYZ1cNM(1IZI95M^fC==B$YO\ikkG.4p^r!8)!H2YI+STV(`e.Z -.r0AXkI;X^GVt%rr@/XDHak@^(d3K'9"S1jKfCdL=AXA^=F#-rH!!KlQrSglC,%u1 -LDY)f=EfOfH\^7'L_tc#=GM^"Mhp#HM&;G5=I4l3Ru,diMAW+G=Jq%DX,>Q5M\rdY -=LX3U]8P=VN#9Hk=N?AfbDb*"N>U-(=P&P"gPskCNYpf:=Qb^3l]0WdNu7JL=SIlD -qiBD0O;S.^=U1%V$]s$POVngp=Vm3g)j/eqOr5L-=XTB#/!AR=P8Q0?=G_d_m?;f[ -PSliQ=\"^E99e+*Po3Mc=]^lV>F!lKQ5O1u=_F%gCR3XlQPjk2=a-4#H^EE8Ql1OD -=biB4MjW0_!#^ua[B5hlS!hs%RMhlh=f7^VX.%_FRi/Q%=gslg]:7KgS/K57=i[&# -bFI83SJfnI=kAM`Q^u*>L'fMeP\m":=.ZQtSgZ1*<]a+1hk/<G,Vc -T]^r^;g"bDs.RKbTe^2QXtQM1&Ya.pU8N:1E2THl+/@,*TF'#ZZ+1'2%ZRq`SV[9^l0sEFL['$C-H:>5'5IJUW[BA>o/Vg]F -n[>F)[V^T#FEOtf?anR0\$HCM/UOr'8[pQ.\8L93G!EM6J%=+=\MgY%Z^nZhM7U&= -]'i"sG,)WqT=`36\>Irl/N(-n8%Z+n]WY2EFd'L#^V._7]ra*'B$n>>`P+"-]^ufL -G4WHFhnR88^TXWP/L/!AahKZ<^i/&:HH!]^s1u[b^p4cloRXik$,WnU_XH[&G8%kV -+2c'__Bu>%-DeY.-*/qY`2WLKG9=`85K1g>`NTro1]>1;ou=B%`c+;aG;I9%?cU@C -`:Sc&-qD=jBui,@aC_!PE-o\hJ&g?5Bj@@?*,i]aWDn8Ig^gNhp7/(cI";l0`fX; -J^X4=]@/*:e)j`]4Z1X\-e,Rp -_0f,/I65u7qpf]2ea]Wi0n7bj7FZ"-cWC.t]j'*TYLddEeFmP-4\a#i@Fj]Mf/Q"H -rHm4TFkLdWfQPrZk?5MRl)r]Wq -iZ9?(?74a(/)oD=iuU#:?8po946,0^j;p\L?:X(J9B=r*jW7@^?NO^KjrS$p -?>&DlCZaJlk8n^-??bS(Hfs78kT5B??AIa9Ms0#YkoQ&Q?C0oJS*Ae%l5l_c?Dm([ -X6SQFlQ3Cu?FT6l]Be=gllO(2?H;E(bO"*3m2jaD?J"S9g[3kTmN1EV?K^aJlgEWu -miM)h?MEo[qsWDAn/hc%?O-(m$h3$anK/G7?Pi7))tDf-nfK+I?RPE:/+VRNo,fd[ -?T7SK47h>ooH-Hm?Usa\9D%+;ocI-*?WZom>P6l\p)df7Kg\p$erZC2"?g%E\li,f1ru^k4?haSmqu=M5s+*Gn -OB==\&IF.XiK2]64s:Mp7,j>2ZsGI)NCMrjf^sVY+d#=VP$'W5;(7c&jc\;=^0raa -9]hOA[,,d_SPJ@3g%>8p6(q-=PZfpcO\)BIl'0nE5+tiQ<9f`P[9g+@X]FbQg@]p2 -@Bir$QX(B>jdq_[GLG!]jC/og\(RIJ\ba`Qs;Nk&W+J9nX/*T -59Z02AFc-n[U1bWc"?R8h"H4`U![QGRU%hD;5r)\opX][^L=D#D"a?([bl)8h/;tV -h=gl"_;TA.S6e,rOic^*q4-;c5G?KhFS_P7[pQDnm<8AthY2N9iUM0jSmOFKdHU=M -rLVnj^Z"_YI/]aF\)6`OrI4d=ht-jJ5VNlW!^NtH%g50P<#5a)Y]Lrm684WO$::u( -0+:3%e2Ik)Yk1-k6noBG&k&u]:D?5P<*'i(Z#j=i7PU-?)Fh!=D]D8%e9;s(Z1NMg -82:m7,"T!rO!I:P<0nq'Z?2]e8huX/.S@"RY:N=%e@.&'ZLkmc9J[C'1/,#2cSS?P -<7a$&ZZP(a:,A-t3_m#gmlXB%eFu.&Zh48_:c&ml6;Y$H%n'8O<>S,%ZumH];DaXd -8lE%(02,;$eMg6%[.QX[<&GC\;H1%]:K1=O#r&=Dd6@$eTY>$ -[Io#W=>gnL@T^&rO(;BOW3DIAiZ/iRV'+=Dk(H# -ep!]u\b:NGBK?oaU1h+rO/-JN@-2ca7ON%:QV&LCiQ06R[3j@Iud?&I'CH3/J5V1e3B7-7(t1FVA5+:Po`R.3qHN -'k4OOM\0PQ7C]lE@e=#^;,/i836<%J1hT-o?8P-]fc+FCDiPFJej2jg*FlI#NtLM; -8$^edUZ?od&dCWm3=-j#>]c(U-:LJ9)'`[6G)sS96lWW[;WOiLP%:RdaS@hDAFuLY -&qlH?Z:cH;]VHs]>pN$V7g5_'YEfg@=\Cas.gZou2Nm!m8u._)V7`ssP6PGh3JfJ" -N2S!5C/`=XR4fi()3[uS@net_2.j5II<,+BbbK#5MEK0.d=MrN\[a/$K\2h/VKGYE -f^Yh)+.L['F-QL97;!;X44D-/:0H=9BCu4s'Eu`WU+\e[PSKWD+HFcG,W/V1[Ugf&j#an%fjS#0e6BmWnq*o(@0;]H'R5DK=7-U\I -V6cU!;90hMWEgdFoG3O[$?&b>:f1ILJ:k@0.Y)rLh:SEcc8k(`^ -\@3/S]N'.E2=%lA9,cm(R?MZ7:Gj!l&E^A7[CE$"B-T.'$MJ#V)6Z>>4UIg(2JreRk:'o# -".f!0N6^'33_\=WSo\c>Y2mbj)/V951^9;nqM.p_4\:Sh?G4ePBjL]3gSW>&'Y,p;:Ih6Gp0pf&Gk;3!qH>L9/\p")Ih](a,81]%l -2l=UNg]M9X%I?YFA_Psf%$U'aj2-]Qg"os%M/b^.`FHh;eQ2a>lb-rK-/S.0HYZi) -*Mp,;:D(marl/u]/^&E`0BNk(8Fc*5_k]LJY$9A-m1(qn[!+Lg*,D&7@V;J#A.=^W -fWO`SL!4je:[/ri.?t?WlWahpZtfRIblKh=Vf3g@RQBmJUp'p)dr5>X)NJ^=I/q -?XL&7^B*[#0>[!rch)Zjn_l\CB)B.dr$d?3s#!c@S^O,E6Ms`g!r'9'8d"gOj!)=o_SK1q6SpU:6o:BSRR%oF -_(4K]4=7;>2T$dp]3EWC6hqp"007Dr_+Rknft -.s44;^URMn_k]:\S.e94W^5rH6<"<1lnCTH9Z4k'`#Jii/1kpQ`H52#JWDVZ -<^>/4$FEu*/3pa>6cH]6_t422A.(i4o0q//_INSa<&d9>=N4l``cPj]b:Z2@j@2gK -^k>P$S8:[%D$o'6[;(=SS5?gJGsBc^6S(r#jCh%_FiS$9R+g%Y_qrDkYX=ph^hdc' -'R?m7F/5=F7LX9,ZlI(j2b2A47nda?*-XqQKudeZQs-W4Mjh[J'!]YpaGZ\01GQK, -369g$6B$!%Hlp:kM9$s$aE3Wf7$PejHpL#taLf7#XFj!3T#N:W_u*=Te7Cs'Ou,Qc -_pj=\>bK4RTunNoa_Zi+&?s'al:;>2a@NSY>[524YK+;:7BEE/*/d8XU<;Q"b4Mm& -bc&MIUl.'taXF&[1O7-]X,E4Lb*9cfXagKD^kK]mgcEuo_`9be!mEXe\cLgSO"Rs_On]rKOcSY7>7.ef) -p!71BcZJp-K_WlXq9Pl5ca9!dBsq@`>m:U*RWsidIeU0"X)5.+jqY\dPW8t73p;]-.6?OdWHqcKdbB7 -.FP%Bd^:UR`@THf/^i`5de,9B"YeC?1".F(dkrr175WIn2:H+pdrdUuKfIPH3Rafc -e$V9d`B;W"4k&LVe+GrT"[LQP6.@2Ie29VC77>X*7FYm5?J_29#fJS<67>0;nL"KskfQDu%Ko"BHM:eY^fX6Xi`JiI"NS*?Qf_(g@_Z("gH_rZ.gS1gGQ=l -7C:fL[G,9$gNC![Kt,m&\_EslgU4ZJ`OssU^"_Y_g\&>:"i/n._;$?Rgbm")7E!t] -`S>%Egi^ZmKui&7akW`8gpP>\`Q[,fc.qF+h"B"L"jl'?dG6+sh)3[;7F^-ne_Off -h0%?*L"P4Hg"iLYh6l"n`SB;"h;.2Lh=][^"lS5PiSGm?hDO?M7HE<*jkaS2hKA#< -L$7BYl/&9%hR2\+`U)I3mG?smhY$?p"n:Can_YY`h_k#_7J,J;p"s?Shf\\NL%sPj -q;8%FhmN@=`VeWDrSQ`9ht@$-"p!Qs!T5:+i&1\q7KhXM"lNtsi-#@`L'Z_'$/hZf -i3j$O`Oq!4~> -grestore -showpage -%%PageTrailer -pdfEndPage -%%Trailer -end -%%DocumentSuppliedResources: -%%EOF diff --git a/packages/python/plotly/plotly/tests/test_orca/images/linux/topofig.eps b/packages/python/plotly/plotly/tests/test_orca/images/linux/topofig.eps deleted file mode 100644 index 715d6d10f77..00000000000 --- a/packages/python/plotly/plotly/tests/test_orca/images/linux/topofig.eps +++ /dev/null @@ -1,2162 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%Produced by poppler pdftops version: 22.02.0 (http://poppler.freedesktop.org) -%%Creator: Chromium -%%LanguageLevel: 2 -%%DocumentSuppliedResources: (atend) -%%BoundingBox: 0 0 529 379 -%%HiResBoundingBox: 0 0 529 379 -%%DocumentSuppliedResources: (atend) -%%EndComments -%%BeginProlog -%%BeginResource: procset xpdf 3.00 0 -%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC -/xpdf 75 dict def xpdf begin -% PDF special state -/pdfDictSize 15 def -/pdfSetup { - /setpagedevice where { - pop 2 dict begin - /Policies 1 dict dup begin /PageSize 6 def end def - { /Duplex true def } if - currentdict end setpagedevice - } { - pop - } ifelse -} def -/pdfSetupPaper { - % Change paper size, but only if different from previous paper size otherwise - % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size - % so we use the same when checking if the size changes. - /setpagedevice where { - pop currentpagedevice - /PageSize known { - 2 copy - currentpagedevice /PageSize get aload pop - exch 4 1 roll - sub abs 5 gt - 3 1 roll - sub abs 5 gt - or - } { - true - } ifelse - { - 2 array astore - 2 dict begin - /PageSize exch def - /ImagingBBox null def - currentdict end - setpagedevice - } { - pop pop - } ifelse - } { - pop - } ifelse -} def -/pdfStartPage { - pdfDictSize dict begin - /pdfFillCS [] def - /pdfFillXform {} def - /pdfStrokeCS [] def - /pdfStrokeXform {} def - /pdfFill [0] def - /pdfStroke [0] def - /pdfFillOP false def - /pdfStrokeOP false def - /pdfLastFill false def - /pdfLastStroke false def - /pdfTextMat [1 0 0 1 0 0] def - /pdfFontSize 0 def - /pdfCharSpacing 0 def - /pdfTextRender 0 def - /pdfPatternCS false def - /pdfTextRise 0 def - /pdfWordSpacing 0 def - /pdfHorizScaling 1 def - /pdfTextClipPath [] def -} def -/pdfEndPage { end } def -% PDF color state -/cs { /pdfFillXform exch def dup /pdfFillCS exch def - setcolorspace } def -/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def - setcolorspace } def -/sc { pdfLastFill not { pdfFillCS setcolorspace } if - dup /pdfFill exch def aload pop pdfFillXform setcolor - /pdfLastFill true def /pdfLastStroke false def } def -/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if - dup /pdfStroke exch def aload pop pdfStrokeXform setcolor - /pdfLastStroke true def /pdfLastFill false def } def -/op { /pdfFillOP exch def - pdfLastFill { pdfFillOP setoverprint } if } def -/OP { /pdfStrokeOP exch def - pdfLastStroke { pdfStrokeOP setoverprint } if } def -/fCol { - pdfLastFill not { - pdfFillCS setcolorspace - pdfFill aload pop pdfFillXform setcolor - pdfFillOP setoverprint - /pdfLastFill true def /pdfLastStroke false def - } if -} def -/sCol { - pdfLastStroke not { - pdfStrokeCS setcolorspace - pdfStroke aload pop pdfStrokeXform setcolor - pdfStrokeOP setoverprint - /pdfLastStroke true def /pdfLastFill false def - } if -} def -% build a font -/pdfMakeFont { - 4 3 roll findfont - 4 2 roll matrix scale makefont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /Encoding exch def - currentdict - end - definefont pop -} def -/pdfMakeFont16 { - exch findfont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /WMode exch def - currentdict - end - definefont pop -} def -% graphics state operators -/q { gsave pdfDictSize dict begin } def -/Q { - end grestore - /pdfLastFill where { - pop - pdfLastFill { - pdfFillOP setoverprint - } { - pdfStrokeOP setoverprint - } ifelse - } if -} def -/cm { concat } def -/d { setdash } def -/i { setflat } def -/j { setlinejoin } def -/J { setlinecap } def -/M { setmiterlimit } def -/w { setlinewidth } def -% path segment operators -/m { moveto } def -/l { lineto } def -/c { curveto } def -/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } def -/h { closepath } def -% path painting operators -/S { sCol stroke } def -/Sf { fCol stroke } def -/f { fCol fill } def -/f* { fCol eofill } def -% clipping operators -/W { clip newpath } def -/W* { eoclip newpath } def -/Ws { strokepath clip newpath } def -% text state operators -/Tc { /pdfCharSpacing exch def } def -/Tf { dup /pdfFontSize exch def - dup pdfHorizScaling mul exch matrix scale - pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put - exch findfont exch makefont setfont } def -/Tr { /pdfTextRender exch def } def -/Tp { /pdfPatternCS exch def } def -/Ts { /pdfTextRise exch def } def -/Tw { /pdfWordSpacing exch def } def -/Tz { /pdfHorizScaling exch def } def -% text positioning operators -/Td { pdfTextMat transform moveto } def -/Tm { /pdfTextMat exch def } def -% text string operators -/xyshow where { - pop - /xyshow2 { - dup length array - 0 2 2 index length 1 sub { - 2 index 1 index 2 copy get 3 1 roll 1 add get - pdfTextMat dtransform - 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put - } for - exch pop - xyshow - } def -}{ - /xyshow2 { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval show moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval show moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/cshow where { - pop - /xycp { - 0 3 2 roll - { - pop pop currentpoint 3 2 roll - 1 string dup 0 4 3 roll put false charpath moveto - 2 copy get 2 index 2 index 1 add get - pdfTextMat dtransform rmoveto - 2 add - } exch cshow - pop pop - } def -}{ - /xycp { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval false charpath moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval false charpath moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/Tj { - fCol - 0 pdfTextRise pdfTextMat dtransform rmoveto - currentpoint 4 2 roll - pdfTextRender 1 and 0 eq { - 2 copy xyshow2 - } if - pdfTextRender 3 and dup 1 eq exch 2 eq or { - 3 index 3 index moveto - 2 copy - currentfont /FontType get 3 eq { fCol } { sCol } ifelse - xycp currentpoint stroke moveto - } if - pdfTextRender 4 and 0 ne { - 4 2 roll moveto xycp - /pdfTextClipPath [ pdfTextClipPath aload pop - {/moveto cvx} - {/lineto cvx} - {/curveto cvx} - {/closepath cvx} - pathforall ] def - currentpoint newpath moveto - } { - pop pop pop pop - } ifelse - 0 pdfTextRise neg pdfTextMat dtransform rmoveto -} def -/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0 - pdfTextMat dtransform rmoveto } def -/TJmV { 0.001 mul pdfFontSize mul neg 0 exch - pdfTextMat dtransform rmoveto } def -/Tclip { pdfTextClipPath cvx exec clip newpath - /pdfTextClipPath [] def } def -/Tclip* { pdfTextClipPath cvx exec eoclip newpath - /pdfTextClipPath [] def } def -% Level 2/3 image operators -/pdfImBuf 100 string def -/pdfImStr { - 2 copy exch length lt { - 2 copy get exch 1 add exch - } { - () - } ifelse -} def -/skipEOD { - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pdfIm { image skipEOD } def -/pdfImM { fCol imagemask skipEOD } def -/pr { 2 index 2 index 3 2 roll putinterval 4 add } def -/pdfImClip { - gsave - 0 2 4 index length 1 sub { - dup 4 index exch 2 copy - get 5 index div put - 1 add 3 index exch 2 copy - get 3 index div put - } for - pop pop rectclip -} def -/pdfImClipEnd { grestore } def -% shading operators -/colordelta { - false 0 1 3 index length 1 sub { - dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { - pop true - } if - } for - exch pop exch pop -} def -/funcCol { func n array astore } def -/funcSH { - dup 0 eq { - true - } { - dup 6 eq { - false - } { - 4 index 4 index funcCol dup - 6 index 4 index funcCol dup - 3 1 roll colordelta 3 1 roll - 5 index 5 index funcCol dup - 3 1 roll colordelta 3 1 roll - 6 index 8 index funcCol dup - 3 1 roll colordelta 3 1 roll - colordelta or or or - } ifelse - } ifelse - { - 1 add - 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch - 6 index 6 index 4 index 4 index 4 index funcSH - 2 index 6 index 6 index 4 index 4 index funcSH - 6 index 2 index 4 index 6 index 4 index funcSH - 5 3 roll 3 2 roll funcSH pop pop - } { - pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul - funcCol sc - dup 4 index exch mat transform m - 3 index 3 index mat transform l - 1 index 3 index mat transform l - mat transform l pop pop h f* - } ifelse -} def -/axialCol { - dup 0 lt { - pop t0 - } { - dup 1 gt { - pop t1 - } { - dt mul t0 add - } ifelse - } ifelse - func n array astore -} def -/axialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index axialCol 2 index axialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index axialSH - exch 3 2 roll axialSH - } { - pop 2 copy add 0.5 mul - axialCol sc - exch dup dx mul x0 add exch dy mul y0 add - 3 2 roll dup dx mul x0 add exch dy mul y0 add - dx abs dy abs ge { - 2 copy yMin sub dy mul dx div add yMin m - yMax sub dy mul dx div add yMax l - 2 copy yMax sub dy mul dx div add yMax l - yMin sub dy mul dx div add yMin l - h f* - } { - exch 2 copy xMin sub dx mul dy div add xMin exch m - xMax sub dx mul dy div add xMax exch l - exch 2 copy xMax sub dx mul dy div add xMax exch l - xMin sub dx mul dy div add xMin exch l - h f* - } ifelse - } ifelse -} def -/radialCol { - dup t0 lt { - pop t0 - } { - dup t1 gt { - pop t1 - } if - } ifelse - func n array astore -} def -/radialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index dt mul t0 add radialCol - 2 index dt mul t0 add radialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index radialSH - exch 3 2 roll radialSH - } { - pop 2 copy add 0.5 mul dt mul t0 add - radialCol sc - encl { - exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 0 360 arc h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 360 0 arcn h f - } { - 2 copy - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arcn - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arcn h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arc - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arc h f - } ifelse - } ifelse -} def -end -%%EndResource -%%EndProlog -%%BeginSetup -xpdf begin -%%EndSetup -pdfStartPage -%%EndPageSetup -gsave -[528.96 0 0 378.96 0 0] concat -/DeviceRGB setcolorspace -<< - /ImageType 1 - /Width 2204 - /Height 1579 - /ImageMatrix [2204 0 0 -1579 0 1579] - /BitsPerComponent 8 - /Decode [0 1 0 1 0 1] - /DataSource currentfile - /ASCII85Decode filter - /LZWDecode filter ->> -image -J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H ->q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA -=M/6)*KS9PE`kN%="Tc_Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"P -DKfeXi0S^6MAH=;fBr>1IXb_>kP+oS^^pnX!PjdJ%0OEX9GI`IODGpB_@VYP -$,Ve*/ITH-bV]jIOR,+@`"`Y"/@)9.f?D&^M-b]OrH -OmIKN1*g(o[EC"elTX_ZZ,c*_ECQL2A(g_UF= -ESQm4c#_\W:"=CBQYkQ&hA;15H/=mim3UV:)/KA -Qu3q"iY[\%M;jo*/W8X+c8CUAR-m+uj;AFrOlVo_9p=ZV:0!S@R;Q;sjr'1jRHBp? -D4B]+c?5]@RI5KqkSaqbU$.ptNMG_V:6h[?RVn[ol5G\ZWToqTXfLb+cF'e?RdRkm -ll-GRZ0[r4c*QdV:=Zc>Rr7&kmMh2J\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U -:DLk=S8TFgnf3]:amtt*/^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sj*caE0; -T'sA]r#ZHgnbf"4c1ClU:Y#.:T5WQ[rZ@3_q>R"imJHo*ch78:TC;^Xhuj(2:_!Ol -=:G;h6j\E@/d=Sn*moVE0nrNM)FIVD%H55cLJ[C[6eHetiWMQ';%=d<=H*pP6qN54/ga!=SJ1"9 -;2S4G.RdIA(#m/7Mc"@E7G,9iirieL;3!D$=Nq`D6tqWXXu8c%h&GC-EK3oA3_*<> -*TP(`O&>=/8(db^j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;-03"4P>Z9n -8_H6SjTM9A;N=XI=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_HjoiMf -;\!81=cG/u7*1iq/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>taF90r@pq -RT!C,:$KVWVc<)U;qcXql30JP<=Ya&>)cDE77jIY/uDV%SQ"g-;6!VkW`<6)0U497;8l(Y-qBbh-93!ENWt#)=5*U[ -lihsE7G$-7>\9M0#h#J*FnGiOg8"_b#qq#AaIC(ZW:th=kc)Pm002j>8i!7B*[qY1?e2?#/h]Z*m]Yg07cuD=,MFREmKLG:E*Xj7EN)A -0'6EnSTF4QdCNCSlKqH^7HqKeY4c2Vh0\UE -n\/)MqHmIoIIG/N^K9k&?ebO/n-/p/=:YI@>Rc8R7L?n50*Yh>*JYU(F7Oc;YY81U&?&S6-0ud>A)Im#hNUb"Ka&qdO -A))KnnchD$=Uu]e>`Fm:7S1^)0.(5bSWiW!;9E$;.V2keQ1Dptb?8a9A_atco*/XI -=cY=M>g8].7VU+MY;U"Jh4+"jER%_53bM^bSb'jHcWT^#BAEHXoEKln=qn*M" -7Z#Mr01KX2*M`7]Oj[E/8nhQ_V=_cqdopZbC#(qMo`h,>>)uQr>tq&.D\XnB]Ef37WLCYaEBp'/@c>7Y1Z?&c,_7`j=f04o%VS[8$EdFqf# -C2I7Y[J%VngKST6D;Dn7pBKU3>Eh7NE9n_RKrH>d*V^%]PB -hcoPuDr(B,p]giX>RuF*?4FaG7g\-Z08=H&*Q.Z-&`R%kMK)rS`V@Ikj'6M_ES`k! -q$/)(>`Y%g?;8Q;7k*P)YEj4c?-E&!1$2`eRWDePc2#C?k?RJIF5D>kq?K=M>n>6Gjo!/eo3Q@\H/CdJrSb)i9dJ@3Gl@!$Ap&<"bqd4:0 -IG_a4rs.N\?]Xc,?d8EH8*TtZYP*G&h>@5-nbunAqL;l>rVsq6s'P6oJ)C2(n,WMC -"TWKJ!3cn4n.>[T'`i7k!O*RFn0%ie,m&$7!jF6Xn1b#!2$7eX"0aojn3I1270IR$ -"L(T'n50?C<<[>E"gD89n6lMTAHm*f#-_qKn8S[eFU)l2#I&U]n::j!Ka;XS#dB9o -n<"#2PmMDt$*]s,n=^1CV$_1@$F$W>n?E?T[0pra$a@;PnA,Me`=-_-%'[tbnBh\! -eI?KN%C"XtnDOj2jUQ7o%^>=1nF7#Coac$;&$Z!CnGs1U"V>Y[&?uZUnIZ?f'bPF' -&[<>gnKAN",nb2H'!X#$nM(\32%ssi'BLV'sV$Z -nR31fAJT9"(9q]lnSo@"FVf%C(U8B)nUVN3Kc"fd(pT&;nW=\DPo4S0)6o_MnY$jU -V&F?Q)R6C_nZa#f[2X+r)mR'qn\H2"`>im>*3ma.n^/@3eK&Y_*O4E@n_kNDjW8F+ -*jP)RnaR\UocJ2L+0kbdnc9jg"X%gl+L2G!ne!$#'d7T8+gN+3nf]24,pI@Y,-idE -nhD@E2'[-%,I0HWnj+NV73lnF,dL,inkg\g<@)Zg-*gf&nmNk#AL;G3-F.J8no6$4 -FXM3T-aJ.Jnpr2EKd^tu.'eg\nrY@VPppaA.C,Knnt@NgV(-Mb.^H0+o!']#[4?:. -/$ci=o"ck4`@Q&O/@*MOo$K$EeLbgp/[F1ao&22VjXtT<0!ajso'n@goe1@]0=(O0 -o)UO$"Yb!(0XD3Bo+<]5'esbI0s_lTo-#kF,r0Nj1:&Pfo.`$W2)B;61UB5#o0G2h -75T'W1p]n5o2.A$8:o:\3$V)i[s3jYqLo*OF`B84`4L<9p -o?f]WeNJ!,4gWs-oAMkhjZ[bM5-sW?oC5%$ofmNn5I:;QoDq36"[I/8n_pJdU!Z-t -'1!"k# -7+=:eoNapC2aqh&&/8>b-#nP>DB:j!4B2#gE+"&&dR;"Y,loc6peGu7Qi -mPP2#2'l-8$WD1*;mb(Q[6X)D*%]Vr<4+_ceNH].6WJ$);^07^'k()7AQ:U%7Whj7 -mYOsfcmuMH=1)[BeSA/bEEI*s=$j;s'p2SjPuoo3.']#eXKZ@ -Tj)Cd>6:R('u=)H`EP4A=k1&fmL*8WVC@e\?+%^Ye]V/sd9^\U?535aFmWK-oj0NO -?Sj9>Q2o_UrEeK5@!23Oeb`bJ'hFVm@BHS=(!J%K+^oOA@5]];(*-m:Mdj+#-Pe^O -Q9f!R6Y#au@oc:S[Rjl87qHj4A[Y0AoX/6'ACL6N@THWD(0tPGF_BU3pAp4$d.")&m"B\&_f[\7C.ULU`tC96f:Q9Au+[;&aQC%f/1i[>dT`#\Qi -*VQUOm([<;DemqWCNeHJJh_)Mj_T,'CmO=%G0t4ZR;G9-D>*pFf)][Za_j$*DV#>8 -[h3SfbAUH!a-QKIW;"*0_SFE^Gl[_m/F -3H]OGF#Q=+lrS9QCNPnWFSBQH@OlSf2g)TRF$_>r_9*fXJTt7KG^"pd(QcFVA1!X] -H+.X9p+:=:FaA7WEFLSGf8Fu7M0jHOH^BA12o*,8NHA5pI(,Yof:c.&/UEb1I@%#Z -f=QJj[=22jI^cq:2t4F\a*)[UJ%*gTpWmT+++;bAJ@@Uh([$?.m=A@'J[cSEp[`te -NIPDIJ2dFYfE#6$F+DmLICAZlp`G'37=j)]KK)PT=AZGn-mfccKt&dipBDi:4,.ra -,+(rVpe?N'98@b3H[&JElU-A8?\R,gLq&:3=/CP:Q$9]eLKJn[pmm:%H&>^TMQ7bR -6=#EB@>e6I;Kp`LG\MBSD2MGhMKmC)\C$8&+c=q)Y;ia4\@IVZ[uPU^,$;aCpcj/FW=-4@lNg8R[3?=%qCQDUOQ+8?/fe&Kaq32'kPM'f:R;\;"3L5D$CY7U1 -fn#8gK4!;/Nu:lHi['m.Q'PQ_RCSZPf[lIDh3U.$QPlol=g=Db8!hm>R!HB4=i"BH -Mj7G+IJK(pR@g$1d@GQVS[[jQ7B`/jZ(>+_ReblOH+B/b^Qc:HT6A!oH&\3DS"86c -SQZ>mq@0,W[@ZK,T"4$QqAl9`(h21h-!C&Fm8)5&sUOr=_'q@TMA'r3l^LUng. -q/R`A,GH)ZU&&&h>#&NF.O@,1T=SlVq8]#9aeRQ_Ufr2E\q-Z'KnMKr9mPeEH<6s> ->H'ZEW2:T4@S1'GJ;liG+ -WWG>`H>fgPjc6&[URH=Eg'=\t]rQJTYBp/N>"u,PJ#uns+SuJI3g[*5&Xtib@/AY' ->2cbJkGl)oWr"BO(rriVqlh"uZb&*$q#@Up=g7cpZ!0l+HIoMn"/c2^Z5kE_RgW$-1Q"" -+2Bt__n5gj)qCj6&]+Aa_-B^Q]MZV9qniMW_OL5;r*?]m=C&C,+Zqd)qupGSe$A`$ -[_,DT>^sgW;oi3pX.3cY>[tY+PK"OLaQ;$nU'o!]4i]Y3\_KQ>r-cY6[E-"kaIKre -H[!TL$d!er0hj2:d*$e`FWrh*]dWED?C%c;tD'h,W"=L"JPFeX_WN -G^\/[5Lquces`)]7Ch#u6/#Ue?u<`>MWT:h>Q*^^(Hl@YMNHe -,Aj^)HYrak=8Q0A48krE-l5&0QC -F5u,V[/P;TSk8-0J#9o+jVmUOhOX!sQgA%Jm!d4G\jgRdUZVPumCoXgh)FWsea$Q+ -lSsaX5)JU\%O-ALm%41Brr;H%!UtILCE@9YDXH_=(%*'2mR>IihRE&>JaXVaiOlMd -5;DZ"1[na3o7&odU+dM%X;sMooUeYG^JXY'7V.&[j%f.7Ic'i\&+SFhnmrkI^ss5mLWWV-:ts1bc\ -%qgO+"U'Cm@1[Z_)Arg1_r;7FPYNYBMacYKu$tID0(WGT6>a!JA9uE>VAL -U.XHc47Uu4IRbiNb@Ips>g?\6S]f,[c<$$]8#"FGo\,igY>MCOCN^WpQFgk9g?eOf -S]:,:^"mV9S,O3/M88.jq#"Gg09sfCoD+peG=SX]lZB`Z?I)udhZ^"@5jX%0o2gKHgdi -E24ul6L_oL%7>*q3tEU8=qZS.0dK7&6r??F'ZBN@>8BZt>[i?'nYBq>7e+E<*Ck,1 -HQPcK"G7jgE[6Pf8Ff04,tW(?b&SOYET3Illrt,Q9(K?q.a)kN\LgI\"MZZadj2gd -YR(t*c-:?=htKjpmtd?J'C1[o9G_/ss"bU5cFsW&V=S>1IAQa1fRqGmtKqepr2Pcs[b"8,JD+o-.cYm$s"hAVW -pDq.l>jNCK3).k]gNHlhHU1/!GGXJL;4#8fI,=VJqgMoHh?/78=9]"_2jB"V:Z5De -4bhp?FsDfPG^_0"@b@I%BiUEL(i3]-#"+M`GpZ1JAGJPV?KH=\=^Pb9G%23I3MpS] -B)0GfSS*61H_4sI#(rU!p:cH#B_K;MF(ohNRriAuAtQ&;3i8UO/D!nXFmFA)]/%e&D#5:&ZY`o9f=,V/L=k)9354^;meFfn]5LonpV1XZ#5Q)Rn-4W*j02l" -`Gp9<)olsrKjgB])/h%JEr;JTaRafB43r!H#=Hm\I4%\:FRY$E-ts]$U7,i.T!-di -I@"a%pALn/1aJEB]rlRgB#2#prZ:+ZGlBXciq\$nRH8_.LI1Tij6\k1I+[g"#&76CMM3$485:E-; -@Y@[;;-#&18?iq>e6@inFI,6@_#\$S#(TQs1IcW:)Il`^NKLY.7ekn0i3XA^CL!7D -3:R;be0L*;k!$hm]*[G$.&c[(]fN&Jg3QPOpJ>T.6_@/cM:?j6;JK0DTbJDM<8%XVlBP;JPuaqcHEgLc ->o&Hb?EViQ>Y4/`*3>BRZIV(]8#[4KXclnkP,`(uBmk$!29rg8>4Gl>FYp"]p79h3 -HXLX^K!5SgT@@'W:omAZYuB5U=Sj7PCm--E'gBf?lS+-2SXZsOG0a=g6"k*K)lo9j -Y=E%n=tN`e[?[W>g>oXaX*#_sQ*?P*WpagUc+1l,=ZDK;V]G?4$8Ha&0>XdQKhD9:V'_0Bl5j1L_Eo3QH=Br_E8]oskHg=ot^ -Dh[ek(Y#tL.r/teCag[^#2e1irIAhk"2FUH*F([eEj/RN_3Ze[@(Qh=/qqckQqn)c -bL)&`ef2M[DXUld6$F_0*Q4>3'4Q>dMK)U0]i__H&mOIGYGO%oR*H7D]Ch2&c2=^] -'*2KWI?8IR6c]!;6K!eEK5cQpuutMI0ZE&c@XYOpKhY1GG0+Z_pOqi7I5GYiCONCfpY9?kpP)^[[,Cr -N:Te]I5eT*G1G?:GAh?s_74CfWQgd;eRn2UX*'Heh4(LLhi2?_FgN\FgA>1EII4al -#5[3a4(2rBPJDDJ"5+S77r8_JZhRSHiJ`,'E;h$!;81]3]N7jJ/ht@jf,Nb?Ft[`. -5gfrSmbM-7G4KM%]JlFijca"=Dr+p;3L9R)SB%(gNW6h?f)k,_':r-/&&S*;%Hq(6 -U0UMWdX"tf-9P5)D5s)S3gWe1SQDk7Fe?a!03bgeK9C8(_:SPuHe*SJH#h^5bP@bg -m@CGiF+3)!H-\_Sj-`\5BIN& -N"WrG/&2i66!?.[$iRi`_nfk$6(AiZX;`Y%!]Mo8#oj,bli]WH"UcjH5^Xb@F6s8J -$GoIF6<"B1A(%YN&4#jt6B!B[$edm//3u*E5t!=O//uJ(0H\LT6Q?q-bV6ps1daqo -6Wu'-bN?CjOhprU64>nA!rJPL,=$oF2l%]c>X(Pk5JhM-\Z@2GS3oW-6pdr,6G+ne -bV$hM847es6Y&eWWLZC%(W=N67'o]Wlq^%I:`6>n3ma*YZoQ)^3k7'j_os=Be-SMW -5XgW67@ZZL*(%S;6c;r07E_>lA4]12?por]_W4P5/7TG(9L_]2`6;`2ChH4bBL[h# -73!=8J28iZePZl*YF@SA2`OoKq`-4^fGV3N67N?_D -'RN:HH_7rb8)/P*b[j2lA]2N9a;fe&/;$JS@n*P77^3=jgf2@AP_ffLaII5saZ7C@ -F%FMsaOH/3=HZ,6GKBu4aU1bY'RIgb]<@4N2]G8n=bkgqQMH -7u7YSb+,ES*5`Vfk/tW]9&.D.lUV>pX@m*G3lJ4-pe@cq8%F*FlSL[9C(t-S?d7#Zb>l<%#0N/E8;]72aSMO(MY0MmE;;j+O73L',=&L%` -;k5,]XX#SH$W:h);LKoN1/_#85Z4^Ld_.q2Pql<"oMY&je6M(a77U=*85tGe;`u&J -78$U^9IZWPA^q5d<<[$d -Q%)hoJ6&HTa=P3r2Q$V*] -O%JUAXaN-0eRld6T%FdC=8eE:$%uD,K3=1e=d*@J#gYf>K[>"Y+/rc=Y5'T4E1\@QJ0TL>2>Mm4d]BCYZO&n1fZcn -]sCklZe=)(g-rFuAYE56\5#2qgRYo[Xh+l3VH_&CuNR%DgT<>pjs>.'PmLm_Gs -Y1uIb;m^^NV8ldLa/f0.>=H\=ik*Q -nQfI$k['85ag#!7U8@.^>c1>5[oNL?V?4GfH*VLQ` -P?oiahjsR;ha2ZhqW_=`W'F05;N9_oXq'Cg.Gt[J,2MD=jo$Zh&`HJ"@9g'F:)@;-(gns5iI2Y8 -@2e'9*+'[1M%0l#Sf_@++CMVe@)_m"+c>+t&7G2-@S=GoAg\^5'&nobbg%TqXt*to -B47Yh@@f)[XtAZ,0%u-e@Eo*dd!*ic*o[A\j'1#B(*_`Z3+I51@-/cqXsISk[Go1h -*Bko\2EsFg4ld)=A/m:4r^10*6t6EiA3Loh`\M(Q_FrH;@K&/qSUb3n,@ca-j-+%H -^-#o6-=m6YjCAR8D$7Rgs<7-0.ljc3MP+Jr\(1=ZjkA>W[D[S"Mn -9Ou^_AECniN_ng9A7dq!j_eZK%THs;.A/S2k+6="X/TZrCh9bcjdp@#@%_)NE*Bp* -AaWpg-?DV9@-/eYADVJo>^>I,;.kW/++A!nUdI&8 -C0mcPC@^V4W+fS:l#*J8XrCZ,R:oLPjkcMA[]\l--eeQlC$(<=..Z@eTkM`Fd\`pX -Bk$@&OQMB;lZTjTY.H66WU%j1CY#M$mA:1ZXR$DMM&rj:0!K.R\SDteCECK+f!K4! -[-W_Glb:LVI^j4*bNuCVCu3GcG.qel^$Qh*p7EYk\VY!M-e\K -6pC!]eaC`L8kt4Z?LMa$O_q8VD]ZtPQJHE?hb!',3DDV!BX0*3D"mdCAaD2d1e(@pk-#J9f[Dbg^Y7c&'k8+1?S -muHD]#7PSO&9/$VDsmRD-N8!<'QH:m>TU"TDX6dMmI>rL7pRE[B(,8uSn\K9ESg7U -+joeXG&dg"<(?TNf(\\&,]Md\nfK3!D^QOf'69-Jns:)!*n,+HlBdP4nW*eCk:]*( -"S'MeEP*ajf,jNJ#dD.kncq'l[e4Zh/TNK%nD5FH]:e%lWth2f]]t;1CTEE09aq,iM6focI(S -.aiDL<-/@FF73-%9/b;o/8u((M#TkcY=3P*)0BL]Fl+q)hKSUa?une"SEEQ=0/n#2 -(Nf*jFT522D05JABQfGN.&U-iY?(A3B^[ -oVZk#T42ogG]^uOFOt6Qhdpl$,P"o44C=(-?fH(8u2Qh:SS,3`#'GlT$kDB$%=7uTdqd)B)IuX>TU@1mWc6&m, -a(BPIVQgZBqqo,7kc9$5^j=&:qU:Q5=+o\eL&2s^Hsa,lkHatTZ[@ZZA#GuIYB?SM -a*WT:I+QVioM>dKGG$pYH`rP<&#X;(c[AU>I9<6A+4klVfR,#7DuWr0DQX8S`I)U[ -IE:=DJ$]+RaY"qGI)!*r2n+-pjF#kGr9"IccZoCt"T8=II[B>J&*XBRdX#9LHdB>E -^Z^.Hn:(_2rI8Y2("GYUV3LB-\L9L;Q/+1Ejp\3m9-RB -X-NPSL:^s"=Y*TX7@r%A[T[OV]62-PF19Vs2g`O+om=D[DqFmk#6fas@;skH7OJq/ -`aa#@r.[]fPKIHWfmLeP24Mm(F4pAqQ,rLCBf(-A7\<\XenT?=]lqG)Ze+Sf>A^7p -Fh-@H2qu%FpOU6@EHjTp-R4Vmk&U:QY(ns2cfoRsdcVR+hq@Dj]:JrqLV)U9Gs#D? -8"\>op3M/$^N?U%j`p_&^I`Y(p%84]s3L$3r]j9W#6;Q$4:MG/YZqbE5u;A@#Js;Z -.1!epS1P/e&DSoK_bftc&&_>E84M5 -@-]jt4jA)[QX/!^>utn%GMZDDl$2'oSaCg^(W3KP?dF0$pL%)%#Cta"43%(^M2Y^W -iRi#k(h,IR-&U]L^*em!f[_d:j4NccNau8k7hJ432Gl6k;^PY3jge]'R-#9X?^g+[ -[V;5o=jCWD;AoEPTMbOqM4s.e(6P?U3^/h+l'.1K_GmoH9rdKI^8J'taXt?2CDu"\ -W9d_0ag19`I;cLDgKeI#<_7>6?1')RI:ZOX^?rSd)rC,!0&&Sk_!kSN$,Z2e57tj( ->[JAgn_AU;aRVlUpNuJ_f.Y;<*8`X!o0!%5cu\"R8^1VP2c52"=@ZHBop>MP""'Eh -Bp*Ym%r^1r*T)"rpHAP%i-4#gM;dK_5'`ZD=l5S,q4<),kkVrbU$?r1YG%S&g0_DX -qq?P3n9b0Gamo;XT-ftAhd4.&rSM8FYhEH>l1XCl:\"A_?e[u*(+C[HJOH6-I3Rg6l1amU'*i>d2!uq8Y0d74leb> -V"PkBga]<`P:1 -3Cd(6)l)JBO3S495R7T;Ua1Lln.f7g2X:JkA.OgL3_1e-s!6[$Q'0R%9M(X0-KO6Y -PL=nV'1cC;AL+%8d)o<[=]6d2<3;F?\f*q\FY)X=[>/Xm`C/s5'4p6#QZDq/bP?iG -AgG0ZcOMABfXD[Z<6^hp5%VtVSM[3r15mr^2Fa[N2WiNFRkoM0(t#iYk8^;mbE6_53jZ<`QTq9`iHkZkr+QqO6T9K6RaG/k%TM1E/Z:9ICQLd:RAIY?_ -5)<&S,t-sn'r'2a2bNmI7ceb4UJuDu;>N^OW8t4Lo$W`FC/GJ"Cr;Y3(7.r<@8,p6 -25X@,RT"<-8g^AtRWSODe/Ea3WWbbgdo_gYah]p9-$b5YLWWf -=;qEOlm7@idYAVm\C0#uW!(J1T3.^IR$bV34):2K#OZde9cg'^,YD'bsa -ba+i">?+NPAOj/:Y1Hks@.n>0:oVu7gY837DX*@CX#BsY>T0ebbai=H24ER\R,DE@ -29iZJ3^),BV0(6VDn=K1lrP.38h6]o.Q,q5?5iE[X4)R0Q_*hUS(2iRAaR1_^A)%J -3Fm')OM9:fpi(ncXiTQp6O*6S.UAB4q5>13sIff:Md.^'uH>E -g#6a'L+Qrf\!H=7@JiQME?de(pB'=5N)ai%7Ei=;^?&i4TlS?-1WEPS(rmTWNq)3, -]/O'`A/p.DaZ\Il[t=/2S'-'HmS1gV5:C(_V3LPJ:=.rDere?#h4D -)S4:"afP&6Zn6TN>\fmQY4^qjf@p74=Brb22C;e`gCIf\?'-ZEDJ.2(UM+KA$;Iiu -.aD7*3bLU`[Pm!qgRETukA:1.oCh:l]:X+]MLhFB54-^d]0gK5DGP@Tp!LD+8+1c* -:c.$thqD^n5B:2IGRjc3MP";GR/ ->oK&I/^:kQB1qLDX/L-k7Kh&8#Q#5AaFiCYkH21 -g@_&@f"L7YlK#.RHlg&l]+;e%H=++.T&&u*JJRXf5NR(G,P9Q"G5C%Hm!"Ms`-A2- -qq_.-GRc\-r#$pP^RpToDlNU5BC5ZT^\E:#jX!%8p%%"pc$uAU@X5GUs3En0$j%Y- -"S@aZ!7+dK%oWK_%foHup$ZMdmqVt9-N[*oRI!'1:bqdL2##?V)Zik2O@&`gMZf,0 -X$Uk'&"*2I@0.eJ0FIo#`rWC^%+**)nB/)a -*s0e[o(XUVJ&CD=lIi)cL%?TNYEKM,8jV`'$Mului0r#6k -V[l7f&!0Eq0`N(([i7oc`j$Bn;%FXD_J@Jg*!kpHOjYNf/J<'V'!^14%dkW_1EMX. --IFsF:ko`<%hrpo*DuhZ&d'7S#9]0:]ocqN&Rut=Bd&Q,-8B]g&TK!LFGB"+(pYe3 -Ou!q12'W_l57AnWdR+nX7i@I_)(qm,Oeiu%=!^9G)Y(EY11M8dAAt;Q*0JPeEcBrj -7i`3O-c.GUdXrSrKcT^F'+fR5XtD'knL9C2#a+p4"d(2'V^dk1.akLN'!d"-(FtX` -/(,@en?4#+,qP3./CGm.OaA>$4"ZUU/^i6&mBmf%9dGlj/s>ZUc.o6R:>k:\UV -37@=Vo89!";(pCf0GBuqP6EYh#r(tNlf0cUZ?86-)#3](42Q>"F"K/R_^LZ1.21#V -6=D=L5*q51Asb#:VQ0?U&UA5El*HJnI"6#<+GY/B/Da'GEH* -(H=5j5t>g\1Qt.(O[>7s6H>i]PFk3?s$M`:3`E.AF@/G*+Au.E4-WM9Zh$UP=Zhng -7FT4F&M>@c2%s^)j&=\gdIB%KU7kOf8(<#Z'SAqULAd>78CRH-'ELcQ7OF?+5h)>s -&,ndM*C5o39%9n7'W?f(;aRi=6M.l`'Y[6b>si\,9[q5''L+XCf0iTk"N*GleDiW. -&P//O,.(QD1ga#j,jf0.I)1f6h>eIte[(K$G:;9R9VoT`sbl -20>4&m92r)noWqL37kQVC9JjF_'i.h/`#UZj6aY6@ojVY(JPF[19snn- -F1O/,j[Bil;=tf&FS/a8o2q224VVS[bIL,#QV_`h.J)IMQ%)t;Vco@d>1KeTPq>mV -[8OEA>Kct1iZ8p*^)2:GhGf2PQd,un#H2-F6#k;]kT9_Dst(%.#\Bic$d -=#Kk_'M)DmGoS]H::5^VQ4[P#*Da)*=Q5062$mEH"%RL,/9VJ4(,KH$2e/.7C,NV6 -'tIjT^I^:;>a<95[S]tt>@"YeA[U3&emcmu?!`fVB%Ca1%r2Z_nRn-[?SYk4]acj^o:nG=*<^2K)o&pMX"bpGRM6[fL-\$"'!RB\*c6 -f+PSmiD+E5CfGgt(8#VJSOOA6C6WF8F"5hV-QDG1Q&(p??ckJ6Or'GLlS6n1QG=#C)R=Gf9>q[Yo-,&U@HI -"G8:?/!G)IIr[IsHF=A2efALDe0DF_HdBfL;PAD\a*a5sI+Q\AQWnT6f6p`T(:.^d -=(?\AT'mY^n10:4.=4)>\ --[PP:K$\@]2_Teb\0I?TF*3mu.M%,57td7&K\0'MGMR\6=,!#BbEg\-Qt(SiB!W<@ -J!]b]p\0F[G'6LVJ/8$;nX_$d$&FrX3ML#7R$3)GQ[uGW0c2'8=A_M3.sfi$MN76R -QaH4*1P=>l=ju7bGbp@$a,HD/N6eJW=OVu6eV1nl(>*2I=Q>DL20QKTLH+a_f^jR[ -:P^t3cM.X#fSb9_YU9.1M7At8fb95uD/n4S8=6T)=s4uopD/!-VYk<=WnKP0RDYfr6`ZYGX0ZrE\l#9Wa/iIeo\*G-fYs^+AZ_'f -03W4j3oR5FE>uc6\B$1g3iI!YK8+8G(U9GJ0Uf2G -4!Cn,A#jphZJ%aC(?)@@>qK5[Z[4pC`"/seqTotRXaY\r!mP_kB%Ja;1nW>D#FLRjqW\\D*(T)j@g!OQnSV6D]@,rmj'(W!VHUW)#8 -a4u0c(ra<2)8TR5+a-Srr0+uS$bH6a63B6c4IsVCTd1Snb1o%qVZM1oah6BObJom" -*)Fd`:!B,)VZKr=HLZ!PYK.q=`Z3mU;($uXosahoa#j1&eIA68gWuDeceSP9gl9Cg -#KWGD\m-E+*0iee-c6-(=o>2G*2GsW2nV:(b5Ep8#$rW=6d,D=9q9,F]Z87P6e%M5 -bm2sTGbG9=!&7a;`][[T]][;CX3TJuf%E"&@bK;&GLrC4f@5N$>mo:JLM\58d9VgT -FiVV;)BL6IdQO"oh'peNVpdd`g;J@crAiV344G9@gYGkF1c9BMg]k2("_rWD("GMi<7ZG$e3*Xch1A(i=siLQXr4rrWHQf9'U,XQ5"IP65B -]A,S5j.<=;%`-ZXh:4X>76YZ:IS]<:;YrXZcBN1>Smh"ll`%V7mG?ag*oc]RFm$L' -m`82ere9:%pI\W,<+7CEraj-*pZVVb65AD;?CC=IS_AJ%l+)qiUL$7=t(8I7UqR:oPQl6O@\G1=U^ln.$I87P.1A' -@540DjpQ=D@Vn)oc=`?Oo]gujT[2h$=sY5F8Y]1_'Y8EFThMFal?+#A?EHbe:#l]BsV!F(;"^tiG?&/mWTVHhX,U"hX;9(eb9)o_-aF6*%gHfM8`ro -R+ujL+d'lWnP-V"=kT1eAb2=[mVb7^ctN%I>o&o$Vq#O(),5:h@BnL%p7#?rhf63_ -DYKXUCRr]?i,H1g4uX:?`8u"7I%Ft8S^HTlqAi=t=0^BEFh=32QG);HH['pe0.3C: -l14]L*m[oO?Li>(ra/HnfCAV6ID;DHlh:?D0E_UZ2paAl"@4_@(C!10F<:cT0U*pl -6EmgM$pu_u2\&3ZoKNmT0bd+j7'SRE'La`U/4u)TY:[pQjM*?A1@3%89Tp16 -1edI%??)K*I+pU)dtHmE::#oJ3_pEro0,rko^tIFZjct#:p_MZ6.%MH'gto@FW3kJ -%=-0m8[/O?!CE2op&fd<].!l>?<]$ -G?^ZdS6&YA2'mrT=EZQ[A6>-tO(I!&AY3U=2Jo@*>*UTbQ.m`f[[,[6e[od)pD(A^ ->W47TF'U^nf5ocWmbf,,T2HI5T#hN)F29o9nml/R74U4Ka6/9/Se66-R:XsU$B4'3_2FXlq -G.2s>G'=t9F5D+hpN>D<^(5_PGZU15J)FX7PNI-3GF.Lg^4N25@NMs*lf,Y!\*\OV -cbJmq(lq<+A9eYVoDLm4fCUpb-f=]J/>dF`B)f;Rqu4@Np\d1u_`h`f!Wb*`>gced -#Ct/IV8/emr1J-BJe1BX5r^:s@'g`&&7uA;\2ae%oH/_tK`j@.qVWMJ-\RSY'1/Wp -$K6(YL(LX.6MBK0*/lgrd,E)6\9/5`>N/2B8gi-0"cD*oV6KTNY/]Z`q\X9=.-@@ -c\=SQR/$HOoQuYhp-:=!U4hE6l@#rb6qFiuCLeuWOpH(,^R6MM,cm2mdUl/ma8XF. -*!)8DM4q_@(F`o@Vh'gC8BSJG.qNh+Q4h2?90$].Mi.%> -FO%D%[>fQIN7"YM:H@N"B8lSVPN$pbOtpjKV#QHs#!5X2!C5j'<&O4RKh*+"+R!)@ -TsR"?10Mn>,]&@4nhQ/$ZW0G-o]MEY?BIgZ7n@>?-TG`+:XZd?YFmGDPr-@G8r684 -l*WIJ']trb\p7(cofoAi#,,!W5;DF[b,FneUf=pj;ef$&WKfak_eH;SB!k^0'kXLH -Wj*)r>ii%#P-IbCa]N=1@oh+mG##$k>@Q+NT68/%=#p(]X0$KHe`OM6ZXZ::o`VK5 -*l-D)"MYA9';?6h`)sSq@r,/*/qh$Se*8`#B]YPT'4LN%,Wa10_JAQ;@7 -F)'g_X*7%r>pt,&lUBF,pL^a;]$FjN>89Gd]fARUALlT$o!VQA),Y>0$gE)Fp0GlYh_AK- -s-[g9!6lCN2!/iQ:iJl.^q%3=ik4K50TH[\=lVYXGrT[1[AKe1@h%Wa25+`UFjV*T -7;0@PUNC[?dMbVI8Gm>$ENYYJ>%:3>SN3Rq<]J.ppE4367B(D=?H?7oR4Y0EF`2=/!+ZZ]<#c.U-OB+:i1 -W2>d5#Wk4_S[Y3ajWfu!=$UXQ>\,`MKYtEnN\cM -Xms."pAL?3K2QH5#JkOA#1W6(GOVEd`V"usebhp>nNJ,830n^=g@(!dhDN>uk9&_p -6XX_ILWOfh-eO@da_^rZZT2pKjkRjB;r+R`G+UXRqqIYZ4hK$`rnciIj)F2[aF#Fc -kij%eFP@:Lds?46l5`BoFZueTHEo6_)tU1MrjUI)k?mQ/I*$>fahdj5"RPkYJLC%3 -i6Xf92S<,%EA$Fn]=2qO)&h4L*^/C@#CZ(^s1r%Pu9)"Mdt?^gmYbF9fU4nic=G^#TO6r!Pcc$^2Of^*F3&4:aV,&A*J2_#tC8 -5hE`flTUgR_,M2d9GbNRc_/JM6)3qcX78Kg*5Sk?^E`A81\ANe+,X:q^Phg&1\a:! -,,>iAN54&[]DB1a-c0[*[`e\6"=q7R/0FB'5RZ$e';N>neO'oE_PAs)1c*$;1rE9M -_dkZaHjmoG$q$6g6]=&he.+bA4M_^p5r7I,j?CKb'9&.m6$*s^1d],K6:=d?_3(oe -e/Ud0848\4`1nj!lla.:9Z4kD_Ad#P<):A):r5UtR'I:!E6:M3.)f.6%1G0P>Ur.b -=N,msN1;N6.rrEF"%C]oRVZ%ooO#T@@)`mh`[##u*'2)-3Q=`S7V$)"fZD&?4iW_" -`hOT3KPJMq+iG?i7cZtWlp\qdE5r*$U0/;NX@^?hF2q7%a'uakU`i.UGXUUe66oDs -"B%asI)82^+)oh#9NF[[bXOB'7@Yr#1g)j:>/Ko9\heCrgb>t^J]O(4aJ=^7[#<#D -N1Z>I7T>DfCl_-JO/886c0( -P__kW6cuL8b9XC:1pb@n[*);&aUGW""LlJe[nDRnNHCFW7$Ys6]?A^94&FO#[$jRF -^ruqtbP]6$&gje-T?L9,9Os^!FUCs!/C9q>;T'-*SIX*P%9!]H;^F0DTZL%g1smm4d1nQ%+NVr1372:P -SlHS(SJbAF(t!aMdENWVF[&3`-ReX/e0On*r;4nVY=Nd[c%uT=D*_-T8CWnre>5de -Yn9m1.8m9B<96g!'e\#?/l`W?"G?9*5\9Osj@2Ct@-R -f&^f#ol#\H9\1"Rf,[Vh*Db3+:t7.>f4B)p,qmekGh$AN1_;-=5@(^ -npZO_?!%hJ=KK\/Y[;rqNAF[/tp"P3]Wen'`iHI>iQr)+N<]ibnI`JN7O -OP(A2fd2g)4`]4EE`lC`-=(^pF`gi@G1hhf:pkUP[;FbULY.Tc>,$u/1.'X$B%kd&N2:5F$ntKA'1?]]\2,S=lmA%omGI.^tK76g*Ik7@%,/tNfXj8o%BgZ^Y?N$kh'LM*2:LAMe?ier -gMN53A7aG:]3DDjgSNW?"h\'qgtV5P>P6i=9u(![_-ASNh@m][4f$k%jPE.<>\1t4 -Ff/PtLY-IdhPJE"/_(qsc!(uJpAOd5[u -Q5a8K\)4%ZiT9rFp&)O8;rA,c?hPZ&2BoiWh0A(EbNY!?Lr -@,pllbH=1jr^5g+A@4\FA9LFQIV._s8)dQ@Au82_Y"Kfo9Oal9jP@e7VCc?hE9.+W -;mn>h#'8lgpZ8rLj^r\tFG-+=hIg/?kGERg[X6*(?>%hpkN6+6p)4Nd@HIcF=_8]: -5(huuKONutAq#KsG),4?7G\5akb`-/[VQb&j5eLFk2GP6`c,Q3OD,95$u3lA^/S`7 -PXlR;&WV'HDO8MVW+_3WBr7?`[[ZO!fB;"?kO+o*p3u-&@;$^Ul4LGf2MC?bA85-A -BP*'6G)5F7Y*8*F[-(/aBuq%Q -G.6X]TFmKgjG(,/[_(kF]^+#]l2I8ip:fktTP+h0BI:UW$aJtlKksf.hp+XTQD\PR -\nmVoC8S(IY061?ba4?llLp6SlM=bOZ>1N/ijc1-0!oD#Q#0K$le)hbL6ub:R#s#C -Z]!D[2P7$?4#nDV$Al#7YY@/FN&kOEU27#;=Je -X)CK_g7K=G:DNIjphPuDnpX^42`L>`3:iIsOB3HBpE"Cb4RqS8EZ[L"L;\+.5k7E2 -f5Du+G=1qV7.Y7+g%QrfG:Rca!cl=5nE3CsYmBpp9^rd_o+r']-?JdOh=FDXo2c`G -LI>ZS;"[miok.=uG-\(maB(D:"FH;%K,Y-jT96aNO1Cl,3 -Y>'2JW,5%#GbqDP)=qKJE-3Ofoe=I3%DMRP]r14mO*=+FntS] -IJ*W.pXA0smp^PAJ9f1'AtN[[5G*6*_e.MTH7*Ceikb>Xq2^tiQ^[f+7!d1MH`*D2 -[@@!\K6e'#qp\2^:SRVkUHCH=G`S\K.R3cJVu0NgHAcN8hl?OfaS^[.q7jMN\?54t -Y^G'Ir9)AV=0_WeZMb$Uq.CgqJ$l:h?2K\lI:q*?:V$A;bC,`0eUN/IhqS%s^,Y#b -r"m.soZI]q_gWDud@mT:GAPhb%^V\2r1C$=Dom'%b5J0.pD[4^pZqh!m/GMiI4*D@ -p[8%d4o8%)HVtN$^Xi:3o`%3=FqJ6t-`fHr_O/MFHQ&R,h^>)iqbp;E6"g9dc/tAQ$'L[T;.7 -9HBRZ\^^=o5Ft\!e/BVCNC'FOGPXV8hhB]3]Cl]=mq2I_K1Y=<&Xi%>2RWE>Z>g -MQH;k4gGqVN__6lb[iS5I,8KrT?h1l\ig7]7A[3PF]s1;IpK81Cj'#GVUo[oghq=? -^#o';^Yj'U>WsMONQ:+#H!J'r2kA:YFF%4VVcU"Plum_]^?9^Rhl@Ipkl2H_a5ur= -rEaDTVq^P3I"!/%J(NfUqL/BNTBG84rP.fr^lb.b+l`X>n2(^\_,+q]#JlLT*=0ND -S1P%7&?IYq_bf\[&&WAq4V:'o*)-Yg-Q0jH`DL/I(<-r6AJ[guN,'SWa"[LG!"V!cEoIUYDd8Xrr8(!QT -*D"VCSLmE3'Wj/ado>]p:XaFq4],/n*DKG^'dZjYeTFSh=46BUDHiSFSSMD0e]i)> -f(JEQ?WWNkKj`Q!"cZsCp+;DK!NF5$jJ:XIQ0WeRQd+oG?O>JLIbqPg"bF-6@hXLQfLm0:@H/kqPk),=1sjdC!lQf]0GAXV\KY&0Zk -):!AqkF(acft\L6qk689/r?@eH;9HrBc:h71WX`^Pr,)".(/msE@U^[Kqfqn_bA-O%B4Ze\p+ -e\#a-a)RW!--5YILFpX=r3%j"o3C`?cguodAS^#.cUlUXh+p\ooc7[Ff(L,6A_1-Y -h:LE;h8S('pKd6/htN]IIGO%1"o739ISYsbGog.`iq_G#J*FK<^TEE@(rriIHTp?# -mee-h`UBssf+%?A'@Vg1ZX0Qcp\l7qjn\nJYO25e+4'WYs.AcXs54"\J4@q`^fHj( -g2mOM0HpZcfGO`-'4,I6AdUg`/Hh`b'n\2BX#E"#gn=glKCFa0_Dk6r@72Ap:nACc -BA![J4>D6qar!K*D%0pl1l"o`_)S>XkFE#IL_1+=`)q^*U*N6c;'mVXLn(Ld)ma]? -dOE.;V%r!c=GkL-e-(RZ6&FE)T2c8ZA&KcHk8 -"-5j,njhtoFO?NdnfL90T+bhDfp`XmCX(P?2l>ZnS5BnI`RqRYk;;F] -e"V!1WS'AhWNM3oc8Ep=dllm$q4=XPRn&>6*@Lc-TM+u?cj8ka?^->-Z6G$"\fF,9 -Kajb54c2pYVT0MfN1gr'N`"Ln8*L1#Uf`R>hlb<(b/-9-%L.I>tN:,,S?r>0NqqLpL-"c<8mbBC,krZrW48>$F^8 -c>>D8G-76:gJr$kAZn8Hg7;0cD/F./4[_.+Ug)Q<;JlZP\2O?F>ZT.9WkDE\?a`VL?f=P*fmTl-m.gg?N]C)A7\Z<.UXi*6G:YU0Tap/SuDlS;JaScHW0:C:N8/VW]6 -)8fQp%Un-SCor^@[MY&:@SB3?ffcgR=K<3APTpEN-8E#TcJrD.AW:]L1:\2k*aJ&Y -FKu*8aB8:PqEpuU8hQg^MRbJYV$ -hsAU:ZT\"?fqj5Xj0=3?:3")fcT#Q2jalo1Eb5EpGRo2s4j)mt,\_0UBO)(@oL=\b -=t`?Yh&W9_JR-4*:D;tt9r7KZQp8*Y(MVZ+Vm08V`nHInl:c,qoerf!XfEK'9S9CO -*j=-ua'*6f$$A"P9\3J2?=aRiYI3f5<-_+gAY"gH2Fb[=3uHc84e7tKL1/e3%l3:, -Xa]u`CjJRoD.!5cE\jlWcMNYaDI(5lN%TAsbk"'eh#!`9%^Xpec['M8mCi86q;5EF -IW*]OVK`<2i&YY*E&gD2EGhE->UJ\oL]YH9m9@s?E^7&cW0:EF$/%8;lKS"W,(:' -W:sWehL"..n,P[ciWiY -#lnoQpk#aCn.bQB)"nLW!Q,mgjut:KD!F^p2Gbb%&2aQ/3.UjmDiZ7"H"gD>;csYfCUAi#b_.blO'iW$IA)I/W.`4p@FBZ$a@DeL3!>kaT/Qg!71lP@T`a$ -f`A>3!YF:`8i!Bm.-bb&h@MA7&Ch;1q%'_.&+KZ30a/+u^BG2Y"S!'-;%j+BYm(d\ -##QNJ0dR$9=U*5f5gC;Rd5;/K2[Ak9';j@2Y`T3r7gSWV'_+m",-M="UD:%:(%A%8 -0j=,:YnjRI(@\^J$IlbMq[>0n(U8K5nAbsbM%(&T%.TG6E<-O=R17Q7%PaRc6`/EG -lONFNl7iSa0sqs?\Jqfe)tC`a,-MRJ'caL#*:Xe-@^?[:-PA/e*V%qhctN7fkn>d3 -*q;H:&O@L3KbRB]'X@`]nc]a`!b>c>((jgf;@t'm'd9ZP(6N_`0lnOYD'Fa5N"L[Y -dPW7%G%Zr$(t(\pnjN+)"W=S=,k=YU0qp=ROW]Y7.hF34Z,J&1BdU-&-Lu.(13Co` -d2^Q_-dmPnX(N$LiuPFb*YOM^Z.NVb/@TNU+*$m%18-1;q!Lqg-.9%@ZF(fq[`?UO -+d*Ki1;PM^*@ut1+qcIZ1+Oqs,qXh4.kuN+1,ggXmj$5@0(M@_&k=T&P9dG8,ng5( -;ZSRa*+Uh99ei[q0s;)8G;6EE1%QPD1F4et.":`@-hAu>1GL9H=Xd94.5O7='1F=S -k0tTU.^H$';c,Dn=d/eMr8- -.amQA1?UZ1LhG013V)i(1AH-8r@jE;3qKI81B];3j#2Yt0f'Uae&=)KaZQoS4S-r` -1Y"WuF#,W.1NPE;.pj<<5;[FK5-scCnr5K).j!/D2)G=kPQO/4k;DkE2KTNhZkYjk -0]Y$:2cLqdoHcHG+=biu6M#mu'9,@jD)i8t3Dqk*"iPi1e/7PkoN<4,@U\Nto'/+b8WF>MV57F_C`ZjfZH#::,%%hsFh2&/u2),[d^;=3aAP_2kV,uR\+ -8X2#%FYu`j3Bq/U8lVobPsJAh5>)^(:mFmN[8T`J_+`@t=r2#g]9R#lFq4o.)270/Z -.nE[R;O,!\@]NFM1K1^'>kQ>tk%@YY6X@+Q?14sreQ6("TiC^N'\-DgS^1In]=]%d9O+cA[Z#Q2*>J.iEau&B(g'#[@^dVH!Ze`@u`]Z2>^a' -s(HS8BVueW2@4)@#ALUTMUiAJG,8:5Ipoc/@Fc`>o;)Pt1Lg$DC\GEr[Pqj[a^hj) -D"c7n2UuYffK#6t>W1PP2WB9g=_:]EAbPM02Xs"3f4Pk7Dta-K.?#abI;lWGE7W+j -*(82fS."lYgt8GP:]S(O\lPBlFi/Gh8&_[WclG%sbVt -H-<*#G9;-T,C6gBHM8[7[kVoi\T7GV/`O$V\&EEJUN?/uF>l^<$4-E.=+.PS/n8=< -cXUp\T[-\VIeWA^2t_ZEq(fF'DKl2+=9:\X4*YuZGZYQ&3#,?rD0\($E*++"\!MQQ -T7XP?K%(`c=06e8Z%I9a<`^YqfL:.0Eb9O9C3Rd@a8(-bc\8jV^JBE0=CjPrKna1o -Jp,7c\93ROH&&nXL[[0Np]ZIuKj6sJJN+0kG`di-Ps6U:JiFp23$,#B>Cr4qMYO<3 -2%,%=4,^U/MtfLP=@7b/aBIs=K_WrK.+!IR=bZY,NOC2.phc%-j?!)"@lNY)(<_LN -q2`&aO8/g&"j>E(U>PjWF>(u^2%=(3h0Nqm(0-;TpTb6U*#PaQNX3H^[6H'bNmOI6WH -3Ip&[NKMm3Onk!)3K\Q@H'3HDP#mp7ff,*tWKT?E+P.Eo=[@ua[@='EQblUafu8q> -h3D,GSG;!4(Y8?6Bq;!JB/s[hdTr@\l(5HQT)%oK-?Y]$%A0&A[?q>i=c]5%"e`Dm -JVJ04q'haE6&->URea"XoOXLP\Y?XDUA;HYg%Ck\;4NL2J9b@p3RldY?[_Xc:e0o5 -q;i<9oqf6*V>=Vt3b193rMI.&VWh6G3Y.n;$)`)tVn*+r3Z"`@'WDukU,nF2)O34, -.AIe5UH5*Jo7*Uj3NBYQ+rWbCH./g=gSDDVUr`V"fPRSQQ_o)RXSU>H3n:?AZ)64S -Xnpk(R>\!>H*4aCY53]o>(rod)6\VKXI:H73s2I.=[Cc",K\[+hd,S^d^Q+ikX3iNmkmZ^X+a_elK"o5Rse[/3_.4&r\7?*65.[G'R7U8b=/ieH\GHfI(d1`I)A'`5\\"KEgS)3*V7O:6 -])/J=)m-^r\Zso&Kde1NHc<:k#kr[#V$:kF4$gQ,5J=\Z^"_5I6XR3PW>_7/^AIH8 -48$@5GIAIh[JU"g\c]E'CV[Q%^t]7)ReO;&r;0Z!\=82VHmQ#'Dm=[A\Qgl"2mUj. -ZbsDa_u$j[4?^Vf6,\.F`4SscS5mN*=2d9l]=P2c4!5dt-+nRR`pD0[qS?tPH+j-( -^-$t\*/2H1g+3'bYS.V`S<_3DRE<+4A@qlM4Jdj;Fho'"_#1IR4LM+-(Ur25':^/] -Hm-^]`O+DN_`TTi>gpr1j2IPE`SBFk]]IE9kKZ3ScM[(U4R:=@n^!`u\f>.uI0I7N -G`k1+d/1on:;=I;A7p:HdJSXF*/Ds*.EFi^aSSSa>bBJn3RbZ)e+@q.4[m.AHcj"- -b5A`urDhB-(Une,_2V=6*6H&\C"@URYh[jT*HfV-Laq3WfDP[$4T3o\J_6NIfY*F" -rKZ$kRFs`mc8%-$SYZ`D-d`oRd5.`o*>t0?FjaR/d_3EDIDsu'hC@>9^:cDR*S&to -g"j?t*'Hg7I7`:C"^HIYeK+21IIl=oob*"%_7a5o^!YEdbLXB8']X&^I<4#3).23J -fmTFN4sAp6TAmR2inc-Dr\`_"3#CBQg3j4$gV_be8_W`#ll"eqh9"Fn=knI1jaLL` -ckFH3+0;$jk5KA`5'?%5KAN0ZkOB58h>-8_pZTtgUA`3QYi81.sA%gi- -WStRk;][%@*jt$W\)Y35li+Ta5.g01_;j.b`a1rar^Z&*Xg3CQk(;rJhI5i$?gbX< -m[imRK"6>4ET`qln,EFX56TjBJ_j`Ce@Oi,hN@>X(%K#!n^/P/hNu(5J`*,pl2N_ -Op(u>_-mn"<#QV\L;Mos(kbX+'o>ARO=0sD3?=/Nj:W=,S]pYf8YiY;<2NeHQV-B1 -fn@X^/Wicj%gR10FS;5#kS+pM%Z*WL;<\d`qD&jED\9 -;?V=ha79q&,"V8EP9WXs7$f8mZ@nVp8b/C#V\,^ZI4S#hbdT5uZNRfn9Cj.@1/.9r -dk]0h7+jFlZ\73r:",ou3mMfRo/ofi]_aife)^Np9hI^]D4QnK&OXr&AJ[j6<.u8^ -dI`\S8lG;P1J:YG`A^Rk[08Qf;tV.u;Gp@qg2540=kQj+ojqW7<`Oid>?8/NBjFd4 -h/cn(p%GYZAdO]`OThi[fsNd>Lt&- -Z.`ooV0(N0&XS -Er'Eo`d++fYF:Re`3DdiU1jBEPG;hq7[L#e\qZWPC&4ErWbV#uD65@0VRn8Bd]UKl -CjQ*(Z#&/Aca?C;%bj6coH)u#DEF`Y]5Cimlb)Z_f)*0S1bDG<<4jMQ_=655&&iNN -B+`1(HJ4Kmfetc>b&[EP1WsiEa#D=c]`hW]oP#&mQun/G_fFO\='O6urEj'dG#oU> -dp7C@gLt^MkBl*1rWe)7G^_#uj*:PnPN@(=B:J(0re9"c_/P(d8@anV?O`iBHpq[eW'P!)aQ8;!Td2GkdhMmS>2a-rj*$]iNNfS&H^DG]I -A&N_Bnb,+9kkQ=]'S/>#H2Pa-m33'.qgi]5#"\P1,\1_TOqLYa8Qdbod"t:/io"Xp -dBaaf&RU. -l^a6JG>@tl>U-=jSs.HH7lg*&B?Y?QEY:W5q$0/4o`:_M%YIS-&9(6DmiA1SL/@.S -6g/m7O]5>O+,Mj$W7761FCpP1qE7A_m3@1FE_f:7;+^"OT;?Y,Q;[Qb-mss_PgZFt -ds4cK$:M4deFoJ4q/9)Dog5Skp0>fkOYCNL^8Z6%VG&q21M0n6W`<*"HO1![oW@a>\fUGY*ISM=*jBtkIgYpQ0uC_])c8T -%!SC%*eN$K&Rk$+L9[$kK@%1SA8$[\U/jn/ffCQ+?aU`HP_tQ*gHfK>'qVduL=3HO -9h[!QX0l!:R+f_jCTW;sV=ir#;i5EeD:GO6FV`k697]q-'u.8&#,7@IT2Vmm9t?T; -k0+'osZ\qn75lmGhEWE[f9+hcfHulb/XnpKmaUHuG;A -^6dFJ=/uF1lkTE4=8)RLpV=j$D2Y[O(BRul#D-nQ$8pohbM`7LKP[Lu_A6S>ZeIKR -m5>p$=E`0Pr&KQeoEqua`tMZN:Md::.E.[L(Ljp.ACdQ -Mo*%a79OknM"HuWd[5e_Bg",GFN,WGppV)SrB7*$m\A8MP>Q&ld>dg"2M.=Z+_pq- -XE"NOef)sLj@kiAE_a6gHM1WTgnU,m(;\Xk:1\%Lb$21F@a#cEB5HCtZS*5rS0cl= -B0EN.G1PF&Rs/dfrP?!f'%P;ggN.7Z&:1tE -YIOF19Bi!+Vf_p3e9[H[Y1ojqm]NhFqUTf8]?>Ekrk6s.Vdeut7sf1"dCss&rU$/Z -$F$*2giu>1i;M9!SaX=5DYr?Rs+0[2&&VlOe])k&,Oq:jP'I!Gj=WGb -jd`6lH!`;02?u&0SCa3Tq2KgYR82rEQ_'k.ZKe6(AlXHlK!\6p@[n5.hrNbTB.Zl42kE^C0Ks4i@X1r((5 -5YO+%6o[G7d4^.\6`^U3ZjXdq4@@m4$<.MNgY"sl%1_C),/b3a4@DS277:BM6u5@] -H6U1A(dW787&i2TA/rP3*(8R#`8jW&e/cC?+2o3s74]QM415NE-:1ZW79in_CfiCH --UQXdFR4<+,SBVWHJ@7)#C_^o7]kcdEZAOBF/'bW4I!A/?Gmd#57%ATo -XF(I6)+=+G7-oCkr.%2r:rPh$73mIU4G-0t[>O) -?HC'EaOH5!=bNHjm4H_goY=;au7V]TUKU>6!R&\AG7au?GjI8`bS4VJc -$?U=/,]QERT8JRp$2d,n7!ZpKV+P!i8o1CtI&K3pI)ill9!#$GgjR6@I`Mr"9'i]: -oBAeFKLdZ"9,t92'NBrPM9B.\95KC,FLDaFMTG.q8GnNA]Xl;)]1^<]aU&nQoTMj? -_+Y9S8ONLc'UCaHV+I2s8X.7R3qg\.a[t"(alLT<\S[4_Th5a=8d*I-pnc+]O%MBu -8rV4n4Od)!eP0<"9kp*=SCgH@fZ1A#b5ABd]WY&JgEZ'hb:L"po\`A)i6+GV98qn( -K]GdRj[a3ubM;8ReEBQdkK]=Uc?\GD2!dmUm*%$J)g#W'e94N%C/5Q7+r^4"XRo3) -oZX]93W,LCm*3cPpeRC4MDWa;4P*BQrD25J:[J*Wr;[Zcg!C_l:b8Z+/5/dg"\m5G -:#-$r7,H3(#sQktd&dW!o]".ij3Cp>;!e`f<9DK.&Pf/8:7W%q*>?1f&B4.KcJ9:3 -m-[`1(SOP'MR;s#*66I;?U/H#;=+#(o_$W?e'-><:Q6SpTVP:.)U_n<;JddZI4/!Q -.12%9:d"nYX0+,k#1-W\dbQQSl'dJm$VgOBM"NLO4U\aB%++YVdqq!AI1N:<("#`: -;+3QD/N_F`4>f*Y:8#)DSNp&+5gbi_'I>2c"W^Ib78^q(-\uLATQF.XF:):s;>j-e -X\;UnD,5QT<:(p[ocsl+1=SHb<@q-L4]GEUM -<)#h_oOoU`8QQp'<0^'TeP"L_9\3!^-J53FrHM3kcIH3H=06gN]mNo+I6H+]eW!Y^ -l@)a(>Z`"NfI^@Hr=j^M7j@p#:4fVOE9h.B]aNE2U1En@/Y#tW8W$Mjg$NobrH?ls0oBOe -eHM^?*IZX9V-70%>&C0@HFVT2J(gHC9q\964b?kVK3HI]fM.-$kb$T-YtI4gfWDJ^ -]sLnL[7c^;=RD2SICEF?OP?>96?oh>7?ZEM]Na,o,5%:,rK^[lQJ;qd>TL^e'uX?/ -QQ@08ghiH;)KT&ha]ZlX$:URj%Er(jbu,R+f9N,do[$cqd9Rd@>qON24k(MnWEQFS -h.XXLXfbj`filq[/8_RmIBX%fZ.N(5=C@n.9s`S[i*IDa`LXPDXlNeOj]eSChFc@W -"hn3kP?sgE5J_tW9uGadm9\'*?H)A>h='4fmG)9nf)>0e]u]!*oi]heg"L,n(&2%Y -ptX\K5g@Y_^!G$,eDK*]?g[l#rW$=3]%qM[>,D?1"k[+Of\N\6?tqpI*T#Vkh[1+S -i2ncjrS_//i8EGN@,RU42R+cgo."*VBfN?-!ukc?a]gc/GS-=.:Sku@]h4j^+9Q` -"5l'i?n-J!:'Y050k1\K+*Iot[G6Wt1h0_2=H3humPn^*3CT%+@3uZJ^,oiM'4]PU -@87SJrYK)L(po+EG;"b(-ZeMc?3j?SE/gWkD"1pmE<'^;JI4IkO,*[5,;pgV.s4O -BF^qR"KQ2WKBOq@C8M2Kg_l#)l(^:S1+\shKEB-+fG1,J1?FQqAmg""8[rkrOE`G,QNMEZ?&HeE.G -a_[QkCp(rt\p.t==DET8NBUM1T$V5Td,httk_3COm]JuJYA4oXCED)ECP7R'[HgSo -D6DT0^=fWH`Tri"BeJ:[krK0K]'^WPDC3&7/]*le^@#8qhbM&T(?f+3_sC^Jlt5O# -^7f2Bm93!'DXQt2rpXh9nK(`UD_BcDEeA?M1b5,C'jiXX+':#I_o_]l0c"j -DQaRM[3BMEr,3YiEA%uF588*/H1*Z:nRhDq(A7-7)"F.LlGh>m*r0`/Lunp>na?

-@MdB,YcV4@.:4Dk,eok8V82M/j+n -EVDfS2^.`^7<1%MnkVb?5:,lE-LuXXhPVdmVbD-'9ldLilg/fcrsX#[_.i'gFY>NC -4S=T01u/[%ol!oSIopiS2tNXWo;kN"s#fu#4nI0S$T,dP&?Ys-mF>m]Q04YX/ -7.b,(FFRopDeM@B8G&fOG->XJ#2sU3:%ZbKG4%nfoE7lq:j4!8B1GjB7oOIVFZ,:\ -C+!&)Q[!_8H$>m,B?sb*^KVQD48%cBGNW8@DYNi?Y4Mr`GTI9::Lj#]Kk$`dp32:8 -O,*FYM0>L`p:#qQ]bh*#D><",GihA[m[I38Eci1=o`ks#:R$&nPt&N3nJ';nYF'Tr -Ro.m2YFKaM(jH"OGP@^n=+L'!@!F%>C=`7V8#1B:V"+.gpkPblQ\bL!Vl>oC -pp[;Ka/deLV0Ma;Gjhh\s&f(=Z$A!Cq*1/?:NcOu-Ao94pN-pkYIJq?\U0s[8!f_B -^O5DBSb`;Wp[>jN-U.AYL^MIZ;cfaj=2]>Z`DHT3qM2'JJ&cqtWC#75qT$d(^W]@o -UjDKII.,?h]Vf_ZK_ljSI4s#X2>?uL[/F@=B999CDXDeSfmTLHIBVC,kIg]4S@[$O -Hgfj=kMRm]_#,i*$Ff#.GD#fhV>ai`:1cQbLWTOVk^K,1+P4g5cg6+m+T1-#r;Z3a -rYi^Fe,(Hc(T6g%2tDG^Fc&uGI95#"F:*;3fP]m,s0)\,$&-6iOSEoe)\\#r,#MI\?8WLY7Ur^5oS,XVO3(p1BdB9M.@*RPd^ab6 -@5F45I)Co`BV/U/:('.Rb,:8#9-uPknZTSOf>PC=##4At`D-2j`.k:0%W1uf("+#?Z.n#joYL4_I2lc/4LEhLW*bC -R/C8\*KnKSmhQhIh/M&lB/=hh#(K(5dV*a64Z938X4-BW>4#q:A[0s*2VUC/f5\FY -Dg+;Ak6$.Kic+\J/k6_Aa5qAfS*\+J)MVU@qRoY5BhrnfBLfCSb8It*OVpAhhnMKi*bk'RU@5k%Gb"i8Pb+U5e;HmK-: -OLuqL_U-de%E$QZ5n679,Y8Wed6(8?`DKl4AJo,#>]I`F;5e4M&Zfmi7hOO!*lg#5 -Gp#W*%#H.KdM.0Ka\cT,,Y>:hO!mTJN2\8KdL9/s*+sr4/k^6O_(X#1oZ8f2ZQ.4H -bnF@.2U,0Bff.2TN9N;se"#kfcP,+,50l%_q*7a*%1,>Idj16[*Qe6qHI9*J)+`0) -Pp&`Ie4hYkdo>-`:=I_k5u?'2*D'/YeNHc/eQ#mXus2@FPW:3h0@ba`)`DbagLQ,?PhPkIc!*_q1)i)%LI^EfG5'J71//oYMlML -+c#&Kr@s/g3-I$7X:\A^b2^^C6&t"cr^E"2R6F-*jOmR2Q0$\:@?rV[6_*9#frf;W -k5!SLS`e\oJY$OXreI01RQc_,kcR%4s$0BbSZ(flStE%J>.1E2lWVTEXD?PH^AGlg -r'do-d14L.m2KB^[d?/(%q]]M1h4,9qm9eDmp"*5,t_D>X2%@*%gg)AdD]t=EEk.5 -_ss7EP8-p$(FdJse3>V/o,QXFcLX0u3RDj'%nY0?'b)\Cd[aYq9(%+W@G(9ZT5!$Q -h7msbpKc[%hY5k+J`-<0+,T"PhER.`q-I>cG[>iCTm:rJJ#2H,T"h2iqVKi/FPaM[ -'8-3)+3!gK5L"2VK[ZL]]<"jl1lJ"MD]3hBF1kLop4m`0U+Sgh]]*&NRm#(ndiP -KN3m!?7AsdmaV^(ZQcLN3SC!7[VPjSO9K$::<)98;/&DUih^FhE4;q -ocE/SI?2eT5Y)ar+QOf%OO>1<4#a\ohV=*;Z9C`L#ot:%Um$,GU%M!DgErP?S!29D -:eAbt-fl9OIP:+g5H.W^(sJnCEi)kP'N"sDU^r%)hHJ*ZD(]D\]9gt2?o#5:#U(2+ -R*^_#bZU&`k#BTn1HoDF"/)AsPgtLE?5cOpXYsePgRHZ,E$"dk%q5\'SQ<&Q$'5ehRZdE)F`-U.]slSTS(np!E9Y?Y\@3+2/in,OmU\ku -[1_\.qk\A:U[G)r0'l4=[8[L,R(J]4W%-N3Gj=t`X1+\k?Am'SDbXWAQbKlb)V]Z. -L%N)\f)/m$gkr/_rNA0Z]3l$FJ8ch;L8_,gi0sb!X;22[a?a(`r$>jWV2N4#:CCU! -nRa?/*Q+7nc!h)ELhu+7[2+r?>'s8*nQ%6\R(^rt]2ssOQ+t>kh]--rFcQ"S4ic4T -+ClIGORaU1\Mk`Y>^Vg!nm4nN2_OCO4/8$\VGkXj9.XXYYBK?Yi6.I#T&nbHQkg.t -]m64BAt7,7ZUS`2Qb*-&Cup+eSoN&Dh`GJ@l>TU,#/FCA!pC'kTQDN5Rs"<-i6<"2 -FCktM9$[o[*&",WcB?Ve;&!J58#GelS^Ubh:20@,N%oK+eCp6gC/%^-m/fo"QF;b5 -?"L,1VR>"/hcsrfFftE"^";!:'kGRCPI;f4f\6n+8W9^9Ek]`MgG`e^c(r0eG%8_M -?SRXZZ'WVn[*@:5E+[A6\+^s&c$@2ikDdr^[oVnPS%j+7(cS(/(A6%dgI#n=otC+Y -ek'$u7rSqAUNcjEdbGp:E/cNfnA^mG4?lY^*C%L;LD3A7O&g7k;oZ4P)ro^tO=&IY -X8+)"fGpNJEh6:Rq.D;@gqT4t*bERB-HP?((Rsc?ER*11.b]5>BCl+Vd!@')g)F+2 -D/PWeF!1M;H$SFf:8PM4VWI+!:TKf+dCZlRnEZWpYBCu!f_YmFhn/?)p3tQGHY7#, -RNm@P:?C8XVZg'_/%fhmotrlK%7L+u^i<]b`4R1C_tJ;9nbtQ.r)\mJ5!KmZ5"ht/ -B/K29?d*ef2AH%#)H65WL^;&6G+'_OGhbWKcgST=T -R3-aq^$8FqVpY@qmsk'q#Mjj\h1pl7 -]_BakpjXZ>_RqtII\.)Gr%II9:.)sEcQV>`QhC?Mhta+^>o\6hYOkWj!"]54:^6u^ -$NSNa!>#m*cVFS&9``R=!U#uq%qbs)@03WD!mi^dYA3e#3qkoEP%/qpLrm10D0XhE$\tLE(no#lV:ra!+b7)bD%1ptt:tH/< -aT8Uh%M7M-:3bGg0+Q>d%e)1`;"FaM3Ko[;$@Mm8HggZ"VDCO;&4`oM["-1 -#-f6_;'Q^9+MQ3@#LI`$0fKbC3tj']7W=+ZO[g*_8jjq+$*][00UWYQ>-Unr$F+(J -;.U)sAtY/=$dcEl;0*P9G7.6_s,b+K0\[G,M\sj&)%i&M;3r/_RZDFN%PT+G;55%` -UB5E))\D`_0_lZ-\fjh2&2D'6EQ&KOaJ4k8&Q',\&_:M)=V>^+*V&/&Z/m#=k(:u8 -'9PL$1%u@/ptq.='Te4edK:VF,o%"t'ljs2&f1CB@2@7++q\N5;BAH8E>R#F,8#8I -1+s"GpA_CM,R#h=dRPRG9-hq],na-&;HG/r%iQ'f)KK7)V84)?[3j;3-Lnbs&p>Pj -_&RKF*3t,8P(pRu595m8.2%[9%_!M,lRC6G.MA4#1$]nnq^U"d.e3Hf87#58#:n4+ -/.Ul4&eu.Eb:Jh%Sh_<11+=f9d1(t`b;KV*kr@!h]1D;Dt;MYr0t=2=e(36d/Mm^EBi"2U:YWda9Vo))m`"r=\!>Z6qV1MXYSg -0(S<\F-AVJQ?0A'(fL)FEt(0oX#e_53tnq^;n"iBKeYA$47g>AYj4'.,1Hi''4k&FT!eR7i5;Z=-..^"fF&OpepHR.(5S'GSo3jnJB0`e5+6?ig1N>^E -DUHnQ2q0'2ZmRg"0^nUi6PG5B;iM,?OZCmU6kc%X1d:q8,pY:@[<&rK<*)MQ>=I%K -7MK>dF2^6T(Ij=B1"4H=;q4BZd7;&p4d4tjoS5t:M`u6=gT+gJe<`!?)a@:(5P+\C -<23'MTK*M,5kMBJe@.^P%T\f16.E_E8^0R9.7-ua9[qLHo7KCe3DJ#X:'dUI1e1<* -78D?'rj/:do_1C92b$dH:_a(/<)chgJ7.el. -<6nX/)aa0U:,Lj1'o$_)2bpaM=S7kQjT8F];,6sar2&TV@ -\m"^I;H:V429/U[ahBk76OdRO]ci\@`Kls[@L+#;d2.EA/7OC -<_$\d94Z"?>Lg8]G#DV2_-GPu>de-I;7B(Rfk/ddB,068/%A"KarGukB@_WHm"&JC -6=sb(?WHQ/?:G(CA&'kFqJ/+]4"aT#nkctE\: -#-T -LDXrb=DW*HFWD(MIWsb,=G)Erj*lp^IlHh-qP&eBN&$&[8[9pc`J -2fjmQdSgu+J_7l!%QAVl.sOtbK@nY4=P&P"gPskBO'"i2=@52h=+p=KNu7>H9VmGf -@tkj#L%tgA\&!iEF,-.mOVnOh=V$:*>*rCGLj4oB3@BWn-tq,8M3sWn=HosJSVe:L -MHN:CGc?SqX+5D,M`A84=LXQR07gXRJiL`8-RMnSc'H`Ued+5)4K6ZRi*$33NnoQLB'=\P.AK#)97o^ -VF9)tP<%$SEk"t+URg((S`E:B3DYmml]eqYQ+9tS\b(bj23o+kTGd`%V1k61cWV3; -Tc+T<=r3m$)ki[RU)Ac6R>mUq/"%;/R:7&%\Y5ddT;1)9&@nd0\[eN(\"q_JV#!`\ -)8-#qadcMWV>=[OR$!qcCRnXHmH$3s3d7/6H5ZJ[Pe)L=M]\Q/pRaL-W6oK[3X(gq -Rr,'3TXplYg)[2^X/amWWuA>=Z&aX/h^cU.;nWg;C=eagJYOO1NlCqe*?A -CT:nOY.JbXRs2$iFgnu.\(60LHMP(>pUJ[HYPSR/)jca70sLPIYrP1VHQB\dKgL!! -Z?rp`>*6,F1V;BqN!S[SR*E"MbIlTU]c5G6:^sfN]sTLi8R#Q9>@"t19t!+7[[Zfq -g[^XuQ;Kd"2L6V,b'^q]GJCe0;b5,YWO/I":#W&UUhBV_ZVp0H`b2T -)K-S"]6c!F4"%YP_6Wp-OF,#mHZ-TF>K,B)`Z/L.9S^;*3sB>^+4ecbB;P -^O1[KADQ\UY1_7PcN4;_aW0u@.[b8d^iKNZ1i]>Dn-_gFVk ->H8Lo6,[$S]3N]PfjD\p^LIUD`E:I+I-8eFld";ScO*7`gYL25Dn\=!a1VN#<.1k' -Kub6hd/#oH]UR<=RF0f\dCg^Nr?H_BJ]`Bob$?c7go\G@ZdZL$PM@t;rC,5!%A%sh -eJpY%]Zn\a>JtXDc(*V@;EB((g)XVff%k>srGu,S=0o:4cTQp5?&.('MqH'uc[D"j -r;Xg.#LGW'-[cBM*=^_nV^N=-dXAIM?+87Q[G/C*gYEp[*AP^-bM7_i\NI:KrRZ.^ -6d+:Ye8[pASB'/cl:(RnebmtT=Lm!F:"F"#H(B$7?$G4tFl;)#A+.<>e"1L6SoJkdFm$HqnJJ0HrdjU1m,P90-p&FTI]qt,2D?$=1mj_8iQ.kJH]j>WDMtQNJ#ZK7 -rT=!(^Ys-VS.7IgO2^1#q-;cP5FKm]FF'KA[nF!Vm.L6]hS/9Vb%8*\?;DZ0dHC1J -]q1j7YMJaDI/X(PQeUd!rI06gO7W'b]En>3C)mj2%0F?7<"fI%&9J]n_6AS?#stkT -0+(&XZni1ZE:c"!6a7%a&O`lL:D(Q"bQSb3a!&HI7Ic=F)+Lm,D]-SMZum?YEV+T# -8!4R9+ilDaO!)EI<0nq'Z!l@/T!F$G.*?S;X"6l+e?:II1??2'9JYtT.EU$qcSS?P -<7a$&ZZP(a:,A-t3_m#gmlXB%eFu.&Zh48_:c&ml6;Y$H%n'8O<>S,%ZumH];DaXd -8lE%(02,;$eMg6%[.QX[:P,678(;Z58Q/VH79#lBGB3Wrp`HPTh -[EX2-=;CL]@T8Ogich!f7?qE:G'09f=dG>FC"bJAYA7?#Xg`+NQIWTd>PAlGEa1OT -a)bNF7FuV:[oM7-?2'WEH(/u`>?[Pa"RGkO4\A!n)sOlSML:Qo?M/i+iZ3HGXrYo/:/R:a!iDjk;V -[WA$QH1lBRB#G`jY;N]%4QtC\nmb -Z>:$KR/h(WmaV:(HZn/RD4?jK\\4/B9bg)9`qR/b]?^GjE#\NR_Jjl]"U@fN7#T') -Hut@hEP.>S+]L7F_(n\ha#D7a][&gfF8WL;dWE/]:XjMM='*sq]m!i9G!21)g310= -DqoP"f6?(q^%[$7FquZ`icoo0LZE]o:QOU_^1X)"eWrAaH/@D]YNgHu\$bRLIeUJD -H_2+hnbbTtaa@P><[[S"5BklWI@lk`q>NUVn,%S^Xt,cK)-d)j&,$#gp]ge,,R8kH --3Cum&5cSG4_QDG#XLEr"^m9*JrjFL6'sY:i:2=hX\KHc=@gsc1a@\CQ4uZq<=<5, -QqZn4Z*n=Y%:PJ[L61C66^W+>dVEu]%FQCY(l&Z3,Y*[2\ML`s&JH@0LPbOZ-q-+l -'k3,!EDB7\3@ME!,4o)/:BZZg(s(m8/"hjKVDLcO0c6[-DiPFL3Cc'n*FlI#NtLM; -8%A@:A+Y84&dCWm3=+uCK?ecu,"5%J)'WU-Mil=3l+VAd-!r3iP*09I8XVRcjRen* -&p:V`1L?Dk!$3[oY'<>jJZ&S.hd5:5\j.X7^hCp%79> -altp(/G$*s-H&;4m6BdqO0R8*JCuFrAE(IKMtA3G34T,YXS!13oLdKa1p]e+25dht -VU\k^=_hksYI54dfipOPD/HVhVGtRk;[[kgD=+sEeC'sg)i&EJ"ie'=*p$XrR(FG7 -8u]9hkZp6?F`*Jq\rXk09\dsH"En%Eqb['VmY -I;?OiY.*Qk?b>`Blck$s('akB$jhH'.E/NW.`:2W'n^=/$pAIab2GE2Kl"13_Y@1C^\9hG-=c79C0?+jL).PdCNH)Bc`u*t[;1!_PD?`>7 -q$/!P-&e:1D9KI--R<68O-=Tb:0uO9lt&8^Q#=lKb*c`i8mAcMY81KX\UuPI*6FT> -2-%=+b4o<0eXLVlDpR?k:)=kXfRB\bWCR<'.q -g=p6rmB*Y%p@0r`3Q!lF4iOsQQKHtlSA+/kpRXF)<6*gO7F>^aa#lE -bIM8Po%n#H/08BJ4SLo"5)7J\00ltVkKKh<;;hqG\4C\f,;ksI)X_0_MfqVPkqn:(,gHaho0 -hhHP)eX(-Emsj?R&&A19/`Ch1.e94Pq0tWnrI;n]Hlla.J+hnW(^EI-Yg,"sr -lBBEa6??"[lO^HK_a:+5^Z6o^`%8dT/]-R$_XoM!">H(0s$J%3_^ki!>L(#X#")oY -_fQ("H;Tk_#f*MJ_k]B3Zoj/60#7*C_!F;$r'80l5mfF[_*er&,X]LL7)WQB5uJCa -&O+%48\q2p_6ckO`#_4o*lR)h/8QNL"`L]1bIcG6\JseCh,nlA\$"i6c;%*KP/;h4["'; -6mQQd*,NOrD+;GP6o7BO>XV'rE5s5C)5LUS$q`q#F[ot8//(E>lqL!7Gdo"p`>![< -,^dQMKLI^C78[a;Ji+PdDNk!!`JGs28LHAHKti:_89BX.KS[^6M9)KMaL$ki*+6c3 -NC`,=Q,I0%9T[8)O[`<5WUnTYUm/lXPt%:/[\R\.jI!sBRE"T^ac`dGr,Kb6SOqm_ -am>S!A;h4]G/mj38i39\_6c_&:!."CVf[8Ue9jdAWCin78*G;a.J"35/ff83'D-oD -KS2u,.DL89aqV2*7't-:[EE*hbB15.m#Of(NQ[iPWGIYf*5'BM]h'K`T0/?0FI(,b -Q:rR>T3OQOUmoS-`6;b]9PKTt%%p:YT?O+'9XGMWJO.F(c,r/o8jT]%KVlecd7kb[ -8qa1dN7?*?eWE8#PFEsmfdP*jnXW@X0e"tN3@.4,ZFiiQ`_.c8"9N -XQ7R#jiapfbJ_*>KYL9@^.tJ&P$GiI2!iN+mE@#/^q@]`"NA[qa3Q%$b`']gSBK5H -p!6P3c8dmYo_?Ysq98[Vbm^LE*;iMZs$?S69iS.=o`1p&1JY1U9A)g-dF:mrLD+KW -b9Yogm.\kl$.,LUd'X8.`=1#pk0?s::1Xp@.5Xej&^HXScE+cMFRIOUm87-V5c!kp -'c>7K),D7k`mjV+D"Q-)p/0WcWshP5nN0O2qU-Z5dP0P(]_p2WrR,3u4/DpTK`BJc -!B]BT;)@g.3_c0.2N"iV:i*D"AI(W(h9a\-dkrr175WIn2:H*Gd/>oMof0r/2UNfa -e$V6c_jaLt(/s<2;tUp:r>8D&6.*),;5HXgboBUJ7FC3ddIg"g1QBhX]"s@%;EZ5R -[7n(%V,CRs<:s#4jX8KI.+Fec8&XT=]@.H"^k@G<)^J0eh(C\b*u'.5L]!b(Y -f(EpOohs<\ENGQf<5!A&eT7gDk4#FS$- -EAgo*(/kq(G\s(Q'5?^^"H]*fgWX_FdH6rQs#usga#8?Xef2i -S6T!J0E%Nrm7^cLF[XJu=s_?^Usn+9`a%WE[*>IPM0bAlAr@*FKrUAj-!J7A -`Kc']Ks!bMZJDA2h6l"n`SB:uqHHBs?1$OF9oN?e\)&.89?fWSXlS6Uj]f!?>LgMq -KtlK0^0[1O>SY.]*UMY%mCL!Lh!NAAp$b0`-h/<#L%*NU -iEd[Ec't7;4k#1WrEn),XXQ<`)$+$/!QCVci&1\q7KhXM"lNkCh?De@i>;c..I+`RnR9 -/`PnFiq>%c"u)VA$"/cKi.M,=V@6k@,3)S]@+GhGjpts\Q!jk0@29L9`]M*c'B*O< -j7X3u!jcq?XpdM#A(icZ[1 -##AEiNb&u(jSXVeq)Vmi(>pLki%?`qL03Q'=llMajfqZm2DSc+>omT7j(;ZZc8O6N --=`?$Ai=,\5_S1#4QEk^k%88>aYRH;5ND0Gk-c%hAj^+;D:]OkA6q]8AoKFMT]D,R -iTom_N_8HbFc^<%jp]#a,R3>t:ZXK2kGEUh[X@8@;*o/"PI7I4<\3?M>NdDckVe(W -7YKlX?=hE:jkM]UNaZRLM:&W -F_PH*>#oQS%WCTtE9AQhjG'-7XeTTRS`\<`BVp"eG"uLAHtV<1C,UKT5,.5`oL4$f -AQ[c%*ee?pWTp@\lF*bGAqjuJXm4Dsk`0%aY-;[V<^WInf#6fu5AC*k<\>2+CruKt,mIn//qIPjk`G=>ia5ul+No]O2jY/U/lo+%k_Bihij(mdLkB>E% -`lHQU2Jeu.m&odF##g^Cee?VbD'&<;7eH.Mp$ZFHD*I^]2Y_rS?Ys]Wm_nC#IbJY) -[-ubBD786h#2F/5h9:K(D@Zj;"5[o:lL(PSYg+/)B*dp4$-.HhDN;U'^7=V_ic*tY -m_7:5f^M@JH1(D>mgg(LrtOQ7J@NVi]I*@BLD]QJ)=aUC]O(AM7i^n[qJX+FEC+5&o1MDa*dX/7s4!Dp&$W>%q9c";f:IEF@Tnc7t[tr7*85D8(0`G6^o_cGXtBOhr2jpa0AB?WVH$Q$I"Dc&GhJP)3iN -Is@TSq6ujha.2U2Is(4Ojk#]?5G7cma(?]QGYb+06S:rcL\bY=H?Q_0BP.NoEr)-& -HCq56YFQ?IMg$M]FMEi_#B!60O)juUmXL@FmuhX!lhH3^p*(R+\=(4&cOHuGet0)t^-Vtt>Ri?tT#^WcP` -c2,K*I.,@.pX&jDdJX$jpTL`J7Mu"%Z$R"@b"3t-0A,VE[!b`W_DeoN=2[W7\9jk) -qj64'k;W:IRWkBl;X=#hf>.Aejo/oTrcNtn-_Gc>l#30DIFm9Ra&A+=a8Y8BIe!C5 -?cmj7bC$GUI)jZ`(Xi=Zp&@PUs&\rEBD;Fmq#&^CIBWOu53.-)rV^i4HQ[hogh`o' -&dJSn6/bXRA0r6'LI>S`3.+aQ(5bQ@;4-ER4UHVZA5YE5Q)N2S8`_^a<45p_Q-5u`24RAg;gI0\Gs@otB=']'&qrc;dV2JnHet/cVUOg1)Pod&;leGa'tVq=ZX9k; -/(PXcNm2%?=`"kRA[Y4rF?Jt-.uhjAFhD!5=*rccq1$.eDn%n6''!l<]3T>[<\kO< -`oM,b/9Y)6Ls0IA=\RsR4dOFWF;d9UCJC_VC3<^nB")'LfPG_84f6hJ\(kkF>J91n -ID=]ZG[*E[(QHJrEd:p(B/cC-k]D,V5,VJafBd[-?,#KG^#/=(HsT#bQXj&/U\u7; -:TrUApj522s.@?rp\TDg^V@h\o_uW:qum$bO:2Kt^sGae"i0VCkh*"6MU)S\0Us^% -_[rV$$c?r-3=j$T$p,'>$WC;SSYrPd'h'i^>o(ElA7ZRsEK"TN`mN"G*QJcQFWSU9 -r.Q4`Opm6laO3bE--5XnPp].dI&/!oB.:oH9%(Y]/Ba43]e)njm)(L#;_6$Hb]?J& -2,+`hh)bqF,]?FcI:#'4jOf&ofg_9r<5D^PRS!dd*tb'eX=F&b=9nOFWj?) -<37Bh>7s -I9fqim;CMj,rqT,f_.1bA_C+$P@rR7Kq2o2QCY-l>8F?ICYMnW\Sp5H%D?ad(ELb@ -h%qBAeYD?n2g4$oIH>ZZQ]:_*1nh*d*uW2c./?O=3pK/#j*t3%r5tS#!J!uV!^Kis!T6?P -JP[s'5hI(Zi.M\o:eh?`==j^%@p*T/C(<,23sOX8+bUDe&&ItPqO_iqKb1C%6J,3E -iF<9amJ\"_k\T0#`&3<(hAnu9Gn8lgGAp;T+usn*jruoZLs[h#7*(W,@Y@O7;)uY, -VdSh]N*)!8?7n[6],'Du@>keY0?.,5)5AHiNCm=24t,4^@sd6r;8tXNGC]:[_pFH? -5!DK(q]=eiJWLK.krl!Sp1-PGOYRtH8C>HOUP+biE_8C72h#\=F>8tWAkk5dDZ/In -o99lJ;*T\^s'PlNPnL1E_22GJjb0n);U/H==`#bP`4;44mTrQ>I4s^c"ba+;@DYTm -1$1=7R'SDU+S0"hADAl-'2E79=edjsH)l`TqJF.W\Mr[CiL@06E)&m[&E9K_SM+;^k?RPJe&lo231CYX>\Ka.k'fdfrBBEBrLai7JP]MP6/sE*P-ci6:t[Ef.!\-; -1&d&$.OuY*]c!QoDN$39$R4g-:kn -MJXf519=HpZ;qme=Q[`*SCOc_f%J#HX(?4Phbfj -mY0'"=&/$d>HN&9`3lYRDQd@#\TdJtiOd.5'AJu%H1*WT[o]6+9rd0!l^dOJQcf/3 -)sr%#h0-#'!lrP1Al!DbcbA8ju!_,a>8i1([;n9,D[\1$'8>V0eH`LFaj -cAC7j98Dm]+iDrj&5hajCN2eH[FhYs]p8>HnV.t%_2)o>]&6gUH]RS, -F+T-Em,VE2On(t5a]U8DADE`>nqL#a9bQu&$ceP'[TUb`D$FEUoKt_/ -I;d,>bo*]@k1nIK0@gihN_VK^?frr_4B+eQ!)J'_@(6>-f;T^\O+`d#N3 -ke/!)0^^78=Hc?d4YK_:V5t/nM,hZ$&UWfi'6%C9:F@og[?^`J66]rN2PI -^2D[EDf%jXj.:H!GhcHjEUFjh\b@jmcak?EBO0AdpNH)`)p``kqdZUIIe_E^jka.r -0;Wd2!T4q.J#mKEW&4M\e(cR=7c!aTpZ'!;qbN)co3Ja5DR8A,bDoMLLWB2q+llmh -P&al'an\FUj]nnDm%'-Zq0+RHI)u9Jm@hLBQT+)/ReL[TZd8@.5j-r.U,'&Z\i296 -koDF!oWF\4-][NL>M#kI?0TnNVcW1iAQKf+pXf1q@,`onfl0[i_0\C\m*Yicn?*A@ -4*P[NB,e+"?6O1]a*G]E2>?X443$rSJ_#4T_K]DsiVZ3&nQmlgGi'P%fk3/4>gLQ6 -%kGi6[lO%clco%5G%u=>U$04KU&&+f%d->Yoj'f5FRNN#rI:qB1ZPQ`?FT=5kIC7m -hqh.mA)4a=_>"p-Is/!BgAX=Yps1J!pCEhLreGO&#;>'0*DCFbn(EF#1VeFqs7cF' -LFH@6aF7L@q>WtLrElc%Ic&uYjmSE(hp;+J?S=/rkM#Obn,7al>9`mu[?a9*F^J -Zd5*:0:r#:>f@q`qQNAo0(An%336V]qp3.bE-2Dh`;U=!#V^r-h]9aWUMC9KE*nQ?5S>fQ03$^#!. -nRi7bB[*Zo%+02,0m=(HGo,tn%C#(,;!Ss\N>QYt(oZ*Qd.\-7(E)KX2c0GkE<@,A -"?"R="gPHHko<`$Ri2H\2Xqq*WA=c6.ie(.*AK+Bd7#(\h&Z%E*\latETnOLlnqX5 -'bU*\1&1=Co,Nno(%MF'K3K,>%2Q5](@hrR&T\d$HQhr#+u+KiCBGDNPp5aZ,8$+a -1-"RGmhsNf,VhXg0r5eo9b:1(&(.X$EO-UI>nJQ(( -;P>(NW5iD1-W:a-ZPOutk:%&f1,C43F"&lN/McoOAl=mMEgnkJS?).Y0_2+qdmugr -XXfRD2);QsF&5;G]e$J0//)SQ1MJ`M_(>05/X"XC1O1p#Hur7N0QQ87Ep.nGJM/gA -0,'TGN)),?><29R?UJ!:J]8`EWB/M/3qKMJ;i#ff7)jjX1p]T=j&Z)1=Y[810pC-B -`\0,(h*(Ag4u;:aF6PloOYbJV1UHa1n*i5V`BWra5VDpAF&b*)%7%9423*VQP@lf' -)aX(265+2p'7VsIF[G^P6Sj-C'>$W6-qJ'6Td1/5R5`fc"J]XdlioH8+_IEZgC;jNC`](8Ml](FI:[$o08J58bAfD -EskJpXZUM`(,Q[ioG($+\?4,u6.@,QFN$q\,k_p$6PM%FFOa*m2&MO06e#gFFQDeM -8NCle:DEG,@pqD4=&8Jd,6MFEe72=?#tAr'_R#1Y<-;'65e#6q;D`r&FGEbPKh8[, -;`-F2FZEC.4]CP\8p$gmF[]9)dn7!P9(a1`dL/_?[oN(6D["PX/'PMcfBm2`1+o[.bKVBi$Wd=qq!*Zsce]X%!2G?fFa[e$tE- -&QMiH6o?,ce]C^sbu.A\<#*qhFkL'.h-K^4?6b5)eONrRkp]ME1'mLe>uiia -?hOUoZX6c,%9HR@Q?Zf:]C1/slASLi?C).#C[L6LZX^QCV@5bLK6X+"X*GbA^Cc3Wsegk5Gc!pCo ->=e3cQJ#cVfJYU`DDjp1"*%l&m:?s>Jla(CY=B(lC?$@-;D%<2%REAnVP -G8U9ZLM59_EU]H32Ig[7.l>d\C0*9-2`YV`R;018F>gUMX%2=HT3m8GWCDd4bNMpJXo$EMYqTK=FXF**Jg*qLi11^30A`9Pf/rWJJaqgK;j`2/W)PCAOF(+j.hM,-$aaG -PW6FB;]Ui89pGHNPrVj0Guu0`eW%+JQ0PJY39-=7iBUmMNgY$MflmhVo8f;jO*QG? -biqh^$(1MnR5kX,)%Vj3Mj_^dObK;WR2_U*+.?\DP'J>3K9MJnWKT?UMF4516^O"f -@m%:lSN+6PGt9TV>FkTKSiPo(H0JU;AW<,HQ7B5#q9>5tF\>kaTK.:jC[HP\LR:)Y -TfNb#=cJhPOdUM;U+^dh)&&G7/Vq;J=T_Nifc?icK9A7&UaNZ3H,H-j9q1uVGU$:d -6SkOK1cY=.Do5SG\^dRFfhtu=V`JsuH?lF"I3.)5W&aCHC:0\%D5K"fTGe-0=RW5H -l8;`]T_bLY>,S'ZH(nIcU"ZoT2SDsk/$&K=pk+9qR`S?O6&E2"OMcXGg=`:ugSHkN -,WahcGr"B)rIoJDVY]t_gA*,-J$8_MYWE#mHO0/1KqDQ]YimsCg@);Q`Mm%1WI#qs -3IRnGX0VT$ZT=j_@oKFsZ*X;9Zk\?6R_b`p_YW;LXL^Q`je"sZ\$bO-GT,DHHJu\[e[V&RiQbis/*DZYBtmV]*l-\NO\kJ\N?%t)\o<@S$=<:Z'pfaYcWq4-`Pk( -].t80gGQ;V2nSt"E`sEggI&Wcah7+'=IW*n]@f:KNO>'^DVO641iGC_8O:t]R*)dHd0O!d4P5e]mOCu`WS;kj0`u#G?a=PHX\lQ!QY*; -a?0RGI">ie?b2Wc2LH7LI$qf*dDB.^aulNCI&Y8cGJ^tcb<3"sf8n#n2[^S,`#Qb6 -r5aZK8&ZIq`;J0(O(YKj>L!(Qc9,AWgge?ngWmtn3W*gABa)O\7E:1^2Oo]PI"fq; -M9rh0>Pu1>Wb]`4*Q`^OYM?8.I4H,?"e;Ke^#9+f.ct[?$kJ*_7kNh2iM]i%4jhd9:#re:]:Id.hHA[FLYa'7jur%m -IHcP4=k?u"h_n^q2Dd;irR]KlfGt"VCg8lI&)giWkl-jUSJBq$a0.ZQl92')GVeAd -Xm5njlTV_/hDso8^IeDjl/'AMq/b?Jc/elL8%K/khV%">gK.MYk+6/H^?=Wan)%IA -k;#W(4'Cb30=BX?k^l+@h@o.&POQ=!nG6MV^-t[T60`oqlCT;lhRE'j/b8oro/5:g -hEC3)4@-^!n\7MHS3,gRe+EW6m=*maITuK.amM@WmU'Q!5A;!aDs(JImkp)n?@hjR -c0ua-ch.P557RD&M>7%9bJ)$.^E<#R+o2//#CeW-J#W:ZXnqWDo:NG^p$pg%Qi$d( -!$9PcInfiqqt4<#rBB-;EI%7!lh5hcp:T;Nrq69*F'0_dn)!oi5)&Jjr#cEW)u^-I -K0eH-LEhf;$\lPBd27O3*u0W$U60]MAiU]h7cX$l"HGnsONHRHM);(C/XJdF0)*#u -B/5oMk0oa"mVt@[:M:F<'`*YPUB0Vc'NplID?*DR!HK=)8WK -'mdu1ZInNpRmjL+D7*TMQMZrel#=7=l1^[tmeM:G?gnmP((U_*_dW'PS5q9\NQ5Q" -)'"r<.@&(fo,4(LD`OB7BCm)_(6;%`dqSInSQ;psXk.@^)]b6jBsl]4pD][Smq,N4 -U\EOQrs+Cuj)DOK?;DZ.c/s*CI3*T*U!r=MHQ>l5?an_VGPg56DT)Y.tl1"Rtrr6,e&`2o$^T[P5!'kK;$NS!3,S:,E0Ott)5u<4R#f6"p.geW4 -S21O?:rG:'6a6bS&OZ(.6P;fW$OCdCLP/_E`K>7P(e/LmCDfUhUi.8D1$!IOdHEA6NQ"`g,W -4k"IXG=C2-?+5OFH!T$uj*KR+[I\cQBG2;Khs"GKQ!eh@$%ZKo7Lt2\fO>im^DMUr -M*Ets,Ds0N,3HM?\CNa%A,+nJO(;At8!@Jo7S'tsR:]ZiAbh'jR:^`ACR\r3`cI\` -H00IGBDMgbTkJa!Mkat^7['Z_D_@LMl0gO*VeTCiVlORD`i6(TqVJOM0\F+WMemX0 -ag#Zo7aCcnOZ(r,mI<[)[r+:)kIYV9`p:;*qptYY6P3;0_+U:D^V]Jf2\X,LHp8Rh -ESP1Ka`9MA+j4n=KYpJ]e=ShJF8Xo_cZEFt8(2Rn7nM6QrEiLSFo?F`9iq$)CYEt* -+*61\?,q0HGJ4<-iHP7D$#eU*5Eg'^?:U@FH+o'%kud[+n*==e^%q#AIb!q@Hag-U -L#G"0a7F\n8'1FOs'>oKD-JsZ[/OEaM2^OV5#qO\J&hHb5NhhAi"Q2Cbq9)`GS(!b -<""8=2?uMB+Tu2;'7u;&1:mEU)Ie]9RFL2C:ieQPq`V3dX,4o<&OcD4e.+&oB9P9>^[PfJqB(4Xb`/]u*4%C^h*Fm<; -O&>T*4D18XhMd#IOq'iM.1m_0X5&%W2F^73_'@'DO^7F4oY/F%-03PBPEKNQaf&PT -iO#AE;O%-I3!fR2qBQ$@tW4\>>'6]/nNPEQ]h&L9DO,mAe`.MP87Y% -H'$2m<%XMZ2AT!NR5t0f -&YbEYMbuMg7;0TX0QJL-aBC_tBa#`Vl\r[%8KCDKKdijO%&ZZ1+XcN=Su.ZgRaX<7 -:1XjhViuS$_h/+DV1c1RFV^ZMHAPNL0iFDs2Q'ONTi>cl;lZ*`X&XJNt5p:AOWlB@VX, -[M$DY>7k<1Ah:?XFAtScg%mWsXVIM9G)"FKF\dbn`.^kSMg;tQ39FPJl\!5b,;k&,Q/bpMCQ+j]Y)iRQd%8+0r-Ke@? -TlY+2cRP3+lWnkBG&Gjb]9d^0?2MH_D\_P@>Z#6LmBO(/[b,'U=\#Tb[`4Q8)d@@\pT<8ha-R/U>TAg\rq<7o:f[j,M_MGWce"2Hkq3bNj-So_&]6<40oBD`jEE+X^K)@o2K>nMaop)Lt2 -2b%KZ(Sl.rP0t1p_;];dMKI,ke!b2N.r/.CobK:3R);iRS7diOXgci=Ye]:o"d!a' -6IqUO>AGdEfJAP*f4X7ljP6H5Fp>k,3u.j/*KdXN3tgDau!A5.?ZF,&\PZ\L\VN;:$YaLU6P7tJ%o?=g!k:X0J_G0 -R!F05k'=)Wk^Ia%H2g1oI2A[NSsRoPIo'[e=0(QaZ_dNu>^&;kPO`!Hg1Mnuep=g; -pKmTrqs*je4#^aGSWi)]5EG>`69X4sa1-Nrht2AAdeY%[7/&n8p3YEGmlu#NpWilt -]FX'#6U/E^DpcTf.AHA31\Z._htpc#N:se!Qle+?k.Ja(s.Ac[.T=j4$irU5!^J:= -5Wf079Ed[b$U'F!^jF^!KEjc!W4Hd!]sJ2/F#gr;%R'_#4ld-hkn5fDjM/niE72Lc --9mG:5D1F;,Pj[:isf5k6G*66_uITqPe^f_6MrN)$o(*h1.*TK6TbFcS2EQr2F+&q -ZWg^#bUPuLVnh(!_n6OJbRm4t%m_HV6i7\;$l)/M5XZd8_/pVa9H(iS)FSC16uggE -`#h:p8jVf9`0k$u"4B4gCPRQmSR#'2-e6,-! -/]FeoY(SW#b[!Zm?:F3f7JpO_$t1&R2o[C,`\]VD3jgtA3^nEV1MFise3$+ZBh#1= --U^0e'LKgpD+tng$rt@_<]M#B7WYO;oNTCA>"E1.88Kou*/R4VMFah,8A'mPb`,/` -A4Z&u7SJn7nEiKJB?3JQZ9ZdVZt[WePt>dU7a,g@oPhpBR7XKI_.^[*7!6W,SOr0j -8bOP7fuQ:AO$bPEAG'Uq[i -S'3.q9H:tpRE\=aT?M,k9RNL,M[IT@U<4J!9WZG_^r8gVc:V=1b'KA2H]4AWWli9/ -9e=ddaNR;q]g'`F9,uSYI+_.([S(_s9t]7UbhZ"KhG*@o)/Qk/%(T+Q\kX[3]pt8/ -bgn-BRS2`)9D%Djr4u&X`6:@/:;#mfaWo#7a\7B.:@.IFr:)a.9?bW'auo8k9+]>& -cVJAS^Eh/X^q[#$J-_gb9ha$Y]_kRYo8KtmM0+E0FP+j7!`0m>9pi*.r<6#'##K.A -:jiUGN82\mj%^m-:qCAa[,k->jGIZH:5of[Kb6!Al-@fF:9>4-4V^HImS=hlcLi#O -I2Pn(G#'[];7uMJbk3B?`m!fDdJFa+N.-^:W=:k>MtI!Ebp?7^-5]k,V%C>C:s.-J -!mj@d;QVK*PmL@E/lM'i;Z/:J%5BmI$rF&^;_9gEbmdM9jhmf!d1!ff*B4Vd'%'De -;nY7kbn[r=(=A*[;tWCQSNtL@b#-+ue3-/u9MCCV+&m(N*]V0P6(G@(K[O]`cdb]g -],sprZ41q+<;e>t"Y@`S1"@jSdle(=NEAHAjATnR9?LPhSN0^* -Q-"_B;r(h]rF&XR6cU33e.lLp4_7S3kgV1)<)l=eI:nMH7oBL\StZWm[;AmfD:I$; -:\4JnD,F@T:tI9r\[>Ji9m'NCG#rO)=+,<3'j'"X=]_G&c9+):[=(uQ`84pqGC*FRGEL0.`:4#k"+9kILmMH4#?YdJ+ENK$tmN__XYeub#nZ4,=O -P#g\.E`YDifm>*uNL.aN<&ASl`%d=1`D&bmmh13fG)0 -g-'r>7=eWJV-#$M==pH_2.'I&Kj(UY>.o^041&+tY#q6tfY+L;22p2TNRjB#at8\* -]k^5KTSU8XffbMO7CcW[:S;Ql=`ndi]?XR0^0C!>>Q)?B%Dc%MT%X@c>V)";XeFNS -E/Z*>>^`F'NM]sGaBY*X>'5JOI9p*JXPE3D>kP1'q&39kY?``ah)2Cl8_;];ZWea- -?#64cV6sG6Mj_u`$f/BuL##t(h://$gXWsn%D4g:_;6d(?9R@U:$#\dMVLXmhK?`m -Gi-tUU0arsg,7#Zc-'@omU"H3gq!sKNQeTV3o'u2>nt`D9g.;Ye),#m?Zjk*NRh;s -fAEFW7%N"8?.q#ugEajo?1%\ujoJc0L($uFNTK))*X(/5k$W'3@"&AhNX9*_d,'Kb -?Bsa'20Nf6.'@QjeO7KLqV`7!#bi*G;NKl`\*C5/s7iiXfk[Obn- -$=`EV@fA&k%P_H1hVcB]i6F-igr:((Q53nX5%/V! -@>pT4Sf;+@*+U*X<#-K_mR:Kk7R#)(hprqr0[`0d@STU+>PX4[]F;a^MKUF[ -%Of*VUZ1,^ANh[,:/b_!11b?)AU[`mN`fq\QfCgsA\L!4`I&(H%d!&A$iW1s[UEbX -@UlQMg0QmHe3;M[53)o\Ao;9m%B\\T6>!B8B"cZP%Ro@MDJ%aBN.rJ9Js-U3[g?g- -MLJ4Zeo^(\PDk(jN,DL#<`/%AZ=PXfAR9as^3sQnIH@>UBE!Ep%Y8:6G\+,33#6@ADJs5i -Q=8VIk6rO[[";ZaF_&d@Bs*s4@)o8\?g"#*l2%+mq08%?=8"[ -g@*nu*3DElk1smp!cT*-mIoLV#/'G*O&T`Nc[`oNB'&GV$#m$o:_r;3'7#Q%4=5WLKsGLk])p9]UmRD+$auk@PG=JGJANLc[?'p?2*enGPLCpp@^YQ@.m*#Fshoe:PMu'W8 -HG>CQ2iW(VNcsTh56$^bX[il@P'\jGq_MH#5BV6]Q_:gUqgY#\O.,s4\8Lc,Hb[4? -cb4\^#^Q0ZGQh1D(HlpG2u6n!H:PmLB>o6o@Oc;pI"/,AO!AtKXEq@Wr3+c[P>crqb(: -p"Bi#ds4ISs#g:>B=7PKXei5Ts*r^OLY@6=qKo^.J%to2ci&@Kg\pmH#QUD:<.R=X -E*,LL'aBCZ@Bd7`7NiG#`F;\XUg>nrN^)ROq#lF@,EFrmms-aa:FVT%jjL,][UUtY -9kKT5]TRD!RnW"o\cdH,k'9eeZq<2&O\;IuBiOA/5,D,V<%?EZ]iMCBX]K9qqW3=B -@Bs#%egj1Tdq?'jBK#aA`oV9Q?#J8=qj#7l]jEF:g]d]]I_oK3\3)Ys&W=QeEEMR> -5:)H7A2;h#^/m%Yc"D)Xr8rVpU!dWHg+4Q+SBl6@ot&Cka'l=+m<2]NVVcO,hJP:, -^&IbW_r5T[4FSY&NQL='q:r-.2l"^`FaBU-T4b:[lur9^hZlL9e7q$,So69Se`ldR -4l3r'\)HrSI==D1VrR1?rdOmne,]K`0DktT^lUY`"MiA`&I$"tC[A\Y`CWg;_N;,T -$c>fb3=J:%gcl:e&A0:"S;/!@'?)[o<>NQ9Hrh0(d?J&W`mLl-)FmZ;G9"Ycr-]^. -Z5eE>85_"$,KWh?R3]n[>b*:c&tF(WVajV2H-6iMZRsAKm(k;J;Z+Qhb`b061sE:2 -d5F]tCuI=u8"?\BcI9GqSJnB1dll$`jS_?j'HI->cr;k/6d\k-)+7?O>ouPa'V-OB -dPSWd9N'Bb3DIkabs>1UhlC[r0r$rOHlOf+#iAgt*:g -EnrZ;eTTc8IFa(samJ;^?E*VdHdoOI:D0e1AcT6s=8iGTi0Z\;K]'@H&Va^rDBX^; -fUDB[[&leNN8iLH0ofaGmQlop=S>=JjLG(dn@S,N=dA+%)oQb`3C:NXMd0VZ*$I%7&;9t>7Sb) -CqCb5[-\f=caN4FG1j@m>D_<:c80Y6]C/[ipUosar7?g.FR:s&n=2X)_f7e/'uod6 -Ii$2re@,V(o%^u7bk#)s3R76Os$>$(>ouYdo\D`/eFd*S=k<9%Ipq!^f7i%*p:\4T -h"KRUES^BFmt'>??2_6XhVLEcjBnKNF&aTo[NgQR?B;(@qVIjJlMDX[[I3oAY@VD. -GrNk8r7O<^o)1d;eb8s6AlG>bT:b6AkT?_kqgT^Fp&=tErVf%er,^R*:k6ec"1;5C -!oR#eJM97l5mSJ6:H^>j-#2%mN4h6JIpf:OG<9H,Xe#b'&mFrM:"L872Vj8ihTS3 -d9\@mR'd^hjA'r<"l_ug_&220AW0KT1.HN=)G'.9H#^OZ7hT49*qS06n_-)q=S3]p -gj+sCr]^o;mQ3p@oT54S6HFEe+_'`9IIF=053X::jHPpmP$U_I2ran6j8kIk%T#aM -6RUt0V3I.7;9G*3!FV]:Q-`-*9%d])jcm0=P23"OBJV:!g_uO#IV9U:'.C0U5eD6UXIVm@J]f:d@f::<]FAA7S3p1&@ -S^Y;t:Dr7VkG7dBe)#I&(stP->l9SFqLDAq"[D2k!>4cERpPo>,t)-XjsjsdTYa;l_Sa,e_[r?Re:"QjaF>_rkMVSs$<_4 -"gHJh`)p4W@I-tmTbJut4GBV#BZ67BQQ3eD5BA'eG@nRMf3KMjh&"B8t].QKi7=b9"$JlLiZ-pKHoh>IAV9H?cN4d;M[5Yhp?Q8*Sn"o]k -fA?F4S+V7!jo&>*2TB,D(P(uZ"Me+U";!(*6SN'ZH)j9Wi>Xe1m+rJo=Bc+d90[.[ -jefrHQOmT\6Uu(b+LX8$fOC=WMTgLT\+]OO@iSp9nU<@8=PFa!!pt$5jiPQp0-90_ -IumJAcYKPS&7$fqG&HG:adG@>jW'eU.h1ILl*bZigXga,k$-$^CG9>T_P=@gA^&i" -1hN9.Re(-.c.TikB,ou;E)$V_g"/>oI.a'%g>bse7gD/^mShYZ(XUfI6t)&iU%DWZ -7(A.G@JqF,oVRi#fTS4&N*2%FeZhNPhb[gR7?05PU"$Z7;bAQmOYRu[aBH>ZCCOQ# -Z8B@")+,k=ST1h'QFtgDWb>scZTE4L`QVO.0C4[XZ?Bh`c?hchD&oI[p86BogL"c6 -S[GoL[X$2gIrB3EqmcA(LV\9A#-Xcf>EpOoh:a6#khY@5GE.a4>Mi'ANA&"ik54%] -cVE`M"fCO8Gh"jMKPGrN_>%@DiLE$]C;"8uop6EE4Cm -(M#j<]=%PYJaiPL`VnaCdf:O`)bM"pHq!t[Bmn2dI#P55]Zq/Ah,:eLQh55NW( -qQO#t&6NfX"T0r_r"*Kp'_h+>I4GOp3K)m2$@[(K(niOr#:i'd=)9*b#'cOt.Ai0,UuMiK90= -Z'ciaQR!2)C#rB3.]F>l:E#Bof*hBnZ*bn+>:'rq-1YUYAF1B-D]I2H*>3QD%@JD\ -Ijbq^-rPgKP)Ca:Nae.B*qAnPEgnLOlQ;2]?a'JP;QCqGXWZ&s.oHs&nf&c.].=T0 -/5j/4NW1F/lQXb7,8/HWOc7>$74o3;/i#dH8.?I!jsO$.02bWubO[&9B.stu0N)U= -P62cc6RT2R-W:a-P8>so)_CS*1/fPUP:JE;0/F5n.Irl_Eh,"M5)k\!+06P+o!Kt= -:Fe4u1s]P_'#Q9+a#2=U2A9^\o4n`_105+C/Q6jP9iWe9lRnBR/oue-"9'Z=.Sd;D -,uXP!KOW0s#;FW%3YSDFZ`,V^;)+9@1%Ve-Zb$G5EBFoP4B'9_PKQ);cH^Jm4]=X0 -F$2\'%4X'*'f/iRP>aZo=$HuV(3=%FdqM%1s$,!85I:YGZd=S.HS'-],En$OPD)WPZpT+?Ub`= -MGr8!PM&FSha[4qNRFX[P,UXOo02er85t3*E"P@""[Ec_8Q:mFP`\PdCIV7E68TiX -PTNNIVEXQF6F3-X/oa8N^I-Mg6kmI2FN#1U77=N37249?eCu?mUJ;N`:/pCOPj;)o -mT%bP7hk\n<;RbZG80VF0!pC)'amj'%nMN\8CX,#FIuEq+&UQ5;7.ah6LGi0arWDn -;`-:.u\l;cN8bFKnfpX&S_p,IFjFdAHLLa]9,#<`I7CQ"*k$%TF.o=&e!W -FP0ad`0h("lkMONhoH?<'j/PuS=e=\F[a9#PuPoke'dB4(=M -?rT4_87 -Q+^E\9k>'UAN!=q;C!mFh.@DVAl[AnG%5-MDe@RAB!jp6M:#XPm:Z-F?E9>u'Id&U -!GN;SBf6'-QBu=:Pn=0q@.k=MQD\KK(35^fCK@o[QFgq`^MF;H@lDA;(<^2V_./`5 -/s]"EQ9fAr75^@:A[Y`ZQ<.tTkAKpU>]t+"G56(-F`7!NE#/auCICKITP]] -Qg9+>RKU+WrEKXg3*=0if%[Vi!CL)BZ=\G:k= -s,Yh8F/"4Zj]dKX%u48.O\`lNGoMn!+-IKdP#f>RfD1T_.^?q^A%-<3fEmEQ4-U9d -0"@gDR&uU_Z'B)jD4XpKpB?,@RK]?&H`.j4W*4VJRY.QMLR3;rTir%q3gu>t -\"]<;U:R8&>-"YaYF.gnUO'DE>.^PhQ_^(fXBNZGR`heY-)C@WX]j1D7:i=LAYpC' -2-:esYM05b)[E:PQ)WK(Z!.lgBVDIFXf@j4ZALDc -kapNUS!gVhlGb<38Q(0^;L?d'KqbZnZ% -HBW,lC32R`c!5>7I!a,mQbcp`a?8Y2>jBO\REllEcWp4jSGNuTS^8?:aoWnh]WK+8 -%EbiG`14HeS@-bW\Mftmbe5CJSL_oI/V>srZ))B`]fXK05L'-me(f(o*/2ntl.#U8 -ceV[QSQjY#?c%3rem/@?`:M@sDp\H'hH^rFh0[QjJ'me&0&_$kJ[sF(NS(q*fj0fp -SWVULcdMced[d5`*NNf.1h^cle31:jICn!7^Y>FWK`/ -SaD7Zlec#ih`c6!:9EG\!T8EZkS%mm^)c0]O6GGaiZ=BL*gc-JS*D#_FWN!kri>=U -YIBk!KYm9?5!S+W]BgTRlrF6g?<>rhc/i6]k$H[,T%iYhhc-1_hS//K=j>iqH08N% -O?NR+?@VG#qsY*3ke<\RT*t.\&*c@knD=oLT,7%T("q\WlQ31g+"QoOHHlPo)ZeL\ -?TI_-47jUZoNscRT0r7c8+b\;ocI9-s',/'?1jgsp0V>$AF_rK3UD44lecp\?[LjF -9C3gRm/Mjk?K(\:O80l]q,9*;?^p321JiPjqHij`./VVg"7Q5Eq`Y29Iin3q+oD;W -qqoHl+3FFfbN[^Go)C*9T.U#P>'.Mlp)iJs?gIEXl2L_Mru_"8?i0jI!8)EOi(ura -((ge*6(sC-Cb?_?Ld^4jpp=?^)3%+SNCQB[59>nUjH*W9j=..0GQ.W]KXQcrk -X>W-tQI06N=m^C%A\Qu?[bU9e99n)uGJ.:cQ^dC1rIMaln+^-')[V;=@W@coFtXqs -aCHgS>dduoRE]@8RG@Lc6(u\>oU9&DT2DTuEu_*;,>$<_ -V(YJ?1p&]1;j>fo:fI$%4]56:/Or`>2+:SFe[8C_<`SgX@p2nJ[:`^p[Dd>q=1-00 -clr)q-"3O6-')P=2D(8+=dE'WBNb%oSSD=dXf#r=2T<.@TZnB@E$SKsd*O:8c-ECr -2`9--?$CGGG[6Z$hg+';V=/b<2l^uLZ>>g*aP]#N"b:!*2@G1GQrX`OiAbEkLLN5\ -!psI,[P*SL37^$KA%;4sOCU?e8!7Dn2G]QK3EB4IA[utkQtA@EB::gL1^fg=RFZ;I -k;h[ST4g7QLS/=L(5i:$Oh>>(7bVaHVeS8IVl/gkQE@0%qUW!UCDugi*6e"Ta0BHe -?I,oo)`H0RD0pHV\8AjOe_oe2t-Tm+1Lk@It.(dId<9&[FVeei%tUg&/#.3 -GS^EhA.O7<70L%7k65(s(2f4G$phBV#@Q%&K91No65Il'*%QY\d%V7AGZbA^Cb(4^ -%E(9)0+D?c2fk)?)ag!<%cR%@L_05d3TjT2U,5;q%_GE3?u4\*$X -+(OqmO:ha`83$u"A2K((&gg%l1\CtAT+46]"$?!j]u@r'<`/5]iVf@?Yf=aYSIGZ=??gt -Cc-ur<+C'sFPo`n+E5M,W\^\#HgugKU^uDXI%XW\nDIisjYBm"F'd`2(6*+Q:EE,QKJa;9US -j8=UnE[F2gGpanK]U=t(G#-6u7k&"3WKhM/YJ5;Drai1AQ?)X;^Xs2S@!p"GF#IUS -)3G;7S0rtGG&>MA7lb2Zk6UR[)p]@24Q4N[06$V1ckrB?i`uk`oJV;!R&:_[%2ko4 -FtqD]$Kbih.??.]ihCYG-BI8a'!1@ -BrtOH>Kchd>\h#qY@#R`bupZHk+.42Fsb7o)7)Bj]]lbDNm?=I5A:X%n"-trIG4Mc -D+l`EU,4LZd//<4DB6hRFB4OOqDWM6^"'_qG*CA/a%YqR2n\mnodF!f;sI&/>5.1V -i#7r54e6H+GW,ld*%-GZ^)=h5G7W[DRp>JHH,VZ8("\oW@r+=h`q]8Kj8=$d/Nh6"%SL:4T -^%'ORJ\L&i"Mu0CUXaSgtX;Y(SZ1=LZNoJ -9Bc=5VKD8ek5=tB>mBc!A;3\>qS/rn=+dgT^KKlNGH^]]a4Yf(C$f%&D"esJh"JL) -J3.sqm_9"bHp6fb&SH=V^F-eo^A[YP$%B -^$FN?qXWF7qoL*l6jA2tPOjMEASo_hfog^V]D(/1&/D --GjjP_Ls>SPUXJEM*O`=6GtCke-/#5$:=@k_ZU=a'*H%_%`:+46TblH<&ChPcbU;. -_h9tdO[R#J(;mKp6c9d.dm69Q)F9V3o/;P^ZP_[J39*)smf=P7C67; -S:&BcGeXcUa;$aJ>oYS&pY#N(W`%b5@8c -d*kQ/_O08(LJW:i7(#Z][EE[#bCm;sPdei#,"X>tQrKGGe@j&d^boU)c(SBp8u/FYK[@sgn%T:4 -9&.oj<37LoeB89Pb66J@'2?E0]Lag>bG/_6%!0:AGOJDqFt,E8@7'reC[RPff,EDb:);njT3X)!_s1+cp\&`:s7$bohHa] -:3?ihPmPg6$IH0gd),TRSES0k%BOBbcFiOA'bJb:#X^03;+0p$9^t_3&5P^c;2#h& -0[J'n)UDt6:P57Vm/'Z@qU+s4Z&m@/jWVtC,1#P[VjuKLf\B:\-I>I7:fSoAPlupp -hGA>@7d+s@bq7B*0%0DGdfhGS&bo2q%b!9F4&lhebnADE2:HT2;*>XmPnm;h'uNHV -:H^hfNBGNe*7;_idChfP2'(*C*mt3Z:SIkf4X*j2,?/,,;GA^#AL:<'9%&\l;OpJ1 -eL1^R!uSFA%SNciksNV,gZ/G1Uk\f7eJ$Pu?.l=49ACu$8=G:>+/?;foB\9_M^EmVq]k^ZnNS*`s`j.E2c#_JW -P1LG4fd2kWptFCqQI;U+f2B-1SXJ0-Rb>*bZ`Y37pZRg4b5JI>6C6LY.lmg9dm0-&^?>Y1hrHe5_R^jg!PTZAF+WaUs_> -Fd60B[G,hf:h\6\IC@ma934hZ,DD[me\0`!^>&=qg]N=7je(,A<(Xj,YOcHh -gSNQS,u39MfA2_GbDj-a&AMHZhVIk^h?Dio(#c5/_V+VB1>pmA?,U&\`C]_^gkFtI -Q0I(]%:#aQgo[Nr/>lb7XPW@5h!nb*h9oXVdGH^]g'uQd2:^S`fcPq&?\R9@^%pQF -qHoNac4u^N_27"prnmDKi!'2>('1%uj5;f3?o[V7`T>s"#2j"L?A7ZNQ0R;!$CacU -hUW+lb1Y#Cmp?P8i:TBC*V8/?d,?8J?VU6&<]+=%^"?bRB7[Me%Y)I\pMh:7mN -joSuR*oZf7iW^Ob&Ed@h,2c%_hGr^rIO/H6B\bQ^iEc0;8?/VS)WPu[j+\L_Q8dip]3j(giZ:5Beii'U53)?$ -MXD]s7R=?$fA^*A@W"QkKqr1T.:BSRjFJZ%eh#mZ%B8bIi331sji1QeeXGP7?K*s=gce,<(.Db- -H!G5Wk!hjQ8<%NFr/gk682q/ot_RFD3XSksgj#:6Xj3 -cf^%LkC/f]NgOOP3t6!skMD`net)'fT'>l?BC;GA4^$taU?Er!0LeNF:8R/\Kj9'8 -Ap1-:HD03XMWgY4lEeOi*fXpsN`tk3Bb%Aj)YN>qZKYu-l!Ca_2RR6_F_R/1CPK=a -QC@-9:hdTKC&Yd2f"LD3^?bBGl5"kc&YdRRU[0mjl9d>dI\pk'`b]c5cR,W)L<4%f -Wp$mmCqd!gcE6C*Y3=`GV_4'J&U:U![I#lZD*GCF+dIH]"*jXZ(DEe3n -%g+^bV/T37E^(h]f*?2[-LcP'E1[O-Y3^2'W+a3\ElSYepCCB\eo=25nNS_t:G?i3 -0lKLHEK:n,4o@/ot]='f3P$K54f(enfM8R59k8/@e;<`\OT'WO!eUj -7e30aoS7*?pFGm6C@nli7gDh5f2-YR:\OO"pA]%)#>gBZ<;/=MG<]&N7s4&]h=Y\g -GCOl1I_0aKHM=mqpW%[Udk#GC4l/SOF:Woq#D#`2@Wk7OF?bF\53MWPL@eV2G'@Wp -QUph5BjCsZFK^Y>ZiYFnEHq4sq$2rU&!-N&P4[\XpJ7%JB9d[BQLd)lGF*PuT:,M@ -H$A/8q8]$$f:DZF??c#np%Mm>+//NC#4P-:GX&#!:!*0CL\c4+PE1OpVht2PWa,>D -Gh6a+_oXssPBe7RqY.5i-aEORZ?m=]N;&Wb=-`YqQ[=hH[jQBGLcRteo)tiH`+E$YM&l?)>iUOrQ!^lfA5Ec^\Rb5 -r"$Yn(S^NqU\mXBr*SMFB[;!Sa*r63I(-/(Y7'upc$J:5-M#%P-ggjkmeng-ro`d" -p[In^e9uQ4rGV?,=*3t>g3o%Vs**1FkP>.UqZ"&%f:UrGp7d!`iVY*S4IkhQ'G:WS -KL+QnBOiG/$\q,Z&NG/=,o2A#TCKGPG!-q-4'cbr'Tts4PY't7Bk4)F/!iqA'01Hk -AN#uOk>Rf0idEn\cY+"R'c)ElU/EDhRUn+B8uP['1hd+oXLqju.i#)/DS9>[="IAK -*JV[KZW_1R]1'$UD7Eg<90oon2XjcTOqd$r!GJ2o'G[la]'>MZOo(i5jT4aqT -if6&>mk:$VkOnb$s'K^-kPG.lcjTpU^[NcX"$hr1'a2@76lcHGO+K9-S#:'O$UV)1 -2%7Ba`'"RInE`FQ`)/'Q'?$#$9bbR/>[8(6&St5L05"G;H:H<#D]Hf[gjL26&aY,l -aAORG,KOn!N?q./>b*4a&nIgdb&WH?/'?;aX"DL-jL#uIP75Dbb`aU&1X-S,eMYU8 -Cu%%q'9)$5cBG?s43nSaof^Wbm/9/q'Fb43d$-*k6dZTB'h-N7D&l-p'TFD1dZgjc -9@FU"2,2Pam6*uIJN4fKe9)Kt;q0>l93'LWAQ;d^'n'Xp0N#[;4N?c+.cIf#u"2>`*sPWSJ@R -eT5#_:"sgHf8\a7h=n&5HX7;Yo"8=f^&LZS%ZAPD4KdW -hL1r.%kME#BTR+i#O'l:Oeq:RRolRnQ*23.R*hn>(u*q.#8 -r*M,!oDF)2"-@+4Dr(-d)3<\NIQsIlqYq#[pRp^Fn+cq?oDsHG%KJab"O1*h:Ou4q -"gnUV"(6cjJk/2,24q.'LKl?QJAPr -L/?/66We17iP[a3;!oAlfR4:i"@7i@%O+;CN=k/<8Q'G[dR;0Hki-taM@iT43^hE` -h5"23&T-=BaL)go"CI*bH87r)VXE;?BmDG8ji5s')l$q^N`!eW7fn!]T#>o#na5U3 -aRpWc"5%rrWUrAg#pJ@dM3,"q6qGE7,>D\7IZdG&a[bqKAAjgu;Hcg9K\6B;":(/f -)H'0F9.8mY#Wse)$,IK^/*1lXQ*SX1SgZZPi<6ZCddCC6flDdN'J>bL[UMT!NA0KW -`L.Al(dt?o1ZjArB;f6JIftB?-"Q>kCDCEe4WB$]SkabYCdD^@T -46%=MN3gNM:H@f)Vo88#.k3AG=Q^^&r;iP?%Y.AJ"[QfgnW+:YL.E4%+6\ChU.b>K -aSIJ5W5OdloP0?4\iiPoAg:^SR -"_"K4Nj;\hbuJC]l(+*>[T8jQ>3C#(Y#F2fcarLLCW1D!:SDkk`_dZo7-o&YU3'Ft;9LO]m(J[j(2hB"fagWQ9dcc\L=06e9k^XpZ:rcr -el+Y99l5TdVA.mZ;p'/umBsL5Vs^3WMN;]@28QcR$*;XVTlK@gaJq0Oj]pG@=mh!k -\lVYl?!FFRm`!kk=)RG3gV%h"!SjgM[^FsRc$=4mO01A.][t?_HZ+W)^/r&Ef.-`. -/2`:!=6BKhMuA+nqY<639#ojp$%_Gt$%"'mc<6YXK5cO9_Djad@8Z&u/Nor<3+i_0 -]KM"0@PkMqNn<8`@u51kn!/(agg\HLMfFG1\$lFtj'6;XmNo]&=!o%ob^4E9p-Hb+ -0(@q,NKNd$8]b*g-=ko&POaH*b#qI`hL!A0o!V]7.bW9X)sN^[p0k\GO"b0>`'\IW -!6nU>2;fJ1Rra=#T@PXu?u-RKF2iEM7uI]:gb#/&VLd)4%mQJP0o,8d+ON5'6tk3C -Gd0/h`B$X*ku\=10odm8>%^T>paCg#[Q2huNuVn&AsfkF5LimE45d5h0f`Qel^+B%q09SI[K^baiq@M1[Nq_ZaOAMT=M]sD,%.&G.uM] -)f20[9_Fsc#'nucI>"14$)"XXkhTI8G&Ed(U%DBGd@81&Da!H.oS/Re>$HF>:&K?[ -`h(Y,$Vp1PI>mh7V;YZ,L2(IeW\n],ebZn8E@[]5XBhEApT#9i/5O-34C -K?@X*ouNhO.pMEN)k#^mcdrZ -V=*3.e,","hAb?umk1`mHH$r^47fUnrk#pl!:Si.)hRci$/+6t#iXPl[IE&+:pJmk -in_qkG?udS3A5[H?15LOhYl@0#D)AN&&N*W%Q/O$$E'%n5]1+45C>$.=-T:%_hjeo`'9e%2/QlCQ>THX=#"0c+9ahXB9I -epZ3J2e;:t#N@RcD;4r3amHhr\0bPNoD>H4mb^GPpg:/rrl<^h?Z5@\hnAda#N8KC -,K9XXc*7cqQ2P#^p%_D:qu:XJo) -qN%NXWhB8d@0SDs#&n8\Y\aU6EX7+@3Y8%;DXSjg1rNM+aE/acMMQ[H:rihdi -&=WVqSI-kOH*@AMmn!lUX=eEg!Dj:7O:r#+_$fKO4>7ugYTXGE,n.W?!g#&EYVQaU -.g'`T"0b'$XpG5-9+N^J%rb9(3*n$ -Yf.!s)%A:I%8hBeD&u#?h#e7C(bI0H;!ea4OVmFn%hSOI:eqt26;?tT&.tl[E;pO_ -Yo>F*)f`D-Z+V+H_&P"a&lC4nOiWD6KbNu:*Dns?ESVY:cpCT$'bO.]EU=gPn0YD? -$Sbj-O^@[a[hdA*(@hVOZ3]8`Eu2*(+`\;@VG@Y_i>@_&,&'T!0pN630c;NL)3LO9 -Z(3--g.kMI&2HfqY3?p(;'dtt-$!-7Z<\dI@4!9`*:_9#Z-(_(diIu3-ZX>WZ/G1k -k8oe?*qG(.15PN6pE-]++7bf)AAo[3TchdY+S)CkdM!GF)(Q=?.jedj&g\B8.4amE -6;fT`nhhugQIHO1)A:XRYk',<9-eOP/oE.'Cr[ge/lR$J1OO$0s#;fg3-0p9Z]-s9OZ=qu -0QM"jP6=la$Sc]53cc#sPGECY)_r'S4*.ekZQsauq(gF<1Gd$sACtCdXY_ia1_\Ou -lTYfA:Ge9q1t1N87)_$I=#I>U,-tW-e,;1'rp:rJ2\ZQVoF0]@V)S!m/sI&fPEeH+ -+[S"36?FYCZn4W-!BJXe3O'u%PH@4DX$ebI6tNnj1VZ?L\O@1F73[pX1W`)W01I=\ -:.&;&1Yk39D`tII4VQdt.e%4LFnl72\U;F\jo9:hCM#FFcs3K2DtT[<.C*ZhI"n`BU_p8X1Z$YX:!ATg87H -;_O=<1p9O$YqB"r<-:c3[7sWn;,oJR-+(iqX4#Z8h+`$'<]+S>&`ld;kt^no=#G4J -FRr;8oiO)%/;5$>'a[]:NEF^?;)Jke[@"lXd8C^U;:1;"<0pM5.7nWP;cUA,Pr=8t -j&?c4;sdXdFj41ad9SW[?$4h+Y5_MOcAIRm'1ojPP%K^Y@BGr@s,7be[o&Z5>#J4>]iD= -OBZ#A;.VXcATh3f[U!J1\R#bG??PdM[HhGTm[fY;?Zp^%epCcpOYX?QBQa\qYQRc\ -&RfjHBlLsu[NB5W,9^)8@b*&E[OG]%2d7'*))aQe(-QI,]]%r%AJ`oUeJd;:el -D0FTL[bYfbTk6`= -"T4R"DV"E&QYgXHZYt$cGBX(+pO%rZ"`UpUG^"jDK_oajO`?^(+V]9<(F+4U%nLmp -H?UfaUX*ut2g[J@),H<7pUtZ-^A4SZCq!,dKS=Rcd=!t(IQtQ[otfUc4c`(SQE/j*Fe/HC$3mlrSOX -1P7Tr;]!9&[m>Z-4[D$MFLTIapYgf#;2$u0Km6aS\6M+^mtNdgL3IKA=8RaHq1gp. ->o3Zo\:&mpJU#'+JAg8pGS>@)NDR,(H2&P>R%6)o.tW#BEqh;?=>>/(3J3\bK@e#! -Uh+Xm7uTE"*gg;n\BU!-d>^-9NHJ$O=7M:Fh1#-9LKJPOGjUNimQt"ZLcBmFD8]3e -PDL.\LuT_"fU[Th%aeCPJsdL6E[c>PYEClH[b!U!fXI%>/;,jZKUFiBf\)Ja6'OAu -P^,ibZ*fTOBpBOo?'[?rO'):F\G;HSr_T!bOI:;BGn#lRJVg;fOa.t7 -\>'-$+d.)TR;FsI\@J%'0c@C:PISWR),6RqZ(!b]RsDQ6Xu2JI_3I%"7!JKR/%\nOQ25/R@.2'ds7LQ3Xq92]XZXo -Tl"/+g)Zm`+eh"DU3\5gH,Gnn0r"@*S@Qt@\^R>F]m)QpSXN-@as_4sl(pBFT%W_& -3a-tmpRf$.R*NU;3Wl8U#.F@9Tc+H1(VE5*X.bB6U:Q2[\rEZbOf:C+EV_P_HCLZb -J"rGuUY4%pZQl8L9;Hl.X*"8YH<$<"jtp7EV:s%`"-'0=BrsDn`7f(+3X)YWBo?/? -Y'PMSRMCcbKW9?bYBp#J])Ai0!O*jDWV["$gC4'BV5i7IZ$R2m>-Y,sZa)Y9B]eic -q^kWJa/n#QV<1XW)V:j55hHTe_TZ)pZ+ -Xh.0:]1bJYGI9Kr[;\]r)M>HYOgb/;]mJGG]A:0pfsf]H^0>piqgl8(K=IECru6s. -48lI3Pgn_0DH\qmF9;6Bp68]DG74] -6,YlS`-b.p[EZFU;8.EW^)QOUHh#)Q>h`K[^`3cLgm/b%-2o1pR -_;$9I4Grn0!Q*V@]?5W2*&YB6Tg82-]c=#igo\`sZ-,8;bB!Et46t)f]Zf/8^HBWX -*6Z?&KuX%)c$XBQN##5]*]mP@SW2;#OkDm_fksC1 -*M(XWT`/4Ue(m%5rN"0F_9LfDe@iE4jV>>=$Jae87t]dO*R2o,f,,NDh0f6prH$S] -iR!=E]KLnp4mfnXj4KH#fq%rr^&?jf!T5KGg&3_b^'L@%VqTt+iI2KU=kDDV8`DoW -Z5&6P"NT:f%Q'tqh#1g?"+,W*Dr&,odeo<,::'4mG3m@U7OF?.n:R -?dLu2l[!R4?)4XgCI1l^goB^/ND8_<$.mTe7MN)YNKi1%RUeo7&dl -V)Rf@%IP8FmTtV>^?bF.O5^)#mseF-P;Dkt\F@6>n9OQMT+gN4DVuR/jWAd_Onh5,q1"h.V!%@lU%D,2oUeqU^?tRp?.;)AqgVoKN"e@3*:No? -l?Zb0hf8SjBBroOnX9XIhhV11L#p7jprnTjhsLFCnc(iHs*pg95PuW6G;IAF"G+Bt -&9q.m)$u&7iR&Kq:*14#`T%Pte8;bnbe!U!dZIg79k";68;`FrL=F]4nP(m.T2)`eQ&'EBEpM -%K?Zi_rG^H**uD_Q-JH4q0a<.9;0i#FaG-(f3c#?mW,V9LHE\ujRN%o*e.7\g$/5, -rSJ]PcenEkID2>'fB;u)s$(H!qZ&kiZ7^$aVeckH_%9Qb#!q``,6pP3KI7-oYf%t" -6L`bd%R]aX6Oq%S"A'1nYs_A&7+#O1 -,\\(9njJZf8TJ@2-V__Fi+,g.u;o0h%b9ljk" -2bimsj#KkUV!C*;o>L5`:NPUo5>UnT"$ob*,n!(:oL.hu,.(VoMG_l7+%]?eV'/K0 -FM01u;fpPO9[iXq5u1H;,tCm5?KGKQ"sQ(opp/.=&m4`?WXZ: -kfU,q,6MDZ[QTga=a!6%AQcHqT4qHZV5%eZCP8H>$1,hq@_f/jth8OEiQSm66 -?$AHdE4<"CipPZ@rT/@^QaQF4?['3\I692!!s%7u*X./RQo5V2@s -Q7Ii%pms:"@p$`0O(5^)3=SP8%#Z:i\OKA[AD(P%QY#uIA!pqSVJDZ5q8RKHB6iWd -T4e!)K:ut)-B"X4qF6[FBmOB\VePbi;cD2WQE.$#qOY$oCKe`eYA:`S\Zo'j?%ZM9 -Rmt`3CtiRN[dAEbj1&uRI=kt^qo,\N>J&b`^2NoC"2=8P#784Lnk-)IE4fbq0&;jo -h8jVaQRg/Jr229m1m`plI:(e(6dTq&s%Ca]cK5.^@Jsh?f4!Kb>M++IQ3E**3;uA% -pO1)/h07]_sr,( --d2+/qI[LIlp"S+p3lsJj7e"0LZeP4HS4Eks'OpQrkGr@!+5p3J++3S'IN8,TMpi$ -DB9$JfHC>>PRi@b7LBmZ-pfS"A -\hA5e`Z%9IE:%)H3eoEUp,dJQn0/Q4LlW/l`+Y&@i_gA!O"MeBLn=2Mlfa4g<\$U` -Yngfu>DnVe01GZP(h47iN00D^7X3S*bM8pFhq@@f2^GAPHdqL8-AJ:?W -[Yn!T0+?rq\>,5DO%X4R7qi8"QW"B%;JChVkuB1/PaZ(*M2sE+MSbk4esfTaEDC5u -4/\>:T2YT;:hg_4W0J-n(jXRjC/jDrFXEtbqOID[>k4K8d]-;nX]B2=>H84ca\Z0W -5q)H&'d8*g[0Ya,^s -R9Efeks^N8<]7nKp+Z$9Pq]M#%\q^(0kP7PS$SE(cWU-2BPeKZ[$I$,1qKG\D,jE? -G,EhoqOIP"eQoVLcJ)@BDf'@0m@P,f[T9GWE,Gis\+^Zs>\f0^P>u_8Q-/7@4.Knu -[=,6$k3?6!XM!ltK"IE,qnJKks!X@BJ8K0+[MTYY?r\XlXkgS)QKJK\]H;cFJN-*m-OX1<0lc^6(W1K1 -%Uo4d\*f7&`0W\%@PhG7EE1Z1G@q]=UFg\pQ/KZ+LDn'7a*OpXji(.;=$"a#ZQuJX)b^#(2iESO7 -E:.M[)7)24gu4aoPR:)DT+^-Gm@IB3.E._L(ME)A7IK"k`gR\_BPe$'CdpS/)Daln -r?%&_Y!ftV(Fj-I0rB'DS(!gM:MKbnW-&lNMj\K^AXuV`2-*r)fpc&T?"'-YQESkN -#;g&[EL_0sF4XUi?>KL`E+I(A1:c^4m!Xl!DN[Q;3WE`.h4Z;T*f/O=+)>P[CQ4;Fg -D"YNVfK9h"C^pulGXi/#;C>r:NZk\fNlm$Co4R7s0u`q8e(T.UC@.$GaC2O2g`2Z! -npS'k)&cK0F";M+raF#rQS[cof:-i1ER&jY3Sp7_T6&k?^)t2qi&g\.E"7rVH:>4! -Ho$HJrghP`Dc#_I98)g6-.[==>N.(ZB^remfD?0#j1L#*G(.]i@Fg@tgo%W)hVlV_ -$;KWc2kB\ln_SWEHgdO"^N]\Yi,Wa%kPYe*pjWQ8GLoFVSM-garu:#H]jL']=/u(F -WTJT;Re%DtXEDgr`;LLG21/W5p(($bnS`""?)t>YhdN7@066IZe%#9^E>&slFmr`3 -hg>BSn9u1kpn&A_I!=&u]MH]GSg2-fh]qc@GLH%h=6^E6HfmTES,8e$msVscpKU"I -oH0FIrbC_LI90kUSu06ucX6TuGOtMUQ]c]6na:nQ\$F46=1u#=*)2']\C@S-hHe$GO.\^ru)Z'Fm>9%mL1.5jT&ro?Y06'0RT4/#1QX -C\>Ga(EEVQ5GS$=X;X"'qnLW#5ND^Yg*N_ER6Y""64>#(*$R^#,=4L<6;!reN!I(5 --:25L^pGOU`$rLG.\H>B_#+d2gatkZ&]4Gu/kcno6kdC1196T&_0d"c>W!#@(r<9k -6]?66ju@L*(!%E6UWr&6@:.K>UIC'84&7b7#WWa -PUj\H!^b*b6M)tMgeC3'9Z6b>OaJrP,Z7&L;N-hU`Cr0Y;:*4.)9$t`7>!rpX?8qQ -42niq&JRDM4@DX)?Uam#7LW]p*+DAg6,Z_m6tBg[MkWVH8]H-M`e7tI4A80(:djqk -7a,[U#CKTAN-7RY=ZI?F7C6=?S9[W(%)prD7PoN` -gjVc[In0Ee8.:&)N+L".K18K:4BuSk>\M2pBukT'4JZjae8E@'Mb'@s7_EZ[%#u=L -UIRF)aTR_8r,p&%G/nuoSV108`-Y"MQ:8`>&_qrZS=3$NRn:8_8^*_sg+l2MKLtg/ -#[E'SFG<>>U.RO>7]_Qi]Saj:Vb1d(0[,Ns)t]ajOi\#RaTRdK7$C70Xr(:ea_\4R -I$[4ESkD2Q92)`d>dd:A[nD"<8dq?54Ll/2Tuo4)8h@YJ7"rc_W60Lb9FS^1*5A:: -.*B3@9$<19gm#tR`le)Ra]u-p*6HAK8P=`\9[(aTgs/U[cV48`.R^jB*4aindtk>$C-9o"c?l;;s2.U;:9 -<>n\.)c0\Dcts'8FWOE9+&JKDd&d^P9d2!V%8cF;:uiPAr;+iY&Q3V-d;:=1SLRO> -.oO&3;TYNXK`TWe3m52V;8!ms%5L8gM,FL6;=-3frA?^C.Yf-dLP7]dPrR6`4&`7D -;l)WU]fjih5#_DE<"2%?e.p?D,17B/dQJmQh*st!-;o7_;&q&/74hK@92rSu<6\-: -h+eQ1/l_cdPjL/'*E#fN;c>2N;a!%fAQD`8=&iH_RN4Xm*Egpp5uk[bNCh]4B-JWser=BESSD3-CKA*neHIU+#uO\C;q3I! -S0M(bMbk-+f):S0'ogf^O&moUf2[r79p/Wd -:(T")fhHnHeWs?IoD2MLKUKTgV ->"ths>Ba2_D;'C>N/`m#jf2LTE*3@,feom8c)t2#DcoMsfmU,.Q*K'QZ7I%S -]s_#Cm+Kp\=l#[['_pB&T\*M8g1@s%h7d+\^K^ZP/Np":)gb]3Wn?^W>Wm&[`NNN` -Xk\'%gj$Y>"gZpcZs:#Ggr7NC]pDr/[op\s-$pK`S[i#X@p/cB>tqt2NPO@ef3NgW -?&dNCRPNYEW(9(h>.)<)e\sY9`a"eMh@7P4*HdKmc((t+0e4jqM:M/n@.5A54c/Kmr%l),8[:j#/[RR=jJD2 -6)eA6-KF5OANL**L-Xj<5\5C1aMpR-?:8A%7:iV;a"BknhFLtU11gGV0(nUBc8=Z5 -o48DBAkloL?=mecS7N_=AN!MiaGsh$CL;f\ATh2;A\N.q[W5SNok!8U -c-Al@VI8S%+2+7=kDj%8c=^dmHY:'?B?kol5%n:s]21Cc6E)?pSnkhOCupCiB'+b[ ->H2*g14iPA*4F3OXCr7O;^U -`fjGTBlULeNeHZ"L2")M-n^9gNh0p=T4jdE&mf\D]N-%RNG:Y$@E*P)Su-3(DWsop -C6#9.SuQP-!+dL,'eYg"aMqqMW"_G!>Y^`%^9VIuS811I@_SK!m\"?5[UT4:l6H#f -2PfZANYkf*kmkCACA$l#^MEhaC_"9t)U%AL_J7f.&tQ(l7^0\*Z0O[D"H-C#1;jV]4A(@m687%RU9odlYaH'DU.We -g$S0ifBoH'lN2D[Ss\p%hsKjiDbfpI`li6XipV?U?foXO:@8qY28Z_%<0?1EW'-] -mgnhb5B":LDpK"rN:WYeoZnjtpF#RA:Ii/aoaaoB+&[57;^5p@'uDZg -C7oZ57L2FoN+r^L;6]Q1e!qG>E@*?ZpIV)l"J4 -*qs@AVgtUQ[+%p$/]E@]?_/J -N-V=ZH-Q/0f8fX`I9aO9nFr#&GEMRmUMnJBpFi@<0:7'(Vgl+>qa*`BXI#lBpGJ3mob59f6I*5pfpV6S1 -cI\[4Hmb$N"k!3;dr?2CHXG<2GKKf%f6r/$I?,lU^Y4(egAK"H+D8uI#Msk$62_>1 -rXWpq0=1X2UjH1>rE^NCQf`a8kC.pED-,KkTA+guh#=RqP#'tahp7(52Z=N?4\)7E -8)ml.eG`899/l)7?hStfpO@X&rho)^TD6+E1FN -*Yem666G^lKLR7$F?/2T=M.fl)i[?t1&0g]4X#tZjO,JFQ;]/r94a:^>fL&)QqZYk -=i@$^4.\hZXk.CgK0Z,-BU!f`-B1Wn;X)]bKefK#WRP[JHF7@c>HCmVA_sgKuW4q\m94*Hc>.?HbNj*fDGgX"bX[#E7fP--P_QZ@r^0!L.?GcGas4)-]Q:0Er"MILGPdQl1B:mI^`sjg[',G?/Gm:`SU01I(hg(VpXi%qgDf> -B>ba0TsP'ifKag.G1.O48Z_Qp7`bdf=KdaZ)cbVK+81hM$[ -dsU+6c;U7t3mQ3enN>,rh"a.[e,9;4cr;"l6I=4F&Ob#G>o?,Ze9rK&^p$KC8^c+j -0hPAD]f/X6Pl3aAe$U2^;H-XJ;,c"F2-Eo/[9['0_/VS;>1StO;dQG2gsY0hH-94HJ[8enU04qh>)NWfDYf$i)h$,K&G9F&VT+F>kqLQ(k#bIiRjG> -M;m0j0oBIC^,M#2R/T71j1-3rqc7k,JWs_Gr`>?GR=8FH=B:-FRT]HhELZ,o[X"Ca -X,X`agKG?*U?J%0LSUe+"ke"^g2":a&oGo#`&apg,&!iqV@pD8U=_(R=.YSq!*jq;.I3l2'8?Z0H[32\F,Xgjd/[r'(-) -\oU!CdI[T9<::^'=G@UW%cgCctdaFMS6j8+f*X"`q'a!<( -%=uki#XK:R"Q6'jK$[f/]m$pY@+63LOF@YU(d/.u"=&THQ4tdBlM.&_jFtp?(dc_' -jI^6GI?<:Z6^V]8++s<:YMpYB(jutDMbJXSrVj`[PnIP8C+i".$q2#0']PogMU>`] -7@:IuioFC'd=*c=(rTci4=#m5Q8Cpqdi%1FD2j[l29-QhFWk!CL/Heh8!mb@TqjZ' -EW/0n(j-s`r&oiJ&g9ek'd@0s-]$/.-,bWd,\3WVN,i5u8XVF_jQ)kqdXG"b)+>t8 -,c-aR@Q?pak:5RmXd(ZU<_Ea)/7kW`4)rh7bF%fPUXV&[Z4:85$%jBJ,WUt72FY]D -Pqlr^5;*XM8]_:81hNFePk/3t9prCIk2b?fdsc72)9"Su,it4Fb&g9Zdk.J&m@@1i -G#&G#4AJS[QZM"ic^B%#V>S3&dh[GW3WtG4m)YjK/q_C%&54Eue!^t7LJ\jl3N/bh -U=gM,R>j:p(VfW8te9^db/)<[uK?C">b6:f1,u,pI -HGipT'k6N@NNq%uaB9H.AF-(!XO^^bfo"kVeo&g,U?PDFTVM/?QUpf)FT4)hi8!-,mC6+F+IumrCq3a19Z:cIrZ& -FDdqK]%9^Ch-!rd/Nor4pN7&$Rp0X2-0)Y]7\JKTCM`Hn)aM_fDbhY*!LlN?-L+9.ct,4'c:i>%D+S`lsUkSKWp1E;jVOniL@N8d)G"P -f9[$)HpEa0L$Zb0X_fG$jbiMe/WrQFr8SabN3C5W`n0M[j.(7Pn`E!Tf`*()'30VO -?3nX*(?X[/PlreL(!5*,-tM,.POb!m_\dG(?4$7^0b.L-G`+7^K&MRTDIat"`ti#E -eXC5uEQ4E])s7WLP4PPncIq);B:SXdm#FK[fcL@[blmNVY#Nd$:IJl%';>%tWQP$P -/85pC??6T`bM$"/b^<9UED'T^R(H.k"%A`f-?6cr%od;7_(Xju.=iT*>STCPIY -elosr2LQO>2P;L:5GJT3CZBc&rH`J_Za.H#,Wt]_2j.hHS`\Dg/]soS3=sm'+1i -]q)sK,WOKqRngUd=TN]d%Fk9mLiFI^`;$5FinR=PnX\4MpJ2g\Goqt8'b.mdcR%Hg -T9=5T9pE(=aQ;1Q)4,d[_"M\&ICpXrP;^+l[aq>$EgrY;N^_=k-Um7T+/F"J'umcP -9^1>OT(MrEd^l-cjZQt9oq#17qSuj,YBQ?%rks]O2`9sWe$NR89;^>`60I(9T(a2q -coZ`"mQFXaGFnKaqr`CrcqC?_*]`/iD9=&O'3];16/VTKM])K?hLSaFqS%3`W8*W"iNV2/CfR"]Om/<[LnK&4rG[GU\rSP0[ -S$1QD'&hrbVigc3(Z]s>P^g?dA+NknSGEaX0KtQHLOP+KVk7,Vro^9Xhf%u^hcKPt -kJI/STCdT)eb];SQM:CUpj:o[qu<;YpP(WFrnUfLr_LT7O8f1+!r3@qlnAdRO/hg5 -Lc*NlI.+;-@q,?I,5dNLr%KW&:b%#,=tf@t`fKcpcp%XE6Ng4Tp.soUcg:lHlNL*\ -"`RAjim.Pm8C#Q^s0-8CODb+qE3(\-q=&_%B#aq4%)"*O1GCfjOGs=gNsSXH$'35* -OHBk]QM^gY$8&Rg:p16!J)19h&qd01*o!te?j0(BG`OOFgS,8*j$ -&s4ZEYfd[kcP'."'9P'aYr<<>#7`IY%M;>CnP9jS[0MfZ#Kkt@0_#19$-QCXHPr6K]+no,(?V(pVg41#3k4h]>YT*g,50n`(PXo,gj( -+-HFBa*S`0UEEF5+E@Q,Oq-,,)BYIYG@O\E=[&'*YLOU -E]kJL59s,o,a(G=d=@^m$m-^#JtdN^.1 -,VCgl!7611Oj+CkA?TJ@,dKocns_*AT.3a0.[$P6_KdWZFXpA!/!@Lpd_7V[BdWDk -/5jY=&5t+f,:BdJ/X"^;dXr"GjX?;SO$rQNYRr)eHOi]=,Ef)WEih#.s"I@L0TuSa -6749=dkOc;0pB4#o)] -3E)C4F%%plUGVS?1iGB37?K63)eQk -Ze[T^.m7XD3HOLHe*T/Zns34J3g6Bse,L/hXY2Gn23"Do_Y$$5'0K514HpRHZl(/g -k<`,q6Biuec!`dM1Hk@h4u1)Dl:!oO6U(-45?(3=Eecld;a;$s5Kgq1YH4mjZJ$Mm -6,It7e8IYfF$]GB7h<:#oRBCGK1JsrX3qV4e29V#3CspO$ri%XF@AU)UIl5u7)ngN -<*;j.=%cLrV\;uoC'-ptr5KFmmW9%7Pg;jad7:Rq.Wh4UeDF"8j%`1T8X,E6eE]mD -Mb\"?8sH/E[/Ef8qL_`B96@L5PmX.*"\&fX#]=]Kio(_A-V]iS;O&V-eC>*EpJY'N -;jBFCa=g=Gmn$ML<)lQ[Ps1^\"]+ek:c2O -^fPXn3p]F>:(Xka+Td:C=LEbn<,#IbgIATO?Bsh_eaHiKq-$em=uH1\EB.AT9j9Kc -@!2o^Di%*Z_cugN@8:(NPns5hcV`6A9QI:3[H0LQ%q?@1;K`.Pej![\6Y&UP?^:Y% -[SJZE7[*NT@$V=7elu_i?!Gl!>ZM_SY/o%VEBo-Y*@:esE<\2LIpOpHAQF_&erOM\ -Ou-3:AC^WmP9jp72eA;QAbN*8/UM)QDeiBj@?$Ob8dLV=Kd?ggCf\_bG,&midqr.; -D3H2Yf&(2Mj([uBD6+Ui[dRu)o4l_*'m=;,QMkb6%PLO+S(>h$@ngpo''Ij3EL.Va -f,n]BkAF>ZE`"u?#e+_qnT-V]F%tn72ZIQ:"*=Yqi$ef)G846?:N[ISiV,!Jf3`\; -@nns5EgLQ^GAg%(A:k[WGF(C4Q[\%S7s&rDGaCa`Frje$[prodFd>$^[rm!5UO$"> -2qMbf(N"KK:O7gKGIN-If=QD8ZZGl!G^#-p[(7l$L9\.;?'^7kfA>p3[shEAI[B@B -f<]f?o6U&rI`Nsc2na_Xs+!TCI!F,j>(NTYkNR(n\!muKhuN&\q?fT/8@ -q.KpTNAt2[GjCJ0'9QE5\mRr!?r -PaP1/fhSR#+-(Ui>$4[Fq(IoaA!4B7Gs_7hR;\:6`mkWt?TCJD\QtR?K:#erS=*BE -fi]ZTLi'\2QC2UG]$J-5E\Jf<8BPYF>?&HIJu7T4L(]?TR/Jq[]g^eXAP,Z't!'Q)h)*Q*?`*ZCu?N1sUZWh&H4-3MbotZ+GAG\.rdhqn7sce\>>_^Qq$0 -6R08`S[jp2^SM5b6[-6!'=u`+%XYUt]H)[V7DBUp^q;27gb2CN0J].#_j*g2"U>M_ -iPAaW_0Kh4]BR0P;,HtE_K@]2T,A5G>H:E2mFgC\%Ejh^jp -aCU!8>[()gFidmTac^/(U@6"4EQ6=Uae\Z>"T?C=8]sR`Dkeo*R#i\c^Lm2%aV+p% -][+hBdhuDcc((]F4OdfD"Alb;cBu7=],e%Z;V:]*<4A+!sW#bb$>C84U'!S -N_t2ibBuqXK^6,m%Er&DBjCPW4V?-`1Xf-,d%*8Cfd"snHK<$id@Ep1jSn9D3RW#W -D-\`=rBo-VA(FD3e(kJ^pb13/m_X<4dG5bn`r8jf-8g3QSlX7hh#5hfPM'6-gRW-5 -h/?(pQqiPr?bK1cq.,ZeM%74'\:(sqSYb*^_q[rSg&5dCf-T3_k,\alg>1K0kssK/ -*Gq@.(ELu]h='5/s4k<^g(FqR,iYXi'A_KJ:^Ohl1@O(J]l;g-iLV"IbBr-;cel5i -iVihK#.NN>16'F6i9[pmSa"](/*(#,jGL92_ZAa\;V`Beh-N"Fh0\0a7&h:hjs#", -(@1#palT+PAH&3DqL?AC]cgZ>:hDB>)$M<;*iJh]Y8 -D8+CCroNVk"7SoOmJdR[IgC3i+%Mr/Y2T:,NtU\[K7p"tNr+/Z:bQ.k-"Mgq9)^Ua7a_u*!Q -qS12Bho;]=[J;eurq:1nIPnPtL/$flXr:0pt_tP?G9L -EB0RbkEFTkrddA/;!=-I2'.lOV,HQBg3#TQ;5mO[Q!1S%Z!"20l]p2sI_fHt=R;>X -24i30[9Ds`gNC6hEKWGU%st/,lZ^$KDjQCTmf.^N@.79'%Nc"5_d[VQ]QPeKNQC/N -=^7h2-^hU%Z^KVBImKdUB_7a!21^"bDJFJ?ogaFZT4bpp -nb2n=IW)^QnbN-4s.A3?rr>;<'F+\)YVZjn5ql7S#!oJ8*sb1^4"SW4&>Ure6SPT# -$q$-+3tOdL'K6=dYr#5j757bBTXuq"[hq2(P[>#+/k`MB^G&>;'ZVt&ZS]ub9f#`d&Aut= -gGhTBN8HWjZ_[%MZZBCG5#8NWrp[u`o`mcZZ5![5d*tK#78^Ed+%A^V"Xco?['_NL -9!m*E:!/^^5>NNR`CEg*[5C`ZdQ"Hgf1UV'^`rPd8 -G$VS"hfRKCm<F8ugc;U0D\[7EPk;['tK]ecS -H_>$H-?#Vl\h_Hfkr?\LNG1r_O/QeSQD^`t]!efDCHC%TY\!Wr]s)*1%_o8%]&q>G -D(=t-T5D.Lh6q1tQK,LB>IO"%l.adW^$2p/n\B*+(C.fr]JgA>EBI/kZ15FYaiJJW -NIf(>]XIpQDB.6jc1='\5L2A1^IQ^X47>tZFZ]:Sde1:t?eBNbQY5#q]sR[YGH$KM\N\6F^/+@<=/W%mgRi -3$A_RN&>VE`Z7FQ8I&\r)i*p/+[d/m&RmI]K^gB&7(650icItR&On3<32mWj3dN-7 -g+>[JD\lm:]Sb*k0bii().E_]LiK-b`]2Wd@T3>en\k2lf]aDd[!.QCjul5?@.4JM -?]Yk?5fMsjAg?AlOUMFO8@[+n@l03eE[F@E#j!$MAlar+=sA:1SCP/9a_2ao6.ZeprZ?g(fE36t"OSJ.lC::]%>B5sc9 -'?4V0.@WHDI#+54>'Ij:[5VajrLaSiIF'nh3N"G6S<5^]:q@N3BQXi['LI+C3UJtC -[1j\Q:45tV/O3tHhP:j6TM`j&h5E1;V!st=d^iRSBlu)+&FPKU3\*oQ]Nh,b6][8p=KUY"f<@;IfV -YneV_="<06lue;n"t%;l2:5areX*Hmg<*R+cX8YCH\/[_sl(Hga5 -gSh,hh:K-oVI=%X%$M$<$4pbNWrKNVC1( -k5AYrZ[$I0k.hf3o\[juMXOj=_!lOLi3^[Tn9*DJ3&:kL4=Pu'ZSoSNB)pnj/VW]b -"i3.,&@q^'M,Mn8^:6JCibVbUEHX"T$G-dX4?&7=(,8^aaVcHP+Y7>XX*Gl1YG3E*1HCLM7QkWl;_9-9LPg-Dd`Zok0kNPiR7fG8`m`@6 -AF.`MF#Iqeq-,jjM//V;Z2)SRk6P^Jq4Da%J'\>-1hOpq9!fP#coNL/B2'8/nKs.A -#Br=Br/#*/NgJ35B2)f_&"@P)J(*)O:$OKRSFh!%W&g,B(G.#8A_sK=)TPur4#s3\ -,W7"'fro0cGY5A5NPPDb@2=i.V)C*"fR"uWCqZ6)[1:O6q7)qQ4UnbLQ0=hr?0F\R5?rh&E87DRh-t[^5'Cp!B/[bLa0VDXF3LapS%)qKi&-D=,2tY281LbDUAGO2/9s9]MXuO`EWVm'p[: -.<:BD;f1j/\%NaAV)OA%g-a)0Ys%.CGai:TDpN_'5NiPXPOA(u;ms5:e5sPFEpeNW -3M0*"rAU\grc:\gPPj]oB%`& -5I9D[['N]3Gaa -UWF)cJ3_Bo>?C42]!!Z:$MX4>fLjP.o^75l:gMq>8)DNPhM*6p*oVA4Ec^Gj?8(;t- -iaKPH>.m;s_/+R]`-B=\1In2^80`"B*,$fqKueq'aHD=pN/G[Y8X,XbU,t9/R_<6t'SMu79UJ'2Sk9-Y -aq>H2]V3#DSJ3'=2=-qqjJ>IjVojSa8h?pRXJ?HpW\oI,212JtjK?Yqf?0Ve]NhKL -e?LkVXXHlL92r=B@Co)n[_*Tc&_slQe?g(:\kBuSbL)PI%)'9K\IQiu1q^F\"Mmbg -_otDibC%7?AAC;A`\\+@+:Q=bUrpof)*SbX]<'$_]Zi8!aZnS,9bc""+Z7?Bd^nej -1T](^1scl"ekLhMc'-1=)P'3rfou?a/\Kjp/D!=$hG+43c4L(IEi-d.iKF]+%P6Zs -*8_%7k"^TncB.Ki3jd26l&s9P%J9!BSEC0RmSO2"sf,s3LoL[[Uu-'ZS':37'/mc1M4dAHpM#O@T)J -:lP_$70B>s$8Kbs:rNmjjRc6[Udtq)ZfM'^'-kDk'%',^c4();Pn28B$H+DOda3*$Um3#;5AsnjWRMZ,KgfBdQk?7;[,us-*gJidY0-uUmf\R -.ZFR`Yaj!:`:hT[hpUmGdhI8YAMK/AN(9'0dcE8?"@Z7#2q*I?cK-l\deHJ#3D`^/ -c@%fRjZ_/cdaP"Ne.?sZrB&L*(GD=He5\reAA(qMQdd!mY,nEuCD,,k9%:gReC:0k -I88:MD6=mO<8.e_h,2][;nibseNgOlogi)*J1b%e\JOlD-k`j -="Xqb;Wm9NfOWRmDcf6p0= -/TItBJ$/[L=@IqrAVRgfJQJCufRj".22! -g*NTLAZ"1(Vi*.%>*Y[6@TclgX4kOog=<<_/ZIGeQW'q)U*ZsH-*l8_ZeIa,>4o'r -K"bG`\(cVHgQe74?*IH?D`H:XgXX!ljhB=u]%[*>[3::ZotoKA_q[[Tg]]Mn'kuGt -a4uBigm'-i?$\J%6!Tu)gss[)jTaKBT0>uph%e>n-.:(-Ug5k-h,W"]A_*f>QB)W -qqoBjhpq\_jo401s54(]i"c@O-3E*`"5lWOi)U$>Ad71:#N1=Bi0F]-V@)7i$fK#5 -i78@qjpp>C&)d^(i>*$a-5,8q'B)CpiDp]PAes?K(ZC)ciKbA?VAeF%)r\dViRT%. -jrWLT+6!JIiYE]s-6hG-,N;0Ze -0B36jitaB0-8OU>1ZLq]j&S%tAiA[m2rfWPj-D^cVE3bG46+=Cj46BRk!%i!5NE#6 -j;(&B-:6cO6f^^)jAn_1Ak(j)8*#CqjH`BuVFopX9B=)djOR&dk"b"2:ZVdWjVC_T --;rq`;rpJJj]5CCAle#:=650=jd''2VHW)i>NNk0jjm`!k$I0C?fhQ#jq_Cf-=Z*q -A*-6kk#Q'UAnL1KBBFq^k*B`DVJ>8%CZ`WQk14D3k&0>TDs%=Dk8&(#-?A9-F6?#7 -k>l`gAp3?\GNX^*kE^DVVL%F6HfrCrkLP(Ek'lLeJ*7)ekSAa5-A(G>KBPdXkZ3E$ -AqoMmLZjJKka%(hVMaTGMs/0>kgkaWk)S[!O6Hk1kn]EG-BdUOPNbQ$kuO)6AsV\) -Qg'6ll'@b%VOHbXS*@q_l.2Eik+:i2TBZWRl5$)Y-DKc`UZt=El;jbHAu=j:Vs9#8 -lB\F7VQ/piX6R^+lIN*&k-""CYNlCslP?bk-F2qqZg1)flW1FZB"%#K\*JdYl^#*I -VRl*%]BdJLldic8k.^0T^[)0?lk[G(-Go+-_sBk2lrM*lB#a1\a6\Q%m$>c[VTS86 -bO!6mm+0GJk0E>ecg:q`m2"+:-IV9>e*TWSm8hd)B%H?mfBn=Fm?ZGmVV:FGg[3#9 -mFL+\k2,M!hsL^,mM=dL-K=GOj6fCtmT/H;B'/N)kO+)gm[!,*VX!TXlgDdZmagdn -k3h[2n*^JMmhYH^-M$U`oC#0@moK,MB(k\:p[MnlI..B.!1n-h<$@ns:frV^h8H/+U_3o%,Jak:Z?"0CoE&o+s.Q-Sk9P -1\4*no2dg@B/]@*2tMeao9VK/V`OFY47gKTo@H.sk([D:\=rhobUKu-W9Ur;tWX[oiG/d -B3+\L=7q>Nop8hSVcrc&>P6$Ap"*LBk?diU?hO_4p(q02-Xud.A+iE'p/bi!B4gj] -BD.*op6TLeVeYq7C\Gebp=F0TkAL"fDtaKUpD7iD-Z\r?F8&1HpK)M3B6O#nGP?l; -pQp1"VgA*HHhYR.pXaifkC31"J+s8!p_SMV-\D+PKD7ripfE1EB862*L\QX\pm6j4 -Vi(8YMtk>Opt(N#kDo?3O80$Bq%o1h-^+9aPPI_5q,`jWB9r@;QhcE(q3RNFVjdFj -S,(*pq:D25kFVMDTDAecqA5k%-_gGrU\[KVqH'NiB;YNLVtu1IqNn2XVlKU&X89l< -qU_kGkH=[UYPSR/q\QO7-aNV.Zhm8"qcC3&B=@\]\,1rjqj4kjVn2c7]DKX]qq&OY -kJ$if^\e>Pr"m3I-c5d?_u*$Cr)^l8B?'jna8C_6r0PP'VonqHbP]E)r7B3kkKa#" -ci"*qr>3l[-dqrPe,;edrE%PJB@d$*fDUKWrKl49VqV*Yg\o1JrR]m(kMH13hu3l= -rYOPm-fY+aj8MR0r`A4\BBK2;kPg8#rg2mKVs=8jli+rkrn$Q:kO/?Dn,EX^rtk5* --h@9roD_>Qs&\mnBD2@Lp]$$Ds-NQ]Vu$G&qu=_7s4@5LkPkMNJ3Vsg3$]7K#D>EP -:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=AlC^cenm@9 -:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA=M/6)*KS9PE`kN% -="Tc_Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"PDKfeXi0S^6MAH=;fBr>1IXb_>kP+oS^^pnX!PjdJ%0OEX9GI`IODGpB_@VYP$,Ve*/ITH-bV]jI -OR,+@`"`Y"/@)9.f?D&^M-b]OrHOmIKN1*g(o[EC"elTX_ZZ,c*_ECQL2A(g_UF=ESQm4c#_\W:"=CB -QYkQ&hA;15H/=mim3UV:)/KAQu3q"iY[\%M;jo* -/W8X+c8CUAR-m+uj;AFrOlVo_9p=ZV:0!S@R;Q;sjr'1jRHBp?D4B]+c?5]@RI5Kq -kSaqbU$.ptNMG_V:6h[?RVn[ol5G\ZWToqTXfLb+cF'e?RdRkmll-GRZ0[r4c*QdV -:=Zc>Rr7&kmMh2J\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U:DLk=S8TFgnf3]: -amtt*/^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sj*caE0;T'sA]r#ZHgnbf"4 -c1ClU:Y#.:T5WQ[rZ@3_q>R"imJHo*ch78:TC;^Xhuj(2:_!Ol=:G;h6j\E@/d=Sn -*moVE0nrNM -)FIVD%H55cLJ[C[6eHetiWMQ';%=d<=H*pP6qN54/ga!=SJ1"9;2S4G.RdIA(#m/7 -Mc"@E7G,9iirieL;3!D$=Nq`D6tqWXXu8c%h&GC-EK3oA3_*<>*TP(`O&>=/8(db^ -j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;-03"4P>Z9n8_H6SjTM9A;N=XI -=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_HjoiMf;\!81=cG/u7*1iq -/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>taF90r@pqRT!C,:$KVWVc<)U -;qcXql30JP<=Ya&>)cDE77gYC"9~> -grestore -showpage -%%PageTrailer -pdfEndPage -%%Trailer -end -%%DocumentSuppliedResources: -%%EOF diff --git a/packages/python/plotly/plotly/tests/test_orca/resources/2011_us_ag_exports.csv b/packages/python/plotly/plotly/tests/test_orca/resources/2011_us_ag_exports.csv deleted file mode 100644 index 16678ccc285..00000000000 --- a/packages/python/plotly/plotly/tests/test_orca/resources/2011_us_ag_exports.csv +++ /dev/null @@ -1,51 +0,0 @@ -code,state,category,total exports,beef,pork,poultry,dairy,fruits fresh,fruits proc,total fruits,veggies fresh,veggies proc,total veggies,corn,wheat,cotton -AL,Alabama,state,1390.63,34.40,10.60,481.00,4.06,8.00,17.10,25.11,5.50,8.90,14.33,34.90,70.00,317.61 -AK,Alaska,state,13.31,0.20,0.10,0.00,0.19,0.00,0.00,0.00,0.60,1.00,1.56,0.00,0.00,0.00 -AZ,Arizona,state,1463.17,71.30,17.90,0.00,105.48,19.30,41.00,60.27,147.50,239.40,386.91,7.30,48.70,423.95 -AR,Arkansas,state,3586.02,53.20,29.40,562.90,3.53,2.20,4.70,6.88,4.40,7.10,11.45,69.50,114.50,665.44 -CA, California, state,16472.88,228.70,11.10,225.40,929.95,2791.80,5944.60,8736.40,803.20,1303.50,2106.79,34.60,249.30,1064.95 -CO,Colorado,state,1851.33,261.40,66.00,14.00,71.94,5.70,12.20,17.99,45.10,73.20,118.27,183.20,400.50,0.00 -CT,Connecticut,state,259.62,1.10,0.10,6.90,9.49,4.20,8.90,13.10,4.30,6.90,11.16,0.00,0.00,0.00 -DE,Delaware,state,282.19,0.40,0.60,114.70,2.30,0.50,1.00,1.53,7.60,12.40,20.03,26.90,22.90,0.00 -FL,Florida,state,3764.09,42.60,0.90,56.90,66.31,438.20,933.10,1371.36,171.90,279.00,450.86,3.50,1.80,78.24 -GA,Georgia,state,2860.84,31.00,18.90,630.40,38.38,74.60,158.90,233.51,59.00,95.80,154.77,57.80,65.40,1154.07 -HI,Hawaii,state,401.84,4.00,0.70,1.30,1.16,17.70,37.80,55.51,9.50,15.40,24.83,0.00,0.00,0.00 -ID,Idaho,state,2078.89,119.80,0.00,2.40,294.60,6.90,14.70,21.64,121.70,197.50,319.19,24.00,568.20,0.00 -IL,Illinois,state,8709.48,53.70,394.00,14.00,45.82,4.00,8.50,12.53,15.20,24.70,39.95,2228.50,223.80,0.00 -IN,Indiana,state,5050.23,21.90,341.90,165.60,89.70,4.10,8.80,12.98,14.40,23.40,37.89,1123.20,114.00,0.00 -IA,Iowa,state,11273.76,289.80,1895.60,155.60,107.00,1.00,2.20,3.24,2.70,4.40,7.10,2529.80,3.10,0.00 -KS,Kansas,state,4589.01,659.30,179.40,6.40,65.45,1.00,2.10,3.11,3.60,5.80,9.32,457.30,1426.50,43.98 -KY,Kentucky,state,1889.15,54.80,34.20,151.30,28.27,2.10,4.50,6.60,0.00,0.00,0.00,179.10,149.30,0.00 -LA,Louisiana,state,1914.23,19.80,0.80,77.20,6.02,5.70,12.10,17.83,6.60,10.70,17.25,91.40,78.70,280.42 -ME,Maine,state,278.37,1.40,0.50,10.40,16.18,16.60,35.40,52.01,24.00,38.90,62.90,0.00,0.00,0.00 -MD,Maryland,state,692.75,5.60,3.10,127.00,24.81,4.10,8.80,12.90,7.80,12.60,20.43,54.10,55.80,0.00 -MA,Massachusetts,state,248.65,0.60,0.50,0.60,5.81,25.80,55.00,80.83,8.10,13.10,21.13,0.00,0.00,0.00 -MI,Michigan,state,3164.16,37.70,118.10,32.60,214.82,82.30,175.30,257.69,72.40,117.50,189.96,381.50,247.00,0.00 -MN,Minnesota,state,7192.33,112.30,740.40,189.20,218.05,2.50,5.40,7.91,45.90,74.50,120.37,1264.30,538.10,0.00 -MS,Mississippi,state,2170.80,12.80,30.40,370.80,5.45,5.40,11.60,17.04,10.60,17.20,27.87,110.00,102.20,494.75 -MO,Missouri,state,3933.42,137.20,277.30,196.10,34.26,4.20,9.00,13.18,6.80,11.10,17.90,428.80,161.70,345.29 -MT,Montana,state,1718.00,105.00,16.70,1.70,6.82,1.10,2.20,3.30,17.30,28.00,45.27,5.40,1198.10,0.00 -NE,Nebraska,state,7114.13,762.20,262.50,31.40,30.07,0.70,1.50,2.16,20.40,33.10,53.50,1735.90,292.30,0.00 -NV,Nevada,state,139.89,21.80,0.20,0.00,16.57,0.40,0.80,1.19,10.60,17.30,27.93,0.00,5.40,0.00 -NH,New Hampshire,state,73.06,0.60,0.20,0.80,7.46,2.60,5.40,7.98,1.70,2.80,4.50,0.00,0.00,0.00 -NJ,New Jersey,state,500.40,0.80,0.40,4.60,3.37,35.00,74.50,109.45,21.60,35.00,56.54,10.10,6.70,0.00 -NM,New Mexico,state,751.58,117.20,0.10,0.30,191.01,32.60,69.30,101.90,16.70,27.10,43.88,11.20,13.90,72.62 -NY,New York,state,1488.90,22.20,5.80,17.70,331.80,64.70,137.80,202.56,54.70,88.70,143.37,106.10,29.90,0.00 -NC,North Carolina,state,3806.05,24.80,702.80,598.40,24.90,23.80,50.70,74.47,57.40,93.10,150.45,92.20,200.30,470.86 -ND,North Dakota,state,3761.96,78.50,16.10,0.50,8.14,0.10,0.20,0.25,49.90,80.90,130.79,236.10,1664.50,0.00 -OH,Ohio,state,3979.79,36.20,199.10,129.90,134.57,8.70,18.50,27.21,20.40,33.10,53.53,535.10,207.40,0.00 -OK,Oklahoma,state,1646.41,337.60,265.30,131.10,24.35,3.00,6.30,9.24,3.40,5.50,8.90,27.50,324.80,110.54 -OR,Oregon,state,1794.57,58.80,1.40,14.20,63.66,100.70,214.40,315.04,48.20,78.30,126.50,11.70,320.30,0.00 -PA,Pennsylvania,state,1969.87,50.90,91.30,169.80,280.87,28.60,60.90,89.48,14.60,23.70,38.26,112.10,41.00,0.00 -RI,Rhode Island,state,31.59,0.10,0.10,0.20,0.52,0.90,1.90,2.83,1.20,1.90,3.02,0.00,0.00,0.00 -SC,South Carolina,state,929.93,15.20,10.90,186.50,7.62,17.10,36.40,53.45,16.30,26.40,42.66,32.10,55.30,206.10 -SD,South Dakota,state,3770.19,193.50,160.20,29.30,46.77,0.30,0.50,0.80,1.50,2.50,4.06,643.60,704.50,0.00 -TN,Tennessee,state,1535.13,51.10,17.60,82.40,21.18,2.00,4.20,6.23,9.40,15.30,24.67,88.80,100.00,363.83 -TX,Texas,state,6648.22,961.00,42.70,339.20,240.55,31.90,68.00,99.90,43.90,71.30,115.23,167.20,309.70,2308.76 -UT,Utah,state,453.39,27.90,59.00,23.10,48.60,3.90,8.40,12.34,2.50,4.10,6.60,5.30,42.80,0.00 -VT,Vermont,state,180.14,6.20,0.20,0.90,65.98,2.60,5.40,8.01,1.50,2.50,4.05,0.00,0.00,0.00 -VA,Virginia,state,1146.48,39.50,16.90,164.70,47.85,11.70,24.80,36.48,10.40,16.90,27.25,39.50,77.50,64.84 -WA,Washington,state,3894.81,59.20,0.00,35.60,154.18,555.60,1183.00,1738.57,138.70,225.10,363.79,29.50,786.30,0.00 -WV,West Virginia,state,138.89,12.00,0.30,45.40,3.90,3.70,7.90,11.54,0.00,0.00,0.00,3.50,1.60,0.00 -WI,Wisconsin,state,3090.23,107.30,38.60,34.50,633.60,42.80,91.00,133.80,56.80,92.20,148.99,460.50,96.70,0.00 -WY,Wyoming,state,349.69,75.10,33.20,0.10,2.89,0.10,0.10,0.17,3.90,6.30,10.23,9.00,20.70,0.00 diff --git a/packages/python/plotly/plotly/tests/test_orca/test_image_renderers.py b/packages/python/plotly/plotly/tests/test_orca/test_image_renderers.py deleted file mode 100644 index df1e268d541..00000000000 --- a/packages/python/plotly/plotly/tests/test_orca/test_image_renderers.py +++ /dev/null @@ -1,152 +0,0 @@ -import base64 -import sys -import json - -import pytest -import numpy as np - -from plotly import io as pio -import plotly.graph_objs as go - -from plotly.offline.offline import _get_jconfig - -if sys.version_info >= (3, 3): - import unittest.mock as mock -else: - import mock - -plotly_mimetype = "application/vnd.plotly.v1+json" - - -# fixtures -# -------- -@pytest.fixture -def fig1(request): - return go.Figure( - data=[ - { - "type": "scatter", - "marker": {"color": "green"}, - "y": np.array([2, 1, 3, 2, 4, 2]), - } - ], - layout={"title": {"text": "Figure title"}}, - ) - - -def test_png_renderer_mimetype(fig1): - pio.renderers.default = "png" - - # Configure renderer so that we can use the same parameters - # to build expected image below - pio.renderers["png"].width = 400 - pio.renderers["png"].height = 500 - pio.renderers["png"].scale = 1 - - image_bytes = pio.to_image(fig1, width=400, height=500, scale=1) - image_str = base64.b64encode(image_bytes).decode("utf8") - - expected = {"image/png": image_str} - - pio.renderers.render_on_display = False - - with mock.patch("IPython.display.display") as mock_display: - fig1._ipython_display_() - - # assert fig1._repr_mimebundle_(None, None) is None - mock_display.assert_not_called() - - pio.renderers.render_on_display = True - with mock.patch("IPython.display.display") as mock_display: - fig1._ipython_display_() - - mock_display.assert_called_once_with(expected, raw=True) - - -def test_svg_renderer_show(fig1): - pio.renderers.default = "svg" - pio.renderers["svg"].width = 400 - pio.renderers["svg"].height = 500 - pio.renderers["svg"].scale = 1 - - with mock.patch("IPython.display.display") as mock_display: - pio.show(fig1) - - # Check call args. - # SVGs generated by orca are currently not reproducible so we just - # check the mime type and that the resulting string is an SVG with the - # expected size - mock_call_args = mock_display.call_args - - mock_arg1 = mock_call_args[0][0] - assert list(mock_arg1) == ["image/svg+xml"] - assert mock_arg1["image/svg+xml"].startswith( - '= (3, 3): - from unittest.mock import MagicMock -else: - from mock import MagicMock - -# Constants -# --------- -project_root = os.path.dirname(os.path.realpath(plotly.__file__)) -images_root = os.path.join(project_root, "tests", "test_orca", "images") -print(images_root) -if sys.platform.startswith("linux"): - images_dir = os.path.join(images_root, "linux") -elif sys.platform == "darwin": - images_dir = os.path.join(images_root, "darwin") -else: - raise ValueError( - "No reference images available for platform: {platform}".format( - platform=sys.platform - ) - ) - - -failed_dir = os.path.join(images_dir, "failed/") -tmp_dir = os.path.join(images_dir, "tmp/") -# These formats are deterministic. PDF and svg don't seem to be -image_formats = ["eps"] - -here = os.path.dirname(os.path.realpath(__file__)) -topo_df = pd.read_csv(os.path.join(here, "resources", "2011_us_ag_exports.csv")) - -# Fixtures -# -------- -@pytest.fixture() -def setup(): - # Reset orca state - pio.orca.config.restore_defaults(reset_server=False) - - # Clear out temp images dir - shutil.rmtree(tmp_dir, ignore_errors=True) - os.mkdir(tmp_dir) - - # Make failed directory - if not os.path.exists(failed_dir): - os.mkdir(failed_dir) - - -# Run setup before every test function in this file -pytestmark = pytest.mark.usefixtures("setup") - - -@pytest.fixture(params=image_formats) -def format(request): - return request.param - - -@pytest.fixture() -def fig1(): - pio.templates.default = None - yield go.Figure( - data=[ - go.Bar(y=[2, 1, 4], marker=go.bar.Marker(color="purple", opacity=0.7)), - go.Scattergl(y=[3, 4, 2]), - ], - layout={ - "font": {"family": "Arial", "size": 12}, - "xaxis": {"showticklabels": False}, - "yaxis": {"showticklabels": False}, - "showlegend": False, - }, - ) - pio.templates.default = "plotly" - - -@pytest.fixture() -def topofig(): - pio.templates.default = None - for col in topo_df.columns: - topo_df[col] = topo_df[col].astype(str) - - scl = [ - [0.0, "rgb(242,240,247)"], - [0.2, "rgb(218,218,235)"], - [0.4, "rgb(188,189,220)"], - [0.6, "rgb(158,154,200)"], - [0.8, "rgb(117,107,177)"], - [1.0, "rgb(84,39,143)"], - ] - - topo_df["text"] = ( - topo_df["state"] - + "
" - + "Beef " - + topo_df["beef"] - + " Dairy " - + topo_df["dairy"] - + "
" - + "Fruits " - + topo_df["total fruits"] - + " Veggies " - + topo_df["total veggies"] - + "
" - + "Wheat " - + topo_df["wheat"] - + " Corn " - + topo_df["corn"] - ) - - data = [ - dict( - type="choropleth", - colorscale=scl, - autocolorscale=False, - locations=topo_df["code"], - z=topo_df["total exports"].astype(float), - locationmode="USA-states", - text=topo_df["text"], - marker=dict(line=dict(color="rgb(255,255,255)", width=2)), - showscale=False, - ) - ] - - layout = dict( - geo=dict( - scope="usa", - projection=dict(type="albers usa"), - showlakes=True, - lakecolor="rgb(255, 255, 255)", - ), - font={"family": "Arial", "size": 12}, - ) - - yield dict(data=data, layout=layout) - pio.templates.default = "plotly" - - -@pytest.fixture() -def latexfig(): - pio.templates.default = None - trace1 = go.Scatter(x=[1, 2, 3, 4], y=[1, 4, 9, 16]) - trace2 = go.Scatter(x=[1, 2, 3, 4], y=[0.5, 2, 4.5, 8]) - data = [trace1, trace2] - layout = go.Layout( - xaxis=dict( - title="$\\sqrt{(n_\\text{c}(t|{T_\\text{early}}))}$", showticklabels=False - ), - yaxis=dict(title="$d, r \\text{ (solar radius)}$", showticklabels=False), - showlegend=False, - font={"family": "Arial", "size": 12}, - ) - fig = go.Figure(data=data, layout=layout) - yield fig - pio.templates.default = "plotly" - - -# Utilities -# --------- -def assert_image_bytes(img_bytes, file_name, _raise=True): - expected_img_path = os.path.join(images_dir, file_name) - - try: - with open(expected_img_path, "rb") as f: - expected = f.read() - - assert expected == img_bytes - - except (OSError, AssertionError) as e: - failed_path = os.path.join(failed_dir, file_name) - print('Saving failed image to "{failed_path}"'.format(failed_path=failed_path)) - - if not os.path.exists(failed_dir): - os.mkdir(failed_dir) - - with open(failed_path, "wb") as f: - f.write(img_bytes) - - if _raise: - raise e - - -# Tests -# ----- -def test_simple_to_image(fig1, format): - img_bytes = pio.to_image(fig1, format=format, width=700, height=500, engine="orca") - assert_image_bytes(img_bytes, "fig1." + format) - - -def test_to_image_default(fig1, format): - pio.orca.config.default_format = format - img_bytes = pio.to_image(fig1, width=700, height=500, engine="orca") - assert_image_bytes(img_bytes, "fig1." + format) - - -def test_write_image_string(fig1, format): - - # Build file paths - file_name = "fig1." + format - file_path = tmp_dir + file_name - - pio.write_image( - fig1, - os.path.join(tmp_dir, file_name), - format=format, - width=700, - height=500, - engine="orca", - ) - - with open(file_path, "rb") as f: - written_bytes = f.read() - - with open(os.path.join(images_dir, file_name), "rb") as f: - expected_bytes = f.read() - - assert written_bytes == expected_bytes - - -def test_write_image_writeable(fig1, format): - - file_name = "fig1." + format - with open(os.path.join(images_dir, file_name), "rb") as f: - expected_bytes = f.read() - - mock_file = MagicMock() - pio.write_image( - fig1, mock_file, format=format, width=700, height=500, engine="orca" - ) - - if mock_file.write_bytes.called: - mock_file.write_bytes.assert_called_once_with(expected_bytes) - elif mock_file.write.called: - mock_file.write.assert_called_once_with(expected_bytes) - else: - assert "Neither write nor write_bytes was called." - - -def test_write_image_string_format_inference(fig1, format): - # Build file paths - file_name = "fig1." + format - file_path = os.path.join(tmp_dir, file_name) - - # Use file extension to infer image type. - pio.write_image( - fig1, os.path.join(tmp_dir, file_name), width=700, height=500, engine="orca" - ) - - with open(file_path, "rb") as f: - written_bytes = f.read() - - with open(os.path.join(images_dir, file_name), "rb") as f: - expected_bytes = f.read() - - assert written_bytes == expected_bytes - - -def test_write_image_string_no_extension_failure(fig1): - # No extension - file_path = os.path.join(tmp_dir, "fig1") - - # Use file extension to infer image type. - with pytest.raises(ValueError) as err: - pio.write_image(fig1, file_path, engine="orca") - - assert "add a file extension or specify the type" in str(err.value) - - -def test_write_image_string_bad_extension_failure(fig1): - # Bad extension - file_path = os.path.join(tmp_dir, "fig1.bogus") - - # Use file extension to infer image type. - with pytest.raises(ValueError) as err: - pio.write_image(fig1, file_path, engine="orca") - - assert "must be specified as one of the following" in str(err.value) - - -def test_write_image_string_bad_extension_override(fig1): - # Bad extension - file_name = "fig1.bogus" - tmp_path = os.path.join(tmp_dir, file_name) - - pio.write_image(fig1, tmp_path, format="eps", width=700, height=500, engine="orca") - - with open(tmp_path, "rb") as f: - written_bytes = f.read() - - with open(os.path.join(images_dir, "fig1.eps"), "rb") as f: - expected_bytes = f.read() - - assert written_bytes == expected_bytes - - -# Topojson -# -------- -def test_topojson_fig_to_image(topofig, format): - img_bytes = pio.to_image( - topofig, format=format, width=700, height=500, engine="orca" - ) - assert_image_bytes(img_bytes, "topofig." + format) - - -# Latex / MathJax -# --------------- -def test_latex_fig_to_image(latexfig, format): - img_bytes = pio.to_image( - latexfig, format=format, width=700, height=500, engine="orca" - ) - assert_image_bytes(img_bytes, "latexfig." + format) - - -# Environmnet variables -# --------------------- -def test_problematic_environment_variables(fig1, format): - pio.orca.config.restore_defaults(reset_server=True) - - os.environ["NODE_OPTIONS"] = "--max-old-space-size=4096" - os.environ["ELECTRON_RUN_AS_NODE"] = "1" - - # Do image export - img_bytes = pio.to_image(fig1, format=format, width=700, height=500, engine="orca") - assert_image_bytes(img_bytes, "fig1." + format) - - # Check that environment variables were restored - assert os.environ["NODE_OPTIONS"] == "--max-old-space-size=4096" - assert os.environ["ELECTRON_RUN_AS_NODE"] == "1" - - -# Invalid figure json -# ------------------- -def test_invalid_figure_json(): - # Do image export - bad_fig = {"foo": "bar"} - with pytest.raises(ValueError) as err: - pio.to_image(bad_fig, format="png", engine="orca") - - assert "Invalid" in str(err.value) - - with pytest.raises(ValueError) as err: - pio.to_image(bad_fig, format="png", validate=False, engine="orca") - - assert "The image request was rejected by the orca conversion utility" in str( - err.value - ) - - assert "400: invalid or malformed request syntax" in str(err.value) - - -def test_bytesio(fig1): - """Verify that writing to a BytesIO object contains the same data as to_image(). - - The goal of this test is to ensure that Plotly correctly handles a writable buffer - which doesn't correspond to a filesystem path. - """ - bio = BytesIO() - pio.write_image(fig1, bio, format="jpg", validate=False) - bio.seek(0) - bio_bytes = bio.read() - to_image_bytes = pio.to_image(fig1, format="jpg", validate=False) - assert bio_bytes == to_image_bytes diff --git a/packages/python/plotly/plotly/version.py b/packages/python/plotly/plotly/version.py deleted file mode 100644 index f186a5a44f2..00000000000 --- a/packages/python/plotly/plotly/version.py +++ /dev/null @@ -1,18 +0,0 @@ -from ._version import get_versions - -__version__ = get_versions()["version"] -del get_versions - -from ._widget_version import __frontend_version__ - - -def stable_semver(): - """ - Get the stable portion of the semantic version string (the first three - numbers), without any of the trailing labels - - '3.0.0rc11' -> '3.0.0' - """ - from packaging.version import Version - - return Version(__version__).base_version diff --git a/packages/python/plotly/plotly/widgets.py b/packages/python/plotly/plotly/widgets.py deleted file mode 100644 index 1d4fa030b85..00000000000 --- a/packages/python/plotly/plotly/widgets.py +++ /dev/null @@ -1,3 +0,0 @@ -from _plotly_future_ import _chart_studio_error - -_chart_studio_error("widgets") diff --git a/packages/python/plotly/pyproject.toml b/packages/python/plotly/pyproject.toml deleted file mode 100644 index e90a16f3f5c..00000000000 --- a/packages/python/plotly/pyproject.toml +++ /dev/null @@ -1,3 +0,0 @@ -[build-system] -requires = ["jupyterlab~=3.0;python_version>='3.6'", "setuptools>=40.8.0", "wheel"] -build-backend = "setuptools.build_meta" diff --git a/packages/python/plotly/pytest.ini b/packages/python/plotly/pytest.ini deleted file mode 100644 index 3d05496c99b..00000000000 --- a/packages/python/plotly/pytest.ini +++ /dev/null @@ -1,5 +0,0 @@ -# content of pytest.ini -[pytest] -markers = - nodev: mark a test as nodev - matplotlib: mark a test as matplotlib diff --git a/packages/python/plotly/recipe/LICENSE.txt b/packages/python/plotly/recipe/LICENSE.txt deleted file mode 100644 index 98b37b6f421..00000000000 --- a/packages/python/plotly/recipe/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016-2018 Plotly, Inc - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/python/plotly/recipe/conda_build_config.yaml b/packages/python/plotly/recipe/conda_build_config.yaml deleted file mode 100644 index 86b425eca79..00000000000 --- a/packages/python/plotly/recipe/conda_build_config.yaml +++ /dev/null @@ -1,2 +0,0 @@ -python: - - 3.8 diff --git a/packages/python/plotly/recipe/meta.yaml b/packages/python/plotly/recipe/meta.yaml deleted file mode 100644 index 67176115a14..00000000000 --- a/packages/python/plotly/recipe/meta.yaml +++ /dev/null @@ -1,50 +0,0 @@ -{% set data = load_setup_py_data(setup_file='../setup.py', from_recipe_dir=True) %} -{% set version = data.get('version') %} - -package: - name: plotly - version: {{ version }} - -source: - path: ../../../../ - -build: - number: 0 - script: | - cd packages/python/plotly - {{ PYTHON }} setup.py sdist - {{ PYTHON }} -m pip install dist/plotly-{{ version }}.tar.gz --no-deps --ignore-installed --no-cache-dir -q - noarch: python - -requirements: - build: - - python - - pip - - jupyterlab =3 - - nodejs =16 - - setuptools - run: - - python - - narwhals >=1.15.1 - -test: - imports: - - plotly - -about: - home: https://plot.ly/python/ - license: MIT - license_file: '{{ environ["RECIPE_DIR"] }}/LICENSE.txt' - summary: 'An interactive JavaScript-based visualization library for Python' - description: | - plotly.py is an interactive, open-source, and JavaScript-based graphing - library for Python. Built on top of plotly.js, plotly.py is a high-level, - declarative charting library that includes over 30 chart types, - including scientific charts, 3D graphs, statistical charts, SVG maps, - financial charts, and more. - doc_url: https://plot.ly/python/ - dev_url: https://github.com/plotly/plotly.py - -extra: - recipe-maintainers: - - jonmmease diff --git a/packages/python/plotly/requires-express.txt b/packages/python/plotly/requires-express.txt deleted file mode 100644 index f5611973473..00000000000 --- a/packages/python/plotly/requires-express.txt +++ /dev/null @@ -1,8 +0,0 @@ -### Required dependencies for Plotly Express ### -### ### -### To install, run: ### -### $ pip install -r requires-express.txt ### -### ### -################################################### - -numpy diff --git a/packages/python/plotly/requires-install.txt b/packages/python/plotly/requires-install.txt deleted file mode 100644 index 2923ec9d8ab..00000000000 --- a/packages/python/plotly/requires-install.txt +++ /dev/null @@ -1,10 +0,0 @@ -### Dependencies for Core Plotly Functionality ### -### ### -### To install, run: ### -### $ pip install -r requires-install.txt ### -### ### -################################################### - -## dataframe agnostic layer ## -narwhals>=1.15.1 -packaging diff --git a/packages/python/plotly/setup.cfg b/packages/python/plotly/setup.cfg deleted file mode 100644 index 0da18fcf66d..00000000000 --- a/packages/python/plotly/setup.cfg +++ /dev/null @@ -1,11 +0,0 @@ -[metadata] -description_file = README.md -license_files = LICENSE.txt - -[versioneer] -VCS = git -style = pep440 -versionfile_source = plotly/_version.py -versionfile_build = plotly/_version.py -tag_prefix = v -parentdir_prefix = plotly- diff --git a/packages/python/plotly/setup.py b/packages/python/plotly/setup.py deleted file mode 100644 index 1b8b6a2159a..00000000000 --- a/packages/python/plotly/setup.py +++ /dev/null @@ -1,581 +0,0 @@ -import os -import sys -import time -import platform -import json -import shutil - -from setuptools import setup, Command -from setuptools.command.egg_info import egg_info -from subprocess import check_call -from distutils import log - -# ensure the current directory is on sys.path; so versioneer can be imported -# when pip uses PEP 517/518 build rules. -# https://github.com/python-versioneer/python-versioneer/issues/193 -sys.path.append(os.path.dirname(__file__)) - -import versioneer - - -here = os.path.dirname(os.path.abspath(__file__)) -project_root = os.path.dirname(os.path.dirname(os.path.dirname(here))) -node_root = os.path.join(project_root, "packages", "python", "plotly", "js") -is_repo = os.path.exists(os.path.join(project_root, ".git")) - -npm_path = os.pathsep.join( - [ - os.path.join(node_root, "node_modules", ".bin"), - os.environ.get("PATH", os.defpath), - ] -) - -if "--skip-npm" in sys.argv or os.environ.get("SKIP_NPM") is not None: - print("Skipping npm install as requested.") - skip_npm = True - if "--skip-npm" in sys.argv: - sys.argv.remove("--skip-npm") -else: - skip_npm = False - - -# Load plotly.js version from js/package.json -def plotly_js_version(): - path = os.path.join(here, "js", "package.json") - with open(path, "rt") as f: - package_json = json.load(f) - version = package_json["dependencies"]["plotly.js"] - version = version.replace("^", "") - - return version - - -def readme(): - with open(os.path.join(here, "README.md")) as f: - return f.read() - - -def js_prerelease(command, strict=False): - """decorator for building minified js/css prior to another command""" - - class DecoratedCommand(command): - def run(self): - jsdeps = self.distribution.get_command_obj("jsdeps") - if not is_repo and all(os.path.exists(t) for t in jsdeps.targets): - # sdist, nothing to do - command.run(self) - return - - try: - self.distribution.run_command("jsdeps") - except Exception as e: - missing = [t for t in jsdeps.targets if not os.path.exists(t)] - if strict or missing: - log.warn("rebuilding js and css failed") - if missing: - log.error("missing files: %s" % missing) - raise e - else: - log.warn("rebuilding js and css failed (not a problem)") - log.warn(str(e)) - command.run(self) - update_package_data(self.distribution) - - return DecoratedCommand - - -def update_package_data(distribution): - """update package_data to catch changes during setup""" - build_py = distribution.get_command_obj("build_py") - - # re-init build_py options which load package_data - build_py.finalize_options() - - -class NPM(Command): - description = "install package.json dependencies using npm" - - user_options = [] - - node_modules = os.path.join(node_root, "node_modules") - - targets = [ - os.path.join(here, "plotly", "package_data", "widgetbundle.js"), - ] - - def initialize_options(self): - self.local = None - - def finalize_options(self): - self.set_undefined_options("updateplotlyjsdev", ("local", "local")) - - def get_npm_name(self): - npmName = "npm" - if platform.system() == "Windows": - npmName = "npm.cmd" - - return npmName - - def has_npm(self): - npmName = self.get_npm_name() - try: - check_call([npmName, "--version"]) - return True - except: - return False - - def run(self): - if skip_npm: - log.info("Skipping npm-installation") - return - - has_npm = self.has_npm() - if not has_npm: - log.error( - "`npm` unavailable. If you're running this command using sudo, make sure `npm` is available to sudo" - ) - - env = os.environ.copy() - env["PATH"] = npm_path - - if self.has_npm(): - log.info( - "Installing build dependencies with npm. This may take a while..." - ) - npmName = self.get_npm_name() - check_call( - [npmName, "install"], - cwd=node_root, - stdout=sys.stdout, - stderr=sys.stderr, - ) - if self.local is not None: - plotly_archive = os.path.join(self.local, "plotly.js.tgz") - check_call( - [npmName, "install", plotly_archive], - cwd=node_root, - stdout=sys.stdout, - stderr=sys.stderr, - ) - check_call( - [npmName, "run", "build"], - cwd=node_root, - stdout=sys.stdout, - stderr=sys.stderr, - ) - os.utime(self.node_modules, None) - - for t in self.targets: - if not os.path.exists(t): - msg = "Missing file: %s" % t - raise ValueError(msg) - - # update package data in case this created new files - update_package_data(self.distribution) - - -class CodegenCommand(Command): - description = "Generate class hierarchy from Plotly JSON schema" - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - if sys.version_info < (3, 8): - raise ImportError("Code generation must be executed with Python >= 3.8") - - from codegen import perform_codegen - - perform_codegen() - - -def overwrite_schema_local(uri): - path = os.path.join(here, "codegen", "resources", "plot-schema.json") - shutil.copyfile(uri, path) - - -def overwrite_schema(url): - import requests - - req = requests.get(url) - assert req.status_code == 200 - path = os.path.join(here, "codegen", "resources", "plot-schema.json") - with open(path, "wb") as f: - f.write(req.content) - - -def overwrite_bundle_local(uri): - path = os.path.join(here, "plotly", "package_data", "plotly.min.js") - shutil.copyfile(uri, path) - - -def overwrite_bundle(url): - import requests - - req = requests.get(url) - assert req.status_code == 200 - path = os.path.join(here, "plotly", "package_data", "plotly.min.js") - with open(path, "wb") as f: - f.write(req.content) - - -def overwrite_plotlyjs_version_file(plotlyjs_version): - path = os.path.join(here, "plotly", "offline", "_plotlyjs_version.py") - with open(path, "w") as f: - f.write( - """\ -# DO NOT EDIT -# This file is generated by the updatebundle setup.py command -__plotlyjs_version__ = "{plotlyjs_version}" -""".format( - plotlyjs_version=plotlyjs_version - ) - ) - - -def overwrite_plotlywidget_version_file(version): - path = os.path.join(here, "plotly", "_widget_version.py") - with open(path, "w") as f: - f.write( - """\ -# This file is generated by the updateplotlywidgetversion setup.py command -# for automated dev builds -# -# It is edited by hand prior to official releases -__frontend_version__ = "{version}" -""".format( - version=version - ) - ) - - -def request_json(url): - import requests - - req = requests.get(url) - return json.loads(req.content.decode("utf-8")) - - -def get_latest_publish_build_info(repo, branch): - url = ( - r"https://circleci.com/api/v1.1/project/github/" - r"{repo}/tree/{branch}?limit=100&filter=completed" - ).format(repo=repo, branch=branch) - - branch_jobs = request_json(url) - - # Get most recent successful publish build for branch - builds = [ - j - for j in branch_jobs - if j.get("workflows", {}).get("job_name", None) == "publish-dist" - and j.get("status", None) == "success" - ] - build = builds[0] - - # Extract build info - return {p: build[p] for p in ["vcs_revision", "build_num", "committer_date"]} - - -def get_bundle_schema_local(local): - plotly_archive = os.path.join(local, "plotly.js.tgz") - plotly_bundle = os.path.join(local, "dist/plotly.min.js") - plotly_schemas = os.path.join(local, "dist/plot-schema.json") - return plotly_archive, plotly_bundle, plotly_schemas - - -def get_bundle_schema_urls(build_num): - url = ( - "https://circleci.com/api/v1.1/project/github/" - "plotly/plotly.js/{build_num}/artifacts" - ).format(build_num=build_num) - - artifacts = request_json(url) - - # Find archive - archives = [a for a in artifacts if a.get("path", None) == "plotly.js.tgz"] - archive = archives[0] - - # Find bundle - bundles = [a for a in artifacts if a.get("path", None) == "dist/plotly.min.js"] - bundle = bundles[0] - - # Find schema - schemas = [a for a in artifacts if a.get("path", None) == "dist/plot-schema.json"] - schema = schemas[0] - - return archive["url"], bundle["url"], schema["url"] - - -class UpdateSchemaCommand(Command): - description = "Download latest version of the plot-schema JSON file" - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - url = ( - "https://raw.githubusercontent.com/plotly/plotly.js/" - "v%s/dist/plot-schema.json" % plotly_js_version() - ) - overwrite_schema(url) - - -class UpdateBundleCommand(Command): - description = "Download latest version of the plot-schema JSON file" - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - url = ( - "https://raw.githubusercontent.com/plotly/plotly.js/" - "v%s/dist/plotly.min.js" % plotly_js_version() - ) - overwrite_bundle(url) - - # Write plotly.js version file - plotlyjs_version = plotly_js_version() - overwrite_plotlyjs_version_file(plotlyjs_version) - - -class UpdatePlotlyJsCommand(Command): - description = "Update project to a new version of plotly.js" - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - self.run_command("updatebundle") - self.run_command("updateschema") - self.run_command("codegen") - - -class UpdateBundleSchemaDevCommand(Command): - description = "Update the plotly.js schema and bundle from master" - user_options = [] - - def initialize_options(self): - self.devrepo = None - self.devbranch = None - self.local = None - - def finalize_options(self): - self.set_undefined_options("updateplotlyjsdev", ("devrepo", "devrepo")) - self.set_undefined_options("updateplotlyjsdev", ("devbranch", "devbranch")) - self.set_undefined_options("updateplotlyjsdev", ("local", "local")) - - def run(self): - if self.local is None: - build_info = get_latest_publish_build_info(self.devrepo, self.devbranch) - - archive_url, bundle_url, schema_url = get_bundle_schema_urls( - build_info["build_num"] - ) - - # Update bundle in package data - overwrite_bundle(bundle_url) - - # Update schema in package data - overwrite_schema(schema_url) - else: - # this info could be more informative but - # it doesn't seem as useful in a local context - # and requires dependencies and programming. - build_info = {"vcs_revision": "local", "committer_date": str(time.time())} - self.devrepo = self.local - self.devbranch = "" - - archive_uri, bundle_uri, schema_uri = get_bundle_schema_local(self.local) - overwrite_bundle_local(bundle_uri) - overwrite_schema_local(schema_uri) - - # Update plotly.js url in package.json - package_json_path = os.path.join(node_root, "package.json") - with open(package_json_path, "r") as f: - package_json = json.load(f) - - # Replace version with bundle url - package_json["dependencies"]["plotly.js"] = ( - archive_url if self.local is None else archive_uri - ) - with open(package_json_path, "w") as f: - json.dump(package_json, f, indent=2) - - # update plotly.js version in _plotlyjs_version - rev = build_info["vcs_revision"] - date = str(build_info["committer_date"]) - version = "_".join([self.devrepo, self.devbranch, date[:10], rev[:8]]) - overwrite_plotlyjs_version_file(version) - - -class UpdatePlotlyJsDevCommand(Command): - description = "Update project to a new development version of plotly.js" - user_options = [ - ("devrepo=", None, "Repository name"), - ("devbranch=", None, "branch or pull/number"), - ("local=", None, "local copy of repo, used by itself"), - ] - - def initialize_options(self): - self.devrepo = "plotly/plotly.js" - self.devbranch = "master" - self.local = None - - def finalize_options(self): - pass - - def run(self): - self.run_command("updatebundleschemadev") - self.run_command("jsdeps") - self.run_command("codegen") - - -class UpdatePlotlywidgetVersionCommand(Command): - description = "Update package.json version to match widget version" - - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - from plotly._version import git_pieces_from_vcs, render - - # Update plotly.js url in package.json - package_json_path = os.path.join(node_root, "package.json") - - with open(package_json_path, "r") as f: - package_json = json.load(f) - - # Replace version with bundle url - pieces = git_pieces_from_vcs("widget-v", project_root, False) - pieces["dirty"] = False - widget_ver = render(pieces, "pep440")["version"] - - package_json["version"] = widget_ver - with open(package_json_path, "w") as f: - json.dump(package_json, f, indent=2) - - # write _widget_version - overwrite_plotlywidget_version_file(widget_ver) - - -graph_objs_packages = [ - d[0].replace("/", ".") - for d in os.walk("plotly/graph_objs") - if not d[0].endswith("__pycache__") -] - - -validator_packages = [ - d[0].replace("/", ".") - for d in os.walk("plotly/validators") - if not d[0].endswith("__pycache__") -] - -versioneer_cmds = versioneer.get_cmdclass() - - -def read_req_file(req_type): - with open(f"requires-{req_type}.txt", encoding="utf-8") as fp: - requires = (line.strip() for line in fp) - return [req for req in requires if req and not req.startswith("#")] - - -setup( - name="plotly", - version=versioneer.get_version(), - author="Chris P", - author_email="chris@plot.ly", - maintainer="Nicolas Kruchten", - maintainer_email="nicolas@plot.ly", - url="https://plotly.com/python/", - project_urls={ - "Documentation": "https://plotly.com/python/", - "Github": "https://github.com/plotly/plotly.py", - "Changelog": "https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md", - }, - description="An open-source, interactive data visualization library for Python", - long_description=readme(), - long_description_content_type="text/markdown", - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Topic :: Scientific/Engineering :: Visualization", - "License :: OSI Approved :: MIT License", - ], - python_requires=">=3.8", - license="MIT", - packages=[ - "plotly", - "plotly.plotly", - "plotly.offline", - "plotly.io", - "plotly.matplotlylib", - "plotly.matplotlylib.mplexporter", - "plotly.matplotlylib.mplexporter.renderers", - "plotly.figure_factory", - "plotly.data", - "plotly.colors", - "plotly.express", - "plotly.express.data", - "plotly.express.colors", - "plotly.express.trendline_functions", - "plotly.graph_objects", - "_plotly_utils", - "_plotly_utils.colors", - "_plotly_future_", - ] - + graph_objs_packages - + validator_packages, - package_data={ - "plotly": [ - "package_data/*", - "package_data/templates/*", - "package_data/datasets/*", - ], - }, - install_requires=read_req_file("install"), - extras_require={ - "express": read_req_file("express"), - }, - zip_safe=False, - cmdclass=dict( - build_py=js_prerelease(versioneer_cmds["build_py"]), - egg_info=js_prerelease(egg_info), - sdist=js_prerelease(versioneer_cmds["sdist"], strict=True), - jsdeps=NPM, - codegen=CodegenCommand, - updateschema=UpdateSchemaCommand, - updatebundle=UpdateBundleCommand, - updateplotlyjs=js_prerelease(UpdatePlotlyJsCommand), - updatebundleschemadev=UpdateBundleSchemaDevCommand, - updateplotlyjsdev=UpdatePlotlyJsDevCommand, - updateplotlywidgetversion=UpdatePlotlywidgetVersionCommand, - version=versioneer_cmds["version"], - ), -) diff --git a/packages/python/plotly/templategen/__init__.py b/packages/python/plotly/templategen/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/python/plotly/test_requirements/requirements_310_core.txt b/packages/python/plotly/test_requirements/requirements_310_core.txt deleted file mode 100644 index a9e44d7480f..00000000000 --- a/packages/python/plotly/test_requirements/requirements_310_core.txt +++ /dev/null @@ -1,3 +0,0 @@ -requests==2.25.1 -pytest==7.4.4 -narwhals>=1.15.1 diff --git a/packages/python/plotly/test_requirements/requirements_310_optional.txt b/packages/python/plotly/test_requirements/requirements_310_optional.txt deleted file mode 100644 index f61fef5a5dc..00000000000 --- a/packages/python/plotly/test_requirements/requirements_310_optional.txt +++ /dev/null @@ -1,24 +0,0 @@ -requests==2.25.1 -pandas==1.5.3 -numpy==1.23.0 -xarray==0.17.0 -statsmodels==0.14.1 -Pillow==10.2.0 -pytest==7.4.4 -pytz==2023.3.post1 -ipython[all]==7.22.0 -ipykernel==5.5.3 -jupyter==1.0.0 -scipy==1.11.4 -Shapely==2.0.2 -geopandas==0.14.4 -pyshp==2.1.3 -matplotlib==3.8.0 -scikit-image==0.22.0 -psutil==5.7.0 -kaleido -orjson==3.8.12 -polars[timezone] -pyarrow -narwhals>=1.15.1 -anywidget==0.9.13 diff --git a/packages/python/plotly/test_requirements/requirements_311_core.txt b/packages/python/plotly/test_requirements/requirements_311_core.txt deleted file mode 100644 index 18000388687..00000000000 --- a/packages/python/plotly/test_requirements/requirements_311_core.txt +++ /dev/null @@ -1,3 +0,0 @@ -requests==2.25.1 -pytest==7.4.4 -narwhals>=1.15.1 \ No newline at end of file diff --git a/packages/python/plotly/test_requirements/requirements_311_optional.txt b/packages/python/plotly/test_requirements/requirements_311_optional.txt deleted file mode 100644 index 19771444dcf..00000000000 --- a/packages/python/plotly/test_requirements/requirements_311_optional.txt +++ /dev/null @@ -1,24 +0,0 @@ -requests==2.25.1 -pandas==1.5.3 -numpy==1.23.2 -xarray==0.17.0 -statsmodels==0.14.1 -Pillow==10.2.0 -pytest==7.4.4 -pytz==2023.3.post1 -ipython[all]==7.22.0 -ipykernel==5.5.3 -jupyter==1.0.0 -scipy==1.11.4 -Shapely==2.0.2 -geopandas==0.14.4 -pyshp==2.1.3 -matplotlib==3.8.0 -scikit-image==0.22.0 -psutil==5.7.0 -kaleido -orjson==3.8.12 -polars[timezone] -pyarrow -narwhals>=1.15.1 -anywidget==0.9.13 diff --git a/packages/python/plotly/test_requirements/requirements_312_core.txt b/packages/python/plotly/test_requirements/requirements_312_core.txt deleted file mode 100644 index a9e44d7480f..00000000000 --- a/packages/python/plotly/test_requirements/requirements_312_core.txt +++ /dev/null @@ -1,3 +0,0 @@ -requests==2.25.1 -pytest==7.4.4 -narwhals>=1.15.1 diff --git a/packages/python/plotly/test_requirements/requirements_312_no_numpy_optional.txt b/packages/python/plotly/test_requirements/requirements_312_no_numpy_optional.txt deleted file mode 100644 index 9786aea5f6a..00000000000 --- a/packages/python/plotly/test_requirements/requirements_312_no_numpy_optional.txt +++ /dev/null @@ -1,24 +0,0 @@ -requests==2.31.0 -pandas -xarray==2023.12.0 -statsmodels -Pillow==10.2.0 -pytest==7.4.4 -pytz==2023.3.post1 -ipython[all] -ipykernel -jupyter -scipy==1.11.4 -Shapely==2.0.2 -geopandas==0.14.4 -pyshp==2.3.1 -matplotlib==3.8.2 -scikit-image==0.22.0 -psutil==5.9.7 -kaleido -orjson==3.9.10 -polars[timezone] -pyarrow -narwhals>=1.15.1 -anywidget==0.9.13 -jupyter-console==6.4.4 diff --git a/packages/python/plotly/test_requirements/requirements_312_np2_optional.txt b/packages/python/plotly/test_requirements/requirements_312_np2_optional.txt deleted file mode 100644 index 1e02e3a8360..00000000000 --- a/packages/python/plotly/test_requirements/requirements_312_np2_optional.txt +++ /dev/null @@ -1,25 +0,0 @@ -requests==2.31.0 -pandas -numpy>2 -xarray==2024.10.0 -statsmodels -Pillow==10.2.0 -pytest==7.4.4 -pytz==2023.3.post1 -ipython[all] -ipywidgets -ipykernel -jupyter -scipy==1.14.1 -Shapely==2.0.2 -geopandas==0.14.4 -pyshp==2.3.1 -matplotlib==3.9.2 -scikit-image==0.24.0 -psutil==5.9.7 -kaleido -orjson==3.9.10 -polars[timezone] -pyarrow -narwhals>=1.15.1 -anywidget==0.9.13 diff --git a/packages/python/plotly/test_requirements/requirements_312_optional.txt b/packages/python/plotly/test_requirements/requirements_312_optional.txt deleted file mode 100644 index 15781ae5adb..00000000000 --- a/packages/python/plotly/test_requirements/requirements_312_optional.txt +++ /dev/null @@ -1,25 +0,0 @@ -requests==2.31.0 -pandas -numpy -xarray==2023.12.0 -statsmodels -Pillow==10.2.0 -pytest==7.4.4 -pytz==2023.3.post1 -ipython[all] -ipykernel -jupyter -scipy==1.11.4 -Shapely==2.0.2 -geopandas==0.14.4 -pyshp==2.3.1 -matplotlib==3.8.2 -scikit-image==0.22.0 -psutil==5.9.7 -kaleido -orjson==3.9.10 -polars[timezone] -pyarrow -narwhals>=1.15.1 -anywidget==0.9.13 -jupyter-console==6.4.4 diff --git a/packages/python/plotly/test_requirements/requirements_38_core.txt b/packages/python/plotly/test_requirements/requirements_38_core.txt deleted file mode 100644 index 9bfcbffa2ff..00000000000 --- a/packages/python/plotly/test_requirements/requirements_38_core.txt +++ /dev/null @@ -1,3 +0,0 @@ -requests==2.25.1 -pytest==8.1.1 -narwhals>=1.15.1 diff --git a/packages/python/plotly/test_requirements/requirements_38_optional.txt b/packages/python/plotly/test_requirements/requirements_38_optional.txt deleted file mode 100644 index f62c6ad6560..00000000000 --- a/packages/python/plotly/test_requirements/requirements_38_optional.txt +++ /dev/null @@ -1,24 +0,0 @@ -requests==2.25.1 -pandas==1.2.4 -numpy==1.20.2 -xarray==0.17.0 -statsmodels -Pillow==8.2.0 -pytest==8.1.1 -pytz==2021.1 -ipython[all]==7.22.0 -ipykernel==5.5.3 -jupyter==1.0.0 -scipy==1.6.2 -Shapely==2.0.2 -geopandas==0.13.2 -fiona<=1.9.6 -pyshp==2.1.3 -matplotlib==3.7.3 -scikit-image==0.18.1 -psutil==5.7.0 -kaleido -polars[timezone] -pyarrow -narwhals>=1.15.1 -anywidget==0.9.13 diff --git a/packages/python/plotly/test_requirements/requirements_39_core.txt b/packages/python/plotly/test_requirements/requirements_39_core.txt deleted file mode 100644 index 0d36eb9460e..00000000000 --- a/packages/python/plotly/test_requirements/requirements_39_core.txt +++ /dev/null @@ -1,3 +0,0 @@ -requests==2.25.1 -pytest==6.2.3 -narwhals>=1.15.1 diff --git a/packages/python/plotly/test_requirements/requirements_39_optional.txt b/packages/python/plotly/test_requirements/requirements_39_optional.txt deleted file mode 100644 index 1a767fe4926..00000000000 --- a/packages/python/plotly/test_requirements/requirements_39_optional.txt +++ /dev/null @@ -1,25 +0,0 @@ -requests==2.25.1 -pandas==1.2.4 -numpy==1.21.6 -xarray==0.17.0 -statsmodels -Pillow==8.2.0 -pytest==6.2.3 -pytz==2021.1 -ipython[all]==7.22.0 -ipykernel==5.5.3 -jupyter==1.0.0 -scipy==1.6.2 -Shapely==2.0.2 -geopandas==0.13.2 -fiona<=1.9.6 -pyshp==2.1.3 -matplotlib==3.8.0 -scikit-image==0.18.1 -psutil==5.7.0 -kaleido -orjson==3.8.12 -polars[timezone] -pyarrow -narwhals>=1.15.1 -anywidget==0.9.13 diff --git a/packages/python/plotly/test_requirements/requirements_39_pandas_2_optional.txt b/packages/python/plotly/test_requirements/requirements_39_pandas_2_optional.txt deleted file mode 100644 index fdfe035dfe9..00000000000 --- a/packages/python/plotly/test_requirements/requirements_39_pandas_2_optional.txt +++ /dev/null @@ -1,26 +0,0 @@ -requests==2.25.1 -pandas==2.2.0 -numpy==1.22.4 -xarray==0.17.0 -statsmodels -Pillow==8.2.0 -pytest==6.2.3 -pytz==2021.1 -ipython[all]==7.22.0 -ipykernel==5.5.3 -jupyter==1.0.0 -scipy==1.6.2 -Shapely==2.0.2 -geopandas==0.14.4 -pyshp==2.1.3 -matplotlib==3.8.0 -scikit-image==0.18.1 -psutil==5.7.0 -kaleido -vaex -pydantic<=1.10.11 # for vaex, see https://github.com/vaexio/vaex/issues/2384 -polars[timezone] -pyarrow -narwhals>=1.15.1 -polars -anywidget==0.9.13 diff --git a/packages/python/plotly/versioneer.py b/packages/python/plotly/versioneer.py deleted file mode 100644 index d70f31b1241..00000000000 --- a/packages/python/plotly/versioneer.py +++ /dev/null @@ -1,2163 +0,0 @@ -# Version: 0.21 - -"""The Versioneer - like a rocketeer, but for versions. - -The Versioneer -============== - -* like a rocketeer, but for versions! -* https://github.com/python-versioneer/python-versioneer -* Brian Warner -* License: Public Domain -* Compatible with: Python 3.6, 3.7, 3.8, 3.9 and pypy3 -* [![Latest Version][pypi-image]][pypi-url] -* [![Build Status][travis-image]][travis-url] - -This is a tool for managing a recorded version number in distutils-based -python projects. The goal is to remove the tedious and error-prone "update -the embedded version string" step from your release process. Making a new -release should be as easy as recording a new tag in your version-control -system, and maybe making new tarballs. - - -## Quick Install - -* `pip install versioneer` to somewhere in your $PATH -* add a `[versioneer]` section to your setup.cfg (see [Install](INSTALL.md)) -* run `versioneer install` in your source tree, commit the results -* Verify version information with `python setup.py version` - -## Version Identifiers - -Source trees come from a variety of places: - -* a version-control system checkout (mostly used by developers) -* a nightly tarball, produced by build automation -* a snapshot tarball, produced by a web-based VCS browser, like github's - "tarball from tag" feature -* a release tarball, produced by "setup.py sdist", distributed through PyPI - -Within each source tree, the version identifier (either a string or a number, -this tool is format-agnostic) can come from a variety of places: - -* ask the VCS tool itself, e.g. "git describe" (for checkouts), which knows - about recent "tags" and an absolute revision-id -* the name of the directory into which the tarball was unpacked -* an expanded VCS keyword ($Id$, etc) -* a `_version.py` created by some earlier build step - -For released software, the version identifier is closely related to a VCS -tag. Some projects use tag names that include more than just the version -string (e.g. "myproject-1.2" instead of just "1.2"), in which case the tool -needs to strip the tag prefix to extract the version identifier. For -unreleased software (between tags), the version identifier should provide -enough information to help developers recreate the same tree, while also -giving them an idea of roughly how old the tree is (after version 1.2, before -version 1.3). Many VCS systems can report a description that captures this, -for example `git describe --tags --dirty --always` reports things like -"0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the -0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has -uncommitted changes). - -The version identifier is used for multiple purposes: - -* to allow the module to self-identify its version: `myproject.__version__` -* to choose a name and prefix for a 'setup.py sdist' tarball - -## Theory of Operation - -Versioneer works by adding a special `_version.py` file into your source -tree, where your `__init__.py` can import it. This `_version.py` knows how to -dynamically ask the VCS tool for version information at import time. - -`_version.py` also contains `$Revision$` markers, and the installation -process marks `_version.py` to have this marker rewritten with a tag name -during the `git archive` command. As a result, generated tarballs will -contain enough information to get the proper version. - -To allow `setup.py` to compute a version too, a `versioneer.py` is added to -the top level of your source tree, next to `setup.py` and the `setup.cfg` -that configures it. This overrides several distutils/setuptools commands to -compute the version when invoked, and changes `setup.py build` and `setup.py -sdist` to replace `_version.py` with a small static file that contains just -the generated version data. - -## Installation - -See [INSTALL.md](./INSTALL.md) for detailed installation instructions. - -## Version-String Flavors - -Code which uses Versioneer can learn about its version string at runtime by -importing `_version` from your main `__init__.py` file and running the -`get_versions()` function. From the "outside" (e.g. in `setup.py`), you can -import the top-level `versioneer.py` and run `get_versions()`. - -Both functions return a dictionary with different flavors of version -information: - -* `['version']`: A condensed version string, rendered using the selected - style. This is the most commonly used value for the project's version - string. The default "pep440" style yields strings like `0.11`, - `0.11+2.g1076c97`, or `0.11+2.g1076c97.dirty`. See the "Styles" section - below for alternative styles. - -* `['full-revisionid']`: detailed revision identifier. For Git, this is the - full SHA1 commit id, e.g. "1076c978a8d3cfc70f408fe5974aa6c092c949ac". - -* `['date']`: Date and time of the latest `HEAD` commit. For Git, it is the - commit date in ISO 8601 format. This will be None if the date is not - available. - -* `['dirty']`: a boolean, True if the tree has uncommitted changes. Note that - this is only accurate if run in a VCS checkout, otherwise it is likely to - be False or None - -* `['error']`: if the version string could not be computed, this will be set - to a string describing the problem, otherwise it will be None. It may be - useful to throw an exception in setup.py if this is set, to avoid e.g. - creating tarballs with a version string of "unknown". - -Some variants are more useful than others. Including `full-revisionid` in a -bug report should allow developers to reconstruct the exact code being tested -(or indicate the presence of local changes that should be shared with the -developers). `version` is suitable for display in an "about" box or a CLI -`--version` output: it can be easily compared against release notes and lists -of bugs fixed in various releases. - -The installer adds the following text to your `__init__.py` to place a basic -version in `YOURPROJECT.__version__`: - - from ._version import get_versions - __version__ = get_versions()['version'] - del get_versions - -## Styles - -The setup.cfg `style=` configuration controls how the VCS information is -rendered into a version string. - -The default style, "pep440", produces a PEP440-compliant string, equal to the -un-prefixed tag name for actual releases, and containing an additional "local -version" section with more detail for in-between builds. For Git, this is -TAG[+DISTANCE.gHEX[.dirty]] , using information from `git describe --tags ---dirty --always`. For example "0.11+2.g1076c97.dirty" indicates that the -tree is like the "1076c97" commit but has uncommitted changes (".dirty"), and -that this commit is two revisions ("+2") beyond the "0.11" tag. For released -software (exactly equal to a known tag), the identifier will only contain the -stripped tag, e.g. "0.11". - -Other styles are available. See [details.md](details.md) in the Versioneer -source tree for descriptions. - -## Debugging - -Versioneer tries to avoid fatal errors: if something goes wrong, it will tend -to return a version of "0+unknown". To investigate the problem, run `setup.py -version`, which will run the version-lookup code in a verbose mode, and will -display the full contents of `get_versions()` (including the `error` string, -which may help identify what went wrong). - -## Known Limitations - -Some situations are known to cause problems for Versioneer. This details the -most significant ones. More can be found on Github -[issues page](https://github.com/python-versioneer/python-versioneer/issues). - -### Subprojects - -Versioneer has limited support for source trees in which `setup.py` is not in -the root directory (e.g. `setup.py` and `.git/` are *not* siblings). The are -two common reasons why `setup.py` might not be in the root: - -* Source trees which contain multiple subprojects, such as - [Buildbot](https://github.com/buildbot/buildbot), which contains both - "master" and "slave" subprojects, each with their own `setup.py`, - `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI - distributions (and upload multiple independently-installable tarballs). -* Source trees whose main purpose is to contain a C library, but which also - provide bindings to Python (and perhaps other languages) in subdirectories. - -Versioneer will look for `.git` in parent directories, and most operations -should get the right version string. However `pip` and `setuptools` have bugs -and implementation details which frequently cause `pip install .` from a -subproject directory to fail to find a correct version string (so it usually -defaults to `0+unknown`). - -`pip install --editable .` should work correctly. `setup.py install` might -work too. - -Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in -some later version. - -[Bug #38](https://github.com/python-versioneer/python-versioneer/issues/38) is tracking -this issue. The discussion in -[PR #61](https://github.com/python-versioneer/python-versioneer/pull/61) describes the -issue from the Versioneer side in more detail. -[pip PR#3176](https://github.com/pypa/pip/pull/3176) and -[pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve -pip to let Versioneer work correctly. - -Versioneer-0.16 and earlier only looked for a `.git` directory next to the -`setup.cfg`, so subprojects were completely unsupported with those releases. - -### Editable installs with setuptools <= 18.5 - -`setup.py develop` and `pip install --editable .` allow you to install a -project into a virtualenv once, then continue editing the source code (and -test) without re-installing after every change. - -"Entry-point scripts" (`setup(entry_points={"console_scripts": ..})`) are a -convenient way to specify executable scripts that should be installed along -with the python package. - -These both work as expected when using modern setuptools. When using -setuptools-18.5 or earlier, however, certain operations will cause -`pkg_resources.DistributionNotFound` errors when running the entrypoint -script, which must be resolved by re-installing the package. This happens -when the install happens with one version, then the egg_info data is -regenerated while a different version is checked out. Many setup.py commands -cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into -a different virtualenv), so this can be surprising. - -[Bug #83](https://github.com/python-versioneer/python-versioneer/issues/83) describes -this one, but upgrading to a newer version of setuptools should probably -resolve it. - - -## Updating Versioneer - -To upgrade your project to a new release of Versioneer, do the following: - -* install the new Versioneer (`pip install -U versioneer` or equivalent) -* edit `setup.cfg`, if necessary, to include any new configuration settings - indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details. -* re-run `versioneer install` in your source tree, to replace - `SRC/_version.py` -* commit any changed files - -## Future Directions - -This tool is designed to make it easily extended to other version-control -systems: all VCS-specific components are in separate directories like -src/git/ . The top-level `versioneer.py` script is assembled from these -components by running make-versioneer.py . In the future, make-versioneer.py -will take a VCS name as an argument, and will construct a version of -`versioneer.py` that is specific to the given VCS. It might also take the -configuration arguments that are currently provided manually during -installation by editing setup.py . Alternatively, it might go the other -direction and include code from all supported VCS systems, reducing the -number of intermediate scripts. - -## Similar projects - -* [setuptools_scm](https://github.com/pypa/setuptools_scm/) - a non-vendored build-time - dependency -* [minver](https://github.com/jbweston/miniver) - a lightweight reimplementation of - versioneer -* [versioningit](https://github.com/jwodder/versioningit) - a PEP 518-based setuptools - plugin - -## License - -To make Versioneer easier to embed, all its code is dedicated to the public -domain. The `_version.py` that it creates is also in the public domain. -Specifically, both are released under the Creative Commons "Public Domain -Dedication" license (CC0-1.0), as described in -https://creativecommons.org/publicdomain/zero/1.0/ . - -[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg -[pypi-url]: https://pypi.python.org/pypi/versioneer/ -[travis-image]: -https://img.shields.io/travis/com/python-versioneer/python-versioneer.svg -[travis-url]: https://travis-ci.com/github/python-versioneer/python-versioneer - -""" -# pylint:disable=invalid-name,import-outside-toplevel,missing-function-docstring -# pylint:disable=missing-class-docstring,too-many-branches,too-many-statements -# pylint:disable=raise-missing-from,too-many-lines,too-many-locals,import-error -# pylint:disable=too-few-public-methods,redefined-outer-name,consider-using-with -# pylint:disable=attribute-defined-outside-init,too-many-arguments - -import configparser -import errno -import json -import os -import re -import subprocess -import sys -from typing import Callable, Dict - - -class VersioneerConfig: - """Container for Versioneer configuration parameters.""" - - -def get_root(): - """Get the project root directory. - - We require that all commands are run from the project root, i.e. the - directory that contains setup.py, setup.cfg, and versioneer.py . - """ - root = os.path.realpath(os.path.abspath(os.getcwd())) - setup_py = os.path.join(root, "setup.py") - versioneer_py = os.path.join(root, "versioneer.py") - if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): - # allow 'python path/to/setup.py COMMAND' - root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0]))) - setup_py = os.path.join(root, "setup.py") - versioneer_py = os.path.join(root, "versioneer.py") - if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): - err = ( - "Versioneer was unable to run the project root directory. " - "Versioneer requires setup.py to be executed from " - "its immediate directory (like 'python setup.py COMMAND'), " - "or in a way that lets it use sys.argv[0] to find the root " - "(like 'python path/to/setup.py COMMAND')." - ) - raise VersioneerBadRootError(err) - try: - # Certain runtime workflows (setup.py install/develop in a setuptools - # tree) execute all dependencies in a single python process, so - # "versioneer" may be imported multiple times, and python's shared - # module-import table will cache the first one. So we can't use - # os.path.dirname(__file__), as that will find whichever - # versioneer.py was first imported, even in later projects. - my_path = os.path.realpath(os.path.abspath(__file__)) - me_dir = os.path.normcase(os.path.splitext(my_path)[0]) - vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0]) - if me_dir != vsr_dir: - print( - "Warning: build in %s is using versioneer.py from %s" - % (os.path.dirname(my_path), versioneer_py) - ) - except NameError: - pass - return root - - -def get_config_from_root(root): - """Read the project setup.cfg file to determine Versioneer config.""" - # This might raise OSError (if setup.cfg is missing), or - # configparser.NoSectionError (if it lacks a [versioneer] section), or - # configparser.NoOptionError (if it lacks "VCS="). See the docstring at - # the top of versioneer.py for instructions on writing your setup.cfg . - setup_cfg = os.path.join(root, "setup.cfg") - parser = configparser.ConfigParser() - with open(setup_cfg, "r") as cfg_file: - parser.read_file(cfg_file) - VCS = parser.get("versioneer", "VCS") # mandatory - - # Dict-like interface for non-mandatory entries - section = parser["versioneer"] - - cfg = VersioneerConfig() - cfg.VCS = VCS - cfg.style = section.get("style", "") - cfg.versionfile_source = section.get("versionfile_source") - cfg.versionfile_build = section.get("versionfile_build") - cfg.tag_prefix = section.get("tag_prefix") - if cfg.tag_prefix in ("''", '""'): - cfg.tag_prefix = "" - cfg.parentdir_prefix = section.get("parentdir_prefix") - cfg.verbose = section.get("verbose") - return cfg - - -class NotThisMethod(Exception): - """Exception raised if a method is not valid for the current scenario.""" - - -# these dictionaries contain VCS-specific tools -LONG_VERSION_PY: Dict[str, str] = {} -HANDLERS: Dict[str, Dict[str, Callable]] = {} - - -def register_vcs_handler(vcs, method): # decorator - """Create decorator to mark a method as the handler of a VCS.""" - - def decorate(f): - """Store f in HANDLERS[vcs][method].""" - HANDLERS.setdefault(vcs, {})[method] = f - return f - - return decorate - - -def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None): - """Call the given command(s).""" - assert isinstance(commands, list) - process = None - for command in commands: - try: - dispcmd = str([command] + args) - # remember shell=False, so use git.cmd on windows, not just git - process = subprocess.Popen( - [command] + args, - cwd=cwd, - env=env, - stdout=subprocess.PIPE, - stderr=(subprocess.PIPE if hide_stderr else None), - ) - break - except OSError: - e = sys.exc_info()[1] - if e.errno == errno.ENOENT: - continue - if verbose: - print("unable to run %s" % dispcmd) - print(e) - return None, None - else: - if verbose: - print("unable to find command, tried %s" % (commands,)) - return None, None - stdout = process.communicate()[0].strip().decode() - if process.returncode != 0: - if verbose: - print("unable to run %s (error)" % dispcmd) - print("stdout was %s" % stdout) - return None, process.returncode - return stdout, process.returncode - - -LONG_VERSION_PY[ - "git" -] = r''' -# This file helps to compute a version number in source trees obtained from -# git-archive tarball (such as those provided by githubs download-from-tag -# feature). Distribution tarballs (built by setup.py sdist) and build -# directories (produced by setup.py build) will contain a much shorter file -# that just contains the computed version number. - -# This file is released into the public domain. Generated by -# versioneer-0.21 (https://github.com/python-versioneer/python-versioneer) - -"""Git implementation of _version.py.""" - -import errno -import os -import re -import subprocess -import sys -from typing import Callable, Dict - - -def get_keywords(): - """Get the keywords needed to look up the version information.""" - # these strings will be replaced by git during git-archive. - # setup.py/versioneer.py will grep for the variable names, so they must - # each be defined on a line of their own. _version.py will just call - # get_keywords(). - git_refnames = "%(DOLLAR)sFormat:%%d%(DOLLAR)s" - git_full = "%(DOLLAR)sFormat:%%H%(DOLLAR)s" - git_date = "%(DOLLAR)sFormat:%%ci%(DOLLAR)s" - keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} - return keywords - - -class VersioneerConfig: - """Container for Versioneer configuration parameters.""" - - -def get_config(): - """Create, populate and return the VersioneerConfig() object.""" - # these strings are filled in when 'setup.py versioneer' creates - # _version.py - cfg = VersioneerConfig() - cfg.VCS = "git" - cfg.style = "%(STYLE)s" - cfg.tag_prefix = "%(TAG_PREFIX)s" - cfg.parentdir_prefix = "%(PARENTDIR_PREFIX)s" - cfg.versionfile_source = "%(VERSIONFILE_SOURCE)s" - cfg.verbose = False - return cfg - - -class NotThisMethod(Exception): - """Exception raised if a method is not valid for the current scenario.""" - - -LONG_VERSION_PY: Dict[str, str] = {} -HANDLERS: Dict[str, Dict[str, Callable]] = {} - - -def register_vcs_handler(vcs, method): # decorator - """Create decorator to mark a method as the handler of a VCS.""" - def decorate(f): - """Store f in HANDLERS[vcs][method].""" - if vcs not in HANDLERS: - HANDLERS[vcs] = {} - HANDLERS[vcs][method] = f - return f - return decorate - - -def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, - env=None): - """Call the given command(s).""" - assert isinstance(commands, list) - process = None - for command in commands: - try: - dispcmd = str([command] + args) - # remember shell=False, so use git.cmd on windows, not just git - process = subprocess.Popen([command] + args, cwd=cwd, env=env, - stdout=subprocess.PIPE, - stderr=(subprocess.PIPE if hide_stderr - else None)) - break - except OSError: - e = sys.exc_info()[1] - if e.errno == errno.ENOENT: - continue - if verbose: - print("unable to run %%s" %% dispcmd) - print(e) - return None, None - else: - if verbose: - print("unable to find command, tried %%s" %% (commands,)) - return None, None - stdout = process.communicate()[0].strip().decode() - if process.returncode != 0: - if verbose: - print("unable to run %%s (error)" %% dispcmd) - print("stdout was %%s" %% stdout) - return None, process.returncode - return stdout, process.returncode - - -def versions_from_parentdir(parentdir_prefix, root, verbose): - """Try to determine the version from the parent directory name. - - Source tarballs conventionally unpack into a directory that includes both - the project name and a version string. We will also support searching up - two directory levels for an appropriately named parent directory - """ - rootdirs = [] - - for _ in range(3): - dirname = os.path.basename(root) - if dirname.startswith(parentdir_prefix): - return {"version": dirname[len(parentdir_prefix):], - "full-revisionid": None, - "dirty": False, "error": None, "date": None} - rootdirs.append(root) - root = os.path.dirname(root) # up a level - - if verbose: - print("Tried directories %%s but none started with prefix %%s" %% - (str(rootdirs), parentdir_prefix)) - raise NotThisMethod("rootdir doesn't start with parentdir_prefix") - - -@register_vcs_handler("git", "get_keywords") -def git_get_keywords(versionfile_abs): - """Extract version information from the given file.""" - # the code embedded in _version.py can just fetch the value of these - # keywords. When used from setup.py, we don't want to import _version.py, - # so we do it with a regexp instead. This function is not used from - # _version.py. - keywords = {} - try: - with open(versionfile_abs, "r") as fobj: - for line in fobj: - if line.strip().startswith("git_refnames ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["refnames"] = mo.group(1) - if line.strip().startswith("git_full ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["full"] = mo.group(1) - if line.strip().startswith("git_date ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["date"] = mo.group(1) - except OSError: - pass - return keywords - - -@register_vcs_handler("git", "keywords") -def git_versions_from_keywords(keywords, tag_prefix, verbose): - """Get version information from git keywords.""" - if "refnames" not in keywords: - raise NotThisMethod("Short version file found") - date = keywords.get("date") - if date is not None: - # Use only the last line. Previous lines may contain GPG signature - # information. - date = date.splitlines()[-1] - - # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant - # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601 - # -like" string, which we must then edit to make compliant), because - # it's been around since git-1.5.3, and it's too difficult to - # discover which version we're using, or to work around using an - # older one. - date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - refnames = keywords["refnames"].strip() - if refnames.startswith("$Format"): - if verbose: - print("keywords are unexpanded, not using") - raise NotThisMethod("unexpanded keywords, not a git-archive tarball") - refs = {r.strip() for r in refnames.strip("()").split(",")} - # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of - # just "foo-1.0". If we see a "tag: " prefix, prefer those. - TAG = "tag: " - tags = {r[len(TAG):] for r in refs if r.startswith(TAG)} - if not tags: - # Either we're using git < 1.8.3, or there really are no tags. We use - # a heuristic: assume all version tags have a digit. The old git %%d - # expansion behaves like git log --decorate=short and strips out the - # refs/heads/ and refs/tags/ prefixes that would let us distinguish - # between branches and tags. By ignoring refnames without digits, we - # filter out many common branch names like "release" and - # "stabilization", as well as "HEAD" and "master". - tags = {r for r in refs if re.search(r'\d', r)} - if verbose: - print("discarding '%%s', no digits" %% ",".join(refs - tags)) - if verbose: - print("likely tags: %%s" %% ",".join(sorted(tags))) - for ref in sorted(tags): - # sorting will prefer e.g. "2.0" over "2.0rc1" - if ref.startswith(tag_prefix): - r = ref[len(tag_prefix):] - # Filter out refs that exactly match prefix or that don't start - # with a number once the prefix is stripped (mostly a concern - # when prefix is '') - if not re.match(r'\d', r): - continue - if verbose: - print("picking %%s" %% r) - return {"version": r, - "full-revisionid": keywords["full"].strip(), - "dirty": False, "error": None, - "date": date} - # no suitable tags, so version is "0+unknown", but full hex is still there - if verbose: - print("no suitable tags, using unknown + full revision id") - return {"version": "0+unknown", - "full-revisionid": keywords["full"].strip(), - "dirty": False, "error": "no suitable tags", "date": None} - - -@register_vcs_handler("git", "pieces_from_vcs") -def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command): - """Get version from 'git describe' in the root of the source tree. - - This only gets called if the git-archive 'subst' keywords were *not* - expanded, and _version.py hasn't already been rewritten with a short - version string, meaning we're inside a checked out source tree. - """ - GITS = ["git"] - TAG_PREFIX_REGEX = "*" - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - TAG_PREFIX_REGEX = r"\*" - - _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, - hide_stderr=True) - if rc != 0: - if verbose: - print("Directory %%s not under git control" %% root) - raise NotThisMethod("'git rev-parse --git-dir' returned error") - - # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] - # if there isn't one, this yields HEX[-dirty] (no NUM) - describe_out, rc = runner(GITS, ["describe", "--tags", "--dirty", - "--always", "--long", - "--match", - "%%s%%s" %% (tag_prefix, TAG_PREFIX_REGEX)], - cwd=root) - # --long was added in git-1.5.5 - if describe_out is None: - raise NotThisMethod("'git describe' failed") - describe_out = describe_out.strip() - full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) - if full_out is None: - raise NotThisMethod("'git rev-parse' failed") - full_out = full_out.strip() - - pieces = {} - pieces["long"] = full_out - pieces["short"] = full_out[:7] # maybe improved later - pieces["error"] = None - - branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], - cwd=root) - # --abbrev-ref was added in git-1.6.3 - if rc != 0 or branch_name is None: - raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") - branch_name = branch_name.strip() - - if branch_name == "HEAD": - # If we aren't exactly on a branch, pick a branch which represents - # the current commit. If all else fails, we are on a branchless - # commit. - branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) - # --contains was added in git-1.5.4 - if rc != 0 or branches is None: - raise NotThisMethod("'git branch --contains' returned error") - branches = branches.split("\n") - - # Remove the first line if we're running detached - if "(" in branches[0]: - branches.pop(0) - - # Strip off the leading "* " from the list of branches. - branches = [branch[2:] for branch in branches] - if "master" in branches: - branch_name = "master" - elif not branches: - branch_name = None - else: - # Pick the first branch that is returned. Good or bad. - branch_name = branches[0] - - pieces["branch"] = branch_name - - # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] - # TAG might have hyphens. - git_describe = describe_out - - # look for -dirty suffix - dirty = git_describe.endswith("-dirty") - pieces["dirty"] = dirty - if dirty: - git_describe = git_describe[:git_describe.rindex("-dirty")] - - # now we have TAG-NUM-gHEX or HEX - - if "-" in git_describe: - # TAG-NUM-gHEX - mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) - if not mo: - # unparsable. Maybe git-describe is misbehaving? - pieces["error"] = ("unable to parse git-describe output: '%%s'" - %% describe_out) - return pieces - - # tag - full_tag = mo.group(1) - if not full_tag.startswith(tag_prefix): - if verbose: - fmt = "tag '%%s' doesn't start with prefix '%%s'" - print(fmt %% (full_tag, tag_prefix)) - pieces["error"] = ("tag '%%s' doesn't start with prefix '%%s'" - %% (full_tag, tag_prefix)) - return pieces - pieces["closest-tag"] = full_tag[len(tag_prefix):] - - # distance: number of commits since tag - pieces["distance"] = int(mo.group(2)) - - # commit: short hex revision ID - pieces["short"] = mo.group(3) - - else: - # HEX: no tags - pieces["closest-tag"] = None - count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root) - pieces["distance"] = int(count_out) # total number of commits - - # commit date: see ISO-8601 comment in git_versions_from_keywords() - date = runner(GITS, ["show", "-s", "--format=%%ci", "HEAD"], cwd=root)[0].strip() - # Use only the last line. Previous lines may contain GPG signature - # information. - date = date.splitlines()[-1] - pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - - return pieces - - -def plus_or_dot(pieces): - """Return a + if we don't already have one, else return a .""" - if "+" in pieces.get("closest-tag", ""): - return "." - return "+" - - -def render_pep440(pieces): - """Build up version string, with post-release "local version identifier". - - Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you - get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty - - Exceptions: - 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += plus_or_dot(pieces) - rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0+untagged.%%d.g%%s" %% (pieces["distance"], - pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_branch(pieces): - """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . - - The ".dev0" means not master branch. Note that .dev0 sorts backwards - (a feature branch will appear "older" than the master branch). - - Exceptions: - 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - if pieces["branch"] != "master": - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0" - if pieces["branch"] != "master": - rendered += ".dev0" - rendered += "+untagged.%%d.g%%s" %% (pieces["distance"], - pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def pep440_split_post(ver): - """Split pep440 version string at the post-release segment. - - Returns the release segments before the post-release and the - post-release version number (or -1 if no post-release segment is present). - """ - vc = str.split(ver, ".post") - return vc[0], int(vc[1] or 0) if len(vc) == 2 else None - - -def render_pep440_pre(pieces): - """TAG[.postN.devDISTANCE] -- No -dirty. - - Exceptions: - 1: no tags. 0.post0.devDISTANCE - """ - if pieces["closest-tag"]: - if pieces["distance"]: - # update the post release segment - tag_version, post_version = pep440_split_post(pieces["closest-tag"]) - rendered = tag_version - if post_version is not None: - rendered += ".post%%d.dev%%d" %% (post_version+1, pieces["distance"]) - else: - rendered += ".post0.dev%%d" %% (pieces["distance"]) - else: - # no commits, use the tag as the version - rendered = pieces["closest-tag"] - else: - # exception #1 - rendered = "0.post0.dev%%d" %% pieces["distance"] - return rendered - - -def render_pep440_post(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX] . - - The ".dev0" means dirty. Note that .dev0 sorts backwards - (a dirty tree will appear "older" than the corresponding clean one), - but you shouldn't be releasing software with -dirty anyways. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%%d" %% pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%%s" %% pieces["short"] - else: - # exception #1 - rendered = "0.post%%d" %% pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += "+g%%s" %% pieces["short"] - return rendered - - -def render_pep440_post_branch(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . - - The ".dev0" means not master branch. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%%d" %% pieces["distance"] - if pieces["branch"] != "master": - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%%s" %% pieces["short"] - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0.post%%d" %% pieces["distance"] - if pieces["branch"] != "master": - rendered += ".dev0" - rendered += "+g%%s" %% pieces["short"] - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_old(pieces): - """TAG[.postDISTANCE[.dev0]] . - - The ".dev0" means dirty. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%%d" %% pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - else: - # exception #1 - rendered = "0.post%%d" %% pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - return rendered - - -def render_git_describe(pieces): - """TAG[-DISTANCE-gHEX][-dirty]. - - Like 'git describe --tags --dirty --always'. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render_git_describe_long(pieces): - """TAG-DISTANCE-gHEX[-dirty]. - - Like 'git describe --tags --dirty --always -long'. - The distance/hash is unconditional. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render(pieces, style): - """Render the given version pieces into the requested style.""" - if pieces["error"]: - return {"version": "unknown", - "full-revisionid": pieces.get("long"), - "dirty": None, - "error": pieces["error"], - "date": None} - - if not style or style == "default": - style = "pep440" # the default - - if style == "pep440": - rendered = render_pep440(pieces) - elif style == "pep440-branch": - rendered = render_pep440_branch(pieces) - elif style == "pep440-pre": - rendered = render_pep440_pre(pieces) - elif style == "pep440-post": - rendered = render_pep440_post(pieces) - elif style == "pep440-post-branch": - rendered = render_pep440_post_branch(pieces) - elif style == "pep440-old": - rendered = render_pep440_old(pieces) - elif style == "git-describe": - rendered = render_git_describe(pieces) - elif style == "git-describe-long": - rendered = render_git_describe_long(pieces) - else: - raise ValueError("unknown style '%%s'" %% style) - - return {"version": rendered, "full-revisionid": pieces["long"], - "dirty": pieces["dirty"], "error": None, - "date": pieces.get("date")} - - -def get_versions(): - """Get version information or return default if unable to do so.""" - # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have - # __file__, we can work backwards from there to the root. Some - # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which - # case we can only use expanded keywords. - - cfg = get_config() - verbose = cfg.verbose - - try: - return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, - verbose) - except NotThisMethod: - pass - - try: - root = os.path.realpath(__file__) - # versionfile_source is the relative path from the top of the source - # tree (where the .git directory might live) to this file. Invert - # this to find the root from __file__. - for _ in cfg.versionfile_source.split('/'): - root = os.path.dirname(root) - except NameError: - return {"version": "0+unknown", "full-revisionid": None, - "dirty": None, - "error": "unable to find root of source tree", - "date": None} - - try: - pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) - return render(pieces, cfg.style) - except NotThisMethod: - pass - - try: - if cfg.parentdir_prefix: - return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) - except NotThisMethod: - pass - - return {"version": "0+unknown", "full-revisionid": None, - "dirty": None, - "error": "unable to compute version", "date": None} -''' - - -@register_vcs_handler("git", "get_keywords") -def git_get_keywords(versionfile_abs): - """Extract version information from the given file.""" - # the code embedded in _version.py can just fetch the value of these - # keywords. When used from setup.py, we don't want to import _version.py, - # so we do it with a regexp instead. This function is not used from - # _version.py. - keywords = {} - try: - with open(versionfile_abs, "r") as fobj: - for line in fobj: - if line.strip().startswith("git_refnames ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["refnames"] = mo.group(1) - if line.strip().startswith("git_full ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["full"] = mo.group(1) - if line.strip().startswith("git_date ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["date"] = mo.group(1) - except OSError: - pass - return keywords - - -@register_vcs_handler("git", "keywords") -def git_versions_from_keywords(keywords, tag_prefix, verbose): - """Get version information from git keywords.""" - if "refnames" not in keywords: - raise NotThisMethod("Short version file found") - date = keywords.get("date") - if date is not None: - # Use only the last line. Previous lines may contain GPG signature - # information. - date = date.splitlines()[-1] - - # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant - # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 - # -like" string, which we must then edit to make compliant), because - # it's been around since git-1.5.3, and it's too difficult to - # discover which version we're using, or to work around using an - # older one. - date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - refnames = keywords["refnames"].strip() - if refnames.startswith("$Format"): - if verbose: - print("keywords are unexpanded, not using") - raise NotThisMethod("unexpanded keywords, not a git-archive tarball") - refs = {r.strip() for r in refnames.strip("()").split(",")} - # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of - # just "foo-1.0". If we see a "tag: " prefix, prefer those. - TAG = "tag: " - tags = {r[len(TAG) :] for r in refs if r.startswith(TAG)} - if not tags: - # Either we're using git < 1.8.3, or there really are no tags. We use - # a heuristic: assume all version tags have a digit. The old git %d - # expansion behaves like git log --decorate=short and strips out the - # refs/heads/ and refs/tags/ prefixes that would let us distinguish - # between branches and tags. By ignoring refnames without digits, we - # filter out many common branch names like "release" and - # "stabilization", as well as "HEAD" and "master". - tags = {r for r in refs if re.search(r"\d", r)} - if verbose: - print("discarding '%s', no digits" % ",".join(refs - tags)) - if verbose: - print("likely tags: %s" % ",".join(sorted(tags))) - for ref in sorted(tags): - # sorting will prefer e.g. "2.0" over "2.0rc1" - if ref.startswith(tag_prefix): - r = ref[len(tag_prefix) :] - # Filter out refs that exactly match prefix or that don't start - # with a number once the prefix is stripped (mostly a concern - # when prefix is '') - if not re.match(r"\d", r): - continue - if verbose: - print("picking %s" % r) - return { - "version": r, - "full-revisionid": keywords["full"].strip(), - "dirty": False, - "error": None, - "date": date, - } - # no suitable tags, so version is "0+unknown", but full hex is still there - if verbose: - print("no suitable tags, using unknown + full revision id") - return { - "version": "0+unknown", - "full-revisionid": keywords["full"].strip(), - "dirty": False, - "error": "no suitable tags", - "date": None, - } - - -@register_vcs_handler("git", "pieces_from_vcs") -def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command): - """Get version from 'git describe' in the root of the source tree. - - This only gets called if the git-archive 'subst' keywords were *not* - expanded, and _version.py hasn't already been rewritten with a short - version string, meaning we're inside a checked out source tree. - """ - GITS = ["git"] - TAG_PREFIX_REGEX = "*" - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - TAG_PREFIX_REGEX = r"\*" - - _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True) - if rc != 0: - if verbose: - print("Directory %s not under git control" % root) - raise NotThisMethod("'git rev-parse --git-dir' returned error") - - # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] - # if there isn't one, this yields HEX[-dirty] (no NUM) - describe_out, rc = runner( - GITS, - [ - "describe", - "--tags", - "--dirty", - "--always", - "--long", - "--match", - "%s%s" % (tag_prefix, TAG_PREFIX_REGEX), - ], - cwd=root, - ) - # --long was added in git-1.5.5 - if describe_out is None: - raise NotThisMethod("'git describe' failed") - describe_out = describe_out.strip() - full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) - if full_out is None: - raise NotThisMethod("'git rev-parse' failed") - full_out = full_out.strip() - - pieces = {} - pieces["long"] = full_out - pieces["short"] = full_out[:7] # maybe improved later - pieces["error"] = None - - branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], cwd=root) - # --abbrev-ref was added in git-1.6.3 - if rc != 0 or branch_name is None: - raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") - branch_name = branch_name.strip() - - if branch_name == "HEAD": - # If we aren't exactly on a branch, pick a branch which represents - # the current commit. If all else fails, we are on a branchless - # commit. - branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) - # --contains was added in git-1.5.4 - if rc != 0 or branches is None: - raise NotThisMethod("'git branch --contains' returned error") - branches = branches.split("\n") - - # Remove the first line if we're running detached - if "(" in branches[0]: - branches.pop(0) - - # Strip off the leading "* " from the list of branches. - branches = [branch[2:] for branch in branches] - if "master" in branches: - branch_name = "master" - elif not branches: - branch_name = None - else: - # Pick the first branch that is returned. Good or bad. - branch_name = branches[0] - - pieces["branch"] = branch_name - - # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] - # TAG might have hyphens. - git_describe = describe_out - - # look for -dirty suffix - dirty = git_describe.endswith("-dirty") - pieces["dirty"] = dirty - if dirty: - git_describe = git_describe[: git_describe.rindex("-dirty")] - - # now we have TAG-NUM-gHEX or HEX - - if "-" in git_describe: - # TAG-NUM-gHEX - mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe) - if not mo: - # unparsable. Maybe git-describe is misbehaving? - pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out - return pieces - - # tag - full_tag = mo.group(1) - if not full_tag.startswith(tag_prefix): - if verbose: - fmt = "tag '%s' doesn't start with prefix '%s'" - print(fmt % (full_tag, tag_prefix)) - pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % ( - full_tag, - tag_prefix, - ) - return pieces - pieces["closest-tag"] = full_tag[len(tag_prefix) :] - - # distance: number of commits since tag - pieces["distance"] = int(mo.group(2)) - - # commit: short hex revision ID - pieces["short"] = mo.group(3) - - else: - # HEX: no tags - pieces["closest-tag"] = None - count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root) - pieces["distance"] = int(count_out) # total number of commits - - # commit date: see ISO-8601 comment in git_versions_from_keywords() - date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip() - # Use only the last line. Previous lines may contain GPG signature - # information. - date = date.splitlines()[-1] - pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - - return pieces - - -def do_vcs_install(manifest_in, versionfile_source, ipy): - """Git-specific installation logic for Versioneer. - - For Git, this means creating/changing .gitattributes to mark _version.py - for export-subst keyword substitution. - """ - GITS = ["git"] - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - files = [manifest_in, versionfile_source] - if ipy: - files.append(ipy) - try: - my_path = __file__ - if my_path.endswith(".pyc") or my_path.endswith(".pyo"): - my_path = os.path.splitext(my_path)[0] + ".py" - versioneer_file = os.path.relpath(my_path) - except NameError: - versioneer_file = "versioneer.py" - files.append(versioneer_file) - present = False - try: - with open(".gitattributes", "r") as fobj: - for line in fobj: - if line.strip().startswith(versionfile_source): - if "export-subst" in line.strip().split()[1:]: - present = True - break - except OSError: - pass - if not present: - with open(".gitattributes", "a+") as fobj: - fobj.write(f"{versionfile_source} export-subst\n") - files.append(".gitattributes") - run_command(GITS, ["add", "--"] + files) - - -def versions_from_parentdir(parentdir_prefix, root, verbose): - """Try to determine the version from the parent directory name. - - Source tarballs conventionally unpack into a directory that includes both - the project name and a version string. We will also support searching up - two directory levels for an appropriately named parent directory - """ - rootdirs = [] - - for _ in range(3): - dirname = os.path.basename(root) - if dirname.startswith(parentdir_prefix): - return { - "version": dirname[len(parentdir_prefix) :], - "full-revisionid": None, - "dirty": False, - "error": None, - "date": None, - } - rootdirs.append(root) - root = os.path.dirname(root) # up a level - - if verbose: - print( - "Tried directories %s but none started with prefix %s" - % (str(rootdirs), parentdir_prefix) - ) - raise NotThisMethod("rootdir doesn't start with parentdir_prefix") - - -SHORT_VERSION_PY = """ -# This file was generated by 'versioneer.py' (0.21) from -# revision-control system data, or from the parent directory name of an -# unpacked source archive. Distribution tarballs contain a pre-generated copy -# of this file. - -import json - -version_json = ''' -%s -''' # END VERSION_JSON - - -def get_versions(): - return json.loads(version_json) -""" - - -def versions_from_file(filename): - """Try to determine the version from _version.py if present.""" - try: - with open(filename) as f: - contents = f.read() - except OSError: - raise NotThisMethod("unable to read _version.py") - mo = re.search( - r"version_json = '''\n(.*)''' # END VERSION_JSON", contents, re.M | re.S - ) - if not mo: - mo = re.search( - r"version_json = '''\r\n(.*)''' # END VERSION_JSON", contents, re.M | re.S - ) - if not mo: - raise NotThisMethod("no version_json in _version.py") - return json.loads(mo.group(1)) - - -def write_to_version_file(filename, versions): - """Write the given version number to the given _version.py file.""" - os.unlink(filename) - contents = json.dumps(versions, sort_keys=True, indent=1, separators=(",", ": ")) - with open(filename, "w") as f: - f.write(SHORT_VERSION_PY % contents) - - print("set %s to '%s'" % (filename, versions["version"])) - - -def plus_or_dot(pieces): - """Return a + if we don't already have one, else return a .""" - if "+" in pieces.get("closest-tag", ""): - return "." - return "+" - - -def render_pep440(pieces): - """Build up version string, with post-release "local version identifier". - - Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you - get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty - - Exceptions: - 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += plus_or_dot(pieces) - rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_branch(pieces): - """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . - - The ".dev0" means not master branch. Note that .dev0 sorts backwards - (a feature branch will appear "older" than the master branch). - - Exceptions: - 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - if pieces["branch"] != "master": - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0" - if pieces["branch"] != "master": - rendered += ".dev0" - rendered += "+untagged.%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def pep440_split_post(ver): - """Split pep440 version string at the post-release segment. - - Returns the release segments before the post-release and the - post-release version number (or -1 if no post-release segment is present). - """ - vc = str.split(ver, ".post") - return vc[0], int(vc[1] or 0) if len(vc) == 2 else None - - -def render_pep440_pre(pieces): - """TAG[.postN.devDISTANCE] -- No -dirty. - - Exceptions: - 1: no tags. 0.post0.devDISTANCE - """ - if pieces["closest-tag"]: - if pieces["distance"]: - # update the post release segment - tag_version, post_version = pep440_split_post(pieces["closest-tag"]) - rendered = tag_version - if post_version is not None: - rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"]) - else: - rendered += ".post0.dev%d" % (pieces["distance"]) - else: - # no commits, use the tag as the version - rendered = pieces["closest-tag"] - else: - # exception #1 - rendered = "0.post0.dev%d" % pieces["distance"] - return rendered - - -def render_pep440_post(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX] . - - The ".dev0" means dirty. Note that .dev0 sorts backwards - (a dirty tree will appear "older" than the corresponding clean one), - but you shouldn't be releasing software with -dirty anyways. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%s" % pieces["short"] - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += "+g%s" % pieces["short"] - return rendered - - -def render_pep440_post_branch(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . - - The ".dev0" means not master branch. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["branch"] != "master": - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%s" % pieces["short"] - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["branch"] != "master": - rendered += ".dev0" - rendered += "+g%s" % pieces["short"] - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_old(pieces): - """TAG[.postDISTANCE[.dev0]] . - - The ".dev0" means dirty. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - return rendered - - -def render_git_describe(pieces): - """TAG[-DISTANCE-gHEX][-dirty]. - - Like 'git describe --tags --dirty --always'. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render_git_describe_long(pieces): - """TAG-DISTANCE-gHEX[-dirty]. - - Like 'git describe --tags --dirty --always -long'. - The distance/hash is unconditional. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render(pieces, style): - """Render the given version pieces into the requested style.""" - if pieces["error"]: - return { - "version": "unknown", - "full-revisionid": pieces.get("long"), - "dirty": None, - "error": pieces["error"], - "date": None, - } - - if not style or style == "default": - style = "pep440" # the default - - if style == "pep440": - rendered = render_pep440(pieces) - elif style == "pep440-branch": - rendered = render_pep440_branch(pieces) - elif style == "pep440-pre": - rendered = render_pep440_pre(pieces) - elif style == "pep440-post": - rendered = render_pep440_post(pieces) - elif style == "pep440-post-branch": - rendered = render_pep440_post_branch(pieces) - elif style == "pep440-old": - rendered = render_pep440_old(pieces) - elif style == "git-describe": - rendered = render_git_describe(pieces) - elif style == "git-describe-long": - rendered = render_git_describe_long(pieces) - else: - raise ValueError("unknown style '%s'" % style) - - return { - "version": rendered, - "full-revisionid": pieces["long"], - "dirty": pieces["dirty"], - "error": None, - "date": pieces.get("date"), - } - - -class VersioneerBadRootError(Exception): - """The project root directory is unknown or missing key files.""" - - -def get_versions(verbose=False): - """Get the project version from whatever source is available. - - Returns dict with two keys: 'version' and 'full'. - """ - if "versioneer" in sys.modules: - # see the discussion in cmdclass.py:get_cmdclass() - del sys.modules["versioneer"] - - root = get_root() - cfg = get_config_from_root(root) - - assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg" - handlers = HANDLERS.get(cfg.VCS) - assert handlers, "unrecognized VCS '%s'" % cfg.VCS - verbose = verbose or cfg.verbose - assert ( - cfg.versionfile_source is not None - ), "please set versioneer.versionfile_source" - assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix" - - versionfile_abs = os.path.join(root, cfg.versionfile_source) - - # extract version from first of: _version.py, VCS command (e.g. 'git - # describe'), parentdir. This is meant to work for developers using a - # source checkout, for users of a tarball created by 'setup.py sdist', - # and for users of a tarball/zipball created by 'git archive' or github's - # download-from-tag feature or the equivalent in other VCSes. - - get_keywords_f = handlers.get("get_keywords") - from_keywords_f = handlers.get("keywords") - if get_keywords_f and from_keywords_f: - try: - keywords = get_keywords_f(versionfile_abs) - ver = from_keywords_f(keywords, cfg.tag_prefix, verbose) - if verbose: - print("got version from expanded keyword %s" % ver) - return ver - except NotThisMethod: - pass - - try: - ver = versions_from_file(versionfile_abs) - if verbose: - print("got version from file %s %s" % (versionfile_abs, ver)) - return ver - except NotThisMethod: - pass - - from_vcs_f = handlers.get("pieces_from_vcs") - if from_vcs_f: - try: - pieces = from_vcs_f(cfg.tag_prefix, root, verbose) - ver = render(pieces, cfg.style) - if verbose: - print("got version from VCS %s" % ver) - return ver - except NotThisMethod: - pass - - try: - if cfg.parentdir_prefix: - ver = versions_from_parentdir(cfg.parentdir_prefix, root, verbose) - if verbose: - print("got version from parentdir %s" % ver) - return ver - except NotThisMethod: - pass - - if verbose: - print("unable to compute version") - - return { - "version": "0+unknown", - "full-revisionid": None, - "dirty": None, - "error": "unable to compute version", - "date": None, - } - - -def get_version(): - """Get the short version string for this project.""" - return get_versions()["version"] - - -def get_cmdclass(cmdclass=None): - """Get the custom setuptools/distutils subclasses used by Versioneer. - - If the package uses a different cmdclass (e.g. one from numpy), it - should be provide as an argument. - """ - if "versioneer" in sys.modules: - del sys.modules["versioneer"] - # this fixes the "python setup.py develop" case (also 'install' and - # 'easy_install .'), in which subdependencies of the main project are - # built (using setup.py bdist_egg) in the same python process. Assume - # a main project A and a dependency B, which use different versions - # of Versioneer. A's setup.py imports A's Versioneer, leaving it in - # sys.modules by the time B's setup.py is executed, causing B to run - # with the wrong versioneer. Setuptools wraps the sub-dep builds in a - # sandbox that restores sys.modules to it's pre-build state, so the - # parent is protected against the child's "import versioneer". By - # removing ourselves from sys.modules here, before the child build - # happens, we protect the child from the parent's versioneer too. - # Also see https://github.com/python-versioneer/python-versioneer/issues/52 - - cmds = {} if cmdclass is None else cmdclass.copy() - - # we add "version" to both distutils and setuptools - from distutils.core import Command - - class cmd_version(Command): - description = "report generated version string" - user_options = [] - boolean_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - vers = get_versions(verbose=True) - print("Version: %s" % vers["version"]) - print(" full-revisionid: %s" % vers.get("full-revisionid")) - print(" dirty: %s" % vers.get("dirty")) - print(" date: %s" % vers.get("date")) - if vers["error"]: - print(" error: %s" % vers["error"]) - - cmds["version"] = cmd_version - - # we override "build_py" in both distutils and setuptools - # - # most invocation pathways end up running build_py: - # distutils/build -> build_py - # distutils/install -> distutils/build ->.. - # setuptools/bdist_wheel -> distutils/install ->.. - # setuptools/bdist_egg -> distutils/install_lib -> build_py - # setuptools/install -> bdist_egg ->.. - # setuptools/develop -> ? - # pip install: - # copies source tree to a tempdir before running egg_info/etc - # if .git isn't copied too, 'git describe' will fail - # then does setup.py bdist_wheel, or sometimes setup.py install - # setup.py egg_info -> ? - - # we override different "build_py" commands for both environments - if "build_py" in cmds: - _build_py = cmds["build_py"] - elif "setuptools" in sys.modules: - from setuptools.command.build_py import build_py as _build_py - else: - from distutils.command.build_py import build_py as _build_py - - class cmd_build_py(_build_py): - def run(self): - root = get_root() - cfg = get_config_from_root(root) - versions = get_versions() - _build_py.run(self) - # now locate _version.py in the new build/ directory and replace - # it with an updated value - if cfg.versionfile_build: - target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) - print("UPDATING %s" % target_versionfile) - write_to_version_file(target_versionfile, versions) - - cmds["build_py"] = cmd_build_py - - if "build_ext" in cmds: - _build_ext = cmds["build_ext"] - elif "setuptools" in sys.modules: - from setuptools.command.build_ext import build_ext as _build_ext - else: - from distutils.command.build_ext import build_ext as _build_ext - - class cmd_build_ext(_build_ext): - def run(self): - root = get_root() - cfg = get_config_from_root(root) - versions = get_versions() - _build_ext.run(self) - if self.inplace: - # build_ext --inplace will only build extensions in - # build/lib<..> dir with no _version.py to write to. - # As in place builds will already have a _version.py - # in the module dir, we do not need to write one. - return - # now locate _version.py in the new build/ directory and replace - # it with an updated value - target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build) - print("UPDATING %s" % target_versionfile) - write_to_version_file(target_versionfile, versions) - - cmds["build_ext"] = cmd_build_ext - - if "cx_Freeze" in sys.modules: # cx_freeze enabled? - from cx_Freeze.dist import build_exe as _build_exe - - # nczeczulin reports that py2exe won't like the pep440-style string - # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g. - # setup(console=[{ - # "version": versioneer.get_version().split("+", 1)[0], # FILEVERSION - # "product_version": versioneer.get_version(), - # ... - - class cmd_build_exe(_build_exe): - def run(self): - root = get_root() - cfg = get_config_from_root(root) - versions = get_versions() - target_versionfile = cfg.versionfile_source - print("UPDATING %s" % target_versionfile) - write_to_version_file(target_versionfile, versions) - - _build_exe.run(self) - os.unlink(target_versionfile) - with open(cfg.versionfile_source, "w") as f: - LONG = LONG_VERSION_PY[cfg.VCS] - f.write( - LONG - % { - "DOLLAR": "$", - "STYLE": cfg.style, - "TAG_PREFIX": cfg.tag_prefix, - "PARENTDIR_PREFIX": cfg.parentdir_prefix, - "VERSIONFILE_SOURCE": cfg.versionfile_source, - } - ) - - cmds["build_exe"] = cmd_build_exe - del cmds["build_py"] - - if "py2exe" in sys.modules: # py2exe enabled? - from py2exe.distutils_buildexe import py2exe as _py2exe - - class cmd_py2exe(_py2exe): - def run(self): - root = get_root() - cfg = get_config_from_root(root) - versions = get_versions() - target_versionfile = cfg.versionfile_source - print("UPDATING %s" % target_versionfile) - write_to_version_file(target_versionfile, versions) - - _py2exe.run(self) - os.unlink(target_versionfile) - with open(cfg.versionfile_source, "w") as f: - LONG = LONG_VERSION_PY[cfg.VCS] - f.write( - LONG - % { - "DOLLAR": "$", - "STYLE": cfg.style, - "TAG_PREFIX": cfg.tag_prefix, - "PARENTDIR_PREFIX": cfg.parentdir_prefix, - "VERSIONFILE_SOURCE": cfg.versionfile_source, - } - ) - - cmds["py2exe"] = cmd_py2exe - - # we override different "sdist" commands for both environments - if "sdist" in cmds: - _sdist = cmds["sdist"] - elif "setuptools" in sys.modules: - from setuptools.command.sdist import sdist as _sdist - else: - from distutils.command.sdist import sdist as _sdist - - class cmd_sdist(_sdist): - def run(self): - versions = get_versions() - self._versioneer_generated_versions = versions - # unless we update this, the command will keep using the old - # version - self.distribution.metadata.version = versions["version"] - return _sdist.run(self) - - def make_release_tree(self, base_dir, files): - root = get_root() - cfg = get_config_from_root(root) - _sdist.make_release_tree(self, base_dir, files) - # now locate _version.py in the new base_dir directory - # (remembering that it may be a hardlink) and replace it with an - # updated value - target_versionfile = os.path.join(base_dir, cfg.versionfile_source) - print("UPDATING %s" % target_versionfile) - write_to_version_file( - target_versionfile, self._versioneer_generated_versions - ) - - cmds["sdist"] = cmd_sdist - - return cmds - - -CONFIG_ERROR = """ -setup.cfg is missing the necessary Versioneer configuration. You need -a section like: - - [versioneer] - VCS = git - style = pep440 - versionfile_source = src/myproject/_version.py - versionfile_build = myproject/_version.py - tag_prefix = - parentdir_prefix = myproject- - -You will also need to edit your setup.py to use the results: - - import versioneer - setup(version=versioneer.get_version(), - cmdclass=versioneer.get_cmdclass(), ...) - -Please read the docstring in ./versioneer.py for configuration instructions, -edit setup.cfg, and re-run the installer or 'python versioneer.py setup'. -""" - -SAMPLE_CONFIG = """ -# See the docstring in versioneer.py for instructions. Note that you must -# re-run 'versioneer.py setup' after changing this section, and commit the -# resulting files. - -[versioneer] -#VCS = git -#style = pep440 -#versionfile_source = -#versionfile_build = -#tag_prefix = -#parentdir_prefix = - -""" - -OLD_SNIPPET = """ -from ._version import get_versions -__version__ = get_versions()['version'] -del get_versions -""" - -INIT_PY_SNIPPET = """ -from . import {0} -__version__ = {0}.get_versions()['version'] -""" - - -def do_setup(): - """Do main VCS-independent setup function for installing Versioneer.""" - root = get_root() - try: - cfg = get_config_from_root(root) - except (OSError, configparser.NoSectionError, configparser.NoOptionError) as e: - if isinstance(e, (OSError, configparser.NoSectionError)): - print("Adding sample versioneer config to setup.cfg", file=sys.stderr) - with open(os.path.join(root, "setup.cfg"), "a") as f: - f.write(SAMPLE_CONFIG) - print(CONFIG_ERROR, file=sys.stderr) - return 1 - - print(" creating %s" % cfg.versionfile_source) - with open(cfg.versionfile_source, "w") as f: - LONG = LONG_VERSION_PY[cfg.VCS] - f.write( - LONG - % { - "DOLLAR": "$", - "STYLE": cfg.style, - "TAG_PREFIX": cfg.tag_prefix, - "PARENTDIR_PREFIX": cfg.parentdir_prefix, - "VERSIONFILE_SOURCE": cfg.versionfile_source, - } - ) - - ipy = os.path.join(os.path.dirname(cfg.versionfile_source), "__init__.py") - if os.path.exists(ipy): - try: - with open(ipy, "r") as f: - old = f.read() - except OSError: - old = "" - module = os.path.splitext(os.path.basename(cfg.versionfile_source))[0] - snippet = INIT_PY_SNIPPET.format(module) - if OLD_SNIPPET in old: - print(" replacing boilerplate in %s" % ipy) - with open(ipy, "w") as f: - f.write(old.replace(OLD_SNIPPET, snippet)) - elif snippet not in old: - print(" appending to %s" % ipy) - with open(ipy, "a") as f: - f.write(snippet) - else: - print(" %s unmodified" % ipy) - else: - print(" %s doesn't exist, ok" % ipy) - ipy = None - - # Make sure both the top-level "versioneer.py" and versionfile_source - # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so - # they'll be copied into source distributions. Pip won't be able to - # install the package without this. - manifest_in = os.path.join(root, "MANIFEST.in") - simple_includes = set() - try: - with open(manifest_in, "r") as f: - for line in f: - if line.startswith("include "): - for include in line.split()[1:]: - simple_includes.add(include) - except OSError: - pass - # That doesn't cover everything MANIFEST.in can do - # (http://docs.python.org/2/distutils/sourcedist.html#commands), so - # it might give some false negatives. Appending redundant 'include' - # lines is safe, though. - if "versioneer.py" not in simple_includes: - print(" appending 'versioneer.py' to MANIFEST.in") - with open(manifest_in, "a") as f: - f.write("include versioneer.py\n") - else: - print(" 'versioneer.py' already in MANIFEST.in") - if cfg.versionfile_source not in simple_includes: - print( - " appending versionfile_source ('%s') to MANIFEST.in" - % cfg.versionfile_source - ) - with open(manifest_in, "a") as f: - f.write("include %s\n" % cfg.versionfile_source) - else: - print(" versionfile_source already in MANIFEST.in") - - # Make VCS-specific changes. For git, this means creating/changing - # .gitattributes to mark _version.py for export-subst keyword - # substitution. - do_vcs_install(manifest_in, cfg.versionfile_source, ipy) - return 0 - - -def scan_setup_py(): - """Validate the contents of setup.py against Versioneer's expectations.""" - found = set() - setters = False - errors = 0 - with open("setup.py", "r") as f: - for line in f.readlines(): - if "import versioneer" in line: - found.add("import") - if "versioneer.get_cmdclass()" in line: - found.add("cmdclass") - if "versioneer.get_version()" in line: - found.add("get_version") - if "versioneer.VCS" in line: - setters = True - if "versioneer.versionfile_source" in line: - setters = True - if len(found) != 3: - print("") - print("Your setup.py appears to be missing some important items") - print("(but I might be wrong). Please make sure it has something") - print("roughly like the following:") - print("") - print(" import versioneer") - print(" setup( version=versioneer.get_version(),") - print(" cmdclass=versioneer.get_cmdclass(), ...)") - print("") - errors += 1 - if setters: - print("You should remove lines like 'versioneer.VCS = ' and") - print("'versioneer.versionfile_source = ' . This configuration") - print("now lives in setup.cfg, and should be removed from setup.py") - print("") - errors += 1 - return errors - - -if __name__ == "__main__": - cmd = sys.argv[1] - if cmd == "setup": - errors = do_setup() - errors += scan_setup_py() - if errors: - sys.exit(1) diff --git a/packages/python/plotly/plotly/__init__.py b/plotly/__init__.py similarity index 97% rename from packages/python/plotly/plotly/__init__.py rename to plotly/__init__.py index b3a6f892832..024801a98bf 100644 --- a/packages/python/plotly/plotly/__init__.py +++ b/plotly/__init__.py @@ -28,7 +28,11 @@ import sys from typing import TYPE_CHECKING from _plotly_utils.importers import relative_import +import importlib.metadata +# This is the version of the plotly package +__version__ = importlib.metadata.version("plotly") +version = __version__ if sys.version_info < (3, 7) or TYPE_CHECKING: from plotly import ( diff --git a/packages/python/plotly/plotly/_subplots.py b/plotly/_subplots.py similarity index 100% rename from packages/python/plotly/plotly/_subplots.py rename to plotly/_subplots.py diff --git a/packages/python/plotly/plotly/animation.py b/plotly/animation.py similarity index 100% rename from packages/python/plotly/plotly/animation.py rename to plotly/animation.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_core/test_tools/__init__.py b/plotly/api/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_core/test_tools/__init__.py rename to plotly/api/__init__.py diff --git a/packages/python/plotly/plotly/basedatatypes.py b/plotly/basedatatypes.py similarity index 100% rename from packages/python/plotly/plotly/basedatatypes.py rename to plotly/basedatatypes.py diff --git a/packages/python/plotly/plotly/basewidget.py b/plotly/basewidget.py similarity index 99% rename from packages/python/plotly/plotly/basewidget.py rename to plotly/basewidget.py index 23761b27fc2..812288b7136 100644 --- a/packages/python/plotly/plotly/basewidget.py +++ b/plotly/basewidget.py @@ -6,7 +6,6 @@ from .basedatatypes import BaseFigure, BasePlotlyType from .callbacks import BoxSelector, LassoSelector, InputDeviceState, Points from .serializers import custom_serializers -from .version import __frontend_version__ import anywidget @@ -143,6 +142,11 @@ def __init__( # views of this widget self._view_count = 0 + # Initialize widget layout and data for third-party widget integration + # -------------------------------------------------------------------- + self._widget_layout = deepcopy(self._layout_obj._props) + self._widget_data = deepcopy(self._data) + def show(self, *args, **kwargs): return self diff --git a/packages/python/plotly/plotly/callbacks.py b/plotly/callbacks.py similarity index 100% rename from packages/python/plotly/plotly/callbacks.py rename to plotly/callbacks.py diff --git a/packages/python/plotly/plotly/colors/__init__.py b/plotly/colors/__init__.py similarity index 100% rename from packages/python/plotly/plotly/colors/__init__.py rename to plotly/colors/__init__.py diff --git a/packages/python/plotly/plotly/conftest.py b/plotly/conftest.py similarity index 100% rename from packages/python/plotly/plotly/conftest.py rename to plotly/conftest.py diff --git a/packages/python/plotly/plotly/data/__init__.py b/plotly/data/__init__.py similarity index 100% rename from packages/python/plotly/plotly/data/__init__.py rename to plotly/data/__init__.py diff --git a/packages/python/plotly/plotly/exceptions.py b/plotly/exceptions.py similarity index 100% rename from packages/python/plotly/plotly/exceptions.py rename to plotly/exceptions.py diff --git a/packages/python/plotly/plotly/express/__init__.py b/plotly/express/__init__.py similarity index 100% rename from packages/python/plotly/plotly/express/__init__.py rename to plotly/express/__init__.py diff --git a/packages/python/plotly/plotly/express/_chart_types.py b/plotly/express/_chart_types.py similarity index 100% rename from packages/python/plotly/plotly/express/_chart_types.py rename to plotly/express/_chart_types.py diff --git a/packages/python/plotly/plotly/express/_core.py b/plotly/express/_core.py similarity index 99% rename from packages/python/plotly/plotly/express/_core.py rename to plotly/express/_core.py index 4dca8f42157..5f0eb53f95f 100644 --- a/packages/python/plotly/plotly/express/_core.py +++ b/plotly/express/_core.py @@ -2147,6 +2147,8 @@ def process_dataframe_timeline(args): def process_dataframe_pie(args, trace_patch): + import numpy as np + names = args.get("names") if names is None: return args, trace_patch @@ -2159,12 +2161,12 @@ def process_dataframe_pie(args, trace_patch): uniques = df.get_column(names).unique(maintain_order=True).to_list() order = [x for x in OrderedDict.fromkeys(list(order_in) + uniques) if x in uniques] - # Sort args['data_frame'] by column 'b' according to order `order`. + # Sort args['data_frame'] by column `names` according to order `order`. token = nw.generate_temporary_column_name(8, df.columns) args["data_frame"] = ( df.with_columns( - nw.col("b") - .replace_strict(order, range(len(order)), return_dtype=nw.UInt32) + nw.col(names) + .replace_strict(order, np.arange(len(order)), return_dtype=nw.UInt32) .alias(token) ) .sort(token) diff --git a/packages/python/plotly/plotly/express/_doc.py b/plotly/express/_doc.py similarity index 100% rename from packages/python/plotly/plotly/express/_doc.py rename to plotly/express/_doc.py diff --git a/packages/python/plotly/plotly/express/_imshow.py b/plotly/express/_imshow.py similarity index 100% rename from packages/python/plotly/plotly/express/_imshow.py rename to plotly/express/_imshow.py diff --git a/packages/python/plotly/plotly/express/_special_inputs.py b/plotly/express/_special_inputs.py similarity index 100% rename from packages/python/plotly/plotly/express/_special_inputs.py rename to plotly/express/_special_inputs.py diff --git a/packages/python/plotly/plotly/express/colors/__init__.py b/plotly/express/colors/__init__.py similarity index 100% rename from packages/python/plotly/plotly/express/colors/__init__.py rename to plotly/express/colors/__init__.py diff --git a/packages/python/plotly/plotly/express/data/__init__.py b/plotly/express/data/__init__.py similarity index 100% rename from packages/python/plotly/plotly/express/data/__init__.py rename to plotly/express/data/__init__.py diff --git a/packages/python/plotly/plotly/express/imshow_utils.py b/plotly/express/imshow_utils.py similarity index 100% rename from packages/python/plotly/plotly/express/imshow_utils.py rename to plotly/express/imshow_utils.py diff --git a/packages/python/plotly/plotly/express/trendline_functions/__init__.py b/plotly/express/trendline_functions/__init__.py similarity index 100% rename from packages/python/plotly/plotly/express/trendline_functions/__init__.py rename to plotly/express/trendline_functions/__init__.py diff --git a/packages/python/plotly/plotly/figure_factory/README.md b/plotly/figure_factory/README.md similarity index 98% rename from packages/python/plotly/plotly/figure_factory/README.md rename to plotly/figure_factory/README.md index 4b9266ee59c..435fedb2fb6 100644 --- a/packages/python/plotly/plotly/figure_factory/README.md +++ b/plotly/figure_factory/README.md @@ -137,7 +137,7 @@ It is best to make all other functions besides `create_foo()` secret so a user c 5. Tests Add unit tests in -`plotly/tests/test_optional/test_figure_factory/test_figure_factory.py`. +`tests/test_optional/test_figure_factory/test_figure_factory.py`. ## Create a Pull Request @@ -161,7 +161,7 @@ $ git push origin add-ff-type ## Be Part of the Discussion -Go check out your newly pushed branch at https://github.com/plotly/plotly.py. If you have any other questions, check out the [Plotly Contributing Page](https://github.com/plotly/plotly.py/blob/master/contributing.md). Thanks for contributing to Plotly's Graphing Library! +Go check out your newly pushed branch at https://github.com/plotly/plotly.py. If you have any other questions, check out the [Plotly Contributing Page](https://github.com/plotly/plotly.py/blob/master/CONTRIBUTING.md). Thanks for contributing to Plotly's Graphing Library! ### Table of Current Figure Factories | Name | Documentation | In GitHub | diff --git a/packages/python/plotly/plotly/figure_factory/_2d_density.py b/plotly/figure_factory/_2d_density.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_2d_density.py rename to plotly/figure_factory/_2d_density.py diff --git a/packages/python/plotly/plotly/figure_factory/__init__.py b/plotly/figure_factory/__init__.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/__init__.py rename to plotly/figure_factory/__init__.py diff --git a/packages/python/plotly/plotly/figure_factory/_annotated_heatmap.py b/plotly/figure_factory/_annotated_heatmap.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_annotated_heatmap.py rename to plotly/figure_factory/_annotated_heatmap.py diff --git a/packages/python/plotly/plotly/figure_factory/_bullet.py b/plotly/figure_factory/_bullet.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_bullet.py rename to plotly/figure_factory/_bullet.py diff --git a/packages/python/plotly/plotly/figure_factory/_candlestick.py b/plotly/figure_factory/_candlestick.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_candlestick.py rename to plotly/figure_factory/_candlestick.py diff --git a/packages/python/plotly/plotly/figure_factory/_county_choropleth.py b/plotly/figure_factory/_county_choropleth.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_county_choropleth.py rename to plotly/figure_factory/_county_choropleth.py diff --git a/packages/python/plotly/plotly/figure_factory/_dendrogram.py b/plotly/figure_factory/_dendrogram.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_dendrogram.py rename to plotly/figure_factory/_dendrogram.py diff --git a/packages/python/plotly/plotly/figure_factory/_distplot.py b/plotly/figure_factory/_distplot.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_distplot.py rename to plotly/figure_factory/_distplot.py diff --git a/packages/python/plotly/plotly/figure_factory/_facet_grid.py b/plotly/figure_factory/_facet_grid.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_facet_grid.py rename to plotly/figure_factory/_facet_grid.py diff --git a/packages/python/plotly/plotly/figure_factory/_gantt.py b/plotly/figure_factory/_gantt.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_gantt.py rename to plotly/figure_factory/_gantt.py diff --git a/packages/python/plotly/plotly/figure_factory/_hexbin_mapbox.py b/plotly/figure_factory/_hexbin_mapbox.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_hexbin_mapbox.py rename to plotly/figure_factory/_hexbin_mapbox.py diff --git a/packages/python/plotly/plotly/figure_factory/_ohlc.py b/plotly/figure_factory/_ohlc.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_ohlc.py rename to plotly/figure_factory/_ohlc.py diff --git a/packages/python/plotly/plotly/figure_factory/_quiver.py b/plotly/figure_factory/_quiver.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_quiver.py rename to plotly/figure_factory/_quiver.py diff --git a/packages/python/plotly/plotly/figure_factory/_scatterplot.py b/plotly/figure_factory/_scatterplot.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_scatterplot.py rename to plotly/figure_factory/_scatterplot.py diff --git a/packages/python/plotly/plotly/figure_factory/_streamline.py b/plotly/figure_factory/_streamline.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_streamline.py rename to plotly/figure_factory/_streamline.py diff --git a/packages/python/plotly/plotly/figure_factory/_table.py b/plotly/figure_factory/_table.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_table.py rename to plotly/figure_factory/_table.py diff --git a/packages/python/plotly/plotly/figure_factory/_ternary_contour.py b/plotly/figure_factory/_ternary_contour.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_ternary_contour.py rename to plotly/figure_factory/_ternary_contour.py diff --git a/packages/python/plotly/plotly/figure_factory/_trisurf.py b/plotly/figure_factory/_trisurf.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_trisurf.py rename to plotly/figure_factory/_trisurf.py diff --git a/packages/python/plotly/plotly/figure_factory/_violin.py b/plotly/figure_factory/_violin.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/_violin.py rename to plotly/figure_factory/_violin.py diff --git a/packages/python/plotly/plotly/figure_factory/utils.py b/plotly/figure_factory/utils.py similarity index 100% rename from packages/python/plotly/plotly/figure_factory/utils.py rename to plotly/figure_factory/utils.py diff --git a/packages/python/plotly/plotly/files.py b/plotly/files.py similarity index 100% rename from packages/python/plotly/plotly/files.py rename to plotly/files.py diff --git a/packages/python/plotly/plotly/graph_objects/__init__.py b/plotly/graph_objects/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objects/__init__.py rename to plotly/graph_objects/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/__init__.py b/plotly/graph_objs/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/__init__.py rename to plotly/graph_objs/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/_bar.py b/plotly/graph_objs/_bar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_bar.py rename to plotly/graph_objs/_bar.py diff --git a/packages/python/plotly/plotly/graph_objs/_barpolar.py b/plotly/graph_objs/_barpolar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_barpolar.py rename to plotly/graph_objs/_barpolar.py diff --git a/packages/python/plotly/plotly/graph_objs/_box.py b/plotly/graph_objs/_box.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_box.py rename to plotly/graph_objs/_box.py diff --git a/packages/python/plotly/plotly/graph_objs/_candlestick.py b/plotly/graph_objs/_candlestick.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_candlestick.py rename to plotly/graph_objs/_candlestick.py diff --git a/packages/python/plotly/plotly/graph_objs/_carpet.py b/plotly/graph_objs/_carpet.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_carpet.py rename to plotly/graph_objs/_carpet.py diff --git a/packages/python/plotly/plotly/graph_objs/_choropleth.py b/plotly/graph_objs/_choropleth.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_choropleth.py rename to plotly/graph_objs/_choropleth.py diff --git a/packages/python/plotly/plotly/graph_objs/_choroplethmap.py b/plotly/graph_objs/_choroplethmap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_choroplethmap.py rename to plotly/graph_objs/_choroplethmap.py diff --git a/packages/python/plotly/plotly/graph_objs/_choroplethmapbox.py b/plotly/graph_objs/_choroplethmapbox.py similarity index 99% rename from packages/python/plotly/plotly/graph_objs/_choroplethmapbox.py rename to plotly/graph_objs/_choroplethmapbox.py index c1c14e6d4a0..9169bfcc15d 100644 --- a/packages/python/plotly/plotly/graph_objs/_choroplethmapbox.py +++ b/plotly/graph_objs/_choroplethmapbox.py @@ -1,6 +1,6 @@ from plotly.basedatatypes import BaseTraceType as _BaseTraceType import copy as _copy -from warnings import warn +import warnings class Choroplethmapbox(_BaseTraceType): @@ -2380,7 +2380,7 @@ def __init__( # ------------------ self._skip_invalid = False - warn( + warnings.warn( "*choroplethmapbox* is deprecated!" + " Use *choroplethmap* instead." + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", diff --git a/packages/python/plotly/plotly/graph_objs/_cone.py b/plotly/graph_objs/_cone.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_cone.py rename to plotly/graph_objs/_cone.py diff --git a/packages/python/plotly/plotly/graph_objs/_contour.py b/plotly/graph_objs/_contour.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_contour.py rename to plotly/graph_objs/_contour.py diff --git a/packages/python/plotly/plotly/graph_objs/_contourcarpet.py b/plotly/graph_objs/_contourcarpet.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_contourcarpet.py rename to plotly/graph_objs/_contourcarpet.py diff --git a/packages/python/plotly/plotly/graph_objs/_densitymap.py b/plotly/graph_objs/_densitymap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_densitymap.py rename to plotly/graph_objs/_densitymap.py diff --git a/packages/python/plotly/plotly/graph_objs/_densitymapbox.py b/plotly/graph_objs/_densitymapbox.py similarity index 99% rename from packages/python/plotly/plotly/graph_objs/_densitymapbox.py rename to plotly/graph_objs/_densitymapbox.py index 8498ab2d17e..36232583063 100644 --- a/packages/python/plotly/plotly/graph_objs/_densitymapbox.py +++ b/plotly/graph_objs/_densitymapbox.py @@ -1,6 +1,6 @@ from plotly.basedatatypes import BaseTraceType as _BaseTraceType import copy as _copy -from warnings import warn +import warnings class Densitymapbox(_BaseTraceType): @@ -2321,7 +2321,7 @@ def __init__( # ------------------ self._skip_invalid = False - warn( + warnings.warn( "*densitymapbox* is deprecated!" + " Use *densitymap* instead." + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", diff --git a/packages/python/plotly/plotly/graph_objs/_deprecations.py b/plotly/graph_objs/_deprecations.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_deprecations.py rename to plotly/graph_objs/_deprecations.py diff --git a/packages/python/plotly/plotly/graph_objs/_figure.py b/plotly/graph_objs/_figure.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_figure.py rename to plotly/graph_objs/_figure.py diff --git a/packages/python/plotly/plotly/graph_objs/_figurewidget.py b/plotly/graph_objs/_figurewidget.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_figurewidget.py rename to plotly/graph_objs/_figurewidget.py diff --git a/packages/python/plotly/plotly/graph_objs/_frame.py b/plotly/graph_objs/_frame.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_frame.py rename to plotly/graph_objs/_frame.py diff --git a/packages/python/plotly/plotly/graph_objs/_funnel.py b/plotly/graph_objs/_funnel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_funnel.py rename to plotly/graph_objs/_funnel.py diff --git a/packages/python/plotly/plotly/graph_objs/_funnelarea.py b/plotly/graph_objs/_funnelarea.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_funnelarea.py rename to plotly/graph_objs/_funnelarea.py diff --git a/packages/python/plotly/plotly/graph_objs/_heatmap.py b/plotly/graph_objs/_heatmap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_heatmap.py rename to plotly/graph_objs/_heatmap.py diff --git a/packages/python/plotly/plotly/graph_objs/_histogram.py b/plotly/graph_objs/_histogram.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_histogram.py rename to plotly/graph_objs/_histogram.py diff --git a/packages/python/plotly/plotly/graph_objs/_histogram2d.py b/plotly/graph_objs/_histogram2d.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_histogram2d.py rename to plotly/graph_objs/_histogram2d.py diff --git a/packages/python/plotly/plotly/graph_objs/_histogram2dcontour.py b/plotly/graph_objs/_histogram2dcontour.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_histogram2dcontour.py rename to plotly/graph_objs/_histogram2dcontour.py diff --git a/packages/python/plotly/plotly/graph_objs/_icicle.py b/plotly/graph_objs/_icicle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_icicle.py rename to plotly/graph_objs/_icicle.py diff --git a/packages/python/plotly/plotly/graph_objs/_image.py b/plotly/graph_objs/_image.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_image.py rename to plotly/graph_objs/_image.py diff --git a/packages/python/plotly/plotly/graph_objs/_indicator.py b/plotly/graph_objs/_indicator.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_indicator.py rename to plotly/graph_objs/_indicator.py diff --git a/packages/python/plotly/plotly/graph_objs/_isosurface.py b/plotly/graph_objs/_isosurface.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_isosurface.py rename to plotly/graph_objs/_isosurface.py diff --git a/packages/python/plotly/plotly/graph_objs/_layout.py b/plotly/graph_objs/_layout.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_layout.py rename to plotly/graph_objs/_layout.py diff --git a/packages/python/plotly/plotly/graph_objs/_mesh3d.py b/plotly/graph_objs/_mesh3d.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_mesh3d.py rename to plotly/graph_objs/_mesh3d.py diff --git a/packages/python/plotly/plotly/graph_objs/_ohlc.py b/plotly/graph_objs/_ohlc.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_ohlc.py rename to plotly/graph_objs/_ohlc.py diff --git a/packages/python/plotly/plotly/graph_objs/_parcats.py b/plotly/graph_objs/_parcats.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_parcats.py rename to plotly/graph_objs/_parcats.py diff --git a/packages/python/plotly/plotly/graph_objs/_parcoords.py b/plotly/graph_objs/_parcoords.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_parcoords.py rename to plotly/graph_objs/_parcoords.py diff --git a/packages/python/plotly/plotly/graph_objs/_pie.py b/plotly/graph_objs/_pie.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_pie.py rename to plotly/graph_objs/_pie.py diff --git a/packages/python/plotly/plotly/graph_objs/_sankey.py b/plotly/graph_objs/_sankey.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_sankey.py rename to plotly/graph_objs/_sankey.py diff --git a/packages/python/plotly/plotly/graph_objs/_scatter.py b/plotly/graph_objs/_scatter.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scatter.py rename to plotly/graph_objs/_scatter.py diff --git a/packages/python/plotly/plotly/graph_objs/_scatter3d.py b/plotly/graph_objs/_scatter3d.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scatter3d.py rename to plotly/graph_objs/_scatter3d.py diff --git a/packages/python/plotly/plotly/graph_objs/_scattercarpet.py b/plotly/graph_objs/_scattercarpet.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scattercarpet.py rename to plotly/graph_objs/_scattercarpet.py diff --git a/packages/python/plotly/plotly/graph_objs/_scattergeo.py b/plotly/graph_objs/_scattergeo.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scattergeo.py rename to plotly/graph_objs/_scattergeo.py diff --git a/packages/python/plotly/plotly/graph_objs/_scattergl.py b/plotly/graph_objs/_scattergl.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scattergl.py rename to plotly/graph_objs/_scattergl.py diff --git a/packages/python/plotly/plotly/graph_objs/_scattermap.py b/plotly/graph_objs/_scattermap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scattermap.py rename to plotly/graph_objs/_scattermap.py diff --git a/packages/python/plotly/plotly/graph_objs/_scattermapbox.py b/plotly/graph_objs/_scattermapbox.py similarity index 99% rename from packages/python/plotly/plotly/graph_objs/_scattermapbox.py rename to plotly/graph_objs/_scattermapbox.py index c7494d48fbe..9f98a2b1af9 100644 --- a/packages/python/plotly/plotly/graph_objs/_scattermapbox.py +++ b/plotly/graph_objs/_scattermapbox.py @@ -1,6 +1,6 @@ from plotly.basedatatypes import BaseTraceType as _BaseTraceType import copy as _copy -from warnings import warn +import warnings class Scattermapbox(_BaseTraceType): @@ -2294,7 +2294,7 @@ def __init__( # ------------------ self._skip_invalid = False - warn( + warnings.warn( "*scattermapbox* is deprecated!" + " Use *scattermap* instead." + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", diff --git a/packages/python/plotly/plotly/graph_objs/_scatterpolar.py b/plotly/graph_objs/_scatterpolar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scatterpolar.py rename to plotly/graph_objs/_scatterpolar.py diff --git a/packages/python/plotly/plotly/graph_objs/_scatterpolargl.py b/plotly/graph_objs/_scatterpolargl.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scatterpolargl.py rename to plotly/graph_objs/_scatterpolargl.py diff --git a/packages/python/plotly/plotly/graph_objs/_scattersmith.py b/plotly/graph_objs/_scattersmith.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scattersmith.py rename to plotly/graph_objs/_scattersmith.py diff --git a/packages/python/plotly/plotly/graph_objs/_scatterternary.py b/plotly/graph_objs/_scatterternary.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_scatterternary.py rename to plotly/graph_objs/_scatterternary.py diff --git a/packages/python/plotly/plotly/graph_objs/_splom.py b/plotly/graph_objs/_splom.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_splom.py rename to plotly/graph_objs/_splom.py diff --git a/packages/python/plotly/plotly/graph_objs/_streamtube.py b/plotly/graph_objs/_streamtube.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_streamtube.py rename to plotly/graph_objs/_streamtube.py diff --git a/packages/python/plotly/plotly/graph_objs/_sunburst.py b/plotly/graph_objs/_sunburst.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_sunburst.py rename to plotly/graph_objs/_sunburst.py diff --git a/packages/python/plotly/plotly/graph_objs/_surface.py b/plotly/graph_objs/_surface.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_surface.py rename to plotly/graph_objs/_surface.py diff --git a/packages/python/plotly/plotly/graph_objs/_table.py b/plotly/graph_objs/_table.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_table.py rename to plotly/graph_objs/_table.py diff --git a/packages/python/plotly/plotly/graph_objs/_treemap.py b/plotly/graph_objs/_treemap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_treemap.py rename to plotly/graph_objs/_treemap.py diff --git a/packages/python/plotly/plotly/graph_objs/_violin.py b/plotly/graph_objs/_violin.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_violin.py rename to plotly/graph_objs/_violin.py diff --git a/packages/python/plotly/plotly/graph_objs/_volume.py b/plotly/graph_objs/_volume.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_volume.py rename to plotly/graph_objs/_volume.py diff --git a/packages/python/plotly/plotly/graph_objs/_waterfall.py b/plotly/graph_objs/_waterfall.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/_waterfall.py rename to plotly/graph_objs/_waterfall.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/__init__.py b/plotly/graph_objs/bar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/__init__.py rename to plotly/graph_objs/bar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_error_x.py b/plotly/graph_objs/bar/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_error_x.py rename to plotly/graph_objs/bar/_error_x.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_error_y.py b/plotly/graph_objs/bar/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_error_y.py rename to plotly/graph_objs/bar/_error_y.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_hoverlabel.py b/plotly/graph_objs/bar/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_hoverlabel.py rename to plotly/graph_objs/bar/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_insidetextfont.py b/plotly/graph_objs/bar/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_insidetextfont.py rename to plotly/graph_objs/bar/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_legendgrouptitle.py b/plotly/graph_objs/bar/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_legendgrouptitle.py rename to plotly/graph_objs/bar/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_marker.py b/plotly/graph_objs/bar/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_marker.py rename to plotly/graph_objs/bar/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_outsidetextfont.py b/plotly/graph_objs/bar/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_outsidetextfont.py rename to plotly/graph_objs/bar/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_selected.py b/plotly/graph_objs/bar/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_selected.py rename to plotly/graph_objs/bar/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_stream.py b/plotly/graph_objs/bar/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_stream.py rename to plotly/graph_objs/bar/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_textfont.py b/plotly/graph_objs/bar/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_textfont.py rename to plotly/graph_objs/bar/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/_unselected.py b/plotly/graph_objs/bar/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/_unselected.py rename to plotly/graph_objs/bar/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/hoverlabel/__init__.py b/plotly/graph_objs/bar/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/hoverlabel/__init__.py rename to plotly/graph_objs/bar/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/hoverlabel/_font.py b/plotly/graph_objs/bar/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/hoverlabel/_font.py rename to plotly/graph_objs/bar/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/legendgrouptitle/__init__.py b/plotly/graph_objs/bar/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/legendgrouptitle/__init__.py rename to plotly/graph_objs/bar/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/legendgrouptitle/_font.py b/plotly/graph_objs/bar/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/legendgrouptitle/_font.py rename to plotly/graph_objs/bar/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/__init__.py b/plotly/graph_objs/bar/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/__init__.py rename to plotly/graph_objs/bar/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/_colorbar.py b/plotly/graph_objs/bar/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/_colorbar.py rename to plotly/graph_objs/bar/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/_line.py b/plotly/graph_objs/bar/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/_line.py rename to plotly/graph_objs/bar/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/_pattern.py b/plotly/graph_objs/bar/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/_pattern.py rename to plotly/graph_objs/bar/marker/_pattern.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/__init__.py b/plotly/graph_objs/bar/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/__init__.py rename to plotly/graph_objs/bar/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/_tickfont.py b/plotly/graph_objs/bar/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/_tickfont.py rename to plotly/graph_objs/bar/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/bar/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/bar/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/_title.py b/plotly/graph_objs/bar/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/_title.py rename to plotly/graph_objs/bar/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/title/__init__.py b/plotly/graph_objs/bar/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/title/__init__.py rename to plotly/graph_objs/bar/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/title/_font.py b/plotly/graph_objs/bar/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/marker/colorbar/title/_font.py rename to plotly/graph_objs/bar/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/selected/__init__.py b/plotly/graph_objs/bar/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/selected/__init__.py rename to plotly/graph_objs/bar/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/selected/_marker.py b/plotly/graph_objs/bar/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/selected/_marker.py rename to plotly/graph_objs/bar/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/selected/_textfont.py b/plotly/graph_objs/bar/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/selected/_textfont.py rename to plotly/graph_objs/bar/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/unselected/__init__.py b/plotly/graph_objs/bar/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/unselected/__init__.py rename to plotly/graph_objs/bar/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/unselected/_marker.py b/plotly/graph_objs/bar/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/unselected/_marker.py rename to plotly/graph_objs/bar/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/bar/unselected/_textfont.py b/plotly/graph_objs/bar/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/bar/unselected/_textfont.py rename to plotly/graph_objs/bar/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/__init__.py b/plotly/graph_objs/barpolar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/__init__.py rename to plotly/graph_objs/barpolar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/_hoverlabel.py b/plotly/graph_objs/barpolar/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/_hoverlabel.py rename to plotly/graph_objs/barpolar/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/_legendgrouptitle.py b/plotly/graph_objs/barpolar/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/_legendgrouptitle.py rename to plotly/graph_objs/barpolar/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/_marker.py b/plotly/graph_objs/barpolar/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/_marker.py rename to plotly/graph_objs/barpolar/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/_selected.py b/plotly/graph_objs/barpolar/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/_selected.py rename to plotly/graph_objs/barpolar/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/_stream.py b/plotly/graph_objs/barpolar/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/_stream.py rename to plotly/graph_objs/barpolar/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/_unselected.py b/plotly/graph_objs/barpolar/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/_unselected.py rename to plotly/graph_objs/barpolar/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/hoverlabel/__init__.py b/plotly/graph_objs/barpolar/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/hoverlabel/__init__.py rename to plotly/graph_objs/barpolar/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/hoverlabel/_font.py b/plotly/graph_objs/barpolar/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/hoverlabel/_font.py rename to plotly/graph_objs/barpolar/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/legendgrouptitle/__init__.py b/plotly/graph_objs/barpolar/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/legendgrouptitle/__init__.py rename to plotly/graph_objs/barpolar/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/legendgrouptitle/_font.py b/plotly/graph_objs/barpolar/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/legendgrouptitle/_font.py rename to plotly/graph_objs/barpolar/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/__init__.py b/plotly/graph_objs/barpolar/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/__init__.py rename to plotly/graph_objs/barpolar/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/_colorbar.py b/plotly/graph_objs/barpolar/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/_colorbar.py rename to plotly/graph_objs/barpolar/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/_line.py b/plotly/graph_objs/barpolar/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/_line.py rename to plotly/graph_objs/barpolar/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/_pattern.py b/plotly/graph_objs/barpolar/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/_pattern.py rename to plotly/graph_objs/barpolar/marker/_pattern.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/__init__.py b/plotly/graph_objs/barpolar/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/__init__.py rename to plotly/graph_objs/barpolar/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/_tickfont.py b/plotly/graph_objs/barpolar/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/_tickfont.py rename to plotly/graph_objs/barpolar/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/barpolar/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/barpolar/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/_title.py b/plotly/graph_objs/barpolar/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/_title.py rename to plotly/graph_objs/barpolar/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/title/__init__.py b/plotly/graph_objs/barpolar/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/title/__init__.py rename to plotly/graph_objs/barpolar/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/title/_font.py b/plotly/graph_objs/barpolar/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/marker/colorbar/title/_font.py rename to plotly/graph_objs/barpolar/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/selected/__init__.py b/plotly/graph_objs/barpolar/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/selected/__init__.py rename to plotly/graph_objs/barpolar/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/selected/_marker.py b/plotly/graph_objs/barpolar/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/selected/_marker.py rename to plotly/graph_objs/barpolar/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/selected/_textfont.py b/plotly/graph_objs/barpolar/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/selected/_textfont.py rename to plotly/graph_objs/barpolar/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/unselected/__init__.py b/plotly/graph_objs/barpolar/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/unselected/__init__.py rename to plotly/graph_objs/barpolar/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/unselected/_marker.py b/plotly/graph_objs/barpolar/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/unselected/_marker.py rename to plotly/graph_objs/barpolar/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/barpolar/unselected/_textfont.py b/plotly/graph_objs/barpolar/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/barpolar/unselected/_textfont.py rename to plotly/graph_objs/barpolar/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/box/__init__.py b/plotly/graph_objs/box/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/__init__.py rename to plotly/graph_objs/box/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/box/_hoverlabel.py b/plotly/graph_objs/box/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/_hoverlabel.py rename to plotly/graph_objs/box/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/box/_legendgrouptitle.py b/plotly/graph_objs/box/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/_legendgrouptitle.py rename to plotly/graph_objs/box/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/box/_line.py b/plotly/graph_objs/box/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/_line.py rename to plotly/graph_objs/box/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/box/_marker.py b/plotly/graph_objs/box/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/_marker.py rename to plotly/graph_objs/box/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/box/_selected.py b/plotly/graph_objs/box/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/_selected.py rename to plotly/graph_objs/box/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/box/_stream.py b/plotly/graph_objs/box/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/_stream.py rename to plotly/graph_objs/box/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/box/_unselected.py b/plotly/graph_objs/box/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/_unselected.py rename to plotly/graph_objs/box/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/box/hoverlabel/__init__.py b/plotly/graph_objs/box/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/hoverlabel/__init__.py rename to plotly/graph_objs/box/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/box/hoverlabel/_font.py b/plotly/graph_objs/box/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/hoverlabel/_font.py rename to plotly/graph_objs/box/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/box/legendgrouptitle/__init__.py b/plotly/graph_objs/box/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/legendgrouptitle/__init__.py rename to plotly/graph_objs/box/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/box/legendgrouptitle/_font.py b/plotly/graph_objs/box/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/legendgrouptitle/_font.py rename to plotly/graph_objs/box/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/box/marker/__init__.py b/plotly/graph_objs/box/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/marker/__init__.py rename to plotly/graph_objs/box/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/box/marker/_line.py b/plotly/graph_objs/box/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/marker/_line.py rename to plotly/graph_objs/box/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/box/selected/__init__.py b/plotly/graph_objs/box/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/selected/__init__.py rename to plotly/graph_objs/box/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/box/selected/_marker.py b/plotly/graph_objs/box/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/selected/_marker.py rename to plotly/graph_objs/box/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/box/unselected/__init__.py b/plotly/graph_objs/box/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/unselected/__init__.py rename to plotly/graph_objs/box/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/box/unselected/_marker.py b/plotly/graph_objs/box/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/box/unselected/_marker.py rename to plotly/graph_objs/box/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/__init__.py b/plotly/graph_objs/candlestick/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/__init__.py rename to plotly/graph_objs/candlestick/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/_decreasing.py b/plotly/graph_objs/candlestick/_decreasing.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/_decreasing.py rename to plotly/graph_objs/candlestick/_decreasing.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/_hoverlabel.py b/plotly/graph_objs/candlestick/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/_hoverlabel.py rename to plotly/graph_objs/candlestick/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/_increasing.py b/plotly/graph_objs/candlestick/_increasing.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/_increasing.py rename to plotly/graph_objs/candlestick/_increasing.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/_legendgrouptitle.py b/plotly/graph_objs/candlestick/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/_legendgrouptitle.py rename to plotly/graph_objs/candlestick/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/_line.py b/plotly/graph_objs/candlestick/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/_line.py rename to plotly/graph_objs/candlestick/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/_stream.py b/plotly/graph_objs/candlestick/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/_stream.py rename to plotly/graph_objs/candlestick/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/decreasing/__init__.py b/plotly/graph_objs/candlestick/decreasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/decreasing/__init__.py rename to plotly/graph_objs/candlestick/decreasing/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/decreasing/_line.py b/plotly/graph_objs/candlestick/decreasing/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/decreasing/_line.py rename to plotly/graph_objs/candlestick/decreasing/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/hoverlabel/__init__.py b/plotly/graph_objs/candlestick/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/hoverlabel/__init__.py rename to plotly/graph_objs/candlestick/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/hoverlabel/_font.py b/plotly/graph_objs/candlestick/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/hoverlabel/_font.py rename to plotly/graph_objs/candlestick/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/increasing/__init__.py b/plotly/graph_objs/candlestick/increasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/increasing/__init__.py rename to plotly/graph_objs/candlestick/increasing/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/increasing/_line.py b/plotly/graph_objs/candlestick/increasing/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/increasing/_line.py rename to plotly/graph_objs/candlestick/increasing/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/legendgrouptitle/__init__.py b/plotly/graph_objs/candlestick/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/legendgrouptitle/__init__.py rename to plotly/graph_objs/candlestick/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/candlestick/legendgrouptitle/_font.py b/plotly/graph_objs/candlestick/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/candlestick/legendgrouptitle/_font.py rename to plotly/graph_objs/candlestick/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/__init__.py b/plotly/graph_objs/carpet/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/__init__.py rename to plotly/graph_objs/carpet/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/_aaxis.py b/plotly/graph_objs/carpet/_aaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/_aaxis.py rename to plotly/graph_objs/carpet/_aaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/_baxis.py b/plotly/graph_objs/carpet/_baxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/_baxis.py rename to plotly/graph_objs/carpet/_baxis.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/_font.py b/plotly/graph_objs/carpet/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/_font.py rename to plotly/graph_objs/carpet/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/_legendgrouptitle.py b/plotly/graph_objs/carpet/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/_legendgrouptitle.py rename to plotly/graph_objs/carpet/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/_stream.py b/plotly/graph_objs/carpet/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/_stream.py rename to plotly/graph_objs/carpet/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/aaxis/__init__.py b/plotly/graph_objs/carpet/aaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/aaxis/__init__.py rename to plotly/graph_objs/carpet/aaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/aaxis/_tickfont.py b/plotly/graph_objs/carpet/aaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/aaxis/_tickfont.py rename to plotly/graph_objs/carpet/aaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/aaxis/_tickformatstop.py b/plotly/graph_objs/carpet/aaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/aaxis/_tickformatstop.py rename to plotly/graph_objs/carpet/aaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/aaxis/_title.py b/plotly/graph_objs/carpet/aaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/aaxis/_title.py rename to plotly/graph_objs/carpet/aaxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/aaxis/title/__init__.py b/plotly/graph_objs/carpet/aaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/aaxis/title/__init__.py rename to plotly/graph_objs/carpet/aaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/aaxis/title/_font.py b/plotly/graph_objs/carpet/aaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/aaxis/title/_font.py rename to plotly/graph_objs/carpet/aaxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/baxis/__init__.py b/plotly/graph_objs/carpet/baxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/baxis/__init__.py rename to plotly/graph_objs/carpet/baxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/baxis/_tickfont.py b/plotly/graph_objs/carpet/baxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/baxis/_tickfont.py rename to plotly/graph_objs/carpet/baxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/baxis/_tickformatstop.py b/plotly/graph_objs/carpet/baxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/baxis/_tickformatstop.py rename to plotly/graph_objs/carpet/baxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/baxis/_title.py b/plotly/graph_objs/carpet/baxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/baxis/_title.py rename to plotly/graph_objs/carpet/baxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/baxis/title/__init__.py b/plotly/graph_objs/carpet/baxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/baxis/title/__init__.py rename to plotly/graph_objs/carpet/baxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/baxis/title/_font.py b/plotly/graph_objs/carpet/baxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/baxis/title/_font.py rename to plotly/graph_objs/carpet/baxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/legendgrouptitle/__init__.py b/plotly/graph_objs/carpet/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/legendgrouptitle/__init__.py rename to plotly/graph_objs/carpet/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/carpet/legendgrouptitle/_font.py b/plotly/graph_objs/carpet/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/carpet/legendgrouptitle/_font.py rename to plotly/graph_objs/carpet/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/__init__.py b/plotly/graph_objs/choropleth/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/__init__.py rename to plotly/graph_objs/choropleth/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/_colorbar.py b/plotly/graph_objs/choropleth/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/_colorbar.py rename to plotly/graph_objs/choropleth/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/_hoverlabel.py b/plotly/graph_objs/choropleth/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/_hoverlabel.py rename to plotly/graph_objs/choropleth/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/_legendgrouptitle.py b/plotly/graph_objs/choropleth/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/_legendgrouptitle.py rename to plotly/graph_objs/choropleth/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/_marker.py b/plotly/graph_objs/choropleth/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/_marker.py rename to plotly/graph_objs/choropleth/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/_selected.py b/plotly/graph_objs/choropleth/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/_selected.py rename to plotly/graph_objs/choropleth/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/_stream.py b/plotly/graph_objs/choropleth/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/_stream.py rename to plotly/graph_objs/choropleth/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/_unselected.py b/plotly/graph_objs/choropleth/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/_unselected.py rename to plotly/graph_objs/choropleth/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/colorbar/__init__.py b/plotly/graph_objs/choropleth/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/colorbar/__init__.py rename to plotly/graph_objs/choropleth/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/colorbar/_tickfont.py b/plotly/graph_objs/choropleth/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/colorbar/_tickfont.py rename to plotly/graph_objs/choropleth/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/colorbar/_tickformatstop.py b/plotly/graph_objs/choropleth/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/colorbar/_tickformatstop.py rename to plotly/graph_objs/choropleth/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/colorbar/_title.py b/plotly/graph_objs/choropleth/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/colorbar/_title.py rename to plotly/graph_objs/choropleth/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/colorbar/title/__init__.py b/plotly/graph_objs/choropleth/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/colorbar/title/__init__.py rename to plotly/graph_objs/choropleth/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/colorbar/title/_font.py b/plotly/graph_objs/choropleth/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/colorbar/title/_font.py rename to plotly/graph_objs/choropleth/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/hoverlabel/__init__.py b/plotly/graph_objs/choropleth/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/hoverlabel/__init__.py rename to plotly/graph_objs/choropleth/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/hoverlabel/_font.py b/plotly/graph_objs/choropleth/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/hoverlabel/_font.py rename to plotly/graph_objs/choropleth/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/legendgrouptitle/__init__.py b/plotly/graph_objs/choropleth/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/legendgrouptitle/__init__.py rename to plotly/graph_objs/choropleth/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/legendgrouptitle/_font.py b/plotly/graph_objs/choropleth/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/legendgrouptitle/_font.py rename to plotly/graph_objs/choropleth/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/marker/__init__.py b/plotly/graph_objs/choropleth/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/marker/__init__.py rename to plotly/graph_objs/choropleth/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/marker/_line.py b/plotly/graph_objs/choropleth/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/marker/_line.py rename to plotly/graph_objs/choropleth/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/selected/__init__.py b/plotly/graph_objs/choropleth/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/selected/__init__.py rename to plotly/graph_objs/choropleth/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/selected/_marker.py b/plotly/graph_objs/choropleth/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/selected/_marker.py rename to plotly/graph_objs/choropleth/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/unselected/__init__.py b/plotly/graph_objs/choropleth/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/unselected/__init__.py rename to plotly/graph_objs/choropleth/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choropleth/unselected/_marker.py b/plotly/graph_objs/choropleth/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choropleth/unselected/_marker.py rename to plotly/graph_objs/choropleth/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/__init__.py b/plotly/graph_objs/choroplethmap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/__init__.py rename to plotly/graph_objs/choroplethmap/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/_colorbar.py b/plotly/graph_objs/choroplethmap/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/_colorbar.py rename to plotly/graph_objs/choroplethmap/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/_hoverlabel.py b/plotly/graph_objs/choroplethmap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/_hoverlabel.py rename to plotly/graph_objs/choroplethmap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/_legendgrouptitle.py b/plotly/graph_objs/choroplethmap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/_legendgrouptitle.py rename to plotly/graph_objs/choroplethmap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/_marker.py b/plotly/graph_objs/choroplethmap/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/_marker.py rename to plotly/graph_objs/choroplethmap/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/_selected.py b/plotly/graph_objs/choroplethmap/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/_selected.py rename to plotly/graph_objs/choroplethmap/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/_stream.py b/plotly/graph_objs/choroplethmap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/_stream.py rename to plotly/graph_objs/choroplethmap/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/_unselected.py b/plotly/graph_objs/choroplethmap/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/_unselected.py rename to plotly/graph_objs/choroplethmap/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/__init__.py b/plotly/graph_objs/choroplethmap/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/__init__.py rename to plotly/graph_objs/choroplethmap/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/_tickfont.py b/plotly/graph_objs/choroplethmap/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/_tickfont.py rename to plotly/graph_objs/choroplethmap/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/_tickformatstop.py b/plotly/graph_objs/choroplethmap/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/_tickformatstop.py rename to plotly/graph_objs/choroplethmap/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/_title.py b/plotly/graph_objs/choroplethmap/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/_title.py rename to plotly/graph_objs/choroplethmap/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/title/__init__.py b/plotly/graph_objs/choroplethmap/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/title/__init__.py rename to plotly/graph_objs/choroplethmap/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/title/_font.py b/plotly/graph_objs/choroplethmap/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/colorbar/title/_font.py rename to plotly/graph_objs/choroplethmap/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/hoverlabel/__init__.py b/plotly/graph_objs/choroplethmap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/hoverlabel/__init__.py rename to plotly/graph_objs/choroplethmap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/hoverlabel/_font.py b/plotly/graph_objs/choroplethmap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/hoverlabel/_font.py rename to plotly/graph_objs/choroplethmap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/legendgrouptitle/__init__.py b/plotly/graph_objs/choroplethmap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/legendgrouptitle/__init__.py rename to plotly/graph_objs/choroplethmap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/legendgrouptitle/_font.py b/plotly/graph_objs/choroplethmap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/legendgrouptitle/_font.py rename to plotly/graph_objs/choroplethmap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/marker/__init__.py b/plotly/graph_objs/choroplethmap/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/marker/__init__.py rename to plotly/graph_objs/choroplethmap/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/marker/_line.py b/plotly/graph_objs/choroplethmap/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/marker/_line.py rename to plotly/graph_objs/choroplethmap/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/selected/__init__.py b/plotly/graph_objs/choroplethmap/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/selected/__init__.py rename to plotly/graph_objs/choroplethmap/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/selected/_marker.py b/plotly/graph_objs/choroplethmap/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/selected/_marker.py rename to plotly/graph_objs/choroplethmap/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/unselected/__init__.py b/plotly/graph_objs/choroplethmap/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/unselected/__init__.py rename to plotly/graph_objs/choroplethmap/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmap/unselected/_marker.py b/plotly/graph_objs/choroplethmap/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmap/unselected/_marker.py rename to plotly/graph_objs/choroplethmap/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/__init__.py b/plotly/graph_objs/choroplethmapbox/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/__init__.py rename to plotly/graph_objs/choroplethmapbox/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/_colorbar.py b/plotly/graph_objs/choroplethmapbox/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/_colorbar.py rename to plotly/graph_objs/choroplethmapbox/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/_hoverlabel.py b/plotly/graph_objs/choroplethmapbox/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/_hoverlabel.py rename to plotly/graph_objs/choroplethmapbox/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/_legendgrouptitle.py b/plotly/graph_objs/choroplethmapbox/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/_legendgrouptitle.py rename to plotly/graph_objs/choroplethmapbox/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/_marker.py b/plotly/graph_objs/choroplethmapbox/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/_marker.py rename to plotly/graph_objs/choroplethmapbox/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/_selected.py b/plotly/graph_objs/choroplethmapbox/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/_selected.py rename to plotly/graph_objs/choroplethmapbox/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/_stream.py b/plotly/graph_objs/choroplethmapbox/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/_stream.py rename to plotly/graph_objs/choroplethmapbox/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/_unselected.py b/plotly/graph_objs/choroplethmapbox/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/_unselected.py rename to plotly/graph_objs/choroplethmapbox/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/__init__.py b/plotly/graph_objs/choroplethmapbox/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/__init__.py rename to plotly/graph_objs/choroplethmapbox/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/_tickfont.py b/plotly/graph_objs/choroplethmapbox/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/_tickfont.py rename to plotly/graph_objs/choroplethmapbox/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/_tickformatstop.py b/plotly/graph_objs/choroplethmapbox/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/_tickformatstop.py rename to plotly/graph_objs/choroplethmapbox/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/_title.py b/plotly/graph_objs/choroplethmapbox/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/_title.py rename to plotly/graph_objs/choroplethmapbox/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/title/__init__.py b/plotly/graph_objs/choroplethmapbox/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/title/__init__.py rename to plotly/graph_objs/choroplethmapbox/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/title/_font.py b/plotly/graph_objs/choroplethmapbox/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/colorbar/title/_font.py rename to plotly/graph_objs/choroplethmapbox/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/hoverlabel/__init__.py b/plotly/graph_objs/choroplethmapbox/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/hoverlabel/__init__.py rename to plotly/graph_objs/choroplethmapbox/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/hoverlabel/_font.py b/plotly/graph_objs/choroplethmapbox/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/hoverlabel/_font.py rename to plotly/graph_objs/choroplethmapbox/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/legendgrouptitle/__init__.py b/plotly/graph_objs/choroplethmapbox/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/legendgrouptitle/__init__.py rename to plotly/graph_objs/choroplethmapbox/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/legendgrouptitle/_font.py b/plotly/graph_objs/choroplethmapbox/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/legendgrouptitle/_font.py rename to plotly/graph_objs/choroplethmapbox/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/marker/__init__.py b/plotly/graph_objs/choroplethmapbox/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/marker/__init__.py rename to plotly/graph_objs/choroplethmapbox/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/marker/_line.py b/plotly/graph_objs/choroplethmapbox/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/marker/_line.py rename to plotly/graph_objs/choroplethmapbox/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/selected/__init__.py b/plotly/graph_objs/choroplethmapbox/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/selected/__init__.py rename to plotly/graph_objs/choroplethmapbox/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/selected/_marker.py b/plotly/graph_objs/choroplethmapbox/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/selected/_marker.py rename to plotly/graph_objs/choroplethmapbox/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/unselected/__init__.py b/plotly/graph_objs/choroplethmapbox/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/unselected/__init__.py rename to plotly/graph_objs/choroplethmapbox/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/choroplethmapbox/unselected/_marker.py b/plotly/graph_objs/choroplethmapbox/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/choroplethmapbox/unselected/_marker.py rename to plotly/graph_objs/choroplethmapbox/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/__init__.py b/plotly/graph_objs/cone/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/__init__.py rename to plotly/graph_objs/cone/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/_colorbar.py b/plotly/graph_objs/cone/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/_colorbar.py rename to plotly/graph_objs/cone/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/_hoverlabel.py b/plotly/graph_objs/cone/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/_hoverlabel.py rename to plotly/graph_objs/cone/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/_legendgrouptitle.py b/plotly/graph_objs/cone/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/_legendgrouptitle.py rename to plotly/graph_objs/cone/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/_lighting.py b/plotly/graph_objs/cone/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/_lighting.py rename to plotly/graph_objs/cone/_lighting.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/_lightposition.py b/plotly/graph_objs/cone/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/_lightposition.py rename to plotly/graph_objs/cone/_lightposition.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/_stream.py b/plotly/graph_objs/cone/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/_stream.py rename to plotly/graph_objs/cone/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/colorbar/__init__.py b/plotly/graph_objs/cone/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/colorbar/__init__.py rename to plotly/graph_objs/cone/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/colorbar/_tickfont.py b/plotly/graph_objs/cone/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/colorbar/_tickfont.py rename to plotly/graph_objs/cone/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/colorbar/_tickformatstop.py b/plotly/graph_objs/cone/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/colorbar/_tickformatstop.py rename to plotly/graph_objs/cone/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/colorbar/_title.py b/plotly/graph_objs/cone/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/colorbar/_title.py rename to plotly/graph_objs/cone/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/colorbar/title/__init__.py b/plotly/graph_objs/cone/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/colorbar/title/__init__.py rename to plotly/graph_objs/cone/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/colorbar/title/_font.py b/plotly/graph_objs/cone/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/colorbar/title/_font.py rename to plotly/graph_objs/cone/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/hoverlabel/__init__.py b/plotly/graph_objs/cone/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/hoverlabel/__init__.py rename to plotly/graph_objs/cone/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/hoverlabel/_font.py b/plotly/graph_objs/cone/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/hoverlabel/_font.py rename to plotly/graph_objs/cone/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/legendgrouptitle/__init__.py b/plotly/graph_objs/cone/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/legendgrouptitle/__init__.py rename to plotly/graph_objs/cone/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/cone/legendgrouptitle/_font.py b/plotly/graph_objs/cone/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/cone/legendgrouptitle/_font.py rename to plotly/graph_objs/cone/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/__init__.py b/plotly/graph_objs/contour/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/__init__.py rename to plotly/graph_objs/contour/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/_colorbar.py b/plotly/graph_objs/contour/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/_colorbar.py rename to plotly/graph_objs/contour/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/_contours.py b/plotly/graph_objs/contour/_contours.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/_contours.py rename to plotly/graph_objs/contour/_contours.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/_hoverlabel.py b/plotly/graph_objs/contour/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/_hoverlabel.py rename to plotly/graph_objs/contour/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/_legendgrouptitle.py b/plotly/graph_objs/contour/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/_legendgrouptitle.py rename to plotly/graph_objs/contour/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/_line.py b/plotly/graph_objs/contour/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/_line.py rename to plotly/graph_objs/contour/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/_stream.py b/plotly/graph_objs/contour/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/_stream.py rename to plotly/graph_objs/contour/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/_textfont.py b/plotly/graph_objs/contour/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/_textfont.py rename to plotly/graph_objs/contour/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/colorbar/__init__.py b/plotly/graph_objs/contour/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/colorbar/__init__.py rename to plotly/graph_objs/contour/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/colorbar/_tickfont.py b/plotly/graph_objs/contour/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/colorbar/_tickfont.py rename to plotly/graph_objs/contour/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/colorbar/_tickformatstop.py b/plotly/graph_objs/contour/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/colorbar/_tickformatstop.py rename to plotly/graph_objs/contour/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/colorbar/_title.py b/plotly/graph_objs/contour/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/colorbar/_title.py rename to plotly/graph_objs/contour/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/colorbar/title/__init__.py b/plotly/graph_objs/contour/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/colorbar/title/__init__.py rename to plotly/graph_objs/contour/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/colorbar/title/_font.py b/plotly/graph_objs/contour/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/colorbar/title/_font.py rename to plotly/graph_objs/contour/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/contours/__init__.py b/plotly/graph_objs/contour/contours/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/contours/__init__.py rename to plotly/graph_objs/contour/contours/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/contours/_labelfont.py b/plotly/graph_objs/contour/contours/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/contours/_labelfont.py rename to plotly/graph_objs/contour/contours/_labelfont.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/hoverlabel/__init__.py b/plotly/graph_objs/contour/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/hoverlabel/__init__.py rename to plotly/graph_objs/contour/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/hoverlabel/_font.py b/plotly/graph_objs/contour/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/hoverlabel/_font.py rename to plotly/graph_objs/contour/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/legendgrouptitle/__init__.py b/plotly/graph_objs/contour/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/legendgrouptitle/__init__.py rename to plotly/graph_objs/contour/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contour/legendgrouptitle/_font.py b/plotly/graph_objs/contour/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contour/legendgrouptitle/_font.py rename to plotly/graph_objs/contour/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/__init__.py b/plotly/graph_objs/contourcarpet/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/__init__.py rename to plotly/graph_objs/contourcarpet/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/_colorbar.py b/plotly/graph_objs/contourcarpet/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/_colorbar.py rename to plotly/graph_objs/contourcarpet/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/_contours.py b/plotly/graph_objs/contourcarpet/_contours.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/_contours.py rename to plotly/graph_objs/contourcarpet/_contours.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/_legendgrouptitle.py b/plotly/graph_objs/contourcarpet/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/_legendgrouptitle.py rename to plotly/graph_objs/contourcarpet/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/_line.py b/plotly/graph_objs/contourcarpet/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/_line.py rename to plotly/graph_objs/contourcarpet/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/_stream.py b/plotly/graph_objs/contourcarpet/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/_stream.py rename to plotly/graph_objs/contourcarpet/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/__init__.py b/plotly/graph_objs/contourcarpet/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/__init__.py rename to plotly/graph_objs/contourcarpet/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/_tickfont.py b/plotly/graph_objs/contourcarpet/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/_tickfont.py rename to plotly/graph_objs/contourcarpet/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/_tickformatstop.py b/plotly/graph_objs/contourcarpet/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/_tickformatstop.py rename to plotly/graph_objs/contourcarpet/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/_title.py b/plotly/graph_objs/contourcarpet/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/_title.py rename to plotly/graph_objs/contourcarpet/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/title/__init__.py b/plotly/graph_objs/contourcarpet/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/title/__init__.py rename to plotly/graph_objs/contourcarpet/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/title/_font.py b/plotly/graph_objs/contourcarpet/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/colorbar/title/_font.py rename to plotly/graph_objs/contourcarpet/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/contours/__init__.py b/plotly/graph_objs/contourcarpet/contours/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/contours/__init__.py rename to plotly/graph_objs/contourcarpet/contours/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/contours/_labelfont.py b/plotly/graph_objs/contourcarpet/contours/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/contours/_labelfont.py rename to plotly/graph_objs/contourcarpet/contours/_labelfont.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/legendgrouptitle/__init__.py b/plotly/graph_objs/contourcarpet/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/legendgrouptitle/__init__.py rename to plotly/graph_objs/contourcarpet/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/contourcarpet/legendgrouptitle/_font.py b/plotly/graph_objs/contourcarpet/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/contourcarpet/legendgrouptitle/_font.py rename to plotly/graph_objs/contourcarpet/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/__init__.py b/plotly/graph_objs/densitymap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/__init__.py rename to plotly/graph_objs/densitymap/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/_colorbar.py b/plotly/graph_objs/densitymap/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/_colorbar.py rename to plotly/graph_objs/densitymap/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/_hoverlabel.py b/plotly/graph_objs/densitymap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/_hoverlabel.py rename to plotly/graph_objs/densitymap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/_legendgrouptitle.py b/plotly/graph_objs/densitymap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/_legendgrouptitle.py rename to plotly/graph_objs/densitymap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/_stream.py b/plotly/graph_objs/densitymap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/_stream.py rename to plotly/graph_objs/densitymap/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/colorbar/__init__.py b/plotly/graph_objs/densitymap/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/colorbar/__init__.py rename to plotly/graph_objs/densitymap/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/colorbar/_tickfont.py b/plotly/graph_objs/densitymap/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/colorbar/_tickfont.py rename to plotly/graph_objs/densitymap/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/colorbar/_tickformatstop.py b/plotly/graph_objs/densitymap/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/colorbar/_tickformatstop.py rename to plotly/graph_objs/densitymap/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/colorbar/_title.py b/plotly/graph_objs/densitymap/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/colorbar/_title.py rename to plotly/graph_objs/densitymap/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/colorbar/title/__init__.py b/plotly/graph_objs/densitymap/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/colorbar/title/__init__.py rename to plotly/graph_objs/densitymap/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/colorbar/title/_font.py b/plotly/graph_objs/densitymap/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/colorbar/title/_font.py rename to plotly/graph_objs/densitymap/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/hoverlabel/__init__.py b/plotly/graph_objs/densitymap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/hoverlabel/__init__.py rename to plotly/graph_objs/densitymap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/hoverlabel/_font.py b/plotly/graph_objs/densitymap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/hoverlabel/_font.py rename to plotly/graph_objs/densitymap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/legendgrouptitle/__init__.py b/plotly/graph_objs/densitymap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/legendgrouptitle/__init__.py rename to plotly/graph_objs/densitymap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymap/legendgrouptitle/_font.py b/plotly/graph_objs/densitymap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymap/legendgrouptitle/_font.py rename to plotly/graph_objs/densitymap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/__init__.py b/plotly/graph_objs/densitymapbox/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/__init__.py rename to plotly/graph_objs/densitymapbox/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/_colorbar.py b/plotly/graph_objs/densitymapbox/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/_colorbar.py rename to plotly/graph_objs/densitymapbox/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/_hoverlabel.py b/plotly/graph_objs/densitymapbox/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/_hoverlabel.py rename to plotly/graph_objs/densitymapbox/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/_legendgrouptitle.py b/plotly/graph_objs/densitymapbox/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/_legendgrouptitle.py rename to plotly/graph_objs/densitymapbox/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/_stream.py b/plotly/graph_objs/densitymapbox/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/_stream.py rename to plotly/graph_objs/densitymapbox/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/__init__.py b/plotly/graph_objs/densitymapbox/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/__init__.py rename to plotly/graph_objs/densitymapbox/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/_tickfont.py b/plotly/graph_objs/densitymapbox/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/_tickfont.py rename to plotly/graph_objs/densitymapbox/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/_tickformatstop.py b/plotly/graph_objs/densitymapbox/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/_tickformatstop.py rename to plotly/graph_objs/densitymapbox/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/_title.py b/plotly/graph_objs/densitymapbox/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/_title.py rename to plotly/graph_objs/densitymapbox/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/title/__init__.py b/plotly/graph_objs/densitymapbox/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/title/__init__.py rename to plotly/graph_objs/densitymapbox/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/title/_font.py b/plotly/graph_objs/densitymapbox/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/colorbar/title/_font.py rename to plotly/graph_objs/densitymapbox/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/hoverlabel/__init__.py b/plotly/graph_objs/densitymapbox/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/hoverlabel/__init__.py rename to plotly/graph_objs/densitymapbox/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/hoverlabel/_font.py b/plotly/graph_objs/densitymapbox/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/hoverlabel/_font.py rename to plotly/graph_objs/densitymapbox/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/legendgrouptitle/__init__.py b/plotly/graph_objs/densitymapbox/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/legendgrouptitle/__init__.py rename to plotly/graph_objs/densitymapbox/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/densitymapbox/legendgrouptitle/_font.py b/plotly/graph_objs/densitymapbox/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/densitymapbox/legendgrouptitle/_font.py rename to plotly/graph_objs/densitymapbox/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/__init__.py b/plotly/graph_objs/funnel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/__init__.py rename to plotly/graph_objs/funnel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/_connector.py b/plotly/graph_objs/funnel/_connector.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/_connector.py rename to plotly/graph_objs/funnel/_connector.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/_hoverlabel.py b/plotly/graph_objs/funnel/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/_hoverlabel.py rename to plotly/graph_objs/funnel/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/_insidetextfont.py b/plotly/graph_objs/funnel/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/_insidetextfont.py rename to plotly/graph_objs/funnel/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/_legendgrouptitle.py b/plotly/graph_objs/funnel/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/_legendgrouptitle.py rename to plotly/graph_objs/funnel/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/_marker.py b/plotly/graph_objs/funnel/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/_marker.py rename to plotly/graph_objs/funnel/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/_outsidetextfont.py b/plotly/graph_objs/funnel/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/_outsidetextfont.py rename to plotly/graph_objs/funnel/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/_stream.py b/plotly/graph_objs/funnel/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/_stream.py rename to plotly/graph_objs/funnel/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/_textfont.py b/plotly/graph_objs/funnel/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/_textfont.py rename to plotly/graph_objs/funnel/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/connector/__init__.py b/plotly/graph_objs/funnel/connector/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/connector/__init__.py rename to plotly/graph_objs/funnel/connector/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/connector/_line.py b/plotly/graph_objs/funnel/connector/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/connector/_line.py rename to plotly/graph_objs/funnel/connector/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/hoverlabel/__init__.py b/plotly/graph_objs/funnel/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/hoverlabel/__init__.py rename to plotly/graph_objs/funnel/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/hoverlabel/_font.py b/plotly/graph_objs/funnel/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/hoverlabel/_font.py rename to plotly/graph_objs/funnel/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/legendgrouptitle/__init__.py b/plotly/graph_objs/funnel/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/legendgrouptitle/__init__.py rename to plotly/graph_objs/funnel/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/legendgrouptitle/_font.py b/plotly/graph_objs/funnel/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/legendgrouptitle/_font.py rename to plotly/graph_objs/funnel/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/__init__.py b/plotly/graph_objs/funnel/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/__init__.py rename to plotly/graph_objs/funnel/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/_colorbar.py b/plotly/graph_objs/funnel/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/_colorbar.py rename to plotly/graph_objs/funnel/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/_line.py b/plotly/graph_objs/funnel/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/_line.py rename to plotly/graph_objs/funnel/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/__init__.py b/plotly/graph_objs/funnel/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/__init__.py rename to plotly/graph_objs/funnel/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/_tickfont.py b/plotly/graph_objs/funnel/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/_tickfont.py rename to plotly/graph_objs/funnel/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/funnel/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/funnel/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/_title.py b/plotly/graph_objs/funnel/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/_title.py rename to plotly/graph_objs/funnel/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/title/__init__.py b/plotly/graph_objs/funnel/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/title/__init__.py rename to plotly/graph_objs/funnel/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/title/_font.py b/plotly/graph_objs/funnel/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnel/marker/colorbar/title/_font.py rename to plotly/graph_objs/funnel/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/__init__.py b/plotly/graph_objs/funnelarea/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/__init__.py rename to plotly/graph_objs/funnelarea/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/_domain.py b/plotly/graph_objs/funnelarea/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/_domain.py rename to plotly/graph_objs/funnelarea/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/_hoverlabel.py b/plotly/graph_objs/funnelarea/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/_hoverlabel.py rename to plotly/graph_objs/funnelarea/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/_insidetextfont.py b/plotly/graph_objs/funnelarea/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/_insidetextfont.py rename to plotly/graph_objs/funnelarea/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/_legendgrouptitle.py b/plotly/graph_objs/funnelarea/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/_legendgrouptitle.py rename to plotly/graph_objs/funnelarea/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/_marker.py b/plotly/graph_objs/funnelarea/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/_marker.py rename to plotly/graph_objs/funnelarea/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/_stream.py b/plotly/graph_objs/funnelarea/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/_stream.py rename to plotly/graph_objs/funnelarea/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/_textfont.py b/plotly/graph_objs/funnelarea/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/_textfont.py rename to plotly/graph_objs/funnelarea/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/_title.py b/plotly/graph_objs/funnelarea/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/_title.py rename to plotly/graph_objs/funnelarea/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/hoverlabel/__init__.py b/plotly/graph_objs/funnelarea/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/hoverlabel/__init__.py rename to plotly/graph_objs/funnelarea/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/hoverlabel/_font.py b/plotly/graph_objs/funnelarea/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/hoverlabel/_font.py rename to plotly/graph_objs/funnelarea/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/legendgrouptitle/__init__.py b/plotly/graph_objs/funnelarea/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/legendgrouptitle/__init__.py rename to plotly/graph_objs/funnelarea/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/legendgrouptitle/_font.py b/plotly/graph_objs/funnelarea/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/legendgrouptitle/_font.py rename to plotly/graph_objs/funnelarea/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/marker/__init__.py b/plotly/graph_objs/funnelarea/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/marker/__init__.py rename to plotly/graph_objs/funnelarea/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/marker/_line.py b/plotly/graph_objs/funnelarea/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/marker/_line.py rename to plotly/graph_objs/funnelarea/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/marker/_pattern.py b/plotly/graph_objs/funnelarea/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/marker/_pattern.py rename to plotly/graph_objs/funnelarea/marker/_pattern.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/title/__init__.py b/plotly/graph_objs/funnelarea/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/title/__init__.py rename to plotly/graph_objs/funnelarea/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/funnelarea/title/_font.py b/plotly/graph_objs/funnelarea/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/funnelarea/title/_font.py rename to plotly/graph_objs/funnelarea/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/graph_objs.py b/plotly/graph_objs/graph_objs.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/graph_objs.py rename to plotly/graph_objs/graph_objs.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/__init__.py b/plotly/graph_objs/heatmap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/__init__.py rename to plotly/graph_objs/heatmap/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/_colorbar.py b/plotly/graph_objs/heatmap/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/_colorbar.py rename to plotly/graph_objs/heatmap/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/_hoverlabel.py b/plotly/graph_objs/heatmap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/_hoverlabel.py rename to plotly/graph_objs/heatmap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/_legendgrouptitle.py b/plotly/graph_objs/heatmap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/_legendgrouptitle.py rename to plotly/graph_objs/heatmap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/_stream.py b/plotly/graph_objs/heatmap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/_stream.py rename to plotly/graph_objs/heatmap/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/_textfont.py b/plotly/graph_objs/heatmap/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/_textfont.py rename to plotly/graph_objs/heatmap/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/colorbar/__init__.py b/plotly/graph_objs/heatmap/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/colorbar/__init__.py rename to plotly/graph_objs/heatmap/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/colorbar/_tickfont.py b/plotly/graph_objs/heatmap/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/colorbar/_tickfont.py rename to plotly/graph_objs/heatmap/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/colorbar/_tickformatstop.py b/plotly/graph_objs/heatmap/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/colorbar/_tickformatstop.py rename to plotly/graph_objs/heatmap/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/colorbar/_title.py b/plotly/graph_objs/heatmap/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/colorbar/_title.py rename to plotly/graph_objs/heatmap/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/colorbar/title/__init__.py b/plotly/graph_objs/heatmap/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/colorbar/title/__init__.py rename to plotly/graph_objs/heatmap/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/colorbar/title/_font.py b/plotly/graph_objs/heatmap/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/colorbar/title/_font.py rename to plotly/graph_objs/heatmap/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/hoverlabel/__init__.py b/plotly/graph_objs/heatmap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/hoverlabel/__init__.py rename to plotly/graph_objs/heatmap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/hoverlabel/_font.py b/plotly/graph_objs/heatmap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/hoverlabel/_font.py rename to plotly/graph_objs/heatmap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/legendgrouptitle/__init__.py b/plotly/graph_objs/heatmap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/legendgrouptitle/__init__.py rename to plotly/graph_objs/heatmap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/heatmap/legendgrouptitle/_font.py b/plotly/graph_objs/heatmap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/heatmap/legendgrouptitle/_font.py rename to plotly/graph_objs/heatmap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/__init__.py b/plotly/graph_objs/histogram/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/__init__.py rename to plotly/graph_objs/histogram/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_cumulative.py b/plotly/graph_objs/histogram/_cumulative.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_cumulative.py rename to plotly/graph_objs/histogram/_cumulative.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_error_x.py b/plotly/graph_objs/histogram/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_error_x.py rename to plotly/graph_objs/histogram/_error_x.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_error_y.py b/plotly/graph_objs/histogram/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_error_y.py rename to plotly/graph_objs/histogram/_error_y.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_hoverlabel.py b/plotly/graph_objs/histogram/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_hoverlabel.py rename to plotly/graph_objs/histogram/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_insidetextfont.py b/plotly/graph_objs/histogram/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_insidetextfont.py rename to plotly/graph_objs/histogram/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_legendgrouptitle.py b/plotly/graph_objs/histogram/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_legendgrouptitle.py rename to plotly/graph_objs/histogram/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_marker.py b/plotly/graph_objs/histogram/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_marker.py rename to plotly/graph_objs/histogram/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_outsidetextfont.py b/plotly/graph_objs/histogram/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_outsidetextfont.py rename to plotly/graph_objs/histogram/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_selected.py b/plotly/graph_objs/histogram/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_selected.py rename to plotly/graph_objs/histogram/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_stream.py b/plotly/graph_objs/histogram/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_stream.py rename to plotly/graph_objs/histogram/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_textfont.py b/plotly/graph_objs/histogram/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_textfont.py rename to plotly/graph_objs/histogram/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_unselected.py b/plotly/graph_objs/histogram/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_unselected.py rename to plotly/graph_objs/histogram/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_xbins.py b/plotly/graph_objs/histogram/_xbins.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_xbins.py rename to plotly/graph_objs/histogram/_xbins.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/_ybins.py b/plotly/graph_objs/histogram/_ybins.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/_ybins.py rename to plotly/graph_objs/histogram/_ybins.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/hoverlabel/__init__.py b/plotly/graph_objs/histogram/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/hoverlabel/__init__.py rename to plotly/graph_objs/histogram/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/hoverlabel/_font.py b/plotly/graph_objs/histogram/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/hoverlabel/_font.py rename to plotly/graph_objs/histogram/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/legendgrouptitle/__init__.py b/plotly/graph_objs/histogram/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/legendgrouptitle/__init__.py rename to plotly/graph_objs/histogram/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/legendgrouptitle/_font.py b/plotly/graph_objs/histogram/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/legendgrouptitle/_font.py rename to plotly/graph_objs/histogram/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/__init__.py b/plotly/graph_objs/histogram/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/__init__.py rename to plotly/graph_objs/histogram/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/_colorbar.py b/plotly/graph_objs/histogram/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/_colorbar.py rename to plotly/graph_objs/histogram/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/_line.py b/plotly/graph_objs/histogram/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/_line.py rename to plotly/graph_objs/histogram/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/_pattern.py b/plotly/graph_objs/histogram/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/_pattern.py rename to plotly/graph_objs/histogram/marker/_pattern.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/__init__.py b/plotly/graph_objs/histogram/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/__init__.py rename to plotly/graph_objs/histogram/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/_tickfont.py b/plotly/graph_objs/histogram/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/_tickfont.py rename to plotly/graph_objs/histogram/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/histogram/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/histogram/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/_title.py b/plotly/graph_objs/histogram/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/_title.py rename to plotly/graph_objs/histogram/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/title/__init__.py b/plotly/graph_objs/histogram/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/title/__init__.py rename to plotly/graph_objs/histogram/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/title/_font.py b/plotly/graph_objs/histogram/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/marker/colorbar/title/_font.py rename to plotly/graph_objs/histogram/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/selected/__init__.py b/plotly/graph_objs/histogram/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/selected/__init__.py rename to plotly/graph_objs/histogram/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/selected/_marker.py b/plotly/graph_objs/histogram/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/selected/_marker.py rename to plotly/graph_objs/histogram/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/selected/_textfont.py b/plotly/graph_objs/histogram/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/selected/_textfont.py rename to plotly/graph_objs/histogram/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/unselected/__init__.py b/plotly/graph_objs/histogram/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/unselected/__init__.py rename to plotly/graph_objs/histogram/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/unselected/_marker.py b/plotly/graph_objs/histogram/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/unselected/_marker.py rename to plotly/graph_objs/histogram/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram/unselected/_textfont.py b/plotly/graph_objs/histogram/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram/unselected/_textfont.py rename to plotly/graph_objs/histogram/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/__init__.py b/plotly/graph_objs/histogram2d/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/__init__.py rename to plotly/graph_objs/histogram2d/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/_colorbar.py b/plotly/graph_objs/histogram2d/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/_colorbar.py rename to plotly/graph_objs/histogram2d/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/_hoverlabel.py b/plotly/graph_objs/histogram2d/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/_hoverlabel.py rename to plotly/graph_objs/histogram2d/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/_legendgrouptitle.py b/plotly/graph_objs/histogram2d/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/_legendgrouptitle.py rename to plotly/graph_objs/histogram2d/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/_marker.py b/plotly/graph_objs/histogram2d/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/_marker.py rename to plotly/graph_objs/histogram2d/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/_stream.py b/plotly/graph_objs/histogram2d/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/_stream.py rename to plotly/graph_objs/histogram2d/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/_textfont.py b/plotly/graph_objs/histogram2d/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/_textfont.py rename to plotly/graph_objs/histogram2d/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/_xbins.py b/plotly/graph_objs/histogram2d/_xbins.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/_xbins.py rename to plotly/graph_objs/histogram2d/_xbins.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/_ybins.py b/plotly/graph_objs/histogram2d/_ybins.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/_ybins.py rename to plotly/graph_objs/histogram2d/_ybins.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/__init__.py b/plotly/graph_objs/histogram2d/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/__init__.py rename to plotly/graph_objs/histogram2d/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/_tickfont.py b/plotly/graph_objs/histogram2d/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/_tickfont.py rename to plotly/graph_objs/histogram2d/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/_tickformatstop.py b/plotly/graph_objs/histogram2d/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/_tickformatstop.py rename to plotly/graph_objs/histogram2d/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/_title.py b/plotly/graph_objs/histogram2d/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/_title.py rename to plotly/graph_objs/histogram2d/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/title/__init__.py b/plotly/graph_objs/histogram2d/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/title/__init__.py rename to plotly/graph_objs/histogram2d/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/title/_font.py b/plotly/graph_objs/histogram2d/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/colorbar/title/_font.py rename to plotly/graph_objs/histogram2d/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/hoverlabel/__init__.py b/plotly/graph_objs/histogram2d/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/hoverlabel/__init__.py rename to plotly/graph_objs/histogram2d/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/hoverlabel/_font.py b/plotly/graph_objs/histogram2d/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/hoverlabel/_font.py rename to plotly/graph_objs/histogram2d/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/legendgrouptitle/__init__.py b/plotly/graph_objs/histogram2d/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/legendgrouptitle/__init__.py rename to plotly/graph_objs/histogram2d/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2d/legendgrouptitle/_font.py b/plotly/graph_objs/histogram2d/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2d/legendgrouptitle/_font.py rename to plotly/graph_objs/histogram2d/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/__init__.py b/plotly/graph_objs/histogram2dcontour/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/__init__.py rename to plotly/graph_objs/histogram2dcontour/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_colorbar.py b/plotly/graph_objs/histogram2dcontour/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_colorbar.py rename to plotly/graph_objs/histogram2dcontour/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_contours.py b/plotly/graph_objs/histogram2dcontour/_contours.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_contours.py rename to plotly/graph_objs/histogram2dcontour/_contours.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_hoverlabel.py b/plotly/graph_objs/histogram2dcontour/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_hoverlabel.py rename to plotly/graph_objs/histogram2dcontour/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_legendgrouptitle.py b/plotly/graph_objs/histogram2dcontour/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_legendgrouptitle.py rename to plotly/graph_objs/histogram2dcontour/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_line.py b/plotly/graph_objs/histogram2dcontour/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_line.py rename to plotly/graph_objs/histogram2dcontour/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_marker.py b/plotly/graph_objs/histogram2dcontour/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_marker.py rename to plotly/graph_objs/histogram2dcontour/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_stream.py b/plotly/graph_objs/histogram2dcontour/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_stream.py rename to plotly/graph_objs/histogram2dcontour/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_textfont.py b/plotly/graph_objs/histogram2dcontour/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_textfont.py rename to plotly/graph_objs/histogram2dcontour/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_xbins.py b/plotly/graph_objs/histogram2dcontour/_xbins.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_xbins.py rename to plotly/graph_objs/histogram2dcontour/_xbins.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/_ybins.py b/plotly/graph_objs/histogram2dcontour/_ybins.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/_ybins.py rename to plotly/graph_objs/histogram2dcontour/_ybins.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/__init__.py b/plotly/graph_objs/histogram2dcontour/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/__init__.py rename to plotly/graph_objs/histogram2dcontour/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/_tickfont.py b/plotly/graph_objs/histogram2dcontour/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/_tickfont.py rename to plotly/graph_objs/histogram2dcontour/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/_tickformatstop.py b/plotly/graph_objs/histogram2dcontour/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/_tickformatstop.py rename to plotly/graph_objs/histogram2dcontour/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/_title.py b/plotly/graph_objs/histogram2dcontour/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/_title.py rename to plotly/graph_objs/histogram2dcontour/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/title/__init__.py b/plotly/graph_objs/histogram2dcontour/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/title/__init__.py rename to plotly/graph_objs/histogram2dcontour/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/title/_font.py b/plotly/graph_objs/histogram2dcontour/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/colorbar/title/_font.py rename to plotly/graph_objs/histogram2dcontour/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/contours/__init__.py b/plotly/graph_objs/histogram2dcontour/contours/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/contours/__init__.py rename to plotly/graph_objs/histogram2dcontour/contours/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/contours/_labelfont.py b/plotly/graph_objs/histogram2dcontour/contours/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/contours/_labelfont.py rename to plotly/graph_objs/histogram2dcontour/contours/_labelfont.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/hoverlabel/__init__.py b/plotly/graph_objs/histogram2dcontour/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/hoverlabel/__init__.py rename to plotly/graph_objs/histogram2dcontour/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/hoverlabel/_font.py b/plotly/graph_objs/histogram2dcontour/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/hoverlabel/_font.py rename to plotly/graph_objs/histogram2dcontour/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/legendgrouptitle/__init__.py b/plotly/graph_objs/histogram2dcontour/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/legendgrouptitle/__init__.py rename to plotly/graph_objs/histogram2dcontour/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/histogram2dcontour/legendgrouptitle/_font.py b/plotly/graph_objs/histogram2dcontour/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/histogram2dcontour/legendgrouptitle/_font.py rename to plotly/graph_objs/histogram2dcontour/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/__init__.py b/plotly/graph_objs/icicle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/__init__.py rename to plotly/graph_objs/icicle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_domain.py b/plotly/graph_objs/icicle/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_domain.py rename to plotly/graph_objs/icicle/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_hoverlabel.py b/plotly/graph_objs/icicle/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_hoverlabel.py rename to plotly/graph_objs/icicle/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_insidetextfont.py b/plotly/graph_objs/icicle/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_insidetextfont.py rename to plotly/graph_objs/icicle/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_leaf.py b/plotly/graph_objs/icicle/_leaf.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_leaf.py rename to plotly/graph_objs/icicle/_leaf.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_legendgrouptitle.py b/plotly/graph_objs/icicle/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_legendgrouptitle.py rename to plotly/graph_objs/icicle/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_marker.py b/plotly/graph_objs/icicle/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_marker.py rename to plotly/graph_objs/icicle/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_outsidetextfont.py b/plotly/graph_objs/icicle/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_outsidetextfont.py rename to plotly/graph_objs/icicle/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_pathbar.py b/plotly/graph_objs/icicle/_pathbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_pathbar.py rename to plotly/graph_objs/icicle/_pathbar.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_root.py b/plotly/graph_objs/icicle/_root.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_root.py rename to plotly/graph_objs/icicle/_root.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_stream.py b/plotly/graph_objs/icicle/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_stream.py rename to plotly/graph_objs/icicle/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_textfont.py b/plotly/graph_objs/icicle/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_textfont.py rename to plotly/graph_objs/icicle/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/_tiling.py b/plotly/graph_objs/icicle/_tiling.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/_tiling.py rename to plotly/graph_objs/icicle/_tiling.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/hoverlabel/__init__.py b/plotly/graph_objs/icicle/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/hoverlabel/__init__.py rename to plotly/graph_objs/icicle/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/hoverlabel/_font.py b/plotly/graph_objs/icicle/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/hoverlabel/_font.py rename to plotly/graph_objs/icicle/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/legendgrouptitle/__init__.py b/plotly/graph_objs/icicle/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/legendgrouptitle/__init__.py rename to plotly/graph_objs/icicle/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/legendgrouptitle/_font.py b/plotly/graph_objs/icicle/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/legendgrouptitle/_font.py rename to plotly/graph_objs/icicle/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/__init__.py b/plotly/graph_objs/icicle/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/__init__.py rename to plotly/graph_objs/icicle/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/_colorbar.py b/plotly/graph_objs/icicle/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/_colorbar.py rename to plotly/graph_objs/icicle/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/_line.py b/plotly/graph_objs/icicle/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/_line.py rename to plotly/graph_objs/icicle/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/_pattern.py b/plotly/graph_objs/icicle/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/_pattern.py rename to plotly/graph_objs/icicle/marker/_pattern.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/__init__.py b/plotly/graph_objs/icicle/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/__init__.py rename to plotly/graph_objs/icicle/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/_tickfont.py b/plotly/graph_objs/icicle/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/_tickfont.py rename to plotly/graph_objs/icicle/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/icicle/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/icicle/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/_title.py b/plotly/graph_objs/icicle/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/_title.py rename to plotly/graph_objs/icicle/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/title/__init__.py b/plotly/graph_objs/icicle/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/title/__init__.py rename to plotly/graph_objs/icicle/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/title/_font.py b/plotly/graph_objs/icicle/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/marker/colorbar/title/_font.py rename to plotly/graph_objs/icicle/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/pathbar/__init__.py b/plotly/graph_objs/icicle/pathbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/pathbar/__init__.py rename to plotly/graph_objs/icicle/pathbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/icicle/pathbar/_textfont.py b/plotly/graph_objs/icicle/pathbar/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/icicle/pathbar/_textfont.py rename to plotly/graph_objs/icicle/pathbar/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/image/__init__.py b/plotly/graph_objs/image/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/image/__init__.py rename to plotly/graph_objs/image/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/image/_hoverlabel.py b/plotly/graph_objs/image/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/image/_hoverlabel.py rename to plotly/graph_objs/image/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/image/_legendgrouptitle.py b/plotly/graph_objs/image/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/image/_legendgrouptitle.py rename to plotly/graph_objs/image/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/image/_stream.py b/plotly/graph_objs/image/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/image/_stream.py rename to plotly/graph_objs/image/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/image/hoverlabel/__init__.py b/plotly/graph_objs/image/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/image/hoverlabel/__init__.py rename to plotly/graph_objs/image/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/image/hoverlabel/_font.py b/plotly/graph_objs/image/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/image/hoverlabel/_font.py rename to plotly/graph_objs/image/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/image/legendgrouptitle/__init__.py b/plotly/graph_objs/image/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/image/legendgrouptitle/__init__.py rename to plotly/graph_objs/image/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/image/legendgrouptitle/_font.py b/plotly/graph_objs/image/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/image/legendgrouptitle/_font.py rename to plotly/graph_objs/image/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/__init__.py b/plotly/graph_objs/indicator/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/__init__.py rename to plotly/graph_objs/indicator/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/_delta.py b/plotly/graph_objs/indicator/_delta.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/_delta.py rename to plotly/graph_objs/indicator/_delta.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/_domain.py b/plotly/graph_objs/indicator/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/_domain.py rename to plotly/graph_objs/indicator/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/_gauge.py b/plotly/graph_objs/indicator/_gauge.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/_gauge.py rename to plotly/graph_objs/indicator/_gauge.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/_legendgrouptitle.py b/plotly/graph_objs/indicator/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/_legendgrouptitle.py rename to plotly/graph_objs/indicator/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/_number.py b/plotly/graph_objs/indicator/_number.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/_number.py rename to plotly/graph_objs/indicator/_number.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/_stream.py b/plotly/graph_objs/indicator/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/_stream.py rename to plotly/graph_objs/indicator/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/_title.py b/plotly/graph_objs/indicator/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/_title.py rename to plotly/graph_objs/indicator/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/delta/__init__.py b/plotly/graph_objs/indicator/delta/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/delta/__init__.py rename to plotly/graph_objs/indicator/delta/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/delta/_decreasing.py b/plotly/graph_objs/indicator/delta/_decreasing.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/delta/_decreasing.py rename to plotly/graph_objs/indicator/delta/_decreasing.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/delta/_font.py b/plotly/graph_objs/indicator/delta/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/delta/_font.py rename to plotly/graph_objs/indicator/delta/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/delta/_increasing.py b/plotly/graph_objs/indicator/delta/_increasing.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/delta/_increasing.py rename to plotly/graph_objs/indicator/delta/_increasing.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/__init__.py b/plotly/graph_objs/indicator/gauge/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/__init__.py rename to plotly/graph_objs/indicator/gauge/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/_axis.py b/plotly/graph_objs/indicator/gauge/_axis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/_axis.py rename to plotly/graph_objs/indicator/gauge/_axis.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/_bar.py b/plotly/graph_objs/indicator/gauge/_bar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/_bar.py rename to plotly/graph_objs/indicator/gauge/_bar.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/_step.py b/plotly/graph_objs/indicator/gauge/_step.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/_step.py rename to plotly/graph_objs/indicator/gauge/_step.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/_threshold.py b/plotly/graph_objs/indicator/gauge/_threshold.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/_threshold.py rename to plotly/graph_objs/indicator/gauge/_threshold.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/axis/__init__.py b/plotly/graph_objs/indicator/gauge/axis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/axis/__init__.py rename to plotly/graph_objs/indicator/gauge/axis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/axis/_tickfont.py b/plotly/graph_objs/indicator/gauge/axis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/axis/_tickfont.py rename to plotly/graph_objs/indicator/gauge/axis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/axis/_tickformatstop.py b/plotly/graph_objs/indicator/gauge/axis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/axis/_tickformatstop.py rename to plotly/graph_objs/indicator/gauge/axis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/bar/__init__.py b/plotly/graph_objs/indicator/gauge/bar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/bar/__init__.py rename to plotly/graph_objs/indicator/gauge/bar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/bar/_line.py b/plotly/graph_objs/indicator/gauge/bar/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/bar/_line.py rename to plotly/graph_objs/indicator/gauge/bar/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/step/__init__.py b/plotly/graph_objs/indicator/gauge/step/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/step/__init__.py rename to plotly/graph_objs/indicator/gauge/step/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/step/_line.py b/plotly/graph_objs/indicator/gauge/step/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/step/_line.py rename to plotly/graph_objs/indicator/gauge/step/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/threshold/__init__.py b/plotly/graph_objs/indicator/gauge/threshold/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/threshold/__init__.py rename to plotly/graph_objs/indicator/gauge/threshold/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/gauge/threshold/_line.py b/plotly/graph_objs/indicator/gauge/threshold/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/gauge/threshold/_line.py rename to plotly/graph_objs/indicator/gauge/threshold/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/legendgrouptitle/__init__.py b/plotly/graph_objs/indicator/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/legendgrouptitle/__init__.py rename to plotly/graph_objs/indicator/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/legendgrouptitle/_font.py b/plotly/graph_objs/indicator/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/legendgrouptitle/_font.py rename to plotly/graph_objs/indicator/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/number/__init__.py b/plotly/graph_objs/indicator/number/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/number/__init__.py rename to plotly/graph_objs/indicator/number/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/number/_font.py b/plotly/graph_objs/indicator/number/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/number/_font.py rename to plotly/graph_objs/indicator/number/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/title/__init__.py b/plotly/graph_objs/indicator/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/title/__init__.py rename to plotly/graph_objs/indicator/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/indicator/title/_font.py b/plotly/graph_objs/indicator/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/indicator/title/_font.py rename to plotly/graph_objs/indicator/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/__init__.py b/plotly/graph_objs/isosurface/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/__init__.py rename to plotly/graph_objs/isosurface/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_caps.py b/plotly/graph_objs/isosurface/_caps.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_caps.py rename to plotly/graph_objs/isosurface/_caps.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_colorbar.py b/plotly/graph_objs/isosurface/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_colorbar.py rename to plotly/graph_objs/isosurface/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_contour.py b/plotly/graph_objs/isosurface/_contour.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_contour.py rename to plotly/graph_objs/isosurface/_contour.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_hoverlabel.py b/plotly/graph_objs/isosurface/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_hoverlabel.py rename to plotly/graph_objs/isosurface/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_legendgrouptitle.py b/plotly/graph_objs/isosurface/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_legendgrouptitle.py rename to plotly/graph_objs/isosurface/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_lighting.py b/plotly/graph_objs/isosurface/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_lighting.py rename to plotly/graph_objs/isosurface/_lighting.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_lightposition.py b/plotly/graph_objs/isosurface/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_lightposition.py rename to plotly/graph_objs/isosurface/_lightposition.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_slices.py b/plotly/graph_objs/isosurface/_slices.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_slices.py rename to plotly/graph_objs/isosurface/_slices.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_spaceframe.py b/plotly/graph_objs/isosurface/_spaceframe.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_spaceframe.py rename to plotly/graph_objs/isosurface/_spaceframe.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_stream.py b/plotly/graph_objs/isosurface/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_stream.py rename to plotly/graph_objs/isosurface/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/_surface.py b/plotly/graph_objs/isosurface/_surface.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/_surface.py rename to plotly/graph_objs/isosurface/_surface.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/caps/__init__.py b/plotly/graph_objs/isosurface/caps/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/caps/__init__.py rename to plotly/graph_objs/isosurface/caps/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/caps/_x.py b/plotly/graph_objs/isosurface/caps/_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/caps/_x.py rename to plotly/graph_objs/isosurface/caps/_x.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/caps/_y.py b/plotly/graph_objs/isosurface/caps/_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/caps/_y.py rename to plotly/graph_objs/isosurface/caps/_y.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/caps/_z.py b/plotly/graph_objs/isosurface/caps/_z.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/caps/_z.py rename to plotly/graph_objs/isosurface/caps/_z.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/colorbar/__init__.py b/plotly/graph_objs/isosurface/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/colorbar/__init__.py rename to plotly/graph_objs/isosurface/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/colorbar/_tickfont.py b/plotly/graph_objs/isosurface/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/colorbar/_tickfont.py rename to plotly/graph_objs/isosurface/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/colorbar/_tickformatstop.py b/plotly/graph_objs/isosurface/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/colorbar/_tickformatstop.py rename to plotly/graph_objs/isosurface/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/colorbar/_title.py b/plotly/graph_objs/isosurface/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/colorbar/_title.py rename to plotly/graph_objs/isosurface/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/colorbar/title/__init__.py b/plotly/graph_objs/isosurface/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/colorbar/title/__init__.py rename to plotly/graph_objs/isosurface/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/colorbar/title/_font.py b/plotly/graph_objs/isosurface/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/colorbar/title/_font.py rename to plotly/graph_objs/isosurface/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/hoverlabel/__init__.py b/plotly/graph_objs/isosurface/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/hoverlabel/__init__.py rename to plotly/graph_objs/isosurface/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/hoverlabel/_font.py b/plotly/graph_objs/isosurface/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/hoverlabel/_font.py rename to plotly/graph_objs/isosurface/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/legendgrouptitle/__init__.py b/plotly/graph_objs/isosurface/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/legendgrouptitle/__init__.py rename to plotly/graph_objs/isosurface/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/legendgrouptitle/_font.py b/plotly/graph_objs/isosurface/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/legendgrouptitle/_font.py rename to plotly/graph_objs/isosurface/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/slices/__init__.py b/plotly/graph_objs/isosurface/slices/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/slices/__init__.py rename to plotly/graph_objs/isosurface/slices/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/slices/_x.py b/plotly/graph_objs/isosurface/slices/_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/slices/_x.py rename to plotly/graph_objs/isosurface/slices/_x.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/slices/_y.py b/plotly/graph_objs/isosurface/slices/_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/slices/_y.py rename to plotly/graph_objs/isosurface/slices/_y.py diff --git a/packages/python/plotly/plotly/graph_objs/isosurface/slices/_z.py b/plotly/graph_objs/isosurface/slices/_z.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/isosurface/slices/_z.py rename to plotly/graph_objs/isosurface/slices/_z.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/__init__.py b/plotly/graph_objs/layout/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/__init__.py rename to plotly/graph_objs/layout/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_activeselection.py b/plotly/graph_objs/layout/_activeselection.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_activeselection.py rename to plotly/graph_objs/layout/_activeselection.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_activeshape.py b/plotly/graph_objs/layout/_activeshape.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_activeshape.py rename to plotly/graph_objs/layout/_activeshape.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_annotation.py b/plotly/graph_objs/layout/_annotation.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_annotation.py rename to plotly/graph_objs/layout/_annotation.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_coloraxis.py b/plotly/graph_objs/layout/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_coloraxis.py rename to plotly/graph_objs/layout/_coloraxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_colorscale.py b/plotly/graph_objs/layout/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_colorscale.py rename to plotly/graph_objs/layout/_colorscale.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_font.py b/plotly/graph_objs/layout/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_font.py rename to plotly/graph_objs/layout/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_geo.py b/plotly/graph_objs/layout/_geo.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_geo.py rename to plotly/graph_objs/layout/_geo.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_grid.py b/plotly/graph_objs/layout/_grid.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_grid.py rename to plotly/graph_objs/layout/_grid.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_hoverlabel.py b/plotly/graph_objs/layout/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_hoverlabel.py rename to plotly/graph_objs/layout/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_image.py b/plotly/graph_objs/layout/_image.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_image.py rename to plotly/graph_objs/layout/_image.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_legend.py b/plotly/graph_objs/layout/_legend.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_legend.py rename to plotly/graph_objs/layout/_legend.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_map.py b/plotly/graph_objs/layout/_map.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_map.py rename to plotly/graph_objs/layout/_map.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_mapbox.py b/plotly/graph_objs/layout/_mapbox.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_mapbox.py rename to plotly/graph_objs/layout/_mapbox.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_margin.py b/plotly/graph_objs/layout/_margin.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_margin.py rename to plotly/graph_objs/layout/_margin.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_modebar.py b/plotly/graph_objs/layout/_modebar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_modebar.py rename to plotly/graph_objs/layout/_modebar.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_newselection.py b/plotly/graph_objs/layout/_newselection.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_newselection.py rename to plotly/graph_objs/layout/_newselection.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_newshape.py b/plotly/graph_objs/layout/_newshape.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_newshape.py rename to plotly/graph_objs/layout/_newshape.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_polar.py b/plotly/graph_objs/layout/_polar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_polar.py rename to plotly/graph_objs/layout/_polar.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_scene.py b/plotly/graph_objs/layout/_scene.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_scene.py rename to plotly/graph_objs/layout/_scene.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_selection.py b/plotly/graph_objs/layout/_selection.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_selection.py rename to plotly/graph_objs/layout/_selection.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_shape.py b/plotly/graph_objs/layout/_shape.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_shape.py rename to plotly/graph_objs/layout/_shape.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_slider.py b/plotly/graph_objs/layout/_slider.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_slider.py rename to plotly/graph_objs/layout/_slider.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_smith.py b/plotly/graph_objs/layout/_smith.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_smith.py rename to plotly/graph_objs/layout/_smith.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_template.py b/plotly/graph_objs/layout/_template.py similarity index 96% rename from packages/python/plotly/plotly/graph_objs/layout/_template.py rename to plotly/graph_objs/layout/_template.py index cc93069a078..1f90ba94cb0 100644 --- a/packages/python/plotly/plotly/graph_objs/layout/_template.py +++ b/plotly/graph_objs/layout/_template.py @@ -1,5 +1,6 @@ from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType import copy as _copy +import warnings class Template(_BaseLayoutHierarchyType): @@ -324,7 +325,13 @@ def __init__(self, arg=None, data=None, layout=None, **kwargs): _v = arg.pop("data", None) _v = data if data is not None else _v if _v is not None: - self["data"] = _v + # Template.data contains a 'scattermapbox' key, which causes a + # go.Scattermapbox trace object to be created during validation. + # In order to prevent false deprecation warnings from surfacing, + # we suppress deprecation warnings for this line only. + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=DeprecationWarning) + self["data"] = _v _v = arg.pop("layout", None) _v = layout if layout is not None else _v if _v is not None: diff --git a/packages/python/plotly/plotly/graph_objs/layout/_ternary.py b/plotly/graph_objs/layout/_ternary.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_ternary.py rename to plotly/graph_objs/layout/_ternary.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_title.py b/plotly/graph_objs/layout/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_title.py rename to plotly/graph_objs/layout/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_transition.py b/plotly/graph_objs/layout/_transition.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_transition.py rename to plotly/graph_objs/layout/_transition.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_uniformtext.py b/plotly/graph_objs/layout/_uniformtext.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_uniformtext.py rename to plotly/graph_objs/layout/_uniformtext.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_updatemenu.py b/plotly/graph_objs/layout/_updatemenu.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_updatemenu.py rename to plotly/graph_objs/layout/_updatemenu.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_xaxis.py b/plotly/graph_objs/layout/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_xaxis.py rename to plotly/graph_objs/layout/_xaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/_yaxis.py b/plotly/graph_objs/layout/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/_yaxis.py rename to plotly/graph_objs/layout/_yaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/annotation/__init__.py b/plotly/graph_objs/layout/annotation/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/annotation/__init__.py rename to plotly/graph_objs/layout/annotation/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/annotation/_font.py b/plotly/graph_objs/layout/annotation/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/annotation/_font.py rename to plotly/graph_objs/layout/annotation/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/annotation/_hoverlabel.py b/plotly/graph_objs/layout/annotation/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/annotation/_hoverlabel.py rename to plotly/graph_objs/layout/annotation/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/annotation/hoverlabel/__init__.py b/plotly/graph_objs/layout/annotation/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/annotation/hoverlabel/__init__.py rename to plotly/graph_objs/layout/annotation/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/annotation/hoverlabel/_font.py b/plotly/graph_objs/layout/annotation/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/annotation/hoverlabel/_font.py rename to plotly/graph_objs/layout/annotation/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/coloraxis/__init__.py b/plotly/graph_objs/layout/coloraxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/coloraxis/__init__.py rename to plotly/graph_objs/layout/coloraxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/coloraxis/_colorbar.py b/plotly/graph_objs/layout/coloraxis/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/coloraxis/_colorbar.py rename to plotly/graph_objs/layout/coloraxis/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/__init__.py b/plotly/graph_objs/layout/coloraxis/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/__init__.py rename to plotly/graph_objs/layout/coloraxis/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/_tickfont.py b/plotly/graph_objs/layout/coloraxis/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/_tickfont.py rename to plotly/graph_objs/layout/coloraxis/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/_tickformatstop.py b/plotly/graph_objs/layout/coloraxis/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/_tickformatstop.py rename to plotly/graph_objs/layout/coloraxis/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/_title.py b/plotly/graph_objs/layout/coloraxis/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/_title.py rename to plotly/graph_objs/layout/coloraxis/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/title/__init__.py b/plotly/graph_objs/layout/coloraxis/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/title/__init__.py rename to plotly/graph_objs/layout/coloraxis/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/title/_font.py b/plotly/graph_objs/layout/coloraxis/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/coloraxis/colorbar/title/_font.py rename to plotly/graph_objs/layout/coloraxis/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/geo/__init__.py b/plotly/graph_objs/layout/geo/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/geo/__init__.py rename to plotly/graph_objs/layout/geo/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/geo/_center.py b/plotly/graph_objs/layout/geo/_center.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/geo/_center.py rename to plotly/graph_objs/layout/geo/_center.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/geo/_domain.py b/plotly/graph_objs/layout/geo/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/geo/_domain.py rename to plotly/graph_objs/layout/geo/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/geo/_lataxis.py b/plotly/graph_objs/layout/geo/_lataxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/geo/_lataxis.py rename to plotly/graph_objs/layout/geo/_lataxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/geo/_lonaxis.py b/plotly/graph_objs/layout/geo/_lonaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/geo/_lonaxis.py rename to plotly/graph_objs/layout/geo/_lonaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/geo/_projection.py b/plotly/graph_objs/layout/geo/_projection.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/geo/_projection.py rename to plotly/graph_objs/layout/geo/_projection.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/geo/projection/__init__.py b/plotly/graph_objs/layout/geo/projection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/geo/projection/__init__.py rename to plotly/graph_objs/layout/geo/projection/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/geo/projection/_rotation.py b/plotly/graph_objs/layout/geo/projection/_rotation.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/geo/projection/_rotation.py rename to plotly/graph_objs/layout/geo/projection/_rotation.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/grid/__init__.py b/plotly/graph_objs/layout/grid/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/grid/__init__.py rename to plotly/graph_objs/layout/grid/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/grid/_domain.py b/plotly/graph_objs/layout/grid/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/grid/_domain.py rename to plotly/graph_objs/layout/grid/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/hoverlabel/__init__.py b/plotly/graph_objs/layout/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/hoverlabel/__init__.py rename to plotly/graph_objs/layout/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/hoverlabel/_font.py b/plotly/graph_objs/layout/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/hoverlabel/_font.py rename to plotly/graph_objs/layout/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/hoverlabel/_grouptitlefont.py b/plotly/graph_objs/layout/hoverlabel/_grouptitlefont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/hoverlabel/_grouptitlefont.py rename to plotly/graph_objs/layout/hoverlabel/_grouptitlefont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/legend/__init__.py b/plotly/graph_objs/layout/legend/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/legend/__init__.py rename to plotly/graph_objs/layout/legend/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/legend/_font.py b/plotly/graph_objs/layout/legend/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/legend/_font.py rename to plotly/graph_objs/layout/legend/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/legend/_grouptitlefont.py b/plotly/graph_objs/layout/legend/_grouptitlefont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/legend/_grouptitlefont.py rename to plotly/graph_objs/layout/legend/_grouptitlefont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/legend/_title.py b/plotly/graph_objs/layout/legend/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/legend/_title.py rename to plotly/graph_objs/layout/legend/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/legend/title/__init__.py b/plotly/graph_objs/layout/legend/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/legend/title/__init__.py rename to plotly/graph_objs/layout/legend/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/legend/title/_font.py b/plotly/graph_objs/layout/legend/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/legend/title/_font.py rename to plotly/graph_objs/layout/legend/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/__init__.py b/plotly/graph_objs/layout/map/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/__init__.py rename to plotly/graph_objs/layout/map/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/_bounds.py b/plotly/graph_objs/layout/map/_bounds.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/_bounds.py rename to plotly/graph_objs/layout/map/_bounds.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/_center.py b/plotly/graph_objs/layout/map/_center.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/_center.py rename to plotly/graph_objs/layout/map/_center.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/_domain.py b/plotly/graph_objs/layout/map/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/_domain.py rename to plotly/graph_objs/layout/map/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/_layer.py b/plotly/graph_objs/layout/map/_layer.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/_layer.py rename to plotly/graph_objs/layout/map/_layer.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/layer/__init__.py b/plotly/graph_objs/layout/map/layer/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/layer/__init__.py rename to plotly/graph_objs/layout/map/layer/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/layer/_circle.py b/plotly/graph_objs/layout/map/layer/_circle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/layer/_circle.py rename to plotly/graph_objs/layout/map/layer/_circle.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/layer/_fill.py b/plotly/graph_objs/layout/map/layer/_fill.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/layer/_fill.py rename to plotly/graph_objs/layout/map/layer/_fill.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/layer/_line.py b/plotly/graph_objs/layout/map/layer/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/layer/_line.py rename to plotly/graph_objs/layout/map/layer/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/layer/_symbol.py b/plotly/graph_objs/layout/map/layer/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/layer/_symbol.py rename to plotly/graph_objs/layout/map/layer/_symbol.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/layer/symbol/__init__.py b/plotly/graph_objs/layout/map/layer/symbol/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/layer/symbol/__init__.py rename to plotly/graph_objs/layout/map/layer/symbol/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/map/layer/symbol/_textfont.py b/plotly/graph_objs/layout/map/layer/symbol/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/map/layer/symbol/_textfont.py rename to plotly/graph_objs/layout/map/layer/symbol/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/__init__.py b/plotly/graph_objs/layout/mapbox/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/__init__.py rename to plotly/graph_objs/layout/mapbox/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/_bounds.py b/plotly/graph_objs/layout/mapbox/_bounds.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/_bounds.py rename to plotly/graph_objs/layout/mapbox/_bounds.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/_center.py b/plotly/graph_objs/layout/mapbox/_center.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/_center.py rename to plotly/graph_objs/layout/mapbox/_center.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/_domain.py b/plotly/graph_objs/layout/mapbox/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/_domain.py rename to plotly/graph_objs/layout/mapbox/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/_layer.py b/plotly/graph_objs/layout/mapbox/_layer.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/_layer.py rename to plotly/graph_objs/layout/mapbox/_layer.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/__init__.py b/plotly/graph_objs/layout/mapbox/layer/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/__init__.py rename to plotly/graph_objs/layout/mapbox/layer/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/_circle.py b/plotly/graph_objs/layout/mapbox/layer/_circle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/_circle.py rename to plotly/graph_objs/layout/mapbox/layer/_circle.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/_fill.py b/plotly/graph_objs/layout/mapbox/layer/_fill.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/_fill.py rename to plotly/graph_objs/layout/mapbox/layer/_fill.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/_line.py b/plotly/graph_objs/layout/mapbox/layer/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/_line.py rename to plotly/graph_objs/layout/mapbox/layer/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/_symbol.py b/plotly/graph_objs/layout/mapbox/layer/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/_symbol.py rename to plotly/graph_objs/layout/mapbox/layer/_symbol.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/symbol/__init__.py b/plotly/graph_objs/layout/mapbox/layer/symbol/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/symbol/__init__.py rename to plotly/graph_objs/layout/mapbox/layer/symbol/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/symbol/_textfont.py b/plotly/graph_objs/layout/mapbox/layer/symbol/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/mapbox/layer/symbol/_textfont.py rename to plotly/graph_objs/layout/mapbox/layer/symbol/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newselection/__init__.py b/plotly/graph_objs/layout/newselection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newselection/__init__.py rename to plotly/graph_objs/layout/newselection/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newselection/_line.py b/plotly/graph_objs/layout/newselection/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newselection/_line.py rename to plotly/graph_objs/layout/newselection/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newshape/__init__.py b/plotly/graph_objs/layout/newshape/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newshape/__init__.py rename to plotly/graph_objs/layout/newshape/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newshape/_label.py b/plotly/graph_objs/layout/newshape/_label.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newshape/_label.py rename to plotly/graph_objs/layout/newshape/_label.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newshape/_legendgrouptitle.py b/plotly/graph_objs/layout/newshape/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newshape/_legendgrouptitle.py rename to plotly/graph_objs/layout/newshape/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newshape/_line.py b/plotly/graph_objs/layout/newshape/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newshape/_line.py rename to plotly/graph_objs/layout/newshape/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newshape/label/__init__.py b/plotly/graph_objs/layout/newshape/label/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newshape/label/__init__.py rename to plotly/graph_objs/layout/newshape/label/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newshape/label/_font.py b/plotly/graph_objs/layout/newshape/label/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newshape/label/_font.py rename to plotly/graph_objs/layout/newshape/label/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newshape/legendgrouptitle/__init__.py b/plotly/graph_objs/layout/newshape/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newshape/legendgrouptitle/__init__.py rename to plotly/graph_objs/layout/newshape/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/newshape/legendgrouptitle/_font.py b/plotly/graph_objs/layout/newshape/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/newshape/legendgrouptitle/_font.py rename to plotly/graph_objs/layout/newshape/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/__init__.py b/plotly/graph_objs/layout/polar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/__init__.py rename to plotly/graph_objs/layout/polar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/_angularaxis.py b/plotly/graph_objs/layout/polar/_angularaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/_angularaxis.py rename to plotly/graph_objs/layout/polar/_angularaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/_domain.py b/plotly/graph_objs/layout/polar/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/_domain.py rename to plotly/graph_objs/layout/polar/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/_radialaxis.py b/plotly/graph_objs/layout/polar/_radialaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/_radialaxis.py rename to plotly/graph_objs/layout/polar/_radialaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/angularaxis/__init__.py b/plotly/graph_objs/layout/polar/angularaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/angularaxis/__init__.py rename to plotly/graph_objs/layout/polar/angularaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/angularaxis/_tickfont.py b/plotly/graph_objs/layout/polar/angularaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/angularaxis/_tickfont.py rename to plotly/graph_objs/layout/polar/angularaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/angularaxis/_tickformatstop.py b/plotly/graph_objs/layout/polar/angularaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/angularaxis/_tickformatstop.py rename to plotly/graph_objs/layout/polar/angularaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/__init__.py b/plotly/graph_objs/layout/polar/radialaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/__init__.py rename to plotly/graph_objs/layout/polar/radialaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py b/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py rename to plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_tickfont.py b/plotly/graph_objs/layout/polar/radialaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_tickfont.py rename to plotly/graph_objs/layout/polar/radialaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_tickformatstop.py b/plotly/graph_objs/layout/polar/radialaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_tickformatstop.py rename to plotly/graph_objs/layout/polar/radialaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_title.py b/plotly/graph_objs/layout/polar/radialaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/_title.py rename to plotly/graph_objs/layout/polar/radialaxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/title/__init__.py b/plotly/graph_objs/layout/polar/radialaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/title/__init__.py rename to plotly/graph_objs/layout/polar/radialaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/title/_font.py b/plotly/graph_objs/layout/polar/radialaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/polar/radialaxis/title/_font.py rename to plotly/graph_objs/layout/polar/radialaxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/__init__.py b/plotly/graph_objs/layout/scene/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/__init__.py rename to plotly/graph_objs/layout/scene/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_annotation.py b/plotly/graph_objs/layout/scene/_annotation.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/_annotation.py rename to plotly/graph_objs/layout/scene/_annotation.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_aspectratio.py b/plotly/graph_objs/layout/scene/_aspectratio.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/_aspectratio.py rename to plotly/graph_objs/layout/scene/_aspectratio.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_camera.py b/plotly/graph_objs/layout/scene/_camera.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/_camera.py rename to plotly/graph_objs/layout/scene/_camera.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_domain.py b/plotly/graph_objs/layout/scene/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/_domain.py rename to plotly/graph_objs/layout/scene/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_xaxis.py b/plotly/graph_objs/layout/scene/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/_xaxis.py rename to plotly/graph_objs/layout/scene/_xaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_yaxis.py b/plotly/graph_objs/layout/scene/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/_yaxis.py rename to plotly/graph_objs/layout/scene/_yaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/_zaxis.py b/plotly/graph_objs/layout/scene/_zaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/_zaxis.py rename to plotly/graph_objs/layout/scene/_zaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/annotation/__init__.py b/plotly/graph_objs/layout/scene/annotation/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/annotation/__init__.py rename to plotly/graph_objs/layout/scene/annotation/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/annotation/_font.py b/plotly/graph_objs/layout/scene/annotation/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/annotation/_font.py rename to plotly/graph_objs/layout/scene/annotation/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/annotation/_hoverlabel.py b/plotly/graph_objs/layout/scene/annotation/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/annotation/_hoverlabel.py rename to plotly/graph_objs/layout/scene/annotation/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/annotation/hoverlabel/__init__.py b/plotly/graph_objs/layout/scene/annotation/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/annotation/hoverlabel/__init__.py rename to plotly/graph_objs/layout/scene/annotation/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/annotation/hoverlabel/_font.py b/plotly/graph_objs/layout/scene/annotation/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/annotation/hoverlabel/_font.py rename to plotly/graph_objs/layout/scene/annotation/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/camera/__init__.py b/plotly/graph_objs/layout/scene/camera/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/camera/__init__.py rename to plotly/graph_objs/layout/scene/camera/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/camera/_center.py b/plotly/graph_objs/layout/scene/camera/_center.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/camera/_center.py rename to plotly/graph_objs/layout/scene/camera/_center.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/camera/_eye.py b/plotly/graph_objs/layout/scene/camera/_eye.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/camera/_eye.py rename to plotly/graph_objs/layout/scene/camera/_eye.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/camera/_projection.py b/plotly/graph_objs/layout/scene/camera/_projection.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/camera/_projection.py rename to plotly/graph_objs/layout/scene/camera/_projection.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/camera/_up.py b/plotly/graph_objs/layout/scene/camera/_up.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/camera/_up.py rename to plotly/graph_objs/layout/scene/camera/_up.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/__init__.py b/plotly/graph_objs/layout/scene/xaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/__init__.py rename to plotly/graph_objs/layout/scene/xaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py b/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py rename to plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_tickfont.py b/plotly/graph_objs/layout/scene/xaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_tickfont.py rename to plotly/graph_objs/layout/scene/xaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_tickformatstop.py b/plotly/graph_objs/layout/scene/xaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_tickformatstop.py rename to plotly/graph_objs/layout/scene/xaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_title.py b/plotly/graph_objs/layout/scene/xaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/_title.py rename to plotly/graph_objs/layout/scene/xaxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/title/__init__.py b/plotly/graph_objs/layout/scene/xaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/title/__init__.py rename to plotly/graph_objs/layout/scene/xaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/title/_font.py b/plotly/graph_objs/layout/scene/xaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/xaxis/title/_font.py rename to plotly/graph_objs/layout/scene/xaxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/__init__.py b/plotly/graph_objs/layout/scene/yaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/__init__.py rename to plotly/graph_objs/layout/scene/yaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py b/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py rename to plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_tickfont.py b/plotly/graph_objs/layout/scene/yaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_tickfont.py rename to plotly/graph_objs/layout/scene/yaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_tickformatstop.py b/plotly/graph_objs/layout/scene/yaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_tickformatstop.py rename to plotly/graph_objs/layout/scene/yaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_title.py b/plotly/graph_objs/layout/scene/yaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/_title.py rename to plotly/graph_objs/layout/scene/yaxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/title/__init__.py b/plotly/graph_objs/layout/scene/yaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/title/__init__.py rename to plotly/graph_objs/layout/scene/yaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/title/_font.py b/plotly/graph_objs/layout/scene/yaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/yaxis/title/_font.py rename to plotly/graph_objs/layout/scene/yaxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/__init__.py b/plotly/graph_objs/layout/scene/zaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/__init__.py rename to plotly/graph_objs/layout/scene/zaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py b/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py rename to plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_tickfont.py b/plotly/graph_objs/layout/scene/zaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_tickfont.py rename to plotly/graph_objs/layout/scene/zaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_tickformatstop.py b/plotly/graph_objs/layout/scene/zaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_tickformatstop.py rename to plotly/graph_objs/layout/scene/zaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_title.py b/plotly/graph_objs/layout/scene/zaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/_title.py rename to plotly/graph_objs/layout/scene/zaxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/title/__init__.py b/plotly/graph_objs/layout/scene/zaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/title/__init__.py rename to plotly/graph_objs/layout/scene/zaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/title/_font.py b/plotly/graph_objs/layout/scene/zaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/scene/zaxis/title/_font.py rename to plotly/graph_objs/layout/scene/zaxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/selection/__init__.py b/plotly/graph_objs/layout/selection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/selection/__init__.py rename to plotly/graph_objs/layout/selection/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/selection/_line.py b/plotly/graph_objs/layout/selection/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/selection/_line.py rename to plotly/graph_objs/layout/selection/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/shape/__init__.py b/plotly/graph_objs/layout/shape/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/shape/__init__.py rename to plotly/graph_objs/layout/shape/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/shape/_label.py b/plotly/graph_objs/layout/shape/_label.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/shape/_label.py rename to plotly/graph_objs/layout/shape/_label.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/shape/_legendgrouptitle.py b/plotly/graph_objs/layout/shape/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/shape/_legendgrouptitle.py rename to plotly/graph_objs/layout/shape/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/shape/_line.py b/plotly/graph_objs/layout/shape/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/shape/_line.py rename to plotly/graph_objs/layout/shape/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/shape/label/__init__.py b/plotly/graph_objs/layout/shape/label/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/shape/label/__init__.py rename to plotly/graph_objs/layout/shape/label/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/shape/label/_font.py b/plotly/graph_objs/layout/shape/label/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/shape/label/_font.py rename to plotly/graph_objs/layout/shape/label/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/shape/legendgrouptitle/__init__.py b/plotly/graph_objs/layout/shape/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/shape/legendgrouptitle/__init__.py rename to plotly/graph_objs/layout/shape/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/shape/legendgrouptitle/_font.py b/plotly/graph_objs/layout/shape/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/shape/legendgrouptitle/_font.py rename to plotly/graph_objs/layout/shape/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/slider/__init__.py b/plotly/graph_objs/layout/slider/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/slider/__init__.py rename to plotly/graph_objs/layout/slider/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/slider/_currentvalue.py b/plotly/graph_objs/layout/slider/_currentvalue.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/slider/_currentvalue.py rename to plotly/graph_objs/layout/slider/_currentvalue.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/slider/_font.py b/plotly/graph_objs/layout/slider/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/slider/_font.py rename to plotly/graph_objs/layout/slider/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/slider/_pad.py b/plotly/graph_objs/layout/slider/_pad.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/slider/_pad.py rename to plotly/graph_objs/layout/slider/_pad.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/slider/_step.py b/plotly/graph_objs/layout/slider/_step.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/slider/_step.py rename to plotly/graph_objs/layout/slider/_step.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/slider/_transition.py b/plotly/graph_objs/layout/slider/_transition.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/slider/_transition.py rename to plotly/graph_objs/layout/slider/_transition.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/slider/currentvalue/__init__.py b/plotly/graph_objs/layout/slider/currentvalue/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/slider/currentvalue/__init__.py rename to plotly/graph_objs/layout/slider/currentvalue/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/slider/currentvalue/_font.py b/plotly/graph_objs/layout/slider/currentvalue/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/slider/currentvalue/_font.py rename to plotly/graph_objs/layout/slider/currentvalue/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/smith/__init__.py b/plotly/graph_objs/layout/smith/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/smith/__init__.py rename to plotly/graph_objs/layout/smith/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/smith/_domain.py b/plotly/graph_objs/layout/smith/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/smith/_domain.py rename to plotly/graph_objs/layout/smith/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/smith/_imaginaryaxis.py b/plotly/graph_objs/layout/smith/_imaginaryaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/smith/_imaginaryaxis.py rename to plotly/graph_objs/layout/smith/_imaginaryaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/smith/_realaxis.py b/plotly/graph_objs/layout/smith/_realaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/smith/_realaxis.py rename to plotly/graph_objs/layout/smith/_realaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/smith/imaginaryaxis/__init__.py b/plotly/graph_objs/layout/smith/imaginaryaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/smith/imaginaryaxis/__init__.py rename to plotly/graph_objs/layout/smith/imaginaryaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/smith/imaginaryaxis/_tickfont.py b/plotly/graph_objs/layout/smith/imaginaryaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/smith/imaginaryaxis/_tickfont.py rename to plotly/graph_objs/layout/smith/imaginaryaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/smith/realaxis/__init__.py b/plotly/graph_objs/layout/smith/realaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/smith/realaxis/__init__.py rename to plotly/graph_objs/layout/smith/realaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/smith/realaxis/_tickfont.py b/plotly/graph_objs/layout/smith/realaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/smith/realaxis/_tickfont.py rename to plotly/graph_objs/layout/smith/realaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/__init__.py b/plotly/graph_objs/layout/template/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/__init__.py rename to plotly/graph_objs/layout/template/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/_data.py b/plotly/graph_objs/layout/template/_data.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/_data.py rename to plotly/graph_objs/layout/template/_data.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/_layout.py b/plotly/graph_objs/layout/template/_layout.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/_layout.py rename to plotly/graph_objs/layout/template/_layout.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/__init__.py b/plotly/graph_objs/layout/template/data/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/__init__.py rename to plotly/graph_objs/layout/template/data/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_bar.py b/plotly/graph_objs/layout/template/data/_bar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_bar.py rename to plotly/graph_objs/layout/template/data/_bar.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_barpolar.py b/plotly/graph_objs/layout/template/data/_barpolar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_barpolar.py rename to plotly/graph_objs/layout/template/data/_barpolar.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_box.py b/plotly/graph_objs/layout/template/data/_box.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_box.py rename to plotly/graph_objs/layout/template/data/_box.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_candlestick.py b/plotly/graph_objs/layout/template/data/_candlestick.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_candlestick.py rename to plotly/graph_objs/layout/template/data/_candlestick.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_carpet.py b/plotly/graph_objs/layout/template/data/_carpet.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_carpet.py rename to plotly/graph_objs/layout/template/data/_carpet.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_choropleth.py b/plotly/graph_objs/layout/template/data/_choropleth.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_choropleth.py rename to plotly/graph_objs/layout/template/data/_choropleth.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_choroplethmap.py b/plotly/graph_objs/layout/template/data/_choroplethmap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_choroplethmap.py rename to plotly/graph_objs/layout/template/data/_choroplethmap.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_choroplethmapbox.py b/plotly/graph_objs/layout/template/data/_choroplethmapbox.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_choroplethmapbox.py rename to plotly/graph_objs/layout/template/data/_choroplethmapbox.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_cone.py b/plotly/graph_objs/layout/template/data/_cone.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_cone.py rename to plotly/graph_objs/layout/template/data/_cone.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_contour.py b/plotly/graph_objs/layout/template/data/_contour.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_contour.py rename to plotly/graph_objs/layout/template/data/_contour.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_contourcarpet.py b/plotly/graph_objs/layout/template/data/_contourcarpet.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_contourcarpet.py rename to plotly/graph_objs/layout/template/data/_contourcarpet.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_densitymap.py b/plotly/graph_objs/layout/template/data/_densitymap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_densitymap.py rename to plotly/graph_objs/layout/template/data/_densitymap.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_densitymapbox.py b/plotly/graph_objs/layout/template/data/_densitymapbox.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_densitymapbox.py rename to plotly/graph_objs/layout/template/data/_densitymapbox.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_funnel.py b/plotly/graph_objs/layout/template/data/_funnel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_funnel.py rename to plotly/graph_objs/layout/template/data/_funnel.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_funnelarea.py b/plotly/graph_objs/layout/template/data/_funnelarea.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_funnelarea.py rename to plotly/graph_objs/layout/template/data/_funnelarea.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_heatmap.py b/plotly/graph_objs/layout/template/data/_heatmap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_heatmap.py rename to plotly/graph_objs/layout/template/data/_heatmap.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_histogram.py b/plotly/graph_objs/layout/template/data/_histogram.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_histogram.py rename to plotly/graph_objs/layout/template/data/_histogram.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_histogram2d.py b/plotly/graph_objs/layout/template/data/_histogram2d.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_histogram2d.py rename to plotly/graph_objs/layout/template/data/_histogram2d.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_histogram2dcontour.py b/plotly/graph_objs/layout/template/data/_histogram2dcontour.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_histogram2dcontour.py rename to plotly/graph_objs/layout/template/data/_histogram2dcontour.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_icicle.py b/plotly/graph_objs/layout/template/data/_icicle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_icicle.py rename to plotly/graph_objs/layout/template/data/_icicle.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_image.py b/plotly/graph_objs/layout/template/data/_image.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_image.py rename to plotly/graph_objs/layout/template/data/_image.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_indicator.py b/plotly/graph_objs/layout/template/data/_indicator.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_indicator.py rename to plotly/graph_objs/layout/template/data/_indicator.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_isosurface.py b/plotly/graph_objs/layout/template/data/_isosurface.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_isosurface.py rename to plotly/graph_objs/layout/template/data/_isosurface.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_mesh3d.py b/plotly/graph_objs/layout/template/data/_mesh3d.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_mesh3d.py rename to plotly/graph_objs/layout/template/data/_mesh3d.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_ohlc.py b/plotly/graph_objs/layout/template/data/_ohlc.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_ohlc.py rename to plotly/graph_objs/layout/template/data/_ohlc.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_parcats.py b/plotly/graph_objs/layout/template/data/_parcats.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_parcats.py rename to plotly/graph_objs/layout/template/data/_parcats.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_parcoords.py b/plotly/graph_objs/layout/template/data/_parcoords.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_parcoords.py rename to plotly/graph_objs/layout/template/data/_parcoords.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_pie.py b/plotly/graph_objs/layout/template/data/_pie.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_pie.py rename to plotly/graph_objs/layout/template/data/_pie.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_sankey.py b/plotly/graph_objs/layout/template/data/_sankey.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_sankey.py rename to plotly/graph_objs/layout/template/data/_sankey.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scatter.py b/plotly/graph_objs/layout/template/data/_scatter.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scatter.py rename to plotly/graph_objs/layout/template/data/_scatter.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scatter3d.py b/plotly/graph_objs/layout/template/data/_scatter3d.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scatter3d.py rename to plotly/graph_objs/layout/template/data/_scatter3d.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scattercarpet.py b/plotly/graph_objs/layout/template/data/_scattercarpet.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scattercarpet.py rename to plotly/graph_objs/layout/template/data/_scattercarpet.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scattergeo.py b/plotly/graph_objs/layout/template/data/_scattergeo.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scattergeo.py rename to plotly/graph_objs/layout/template/data/_scattergeo.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scattergl.py b/plotly/graph_objs/layout/template/data/_scattergl.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scattergl.py rename to plotly/graph_objs/layout/template/data/_scattergl.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scattermap.py b/plotly/graph_objs/layout/template/data/_scattermap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scattermap.py rename to plotly/graph_objs/layout/template/data/_scattermap.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scattermapbox.py b/plotly/graph_objs/layout/template/data/_scattermapbox.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scattermapbox.py rename to plotly/graph_objs/layout/template/data/_scattermapbox.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scatterpolar.py b/plotly/graph_objs/layout/template/data/_scatterpolar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scatterpolar.py rename to plotly/graph_objs/layout/template/data/_scatterpolar.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scatterpolargl.py b/plotly/graph_objs/layout/template/data/_scatterpolargl.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scatterpolargl.py rename to plotly/graph_objs/layout/template/data/_scatterpolargl.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scattersmith.py b/plotly/graph_objs/layout/template/data/_scattersmith.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scattersmith.py rename to plotly/graph_objs/layout/template/data/_scattersmith.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_scatterternary.py b/plotly/graph_objs/layout/template/data/_scatterternary.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_scatterternary.py rename to plotly/graph_objs/layout/template/data/_scatterternary.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_splom.py b/plotly/graph_objs/layout/template/data/_splom.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_splom.py rename to plotly/graph_objs/layout/template/data/_splom.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_streamtube.py b/plotly/graph_objs/layout/template/data/_streamtube.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_streamtube.py rename to plotly/graph_objs/layout/template/data/_streamtube.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_sunburst.py b/plotly/graph_objs/layout/template/data/_sunburst.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_sunburst.py rename to plotly/graph_objs/layout/template/data/_sunburst.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_surface.py b/plotly/graph_objs/layout/template/data/_surface.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_surface.py rename to plotly/graph_objs/layout/template/data/_surface.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_table.py b/plotly/graph_objs/layout/template/data/_table.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_table.py rename to plotly/graph_objs/layout/template/data/_table.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_treemap.py b/plotly/graph_objs/layout/template/data/_treemap.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_treemap.py rename to plotly/graph_objs/layout/template/data/_treemap.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_violin.py b/plotly/graph_objs/layout/template/data/_violin.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_violin.py rename to plotly/graph_objs/layout/template/data/_violin.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_volume.py b/plotly/graph_objs/layout/template/data/_volume.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_volume.py rename to plotly/graph_objs/layout/template/data/_volume.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/template/data/_waterfall.py b/plotly/graph_objs/layout/template/data/_waterfall.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/template/data/_waterfall.py rename to plotly/graph_objs/layout/template/data/_waterfall.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/__init__.py b/plotly/graph_objs/layout/ternary/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/__init__.py rename to plotly/graph_objs/layout/ternary/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/_aaxis.py b/plotly/graph_objs/layout/ternary/_aaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/_aaxis.py rename to plotly/graph_objs/layout/ternary/_aaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/_baxis.py b/plotly/graph_objs/layout/ternary/_baxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/_baxis.py rename to plotly/graph_objs/layout/ternary/_baxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/_caxis.py b/plotly/graph_objs/layout/ternary/_caxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/_caxis.py rename to plotly/graph_objs/layout/ternary/_caxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/_domain.py b/plotly/graph_objs/layout/ternary/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/_domain.py rename to plotly/graph_objs/layout/ternary/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/__init__.py b/plotly/graph_objs/layout/ternary/aaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/__init__.py rename to plotly/graph_objs/layout/ternary/aaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/_tickfont.py b/plotly/graph_objs/layout/ternary/aaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/_tickfont.py rename to plotly/graph_objs/layout/ternary/aaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/_tickformatstop.py b/plotly/graph_objs/layout/ternary/aaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/_tickformatstop.py rename to plotly/graph_objs/layout/ternary/aaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/_title.py b/plotly/graph_objs/layout/ternary/aaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/_title.py rename to plotly/graph_objs/layout/ternary/aaxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/title/__init__.py b/plotly/graph_objs/layout/ternary/aaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/title/__init__.py rename to plotly/graph_objs/layout/ternary/aaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/title/_font.py b/plotly/graph_objs/layout/ternary/aaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/aaxis/title/_font.py rename to plotly/graph_objs/layout/ternary/aaxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/__init__.py b/plotly/graph_objs/layout/ternary/baxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/__init__.py rename to plotly/graph_objs/layout/ternary/baxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/_tickfont.py b/plotly/graph_objs/layout/ternary/baxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/_tickfont.py rename to plotly/graph_objs/layout/ternary/baxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/_tickformatstop.py b/plotly/graph_objs/layout/ternary/baxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/_tickformatstop.py rename to plotly/graph_objs/layout/ternary/baxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/_title.py b/plotly/graph_objs/layout/ternary/baxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/_title.py rename to plotly/graph_objs/layout/ternary/baxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/title/__init__.py b/plotly/graph_objs/layout/ternary/baxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/title/__init__.py rename to plotly/graph_objs/layout/ternary/baxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/title/_font.py b/plotly/graph_objs/layout/ternary/baxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/baxis/title/_font.py rename to plotly/graph_objs/layout/ternary/baxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/__init__.py b/plotly/graph_objs/layout/ternary/caxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/__init__.py rename to plotly/graph_objs/layout/ternary/caxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/_tickfont.py b/plotly/graph_objs/layout/ternary/caxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/_tickfont.py rename to plotly/graph_objs/layout/ternary/caxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/_tickformatstop.py b/plotly/graph_objs/layout/ternary/caxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/_tickformatstop.py rename to plotly/graph_objs/layout/ternary/caxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/_title.py b/plotly/graph_objs/layout/ternary/caxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/_title.py rename to plotly/graph_objs/layout/ternary/caxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/title/__init__.py b/plotly/graph_objs/layout/ternary/caxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/title/__init__.py rename to plotly/graph_objs/layout/ternary/caxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/title/_font.py b/plotly/graph_objs/layout/ternary/caxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/ternary/caxis/title/_font.py rename to plotly/graph_objs/layout/ternary/caxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/title/__init__.py b/plotly/graph_objs/layout/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/title/__init__.py rename to plotly/graph_objs/layout/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/title/_font.py b/plotly/graph_objs/layout/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/title/_font.py rename to plotly/graph_objs/layout/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/title/_pad.py b/plotly/graph_objs/layout/title/_pad.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/title/_pad.py rename to plotly/graph_objs/layout/title/_pad.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/title/_subtitle.py b/plotly/graph_objs/layout/title/_subtitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/title/_subtitle.py rename to plotly/graph_objs/layout/title/_subtitle.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/title/subtitle/__init__.py b/plotly/graph_objs/layout/title/subtitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/title/subtitle/__init__.py rename to plotly/graph_objs/layout/title/subtitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/title/subtitle/_font.py b/plotly/graph_objs/layout/title/subtitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/title/subtitle/_font.py rename to plotly/graph_objs/layout/title/subtitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/updatemenu/__init__.py b/plotly/graph_objs/layout/updatemenu/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/updatemenu/__init__.py rename to plotly/graph_objs/layout/updatemenu/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/updatemenu/_button.py b/plotly/graph_objs/layout/updatemenu/_button.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/updatemenu/_button.py rename to plotly/graph_objs/layout/updatemenu/_button.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/updatemenu/_font.py b/plotly/graph_objs/layout/updatemenu/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/updatemenu/_font.py rename to plotly/graph_objs/layout/updatemenu/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/updatemenu/_pad.py b/plotly/graph_objs/layout/updatemenu/_pad.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/updatemenu/_pad.py rename to plotly/graph_objs/layout/updatemenu/_pad.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/__init__.py b/plotly/graph_objs/layout/xaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/__init__.py rename to plotly/graph_objs/layout/xaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_autorangeoptions.py b/plotly/graph_objs/layout/xaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/_autorangeoptions.py rename to plotly/graph_objs/layout/xaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_minor.py b/plotly/graph_objs/layout/xaxis/_minor.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/_minor.py rename to plotly/graph_objs/layout/xaxis/_minor.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_rangebreak.py b/plotly/graph_objs/layout/xaxis/_rangebreak.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/_rangebreak.py rename to plotly/graph_objs/layout/xaxis/_rangebreak.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_rangeselector.py b/plotly/graph_objs/layout/xaxis/_rangeselector.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/_rangeselector.py rename to plotly/graph_objs/layout/xaxis/_rangeselector.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_rangeslider.py b/plotly/graph_objs/layout/xaxis/_rangeslider.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/_rangeslider.py rename to plotly/graph_objs/layout/xaxis/_rangeslider.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_tickfont.py b/plotly/graph_objs/layout/xaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/_tickfont.py rename to plotly/graph_objs/layout/xaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_tickformatstop.py b/plotly/graph_objs/layout/xaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/_tickformatstop.py rename to plotly/graph_objs/layout/xaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/_title.py b/plotly/graph_objs/layout/xaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/_title.py rename to plotly/graph_objs/layout/xaxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeselector/__init__.py b/plotly/graph_objs/layout/xaxis/rangeselector/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeselector/__init__.py rename to plotly/graph_objs/layout/xaxis/rangeselector/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeselector/_button.py b/plotly/graph_objs/layout/xaxis/rangeselector/_button.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeselector/_button.py rename to plotly/graph_objs/layout/xaxis/rangeselector/_button.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeselector/_font.py b/plotly/graph_objs/layout/xaxis/rangeselector/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeselector/_font.py rename to plotly/graph_objs/layout/xaxis/rangeselector/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeslider/__init__.py b/plotly/graph_objs/layout/xaxis/rangeslider/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeslider/__init__.py rename to plotly/graph_objs/layout/xaxis/rangeslider/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeslider/_yaxis.py b/plotly/graph_objs/layout/xaxis/rangeslider/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/rangeslider/_yaxis.py rename to plotly/graph_objs/layout/xaxis/rangeslider/_yaxis.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/title/__init__.py b/plotly/graph_objs/layout/xaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/title/__init__.py rename to plotly/graph_objs/layout/xaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/xaxis/title/_font.py b/plotly/graph_objs/layout/xaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/xaxis/title/_font.py rename to plotly/graph_objs/layout/xaxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/__init__.py b/plotly/graph_objs/layout/yaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/__init__.py rename to plotly/graph_objs/layout/yaxis/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/_autorangeoptions.py b/plotly/graph_objs/layout/yaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/_autorangeoptions.py rename to plotly/graph_objs/layout/yaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/_minor.py b/plotly/graph_objs/layout/yaxis/_minor.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/_minor.py rename to plotly/graph_objs/layout/yaxis/_minor.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/_rangebreak.py b/plotly/graph_objs/layout/yaxis/_rangebreak.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/_rangebreak.py rename to plotly/graph_objs/layout/yaxis/_rangebreak.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/_tickfont.py b/plotly/graph_objs/layout/yaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/_tickfont.py rename to plotly/graph_objs/layout/yaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/_tickformatstop.py b/plotly/graph_objs/layout/yaxis/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/_tickformatstop.py rename to plotly/graph_objs/layout/yaxis/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/_title.py b/plotly/graph_objs/layout/yaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/_title.py rename to plotly/graph_objs/layout/yaxis/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/title/__init__.py b/plotly/graph_objs/layout/yaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/title/__init__.py rename to plotly/graph_objs/layout/yaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/layout/yaxis/title/_font.py b/plotly/graph_objs/layout/yaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/layout/yaxis/title/_font.py rename to plotly/graph_objs/layout/yaxis/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/__init__.py b/plotly/graph_objs/mesh3d/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/__init__.py rename to plotly/graph_objs/mesh3d/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/_colorbar.py b/plotly/graph_objs/mesh3d/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/_colorbar.py rename to plotly/graph_objs/mesh3d/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/_contour.py b/plotly/graph_objs/mesh3d/_contour.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/_contour.py rename to plotly/graph_objs/mesh3d/_contour.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/_hoverlabel.py b/plotly/graph_objs/mesh3d/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/_hoverlabel.py rename to plotly/graph_objs/mesh3d/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/_legendgrouptitle.py b/plotly/graph_objs/mesh3d/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/_legendgrouptitle.py rename to plotly/graph_objs/mesh3d/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/_lighting.py b/plotly/graph_objs/mesh3d/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/_lighting.py rename to plotly/graph_objs/mesh3d/_lighting.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/_lightposition.py b/plotly/graph_objs/mesh3d/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/_lightposition.py rename to plotly/graph_objs/mesh3d/_lightposition.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/_stream.py b/plotly/graph_objs/mesh3d/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/_stream.py rename to plotly/graph_objs/mesh3d/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/__init__.py b/plotly/graph_objs/mesh3d/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/__init__.py rename to plotly/graph_objs/mesh3d/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/_tickfont.py b/plotly/graph_objs/mesh3d/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/_tickfont.py rename to plotly/graph_objs/mesh3d/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/_tickformatstop.py b/plotly/graph_objs/mesh3d/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/_tickformatstop.py rename to plotly/graph_objs/mesh3d/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/_title.py b/plotly/graph_objs/mesh3d/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/_title.py rename to plotly/graph_objs/mesh3d/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/title/__init__.py b/plotly/graph_objs/mesh3d/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/title/__init__.py rename to plotly/graph_objs/mesh3d/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/title/_font.py b/plotly/graph_objs/mesh3d/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/colorbar/title/_font.py rename to plotly/graph_objs/mesh3d/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/hoverlabel/__init__.py b/plotly/graph_objs/mesh3d/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/hoverlabel/__init__.py rename to plotly/graph_objs/mesh3d/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/hoverlabel/_font.py b/plotly/graph_objs/mesh3d/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/hoverlabel/_font.py rename to plotly/graph_objs/mesh3d/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/legendgrouptitle/__init__.py b/plotly/graph_objs/mesh3d/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/legendgrouptitle/__init__.py rename to plotly/graph_objs/mesh3d/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/mesh3d/legendgrouptitle/_font.py b/plotly/graph_objs/mesh3d/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/mesh3d/legendgrouptitle/_font.py rename to plotly/graph_objs/mesh3d/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/__init__.py b/plotly/graph_objs/ohlc/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/__init__.py rename to plotly/graph_objs/ohlc/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/_decreasing.py b/plotly/graph_objs/ohlc/_decreasing.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/_decreasing.py rename to plotly/graph_objs/ohlc/_decreasing.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/_hoverlabel.py b/plotly/graph_objs/ohlc/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/_hoverlabel.py rename to plotly/graph_objs/ohlc/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/_increasing.py b/plotly/graph_objs/ohlc/_increasing.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/_increasing.py rename to plotly/graph_objs/ohlc/_increasing.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/_legendgrouptitle.py b/plotly/graph_objs/ohlc/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/_legendgrouptitle.py rename to plotly/graph_objs/ohlc/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/_line.py b/plotly/graph_objs/ohlc/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/_line.py rename to plotly/graph_objs/ohlc/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/_stream.py b/plotly/graph_objs/ohlc/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/_stream.py rename to plotly/graph_objs/ohlc/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/decreasing/__init__.py b/plotly/graph_objs/ohlc/decreasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/decreasing/__init__.py rename to plotly/graph_objs/ohlc/decreasing/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/decreasing/_line.py b/plotly/graph_objs/ohlc/decreasing/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/decreasing/_line.py rename to plotly/graph_objs/ohlc/decreasing/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/hoverlabel/__init__.py b/plotly/graph_objs/ohlc/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/hoverlabel/__init__.py rename to plotly/graph_objs/ohlc/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/hoverlabel/_font.py b/plotly/graph_objs/ohlc/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/hoverlabel/_font.py rename to plotly/graph_objs/ohlc/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/increasing/__init__.py b/plotly/graph_objs/ohlc/increasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/increasing/__init__.py rename to plotly/graph_objs/ohlc/increasing/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/increasing/_line.py b/plotly/graph_objs/ohlc/increasing/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/increasing/_line.py rename to plotly/graph_objs/ohlc/increasing/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/legendgrouptitle/__init__.py b/plotly/graph_objs/ohlc/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/legendgrouptitle/__init__.py rename to plotly/graph_objs/ohlc/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/ohlc/legendgrouptitle/_font.py b/plotly/graph_objs/ohlc/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/ohlc/legendgrouptitle/_font.py rename to plotly/graph_objs/ohlc/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/__init__.py b/plotly/graph_objs/parcats/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/__init__.py rename to plotly/graph_objs/parcats/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/_dimension.py b/plotly/graph_objs/parcats/_dimension.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/_dimension.py rename to plotly/graph_objs/parcats/_dimension.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/_domain.py b/plotly/graph_objs/parcats/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/_domain.py rename to plotly/graph_objs/parcats/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/_labelfont.py b/plotly/graph_objs/parcats/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/_labelfont.py rename to plotly/graph_objs/parcats/_labelfont.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/_legendgrouptitle.py b/plotly/graph_objs/parcats/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/_legendgrouptitle.py rename to plotly/graph_objs/parcats/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/_line.py b/plotly/graph_objs/parcats/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/_line.py rename to plotly/graph_objs/parcats/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/_stream.py b/plotly/graph_objs/parcats/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/_stream.py rename to plotly/graph_objs/parcats/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/_tickfont.py b/plotly/graph_objs/parcats/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/_tickfont.py rename to plotly/graph_objs/parcats/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/legendgrouptitle/__init__.py b/plotly/graph_objs/parcats/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/legendgrouptitle/__init__.py rename to plotly/graph_objs/parcats/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/legendgrouptitle/_font.py b/plotly/graph_objs/parcats/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/legendgrouptitle/_font.py rename to plotly/graph_objs/parcats/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/line/__init__.py b/plotly/graph_objs/parcats/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/line/__init__.py rename to plotly/graph_objs/parcats/line/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/line/_colorbar.py b/plotly/graph_objs/parcats/line/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/line/_colorbar.py rename to plotly/graph_objs/parcats/line/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/__init__.py b/plotly/graph_objs/parcats/line/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/__init__.py rename to plotly/graph_objs/parcats/line/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/_tickfont.py b/plotly/graph_objs/parcats/line/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/_tickfont.py rename to plotly/graph_objs/parcats/line/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/_tickformatstop.py b/plotly/graph_objs/parcats/line/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/_tickformatstop.py rename to plotly/graph_objs/parcats/line/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/_title.py b/plotly/graph_objs/parcats/line/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/_title.py rename to plotly/graph_objs/parcats/line/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/title/__init__.py b/plotly/graph_objs/parcats/line/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/title/__init__.py rename to plotly/graph_objs/parcats/line/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/title/_font.py b/plotly/graph_objs/parcats/line/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcats/line/colorbar/title/_font.py rename to plotly/graph_objs/parcats/line/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/__init__.py b/plotly/graph_objs/parcoords/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/__init__.py rename to plotly/graph_objs/parcoords/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_dimension.py b/plotly/graph_objs/parcoords/_dimension.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_dimension.py rename to plotly/graph_objs/parcoords/_dimension.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_domain.py b/plotly/graph_objs/parcoords/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_domain.py rename to plotly/graph_objs/parcoords/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_labelfont.py b/plotly/graph_objs/parcoords/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_labelfont.py rename to plotly/graph_objs/parcoords/_labelfont.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_legendgrouptitle.py b/plotly/graph_objs/parcoords/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_legendgrouptitle.py rename to plotly/graph_objs/parcoords/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_line.py b/plotly/graph_objs/parcoords/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_line.py rename to plotly/graph_objs/parcoords/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_rangefont.py b/plotly/graph_objs/parcoords/_rangefont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_rangefont.py rename to plotly/graph_objs/parcoords/_rangefont.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_stream.py b/plotly/graph_objs/parcoords/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_stream.py rename to plotly/graph_objs/parcoords/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_tickfont.py b/plotly/graph_objs/parcoords/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_tickfont.py rename to plotly/graph_objs/parcoords/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/_unselected.py b/plotly/graph_objs/parcoords/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/_unselected.py rename to plotly/graph_objs/parcoords/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/legendgrouptitle/__init__.py b/plotly/graph_objs/parcoords/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/legendgrouptitle/__init__.py rename to plotly/graph_objs/parcoords/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/legendgrouptitle/_font.py b/plotly/graph_objs/parcoords/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/legendgrouptitle/_font.py rename to plotly/graph_objs/parcoords/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/line/__init__.py b/plotly/graph_objs/parcoords/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/line/__init__.py rename to plotly/graph_objs/parcoords/line/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/line/_colorbar.py b/plotly/graph_objs/parcoords/line/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/line/_colorbar.py rename to plotly/graph_objs/parcoords/line/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/__init__.py b/plotly/graph_objs/parcoords/line/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/__init__.py rename to plotly/graph_objs/parcoords/line/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/_tickfont.py b/plotly/graph_objs/parcoords/line/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/_tickfont.py rename to plotly/graph_objs/parcoords/line/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/_tickformatstop.py b/plotly/graph_objs/parcoords/line/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/_tickformatstop.py rename to plotly/graph_objs/parcoords/line/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/_title.py b/plotly/graph_objs/parcoords/line/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/_title.py rename to plotly/graph_objs/parcoords/line/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/title/__init__.py b/plotly/graph_objs/parcoords/line/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/title/__init__.py rename to plotly/graph_objs/parcoords/line/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/title/_font.py b/plotly/graph_objs/parcoords/line/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/line/colorbar/title/_font.py rename to plotly/graph_objs/parcoords/line/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/unselected/__init__.py b/plotly/graph_objs/parcoords/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/unselected/__init__.py rename to plotly/graph_objs/parcoords/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/parcoords/unselected/_line.py b/plotly/graph_objs/parcoords/unselected/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/parcoords/unselected/_line.py rename to plotly/graph_objs/parcoords/unselected/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/__init__.py b/plotly/graph_objs/pie/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/__init__.py rename to plotly/graph_objs/pie/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_domain.py b/plotly/graph_objs/pie/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_domain.py rename to plotly/graph_objs/pie/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_hoverlabel.py b/plotly/graph_objs/pie/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_hoverlabel.py rename to plotly/graph_objs/pie/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_insidetextfont.py b/plotly/graph_objs/pie/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_insidetextfont.py rename to plotly/graph_objs/pie/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_legendgrouptitle.py b/plotly/graph_objs/pie/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_legendgrouptitle.py rename to plotly/graph_objs/pie/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_marker.py b/plotly/graph_objs/pie/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_marker.py rename to plotly/graph_objs/pie/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_outsidetextfont.py b/plotly/graph_objs/pie/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_outsidetextfont.py rename to plotly/graph_objs/pie/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_stream.py b/plotly/graph_objs/pie/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_stream.py rename to plotly/graph_objs/pie/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_textfont.py b/plotly/graph_objs/pie/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_textfont.py rename to plotly/graph_objs/pie/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/_title.py b/plotly/graph_objs/pie/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/_title.py rename to plotly/graph_objs/pie/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/hoverlabel/__init__.py b/plotly/graph_objs/pie/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/hoverlabel/__init__.py rename to plotly/graph_objs/pie/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/hoverlabel/_font.py b/plotly/graph_objs/pie/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/hoverlabel/_font.py rename to plotly/graph_objs/pie/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/legendgrouptitle/__init__.py b/plotly/graph_objs/pie/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/legendgrouptitle/__init__.py rename to plotly/graph_objs/pie/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/legendgrouptitle/_font.py b/plotly/graph_objs/pie/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/legendgrouptitle/_font.py rename to plotly/graph_objs/pie/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/marker/__init__.py b/plotly/graph_objs/pie/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/marker/__init__.py rename to plotly/graph_objs/pie/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/marker/_line.py b/plotly/graph_objs/pie/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/marker/_line.py rename to plotly/graph_objs/pie/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/marker/_pattern.py b/plotly/graph_objs/pie/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/marker/_pattern.py rename to plotly/graph_objs/pie/marker/_pattern.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/title/__init__.py b/plotly/graph_objs/pie/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/title/__init__.py rename to plotly/graph_objs/pie/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/pie/title/_font.py b/plotly/graph_objs/pie/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/pie/title/_font.py rename to plotly/graph_objs/pie/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/__init__.py b/plotly/graph_objs/sankey/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/__init__.py rename to plotly/graph_objs/sankey/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/_domain.py b/plotly/graph_objs/sankey/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/_domain.py rename to plotly/graph_objs/sankey/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/_hoverlabel.py b/plotly/graph_objs/sankey/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/_hoverlabel.py rename to plotly/graph_objs/sankey/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/_legendgrouptitle.py b/plotly/graph_objs/sankey/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/_legendgrouptitle.py rename to plotly/graph_objs/sankey/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/_link.py b/plotly/graph_objs/sankey/_link.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/_link.py rename to plotly/graph_objs/sankey/_link.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/_node.py b/plotly/graph_objs/sankey/_node.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/_node.py rename to plotly/graph_objs/sankey/_node.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/_stream.py b/plotly/graph_objs/sankey/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/_stream.py rename to plotly/graph_objs/sankey/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/_textfont.py b/plotly/graph_objs/sankey/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/_textfont.py rename to plotly/graph_objs/sankey/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/hoverlabel/__init__.py b/plotly/graph_objs/sankey/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/hoverlabel/__init__.py rename to plotly/graph_objs/sankey/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/hoverlabel/_font.py b/plotly/graph_objs/sankey/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/hoverlabel/_font.py rename to plotly/graph_objs/sankey/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/legendgrouptitle/__init__.py b/plotly/graph_objs/sankey/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/legendgrouptitle/__init__.py rename to plotly/graph_objs/sankey/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/legendgrouptitle/_font.py b/plotly/graph_objs/sankey/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/legendgrouptitle/_font.py rename to plotly/graph_objs/sankey/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/link/__init__.py b/plotly/graph_objs/sankey/link/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/link/__init__.py rename to plotly/graph_objs/sankey/link/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/link/_colorscale.py b/plotly/graph_objs/sankey/link/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/link/_colorscale.py rename to plotly/graph_objs/sankey/link/_colorscale.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/link/_hoverlabel.py b/plotly/graph_objs/sankey/link/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/link/_hoverlabel.py rename to plotly/graph_objs/sankey/link/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/link/_line.py b/plotly/graph_objs/sankey/link/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/link/_line.py rename to plotly/graph_objs/sankey/link/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/link/hoverlabel/__init__.py b/plotly/graph_objs/sankey/link/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/link/hoverlabel/__init__.py rename to plotly/graph_objs/sankey/link/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/link/hoverlabel/_font.py b/plotly/graph_objs/sankey/link/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/link/hoverlabel/_font.py rename to plotly/graph_objs/sankey/link/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/node/__init__.py b/plotly/graph_objs/sankey/node/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/node/__init__.py rename to plotly/graph_objs/sankey/node/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/node/_hoverlabel.py b/plotly/graph_objs/sankey/node/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/node/_hoverlabel.py rename to plotly/graph_objs/sankey/node/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/node/_line.py b/plotly/graph_objs/sankey/node/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/node/_line.py rename to plotly/graph_objs/sankey/node/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/node/hoverlabel/__init__.py b/plotly/graph_objs/sankey/node/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/node/hoverlabel/__init__.py rename to plotly/graph_objs/sankey/node/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sankey/node/hoverlabel/_font.py b/plotly/graph_objs/sankey/node/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sankey/node/hoverlabel/_font.py rename to plotly/graph_objs/sankey/node/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/__init__.py b/plotly/graph_objs/scatter/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/__init__.py rename to plotly/graph_objs/scatter/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_error_x.py b/plotly/graph_objs/scatter/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_error_x.py rename to plotly/graph_objs/scatter/_error_x.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_error_y.py b/plotly/graph_objs/scatter/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_error_y.py rename to plotly/graph_objs/scatter/_error_y.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_fillgradient.py b/plotly/graph_objs/scatter/_fillgradient.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_fillgradient.py rename to plotly/graph_objs/scatter/_fillgradient.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_fillpattern.py b/plotly/graph_objs/scatter/_fillpattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_fillpattern.py rename to plotly/graph_objs/scatter/_fillpattern.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_hoverlabel.py b/plotly/graph_objs/scatter/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_hoverlabel.py rename to plotly/graph_objs/scatter/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_legendgrouptitle.py b/plotly/graph_objs/scatter/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_legendgrouptitle.py rename to plotly/graph_objs/scatter/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_line.py b/plotly/graph_objs/scatter/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_line.py rename to plotly/graph_objs/scatter/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_marker.py b/plotly/graph_objs/scatter/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_marker.py rename to plotly/graph_objs/scatter/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_selected.py b/plotly/graph_objs/scatter/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_selected.py rename to plotly/graph_objs/scatter/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_stream.py b/plotly/graph_objs/scatter/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_stream.py rename to plotly/graph_objs/scatter/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_textfont.py b/plotly/graph_objs/scatter/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_textfont.py rename to plotly/graph_objs/scatter/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/_unselected.py b/plotly/graph_objs/scatter/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/_unselected.py rename to plotly/graph_objs/scatter/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/hoverlabel/__init__.py b/plotly/graph_objs/scatter/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/hoverlabel/__init__.py rename to plotly/graph_objs/scatter/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/hoverlabel/_font.py b/plotly/graph_objs/scatter/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/hoverlabel/_font.py rename to plotly/graph_objs/scatter/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/legendgrouptitle/__init__.py b/plotly/graph_objs/scatter/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/legendgrouptitle/__init__.py rename to plotly/graph_objs/scatter/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/legendgrouptitle/_font.py b/plotly/graph_objs/scatter/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/legendgrouptitle/_font.py rename to plotly/graph_objs/scatter/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/__init__.py b/plotly/graph_objs/scatter/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/__init__.py rename to plotly/graph_objs/scatter/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/_colorbar.py b/plotly/graph_objs/scatter/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/_colorbar.py rename to plotly/graph_objs/scatter/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/_gradient.py b/plotly/graph_objs/scatter/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/_gradient.py rename to plotly/graph_objs/scatter/marker/_gradient.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/_line.py b/plotly/graph_objs/scatter/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/_line.py rename to plotly/graph_objs/scatter/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/__init__.py b/plotly/graph_objs/scatter/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/__init__.py rename to plotly/graph_objs/scatter/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/_tickfont.py b/plotly/graph_objs/scatter/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scatter/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scatter/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scatter/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/_title.py b/plotly/graph_objs/scatter/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/_title.py rename to plotly/graph_objs/scatter/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/title/__init__.py b/plotly/graph_objs/scatter/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scatter/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/title/_font.py b/plotly/graph_objs/scatter/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/marker/colorbar/title/_font.py rename to plotly/graph_objs/scatter/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/selected/__init__.py b/plotly/graph_objs/scatter/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/selected/__init__.py rename to plotly/graph_objs/scatter/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/selected/_marker.py b/plotly/graph_objs/scatter/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/selected/_marker.py rename to plotly/graph_objs/scatter/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/selected/_textfont.py b/plotly/graph_objs/scatter/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/selected/_textfont.py rename to plotly/graph_objs/scatter/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/unselected/__init__.py b/plotly/graph_objs/scatter/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/unselected/__init__.py rename to plotly/graph_objs/scatter/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/unselected/_marker.py b/plotly/graph_objs/scatter/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/unselected/_marker.py rename to plotly/graph_objs/scatter/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter/unselected/_textfont.py b/plotly/graph_objs/scatter/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter/unselected/_textfont.py rename to plotly/graph_objs/scatter/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/__init__.py b/plotly/graph_objs/scatter3d/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/__init__.py rename to plotly/graph_objs/scatter3d/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_error_x.py b/plotly/graph_objs/scatter3d/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_error_x.py rename to plotly/graph_objs/scatter3d/_error_x.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_error_y.py b/plotly/graph_objs/scatter3d/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_error_y.py rename to plotly/graph_objs/scatter3d/_error_y.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_error_z.py b/plotly/graph_objs/scatter3d/_error_z.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_error_z.py rename to plotly/graph_objs/scatter3d/_error_z.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_hoverlabel.py b/plotly/graph_objs/scatter3d/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_hoverlabel.py rename to plotly/graph_objs/scatter3d/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_legendgrouptitle.py b/plotly/graph_objs/scatter3d/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_legendgrouptitle.py rename to plotly/graph_objs/scatter3d/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_line.py b/plotly/graph_objs/scatter3d/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_line.py rename to plotly/graph_objs/scatter3d/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_marker.py b/plotly/graph_objs/scatter3d/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_marker.py rename to plotly/graph_objs/scatter3d/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_projection.py b/plotly/graph_objs/scatter3d/_projection.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_projection.py rename to plotly/graph_objs/scatter3d/_projection.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_stream.py b/plotly/graph_objs/scatter3d/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_stream.py rename to plotly/graph_objs/scatter3d/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/_textfont.py b/plotly/graph_objs/scatter3d/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/_textfont.py rename to plotly/graph_objs/scatter3d/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/hoverlabel/__init__.py b/plotly/graph_objs/scatter3d/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/hoverlabel/__init__.py rename to plotly/graph_objs/scatter3d/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/hoverlabel/_font.py b/plotly/graph_objs/scatter3d/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/hoverlabel/_font.py rename to plotly/graph_objs/scatter3d/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/legendgrouptitle/__init__.py b/plotly/graph_objs/scatter3d/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/legendgrouptitle/__init__.py rename to plotly/graph_objs/scatter3d/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/legendgrouptitle/_font.py b/plotly/graph_objs/scatter3d/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/legendgrouptitle/_font.py rename to plotly/graph_objs/scatter3d/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/line/__init__.py b/plotly/graph_objs/scatter3d/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/line/__init__.py rename to plotly/graph_objs/scatter3d/line/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/line/_colorbar.py b/plotly/graph_objs/scatter3d/line/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/line/_colorbar.py rename to plotly/graph_objs/scatter3d/line/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/__init__.py b/plotly/graph_objs/scatter3d/line/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/__init__.py rename to plotly/graph_objs/scatter3d/line/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/_tickfont.py b/plotly/graph_objs/scatter3d/line/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/_tickfont.py rename to plotly/graph_objs/scatter3d/line/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/_tickformatstop.py b/plotly/graph_objs/scatter3d/line/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/_tickformatstop.py rename to plotly/graph_objs/scatter3d/line/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/_title.py b/plotly/graph_objs/scatter3d/line/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/_title.py rename to plotly/graph_objs/scatter3d/line/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/title/__init__.py b/plotly/graph_objs/scatter3d/line/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/title/__init__.py rename to plotly/graph_objs/scatter3d/line/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/title/_font.py b/plotly/graph_objs/scatter3d/line/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/line/colorbar/title/_font.py rename to plotly/graph_objs/scatter3d/line/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/__init__.py b/plotly/graph_objs/scatter3d/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/__init__.py rename to plotly/graph_objs/scatter3d/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/_colorbar.py b/plotly/graph_objs/scatter3d/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/_colorbar.py rename to plotly/graph_objs/scatter3d/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/_line.py b/plotly/graph_objs/scatter3d/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/_line.py rename to plotly/graph_objs/scatter3d/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/__init__.py b/plotly/graph_objs/scatter3d/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/__init__.py rename to plotly/graph_objs/scatter3d/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/_tickfont.py b/plotly/graph_objs/scatter3d/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scatter3d/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scatter3d/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scatter3d/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/_title.py b/plotly/graph_objs/scatter3d/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/_title.py rename to plotly/graph_objs/scatter3d/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/title/__init__.py b/plotly/graph_objs/scatter3d/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scatter3d/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/title/_font.py b/plotly/graph_objs/scatter3d/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/marker/colorbar/title/_font.py rename to plotly/graph_objs/scatter3d/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/projection/__init__.py b/plotly/graph_objs/scatter3d/projection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/projection/__init__.py rename to plotly/graph_objs/scatter3d/projection/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/projection/_x.py b/plotly/graph_objs/scatter3d/projection/_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/projection/_x.py rename to plotly/graph_objs/scatter3d/projection/_x.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/projection/_y.py b/plotly/graph_objs/scatter3d/projection/_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/projection/_y.py rename to plotly/graph_objs/scatter3d/projection/_y.py diff --git a/packages/python/plotly/plotly/graph_objs/scatter3d/projection/_z.py b/plotly/graph_objs/scatter3d/projection/_z.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatter3d/projection/_z.py rename to plotly/graph_objs/scatter3d/projection/_z.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/__init__.py b/plotly/graph_objs/scattercarpet/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/__init__.py rename to plotly/graph_objs/scattercarpet/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/_hoverlabel.py b/plotly/graph_objs/scattercarpet/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/_hoverlabel.py rename to plotly/graph_objs/scattercarpet/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/_legendgrouptitle.py b/plotly/graph_objs/scattercarpet/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/_legendgrouptitle.py rename to plotly/graph_objs/scattercarpet/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/_line.py b/plotly/graph_objs/scattercarpet/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/_line.py rename to plotly/graph_objs/scattercarpet/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/_marker.py b/plotly/graph_objs/scattercarpet/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/_marker.py rename to plotly/graph_objs/scattercarpet/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/_selected.py b/plotly/graph_objs/scattercarpet/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/_selected.py rename to plotly/graph_objs/scattercarpet/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/_stream.py b/plotly/graph_objs/scattercarpet/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/_stream.py rename to plotly/graph_objs/scattercarpet/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/_textfont.py b/plotly/graph_objs/scattercarpet/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/_textfont.py rename to plotly/graph_objs/scattercarpet/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/_unselected.py b/plotly/graph_objs/scattercarpet/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/_unselected.py rename to plotly/graph_objs/scattercarpet/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/hoverlabel/__init__.py b/plotly/graph_objs/scattercarpet/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/hoverlabel/__init__.py rename to plotly/graph_objs/scattercarpet/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/hoverlabel/_font.py b/plotly/graph_objs/scattercarpet/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/hoverlabel/_font.py rename to plotly/graph_objs/scattercarpet/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/legendgrouptitle/__init__.py b/plotly/graph_objs/scattercarpet/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/legendgrouptitle/__init__.py rename to plotly/graph_objs/scattercarpet/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/legendgrouptitle/_font.py b/plotly/graph_objs/scattercarpet/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/legendgrouptitle/_font.py rename to plotly/graph_objs/scattercarpet/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/__init__.py b/plotly/graph_objs/scattercarpet/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/__init__.py rename to plotly/graph_objs/scattercarpet/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/_colorbar.py b/plotly/graph_objs/scattercarpet/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/_colorbar.py rename to plotly/graph_objs/scattercarpet/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/_gradient.py b/plotly/graph_objs/scattercarpet/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/_gradient.py rename to plotly/graph_objs/scattercarpet/marker/_gradient.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/_line.py b/plotly/graph_objs/scattercarpet/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/_line.py rename to plotly/graph_objs/scattercarpet/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/__init__.py b/plotly/graph_objs/scattercarpet/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/__init__.py rename to plotly/graph_objs/scattercarpet/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/_tickfont.py b/plotly/graph_objs/scattercarpet/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scattercarpet/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scattercarpet/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scattercarpet/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/_title.py b/plotly/graph_objs/scattercarpet/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/_title.py rename to plotly/graph_objs/scattercarpet/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/title/__init__.py b/plotly/graph_objs/scattercarpet/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scattercarpet/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/title/_font.py b/plotly/graph_objs/scattercarpet/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/marker/colorbar/title/_font.py rename to plotly/graph_objs/scattercarpet/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/selected/__init__.py b/plotly/graph_objs/scattercarpet/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/selected/__init__.py rename to plotly/graph_objs/scattercarpet/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/selected/_marker.py b/plotly/graph_objs/scattercarpet/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/selected/_marker.py rename to plotly/graph_objs/scattercarpet/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/selected/_textfont.py b/plotly/graph_objs/scattercarpet/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/selected/_textfont.py rename to plotly/graph_objs/scattercarpet/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/unselected/__init__.py b/plotly/graph_objs/scattercarpet/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/unselected/__init__.py rename to plotly/graph_objs/scattercarpet/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/unselected/_marker.py b/plotly/graph_objs/scattercarpet/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/unselected/_marker.py rename to plotly/graph_objs/scattercarpet/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattercarpet/unselected/_textfont.py b/plotly/graph_objs/scattercarpet/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattercarpet/unselected/_textfont.py rename to plotly/graph_objs/scattercarpet/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/__init__.py b/plotly/graph_objs/scattergeo/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/__init__.py rename to plotly/graph_objs/scattergeo/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/_hoverlabel.py b/plotly/graph_objs/scattergeo/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/_hoverlabel.py rename to plotly/graph_objs/scattergeo/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/_legendgrouptitle.py b/plotly/graph_objs/scattergeo/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/_legendgrouptitle.py rename to plotly/graph_objs/scattergeo/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/_line.py b/plotly/graph_objs/scattergeo/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/_line.py rename to plotly/graph_objs/scattergeo/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/_marker.py b/plotly/graph_objs/scattergeo/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/_marker.py rename to plotly/graph_objs/scattergeo/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/_selected.py b/plotly/graph_objs/scattergeo/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/_selected.py rename to plotly/graph_objs/scattergeo/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/_stream.py b/plotly/graph_objs/scattergeo/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/_stream.py rename to plotly/graph_objs/scattergeo/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/_textfont.py b/plotly/graph_objs/scattergeo/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/_textfont.py rename to plotly/graph_objs/scattergeo/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/_unselected.py b/plotly/graph_objs/scattergeo/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/_unselected.py rename to plotly/graph_objs/scattergeo/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/hoverlabel/__init__.py b/plotly/graph_objs/scattergeo/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/hoverlabel/__init__.py rename to plotly/graph_objs/scattergeo/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/hoverlabel/_font.py b/plotly/graph_objs/scattergeo/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/hoverlabel/_font.py rename to plotly/graph_objs/scattergeo/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/legendgrouptitle/__init__.py b/plotly/graph_objs/scattergeo/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/legendgrouptitle/__init__.py rename to plotly/graph_objs/scattergeo/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/legendgrouptitle/_font.py b/plotly/graph_objs/scattergeo/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/legendgrouptitle/_font.py rename to plotly/graph_objs/scattergeo/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/__init__.py b/plotly/graph_objs/scattergeo/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/__init__.py rename to plotly/graph_objs/scattergeo/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/_colorbar.py b/plotly/graph_objs/scattergeo/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/_colorbar.py rename to plotly/graph_objs/scattergeo/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/_gradient.py b/plotly/graph_objs/scattergeo/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/_gradient.py rename to plotly/graph_objs/scattergeo/marker/_gradient.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/_line.py b/plotly/graph_objs/scattergeo/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/_line.py rename to plotly/graph_objs/scattergeo/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/__init__.py b/plotly/graph_objs/scattergeo/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/__init__.py rename to plotly/graph_objs/scattergeo/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/_tickfont.py b/plotly/graph_objs/scattergeo/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scattergeo/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scattergeo/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scattergeo/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/_title.py b/plotly/graph_objs/scattergeo/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/_title.py rename to plotly/graph_objs/scattergeo/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/title/__init__.py b/plotly/graph_objs/scattergeo/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scattergeo/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/title/_font.py b/plotly/graph_objs/scattergeo/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/marker/colorbar/title/_font.py rename to plotly/graph_objs/scattergeo/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/selected/__init__.py b/plotly/graph_objs/scattergeo/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/selected/__init__.py rename to plotly/graph_objs/scattergeo/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/selected/_marker.py b/plotly/graph_objs/scattergeo/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/selected/_marker.py rename to plotly/graph_objs/scattergeo/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/selected/_textfont.py b/plotly/graph_objs/scattergeo/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/selected/_textfont.py rename to plotly/graph_objs/scattergeo/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/unselected/__init__.py b/plotly/graph_objs/scattergeo/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/unselected/__init__.py rename to plotly/graph_objs/scattergeo/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/unselected/_marker.py b/plotly/graph_objs/scattergeo/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/unselected/_marker.py rename to plotly/graph_objs/scattergeo/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergeo/unselected/_textfont.py b/plotly/graph_objs/scattergeo/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergeo/unselected/_textfont.py rename to plotly/graph_objs/scattergeo/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/__init__.py b/plotly/graph_objs/scattergl/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/__init__.py rename to plotly/graph_objs/scattergl/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_error_x.py b/plotly/graph_objs/scattergl/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_error_x.py rename to plotly/graph_objs/scattergl/_error_x.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_error_y.py b/plotly/graph_objs/scattergl/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_error_y.py rename to plotly/graph_objs/scattergl/_error_y.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_hoverlabel.py b/plotly/graph_objs/scattergl/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_hoverlabel.py rename to plotly/graph_objs/scattergl/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_legendgrouptitle.py b/plotly/graph_objs/scattergl/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_legendgrouptitle.py rename to plotly/graph_objs/scattergl/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_line.py b/plotly/graph_objs/scattergl/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_line.py rename to plotly/graph_objs/scattergl/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_marker.py b/plotly/graph_objs/scattergl/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_marker.py rename to plotly/graph_objs/scattergl/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_selected.py b/plotly/graph_objs/scattergl/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_selected.py rename to plotly/graph_objs/scattergl/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_stream.py b/plotly/graph_objs/scattergl/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_stream.py rename to plotly/graph_objs/scattergl/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_textfont.py b/plotly/graph_objs/scattergl/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_textfont.py rename to plotly/graph_objs/scattergl/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/_unselected.py b/plotly/graph_objs/scattergl/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/_unselected.py rename to plotly/graph_objs/scattergl/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/hoverlabel/__init__.py b/plotly/graph_objs/scattergl/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/hoverlabel/__init__.py rename to plotly/graph_objs/scattergl/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/hoverlabel/_font.py b/plotly/graph_objs/scattergl/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/hoverlabel/_font.py rename to plotly/graph_objs/scattergl/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/legendgrouptitle/__init__.py b/plotly/graph_objs/scattergl/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/legendgrouptitle/__init__.py rename to plotly/graph_objs/scattergl/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/legendgrouptitle/_font.py b/plotly/graph_objs/scattergl/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/legendgrouptitle/_font.py rename to plotly/graph_objs/scattergl/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/__init__.py b/plotly/graph_objs/scattergl/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/__init__.py rename to plotly/graph_objs/scattergl/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/_colorbar.py b/plotly/graph_objs/scattergl/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/_colorbar.py rename to plotly/graph_objs/scattergl/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/_line.py b/plotly/graph_objs/scattergl/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/_line.py rename to plotly/graph_objs/scattergl/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/__init__.py b/plotly/graph_objs/scattergl/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/__init__.py rename to plotly/graph_objs/scattergl/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/_tickfont.py b/plotly/graph_objs/scattergl/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scattergl/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scattergl/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scattergl/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/_title.py b/plotly/graph_objs/scattergl/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/_title.py rename to plotly/graph_objs/scattergl/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/title/__init__.py b/plotly/graph_objs/scattergl/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scattergl/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/title/_font.py b/plotly/graph_objs/scattergl/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/marker/colorbar/title/_font.py rename to plotly/graph_objs/scattergl/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/selected/__init__.py b/plotly/graph_objs/scattergl/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/selected/__init__.py rename to plotly/graph_objs/scattergl/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/selected/_marker.py b/plotly/graph_objs/scattergl/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/selected/_marker.py rename to plotly/graph_objs/scattergl/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/selected/_textfont.py b/plotly/graph_objs/scattergl/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/selected/_textfont.py rename to plotly/graph_objs/scattergl/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/unselected/__init__.py b/plotly/graph_objs/scattergl/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/unselected/__init__.py rename to plotly/graph_objs/scattergl/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/unselected/_marker.py b/plotly/graph_objs/scattergl/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/unselected/_marker.py rename to plotly/graph_objs/scattergl/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattergl/unselected/_textfont.py b/plotly/graph_objs/scattergl/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattergl/unselected/_textfont.py rename to plotly/graph_objs/scattergl/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/__init__.py b/plotly/graph_objs/scattermap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/__init__.py rename to plotly/graph_objs/scattermap/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_cluster.py b/plotly/graph_objs/scattermap/_cluster.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_cluster.py rename to plotly/graph_objs/scattermap/_cluster.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_hoverlabel.py b/plotly/graph_objs/scattermap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_hoverlabel.py rename to plotly/graph_objs/scattermap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_legendgrouptitle.py b/plotly/graph_objs/scattermap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_legendgrouptitle.py rename to plotly/graph_objs/scattermap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_line.py b/plotly/graph_objs/scattermap/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_line.py rename to plotly/graph_objs/scattermap/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_marker.py b/plotly/graph_objs/scattermap/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_marker.py rename to plotly/graph_objs/scattermap/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_selected.py b/plotly/graph_objs/scattermap/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_selected.py rename to plotly/graph_objs/scattermap/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_stream.py b/plotly/graph_objs/scattermap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_stream.py rename to plotly/graph_objs/scattermap/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_textfont.py b/plotly/graph_objs/scattermap/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_textfont.py rename to plotly/graph_objs/scattermap/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/_unselected.py b/plotly/graph_objs/scattermap/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/_unselected.py rename to plotly/graph_objs/scattermap/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/hoverlabel/__init__.py b/plotly/graph_objs/scattermap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/hoverlabel/__init__.py rename to plotly/graph_objs/scattermap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/hoverlabel/_font.py b/plotly/graph_objs/scattermap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/hoverlabel/_font.py rename to plotly/graph_objs/scattermap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/legendgrouptitle/__init__.py b/plotly/graph_objs/scattermap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/legendgrouptitle/__init__.py rename to plotly/graph_objs/scattermap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/legendgrouptitle/_font.py b/plotly/graph_objs/scattermap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/legendgrouptitle/_font.py rename to plotly/graph_objs/scattermap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/marker/__init__.py b/plotly/graph_objs/scattermap/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/marker/__init__.py rename to plotly/graph_objs/scattermap/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/marker/_colorbar.py b/plotly/graph_objs/scattermap/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/marker/_colorbar.py rename to plotly/graph_objs/scattermap/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/__init__.py b/plotly/graph_objs/scattermap/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/__init__.py rename to plotly/graph_objs/scattermap/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/_tickfont.py b/plotly/graph_objs/scattermap/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scattermap/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scattermap/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scattermap/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/_title.py b/plotly/graph_objs/scattermap/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/_title.py rename to plotly/graph_objs/scattermap/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/title/__init__.py b/plotly/graph_objs/scattermap/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scattermap/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/title/_font.py b/plotly/graph_objs/scattermap/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/marker/colorbar/title/_font.py rename to plotly/graph_objs/scattermap/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/selected/__init__.py b/plotly/graph_objs/scattermap/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/selected/__init__.py rename to plotly/graph_objs/scattermap/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/selected/_marker.py b/plotly/graph_objs/scattermap/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/selected/_marker.py rename to plotly/graph_objs/scattermap/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/unselected/__init__.py b/plotly/graph_objs/scattermap/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/unselected/__init__.py rename to plotly/graph_objs/scattermap/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermap/unselected/_marker.py b/plotly/graph_objs/scattermap/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermap/unselected/_marker.py rename to plotly/graph_objs/scattermap/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/__init__.py b/plotly/graph_objs/scattermapbox/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/__init__.py rename to plotly/graph_objs/scattermapbox/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_cluster.py b/plotly/graph_objs/scattermapbox/_cluster.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_cluster.py rename to plotly/graph_objs/scattermapbox/_cluster.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_hoverlabel.py b/plotly/graph_objs/scattermapbox/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_hoverlabel.py rename to plotly/graph_objs/scattermapbox/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_legendgrouptitle.py b/plotly/graph_objs/scattermapbox/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_legendgrouptitle.py rename to plotly/graph_objs/scattermapbox/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_line.py b/plotly/graph_objs/scattermapbox/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_line.py rename to plotly/graph_objs/scattermapbox/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_marker.py b/plotly/graph_objs/scattermapbox/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_marker.py rename to plotly/graph_objs/scattermapbox/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_selected.py b/plotly/graph_objs/scattermapbox/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_selected.py rename to plotly/graph_objs/scattermapbox/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_stream.py b/plotly/graph_objs/scattermapbox/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_stream.py rename to plotly/graph_objs/scattermapbox/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_textfont.py b/plotly/graph_objs/scattermapbox/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_textfont.py rename to plotly/graph_objs/scattermapbox/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/_unselected.py b/plotly/graph_objs/scattermapbox/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/_unselected.py rename to plotly/graph_objs/scattermapbox/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/hoverlabel/__init__.py b/plotly/graph_objs/scattermapbox/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/hoverlabel/__init__.py rename to plotly/graph_objs/scattermapbox/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/hoverlabel/_font.py b/plotly/graph_objs/scattermapbox/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/hoverlabel/_font.py rename to plotly/graph_objs/scattermapbox/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/legendgrouptitle/__init__.py b/plotly/graph_objs/scattermapbox/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/legendgrouptitle/__init__.py rename to plotly/graph_objs/scattermapbox/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/legendgrouptitle/_font.py b/plotly/graph_objs/scattermapbox/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/legendgrouptitle/_font.py rename to plotly/graph_objs/scattermapbox/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/marker/__init__.py b/plotly/graph_objs/scattermapbox/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/marker/__init__.py rename to plotly/graph_objs/scattermapbox/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/marker/_colorbar.py b/plotly/graph_objs/scattermapbox/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/marker/_colorbar.py rename to plotly/graph_objs/scattermapbox/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/__init__.py b/plotly/graph_objs/scattermapbox/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/__init__.py rename to plotly/graph_objs/scattermapbox/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/_tickfont.py b/plotly/graph_objs/scattermapbox/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scattermapbox/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scattermapbox/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scattermapbox/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/_title.py b/plotly/graph_objs/scattermapbox/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/_title.py rename to plotly/graph_objs/scattermapbox/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/title/__init__.py b/plotly/graph_objs/scattermapbox/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scattermapbox/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/title/_font.py b/plotly/graph_objs/scattermapbox/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/marker/colorbar/title/_font.py rename to plotly/graph_objs/scattermapbox/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/selected/__init__.py b/plotly/graph_objs/scattermapbox/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/selected/__init__.py rename to plotly/graph_objs/scattermapbox/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/selected/_marker.py b/plotly/graph_objs/scattermapbox/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/selected/_marker.py rename to plotly/graph_objs/scattermapbox/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/unselected/__init__.py b/plotly/graph_objs/scattermapbox/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/unselected/__init__.py rename to plotly/graph_objs/scattermapbox/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattermapbox/unselected/_marker.py b/plotly/graph_objs/scattermapbox/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattermapbox/unselected/_marker.py rename to plotly/graph_objs/scattermapbox/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/__init__.py b/plotly/graph_objs/scatterpolar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/__init__.py rename to plotly/graph_objs/scatterpolar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/_hoverlabel.py b/plotly/graph_objs/scatterpolar/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/_hoverlabel.py rename to plotly/graph_objs/scatterpolar/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/_legendgrouptitle.py b/plotly/graph_objs/scatterpolar/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/_legendgrouptitle.py rename to plotly/graph_objs/scatterpolar/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/_line.py b/plotly/graph_objs/scatterpolar/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/_line.py rename to plotly/graph_objs/scatterpolar/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/_marker.py b/plotly/graph_objs/scatterpolar/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/_marker.py rename to plotly/graph_objs/scatterpolar/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/_selected.py b/plotly/graph_objs/scatterpolar/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/_selected.py rename to plotly/graph_objs/scatterpolar/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/_stream.py b/plotly/graph_objs/scatterpolar/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/_stream.py rename to plotly/graph_objs/scatterpolar/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/_textfont.py b/plotly/graph_objs/scatterpolar/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/_textfont.py rename to plotly/graph_objs/scatterpolar/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/_unselected.py b/plotly/graph_objs/scatterpolar/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/_unselected.py rename to plotly/graph_objs/scatterpolar/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/hoverlabel/__init__.py b/plotly/graph_objs/scatterpolar/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/hoverlabel/__init__.py rename to plotly/graph_objs/scatterpolar/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/hoverlabel/_font.py b/plotly/graph_objs/scatterpolar/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/hoverlabel/_font.py rename to plotly/graph_objs/scatterpolar/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/legendgrouptitle/__init__.py b/plotly/graph_objs/scatterpolar/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/legendgrouptitle/__init__.py rename to plotly/graph_objs/scatterpolar/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/legendgrouptitle/_font.py b/plotly/graph_objs/scatterpolar/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/legendgrouptitle/_font.py rename to plotly/graph_objs/scatterpolar/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/__init__.py b/plotly/graph_objs/scatterpolar/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/__init__.py rename to plotly/graph_objs/scatterpolar/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/_colorbar.py b/plotly/graph_objs/scatterpolar/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/_colorbar.py rename to plotly/graph_objs/scatterpolar/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/_gradient.py b/plotly/graph_objs/scatterpolar/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/_gradient.py rename to plotly/graph_objs/scatterpolar/marker/_gradient.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/_line.py b/plotly/graph_objs/scatterpolar/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/_line.py rename to plotly/graph_objs/scatterpolar/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/__init__.py b/plotly/graph_objs/scatterpolar/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/__init__.py rename to plotly/graph_objs/scatterpolar/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/_tickfont.py b/plotly/graph_objs/scatterpolar/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scatterpolar/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scatterpolar/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scatterpolar/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/_title.py b/plotly/graph_objs/scatterpolar/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/_title.py rename to plotly/graph_objs/scatterpolar/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/title/__init__.py b/plotly/graph_objs/scatterpolar/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scatterpolar/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/title/_font.py b/plotly/graph_objs/scatterpolar/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/marker/colorbar/title/_font.py rename to plotly/graph_objs/scatterpolar/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/selected/__init__.py b/plotly/graph_objs/scatterpolar/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/selected/__init__.py rename to plotly/graph_objs/scatterpolar/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/selected/_marker.py b/plotly/graph_objs/scatterpolar/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/selected/_marker.py rename to plotly/graph_objs/scatterpolar/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/selected/_textfont.py b/plotly/graph_objs/scatterpolar/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/selected/_textfont.py rename to plotly/graph_objs/scatterpolar/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/unselected/__init__.py b/plotly/graph_objs/scatterpolar/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/unselected/__init__.py rename to plotly/graph_objs/scatterpolar/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/unselected/_marker.py b/plotly/graph_objs/scatterpolar/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/unselected/_marker.py rename to plotly/graph_objs/scatterpolar/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolar/unselected/_textfont.py b/plotly/graph_objs/scatterpolar/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolar/unselected/_textfont.py rename to plotly/graph_objs/scatterpolar/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/__init__.py b/plotly/graph_objs/scatterpolargl/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/__init__.py rename to plotly/graph_objs/scatterpolargl/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/_hoverlabel.py b/plotly/graph_objs/scatterpolargl/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/_hoverlabel.py rename to plotly/graph_objs/scatterpolargl/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/_legendgrouptitle.py b/plotly/graph_objs/scatterpolargl/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/_legendgrouptitle.py rename to plotly/graph_objs/scatterpolargl/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/_line.py b/plotly/graph_objs/scatterpolargl/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/_line.py rename to plotly/graph_objs/scatterpolargl/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/_marker.py b/plotly/graph_objs/scatterpolargl/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/_marker.py rename to plotly/graph_objs/scatterpolargl/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/_selected.py b/plotly/graph_objs/scatterpolargl/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/_selected.py rename to plotly/graph_objs/scatterpolargl/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/_stream.py b/plotly/graph_objs/scatterpolargl/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/_stream.py rename to plotly/graph_objs/scatterpolargl/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/_textfont.py b/plotly/graph_objs/scatterpolargl/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/_textfont.py rename to plotly/graph_objs/scatterpolargl/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/_unselected.py b/plotly/graph_objs/scatterpolargl/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/_unselected.py rename to plotly/graph_objs/scatterpolargl/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/hoverlabel/__init__.py b/plotly/graph_objs/scatterpolargl/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/hoverlabel/__init__.py rename to plotly/graph_objs/scatterpolargl/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/hoverlabel/_font.py b/plotly/graph_objs/scatterpolargl/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/hoverlabel/_font.py rename to plotly/graph_objs/scatterpolargl/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/legendgrouptitle/__init__.py b/plotly/graph_objs/scatterpolargl/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/legendgrouptitle/__init__.py rename to plotly/graph_objs/scatterpolargl/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/legendgrouptitle/_font.py b/plotly/graph_objs/scatterpolargl/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/legendgrouptitle/_font.py rename to plotly/graph_objs/scatterpolargl/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/__init__.py b/plotly/graph_objs/scatterpolargl/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/__init__.py rename to plotly/graph_objs/scatterpolargl/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/_colorbar.py b/plotly/graph_objs/scatterpolargl/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/_colorbar.py rename to plotly/graph_objs/scatterpolargl/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/_line.py b/plotly/graph_objs/scatterpolargl/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/_line.py rename to plotly/graph_objs/scatterpolargl/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/__init__.py b/plotly/graph_objs/scatterpolargl/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/__init__.py rename to plotly/graph_objs/scatterpolargl/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickfont.py b/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scatterpolargl/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scatterpolargl/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/_title.py b/plotly/graph_objs/scatterpolargl/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/_title.py rename to plotly/graph_objs/scatterpolargl/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/title/__init__.py b/plotly/graph_objs/scatterpolargl/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scatterpolargl/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/title/_font.py b/plotly/graph_objs/scatterpolargl/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/marker/colorbar/title/_font.py rename to plotly/graph_objs/scatterpolargl/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/selected/__init__.py b/plotly/graph_objs/scatterpolargl/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/selected/__init__.py rename to plotly/graph_objs/scatterpolargl/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/selected/_marker.py b/plotly/graph_objs/scatterpolargl/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/selected/_marker.py rename to plotly/graph_objs/scatterpolargl/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/selected/_textfont.py b/plotly/graph_objs/scatterpolargl/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/selected/_textfont.py rename to plotly/graph_objs/scatterpolargl/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/unselected/__init__.py b/plotly/graph_objs/scatterpolargl/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/unselected/__init__.py rename to plotly/graph_objs/scatterpolargl/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/unselected/_marker.py b/plotly/graph_objs/scatterpolargl/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/unselected/_marker.py rename to plotly/graph_objs/scatterpolargl/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterpolargl/unselected/_textfont.py b/plotly/graph_objs/scatterpolargl/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterpolargl/unselected/_textfont.py rename to plotly/graph_objs/scatterpolargl/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/__init__.py b/plotly/graph_objs/scattersmith/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/__init__.py rename to plotly/graph_objs/scattersmith/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/_hoverlabel.py b/plotly/graph_objs/scattersmith/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/_hoverlabel.py rename to plotly/graph_objs/scattersmith/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/_legendgrouptitle.py b/plotly/graph_objs/scattersmith/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/_legendgrouptitle.py rename to plotly/graph_objs/scattersmith/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/_line.py b/plotly/graph_objs/scattersmith/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/_line.py rename to plotly/graph_objs/scattersmith/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/_marker.py b/plotly/graph_objs/scattersmith/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/_marker.py rename to plotly/graph_objs/scattersmith/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/_selected.py b/plotly/graph_objs/scattersmith/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/_selected.py rename to plotly/graph_objs/scattersmith/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/_stream.py b/plotly/graph_objs/scattersmith/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/_stream.py rename to plotly/graph_objs/scattersmith/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/_textfont.py b/plotly/graph_objs/scattersmith/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/_textfont.py rename to plotly/graph_objs/scattersmith/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/_unselected.py b/plotly/graph_objs/scattersmith/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/_unselected.py rename to plotly/graph_objs/scattersmith/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/hoverlabel/__init__.py b/plotly/graph_objs/scattersmith/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/hoverlabel/__init__.py rename to plotly/graph_objs/scattersmith/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/hoverlabel/_font.py b/plotly/graph_objs/scattersmith/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/hoverlabel/_font.py rename to plotly/graph_objs/scattersmith/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/legendgrouptitle/__init__.py b/plotly/graph_objs/scattersmith/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/legendgrouptitle/__init__.py rename to plotly/graph_objs/scattersmith/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/legendgrouptitle/_font.py b/plotly/graph_objs/scattersmith/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/legendgrouptitle/_font.py rename to plotly/graph_objs/scattersmith/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/__init__.py b/plotly/graph_objs/scattersmith/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/__init__.py rename to plotly/graph_objs/scattersmith/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/_colorbar.py b/plotly/graph_objs/scattersmith/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/_colorbar.py rename to plotly/graph_objs/scattersmith/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/_gradient.py b/plotly/graph_objs/scattersmith/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/_gradient.py rename to plotly/graph_objs/scattersmith/marker/_gradient.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/_line.py b/plotly/graph_objs/scattersmith/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/_line.py rename to plotly/graph_objs/scattersmith/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/__init__.py b/plotly/graph_objs/scattersmith/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/__init__.py rename to plotly/graph_objs/scattersmith/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/_tickfont.py b/plotly/graph_objs/scattersmith/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scattersmith/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scattersmith/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scattersmith/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/_title.py b/plotly/graph_objs/scattersmith/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/_title.py rename to plotly/graph_objs/scattersmith/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/title/__init__.py b/plotly/graph_objs/scattersmith/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scattersmith/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/title/_font.py b/plotly/graph_objs/scattersmith/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/marker/colorbar/title/_font.py rename to plotly/graph_objs/scattersmith/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/selected/__init__.py b/plotly/graph_objs/scattersmith/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/selected/__init__.py rename to plotly/graph_objs/scattersmith/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/selected/_marker.py b/plotly/graph_objs/scattersmith/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/selected/_marker.py rename to plotly/graph_objs/scattersmith/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/selected/_textfont.py b/plotly/graph_objs/scattersmith/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/selected/_textfont.py rename to plotly/graph_objs/scattersmith/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/unselected/__init__.py b/plotly/graph_objs/scattersmith/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/unselected/__init__.py rename to plotly/graph_objs/scattersmith/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/unselected/_marker.py b/plotly/graph_objs/scattersmith/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/unselected/_marker.py rename to plotly/graph_objs/scattersmith/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scattersmith/unselected/_textfont.py b/plotly/graph_objs/scattersmith/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scattersmith/unselected/_textfont.py rename to plotly/graph_objs/scattersmith/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/__init__.py b/plotly/graph_objs/scatterternary/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/__init__.py rename to plotly/graph_objs/scatterternary/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/_hoverlabel.py b/plotly/graph_objs/scatterternary/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/_hoverlabel.py rename to plotly/graph_objs/scatterternary/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/_legendgrouptitle.py b/plotly/graph_objs/scatterternary/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/_legendgrouptitle.py rename to plotly/graph_objs/scatterternary/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/_line.py b/plotly/graph_objs/scatterternary/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/_line.py rename to plotly/graph_objs/scatterternary/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/_marker.py b/plotly/graph_objs/scatterternary/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/_marker.py rename to plotly/graph_objs/scatterternary/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/_selected.py b/plotly/graph_objs/scatterternary/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/_selected.py rename to plotly/graph_objs/scatterternary/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/_stream.py b/plotly/graph_objs/scatterternary/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/_stream.py rename to plotly/graph_objs/scatterternary/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/_textfont.py b/plotly/graph_objs/scatterternary/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/_textfont.py rename to plotly/graph_objs/scatterternary/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/_unselected.py b/plotly/graph_objs/scatterternary/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/_unselected.py rename to plotly/graph_objs/scatterternary/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/hoverlabel/__init__.py b/plotly/graph_objs/scatterternary/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/hoverlabel/__init__.py rename to plotly/graph_objs/scatterternary/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/hoverlabel/_font.py b/plotly/graph_objs/scatterternary/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/hoverlabel/_font.py rename to plotly/graph_objs/scatterternary/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/legendgrouptitle/__init__.py b/plotly/graph_objs/scatterternary/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/legendgrouptitle/__init__.py rename to plotly/graph_objs/scatterternary/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/legendgrouptitle/_font.py b/plotly/graph_objs/scatterternary/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/legendgrouptitle/_font.py rename to plotly/graph_objs/scatterternary/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/__init__.py b/plotly/graph_objs/scatterternary/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/__init__.py rename to plotly/graph_objs/scatterternary/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/_colorbar.py b/plotly/graph_objs/scatterternary/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/_colorbar.py rename to plotly/graph_objs/scatterternary/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/_gradient.py b/plotly/graph_objs/scatterternary/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/_gradient.py rename to plotly/graph_objs/scatterternary/marker/_gradient.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/_line.py b/plotly/graph_objs/scatterternary/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/_line.py rename to plotly/graph_objs/scatterternary/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/__init__.py b/plotly/graph_objs/scatterternary/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/__init__.py rename to plotly/graph_objs/scatterternary/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/_tickfont.py b/plotly/graph_objs/scatterternary/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/_tickfont.py rename to plotly/graph_objs/scatterternary/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/scatterternary/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/scatterternary/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/_title.py b/plotly/graph_objs/scatterternary/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/_title.py rename to plotly/graph_objs/scatterternary/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/title/__init__.py b/plotly/graph_objs/scatterternary/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/title/__init__.py rename to plotly/graph_objs/scatterternary/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/title/_font.py b/plotly/graph_objs/scatterternary/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/marker/colorbar/title/_font.py rename to plotly/graph_objs/scatterternary/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/selected/__init__.py b/plotly/graph_objs/scatterternary/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/selected/__init__.py rename to plotly/graph_objs/scatterternary/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/selected/_marker.py b/plotly/graph_objs/scatterternary/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/selected/_marker.py rename to plotly/graph_objs/scatterternary/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/selected/_textfont.py b/plotly/graph_objs/scatterternary/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/selected/_textfont.py rename to plotly/graph_objs/scatterternary/selected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/unselected/__init__.py b/plotly/graph_objs/scatterternary/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/unselected/__init__.py rename to plotly/graph_objs/scatterternary/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/unselected/_marker.py b/plotly/graph_objs/scatterternary/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/unselected/_marker.py rename to plotly/graph_objs/scatterternary/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/scatterternary/unselected/_textfont.py b/plotly/graph_objs/scatterternary/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/scatterternary/unselected/_textfont.py rename to plotly/graph_objs/scatterternary/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/__init__.py b/plotly/graph_objs/splom/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/__init__.py rename to plotly/graph_objs/splom/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/_diagonal.py b/plotly/graph_objs/splom/_diagonal.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/_diagonal.py rename to plotly/graph_objs/splom/_diagonal.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/_dimension.py b/plotly/graph_objs/splom/_dimension.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/_dimension.py rename to plotly/graph_objs/splom/_dimension.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/_hoverlabel.py b/plotly/graph_objs/splom/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/_hoverlabel.py rename to plotly/graph_objs/splom/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/_legendgrouptitle.py b/plotly/graph_objs/splom/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/_legendgrouptitle.py rename to plotly/graph_objs/splom/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/_marker.py b/plotly/graph_objs/splom/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/_marker.py rename to plotly/graph_objs/splom/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/_selected.py b/plotly/graph_objs/splom/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/_selected.py rename to plotly/graph_objs/splom/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/_stream.py b/plotly/graph_objs/splom/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/_stream.py rename to plotly/graph_objs/splom/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/_unselected.py b/plotly/graph_objs/splom/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/_unselected.py rename to plotly/graph_objs/splom/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/dimension/__init__.py b/plotly/graph_objs/splom/dimension/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/dimension/__init__.py rename to plotly/graph_objs/splom/dimension/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/dimension/_axis.py b/plotly/graph_objs/splom/dimension/_axis.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/dimension/_axis.py rename to plotly/graph_objs/splom/dimension/_axis.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/hoverlabel/__init__.py b/plotly/graph_objs/splom/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/hoverlabel/__init__.py rename to plotly/graph_objs/splom/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/hoverlabel/_font.py b/plotly/graph_objs/splom/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/hoverlabel/_font.py rename to plotly/graph_objs/splom/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/legendgrouptitle/__init__.py b/plotly/graph_objs/splom/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/legendgrouptitle/__init__.py rename to plotly/graph_objs/splom/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/legendgrouptitle/_font.py b/plotly/graph_objs/splom/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/legendgrouptitle/_font.py rename to plotly/graph_objs/splom/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/__init__.py b/plotly/graph_objs/splom/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/__init__.py rename to plotly/graph_objs/splom/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/_colorbar.py b/plotly/graph_objs/splom/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/_colorbar.py rename to plotly/graph_objs/splom/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/_line.py b/plotly/graph_objs/splom/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/_line.py rename to plotly/graph_objs/splom/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/__init__.py b/plotly/graph_objs/splom/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/__init__.py rename to plotly/graph_objs/splom/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/_tickfont.py b/plotly/graph_objs/splom/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/_tickfont.py rename to plotly/graph_objs/splom/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/splom/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/splom/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/_title.py b/plotly/graph_objs/splom/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/_title.py rename to plotly/graph_objs/splom/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/title/__init__.py b/plotly/graph_objs/splom/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/title/__init__.py rename to plotly/graph_objs/splom/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/title/_font.py b/plotly/graph_objs/splom/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/marker/colorbar/title/_font.py rename to plotly/graph_objs/splom/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/selected/__init__.py b/plotly/graph_objs/splom/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/selected/__init__.py rename to plotly/graph_objs/splom/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/selected/_marker.py b/plotly/graph_objs/splom/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/selected/_marker.py rename to plotly/graph_objs/splom/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/unselected/__init__.py b/plotly/graph_objs/splom/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/unselected/__init__.py rename to plotly/graph_objs/splom/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/splom/unselected/_marker.py b/plotly/graph_objs/splom/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/splom/unselected/_marker.py rename to plotly/graph_objs/splom/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/__init__.py b/plotly/graph_objs/streamtube/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/__init__.py rename to plotly/graph_objs/streamtube/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/_colorbar.py b/plotly/graph_objs/streamtube/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/_colorbar.py rename to plotly/graph_objs/streamtube/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/_hoverlabel.py b/plotly/graph_objs/streamtube/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/_hoverlabel.py rename to plotly/graph_objs/streamtube/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/_legendgrouptitle.py b/plotly/graph_objs/streamtube/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/_legendgrouptitle.py rename to plotly/graph_objs/streamtube/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/_lighting.py b/plotly/graph_objs/streamtube/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/_lighting.py rename to plotly/graph_objs/streamtube/_lighting.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/_lightposition.py b/plotly/graph_objs/streamtube/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/_lightposition.py rename to plotly/graph_objs/streamtube/_lightposition.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/_starts.py b/plotly/graph_objs/streamtube/_starts.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/_starts.py rename to plotly/graph_objs/streamtube/_starts.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/_stream.py b/plotly/graph_objs/streamtube/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/_stream.py rename to plotly/graph_objs/streamtube/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/colorbar/__init__.py b/plotly/graph_objs/streamtube/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/colorbar/__init__.py rename to plotly/graph_objs/streamtube/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/colorbar/_tickfont.py b/plotly/graph_objs/streamtube/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/colorbar/_tickfont.py rename to plotly/graph_objs/streamtube/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/colorbar/_tickformatstop.py b/plotly/graph_objs/streamtube/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/colorbar/_tickformatstop.py rename to plotly/graph_objs/streamtube/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/colorbar/_title.py b/plotly/graph_objs/streamtube/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/colorbar/_title.py rename to plotly/graph_objs/streamtube/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/colorbar/title/__init__.py b/plotly/graph_objs/streamtube/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/colorbar/title/__init__.py rename to plotly/graph_objs/streamtube/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/colorbar/title/_font.py b/plotly/graph_objs/streamtube/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/colorbar/title/_font.py rename to plotly/graph_objs/streamtube/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/hoverlabel/__init__.py b/plotly/graph_objs/streamtube/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/hoverlabel/__init__.py rename to plotly/graph_objs/streamtube/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/hoverlabel/_font.py b/plotly/graph_objs/streamtube/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/hoverlabel/_font.py rename to plotly/graph_objs/streamtube/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/legendgrouptitle/__init__.py b/plotly/graph_objs/streamtube/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/legendgrouptitle/__init__.py rename to plotly/graph_objs/streamtube/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/streamtube/legendgrouptitle/_font.py b/plotly/graph_objs/streamtube/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/streamtube/legendgrouptitle/_font.py rename to plotly/graph_objs/streamtube/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/__init__.py b/plotly/graph_objs/sunburst/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/__init__.py rename to plotly/graph_objs/sunburst/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_domain.py b/plotly/graph_objs/sunburst/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_domain.py rename to plotly/graph_objs/sunburst/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_hoverlabel.py b/plotly/graph_objs/sunburst/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_hoverlabel.py rename to plotly/graph_objs/sunburst/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_insidetextfont.py b/plotly/graph_objs/sunburst/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_insidetextfont.py rename to plotly/graph_objs/sunburst/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_leaf.py b/plotly/graph_objs/sunburst/_leaf.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_leaf.py rename to plotly/graph_objs/sunburst/_leaf.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_legendgrouptitle.py b/plotly/graph_objs/sunburst/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_legendgrouptitle.py rename to plotly/graph_objs/sunburst/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_marker.py b/plotly/graph_objs/sunburst/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_marker.py rename to plotly/graph_objs/sunburst/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_outsidetextfont.py b/plotly/graph_objs/sunburst/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_outsidetextfont.py rename to plotly/graph_objs/sunburst/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_root.py b/plotly/graph_objs/sunburst/_root.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_root.py rename to plotly/graph_objs/sunburst/_root.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_stream.py b/plotly/graph_objs/sunburst/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_stream.py rename to plotly/graph_objs/sunburst/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/_textfont.py b/plotly/graph_objs/sunburst/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/_textfont.py rename to plotly/graph_objs/sunburst/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/hoverlabel/__init__.py b/plotly/graph_objs/sunburst/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/hoverlabel/__init__.py rename to plotly/graph_objs/sunburst/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/hoverlabel/_font.py b/plotly/graph_objs/sunburst/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/hoverlabel/_font.py rename to plotly/graph_objs/sunburst/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/legendgrouptitle/__init__.py b/plotly/graph_objs/sunburst/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/legendgrouptitle/__init__.py rename to plotly/graph_objs/sunburst/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/legendgrouptitle/_font.py b/plotly/graph_objs/sunburst/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/legendgrouptitle/_font.py rename to plotly/graph_objs/sunburst/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/__init__.py b/plotly/graph_objs/sunburst/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/__init__.py rename to plotly/graph_objs/sunburst/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/_colorbar.py b/plotly/graph_objs/sunburst/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/_colorbar.py rename to plotly/graph_objs/sunburst/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/_line.py b/plotly/graph_objs/sunburst/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/_line.py rename to plotly/graph_objs/sunburst/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/_pattern.py b/plotly/graph_objs/sunburst/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/_pattern.py rename to plotly/graph_objs/sunburst/marker/_pattern.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/__init__.py b/plotly/graph_objs/sunburst/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/__init__.py rename to plotly/graph_objs/sunburst/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/_tickfont.py b/plotly/graph_objs/sunburst/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/_tickfont.py rename to plotly/graph_objs/sunburst/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/sunburst/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/sunburst/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/_title.py b/plotly/graph_objs/sunburst/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/_title.py rename to plotly/graph_objs/sunburst/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/title/__init__.py b/plotly/graph_objs/sunburst/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/title/__init__.py rename to plotly/graph_objs/sunburst/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/title/_font.py b/plotly/graph_objs/sunburst/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/sunburst/marker/colorbar/title/_font.py rename to plotly/graph_objs/sunburst/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/__init__.py b/plotly/graph_objs/surface/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/__init__.py rename to plotly/graph_objs/surface/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/_colorbar.py b/plotly/graph_objs/surface/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/_colorbar.py rename to plotly/graph_objs/surface/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/_contours.py b/plotly/graph_objs/surface/_contours.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/_contours.py rename to plotly/graph_objs/surface/_contours.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/_hoverlabel.py b/plotly/graph_objs/surface/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/_hoverlabel.py rename to plotly/graph_objs/surface/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/_legendgrouptitle.py b/plotly/graph_objs/surface/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/_legendgrouptitle.py rename to plotly/graph_objs/surface/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/_lighting.py b/plotly/graph_objs/surface/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/_lighting.py rename to plotly/graph_objs/surface/_lighting.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/_lightposition.py b/plotly/graph_objs/surface/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/_lightposition.py rename to plotly/graph_objs/surface/_lightposition.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/_stream.py b/plotly/graph_objs/surface/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/_stream.py rename to plotly/graph_objs/surface/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/colorbar/__init__.py b/plotly/graph_objs/surface/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/colorbar/__init__.py rename to plotly/graph_objs/surface/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/colorbar/_tickfont.py b/plotly/graph_objs/surface/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/colorbar/_tickfont.py rename to plotly/graph_objs/surface/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/colorbar/_tickformatstop.py b/plotly/graph_objs/surface/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/colorbar/_tickformatstop.py rename to plotly/graph_objs/surface/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/colorbar/_title.py b/plotly/graph_objs/surface/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/colorbar/_title.py rename to plotly/graph_objs/surface/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/colorbar/title/__init__.py b/plotly/graph_objs/surface/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/colorbar/title/__init__.py rename to plotly/graph_objs/surface/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/colorbar/title/_font.py b/plotly/graph_objs/surface/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/colorbar/title/_font.py rename to plotly/graph_objs/surface/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/__init__.py b/plotly/graph_objs/surface/contours/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/__init__.py rename to plotly/graph_objs/surface/contours/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/_x.py b/plotly/graph_objs/surface/contours/_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/_x.py rename to plotly/graph_objs/surface/contours/_x.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/_y.py b/plotly/graph_objs/surface/contours/_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/_y.py rename to plotly/graph_objs/surface/contours/_y.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/_z.py b/plotly/graph_objs/surface/contours/_z.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/_z.py rename to plotly/graph_objs/surface/contours/_z.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/x/__init__.py b/plotly/graph_objs/surface/contours/x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/x/__init__.py rename to plotly/graph_objs/surface/contours/x/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/x/_project.py b/plotly/graph_objs/surface/contours/x/_project.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/x/_project.py rename to plotly/graph_objs/surface/contours/x/_project.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/y/__init__.py b/plotly/graph_objs/surface/contours/y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/y/__init__.py rename to plotly/graph_objs/surface/contours/y/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/y/_project.py b/plotly/graph_objs/surface/contours/y/_project.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/y/_project.py rename to plotly/graph_objs/surface/contours/y/_project.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/z/__init__.py b/plotly/graph_objs/surface/contours/z/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/z/__init__.py rename to plotly/graph_objs/surface/contours/z/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/contours/z/_project.py b/plotly/graph_objs/surface/contours/z/_project.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/contours/z/_project.py rename to plotly/graph_objs/surface/contours/z/_project.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/hoverlabel/__init__.py b/plotly/graph_objs/surface/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/hoverlabel/__init__.py rename to plotly/graph_objs/surface/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/hoverlabel/_font.py b/plotly/graph_objs/surface/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/hoverlabel/_font.py rename to plotly/graph_objs/surface/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/legendgrouptitle/__init__.py b/plotly/graph_objs/surface/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/legendgrouptitle/__init__.py rename to plotly/graph_objs/surface/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/surface/legendgrouptitle/_font.py b/plotly/graph_objs/surface/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/surface/legendgrouptitle/_font.py rename to plotly/graph_objs/surface/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/table/__init__.py b/plotly/graph_objs/table/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/__init__.py rename to plotly/graph_objs/table/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/table/_cells.py b/plotly/graph_objs/table/_cells.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/_cells.py rename to plotly/graph_objs/table/_cells.py diff --git a/packages/python/plotly/plotly/graph_objs/table/_domain.py b/plotly/graph_objs/table/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/_domain.py rename to plotly/graph_objs/table/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/table/_header.py b/plotly/graph_objs/table/_header.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/_header.py rename to plotly/graph_objs/table/_header.py diff --git a/packages/python/plotly/plotly/graph_objs/table/_hoverlabel.py b/plotly/graph_objs/table/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/_hoverlabel.py rename to plotly/graph_objs/table/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/table/_legendgrouptitle.py b/plotly/graph_objs/table/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/_legendgrouptitle.py rename to plotly/graph_objs/table/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/table/_stream.py b/plotly/graph_objs/table/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/_stream.py rename to plotly/graph_objs/table/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/table/cells/__init__.py b/plotly/graph_objs/table/cells/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/cells/__init__.py rename to plotly/graph_objs/table/cells/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/table/cells/_fill.py b/plotly/graph_objs/table/cells/_fill.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/cells/_fill.py rename to plotly/graph_objs/table/cells/_fill.py diff --git a/packages/python/plotly/plotly/graph_objs/table/cells/_font.py b/plotly/graph_objs/table/cells/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/cells/_font.py rename to plotly/graph_objs/table/cells/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/table/cells/_line.py b/plotly/graph_objs/table/cells/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/cells/_line.py rename to plotly/graph_objs/table/cells/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/table/header/__init__.py b/plotly/graph_objs/table/header/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/header/__init__.py rename to plotly/graph_objs/table/header/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/table/header/_fill.py b/plotly/graph_objs/table/header/_fill.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/header/_fill.py rename to plotly/graph_objs/table/header/_fill.py diff --git a/packages/python/plotly/plotly/graph_objs/table/header/_font.py b/plotly/graph_objs/table/header/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/header/_font.py rename to plotly/graph_objs/table/header/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/table/header/_line.py b/plotly/graph_objs/table/header/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/header/_line.py rename to plotly/graph_objs/table/header/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/table/hoverlabel/__init__.py b/plotly/graph_objs/table/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/hoverlabel/__init__.py rename to plotly/graph_objs/table/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/table/hoverlabel/_font.py b/plotly/graph_objs/table/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/hoverlabel/_font.py rename to plotly/graph_objs/table/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/table/legendgrouptitle/__init__.py b/plotly/graph_objs/table/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/legendgrouptitle/__init__.py rename to plotly/graph_objs/table/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/table/legendgrouptitle/_font.py b/plotly/graph_objs/table/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/table/legendgrouptitle/_font.py rename to plotly/graph_objs/table/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/__init__.py b/plotly/graph_objs/treemap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/__init__.py rename to plotly/graph_objs/treemap/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_domain.py b/plotly/graph_objs/treemap/_domain.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_domain.py rename to plotly/graph_objs/treemap/_domain.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_hoverlabel.py b/plotly/graph_objs/treemap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_hoverlabel.py rename to plotly/graph_objs/treemap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_insidetextfont.py b/plotly/graph_objs/treemap/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_insidetextfont.py rename to plotly/graph_objs/treemap/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_legendgrouptitle.py b/plotly/graph_objs/treemap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_legendgrouptitle.py rename to plotly/graph_objs/treemap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_marker.py b/plotly/graph_objs/treemap/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_marker.py rename to plotly/graph_objs/treemap/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_outsidetextfont.py b/plotly/graph_objs/treemap/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_outsidetextfont.py rename to plotly/graph_objs/treemap/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_pathbar.py b/plotly/graph_objs/treemap/_pathbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_pathbar.py rename to plotly/graph_objs/treemap/_pathbar.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_root.py b/plotly/graph_objs/treemap/_root.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_root.py rename to plotly/graph_objs/treemap/_root.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_stream.py b/plotly/graph_objs/treemap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_stream.py rename to plotly/graph_objs/treemap/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_textfont.py b/plotly/graph_objs/treemap/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_textfont.py rename to plotly/graph_objs/treemap/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/_tiling.py b/plotly/graph_objs/treemap/_tiling.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/_tiling.py rename to plotly/graph_objs/treemap/_tiling.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/hoverlabel/__init__.py b/plotly/graph_objs/treemap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/hoverlabel/__init__.py rename to plotly/graph_objs/treemap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/hoverlabel/_font.py b/plotly/graph_objs/treemap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/hoverlabel/_font.py rename to plotly/graph_objs/treemap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/legendgrouptitle/__init__.py b/plotly/graph_objs/treemap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/legendgrouptitle/__init__.py rename to plotly/graph_objs/treemap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/legendgrouptitle/_font.py b/plotly/graph_objs/treemap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/legendgrouptitle/_font.py rename to plotly/graph_objs/treemap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/__init__.py b/plotly/graph_objs/treemap/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/__init__.py rename to plotly/graph_objs/treemap/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/_colorbar.py b/plotly/graph_objs/treemap/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/_colorbar.py rename to plotly/graph_objs/treemap/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/_line.py b/plotly/graph_objs/treemap/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/_line.py rename to plotly/graph_objs/treemap/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/_pad.py b/plotly/graph_objs/treemap/marker/_pad.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/_pad.py rename to plotly/graph_objs/treemap/marker/_pad.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/_pattern.py b/plotly/graph_objs/treemap/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/_pattern.py rename to plotly/graph_objs/treemap/marker/_pattern.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/__init__.py b/plotly/graph_objs/treemap/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/__init__.py rename to plotly/graph_objs/treemap/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/_tickfont.py b/plotly/graph_objs/treemap/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/_tickfont.py rename to plotly/graph_objs/treemap/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/_tickformatstop.py b/plotly/graph_objs/treemap/marker/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/_tickformatstop.py rename to plotly/graph_objs/treemap/marker/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/_title.py b/plotly/graph_objs/treemap/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/_title.py rename to plotly/graph_objs/treemap/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/title/__init__.py b/plotly/graph_objs/treemap/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/title/__init__.py rename to plotly/graph_objs/treemap/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/title/_font.py b/plotly/graph_objs/treemap/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/marker/colorbar/title/_font.py rename to plotly/graph_objs/treemap/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/pathbar/__init__.py b/plotly/graph_objs/treemap/pathbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/pathbar/__init__.py rename to plotly/graph_objs/treemap/pathbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/treemap/pathbar/_textfont.py b/plotly/graph_objs/treemap/pathbar/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/treemap/pathbar/_textfont.py rename to plotly/graph_objs/treemap/pathbar/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/__init__.py b/plotly/graph_objs/violin/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/__init__.py rename to plotly/graph_objs/violin/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_box.py b/plotly/graph_objs/violin/_box.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_box.py rename to plotly/graph_objs/violin/_box.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_hoverlabel.py b/plotly/graph_objs/violin/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_hoverlabel.py rename to plotly/graph_objs/violin/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_legendgrouptitle.py b/plotly/graph_objs/violin/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_legendgrouptitle.py rename to plotly/graph_objs/violin/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_line.py b/plotly/graph_objs/violin/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_line.py rename to plotly/graph_objs/violin/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_marker.py b/plotly/graph_objs/violin/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_marker.py rename to plotly/graph_objs/violin/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_meanline.py b/plotly/graph_objs/violin/_meanline.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_meanline.py rename to plotly/graph_objs/violin/_meanline.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_selected.py b/plotly/graph_objs/violin/_selected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_selected.py rename to plotly/graph_objs/violin/_selected.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_stream.py b/plotly/graph_objs/violin/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_stream.py rename to plotly/graph_objs/violin/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/_unselected.py b/plotly/graph_objs/violin/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/_unselected.py rename to plotly/graph_objs/violin/_unselected.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/box/__init__.py b/plotly/graph_objs/violin/box/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/box/__init__.py rename to plotly/graph_objs/violin/box/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/box/_line.py b/plotly/graph_objs/violin/box/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/box/_line.py rename to plotly/graph_objs/violin/box/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/hoverlabel/__init__.py b/plotly/graph_objs/violin/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/hoverlabel/__init__.py rename to plotly/graph_objs/violin/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/hoverlabel/_font.py b/plotly/graph_objs/violin/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/hoverlabel/_font.py rename to plotly/graph_objs/violin/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/legendgrouptitle/__init__.py b/plotly/graph_objs/violin/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/legendgrouptitle/__init__.py rename to plotly/graph_objs/violin/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/legendgrouptitle/_font.py b/plotly/graph_objs/violin/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/legendgrouptitle/_font.py rename to plotly/graph_objs/violin/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/marker/__init__.py b/plotly/graph_objs/violin/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/marker/__init__.py rename to plotly/graph_objs/violin/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/marker/_line.py b/plotly/graph_objs/violin/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/marker/_line.py rename to plotly/graph_objs/violin/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/selected/__init__.py b/plotly/graph_objs/violin/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/selected/__init__.py rename to plotly/graph_objs/violin/selected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/selected/_marker.py b/plotly/graph_objs/violin/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/selected/_marker.py rename to plotly/graph_objs/violin/selected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/unselected/__init__.py b/plotly/graph_objs/violin/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/unselected/__init__.py rename to plotly/graph_objs/violin/unselected/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/violin/unselected/_marker.py b/plotly/graph_objs/violin/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/violin/unselected/_marker.py rename to plotly/graph_objs/violin/unselected/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/__init__.py b/plotly/graph_objs/volume/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/__init__.py rename to plotly/graph_objs/volume/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_caps.py b/plotly/graph_objs/volume/_caps.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_caps.py rename to plotly/graph_objs/volume/_caps.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_colorbar.py b/plotly/graph_objs/volume/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_colorbar.py rename to plotly/graph_objs/volume/_colorbar.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_contour.py b/plotly/graph_objs/volume/_contour.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_contour.py rename to plotly/graph_objs/volume/_contour.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_hoverlabel.py b/plotly/graph_objs/volume/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_hoverlabel.py rename to plotly/graph_objs/volume/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_legendgrouptitle.py b/plotly/graph_objs/volume/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_legendgrouptitle.py rename to plotly/graph_objs/volume/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_lighting.py b/plotly/graph_objs/volume/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_lighting.py rename to plotly/graph_objs/volume/_lighting.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_lightposition.py b/plotly/graph_objs/volume/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_lightposition.py rename to plotly/graph_objs/volume/_lightposition.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_slices.py b/plotly/graph_objs/volume/_slices.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_slices.py rename to plotly/graph_objs/volume/_slices.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_spaceframe.py b/plotly/graph_objs/volume/_spaceframe.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_spaceframe.py rename to plotly/graph_objs/volume/_spaceframe.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_stream.py b/plotly/graph_objs/volume/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_stream.py rename to plotly/graph_objs/volume/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/_surface.py b/plotly/graph_objs/volume/_surface.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/_surface.py rename to plotly/graph_objs/volume/_surface.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/caps/__init__.py b/plotly/graph_objs/volume/caps/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/caps/__init__.py rename to plotly/graph_objs/volume/caps/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/caps/_x.py b/plotly/graph_objs/volume/caps/_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/caps/_x.py rename to plotly/graph_objs/volume/caps/_x.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/caps/_y.py b/plotly/graph_objs/volume/caps/_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/caps/_y.py rename to plotly/graph_objs/volume/caps/_y.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/caps/_z.py b/plotly/graph_objs/volume/caps/_z.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/caps/_z.py rename to plotly/graph_objs/volume/caps/_z.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/colorbar/__init__.py b/plotly/graph_objs/volume/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/colorbar/__init__.py rename to plotly/graph_objs/volume/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/colorbar/_tickfont.py b/plotly/graph_objs/volume/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/colorbar/_tickfont.py rename to plotly/graph_objs/volume/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/colorbar/_tickformatstop.py b/plotly/graph_objs/volume/colorbar/_tickformatstop.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/colorbar/_tickformatstop.py rename to plotly/graph_objs/volume/colorbar/_tickformatstop.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/colorbar/_title.py b/plotly/graph_objs/volume/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/colorbar/_title.py rename to plotly/graph_objs/volume/colorbar/_title.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/colorbar/title/__init__.py b/plotly/graph_objs/volume/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/colorbar/title/__init__.py rename to plotly/graph_objs/volume/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/colorbar/title/_font.py b/plotly/graph_objs/volume/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/colorbar/title/_font.py rename to plotly/graph_objs/volume/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/hoverlabel/__init__.py b/plotly/graph_objs/volume/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/hoverlabel/__init__.py rename to plotly/graph_objs/volume/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/hoverlabel/_font.py b/plotly/graph_objs/volume/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/hoverlabel/_font.py rename to plotly/graph_objs/volume/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/legendgrouptitle/__init__.py b/plotly/graph_objs/volume/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/legendgrouptitle/__init__.py rename to plotly/graph_objs/volume/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/legendgrouptitle/_font.py b/plotly/graph_objs/volume/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/legendgrouptitle/_font.py rename to plotly/graph_objs/volume/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/slices/__init__.py b/plotly/graph_objs/volume/slices/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/slices/__init__.py rename to plotly/graph_objs/volume/slices/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/slices/_x.py b/plotly/graph_objs/volume/slices/_x.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/slices/_x.py rename to plotly/graph_objs/volume/slices/_x.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/slices/_y.py b/plotly/graph_objs/volume/slices/_y.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/slices/_y.py rename to plotly/graph_objs/volume/slices/_y.py diff --git a/packages/python/plotly/plotly/graph_objs/volume/slices/_z.py b/plotly/graph_objs/volume/slices/_z.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/volume/slices/_z.py rename to plotly/graph_objs/volume/slices/_z.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/__init__.py b/plotly/graph_objs/waterfall/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/__init__.py rename to plotly/graph_objs/waterfall/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_connector.py b/plotly/graph_objs/waterfall/_connector.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_connector.py rename to plotly/graph_objs/waterfall/_connector.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_decreasing.py b/plotly/graph_objs/waterfall/_decreasing.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_decreasing.py rename to plotly/graph_objs/waterfall/_decreasing.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_hoverlabel.py b/plotly/graph_objs/waterfall/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_hoverlabel.py rename to plotly/graph_objs/waterfall/_hoverlabel.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_increasing.py b/plotly/graph_objs/waterfall/_increasing.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_increasing.py rename to plotly/graph_objs/waterfall/_increasing.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_insidetextfont.py b/plotly/graph_objs/waterfall/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_insidetextfont.py rename to plotly/graph_objs/waterfall/_insidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_legendgrouptitle.py b/plotly/graph_objs/waterfall/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_legendgrouptitle.py rename to plotly/graph_objs/waterfall/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_outsidetextfont.py b/plotly/graph_objs/waterfall/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_outsidetextfont.py rename to plotly/graph_objs/waterfall/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_stream.py b/plotly/graph_objs/waterfall/_stream.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_stream.py rename to plotly/graph_objs/waterfall/_stream.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_textfont.py b/plotly/graph_objs/waterfall/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_textfont.py rename to plotly/graph_objs/waterfall/_textfont.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/_totals.py b/plotly/graph_objs/waterfall/_totals.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/_totals.py rename to plotly/graph_objs/waterfall/_totals.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/connector/__init__.py b/plotly/graph_objs/waterfall/connector/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/connector/__init__.py rename to plotly/graph_objs/waterfall/connector/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/connector/_line.py b/plotly/graph_objs/waterfall/connector/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/connector/_line.py rename to plotly/graph_objs/waterfall/connector/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/decreasing/__init__.py b/plotly/graph_objs/waterfall/decreasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/decreasing/__init__.py rename to plotly/graph_objs/waterfall/decreasing/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/decreasing/_marker.py b/plotly/graph_objs/waterfall/decreasing/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/decreasing/_marker.py rename to plotly/graph_objs/waterfall/decreasing/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/decreasing/marker/__init__.py b/plotly/graph_objs/waterfall/decreasing/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/decreasing/marker/__init__.py rename to plotly/graph_objs/waterfall/decreasing/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/decreasing/marker/_line.py b/plotly/graph_objs/waterfall/decreasing/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/decreasing/marker/_line.py rename to plotly/graph_objs/waterfall/decreasing/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/hoverlabel/__init__.py b/plotly/graph_objs/waterfall/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/hoverlabel/__init__.py rename to plotly/graph_objs/waterfall/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/hoverlabel/_font.py b/plotly/graph_objs/waterfall/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/hoverlabel/_font.py rename to plotly/graph_objs/waterfall/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/increasing/__init__.py b/plotly/graph_objs/waterfall/increasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/increasing/__init__.py rename to plotly/graph_objs/waterfall/increasing/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/increasing/_marker.py b/plotly/graph_objs/waterfall/increasing/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/increasing/_marker.py rename to plotly/graph_objs/waterfall/increasing/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/increasing/marker/__init__.py b/plotly/graph_objs/waterfall/increasing/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/increasing/marker/__init__.py rename to plotly/graph_objs/waterfall/increasing/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/increasing/marker/_line.py b/plotly/graph_objs/waterfall/increasing/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/increasing/marker/_line.py rename to plotly/graph_objs/waterfall/increasing/marker/_line.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/legendgrouptitle/__init__.py b/plotly/graph_objs/waterfall/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/legendgrouptitle/__init__.py rename to plotly/graph_objs/waterfall/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/legendgrouptitle/_font.py b/plotly/graph_objs/waterfall/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/legendgrouptitle/_font.py rename to plotly/graph_objs/waterfall/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/totals/__init__.py b/plotly/graph_objs/waterfall/totals/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/totals/__init__.py rename to plotly/graph_objs/waterfall/totals/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/totals/_marker.py b/plotly/graph_objs/waterfall/totals/_marker.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/totals/_marker.py rename to plotly/graph_objs/waterfall/totals/_marker.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/totals/marker/__init__.py b/plotly/graph_objs/waterfall/totals/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/totals/marker/__init__.py rename to plotly/graph_objs/waterfall/totals/marker/__init__.py diff --git a/packages/python/plotly/plotly/graph_objs/waterfall/totals/marker/_line.py b/plotly/graph_objs/waterfall/totals/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/graph_objs/waterfall/totals/marker/_line.py rename to plotly/graph_objs/waterfall/totals/marker/_line.py diff --git a/packages/python/plotly/plotly/io/__init__.py b/plotly/io/__init__.py similarity index 100% rename from packages/python/plotly/plotly/io/__init__.py rename to plotly/io/__init__.py diff --git a/packages/python/plotly/plotly/io/_base_renderers.py b/plotly/io/_base_renderers.py similarity index 98% rename from packages/python/plotly/plotly/io/_base_renderers.py rename to plotly/io/_base_renderers.py index 535b2e789e2..d683d1694f1 100644 --- a/packages/python/plotly/plotly/io/_base_renderers.py +++ b/plotly/io/_base_renderers.py @@ -254,6 +254,7 @@ def __init__( auto_play=False, post_script=None, animation_opts=None, + include_plotlyjs=True, ): self.config = dict(config) if config else {} @@ -263,6 +264,7 @@ def __init__( self.full_html = full_html self.animation_opts = animation_opts self.post_script = post_script + self.include_plotlyjs = "cdn" if self.connected else include_plotlyjs def activate(self): if self.global_init: @@ -307,12 +309,7 @@ def to_mimebundle(self, fig_dict): from plotly.io import to_html - if self.connected: - include_plotlyjs = "cdn" - include_mathjax = "cdn" - else: - include_plotlyjs = True - include_mathjax = "cdn" + include_mathjax = "cdn" # build post script post_script = [ @@ -352,7 +349,7 @@ def to_mimebundle(self, fig_dict): fig_dict, config=self.config, auto_play=self.auto_play, - include_plotlyjs=include_plotlyjs, + include_plotlyjs=self.include_plotlyjs, include_mathjax=include_mathjax, post_script=post_script, full_html=self.full_html, @@ -385,6 +382,7 @@ def __init__( auto_play=False, post_script=None, animation_opts=None, + include_plotlyjs=False, ): super(NotebookRenderer, self).__init__( connected=connected, @@ -394,6 +392,7 @@ def __init__( auto_play=auto_play, post_script=post_script, animation_opts=animation_opts, + include_plotlyjs=include_plotlyjs, ) @@ -421,6 +420,7 @@ def __init__( auto_play=auto_play, post_script=post_script, animation_opts=animation_opts, + include_plotlyjs=False, ) @@ -448,6 +448,7 @@ def __init__( auto_play=auto_play, post_script=post_script, animation_opts=animation_opts, + include_plotlyjs=False, ) diff --git a/packages/python/plotly/plotly/io/_html.py b/plotly/io/_html.py similarity index 100% rename from packages/python/plotly/plotly/io/_html.py rename to plotly/io/_html.py diff --git a/packages/python/plotly/plotly/io/_json.py b/plotly/io/_json.py similarity index 99% rename from packages/python/plotly/plotly/io/_json.py rename to plotly/io/_json.py index 15375632c7a..b45191a07b2 100644 --- a/packages/python/plotly/plotly/io/_json.py +++ b/plotly/io/_json.py @@ -529,7 +529,7 @@ def clean_to_json_compatible(obj, **kwargs): # pandas if pd is not None: - if obj is pd.NaT: + if obj is pd.NaT or obj is pd.NA: return None elif isinstance(obj, (pd.Series, pd.DatetimeIndex)): if numpy_allowed and obj.dtype.kind in ("b", "i", "u", "f"): diff --git a/packages/python/plotly/plotly/io/_kaleido.py b/plotly/io/_kaleido.py similarity index 100% rename from packages/python/plotly/plotly/io/_kaleido.py rename to plotly/io/_kaleido.py diff --git a/packages/python/plotly/plotly/io/_orca.py b/plotly/io/_orca.py similarity index 100% rename from packages/python/plotly/plotly/io/_orca.py rename to plotly/io/_orca.py diff --git a/packages/python/plotly/plotly/io/_renderers.py b/plotly/io/_renderers.py similarity index 99% rename from packages/python/plotly/plotly/io/_renderers.py rename to plotly/io/_renderers.py index 55e1ab94cd9..2e1c5c64c57 100644 --- a/packages/python/plotly/plotly/io/_renderers.py +++ b/plotly/io/_renderers.py @@ -50,14 +50,14 @@ def display_jupyter_version_warnings(): return elif "jupyter-notebook" in parent_process: jupyter_notebook = optional_imports.get_module("notebook") - if jupyter_notebook.__version__ < "7": + if jupyter_notebook is not None and jupyter_notebook.__version__ < "7": # Add warning about upgrading notebook warnings.warn( f"Plotly version >= 6 requires Jupyter Notebook >= 7 but you have {jupyter_notebook.__version__} installed.\n To upgrade Jupyter Notebook, please run `pip install notebook --upgrade`." ) elif "jupyter-lab" in parent_process: jupyter_lab = optional_imports.get_module("jupyterlab") - if jupyter_lab.__version__ < "3": + if jupyter_lab is not None and jupyter_lab.__version__ < "3": # Add warning about upgrading jupyterlab warnings.warn( f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`." diff --git a/packages/python/plotly/plotly/io/_sg_scraper.py b/plotly/io/_sg_scraper.py similarity index 100% rename from packages/python/plotly/plotly/io/_sg_scraper.py rename to plotly/io/_sg_scraper.py diff --git a/packages/python/plotly/plotly/io/_templates.py b/plotly/io/_templates.py similarity index 100% rename from packages/python/plotly/plotly/io/_templates.py rename to plotly/io/_templates.py diff --git a/packages/python/plotly/plotly/io/_utils.py b/plotly/io/_utils.py similarity index 100% rename from packages/python/plotly/plotly/io/_utils.py rename to plotly/io/_utils.py diff --git a/packages/python/plotly/plotly/io/base_renderers.py b/plotly/io/base_renderers.py similarity index 100% rename from packages/python/plotly/plotly/io/base_renderers.py rename to plotly/io/base_renderers.py diff --git a/packages/python/plotly/plotly/io/json.py b/plotly/io/json.py similarity index 100% rename from packages/python/plotly/plotly/io/json.py rename to plotly/io/json.py diff --git a/packages/python/plotly/plotly/io/kaleido.py b/plotly/io/kaleido.py similarity index 100% rename from packages/python/plotly/plotly/io/kaleido.py rename to plotly/io/kaleido.py diff --git a/packages/python/plotly/plotly/io/orca.py b/plotly/io/orca.py similarity index 100% rename from packages/python/plotly/plotly/io/orca.py rename to plotly/io/orca.py diff --git a/packages/python/plotly/plotly/matplotlylib/__init__.py b/plotly/matplotlylib/__init__.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/__init__.py rename to plotly/matplotlylib/__init__.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/__init__.py b/plotly/matplotlylib/mplexporter/__init__.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/__init__.py rename to plotly/matplotlylib/mplexporter/__init__.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/exporter.py b/plotly/matplotlylib/mplexporter/exporter.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/exporter.py rename to plotly/matplotlylib/mplexporter/exporter.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/__init__.py b/plotly/matplotlylib/mplexporter/renderers/__init__.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/__init__.py rename to plotly/matplotlylib/mplexporter/renderers/__init__.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/base.py b/plotly/matplotlylib/mplexporter/renderers/base.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/base.py rename to plotly/matplotlylib/mplexporter/renderers/base.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/fake_renderer.py b/plotly/matplotlylib/mplexporter/renderers/fake_renderer.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/fake_renderer.py rename to plotly/matplotlylib/mplexporter/renderers/fake_renderer.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/vega_renderer.py b/plotly/matplotlylib/mplexporter/renderers/vega_renderer.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/vega_renderer.py rename to plotly/matplotlylib/mplexporter/renderers/vega_renderer.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/vincent_renderer.py b/plotly/matplotlylib/mplexporter/renderers/vincent_renderer.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/renderers/vincent_renderer.py rename to plotly/matplotlylib/mplexporter/renderers/vincent_renderer.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/tests/__init__.py b/plotly/matplotlylib/mplexporter/tests/__init__.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/tests/__init__.py rename to plotly/matplotlylib/mplexporter/tests/__init__.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/tests/test_basic.py b/plotly/matplotlylib/mplexporter/tests/test_basic.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/tests/test_basic.py rename to plotly/matplotlylib/mplexporter/tests/test_basic.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/tests/test_utils.py b/plotly/matplotlylib/mplexporter/tests/test_utils.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/tests/test_utils.py rename to plotly/matplotlylib/mplexporter/tests/test_utils.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/tools.py b/plotly/matplotlylib/mplexporter/tools.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/tools.py rename to plotly/matplotlylib/mplexporter/tools.py diff --git a/packages/python/plotly/plotly/matplotlylib/mplexporter/utils.py b/plotly/matplotlylib/mplexporter/utils.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mplexporter/utils.py rename to plotly/matplotlylib/mplexporter/utils.py diff --git a/packages/python/plotly/plotly/matplotlylib/mpltools.py b/plotly/matplotlylib/mpltools.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/mpltools.py rename to plotly/matplotlylib/mpltools.py diff --git a/packages/python/plotly/plotly/matplotlylib/renderer.py b/plotly/matplotlylib/renderer.py similarity index 100% rename from packages/python/plotly/plotly/matplotlylib/renderer.py rename to plotly/matplotlylib/renderer.py diff --git a/packages/python/plotly/plotly/missing_anywidget.py b/plotly/missing_anywidget.py similarity index 100% rename from packages/python/plotly/plotly/missing_anywidget.py rename to plotly/missing_anywidget.py diff --git a/packages/python/plotly/plotly/offline/__init__.py b/plotly/offline/__init__.py similarity index 100% rename from packages/python/plotly/plotly/offline/__init__.py rename to plotly/offline/__init__.py diff --git a/plotly/offline/_plotlyjs_version.py b/plotly/offline/_plotlyjs_version.py new file mode 100644 index 00000000000..ec194132c62 --- /dev/null +++ b/plotly/offline/_plotlyjs_version.py @@ -0,0 +1,3 @@ +# DO NOT EDIT +# This file is generated by the updatebundle commands.py command +__plotlyjs_version__ = "3.0.1" diff --git a/packages/python/plotly/plotly/offline/offline.py b/plotly/offline/offline.py similarity index 100% rename from packages/python/plotly/plotly/offline/offline.py rename to plotly/offline/offline.py diff --git a/packages/python/plotly/plotly/optional_imports.py b/plotly/optional_imports.py similarity index 100% rename from packages/python/plotly/plotly/optional_imports.py rename to plotly/optional_imports.py diff --git a/packages/python/plotly/plotly/package_data/datasets/carshare.csv.gz b/plotly/package_data/datasets/carshare.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/carshare.csv.gz rename to plotly/package_data/datasets/carshare.csv.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/election.csv.gz b/plotly/package_data/datasets/election.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/election.csv.gz rename to plotly/package_data/datasets/election.csv.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/election.geojson.gz b/plotly/package_data/datasets/election.geojson.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/election.geojson.gz rename to plotly/package_data/datasets/election.geojson.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/experiment.csv.gz b/plotly/package_data/datasets/experiment.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/experiment.csv.gz rename to plotly/package_data/datasets/experiment.csv.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/gapminder.csv.gz b/plotly/package_data/datasets/gapminder.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/gapminder.csv.gz rename to plotly/package_data/datasets/gapminder.csv.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/iris.csv.gz b/plotly/package_data/datasets/iris.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/iris.csv.gz rename to plotly/package_data/datasets/iris.csv.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/medals.csv.gz b/plotly/package_data/datasets/medals.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/medals.csv.gz rename to plotly/package_data/datasets/medals.csv.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/stocks.csv.gz b/plotly/package_data/datasets/stocks.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/stocks.csv.gz rename to plotly/package_data/datasets/stocks.csv.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/tips.csv.gz b/plotly/package_data/datasets/tips.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/tips.csv.gz rename to plotly/package_data/datasets/tips.csv.gz diff --git a/packages/python/plotly/plotly/package_data/datasets/wind.csv.gz b/plotly/package_data/datasets/wind.csv.gz similarity index 100% rename from packages/python/plotly/plotly/package_data/datasets/wind.csv.gz rename to plotly/package_data/datasets/wind.csv.gz diff --git a/packages/python/plotly/plotly/package_data/plotly.min.js b/plotly/package_data/plotly.min.js similarity index 56% rename from packages/python/plotly/plotly/package_data/plotly.min.js rename to plotly/package_data/plotly.min.js index dc83321e942..56e81d40d57 100644 --- a/packages/python/plotly/plotly/package_data/plotly.min.js +++ b/plotly/package_data/plotly.min.js @@ -1,5 +1,5 @@ /** -* plotly.js v3.0.0 +* plotly.js v3.0.1 * Copyright 2012-2025, Plotly, Inc. * All rights reserved. * Licensed under the MIT license @@ -12,39 +12,39 @@ root.moduleName = factory(); } } (typeof self !== "undefined" ? self : this, () => { -"use strict";var Plotly=(()=>{var $C=Object.defineProperty,DQe=Object.defineProperties,zQe=Object.getOwnPropertyDescriptor,FQe=Object.getOwnPropertyDescriptors,qQe=Object.getOwnPropertyNames,WQ=Object.getOwnPropertySymbols;var XQ=Object.prototype.hasOwnProperty,OQe=Object.prototype.propertyIsEnumerable;var ZQ=(e,t,r)=>t in e?$C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,YQ=(e,t)=>{for(var r in t||(t={}))XQ.call(t,r)&&ZQ(e,r,t[r]);if(WQ)for(var r of WQ(t))OQe.call(t,r)&&ZQ(e,r,t[r]);return e},KQ=(e,t)=>DQe(e,FQe(t));var su=(e,t)=>()=>(e&&(t=e(e=0)),t);var ye=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),BQe=(e,t)=>{for(var r in t)$C(e,r,{get:t[r],enumerable:!0})},NQe=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of qQe(t))!XQ.call(e,i)&&i!==r&&$C(e,i,{get:()=>t[i],enumerable:!(n=zQe(t,i))||n.enumerable});return e};var ab=e=>NQe($C({},"__esModule",{value:!0}),e);var QC=ye(JQ=>{"use strict";JQ.version="3.0.0"});var QQ=ye(($Q,e6)=>{(function(t,r,n){r[t]=r[t]||n(),typeof e6!="undefined"&&e6.exports?e6.exports=r[t]:typeof define=="function"&&define.amd&&define(function(){return r[t]})})("Promise",typeof window!="undefined"?window:$Q,function(){"use strict";var t,r,n,i=Object.prototype.toString,a=typeof setImmediate!="undefined"?function(E){return setImmediate(E)}:setTimeout;try{Object.defineProperty({},"x",{}),t=function(E,k,A,L){return Object.defineProperty(E,k,{value:A,writable:!0,configurable:L!==!1})}}catch(g){t=function(k,A,L){return k[A]=L,k}}n=function(){var E,k,A;function L(_,C){this.fn=_,this.self=C,this.next=void 0}return{add:function(C,M){A=new L(C,M),k?k.next=A:E=A,k=A,A=void 0},drain:function(){var C=E;for(E=k=r=void 0;C;)C.fn.call(C.self),C=C.next}}}();function o(g,E){n.add(g,E),r||(r=a(n.drain))}function s(g){var E,k=typeof g;return g!=null&&(k=="object"||k=="function")&&(E=g.then),typeof E=="function"?E:!1}function l(){for(var g=0;g0&&o(l,k))}catch(A){f.call(new d(k),A)}}}function f(g){var E=this;E.triggered||(E.triggered=!0,E.def&&(E=E.def),E.msg=g,E.state=2,E.chain.length>0&&o(l,E))}function h(g,E,k,A){for(var L=0;L{(function(){var e={version:"3.8.2"},t=[].slice,r=function(Z){return t.call(Z)},n=self.document;function i(Z){return Z&&(Z.ownerDocument||Z.document||Z).documentElement}function a(Z){return Z&&(Z.ownerDocument&&Z.ownerDocument.defaultView||Z.document&&Z||Z.defaultView)}if(n)try{r(n.documentElement.childNodes)[0].nodeType}catch(Z){r=function(oe){for(var we=oe.length,Be=new Array(we);we--;)Be[we]=oe[we];return Be}}if(Date.now||(Date.now=function(){return+new Date}),n)try{n.createElement("DIV").style.setProperty("opacity",0,"")}catch(Z){var o=this.Element.prototype,s=o.setAttribute,l=o.setAttributeNS,u=this.CSSStyleDeclaration.prototype,c=u.setProperty;o.setAttribute=function(oe,we){s.call(this,oe,we+"")},o.setAttributeNS=function(oe,we,Be){l.call(this,oe,we,Be+"")},u.setProperty=function(oe,we,Be){c.call(this,oe,we+"",Be)}}e.ascending=f;function f(Z,oe){return Zoe?1:Z>=oe?0:NaN}e.descending=function(Z,oe){return oeZ?1:oe>=Z?0:NaN},e.min=function(Z,oe){var we=-1,Be=Z.length,Ue,We;if(arguments.length===1){for(;++we=We){Ue=We;break}for(;++weWe&&(Ue=We)}else{for(;++we=We){Ue=We;break}for(;++weWe&&(Ue=We)}return Ue},e.max=function(Z,oe){var we=-1,Be=Z.length,Ue,We;if(arguments.length===1){for(;++we=We){Ue=We;break}for(;++weUe&&(Ue=We)}else{for(;++we=We){Ue=We;break}for(;++weUe&&(Ue=We)}return Ue},e.extent=function(Z,oe){var we=-1,Be=Z.length,Ue,We,wt;if(arguments.length===1){for(;++we=We){Ue=wt=We;break}for(;++weWe&&(Ue=We),wt=We){Ue=wt=We;break}for(;++weWe&&(Ue=We),wt1)return wt/(zt-1)},e.deviation=function(){var Z=e.variance.apply(this,arguments);return Z&&Math.sqrt(Z)};function v(Z){return{left:function(oe,we,Be,Ue){for(arguments.length<3&&(Be=0),arguments.length<4&&(Ue=oe.length);Be>>1;Z(oe[We],we)<0?Be=We+1:Ue=We}return Be},right:function(oe,we,Be,Ue){for(arguments.length<3&&(Be=0),arguments.length<4&&(Ue=oe.length);Be>>1;Z(oe[We],we)>0?Ue=We:Be=We+1}return Be}}}var x=v(f);e.bisectLeft=x.left,e.bisect=e.bisectRight=x.right,e.bisector=function(Z){return v(Z.length===1?function(oe,we){return f(Z(oe),we)}:Z)},e.shuffle=function(Z,oe,we){(Be=arguments.length)<3&&(we=Z.length,Be<2&&(oe=0));for(var Be=we-oe,Ue,We;Be;)We=Math.random()*Be--|0,Ue=Z[Be+oe],Z[Be+oe]=Z[We+oe],Z[We+oe]=Ue;return Z},e.permute=function(Z,oe){for(var we=oe.length,Be=new Array(we);we--;)Be[we]=Z[oe[we]];return Be},e.pairs=function(Z){for(var oe=0,we=Z.length-1,Be,Ue=Z[0],We=new Array(we<0?0:we);oe=0;)for(wt=Z[oe],we=wt.length;--we>=0;)We[--Ue]=wt[we];return We};var g=Math.abs;e.range=function(Z,oe,we){if(arguments.length<3&&(we=1,arguments.length<2&&(oe=Z,Z=0)),(oe-Z)/we===1/0)throw new Error("infinite range");var Be=[],Ue=E(g(we)),We=-1,wt;if(Z*=Ue,oe*=Ue,we*=Ue,we<0)for(;(wt=Z+we*++We)>oe;)Be.push(wt/Ue);else for(;(wt=Z+we*++We)=oe.length)return Ue?Ue.call(Z,zt):Be?zt.sort(Be):zt;for(var lr=-1,Dr=zt.length,Ir=oe[or++],oi,ui,qr,Kr=new A,ii;++lr=oe.length)return tt;var or=[],lr=we[zt++];return tt.forEach(function(Dr,Ir){or.push({key:Dr,values:wt(Ir,zt)})}),lr?or.sort(function(Dr,Ir){return lr(Dr.key,Ir.key)}):or}return Z.map=function(tt,zt){return We(zt,tt,0)},Z.entries=function(tt){return wt(We(e.map,tt,0),0)},Z.key=function(tt){return oe.push(tt),Z},Z.sortKeys=function(tt){return we[oe.length-1]=tt,Z},Z.sortValues=function(tt){return Be=tt,Z},Z.rollup=function(tt){return Ue=tt,Z},Z},e.set=function(Z){var oe=new V;if(Z)for(var we=0,Be=Z.length;we=0&&(Be=Z.slice(we+1),Z=Z.slice(0,we)),Z)return arguments.length<2?this[Z].on(Be):this[Z].on(Be,oe);if(arguments.length===2){if(oe==null)for(Z in this)this.hasOwnProperty(Z)&&this[Z].on(Be,null);return this}};function ae(Z){var oe=[],we=new A;function Be(){for(var Ue=oe,We=-1,wt=Ue.length,tt;++We=0&&(we=Z.slice(0,oe))!=="xmlns"&&(Z=Z.slice(oe+1)),Ge.hasOwnProperty(we)?{space:Ge[we],local:Z}:Z}},Ce.attr=function(Z,oe){if(arguments.length<2){if(typeof Z=="string"){var we=this.node();return Z=e.ns.qualify(Z),Z.local?we.getAttributeNS(Z.space,Z.local):we.getAttribute(Z)}for(oe in Z)this.each(nt(oe,Z[oe]));return this}return this.each(nt(Z,oe))};function nt(Z,oe){Z=e.ns.qualify(Z);function we(){this.removeAttribute(Z)}function Be(){this.removeAttributeNS(Z.space,Z.local)}function Ue(){this.setAttribute(Z,oe)}function We(){this.setAttributeNS(Z.space,Z.local,oe)}function wt(){var zt=oe.apply(this,arguments);zt==null?this.removeAttribute(Z):this.setAttribute(Z,zt)}function tt(){var zt=oe.apply(this,arguments);zt==null?this.removeAttributeNS(Z.space,Z.local):this.setAttributeNS(Z.space,Z.local,zt)}return oe==null?Z.local?Be:we:typeof oe=="function"?Z.local?tt:wt:Z.local?We:Ue}function ct(Z){return Z.trim().replace(/\s+/g," ")}Ce.classed=function(Z,oe){if(arguments.length<2){if(typeof Z=="string"){var we=this.node(),Be=(Z=rt(Z)).length,Ue=-1;if(oe=we.classList){for(;++Ue=0;)(We=we[Be])&&(Ue&&Ue!==We.nextSibling&&Ue.parentNode.insertBefore(We,Ue),Ue=We);return this},Ce.sort=function(Z){Z=xt.apply(this,arguments);for(var oe=-1,we=this.length;++oe=oe&&(oe=Ue+1);!(zt=wt[oe])&&++oe0&&(Z=Z.slice(0,Ue));var wt=Ht.get(Z);wt&&(Z=wt,We=fr);function tt(){var lr=this[Be];lr&&(this.removeEventListener(Z,lr,lr.$),delete this[Be])}function zt(){var lr=We(oe,r(arguments));tt.call(this),this.addEventListener(Z,this[Be]=lr,lr.$=we),lr._=oe}function or(){var lr=new RegExp("^__on([^.]+)"+e.requote(Z)+"$"),Dr;for(var Ir in this)if(Dr=Ir.match(lr)){var oi=this[Ir];this.removeEventListener(Dr[1],oi,oi.$),delete this[Ir]}}return Ue?oe?zt:tt:oe?W:or}var Ht=e.map({mouseenter:"mouseover",mouseleave:"mouseout"});n&&Ht.forEach(function(Z){"on"+Z in n&&Ht.remove(Z)});function $t(Z,oe){return function(we){var Be=e.event;e.event=we,oe[0]=this.__data__;try{Z.apply(this,oe)}finally{e.event=Be}}}function fr(Z,oe){var we=$t(Z,oe);return function(Be){var Ue=this,We=Be.relatedTarget;(!We||We!==Ue&&!(We.compareDocumentPosition(Ue)&8))&&we.call(Ue,Be)}}var _r,Br=0;function Or(Z){var oe=".dragsuppress-"+ ++Br,we="click"+oe,Be=e.select(a(Z)).on("touchmove"+oe,_e).on("dragstart"+oe,_e).on("selectstart"+oe,_e);if(_r==null&&(_r="onselectstart"in Z?!1:G(Z.style,"userSelect")),_r){var Ue=i(Z).style,We=Ue[_r];Ue[_r]="none"}return function(wt){if(Be.on(oe,null),_r&&(Ue[_r]=We),wt){var tt=function(){Be.on(we,null)};Be.on(we,function(){_e(),tt()},!0),setTimeout(tt,0)}}}e.mouse=function(Z){return ut(Z,Me())};var Nr=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;function ut(Z,oe){oe.changedTouches&&(oe=oe.changedTouches[0]);var we=Z.ownerSVGElement||Z;if(we.createSVGPoint){var Be=we.createSVGPoint();if(Nr<0){var Ue=a(Z);if(Ue.scrollX||Ue.scrollY){we=e.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var We=we[0][0].getScreenCTM();Nr=!(We.f||We.e),we.remove()}}return Nr?(Be.x=oe.pageX,Be.y=oe.pageY):(Be.x=oe.clientX,Be.y=oe.clientY),Be=Be.matrixTransform(Z.getScreenCTM().inverse()),[Be.x,Be.y]}var wt=Z.getBoundingClientRect();return[oe.clientX-wt.left-Z.clientLeft,oe.clientY-wt.top-Z.clientTop]}e.touch=function(Z,oe,we){if(arguments.length<3&&(we=oe,oe=Me().changedTouches),oe){for(var Be=0,Ue=oe.length,We;Be0?1:Z<0?-1:0}function Vt(Z,oe,we){return(oe[0]-Z[0])*(we[1]-Z[1])-(oe[1]-Z[1])*(we[0]-Z[0])}function ar(Z){return Z>1?0:Z<-1?Xe:Math.acos(Z)}function Qr(Z){return Z>1?xe:Z<-1?-xe:Math.asin(Z)}function ai(Z){return((Z=Math.exp(Z))-1/Z)/2}function jr(Z){return((Z=Math.exp(Z))+1/Z)/2}function ri(Z){return((Z=Math.exp(2*Z))-1)/(Z+1)}function bi(Z){return(Z=Math.sin(Z/2))*Z}var nn=Math.SQRT2,Wi=2,Ni=4;e.interpolateZoom=function(Z,oe){var we=Z[0],Be=Z[1],Ue=Z[2],We=oe[0],wt=oe[1],tt=oe[2],zt=We-we,or=wt-Be,lr=zt*zt+or*or,Dr,Ir;if(lr0&&(pn=pn.transition().duration(wt)),pn.call(ci.event)}function ga(){Kr&&Kr.domain(qr.range().map(function(pn){return(pn-Z.x)/Z.k}).map(qr.invert)),vi&&vi.domain(ii.range().map(function(pn){return(pn-Z.y)/Z.k}).map(ii.invert))}function ya(pn){tt++||pn({type:"zoomstart"})}function so(pn){ga(),pn({type:"zoom",scale:Z.k,translate:[Z.x,Z.y]})}function wa(pn){--tt||(pn({type:"zoomend"}),we=null)}function io(){var pn=this,za=ui.of(pn,arguments),Lo=0,Fo=e.select(a(pn)).on(or,fu).on(lr,dl),js=Jr(e.mouse(pn)),xl=Or(pn);ea.call(pn),ya(za);function fu(){Lo=1,En(e.mouse(pn),js),so(za)}function dl(){Fo.on(or,null).on(lr,null),xl(Lo),wa(za)}}function Ss(){var pn=this,za=ui.of(pn,arguments),Lo={},Fo=0,js,xl=".zoom-"+e.event.changedTouches[0].identifier,fu="touchmove"+xl,dl="touchend"+xl,xc=[],At=e.select(pn),Er=Or(pn);wi(),ya(za),At.on(zt,null).on(Ir,wi);function Wr(){var Bi=e.touches(pn);return js=Z.k,Bi.forEach(function(cn){cn.identifier in Lo&&(Lo[cn.identifier]=Jr(cn))}),Bi}function wi(){var Bi=e.event.target;e.select(Bi).on(fu,Ui).on(dl,Oi),xc.push(Bi);for(var cn=e.event.changedTouches,On=0,Bn=cn.length;On1){var Rn=yn[0],Dn=yn[1],fn=Rn[0]-Dn[0],Ai=Rn[1]-Dn[1];Fo=fn*fn+Ai*Ai}}function Ui(){var Bi=e.touches(pn),cn,On,Bn,yn;ea.call(pn);for(var to=0,Rn=Bi.length;to1?1:oe,we=we<0?0:we>1?1:we,Ue=we<=.5?we*(1+oe):we+oe-we*oe,Be=2*we-Ue;function We(tt){return tt>360?tt-=360:tt<0&&(tt+=360),tt<60?Be+(Ue-Be)*tt/60:tt<180?Ue:tt<240?Be+(Ue-Be)*(240-tt)/60:Be}function wt(tt){return Math.round(We(tt)*255)}return new Fa(wt(Z+120),wt(Z),wt(Z-120))}e.hcl=Zt;function Zt(Z,oe,we){return this instanceof Zt?(this.h=+Z,this.c=+oe,void(this.l=+we)):arguments.length<2?Z instanceof Zt?new Zt(Z.h,Z.c,Z.l):Z instanceof Zr?Ki(Z.l,Z.a,Z.b):Ki((Z=xn((Z=e.rgb(Z)).r,Z.g,Z.b)).l,Z.a,Z.b):new Zt(Z,oe,we)}var yr=Zt.prototype=new Wn;yr.brighter=function(Z){return new Zt(this.h,this.c,Math.min(100,this.l+Vr*(arguments.length?Z:1)))},yr.darker=function(Z){return new Zt(this.h,this.c,Math.max(0,this.l-Vr*(arguments.length?Z:1)))},yr.rgb=function(){return Fr(this.h,this.c,this.l).rgb()};function Fr(Z,oe,we){return isNaN(Z)&&(Z=0),isNaN(oe)&&(oe=0),new Zr(we,Math.cos(Z*=Se)*oe,Math.sin(Z)*oe)}e.lab=Zr;function Zr(Z,oe,we){return this instanceof Zr?(this.l=+Z,this.a=+oe,void(this.b=+we)):arguments.length<2?Z instanceof Zr?new Zr(Z.l,Z.a,Z.b):Z instanceof Zt?Fr(Z.h,Z.c,Z.l):xn((Z=Fa(Z)).r,Z.g,Z.b):new Zr(Z,oe,we)}var Vr=18,gi=.95047,Si=1,Mi=1.08883,Pi=Zr.prototype=new Wn;Pi.brighter=function(Z){return new Zr(Math.min(100,this.l+Vr*(arguments.length?Z:1)),this.a,this.b)},Pi.darker=function(Z){return new Zr(Math.max(0,this.l-Vr*(arguments.length?Z:1)),this.a,this.b)},Pi.rgb=function(){return Gi(this.l,this.a,this.b)};function Gi(Z,oe,we){var Be=(Z+16)/116,Ue=Be+oe/500,We=Be-we/200;return Ue=ka(Ue)*gi,Be=ka(Be)*Si,We=ka(We)*Mi,new Fa(la(3.2404542*Ue-1.5371385*Be-.4985314*We),la(-.969266*Ue+1.8760108*Be+.041556*We),la(.0556434*Ue-.2040259*Be+1.0572252*We))}function Ki(Z,oe,we){return Z>0?new Zt(Math.atan2(we,oe)*lt,Math.sqrt(oe*oe+we*we),Z):new Zt(NaN,NaN,Z)}function ka(Z){return Z>.206893034?Z*Z*Z:(Z-4/29)/7.787037}function jn(Z){return Z>.008856?Math.pow(Z,1/3):7.787037*Z+4/29}function la(Z){return Math.round(255*(Z<=.00304?12.92*Z:1.055*Math.pow(Z,1/2.4)-.055))}e.rgb=Fa;function Fa(Z,oe,we){return this instanceof Fa?(this.r=~~Z,this.g=~~oe,void(this.b=~~we)):arguments.length<2?Z instanceof Fa?new Fa(Z.r,Z.g,Z.b):Ha(""+Z,Fa,jt):new Fa(Z,oe,we)}function Ra(Z){return new Fa(Z>>16,Z>>8&255,Z&255)}function jo(Z){return Ra(Z)+""}var oa=Fa.prototype=new Wn;oa.brighter=function(Z){Z=Math.pow(.7,arguments.length?Z:1);var oe=this.r,we=this.g,Be=this.b,Ue=30;return!oe&&!we&&!Be?new Fa(Ue,Ue,Ue):(oe&&oe>4,Be=Be>>4|Be,Ue=zt&240,Ue=Ue>>4|Ue,We=zt&15,We=We<<4|We):Z.length===7&&(Be=(zt&16711680)>>16,Ue=(zt&65280)>>8,We=zt&255)),oe(Be,Ue,We))}function oo(Z,oe,we){var Be=Math.min(Z/=255,oe/=255,we/=255),Ue=Math.max(Z,oe,we),We=Ue-Be,wt,tt,zt=(Ue+Be)/2;return We?(tt=zt<.5?We/(Ue+Be):We/(2-Ue-Be),Z==Ue?wt=(oe-we)/We+(oe0&&zt<1?0:wt),new It(wt,tt,zt)}function xn(Z,oe,we){Z=_t(Z),oe=_t(oe),we=_t(we);var Be=jn((.4124564*Z+.3575761*oe+.1804375*we)/gi),Ue=jn((.2126729*Z+.7151522*oe+.072175*we)/Si),We=jn((.0193339*Z+.119192*oe+.9503041*we)/Mi);return Zr(116*Ue-16,500*(Be-Ue),200*(Ue-We))}function _t(Z){return(Z/=255)<=.04045?Z/12.92:Math.pow((Z+.055)/1.055,2.4)}function br(Z){var oe=parseFloat(Z);return Z.charAt(Z.length-1)==="%"?Math.round(oe*2.55):oe}var Hr=e.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Hr.forEach(function(Z,oe){Hr.set(Z,Ra(oe))});function ti(Z){return typeof Z=="function"?Z:function(){return Z}}e.functor=ti,e.xhr=zi(H);function zi(Z){return function(oe,we,Be){return arguments.length===2&&typeof we=="function"&&(Be=we,we=null),Yi(oe,we,Z,Be)}}function Yi(Z,oe,we,Be){var Ue={},We=e.dispatch("beforesend","progress","load","error"),wt={},tt=new XMLHttpRequest,zt=null;self.XDomainRequest&&!("withCredentials"in tt)&&/^(http(s)?:)?\/\//.test(Z)&&(tt=new XDomainRequest),"onload"in tt?tt.onload=tt.onerror=or:tt.onreadystatechange=function(){tt.readyState>3&&or()};function or(){var lr=tt.status,Dr;if(!lr&&hi(tt)||lr>=200&&lr<300||lr===304){try{Dr=we.call(Ue,tt)}catch(Ir){We.error.call(Ue,Ir);return}We.load.call(Ue,Dr)}else We.error.call(Ue,tt)}return tt.onprogress=function(lr){var Dr=e.event;e.event=lr;try{We.progress.call(Ue,tt)}finally{e.event=Dr}},Ue.header=function(lr,Dr){return lr=(lr+"").toLowerCase(),arguments.length<2?wt[lr]:(Dr==null?delete wt[lr]:wt[lr]=Dr+"",Ue)},Ue.mimeType=function(lr){return arguments.length?(oe=lr==null?null:lr+"",Ue):oe},Ue.responseType=function(lr){return arguments.length?(zt=lr,Ue):zt},Ue.response=function(lr){return we=lr,Ue},["get","post"].forEach(function(lr){Ue[lr]=function(){return Ue.send.apply(Ue,[lr].concat(r(arguments)))}}),Ue.send=function(lr,Dr,Ir){if(arguments.length===2&&typeof Dr=="function"&&(Ir=Dr,Dr=null),tt.open(lr,Z,!0),oe!=null&&!("accept"in wt)&&(wt.accept=oe+",*/*"),tt.setRequestHeader)for(var oi in wt)tt.setRequestHeader(oi,wt[oi]);return oe!=null&&tt.overrideMimeType&&tt.overrideMimeType(oe),zt!=null&&(tt.responseType=zt),Ir!=null&&Ue.on("error",Ir).on("load",function(ui){Ir(null,ui)}),We.beforesend.call(Ue,tt),tt.send(Dr==null?null:Dr),Ue},Ue.abort=function(){return tt.abort(),Ue},e.rebind(Ue,We,"on"),Be==null?Ue:Ue.get(an(Be))}function an(Z){return Z.length===1?function(oe,we){Z(oe==null?we:null)}:Z}function hi(Z){var oe=Z.responseType;return oe&&oe!=="text"?Z.response:Z.responseText}e.dsv=function(Z,oe){var we=new RegExp('["'+Z+` +"use strict";var Plotly=(()=>{var VQe=Object.create;var MS=Object.defineProperty,HQe=Object.defineProperties,GQe=Object.getOwnPropertyDescriptor,jQe=Object.getOwnPropertyDescriptors,WQe=Object.getOwnPropertyNames,XQ=Object.getOwnPropertySymbols,ZQe=Object.getPrototypeOf,KQ=Object.prototype.hasOwnProperty,XQe=Object.prototype.propertyIsEnumerable;var YQ=(e,t,r)=>t in e?MS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,JQ=(e,t)=>{for(var r in t||(t={}))KQ.call(t,r)&&YQ(e,r,t[r]);if(XQ)for(var r of XQ(t))XQe.call(t,r)&&YQ(e,r,t[r]);return e},$Q=(e,t)=>HQe(e,jQe(t));var Ll=(e,t)=>()=>(e&&(t=e(e=0)),t);var ye=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),QQ=(e,t)=>{for(var r in t)MS(e,r,{get:t[r],enumerable:!0})},eee=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of WQe(t))!KQ.call(e,i)&&i!==r&&MS(e,i,{get:()=>t[i],enumerable:!(n=GQe(t,i))||n.enumerable});return e};var YQe=(e,t,r)=>(r=e!=null?VQe(ZQe(e)):{},eee(t||!e||!e.__esModule?MS(r,"default",{value:e,enumerable:!0}):r,e)),B1=e=>eee(MS({},"__esModule",{value:!0}),e);var e6=ye(tee=>{"use strict";tee.version="3.0.1"});var iee=ye((ree,t6)=>{(function(t,r,n){r[t]=r[t]||n(),typeof t6!="undefined"&&t6.exports&&(t6.exports=r[t])})("Promise",typeof window!="undefined"?window:ree,function(){"use strict";var t,r,n,i=Object.prototype.toString,a=typeof setImmediate!="undefined"?function(E){return setImmediate(E)}:setTimeout;try{Object.defineProperty({},"x",{}),t=function(E,k,A,L){return Object.defineProperty(E,k,{value:A,writable:!0,configurable:L!==!1})}}catch(p){t=function(k,A,L){return k[A]=L,k}}n=function(){var E,k,A;function L(_,C){this.fn=_,this.self=C,this.next=void 0}return{add:function(C,M){A=new L(C,M),k?k.next=A:E=A,k=A,A=void 0},drain:function(){var C=E;for(E=k=r=void 0;C;)C.fn.call(C.self),C=C.next}}}();function o(p,E){n.add(p,E),r||(r=a(n.drain))}function s(p){var E,k=typeof p;return p!=null&&(k=="object"||k=="function")&&(E=p.then),typeof E=="function"?E:!1}function l(){for(var p=0;p0&&o(l,k))}catch(A){f.call(new d(k),A)}}}function f(p){var E=this;E.triggered||(E.triggered=!0,E.def&&(E=E.def),E.msg=p,E.state=2,E.chain.length>0&&o(l,E))}function h(p,E,k,A){for(var L=0;L{(function(){var e={version:"3.8.2"},t=[].slice,r=function(Z){return t.call(Z)},n=self.document;function i(Z){return Z&&(Z.ownerDocument||Z.document||Z).documentElement}function a(Z){return Z&&(Z.ownerDocument&&Z.ownerDocument.defaultView||Z.document&&Z||Z.defaultView)}if(n)try{r(n.documentElement.childNodes)[0].nodeType}catch(Z){r=function(oe){for(var we=oe.length,Be=new Array(we);we--;)Be[we]=oe[we];return Be}}if(Date.now||(Date.now=function(){return+new Date}),n)try{n.createElement("DIV").style.setProperty("opacity",0,"")}catch(Z){var o=this.Element.prototype,s=o.setAttribute,l=o.setAttributeNS,u=this.CSSStyleDeclaration.prototype,c=u.setProperty;o.setAttribute=function(oe,we){s.call(this,oe,we+"")},o.setAttributeNS=function(oe,we,Be){l.call(this,oe,we,Be+"")},u.setProperty=function(oe,we,Be){c.call(this,oe,we+"",Be)}}e.ascending=f;function f(Z,oe){return Zoe?1:Z>=oe?0:NaN}e.descending=function(Z,oe){return oeZ?1:oe>=Z?0:NaN},e.min=function(Z,oe){var we=-1,Be=Z.length,Ue,We;if(arguments.length===1){for(;++we=We){Ue=We;break}for(;++weWe&&(Ue=We)}else{for(;++we=We){Ue=We;break}for(;++weWe&&(Ue=We)}return Ue},e.max=function(Z,oe){var we=-1,Be=Z.length,Ue,We;if(arguments.length===1){for(;++we=We){Ue=We;break}for(;++weUe&&(Ue=We)}else{for(;++we=We){Ue=We;break}for(;++weUe&&(Ue=We)}return Ue},e.extent=function(Z,oe){var we=-1,Be=Z.length,Ue,We,wt;if(arguments.length===1){for(;++we=We){Ue=wt=We;break}for(;++weWe&&(Ue=We),wt=We){Ue=wt=We;break}for(;++weWe&&(Ue=We),wt1)return wt/(zt-1)},e.deviation=function(){var Z=e.variance.apply(this,arguments);return Z&&Math.sqrt(Z)};function v(Z){return{left:function(oe,we,Be,Ue){for(arguments.length<3&&(Be=0),arguments.length<4&&(Ue=oe.length);Be>>1;Z(oe[We],we)<0?Be=We+1:Ue=We}return Be},right:function(oe,we,Be,Ue){for(arguments.length<3&&(Be=0),arguments.length<4&&(Ue=oe.length);Be>>1;Z(oe[We],we)>0?Ue=We:Be=We+1}return Be}}}var x=v(f);e.bisectLeft=x.left,e.bisect=e.bisectRight=x.right,e.bisector=function(Z){return v(Z.length===1?function(oe,we){return f(Z(oe),we)}:Z)},e.shuffle=function(Z,oe,we){(Be=arguments.length)<3&&(we=Z.length,Be<2&&(oe=0));for(var Be=we-oe,Ue,We;Be;)We=Math.random()*Be--|0,Ue=Z[Be+oe],Z[Be+oe]=Z[We+oe],Z[We+oe]=Ue;return Z},e.permute=function(Z,oe){for(var we=oe.length,Be=new Array(we);we--;)Be[we]=Z[oe[we]];return Be},e.pairs=function(Z){for(var oe=0,we=Z.length-1,Be,Ue=Z[0],We=new Array(we<0?0:we);oe=0;)for(wt=Z[oe],we=wt.length;--we>=0;)We[--Ue]=wt[we];return We};var p=Math.abs;e.range=function(Z,oe,we){if(arguments.length<3&&(we=1,arguments.length<2&&(oe=Z,Z=0)),(oe-Z)/we===1/0)throw new Error("infinite range");var Be=[],Ue=E(p(we)),We=-1,wt;if(Z*=Ue,oe*=Ue,we*=Ue,we<0)for(;(wt=Z+we*++We)>oe;)Be.push(wt/Ue);else for(;(wt=Z+we*++We)=oe.length)return Ue?Ue.call(Z,zt):Be?zt.sort(Be):zt;for(var lr=-1,Dr=zt.length,Ir=oe[or++],oi,ui,qr,Kr=new A,ii;++lr=oe.length)return tt;var or=[],lr=we[zt++];return tt.forEach(function(Dr,Ir){or.push({key:Dr,values:wt(Ir,zt)})}),lr?or.sort(function(Dr,Ir){return lr(Dr.key,Ir.key)}):or}return Z.map=function(tt,zt){return We(zt,tt,0)},Z.entries=function(tt){return wt(We(e.map,tt,0),0)},Z.key=function(tt){return oe.push(tt),Z},Z.sortKeys=function(tt){return we[oe.length-1]=tt,Z},Z.sortValues=function(tt){return Be=tt,Z},Z.rollup=function(tt){return Ue=tt,Z},Z},e.set=function(Z){var oe=new V;if(Z)for(var we=0,Be=Z.length;we=0&&(Be=Z.slice(we+1),Z=Z.slice(0,we)),Z)return arguments.length<2?this[Z].on(Be):this[Z].on(Be,oe);if(arguments.length===2){if(oe==null)for(Z in this)this.hasOwnProperty(Z)&&this[Z].on(Be,null);return this}};function ae(Z){var oe=[],we=new A;function Be(){for(var Ue=oe,We=-1,wt=Ue.length,tt;++We=0&&(we=Z.slice(0,oe))!=="xmlns"&&(Z=Z.slice(oe+1)),Ge.hasOwnProperty(we)?{space:Ge[we],local:Z}:Z}},Ce.attr=function(Z,oe){if(arguments.length<2){if(typeof Z=="string"){var we=this.node();return Z=e.ns.qualify(Z),Z.local?we.getAttributeNS(Z.space,Z.local):we.getAttribute(Z)}for(oe in Z)this.each(nt(oe,Z[oe]));return this}return this.each(nt(Z,oe))};function nt(Z,oe){Z=e.ns.qualify(Z);function we(){this.removeAttribute(Z)}function Be(){this.removeAttributeNS(Z.space,Z.local)}function Ue(){this.setAttribute(Z,oe)}function We(){this.setAttributeNS(Z.space,Z.local,oe)}function wt(){var zt=oe.apply(this,arguments);zt==null?this.removeAttribute(Z):this.setAttribute(Z,zt)}function tt(){var zt=oe.apply(this,arguments);zt==null?this.removeAttributeNS(Z.space,Z.local):this.setAttributeNS(Z.space,Z.local,zt)}return oe==null?Z.local?Be:we:typeof oe=="function"?Z.local?tt:wt:Z.local?We:Ue}function ct(Z){return Z.trim().replace(/\s+/g," ")}Ce.classed=function(Z,oe){if(arguments.length<2){if(typeof Z=="string"){var we=this.node(),Be=(Z=rt(Z)).length,Ue=-1;if(oe=we.classList){for(;++Ue=0;)(We=we[Be])&&(Ue&&Ue!==We.nextSibling&&Ue.parentNode.insertBefore(We,Ue),Ue=We);return this},Ce.sort=function(Z){Z=xt.apply(this,arguments);for(var oe=-1,we=this.length;++oe=oe&&(oe=Ue+1);!(zt=wt[oe])&&++oe0&&(Z=Z.slice(0,Ue));var wt=Ht.get(Z);wt&&(Z=wt,We=fr);function tt(){var lr=this[Be];lr&&(this.removeEventListener(Z,lr,lr.$),delete this[Be])}function zt(){var lr=We(oe,r(arguments));tt.call(this),this.addEventListener(Z,this[Be]=lr,lr.$=we),lr._=oe}function or(){var lr=new RegExp("^__on([^.]+)"+e.requote(Z)+"$"),Dr;for(var Ir in this)if(Dr=Ir.match(lr)){var oi=this[Ir];this.removeEventListener(Dr[1],oi,oi.$),delete this[Ir]}}return Ue?oe?zt:tt:oe?W:or}var Ht=e.map({mouseenter:"mouseover",mouseleave:"mouseout"});n&&Ht.forEach(function(Z){"on"+Z in n&&Ht.remove(Z)});function $t(Z,oe){return function(we){var Be=e.event;e.event=we,oe[0]=this.__data__;try{Z.apply(this,oe)}finally{e.event=Be}}}function fr(Z,oe){var we=$t(Z,oe);return function(Be){var Ue=this,We=Be.relatedTarget;(!We||We!==Ue&&!(We.compareDocumentPosition(Ue)&8))&&we.call(Ue,Be)}}var _r,Br=0;function Or(Z){var oe=".dragsuppress-"+ ++Br,we="click"+oe,Be=e.select(a(Z)).on("touchmove"+oe,_e).on("dragstart"+oe,_e).on("selectstart"+oe,_e);if(_r==null&&(_r="onselectstart"in Z?!1:G(Z.style,"userSelect")),_r){var Ue=i(Z).style,We=Ue[_r];Ue[_r]="none"}return function(wt){if(Be.on(oe,null),_r&&(Ue[_r]=We),wt){var tt=function(){Be.on(we,null)};Be.on(we,function(){_e(),tt()},!0),setTimeout(tt,0)}}}e.mouse=function(Z){return ut(Z,Me())};var Nr=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;function ut(Z,oe){oe.changedTouches&&(oe=oe.changedTouches[0]);var we=Z.ownerSVGElement||Z;if(we.createSVGPoint){var Be=we.createSVGPoint();if(Nr<0){var Ue=a(Z);if(Ue.scrollX||Ue.scrollY){we=e.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var We=we[0][0].getScreenCTM();Nr=!(We.f||We.e),we.remove()}}return Nr?(Be.x=oe.pageX,Be.y=oe.pageY):(Be.x=oe.clientX,Be.y=oe.clientY),Be=Be.matrixTransform(Z.getScreenCTM().inverse()),[Be.x,Be.y]}var wt=Z.getBoundingClientRect();return[oe.clientX-wt.left-Z.clientLeft,oe.clientY-wt.top-Z.clientTop]}e.touch=function(Z,oe,we){if(arguments.length<3&&(we=oe,oe=Me().changedTouches),oe){for(var Be=0,Ue=oe.length,We;Be0?1:Z<0?-1:0}function Vt(Z,oe,we){return(oe[0]-Z[0])*(we[1]-Z[1])-(oe[1]-Z[1])*(we[0]-Z[0])}function ar(Z){return Z>1?0:Z<-1?Xe:Math.acos(Z)}function Qr(Z){return Z>1?xe:Z<-1?-xe:Math.asin(Z)}function ai(Z){return((Z=Math.exp(Z))-1/Z)/2}function jr(Z){return((Z=Math.exp(Z))+1/Z)/2}function ri(Z){return((Z=Math.exp(2*Z))-1)/(Z+1)}function bi(Z){return(Z=Math.sin(Z/2))*Z}var nn=Math.SQRT2,Wi=2,Ni=4;e.interpolateZoom=function(Z,oe){var we=Z[0],Be=Z[1],Ue=Z[2],We=oe[0],wt=oe[1],tt=oe[2],zt=We-we,or=wt-Be,lr=zt*zt+or*or,Dr,Ir;if(lr0&&(pn=pn.transition().duration(wt)),pn.call(ci.event)}function ga(){Kr&&Kr.domain(qr.range().map(function(pn){return(pn-Z.x)/Z.k}).map(qr.invert)),vi&&vi.domain(ii.range().map(function(pn){return(pn-Z.y)/Z.k}).map(ii.invert))}function ya(pn){tt++||pn({type:"zoomstart"})}function so(pn){ga(),pn({type:"zoom",scale:Z.k,translate:[Z.x,Z.y]})}function wa(pn){--tt||(pn({type:"zoomend"}),we=null)}function io(){var pn=this,za=ui.of(pn,arguments),Lo=0,Fo=e.select(a(pn)).on(or,fu).on(lr,dl),js=Jr(e.mouse(pn)),xl=Or(pn);ea.call(pn),ya(za);function fu(){Lo=1,En(e.mouse(pn),js),so(za)}function dl(){Fo.on(or,null).on(lr,null),xl(Lo),wa(za)}}function Ss(){var pn=this,za=ui.of(pn,arguments),Lo={},Fo=0,js,xl=".zoom-"+e.event.changedTouches[0].identifier,fu="touchmove"+xl,dl="touchend"+xl,xc=[],At=e.select(pn),Er=Or(pn);wi(),ya(za),At.on(zt,null).on(Ir,wi);function Wr(){var Bi=e.touches(pn);return js=Z.k,Bi.forEach(function(cn){cn.identifier in Lo&&(Lo[cn.identifier]=Jr(cn))}),Bi}function wi(){var Bi=e.event.target;e.select(Bi).on(fu,Ui).on(dl,Oi),xc.push(Bi);for(var cn=e.event.changedTouches,On=0,Bn=cn.length;On1){var Rn=yn[0],Dn=yn[1],fn=Rn[0]-Dn[0],Ai=Rn[1]-Dn[1];Fo=fn*fn+Ai*Ai}}function Ui(){var Bi=e.touches(pn),cn,On,Bn,yn;ea.call(pn);for(var to=0,Rn=Bi.length;to1?1:oe,we=we<0?0:we>1?1:we,Ue=we<=.5?we*(1+oe):we+oe-we*oe,Be=2*we-Ue;function We(tt){return tt>360?tt-=360:tt<0&&(tt+=360),tt<60?Be+(Ue-Be)*tt/60:tt<180?Ue:tt<240?Be+(Ue-Be)*(240-tt)/60:Be}function wt(tt){return Math.round(We(tt)*255)}return new Fa(wt(Z+120),wt(Z),wt(Z-120))}e.hcl=Zt;function Zt(Z,oe,we){return this instanceof Zt?(this.h=+Z,this.c=+oe,void(this.l=+we)):arguments.length<2?Z instanceof Zt?new Zt(Z.h,Z.c,Z.l):Z instanceof Zr?Ki(Z.l,Z.a,Z.b):Ki((Z=xn((Z=e.rgb(Z)).r,Z.g,Z.b)).l,Z.a,Z.b):new Zt(Z,oe,we)}var yr=Zt.prototype=new Wn;yr.brighter=function(Z){return new Zt(this.h,this.c,Math.min(100,this.l+Vr*(arguments.length?Z:1)))},yr.darker=function(Z){return new Zt(this.h,this.c,Math.max(0,this.l-Vr*(arguments.length?Z:1)))},yr.rgb=function(){return Fr(this.h,this.c,this.l).rgb()};function Fr(Z,oe,we){return isNaN(Z)&&(Z=0),isNaN(oe)&&(oe=0),new Zr(we,Math.cos(Z*=Se)*oe,Math.sin(Z)*oe)}e.lab=Zr;function Zr(Z,oe,we){return this instanceof Zr?(this.l=+Z,this.a=+oe,void(this.b=+we)):arguments.length<2?Z instanceof Zr?new Zr(Z.l,Z.a,Z.b):Z instanceof Zt?Fr(Z.h,Z.c,Z.l):xn((Z=Fa(Z)).r,Z.g,Z.b):new Zr(Z,oe,we)}var Vr=18,gi=.95047,Si=1,Mi=1.08883,Pi=Zr.prototype=new Wn;Pi.brighter=function(Z){return new Zr(Math.min(100,this.l+Vr*(arguments.length?Z:1)),this.a,this.b)},Pi.darker=function(Z){return new Zr(Math.max(0,this.l-Vr*(arguments.length?Z:1)),this.a,this.b)},Pi.rgb=function(){return Gi(this.l,this.a,this.b)};function Gi(Z,oe,we){var Be=(Z+16)/116,Ue=Be+oe/500,We=Be-we/200;return Ue=ka(Ue)*gi,Be=ka(Be)*Si,We=ka(We)*Mi,new Fa(la(3.2404542*Ue-1.5371385*Be-.4985314*We),la(-.969266*Ue+1.8760108*Be+.041556*We),la(.0556434*Ue-.2040259*Be+1.0572252*We))}function Ki(Z,oe,we){return Z>0?new Zt(Math.atan2(we,oe)*lt,Math.sqrt(oe*oe+we*we),Z):new Zt(NaN,NaN,Z)}function ka(Z){return Z>.206893034?Z*Z*Z:(Z-4/29)/7.787037}function jn(Z){return Z>.008856?Math.pow(Z,1/3):7.787037*Z+4/29}function la(Z){return Math.round(255*(Z<=.00304?12.92*Z:1.055*Math.pow(Z,1/2.4)-.055))}e.rgb=Fa;function Fa(Z,oe,we){return this instanceof Fa?(this.r=~~Z,this.g=~~oe,void(this.b=~~we)):arguments.length<2?Z instanceof Fa?new Fa(Z.r,Z.g,Z.b):Ha(""+Z,Fa,jt):new Fa(Z,oe,we)}function Ra(Z){return new Fa(Z>>16,Z>>8&255,Z&255)}function jo(Z){return Ra(Z)+""}var oa=Fa.prototype=new Wn;oa.brighter=function(Z){Z=Math.pow(.7,arguments.length?Z:1);var oe=this.r,we=this.g,Be=this.b,Ue=30;return!oe&&!we&&!Be?new Fa(Ue,Ue,Ue):(oe&&oe>4,Be=Be>>4|Be,Ue=zt&240,Ue=Ue>>4|Ue,We=zt&15,We=We<<4|We):Z.length===7&&(Be=(zt&16711680)>>16,Ue=(zt&65280)>>8,We=zt&255)),oe(Be,Ue,We))}function oo(Z,oe,we){var Be=Math.min(Z/=255,oe/=255,we/=255),Ue=Math.max(Z,oe,we),We=Ue-Be,wt,tt,zt=(Ue+Be)/2;return We?(tt=zt<.5?We/(Ue+Be):We/(2-Ue-Be),Z==Ue?wt=(oe-we)/We+(oe0&&zt<1?0:wt),new It(wt,tt,zt)}function xn(Z,oe,we){Z=_t(Z),oe=_t(oe),we=_t(we);var Be=jn((.4124564*Z+.3575761*oe+.1804375*we)/gi),Ue=jn((.2126729*Z+.7151522*oe+.072175*we)/Si),We=jn((.0193339*Z+.119192*oe+.9503041*we)/Mi);return Zr(116*Ue-16,500*(Be-Ue),200*(Ue-We))}function _t(Z){return(Z/=255)<=.04045?Z/12.92:Math.pow((Z+.055)/1.055,2.4)}function br(Z){var oe=parseFloat(Z);return Z.charAt(Z.length-1)==="%"?Math.round(oe*2.55):oe}var Hr=e.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Hr.forEach(function(Z,oe){Hr.set(Z,Ra(oe))});function ti(Z){return typeof Z=="function"?Z:function(){return Z}}e.functor=ti,e.xhr=zi(H);function zi(Z){return function(oe,we,Be){return arguments.length===2&&typeof we=="function"&&(Be=we,we=null),Yi(oe,we,Z,Be)}}function Yi(Z,oe,we,Be){var Ue={},We=e.dispatch("beforesend","progress","load","error"),wt={},tt=new XMLHttpRequest,zt=null;self.XDomainRequest&&!("withCredentials"in tt)&&/^(http(s)?:)?\/\//.test(Z)&&(tt=new XDomainRequest),"onload"in tt?tt.onload=tt.onerror=or:tt.onreadystatechange=function(){tt.readyState>3&&or()};function or(){var lr=tt.status,Dr;if(!lr&&hi(tt)||lr>=200&&lr<300||lr===304){try{Dr=we.call(Ue,tt)}catch(Ir){We.error.call(Ue,Ir);return}We.load.call(Ue,Dr)}else We.error.call(Ue,tt)}return tt.onprogress=function(lr){var Dr=e.event;e.event=lr;try{We.progress.call(Ue,tt)}finally{e.event=Dr}},Ue.header=function(lr,Dr){return lr=(lr+"").toLowerCase(),arguments.length<2?wt[lr]:(Dr==null?delete wt[lr]:wt[lr]=Dr+"",Ue)},Ue.mimeType=function(lr){return arguments.length?(oe=lr==null?null:lr+"",Ue):oe},Ue.responseType=function(lr){return arguments.length?(zt=lr,Ue):zt},Ue.response=function(lr){return we=lr,Ue},["get","post"].forEach(function(lr){Ue[lr]=function(){return Ue.send.apply(Ue,[lr].concat(r(arguments)))}}),Ue.send=function(lr,Dr,Ir){if(arguments.length===2&&typeof Dr=="function"&&(Ir=Dr,Dr=null),tt.open(lr,Z,!0),oe!=null&&!("accept"in wt)&&(wt.accept=oe+",*/*"),tt.setRequestHeader)for(var oi in wt)tt.setRequestHeader(oi,wt[oi]);return oe!=null&&tt.overrideMimeType&&tt.overrideMimeType(oe),zt!=null&&(tt.responseType=zt),Ir!=null&&Ue.on("error",Ir).on("load",function(ui){Ir(null,ui)}),We.beforesend.call(Ue,tt),tt.send(Dr==null?null:Dr),Ue},Ue.abort=function(){return tt.abort(),Ue},e.rebind(Ue,We,"on"),Be==null?Ue:Ue.get(an(Be))}function an(Z){return Z.length===1?function(oe,we){Z(oe==null?we:null)}:Z}function hi(Z){var oe=Z.responseType;return oe&&oe!=="text"?Z.response:Z.responseText}e.dsv=function(Z,oe){var we=new RegExp('["'+Z+` ]`),Be=Z.charCodeAt(0);function Ue(or,lr,Dr){arguments.length<3&&(Dr=lr,lr=null);var Ir=Yi(or,oe,lr==null?We:wt(lr),Dr);return Ir.row=function(oi){return arguments.length?Ir.response((lr=oi)==null?We:wt(oi)):lr},Ir}function We(or){return Ue.parse(or.responseText)}function wt(or){return function(lr){return Ue.parse(lr.responseText,or)}}Ue.parse=function(or,lr){var Dr;return Ue.parseRows(or,function(Ir,oi){if(Dr)return Dr(Ir,oi-1);var ui=function(qr){for(var Kr={},ii=Ir.length,vi=0;vi=ui)return Ir;if(vi)return vi=!1,Dr;var un=qr;if(or.charCodeAt(un)===34){for(var dn=un;dn++24?(isFinite(oe)&&(clearTimeout(Sa),Sa=setTimeout(ho,oe)),Fn=0):(Fn=1,go(ho))}e.timer.flush=function(){Mo(),xo()};function Mo(){for(var Z=Date.now(),oe=Ji;oe;)Z>=oe.t&&oe.c(Z-oe.t)&&(oe.c=null),oe=oe.n;return Z}function xo(){for(var Z,oe=Ji,we=1/0;oe;)oe.c?(oe.t=0;--tt)qr.push(Ue[or[Dr[tt]][2]]);for(tt=+oi;tt1&&Vt(Z[we[Be-2]],Z[we[Be-1]],Z[Ue])<=0;)--Be;we[Be++]=Ue}return we.slice(0,Be)}function Xs(Z,oe){return Z[0]-oe[0]||Z[1]-oe[1]}e.geom.polygon=function(Z){return ie(Z,wl),Z};var wl=e.geom.polygon.prototype=[];wl.area=function(){for(var Z=-1,oe=this.length,we,Be=this[oe-1],Ue=0;++ZYe)tt=tt.L;else if(wt=oe-vo(tt,we),wt>Ye){if(!tt.R){Be=tt;break}tt=tt.R}else{We>-Ye?(Be=tt.P,Ue=tt):wt>-Ye?(Be=tt,Ue=tt.N):Be=Ue=tt;break}var zt=ms(Z);if(Hs.insert(Be,zt),!(!Be&&!Ue)){if(Be===Ue){ko(Be),Ue=ms(Be.site),Hs.insert(zt,Ue),zt.edge=Ue.edge=cf(Be.site,zt.site),Zn(Be),Zn(Ue);return}if(!Ue){zt.edge=cf(Be.site,zt.site);return}ko(Be),ko(Ue);var or=Be.site,lr=or.x,Dr=or.y,Ir=Z.x-lr,oi=Z.y-Dr,ui=Ue.site,qr=ui.x-lr,Kr=ui.y-Dr,ii=2*(Ir*Kr-oi*qr),vi=Ir*Ir+oi*oi,ci=qr*qr+Kr*Kr,Jr={x:(Kr*vi-oi*ci)/ii+lr,y:(Ir*ci-qr*vi)/ii+Dr};Al(Ue.edge,or,ui,Jr),zt.edge=cf(or,Z,null,Jr),Ue.edge=cf(Z,ui,null,Jr),Zn(Be),Zn(Ue)}}function Il(Z,oe){var we=Z.site,Be=we.x,Ue=we.y,We=Ue-oe;if(!We)return Be;var wt=Z.P;if(!wt)return-1/0;we=wt.site;var tt=we.x,zt=we.y,or=zt-oe;if(!or)return tt;var lr=tt-Be,Dr=1/We-1/or,Ir=lr/or;return Dr?(-Ir+Math.sqrt(Ir*Ir-2*Dr*(lr*lr/(-2*or)-zt+or/2+Ue-We/2)))/Dr+Be:(Be+tt)/2}function vo(Z,oe){var we=Z.N;if(we)return Il(we,oe);var Be=Z.site;return Be.y===oe?Be.x:1/0}function Wl(Z){this.site=Z,this.edges=[]}Wl.prototype.prepare=function(){for(var Z=this.edges,oe=Z.length,we;oe--;)we=Z[oe].edge,(!we.b||!we.a)&&Z.splice(oe,1);return Z.sort(Zl),Z.length};function Ks(Z){for(var oe=Z[0][0],we=Z[1][0],Be=Z[0][1],Ue=Z[1][1],We,wt,tt,zt,or=Ys,lr=or.length,Dr,Ir,oi,ui,qr,Kr;lr--;)if(Dr=or[lr],!(!Dr||!Dr.prepare()))for(oi=Dr.edges,ui=oi.length,Ir=0;IrYe||g(zt-wt)>Ye)&&(oi.splice(Ir,0,new Hc(rh(Dr.site,Kr,g(tt-oe)Ye?{x:oe,y:g(We-oe)Ye?{x:g(wt-Ue)Ye?{x:we,y:g(We-we)Ye?{x:g(wt-Be)=-Ve)){var Ir=zt*zt+or*or,oi=lr*lr+Kr*Kr,ui=(Kr*Ir-or*oi)/Dr,qr=(zt*oi-lr*Ir)/Dr,Kr=qr+tt,ii=Hu.pop()||new Ec;ii.arc=Z,ii.site=Ue,ii.x=ui+wt,ii.y=Kr+Math.sqrt(ui*ui+qr*qr),ii.cy=Kr,Z.circle=ii;for(var vi=null,ci=$l._;ci;)if(ii.y0)){if(qr/=oi,oi<0){if(qr0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}if(qr=we-tt,!(!oi&&qr<0)){if(qr/=oi,oi<0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}else if(oi>0){if(qr0)){if(qr/=ui,ui<0){if(qr0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}if(qr=Be-zt,!(!ui&&qr<0)){if(qr/=ui,ui<0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}else if(ui>0){if(qr0&&(Ue.a={x:tt+Dr*oi,y:zt+Dr*ui}),Ir<1&&(Ue.b={x:tt+Ir*oi,y:zt+Ir*ui}),Ue}}}}}}function Tl(Z){for(var oe=ml,we=Co(Z[0][0],Z[0][1],Z[1][0],Z[1][1]),Be=oe.length,Ue;Be--;)Ue=oe[Be],(!uf(Ue,Z)||!we(Ue)||g(Ue.a.x-Ue.b.x)=We)return;if(lr>Ir){if(!Be)Be={x:ui,y:wt};else if(Be.y>=tt)return;we={x:ui,y:tt}}else{if(!Be)Be={x:ui,y:tt};else if(Be.y1)if(lr>Ir){if(!Be)Be={x:(wt-ii)/Kr,y:wt};else if(Be.y>=tt)return;we={x:(tt-ii)/Kr,y:tt}}else{if(!Be)Be={x:(tt-ii)/Kr,y:tt};else if(Be.y=We)return;we={x:We,y:Kr*We+ii}}else{if(!Be)Be={x:We,y:Kr*We+ii};else if(Be.x=lr&&ii.x<=Ir&&ii.y>=Dr&&ii.y<=oi?[[lr,oi],[Ir,oi],[Ir,Dr],[lr,Dr]]:[];vi.point=zt[qr]}),or}function tt(zt){return zt.map(function(or,lr){return{x:Math.round(Be(or,lr)/Ye)*Ye,y:Math.round(Ue(or,lr)/Ye)*Ye,i:lr}})}return wt.links=function(zt){return Gc(tt(zt)).edges.filter(function(or){return or.l&&or.r}).map(function(or){return{source:zt[or.l.i],target:zt[or.r.i]}})},wt.triangles=function(zt){var or=[];return Gc(tt(zt)).cells.forEach(function(lr,Dr){for(var Ir=lr.site,oi=lr.edges.sort(Zl),ui=-1,qr=oi.length,Kr,ii,vi=oi[qr-1].edge,ci=vi.l===Ir?vi.r:vi.l;++uici&&(ci=lr.x),lr.y>Jr&&(Jr=lr.y),oi.push(lr.x),ui.push(lr.y);else for(qr=0;qrci&&(ci=un),dn>Jr&&(Jr=dn),oi.push(un),ui.push(dn)}var En=ci-ii,Nn=Jr-vi;En>Nn?Jr=vi+En:ci=ii+Nn;function ga(wa,io,Ss,_s,Ns,pn,za,Lo){if(!(isNaN(Ss)||isNaN(_s)))if(wa.leaf){var Fo=wa.x,js=wa.y;if(Fo!=null)if(g(Fo-Ss)+g(js-_s)<.01)ya(wa,io,Ss,_s,Ns,pn,za,Lo);else{var xl=wa.point;wa.x=wa.y=wa.point=null,ya(wa,xl,Fo,js,Ns,pn,za,Lo),ya(wa,io,Ss,_s,Ns,pn,za,Lo)}else wa.x=Ss,wa.y=_s,wa.point=io}else ya(wa,io,Ss,_s,Ns,pn,za,Lo)}function ya(wa,io,Ss,_s,Ns,pn,za,Lo){var Fo=(Ns+za)*.5,js=(pn+Lo)*.5,xl=Ss>=Fo,fu=_s>=js,dl=fu<<1|xl;wa.leaf=!1,wa=wa.nodes[dl]||(wa.nodes[dl]=Ul()),xl?Ns=Fo:za=Fo,fu?pn=js:Lo=js,ga(wa,io,Ss,_s,Ns,pn,za,Lo)}var so=Ul();if(so.add=function(wa){ga(so,wa,+Dr(wa,++qr),+Ir(wa,qr),ii,vi,ci,Jr)},so.visit=function(wa){Js(wa,so,ii,vi,ci,Jr)},so.find=function(wa){return hc(so,wa[0],wa[1],ii,vi,ci,Jr)},qr=-1,oe==null){for(;++qrWe||Ir>wt||oi=un,Nn=we>=dn,ga=Nn<<1|En,ya=ga+4;gawe&&(We=oe.slice(we,We),tt[wt]?tt[wt]+=We:tt[++wt]=We),(Be=Be[0])===(Ue=Ue[0])?tt[wt]?tt[wt]+=Ue:tt[++wt]=Ue:(tt[++wt]=null,zt.push({i:wt,x:$s(Be,Ue)})),we=dc.lastIndex;return we=0&&!(Be=e.interpolators[we](Z,oe)););return Be}e.interpolators=[function(Z,oe){var we=typeof oe;return(we==="string"?Hr.has(oe.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(oe)?Cc:hs:oe instanceof Wn?Cc:Array.isArray(oe)?ec:we==="object"&&isNaN(oe)?ws:$s)(Z,oe)}],e.interpolateArray=ec;function ec(Z,oe){var we=[],Be=[],Ue=Z.length,We=oe.length,wt=Math.min(Z.length,oe.length),tt;for(tt=0;tt=0?Z.slice(0,oe):Z,Be=oe>=0?Z.slice(oe+1):"in";return we=ov.get(we)||Ps,Be=wo.get(Be)||H,Od(Be(we.apply(null,t.call(arguments,1))))};function Od(Z){return function(oe){return oe<=0?0:oe>=1?1:Z(oe)}}function $o(Z){return function(oe){return 1-Z(1-oe)}}function Ja(Z){return function(oe){return .5*(oe<.5?Z(2*oe):2-Z(2-2*oe))}}function Ef(Z){return Z*Z}function tc(Z){return Z*Z*Z}function uu(Z){if(Z<=0)return 0;if(Z>=1)return 1;var oe=Z*Z,we=oe*Z;return 4*(Z<.5?we:3*(Z-oe)+we-.75)}function Mh(Z){return function(oe){return Math.pow(oe,Z)}}function jc(Z){return 1-Math.cos(Z*xe)}function kf(Z){return Math.pow(2,10*(Z-1))}function Ml(Z){return 1-Math.sqrt(1-Z*Z)}function Yh(Z,oe){var we;return arguments.length<2&&(oe=.45),arguments.length?we=oe/ht*Math.asin(1/Z):(Z=1,we=oe/4),function(Be){return 1+Z*Math.pow(2,-10*Be)*Math.sin((Be-we)*ht/oe)}}function Eh(Z){return Z||(Z=1.70158),function(oe){return oe*oe*((Z+1)*oe-Z)}}function nh(Z){return Z<1/2.75?7.5625*Z*Z:Z<2/2.75?7.5625*(Z-=1.5/2.75)*Z+.75:Z<2.5/2.75?7.5625*(Z-=2.25/2.75)*Z+.9375:7.5625*(Z-=2.625/2.75)*Z+.984375}e.interpolateHcl=hf;function hf(Z,oe){Z=e.hcl(Z),oe=e.hcl(oe);var we=Z.h,Be=Z.c,Ue=Z.l,We=oe.h-we,wt=oe.c-Be,tt=oe.l-Ue;return isNaN(wt)&&(wt=0,Be=isNaN(Be)?oe.c:Be),isNaN(We)?(We=0,we=isNaN(we)?oe.h:we):We>180?We-=360:We<-180&&(We+=360),function(zt){return Fr(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateHsl=kh;function kh(Z,oe){Z=e.hsl(Z),oe=e.hsl(oe);var we=Z.h,Be=Z.s,Ue=Z.l,We=oe.h-we,wt=oe.s-Be,tt=oe.l-Ue;return isNaN(wt)&&(wt=0,Be=isNaN(Be)?oe.s:Be),isNaN(We)?(We=0,we=isNaN(we)?oe.h:we):We>180?We-=360:We<-180&&(We+=360),function(zt){return jt(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateLab=Kh;function Kh(Z,oe){Z=e.lab(Z),oe=e.lab(oe);var we=Z.l,Be=Z.a,Ue=Z.b,We=oe.l-we,wt=oe.a-Be,tt=oe.b-Ue;return function(zt){return Gi(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateRound=rc;function rc(Z,oe){return oe-=Z,function(we){return Math.round(Z+oe*we)}}e.transform=function(Z){var oe=n.createElementNS(e.ns.prefix.svg,"g");return(e.transform=function(we){if(we!=null){oe.setAttribute("transform",we);var Be=oe.transform.baseVal.consolidate()}return new ah(Be?Be.matrix:Nf)})(Z)};function ah(Z){var oe=[Z.a,Z.b],we=[Z.c,Z.d],Be=df(oe),Ue=Wc(oe,we),We=df(Cu(we,oe,-Ue))||0;oe[0]*we[1]180?oe+=360:oe-Z>180&&(Z+=360),Be.push({i:we.push(Zc(we)+"rotate(",null,")")-2,x:$s(Z,oe)})):oe&&we.push(Zc(we)+"rotate("+oe+")")}function Bd(Z,oe,we,Be){Z!==oe?Be.push({i:we.push(Zc(we)+"skewX(",null,")")-2,x:$s(Z,oe)}):oe&&we.push(Zc(we)+"skewX("+oe+")")}function Jh(Z,oe,we,Be){if(Z[0]!==oe[0]||Z[1]!==oe[1]){var Ue=we.push(Zc(we)+"scale(",null,",",null,")");Be.push({i:Ue-4,x:$s(Z[0],oe[0])},{i:Ue-2,x:$s(Z[1],oe[1])})}else(oe[0]!==1||oe[1]!==1)&&we.push(Zc(we)+"scale("+oe+")")}function Cf(Z,oe){var we=[],Be=[];return Z=e.transform(Z),oe=e.transform(oe),ds(Z.translate,oe.translate,we,Be),Ch(Z.rotate,oe.rotate,we,Be),Bd(Z.skew,oe.skew,we,Be),Jh(Z.scale,oe.scale,we,Be),Z=oe=null,function(Ue){for(var We=-1,wt=Be.length,tt;++We0?We=Jr:(we.c=null,we.t=NaN,we=null,oe.end({type:"end",alpha:We=0})):Jr>0&&(oe.start({type:"start",alpha:We=Jr}),we=Oo(Z.tick)),Z):We},Z.start=function(){var Jr,un=oi.length,dn=ui.length,En=Be[0],Nn=Be[1],ga,ya;for(Jr=0;Jr=0;)We.push(lr=or[zt]),lr.parent=tt,lr.depth=tt.depth+1;we&&(tt.value=0),tt.children=or}else we&&(tt.value=+we.call(Be,tt,tt.depth)||0),delete tt.children;return vc(Ue,function(Dr){var Ir,oi;Z&&(Ir=Dr.children)&&Ir.sort(Z),we&&(oi=Dr.parent)&&(oi.value+=Dr.value)}),wt}return Be.sort=function(Ue){return arguments.length?(Z=Ue,Be):Z},Be.children=function(Ue){return arguments.length?(oe=Ue,Be):oe},Be.value=function(Ue){return arguments.length?(we=Ue,Be):we},Be.revalue=function(Ue){return we&&(Pc(Ue,function(We){We.children&&(We.value=0)}),vc(Ue,function(We){var wt;We.children||(We.value=+we.call(Be,We,We.depth)||0),(wt=We.parent)&&(wt.value+=We.value)})),Ue},Be};function Gu(Z,oe){return e.rebind(Z,oe,"sort","children","value"),Z.nodes=Z,Z.links=Iu,Z}function Pc(Z,oe){for(var we=[Z];(Z=we.pop())!=null;)if(oe(Z),(Ue=Z.children)&&(Be=Ue.length))for(var Be,Ue;--Be>=0;)we.push(Ue[Be])}function vc(Z,oe){for(var we=[Z],Be=[];(Z=we.pop())!=null;)if(Be.push(Z),(wt=Z.children)&&(We=wt.length))for(var Ue=-1,We,wt;++UeUe&&(Ue=tt),Be.push(tt)}for(wt=0;wtBe&&(we=oe,Be=Ue);return we}function Is(Z){return Z.reduce(Pf,0)}function Pf(Z,oe){return Z+oe[1]}e.layout.histogram=function(){var Z=!0,oe=Number,we=Vf,Be=Ic;function Ue(We,Ir){for(var tt=[],zt=We.map(oe,this),or=we.call(this,zt,Ir),lr=Be.call(this,or,zt,Ir),Dr,Ir=-1,oi=zt.length,ui=lr.length-1,qr=Z?1:1/oi,Kr;++Ir0)for(Ir=-1;++Ir=or[0]&&Kr<=or[1]&&(Dr=tt[e.bisect(lr,Kr,1,ui)-1],Dr.y+=qr,Dr.push(We[Ir]));return tt}return Ue.value=function(We){return arguments.length?(oe=We,Ue):oe},Ue.range=function(We){return arguments.length?(we=ti(We),Ue):we},Ue.bins=function(We){return arguments.length?(Be=typeof We=="number"?function(wt){return ju(wt,We)}:ti(We),Ue):Be},Ue.frequency=function(We){return arguments.length?(Z=!!We,Ue):Z},Ue};function Ic(Z,oe){return ju(Z,Math.ceil(Math.log(oe.length)/Math.LN2+1))}function ju(Z,oe){for(var we=-1,Be=+Z[0],Ue=(Z[1]-Be)/oe,We=[];++we<=oe;)We[we]=Ue*we+Be;return We}function Vf(Z){return[e.min(Z),e.max(Z)]}e.layout.pack=function(){var Z=e.layout.hierarchy().sort(pc),oe=0,we=[1,1],Be;function Ue(We,wt){var tt=Z.call(this,We,wt),zt=tt[0],or=we[0],lr=we[1],Dr=Be==null?Math.sqrt:typeof Be=="function"?Be:function(){return Be};if(zt.x=zt.y=0,vc(zt,function(oi){oi.r=+Dr(oi.value)}),vc(zt,Ih),oe){var Ir=oe*(Be?1:Math.max(2*zt.r/or,2*zt.r/lr))/2;vc(zt,function(oi){oi.r+=Ir}),vc(zt,Ih),vc(zt,function(oi){oi.r-=Ir})}return gc(zt,or/2,lr/2,Be?1:1/Math.max(2*zt.r/or,2*zt.r/lr)),tt}return Ue.size=function(We){return arguments.length?(we=We,Ue):we},Ue.radius=function(We){return arguments.length?(Be=We==null||typeof We=="function"?We:+We,Ue):Be},Ue.padding=function(We){return arguments.length?(oe=+We,Ue):oe},Gu(Ue,Z)};function pc(Z,oe){return Z.value-oe.value}function pf(Z,oe){var we=Z._pack_next;Z._pack_next=oe,oe._pack_prev=Z,oe._pack_next=we,we._pack_prev=oe}function Ph(Z,oe){Z._pack_next=oe,oe._pack_prev=Z}function Rl(Z,oe){var we=oe.x-Z.x,Be=oe.y-Z.y,Ue=Z.r+oe.r;return .999*Ue*Ue>we*we+Be*Be}function Ih(Z){if(!(oe=Z.children)||!(Ir=oe.length))return;var oe,we=1/0,Be=-1/0,Ue=1/0,We=-1/0,wt,tt,zt,or,lr,Dr,Ir;function oi(Jr){we=Math.min(Jr.x-Jr.r,we),Be=Math.max(Jr.x+Jr.r,Be),Ue=Math.min(Jr.y-Jr.r,Ue),We=Math.max(Jr.y+Jr.r,We)}if(oe.forEach(Wu),wt=oe[0],wt.x=-wt.r,wt.y=0,oi(wt),Ir>1&&(tt=oe[1],tt.x=tt.r,tt.y=0,oi(tt),Ir>2))for(zt=oe[2],hl(wt,tt,zt),oi(zt),pf(wt,zt),wt._pack_prev=zt,pf(zt,tt),tt=wt._pack_next,or=3;orKr.x&&(Kr=un),un.depth>ii.depth&&(ii=un)});var vi=oe(qr,Kr)/2-qr.x,ci=we[0]/(Kr.x+oe(Kr,qr)/2+vi),Jr=we[1]/(ii.depth||1);Pc(oi,function(un){un.x=(un.x+vi)*ci,un.y=un.depth*Jr})}return Ir}function We(lr){for(var Dr={A:null,children:[lr]},Ir=[Dr],oi;(oi=Ir.pop())!=null;)for(var ui=oi.children,qr,Kr=0,ii=ui.length;Kr0&&(nc(gt(qr,lr,Ir),lr,un),ii+=un,vi+=un),ci+=qr.m,ii+=oi.m,Jr+=Kr.m,vi+=ui.m;qr&&!Yc(ui)&&(ui.t=qr,ui.m+=ci-vi),oi&&!mc(Kr)&&(Kr.t=oi,Kr.m+=ii-Jr,Ir=lr)}return Ir}function or(lr){lr.x*=we[0],lr.y=lr.depth*we[1]}return Ue.separation=function(lr){return arguments.length?(oe=lr,Ue):oe},Ue.size=function(lr){return arguments.length?(Be=(we=lr)==null?or:null,Ue):Be?null:we},Ue.nodeSize=function(lr){return arguments.length?(Be=(we=lr)==null?null:or,Ue):Be?we:null},Gu(Ue,Z)};function ru(Z,oe){return Z.parent==oe.parent?1:2}function mc(Z){var oe=Z.children;return oe.length?oe[0]:Z.t}function Yc(Z){var oe=Z.children,we;return(we=oe.length)?oe[we-1]:Z.t}function nc(Z,oe,we){var Be=we/(oe.i-Z.i);oe.c-=Be,oe.s+=we,Z.c+=Be,oe.z+=we,oe.m+=we}function gf(Z){for(var oe=0,we=0,Be=Z.children,Ue=Be.length,We;--Ue>=0;)We=Be[Ue],We.z+=oe,We.m+=oe,oe+=We.s+(we+=We.c)}function gt(Z,oe,we){return Z.a.parent===oe.parent?Z.a:we}e.layout.cluster=function(){var Z=e.layout.hierarchy().sort(null).value(null),oe=ru,we=[1,1],Be=!1;function Ue(We,wt){var tt=Z.call(this,We,wt),zt=tt[0],or,lr=0;vc(zt,function(qr){var Kr=qr.children;Kr&&Kr.length?(qr.x=wr(Kr),qr.y=Bt(Kr)):(qr.x=or?lr+=oe(qr,or):0,qr.y=0,or=qr)});var Dr=vr(zt),Ir=Ur(zt),oi=Dr.x-oe(Dr,Ir)/2,ui=Ir.x+oe(Ir,Dr)/2;return vc(zt,Be?function(qr){qr.x=(qr.x-zt.x)*we[0],qr.y=(zt.y-qr.y)*we[1]}:function(qr){qr.x=(qr.x-oi)/(ui-oi)*we[0],qr.y=(1-(zt.y?qr.y/zt.y:1))*we[1]}),tt}return Ue.separation=function(We){return arguments.length?(oe=We,Ue):oe},Ue.size=function(We){return arguments.length?(Be=(we=We)==null,Ue):Be?null:we},Ue.nodeSize=function(We){return arguments.length?(Be=(we=We)!=null,Ue):Be?we:null},Gu(Ue,Z)};function Bt(Z){return 1+e.max(Z,function(oe){return oe.y})}function wr(Z){return Z.reduce(function(oe,we){return oe+we.x},0)/Z.length}function vr(Z){var oe=Z.children;return oe&&oe.length?vr(oe[0]):Z}function Ur(Z){var oe=Z.children,we;return oe&&(we=oe.length)?Ur(oe[we-1]):Z}e.layout.treemap=function(){var Z=e.layout.hierarchy(),oe=Math.round,we=[1,1],Be=null,Ue=fi,We=!1,wt,tt="squarify",zt=.5*(1+Math.sqrt(5));function or(qr,Kr){for(var ii=-1,vi=qr.length,ci,Jr;++ii0;)vi.push(Jr=ci[Nn-1]),vi.area+=Jr.area,tt!=="squarify"||(dn=Ir(vi,En))<=un?(ci.pop(),un=dn):(vi.area-=vi.pop().area,oi(vi,En,ii,!1),En=Math.min(ii.dx,ii.dy),vi.length=vi.area=0,un=1/0);vi.length&&(oi(vi,En,ii,!0),vi.length=vi.area=0),Kr.forEach(lr)}}function Dr(qr){var Kr=qr.children;if(Kr&&Kr.length){var ii=Ue(qr),vi=Kr.slice(),ci,Jr=[];for(or(vi,ii.dx*ii.dy/qr.value),Jr.area=0;ci=vi.pop();)Jr.push(ci),Jr.area+=ci.area,ci.z!=null&&(oi(Jr,ci.z?ii.dx:ii.dy,ii,!vi.length),Jr.length=Jr.area=0);Kr.forEach(Dr)}}function Ir(qr,Kr){for(var ii=qr.area,vi,ci=0,Jr=1/0,un=-1,dn=qr.length;++unci&&(ci=vi));return ii*=ii,Kr*=Kr,ii?Math.max(Kr*ci*zt/ii,ii/(Kr*Jr*zt)):1/0}function oi(qr,Kr,ii,vi){var ci=-1,Jr=qr.length,un=ii.x,dn=ii.y,En=Kr?oe(qr.area/Kr):0,Nn;if(Kr==ii.dx){for((vi||En>ii.dy)&&(En=ii.dy);++ciii.dx)&&(En=ii.dx);++ci1);return Z+oe*Be*Math.sqrt(-2*Math.log(We)/We)}},logNormal:function(){var Z=e.random.normal.apply(e,arguments);return function(){return Math.exp(Z())}},bates:function(Z){var oe=e.random.irwinHall(Z);return function(){return oe()/Z}},irwinHall:function(Z){return function(){for(var oe=0,we=0;we2?mi:hn,or=Be?Lu:pd;return Ue=zt(Z,oe,or,we),We=zt(oe,Z,or,Sl),tt}function tt(zt){return Ue(zt)}return tt.invert=function(zt){return We(zt)},tt.domain=function(zt){return arguments.length?(Z=zt.map(Number),wt()):Z},tt.range=function(zt){return arguments.length?(oe=zt,wt()):oe},tt.rangeRound=function(zt){return tt.range(zt).interpolate(rc)},tt.clamp=function(zt){return arguments.length?(Be=zt,wt()):Be},tt.interpolate=function(zt){return arguments.length?(we=zt,wt()):we},tt.ticks=function(zt){return qa(Z,zt)},tt.tickFormat=function(zt,or){return d3_scale_linearTickFormat(Z,zt,or)},tt.nice=function(zt){return Ta(Z,zt),wt()},tt.copy=function(){return Pn(Z,oe,we,Be)},wt()}function Ma(Z,oe){return e.rebind(Z,oe,"range","rangeRound","interpolate","clamp")}function Ta(Z,oe){return Ti(Z,qi(Ea(Z,oe)[2])),Ti(Z,qi(Ea(Z,oe)[2])),Z}function Ea(Z,oe){oe==null&&(oe=10);var we=Fi(Z),Be=we[1]-we[0],Ue=Math.pow(10,Math.floor(Math.log(Be/oe)/Math.LN10)),We=oe/Be*Ue;return We<=.15?Ue*=10:We<=.35?Ue*=5:We<=.75&&(Ue*=2),we[0]=Math.ceil(we[0]/Ue)*Ue,we[1]=Math.floor(we[1]/Ue)*Ue+Ue*.5,we[2]=Ue,we}function qa(Z,oe){return e.range.apply(e,Ea(Z,oe))}var Cn={s:1,g:1,p:1,r:1,e:1};function sn(Z){return-Math.floor(Math.log(Z)/Math.LN10+.01)}function Ua(Z,oe){var we=sn(oe[2]);return Z in Cn?Math.abs(we-sn(Math.max(g(oe[0]),g(oe[1]))))+ +(Z!=="e"):we-(Z==="%")*2}e.scale.log=function(){return mo(e.scale.linear().domain([0,1]),10,!0,[1,10])};function mo(Z,oe,we,Be){function Ue(tt){return(we?Math.log(tt<0?0:tt):-Math.log(tt>0?0:-tt))/Math.log(oe)}function We(tt){return we?Math.pow(oe,tt):-Math.pow(oe,-tt)}function wt(tt){return Z(Ue(tt))}return wt.invert=function(tt){return We(Z.invert(tt))},wt.domain=function(tt){return arguments.length?(we=tt[0]>=0,Z.domain((Be=tt.map(Number)).map(Ue)),wt):Be},wt.base=function(tt){return arguments.length?(oe=+tt,Z.domain(Be.map(Ue)),wt):oe},wt.nice=function(){var tt=Ti(Be.map(Ue),we?Math:Xo);return Z.domain(tt),Be=tt.map(We),wt},wt.ticks=function(){var tt=Fi(Be),zt=[],or=tt[0],lr=tt[1],Dr=Math.floor(Ue(or)),Ir=Math.ceil(Ue(lr)),oi=oe%1?2:oe;if(isFinite(Ir-Dr)){if(we){for(;Dr0;ui--)zt.push(We(Dr)*ui);for(Dr=0;zt[Dr]lr;Ir--);zt=zt.slice(Dr,Ir)}return zt},wt.copy=function(){return mo(Z.copy(),oe,we,Be)},Ma(wt,Z)}var Xo={floor:function(Z){return-Math.ceil(-Z)},ceil:function(Z){return-Math.floor(-Z)}};e.scale.pow=function(){return Ts(e.scale.linear(),1,[0,1])};function Ts(Z,oe,we){var Be=Qo(oe),Ue=Qo(1/oe);function We(wt){return Z(Be(wt))}return We.invert=function(wt){return Ue(Z.invert(wt))},We.domain=function(wt){return arguments.length?(Z.domain((we=wt.map(Number)).map(Be)),We):we},We.ticks=function(wt){return qa(we,wt)},We.tickFormat=function(wt,tt){return d3_scale_linearTickFormat(we,wt,tt)},We.nice=function(wt){return We.domain(Ta(we,wt))},We.exponent=function(wt){return arguments.length?(Be=Qo(oe=wt),Ue=Qo(1/oe),Z.domain(we.map(Be)),We):oe},We.copy=function(){return Ts(Z.copy(),oe,we)},Ma(We,Z)}function Qo(Z){return function(oe){return oe<0?-Math.pow(-oe,Z):Math.pow(oe,Z)}}e.scale.sqrt=function(){return e.scale.pow().exponent(.5)},e.scale.ordinal=function(){return ys([],{t:"range",a:[[]]})};function ys(Z,oe){var we,Be,Ue;function We(tt){return Be[((we.get(tt)||(oe.t==="range"?we.set(tt,Z.push(tt)):NaN))-1)%Be.length]}function wt(tt,zt){return e.range(Z.length).map(function(or){return tt+zt*or})}return We.domain=function(tt){if(!arguments.length)return Z;Z=[],we=new A;for(var zt=-1,or=tt.length,lr;++zt0?we[We-1]:Z[0],WeIr?0:1;if(lr=Le)return zt(lr,ui)+(or?zt(or,1-ui):"")+"Z";var qr,Kr,ii,vi,ci=0,Jr=0,un,dn,En,Nn,ga,ya,so,wa,io=[];if((vi=(+wt.apply(this,arguments)||0)/2)&&(ii=Be===Ru?Math.sqrt(or*or+lr*lr):+Be.apply(this,arguments),ui||(Jr*=-1),lr&&(Jr=Qr(ii/lr*Math.sin(vi))),or&&(ci=Qr(ii/or*Math.sin(vi)))),lr){un=lr*Math.cos(Dr+Jr),dn=lr*Math.sin(Dr+Jr),En=lr*Math.cos(Ir-Jr),Nn=lr*Math.sin(Ir-Jr);var Ss=Math.abs(Ir-Dr-2*Jr)<=Xe?0:1;if(Jr&&Dc(un,dn,En,Nn)===ui^Ss){var _s=(Dr+Ir)/2;un=lr*Math.cos(_s),dn=lr*Math.sin(_s),En=Nn=null}}else un=dn=0;if(or){ga=or*Math.cos(Ir-ci),ya=or*Math.sin(Ir-ci),so=or*Math.cos(Dr+ci),wa=or*Math.sin(Dr+ci);var Ns=Math.abs(Dr-Ir+2*ci)<=Xe?0:1;if(ci&&Dc(ga,ya,so,wa)===1-ui^Ns){var pn=(Dr+Ir)/2;ga=or*Math.cos(pn),ya=or*Math.sin(pn),so=wa=null}}else ga=ya=0;if(oi>Ye&&(qr=Math.min(Math.abs(lr-or)/2,+we.apply(this,arguments)))>.001){Kr=or0?0:1}function Da(Z,oe,we,Be,Ue){var We=Z[0]-oe[0],wt=Z[1]-oe[1],tt=(Ue?Be:-Be)/Math.sqrt(We*We+wt*wt),zt=tt*wt,or=-tt*We,lr=Z[0]+zt,Dr=Z[1]+or,Ir=oe[0]+zt,oi=oe[1]+or,ui=(lr+Ir)/2,qr=(Dr+oi)/2,Kr=Ir-lr,ii=oi-Dr,vi=Kr*Kr+ii*ii,ci=we-Be,Jr=lr*oi-Ir*Dr,un=(ii<0?-1:1)*Math.sqrt(Math.max(0,ci*ci*vi-Jr*Jr)),dn=(Jr*ii-Kr*un)/vi,En=(-Jr*Kr-ii*un)/vi,Nn=(Jr*ii+Kr*un)/vi,ga=(-Jr*Kr+ii*un)/vi,ya=dn-ui,so=En-qr,wa=Nn-ui,io=ga-qr;return ya*ya+so*so>wa*wa+io*io&&(dn=Nn,En=ga),[[dn-zt,En-or],[dn*we/ci,En*we/ci]]}function eo(){return!0}function Jc(Z){var oe=zs,we=ks,Be=eo,Ue=_c,We=Ue.key,wt=.7;function tt(zt){var or=[],lr=[],Dr=-1,Ir=zt.length,oi,ui=ti(oe),qr=ti(we);function Kr(){or.push("M",Ue(Z(lr),wt))}for(;++Dr1?Z.join("L"):Z+"Z"}function le(Z){return Z.join("L")+"Z"}function w(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe1&&Ue.push("H",Be[0]),Ue.join("")}function B(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe1){tt=oe[1],We=Z[zt],zt++,Be+="C"+(Ue[0]+wt[0])+","+(Ue[1]+wt[1])+","+(We[0]-tt[0])+","+(We[1]-tt[1])+","+We[0]+","+We[1];for(var or=2;or9&&(We=we*3/Math.sqrt(We),wt[tt]=We*Be,wt[tt+1]=We*Ue));for(tt=-1;++tt<=zt;)We=(Z[Math.min(zt,tt+1)][0]-Z[Math.max(0,tt-1)][0])/(6*(1+wt[tt]*wt[tt])),oe.push([We||0,wt[tt]*We||0]);return oe}function Mt(Z){return Z.length<3?_c(Z):Z[0]+je(Z,et(Z))}e.svg.line.radial=function(){var Z=Jc(Dt);return Z.radius=Z.x,delete Z.x,Z.angle=Z.y,delete Z.y,Z};function Dt(Z){for(var oe,we=-1,Be=Z.length,Ue,We;++weXe)+",1 "+Dr}function or(lr,Dr,Ir,oi){return"Q 0,0 "+oi}return We.radius=function(lr){return arguments.length?(we=ti(lr),We):we},We.source=function(lr){return arguments.length?(Z=ti(lr),We):Z},We.target=function(lr){return arguments.length?(oe=ti(lr),We):oe},We.startAngle=function(lr){return arguments.length?(Be=ti(lr),We):Be},We.endAngle=function(lr){return arguments.length?(Ue=ti(lr),We):Ue},We};function Rr(Z){return Z.radius}e.svg.diagonal=function(){var Z=tr,oe=mr,we=zr;function Be(Ue,We){var wt=Z.call(this,Ue,We),tt=oe.call(this,Ue,We),zt=(wt.y+tt.y)/2,or=[wt,{x:wt.x,y:zt},{x:tt.x,y:zt},tt];return or=or.map(we),"M"+or[0]+"C"+or[1]+" "+or[2]+" "+or[3]}return Be.source=function(Ue){return arguments.length?(Z=ti(Ue),Be):Z},Be.target=function(Ue){return arguments.length?(oe=ti(Ue),Be):oe},Be.projection=function(Ue){return arguments.length?(we=Ue,Be):we},Be};function zr(Z){return[Z.x,Z.y]}e.svg.diagonal.radial=function(){var Z=e.svg.diagonal(),oe=zr,we=Z.projection;return Z.projection=function(Be){return arguments.length?we(Xr(oe=Be)):oe},Z};function Xr(Z){return function(){var oe=Z.apply(this,arguments),we=oe[0],Be=oe[1]-xe;return[we*Math.cos(Be),we*Math.sin(Be)]}}e.svg.symbol=function(){var Z=Li,oe=di;function we(Be,Ue){return(Qi.get(Z.call(this,Be,Ue))||Ci)(oe.call(this,Be,Ue))}return we.type=function(Be){return arguments.length?(Z=ti(Be),we):Z},we.size=function(Be){return arguments.length?(oe=ti(Be),we):oe},we};function di(){return 64}function Li(){return"circle"}function Ci(Z){var oe=Math.sqrt(Z/Xe);return"M0,"+oe+"A"+oe+","+oe+" 0 1,1 0,"+-oe+"A"+oe+","+oe+" 0 1,1 0,"+oe+"Z"}var Qi=e.map({circle:Ci,cross:function(Z){var oe=Math.sqrt(Z/5)/2;return"M"+-3*oe+","+-oe+"H"+-oe+"V"+-3*oe+"H"+oe+"V"+-oe+"H"+3*oe+"V"+oe+"H"+oe+"V"+3*oe+"H"+-oe+"V"+oe+"H"+-3*oe+"Z"},diamond:function(Z){var oe=Math.sqrt(Z/(2*pa)),we=oe*pa;return"M0,"+-oe+"L"+we+",0 0,"+oe+" "+-we+",0Z"},square:function(Z){var oe=Math.sqrt(Z)/2;return"M"+-oe+","+-oe+"L"+oe+","+-oe+" "+oe+","+oe+" "+-oe+","+oe+"Z"},"triangle-down":function(Z){var oe=Math.sqrt(Z/Mn),we=oe*Mn/2;return"M0,"+we+"L"+oe+","+-we+" "+-oe+","+-we+"Z"},"triangle-up":function(Z){var oe=Math.sqrt(Z/Mn),we=oe*Mn/2;return"M0,"+-we+"L"+oe+","+we+" "+-oe+","+we+"Z"}});e.svg.symbolTypes=Qi.keys();var Mn=Math.sqrt(3),pa=Math.tan(30*Se);Ce.transition=function(Z){for(var oe=Ro||++co,we=po(Z),Be=[],Ue,We,wt=Ds||{time:Date.now(),ease:uu,delay:0,duration:250},tt=-1,zt=this.length;++tt0;)Dr[--vi].call(Z,ii);if(Kr>=1)return wt.event&&wt.event.end.call(Z,Z.__data__,oe),--We.count?delete We[Be]:delete Z[we],1}wt||(tt=Ue.time,zt=Oo(Ir,0,tt),wt=We[Be]={tween:new A,time:tt,timer:zt,delay:Ue.delay,duration:Ue.duration,ease:Ue.ease,index:oe},Ue=null,++We.count)}e.svg.axis=function(){var Z=e.scale.linear(),oe=Vl,we=6,Be=6,Ue=3,We=[10],wt=null,tt;function zt(or){or.each(function(){var lr=e.select(this),Dr=this.__chart__||Z,Ir=this.__chart__=Z.copy(),oi=wt==null?Ir.ticks?Ir.ticks.apply(Ir,We):Ir.domain():wt,ui=tt==null?Ir.tickFormat?Ir.tickFormat.apply(Ir,We):H:tt,qr=lr.selectAll(".tick").data(oi,Ir),Kr=qr.enter().insert("g",".domain").attr("class","tick").style("opacity",Ye),ii=e.transition(qr.exit()).style("opacity",Ye).remove(),vi=e.transition(qr.order()).style("opacity",1),ci=Math.max(we,0)+Ue,Jr,un=Xi(Ir),dn=lr.selectAll(".domain").data([0]),En=(dn.enter().append("path").attr("class","domain"),e.transition(dn));Kr.append("line"),Kr.append("text");var Nn=Kr.select("line"),ga=vi.select("line"),ya=qr.select("text").text(ui),so=Kr.select("text"),wa=vi.select("text"),io=oe==="top"||oe==="left"?-1:1,Ss,_s,Ns,pn;if(oe==="bottom"||oe==="top"?(Jr=cu,Ss="x",Ns="y",_s="x2",pn="y2",ya.attr("dy",io<0?"0em":".71em").style("text-anchor","middle"),En.attr("d","M"+un[0]+","+io*Be+"V0H"+un[1]+"V"+io*Be)):(Jr=el,Ss="y",Ns="x",_s="y2",pn="x2",ya.attr("dy",".32em").style("text-anchor",io<0?"end":"start"),En.attr("d","M"+io*Be+","+un[0]+"H0V"+un[1]+"H"+io*Be)),Nn.attr(pn,io*we),so.attr(Ns,io*ci),ga.attr(_s,0).attr(pn,io*we),wa.attr(Ss,0).attr(Ns,io*ci),Ir.rangeBand){var za=Ir,Lo=za.rangeBand()/2;Dr=Ir=function(Fo){return za(Fo)+Lo}}else Dr.rangeBand?Dr=Ir:ii.call(Jr,Ir,Dr);Kr.call(Jr,Dr,Ir),vi.call(Jr,Ir,Ir)})}return zt.scale=function(or){return arguments.length?(Z=or,zt):Z},zt.orient=function(or){return arguments.length?(oe=or in Zu?or+"":Vl,zt):oe},zt.ticks=function(){return arguments.length?(We=r(arguments),zt):We},zt.tickValues=function(or){return arguments.length?(wt=or,zt):wt},zt.tickFormat=function(or){return arguments.length?(tt=or,zt):tt},zt.tickSize=function(or){var lr=arguments.length;return lr?(we=+or,Be=+arguments[lr-1],zt):we},zt.innerTickSize=function(or){return arguments.length?(we=+or,zt):we},zt.outerTickSize=function(or){return arguments.length?(Be=+or,zt):Be},zt.tickPadding=function(or){return arguments.length?(Ue=+or,zt):Ue},zt.tickSubdivide=function(){return arguments.length&&zt},zt};var Vl="bottom",Zu={top:1,right:1,bottom:1,left:1};function cu(Z,oe,we){Z.attr("transform",function(Be){var Ue=oe(Be);return"translate("+(isFinite(Ue)?Ue:we(Be))+",0)"})}function el(Z,oe,we){Z.attr("transform",function(Be){var Ue=oe(Be);return"translate(0,"+(isFinite(Ue)?Ue:we(Be))+")"})}e.svg.brush=function(){var Z=ke(lr,"brushstart","brush","brushend"),oe=null,we=null,Be=[0,0],Ue=[0,0],We,wt,tt=!0,zt=!0,or=zc[0];function lr(qr){qr.each(function(){var Kr=e.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",ui).on("touchstart.brush",ui),ii=Kr.selectAll(".background").data([0]);ii.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),Kr.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var vi=Kr.selectAll(".resize").data(or,H);vi.exit().remove(),vi.enter().append("g").attr("class",function(dn){return"resize "+dn}).style("cursor",function(dn){return nu[dn]}).append("rect").attr("x",function(dn){return/[ew]$/.test(dn)?-3:null}).attr("y",function(dn){return/^[ns]/.test(dn)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),vi.style("display",lr.empty()?"none":null);var ci=e.transition(Kr),Jr=e.transition(ii),un;oe&&(un=Xi(oe),Jr.attr("x",un[0]).attr("width",un[1]-un[0]),Ir(ci)),we&&(un=Xi(we),Jr.attr("y",un[0]).attr("height",un[1]-un[0]),oi(ci)),Dr(ci)})}lr.event=function(qr){qr.each(function(){var Kr=Z.of(this,arguments),ii={x:Be,y:Ue,i:We,j:wt},vi=this.__chart__||ii;this.__chart__=ii,Ro?e.select(this).transition().each("start.brush",function(){We=vi.i,wt=vi.j,Be=vi.x,Ue=vi.y,Kr({type:"brushstart"})}).tween("brush:brush",function(){var ci=ec(Be,ii.x),Jr=ec(Ue,ii.y);return We=wt=null,function(un){Be=ii.x=ci(un),Ue=ii.y=Jr(un),Kr({type:"brush",mode:"resize"})}}).each("end.brush",function(){We=ii.i,wt=ii.j,Kr({type:"brush",mode:"resize"}),Kr({type:"brushend"})}):(Kr({type:"brushstart"}),Kr({type:"brush",mode:"resize"}),Kr({type:"brushend"}))})};function Dr(qr){qr.selectAll(".resize").attr("transform",function(Kr){return"translate("+Be[+/e$/.test(Kr)]+","+Ue[+/^s/.test(Kr)]+")"})}function Ir(qr){qr.select(".extent").attr("x",Be[0]),qr.selectAll(".extent,.n>rect,.s>rect").attr("width",Be[1]-Be[0])}function oi(qr){qr.select(".extent").attr("y",Ue[0]),qr.selectAll(".extent,.e>rect,.w>rect").attr("height",Ue[1]-Ue[0])}function ui(){var qr=this,Kr=e.select(e.event.target),ii=Z.of(qr,arguments),vi=e.select(qr),ci=Kr.datum(),Jr=!/^(n|s)$/.test(ci)&&oe,un=!/^(e|w)$/.test(ci)&&we,dn=Kr.classed("extent"),En=Or(qr),Nn,ga=e.mouse(qr),ya,so=e.select(a(qr)).on("keydown.brush",Ss).on("keyup.brush",_s);if(e.event.changedTouches?so.on("touchmove.brush",Ns).on("touchend.brush",za):so.on("mousemove.brush",Ns).on("mouseup.brush",za),vi.interrupt().selectAll("*").interrupt(),dn)ga[0]=Be[0]-ga[0],ga[1]=Ue[0]-ga[1];else if(ci){var wa=+/w$/.test(ci),io=+/^n/.test(ci);ya=[Be[1-wa]-ga[0],Ue[1-io]-ga[1]],ga[0]=Be[wa],ga[1]=Ue[io]}else e.event.altKey&&(Nn=ga.slice());vi.style("pointer-events","none").selectAll(".resize").style("display",null),e.select("body").style("cursor",Kr.style("cursor")),ii({type:"brushstart"}),Ns();function Ss(){e.event.keyCode==32&&(dn||(Nn=null,ga[0]-=Be[1],ga[1]-=Ue[1],dn=2),_e())}function _s(){e.event.keyCode==32&&dn==2&&(ga[0]+=Be[1],ga[1]+=Ue[1],dn=0,_e())}function Ns(){var Lo=e.mouse(qr),Fo=!1;ya&&(Lo[0]+=ya[0],Lo[1]+=ya[1]),dn||(e.event.altKey?(Nn||(Nn=[(Be[0]+Be[1])/2,(Ue[0]+Ue[1])/2]),ga[0]=Be[+(Lo[0]{(function(e,t){typeof r6=="object"&&typeof eee!="undefined"?t(r6):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.d3=e.d3||{}))})(r6,function(e){"use strict";var t=new Date,r=new Date;function n(Ke,xt,bt,Lt){function St(Et){return Ke(Et=arguments.length===0?new Date:new Date(+Et)),Et}return St.floor=function(Et){return Ke(Et=new Date(+Et)),Et},St.ceil=function(Et){return Ke(Et=new Date(Et-1)),xt(Et,1),Ke(Et),Et},St.round=function(Et){var dt=St(Et),Ht=St.ceil(Et);return Et-dt0))return $t;do $t.push(fr=new Date(+Et)),xt(Et,Ht),Ke(Et);while(fr=dt)for(;Ke(dt),!Et(dt);)dt.setTime(dt-1)},function(dt,Ht){if(dt>=dt)if(Ht<0)for(;++Ht<=0;)for(;xt(dt,-1),!Et(dt););else for(;--Ht>=0;)for(;xt(dt,1),!Et(dt););})},bt&&(St.count=function(Et,dt){return t.setTime(+Et),r.setTime(+dt),Ke(t),Ke(r),Math.floor(bt(t,r))},St.every=function(Et){return Et=Math.floor(Et),!isFinite(Et)||!(Et>0)?null:Et>1?St.filter(Lt?function(dt){return Lt(dt)%Et===0}:function(dt){return St.count(0,dt)%Et===0}):St}),St}var i=n(function(){},function(Ke,xt){Ke.setTime(+Ke+xt)},function(Ke,xt){return xt-Ke});i.every=function(Ke){return Ke=Math.floor(Ke),!isFinite(Ke)||!(Ke>0)?null:Ke>1?n(function(xt){xt.setTime(Math.floor(xt/Ke)*Ke)},function(xt,bt){xt.setTime(+xt+bt*Ke)},function(xt,bt){return(bt-xt)/Ke}):i};var a=i.range,o=1e3,s=6e4,l=36e5,u=864e5,c=6048e5,f=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds())},function(Ke,xt){Ke.setTime(+Ke+xt*o)},function(Ke,xt){return(xt-Ke)/o},function(Ke){return Ke.getUTCSeconds()}),h=f.range,d=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds()-Ke.getSeconds()*o)},function(Ke,xt){Ke.setTime(+Ke+xt*s)},function(Ke,xt){return(xt-Ke)/s},function(Ke){return Ke.getMinutes()}),v=d.range,x=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds()-Ke.getSeconds()*o-Ke.getMinutes()*s)},function(Ke,xt){Ke.setTime(+Ke+xt*l)},function(Ke,xt){return(xt-Ke)/l},function(Ke){return Ke.getHours()}),b=x.range,g=n(function(Ke){Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setDate(Ke.getDate()+xt)},function(Ke,xt){return(xt-Ke-(xt.getTimezoneOffset()-Ke.getTimezoneOffset())*s)/u},function(Ke){return Ke.getDate()-1}),E=g.range;function k(Ke){return n(function(xt){xt.setDate(xt.getDate()-(xt.getDay()+7-Ke)%7),xt.setHours(0,0,0,0)},function(xt,bt){xt.setDate(xt.getDate()+bt*7)},function(xt,bt){return(bt-xt-(bt.getTimezoneOffset()-xt.getTimezoneOffset())*s)/c})}var A=k(0),L=k(1),_=k(2),C=k(3),M=k(4),p=k(5),P=k(6),T=A.range,F=L.range,q=_.range,V=C.range,H=M.range,X=p.range,G=P.range,N=n(function(Ke){Ke.setDate(1),Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setMonth(Ke.getMonth()+xt)},function(Ke,xt){return xt.getMonth()-Ke.getMonth()+(xt.getFullYear()-Ke.getFullYear())*12},function(Ke){return Ke.getMonth()}),W=N.range,re=n(function(Ke){Ke.setMonth(0,1),Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setFullYear(Ke.getFullYear()+xt)},function(Ke,xt){return xt.getFullYear()-Ke.getFullYear()},function(Ke){return Ke.getFullYear()});re.every=function(Ke){return!isFinite(Ke=Math.floor(Ke))||!(Ke>0)?null:n(function(xt){xt.setFullYear(Math.floor(xt.getFullYear()/Ke)*Ke),xt.setMonth(0,1),xt.setHours(0,0,0,0)},function(xt,bt){xt.setFullYear(xt.getFullYear()+bt*Ke)})};var ae=re.range,_e=n(function(Ke){Ke.setUTCSeconds(0,0)},function(Ke,xt){Ke.setTime(+Ke+xt*s)},function(Ke,xt){return(xt-Ke)/s},function(Ke){return Ke.getUTCMinutes()}),Me=_e.range,ke=n(function(Ke){Ke.setUTCMinutes(0,0,0)},function(Ke,xt){Ke.setTime(+Ke+xt*l)},function(Ke,xt){return(xt-Ke)/l},function(Ke){return Ke.getUTCHours()}),ge=ke.range,ie=n(function(Ke){Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCDate(Ke.getUTCDate()+xt)},function(Ke,xt){return(xt-Ke)/u},function(Ke){return Ke.getUTCDate()-1}),Te=ie.range;function Ee(Ke){return n(function(xt){xt.setUTCDate(xt.getUTCDate()-(xt.getUTCDay()+7-Ke)%7),xt.setUTCHours(0,0,0,0)},function(xt,bt){xt.setUTCDate(xt.getUTCDate()+bt*7)},function(xt,bt){return(bt-xt)/c})}var Ae=Ee(0),ze=Ee(1),Ce=Ee(2),me=Ee(3),Re=Ee(4),ce=Ee(5),Ge=Ee(6),nt=Ae.range,ct=ze.range,qt=Ce.range,rt=me.range,ot=Re.range,Rt=ce.range,kt=Ge.range,Ct=n(function(Ke){Ke.setUTCDate(1),Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCMonth(Ke.getUTCMonth()+xt)},function(Ke,xt){return xt.getUTCMonth()-Ke.getUTCMonth()+(xt.getUTCFullYear()-Ke.getUTCFullYear())*12},function(Ke){return Ke.getUTCMonth()}),Yt=Ct.range,xr=n(function(Ke){Ke.setUTCMonth(0,1),Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCFullYear(Ke.getUTCFullYear()+xt)},function(Ke,xt){return xt.getUTCFullYear()-Ke.getUTCFullYear()},function(Ke){return Ke.getUTCFullYear()});xr.every=function(Ke){return!isFinite(Ke=Math.floor(Ke))||!(Ke>0)?null:n(function(xt){xt.setUTCFullYear(Math.floor(xt.getUTCFullYear()/Ke)*Ke),xt.setUTCMonth(0,1),xt.setUTCHours(0,0,0,0)},function(xt,bt){xt.setUTCFullYear(xt.getUTCFullYear()+bt*Ke)})};var er=xr.range;e.timeDay=g,e.timeDays=E,e.timeFriday=p,e.timeFridays=X,e.timeHour=x,e.timeHours=b,e.timeInterval=n,e.timeMillisecond=i,e.timeMilliseconds=a,e.timeMinute=d,e.timeMinutes=v,e.timeMonday=L,e.timeMondays=F,e.timeMonth=N,e.timeMonths=W,e.timeSaturday=P,e.timeSaturdays=G,e.timeSecond=f,e.timeSeconds=h,e.timeSunday=A,e.timeSundays=T,e.timeThursday=M,e.timeThursdays=H,e.timeTuesday=_,e.timeTuesdays=q,e.timeWednesday=C,e.timeWednesdays=V,e.timeWeek=A,e.timeWeeks=T,e.timeYear=re,e.timeYears=ae,e.utcDay=ie,e.utcDays=Te,e.utcFriday=ce,e.utcFridays=Rt,e.utcHour=ke,e.utcHours=ge,e.utcMillisecond=i,e.utcMilliseconds=a,e.utcMinute=_e,e.utcMinutes=Me,e.utcMonday=ze,e.utcMondays=ct,e.utcMonth=Ct,e.utcMonths=Yt,e.utcSaturday=Ge,e.utcSaturdays=kt,e.utcSecond=f,e.utcSeconds=h,e.utcSunday=Ae,e.utcSundays=nt,e.utcThursday=Re,e.utcThursdays=ot,e.utcTuesday=Ce,e.utcTuesdays=qt,e.utcWednesday=me,e.utcWednesdays=rt,e.utcWeek=Ae,e.utcWeeks=nt,e.utcYear=xr,e.utcYears=er,Object.defineProperty(e,"__esModule",{value:!0})})});var e3=ye((i6,tee)=>{(function(e,t){typeof i6=="object"&&typeof tee!="undefined"?t(i6,hq()):typeof define=="function"&&define.amd?define(["exports","d3-time"],t):(e=e||self,t(e.d3=e.d3||{},e.d3))})(i6,function(e,t){"use strict";function r(Ne){if(0<=Ne.y&&Ne.y<100){var Ye=new Date(-1,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L);return Ye.setFullYear(Ne.y),Ye}return new Date(Ne.y,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L)}function n(Ne){if(0<=Ne.y&&Ne.y<100){var Ye=new Date(Date.UTC(-1,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L));return Ye.setUTCFullYear(Ne.y),Ye}return new Date(Date.UTC(Ne.y,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L))}function i(Ne,Ye,Ve){return{y:Ne,m:Ye,d:Ve,H:0,M:0,S:0,L:0}}function a(Ne){var Ye=Ne.dateTime,Ve=Ne.date,Xe=Ne.time,ht=Ne.periods,Le=Ne.days,xe=Ne.shortDays,Se=Ne.months,lt=Ne.shortMonths,Gt=h(ht),Vt=d(ht),ar=h(Le),Qr=d(Le),ai=h(xe),jr=d(xe),ri=h(Se),bi=d(Se),nn=h(lt),Wi=d(lt),Ni={a:Si,A:Mi,b:Pi,B:Gi,c:null,d:N,e:N,f:Me,H:W,I:re,j:ae,L:_e,m:ke,M:ge,p:Ki,q:ka,Q:dt,s:Ht,S:ie,u:Te,U:Ee,V:Ae,w:ze,W:Ce,x:null,X:null,y:me,Y:Re,Z:ce,"%":Et},_n={a:jn,A:la,b:Fa,B:Ra,c:null,d:Ge,e:Ge,f:ot,H:nt,I:ct,j:qt,L:rt,m:Rt,M:kt,p:jo,q:oa,Q:dt,s:Ht,S:Ct,u:Yt,U:xr,V:er,w:Ke,W:xt,x:null,X:null,y:bt,Y:Lt,Z:St,"%":Et},$i={a:jt,A:Zt,b:yr,B:Fr,c:Zr,d:M,e:M,f:V,H:P,I:P,j:p,L:q,m:C,M:T,p:ft,q:_,Q:X,s:G,S:F,u:x,U:b,V:g,w:v,W:E,x:Vr,X:gi,y:A,Y:k,Z:L,"%":H};Ni.x=zn(Ve,Ni),Ni.X=zn(Xe,Ni),Ni.c=zn(Ye,Ni),_n.x=zn(Ve,_n),_n.X=zn(Xe,_n),_n.c=zn(Ye,_n);function zn(Sn,Ha){return function(oo){var xn=[],_t=-1,br=0,Hr=Sn.length,ti,zi,Yi;for(oo instanceof Date||(oo=new Date(+oo));++_t53)return null;"w"in xn||(xn.w=1),"Z"in xn?(br=n(i(xn.y,0,1)),Hr=br.getUTCDay(),br=Hr>4||Hr===0?t.utcMonday.ceil(br):t.utcMonday(br),br=t.utcDay.offset(br,(xn.V-1)*7),xn.y=br.getUTCFullYear(),xn.m=br.getUTCMonth(),xn.d=br.getUTCDate()+(xn.w+6)%7):(br=r(i(xn.y,0,1)),Hr=br.getDay(),br=Hr>4||Hr===0?t.timeMonday.ceil(br):t.timeMonday(br),br=t.timeDay.offset(br,(xn.V-1)*7),xn.y=br.getFullYear(),xn.m=br.getMonth(),xn.d=br.getDate()+(xn.w+6)%7)}else("W"in xn||"U"in xn)&&("w"in xn||(xn.w="u"in xn?xn.u%7:"W"in xn?1:0),Hr="Z"in xn?n(i(xn.y,0,1)).getUTCDay():r(i(xn.y,0,1)).getDay(),xn.m=0,xn.d="W"in xn?(xn.w+6)%7+xn.W*7-(Hr+5)%7:xn.w+xn.U*7-(Hr+6)%7);return"Z"in xn?(xn.H+=xn.Z/100|0,xn.M+=xn.Z%100,n(xn)):r(xn)}}function It(Sn,Ha,oo,xn){for(var _t=0,br=Ha.length,Hr=oo.length,ti,zi;_t=Hr)return-1;if(ti=Ha.charCodeAt(_t++),ti===37){if(ti=Ha.charAt(_t++),zi=$i[ti in o?Ha.charAt(_t++):ti],!zi||(xn=zi(Sn,oo,xn))<0)return-1}else if(ti!=oo.charCodeAt(xn++))return-1}return xn}function ft(Sn,Ha,oo){var xn=Gt.exec(Ha.slice(oo));return xn?(Sn.p=Vt[xn[0].toLowerCase()],oo+xn[0].length):-1}function jt(Sn,Ha,oo){var xn=ai.exec(Ha.slice(oo));return xn?(Sn.w=jr[xn[0].toLowerCase()],oo+xn[0].length):-1}function Zt(Sn,Ha,oo){var xn=ar.exec(Ha.slice(oo));return xn?(Sn.w=Qr[xn[0].toLowerCase()],oo+xn[0].length):-1}function yr(Sn,Ha,oo){var xn=nn.exec(Ha.slice(oo));return xn?(Sn.m=Wi[xn[0].toLowerCase()],oo+xn[0].length):-1}function Fr(Sn,Ha,oo){var xn=ri.exec(Ha.slice(oo));return xn?(Sn.m=bi[xn[0].toLowerCase()],oo+xn[0].length):-1}function Zr(Sn,Ha,oo){return It(Sn,Ye,Ha,oo)}function Vr(Sn,Ha,oo){return It(Sn,Ve,Ha,oo)}function gi(Sn,Ha,oo){return It(Sn,Xe,Ha,oo)}function Si(Sn){return xe[Sn.getDay()]}function Mi(Sn){return Le[Sn.getDay()]}function Pi(Sn){return lt[Sn.getMonth()]}function Gi(Sn){return Se[Sn.getMonth()]}function Ki(Sn){return ht[+(Sn.getHours()>=12)]}function ka(Sn){return 1+~~(Sn.getMonth()/3)}function jn(Sn){return xe[Sn.getUTCDay()]}function la(Sn){return Le[Sn.getUTCDay()]}function Fa(Sn){return lt[Sn.getUTCMonth()]}function Ra(Sn){return Se[Sn.getUTCMonth()]}function jo(Sn){return ht[+(Sn.getUTCHours()>=12)]}function oa(Sn){return 1+~~(Sn.getUTCMonth()/3)}return{format:function(Sn){var Ha=zn(Sn+="",Ni);return Ha.toString=function(){return Sn},Ha},parse:function(Sn){var Ha=Wn(Sn+="",!1);return Ha.toString=function(){return Sn},Ha},utcFormat:function(Sn){var Ha=zn(Sn+="",_n);return Ha.toString=function(){return Sn},Ha},utcParse:function(Sn){var Ha=Wn(Sn+="",!0);return Ha.toString=function(){return Sn},Ha}}}var o={"-":"",_:" ",0:"0"},s=/^\s*\d+/,l=/^%/,u=/[\\^$*+?|[\]().{}]/g;function c(Ne,Ye,Ve){var Xe=Ne<0?"-":"",ht=(Xe?-Ne:Ne)+"",Le=ht.length;return Xe+(Le68?1900:2e3),Ve+Xe[0].length):-1}function L(Ne,Ye,Ve){var Xe=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(Ye.slice(Ve,Ve+6));return Xe?(Ne.Z=Xe[1]?0:-(Xe[2]+(Xe[3]||"00")),Ve+Xe[0].length):-1}function _(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+1));return Xe?(Ne.q=Xe[0]*3-3,Ve+Xe[0].length):-1}function C(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.m=Xe[0]-1,Ve+Xe[0].length):-1}function M(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.d=+Xe[0],Ve+Xe[0].length):-1}function p(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+3));return Xe?(Ne.m=0,Ne.d=+Xe[0],Ve+Xe[0].length):-1}function P(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.H=+Xe[0],Ve+Xe[0].length):-1}function T(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.M=+Xe[0],Ve+Xe[0].length):-1}function F(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.S=+Xe[0],Ve+Xe[0].length):-1}function q(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+3));return Xe?(Ne.L=+Xe[0],Ve+Xe[0].length):-1}function V(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+6));return Xe?(Ne.L=Math.floor(Xe[0]/1e3),Ve+Xe[0].length):-1}function H(Ne,Ye,Ve){var Xe=l.exec(Ye.slice(Ve,Ve+1));return Xe?Ve+Xe[0].length:-1}function X(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve));return Xe?(Ne.Q=+Xe[0],Ve+Xe[0].length):-1}function G(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve));return Xe?(Ne.s=+Xe[0],Ve+Xe[0].length):-1}function N(Ne,Ye){return c(Ne.getDate(),Ye,2)}function W(Ne,Ye){return c(Ne.getHours(),Ye,2)}function re(Ne,Ye){return c(Ne.getHours()%12||12,Ye,2)}function ae(Ne,Ye){return c(1+t.timeDay.count(t.timeYear(Ne),Ne),Ye,3)}function _e(Ne,Ye){return c(Ne.getMilliseconds(),Ye,3)}function Me(Ne,Ye){return _e(Ne,Ye)+"000"}function ke(Ne,Ye){return c(Ne.getMonth()+1,Ye,2)}function ge(Ne,Ye){return c(Ne.getMinutes(),Ye,2)}function ie(Ne,Ye){return c(Ne.getSeconds(),Ye,2)}function Te(Ne){var Ye=Ne.getDay();return Ye===0?7:Ye}function Ee(Ne,Ye){return c(t.timeSunday.count(t.timeYear(Ne)-1,Ne),Ye,2)}function Ae(Ne,Ye){var Ve=Ne.getDay();return Ne=Ve>=4||Ve===0?t.timeThursday(Ne):t.timeThursday.ceil(Ne),c(t.timeThursday.count(t.timeYear(Ne),Ne)+(t.timeYear(Ne).getDay()===4),Ye,2)}function ze(Ne){return Ne.getDay()}function Ce(Ne,Ye){return c(t.timeMonday.count(t.timeYear(Ne)-1,Ne),Ye,2)}function me(Ne,Ye){return c(Ne.getFullYear()%100,Ye,2)}function Re(Ne,Ye){return c(Ne.getFullYear()%1e4,Ye,4)}function ce(Ne){var Ye=Ne.getTimezoneOffset();return(Ye>0?"-":(Ye*=-1,"+"))+c(Ye/60|0,"0",2)+c(Ye%60,"0",2)}function Ge(Ne,Ye){return c(Ne.getUTCDate(),Ye,2)}function nt(Ne,Ye){return c(Ne.getUTCHours(),Ye,2)}function ct(Ne,Ye){return c(Ne.getUTCHours()%12||12,Ye,2)}function qt(Ne,Ye){return c(1+t.utcDay.count(t.utcYear(Ne),Ne),Ye,3)}function rt(Ne,Ye){return c(Ne.getUTCMilliseconds(),Ye,3)}function ot(Ne,Ye){return rt(Ne,Ye)+"000"}function Rt(Ne,Ye){return c(Ne.getUTCMonth()+1,Ye,2)}function kt(Ne,Ye){return c(Ne.getUTCMinutes(),Ye,2)}function Ct(Ne,Ye){return c(Ne.getUTCSeconds(),Ye,2)}function Yt(Ne){var Ye=Ne.getUTCDay();return Ye===0?7:Ye}function xr(Ne,Ye){return c(t.utcSunday.count(t.utcYear(Ne)-1,Ne),Ye,2)}function er(Ne,Ye){var Ve=Ne.getUTCDay();return Ne=Ve>=4||Ve===0?t.utcThursday(Ne):t.utcThursday.ceil(Ne),c(t.utcThursday.count(t.utcYear(Ne),Ne)+(t.utcYear(Ne).getUTCDay()===4),Ye,2)}function Ke(Ne){return Ne.getUTCDay()}function xt(Ne,Ye){return c(t.utcMonday.count(t.utcYear(Ne)-1,Ne),Ye,2)}function bt(Ne,Ye){return c(Ne.getUTCFullYear()%100,Ye,2)}function Lt(Ne,Ye){return c(Ne.getUTCFullYear()%1e4,Ye,4)}function St(){return"+0000"}function Et(){return"%"}function dt(Ne){return+Ne}function Ht(Ne){return Math.floor(+Ne/1e3)}var $t;fr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function fr(Ne){return $t=a(Ne),e.timeFormat=$t.format,e.timeParse=$t.parse,e.utcFormat=$t.utcFormat,e.utcParse=$t.utcParse,$t}var _r="%Y-%m-%dT%H:%M:%S.%LZ";function Br(Ne){return Ne.toISOString()}var Or=Date.prototype.toISOString?Br:e.utcFormat(_r);function Nr(Ne){var Ye=new Date(Ne);return isNaN(Ye)?null:Ye}var ut=+new Date("2000-01-01T00:00:00.000Z")?Nr:e.utcParse(_r);e.isoFormat=Or,e.isoParse=ut,e.timeFormatDefaultLocale=fr,e.timeFormatLocale=a,Object.defineProperty(e,"__esModule",{value:!0})})});var dq=ye((n6,ree)=>{(function(e,t){typeof n6=="object"&&typeof ree!="undefined"?t(n6):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.d3=e.d3||{}))})(n6,function(e){"use strict";function t(C){return Math.abs(C=Math.round(C))>=1e21?C.toLocaleString("en").replace(/,/g,""):C.toString(10)}function r(C,M){if((p=(C=M?C.toExponential(M-1):C.toExponential()).indexOf("e"))<0)return null;var p,P=C.slice(0,p);return[P.length>1?P[0]+P.slice(2):P,+C.slice(p+1)]}function n(C){return C=r(Math.abs(C)),C?C[1]:NaN}function i(C,M){return function(p,P){for(var T=p.length,F=[],q=0,V=C[0],H=0;T>0&&V>0&&(H+V+1>P&&(V=Math.max(1,P-H)),F.push(p.substring(T-=V,T+V)),!((H+=V+1)>P));)V=C[q=(q+1)%C.length];return F.reverse().join(M)}}function a(C){return function(M){return M.replace(/[0-9]/g,function(p){return C[+p]})}}var o=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function s(C){if(!(M=o.exec(C)))throw new Error("invalid format: "+C);var M;return new l({fill:M[1],align:M[2],sign:M[3],symbol:M[4],zero:M[5],width:M[6],comma:M[7],precision:M[8]&&M[8].slice(1),trim:M[9],type:M[10]})}s.prototype=l.prototype;function l(C){this.fill=C.fill===void 0?" ":C.fill+"",this.align=C.align===void 0?">":C.align+"",this.sign=C.sign===void 0?"-":C.sign+"",this.symbol=C.symbol===void 0?"":C.symbol+"",this.zero=!!C.zero,this.width=C.width===void 0?void 0:+C.width,this.comma=!!C.comma,this.precision=C.precision===void 0?void 0:+C.precision,this.trim=!!C.trim,this.type=C.type===void 0?"":C.type+""}l.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function u(C){e:for(var M=C.length,p=1,P=-1,T;p0&&(P=0);break}return P>0?C.slice(0,P)+C.slice(T+1):C}var c;function f(C,M){var p=r(C,M);if(!p)return C+"";var P=p[0],T=p[1],F=T-(c=Math.max(-8,Math.min(8,Math.floor(T/3)))*3)+1,q=P.length;return F===q?P:F>q?P+new Array(F-q+1).join("0"):F>0?P.slice(0,F)+"."+P.slice(F):"0."+new Array(1-F).join("0")+r(C,Math.max(0,M+F-1))[0]}function h(C,M){var p=r(C,M);if(!p)return C+"";var P=p[0],T=p[1];return T<0?"0."+new Array(-T).join("0")+P:P.length>T+1?P.slice(0,T+1)+"."+P.slice(T+1):P+new Array(T-P.length+2).join("0")}var d={"%":function(C,M){return(C*100).toFixed(M)},b:function(C){return Math.round(C).toString(2)},c:function(C){return C+""},d:t,e:function(C,M){return C.toExponential(M)},f:function(C,M){return C.toFixed(M)},g:function(C,M){return C.toPrecision(M)},o:function(C){return Math.round(C).toString(8)},p:function(C,M){return h(C*100,M)},r:h,s:f,X:function(C){return Math.round(C).toString(16).toUpperCase()},x:function(C){return Math.round(C).toString(16)}};function v(C){return C}var x=Array.prototype.map,b=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function g(C){var M=C.grouping===void 0||C.thousands===void 0?v:i(x.call(C.grouping,Number),C.thousands+""),p=C.currency===void 0?"":C.currency[0]+"",P=C.currency===void 0?"":C.currency[1]+"",T=C.decimal===void 0?".":C.decimal+"",F=C.numerals===void 0?v:a(x.call(C.numerals,String)),q=C.percent===void 0?"%":C.percent+"",V=C.minus===void 0?"-":C.minus+"",H=C.nan===void 0?"NaN":C.nan+"";function X(N){N=s(N);var W=N.fill,re=N.align,ae=N.sign,_e=N.symbol,Me=N.zero,ke=N.width,ge=N.comma,ie=N.precision,Te=N.trim,Ee=N.type;Ee==="n"?(ge=!0,Ee="g"):d[Ee]||(ie===void 0&&(ie=12),Te=!0,Ee="g"),(Me||W==="0"&&re==="=")&&(Me=!0,W="0",re="=");var Ae=_e==="$"?p:_e==="#"&&/[boxX]/.test(Ee)?"0"+Ee.toLowerCase():"",ze=_e==="$"?P:/[%p]/.test(Ee)?q:"",Ce=d[Ee],me=/[defgprs%]/.test(Ee);ie=ie===void 0?6:/[gprs]/.test(Ee)?Math.max(1,Math.min(21,ie)):Math.max(0,Math.min(20,ie));function Re(ce){var Ge=Ae,nt=ze,ct,qt,rt;if(Ee==="c")nt=Ce(ce)+nt,ce="";else{ce=+ce;var ot=ce<0||1/ce<0;if(ce=isNaN(ce)?H:Ce(Math.abs(ce),ie),Te&&(ce=u(ce)),ot&&+ce==0&&ae!=="+"&&(ot=!1),Ge=(ot?ae==="("?ae:V:ae==="-"||ae==="("?"":ae)+Ge,nt=(Ee==="s"?b[8+c/3]:"")+nt+(ot&&ae==="("?")":""),me){for(ct=-1,qt=ce.length;++ctrt||rt>57){nt=(rt===46?T+ce.slice(ct+1):ce.slice(ct))+nt,ce=ce.slice(0,ct);break}}}ge&&!Me&&(ce=M(ce,1/0));var Rt=Ge.length+ce.length+nt.length,kt=Rt>1)+Ge+ce+nt+kt.slice(Rt);break;default:ce=kt+Ge+ce+nt;break}return F(ce)}return Re.toString=function(){return N+""},Re}function G(N,W){var re=X((N=s(N),N.type="f",N)),ae=Math.max(-8,Math.min(8,Math.floor(n(W)/3)))*3,_e=Math.pow(10,-ae),Me=b[8+ae/3];return function(ke){return re(_e*ke)+Me}}return{format:X,formatPrefix:G}}var E;k({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});function k(C){return E=g(C),e.format=E.format,e.formatPrefix=E.formatPrefix,E}function A(C){return Math.max(0,-n(Math.abs(C)))}function L(C,M){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(n(M)/3)))*3-n(Math.abs(C)))}function _(C,M){return C=Math.abs(C),M=Math.abs(M)-C,Math.max(0,n(M)-n(C))+1}e.FormatSpecifier=l,e.formatDefaultLocale=k,e.formatLocale=g,e.formatSpecifier=s,e.precisionFixed=A,e.precisionPrefix=L,e.precisionRound=_,Object.defineProperty(e,"__esModule",{value:!0})})});var nee=ye((CQt,iee)=>{"use strict";iee.exports=function(e){for(var t=e.length,r,n=0;n13)&&r!==32&&r!==133&&r!==160&&r!==5760&&r!==6158&&(r<8192||r>8205)&&r!==8232&&r!==8233&&r!==8239&&r!==8287&&r!==8288&&r!==12288&&r!==65279)return!1;return!0}});var uo=ye((LQt,aee)=>{"use strict";var UQe=nee();aee.exports=function(e){var t=typeof e;if(t==="string"){var r=e;if(e=+e,e===0&&UQe(r))return!1}else if(t!=="number")return!1;return e-e<1}});var es=ye((PQt,oee)=>{"use strict";oee.exports={BADNUM:void 0,FP_SAFE:Number.MAX_VALUE*1e-4,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,ONEMILLI:1,ONEMICROSEC:.001,EPOCHJD:24405875e-1,ALMOST_EQUAL:1-1e-6,LOG_CLIP:10,MINUS_SIGN:"\u2212"}});var vq=ye((a6,see)=>{(function(e,t){typeof a6=="object"&&typeof see!="undefined"?t(a6):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e["base64-arraybuffer"]={}))})(a6,function(e){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),n=0;n>2],c+=t[(s[l]&3)<<4|s[l+1]>>4],c+=t[(s[l+1]&15)<<2|s[l+2]>>6],c+=t[s[l+2]&63];return u%3===2?c=c.substring(0,c.length-1)+"=":u%3===1&&(c=c.substring(0,c.length-2)+"=="),c},a=function(o){var s=o.length*.75,l=o.length,u,c=0,f,h,d,v;o[o.length-1]==="="&&(s--,o[o.length-2]==="="&&s--);var x=new ArrayBuffer(s),b=new Uint8Array(x);for(u=0;u>4,b[c++]=(h&15)<<4|d>>2,b[c++]=(d&3)<<6|v&63;return x};e.decode=a,e.encode=i,Object.defineProperty(e,"__esModule",{value:!0})})});var gy=ye((IQt,lee)=>{"use strict";lee.exports=function(t){return window&&window.process&&window.process.versions?Object.prototype.toString.call(t)==="[object Object]":Object.prototype.toString.call(t)==="[object Object]"&&Object.getPrototypeOf(t).hasOwnProperty("hasOwnProperty")}});var vv=ye(mg=>{"use strict";var VQe=vq().decode,HQe=gy(),pq=Array.isArray,GQe=ArrayBuffer,jQe=DataView;function uee(e){return GQe.isView(e)&&!(e instanceof jQe)}mg.isTypedArray=uee;function o6(e){return pq(e)||uee(e)}mg.isArrayOrTypedArray=o6;function WQe(e){return!o6(e[0])}mg.isArray1D=WQe;mg.ensureArray=function(e,t){return pq(e)||(e=[]),e.length=t,e};var Md={u1c:typeof Uint8ClampedArray=="undefined"?void 0:Uint8ClampedArray,i1:typeof Int8Array=="undefined"?void 0:Int8Array,u1:typeof Uint8Array=="undefined"?void 0:Uint8Array,i2:typeof Int16Array=="undefined"?void 0:Int16Array,u2:typeof Uint16Array=="undefined"?void 0:Uint16Array,i4:typeof Int32Array=="undefined"?void 0:Int32Array,u4:typeof Uint32Array=="undefined"?void 0:Uint32Array,f4:typeof Float32Array=="undefined"?void 0:Float32Array,f8:typeof Float64Array=="undefined"?void 0:Float64Array};Md.uint8c=Md.u1c;Md.uint8=Md.u1;Md.int8=Md.i1;Md.uint16=Md.u2;Md.int16=Md.i2;Md.uint32=Md.u4;Md.int32=Md.i4;Md.float32=Md.f4;Md.float64=Md.f8;function gq(e){return e.constructor===ArrayBuffer}mg.isArrayBuffer=gq;mg.decodeTypedArraySpec=function(e){var t=[],r=ZQe(e),n=r.dtype,i=Md[n];if(!i)throw new Error('Error in dtype: "'+n+'"');var a=i.BYTES_PER_ELEMENT,o=r.bdata;gq(o)||(o=VQe(o));var s=r.shape===void 0?[o.byteLength/a]:(""+r.shape).split(",");s.reverse();var l=s.length,u,c,f=+s[0],h=a*f,d=0;if(l===1)t=new i(o);else if(l===2)for(u=+s[1],c=0;c{"use strict";var fee=uo(),yq=vv().isArrayOrTypedArray;pee.exports=function(t,r){if(fee(r))r=String(r);else if(typeof r!="string"||r.substr(r.length-4)==="[-1]")throw"bad property string";var n=r.split("."),i,a,o,s;for(s=0;s{"use strict";var t3=ES(),$Qe=/^\w*$/,QQe=0,gee=1,s6=2,mee=3,ob=4;yee.exports=function(t,r,n,i){n=n||"name",i=i||"value";var a,o,s,l={};r&&r.length?(s=t3(t,r),o=s.get()):o=t,r=r||"";var u={};if(o)for(a=0;a2)return l[d]=l[d]|s6,f.set(h,null);if(c){for(a=d;a{"use strict";var eet=/^(.*)(\.[^\.\[\]]+|\[\d\])$/,tet=/^[^\.\[\]]+$/;xee.exports=function(e,t){for(;t;){var r=e.match(eet);if(r)e=r[1];else if(e.match(tet))e="";else throw new Error("bad relativeAttr call:"+[e,t]);if(t.charAt(0)==="^")t=t.slice(1);else break}return e&&t.charAt(0)!=="["?e+"."+t:e+t}});var l6=ye((qQt,wee)=>{"use strict";var ret=uo();wee.exports=function(t,r){if(t>0)return Math.log(t)/Math.LN10;var n=Math.log(Math.min(r[0],r[1]))/Math.LN10;return ret(n)||(n=Math.log(Math.max(r[0],r[1]))/Math.LN10-6),n}});var See=ye((OQt,Aee)=>{"use strict";var Tee=vv().isArrayOrTypedArray,kS=gy();Aee.exports=function e(t,r){for(var n in r){var i=r[n],a=t[n];if(a!==i)if(n.charAt(0)==="_"||typeof i=="function"){if(n in t)continue;t[n]=i}else if(Tee(i)&&Tee(a)&&kS(i[0])){if(n==="customdata"||n==="ids")continue;for(var o=Math.min(i.length,a.length),s=0;s{"use strict";function iet(e,t){var r=e%t;return r<0?r+t:r}function net(e,t){return Math.abs(e)>t/2?e-Math.round(e/t)*t:e}Mee.exports={mod:iet,modHalf:net}});var id=ye((NQt,u6)=>{(function(e){var t=/^\s+/,r=/\s+$/,n=0,i=e.round,a=e.min,o=e.max,s=e.random;function l(me,Re){if(me=me||"",Re=Re||{},me instanceof l)return me;if(!(this instanceof l))return new l(me,Re);var ce=u(me);this._originalInput=me,this._r=ce.r,this._g=ce.g,this._b=ce.b,this._a=ce.a,this._roundA=i(100*this._a)/100,this._format=Re.format||ce.format,this._gradientType=Re.gradientType,this._r<1&&(this._r=i(this._r)),this._g<1&&(this._g=i(this._g)),this._b<1&&(this._b=i(this._b)),this._ok=ce.ok,this._tc_id=n++}l.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var me=this.toRgb();return(me.r*299+me.g*587+me.b*114)/1e3},getLuminance:function(){var me=this.toRgb(),Re,ce,Ge,nt,ct,qt;return Re=me.r/255,ce=me.g/255,Ge=me.b/255,Re<=.03928?nt=Re/12.92:nt=e.pow((Re+.055)/1.055,2.4),ce<=.03928?ct=ce/12.92:ct=e.pow((ce+.055)/1.055,2.4),Ge<=.03928?qt=Ge/12.92:qt=e.pow((Ge+.055)/1.055,2.4),.2126*nt+.7152*ct+.0722*qt},setAlpha:function(me){return this._a=N(me),this._roundA=i(100*this._a)/100,this},toHsv:function(){var me=d(this._r,this._g,this._b);return{h:me.h*360,s:me.s,v:me.v,a:this._a}},toHsvString:function(){var me=d(this._r,this._g,this._b),Re=i(me.h*360),ce=i(me.s*100),Ge=i(me.v*100);return this._a==1?"hsv("+Re+", "+ce+"%, "+Ge+"%)":"hsva("+Re+", "+ce+"%, "+Ge+"%, "+this._roundA+")"},toHsl:function(){var me=f(this._r,this._g,this._b);return{h:me.h*360,s:me.s,l:me.l,a:this._a}},toHslString:function(){var me=f(this._r,this._g,this._b),Re=i(me.h*360),ce=i(me.s*100),Ge=i(me.l*100);return this._a==1?"hsl("+Re+", "+ce+"%, "+Ge+"%)":"hsla("+Re+", "+ce+"%, "+Ge+"%, "+this._roundA+")"},toHex:function(me){return x(this._r,this._g,this._b,me)},toHexString:function(me){return"#"+this.toHex(me)},toHex8:function(me){return b(this._r,this._g,this._b,this._a,me)},toHex8String:function(me){return"#"+this.toHex8(me)},toRgb:function(){return{r:i(this._r),g:i(this._g),b:i(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+i(this._r)+", "+i(this._g)+", "+i(this._b)+")":"rgba("+i(this._r)+", "+i(this._g)+", "+i(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:i(W(this._r,255)*100)+"%",g:i(W(this._g,255)*100)+"%",b:i(W(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+i(W(this._r,255)*100)+"%, "+i(W(this._g,255)*100)+"%, "+i(W(this._b,255)*100)+"%)":"rgba("+i(W(this._r,255)*100)+"%, "+i(W(this._g,255)*100)+"%, "+i(W(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:X[x(this._r,this._g,this._b,!0)]||!1},toFilter:function(me){var Re="#"+g(this._r,this._g,this._b,this._a),ce=Re,Ge=this._gradientType?"GradientType = 1, ":"";if(me){var nt=l(me);ce="#"+g(nt._r,nt._g,nt._b,nt._a)}return"progid:DXImageTransform.Microsoft.gradient("+Ge+"startColorstr="+Re+",endColorstr="+ce+")"},toString:function(me){var Re=!!me;me=me||this._format;var ce=!1,Ge=this._a<1&&this._a>=0,nt=!Re&&Ge&&(me==="hex"||me==="hex6"||me==="hex3"||me==="hex4"||me==="hex8"||me==="name");return nt?me==="name"&&this._a===0?this.toName():this.toRgbString():(me==="rgb"&&(ce=this.toRgbString()),me==="prgb"&&(ce=this.toPercentageRgbString()),(me==="hex"||me==="hex6")&&(ce=this.toHexString()),me==="hex3"&&(ce=this.toHexString(!0)),me==="hex4"&&(ce=this.toHex8String(!0)),me==="hex8"&&(ce=this.toHex8String()),me==="name"&&(ce=this.toName()),me==="hsl"&&(ce=this.toHslString()),me==="hsv"&&(ce=this.toHsvString()),ce||this.toHexString())},clone:function(){return l(this.toString())},_applyModification:function(me,Re){var ce=me.apply(null,[this].concat([].slice.call(Re)));return this._r=ce._r,this._g=ce._g,this._b=ce._b,this.setAlpha(ce._a),this},lighten:function(){return this._applyModification(L,arguments)},brighten:function(){return this._applyModification(_,arguments)},darken:function(){return this._applyModification(C,arguments)},desaturate:function(){return this._applyModification(E,arguments)},saturate:function(){return this._applyModification(k,arguments)},greyscale:function(){return this._applyModification(A,arguments)},spin:function(){return this._applyModification(M,arguments)},_applyCombination:function(me,Re){return me.apply(null,[this].concat([].slice.call(Re)))},analogous:function(){return this._applyCombination(q,arguments)},complement:function(){return this._applyCombination(p,arguments)},monochromatic:function(){return this._applyCombination(V,arguments)},splitcomplement:function(){return this._applyCombination(F,arguments)},triad:function(){return this._applyCombination(P,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},l.fromRatio=function(me,Re){if(typeof me=="object"){var ce={};for(var Ge in me)me.hasOwnProperty(Ge)&&(Ge==="a"?ce[Ge]=me[Ge]:ce[Ge]=ge(me[Ge]));me=ce}return l(me,Re)};function u(me){var Re={r:0,g:0,b:0},ce=1,Ge=null,nt=null,ct=null,qt=!1,rt=!1;return typeof me=="string"&&(me=ze(me)),typeof me=="object"&&(Ae(me.r)&&Ae(me.g)&&Ae(me.b)?(Re=c(me.r,me.g,me.b),qt=!0,rt=String(me.r).substr(-1)==="%"?"prgb":"rgb"):Ae(me.h)&&Ae(me.s)&&Ae(me.v)?(Ge=ge(me.s),nt=ge(me.v),Re=v(me.h,Ge,nt),qt=!0,rt="hsv"):Ae(me.h)&&Ae(me.s)&&Ae(me.l)&&(Ge=ge(me.s),ct=ge(me.l),Re=h(me.h,Ge,ct),qt=!0,rt="hsl"),me.hasOwnProperty("a")&&(ce=me.a)),ce=N(ce),{ok:qt,format:me.format||rt,r:a(255,o(Re.r,0)),g:a(255,o(Re.g,0)),b:a(255,o(Re.b,0)),a:ce}}function c(me,Re,ce){return{r:W(me,255)*255,g:W(Re,255)*255,b:W(ce,255)*255}}function f(me,Re,ce){me=W(me,255),Re=W(Re,255),ce=W(ce,255);var Ge=o(me,Re,ce),nt=a(me,Re,ce),ct,qt,rt=(Ge+nt)/2;if(Ge==nt)ct=qt=0;else{var ot=Ge-nt;switch(qt=rt>.5?ot/(2-Ge-nt):ot/(Ge+nt),Ge){case me:ct=(Re-ce)/ot+(Re1&&(Ct-=1),Ct<1/6?Rt+(kt-Rt)*6*Ct:Ct<1/2?kt:Ct<2/3?Rt+(kt-Rt)*(2/3-Ct)*6:Rt}if(Re===0)Ge=nt=ct=ce;else{var rt=ce<.5?ce*(1+Re):ce+Re-ce*Re,ot=2*ce-rt;Ge=qt(ot,rt,me+1/3),nt=qt(ot,rt,me),ct=qt(ot,rt,me-1/3)}return{r:Ge*255,g:nt*255,b:ct*255}}function d(me,Re,ce){me=W(me,255),Re=W(Re,255),ce=W(ce,255);var Ge=o(me,Re,ce),nt=a(me,Re,ce),ct,qt,rt=Ge,ot=Ge-nt;if(qt=Ge===0?0:ot/Ge,Ge==nt)ct=0;else{switch(Ge){case me:ct=(Re-ce)/ot+(Re>1)+720)%360;--Re;)Ge.h=(Ge.h+nt)%360,ct.push(l(Ge));return ct}function V(me,Re){Re=Re||6;for(var ce=l(me).toHsv(),Ge=ce.h,nt=ce.s,ct=ce.v,qt=[],rt=1/Re;Re--;)qt.push(l({h:Ge,s:nt,v:ct})),ct=(ct+rt)%1;return qt}l.mix=function(me,Re,ce){ce=ce===0?0:ce||50;var Ge=l(me).toRgb(),nt=l(Re).toRgb(),ct=ce/100,qt={r:(nt.r-Ge.r)*ct+Ge.r,g:(nt.g-Ge.g)*ct+Ge.g,b:(nt.b-Ge.b)*ct+Ge.b,a:(nt.a-Ge.a)*ct+Ge.a};return l(qt)},l.readability=function(me,Re){var ce=l(me),Ge=l(Re);return(e.max(ce.getLuminance(),Ge.getLuminance())+.05)/(e.min(ce.getLuminance(),Ge.getLuminance())+.05)},l.isReadable=function(me,Re,ce){var Ge=l.readability(me,Re),nt,ct;switch(ct=!1,nt=Ce(ce),nt.level+nt.size){case"AAsmall":case"AAAlarge":ct=Ge>=4.5;break;case"AAlarge":ct=Ge>=3;break;case"AAAsmall":ct=Ge>=7;break}return ct},l.mostReadable=function(me,Re,ce){var Ge=null,nt=0,ct,qt,rt,ot;ce=ce||{},qt=ce.includeFallbackColors,rt=ce.level,ot=ce.size;for(var Rt=0;Rtnt&&(nt=ct,Ge=l(Re[Rt]));return l.isReadable(me,Ge,{level:rt,size:ot})||!qt?Ge:(ce.includeFallbackColors=!1,l.mostReadable(me,["#fff","#000"],ce))};var H=l.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},X=l.hexNames=G(H);function G(me){var Re={};for(var ce in me)me.hasOwnProperty(ce)&&(Re[me[ce]]=ce);return Re}function N(me){return me=parseFloat(me),(isNaN(me)||me<0||me>1)&&(me=1),me}function W(me,Re){_e(me)&&(me="100%");var ce=Me(me);return me=a(Re,o(0,parseFloat(me))),ce&&(me=parseInt(me*Re,10)/100),e.abs(me-Re)<1e-6?1:me%Re/parseFloat(Re)}function re(me){return a(1,o(0,me))}function ae(me){return parseInt(me,16)}function _e(me){return typeof me=="string"&&me.indexOf(".")!=-1&&parseFloat(me)===1}function Me(me){return typeof me=="string"&&me.indexOf("%")!=-1}function ke(me){return me.length==1?"0"+me:""+me}function ge(me){return me<=1&&(me=me*100+"%"),me}function ie(me){return e.round(parseFloat(me)*255).toString(16)}function Te(me){return ae(me)/255}var Ee=function(){var me="[-\\+]?\\d+%?",Re="[-\\+]?\\d*\\.\\d+%?",ce="(?:"+Re+")|(?:"+me+")",Ge="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?",nt="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?";return{CSS_UNIT:new RegExp(ce),rgb:new RegExp("rgb"+Ge),rgba:new RegExp("rgba"+nt),hsl:new RegExp("hsl"+Ge),hsla:new RegExp("hsla"+nt),hsv:new RegExp("hsv"+Ge),hsva:new RegExp("hsva"+nt),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Ae(me){return!!Ee.CSS_UNIT.exec(me)}function ze(me){me=me.replace(t,"").replace(r,"").toLowerCase();var Re=!1;if(H[me])me=H[me],Re=!0;else if(me=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var ce;return(ce=Ee.rgb.exec(me))?{r:ce[1],g:ce[2],b:ce[3]}:(ce=Ee.rgba.exec(me))?{r:ce[1],g:ce[2],b:ce[3],a:ce[4]}:(ce=Ee.hsl.exec(me))?{h:ce[1],s:ce[2],l:ce[3]}:(ce=Ee.hsla.exec(me))?{h:ce[1],s:ce[2],l:ce[3],a:ce[4]}:(ce=Ee.hsv.exec(me))?{h:ce[1],s:ce[2],v:ce[3]}:(ce=Ee.hsva.exec(me))?{h:ce[1],s:ce[2],v:ce[3],a:ce[4]}:(ce=Ee.hex8.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),a:Te(ce[4]),format:Re?"name":"hex8"}:(ce=Ee.hex6.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),format:Re?"name":"hex"}:(ce=Ee.hex4.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),a:Te(ce[4]+""+ce[4]),format:Re?"name":"hex8"}:(ce=Ee.hex3.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),format:Re?"name":"hex"}:!1}function Ce(me){var Re,ce;return me=me||{level:"AA",size:"small"},Re=(me.level||"AA").toUpperCase(),ce=(me.size||"small").toLowerCase(),Re!=="AA"&&Re!=="AAA"&&(Re="AA"),ce!=="small"&&ce!=="large"&&(ce="small"),{level:Re,size:ce}}typeof u6!="undefined"&&u6.exports?u6.exports=l:typeof define=="function"&&define.amd?define(function(){return l}):window.tinycolor=l})(Math)});var no=ye(PS=>{"use strict";var Eee=gy(),CS=Array.isArray;function aet(e,t){var r,n;for(r=0;r{"use strict";kee.exports=function(e){var t=e.variantValues,r=e.editType,n=e.colorEditType;n===void 0&&(n=r);var i={editType:r,valType:"integer",min:1,max:1e3,extras:["normal","bold"],dflt:"normal"};e.noNumericWeightValues&&(i.valType="enumerated",i.values=i.extras,i.extras=void 0,i.min=void 0,i.max=void 0);var a={family:{valType:"string",noBlank:!0,strict:!0,editType:r},size:{valType:"number",min:1,editType:r},color:{valType:"color",editType:n},weight:i,style:{editType:r,valType:"enumerated",values:["normal","italic"],dflt:"normal"},variant:e.noFontVariant?void 0:{editType:r,valType:"enumerated",values:t||["normal","small-caps","all-small-caps","all-petite-caps","petite-caps","unicase"],dflt:"normal"},textcase:e.noFontTextcase?void 0:{editType:r,valType:"enumerated",values:["normal","word caps","upper","lower"],dflt:"normal"},lineposition:e.noFontLineposition?void 0:{editType:r,valType:"flaglist",flags:["under","over","through"],extras:["none"],dflt:"none"},shadow:e.noFontShadow?void 0:{editType:r,valType:"string",dflt:e.autoShadowDflt?"auto":"none"},editType:r};return e.autoSize&&(a.size.dflt="auto"),e.autoColor&&(a.color.dflt="auto"),e.arrayOk&&(a.family.arrayOk=!0,a.weight.arrayOk=!0,a.style.arrayOk=!0,e.noFontVariant||(a.variant.arrayOk=!0),e.noFontTextcase||(a.textcase.arrayOk=!0),e.noFontLineposition||(a.lineposition.arrayOk=!0),e.noFontShadow||(a.shadow.arrayOk=!0),a.size.arrayOk=!0,a.color.arrayOk=!0),a}});var IS=ye((HQt,Cee)=>{"use strict";Cee.exports={YANGLE:60,HOVERARROWSIZE:6,HOVERTEXTPAD:3,HOVERFONTSIZE:13,HOVERFONT:"Arial, sans-serif",HOVERMINTIME:50,HOVERID:"-hover"}});var B1=ye((GQt,Iee)=>{"use strict";var Lee=IS(),Pee=Su(),_q=Pee({editType:"none"});_q.family.dflt=Lee.HOVERFONT;_q.size.dflt=Lee.HOVERFONTSIZE;Iee.exports={clickmode:{valType:"flaglist",flags:["event","select"],dflt:"event",editType:"plot",extras:["none"]},dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","drawclosedpath","drawopenpath","drawline","drawrect","drawcircle","orbit","turntable",!1],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1,"x unified","y unified"],dflt:"closest",editType:"modebar"},hoversubplots:{valType:"enumerated",values:["single","overlaying","axis"],dflt:"overlaying",editType:"none"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:-1,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:_q,grouptitlefont:Pee({editType:"none"}),align:{valType:"enumerated",values:["left","right","auto"],dflt:"auto",editType:"none"},namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},editType:"none"},selectdirection:{valType:"enumerated",values:["h","v","d","any"],dflt:"any",editType:"none"}}});var i3=ye((jQt,Ree)=>{"use strict";var oet=Su(),c6=B1().hoverlabel,f6=no().extendFlat;Ree.exports={hoverlabel:{bgcolor:f6({},c6.bgcolor,{arrayOk:!0}),bordercolor:f6({},c6.bordercolor,{arrayOk:!0}),font:oet({arrayOk:!0,editType:"none"}),align:f6({},c6.align,{arrayOk:!0}),namelength:f6({},c6.namelength,{arrayOk:!0}),editType:"none"}}});var vl=ye((WQt,Dee)=>{"use strict";var set=Su(),uet=i3();Dee.exports={type:{valType:"enumerated",values:[],dflt:"scatter",editType:"calc+clearAxisTypes",_noTemplating:!0},visible:{valType:"enumerated",values:[!0,!1,"legendonly"],dflt:!0,editType:"calc"},showlegend:{valType:"boolean",dflt:!0,editType:"style"},legend:{valType:"subplotid",dflt:"legend",editType:"style"},legendgroup:{valType:"string",dflt:"",editType:"style"},legendgrouptitle:{text:{valType:"string",dflt:"",editType:"style"},font:set({editType:"style"}),editType:"style"},legendrank:{valType:"number",dflt:1e3,editType:"style"},legendwidth:{valType:"number",min:0,editType:"style"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"style"},name:{valType:"string",editType:"style"},uid:{valType:"string",editType:"plot",anim:!0},ids:{valType:"data_array",editType:"calc",anim:!0},customdata:{valType:"data_array",editType:"calc"},meta:{valType:"any",arrayOk:!0,editType:"plot"},selectedpoints:{valType:"any",editType:"calc"},hoverinfo:{valType:"flaglist",flags:["x","y","z","text","name"],extras:["all","none","skip"],arrayOk:!0,dflt:"all",editType:"none"},hoverlabel:uet.hoverlabel,stream:{token:{valType:"string",noBlank:!0,strict:!0,editType:"calc"},maxpoints:{valType:"number",min:0,max:1e4,dflt:500,editType:"calc"},editType:"calc"},uirevision:{valType:"any",editType:"none"}}});var sb=ye((ZQt,qee)=>{"use strict";var cet=id(),h6={Greys:[[0,"rgb(0,0,0)"],[1,"rgb(255,255,255)"]],YlGnBu:[[0,"rgb(8,29,88)"],[.125,"rgb(37,52,148)"],[.25,"rgb(34,94,168)"],[.375,"rgb(29,145,192)"],[.5,"rgb(65,182,196)"],[.625,"rgb(127,205,187)"],[.75,"rgb(199,233,180)"],[.875,"rgb(237,248,217)"],[1,"rgb(255,255,217)"]],Greens:[[0,"rgb(0,68,27)"],[.125,"rgb(0,109,44)"],[.25,"rgb(35,139,69)"],[.375,"rgb(65,171,93)"],[.5,"rgb(116,196,118)"],[.625,"rgb(161,217,155)"],[.75,"rgb(199,233,192)"],[.875,"rgb(229,245,224)"],[1,"rgb(247,252,245)"]],YlOrRd:[[0,"rgb(128,0,38)"],[.125,"rgb(189,0,38)"],[.25,"rgb(227,26,28)"],[.375,"rgb(252,78,42)"],[.5,"rgb(253,141,60)"],[.625,"rgb(254,178,76)"],[.75,"rgb(254,217,118)"],[.875,"rgb(255,237,160)"],[1,"rgb(255,255,204)"]],Bluered:[[0,"rgb(0,0,255)"],[1,"rgb(255,0,0)"]],RdBu:[[0,"rgb(5,10,172)"],[.35,"rgb(106,137,247)"],[.5,"rgb(190,190,190)"],[.6,"rgb(220,170,132)"],[.7,"rgb(230,145,90)"],[1,"rgb(178,10,28)"]],Reds:[[0,"rgb(220,220,220)"],[.2,"rgb(245,195,157)"],[.4,"rgb(245,160,105)"],[1,"rgb(178,10,28)"]],Blues:[[0,"rgb(5,10,172)"],[.35,"rgb(40,60,190)"],[.5,"rgb(70,100,245)"],[.6,"rgb(90,120,245)"],[.7,"rgb(106,137,247)"],[1,"rgb(220,220,220)"]],Picnic:[[0,"rgb(0,0,255)"],[.1,"rgb(51,153,255)"],[.2,"rgb(102,204,255)"],[.3,"rgb(153,204,255)"],[.4,"rgb(204,204,255)"],[.5,"rgb(255,255,255)"],[.6,"rgb(255,204,255)"],[.7,"rgb(255,153,255)"],[.8,"rgb(255,102,204)"],[.9,"rgb(255,102,102)"],[1,"rgb(255,0,0)"]],Rainbow:[[0,"rgb(150,0,90)"],[.125,"rgb(0,0,200)"],[.25,"rgb(0,25,255)"],[.375,"rgb(0,152,255)"],[.5,"rgb(44,255,150)"],[.625,"rgb(151,255,0)"],[.75,"rgb(255,234,0)"],[.875,"rgb(255,111,0)"],[1,"rgb(255,0,0)"]],Portland:[[0,"rgb(12,51,131)"],[.25,"rgb(10,136,186)"],[.5,"rgb(242,211,56)"],[.75,"rgb(242,143,56)"],[1,"rgb(217,30,30)"]],Jet:[[0,"rgb(0,0,131)"],[.125,"rgb(0,60,170)"],[.375,"rgb(5,255,255)"],[.625,"rgb(255,255,0)"],[.875,"rgb(250,0,0)"],[1,"rgb(128,0,0)"]],Hot:[[0,"rgb(0,0,0)"],[.3,"rgb(230,0,0)"],[.6,"rgb(255,210,0)"],[1,"rgb(255,255,255)"]],Blackbody:[[0,"rgb(0,0,0)"],[.2,"rgb(230,0,0)"],[.4,"rgb(230,210,0)"],[.7,"rgb(255,255,255)"],[1,"rgb(160,200,255)"]],Earth:[[0,"rgb(0,0,130)"],[.1,"rgb(0,180,180)"],[.2,"rgb(40,210,40)"],[.4,"rgb(230,230,50)"],[.6,"rgb(120,70,20)"],[1,"rgb(255,255,255)"]],Electric:[[0,"rgb(0,0,0)"],[.15,"rgb(30,0,100)"],[.4,"rgb(120,0,100)"],[.6,"rgb(160,90,0)"],[.8,"rgb(230,200,0)"],[1,"rgb(255,250,220)"]],Viridis:[[0,"#440154"],[.06274509803921569,"#48186a"],[.12549019607843137,"#472d7b"],[.18823529411764706,"#424086"],[.25098039215686274,"#3b528b"],[.3137254901960784,"#33638d"],[.3764705882352941,"#2c728e"],[.4392156862745098,"#26828e"],[.5019607843137255,"#21918c"],[.5647058823529412,"#1fa088"],[.6274509803921569,"#28ae80"],[.6901960784313725,"#3fbc73"],[.7529411764705882,"#5ec962"],[.8156862745098039,"#84d44b"],[.8784313725490196,"#addc30"],[.9411764705882353,"#d8e219"],[1,"#fde725"]],Cividis:[[0,"rgb(0,32,76)"],[.058824,"rgb(0,42,102)"],[.117647,"rgb(0,52,110)"],[.176471,"rgb(39,63,108)"],[.235294,"rgb(60,74,107)"],[.294118,"rgb(76,85,107)"],[.352941,"rgb(91,95,109)"],[.411765,"rgb(104,106,112)"],[.470588,"rgb(117,117,117)"],[.529412,"rgb(131,129,120)"],[.588235,"rgb(146,140,120)"],[.647059,"rgb(161,152,118)"],[.705882,"rgb(176,165,114)"],[.764706,"rgb(192,177,109)"],[.823529,"rgb(209,191,102)"],[.882353,"rgb(225,204,92)"],[.941176,"rgb(243,219,79)"],[1,"rgb(255,233,69)"]]},zee=h6.RdBu;function fet(e,t){if(t||(t=zee),!e)return t;function r(){try{e=h6[e]||JSON.parse(e)}catch(n){e=t}}return typeof e=="string"&&(r(),typeof e=="string"&&r()),Fee(e)?e:t}function Fee(e){var t=0;if(!Array.isArray(e)||e.length<2||!e[0]||!e[e.length-1]||+e[0][0]!=0||+e[e.length-1][0]!=1)return!1;for(var r=0;r{"use strict";lb.defaults=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"];lb.defaultLine="#444";lb.lightLine="#eee";lb.background="#fff";lb.borderLine="#BEC8D9";lb.lightFraction=100*10/11});var va=ye((YQt,Oee)=>{"use strict";var xp=id(),det=uo(),vet=vv().isTypedArray,nd=Oee.exports={},d6=dh();nd.defaults=d6.defaults;var pet=nd.defaultLine=d6.defaultLine;nd.lightLine=d6.lightLine;var bq=nd.background=d6.background;nd.tinyRGB=function(e){var t=e.toRgb();return"rgb("+Math.round(t.r)+", "+Math.round(t.g)+", "+Math.round(t.b)+")"};nd.rgb=function(e){return nd.tinyRGB(xp(e))};nd.opacity=function(e){return e?xp(e).getAlpha():0};nd.addOpacity=function(e,t){var r=xp(e).toRgb();return"rgba("+Math.round(r.r)+", "+Math.round(r.g)+", "+Math.round(r.b)+", "+t+")"};nd.combine=function(e,t){var r=xp(e).toRgb();if(r.a===1)return xp(e).toRgbString();var n=xp(t||bq).toRgb(),i=n.a===1?n:{r:255*(1-n.a)+n.r*n.a,g:255*(1-n.a)+n.g*n.a,b:255*(1-n.a)+n.b*n.a},a={r:i.r*(1-r.a)+r.r*r.a,g:i.g*(1-r.a)+r.g*r.a,b:i.b*(1-r.a)+r.b*r.a};return xp(a).toRgbString()};nd.interpolate=function(e,t,r){var n=xp(e).toRgb(),i=xp(t).toRgb(),a={r:r*n.r+(1-r)*i.r,g:r*n.g+(1-r)*i.g,b:r*n.b+(1-r)*i.b};return xp(a).toRgbString()};nd.contrast=function(e,t,r){var n=xp(e);n.getAlpha()!==1&&(n=xp(nd.combine(e,bq)));var i=n.isDark()?t?n.lighten(t):bq:r?n.darken(r):pet;return i.toString()};nd.stroke=function(e,t){var r=xp(t);e.style({stroke:nd.tinyRGB(r),"stroke-opacity":r.getAlpha()})};nd.fill=function(e,t){var r=xp(t);e.style({fill:nd.tinyRGB(r),"fill-opacity":r.getAlpha()})};nd.clean=function(e){if(!(!e||typeof e!="object")){var t=Object.keys(e),r,n,i,a;for(r=0;r=0)))return e;if(a===3)n[a]>1&&(n[a]=1);else if(n[a]>=1)return e}var o=Math.round(n[0]*255)+", "+Math.round(n[1]*255)+", "+Math.round(n[2]*255);return i?"rgba("+o+", "+n[3]+")":"rgb("+o+")"}});var N1=ye((KQt,Bee)=>{"use strict";Bee.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}});var n3=ye(Nee=>{"use strict";Nee.counter=function(e,t,r,n){var i=(t||"")+(r?"":"$"),a=n===!1?"":"^";return e==="xy"?new RegExp(a+"x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?"+i):new RegExp(a+e+"([2-9]|[1-9][0-9]+)?"+i)}});var Gee=ye(bp=>{"use strict";var wq=uo(),Uee=id(),Vee=no().extendFlat,get=vl(),met=sb(),yet=va(),_et=N1().DESELECTDIM,a3=ES(),Hee=n3().counter,xet=r3().modHalf,dm=vv().isArrayOrTypedArray,U1=vv().isTypedArraySpec,V1=vv().decodeTypedArraySpec;bp.valObjectMeta={data_array:{coerceFunction:function(e,t,r){t.set(dm(e)?e:U1(e)?V1(e):r)}},enumerated:{coerceFunction:function(e,t,r,n){n.coerceNumber&&(e=+e),n.values.indexOf(e)===-1?t.set(r):t.set(e)},validateFunction:function(e,t){t.coerceNumber&&(e=+e);for(var r=t.values,n=0;nn.max?t.set(r):t.set(+e)}},integer:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}U1(e)&&(e=V1(e)),e%1||!wq(e)||n.min!==void 0&&en.max?t.set(r):t.set(+e)}},string:{coerceFunction:function(e,t,r,n){if(typeof e!="string"){var i=typeof e=="number";n.strict===!0||!i?t.set(r):t.set(String(e))}else n.noBlank&&!e?t.set(r):t.set(e)}},color:{coerceFunction:function(e,t,r){U1(e)&&(e=V1(e)),Uee(e).isValid()?t.set(e):t.set(r)}},colorlist:{coerceFunction:function(e,t,r){function n(i){return Uee(i).isValid()}!Array.isArray(e)||!e.length?t.set(r):e.every(n)?t.set(e):t.set(r)}},colorscale:{coerceFunction:function(e,t,r){t.set(met.get(e,r))}},angle:{coerceFunction:function(e,t,r){U1(e)&&(e=V1(e)),e==="auto"?t.set("auto"):wq(e)?t.set(xet(+e,360)):t.set(r)}},subplotid:{coerceFunction:function(e,t,r,n){var i=n.regex||Hee(r);if(typeof e=="string"&&i.test(e)){t.set(e);return}t.set(r)},validateFunction:function(e,t){var r=t.dflt;return e===r?!0:typeof e!="string"?!1:!!Hee(r).test(e)}},flaglist:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}if(typeof e!="string"){t.set(r);return}for(var i=e.split("+"),a=0;a{"use strict";var jee={staticPlot:{valType:"boolean",dflt:!1},typesetMath:{valType:"boolean",dflt:!0},plotlyServerURL:{valType:"string",dflt:""},editable:{valType:"boolean",dflt:!1},edits:{annotationPosition:{valType:"boolean",dflt:!1},annotationTail:{valType:"boolean",dflt:!1},annotationText:{valType:"boolean",dflt:!1},axisTitleText:{valType:"boolean",dflt:!1},colorbarPosition:{valType:"boolean",dflt:!1},colorbarTitleText:{valType:"boolean",dflt:!1},legendPosition:{valType:"boolean",dflt:!1},legendText:{valType:"boolean",dflt:!1},shapePosition:{valType:"boolean",dflt:!1},titleText:{valType:"boolean",dflt:!1}},editSelection:{valType:"boolean",dflt:!0},autosizable:{valType:"boolean",dflt:!1},responsive:{valType:"boolean",dflt:!1},fillFrame:{valType:"boolean",dflt:!1},frameMargins:{valType:"number",dflt:0,min:0,max:.5},scrollZoom:{valType:"flaglist",flags:["cartesian","gl3d","geo","mapbox","map"],extras:[!0,!1],dflt:"gl3d+geo+map"},doubleClick:{valType:"enumerated",values:[!1,"reset","autosize","reset+autosize"],dflt:"reset+autosize"},doubleClickDelay:{valType:"number",dflt:300,min:0},showAxisDragHandles:{valType:"boolean",dflt:!0},showAxisRangeEntryBoxes:{valType:"boolean",dflt:!0},showTips:{valType:"boolean",dflt:!0},showLink:{valType:"boolean",dflt:!1},linkText:{valType:"string",dflt:"Edit chart",noBlank:!0},sendData:{valType:"boolean",dflt:!0},showSources:{valType:"any",dflt:!1},displayModeBar:{valType:"enumerated",values:["hover",!0,!1],dflt:"hover"},showSendToCloud:{valType:"boolean",dflt:!1},showEditInChartStudio:{valType:"boolean",dflt:!1},modeBarButtonsToRemove:{valType:"any",dflt:[]},modeBarButtonsToAdd:{valType:"any",dflt:[]},modeBarButtons:{valType:"any",dflt:!1},toImageButtonOptions:{valType:"any",dflt:{}},displaylogo:{valType:"boolean",dflt:!0},watermark:{valType:"boolean",dflt:!1},plotGlPixelRatio:{valType:"number",dflt:2,min:1,max:4},setBackground:{valType:"any",dflt:"transparent"},topojsonURL:{valType:"string",noBlank:!0,dflt:"https://cdn.plot.ly/"},mapboxAccessToken:{valType:"string",dflt:null},logging:{valType:"integer",min:0,max:2,dflt:1},notifyOnLogging:{valType:"integer",min:0,max:2,dflt:0},queueLength:{valType:"integer",min:0,dflt:0},locale:{valType:"string",dflt:"en-US"},locales:{valType:"any",dflt:{}}},Wee={};function Zee(e,t){for(var r in e){var n=e[r];n.valType?t[r]=n.dflt:(t[r]||(t[r]={}),Zee(n,t[r]))}}Zee(jee,Wee);Xee.exports={configAttributes:jee,dfltConfig:Wee}});var Aq=ye((eer,Yee)=>{"use strict";var Tq=xa(),bet=uo(),RS=[];Yee.exports=function(e,t){if(RS.indexOf(e)!==-1)return;RS.push(e);var r=1e3;bet(t)?r=t:t==="long"&&(r=3e3);var n=Tq.select("body").selectAll(".plotly-notifier").data([0]);n.enter().append("div").classed("plotly-notifier",!0);var i=n.selectAll(".notifier-note").data(RS);function a(o){o.duration(700).style("opacity",0).each("end",function(s){var l=RS.indexOf(s);l!==-1&&RS.splice(l,1),Tq.select(this).remove()})}i.enter().append("div").classed("notifier-note",!0).style("opacity",0).each(function(o){var s=Tq.select(this);s.append("button").classed("notifier-close",!0).html("×").on("click",function(){s.transition().call(a)});for(var l=s.append("p"),u=o.split(//g),c=0;c{"use strict";var o3=ub().dfltConfig,Sq=Aq(),Mq=Kee.exports={};Mq.log=function(){var e;if(o3.logging>1){var t=["LOG:"];for(e=0;e1){var r=[];for(e=0;e"),"long")}};Mq.warn=function(){var e;if(o3.logging>0){var t=["WARN:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}};Mq.error=function(){var e;if(o3.logging>0){var t=["ERROR:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}}});var p6=ye((rer,Jee)=>{"use strict";Jee.exports=function(){}});var Eq=ye((ier,$ee)=>{"use strict";$ee.exports=function(t,r){if(r instanceof RegExp){for(var n=r.toString(),i=0;i{Qee.exports=wet;function wet(){var e=new Float32Array(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var rte=ye((aer,tte)=>{tte.exports=Tet;function Tet(e){var t=new Float32Array(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}});var nte=ye((oer,ite)=>{ite.exports=Aet;function Aet(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var kq=ye((ser,ate)=>{ate.exports=Met;function Met(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var ste=ye((ler,ote)=>{ote.exports=Eet;function Eet(e,t){if(e===t){var r=t[1],n=t[2],i=t[3],a=t[6],o=t[7],s=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=i,e[13]=o,e[14]=s}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}});var ute=ye((uer,lte)=>{lte.exports=ket;function ket(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],x=t[13],b=t[14],g=t[15],E=r*s-n*o,k=r*l-i*o,A=r*u-a*o,L=n*l-i*s,_=n*u-a*s,C=i*u-a*l,M=c*x-f*v,p=c*b-h*v,P=c*g-d*v,T=f*b-h*x,F=f*g-d*x,q=h*g-d*b,V=E*q-k*F+A*T+L*P-_*p+C*M;return V?(V=1/V,e[0]=(s*q-l*F+u*T)*V,e[1]=(i*F-n*q-a*T)*V,e[2]=(x*C-b*_+g*L)*V,e[3]=(h*_-f*C-d*L)*V,e[4]=(l*P-o*q-u*p)*V,e[5]=(r*q-i*P+a*p)*V,e[6]=(b*A-v*C-g*k)*V,e[7]=(c*C-h*A+d*k)*V,e[8]=(o*F-s*P+u*M)*V,e[9]=(n*P-r*F-a*M)*V,e[10]=(v*_-x*A+g*E)*V,e[11]=(f*A-c*_-d*E)*V,e[12]=(s*p-o*T-l*M)*V,e[13]=(r*T-n*p+i*M)*V,e[14]=(x*k-v*L-b*E)*V,e[15]=(c*L-f*k+h*E)*V,e):null}});var fte=ye((cer,cte)=>{cte.exports=Cet;function Cet(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],x=t[13],b=t[14],g=t[15];return e[0]=s*(h*g-d*b)-f*(l*g-u*b)+x*(l*d-u*h),e[1]=-(n*(h*g-d*b)-f*(i*g-a*b)+x*(i*d-a*h)),e[2]=n*(l*g-u*b)-s*(i*g-a*b)+x*(i*u-a*l),e[3]=-(n*(l*d-u*h)-s*(i*d-a*h)+f*(i*u-a*l)),e[4]=-(o*(h*g-d*b)-c*(l*g-u*b)+v*(l*d-u*h)),e[5]=r*(h*g-d*b)-c*(i*g-a*b)+v*(i*d-a*h),e[6]=-(r*(l*g-u*b)-o*(i*g-a*b)+v*(i*u-a*l)),e[7]=r*(l*d-u*h)-o*(i*d-a*h)+c*(i*u-a*l),e[8]=o*(f*g-d*x)-c*(s*g-u*x)+v*(s*d-u*f),e[9]=-(r*(f*g-d*x)-c*(n*g-a*x)+v*(n*d-a*f)),e[10]=r*(s*g-u*x)-o*(n*g-a*x)+v*(n*u-a*s),e[11]=-(r*(s*d-u*f)-o*(n*d-a*f)+c*(n*u-a*s)),e[12]=-(o*(f*b-h*x)-c*(s*b-l*x)+v*(s*h-l*f)),e[13]=r*(f*b-h*x)-c*(n*b-i*x)+v*(n*h-i*f),e[14]=-(r*(s*b-l*x)-o*(n*b-i*x)+v*(n*l-i*s)),e[15]=r*(s*h-l*f)-o*(n*h-i*f)+c*(n*l-i*s),e}});var dte=ye((fer,hte)=>{hte.exports=Let;function Let(e){var t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],f=e[10],h=e[11],d=e[12],v=e[13],x=e[14],b=e[15],g=t*o-r*a,E=t*s-n*a,k=t*l-i*a,A=r*s-n*o,L=r*l-i*o,_=n*l-i*s,C=u*v-c*d,M=u*x-f*d,p=u*b-h*d,P=c*x-f*v,T=c*b-h*v,F=f*b-h*x;return g*F-E*T+k*P+A*p-L*M+_*C}});var pte=ye((her,vte)=>{vte.exports=Pet;function Pet(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],f=t[8],h=t[9],d=t[10],v=t[11],x=t[12],b=t[13],g=t[14],E=t[15],k=r[0],A=r[1],L=r[2],_=r[3];return e[0]=k*n+A*s+L*f+_*x,e[1]=k*i+A*l+L*h+_*b,e[2]=k*a+A*u+L*d+_*g,e[3]=k*o+A*c+L*v+_*E,k=r[4],A=r[5],L=r[6],_=r[7],e[4]=k*n+A*s+L*f+_*x,e[5]=k*i+A*l+L*h+_*b,e[6]=k*a+A*u+L*d+_*g,e[7]=k*o+A*c+L*v+_*E,k=r[8],A=r[9],L=r[10],_=r[11],e[8]=k*n+A*s+L*f+_*x,e[9]=k*i+A*l+L*h+_*b,e[10]=k*a+A*u+L*d+_*g,e[11]=k*o+A*c+L*v+_*E,k=r[12],A=r[13],L=r[14],_=r[15],e[12]=k*n+A*s+L*f+_*x,e[13]=k*i+A*l+L*h+_*b,e[14]=k*a+A*u+L*d+_*g,e[15]=k*o+A*c+L*v+_*E,e}});var mte=ye((der,gte)=>{gte.exports=Iet;function Iet(e,t,r){var n=r[0],i=r[1],a=r[2],o,s,l,u,c,f,h,d,v,x,b,g;return t===e?(e[12]=t[0]*n+t[4]*i+t[8]*a+t[12],e[13]=t[1]*n+t[5]*i+t[9]*a+t[13],e[14]=t[2]*n+t[6]*i+t[10]*a+t[14],e[15]=t[3]*n+t[7]*i+t[11]*a+t[15]):(o=t[0],s=t[1],l=t[2],u=t[3],c=t[4],f=t[5],h=t[6],d=t[7],v=t[8],x=t[9],b=t[10],g=t[11],e[0]=o,e[1]=s,e[2]=l,e[3]=u,e[4]=c,e[5]=f,e[6]=h,e[7]=d,e[8]=v,e[9]=x,e[10]=b,e[11]=g,e[12]=o*n+c*i+v*a+t[12],e[13]=s*n+f*i+x*a+t[13],e[14]=l*n+h*i+b*a+t[14],e[15]=u*n+d*i+g*a+t[15]),e}});var _te=ye((ver,yte)=>{yte.exports=Ret;function Ret(e,t,r){var n=r[0],i=r[1],a=r[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var bte=ye((per,xte)=>{xte.exports=Det;function Det(e,t,r,n){var i=n[0],a=n[1],o=n[2],s=Math.sqrt(i*i+a*a+o*o),l,u,c,f,h,d,v,x,b,g,E,k,A,L,_,C,M,p,P,T,F,q,V,H;return Math.abs(s)<1e-6?null:(s=1/s,i*=s,a*=s,o*=s,l=Math.sin(r),u=Math.cos(r),c=1-u,f=t[0],h=t[1],d=t[2],v=t[3],x=t[4],b=t[5],g=t[6],E=t[7],k=t[8],A=t[9],L=t[10],_=t[11],C=i*i*c+u,M=a*i*c+o*l,p=o*i*c-a*l,P=i*a*c-o*l,T=a*a*c+u,F=o*a*c+i*l,q=i*o*c+a*l,V=a*o*c-i*l,H=o*o*c+u,e[0]=f*C+x*M+k*p,e[1]=h*C+b*M+A*p,e[2]=d*C+g*M+L*p,e[3]=v*C+E*M+_*p,e[4]=f*P+x*T+k*F,e[5]=h*P+b*T+A*F,e[6]=d*P+g*T+L*F,e[7]=v*P+E*T+_*F,e[8]=f*q+x*V+k*H,e[9]=h*q+b*V+A*H,e[10]=d*q+g*V+L*H,e[11]=v*q+E*V+_*H,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}});var Tte=ye((ger,wte)=>{wte.exports=zet;function zet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[4],o=t[5],s=t[6],l=t[7],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+u*n,e[5]=o*i+c*n,e[6]=s*i+f*n,e[7]=l*i+h*n,e[8]=u*i-a*n,e[9]=c*i-o*n,e[10]=f*i-s*n,e[11]=h*i-l*n,e}});var Ste=ye((mer,Ate)=>{Ate.exports=Fet;function Fet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-u*n,e[1]=o*i-c*n,e[2]=s*i-f*n,e[3]=l*i-h*n,e[8]=a*n+u*i,e[9]=o*n+c*i,e[10]=s*n+f*i,e[11]=l*n+h*i,e}});var Ete=ye((yer,Mte)=>{Mte.exports=qet;function qet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[4],c=t[5],f=t[6],h=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+u*n,e[1]=o*i+c*n,e[2]=s*i+f*n,e[3]=l*i+h*n,e[4]=u*i-a*n,e[5]=c*i-o*n,e[6]=f*i-s*n,e[7]=h*i-l*n,e}});var Cte=ye((_er,kte)=>{kte.exports=Oet;function Oet(e,t,r){var n,i,a,o=r[0],s=r[1],l=r[2],u=Math.sqrt(o*o+s*s+l*l);return Math.abs(u)<1e-6?null:(u=1/u,o*=u,s*=u,l*=u,n=Math.sin(t),i=Math.cos(t),a=1-i,e[0]=o*o*a+i,e[1]=s*o*a+l*n,e[2]=l*o*a-s*n,e[3]=0,e[4]=o*s*a-l*n,e[5]=s*s*a+i,e[6]=l*s*a+o*n,e[7]=0,e[8]=o*l*a+s*n,e[9]=s*l*a-o*n,e[10]=l*l*a+i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}});var Pte=ye((xer,Lte)=>{Lte.exports=Bet;function Bet(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=n+n,l=i+i,u=a+a,c=n*s,f=n*l,h=n*u,d=i*l,v=i*u,x=a*u,b=o*s,g=o*l,E=o*u;return e[0]=1-(d+x),e[1]=f+E,e[2]=h-g,e[3]=0,e[4]=f-E,e[5]=1-(c+x),e[6]=v+b,e[7]=0,e[8]=h+g,e[9]=v-b,e[10]=1-(c+d),e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}});var Rte=ye((ber,Ite)=>{Ite.exports=Net;function Net(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var zte=ye((wer,Dte)=>{Dte.exports=Uet;function Uet(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}});var qte=ye((Ter,Fte)=>{Fte.exports=Vet;function Vet(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=r,e[7]=0,e[8]=0,e[9]=-r,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Bte=ye((Aer,Ote)=>{Ote.exports=Het;function Het(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-r,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=r,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Ute=ye((Ser,Nte)=>{Nte.exports=Get;function Get(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=r,e[2]=0,e[3]=0,e[4]=-r,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Cq=ye((Mer,Vte)=>{Vte.exports=jet;function jet(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=r+r,s=n+n,l=i+i,u=r*o,c=n*o,f=n*s,h=i*o,d=i*s,v=i*l,x=a*o,b=a*s,g=a*l;return e[0]=1-f-v,e[1]=c+g,e[2]=h-b,e[3]=0,e[4]=c-g,e[5]=1-u-v,e[6]=d+x,e[7]=0,e[8]=h+b,e[9]=d-x,e[10]=1-u-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Gte=ye((Eer,Hte)=>{Hte.exports=Wet;function Wet(e,t,r,n,i,a,o){var s=1/(r-t),l=1/(i-n),u=1/(a-o);return e[0]=a*2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(r+t)*s,e[9]=(i+n)*l,e[10]=(o+a)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*a*2*u,e[15]=0,e}});var Wte=ye((ker,jte)=>{jte.exports=Zet;function Zet(e,t,r,n,i){var a=1/Math.tan(t/2),o=1/(n-i);return e[0]=a/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(i+n)*o,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*i*n*o,e[15]=0,e}});var Xte=ye((Cer,Zte)=>{Zte.exports=Xet;function Xet(e,t,r,n){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),s=Math.tan(t.rightDegrees*Math.PI/180),l=2/(o+s),u=2/(i+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=u,e[6]=0,e[7]=0,e[8]=-((o-s)*l*.5),e[9]=(i-a)*u*.5,e[10]=n/(r-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*r/(r-n),e[15]=0,e}});var Kte=ye((Ler,Yte)=>{Yte.exports=Yet;function Yet(e,t,r,n,i,a,o){var s=1/(t-r),l=1/(n-i),u=1/(a-o);return e[0]=-2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+r)*s,e[13]=(i+n)*l,e[14]=(o+a)*u,e[15]=1,e}});var $te=ye((Per,Jte)=>{var Ket=kq();Jte.exports=Jet;function Jet(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v=t[0],x=t[1],b=t[2],g=n[0],E=n[1],k=n[2],A=r[0],L=r[1],_=r[2];return Math.abs(v-A)<1e-6&&Math.abs(x-L)<1e-6&&Math.abs(b-_)<1e-6?Ket(e):(c=v-A,f=x-L,h=b-_,d=1/Math.sqrt(c*c+f*f+h*h),c*=d,f*=d,h*=d,i=E*h-k*f,a=k*c-g*h,o=g*f-E*c,d=Math.sqrt(i*i+a*a+o*o),d?(d=1/d,i*=d,a*=d,o*=d):(i=0,a=0,o=0),s=f*o-h*a,l=h*i-c*o,u=c*a-f*i,d=Math.sqrt(s*s+l*l+u*u),d?(d=1/d,s*=d,l*=d,u*=d):(s=0,l=0,u=0),e[0]=i,e[1]=s,e[2]=c,e[3]=0,e[4]=a,e[5]=l,e[6]=f,e[7]=0,e[8]=o,e[9]=u,e[10]=h,e[11]=0,e[12]=-(i*v+a*x+o*b),e[13]=-(s*v+l*x+u*b),e[14]=-(c*v+f*x+h*b),e[15]=1,e)}});var ere=ye((Ier,Qte)=>{Qte.exports=$et;function $et(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}});var Lq=ye((Rer,tre)=>{tre.exports={create:ete(),clone:rte(),copy:nte(),identity:kq(),transpose:ste(),invert:ute(),adjoint:fte(),determinant:dte(),multiply:pte(),translate:mte(),scale:_te(),rotate:bte(),rotateX:Tte(),rotateY:Ste(),rotateZ:Ete(),fromRotation:Cte(),fromRotationTranslation:Pte(),fromScaling:Rte(),fromTranslation:zte(),fromXRotation:qte(),fromYRotation:Bte(),fromZRotation:Ute(),fromQuat:Cq(),frustum:Gte(),perspective:Wte(),perspectiveFromFieldOfView:Xte(),ortho:Kte(),lookAt:$te(),str:ere()}});var g6=ye(Xf=>{"use strict";var Qet=Lq();Xf.init2dArray=function(e,t){for(var r=new Array(e),n=0;n{"use strict";var ett=xa(),rre=H1(),ttt=g6(),rtt=Lq();function itt(e){var t;if(typeof e=="string"){if(t=document.getElementById(e),t===null)throw new Error("No DOM element with id '"+e+"' exists on the page.");return t}else if(e==null)throw new Error("DOM element provided is null or undefined");return e}function ntt(e){var t=ett.select(e);return t.node()instanceof HTMLElement&&t.size()&&t.classed("js-plotly-plot")}function ire(e){var t=e&&e.parentNode;t&&t.removeChild(e)}function att(e,t){nre("global",e,t)}function nre(e,t,r){var n="plotly.js-style-"+e,i=document.getElementById(n);if(!(i&&i.matches(".no-inline-styles"))){i||(i=document.createElement("style"),i.setAttribute("id",n),i.appendChild(document.createTextNode("")),document.head.appendChild(i));var a=i.sheet;a?a.insertRule?a.insertRule(t+"{"+r+"}",0):a.addRule?a.addRule(t,r,0):rre.warn("addStyleRule failed"):rre.warn("Cannot addRelatedStyleRule, probably due to strict CSP...")}}function ott(e){var t="plotly.js-style-"+e,r=document.getElementById(t);r&&ire(r)}function stt(e,t,r,n,i,a){var o=n.split(":"),s=i.split(":"),l="data-btn-style-event-added";a||(a=document),a.querySelectorAll(e).forEach(function(u){u.getAttribute(l)||(u.addEventListener("mouseenter",function(){var c=this.querySelector(r);c&&(c.style[o[0]]=o[1])}),u.addEventListener("mouseleave",function(){var c=this.querySelector(r);c&&(t&&this.matches(t)?c.style[o[0]]=o[1]:c.style[s[0]]=s[1])}),u.setAttribute(l,!0))})}function ltt(e){var t=ore(e),r=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];return t.forEach(function(n){var i=are(n);if(i){var a=ttt.convertCssMatrix(i);r=rtt.multiply(r,r,a)}}),r}function are(e){var t=window.getComputedStyle(e,null),r=t.getPropertyValue("-webkit-transform")||t.getPropertyValue("-moz-transform")||t.getPropertyValue("-ms-transform")||t.getPropertyValue("-o-transform")||t.getPropertyValue("transform");return r==="none"?null:r.replace("matrix","").replace("3d","").slice(1,-1).split(",").map(function(n){return+n})}function ore(e){for(var t=[];utt(e);)t.push(e),e=e.parentNode,typeof ShadowRoot=="function"&&e instanceof ShadowRoot&&(e=e.host);return t}function utt(e){return e&&(e instanceof Element||e instanceof HTMLElement)}function ctt(e,t){return e&&t&&e.top===t.top&&e.left===t.left&&e.right===t.right&&e.bottom===t.bottom}sre.exports={getGraphDiv:itt,isPlotDiv:ntt,removeElement:ire,addStyleRule:att,addRelatedStyleRule:nre,deleteRelatedStyleRule:ott,setStyleOnHover:stt,getFullTransformMatrix:ltt,getElementTransformMatrix:are,getElementAndAncestors:ore,equalDomRects:ctt}});var zS=ye((Fer,lre)=>{"use strict";lre.exports={mode:{valType:"enumerated",dflt:"afterall",values:["immediate","next","afterall"]},direction:{valType:"enumerated",values:["forward","reverse"],dflt:"forward"},fromcurrent:{valType:"boolean",dflt:!1},frame:{duration:{valType:"number",min:0,dflt:500},redraw:{valType:"boolean",dflt:!0}},transition:{duration:{valType:"number",min:0,dflt:500,editType:"none"},easing:{valType:"enumerated",dflt:"cubic-in-out",values:["linear","quad","cubic","sin","exp","circle","elastic","back","bounce","linear-in","quad-in","cubic-in","sin-in","exp-in","circle-in","elastic-in","back-in","bounce-in","linear-out","quad-out","cubic-out","sin-out","exp-out","circle-out","elastic-out","back-out","bounce-out","linear-in-out","quad-in-out","cubic-in-out","sin-in-out","exp-in-out","circle-in-out","elastic-in-out","back-in-out","bounce-in-out"],editType:"none"},ordering:{valType:"enumerated",values:["layout first","traces first"],dflt:"layout first",editType:"none"}}}});var Bu=ye((qer,pre)=>{"use strict";var cre=no().extendFlat,ftt=gy(),fre={valType:"flaglist",extras:["none"],flags:["calc","clearAxisTypes","plot","style","markerSize","colorbars"]},hre={valType:"flaglist",extras:["none"],flags:["calc","plot","legend","ticks","axrange","layoutstyle","modebar","camera","arraydraw","colorbars"]},htt=fre.flags.slice().concat(["fullReplot"]),dtt=hre.flags.slice().concat("layoutReplot");pre.exports={traces:fre,layout:hre,traceFlags:function(){return ure(htt)},layoutFlags:function(){return ure(dtt)},update:function(e,t){var r=t.editType;if(r&&r!=="none")for(var n=r.split("+"),i=0;i{"use strict";Pq.dash={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"};Pq.pattern={shape:{valType:"enumerated",values:["","/","\\","x","-","|","+","."],dflt:"",arrayOk:!0,editType:"style"},fillmode:{valType:"enumerated",values:["replace","overlay"],dflt:"replace",editType:"style"},bgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgopacity:{valType:"number",editType:"style",min:0,max:1},size:{valType:"number",min:0,dflt:8,arrayOk:!0,editType:"style"},solidity:{valType:"number",min:0,max:1,dflt:.3,arrayOk:!0,editType:"style"},editType:"style"}});var Iq=ye((Ber,gre)=>{"use strict";gre.exports={FORMAT_LINK:"https://github.com/d3/d3-format/tree/v1.4.5#d3-format",DATE_FORMAT_LINK:"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"}});var Wo=ye(m6=>{"use strict";var mre=Iq(),Ner=mre.FORMAT_LINK,Uer=mre.DATE_FORMAT_LINK;function Rq(e){var t=e.description?" "+e.description:"",r=e.keys||[];if(r.length>0){for(var n=[],i=0;i{"use strict";function G1(e,t){return t?t.d2l(e):e}function yre(e,t){return t?t.l2d(e):e}function vtt(e){return e.x0}function ptt(e){return e.x1}function gtt(e){return e.y0}function mtt(e){return e.y1}function _re(e){return e.x0shift||0}function xre(e){return e.x1shift||0}function bre(e){return e.y0shift||0}function wre(e){return e.y1shift||0}function y6(e,t){return G1(e.x1,t)+xre(e)-G1(e.x0,t)-_re(e)}function _6(e,t,r){return G1(e.y1,r)+wre(e)-G1(e.y0,r)-bre(e)}function ytt(e,t){return Math.abs(y6(e,t))}function _tt(e,t,r){return Math.abs(_6(e,t,r))}function xtt(e,t,r){return e.type!=="line"?void 0:Math.sqrt(Math.pow(y6(e,t),2)+Math.pow(_6(e,t,r),2))}function btt(e,t){return yre((G1(e.x1,t)+xre(e)+G1(e.x0,t)+_re(e))/2,t)}function wtt(e,t,r){return yre((G1(e.y1,r)+wre(e)+G1(e.y0,r)+bre(e))/2,r)}function Ttt(e,t,r){return e.type!=="line"?void 0:_6(e,t,r)/y6(e,t)}Tre.exports={x0:vtt,x1:ptt,y0:gtt,y1:mtt,slope:Ttt,dx:y6,dy:_6,width:ytt,height:_tt,length:xtt,xcenter:btt,ycenter:wtt}});var Mre=ye((Ger,Sre)=>{"use strict";var Att=Bu().overrideAll,cb=vl(),Are=Su(),Stt=Ed().dash,j1=no().extendFlat,Mtt=Wo().shapeTexttemplateAttrs,Ett=x6();Sre.exports=Att({newshape:{visible:j1({},cb.visible,{}),showlegend:{valType:"boolean",dflt:!1},legend:j1({},cb.legend,{}),legendgroup:j1({},cb.legendgroup,{}),legendgrouptitle:{text:j1({},cb.legendgrouptitle.text,{}),font:Are({})},legendrank:j1({},cb.legendrank,{}),legendwidth:j1({},cb.legendwidth,{}),line:{color:{valType:"color"},width:{valType:"number",min:0,dflt:4},dash:j1({},Stt,{dflt:"solid"})},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd"},opacity:{valType:"number",min:0,max:1,dflt:1},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above"},drawdirection:{valType:"enumerated",values:["ortho","horizontal","vertical","diagonal"],dflt:"diagonal"},name:j1({},cb.name,{}),label:{text:{valType:"string",dflt:""},texttemplate:Mtt({newshape:!0},{keys:Object.keys(Ett)}),font:Are({}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"]},textangle:{valType:"angle",dflt:"auto"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},padding:{valType:"number",dflt:3,min:0}}},activeshape:{fillcolor:{valType:"color",dflt:"rgb(255,0,255)"},opacity:{valType:"number",min:0,max:1,dflt:.5}}},"none","from-root")});var kre=ye((jer,Ere)=>{"use strict";var ktt=Ed().dash,Ctt=no().extendFlat;Ere.exports={newselection:{mode:{valType:"enumerated",values:["immediate","gradual"],dflt:"immediate",editType:"none"},line:{color:{valType:"color",editType:"none"},width:{valType:"number",min:1,dflt:1,editType:"none"},dash:Ctt({},ktt,{dflt:"dot",editType:"none"}),editType:"none"},editType:"none"},activeselection:{fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"none"},opacity:{valType:"number",min:0,max:1,dflt:.5,editType:"none"},editType:"none"}}});var b6=ye((Wer,Cre)=>{"use strict";Cre.exports=function(e){var t=e.editType;return{t:{valType:"number",dflt:0,editType:t},r:{valType:"number",dflt:0,editType:t},b:{valType:"number",dflt:0,editType:t},l:{valType:"number",dflt:0,editType:t},editType:t}}});var s3=ye((Zer,Rre)=>{"use strict";var Dq=Su(),Ltt=zS(),w6=dh(),Lre=Mre(),Pre=kre(),Ptt=b6(),Ire=no().extendFlat,T6=Dq({editType:"calc"});T6.family.dflt='"Open Sans", verdana, arial, sans-serif';T6.size.dflt=12;T6.color.dflt=w6.defaultLine;Rre.exports={font:T6,title:{text:{valType:"string",editType:"layoutstyle"},font:Dq({editType:"layoutstyle"}),subtitle:{text:{valType:"string",editType:"layoutstyle"},font:Dq({editType:"layoutstyle"}),editType:"layoutstyle"},xref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},yref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},x:{valType:"number",min:0,max:1,dflt:.5,editType:"layoutstyle"},y:{valType:"number",min:0,max:1,dflt:"auto",editType:"layoutstyle"},xanchor:{valType:"enumerated",dflt:"auto",values:["auto","left","center","right"],editType:"layoutstyle"},yanchor:{valType:"enumerated",dflt:"auto",values:["auto","top","middle","bottom"],editType:"layoutstyle"},pad:Ire(Ptt({editType:"layoutstyle"}),{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},editType:"layoutstyle"},uniformtext:{mode:{valType:"enumerated",values:[!1,"hide","show"],dflt:!1,editType:"plot"},minsize:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"},autosize:{valType:"boolean",dflt:!1,editType:"none"},width:{valType:"number",min:10,dflt:700,editType:"plot"},height:{valType:"number",min:10,dflt:450,editType:"plot"},minreducedwidth:{valType:"number",min:2,dflt:64,editType:"plot"},minreducedheight:{valType:"number",min:2,dflt:64,editType:"plot"},margin:{l:{valType:"number",min:0,dflt:80,editType:"plot"},r:{valType:"number",min:0,dflt:80,editType:"plot"},t:{valType:"number",min:0,dflt:100,editType:"plot"},b:{valType:"number",min:0,dflt:80,editType:"plot"},pad:{valType:"number",min:0,dflt:0,editType:"plot"},autoexpand:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},computed:{valType:"any",editType:"none"},paper_bgcolor:{valType:"color",dflt:w6.background,editType:"plot"},plot_bgcolor:{valType:"color",dflt:w6.background,editType:"layoutstyle"},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},separators:{valType:"string",editType:"plot"},hidesources:{valType:"boolean",dflt:!1,editType:"plot"},showlegend:{valType:"boolean",editType:"legend"},colorway:{valType:"colorlist",dflt:w6.defaults,editType:"calc"},datarevision:{valType:"any",editType:"calc"},uirevision:{valType:"any",editType:"none"},editrevision:{valType:"any",editType:"none"},selectionrevision:{valType:"any",editType:"none"},template:{valType:"any",editType:"calc"},newshape:Lre.newshape,activeshape:Lre.activeshape,newselection:Pre.newselection,activeselection:Pre.activeselection,meta:{valType:"any",arrayOk:!0,editType:"plot"},transition:Ire({},Ltt.transition,{editType:"none"})}});var Dre=su(()=>{});var Itt={};var zre=su(()=>{Dre()});var ba=ye(qs=>{"use strict";var l3=H1(),Fre=p6(),qre=Eq(),Rtt=gy(),Dtt=DS().addStyleRule,Ore=no(),ztt=vl(),Ftt=s3(),qtt=Ore.extendFlat,zq=Ore.extendDeepAll;qs.modules={};qs.allCategories={};qs.allTypes=[];qs.subplotsRegistry={};qs.componentsRegistry={};qs.layoutArrayContainers=[];qs.layoutArrayRegexes=[];qs.traceLayoutAttributes={};qs.localeRegistry={};qs.apiMethodRegistry={};qs.collectableSubplotTypes=null;qs.register=function(t){if(qs.collectableSubplotTypes=null,t)t&&!Array.isArray(t)&&(t=[t]);else throw new Error("No argument passed to Plotly.register.");for(var r=0;r{"use strict";var Htt=e3().timeFormat,Yre=uo(),Fq=H1(),Z1=r3().mod,f3=es(),_0=f3.BADNUM,wp=f3.ONEDAY,FS=f3.ONEHOUR,W1=f3.ONEMIN,c3=f3.ONESEC,qS=f3.EPOCHJD,my=ba(),Hre=e3().utcFormat,Gtt=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\d)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,jtt=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\di?)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,Gre=new Date().getFullYear()-70;function yy(e){return e&&my.componentsRegistry.calendars&&typeof e=="string"&&e!=="gregorian"}Yf.dateTick0=function(e,t){var r=Wtt(e,!!t);if(t<2)return r;var n=Yf.dateTime2ms(r,e);return n+=wp*(t-1),Yf.ms2DateTime(n,0,e)};function Wtt(e,t){return yy(e)?t?my.getComponentMethod("calendars","CANONICAL_SUNDAY")[e]:my.getComponentMethod("calendars","CANONICAL_TICK")[e]:t?"2000-01-02":"2000-01-01"}Yf.dfltRange=function(e){return yy(e)?my.getComponentMethod("calendars","DFLTRANGE")[e]:["2000-01-01","2001-01-01"]};Yf.isJSDate=function(e){return typeof e=="object"&&e!==null&&typeof e.getTime=="function"};var S6,M6;Yf.dateTime2ms=function(e,t){if(Yf.isJSDate(e)){var r=e.getTimezoneOffset()*W1,n=(e.getUTCMinutes()-e.getMinutes())*W1+(e.getUTCSeconds()-e.getSeconds())*c3+(e.getUTCMilliseconds()-e.getMilliseconds());if(n){var i=3*W1;r=r-i/2+Z1(n-r+i/2,i)}return e=Number(e)-r,e>=S6&&e<=M6?e:_0}if(typeof e!="string"&&typeof e!="number")return _0;e=String(e);var a=yy(t),o=e.charAt(0);a&&(o==="G"||o==="g")&&(e=e.substr(1),t="");var s=a&&t.substr(0,7)==="chinese",l=e.match(s?jtt:Gtt);if(!l)return _0;var u=l[1],c=l[3]||"1",f=Number(l[5]||1),h=Number(l[7]||0),d=Number(l[9]||0),v=Number(l[11]||0);if(a){if(u.length===2)return _0;u=Number(u);var x;try{var b=my.getComponentMethod("calendars","getCal")(t);if(s){var g=c.charAt(c.length-1)==="i";c=parseInt(c,10),x=b.newDate(u,b.toMonthIndex(u,c,g),f)}else x=b.newDate(u,Number(c),f)}catch(k){return _0}return x?(x.toJD()-qS)*wp+h*FS+d*W1+v*c3:_0}u.length===2?u=(Number(u)+2e3-Gre)%100+Gre:u=Number(u),c-=1;var E=new Date(Date.UTC(2e3,c,f,h,d));return E.setUTCFullYear(u),E.getUTCMonth()!==c||E.getUTCDate()!==f?_0:E.getTime()+v*c3};S6=Yf.MIN_MS=Yf.dateTime2ms("-9999");M6=Yf.MAX_MS=Yf.dateTime2ms("9999-12-31 23:59:59.9999");Yf.isDateTime=function(e,t){return Yf.dateTime2ms(e,t)!==_0};function u3(e,t){return String(e+Math.pow(10,t)).substr(1)}var A6=90*wp,jre=3*FS,Wre=5*W1;Yf.ms2DateTime=function(e,t,r){if(typeof e!="number"||!(e>=S6&&e<=M6))return _0;t||(t=0);var n=Math.floor(Z1(e+.05,1)*10),i=Math.round(e-n/10),a,o,s,l,u,c;if(yy(r)){var f=Math.floor(i/wp)+qS,h=Math.floor(Z1(e,wp));try{a=my.getComponentMethod("calendars","getCal")(r).fromJD(f).formatDate("yyyy-mm-dd")}catch(d){a=Hre("G%Y-%m-%d")(new Date(i))}if(a.charAt(0)==="-")for(;a.length<11;)a="-0"+a.substr(1);else for(;a.length<10;)a="0"+a;o=t=S6+wp&&e<=M6-wp))return _0;var t=Math.floor(Z1(e+.05,1)*10),r=new Date(Math.round(e-t/10)),n=Htt("%Y-%m-%d")(r),i=r.getHours(),a=r.getMinutes(),o=r.getSeconds(),s=r.getUTCMilliseconds()*10+t;return Kre(n,i,a,o,s)};function Kre(e,t,r,n,i){if((t||r||n||i)&&(e+=" "+u3(t,2)+":"+u3(r,2),(n||i)&&(e+=":"+u3(n,2),i))){for(var a=4;i%10===0;)a-=1,i/=10;e+="."+u3(i,a)}return e}Yf.cleanDate=function(e,t,r){if(e===_0)return t;if(Yf.isJSDate(e)||typeof e=="number"&&isFinite(e)){if(yy(r))return Fq.error("JS Dates and milliseconds are incompatible with world calendars",e),t;if(e=Yf.ms2DateTimeLocal(+e),!e&&t!==void 0)return t}else if(!Yf.isDateTime(e,r))return Fq.error("unrecognized date",e),t;return e};var Ztt=/%\d?f/g,Xtt=/%h/g,Ytt={1:"1",2:"1",3:"2",4:"2"};function Zre(e,t,r,n){e=e.replace(Ztt,function(a){var o=Math.min(+a.charAt(1)||6,6),s=(t/1e3%1+2).toFixed(o).substr(2).replace(/0+$/,"")||"0";return s});var i=new Date(Math.floor(t+.05));if(e=e.replace(Xtt,function(){return Ytt[r("%q")(i)]}),yy(n))try{e=my.getComponentMethod("calendars","worldCalFmt")(e,t,n)}catch(a){return"Invalid"}return r(e)(i)}var Ktt=[59,59.9,59.99,59.999,59.9999];function Jtt(e,t){var r=Z1(e+.05,wp),n=u3(Math.floor(r/FS),2)+":"+u3(Z1(Math.floor(r/W1),60),2);if(t!=="M"){Yre(t)||(t=0);var i=Math.min(Z1(e/c3,60),Ktt[t]),a=(100+i).toFixed(t).substr(1);t>0&&(a=a.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+a}return n}Yf.formatDate=function(e,t,r,n,i,a){if(i=yy(i)&&i,!t)if(r==="y")t=a.year;else if(r==="m")t=a.month;else if(r==="d")t=a.dayMonth+` -`+a.year;else return Jtt(e,r)+` -`+Zre(a.dayMonthYear,e,n,i);return Zre(t,e,n,i)};var Xre=3*wp;Yf.incrementMonth=function(e,t,r){r=yy(r)&&r;var n=Z1(e,wp);if(e=Math.round(e-n),r)try{var i=Math.round(e/wp)+qS,a=my.getComponentMethod("calendars","getCal")(r),o=a.fromJD(i);return t%12?a.add(o,t,"m"):a.add(o,t/12,"y"),(o.toJD()-qS)*wp+n}catch(l){Fq.error("invalid ms "+e+" in calendar "+r)}var s=new Date(e+Xre);return s.setUTCMonth(s.getUTCMonth()+t)+n-Xre};Yf.findExactDates=function(e,t){for(var r=0,n=0,i=0,a=0,o,s,l=yy(t)&&my.getComponentMethod("calendars","getCal")(t),u=0;u{"use strict";$re.exports=function(t){return t}});var E6=ye(_y=>{"use strict";var $tt=uo(),Qtt=H1(),ert=OS(),trt=es().BADNUM,qq=1e-9;_y.findBin=function(e,t,r){if($tt(t.start))return r?Math.ceil((e-t.start)/t.size-qq)-1:Math.floor((e-t.start)/t.size+qq);var n=0,i=t.length,a=0,o=i>1?(t[i-1]-t[0])/(i-1):1,s,l;for(o>=0?l=r?rrt:irt:l=r?art:nrt,e+=o*qq*(r?-1:1)*(o>=0?1:-1);n90&&Qtt.log("Long binary search..."),n-1};function rrt(e,t){return et}function art(e,t){return e>=t}_y.sorterAsc=function(e,t){return e-t};_y.sorterDes=function(e,t){return t-e};_y.distinctVals=function(e){var t=e.slice();t.sort(_y.sorterAsc);var r;for(r=t.length-1;r>-1&&t[r]===trt;r--);for(var n=t[r]-t[0]||1,i=n/(r||1)/1e4,a=[],o,s=0;s<=r;s++){var l=t[s],u=l-o;o===void 0?(a.push(l),o=l):u>i&&(n=Math.min(n,u),a.push(l),o=l)}return{vals:a,minDiff:n}};_y.roundUp=function(e,t,r){for(var n=0,i=t.length-1,a,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;n0&&(n=1),r&&n)return e.sort(t)}return n?e:e.reverse()};_y.findIndexOfMin=function(e,t){t=t||ert;for(var r=1/0,n,i=0;i{"use strict";Qre.exports=function(t){return Object.keys(t).sort()}});var eie=ye(Kf=>{"use strict";var BS=uo(),ort=vv().isArrayOrTypedArray;Kf.aggNums=function(e,t,r,n){var i,a;if((!n||n>r.length)&&(n=r.length),BS(t)||(t=!1),ort(r[0])){for(a=new Array(n),i=0;ie.length-1)return e[e.length-1];var r=t%1;return r*e[Math.ceil(t)]+(1-r)*e[Math.floor(t)]}});var aie=ye((itr,nie)=>{"use strict";var tie=r3(),Oq=tie.mod,srt=tie.modHalf,NS=Math.PI,Y1=2*NS;function lrt(e){return e/180*NS}function urt(e){return e/NS*180}function Bq(e){return Math.abs(e[1]-e[0])>Y1-1e-14}function rie(e,t){return srt(t-e,Y1)}function crt(e,t){return Math.abs(rie(e,t))}function iie(e,t){if(Bq(t))return!0;var r,n;t[0]n&&(n+=Y1);var i=Oq(e,Y1),a=i+Y1;return i>=r&&i<=n||a>=r&&a<=n}function frt(e,t,r,n){if(!iie(t,n))return!1;var i,a;return r[0]=i&&e<=a}function Nq(e,t,r,n,i,a,o){i=i||0,a=a||0;var s=Bq([r,n]),l,u,c,f,h;s?(l=0,u=NS,c=Y1):r{"use strict";fb.isLeftAnchor=function(t){return t.xanchor==="left"||t.xanchor==="auto"&&t.x<=1/3};fb.isCenterAnchor=function(t){return t.xanchor==="center"||t.xanchor==="auto"&&t.x>1/3&&t.x<2/3};fb.isRightAnchor=function(t){return t.xanchor==="right"||t.xanchor==="auto"&&t.x>=2/3};fb.isTopAnchor=function(t){return t.yanchor==="top"||t.yanchor==="auto"&&t.y>=2/3};fb.isMiddleAnchor=function(t){return t.yanchor==="middle"||t.yanchor==="auto"&&t.y>1/3&&t.y<2/3};fb.isBottomAnchor=function(t){return t.yanchor==="bottom"||t.yanchor==="auto"&&t.y<=1/3}});var uie=ye(hb=>{"use strict";var Uq=r3().mod;hb.segmentsIntersect=lie;function lie(e,t,r,n,i,a,o,s){var l=r-e,u=i-e,c=o-i,f=n-t,h=a-t,d=s-a,v=l*d-c*f;if(v===0)return null;var x=(u*d-c*h)/v,b=(u*f-l*h)/v;return b<0||b>1||x<0||x>1?null:{x:e+l*x,y:t+f*x}}hb.segmentDistance=function(t,r,n,i,a,o,s,l){if(lie(t,r,n,i,a,o,s,l))return 0;var u=n-t,c=i-r,f=s-a,h=l-o,d=u*u+c*c,v=f*f+h*h,x=Math.min(k6(u,c,d,a-t,o-r),k6(u,c,d,s-t,l-r),k6(f,h,v,t-a,r-o),k6(f,h,v,n-a,i-o));return Math.sqrt(x)};function k6(e,t,r,n,i){var a=n*e+i*t;if(a<0)return n*n+i*i;if(a>r){var o=n-e,s=i-t;return o*o+s*s}else{var l=n*t-i*e;return l*l/r}}var C6,Vq,sie;hb.getTextLocation=function(t,r,n,i){if((t!==Vq||i!==sie)&&(C6={},Vq=t,sie=i),C6[n])return C6[n];var a=t.getPointAtLength(Uq(n-i/2,r)),o=t.getPointAtLength(Uq(n+i/2,r)),s=Math.atan((o.y-a.y)/(o.x-a.x)),l=t.getPointAtLength(Uq(n,r)),u=(l.x*4+a.x+o.x)/6,c=(l.y*4+a.y+o.y)/6,f={x:u,y:c,theta:s};return C6[n]=f,f};hb.clearLocationCache=function(){Vq=null};hb.getVisibleSegment=function(t,r,n){var i=r.left,a=r.right,o=r.top,s=r.bottom,l=0,u=t.getTotalLength(),c=u,f,h;function d(x){var b=t.getPointAtLength(x);x===0?f=b:x===u&&(h=b);var g=b.xa?b.x-a:0,E=b.ys?b.y-s:0;return Math.sqrt(g*g+E*E)}for(var v=d(l);v;){if(l+=v+n,l>c)return;v=d(l)}for(v=d(c);v;){if(c-=v+n,l>c)return;v=d(c)}return{min:l,max:c,len:c-l,total:u,isClosed:l===0&&c===u&&Math.abs(f.x-h.x)<.1&&Math.abs(f.y-h.y)<.1}};hb.findPointOnPath=function(t,r,n,i){i=i||{};for(var a=i.pathLength||t.getTotalLength(),o=i.tolerance||.001,s=i.iterationLimit||30,l=t.getPointAtLength(0)[n]>t.getPointAtLength(a)[n]?-1:1,u=0,c=0,f=a,h,d,v;u0?f=h:c=h,u++}return d}});var L6=ye(US=>{"use strict";var xy={};US.throttle=function(t,r,n){var i=xy[t],a=Date.now();if(!i){for(var o in xy)xy[o].tsi.ts+r){s();return}i.timer=setTimeout(function(){s(),i.timer=null},r)};US.done=function(e){var t=xy[e];return!t||!t.timer?Promise.resolve():new Promise(function(r){var n=t.onDone;t.onDone=function(){n&&n(),r(),t.onDone=null}})};US.clear=function(e){if(e)cie(xy[e]),delete xy[e];else for(var t in xy)US.clear(t)};function cie(e){e&&e.timer!==null&&(clearTimeout(e.timer),e.timer=null)}});var hie=ye((str,fie)=>{"use strict";fie.exports=function(t){t._responsiveChartHandler&&(window.removeEventListener("resize",t._responsiveChartHandler),delete t._responsiveChartHandler)}});var die=ye((ltr,P6)=>{"use strict";P6.exports=Hq;P6.exports.isMobile=Hq;P6.exports.default=Hq;var prt=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,grt=/CrOS/,mrt=/android|ipad|playbook|silk/i;function Hq(e){e||(e={});let t=e.ua;if(!t&&typeof navigator!="undefined"&&(t=navigator.userAgent),t&&t.headers&&typeof t.headers["user-agent"]=="string"&&(t=t.headers["user-agent"]),typeof t!="string")return!1;let r=prt.test(t)&&!grt.test(t)||!!e.tablet&&mrt.test(t);return!r&&e.tablet&&e.featureDetect&&navigator&&navigator.maxTouchPoints>1&&t.indexOf("Macintosh")!==-1&&t.indexOf("Safari")!==-1&&(r=!0),r}});var pie=ye((utr,vie)=>{"use strict";var yrt=uo(),_rt=die();vie.exports=function(t){var r;if(t&&t.hasOwnProperty("userAgent")?r=t.userAgent:r=xrt(),typeof r!="string")return!0;var n=_rt({ua:{headers:{"user-agent":r}},tablet:!0,featureDetect:!1});if(!n)for(var i=r.split(" "),a=1;a-1;s--){var l=i[s];if(l.substr(0,8)==="Version/"){var u=l.substr(8).split(".")[0];if(yrt(u)&&(u=+u),u>=13)return!0}}}return n};function xrt(){var e;return typeof navigator!="undefined"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers["user-agent"]=="string"&&(e=e.headers["user-agent"]),e}});var mie=ye((ctr,gie)=>{"use strict";var brt=xa();gie.exports=function(t,r,n){var i=t.selectAll("g."+n.replace(/\s/g,".")).data(r,function(o){return o[0].trace.uid});i.exit().remove(),i.enter().append("g").attr("class",n),i.order();var a=t.classed("rangeplot")?"nodeRangePlot3":"node3";return i.each(function(o){o[0][a]=brt.select(this)}),i}});var _ie=ye((ftr,yie)=>{"use strict";var wrt=ba();yie.exports=function(t,r){for(var n=t._context.locale,i=0;i<2;i++){for(var a=t._context.locales,o=0;o<2;o++){var s=(a[n]||{}).dictionary;if(s){var l=s[r];if(l)return l}a=wrt.localeRegistry}var u=n.split("-")[0];if(u===n)break;n=u}return r}});var Gq=ye((htr,xie)=>{"use strict";xie.exports=function(t){for(var r={},n=[],i=0,a=0;a{"use strict";bie.exports=function(t){for(var r=Srt(t)?Art:Trt,n=[],i=0;i{"use strict";Tie.exports=function(t,r){if(!r)return t;var n=1/Math.abs(r),i=n>1?(n*t+n*r)/n:t+r,a=String(i).length;if(a>16){var o=String(r).length,s=String(t).length;if(a>=s+o){var l=parseFloat(i).toPrecision(12);l.indexOf("e+")===-1&&(i=+l)}}return i}});var Mie=ye((ptr,Sie)=>{"use strict";var Mrt=uo(),Ert=es().BADNUM,krt=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;Sie.exports=function(t){return typeof t=="string"&&(t=t.replace(krt,"")),Mrt(t)?Number(t):Ert}});var Mr=ye((gtr,Bie)=>{"use strict";var VS=xa(),Crt=e3().utcFormat,Lrt=dq().format,Iie=uo(),Rie=es(),Die=Rie.FP_SAFE,Prt=-Die,Eie=Rie.BADNUM,li=Bie.exports={};li.adjustFormat=function(t){return!t||/^\d[.]\df/.test(t)||/[.]\d%/.test(t)?t:t==="0.f"?"~f":/^\d%/.test(t)?"~%":/^\ds/.test(t)?"~s":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?"~"+t:t};var kie={};li.warnBadFormat=function(e){var t=String(e);kie[t]||(kie[t]=1,li.warn('encountered bad format: "'+t+'"'))};li.noFormat=function(e){return String(e)};li.numberFormat=function(e){var t;try{t=Lrt(li.adjustFormat(e))}catch(r){return li.warnBadFormat(e),li.noFormat}return t};li.nestedProperty=ES();li.keyedContainer=_ee();li.relativeAttr=bee();li.isPlainObject=gy();li.toLogRange=l6();li.relinkPrivateKeys=See();var K1=vv();li.isArrayBuffer=K1.isArrayBuffer;li.isTypedArray=K1.isTypedArray;li.isArrayOrTypedArray=K1.isArrayOrTypedArray;li.isArray1D=K1.isArray1D;li.ensureArray=K1.ensureArray;li.concat=K1.concat;li.maxRowLength=K1.maxRowLength;li.minRowLength=K1.minRowLength;var zie=r3();li.mod=zie.mod;li.modHalf=zie.modHalf;var J1=Gee();li.valObjectMeta=J1.valObjectMeta;li.coerce=J1.coerce;li.coerce2=J1.coerce2;li.coerceFont=J1.coerceFont;li.coercePattern=J1.coercePattern;li.coerceHoverinfo=J1.coerceHoverinfo;li.coerceSelectionMarkerOpacity=J1.coerceSelectionMarkerOpacity;li.validate=J1.validate;var Wp=Jre();li.dateTime2ms=Wp.dateTime2ms;li.isDateTime=Wp.isDateTime;li.ms2DateTime=Wp.ms2DateTime;li.ms2DateTimeLocal=Wp.ms2DateTimeLocal;li.cleanDate=Wp.cleanDate;li.isJSDate=Wp.isJSDate;li.formatDate=Wp.formatDate;li.incrementMonth=Wp.incrementMonth;li.dateTick0=Wp.dateTick0;li.dfltRange=Wp.dfltRange;li.findExactDates=Wp.findExactDates;li.MIN_MS=Wp.MIN_MS;li.MAX_MS=Wp.MAX_MS;var db=E6();li.findBin=db.findBin;li.sorterAsc=db.sorterAsc;li.sorterDes=db.sorterDes;li.distinctVals=db.distinctVals;li.roundUp=db.roundUp;li.sort=db.sort;li.findIndexOfMin=db.findIndexOfMin;li.sortObjectKeys=X1();var by=eie();li.aggNums=by.aggNums;li.len=by.len;li.mean=by.mean;li.geometricMean=by.geometricMean;li.median=by.median;li.midRange=by.midRange;li.variance=by.variance;li.stdev=by.stdev;li.interp=by.interp;var yg=g6();li.init2dArray=yg.init2dArray;li.transposeRagged=yg.transposeRagged;li.dot=yg.dot;li.translationMatrix=yg.translationMatrix;li.rotationMatrix=yg.rotationMatrix;li.rotationXYMatrix=yg.rotationXYMatrix;li.apply3DTransform=yg.apply3DTransform;li.apply2DTransform=yg.apply2DTransform;li.apply2DTransform2=yg.apply2DTransform2;li.convertCssMatrix=yg.convertCssMatrix;li.inverseTransformMatrix=yg.inverseTransformMatrix;var vm=aie();li.deg2rad=vm.deg2rad;li.rad2deg=vm.rad2deg;li.angleDelta=vm.angleDelta;li.angleDist=vm.angleDist;li.isFullCircle=vm.isFullCircle;li.isAngleInsideSector=vm.isAngleInsideSector;li.isPtInsideSector=vm.isPtInsideSector;li.pathArc=vm.pathArc;li.pathSector=vm.pathSector;li.pathAnnulus=vm.pathAnnulus;var d3=oie();li.isLeftAnchor=d3.isLeftAnchor;li.isCenterAnchor=d3.isCenterAnchor;li.isRightAnchor=d3.isRightAnchor;li.isTopAnchor=d3.isTopAnchor;li.isMiddleAnchor=d3.isMiddleAnchor;li.isBottomAnchor=d3.isBottomAnchor;var v3=uie();li.segmentsIntersect=v3.segmentsIntersect;li.segmentDistance=v3.segmentDistance;li.getTextLocation=v3.getTextLocation;li.clearLocationCache=v3.clearLocationCache;li.getVisibleSegment=v3.getVisibleSegment;li.findPointOnPath=v3.findPointOnPath;var D6=no();li.extendFlat=D6.extendFlat;li.extendDeep=D6.extendDeep;li.extendDeepAll=D6.extendDeepAll;li.extendDeepNoArrays=D6.extendDeepNoArrays;var jq=H1();li.log=jq.log;li.warn=jq.warn;li.error=jq.error;var Irt=n3();li.counterRegex=Irt.counter;var Wq=L6();li.throttle=Wq.throttle;li.throttleDone=Wq.done;li.clearThrottle=Wq.clear;var _g=DS();li.getGraphDiv=_g.getGraphDiv;li.isPlotDiv=_g.isPlotDiv;li.removeElement=_g.removeElement;li.addStyleRule=_g.addStyleRule;li.addRelatedStyleRule=_g.addRelatedStyleRule;li.deleteRelatedStyleRule=_g.deleteRelatedStyleRule;li.setStyleOnHover=_g.setStyleOnHover;li.getFullTransformMatrix=_g.getFullTransformMatrix;li.getElementTransformMatrix=_g.getElementTransformMatrix;li.getElementAndAncestors=_g.getElementAndAncestors;li.equalDomRects=_g.equalDomRects;li.clearResponsive=hie();li.preserveDrawingBuffer=pie();li.makeTraceGroups=mie();li._=_ie();li.notifier=Aq();li.filterUnique=Gq();li.filterVisible=wie();li.pushUnique=Eq();li.increment=Aie();li.cleanNumber=Mie();li.ensureNumber=function(t){return Iie(t)?(t=Number(t),t>Die||t=t?!1:Iie(e)&&e>=0&&e%1===0};li.noop=p6();li.identity=OS();li.repeat=function(e,t){for(var r=new Array(t),n=0;nr?Math.max(r,Math.min(t,e)):Math.max(t,Math.min(r,e))};li.bBoxIntersect=function(e,t,r){return r=r||0,e.left<=t.right+r&&t.left<=e.right+r&&e.top<=t.bottom+r&&t.top<=e.bottom+r};li.simpleMap=function(e,t,r,n,i){for(var a=e.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(li.warn("randstr failed uniqueness"),o):e(t,r,n,(i||0)+1):o};li.OptionControl=function(e,t){e||(e={}),t||(t="opt");var r={};return r.optionList=[],r._newoption=function(n){n[t]=e,r[n.name]=n,r.optionList.push(n)},r["_"+t]=e,r};li.smooth=function(e,t){if(t=Math.round(t)||0,t<2)return e;var r=e.length,n=2*r,i=2*t-1,a=new Array(i),o=new Array(r),s,l,u,c;for(s=0;s=n&&(u-=n*Math.floor(u/n)),u<0?u=-1-u:u>=r&&(u=n-1-u),c+=e[u]*a[l];o[s]=c}return o};li.syncOrAsync=function(e,t,r){var n,i;function a(){return li.syncOrAsync(e,t,r)}for(;e.length;)if(i=e.splice(0,1)[0],n=i(t),n&&n.then)return n.then(a);return r&&r(t)};li.stripTrailingSlash=function(e){return e.substr(-1)==="/"?e.substr(0,e.length-1):e};li.noneOrAll=function(e,t,r){if(e){var n=!1,i=!0,a,o;for(a=0;a0?i:0})};li.fillArray=function(e,t,r,n){if(n=n||li.identity,li.isArrayOrTypedArray(e))for(var i=0;i1?i+o[1]:"";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,"$1"+a+"$2");return s+l};li.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var Oie=/^\w*$/;li.templateString=function(e,t){var r={};return e.replace(li.TEMPLATE_STRING_REGEX,function(n,i){var a;return Oie.test(i)?a=t[i]:(r[i]=r[i]||li.nestedProperty(t,i).get,a=r[i]()),li.isValidTextValue(a)?a:""})};var Ort={max:10,count:0,name:"hovertemplate"};li.hovertemplateString=function(){return Zq.apply(Ort,arguments)};var Brt={max:10,count:0,name:"texttemplate"};li.texttemplateString=function(){return Zq.apply(Brt,arguments)};var Nrt=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/;function Urt(e){var t=e.match(Nrt);return t?{key:t[1],op:t[2],number:Number(t[3])}:{key:e,op:null,number:null}}var Vrt={max:10,count:0,name:"texttemplate",parseMultDiv:!0};li.texttemplateStringForShapes=function(){return Zq.apply(Vrt,arguments)};var Cie=/^[:|\|]/;function Zq(e,t,r){var n=this,i=arguments;t||(t={});var a={};return e.replace(li.TEMPLATE_STRING_REGEX,function(o,s,l){var u=s==="xother"||s==="yother",c=s==="_xother"||s==="_yother",f=s==="_xother_"||s==="_yother_",h=s==="xother_"||s==="yother_",d=u||c||h||f,v=s;(c||f)&&(v=v.substring(1)),(h||f)&&(v=v.substring(0,v.length-1));var x=null,b=null;if(n.parseMultDiv){var g=Urt(v);v=g.key,x=g.op,b=g.number}var E;if(d){if(E=t[v],E===void 0)return""}else{var k,A;for(A=3;A=R6&&o<=Lie,u=s>=R6&&s<=Lie;if(l&&(n=10*n+o-R6),u&&(i=10*i+s-R6),!l||!u){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var h3=2e9;li.seedPseudoRandom=function(){h3=2e9};li.pseudoRandom=function(){var e=h3;return h3=(69069*h3+1)%4294967296,Math.abs(h3-e)<429496729?li.pseudoRandom():h3/4294967296};li.fillText=function(e,t,r){var n=Array.isArray(r)?function(o){r.push(o)}:function(o){r.text=o},i=li.extractOption(e,t,"htx","hovertext");if(li.isValidTextValue(i))return n(i);var a=li.extractOption(e,t,"tx","text");if(li.isValidTextValue(a))return n(a)};li.isValidTextValue=function(e){return e||e===0};li.formatPercent=function(e,t){t=t||0;for(var r=(Math.round(100*e*Math.pow(10,t))*Math.pow(.1,t)).toFixed(t)+"%",n=0;n1&&(u=1):u=0,li.strTranslate(i-u*(r+o),a-u*(n+s))+li.strScale(u)+(l?"rotate("+l+(t?"":" "+r+" "+n)+")":"")};li.setTransormAndDisplay=function(e,t){e.attr("transform",li.getTextTransform(t)),e.style("display",t.scale?null:"none")};li.ensureUniformFontSize=function(e,t){var r=li.extendFlat({},t);return r.size=Math.max(t.size,e._fullLayout.uniformtext.minsize||0),r};li.join2=function(e,t,r){var n=e.length;return n>1?e.slice(0,-1).join(t)+r+e[n-1]:e.join(t)};li.bigFont=function(e){return Math.round(1.2*e)};var Pie=li.getFirefoxVersion(),Hrt=Pie!==null&&Pie<86;li.getPositionFromD3Event=function(){return Hrt?[VS.event.layerX,VS.event.layerY]:[VS.event.offsetX,VS.event.offsetY]}});var Vie=ye(()=>{"use strict";var Grt=Mr(),Nie={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(Xq in Nie)Uie=Xq.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier"),Grt.addStyleRule(Uie,Nie[Xq]);var Uie,Xq});var Yq=ye((_tr,Hie)=>{Hie.exports=!0});var Jq=ye((xtr,Gie)=>{"use strict";var jrt=Yq(),Kq;typeof window.matchMedia=="function"?Kq=!window.matchMedia("(hover: none)").matches:Kq=jrt;Gie.exports=Kq});var vb=ye((btr,$q)=>{"use strict";var p3=typeof Reflect=="object"?Reflect:null,jie=p3&&typeof p3.apply=="function"?p3.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},z6;p3&&typeof p3.ownKeys=="function"?z6=p3.ownKeys:Object.getOwnPropertySymbols?z6=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:z6=function(t){return Object.getOwnPropertyNames(t)};function Wrt(e){console&&console.warn&&console.warn(e)}var Zie=Number.isNaN||function(t){return t!==t};function Tc(){Tc.init.call(this)}$q.exports=Tc;$q.exports.once=Krt;Tc.EventEmitter=Tc;Tc.prototype._events=void 0;Tc.prototype._eventsCount=0;Tc.prototype._maxListeners=void 0;var Wie=10;function F6(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Tc,"defaultMaxListeners",{enumerable:!0,get:function(){return Wie},set:function(e){if(typeof e!="number"||e<0||Zie(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Wie=e}});Tc.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Tc.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||Zie(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function Xie(e){return e._maxListeners===void 0?Tc.defaultMaxListeners:e._maxListeners}Tc.prototype.getMaxListeners=function(){return Xie(this)};Tc.prototype.emit=function(t){for(var r=[],n=1;n0&&(o=r[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[t];if(l===void 0)return!1;if(typeof l=="function")jie(l,this,r);else for(var u=l.length,c=Qie(l,u),n=0;n0&&o.length>i&&!o.warned){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,Wrt(s)}return e}Tc.prototype.addListener=function(t,r){return Yie(this,t,r,!1)};Tc.prototype.on=Tc.prototype.addListener;Tc.prototype.prependListener=function(t,r){return Yie(this,t,r,!0)};function Zrt(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Kie(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=Zrt.bind(n);return i.listener=r,n.wrapFn=i,i}Tc.prototype.once=function(t,r){return F6(r),this.on(t,Kie(this,t,r)),this};Tc.prototype.prependOnceListener=function(t,r){return F6(r),this.prependListener(t,Kie(this,t,r)),this};Tc.prototype.removeListener=function(t,r){var n,i,a,o,s;if(F6(r),i=this._events,i===void 0)return this;if(n=i[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(a=-1,o=n.length-1;o>=0;o--)if(n[o]===r||n[o].listener===r){s=n[o].listener,a=o;break}if(a<0)return this;a===0?n.shift():Xrt(n,a),n.length===1&&(i[t]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",t,s||r)}return this};Tc.prototype.off=Tc.prototype.removeListener;Tc.prototype.removeAllListeners=function(t){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var a=Object.keys(n),o;for(i=0;i=0;i--)this.removeListener(t,r[i]);return this};function Jie(e,t,r){var n=e._events;if(n===void 0)return[];var i=n[t];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?Yrt(i):Qie(i,i.length)}Tc.prototype.listeners=function(t){return Jie(this,t,!0)};Tc.prototype.rawListeners=function(t){return Jie(this,t,!1)};Tc.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):$ie.call(e,t)};Tc.prototype.listenerCount=$ie;function $ie(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Tc.prototype.eventNames=function(){return this._eventsCount>0?z6(this._events):[]};function Qie(e,t){for(var r=new Array(t),n=0;n{"use strict";var Qq=vb().EventEmitter,$rt={init:function(e){if(e._ev instanceof Qq)return e;var t=new Qq,r=new Qq;return e._ev=t,e._internalEv=r,e.on=t.on.bind(t),e.once=t.once.bind(t),e.removeListener=t.removeListener.bind(t),e.removeAllListeners=t.removeAllListeners.bind(t),e._internalOn=r.on.bind(r),e._internalOnce=r.once.bind(r),e._removeInternalListener=r.removeListener.bind(r),e._removeAllInternalListeners=r.removeAllListeners.bind(r),e.emit=function(n,i){t.emit(n,i),r.emit(n,i)},e},triggerHandler:function(e,t,r){var n,i=e._ev;if(!i)return;var a=i._events[t];if(!a)return;function o(l){if(l.listener){if(i.removeListener(t,l.listener),!l.fired)return l.fired=!0,l.listener.apply(i,[r])}else return l.apply(i,[r])}a=Array.isArray(a)?a:[a];var s;for(s=0;s{"use strict";var rne=Mr(),Qrt=ub().dfltConfig;function eit(e,t){for(var r=[],n,i=0;iQrt.queueLength&&(e.undoQueue.queue.shift(),e.undoQueue.index--)};wy.startSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!0,e.undoQueue.beginSequence=!0};wy.stopSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!1,e.undoQueue.beginSequence=!1};wy.undo=function(t){var r,n;if(!(t.undoQueue===void 0||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n=t.undoQueue.queue.length)){for(r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n{"use strict";ane.exports={_isLinkedToArray:"frames_entry",group:{valType:"string"},name:{valType:"string"},traces:{valType:"any"},baseframe:{valType:"string"},data:{valType:"any"},layout:{valType:"any"}}});var _3=ye(Bh=>{"use strict";var x0=ba(),HS=Mr(),O6=vl(),tO=s3(),tit=eO(),rit=zS(),iit=ub().configAttributes,one=Bu(),xg=HS.extendDeepAll,m3=HS.isPlainObject,nit=HS.isArrayOrTypedArray,B6=HS.nestedProperty,ait=HS.valObjectMeta,rO="_isSubplotObj",N6="_isLinkedToArray",oit="_arrayAttrRegexps",lne="_deprecated",iO=[rO,N6,oit,lne];Bh.IS_SUBPLOT_OBJ=rO;Bh.IS_LINKED_TO_ARRAY=N6;Bh.DEPRECATED=lne;Bh.UNDERSCORE_ATTRS=iO;Bh.get=function(){var e={};return x0.allTypes.forEach(function(t){e[t]=lit(t)}),{defs:{valObjects:ait,metaKeys:iO.concat(["description","role","editType","impliedEdits"]),editType:{traces:one.traces,layout:one.layout},impliedEdits:{}},traces:e,layout:uit(),frames:cit(),animation:y3(rit),config:y3(iit)}};Bh.crawl=function(e,t,r,n){var i=r||0;n=n||"",Object.keys(e).forEach(function(a){var o=e[a];if(iO.indexOf(a)===-1){var s=(n?n+".":"")+a;t(o,a,e,i,s),!Bh.isValObject(o)&&m3(o)&&a!=="impliedEdits"&&Bh.crawl(o,t,i+1,s)}})};Bh.isValObject=function(e){return e&&e.valType!==void 0};Bh.findArrayAttributes=function(e){var t=[],r=[],n=[],i,a;function o(l,u,c,f){r=r.slice(0,f).concat([u]),n=n.slice(0,f).concat([l&&l._isLinkedToArray]);var h=l&&(l.valType==="data_array"||l.arrayOk===!0)&&!(r[f-1]==="colorbar"&&(u==="ticktext"||u==="tickvals"));h&&s(i,0,"")}function s(l,u,c){var f=l[r[u]],h=c+r[u];if(u===r.length-1)nit(f)&&t.push(a+h);else if(n[u]){if(Array.isArray(f))for(var d=0;d=a.length)return!1;if(e.dimensions===2){if(r++,t.length===r)return e;var o=t[r];if(!q6(o))return!1;e=a[i][o]}else e=a[i]}else e=a}}return e}function q6(e){return e===Math.round(e)&&e>=0}function lit(e){var t,r;t=x0.modules[e]._module,r=t.basePlotModule;var n={};n.type=null;var i=xg({},O6),a=xg({},t.attributes);Bh.crawl(a,function(l,u,c,f,h){B6(i,h).set(void 0),l===void 0&&B6(a,h).set(void 0)}),xg(n,i),x0.traceIs(e,"noOpacity")&&delete n.opacity,x0.traceIs(e,"showLegend")||(delete n.showlegend,delete n.legendgroup),x0.traceIs(e,"noHover")&&(delete n.hoverinfo,delete n.hoverlabel),t.selectPoints||delete n.selectedpoints,xg(n,a),r.attributes&&xg(n,r.attributes),n.type=e;var o={meta:t.meta||{},categories:t.categories||{},animatable:!!t.animatable,type:e,attributes:y3(n)};if(t.layoutAttributes){var s={};xg(s,t.layoutAttributes),o.layoutAttributes=y3(s)}return t.animatable||Bh.crawl(o,function(l){Bh.isValObject(l)&&"anim"in l&&delete l.anim}),o}function uit(){var e={},t,r;xg(e,tO);for(t in x0.subplotsRegistry)if(r=x0.subplotsRegistry[t],!!r.layoutAttributes)if(Array.isArray(r.attr))for(var n=0;n{"use strict";var x3=Mr(),pit=vl(),$1="templateitemname",nO={name:{valType:"string",editType:"none"}};nO[$1]={valType:"string",editType:"calc"};pb.templatedArray=function(e,t){return t._isLinkedToArray=e,t.name=nO.name,t[$1]=nO[$1],t};pb.traceTemplater=function(e){var t={},r,n;for(r in e)n=e[r],Array.isArray(n)&&n.length&&(t[r]=0);function i(a){r=x3.coerce(a,{},pit,"type");var o={type:r,_template:null};if(r in t){n=e[r];var s=t[r]%n.length;t[r]++,o._template=n[s]}return o}return{newTrace:i}};pb.newContainer=function(e,t,r){var n=e._template,i=n&&(n[t]||r&&n[r]);x3.isPlainObject(i)||(i=null);var a=e[t]={_template:i};return a};pb.arrayTemplater=function(e,t,r){var n=e._template,i=n&&n[fne(t)],a=n&&n[t];(!Array.isArray(a)||!a.length)&&(a=[]);var o={};function s(u){var c={name:u.name,_input:u},f=c[$1]=u[$1];if(!cne(f))return c._template=i,c;for(var h=0;h=n&&(r._input||{})._templateitemname;a&&(i=n);var o=t+"["+i+"]",s;function l(){s={},a&&(s[o]={},s[o][$1]=a)}l();function u(d,v){s[d]=v}function c(d,v){a?x3.nestedProperty(s[o],d).set(v):s[o+"."+d]=v}function f(){var d=s;return l(),d}function h(d,v){d&&c(d,v);var x=f();for(var b in x)x3.nestedProperty(e,b).set(x[b])}return{modifyBase:u,modifyItem:c,getUpdateObj:f,applyUpdate:h}}});var ad=ye((Etr,hne)=>{"use strict";var GS=n3().counter;hne.exports={idRegex:{x:GS("x","( domain)?"),y:GS("y","( domain)?")},attrRegex:GS("[xy]axis"),xAxisMatch:GS("xaxis"),yAxisMatch:GS("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*( domain)?$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,HOUR_PATTERN:"hour",WEEKDAY_PATTERN:"day of week",MINDRAG:8,MINZOOM:20,DRAGGERSIZE:20,REDRAWDELAY:50,DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","heatmaplayer","contourcarpetlayer","contourlayer","funnellayer","waterfalllayer","barlayer","carpetlayer","violinlayer","boxlayer","ohlclayer","scattercarpetlayer","scatterlayer"],clipOnAxisFalseQuery:[".scatterlayer",".barlayer",".funnellayer",".waterfalllayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"},zindexSeparator:"z"}});var af=ye(Tp=>{"use strict";var git=ba(),aO=ad();Tp.id2name=function(t){if(!(typeof t!="string"||!t.match(aO.AX_ID_PATTERN))){var r=t.split(" ")[0].substr(1);return r==="1"&&(r=""),t.charAt(0)+"axis"+r}};Tp.name2id=function(t){if(t.match(aO.AX_NAME_PATTERN)){var r=t.substr(5);return r==="1"&&(r=""),t.charAt(0)+r}};Tp.cleanId=function(t,r,n){var i=/( domain)$/.test(t);if(!(typeof t!="string"||!t.match(aO.AX_ID_PATTERN))&&!(r&&t.charAt(0)!==r)&&!(i&&!n)){var a=t.split(" ")[0].substr(1).replace(/^0+/,"");return a==="1"&&(a=""),t.charAt(0)+a+(i&&n?" domain":"")}};Tp.list=function(e,t,r){var n=e._fullLayout;if(!n)return[];var i=Tp.listIds(e,t),a=new Array(i.length),o;for(o=0;on?1:-1:+(e.substr(1)||1)-+(t.substr(1)||1)};Tp.ref2id=function(e){return/^[xyz]/.test(e)?e.split(" ")[0]:!1};function dne(e,t){if(t&&t.length){for(var r=0;r{"use strict";function mit(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".outline-controllers").remove()}function yit(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".select-outline").remove(),e._fullLayout._outlining=!1}vne.exports={clearOutlineControllers:mit,clearOutline:yit}});var U6=ye((Ltr,pne)=>{"use strict";pne.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}});var kd=ye(H6=>{"use strict";var V6=ba(),Ptr=ad().SUBPLOT_PATTERN;H6.getSubplotCalcData=function(e,t,r){var n=V6.subplotsRegistry[t];if(!n)return[];for(var i=n.attr,a=[],o=0;o{"use strict";var _it=ba(),b3=Mr();gb.manageCommandObserver=function(e,t,r,n){var i={},a=!0;t&&t._commandObserver&&(i=t._commandObserver),i.cache||(i.cache={}),i.lookupTable={};var o=gb.hasSimpleAPICommandBindings(e,r,i.lookupTable);if(t&&t._commandObserver){if(o)return i;if(t._commandObserver.remove)return t._commandObserver.remove(),t._commandObserver=null,i}if(o){gne(e,o,i.cache),i.check=function(){if(a){var c=gne(e,o,i.cache);return c.changed&&n&&i.lookupTable[c.value]!==void 0&&(i.disable(),Promise.resolve(n({value:c.value,type:o.type,prop:o.prop,traces:o.traces,index:i.lookupTable[c.value]})).then(i.enable,i.enable)),c.changed}};for(var s=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],l=0;l0?".":"")+i;b3.isPlainObject(a)?oO(a,t,o,n+1):t(o,i,a)}})}});var Xu=ye((Dtr,Rne)=>{"use strict";var Mne=xa(),bit=e3().timeFormatLocale,wit=dq().formatLocale,jS=uo(),Tit=vq(),bl=ba(),Ene=_3(),Ait=Vs(),Ca=Mr(),kne=va(),xne=es().BADNUM,Ap=af(),Sit=Q1().clearOutline,Mit=U6(),sO=zS(),Eit=eO(),kit=kd().getModuleCalcData,bne=Ca.relinkPrivateKeys,mb=Ca._,ha=Rne.exports={};Ca.extendFlat(ha,bl);ha.attributes=vl();ha.attributes.type.values=ha.allTypes;ha.fontAttrs=Su();ha.layoutAttributes=s3();var j6=_ne();ha.executeAPICommand=j6.executeAPICommand;ha.computeAPICommandBindings=j6.computeAPICommandBindings;ha.manageCommandObserver=j6.manageCommandObserver;ha.hasSimpleAPICommandBindings=j6.hasSimpleAPICommandBindings;ha.redrawText=function(e){return e=Ca.getGraphDiv(e),new Promise(function(t){setTimeout(function(){e._fullLayout&&(bl.getComponentMethod("annotations","draw")(e),bl.getComponentMethod("legend","draw")(e),bl.getComponentMethod("colorbar","draw")(e),t(ha.previousPromises(e)))},300)})};ha.resize=function(e){e=Ca.getGraphDiv(e);var t,r=new Promise(function(n,i){(!e||Ca.isHidden(e))&&i(new Error("Resize must be passed a displayed plot div element.")),e._redrawTimer&&clearTimeout(e._redrawTimer),e._resolveResize&&(t=e._resolveResize),e._resolveResize=n,e._redrawTimer=setTimeout(function(){if(!e.layout||e.layout.width&&e.layout.height||Ca.isHidden(e)){n(e);return}delete e.layout.width,delete e.layout.height;var a=e.changed;e.autoplay=!0,bl.call("relayout",e,{autosize:!0}).then(function(){e.changed=a,e._resolveResize===n&&(delete e._resolveResize,n(e))})},100)});return t&&t(r),r};ha.previousPromises=function(e){if((e._promises||[]).length)return Promise.all(e._promises).then(function(){e._promises=[]})};ha.addLinks=function(e){if(!(!e._context.showLink&&!e._context.showSources)){var t=e._fullLayout,r=Ca.ensureSingle(t._paper,"text","js-plot-link-container",function(l){l.style({"font-family":'"Open Sans", Arial, sans-serif',"font-size":"12px",fill:kne.defaultLine,"pointer-events":"all"}).each(function(){var u=Mne.select(this);u.append("tspan").classed("js-link-to-tool",!0),u.append("tspan").classed("js-link-spacer",!0),u.append("tspan").classed("js-sourcelinks",!0)})}),n=r.node(),i={y:t._paper.attr("height")-9};document.body.contains(n)&&n.getComputedTextLength()>=t.width-20?(i["text-anchor"]="start",i.x=5):(i["text-anchor"]="end",i.x=t._paper.attr("width")-7),r.attr(i);var a=r.select(".js-link-to-tool"),o=r.select(".js-link-spacer"),s=r.select(".js-sourcelinks");e._context.showSources&&e._context.showSources(e),e._context.showLink&&Cit(e,a),o.text(a.text()&&s.text()?" - ":"")}};function Cit(e,t){t.text("");var r=t.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(e._context.linkText+" \xBB");if(e._context.sendData)r.on("click",function(){ha.sendDataToCloud(e)});else{var n=window.location.pathname.split("/"),i=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+i})}}ha.sendDataToCloud=function(e){var t=(window.PLOTLYENV||{}).BASE_URL||e._context.plotlyServerURL;if(t){e.emit("plotly_beforeexport");var r=Mne.select(e).append("div").attr("id","hiddenform").style("display","none"),n=r.append("form").attr({action:t+"/external",method:"post",target:"_blank"}),i=n.append("input").attr({type:"text",name:"data"});return i.node().value=ha.graphJson(e,!1,"keepdata"),n.node().submit(),r.remove(),e.emit("plotly_afterexport"),!1}};var Lit=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],Pit=["year","month","dayMonth","dayMonthYear"];ha.supplyDefaults=function(e,t){var r=t&&t.skipUpdateCalc,n=e._fullLayout||{};if(n._skipDefaults){delete n._skipDefaults;return}var i=e._fullLayout={},a=e.layout||{},o=e._fullData||[],s=e._fullData=[],l=e.data||[],u=e.calcdata||[],c=e._context||{},f;e._transitionData||ha.createTransitionData(e),i._dfltTitle={plot:mb(e,"Click to enter Plot title"),subtitle:mb(e,"Click to enter Plot subtitle"),x:mb(e,"Click to enter X axis title"),y:mb(e,"Click to enter Y axis title"),colorbar:mb(e,"Click to enter Colorscale title"),annotation:mb(e,"new text")},i._traceWord=mb(e,"trace");var h=wne(e,Lit);if(i._mapboxAccessToken=c.mapboxAccessToken,n._initialAutoSizeIsDone){var d=n.width,v=n.height;ha.supplyLayoutGlobalDefaults(a,i,h),a.width||(i.width=d),a.height||(i.height=v),ha.sanitizeMargins(i)}else{ha.supplyLayoutGlobalDefaults(a,i,h);var x=!a.width||!a.height,b=i.autosize,g=c.autosizable,E=x&&(b||g);E?ha.plotAutoSize(e,a,i):x&&ha.sanitizeMargins(i),!b&&x&&(a.width=i.width,a.height=i.height)}i._d3locale=Dit(h,i.separators),i._extraFormat=wne(e,Pit),i._initialAutoSizeIsDone=!0,i._dataLength=l.length,i._modules=[],i._visibleModules=[],i._basePlotModules=[];var k=i._subplots=Rit(),A=i._splomAxes={x:{},y:{}},L=i._splomSubplots={};i._splomGridDflt={},i._scatterStackOpts={},i._firstScatter={},i._alignmentOpts={},i._colorAxes={},i._requestRangeslider={},i._traceUids=Iit(o,l),ha.supplyDataDefaults(l,s,a,i);var _=Object.keys(A.x),C=Object.keys(A.y);if(_.length>1&&C.length>1){for(bl.getComponentMethod("grid","sizeDefaults")(a,i),f=0;f<_.length;f++)Ca.pushUnique(k.xaxis,_[f]);for(f=0;f15&&C.length>15&&i.shapes.length===0&&i.images.length===0,ha.linkSubplots(s,i,o,n),ha.cleanPlot(s,i,o,n);var F=!!(n._has&&n._has("cartesian")),q=!!(i._has&&i._has("cartesian")),V=F,H=q;V&&!H?n._bgLayer.remove():H&&!V&&(i._shouldCreateBgLayer=!0),n._zoomlayer&&!e._dragging&&Sit({_fullLayout:n}),zit(s,i),bne(i,n),bl.getComponentMethod("colorscale","crossTraceDefaults")(s,i),i._preGUI||(i._preGUI={}),i._tracePreGUI||(i._tracePreGUI={});var X=i._tracePreGUI,G={},N;for(N in X)G[N]="old";for(f=0;f0){var c=1-2*a;o=Math.round(c*o),s=Math.round(c*s)}}var f=ha.layoutAttributes.width.min,h=ha.layoutAttributes.height.min;o1,v=!r.height&&Math.abs(n.height-s)>1;(v||d)&&(d&&(n.width=o),v&&(n.height=s)),t._initialAutoSize||(t._initialAutoSize={width:o,height:s}),ha.sanitizeMargins(n)};ha.supplyLayoutModuleDefaults=function(e,t,r,n){var i=bl.componentsRegistry,a=t._basePlotModules,o,s,l,u=bl.subplotsRegistry.cartesian;for(o in i)l=i[o],l.includeBasePlot&&l.includeBasePlot(e,t);a.length||a.push(u),t._has("cartesian")&&(bl.getComponentMethod("grid","contentDefaults")(e,t),u.finalizeSubplots(e,t));for(var c in t._subplots)t._subplots[c].sort(Ca.subplotSort);for(s=0;s1&&(r.l/=b,r.r/=b)}if(h){var g=(r.t+r.b)/h;g>1&&(r.t/=g,r.b/=g)}var E=r.xl!==void 0?r.xl:r.x,k=r.xr!==void 0?r.xr:r.x,A=r.yt!==void 0?r.yt:r.y,L=r.yb!==void 0?r.yb:r.y;d[t]={l:{val:E,size:r.l+x},r:{val:k,size:r.r+x},b:{val:L,size:r.b+x},t:{val:A,size:r.t+x}},v[t]=1}if(!n._replotting)return ha.doAutoMargin(e)}};function qit(e){if("_redrawFromAutoMarginCount"in e._fullLayout)return!1;var t=Ap.list(e,"",!0);for(var r in t)if(t[r].autoshift||t[r].shift)return!0;return!1}ha.doAutoMargin=function(e){var t=e._fullLayout,r=t.width,n=t.height;t._size||(t._size={}),Cne(t);var i=t._size,a=t.margin,o={t:0,b:0,l:0,r:0},s=Ca.extendFlat({},i),l=a.l,u=a.r,c=a.t,f=a.b,h=t._pushmargin,d=t._pushmarginIds,v=t.minreducedwidth,x=t.minreducedheight;if(a.autoexpand!==!1){for(var b in h)d[b]||delete h[b];var g=e._fullLayout._reservedMargin;for(var E in g)for(var k in g[E]){var A=g[E][k];o[k]=Math.max(o[k],A)}h.base={l:{val:0,size:l},r:{val:1,size:u},t:{val:1,size:c},b:{val:0,size:f}};for(var L in o){var _=0;for(var C in h)C!=="base"&&jS(h[C][L].size)&&(_=h[C][L].size>_?h[C][L].size:_);var M=Math.max(0,a[L]-_);o[L]=Math.max(0,o[L]-M)}for(var p in h){var P=h[p].l||{},T=h[p].b||{},F=P.val,q=P.size,V=T.val,H=T.size,X=r-o.r-o.l,G=n-o.t-o.b;for(var N in h){if(jS(q)&&h[N].r){var W=h[N].r.val,re=h[N].r.size;if(W>F){var ae=(q*W+(re-X)*F)/(W-F),_e=(re*(1-F)+(q-X)*(1-W))/(W-F);ae+_e>l+u&&(l=ae,u=_e)}}if(jS(H)&&h[N].t){var Me=h[N].t.val,ke=h[N].t.size;if(Me>V){var ge=(H*Me+(ke-G)*V)/(Me-V),ie=(ke*(1-V)+(H-G)*(1-Me))/(Me-V);ge+ie>f+c&&(f=ge,c=ie)}}}}}var Te=Ca.constrain(r-a.l-a.r,Lne,v),Ee=Ca.constrain(n-a.t-a.b,Pne,x),Ae=Math.max(0,r-Te),ze=Math.max(0,n-Ee);if(Ae){var Ce=(l+u)/Ae;Ce>1&&(l/=Ce,u/=Ce)}if(ze){var me=(f+c)/ze;me>1&&(f/=me,c/=me)}if(i.l=Math.round(l)+o.l,i.r=Math.round(u)+o.r,i.t=Math.round(c)+o.t,i.b=Math.round(f)+o.b,i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!t._replotting&&(ha.didMarginChange(s,i)||qit(e))){"_redrawFromAutoMarginCount"in t?t._redrawFromAutoMarginCount++:t._redrawFromAutoMarginCount=1;var Re=3*(1+Object.keys(d).length);if(t._redrawFromAutoMarginCount1)return!0}return!1};ha.graphJson=function(e,t,r,n,i,a){(i&&t&&!e._fullData||i&&!t&&!e._fullLayout)&&ha.supplyDefaults(e);var o=i?e._fullData:e.data,s=i?e._fullLayout:e.layout,l=(e._transitionData||{})._frames;function u(h,d){if(typeof h=="function")return d?"_function_":null;if(Ca.isPlainObject(h)){var v={},x;return Object.keys(h).sort().forEach(function(k){if(["_","["].indexOf(k.charAt(0))===-1){if(typeof h[k]=="function"){d&&(v[k]="_function");return}if(r==="keepdata"){if(k.substr(k.length-3)==="src")return}else if(r==="keepstream"){if(x=h[k+"src"],typeof x=="string"&&x.indexOf(":")>0&&!Ca.isPlainObject(h.stream))return}else if(r!=="keepall"&&(x=h[k+"src"],typeof x=="string"&&x.indexOf(":")>0))return;v[k]=u(h[k],d)}}),v}var b=Array.isArray(h),g=Ca.isTypedArray(h);if((b||g)&&h.dtype&&h.shape){var E=h.bdata;return u({dtype:h.dtype,shape:h.shape,bdata:Ca.isArrayBuffer(E)?Tit.encode(E):E},d)}return b?h.map(function(k){return u(k,d)}):g?Ca.simpleMap(h,Ca.identity):Ca.isJSDate(h)?Ca.ms2DateTimeLocal(+h):h}var c={data:(o||[]).map(function(h){var d=u(h);return t&&delete d.fit,d})};if(!t&&(c.layout=u(s),i)){var f=s._size;c.layout.computed={margin:{b:f.b,l:f.l,r:f.r,t:f.t}}}return l&&(c.frames=u(l)),a&&(c.config=u(e._context,!0)),n==="object"?c:JSON.stringify(c)};ha.modifyFrames=function(e,t){var r,n,i,a=e._transitionData._frames,o=e._transitionData._frameHash;for(r=0;r0&&(e._transitioningWithDuration=!0),e._transitionData._interruptCallbacks.push(function(){n=!0}),r.redraw&&e._transitionData._interruptCallbacks.push(function(){return bl.call("redraw",e)}),e._transitionData._interruptCallbacks.push(function(){e.emit("plotly_transitioninterrupted",[])});var h=0,d=0;function v(){return h++,function(){d++,!n&&d===h&&s(f)}}r.runFn(v),setTimeout(v())})}function s(f){if(e._transitionData)return a(e._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(r.redraw)return bl.call("redraw",e)}).then(function(){e._transitioning=!1,e._transitioningWithDuration=!1,e.emit("plotly_transitioned",[])}).then(f)}function l(){if(e._transitionData)return e._transitioning=!1,i(e._transitionData._interruptCallbacks)}var u=[ha.previousPromises,l,r.prepareFn,ha.rehover,ha.reselect,o],c=Ca.syncOrAsync(u,e);return(!c||!c.then)&&(c=Promise.resolve()),c.then(function(){return e})}ha.doCalcdata=function(e,t){var r=Ap.list(e),n=e._fullData,i=e._fullLayout,a,o,s,l,u=new Array(n.length),c=(e.calcdata||[]).slice();for(e.calcdata=u,i._numBoxes=0,i._numViolins=0,i._violinScaleGroupStats={},e._hmpixcount=0,e._hmlumcount=0,i._piecolormap={},i._sunburstcolormap={},i._treemapcolormap={},i._iciclecolormap={},i._funnelareacolormap={},s=0;s=0;l--)if(L[l].enabled){a._indexToPoints=L[l]._indexToPoints;break}o&&o.calc&&(A=o.calc(e,a))}(!Array.isArray(A)||!A[0])&&(A=[{x:xne,y:xne}]),A[0].t||(A[0].t={}),A[0].trace=a,u[E]=A}}for(Ane(r,n,i),s=0;s{"use strict";yb.xmlns="http://www.w3.org/2000/xmlns/";yb.svg="http://www.w3.org/2000/svg";yb.xlink="http://www.w3.org/1999/xlink";yb.svgAttrs={xmlns:yb.svg,"xmlns:xlink":yb.xlink}});var Nh=ye((Ftr,Dne)=>{"use strict";Dne.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}});var Ll=ye(b0=>{"use strict";var vh=xa(),Ty=Mr(),Uit=Ty.strTranslate,lO=Zp(),Vit=Nh().LINE_SPACING,Hit=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;b0.convertToTspans=function(e,t,r){var n=e.text(),i=!e.attr("data-notex")&&t&&t._context.typesetMath&&typeof MathJax!="undefined"&&n.match(Hit),a=vh.select(e.node().parentNode);if(a.empty())return;var o=e.attr("class")?e.attr("class").split(" ")[0]:"text";o+="-math",a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove(),e.style("display",null).attr({"data-unformatted":n,"data-math":"N"});function s(){a.empty()||(o=e.attr("class")+"-math",a.select("svg."+o).remove()),e.text("").style("white-space","pre");var l=rnt(e.node(),n);l&&e.style("pointer-events","all"),b0.positionText(e),r&&r.call(e)}return i?(t&&t._promises||[]).push(new Promise(function(l){e.style("display","none");var u=parseInt(e.node().style.fontSize,10),c={fontSize:u};Zit(i[2],c,function(f,h,d){a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove();var v=f&&f.select("svg");if(!v||!v.node()){s(),l();return}var x=a.append("g").classed(o+"-group",!0).attr({"pointer-events":"none","data-unformatted":n,"data-math":"Y"});x.node().appendChild(v.node()),h&&h.node()&&v.node().insertBefore(h.node().cloneNode(!0),v.node().firstChild);var b=d.width,g=d.height;v.attr({class:o,height:g,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var E=e.node().style.fill||"black",k=v.select("g");k.attr({fill:E,stroke:E});var A=k.node().getBoundingClientRect(),L=A.width,_=A.height;(L>b||_>g)&&(v.style("overflow","hidden"),A=v.node().getBoundingClientRect(),L=A.width,_=A.height);var C=+e.attr("x"),M=+e.attr("y"),p=u||e.node().getBoundingClientRect().height,P=-p/4;if(o[0]==="y")x.attr({transform:"rotate("+[-90,C,M]+")"+Uit(-L/2,P-_/2)});else if(o[0]==="l")M=P-_/2;else if(o[0]==="a"&&o.indexOf("atitle")!==0)C=0,M=P;else{var T=e.attr("text-anchor");C=C-L*(T==="middle"?.5:T==="end"?1:0),M=M+P-_/2}v.attr({x:C,y:M}),r&&r.call(e,x),l(x)})})):s(),e};var Git=/(<|<|<)/g,jit=/(>|>|>)/g;function Wit(e){return e.replace(Git,"\\lt ").replace(jit,"\\gt ")}var zne=[["$","$"],["\\(","\\)"]];function Zit(e,t,r){var n=parseInt((MathJax.version||"").split(".")[0]);if(n!==2&&n!==3){Ty.warn("No MathJax version:",MathJax.version);return}var i,a,o,s,l=function(){return a=Ty.extendDeepAll({},MathJax.Hub.config),o=MathJax.Hub.processSectionDelay,MathJax.Hub.processSectionDelay!==void 0&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:zne},displayAlign:"left"})},u=function(){a=Ty.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=zne},c=function(){if(i=MathJax.Hub.config.menuSettings.renderer,i!=="SVG")return MathJax.Hub.setRenderer("SVG")},f=function(){i=MathJax.config.startup.output,i!=="svg"&&(MathJax.config.startup.output="svg")},h=function(){var E="math-output-"+Ty.randstr({},64);s=vh.select("body").append("div").attr({id:E}).style({visibility:"hidden",position:"absolute","font-size":t.fontSize+"px"}).text(Wit(e));var k=s.node();return n===2?MathJax.Hub.Typeset(k):MathJax.typeset([k])},d=function(){var E=s.select(n===2?".MathJax_SVG":".MathJax"),k=!E.empty()&&s.select("svg").node();if(!k)Ty.log("There was an error in the tex syntax.",e),r();else{var A=k.getBoundingClientRect(),L;n===2?L=vh.select("body").select("#MathJax_SVG_glyphs"):L=E.select("defs"),r(E,L,A)}s.remove()},v=function(){if(i!=="SVG")return MathJax.Hub.setRenderer(i)},x=function(){i!=="svg"&&(MathJax.config.startup.output=i)},b=function(){return o!==void 0&&(MathJax.Hub.processSectionDelay=o),MathJax.Hub.Config(a)},g=function(){MathJax.config=a};n===2?MathJax.Hub.Queue(l,c,h,d,v,b):n===3&&(u(),f(),MathJax.startup.defaultReady(),MathJax.startup.promise.then(function(){h(),d(),x(),g()}))}var Bne={sup:"font-size:70%",sub:"font-size:70%",s:"text-decoration:line-through",u:"text-decoration:underline",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},Xit={sub:"0.3em",sup:"-0.6em"},Yit={sub:"-0.21em",sup:"0.42em"},Fne="\u200B",qne=["http:","https:","mailto:","",void 0,":"],Nne=b0.NEWLINES=/(\r\n?|\n)/g,cO=/(<[^<>]*>)/,fO=/<(\/?)([^ >]*)(\s+(.*))?>/i,Kit=//i;b0.BR_TAG_ALL=//gi;var Une=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,Vne=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,Hne=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,Jit=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function _b(e,t){if(!e)return null;var r=e.match(t),n=r&&(r[3]||r[4]);return n&&W6(n)}var $it=/(^|;)\s*color:/;b0.plainText=function(e,t){t=t||{};for(var r=t.len!==void 0&&t.len!==-1?t.len:1/0,n=t.allowedTags!==void 0?t.allowedTags:["br"],i="...",a=i.length,o=e.split(cO),s=[],l="",u=0,c=0;ca?s.push(f.substr(0,x-a)+i):s.push(f.substr(0,x));break}l=""}}return s.join("")};var Qit={mu:"\u03BC",amp:"&",lt:"<",gt:">",nbsp:"\xA0",times:"\xD7",plusmn:"\xB1",deg:"\xB0"},ent=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function W6(e){return e.replace(ent,function(t,r){var n;return r.charAt(0)==="#"?n=tnt(r.charAt(1)==="x"?parseInt(r.substr(2),16):parseInt(r.substr(1),10)):n=Qit[r],n||t})}b0.convertEntities=W6;function tnt(e){if(!(e>1114111)){var t=String.fromCodePoint;if(t)return t(e);var r=String.fromCharCode;return e<=65535?r(e):r((e>>10)+55232,e%1024+56320)}}function rnt(e,t){t=t.replace(Nne," ");var r=!1,n=[],i,a=-1;function o(){a++;var _=document.createElementNS(lO.svg,"tspan");vh.select(_).attr({class:"line",dy:a*Vit+"em"}),e.appendChild(_),i=_;var C=n;if(n=[{node:_}],C.length>1)for(var M=1;M.",t);return}var C=n.pop();_!==C.type&&Ty.log("Start tag <"+C.type+"> doesnt match end tag <"+_+">. Pretending it did match.",t),i=n[n.length-1].node}var c=Kit.test(t);c?o():(i=e,n=[{node:e}]);for(var f=t.split(cO),h=0;h{"use strict";var int=xa(),X6=id(),ZS=uo(),Z6=Mr(),jne=va(),nnt=sb().isValid;function ant(e,t,r){var n=t?Z6.nestedProperty(e,t).get()||{}:e,i=n[r||"color"];i&&i._inputArray&&(i=i._inputArray);var a=!1;if(Z6.isArrayOrTypedArray(i)){for(var o=0;o=0;n--,i++){var a=e[n];r[i]=[1-a[0],a[1]]}return r}function Jne(e,t){t=t||{};for(var r=e.domain,n=e.range,i=n.length,a=new Array(i),o=0;o{"use strict";var Qne=Iq(),snt=Qne.FORMAT_LINK,lnt=Qne.DATE_FORMAT_LINK;function unt(e,t){return{valType:"string",dflt:"",editType:"none",description:(t?hO:eae)("hover text",e)+["By default the values are formatted using "+(t?"generic number format":"`"+e+"axis.hoverformat`")+"."].join(" ")}}function hO(e,t){return["Sets the "+e+" formatting rule"+(t?"for `"+t+"` ":""),"using d3 formatting mini-languages","which are very similar to those in Python. For numbers, see: "+snt+"."].join(" ")}function eae(e,t){return hO(e,t)+[" And for dates see: "+lnt+".","We add two items to d3's date formatter:","*%h* for half of the year as a decimal number as well as","*%{n}f* for fractional seconds","with n digits. For example, *2016-10-13 09:15:23.456* with tickformat","*%H~%M~%S.%2f* would display *09~15~23.46*"].join(" ")}tae.exports={axisHoverFormat:unt,descriptionOnlyNumbers:hO,descriptionWithDates:eae}});var Cd=ye((Ntr,yae)=>{"use strict";var rae=Su(),w3=dh(),mae=Ed().dash,vO=no().extendFlat,iae=Vs().templatedArray,nae=Oc().descriptionWithDates,cnt=es().ONEDAY,pm=ad(),fnt=pm.HOUR_PATTERN,hnt=pm.WEEKDAY_PATTERN,dO={valType:"enumerated",values:["auto","linear","array"],editType:"ticks",impliedEdits:{tick0:void 0,dtick:void 0}},dnt=vO({},dO,{values:dO.values.slice().concat(["sync"])});function aae(e){return{valType:"integer",min:0,dflt:e?5:0,editType:"ticks"}}var oae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},sae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},lae={valType:"data_array",editType:"ticks"},uae={valType:"enumerated",values:["outside","inside",""],editType:"ticks"};function cae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=5),t}function fae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var hae={valType:"color",dflt:w3.defaultLine,editType:"ticks"},dae={valType:"color",dflt:w3.lightLine,editType:"ticks"};function vae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var pae=vO({},mae,{editType:"ticks"}),gae={valType:"boolean",editType:"ticks"};yae.exports={visible:{valType:"boolean",editType:"plot"},color:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},title:{text:{valType:"string",editType:"ticks"},font:rae({editType:"ticks"}),standoff:{valType:"number",min:0,editType:"ticks"},editType:"ticks"},type:{valType:"enumerated",values:["-","linear","log","date","category","multicategory"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},autorange:{valType:"enumerated",values:[!0,!1,"reversed","min reversed","max reversed","min","max"],dflt:!0,editType:"axrange",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},autorangeoptions:{minallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmin:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmax:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},include:{valType:"any",arrayOk:!0,editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},editType:"plot"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"plot"},range:{valType:"info_array",items:[{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0},{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0}],editType:"axrange",impliedEdits:{autorange:!1},anim:!0},minallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},insiderange:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},scaleanchor:{valType:"enumerated",values:[pm.idRegex.x.toString(),pm.idRegex.y.toString(),!1],editType:"plot"},scaleratio:{valType:"number",min:0,dflt:1,editType:"plot"},constrain:{valType:"enumerated",values:["range","domain"],editType:"plot"},constraintoward:{valType:"enumerated",values:["left","center","right","top","middle","bottom"],editType:"plot"},matches:{valType:"enumerated",values:[pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"calc"},rangebreaks:iae("rangebreak",{enabled:{valType:"boolean",dflt:!0,editType:"calc"},bounds:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},pattern:{valType:"enumerated",values:[hnt,fnt,""],editType:"calc"},values:{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"any",editType:"calc"}},dvalue:{valType:"number",editType:"calc",min:0,dflt:cnt},editType:"calc"}),tickmode:dnt,nticks:aae(),tick0:oae,dtick:sae,ticklabelstep:{valType:"integer",min:1,dflt:1,editType:"ticks"},tickvals:lae,ticktext:{valType:"data_array",editType:"ticks"},ticks:uae,tickson:{valType:"enumerated",values:["labels","boundaries"],dflt:"labels",editType:"ticks"},ticklabelmode:{valType:"enumerated",values:["instant","period"],dflt:"instant",editType:"ticks"},ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside",editType:"calc"},ticklabeloverflow:{valType:"enumerated",values:["allow","hide past div","hide past domain"],editType:"calc"},ticklabelshift:{valType:"integer",dflt:0,editType:"ticks"},ticklabelstandoff:{valType:"integer",dflt:0,editType:"ticks"},ticklabelindex:{valType:"integer",arrayOk:!0,editType:"calc"},mirror:{valType:"enumerated",values:[!0,"ticks",!1,"all","allticks"],dflt:!1,editType:"ticks+layoutstyle"},ticklen:cae(),tickwidth:fae(),tickcolor:hae,showticklabels:{valType:"boolean",dflt:!0,editType:"ticks"},labelalias:{valType:"any",dflt:!1,editType:"ticks"},automargin:{valType:"flaglist",flags:["height","width","left","right","top","bottom"],extras:[!0,!1],dflt:!1,editType:"ticks"},showspikes:{valType:"boolean",dflt:!1,editType:"modebar"},spikecolor:{valType:"color",dflt:null,editType:"none"},spikethickness:{valType:"number",dflt:3,editType:"none"},spikedash:vO({},mae,{dflt:"dash",editType:"none"}),spikemode:{valType:"flaglist",flags:["toaxis","across","marker"],dflt:"toaxis",editType:"none"},spikesnap:{valType:"enumerated",values:["data","cursor","hovered data"],dflt:"hovered data",editType:"none"},tickfont:rae({editType:"ticks"}),tickangle:{valType:"angle",dflt:"auto",editType:"ticks"},autotickangles:{valType:"info_array",freeLength:!0,items:{valType:"angle"},dflt:[0,30,90],editType:"ticks"},tickprefix:{valType:"string",dflt:"",editType:"ticks"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},ticksuffix:{valType:"string",dflt:"",editType:"ticks"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B"],dflt:"B",editType:"ticks"},minexponent:{valType:"number",dflt:3,min:0,editType:"ticks"},separatethousands:{valType:"boolean",dflt:!1,editType:"ticks"},tickformat:{valType:"string",dflt:"",editType:"ticks",description:nae("tick label")},tickformatstops:iae("tickformatstop",{enabled:{valType:"boolean",dflt:!0,editType:"ticks"},dtickrange:{valType:"info_array",items:[{valType:"any",editType:"ticks"},{valType:"any",editType:"ticks"}],editType:"ticks"},value:{valType:"string",dflt:"",editType:"ticks"},editType:"ticks"}),hoverformat:{valType:"string",dflt:"",editType:"none",description:nae("hover text")},showline:{valType:"boolean",dflt:!1,editType:"ticks+layoutstyle"},linecolor:{valType:"color",dflt:w3.defaultLine,editType:"layoutstyle"},linewidth:{valType:"number",min:0,dflt:1,editType:"ticks+layoutstyle"},showgrid:gae,gridcolor:dae,gridwidth:vae(),griddash:pae,zeroline:{valType:"boolean",editType:"ticks"},zerolinecolor:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},zerolinewidth:{valType:"number",dflt:1,editType:"ticks"},showdividers:{valType:"boolean",dflt:!0,editType:"ticks"},dividercolor:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},dividerwidth:{valType:"number",dflt:1,editType:"ticks"},anchor:{valType:"enumerated",values:["free",pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"plot"},side:{valType:"enumerated",values:["top","bottom","left","right"],editType:"plot"},overlaying:{valType:"enumerated",values:["free",pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"plot"},minor:{tickmode:dO,nticks:aae("minor"),tick0:oae,dtick:sae,tickvals:lae,ticks:uae,ticklen:cae("minor"),tickwidth:fae("minor"),tickcolor:hae,gridcolor:dae,gridwidth:vae("minor"),griddash:pae,showgrid:gae,editType:"ticks"},layer:{valType:"enumerated",values:["above traces","below traces"],dflt:"above traces",editType:"plot"},domain:{valType:"info_array",items:[{valType:"number",min:0,max:1,editType:"plot"},{valType:"number",min:0,max:1,editType:"plot"}],dflt:[0,1],editType:"plot"},position:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},autoshift:{valType:"boolean",dflt:!1,editType:"plot"},shift:{valType:"number",editType:"plot"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array","total ascending","total descending","min ascending","min descending","max ascending","max descending","sum ascending","sum descending","mean ascending","mean descending","geometric mean ascending","geometric mean descending","median ascending","median descending"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var Y6=ye((Utr,bae)=>{"use strict";var Ac=Cd(),_ae=Su(),xae=no().extendFlat,vnt=Bu().overrideAll;bae.exports=vnt({orientation:{valType:"enumerated",values:["h","v"],dflt:"v"},thicknessmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels"},thickness:{valType:"number",min:0,dflt:30},lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["left","center","right"]},xpad:{valType:"number",min:0,dflt:10},y:{valType:"number"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},ypad:{valType:"number",min:0,dflt:10},outlinecolor:Ac.linecolor,outlinewidth:Ac.linewidth,bordercolor:Ac.linecolor,borderwidth:{valType:"number",min:0,dflt:0},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},tickmode:Ac.minor.tickmode,nticks:Ac.nticks,tick0:Ac.tick0,dtick:Ac.dtick,tickvals:Ac.tickvals,ticktext:Ac.ticktext,ticks:xae({},Ac.ticks,{dflt:""}),ticklabeloverflow:xae({},Ac.ticklabeloverflow,{}),ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside"},ticklen:Ac.ticklen,tickwidth:Ac.tickwidth,tickcolor:Ac.tickcolor,ticklabelstep:Ac.ticklabelstep,showticklabels:Ac.showticklabels,labelalias:Ac.labelalias,tickfont:_ae({}),tickangle:Ac.tickangle,tickformat:Ac.tickformat,tickformatstops:Ac.tickformatstops,tickprefix:Ac.tickprefix,showtickprefix:Ac.showtickprefix,ticksuffix:Ac.ticksuffix,showticksuffix:Ac.showticksuffix,separatethousands:Ac.separatethousands,exponentformat:Ac.exponentformat,minexponent:Ac.minexponent,showexponent:Ac.showexponent,title:{text:{valType:"string"},font:_ae({}),side:{valType:"enumerated",values:["right","top","bottom"]}}},"colorbars","from-root")});var Kl=ye((Htr,Tae)=>{"use strict";var pnt=Y6(),gnt=n3().counter,mnt=X1(),wae=sb().scales,Vtr=mnt(wae);function K6(e){return"`"+e+"`"}Tae.exports=function(t,r){t=t||"",r=r||{};var n=r.cLetter||"c",i="onlyIfNumerical"in r?r.onlyIfNumerical:!!t,a="noScale"in r?r.noScale:t==="marker.line",o="showScaleDflt"in r?r.showScaleDflt:n==="z",s=typeof r.colorscaleDflt=="string"?wae[r.colorscaleDflt]:null,l=r.editTypeOverride||"",u=t?t+".":"",c,f;"colorAttr"in r?(c=r.colorAttr,f=r.colorAttr):(c={z:"z",c:"color"}[n],f="in "+K6(u+c));var h=i?" Has an effect only if "+f+" is set to a numerical array.":"",d=n+"auto",v=n+"min",x=n+"max",b=n+"mid",g=K6(u+d),E=K6(u+v),k=K6(u+x),A=E+" and "+k,L={};L[v]=L[x]=void 0;var _={};_[d]=!1;var C={};return c==="color"&&(C.color={valType:"color",arrayOk:!0,editType:l||"style"},r.anim&&(C.color.anim=!0)),C[d]={valType:"boolean",dflt:!0,editType:"calc",impliedEdits:L},C[v]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:_},C[x]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:_},C[b]={valType:"number",dflt:null,editType:"calc",impliedEdits:L},C.colorscale={valType:"colorscale",editType:"calc",dflt:s,impliedEdits:{autocolorscale:!1}},C.autocolorscale={valType:"boolean",dflt:r.autoColorDflt!==!1,editType:"calc",impliedEdits:{colorscale:void 0}},C.reversescale={valType:"boolean",dflt:!1,editType:"plot"},a||(C.showscale={valType:"boolean",dflt:o,editType:"calc"},C.colorbar=pnt),r.noColorAxis||(C.coloraxis={valType:"subplotid",regex:gnt("coloraxis"),dflt:null,editType:"calc"}),C}});var gO=ye((Gtr,Aae)=>{"use strict";var ynt=no().extendFlat,_nt=Kl(),pO=sb().scales;Aae.exports={editType:"calc",colorscale:{editType:"calc",sequential:{valType:"colorscale",dflt:pO.Reds,editType:"calc"},sequentialminus:{valType:"colorscale",dflt:pO.Blues,editType:"calc"},diverging:{valType:"colorscale",dflt:pO.RdBu,editType:"calc"}},coloraxis:ynt({_isSubplotObj:!0,editType:"calc"},_nt("",{colorAttr:"corresponding trace color array(s)",noColorAxis:!0,showScaleDflt:!0}))}});var mO=ye((jtr,Sae)=>{"use strict";var xnt=Mr();Sae.exports=function(t){return xnt.isPlainObject(t.colorbar)}});var xO=ye(_O=>{"use strict";var yO=uo(),Mae=Mr(),Eae=es(),bnt=Eae.ONEDAY,wnt=Eae.ONEWEEK;_O.dtick=function(e,t){var r=t==="log",n=t==="date",i=t==="category",a=n?bnt:1;if(!e)return a;if(yO(e))return e=Number(e),e<=0?a:i?Math.max(1,Math.round(e)):n?Math.max(.1,e):e;if(typeof e!="string"||!(n||r))return a;var o=e.charAt(0),s=e.substr(1);return s=yO(s)?Number(s):0,s<=0||!(n&&o==="M"&&s===Math.round(s)||r&&o==="L"||r&&o==="D"&&(s===1||s===2))?a:e};_O.tick0=function(e,t,r,n){if(t==="date")return Mae.cleanDate(e,Mae.dateTick0(r,n%wnt===0?1:0));if(!(n==="D1"||n==="D2"))return yO(e)?Number(e):0}});var xb=ye((Ztr,Cae)=>{"use strict";var kae=xO(),Tnt=Mr().isArrayOrTypedArray,Ant=vv().isTypedArraySpec,Snt=vv().decodeTypedArraySpec;Cae.exports=function(t,r,n,i,a){a||(a={});var o=a.isMinor,s=o?t.minor||{}:t,l=o?r.minor:r,u=o?"minor.":"";function c(E){var k=s[E];return Ant(k)&&(k=Snt(k)),k!==void 0?k:(l._template||{})[E]}var f=c("tick0"),h=c("dtick"),d=c("tickvals"),v=Tnt(d)?"array":h?"linear":"auto",x=n(u+"tickmode",v);if(x==="auto"||x==="sync")n(u+"nticks");else if(x==="linear"){var b=l.dtick=kae.dtick(h,i);l.tick0=kae.tick0(f,i,r.calendar,b)}else if(i!=="multicategory"){var g=n(u+"tickvals");g===void 0?l.tickmode="auto":o||n("ticktext")}}});var T3=ye((Xtr,Pae)=>{"use strict";var bO=Mr(),Lae=Cd();Pae.exports=function(t,r,n,i){var a=i.isMinor,o=a?t.minor||{}:t,s=a?r.minor:r,l=a?Lae.minor:Lae,u=a?"minor.":"",c=bO.coerce2(o,s,l,"ticklen",a?(r.ticklen||5)*.6:void 0),f=bO.coerce2(o,s,l,"tickwidth",a?r.tickwidth||1:void 0),h=bO.coerce2(o,s,l,"tickcolor",(a?r.tickcolor:void 0)||s.color),d=n(u+"ticks",!a&&i.outerTicks||c||f||h?"outside":"");d||(delete s.ticklen,delete s.tickwidth,delete s.tickcolor)}});var wO=ye((Ytr,Iae)=>{"use strict";Iae.exports=function(t){var r=["showexponent","showtickprefix","showticksuffix"],n=r.filter(function(a){return t[a]!==void 0}),i=function(a){return t[a]===t[n[0]]};if(n.every(i)||n.length===1)return t[n[0]]}});var Zd=ye((Ktr,Rae)=>{"use strict";var J6=Mr(),Mnt=Vs();Rae.exports=function(t,r,n){var i=n.name,a=n.inclusionAttr||"visible",o=r[i],s=J6.isArrayOrTypedArray(t[i])?t[i]:[],l=r[i]=[],u=Mnt.arrayTemplater(r,i,a),c,f;for(c=0;c{"use strict";var TO=Mr(),Ent=va().contrast,Dae=Cd(),knt=wO(),Cnt=Zd();zae.exports=function(t,r,n,i,a){a||(a={});var o=n("labelalias");TO.isPlainObject(o)||delete r.labelalias;var s=knt(t),l=n("showticklabels");if(l){a.noTicklabelshift||n("ticklabelshift"),a.noTicklabelstandoff||n("ticklabelstandoff");var u=a.font||{},c=r.color,f=r.ticklabelposition||"",h=f.indexOf("inside")!==-1?Ent(a.bgColor):c&&c!==Dae.color.dflt?c:u.color;if(TO.coerceFont(n,"tickfont",u,{overrideDflt:{color:h}}),!a.noTicklabelstep&&i!=="multicategory"&&i!=="log"&&n("ticklabelstep"),!a.noAng){var d=n("tickangle");!a.noAutotickangles&&d==="auto"&&n("autotickangles")}if(i!=="category"){var v=n("tickformat");Cnt(t,r,{name:"tickformatstops",inclusionAttr:"enabled",handleItemDefaults:Lnt}),r.tickformatstops.length||delete r.tickformatstops,!a.noExp&&!v&&i!=="date"&&(n("showexponent",s),n("exponentformat"),n("minexponent"),n("separatethousands"))}}};function Lnt(e,t){function r(i,a){return TO.coerce(e,t,Dae.tickformatstops,i,a)}var n=r("enabled");n&&(r("dtickrange"),r("value"))}});var t_=ye(($tr,Fae)=>{"use strict";var Pnt=wO();Fae.exports=function(t,r,n,i,a){a||(a={});var o=a.tickSuffixDflt,s=Pnt(t),l=n("tickprefix");l&&n("showtickprefix",s);var u=n("ticksuffix",o);u&&n("showticksuffix",s)}});var AO=ye((Qtr,qae)=>{"use strict";var r_=Mr(),Int=Vs(),Rnt=xb(),Dnt=T3(),znt=e_(),Fnt=t_(),qnt=Y6();qae.exports=function(t,r,n){var i=Int.newContainer(r,"colorbar"),a=t.colorbar||{};function o(T,F){return r_.coerce(a,i,qnt,T,F)}var s=n.margin||{t:0,b:0,l:0,r:0},l=n.width-s.l-s.r,u=n.height-s.t-s.b,c=o("orientation"),f=c==="v",h=o("thicknessmode");o("thickness",h==="fraction"?30/(f?l:u):30);var d=o("lenmode");o("len",d==="fraction"?1:f?u:l);var v=o("yref"),x=o("xref"),b=v==="paper",g=x==="paper",E,k,A,L="left";f?(A="middle",L=g?"left":"right",E=g?1.02:1,k=.5):(A=b?"bottom":"top",L="center",E=.5,k=b?1.02:1),r_.coerce(a,i,{x:{valType:"number",min:g?-2:0,max:g?3:1,dflt:E}},"x"),r_.coerce(a,i,{y:{valType:"number",min:b?-2:0,max:b?3:1,dflt:k}},"y"),o("xanchor",L),o("xpad"),o("yanchor",A),o("ypad"),r_.noneOrAll(a,i,["x","y"]),o("outlinecolor"),o("outlinewidth"),o("bordercolor"),o("borderwidth"),o("bgcolor");var _=r_.coerce(a,i,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:f?["outside","inside","outside top","inside top","outside bottom","inside bottom"]:["outside","inside","outside left","inside left","outside right","inside right"]}},"ticklabelposition");o("ticklabeloverflow",_.indexOf("inside")!==-1?"hide past domain":"hide past div"),Rnt(a,i,o,"linear");var C=n.font,M={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,outerTicks:!1,font:C};_.indexOf("inside")!==-1&&(M.bgColor="black"),Fnt(a,i,o,"linear",M),znt(a,i,o,"linear",M),Dnt(a,i,o,"linear",M),o("title.text",n._dfltTitle.colorbar);var p=i.showticklabels?i.tickfont:C,P=r_.extendFlat({},C,{family:p.family,size:r_.bigFont(p.size)});r_.coerceFont(o,"title.font",P),o("title.side",f?"top":"right")}});var Uh=ye((err,Nae)=>{"use strict";var Oae=uo(),MO=Mr(),Ont=mO(),Bnt=AO(),Bae=sb().isValid,Nnt=ba().traceIs;function SO(e,t){var r=t.slice(0,t.length-1);return t?MO.nestedProperty(e,r).get()||{}:e}Nae.exports=function e(t,r,n,i,a){var o=a.prefix,s=a.cLetter,l="_module"in r,u=SO(t,o),c=SO(r,o),f=SO(r._template||{},o)||{},h=function(){return delete t.coloraxis,delete r.coloraxis,e(t,r,n,i,a)};if(l){var d=n._colorAxes||{},v=i(o+"coloraxis");if(v){var x=Nnt(r,"contour")&&MO.nestedProperty(r,"contours.coloring").get()||"heatmap",b=d[v];b?(b[2].push(h),b[0]!==x&&(b[0]=!1,MO.warn(["Ignoring coloraxis:",v,"setting","as it is linked to incompatible colorscales."].join(" ")))):d[v]=[x,r,[h]];return}}var g=u[s+"min"],E=u[s+"max"],k=Oae(g)&&Oae(E)&&g{"use strict";var Uae=Mr(),Unt=Vs(),Vae=gO(),Vnt=Uh();Hae.exports=function(t,r){function n(f,h){return Uae.coerce(t,r,Vae,f,h)}n("colorscale.sequential"),n("colorscale.sequentialminus"),n("colorscale.diverging");var i=r._colorAxes,a,o;function s(f,h){return Uae.coerce(a,o,Vae.coloraxis,f,h)}for(var l in i){var u=i[l];if(u[0])a=t[l]||{},o=Unt.newContainer(r,l,"coloraxis"),o._name=l,Vnt(a,o,r,s,{prefix:"",cLetter:"c"});else{for(var c=0;c{"use strict";var Hnt=Mr(),Gnt=Dv().hasColorscale,jnt=Dv().extractOpts;jae.exports=function(t,r){function n(c,f){var h=c["_"+f];h!==void 0&&(c[f]=h)}function i(c,f){var h=f.container?Hnt.nestedProperty(c,f.container).get():c;if(h)if(h.coloraxis)h._colorAx=r[h.coloraxis];else{var d=jnt(h),v=d.auto;(v||d.min===void 0)&&n(h,f.min),(v||d.max===void 0)&&n(h,f.max),d.autocolorscale&&n(h,"colorscale")}}for(var a=0;a{"use strict";var Zae=uo(),EO=Mr(),Wnt=Dv().extractOpts;Xae.exports=function(t,r,n){var i=t._fullLayout,a=n.vals,o=n.containerStr,s=o?EO.nestedProperty(r,o).get():r,l=Wnt(s),u=l.auto!==!1,c=l.min,f=l.max,h=l.mid,d=function(){return EO.aggNums(Math.min,null,a)},v=function(){return EO.aggNums(Math.max,null,a)};if(c===void 0?c=d():u&&(s._colorAx&&Zae(c)?c=Math.min(c,d()):c=d()),f===void 0?f=v():u&&(s._colorAx&&Zae(f)?f=Math.max(f,v()):f=v()),u&&h!==void 0&&(f-h>h-c?c=h-(f-h):f-h=0?x=i.colorscale.sequential:x=i.colorscale.sequentialminus,l._sync("colorscale",x)}}});var Mu=ye((nrr,Yae)=>{"use strict";var $6=sb(),A3=Dv();Yae.exports={moduleType:"component",name:"colorscale",attributes:Kl(),layoutAttributes:gO(),supplyLayoutDefaults:Gae(),handleDefaults:Uh(),crossTraceDefaults:Wae(),calc:zv(),scales:$6.scales,defaultScale:$6.defaultScale,getScale:$6.get,isValidScale:$6.isValid,hasColorscale:A3.hasColorscale,extractOpts:A3.extractOpts,extractScale:A3.extractScale,flipScale:A3.flipScale,makeColorScaleFunc:A3.makeColorScaleFunc,makeColorScaleFuncFromTrace:A3.makeColorScaleFuncFromTrace}});var lu=ye((arr,Jae)=>{"use strict";var Kae=Mr(),Znt=vv().isTypedArraySpec;Jae.exports={hasLines:function(e){return e.visible&&e.mode&&e.mode.indexOf("lines")!==-1},hasMarkers:function(e){return e.visible&&(e.mode&&e.mode.indexOf("markers")!==-1||e.type==="splom")},hasText:function(e){return e.visible&&e.mode&&e.mode.indexOf("text")!==-1},isBubble:function(e){var t=e.marker;return Kae.isPlainObject(t)&&(Kae.isArrayOrTypedArray(t.size)||Znt(t.size))}}});var S3=ye((orr,$ae)=>{"use strict";var Xnt=uo();$ae.exports=function(t,r){r||(r=2);var n=t.marker,i=n.sizeref||1,a=n.sizemin||0,o=n.sizemode==="area"?function(s){return Math.sqrt(s/i)}:function(s){return s/i};return function(s){var l=o(s/r);return Xnt(l)&&l>0?Math.max(l,a):0}}});var rp=ye(pv=>{"use strict";var Qae=Mr();pv.getSubplot=function(e){return e.subplot||e.xaxis+e.yaxis||e.geo};pv.isTraceInSubplots=function(e,t){if(e.type==="splom"){for(var r=e.xaxes||[],n=e.yaxes||[],i=0;i=0&&r.index{roe.exports=Qnt;var kO={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},$nt=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function Qnt(e){var t=[];return e.replace($nt,function(r,n,i){var a=n.toLowerCase();for(i=tat(i),a=="m"&&i.length>2&&(t.push([n].concat(i.splice(0,2))),a="l",n=n=="m"?"l":"L");;){if(i.length==kO[a])return i.unshift(n),t.push(i);if(i.length{"use strict";var rat=XS(),Yn=function(e,t){return t?Math.round(e*(t=Math.pow(10,t)))/t:Math.round(e)},ts="M0,0Z",ioe=Math.sqrt(2),i_=Math.sqrt(3),CO=Math.PI,LO=Math.cos,PO=Math.sin;loe.exports={circle:{n:0,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i="M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z";return r?is(t,r,i):i}},square:{n:1,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")}},diamond:{n:2,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"Z")}},cross:{n:3,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.4,2),i=Yn(e*1.2,2);return is(t,r,"M"+i+","+n+"H"+n+"V"+i+"H-"+n+"V"+n+"H-"+i+"V-"+n+"H-"+n+"V-"+i+"H"+n+"V-"+n+"H"+i+"Z")}},x:{n:4,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.8/ioe,2),i="l"+n+","+n,a="l"+n+",-"+n,o="l-"+n+",-"+n,s="l-"+n+","+n;return is(t,r,"M0,"+n+i+a+o+a+o+s+o+s+i+s+i+"Z")}},"triangle-up":{n:5,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/i_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+n+","+i+"H"+n+"L0,-"+a+"Z")}},"triangle-down":{n:6,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/i_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+n+",-"+i+"H"+n+"L0,"+a+"Z")}},"triangle-left":{n:7,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/i_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M"+i+",-"+n+"V"+n+"L-"+a+",0Z")}},"triangle-right":{n:8,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/i_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+i+",-"+n+"V"+n+"L"+a+",0Z")}},"triangle-ne":{n:9,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M-"+i+",-"+n+"H"+n+"V"+i+"Z")}},"triangle-se":{n:10,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M"+n+",-"+i+"V"+n+"H-"+i+"Z")}},"triangle-sw":{n:11,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M"+i+","+n+"H-"+n+"V-"+i+"Z")}},"triangle-nw":{n:12,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M-"+n+","+i+"V-"+n+"H"+i+"Z")}},pentagon:{n:13,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.951,2),i=Yn(e*.588,2),a=Yn(-e,2),o=Yn(e*-.309,2),s=Yn(e*.809,2);return is(t,r,"M"+n+","+o+"L"+i+","+s+"H-"+i+"L-"+n+","+o+"L0,"+a+"Z")}},hexagon:{n:14,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/2,2),a=Yn(e*i_/2,2);return is(t,r,"M"+a+",-"+i+"V"+i+"L0,"+n+"L-"+a+","+i+"V-"+i+"L0,-"+n+"Z")}},hexagon2:{n:15,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/2,2),a=Yn(e*i_/2,2);return is(t,r,"M-"+i+","+a+"H"+i+"L"+n+",0L"+i+",-"+a+"H-"+i+"L-"+n+",0Z")}},octagon:{n:16,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.924,2),i=Yn(e*.383,2);return is(t,r,"M-"+i+",-"+n+"H"+i+"L"+n+",-"+i+"V"+i+"L"+i+","+n+"H-"+i+"L-"+n+","+i+"V-"+i+"Z")}},star:{n:17,f:function(e,t,r){if(rs(t))return ts;var n=e*1.4,i=Yn(n*.225,2),a=Yn(n*.951,2),o=Yn(n*.363,2),s=Yn(n*.588,2),l=Yn(-n,2),u=Yn(n*-.309,2),c=Yn(n*.118,2),f=Yn(n*.809,2),h=Yn(n*.382,2);return is(t,r,"M"+i+","+u+"H"+a+"L"+o+","+c+"L"+s+","+f+"L0,"+h+"L-"+s+","+f+"L-"+o+","+c+"L-"+a+","+u+"H-"+i+"L0,"+l+"Z")}},hexagram:{n:18,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.66,2),i=Yn(e*.38,2),a=Yn(e*.76,2);return is(t,r,"M-"+a+",0l-"+i+",-"+n+"h"+a+"l"+i+",-"+n+"l"+i+","+n+"h"+a+"l-"+i+","+n+"l"+i+","+n+"h-"+a+"l-"+i+","+n+"l-"+i+",-"+n+"h-"+a+"Z")}},"star-triangle-up":{n:19,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*i_*.8,2),i=Yn(e*.8,2),a=Yn(e*1.6,2),o=Yn(e*4,2),s="A "+o+","+o+" 0 0 1 ";return is(t,r,"M-"+n+","+i+s+n+","+i+s+"0,-"+a+s+"-"+n+","+i+"Z")}},"star-triangle-down":{n:20,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*i_*.8,2),i=Yn(e*.8,2),a=Yn(e*1.6,2),o=Yn(e*4,2),s="A "+o+","+o+" 0 0 1 ";return is(t,r,"M"+n+",-"+i+s+"-"+n+",-"+i+s+"0,"+a+s+n+",-"+i+"Z")}},"star-square":{n:21,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.1,2),i=Yn(e*2,2),a="A "+i+","+i+" 0 0 1 ";return is(t,r,"M-"+n+",-"+n+a+"-"+n+","+n+a+n+","+n+a+n+",-"+n+a+"-"+n+",-"+n+"Z")}},"star-diamond":{n:22,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2),i=Yn(e*1.9,2),a="A "+i+","+i+" 0 0 1 ";return is(t,r,"M-"+n+",0"+a+"0,"+n+a+n+",0"+a+"0,-"+n+a+"-"+n+",0Z")}},"diamond-tall":{n:23,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.7,2),i=Yn(e*1.4,2);return is(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},"diamond-wide":{n:24,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2),i=Yn(e*.7,2);return is(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},hourglass:{n:25,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"H-"+n+"L"+n+",-"+n+"H-"+n+"Z")},noDot:!0},bowtie:{n:26,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"V-"+n+"L-"+n+","+n+"V-"+n+"Z")},noDot:!0},"circle-cross":{n:27,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"circle-x":{n:28,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/ioe,2);return is(t,r,"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"square-cross":{n:29,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"square-x":{n:30,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"diamond-cross":{n:31,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM0,-"+n+"V"+n+"M-"+n+",0H"+n)},needLine:!0,noDot:!0},"diamond-x":{n:32,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2),i=Yn(e*.65,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM-"+i+",-"+i+"L"+i+","+i+"M-"+i+","+i+"L"+i+",-"+i)},needLine:!0,noDot:!0},"cross-thin":{n:33,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"x-thin":{n:34,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*.85,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i)},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e/2,2),i=Yn(e,2);return is(t,r,"M"+n+","+i+"V-"+i+"M"+(n-i)+",-"+i+"V"+i+"M"+i+","+n+"H-"+i+"M-"+i+","+(n-i)+"H"+i)},needLine:!0,noFill:!0},"y-up":{n:37,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+n+","+a+"L0,0M"+n+","+a+"L0,0M0,-"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-down":{n:38,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+n+",-"+a+"L0,0M"+n+",-"+a+"L0,0M0,"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-left":{n:39,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M"+a+","+n+"L0,0M"+a+",-"+n+"L0,0M-"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-right":{n:40,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+a+","+n+"L0,0M-"+a+",-"+n+"L0,0M"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"line-ew":{n:41,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ns":{n:42,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M0,"+n+"V-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ne":{n:43,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},"line-nw":{n:44,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n)},needLine:!0,noDot:!0,noFill:!0},"arrow-up":{n:45,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,noDot:!0},"arrow-down":{n:46,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M0,0L-"+n+",-"+i+"H"+n+"Z")},noDot:!0},"arrow-left":{n:47,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,0L"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-right":{n:48,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,0L-"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-bar-up":{n:49,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,needLine:!0,noDot:!0},"arrow-bar-down":{n:50,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+",-"+i+"H"+n+"Z")},needLine:!0,noDot:!0},"arrow-bar-left":{n:51,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,-"+i+"V"+i+"M0,0L"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},"arrow-bar-right":{n:52,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,-"+i+"V"+i+"M0,0L-"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},arrow:{n:53,f:function(e,t,r){if(rs(t))return ts;var n=CO/2.5,i=2*e*LO(n),a=2*e*PO(n);return is(t,r,"M0,0L"+-i+","+a+"L"+i+","+a+"Z")},backoff:.9,noDot:!0},"arrow-wide":{n:54,f:function(e,t,r){if(rs(t))return ts;var n=CO/4,i=2*e*LO(n),a=2*e*PO(n);return is(t,r,"M0,0L"+-i+","+a+"A "+2*e+","+2*e+" 0 0 1 "+i+","+a+"Z")},backoff:.4,noDot:!0}};function rs(e){return e===null}var noe,aoe,ooe,soe;function is(e,t,r){if((!e||e%360===0)&&!t)return r;if(ooe===e&&soe===t&&noe===r)return aoe;ooe=e,soe=t,noe=r;function n(b,g){var E=LO(b),k=PO(b),A=g[0],L=g[1]+(t||0);return[A*E-L*k,A*k+L*E]}for(var i=e/180*CO,a=0,o=0,s=rat(r),l="",u=0;u{"use strict";var od=xa(),du=Mr(),iat=du.numberFormat,Ab=uo(),qO=id(),eL=ba(),Xd=va(),nat=Mu(),KS=du.strTranslate,tL=Ll(),aat=Zp(),oat=Nh(),sat=oat.LINE_SPACING,_oe=N1().DESELECTDIM,lat=lu(),uat=S3(),cat=rp().appendArrayPointValue,na=Coe.exports={};na.font=function(e,t){var r=t.variant,n=t.style,i=t.weight,a=t.color,o=t.size,s=t.family,l=t.shadow,u=t.lineposition,c=t.textcase;s&&e.style("font-family",s),o+1&&e.style("font-size",o+"px"),a&&e.call(Xd.fill,a),i&&e.style("font-weight",i),n&&e.style("font-style",n),r&&e.style("font-variant",r),c&&e.style("text-transform",IO(hat(c))),l&&e.style("text-shadow",l==="auto"?tL.makeTextShadow(Xd.contrast(a)):IO(l)),u&&e.style("text-decoration-line",IO(dat(u)))};function IO(e){return e==="none"?void 0:e}var fat={normal:"none",lower:"lowercase",upper:"uppercase","word caps":"capitalize"};function hat(e){return fat[e]}function dat(e){return e.replace("under","underline").replace("over","overline").replace("through","line-through").split("+").join(" ")}na.setPosition=function(e,t,r){e.attr("x",t).attr("y",r)};na.setSize=function(e,t,r){e.attr("width",t).attr("height",r)};na.setRect=function(e,t,r,n,i){e.call(na.setPosition,t,r).call(na.setSize,n,i)};na.translatePoint=function(e,t,r,n){var i=r.c2p(e.x),a=n.c2p(e.y);if(Ab(i)&&Ab(a)&&t.node())t.node().nodeName==="text"?t.attr("x",i).attr("y",a):t.attr("transform",KS(i,a));else return!1;return!0};na.translatePoints=function(e,t,r){e.each(function(n){var i=od.select(this);na.translatePoint(n,i,t,r)})};na.hideOutsideRangePoint=function(e,t,r,n,i,a){t.attr("display",r.isPtWithinRange(e,i)&&n.isPtWithinRange(e,a)?null:"none")};na.hideOutsideRangePoints=function(e,t){if(t._hasClipOnAxisFalse){var r=t.xaxis,n=t.yaxis;e.each(function(i){var a=i[0].trace,o=a.xcalendar,s=a.ycalendar,l=eL.traceIs(a,"bar-like")?".bartext":".point,.textpoint";e.selectAll(l).each(function(u){na.hideOutsideRangePoint(u,od.select(this),r,n,o,s)})})}};na.crispRound=function(e,t,r){return!t||!Ab(t)?r||0:e._context.staticPlot?t:t<1?1:Math.round(t)};na.singleLineStyle=function(e,t,r,n,i){t.style("fill","none");var a=(((e||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||"";Xd.stroke(t,n||a.color),na.dashLine(t,s,o)};na.lineGroupStyle=function(e,t,r,n){e.style("fill","none").each(function(i){var a=(((i||[])[0]||{}).trace||{}).line||{},o=t||a.width||0,s=n||a.dash||"";od.select(this).call(Xd.stroke,r||a.color).call(na.dashLine,s,o)})};na.dashLine=function(e,t,r){r=+r||0,t=na.dashStyle(t,r),e.style({"stroke-dasharray":t,"stroke-width":r+"px"})};na.dashStyle=function(e,t){t=+t||1;var r=Math.max(t,3);return e==="solid"?e="":e==="dot"?e=r+"px,"+r+"px":e==="dash"?e=3*r+"px,"+3*r+"px":e==="longdash"?e=5*r+"px,"+5*r+"px":e==="dashdot"?e=3*r+"px,"+r+"px,"+r+"px,"+r+"px":e==="longdashdot"&&(e=5*r+"px,"+2*r+"px,"+r+"px,"+2*r+"px"),e};function xoe(e,t,r,n){var i=t.fillpattern,a=t.fillgradient,o=i&&na.getPatternAttr(i.shape,0,"");if(o){var s=na.getPatternAttr(i.bgcolor,0,null),l=na.getPatternAttr(i.fgcolor,0,null),u=i.fgopacity,c=na.getPatternAttr(i.size,0,8),f=na.getPatternAttr(i.solidity,0,.3),h=t.uid;na.pattern(e,"point",r,h,o,c,f,void 0,i.fillmode,s,l,u)}else if(a&&a.type!=="none"){var d=a.type,v="scatterfill-"+t.uid;if(n&&(v="legendfill-"+t.uid),!n&&(a.start!==void 0||a.stop!==void 0)){var x,b;d==="horizontal"?(x={x:a.start,y:0},b={x:a.stop,y:0}):d==="vertical"&&(x={x:0,y:a.start},b={x:0,y:a.stop}),x.x=t._xA.c2p(x.x===void 0?t._extremes.x.min[0].val:x.x,!0),x.y=t._yA.c2p(x.y===void 0?t._extremes.y.min[0].val:x.y,!0),b.x=t._xA.c2p(b.x===void 0?t._extremes.x.max[0].val:b.x,!0),b.y=t._yA.c2p(b.y===void 0?t._extremes.y.max[0].val:b.y,!0),e.call(Toe,r,v,"linear",a.colorscale,"fill",x,b,!0,!1)}else d==="horizontal"&&(d=d+"reversed"),e.call(na.gradient,r,v,d,a.colorscale,"fill")}else t.fillcolor&&e.call(Xd.fill,t.fillcolor)}na.singleFillStyle=function(e,t){var r=od.select(e.node()),n=r.data(),i=((n[0]||[])[0]||{}).trace||{};xoe(e,i,t,!1)};na.fillGroupStyle=function(e,t,r){e.style("stroke-width",0).each(function(n){var i=od.select(this);n[0].trace&&xoe(i,n[0].trace,t,r)})};var coe=uoe();na.symbolNames=[];na.symbolFuncs=[];na.symbolBackOffs=[];na.symbolNeedLines={};na.symbolNoDot={};na.symbolNoFill={};na.symbolList=[];Object.keys(coe).forEach(function(e){var t=coe[e],r=t.n;na.symbolList.push(r,String(r),e,r+100,String(r+100),e+"-open"),na.symbolNames[r]=e,na.symbolFuncs[r]=t.f,na.symbolBackOffs[r]=t.backoff||0,t.needLine&&(na.symbolNeedLines[r]=!0),t.noDot?na.symbolNoDot[r]=!0:na.symbolList.push(r+200,String(r+200),e+"-dot",r+300,String(r+300),e+"-open-dot"),t.noFill&&(na.symbolNoFill[r]=!0)});var vat=na.symbolNames.length,pat="M0,0.5L0.5,0L0,-0.5L-0.5,0Z";na.symbolNumber=function(e){if(Ab(e))e=+e;else if(typeof e=="string"){var t=0;e.indexOf("-open")>0&&(t=100,e=e.replace("-open","")),e.indexOf("-dot")>0&&(t+=200,e=e.replace("-dot","")),e=na.symbolNames.indexOf(e),e>=0&&(e+=t)}return e%100>=vat||e>=400?0:Math.floor(Math.max(e,0))};function boe(e,t,r,n){var i=e%100;return na.symbolFuncs[i](t,r,n)+(e>=200?pat:"")}var foe=iat("~f"),woe={radial:{type:"radial"},radialreversed:{type:"radial",reversed:!0},horizontal:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0}},horizontalreversed:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0},reversed:!0},vertical:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0}},verticalreversed:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0},reversed:!0}};na.gradient=function(e,t,r,n,i,a){var o=woe[n];return Toe(e,t,r,o.type,i,a,o.start,o.stop,!1,o.reversed)};function Toe(e,t,r,n,i,a,o,s,l,u){var c=i.length,f;n==="linear"?f={node:"linearGradient",attrs:{x1:o.x,y1:o.y,x2:s.x,y2:s.y,gradientUnits:l?"userSpaceOnUse":"objectBoundingBox"},reversed:u}:n==="radial"&&(f={node:"radialGradient",reversed:u});for(var h=new Array(c),d=0;d=0&&e.i===void 0&&(e.i=a.i),t.style("opacity",n.selectedOpacityFn?n.selectedOpacityFn(e):e.mo===void 0?o.opacity:e.mo),n.ms2mrc){var l;e.ms==="various"||o.size==="various"?l=3:l=n.ms2mrc(e.ms),e.mrc=l,n.selectedSizeFn&&(l=e.mrc=n.selectedSizeFn(e));var u=na.symbolNumber(e.mx||o.symbol)||0;e.om=u%200>=100;var c=NO(e,r),f=BO(e,r);t.attr("d",boe(u,l,c,f))}var h=!1,d,v,x;if(e.so)x=s.outlierwidth,v=s.outliercolor,d=o.outliercolor;else{var b=(s||{}).width;x=(e.mlw+1||b+1||(e.trace?(e.trace.marker.line||{}).width:0)+1)-1||0,"mlc"in e?v=e.mlcc=n.lineScale(e.mlc):du.isArrayOrTypedArray(s.color)?v=Xd.defaultLine:v=s.color,du.isArrayOrTypedArray(o.color)&&(d=Xd.defaultLine,h=!0),"mc"in e?d=e.mcc=n.markerScale(e.mc):d=o.color||o.colors||"rgba(0,0,0,0)",n.selectedColorFn&&(d=n.selectedColorFn(e))}if(e.om)t.call(Xd.stroke,d).style({"stroke-width":(x||1)+"px",fill:"none"});else{t.style("stroke-width",(e.isBlank?0:x)+"px");var g=o.gradient,E=e.mgt;E?h=!0:E=g&&g.type,du.isArrayOrTypedArray(E)&&(E=E[0],woe[E]||(E=0));var k=o.pattern,A=k&&na.getPatternAttr(k.shape,e.i,"");if(E&&E!=="none"){var L=e.mgc;L?h=!0:L=g.color;var _=r.uid;h&&(_+="-"+e.i),na.gradient(t,i,_,E,[[0,L],[1,d]],"fill")}else if(A){var C=!1,M=k.fgcolor;!M&&a&&a.color&&(M=a.color,C=!0);var p=na.getPatternAttr(M,e.i,a&&a.color||null),P=na.getPatternAttr(k.bgcolor,e.i,null),T=k.fgopacity,F=na.getPatternAttr(k.size,e.i,8),q=na.getPatternAttr(k.solidity,e.i,.3);C=C||e.mcc||du.isArrayOrTypedArray(k.shape)||du.isArrayOrTypedArray(k.bgcolor)||du.isArrayOrTypedArray(k.fgcolor)||du.isArrayOrTypedArray(k.size)||du.isArrayOrTypedArray(k.solidity);var V=r.uid;C&&(V+="-"+e.i),na.pattern(t,"point",i,V,A,F,q,e.mcc,k.fillmode,P,p,T)}else du.isArrayOrTypedArray(d)?Xd.fill(t,d[e.i]):Xd.fill(t,d);x&&Xd.stroke(t,v)}};na.makePointStyleFns=function(e){var t={},r=e.marker;return t.markerScale=na.tryColorscale(r,""),t.lineScale=na.tryColorscale(r,"line"),eL.traceIs(e,"symbols")&&(t.ms2mrc=lat.isBubble(e)?uat(e):function(){return(r.size||6)/2}),e.selectedpoints&&du.extendFlat(t,na.makeSelectedPointStyleFns(e)),t};na.makeSelectedPointStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.marker||{},a=r.marker||{},o=n.marker||{},s=i.opacity,l=a.opacity,u=o.opacity,c=l!==void 0,f=u!==void 0;(du.isArrayOrTypedArray(s)||c||f)&&(t.selectedOpacityFn=function(A){var L=A.mo===void 0?i.opacity:A.mo;return A.selected?c?l:L:f?u:_oe*L});var h=i.color,d=a.color,v=o.color;(d||v)&&(t.selectedColorFn=function(A){var L=A.mcc||h;return A.selected?d||L:v||L});var x=i.size,b=a.size,g=o.size,E=b!==void 0,k=g!==void 0;return eL.traceIs(e,"symbols")&&(E||k)&&(t.selectedSizeFn=function(A){var L=A.mrc||x/2;return A.selected?E?b/2:L:k?g/2:L}),t};na.makeSelectedTextStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return t.selectedTextColorFn=function(c){var f=c.tc||s;return c.selected?l||f:u||(l?f:Xd.addOpacity(f,_oe))},t};na.selectedPointStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=na.makeSelectedPointStyleFns(t),n=t.marker||{},i=[];r.selectedOpacityFn&&i.push(function(a,o){a.style("opacity",r.selectedOpacityFn(o))}),r.selectedColorFn&&i.push(function(a,o){Xd.fill(a,r.selectedColorFn(o))}),r.selectedSizeFn&&i.push(function(a,o){var s=o.mx||n.symbol||0,l=r.selectedSizeFn(o);a.attr("d",boe(na.symbolNumber(s),l,NO(o,t),BO(o,t))),o.mrc2=l}),i.length&&e.each(function(a){for(var o=od.select(this),s=0;s0?r:0}na.textPointStyle=function(e,t,r){if(e.size()){var n;if(t.selectedpoints){var i=na.makeSelectedTextStyleFns(t);n=i.selectedTextColorFn}var a=t.texttemplate,o=r._fullLayout;e.each(function(s){var l=od.select(this),u=a?du.extractOption(s,t,"txt","texttemplate"):du.extractOption(s,t,"tx","text");if(!u&&u!==0){l.remove();return}if(a){var c=t._module.formatLabels,f=c?c(s,t,o):{},h={};cat(h,t,s.i);var d=t._meta||{};u=du.texttemplateString(u,f,o._d3locale,h,s,d)}var v=s.tp||t.textposition,x=Soe(s,t),b=n?n(s):s.tc||t.textfont.color;l.call(na.font,{family:s.tf||t.textfont.family,weight:s.tw||t.textfont.weight,style:s.ty||t.textfont.style,variant:s.tv||t.textfont.variant,textcase:s.tC||t.textfont.textcase,lineposition:s.tE||t.textfont.lineposition,shadow:s.tS||t.textfont.shadow,size:x,color:b}).text(u).call(tL.convertToTspans,r).call(Aoe,v,x,s.mrc)})}};na.selectedTextStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=na.makeSelectedTextStyleFns(t);e.each(function(n){var i=od.select(this),a=r.selectedTextColorFn(n),o=n.tp||t.textposition,s=Soe(n,t);Xd.fill(i,a);var l=eL.traceIs(t,"bar-like");Aoe(i,o,s,n.mrc2||n.mrc,l)})}};var hoe=.5;na.smoothopen=function(e,t){if(e.length<3)return"M"+e.join("L");var r="M"+e[0],n=[],i;for(i=1;i=l||A>=c&&A<=l)&&(L<=f&&L>=u||L>=f&&L<=u)&&(e=[A,L])}return e}na.applyBackoff=koe;na.makeTester=function(){var e=du.ensureSingleById(od.select("body"),"svg","js-plotly-tester",function(r){r.attr(aat.svgAttrs).style({position:"absolute",left:"-10000px",top:"-10000px",width:"9000px",height:"9000px","z-index":"1"})}),t=du.ensureSingle(e,"path","js-reference-point",function(r){r.attr("d","M0,0H1V1H0Z").style({"stroke-width":0,fill:"black"})});na.tester=e,na.testref=t};na.savedBBoxes={};var DO=0,yat=1e4;na.bBox=function(e,t,r){r||(r=doe(e));var n;if(r){if(n=na.savedBBoxes[r],n)return du.extendFlat({},n)}else if(e.childNodes.length===1){var i=e.childNodes[0];if(r=doe(i),r){var a=+i.getAttribute("x")||0,o=+i.getAttribute("y")||0,s=i.getAttribute("transform");if(!s){var l=na.bBox(i,!1,r);return a&&(l.left+=a,l.right+=a),o&&(l.top+=o,l.bottom+=o),l}if(r+="~"+a+"~"+o+"~"+s,n=na.savedBBoxes[r],n)return du.extendFlat({},n)}}var u,c;t?u=e:(c=na.tester.node(),u=e.cloneNode(!0),c.appendChild(u)),od.select(u).attr("transform",null).call(tL.positionText,0,0);var f=u.getBoundingClientRect(),h=na.testref.node().getBoundingClientRect();t||c.removeChild(u);var d={height:f.height,width:f.width,left:f.left-h.left,top:f.top-h.top,right:f.right-h.left,bottom:f.bottom-h.top};return DO>=yat&&(na.savedBBoxes={},DO=0),r&&(na.savedBBoxes[r]=d),DO++,du.extendFlat({},d)};function doe(e){var t=e.getAttribute("data-unformatted");if(t!==null)return t+e.getAttribute("data-math")+e.getAttribute("text-anchor")+e.getAttribute("style")}na.setClipUrl=function(e,t,r){e.attr("clip-path",OO(t,r))};function OO(e,t){if(!e)return null;var r=t._context,n=r._exportedPlot?"":r._baseUrl||"";return n?"url('"+n+"#"+e+"')":"url(#"+e+")"}na.getTranslate=function(e){var t=/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||0,y:+i[1]||0}};na.setTranslate=function(e,t,r){var n=/(\btranslate\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||0,r=r||0,o=o.replace(n,"").trim(),o+=KS(t,r),o=o.trim(),e[a]("transform",o),o};na.getScale=function(e){var t=/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||1,y:+i[1]||1}};na.setScale=function(e,t,r){var n=/(\bscale\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||1,r=r||1,o=o.replace(n,"").trim(),o+="scale("+t+","+r+")",o=o.trim(),e[a]("transform",o),o};var _at=/\s*sc.*/;na.setPointGroupScale=function(e,t,r){if(t=t||1,r=r||1,!!e){var n=t===1&&r===1?"":"scale("+t+","+r+")";e.each(function(){var i=(this.getAttribute("transform")||"").replace(_at,"");i+=n,i=i.trim(),this.setAttribute("transform",i)})}};var xat=/translate\([^)]*\)\s*$/;na.setTextPointsScale=function(e,t,r){e&&e.each(function(){var n,i=od.select(this),a=i.select("text");if(a.node()){var o=parseFloat(a.attr("x")||0),s=parseFloat(a.attr("y")||0),l=(i.attr("transform")||"").match(xat);t===1&&r===1?n=[]:n=[KS(o,s),"scale("+t+","+r+")",KS(-o,-s)],l&&n.push(l),i.attr("transform",n.join(""))}})};function BO(e,t){var r;return e&&(r=e.mf),r===void 0&&(r=t.marker&&t.marker.standoff||0),!t._geo&&!t._xA?-r:r}na.getMarkerStandoff=BO;var YS=Math.atan2,bb=Math.cos,E3=Math.sin;function voe(e,t){var r=t[0],n=t[1];return[r*bb(e)-n*E3(e),r*E3(e)+n*bb(e)]}var poe,goe,moe,yoe,zO,FO;function NO(e,t){var r=e.ma;r===void 0&&(r=t.marker.angle,(!r||du.isArrayOrTypedArray(r))&&(r=0));var n,i,a=t.marker.angleref;if(a==="previous"||a==="north"){if(t._geo){var o=t._geo.project(e.lonlat);n=o[0],i=o[1]}else{var s=t._xA,l=t._yA;if(s&&l)n=s.c2p(e.x),i=l.c2p(e.y);else return 90}if(t._geo){var u=e.lonlat[0],c=e.lonlat[1],f=t._geo.project([u,c+1e-5]),h=t._geo.project([u+1e-5,c]),d=YS(h[1]-i,h[0]-n),v=YS(f[1]-i,f[0]-n),x;if(a==="north")x=r/180*Math.PI;else if(a==="previous"){var b=u/180*Math.PI,g=c/180*Math.PI,E=poe/180*Math.PI,k=goe/180*Math.PI,A=E-b,L=bb(k)*E3(A),_=E3(k)*bb(g)-bb(k)*E3(g)*bb(A);x=-YS(L,_)-Math.PI,poe=u,goe=c}var C=voe(d,[bb(x),0]),M=voe(v,[E3(x),0]);r=YS(C[1]+M[1],C[0]+M[0])/Math.PI*180,a==="previous"&&!(FO===t.uid&&e.i===zO+1)&&(r=null)}if(a==="previous"&&!t._geo)if(FO===t.uid&&e.i===zO+1&&Ab(n)&&Ab(i)){var p=n-moe,P=i-yoe,T=t.line&&t.line.shape||"",F=T.slice(T.length-1);F==="h"&&(P=0),F==="v"&&(p=0),r+=YS(P,p)/Math.PI*180+90}else r=null}return moe=n,yoe=i,zO=e.i,FO=t.uid,r}na.getMarkerAngle=NO});var Mb=ye((frr,Roe)=>{"use strict";var k3=xa(),bat=uo(),wat=Xu(),UO=ba(),Sb=Mr(),Loe=Sb.strTranslate,rL=ao(),iL=va(),C3=Ll(),Poe=N1(),Tat=Nh().OPPOSITE_SIDE,Ioe=/ [XY][0-9]* /,VO=1.6,HO=1.6;function Aat(e,t,r){var n=e._fullLayout,i=r.propContainer,a=r.propName,o=r.placeholder,s=r.traceIndex,l=r.avoid||{},u=r.attributes,c=r.transform,f=r.containerGroup,h=1,d=i.title,v=(d&&d.text?d.text:"").trim(),x=!1,b=d&&d.font?d.font:{},g=b.family,E=b.size,k=b.color,A=b.weight,L=b.style,_=b.variant,C=b.textcase,M=b.lineposition,p=b.shadow,P=r.subtitlePropName,T=!!P,F=r.subtitlePlaceholder,q=(i.title||{}).subtitle||{text:"",font:{}},V=q.text.trim(),H=!1,X=1,G=q.font,N=G.family,W=G.size,re=G.color,ae=G.weight,_e=G.style,Me=G.variant,ke=G.textcase,ge=G.lineposition,ie=G.shadow,Te;a==="title.text"?Te="titleText":a.indexOf("axis")!==-1?Te="axisTitleText":a.indexOf("colorbar"!==-1)&&(Te="colorbarTitleText");var Ee=e._context.edits[Te];function Ae(kt,Ct){return kt===void 0||Ct===void 0?!1:kt.replace(Ioe," % ")===Ct.replace(Ioe," % ")}v===""?h=0:Ae(v,o)&&(Ee||(v=""),h=.2,x=!0),T&&(V===""?X=0:Ae(V,F)&&(Ee||(V=""),X=.2,H=!0)),r._meta?v=Sb.templateString(v,r._meta):n._meta&&(v=Sb.templateString(v,n._meta));var ze=v||V||Ee,Ce;f||(f=Sb.ensureSingle(n._infolayer,"g","g-"+t),Ce=n._hColorbarMoveTitle);var me=f.selectAll("text."+t).data(ze?[0]:[]);me.enter().append("text"),me.text(v).attr("class",t),me.exit().remove();var Re=null,ce=t+"-subtitle",Ge=V||Ee;if(T&&Ge&&(Re=f.selectAll("text."+ce).data(Ge?[0]:[]),Re.enter().append("text"),Re.text(V).attr("class",ce),Re.exit().remove()),!ze)return f;function nt(kt,Ct){Sb.syncOrAsync([ct,qt],{title:kt,subtitle:Ct})}function ct(kt){var Ct=kt.title,Yt=kt.subtitle,xr;!c&&Ce&&(c={}),c?(xr="",c.rotate&&(xr+="rotate("+[c.rotate,u.x,u.y]+")"),(c.offset||Ce)&&(xr+=Loe(0,(c.offset||0)-(Ce||0)))):xr=null,Ct.attr("transform",xr);function er(Et){if(Et){var dt=k3.select(Et.node().parentNode).select("."+ce);if(!dt.empty()){var Ht=Et.node().getBBox();if(Ht.height){var $t=Ht.y+Ht.height+VO*W;dt.attr("y",$t)}}}}if(Ct.style("opacity",h*iL.opacity(k)).call(rL.font,{color:iL.rgb(k),size:k3.round(E,2),family:g,weight:A,style:L,variant:_,textcase:C,shadow:p,lineposition:M}).attr(u).call(C3.convertToTspans,e,er),Yt){var Ke=f.select("."+t+"-math-group"),xt=Ct.node().getBBox(),bt=Ke.node()?Ke.node().getBBox():void 0,Lt=bt?bt.y+bt.height+VO*W:xt.y+xt.height+HO*W,St=Sb.extendFlat({},u,{y:Lt});Yt.attr("transform",xr),Yt.style("opacity",X*iL.opacity(re)).call(rL.font,{color:iL.rgb(re),size:k3.round(W,2),family:N,weight:ae,style:_e,variant:Me,textcase:ke,shadow:ie,lineposition:ge}).attr(St).call(C3.convertToTspans,e)}return wat.previousPromises(e)}function qt(kt){var Ct=kt.title,Yt=k3.select(Ct.node().parentNode);if(l&&l.selection&&l.side&&v){Yt.attr("transform",null);var xr=Tat[l.side],er=l.side==="left"||l.side==="top"?-1:1,Ke=bat(l.pad)?l.pad:2,xt=rL.bBox(Yt.node()),bt={t:0,b:0,l:0,r:0},Lt=e._fullLayout._reservedMargin;for(var St in Lt)for(var Et in Lt[St]){var dt=Lt[St][Et];bt[Et]=Math.max(bt[Et],dt)}var Ht={left:bt.l,top:bt.t,right:n.width-bt.r,bottom:n.height-bt.b},$t=l.maxShift||er*(Ht[l.side]-xt[l.side]),fr=0;if($t<0)fr=$t;else{var _r=l.offsetLeft||0,Br=l.offsetTop||0;xt.left-=_r,xt.right-=_r,xt.top-=Br,xt.bottom-=Br,l.selection.each(function(){var Nr=rL.bBox(this);Sb.bBoxIntersect(xt,Nr,Ke)&&(fr=Math.max(fr,er*(Nr[l.side]-xt[xr])+Ke))}),fr=Math.min($t,fr),i._titleScoot=Math.abs(fr)}if(fr>0||$t<0){var Or={left:[-fr,0],right:[fr,0],top:[0,-fr],bottom:[0,fr]}[l.side];Yt.attr("transform",Loe(Or[0],Or[1]))}}}me.call(nt,Re);function rt(kt,Ct){kt.text(Ct).on("mouseover.opacity",function(){k3.select(this).transition().duration(Poe.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){k3.select(this).transition().duration(Poe.HIDE_PLACEHOLDER).style("opacity",0)})}if(Ee&&(v?me.on(".opacity",null):(rt(me,o),x=!0),me.call(C3.makeEditable,{gd:e}).on("edit",function(kt){s!==void 0?UO.call("_guiRestyle",e,a,kt,s):UO.call("_guiRelayout",e,a,kt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(nt)}).on("input",function(kt){this.text(kt||" ").call(C3.positionText,u.x,u.y)}),T)){if(T&&!v){var ot=me.node().getBBox(),Rt=ot.y+ot.height+HO*W;Re.attr("y",Rt)}V?Re.on(".opacity",null):(rt(Re,F),H=!0),Re.call(C3.makeEditable,{gd:e}).on("edit",function(kt){UO.call("_guiRelayout",e,"title.subtitle.text",kt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(nt)}).on("input",function(kt){this.text(kt||" ").call(C3.positionText,Re.attr("x"),Re.attr("y"))})}return me.classed("js-placeholder",x),Re&&Re.classed("js-placeholder",H),f}Roe.exports={draw:Aat,SUBTITLE_PADDING_EM:HO,SUBTITLE_PADDING_MATHJAX_EM:VO}});var ym=ye((hrr,Ooe)=>{"use strict";var Sat=xa(),Mat=e3().utcFormat,Nu=Mr(),Eat=Nu.numberFormat,gm=uo(),n_=Nu.cleanNumber,kat=Nu.ms2DateTime,Doe=Nu.dateTime2ms,mm=Nu.ensureNumber,zoe=Nu.isArrayOrTypedArray,a_=es(),nL=a_.FP_SAFE,bg=a_.BADNUM,Cat=a_.LOG_CLIP,Lat=a_.ONEWEEK,aL=a_.ONEDAY,oL=a_.ONEHOUR,Foe=a_.ONEMIN,qoe=a_.ONESEC,sL=af(),cL=ad(),lL=cL.HOUR_PATTERN,uL=cL.WEEKDAY_PATTERN;function JS(e){return Math.pow(10,e)}function GO(e){return e!=null}Ooe.exports=function(t,r){r=r||{};var n=t._id||"x",i=n.charAt(0);function a(A,L){if(A>0)return Math.log(A)/Math.LN10;if(A<=0&&L&&t.range&&t.range.length===2){var _=t.range[0],C=t.range[1];return .5*(_+C-2*Cat*Math.abs(_-C))}else return bg}function o(A,L,_,C){if((C||{}).msUTC&&gm(A))return+A;var M=Doe(A,_||t.calendar);if(M===bg)if(gm(A)){A=+A;var p=Math.floor(Nu.mod(A+.05,1)*10),P=Math.round(A-p/10);M=Doe(new Date(P))+p/10}else return bg;return M}function s(A,L,_){return kat(A,L,_||t.calendar)}function l(A){return t._categories[Math.round(A)]}function u(A){if(GO(A)){if(t._categoriesMap===void 0&&(t._categoriesMap={}),t._categoriesMap[A]!==void 0)return t._categoriesMap[A];t._categories.push(typeof A=="number"?String(A):A);var L=t._categories.length-1;return t._categoriesMap[A]=L,L}return bg}function c(A,L){for(var _=new Array(L),C=0;Ct.range[1]&&(_=!_);for(var C=_?-1:1,M=C*A,p=0,P=0;PF)p=P+1;else{p=M<(T+F)/2?P:P+1;break}}var q=t._B[p]||0;return isFinite(q)?v(A,t._m2,q):0},g=function(A){var L=t._rangebreaks.length;if(!L)return x(A,t._m,t._b);for(var _=0,C=0;Ct._rangebreaks[C].pmax&&(_=C+1);return x(A,t._m2,t._B[_])}}t.c2l=t.type==="log"?a:mm,t.l2c=t.type==="log"?JS:mm,t.l2p=b,t.p2l=g,t.c2p=t.type==="log"?function(A,L){return b(a(A,L))}:b,t.p2c=t.type==="log"?function(A){return JS(g(A))}:g,["linear","-"].indexOf(t.type)!==-1?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=n_,t.c2d=t.c2r=t.l2d=t.l2r=mm,t.d2p=t.r2p=function(A){return t.l2p(n_(A))},t.p2d=t.p2r=g,t.cleanPos=mm):t.type==="log"?(t.d2r=t.d2l=function(A,L){return a(n_(A),L)},t.r2d=t.r2c=function(A){return JS(n_(A))},t.d2c=t.r2l=n_,t.c2d=t.l2r=mm,t.c2r=a,t.l2d=JS,t.d2p=function(A,L){return t.l2p(t.d2r(A,L))},t.p2d=function(A){return JS(g(A))},t.r2p=function(A){return t.l2p(n_(A))},t.p2r=g,t.cleanPos=mm):t.type==="date"?(t.d2r=t.r2d=Nu.identity,t.d2c=t.r2c=t.d2l=t.r2l=o,t.c2d=t.c2r=t.l2d=t.l2r=s,t.d2p=t.r2p=function(A,L,_){return t.l2p(o(A,0,_))},t.p2d=t.p2r=function(A,L,_){return s(g(A),L,_)},t.cleanPos=function(A){return Nu.cleanDate(A,bg,t.calendar)}):t.type==="category"?(t.d2c=t.d2l=u,t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(A){var L=d(A);return L!==void 0?L:t.fraction2r(.5)},t.l2r=t.c2r=mm,t.r2l=d,t.d2p=function(A){return t.l2p(t.r2c(A))},t.p2d=function(A){return l(g(A))},t.r2p=t.d2p,t.p2r=g,t.cleanPos=function(A){return typeof A=="string"&&A!==""?A:mm(A)}):t.type==="multicategory"&&(t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(A){var L=h(A);return L!==void 0?L:t.fraction2r(.5)},t.r2c_just_indices=f,t.l2r=t.c2r=mm,t.r2l=h,t.d2p=function(A){return t.l2p(t.r2c(A))},t.p2d=function(A){return l(g(A))},t.r2p=t.d2p,t.p2r=g,t.cleanPos=function(A){return Array.isArray(A)||typeof A=="string"&&A!==""?A:mm(A)},t.setupMultiCategory=function(A){var L=t._traceIndices,_,C,M=t._matchGroup;if(M&&t._categories.length===0){for(var p in M)if(p!==n){var P=r[sL.id2name(p)];L=L.concat(P._traceIndices)}}var T=[[0,{}],[0,{}]],F=[];for(_=0;_P[1]&&(C[p?0:1]=_),C[0]===C[1]){var T=t.l2r(L),F=t.l2r(_);if(L!==void 0){var q=T+1;_!==void 0&&(q=Math.min(q,F)),C[p?1:0]=q}if(_!==void 0){var V=F+1;L!==void 0&&(V=Math.max(V,T)),C[p?0:1]=V}}}},t.cleanRange=function(A,L){t._cleanRange(A,L),t.limitRange(A)},t._cleanRange=function(A,L){L||(L={}),A||(A="range");var _=Nu.nestedProperty(t,A).get(),C,M;if(t.type==="date"?M=Nu.dfltRange(t.calendar):i==="y"?M=cL.DFLTRANGEY:t._name==="realaxis"?M=[0,1]:M=L.dfltRange||cL.DFLTRANGEX,M=M.slice(),(t.rangemode==="tozero"||t.rangemode==="nonnegative")&&(M[0]=0),!_||_.length!==2){Nu.nestedProperty(t,A).set(M);return}var p=_[0]===null,P=_[1]===null;for(t.type==="date"&&!t.autorange&&(_[0]=Nu.cleanDate(_[0],bg,t.calendar),_[1]=Nu.cleanDate(_[1],bg,t.calendar)),C=0;C<2;C++)if(t.type==="date"){if(!Nu.isDateTime(_[C],t.calendar)){t[A]=M;break}if(t.r2l(_[0])===t.r2l(_[1])){var T=Nu.constrain(t.r2l(_[0]),Nu.MIN_MS+1e3,Nu.MAX_MS-1e3);_[0]=t.l2r(T-1e3),_[1]=t.l2r(T+1e3);break}}else{if(!gm(_[C]))if(!(p||P)&&gm(_[1-C]))_[C]=_[1-C]*(C?10:.1);else{t[A]=M;break}if(_[C]<-nL?_[C]=-nL:_[C]>nL&&(_[C]=nL),_[0]===_[1]){var F=Math.max(1,Math.abs(_[0]*1e-6));_[0]-=F,_[1]+=F}}},t.setScale=function(A){var L=r._size;if(t.overlaying){var _=sL.getFromId({_fullLayout:r},t.overlaying);t.domain=_.domain}var C=A&&t._r?"_r":"range",M=t.calendar;t.cleanRange(C);var p=t.r2l(t[C][0],M),P=t.r2l(t[C][1],M),T=i==="y";if(T?(t._offset=L.t+(1-t.domain[1])*L.h,t._length=L.h*(t.domain[1]-t.domain[0]),t._m=t._length/(p-P),t._b=-t._m*P):(t._offset=L.l+t.domain[0]*L.w,t._length=L.w*(t.domain[1]-t.domain[0]),t._m=t._length/(P-p),t._b=-t._m*p),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks){var F,q;if(t._rangebreaks=t.locateBreaks(Math.min(p,P),Math.max(p,P)),t._rangebreaks.length){for(F=0;FP&&(V=!V),V&&t._rangebreaks.reverse();var H=V?-1:1;for(t._m2=H*t._length/(Math.abs(P-p)-t._lBreaks),t._B.push(-t._m2*(T?P:p)),F=0;FM&&(M+=7,pM&&(M+=24,p=C&&p=C&&A=ie.min&&(_eie.max&&(ie.max=Me),ke=!1)}ke&&P.push({min:_e,max:Me})}};for(_=0;_{"use strict";var Boe=uo(),jO=Mr(),Pat=es().BADNUM,fL=jO.isArrayOrTypedArray,Iat=jO.isDateTime,Rat=jO.cleanNumber,Noe=Math.round;Voe.exports=function(t,r,n){var i=t,a=n.noMultiCategory;if(fL(i)&&!i.length)return"-";if(!a&&Oat(i))return"multicategory";if(a&&Array.isArray(i[0])){for(var o=[],s=0;sa*2}function Uoe(e){return Math.max(1,(e-1)/1e3)}function qat(e,t){for(var r=e.length,n=Uoe(r),i=0,a=0,o={},s=0;si*2}function Oat(e){return fL(e[0])&&fL(e[1])}});var wg=ye((vrr,Koe)=>{"use strict";var Bat=xa(),Woe=uo(),o_=Mr(),hL=es().FP_SAFE,Nat=ba(),Uat=ao(),Zoe=af(),Vat=Zoe.getFromId,Hat=Zoe.isLinked;Koe.exports={applyAutorangeOptions:Yoe,getAutoRange:WO,makePadFn:ZO,doAutoRange:jat,findExtremes:Wat,concatExtremes:KO};function WO(e,t){var r,n,i=[],a=e._fullLayout,o=ZO(a,t,0),s=ZO(a,t,1),l=KO(e,t),u=l.min,c=l.max;if(u.length===0||c.length===0)return o_.simpleMap(t.range,t.r2l);var f=u[0].val,h=c[0].val;for(r=1;r0&&(P=k-o(_)-s(C),P>A?T/P>L&&(M=_,p=C,L=T/P):T/k>L&&(M={val:_.val,nopad:1},p={val:C.val,nopad:1},L=T/k));function F(G,N){return Math.max(G,s(N))}if(f===h){var q=f-1,V=f+1;if(g)if(f===0)i=[0,1];else{var H=(f>0?c:u).reduce(F,0),X=f/(1-Math.min(.5,H/k));i=f>0?[0,X]:[X,0]}else E?i=[Math.max(0,q),Math.max(1,V)]:i=[q,V]}else g?(M.val>=0&&(M={val:0,nopad:1}),p.val<=0&&(p={val:0,nopad:1})):E&&(M.val-L*o(M)<0&&(M={val:0,nopad:1}),p.val<=0&&(p={val:1,nopad:1})),L=(p.val-M.val-Hoe(t,_.val,C.val))/(k-o(M)-s(p)),i=[M.val-L*o(M),p.val+L*s(p)];return i=Yoe(i,t),t.limitRange&&t.limitRange(),v&&i.reverse(),o_.simpleMap(i,t.l2r||Number)}function Hoe(e,t,r){var n=0;if(e.rangebreaks)for(var i=e.locateBreaks(t,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),_=A((e._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),C=A(r.vpadplus||r.vpad),M=A(r.vpadminus||r.vpad);if(!u){if(E=1/0,k=-1/0,l)for(f=0;f0&&(E=h),h>k&&h-hL&&(E=h),h>k&&h=T;f--)P(f);return{min:n,max:i,opts:r}}function XO(e,t,r,n){Xoe(e,t,r,n,Zat)}function YO(e,t,r,n){Xoe(e,t,r,n,Xat)}function Xoe(e,t,r,n,i){for(var a=n.tozero,o=n.extrapad,s=!0,l=0;l=r&&(u.extrapad||!o)){s=!1;break}else i(t,u.val)&&u.pad<=r&&(o||!u.extrapad)&&(e.splice(l,1),l--)}if(s){var c=a&&t===0;e.push({val:t,pad:c?0:r,extrapad:c?!1:o})}}function joe(e){return Woe(e)&&Math.abs(e)=t}function Yat(e,t){var r=t.autorangeoptions;return r&&r.minallowed!==void 0&&dL(t,r.minallowed,r.maxallowed)?r.minallowed:r&&r.clipmin!==void 0&&dL(t,r.clipmin,r.clipmax)?Math.max(e,t.d2l(r.clipmin)):e}function Kat(e,t){var r=t.autorangeoptions;return r&&r.maxallowed!==void 0&&dL(t,r.minallowed,r.maxallowed)?r.maxallowed:r&&r.clipmax!==void 0&&dL(t,r.clipmin,r.clipmax)?Math.min(e,t.d2l(r.clipmax)):e}function dL(e,t,r){return t!==void 0&&r!==void 0?(t=e.d2l(t),r=e.d2l(r),t=l&&(a=l,r=l),o<=l&&(o=l,n=l)}}return r=Yat(r,t),n=Kat(n,t),[r,n]}});var Qa=ye((prr,yse)=>{"use strict";var w0=xa(),ph=uo(),P3=Xu(),QS=ba(),Vo=Mr(),I3=Vo.strTranslate,Eb=Ll(),Jat=Mb(),eM=va(),Xp=ao(),$at=Cd(),Joe=xO(),Yd=es(),Qat=Yd.ONEMAXYEAR,gL=Yd.ONEAVGYEAR,mL=Yd.ONEMINYEAR,eot=Yd.ONEMAXQUARTER,eB=Yd.ONEAVGQUARTER,yL=Yd.ONEMINQUARTER,tot=Yd.ONEMAXMONTH,R3=Yd.ONEAVGMONTH,_L=Yd.ONEMINMONTH,Yp=Yd.ONEWEEK,Fv=Yd.ONEDAY,s_=Fv/2,xm=Yd.ONEHOUR,tM=Yd.ONEMIN,xL=Yd.ONESEC,rot=Yd.ONEMILLI,iot=Yd.ONEMICROSEC,kb=Yd.MINUS_SIGN,TL=Yd.BADNUM,tB={K:"zeroline"},rB={K:"gridline",L:"path"},iB={K:"minor-gridline",L:"path"},lse={K:"tick",L:"path"},$oe={K:"tick",L:"text"},Qoe={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},AL=Nh(),$S=AL.MID_SHIFT,Cb=AL.CAP_SHIFT,rM=AL.LINE_SPACING,not=AL.OPPOSITE_SIDE,bL=3,kn=yse.exports={};kn.setConvert=ym();var aot=L3(),Ay=af(),oot=Ay.idSort,sot=Ay.isLinked;kn.id2name=Ay.id2name;kn.name2id=Ay.name2id;kn.cleanId=Ay.cleanId;kn.list=Ay.list;kn.listIds=Ay.listIds;kn.getFromId=Ay.getFromId;kn.getFromTrace=Ay.getFromTrace;var use=wg();kn.getAutoRange=use.getAutoRange;kn.findExtremes=use.findExtremes;var lot=1e-4;function sB(e){var t=(e[1]-e[0])*lot;return[e[0]-t,e[1]+t]}kn.coerceRef=function(e,t,r,n,i,a){var o=n.charAt(n.length-1),s=r._fullLayout._subplots[o+"axis"],l=n+"ref",u={};return i||(i=s[0]||(typeof a=="string"?a:a[0])),a||(a=i),s=s.concat(s.map(function(c){return c+" domain"})),u[l]={valType:"enumerated",values:s.concat(a?typeof a=="string"?[a]:a:[]),dflt:i},Vo.coerce(e,t,u,l)};kn.getRefType=function(e){return e===void 0?e:e==="paper"?"paper":e==="pixel"?"pixel":/( domain)$/.test(e)?"domain":"range"};kn.coercePosition=function(e,t,r,n,i,a){var o,s,l=kn.getRefType(n);if(l!=="range")o=Vo.ensureNumber,s=r(i,a);else{var u=kn.getFromId(t,n);a=u.fraction2r(a),s=r(i,a),o=u.cleanPos}e[i]=o(s)};kn.cleanPosition=function(e,t,r){var n=r==="paper"||r==="pixel"?Vo.ensureNumber:kn.getFromId(t,r).cleanPos;return n(e)};kn.redrawComponents=function(e,t){t=t||kn.listIds(e);var r=e._fullLayout;function n(i,a,o,s){for(var l=QS.getComponentMethod(i,a),u={},c=0;c2e-6||((r-e._forceTick0)/e._minDtick%1+1.000001)%1>2e-6)&&(e._minDtick=0))};kn.saveRangeInitial=function(e,t){for(var r=kn.list(e,"",!0),n=!1,i=0;if*.3||u(n)||u(i))){var h=r.dtick/2;e+=e+ho){var s=Number(r.substr(1));a.exactYears>o&&s%12===0?e=kn.tickIncrement(e,"M6","reverse")+Fv*1.5:a.exactMonths>o?e=kn.tickIncrement(e,"M1","reverse")+Fv*15.5:e-=s_;var l=kn.tickIncrement(e,r);if(l<=n)return l}return e}kn.prepMinorTicks=function(e,t,r){if(!t.minor.dtick){delete e.dtick;var n=t.dtick&&ph(t._tmin),i;if(n){var a=kn.tickIncrement(t._tmin,t.dtick,!0);i=[t._tmin,a*.99+t._tmin*.01]}else{var o=Vo.simpleMap(t.range,t.r2l);i=[o[0],.8*o[0]+.2*o[1]]}if(e.range=Vo.simpleMap(i,t.l2r),e._isMinor=!0,kn.prepTicks(e,r),n){var s=ph(t.dtick),l=ph(e.dtick),u=s?t.dtick:+t.dtick.substring(1),c=l?e.dtick:+e.dtick.substring(1);s&&l?JO(u,c)?u===2*Yp&&c===2*Fv&&(e.dtick=Yp):u===2*Yp&&c===3*Fv?e.dtick=Yp:u===Yp&&!(t._input.minor||{}).nticks?e.dtick=Fv:rse(u/c,2.5)?e.dtick=u/2:e.dtick=u:String(t.dtick).charAt(0)==="M"?l?e.dtick="M1":JO(u,c)?u>=12&&c===2&&(e.dtick="M3"):e.dtick=t.dtick:String(e.dtick).charAt(0)==="L"?String(t.dtick).charAt(0)==="L"?JO(u,c)||(e.dtick=rse(u/c,2.5)?t.dtick/2:t.dtick):e.dtick="D1":e.dtick==="D2"&&+t.dtick>1&&(e.dtick=1)}e.range=t.range}t.minor._tick0Init===void 0&&(e.tick0=t.tick0)};function JO(e,t){return Math.abs((e/t+.5)%1-.5)<.001}function rse(e,t){return Math.abs(e/t-1)<.001}kn.prepTicks=function(e,t){var r=Vo.simpleMap(e.range,e.r2l,void 0,void 0,t);if(e.tickmode==="auto"||!e.dtick){var n=e.nticks,i;n||(e.type==="category"||e.type==="multicategory"?(i=e.tickfont?Vo.bigFont(e.tickfont.size||12):15,n=e._length/i):(i=e._id.charAt(0)==="y"?40:80,n=Vo.constrain(e._length/i,4,9)+1),e._name==="radialaxis"&&(n*=2)),e.minor&&e.minor.tickmode!=="array"||e.tickmode==="array"&&(n*=100),e._roughDTick=Math.abs(r[1]-r[0])/n,kn.autoTicks(e,e._roughDTick),e._minDtick>0&&e.dtick0?(a=n-1,o=n):(a=n,o=n);var s=e[a].value,l=e[o].value,u=Math.abs(l-s),c=r||u,f=0;c>=mL?u>=mL&&u<=Qat?f=u:f=gL:r===eB&&c>=yL?u>=yL&&u<=eot?f=u:f=eB:c>=_L?u>=_L&&u<=tot?f=u:f=R3:r===Yp&&c>=Yp?f=Yp:c>=Fv?f=Fv:r===s_&&c>=s_?f=s_:r===xm&&c>=xm&&(f=xm);var h;f>=u&&(f=u,h=!0);var d=i+f;if(t.rangebreaks&&f>0){for(var v=84,x=0,b=0;bYp&&(f=u)}(f>0||n===0)&&(e[n].periodX=i+f/2)}}kn.calcTicks=function(t,r){for(var n=t.type,i=t.calendar,a=t.ticklabelstep,o=t.ticklabelmode==="period",s=t.range[0]>t.range[1],l=!t.ticklabelindex||Vo.isArrayOrTypedArray(t.ticklabelindex)?t.ticklabelindex:[t.ticklabelindex],u=Vo.simpleMap(t.range,t.r2l,void 0,void 0,r),c=u[1]=(k?0:1);A--){var L=!A;A?(t._dtickInit=t.dtick,t._tick0Init=t.tick0):(t.minor._dtickInit=t.minor.dtick,t.minor._tick0Init=t.minor.tick0);var _=A?t:Vo.extendFlat({},t,t.minor);if(L?kn.prepMinorTicks(_,t,r):kn.prepTicks(_,r),_.tickmode==="array"){A?(b=[],v=ise(t,!L)):(g=[],x=ise(t,!L));continue}if(_.tickmode==="sync"){b=[],v=vot(t);continue}var C=sB(u),M=C[0],p=C[1],P=ph(_.dtick),T=n==="log"&&!(P||_.dtick.charAt(0)==="L"),F=kn.tickFirst(_,r);if(A){if(t._tmin=F,F=p:V<=p;V=kn.tickIncrement(V,G,c,i)){if(A&&H++,_.rangebreaks&&!c){if(V=h)break}if(b.length>d||V===q)break;q=V;var N={value:V};A?(T&&V!==(V|0)&&(N.simpleLabel=!0),a>1&&H%a&&(N.skipLabel=!0),b.push(N)):(N.minor=!0,g.push(N))}}if(!g||g.length<2)l=!1;else{var W=(g[1].value-g[0].value)*(s?-1:1);Oot(W,t.tickformat)||(l=!1)}if(!l)E=b;else{var re=b.concat(g);o&&b.length&&(re=re.slice(1)),re=re.sort(function(Rt,kt){return Rt.value-kt.value}).filter(function(Rt,kt,Ct){return kt===0||Rt.value!==Ct[kt-1].value});var ae=re.map(function(Rt,kt){return Rt.minor===void 0&&!Rt.skipLabel?kt:null}).filter(function(Rt){return Rt!==null});ae.forEach(function(Rt){l.map(function(kt){var Ct=Rt+kt;Ct>=0&&Ct-1;ze--){if(b[ze].drop){b.splice(ze,1);continue}b[ze].value=QO(b[ze].value,t);var ce=t.c2p(b[ze].value);(Ce?Re>ce-me:Reh||Yth&&(Ct.periodX=h),Yti&&hgL)t/=gL,n=i(10),e.dtick="M"+12*_m(t,n,vL);else if(a>R3)t/=R3,e.dtick="M"+_m(t,1,nse);else if(a>Fv){if(e.dtick=_m(t,Fv,e._hasDayOfWeekBreaks?[1,2,7,14]:pot),!r){var o=kn.getTickFormat(e),s=e.ticklabelmode==="period";s&&(e._rawTick0=e.tick0),/%[uVW]/.test(o)?e.tick0=Vo.dateTick0(e.calendar,2):e.tick0=Vo.dateTick0(e.calendar,1),s&&(e._dowTick0=e.tick0)}}else a>xm?e.dtick=_m(t,xm,nse):a>tM?e.dtick=_m(t,tM,ase):a>xL?e.dtick=_m(t,xL,ase):(n=i(10),e.dtick=_m(t,n,vL))}else if(e.type==="log"){e.tick0=0;var l=Vo.simpleMap(e.range,e.r2l);if(e._isMinor&&(t*=1.5),t>.7)e.dtick=Math.ceil(t);else if(Math.abs(l[1]-l[0])<1){var u=1.5*Math.abs((l[1]-l[0])/t);t=Math.abs(Math.pow(10,l[1])-Math.pow(10,l[0]))/u,n=i(10),e.dtick="L"+_m(t,n,vL)}else e.dtick=t>.3?"D2":"D1"}else e.type==="category"||e.type==="multicategory"?(e.tick0=0,e.dtick=Math.ceil(Math.max(t,1))):cB(e)?(e.tick0=0,n=1,e.dtick=_m(t,n,got)):(e.tick0=0,n=i(10),e.dtick=_m(t,n,vL));if(e.dtick===0&&(e.dtick=1),!ph(e.dtick)&&typeof e.dtick!="string"){var c=e.dtick;throw e.dtick=1,"ax.dtick error: "+String(c)}};function dse(e){var t=e.dtick;if(e._tickexponent=0,!ph(t)&&typeof t!="string"&&(t=1),(e.type==="category"||e.type==="multicategory")&&(e._tickround=null),e.type==="date"){var r=e.r2l(e.tick0),n=e.l2r(r).replace(/(^-|i)/g,""),i=n.length;if(String(t).charAt(0)==="M")i>10||n.substr(5)!=="01-01"?e._tickround="d":e._tickround=+t.substr(1)%12===0?"y":"m";else if(t>=Fv&&i<=10||t>=Fv*15)e._tickround="d";else if(t>=tM&&i<=16||t>=xm)e._tickround="M";else if(t>=xL&&i<=19||t>=tM)e._tickround="S";else{var a=e.l2r(r+t).replace(/^-/,"").length;e._tickround=Math.max(i,a)-20,e._tickround<0&&(e._tickround=4)}}else if(ph(t)||t.charAt(0)==="L"){var o=e.range.map(e.r2d||Number);ph(t)||(t=Number(t.substr(1))),e._tickround=2-Math.floor(Math.log(t)/Math.LN10+.01);var s=Math.max(Math.abs(o[0]),Math.abs(o[1])),l=Math.floor(Math.log(s)/Math.LN10+.01),u=e.minexponent===void 0?3:e.minexponent;Math.abs(l)>u&&(wL(e.exponentformat)&&!lB(l)?e._tickexponent=3*Math.round((l-1)/3):e._tickexponent=l)}else e._tickround=null}kn.tickIncrement=function(e,t,r,n){var i=r?-1:1;if(ph(t))return Vo.increment(e,i*t);var a=t.charAt(0),o=i*Number(t.substr(1));if(a==="M")return Vo.incrementMonth(e,o,n);if(a==="L")return Math.log(Math.pow(10,e)+o)/Math.LN10;if(a==="D"){var s=t==="D2"?hse:fse,l=e+i*.01,u=Vo.roundUp(Vo.mod(l,1),s,r);return Math.floor(l)+Math.log(w0.round(Math.pow(10,u),1))/Math.LN10}throw"unrecognized dtick "+String(t)};kn.tickFirst=function(e,t){var r=e.r2l||Number,n=Vo.simpleMap(e.range,r,void 0,void 0,t),i=n[1]=0&&g<=e._length?b:null};if(a&&Vo.isArrayOrTypedArray(e.ticktext)){var f=Vo.simpleMap(e.range,e.r2l),h=(Math.abs(f[1]-f[0])-(e._lBreaks||0))/1e4;for(u=0;u"+s;else{var u=nM(e),c=e._trueSide||e.side;(!u&&c==="top"||u&&c==="bottom")&&(o+="
")}t.text=o}function yot(e,t,r,n,i){var a=e.dtick,o=t.x,s=e.tickformat,l=typeof a=="string"&&a.charAt(0);if(i==="never"&&(i=""),n&&l!=="L"&&(a="L3",l="L"),s||l==="L")t.text=iM(Math.pow(10,o),e,i,n);else if(ph(a)||l==="D"&&Vo.mod(o+.01,1)<.1){var u=Math.round(o),c=Math.abs(u),f=e.exponentformat;f==="power"||wL(f)&&lB(u)?(u===0?t.text=1:u===1?t.text="10":t.text="10"+(u>1?"":kb)+c+"",t.fontSize*=1.25):(f==="e"||f==="E")&&c>2?t.text="1"+f+(u>0?"+":kb)+c:(t.text=iM(Math.pow(10,o),e,"","fakehover"),a==="D1"&&e._id.charAt(0)==="y"&&(t.dy-=t.fontSize/6))}else if(l==="D")t.text=String(Math.round(Math.pow(10,Vo.mod(o,1)))),t.fontSize*=.75;else throw"unrecognized dtick "+String(a);if(e.dtick==="D1"){var h=String(t.text).charAt(0);(h==="0"||h==="1")&&(e._id.charAt(0)==="y"?t.dx-=t.fontSize/4:(t.dy+=t.fontSize/2,t.dx+=(e.range[1]>e.range[0]?1:-1)*t.fontSize*(o<0?.5:.25)))}}function _ot(e,t){var r=e._categories[Math.round(t.x)];r===void 0&&(r=""),t.text=String(r)}function xot(e,t,r){var n=Math.round(t.x),i=e._categories[n]||[],a=i[1]===void 0?"":String(i[1]),o=i[0]===void 0?"":String(i[0]);r?t.text=o+" - "+a:(t.text=a,t.text2=o)}function bot(e,t,r,n,i){i==="never"?i="":e.showexponent==="all"&&Math.abs(t.x/e.dtick)<1e-6&&(i="hide"),t.text=iM(t.x,e,i,n)}function wot(e,t,r,n,i){if(e.thetaunit==="radians"&&!r){var a=t.x/180;if(a===0)t.text="0";else{var o=Tot(a);if(o[1]>=100)t.text=iM(Vo.deg2rad(t.x),e,i,n);else{var s=t.x<0;o[1]===1?o[0]===1?t.text="\u03C0":t.text=o[0]+"\u03C0":t.text=["",o[0],"","\u2044","",o[1],"","\u03C0"].join(""),s&&(t.text=kb+t.text)}}}else t.text=iM(t.x,e,i,n)}function Tot(e){function t(s,l){return Math.abs(s-l)<=1e-6}function r(s,l){return t(l,0)?s:r(l,s%l)}function n(s){for(var l=1;!t(Math.round(s*l)/l,s);)l*=10;return l}var i=n(e),a=e*i,o=Math.abs(r(a,i));return[Math.round(a/o),Math.round(i/o)]}var Aot=["f","p","n","\u03BC","m","","k","M","G","T"];function wL(e){return e==="SI"||e==="B"}function lB(e){return e>14||e<-15}function iM(e,t,r,n){var i=e<0,a=t._tickround,o=r||t.exponentformat||"B",s=t._tickexponent,l=kn.getTickFormat(t),u=t.separatethousands;if(n){var c={exponentformat:o,minexponent:t.minexponent,dtick:t.showexponent==="none"?t.dtick:ph(e)&&Math.abs(e)||1,range:t.showexponent==="none"?t.range.map(t.r2d):[0,e||1]};dse(c),a=(Number(c._tickround)||0)+4,s=c._tickexponent,t.hoverformat&&(l=t.hoverformat)}if(l)return t._numFormat(l)(e).replace(/-/g,kb);var f=Math.pow(10,-a)/2;if(o==="none"&&(s=0),e=Math.abs(e),e"+v+"":o==="B"&&s===9?e+="B":wL(o)&&(e+=Aot[s/3+5])}return i?kb+e:e}kn.getTickFormat=function(e){var t;function r(l){return typeof l!="string"?l:Number(l.replace("M",""))*R3}function n(l,u){var c=["L","D"];if(typeof l==typeof u){if(typeof l=="number")return l-u;var f=c.indexOf(l.charAt(0)),h=c.indexOf(u.charAt(0));return f===h?Number(l.replace(/(L|D)/g,""))-Number(u.replace(/(L|D)/g,"")):f-h}else return typeof l=="number"?1:-1}function i(l,u,c){var f=c||function(v){return v},h=u[0],d=u[1];return(!h&&typeof h!="number"||f(h)<=f(l))&&(!d&&typeof d!="number"||f(d)>=f(l))}function a(l,u){var c=u[0]===null,f=u[1]===null,h=n(l,u[0])>=0,d=n(l,u[1])<=0;return(c||h)&&(f||d)}var o,s;if(e.tickformatstops&&e.tickformatstops.length>0)switch(e.type){case"date":case"linear":{for(t=0;t=0&&i.unshift(i.splice(c,1).shift())}});var s={false:{left:0,right:0}};return Vo.syncOrAsync(i.map(function(l){return function(){if(l){var u=kn.getFromId(e,l);r||(r={}),r.axShifts=s,r.overlayingShiftedAx=o;var c=kn.drawOne(e,u,r);return u._shiftPusher&&oB(u,u._fullDepth||0,s,!0),u._r=u.range.slice(),u._rl=Vo.simpleMap(u._r,u.r2l),c}}}))};kn.drawOne=function(e,t,r){r=r||{};var n=r.axShifts||{},i=r.overlayingShiftedAx||[],a,o,s;t.setScale();var l=e._fullLayout,u=t._id,c=u.charAt(0),f=kn.counterLetter(u),h=l._plots[t._mainSubplot];if(!h)return;if(t._shiftPusher=t.autoshift||i.indexOf(t._id)!==-1||i.indexOf(t.overlaying)!==-1,t._shiftPusher&t.anchor==="free"){var d=t.linewidth/2||0;t.ticks==="inside"&&(d+=t.ticklen),oB(t,d,n,!0),oB(t,t.shift||0,n,!1)}(r.skipTitle!==!0||t._shift===void 0)&&(t._shift=qot(t,n));var v=h[c+"axislayer"],x=t._mainLinePosition,b=x+=t._shift,g=t._mainMirrorPosition,E=t._vals=kn.calcTicks(t),k=[t.mirror,b,g].join("_");for(a=0;a0?Ct.bottom-Rt:0,kt))));var Ke=0,xt=0;if(t._shiftPusher&&(Ke=Math.max(kt,Ct.height>0?rt==="l"?Rt-Ct.left:Ct.right-Rt:0),t.title.text!==l._dfltTitle[c]&&(xt=(t._titleStandoff||0)+(t._titleScoot||0),rt==="l"&&(xt+=sse(t))),t._fullDepth=Math.max(Ke,xt)),t.automargin){Yt={x:0,y:0,r:0,l:0,t:0,b:0};var bt=[0,1],Lt=typeof t._shift=="number"?t._shift:0;if(c==="x"){if(rt==="b"?Yt[rt]=t._depth:(Yt[rt]=t._depth=Math.max(Ct.width>0?Rt-Ct.top:0,kt),bt.reverse()),Ct.width>0){var St=Ct.right-(t._offset+t._length);St>0&&(Yt.xr=1,Yt.r=St);var Et=t._offset-Ct.left;Et>0&&(Yt.xl=0,Yt.l=Et)}}else if(rt==="l"?(t._depth=Math.max(Ct.height>0?Rt-Ct.left:0,kt),Yt[rt]=t._depth-Lt):(t._depth=Math.max(Ct.height>0?Ct.right-Rt:0,kt),Yt[rt]=t._depth+Lt,bt.reverse()),Ct.height>0){var dt=Ct.bottom-(t._offset+t._length);dt>0&&(Yt.yb=0,Yt.b=dt);var Ht=t._offset-Ct.top;Ht>0&&(Yt.yt=1,Yt.t=Ht)}Yt[f]=t.anchor==="free"?t.position:t._anchorAxis.domain[bt[0]],t.title.text!==l._dfltTitle[c]&&(Yt[rt]+=sse(t)+(t.title.standoff||0)),t.mirror&&t.anchor!=="free"&&(xr={x:0,y:0,r:0,l:0,t:0,b:0},xr[ot]=t.linewidth,t.mirror&&t.mirror!==!0&&(xr[ot]+=kt),t.mirror===!0||t.mirror==="ticks"?xr[f]=t._anchorAxis.domain[bt[1]]:(t.mirror==="all"||t.mirror==="allticks")&&(xr[f]=[t._counterDomainMin,t._counterDomainMax][bt[1]]))}qt&&(er=QS.getComponentMethod("rangeslider","autoMarginOpts")(e,t)),typeof t.automargin=="string"&&(ose(Yt,t.automargin),ose(xr,t.automargin)),P3.autoMargin(e,uB(t),Yt),P3.autoMargin(e,gse(t),xr),P3.autoMargin(e,mse(t),er)}),Vo.syncOrAsync(nt)}};function ose(e,t){if(e){var r=Object.keys(Qoe).reduce(function(n,i){return t.indexOf(i)!==-1&&Qoe[i].forEach(function(a){n[a]=1}),n},{});Object.keys(e).forEach(function(n){r[n]||(n.length===1?e[n]=0:delete e[n])})}}function Sot(e,t){var r=[],n,i=function(a,o){var s=a.xbnd[o];s!==null&&r.push(Vo.extendFlat({},a,{x:s}))};if(t.length){for(n=0;ne.range[1],s=e.ticklabelposition&&e.ticklabelposition.indexOf("inside")!==-1,l=!s;if(r){var u=o?-1:1;r=r*u}if(n){var c=e.side,f=s&&(c==="top"||c==="left")||l&&(c==="bottom"||c==="right")?1:-1;n=n*f}return e._id.charAt(0)==="x"?function(h){return I3(i+e._offset+e.l2p(nB(h))+r,a+n)}:function(h){return I3(a+n,i+e._offset+e.l2p(nB(h))+r)}};function nB(e){return e.periodX!==void 0?e.periodX:e.x}function Cot(e){var t=e.ticklabelposition||"",r=function(d){return t.indexOf(d)!==-1},n=r("top"),i=r("left"),a=r("right"),o=r("bottom"),s=r("inside"),l=o||i||n||a;if(!l&&!s)return[0,0];var u=e.side,c=l?(e.tickwidth||0)/2:0,f=bL,h=e.tickfont?e.tickfont.size:12;return(o||n)&&(c+=h*Cb,f+=(e.linewidth||0)/2),(i||a)&&(c+=(e.linewidth||0)/2,f+=bL),s&&u==="top"&&(f-=h*(1-Cb)),(i||n)&&(c=-c),(u==="bottom"||u==="right")&&(f=-f),[l?c:0,s?f:0]}kn.makeTickPath=function(e,t,r,n){n||(n={});var i=n.minor;if(i&&!e.minor)return"";var a=n.len!==void 0?n.len:i?e.minor.ticklen:e.ticklen,o=e._id.charAt(0),s=(e.linewidth||1)/2;return o==="x"?"M0,"+(t+s*r)+"v"+a*r:"M"+(t+s*r)+",0h"+a*r};kn.makeLabelFns=function(e,t,r){var n=e.ticklabelposition||"",i=function(F){return n.indexOf(F)!==-1},a=i("top"),o=i("left"),s=i("right"),l=i("bottom"),u=l||o||a||s,c=i("inside"),f=n==="inside"&&e.ticks==="inside"||!c&&e.ticks==="outside"&&e.tickson!=="boundaries",h=0,d=0,v=f?e.ticklen:0;if(c?v*=-1:u&&(v=0),f&&(h+=v,r)){var x=Vo.deg2rad(r);h=v*Math.cos(x)+1,d=v*Math.sin(x)}e.showticklabels&&(f||e.showline)&&(h+=.2*e.tickfont.size),h+=(e.linewidth||1)/2*(c?-1:1);var b={labelStandoff:h,labelShift:d},g,E,k,A,L=0,_=e.side,C=e._id.charAt(0),M=e.tickangle,p;if(C==="x")p=!c&&_==="bottom"||c&&_==="top",A=p?1:-1,c&&(A*=-1),g=d*A,E=t+h*A,k=p?1:-.2,Math.abs(M)===90&&(c?k+=$S:M===-90&&_==="bottom"?k=Cb:M===90&&_==="top"?k=$S:k=.5,L=$S/2*(M/90)),b.xFn=function(F){return F.dx+g+L*F.fontSize},b.yFn=function(F){return F.dy+E+F.fontSize*k},b.anchorFn=function(F,q){if(u){if(o)return"end";if(s)return"start"}return!ph(q)||q===0||q===180?"middle":q*A<0!==c?"end":"start"},b.heightFn=function(F,q,V){return q<-60||q>60?-.5*V:e.side==="top"!==c?-V:0};else if(C==="y"){if(p=!c&&_==="left"||c&&_==="right",A=p?1:-1,c&&(A*=-1),g=h,E=d*A,k=0,!c&&Math.abs(M)===90&&(M===-90&&_==="left"||M===90&&_==="right"?k=Cb:k=.5),c){var P=ph(M)?+M:0;if(P!==0){var T=Vo.deg2rad(P);L=Math.abs(Math.sin(T))*Cb*A,k=0}}b.xFn=function(F){return F.dx+t-(g+F.fontSize*k)*A+L*F.fontSize},b.yFn=function(F){return F.dy+E+F.fontSize*$S},b.anchorFn=function(F,q){return ph(q)&&Math.abs(q)===90?"middle":p?"end":"start"},b.heightFn=function(F,q,V){return e.side==="right"&&(q*=-1),q<-30?-V:q<30?-.5*V:0}}return b};function SL(e){return[e.text,e.x,e.axInfo,e.font,e.fontSize,e.fontColor].join("_")}kn.drawTicks=function(e,t,r){r=r||{};var n=t._id+"tick",i=[].concat(t.minor&&t.minor.ticks?r.vals.filter(function(o){return o.minor&&!o.noTick}):[]).concat(t.ticks?r.vals.filter(function(o){return!o.minor&&!o.noTick}):[]),a=r.layer.selectAll("path."+n).data(i,SL);a.exit().remove(),a.enter().append("path").classed(n,1).classed("ticks",1).classed("crisp",r.crisp!==!1).each(function(o){return eM.stroke(w0.select(this),o.minor?t.minor.tickcolor:t.tickcolor)}).style("stroke-width",function(o){return Xp.crispRound(e,o.minor?t.minor.tickwidth:t.tickwidth,1)+"px"}).attr("d",r.path).style("display",null),ML(t,[lse]),a.attr("transform",r.transFn)};kn.drawGrid=function(e,t,r){if(r=r||{},t.tickmode!=="sync"){var n=t._id+"grid",i=t.minor&&t.minor.showgrid,a=i?r.vals.filter(function(g){return g.minor}):[],o=t.showgrid?r.vals.filter(function(g){return!g.minor}):[],s=r.counterAxis;if(s&&kn.shouldShowZeroLine(e,t,s))for(var l=t.tickmode==="array",u=0;u=0;v--){var x=v?h:d;if(x){var b=x.selectAll("path."+n).data(v?o:a,SL);b.exit().remove(),b.enter().append("path").classed(n,1).classed("crisp",r.crisp!==!1),b.attr("transform",r.transFn).attr("d",r.path).each(function(g){return eM.stroke(w0.select(this),g.minor?t.minor.gridcolor:t.gridcolor||"#ddd")}).style("stroke-dasharray",function(g){return Xp.dashStyle(g.minor?t.minor.griddash:t.griddash,g.minor?t.minor.gridwidth:t.gridwidth)}).style("stroke-width",function(g){return(g.minor?f:t._gw)+"px"}).style("display",null),typeof r.path=="function"&&b.attr("d",r.path)}}ML(t,[rB,iB])}};kn.drawZeroLine=function(e,t,r){r=r||r;var n=t._id+"zl",i=kn.shouldShowZeroLine(e,t,r.counterAxis),a=r.layer.selectAll("path."+n).data(i?[{x:0,id:t._id}]:[]);a.exit().remove(),a.enter().append("path").classed(n,1).classed("zl",1).classed("crisp",r.crisp!==!1).each(function(){r.layer.selectAll("path").sort(function(o,s){return oot(o.id,s.id)})}),a.attr("transform",r.transFn).attr("d",r.path).call(eM.stroke,t.zerolinecolor||eM.defaultLine).style("stroke-width",Xp.crispRound(e,t.zerolinewidth,t._gw||1)+"px").style("display",null),ML(t,[tB])};kn.drawLabels=function(e,t,r){r=r||{};var n=e._fullLayout,i=t._id,a=r.cls||i+"tick",o=r.vals.filter(function(N){return N.text}),s=r.labelFns,l=r.secondary?0:t.tickangle,u=(t._prevTickAngles||{})[a],c=r.layer.selectAll("g."+a).data(t.showticklabels?o:[],SL),f=[];c.enter().append("g").classed(a,1).append("text").attr("text-anchor","middle").each(function(N){var W=w0.select(this),re=e._promises.length;W.call(Eb.positionText,s.xFn(N),s.yFn(N)).call(Xp.font,{family:N.font,size:N.fontSize,color:N.fontColor,weight:N.fontWeight,style:N.fontStyle,variant:N.fontVariant,textcase:N.fontTextcase,lineposition:N.fontLineposition,shadow:N.fontShadow}).text(N.text).call(Eb.convertToTspans,e),e._promises[re]?f.push(e._promises.pop().then(function(){h(W,l)})):h(W,l)}),ML(t,[$oe]),c.exit().remove(),r.repositionOnUpdate&&c.each(function(N){w0.select(this).select("text").call(Eb.positionText,s.xFn(N),s.yFn(N))});function h(N,W){N.each(function(re){var ae=w0.select(this),_e=ae.select(".text-math-group"),Me=s.anchorFn(re,W),ke=r.transFn.call(ae.node(),re)+(ph(W)&&+W!=0?" rotate("+W+","+s.xFn(re)+","+(s.yFn(re)-re.fontSize/2)+")":""),ge=Eb.lineCount(ae),ie=rM*re.fontSize,Te=s.heightFn(re,ph(W)?+W:0,(ge-1)*ie);if(Te&&(ke+=I3(0,Te)),_e.empty()){var Ee=ae.select("text");Ee.attr({transform:ke,"text-anchor":Me}),Ee.style("opacity",1),t._adjustTickLabelsOverflow&&t._adjustTickLabelsOverflow()}else{var Ae=Xp.bBox(_e.node()).width,ze=Ae*{end:-.5,start:.5}[Me];_e.attr("transform",ke+I3(ze,0))}})}t._adjustTickLabelsOverflow=function(){var N=t.ticklabeloverflow;if(!(!N||N==="allow")){var W=N.indexOf("hide")!==-1,re=t._id.charAt(0)==="x",ae=0,_e=re?e._fullLayout.width:e._fullLayout.height;if(N.indexOf("domain")!==-1){var Me=Vo.simpleMap(t.range,t.r2l);ae=t.l2p(Me[0])+t._offset,_e=t.l2p(Me[1])+t._offset}var ke=Math.min(ae,_e),ge=Math.max(ae,_e),ie=t.side,Te=1/0,Ee=-1/0;c.each(function(me){var Re=w0.select(this),ce=Re.select(".text-math-group");if(ce.empty()){var Ge=Xp.bBox(Re.node()),nt=0;re?(Ge.right>ge||Ge.leftge||Ge.top+(t.tickangle?0:me.fontSize/4)t["_visibleLabelMin_"+Me._id]?me.style("display","none"):ge.K==="tick"&&!ke&&me.style("display",null)})})})})},h(c,u+1?u:l);function d(){return f.length&&Promise.all(f)}var v=null;function x(){if(h(c,l),o.length&&t.autotickangles&&(t.type!=="log"||String(t.dtick).charAt(0)!=="D")){v=t.autotickangles[0];var N=0,W=[],re,ae=1;c.each(function(Ct){N=Math.max(N,Ct.fontSize);var Yt=t.l2p(Ct.x),xr=aB(this),er=Xp.bBox(xr.node());ae=Math.max(ae,Eb.lineCount(xr)),W.push({top:0,bottom:10,height:10,left:Yt-er.width/2,right:Yt+er.width/2+2,width:er.width+2})});var _e=(t.tickson==="boundaries"||t.showdividers)&&!r.secondary,Me=o.length,ke=Math.abs((o[Me-1].x-o[0].x)*t._m)/(Me-1),ge=_e?ke/2:ke,ie=_e?t.ticklen:N*1.25*ae,Te=Math.sqrt(Math.pow(ge,2)+Math.pow(ie,2)),Ee=ge/Te,Ae=t.autotickangles.map(function(Ct){return Ct*Math.PI/180}),ze=Ae.find(function(Ct){return Math.abs(Math.cos(Ct))<=Ee});ze===void 0&&(ze=Ae.reduce(function(Ct,Yt){return Math.abs(Math.cos(Ct))H*V&&(T=V,M[C]=p[C]=F[C])}var X=Math.abs(T-P);X-A>0?(X-=A,A*=1+A/X):A=0,t._id.charAt(0)!=="y"&&(A=-A),M[_]=E.p2r(E.r2p(p[_])+L*A),E.autorange==="min"||E.autorange==="max reversed"?(M[0]=null,E._rangeInitial0=void 0,E._rangeInitial1=void 0):(E.autorange==="max"||E.autorange==="min reversed")&&(M[1]=null,E._rangeInitial0=void 0,E._rangeInitial1=void 0),n._insideTickLabelsUpdaterange[E._name+".range"]=M}var G=Vo.syncOrAsync(b);return G&&G.then&&e._promises.push(G),G};function Lot(e,t,r){var n=t._id+"divider",i=r.vals,a=r.layer.selectAll("path."+n).data(i,SL);a.exit().remove(),a.enter().insert("path",":first-child").classed(n,1).classed("crisp",1).call(eM.stroke,t.dividercolor).style("stroke-width",Xp.crispRound(e,t.dividerwidth,1)+"px"),a.attr("transform",r.transFn).attr("d",r.path)}kn.getPxPosition=function(e,t){var r=e._fullLayout._size,n=t._id.charAt(0),i=t.side,a;if(t.anchor!=="free"?a=t._anchorAxis:n==="x"?a={_offset:r.t+(1-(t.position||0))*r.h,_length:0}:n==="y"&&(a={_offset:r.l+(t.position||0)*r.w+t._shift,_length:0}),i==="top"||i==="left")return a._offset;if(i==="bottom"||i==="right")return a._offset+a._length};function sse(e){var t=e.title.font.size,r=(e.title.text.match(Eb.BR_TAG_ALL)||[]).length;return e.title.hasOwnProperty("standoff")?t*(Cb+r*rM):r?t*(r+1)*rM:t}function Pot(e,t){var r=e._fullLayout,n=t._id,i=n.charAt(0),a=t.title.font.size,o,s=(t.title.text.match(Eb.BR_TAG_ALL)||[]).length;if(t.title.hasOwnProperty("standoff"))t.side==="bottom"||t.side==="right"?o=t._depth+t.title.standoff+a*Cb:(t.side==="top"||t.side==="left")&&(o=t._depth+t.title.standoff+a*($S+s*rM));else{var l=nM(t);if(t.type==="multicategory")o=t._depth;else{var u=1.5*a;l&&(u=.5*a,t.ticks==="outside"&&(u+=t.ticklen)),o=10+u+(t.linewidth?t.linewidth-1:0)}l||(i==="x"?o+=t.side==="top"?a*(t.showticklabels?1:0):a*(t.showticklabels?1.5:.5):o+=t.side==="right"?a*(t.showticklabels?1:.5):a*(t.showticklabels?.5:0))}var c=kn.getPxPosition(e,t),f,h,d;i==="x"?(h=t._offset+t._length/2,d=t.side==="top"?c-o:c+o):(d=t._offset+t._length/2,h=t.side==="right"?c+o:c-o,f={rotate:"-90",offset:0});var v;if(t.type!=="multicategory"){var x=t._selections[t._id+"tick"];if(v={selection:x,side:t.side},x&&x.node()&&x.node().parentNode){var b=Xp.getTranslate(x.node().parentNode);v.offsetLeft=b.x,v.offsetTop=b.y}t.title.hasOwnProperty("standoff")&&(v.pad=0)}return t._titleStandoff=o,Jat.draw(e,n+"title",{propContainer:t,propName:t._name+".title.text",placeholder:r._dfltTitle[i],avoid:v,transform:f,attributes:{x:h,y:d,"text-anchor":"middle"}})}kn.shouldShowZeroLine=function(e,t,r){var n=Vo.simpleMap(t.range,t.r2l);return n[0]*n[1]<=0&&t.zeroline&&(t.type==="linear"||t.type==="-")&&!(t.rangebreaks&&t.maskBreaks(0)===TL)&&(pse(t,0)||!Iot(e,t,r,n)||Rot(e,t))};kn.clipEnds=function(e,t){return t.filter(function(r){return pse(e,r.x)})};function pse(e,t){var r=e.l2p(t);return r>1&&r1)for(i=1;i=i.min&&e=iot:/%L/.test(t)?e>=rot:/%[SX]/.test(t)?e>=xL:/%M/.test(t)?e>=tM:/%[HI]/.test(t)?e>=xm:/%p/.test(t)?e>=s_:/%[Aadejuwx]/.test(t)?e>=Fv:/%[UVW]/.test(t)?e>=Yp:/%[Bbm]/.test(t)?e>=_L:/%[q]/.test(t)?e>=yL:/%[Yy]/.test(t)?e>=mL:!0}});var fB=ye((grr,_se)=>{"use strict";_se.exports=function(t,r,n){var i,a;if(n){var o=r==="reversed"||r==="min reversed"||r==="max reversed";i=n[o?1:0],a=n[o?0:1]}var s=t("autorangeoptions.minallowed",a===null?i:void 0),l=t("autorangeoptions.maxallowed",i===null?a:void 0);s===void 0&&t("autorangeoptions.clipmin"),l===void 0&&t("autorangeoptions.clipmax"),t("autorangeoptions.include")}});var hB=ye((mrr,xse)=>{"use strict";var Bot=fB();xse.exports=function(t,r,n,i){var a=r._template||{},o=r.type||a.type||"-";n("minallowed"),n("maxallowed");var s=n("range");if(!s){var l;!i.noInsiderange&&o!=="log"&&(l=n("insiderange"),l&&(l[0]===null||l[1]===null)&&(r.insiderange=!1,l=void 0),l&&(s=n("range",l)))}var u=r.getAutorangeDflt(s,i),c=n("autorange",u),f;s&&(s[0]===null&&s[1]===null||(s[0]===null||s[1]===null)&&(c==="reversed"||c===!0)||s[0]!==null&&(c==="min"||c==="max reversed")||s[1]!==null&&(c==="max"||c==="min reversed"))&&(s=void 0,delete r.range,r.autorange=!0,f=!0),f||(u=r.getAutorangeDflt(s,i),c=n("autorange",u)),c&&(Bot(n,c,s),(o==="linear"||o==="-")&&n("rangemode")),r.cleanRange()}});var wse=ye((yrr,bse)=>{var Not={left:0,top:0};bse.exports=Uot;function Uot(e,t,r){t=t||e.currentTarget||e.srcElement,Array.isArray(r)||(r=[0,0]);var n=e.clientX||0,i=e.clientY||0,a=Vot(t);return r[0]=n-a.left,r[1]=i-a.top,r}function Vot(e){return e===window||e===document||e===document.body?Not:e.getBoundingClientRect()}});var EL=ye((_rr,Tse)=>{"use strict";var Hot=Yq();function Got(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(r){e=!1}return e}Tse.exports=Hot&&Got()});var Sse=ye((xrr,Ase)=>{"use strict";Ase.exports=function(t,r,n,i,a){var o=(t-n)/(i-n),s=o+r/(i-n),l=(o+s)/2;return a==="left"||a==="bottom"?o:a==="center"||a==="middle"?l:a==="right"||a==="top"?s:o<2/3-l?o:s>4/3-l?s:l}});var kse=ye((brr,Ese)=>{"use strict";var Mse=Mr(),jot=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];Ese.exports=function(t,r,n,i){return n==="left"?t=0:n==="center"?t=1:n==="right"?t=2:t=Mse.constrain(Math.floor(t*3),0,2),i==="bottom"?r=0:i==="middle"?r=1:i==="top"?r=2:r=Mse.constrain(Math.floor(r*3),0,2),jot[r][t]}});var Lse=ye((wrr,Cse)=>{"use strict";var Wot=g3(),Zot=L6(),Xot=DS().getGraphDiv,Yot=IS(),dB=Cse.exports={};dB.wrapped=function(e,t,r){e=Xot(e),e._fullLayout&&Zot.clear(e._fullLayout._uid+Yot.HOVERID),dB.raw(e,t,r)};dB.raw=function(t,r){var n=t._fullLayout,i=t._hoverdata;r||(r={}),!(r.target&&!t._dragged&&Wot.triggerHandler(t,"plotly_beforehover",r)===!1)&&(n._hoverlayer.selectAll("g").remove(),n._hoverlayer.selectAll("line").remove(),n._hoverlayer.selectAll("circle").remove(),t._hoverdata=void 0,r.target&&i&&t.emit("plotly_unhover",{event:r,points:i}))}});var gv=ye((Trr,Rse)=>{"use strict";var Kot=wse(),vB=Jq(),Jot=EL(),$ot=Mr().removeElement,Qot=ad(),Lb=Rse.exports={};Lb.align=Sse();Lb.getCursor=kse();var Pse=Lse();Lb.unhover=Pse.wrapped;Lb.unhoverRaw=Pse.raw;Lb.init=function(t){var r=t.gd,n=1,i=r._context.doubleClickDelay,a=t.element,o,s,l,u,c,f,h,d;r._mouseDownTime||(r._mouseDownTime=0),a.style.pointerEvents="all",a.onmousedown=b,Jot?(a._ontouchstart&&a.removeEventListener("touchstart",a._ontouchstart),a._ontouchstart=b,a.addEventListener("touchstart",b,{passive:!1})):a.ontouchstart=b;function v(k,A,L){return Math.abs(k)i&&(n=Math.max(n-1,1)),r._dragged)t.doneFn&&t.doneFn();else if(t.clickFn&&t.clickFn(n,f),!d){var A;try{A=new MouseEvent("click",k)}catch(_){var L=pB(k);A=document.createEvent("MouseEvents"),A.initMouseEvent("click",k.bubbles,k.cancelable,k.view,k.detail,k.screenX,k.screenY,L[0],L[1],k.ctrlKey,k.altKey,k.shiftKey,k.metaKey,k.button,k.relatedTarget)}h.dispatchEvent(A)}r._dragging=!1,r._dragged=!1}};function Ise(){var e=document.createElement("div");e.className="dragcover";var t=e.style;return t.position="fixed",t.left=0,t.right=0,t.top=0,t.bottom=0,t.zIndex=999999999,t.background="none",document.body.appendChild(e),e}Lb.coverSlip=Ise;function pB(e){return Kot(e.changedTouches?e.changedTouches[0]:e,document.body)}});var Tg=ye((Arr,Dse)=>{"use strict";Dse.exports=function(t,r){(t.attr("class")||"").split(" ").forEach(function(n){n.indexOf("cursor-")===0&&t.classed(n,!1)}),r&&t.classed("cursor-"+r,!0)}});var qse=ye((Srr,Fse)=>{"use strict";var gB=Tg(),aM="data-savedcursor",zse="!!";Fse.exports=function(t,r){var n=t.attr(aM);if(r){if(!n){for(var i=(t.attr("class")||"").split(" "),a=0;a{"use strict";var mB=Su(),est=dh();Ose.exports={_isSubplotObj:!0,visible:{valType:"boolean",dflt:!0,editType:"legend"},bgcolor:{valType:"color",editType:"legend"},bordercolor:{valType:"color",dflt:est.defaultLine,editType:"legend"},borderwidth:{valType:"number",min:0,dflt:0,editType:"legend"},font:mB({editType:"legend"}),grouptitlefont:mB({editType:"legend"}),orientation:{valType:"enumerated",values:["v","h"],dflt:"v",editType:"legend"},traceorder:{valType:"flaglist",flags:["reversed","grouped"],extras:["normal"],editType:"legend"},tracegroupgap:{valType:"number",min:0,dflt:10,editType:"legend"},entrywidth:{valType:"number",min:0,editType:"legend"},entrywidthmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels",editType:"legend"},indentation:{valType:"number",min:-15,dflt:0,editType:"legend"},itemsizing:{valType:"enumerated",values:["trace","constant"],dflt:"trace",editType:"legend"},itemwidth:{valType:"number",min:30,dflt:30,editType:"legend"},itemclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggle",editType:"legend"},itemdoubleclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggleothers",editType:"legend"},groupclick:{valType:"enumerated",values:["toggleitem","togglegroup"],dflt:"togglegroup",editType:"legend"},x:{valType:"number",editType:"legend"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"legend"},y:{valType:"number",editType:"legend"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],editType:"legend"},uirevision:{valType:"any",editType:"none"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"legend"},title:{text:{valType:"string",dflt:"",editType:"legend"},font:mB({editType:"legend"}),side:{valType:"enumerated",values:["top","left","top left","top center","top right"],editType:"legend"},editType:"legend"},editType:"legend"}});var CL=ye(kL=>{"use strict";kL.isGrouped=function(t){return(t.traceorder||"").indexOf("grouped")!==-1};kL.isVertical=function(t){return t.orientation!=="h"};kL.isReversed=function(t){return(t.traceorder||"").indexOf("reversed")!==-1}});var bB=ye((krr,Bse)=>{"use strict";var _B=ba(),Kp=Mr(),tst=Vs(),rst=vl(),ist=yB(),nst=s3(),xB=CL();function ast(e,t,r,n){var i=t[e]||{},a=tst.newContainer(r,e);function o(G,N){return Kp.coerce(i,a,ist,G,N)}var s=Kp.coerceFont(o,"font",r.font);o("bgcolor",r.paper_bgcolor),o("bordercolor");var l=o("visible");if(l){for(var u,c=function(G,N){var W=u._input,re=u;return Kp.coerce(W,re,rst,G,N)},f=r.font||{},h=Kp.coerceFont(o,"grouptitlefont",f,{overrideDflt:{size:Math.round(f.size*1.1)}}),d=0,v=!1,x="normal",b=(r.shapes||[]).filter(function(G){return G.showlegend}),g=n.concat(b).filter(function(G){return e===(G.legend||"legend")}),E=0;E(e==="legend"?1:0));if(A===!1&&(r[e]=void 0),!(A===!1&&!i.uirevision)&&(o("uirevision",r.uirevision),A!==!1)){o("borderwidth");var L=o("orientation"),_=o("yref"),C=o("xref"),M=L==="h",p=_==="paper",P=C==="paper",T,F,q,V="left";M?(T=0,_B.getComponentMethod("rangeslider","isVisible")(t.xaxis)?p?(F=1.1,q="bottom"):(F=1,q="top"):p?(F=-.1,q="top"):(F=0,q="bottom")):(F=1,q="auto",P?T=1.02:(T=1,V="right")),Kp.coerce(i,a,{x:{valType:"number",editType:"legend",min:P?-2:0,max:P?3:1,dflt:T}},"x"),Kp.coerce(i,a,{y:{valType:"number",editType:"legend",min:p?-2:0,max:p?3:1,dflt:F}},"y"),o("traceorder",x),xB.isGrouped(r[e])&&o("tracegroupgap"),o("entrywidth"),o("entrywidthmode"),o("indentation"),o("itemsizing"),o("itemwidth"),o("itemclick"),o("itemdoubleclick"),o("groupclick"),o("xanchor",V),o("yanchor",q),o("valign"),Kp.noneOrAll(i,a,["x","y"]);var H=o("title.text");if(H){o("title.side",M?"left":"top");var X=Kp.extendFlat({},s,{size:Kp.bigFont(s.size)});Kp.coerceFont(o,"title.font",X)}}}}Bse.exports=function(t,r,n){var i,a=n.slice(),o=r.shapes;if(o)for(i=0;i{"use strict";var D3=ba(),TB=Mr(),ost=TB.pushUnique,wB=!0;Nse.exports=function(t,r,n){var i=r._fullLayout;if(r._dragged||r._editing)return;var a=i.legend.itemclick,o=i.legend.itemdoubleclick,s=i.legend.groupclick;n===1&&a==="toggle"&&o==="toggleothers"&&wB&&r.data&&r._context.showTips&&TB.notifier(TB._(r,"Double-click on legend to isolate one trace"),"long"),wB=!1;var l;if(n===1?l=a:n===2&&(l=o),!l)return;var u=s==="togglegroup",c=i.hiddenlabels?i.hiddenlabels.slice():[],f=t.data()[0][0];if(f.groupTitle&&f.noClick)return;var h=r._fullData,d=(i.shapes||[]).filter(function(Rt){return Rt.showlegend}),v=h.concat(d),x=f.trace;x._isShape&&(x=x._fullInput);var b=x.legendgroup,g,E,k,A,L,_,C={},M=[],p=[],P=[];function T(Rt,kt){var Ct=M.indexOf(Rt),Yt=C.visible;return Yt||(Yt=C.visible=[]),M.indexOf(Rt)===-1&&(M.push(Rt),Ct=M.length-1),Yt[Ct]=kt,Ct}var F=(i.shapes||[]).map(function(Rt){return Rt._input}),q=!1;function V(Rt,kt){F[Rt].visible=kt,q=!0}function H(Rt,kt){if(!(f.groupTitle&&!u)){var Ct=Rt._fullInput||Rt,Yt=Ct._isShape,xr=Ct.index;xr===void 0&&(xr=Ct._index);var er=Ct.visible===!1?!1:kt;Yt?V(xr,er):T(xr,er)}}var X=x.legend,G=x._fullInput,N=G&&G._isShape;if(!N&&D3.traceIs(x,"pie-like")){var W=f.label,re=c.indexOf(W);if(l==="toggle")re===-1?c.push(W):c.splice(re,1);else if(l==="toggleothers"){var ae=re!==-1,_e=[];for(g=0;g{"use strict";Vse.exports={scrollBarWidth:6,scrollBarMinHeight:20,scrollBarColor:"#808BA4",scrollBarMargin:4,scrollBarEnterAttrs:{rx:20,ry:3,width:0,height:0},titlePad:2,itemGap:5}});var jse=ye((Prr,Gse)=>{"use strict";var Hse=ba(),SB=CL();Gse.exports=function(t,r,n){var i=r._inHover,a=SB.isGrouped(r),o=SB.isReversed(r),s={},l=[],u=!1,c={},f=0,h=0,d,v;function x(G,N,W){if(r.visible!==!1&&!(n&&G!==r._id))if(N===""||!SB.isGrouped(r)){var re="~~i"+f;l.push(re),s[re]=[W],f++}else l.indexOf(N)===-1?(l.push(N),u=!0,s[N]=[W]):s[N].push(W)}for(d=0;dP&&(p=P)}C[d][0]._groupMinRank=p,C[d][0]._preGroupSort=d}var T=function(G,N){return G[0]._groupMinRank-N[0]._groupMinRank||G[0]._preGroupSort-N[0]._preGroupSort},F=function(G,N){return G.trace.legendrank-N.trace.legendrank||G._preSort-N._preSort};for(C.forEach(function(G,N){G[0]._preGroupSort=N}),C.sort(T),d=0;d{"use strict";var LL=Mr();function Wse(e){return e.indexOf("e")!==-1?e.replace(/[.]?0+e/,"e"):e.indexOf(".")!==-1?e.replace(/[.]?0+$/,""):e}Pb.formatPiePercent=function(t,r){var n=Wse((t*100).toPrecision(3));return LL.numSeparate(n,r)+"%"};Pb.formatPieValue=function(t,r){var n=Wse(t.toPrecision(10));return LL.numSeparate(n,r)};Pb.getFirstFilled=function(t,r){if(LL.isArrayOrTypedArray(t))for(var n=0;n{"use strict";var sst=ao(),lst=va();Zse.exports=function(t,r,n,i){var a=n.marker.pattern;a&&a.shape?sst.pointStyle(t,n,i,r):lst.fill(t,r.color)}});var z3=ye((Drr,Jse)=>{"use strict";var Yse=va(),Kse=l_().castOption,ust=Xse();Jse.exports=function(t,r,n,i){var a=n.marker.line,o=Kse(a.color,r.pts)||Yse.defaultLine,s=Kse(a.width,r.pts)||0;t.call(ust,r,n,i).style("stroke-width",s).call(Yse.stroke,o)}});var CB=ye((zrr,ile)=>{"use strict";var qv=xa(),MB=ba(),mv=Mr(),$se=mv.strTranslate,ip=ao(),T0=va(),EB=Dv().extractOpts,PL=lu(),cst=z3(),fst=l_().castOption,hst=AB(),Qse=12,ele=5,Ib=2,dst=10,F3=5;ile.exports=function(t,r,n){var i=r._fullLayout;n||(n=i.legend);var a=n.itemsizing==="constant",o=n.itemwidth,s=(o+hst.itemGap*2)/2,l=$se(s,0),u=function(C,M,p,P){var T;if(C+1)T=C;else if(M&&M.width>0)T=M.width;else return 0;return a?P:Math.min(T,p)};t.each(function(C){var M=qv.select(this),p=mv.ensureSingle(M,"g","layers");p.style("opacity",C[0].trace.opacity);var P=n.indentation,T=n.valign,F=C[0].lineHeight,q=C[0].height;if(T==="middle"&&P===0||!F||!q)p.attr("transform",null);else{var V={top:1,bottom:-1}[T],H=V*(.5*(F-q+3))||0,X=n.indentation;p.attr("transform",$se(X,H))}var G=p.selectAll("g.legendfill").data([C]);G.enter().append("g").classed("legendfill",!0);var N=p.selectAll("g.legendlines").data([C]);N.enter().append("g").classed("legendlines",!0);var W=p.selectAll("g.legendsymbols").data([C]);W.enter().append("g").classed("legendsymbols",!0),W.selectAll("g.legendpoints").data([C]).enter().append("g").classed("legendpoints",!0)}).each(_).each(h).each(v).each(d).each(b).each(A).each(k).each(c).each(f).each(g).each(E);function c(C){var M=tle(C),p=M.showFill,P=M.showLine,T=M.showGradientLine,F=M.showGradientFill,q=M.anyFill,V=M.anyLine,H=C[0],X=H.trace,G,N,W=EB(X),re=W.colorscale,ae=W.reversescale,_e=function(Ae){if(Ae.size())if(p)ip.fillGroupStyle(Ae,r,!0);else{var ze="legendfill-"+X.uid;ip.gradient(Ae,r,ze,kB(ae),re,"fill")}},Me=function(Ae){if(Ae.size()){var ze="legendline-"+X.uid;ip.lineGroupStyle(Ae),ip.gradient(Ae,r,ze,kB(ae),re,"stroke")}},ke=PL.hasMarkers(X)||!q?"M5,0":V?"M5,-2":"M5,-3",ge=qv.select(this),ie=ge.select(".legendfill").selectAll("path").data(p||F?[C]:[]);if(ie.enter().append("path").classed("js-fill",!0),ie.exit().remove(),ie.attr("d",ke+"h"+o+"v6h-"+o+"z").call(_e),P||T){var Te=u(void 0,X.line,dst,ele);N=mv.minExtend(X,{line:{width:Te}}),G=[mv.minExtend(H,{trace:N})]}var Ee=ge.select(".legendlines").selectAll("path").data(P||T?[G]:[]);Ee.enter().append("path").classed("js-line",!0),Ee.exit().remove(),Ee.attr("d",ke+(T?"l"+o+",0.0001":"h"+o)).call(P?ip.lineGroupStyle:Me)}function f(C){var M=tle(C),p=M.anyFill,P=M.anyLine,T=M.showLine,F=M.showMarker,q=C[0],V=q.trace,H=!F&&!P&&!p&&PL.hasText(V),X,G;function N(ie,Te,Ee,Ae){var ze=mv.nestedProperty(V,ie).get(),Ce=mv.isArrayOrTypedArray(ze)&&Te?Te(ze):ze;if(a&&Ce&&Ae!==void 0&&(Ce=Ae),Ee){if(CeEe[1])return Ee[1]}return Ce}function W(ie){return q._distinct&&q.index&&ie[q.index]?ie[q.index]:ie[0]}if(F||H||T){var re={},ae={};if(F){re.mc=N("marker.color",W),re.mx=N("marker.symbol",W),re.mo=N("marker.opacity",mv.mean,[.2,1]),re.mlc=N("marker.line.color",W),re.mlw=N("marker.line.width",mv.mean,[0,5],Ib),ae.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var _e=N("marker.size",mv.mean,[2,16],Qse);re.ms=_e,ae.marker.size=_e}T&&(ae.line={width:N("line.width",W,[0,10],ele)}),H&&(re.tx="Aa",re.tp=N("textposition",W),re.ts=10,re.tc=N("textfont.color",W),re.tf=N("textfont.family",W),re.tw=N("textfont.weight",W),re.ty=N("textfont.style",W),re.tv=N("textfont.variant",W),re.tC=N("textfont.textcase",W),re.tE=N("textfont.lineposition",W),re.tS=N("textfont.shadow",W)),X=[mv.minExtend(q,re)],G=mv.minExtend(V,ae),G.selectedpoints=null,G.texttemplate=null}var Me=qv.select(this).select("g.legendpoints"),ke=Me.selectAll("path.scatterpts").data(F?X:[]);ke.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",l),ke.exit().remove(),ke.call(ip.pointStyle,G,r),F&&(X[0].mrc=3);var ge=Me.selectAll("g.pointtext").data(H?X:[]);ge.enter().append("g").classed("pointtext",!0).append("text").attr("transform",l),ge.exit().remove(),ge.selectAll("text").call(ip.textPointStyle,G,r)}function h(C){var M=C[0].trace,p=M.type==="waterfall";if(C[0]._distinct&&p){var P=C[0].trace[C[0].dir].marker;return C[0].mc=P.color,C[0].mlw=P.line.width,C[0].mlc=P.line.color,x(C,this,"waterfall")}var T=[];M.visible&&p&&(T=C[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var F=qv.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(T);F.enter().append("path").classed("legendwaterfall",!0).attr("transform",l).style("stroke-miterlimit",1),F.exit().remove(),F.each(function(q){var V=qv.select(this),H=M[q[0]].marker,X=u(void 0,H.line,F3,Ib);V.attr("d",q[1]).style("stroke-width",X+"px").call(T0.fill,H.color),X&&V.call(T0.stroke,H.line.color)})}function d(C){x(C,this)}function v(C){x(C,this,"funnel")}function x(C,M,p){var P=C[0].trace,T=P.marker||{},F=T.line||{},q=T.cornerradius?"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z":"M6,6H-6V-6H6Z",V=p?P.visible&&P.type===p:MB.traceIs(P,"bar"),H=qv.select(M).select("g.legendpoints").selectAll("path.legend"+p).data(V?[C]:[]);H.enter().append("path").classed("legend"+p,!0).attr("d",q).attr("transform",l),H.exit().remove(),H.each(function(X){var G=qv.select(this),N=X[0],W=u(N.mlw,T.line,F3,Ib);G.style("stroke-width",W+"px");var re=N.mcc;if(!n._inHover&&"mc"in N){var ae=EB(T),_e=ae.mid;_e===void 0&&(_e=(ae.max+ae.min)/2),re=ip.tryColorscale(T,"")(_e)}var Me=re||N.mc||T.color,ke=T.pattern,ge=ke&&ip.getPatternAttr(ke.shape,0,"");if(ge){var ie=ip.getPatternAttr(ke.bgcolor,0,null),Te=ip.getPatternAttr(ke.fgcolor,0,null),Ee=ke.fgopacity,Ae=rle(ke.size,8,10),ze=rle(ke.solidity,.5,1),Ce="legend-"+P.uid;G.call(ip.pattern,"legend",r,Ce,ge,Ae,ze,re,ke.fillmode,ie,Te,Ee)}else G.call(T0.fill,Me);W&&T0.stroke(G,N.mlc||F.color)})}function b(C){var M=C[0].trace,p=qv.select(this).select("g.legendpoints").selectAll("path.legendbox").data(M.visible&&MB.traceIs(M,"box-violin")?[C]:[]);p.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),p.exit().remove(),p.each(function(){var P=qv.select(this);if((M.boxpoints==="all"||M.points==="all")&&T0.opacity(M.fillcolor)===0&&T0.opacity((M.line||{}).color)===0){var T=mv.minExtend(M,{marker:{size:a?Qse:mv.constrain(M.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});p.call(ip.pointStyle,T,r)}else{var F=u(void 0,M.line,F3,Ib);P.style("stroke-width",F+"px").call(T0.fill,M.fillcolor),F&&T0.stroke(P,M.line.color)}})}function g(C){var M=C[0].trace,p=qv.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(M.visible&&M.type==="candlestick"?[C,C]:[]);p.enter().append("path").classed("legendcandle",!0).attr("d",function(P,T){return T?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"}).attr("transform",l).style("stroke-miterlimit",1),p.exit().remove(),p.each(function(P,T){var F=qv.select(this),q=M[T?"increasing":"decreasing"],V=u(void 0,q.line,F3,Ib);F.style("stroke-width",V+"px").call(T0.fill,q.fillcolor),V&&T0.stroke(F,q.line.color)})}function E(C){var M=C[0].trace,p=qv.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(M.visible&&M.type==="ohlc"?[C,C]:[]);p.enter().append("path").classed("legendohlc",!0).attr("d",function(P,T){return T?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"}).attr("transform",l).style("stroke-miterlimit",1),p.exit().remove(),p.each(function(P,T){var F=qv.select(this),q=M[T?"increasing":"decreasing"],V=u(void 0,q.line,F3,Ib);F.style("fill","none").call(ip.dashLine,q.line.dash,V),V&&T0.stroke(F,q.line.color)})}function k(C){L(C,this,"pie")}function A(C){L(C,this,"funnelarea")}function L(C,M,p){var P=C[0],T=P.trace,F=p?T.visible&&T.type===p:MB.traceIs(T,p),q=qv.select(M).select("g.legendpoints").selectAll("path.legend"+p).data(F?[C]:[]);if(q.enter().append("path").classed("legend"+p,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),q.exit().remove(),q.size()){var V=T.marker||{},H=u(fst(V.line.width,P.pts),V.line,F3,Ib),X="pieLike",G=mv.minExtend(T,{marker:{line:{width:H}}},X),N=mv.minExtend(P,{trace:G},X);cst(q,N,G,r)}}function _(C){var M=C[0].trace,p,P=[];if(M.visible)switch(M.type){case"histogram2d":case"heatmap":P=[["M-15,-2V4H15V-2Z"]],p=!0;break;case"choropleth":case"choroplethmapbox":case"choroplethmap":P=[["M-6,-6V6H6V-6Z"]],p=!0;break;case"densitymapbox":case"densitymap":P=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],p="radial";break;case"cone":P=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],p=!1;break;case"streamtube":P=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],p=!1;break;case"surface":P=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],p=!0;break;case"mesh3d":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],p=!1;break;case"volume":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],p=!0;break;case"isosurface":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],p=!1;break}var T=qv.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(P);T.enter().append("path").classed("legend3dandfriends",!0).attr("transform",l).style("stroke-miterlimit",1),T.exit().remove(),T.each(function(F,q){var V=qv.select(this),H=EB(M),X=H.colorscale,G=H.reversescale,N=function(_e){if(_e.size()){var Me="legendfill-"+M.uid;ip.gradient(_e,r,Me,kB(G,p==="radial"),X,"fill")}},W;if(X){if(!p){var ae=X.length;W=q===0?X[G?ae-1:0][1]:q===1?X[G?0:ae-1][1]:X[Math.floor((ae-1)/2)][1]}}else{var re=M.vertexcolor||M.facecolor||M.color;W=mv.isArrayOrTypedArray(re)?re[q]||re[0]:re}V.attr("d",F[0]),W?V.call(T0.fill,W):V.call(N)})}};function kB(e,t){var r=t?"radial":"horizontal";return r+(e?"":"reversed")}function tle(e){var t=e[0].trace,r=t.contours,n=PL.hasLines(t),i=PL.hasMarkers(t),a=t.visible&&t.fill&&t.fill!=="none",o=!1,s=!1;if(r){var l=r.coloring;l==="lines"?o=!0:n=l==="none"||l==="heatmap"||r.showlines,r.type==="constraint"?a=r._operation!=="=":(l==="fill"||l==="heatmap")&&(s=!0)}return{showMarker:i,showLine:n,showFill:a,showGradientLine:o,showGradientFill:s,anyLine:n||o,anyFill:a||s}}function rle(e,t,r){return e&&mv.isArrayOrTypedArray(e)?t:e>r?r:e}});var RB=ye((Frr,dle)=>{"use strict";var Sp=xa(),gh=Mr(),PB=Xu(),B3=ba(),nle=g3(),LB=gv(),mh=ao(),RL=va(),Rb=Ll(),ale=Use(),Vh=AB(),IB=Nh(),fle=IB.LINE_SPACING,O3=IB.FROM_TL,ole=IB.FROM_BR,sle=jse(),vst=CB(),lle=CL(),q3=1,pst=/^legend[0-9]*$/;dle.exports=function(t,r){if(r)ule(t,r);else{var n=t._fullLayout,i=n._legends,a=n._infolayer.selectAll('[class^="legend"]');a.each(function(){var u=Sp.select(this),c=u.attr("class"),f=c.split(" ")[0];f.match(pst)&&i.indexOf(f)===-1&&u.remove()});for(var o=0;o1)}var v=n.hiddenlabels||[];if(!s&&(!n.showlegend||!l.length))return o.selectAll("."+i).remove(),n._topdefs.select("#"+a).remove(),PB.autoMargin(e,i);var x=gh.ensureSingle(o,"g",i,function(M){s||M.attr("pointer-events","all")}),b=gh.ensureSingleById(n._topdefs,"clipPath",a,function(M){M.append("rect")}),g=gh.ensureSingle(x,"rect","bg",function(M){M.attr("shape-rendering","crispEdges")});g.call(RL.stroke,r.bordercolor).call(RL.fill,r.bgcolor).style("stroke-width",r.borderwidth+"px");var E=gh.ensureSingle(x,"g","scrollbox"),k=r.title;r._titleWidth=0,r._titleHeight=0;var A;k.text?(A=gh.ensureSingle(E,"text",i+"titletext"),A.attr("text-anchor","start").call(mh.font,k.font).text(k.text),DL(A,E,e,r,q3)):E.selectAll("."+i+"titletext").remove();var L=gh.ensureSingle(x,"rect","scrollbar",function(M){M.attr(Vh.scrollBarEnterAttrs).call(RL.fill,Vh.scrollBarColor)}),_=E.selectAll("g.groups").data(l);_.enter().append("g").attr("class","groups"),_.exit().remove();var C=_.selectAll("g.traces").data(gh.identity);C.enter().append("g").attr("class","traces"),C.exit().remove(),C.style("opacity",function(M){var p=M[0].trace;return B3.traceIs(p,"pie-like")?v.indexOf(M[0].label)!==-1?.5:1:p.visible==="legendonly"?.5:1}).each(function(){Sp.select(this).call(mst,e,r)}).call(vst,e,r).each(function(){s||Sp.select(this).call(yst,e,i)}),gh.syncOrAsync([PB.previousPromises,function(){return bst(e,_,C,r)},function(){var M=n._size,p=r.borderwidth,P=r.xref==="paper",T=r.yref==="paper";if(k.text&&gst(A,r,p),!s){var F,q;P?F=M.l+M.w*r.x-O3[zL(r)]*r._width:F=n.width*r.x-O3[zL(r)]*r._width,T?q=M.t+M.h*(1-r.y)-O3[FL(r)]*r._effHeight:q=n.height*(1-r.y)-O3[FL(r)]*r._effHeight;var V=wst(e,i,F,q);if(V)return;if(n.margin.autoexpand){var H=F,X=q;F=P?gh.constrain(F,0,n.width-r._width):H,q=T?gh.constrain(q,0,n.height-r._effHeight):X,F!==H&&gh.log("Constrain "+i+".x to make legend fit inside graph"),q!==X&&gh.log("Constrain "+i+".y to make legend fit inside graph")}mh.setTranslate(x,F,q)}if(L.on(".drag",null),x.on("wheel",null),s||r._height<=r._maxHeight||e._context.staticPlot){var G=r._effHeight;s&&(G=r._height),g.attr({width:r._width-p,height:G-p,x:p/2,y:p/2}),mh.setTranslate(E,0,0),b.select("rect").attr({width:r._width-2*p,height:G-2*p,x:p,y:p}),mh.setClipUrl(E,a,e),mh.setRect(L,0,0,0,0),delete r._scrollY}else{var N=Math.max(Vh.scrollBarMinHeight,r._effHeight*r._effHeight/r._height),W=r._effHeight-N-2*Vh.scrollBarMargin,re=r._height-r._effHeight,ae=W/re,_e=Math.min(r._scrollY||0,re);g.attr({width:r._width-2*p+Vh.scrollBarWidth+Vh.scrollBarMargin,height:r._effHeight-p,x:p/2,y:p/2}),b.select("rect").attr({width:r._width-2*p+Vh.scrollBarWidth+Vh.scrollBarMargin,height:r._effHeight-2*p,x:p,y:p+_e}),mh.setClipUrl(E,a,e),ze(_e,N,ae),x.on("wheel",function(){_e=gh.constrain(r._scrollY+Sp.event.deltaY/W*re,0,re),ze(_e,N,ae),_e!==0&&_e!==re&&Sp.event.preventDefault()});var Me,ke,ge,ie=function(Ge,nt,ct){var qt=(ct-nt)/ae+Ge;return gh.constrain(qt,0,re)},Te=function(Ge,nt,ct){var qt=(nt-ct)/ae+Ge;return gh.constrain(qt,0,re)},Ee=Sp.behavior.drag().on("dragstart",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchstart"?Me=Ge.changedTouches[0].clientY:Me=Ge.clientY,ge=_e}).on("drag",function(){var Ge=Sp.event.sourceEvent;Ge.buttons===2||Ge.ctrlKey||(Ge.type==="touchmove"?ke=Ge.changedTouches[0].clientY:ke=Ge.clientY,_e=ie(ge,Me,ke),ze(_e,N,ae))});L.call(Ee);var Ae=Sp.behavior.drag().on("dragstart",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchstart"&&(Me=Ge.changedTouches[0].clientY,ge=_e)}).on("drag",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchmove"&&(ke=Ge.changedTouches[0].clientY,_e=Te(ge,Me,ke),ze(_e,N,ae))});E.call(Ae)}function ze(Ge,nt,ct){r._scrollY=e._fullLayout[i]._scrollY=Ge,mh.setTranslate(E,0,-Ge),mh.setRect(L,r._width,Vh.scrollBarMargin+Ge*ct,Vh.scrollBarWidth,nt),b.select("rect").attr("y",p+Ge)}if(e._context.edits.legendPosition){var Ce,me,Re,ce;x.classed("cursor-move",!0),LB.init({element:x.node(),gd:e,prepFn:function(Ge){if(Ge.target!==L.node()){var nt=mh.getTranslate(x);Re=nt.x,ce=nt.y}},moveFn:function(Ge,nt){if(Re!==void 0&&ce!==void 0){var ct=Re+Ge,qt=ce+nt;mh.setTranslate(x,ct,qt),Ce=LB.align(ct,r._width,M.l,M.l+M.w,r.xanchor),me=LB.align(qt+r._height,-r._height,M.t+M.h,M.t,r.yanchor)}},doneFn:function(){if(Ce!==void 0&&me!==void 0){var Ge={};Ge[i+".x"]=Ce,Ge[i+".y"]=me,B3.call("_guiRelayout",e,Ge)}},clickFn:function(Ge,nt){var ct=o.selectAll("g.traces").filter(function(){var qt=this.getBoundingClientRect();return nt.clientX>=qt.left&&nt.clientX<=qt.right&&nt.clientY>=qt.top&&nt.clientY<=qt.bottom});ct.size()>0&&hle(e,x,ct,Ge,nt)}})}}],e)}}function IL(e,t,r){var n=e[0],i=n.width,a=t.entrywidthmode,o=n.trace.legendwidth||t.entrywidth;return a==="fraction"?t._maxWidth*o:r+(o||i)}function hle(e,t,r,n,i){var a=r.data()[0][0].trace,o={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a.index,data:e.data,layout:e.layout,frames:e._transitionData._frames,config:e._context,fullData:e._fullData,fullLayout:e._fullLayout};a._group&&(o.group=a._group),B3.traceIs(a,"pie-like")&&(o.label=r.datum()[0].label);var s=nle.triggerHandler(e,"plotly_legendclick",o);if(n===1){if(s===!1)return;t._clickTimeout=setTimeout(function(){e._fullLayout&&ale(r,e,n)},e._context.doubleClickDelay)}else if(n===2){t._clickTimeout&&clearTimeout(t._clickTimeout),e._legendMouseDownTime=0;var l=nle.triggerHandler(e,"plotly_legenddoubleclick",o);l!==!1&&s!==!1&&ale(r,e,n)}}function mst(e,t,r){var n=qL(r),i=e.data()[0][0],a=i.trace,o=B3.traceIs(a,"pie-like"),s=!r._inHover&&t._context.edits.legendText&&!o,l=r._maxNameLength,u,c;i.groupTitle?(u=i.groupTitle.text,c=i.groupTitle.font):(c=r.font,r.entries?u=i.text:(u=o?i.label:a.name,a._meta&&(u=gh.templateString(u,a._meta))));var f=gh.ensureSingle(e,"text",n+"text");f.attr("text-anchor","start").call(mh.font,c).text(s?cle(u,l):u);var h=r.indentation+r.itemwidth+Vh.itemGap*2;Rb.positionText(f,h,0),s?f.call(Rb.makeEditable,{gd:t,text:u}).call(DL,e,t,r).on("edit",function(d){this.text(cle(d,l)).call(DL,e,t,r);var v=i.trace._fullInput||{},x={};return x.name=d,v._isShape?B3.call("_guiRelayout",t,"shapes["+a.index+"].name",x.name):B3.call("_guiRestyle",t,x,a.index)}):DL(f,e,t,r)}function cle(e,t){var r=Math.max(4,t);if(e&&e.trim().length>=r/2)return e;e=e||"";for(var n=r-e.length;n>0;n--)e+=" ";return e}function yst(e,t,r){var n=t._context.doubleClickDelay,i,a=1,o=gh.ensureSingle(e,"rect",r+"toggle",function(s){t._context.staticPlot||s.style("cursor","pointer").attr("pointer-events","all"),s.call(RL.fill,"rgba(0,0,0,0)")});t._context.staticPlot||(o.on("mousedown",function(){i=new Date().getTime(),i-t._legendMouseDownTimen&&(a=Math.max(a-1,1)),hle(t,s,e,a,Sp.event)}}))}function DL(e,t,r,n,i){n._inHover&&e.attr("data-notex",!0),Rb.convertToTspans(e,r,function(){_st(t,r,n,i)})}function _st(e,t,r,n){var i=e.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend){e.remove();return}var a=e.select("g[class*=math-group]"),o=a.node(),s=qL(r);r||(r=t._fullLayout[s]);var l=r.borderwidth,u;n===q3?u=r.title.font:i.groupTitle?u=i.groupTitle.font:u=r.font;var c=u.size*fle,f,h;if(o){var d=mh.bBox(o);f=d.height,h=d.width,n===q3?mh.setTranslate(a,l,l+f*.75):mh.setTranslate(a,0,f*.25)}else{var v="."+s+(n===q3?"title":"")+"text",x=e.select(v),b=Rb.lineCount(x),g=x.node();if(f=c*b,h=g?mh.bBox(g).width:0,n===q3)r.title.side==="left"&&(h+=Vh.itemGap*2),Rb.positionText(x,l+Vh.titlePad,l+c);else{var E=Vh.itemGap*2+r.indentation+r.itemwidth;i.groupTitle&&(E=Vh.itemGap,h-=r.indentation+r.itemwidth),Rb.positionText(x,E,-c*((b-1)/2-.3))}}n===q3?(r._titleWidth=h,r._titleHeight=f):(i.lineHeight=c,i.height=Math.max(f,16)+3,i.width=h)}function xst(e){var t=0,r=0,n=e.title.side;return n&&(n.indexOf("left")!==-1&&(t=e._titleWidth),n.indexOf("top")!==-1&&(r=e._titleHeight)),[t,r]}function bst(e,t,r,n){var i=e._fullLayout,a=qL(n);n||(n=i[a]);var o=i._size,s=lle.isVertical(n),l=lle.isGrouped(n),u=n.entrywidthmode==="fraction",c=n.borderwidth,f=2*c,h=Vh.itemGap,d=n.indentation+n.itemwidth+h*2,v=2*(c+h),x=FL(n),b=n.y<0||n.y===0&&x==="top",g=n.y>1||n.y===1&&x==="bottom",E=n.tracegroupgap,k={};n._maxHeight=Math.max(b||g?i.height/2:o.h,30);var A=0;n._width=0,n._height=0;var L=xst(n);if(s)r.each(function(ge){var ie=ge[0].height;mh.setTranslate(this,c+L[0],c+L[1]+n._height+ie/2+h),n._height+=ie,n._width=Math.max(n._width,ge[0].width)}),A=d+n._width,n._width+=h+d+f,n._height+=v,l&&(t.each(function(ge,ie){mh.setTranslate(this,0,ie*n.tracegroupgap)}),n._height+=(n._lgroupsLength-1)*n.tracegroupgap);else{var _=zL(n),C=n.x<0||n.x===0&&_==="right",M=n.x>1||n.x===1&&_==="left",p=g||b,P=i.width/2;n._maxWidth=Math.max(C?p&&_==="left"?o.l+o.w:P:M?p&&_==="right"?o.r+o.w:P:o.w,2*d);var T=0,F=0;r.each(function(ge){var ie=IL(ge,n,d);T=Math.max(T,ie),F+=ie}),A=null;var q=0;if(l){var V=0,H=0,X=0;t.each(function(){var ge=0,ie=0;Sp.select(this).selectAll("g.traces").each(function(Ee){var Ae=IL(Ee,n,d),ze=Ee[0].height;mh.setTranslate(this,L[0],L[1]+c+h+ze/2+ie),ie+=ze,ge=Math.max(ge,Ae),k[Ee[0].trace.legendgroup]=ge});var Te=ge+h;H>0&&Te+c+H>n._maxWidth?(q=Math.max(q,H),H=0,X+=V+E,V=ie):V=Math.max(V,ie),mh.setTranslate(this,H,X),H+=Te}),n._width=Math.max(q,H)+c,n._height=X+V+v}else{var G=r.size(),N=F+f+(G-1)*h=n._maxWidth&&(q=Math.max(q,_e),re=0,ae+=W,n._height+=W,W=0),mh.setTranslate(this,L[0]+c+re,L[1]+c+ae+ie/2+h),_e=re+Te+h,re+=Ee,W=Math.max(W,ie)}),N?(n._width=re+f,n._height=W+v):(n._width=Math.max(q,_e)+f,n._height+=W+v)}}n._width=Math.ceil(Math.max(n._width+L[0],n._titleWidth+2*(c+Vh.titlePad))),n._height=Math.ceil(Math.max(n._height+L[1],n._titleHeight+2*(c+Vh.itemGap))),n._effHeight=Math.min(n._height,n._maxHeight);var Me=e._context.edits,ke=Me.legendText||Me.legendPosition;r.each(function(ge){var ie=Sp.select(this).select("."+a+"toggle"),Te=ge[0].height,Ee=ge[0].trace.legendgroup,Ae=IL(ge,n,d);l&&Ee!==""&&(Ae=k[Ee]);var ze=ke?d:A||Ae;!s&&!u&&(ze+=h/2),mh.setRect(ie,0,-Te/2,ze,Te)})}function wst(e,t,r,n){var i=e._fullLayout,a=i[t],o=zL(a),s=FL(a),l=a.xref==="paper",u=a.yref==="paper";e._fullLayout._reservedMargin[t]={};var c=a.y<.5?"b":"t",f=a.x<.5?"l":"r",h={r:i.width-r,l:r+a._width,b:i.height-n,t:n+a._effHeight};if(l&&u)return PB.autoMargin(e,t,{x:a.x,y:a.y,l:a._width*O3[o],r:a._width*ole[o],b:a._effHeight*ole[s],t:a._effHeight*O3[s]});l?e._fullLayout._reservedMargin[t][c]=h[c]:u||a.orientation==="v"?e._fullLayout._reservedMargin[t][f]=h[f]:e._fullLayout._reservedMargin[t][c]=h[c]}function zL(e){return gh.isRightAnchor(e)?"right":gh.isCenterAnchor(e)?"center":"left"}function FL(e){return gh.isBottomAnchor(e)?"bottom":gh.isMiddleAnchor(e)?"middle":"top"}function qL(e){return e._id||"legend"}});var qB=ye(FB=>{"use strict";var Db=xa(),Sy=uo(),vle=id(),Rf=Mr(),Tst=Rf.pushUnique,DB=Rf.strTranslate,Ast=Rf.strRotate,Sst=g3(),A0=Ll(),Mst=qse(),bm=ao(),sd=va(),OL=gv(),wm=Qa(),Est=ad().zindexSeparator,U3=ba(),Ag=rp(),zb=IS(),kst=bB(),Cst=RB(),wle=zb.YANGLE,zB=Math.PI*wle/180,Lst=1/Math.sin(zB),Pst=Math.cos(zB),Ist=Math.sin(zB),Bc=zb.HOVERARROWSIZE,Us=zb.HOVERTEXTPAD,ple={box:!0,ohlc:!0,violin:!0,candlestick:!0},Rst={scatter:!0,scattergl:!0,splom:!0};function gle(e,t){return e.distance-t.distance}FB.hover=function(t,r,n,i){t=Rf.getGraphDiv(t);var a=r.target;Rf.throttle(t._fullLayout._uid+zb.HOVERID,zb.HOVERMINTIME,function(){Dst(t,r,n,i,a)})};FB.loneHover=function(t,r){var n=!0;Array.isArray(t)||(n=!1,t=[t]);var i=r.gd,a=Ele(i),o=kle(i),s=t.map(function(b){var g=b._x0||b.x0||b.x||0,E=b._x1||b.x1||b.x||0,k=b._y0||b.y0||b.y||0,A=b._y1||b.y1||b.y||0,L=b.eventData;if(L){var _=Math.min(g,E),C=Math.max(g,E),M=Math.min(k,A),p=Math.max(k,A),P=b.trace;if(U3.traceIs(P,"gl3d")){var T=i._fullLayout[P.scene]._scene.container,F=T.offsetLeft,q=T.offsetTop;_+=F,C+=F,M+=q,p+=q}L.bbox={x0:_+o,x1:C+o,y0:M+a,y1:p+a},r.inOut_bbox&&r.inOut_bbox.push(L.bbox)}else L=!1;return{color:b.color||sd.defaultLine,x0:b.x0||b.x||0,x1:b.x1||b.x||0,y0:b.y0||b.y||0,y1:b.y1||b.y||0,xLabel:b.xLabel,yLabel:b.yLabel,zLabel:b.zLabel,text:b.text,name:b.name,idealAlign:b.idealAlign,borderColor:b.borderColor,fontFamily:b.fontFamily,fontSize:b.fontSize,fontColor:b.fontColor,fontWeight:b.fontWeight,fontStyle:b.fontStyle,fontVariant:b.fontVariant,nameLength:b.nameLength,textAlign:b.textAlign,trace:b.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:b.hovertemplate||!1,hovertemplateLabels:b.hovertemplateLabels||!1,eventData:L}}),l=!1,u=Ale(s,{gd:i,hovermode:"closest",rotateLabels:l,bgColor:r.bgColor||sd.background,container:Db.select(r.container),outerContainer:r.outerContainer||r.container}),c=u.hoverLabels,f=5,h=0,d=0;c.sort(function(b,g){return b.y0-g.y0}).each(function(b,g){var E=b.y0-b.by/2;E-fC[0]._length||ce<0||ce>M[0]._length)return OL.unhoverRaw(e,t)}if(t.pointerX=Re+C[0]._offset,t.pointerY=ce+M[0]._offset,"xval"in t?X=Ag.flat(a,t.xval):X=Ag.p2c(C,Re),"yval"in t?G=Ag.flat(a,t.yval):G=Ag.p2c(M,ce),!Sy(X[0])||!Sy(G[0]))return Rf.warn("Fx.hover failed",t,e),OL.unhoverRaw(e,t)}var ct=1/0;function qt(Ni,_n){for(W=0;WEe&&(V.splice(0,Ee),ct=V[0].distance),f&&q!==0&&V.length===0){Te.distance=q,Te.index=!1;var ft=ae._module.hoverPoints(Te,ge,ie,"closest",{hoverLayer:s._hoverlayer});if(ft&&(ft=ft.filter(function(Vr){return Vr.spikeDistance<=q})),ft&&ft.length){var jt,Zt=ft.filter(function(Vr){return Vr.xa.showspikes&&Vr.xa.spikesnap!=="hovered data"});if(Zt.length){var yr=Zt[0];Sy(yr.x0)&&Sy(yr.y0)&&(jt=ot(yr),(!Ae.vLinePoint||Ae.vLinePoint.spikeDistance>jt.spikeDistance)&&(Ae.vLinePoint=jt))}var Fr=ft.filter(function(Vr){return Vr.ya.showspikes&&Vr.ya.spikesnap!=="hovered data"});if(Fr.length){var Zr=Fr[0];Sy(Zr.x0)&&Sy(Zr.y0)&&(jt=ot(Zr),(!Ae.hLinePoint||Ae.hLinePoint.spikeDistance>jt.spikeDistance)&&(Ae.hLinePoint=jt))}}}}}qt();function rt(Ni,_n,$i){for(var zn=null,Wn=1/0,It,ft=0;ft0&&Math.abs(Ni.distance)dt-1;Nr--)Or(V[Nr]);V=fr,Yt()}var ut=e._hoverdata,Ne=[],Ye=Ele(e),Ve=kle(e);for(N=0;N1||V.length>1)||h==="closest"&&ze&&V.length>1,ri=sd.combine(s.plot_bgcolor||sd.background,s.paper_bgcolor),bi=Ale(V,{gd:e,hovermode:h,rotateLabels:jr,bgColor:ri,container:s._hoverlayer,outerContainer:s._paper.node(),commonLabelOpts:s.hoverlabel,hoverdistance:s.hoverdistance}),nn=bi.hoverLabels;if(Ag.isUnifiedHover(h)||(Fst(nn,jr,s,bi.commonLabelBoundingBox),Mle(nn,jr,s._invScaleX,s._invScaleY)),i&&i.tagName){var Wi=U3.getComponentMethod("annotations","hasClickToShow")(e,Ne);Mst(Db.select(i),Wi?"pointer":"")}!i||n||!Bst(e,t,ut)||(ut&&e.emit("plotly_unhover",{event:t,points:ut}),e.emit("plotly_hover",{event:t,points:e._hoverdata,xaxes:C,yaxes:M,xvals:X,yvals:G}))}function Tle(e){return[e.trace.index,e.index,e.x0,e.y0,e.name,e.attr,e.xa?e.xa._id:"",e.ya?e.ya._id:""].join(",")}var zst=/([\s\S]*)<\/extra>/;function Ale(e,t){var r=t.gd,n=r._fullLayout,i=t.hovermode,a=t.rotateLabels,o=t.bgColor,s=t.container,l=t.outerContainer,u=t.commonLabelOpts||{};if(e.length===0)return[[]];var c=t.fontFamily||zb.HOVERFONT,f=t.fontSize||zb.HOVERFONTSIZE,h=t.fontWeight||n.font.weight,d=t.fontStyle||n.font.style,v=t.fontVariant||n.font.variant,x=t.fontTextcase||n.font.textcase,b=t.fontLineposition||n.font.lineposition,g=t.fontShadow||n.font.shadow,E=e[0],k=E.xa,A=E.ya,L=i.charAt(0),_=L+"Label",C=E[_];if(C===void 0&&k.type==="multicategory")for(var M=0;Mn.width-ut&&(Ne=n.width-ut),Lt.attr("d","M"+(Br-Ne)+",0L"+(Br-Ne+Bc)+","+Nr+Bc+"H"+ut+"v"+Nr+(Us*2+_r.height)+"H"+-ut+"V"+Nr+Bc+"H"+(Br-Ne-Bc)+"Z"),Br=Ne,W.minX=Br-ut,W.maxX=Br+ut,k.side==="top"?(W.minY=Or-(Us*2+_r.height),W.maxY=Or-Us):(W.minY=Or+Us,W.maxY=Or+(Us*2+_r.height))}else{var Ye,Ve,Xe;A.side==="right"?(Ye="start",Ve=1,Xe="",Br=k._offset+k._length):(Ye="end",Ve=-1,Xe="-",Br=k._offset),Or=A._offset+(E.y0+E.y1)/2,St.attr("text-anchor",Ye),Lt.attr("d","M0,0L"+Xe+Bc+","+Bc+"V"+(Us+_r.height/2)+"h"+Xe+(Us*2+_r.width)+"V-"+(Us+_r.height/2)+"H"+Xe+Bc+"V-"+Bc+"Z"),W.minY=Or-(Us+_r.height/2),W.maxY=Or+(Us+_r.height/2),A.side==="right"?(W.minX=Br+Bc,W.maxX=Br+Bc+(Us*2+_r.width)):(W.minX=Br-Bc-(Us*2+_r.width),W.maxX=Br-Bc);var ht=_r.height/2,Le=P-_r.top-ht,xe="clip"+n._uid+"commonlabel"+A._id,Se;if(Br<_r.width+2*Us+Bc){Se="M-"+(Bc+Us)+"-"+ht+"h-"+(_r.width-Us)+"V"+ht+"h"+(_r.width-Us)+"Z";var lt=_r.width-Br+Us;A0.positionText(St,lt,Le),Ye==="end"&&St.selectAll("tspan").each(function(){var Vt=Db.select(this),ar=bm.tester.append("text").text(Vt.text()).call(bm.font,fr),Qr=N3(r,ar.node());Math.round(Qr.width)=0?er=kt:Ct+ce=0?er=Ct:Yt+ce=0?Ke=ot:Rt+Ge=0?Ke=Rt:xr+Ge=0,(bt.idealAlign==="top"||!Vt)&&ar?(Xe-=Le/2,bt.anchor="end"):Vt?(Xe+=Le/2,bt.anchor="start"):bt.anchor="middle",bt.crossPos=Xe;else{if(bt.pos=Xe,Vt=Ve+ht/2+Gt<=T,ar=Ve-ht/2-Gt>=0,(bt.idealAlign==="left"||!Vt)&&ar)Ve-=ht/2,bt.anchor="end";else if(Vt)Ve+=ht/2,bt.anchor="start";else{bt.anchor="middle";var Qr=Gt/2,ai=Ve+Qr-T,jr=Ve-Qr;ai>0&&(Ve-=ai),jr<0&&(Ve+=-jr)}bt.crossPos=Ve}Or.attr("text-anchor",bt.anchor),ut&&Nr.attr("text-anchor",bt.anchor),Lt.attr("transform",DB(Ve,Xe)+(a?Ast(wle):""))}),{hoverLabels:xt,commonLabelBoundingBox:W}}function mle(e,t,r,n,i,a){var o="",s="";e.nameOverride!==void 0&&(e.name=e.nameOverride),e.name&&(e.trace._meta&&(e.name=Rf.templateString(e.name,e.trace._meta)),o=xle(e.name,e.nameLength));var l=r.charAt(0),u=l==="x"?"y":"x";e.zLabel!==void 0?(e.xLabel!==void 0&&(s+="x: "+e.xLabel+"
"),e.yLabel!==void 0&&(s+="y: "+e.yLabel+"
"),e.trace.type!=="choropleth"&&e.trace.type!=="choroplethmapbox"&&e.trace.type!=="choroplethmap"&&(s+=(s?"z: ":"")+e.zLabel)):t&&e[l+"Label"]===i?s=e[u+"Label"]||"":e.xLabel===void 0?e.yLabel!==void 0&&e.trace.type!=="scattercarpet"&&(s=e.yLabel):e.yLabel===void 0?s=e.xLabel:s="("+e.xLabel+", "+e.yLabel+")",(e.text||e.text===0)&&!Array.isArray(e.text)&&(s+=(s?"
":"")+e.text),e.extraText!==void 0&&(s+=(s?"
":"")+e.extraText),a&&s===""&&!e.hovertemplate&&(o===""&&a.remove(),s=o);var c=e.hovertemplate||!1;if(c){var f=e.hovertemplateLabels||e;e[l+"Label"]!==i&&(f[l+"other"]=f[l+"Val"],f[l+"otherLabel"]=f[l+"Label"]),s=Rf.hovertemplateString(c,f,n._d3locale,e.eventData[0]||{},e.trace._meta),s=s.replace(zst,function(h,d){return o=xle(d,e.nameLength),""})}return[s,o]}function Fst(e,t,r,n){var i=t?"xa":"ya",a=t?"ya":"xa",o=0,s=1,l=e.size(),u=new Array(l),c=0,f=n.minX,h=n.maxX,d=n.minY,v=n.maxY,x=function(X){return X*r._invScaleX},b=function(X){return X*r._invScaleY};e.each(function(X){var G=X[i],N=X[a],W=G._id.charAt(0)==="x",re=G.range;c===0&&re&&re[0]>re[1]!==W&&(s=-1);var ae=0,_e=W?r.width:r.height;if(r.hovermode==="x"||r.hovermode==="y"){var Me=Sle(X,t),ke=X.anchor,ge=ke==="end"?-1:1,ie,Te;if(ke==="middle")ie=X.crossPos+(W?b(Me.y-X.by/2):x(X.bx/2+X.tx2width/2)),Te=ie+(W?b(X.by):x(X.bx));else if(W)ie=X.crossPos+b(Bc+Me.y)-b(X.by/2-Bc),Te=ie+b(X.by);else{var Ee=x(ge*Bc+Me.x),Ae=Ee+x(ge*X.bx);ie=X.crossPos+Math.min(Ee,Ae),Te=X.crossPos+Math.max(Ee,Ae)}W?d!==void 0&&v!==void 0&&Math.min(Te,v)-Math.max(ie,d)>1&&(N.side==="left"?(ae=N._mainLinePosition,_e=r.width):_e=N._mainLinePosition):f!==void 0&&h!==void 0&&Math.min(Te,h)-Math.max(ie,f)>1&&(N.side==="top"?(ae=N._mainLinePosition,_e=r.height):_e=N._mainLinePosition)}u[c++]=[{datum:X,traceIndex:X.trace.index,dp:0,pos:X.pos,posref:X.posref,size:X.by*(W?Lst:1)/2,pmin:ae,pmax:_e}]}),u.sort(function(X,G){return X[0].posref-G[0].posref||s*(G[0].traceIndex-X[0].traceIndex)});var g,E,k,A,L,_,C;function M(X){var G=X[0],N=X[X.length-1];if(E=G.pmin-G.pos-G.dp+G.size,k=N.pos+N.dp+N.size-G.pmax,E>.01){for(L=X.length-1;L>=0;L--)X[L].dp+=E;g=!1}if(!(k<.01)){if(E<-.01){for(L=X.length-1;L>=0;L--)X[L].dp-=k;g=!1}if(g){var W=0;for(A=0;AG.pmax&&W++;for(A=X.length-1;A>=0&&!(W<=0);A--)_=X[A],_.pos>G.pmax-1&&(_.del=!0,W--);for(A=0;A=0;L--)X[L].dp-=k;for(A=X.length-1;A>=0&&!(W<=0);A--)_=X[A],_.pos+_.dp+_.size>G.pmax&&(_.del=!0,W--)}}}for(;!g&&o<=l;){for(o++,g=!0,A=0;A.01){for(L=P.length-1;L>=0;L--)P[L].dp+=E;for(p.push.apply(p,P),u.splice(A+1,1),C=0,L=p.length-1;L>=0;L--)C+=p[L].dp;for(k=C/p.length,L=p.length-1;L>=0;L--)p[L].dp-=k;g=!1}else A++}u.forEach(M)}for(A=u.length-1;A>=0;A--){var q=u[A];for(L=q.length-1;L>=0;L--){var V=q[L],H=V.datum;H.offset=V.dp,H.del=V.del}}}function Sle(e,t){var r=0,n=e.offset;return t&&(n*=-Ist,r=e.offset*Pst),{x:r,y:n}}function qst(e){var t={start:1,end:-1,middle:0}[e.anchor],r=t*(Bc+Us),n=r+t*(e.txwidth+Us),i=e.anchor==="middle";return i&&(r-=e.tx2width/2,n+=e.txwidth/2+Us),{alignShift:t,textShiftX:r,text2ShiftX:n}}function Mle(e,t,r,n){var i=function(o){return o*r},a=function(o){return o*n};e.each(function(o){var s=Db.select(this);if(o.del)return s.remove();var l=s.select("text.nums"),u=o.anchor,c=u==="end"?-1:1,f=qst(o),h=Sle(o,t),d=h.x,v=h.y,x=u==="middle";s.select("path").attr("d",x?"M-"+i(o.bx/2+o.tx2width/2)+","+a(v-o.by/2)+"h"+i(o.bx)+"v"+a(o.by)+"h-"+i(o.bx)+"Z":"M0,0L"+i(c*Bc+d)+","+a(Bc+v)+"v"+a(o.by/2-Bc)+"h"+i(c*o.bx)+"v-"+a(o.by)+"H"+i(c*Bc+d)+"V"+a(v-Bc)+"Z");var b=d+f.textShiftX,g=v+o.ty0-o.by/2+Us,E=o.textAlign||"auto";E!=="auto"&&(E==="left"&&u!=="start"?(l.attr("text-anchor","start"),b=x?-o.bx/2-o.tx2width/2+Us:-o.bx-Us):E==="right"&&u!=="end"&&(l.attr("text-anchor","end"),b=x?o.bx/2-o.tx2width/2-Us:o.bx+Us)),l.call(A0.positionText,i(b),a(g)),o.tx2width&&(s.select("text.name").call(A0.positionText,i(f.text2ShiftX+f.alignShift*Us+d),a(v+o.ty0-o.by/2+Us)),s.select("rect").call(bm.setRect,i(f.text2ShiftX+(f.alignShift-1)*o.tx2width/2+d),a(v-o.by/2-1),i(o.tx2width),a(o.by+2)))})}function Ost(e,t){var r=e.index,n=e.trace||{},i=e.cd[0],a=e.cd[r]||{};function o(h){return h||Sy(h)&&h===0}var s=Array.isArray(r)?function(h,d){var v=Rf.castOption(i,r,h);return o(v)?v:Rf.extractOption({},n,"",d)}:function(h,d){return Rf.extractOption(a,n,h,d)};function l(h,d,v){var x=s(d,v);o(x)&&(e[h]=x)}if(l("hoverinfo","hi","hoverinfo"),l("bgcolor","hbg","hoverlabel.bgcolor"),l("borderColor","hbc","hoverlabel.bordercolor"),l("fontFamily","htf","hoverlabel.font.family"),l("fontSize","hts","hoverlabel.font.size"),l("fontColor","htc","hoverlabel.font.color"),l("fontWeight","htw","hoverlabel.font.weight"),l("fontStyle","hty","hoverlabel.font.style"),l("fontVariant","htv","hoverlabel.font.variant"),l("nameLength","hnl","hoverlabel.namelength"),l("textAlign","hta","hoverlabel.align"),e.posref=t==="y"||t==="closest"&&n.orientation==="h"?e.xa._offset+(e.x0+e.x1)/2:e.ya._offset+(e.y0+e.y1)/2,e.x0=Rf.constrain(e.x0,0,e.xa._length),e.x1=Rf.constrain(e.x1,0,e.xa._length),e.y0=Rf.constrain(e.y0,0,e.ya._length),e.y1=Rf.constrain(e.y1,0,e.ya._length),e.xLabelVal!==void 0&&(e.xLabel="xLabel"in e?e.xLabel:wm.hoverLabelText(e.xa,e.xLabelVal,n.xhoverformat),e.xVal=e.xa.c2d(e.xLabelVal)),e.yLabelVal!==void 0&&(e.yLabel="yLabel"in e?e.yLabel:wm.hoverLabelText(e.ya,e.yLabelVal,n.yhoverformat),e.yVal=e.ya.c2d(e.yLabelVal)),e.zLabelVal!==void 0&&e.zLabel===void 0&&(e.zLabel=String(e.zLabelVal)),!isNaN(e.xerr)&&!(e.xa.type==="log"&&e.xerr<=0)){var u=wm.tickText(e.xa,e.xa.c2l(e.xerr),"hover").text;e.xerrneg!==void 0?e.xLabel+=" +"+u+" / -"+wm.tickText(e.xa,e.xa.c2l(e.xerrneg),"hover").text:e.xLabel+=" \xB1 "+u,t==="x"&&(e.distance+=1)}if(!isNaN(e.yerr)&&!(e.ya.type==="log"&&e.yerr<=0)){var c=wm.tickText(e.ya,e.ya.c2l(e.yerr),"hover").text;e.yerrneg!==void 0?e.yLabel+=" +"+c+" / -"+wm.tickText(e.ya,e.ya.c2l(e.yerrneg),"hover").text:e.yLabel+=" \xB1 "+c,t==="y"&&(e.distance+=1)}var f=e.hoverinfo||e.trace.hoverinfo;return f&&f!=="all"&&(f=Array.isArray(f)?f:f.split("+"),f.indexOf("x")===-1&&(e.xLabel=void 0),f.indexOf("y")===-1&&(e.yLabel=void 0),f.indexOf("z")===-1&&(e.zLabel=void 0),f.indexOf("text")===-1&&(e.text=void 0),f.indexOf("name")===-1&&(e.name=void 0)),e}function yle(e,t,r){var n=r.container,i=r.fullLayout,a=i._size,o=r.event,s=!!t.hLinePoint,l=!!t.vLinePoint,u,c;if(n.selectAll(".spikeline").remove(),!!(l||s)){var f=sd.combine(i.plot_bgcolor,i.paper_bgcolor);if(s){var h=t.hLinePoint,d,v;u=h&&h.xa,c=h&&h.ya;var x=c.spikesnap;x==="cursor"?(d=o.pointerX,v=o.pointerY):(d=u._offset+h.x,v=c._offset+h.y);var b=vle.readability(h.color,f)<1.5?sd.contrast(f):h.color,g=c.spikemode,E=c.spikethickness,k=c.spikecolor||b,A=wm.getPxPosition(e,c),L,_;if(g.indexOf("toaxis")!==-1||g.indexOf("across")!==-1){if(g.indexOf("toaxis")!==-1&&(L=A,_=d),g.indexOf("across")!==-1){var C=c._counterDomainMin,M=c._counterDomainMax;c.anchor==="free"&&(C=Math.min(C,c.position),M=Math.max(M,c.position)),L=a.l+C*a.w,_=a.l+M*a.w}n.insert("line",":first-child").attr({x1:L,x2:_,y1:v,y2:v,"stroke-width":E,stroke:k,"stroke-dasharray":bm.dashStyle(c.spikedash,E)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:L,x2:_,y1:v,y2:v,"stroke-width":E+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}g.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:A+(c.side!=="right"?E:-E),cy:v,r:E,fill:k}).classed("spikeline",!0)}if(l){var p=t.vLinePoint,P,T;u=p&&p.xa,c=p&&p.ya;var F=u.spikesnap;F==="cursor"?(P=o.pointerX,T=o.pointerY):(P=u._offset+p.x,T=c._offset+p.y);var q=vle.readability(p.color,f)<1.5?sd.contrast(f):p.color,V=u.spikemode,H=u.spikethickness,X=u.spikecolor||q,G=wm.getPxPosition(e,u),N,W;if(V.indexOf("toaxis")!==-1||V.indexOf("across")!==-1){if(V.indexOf("toaxis")!==-1&&(N=G,W=T),V.indexOf("across")!==-1){var re=u._counterDomainMin,ae=u._counterDomainMax;u.anchor==="free"&&(re=Math.min(re,u.position),ae=Math.max(ae,u.position)),N=a.t+(1-ae)*a.h,W=a.t+(1-re)*a.h}n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:W,"stroke-width":H,stroke:X,"stroke-dasharray":bm.dashStyle(u.spikedash,H)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:W,"stroke-width":H+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}V.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:P,cy:G-(u.side!=="top"?H:-H),r:H,fill:X}).classed("spikeline",!0)}}}function Bst(e,t,r){if(!r||r.length!==e._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=e._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}function _le(e,t){return!t||t.vLinePoint!==e._spikepoints.vLinePoint||t.hLinePoint!==e._spikepoints.hLinePoint}function xle(e,t){return A0.plainText(e||"",{len:t,allowedTags:["br","sub","sup","b","i","em","s","u"]})}function Nst(e,t){for(var r=t.charAt(0),n=[],i=[],a=[],o=0;o{"use strict";var Ust=Mr(),Vst=va(),Hst=rp().isUnifiedHover;Cle.exports=function(t,r,n,i){i=i||{};var a=r.legend;function o(s){i.font[s]||(i.font[s]=a?r.legend.font[s]:r.font[s])}r&&Hst(r.hovermode)&&(i.font||(i.font={}),o("size"),o("family"),o("color"),o("weight"),o("style"),o("variant"),a?(i.bgcolor||(i.bgcolor=Vst.combine(r.legend.bgcolor,r.paper_bgcolor)),i.bordercolor||(i.bordercolor=r.legend.bordercolor)):i.bgcolor||(i.bgcolor=r.paper_bgcolor)),n("hoverlabel.bgcolor",i.bgcolor),n("hoverlabel.bordercolor",i.bordercolor),n("hoverlabel.namelength",i.namelength),Ust.coerceFont(n,"hoverlabel.font",i.font),n("hoverlabel.align",i.align)}});var Ple=ye((Brr,Lle)=>{"use strict";var Gst=Mr(),jst=oM(),Wst=B1();Lle.exports=function(t,r){function n(i,a){return Gst.coerce(t,r,Wst,i,a)}jst(t,r,n)}});var Dle=ye((Nrr,Rle)=>{"use strict";var Ile=Mr(),Zst=i3(),Xst=oM();Rle.exports=function(t,r,n,i){function a(s,l){return Ile.coerce(t,r,Zst,s,l)}var o=Ile.extendFlat({},i.hoverlabel);r.hovertemplate&&(o.namelength=-1),Xst(t,r,a,o)}});var OB=ye((Urr,zle)=>{"use strict";var Yst=Mr(),Kst=B1();zle.exports=function(t,r){function n(i,a){return r[i]!==void 0?r[i]:Yst.coerce(t,r,Kst,i,a)}return n("clickmode"),n("hoversubplots"),n("hovermode")}});var Ole=ye((Vrr,qle)=>{"use strict";var Fle=Mr(),Jst=B1(),$st=OB(),Qst=oM();qle.exports=function(t,r){function n(c,f){return Fle.coerce(t,r,Jst,c,f)}var i=$st(t,r);i&&(n("hoverdistance"),n("spikedistance"));var a=n("dragmode");a==="select"&&n("selectdirection");var o=r._has("mapbox"),s=r._has("map"),l=r._has("geo"),u=r._basePlotModules.length;r.dragmode==="zoom"&&((o||s||l)&&u===1||(o||s)&&l&&u===2)&&(r.dragmode="pan"),Qst(t,r,n),Fle.coerceFont(n,"hoverlabel.grouptitlefont",r.hoverlabel.font)}});var Ule=ye((Hrr,Nle)=>{"use strict";var BB=Mr(),Ble=ba();Nle.exports=function(t){var r=t.calcdata,n=t._fullLayout;function i(u){return function(c){return BB.coerceHoverinfo({hoverinfo:c},{_module:u._module},n)}}for(var a=0;a{"use strict";var tlt=ba(),rlt=qB().hover;Vle.exports=function(t,r,n){var i=tlt.getComponentMethod("annotations","onClick")(t,t._hoverdata);n!==void 0&&rlt(t,r,n,!0);function a(){t.emit("plotly_click",{points:t._hoverdata,event:r})}t._hoverdata&&r&&r.target&&(i&&i.then?i.then(a):a(),r.stopImmediatePropagation&&r.stopImmediatePropagation())}});var Nc=ye((jrr,Wle)=>{"use strict";var ilt=xa(),BL=Mr(),nlt=gv(),sM=rp(),Gle=B1(),jle=qB();Wle.exports={moduleType:"component",name:"fx",constants:IS(),schema:{layout:Gle},attributes:i3(),layoutAttributes:Gle,supplyLayoutGlobalDefaults:Ple(),supplyDefaults:Dle(),supplyLayoutDefaults:Ole(),calc:Ule(),getDistanceFunction:sM.getDistanceFunction,getClosest:sM.getClosest,inbox:sM.inbox,quadrature:sM.quadrature,appendArrayPointValue:sM.appendArrayPointValue,castHoverOption:olt,castHoverinfo:slt,hover:jle.hover,unhover:nlt.unhover,loneHover:jle.loneHover,loneUnhover:alt,click:Hle()};function alt(e){var t=BL.isD3Selection(e)?e:ilt.select(e);t.selectAll("g.hovertext").remove(),t.selectAll(".spikeline").remove()}function olt(e,t,r){return BL.castOption(e,t,"hoverlabel."+r)}function slt(e,t,r){function n(i){return BL.coerceHoverinfo({hoverinfo:i},{_module:e._module},t)}return BL.castOption(e,r,"hoverinfo",n)}});var Sg=ye(My=>{"use strict";My.selectMode=function(e){return e==="lasso"||e==="select"};My.drawMode=function(e){return e==="drawclosedpath"||e==="drawopenpath"||e==="drawline"||e==="drawrect"||e==="drawcircle"};My.openMode=function(e){return e==="drawline"||e==="drawopenpath"};My.rectMode=function(e){return e==="select"||e==="drawline"||e==="drawrect"||e==="drawcircle"};My.freeMode=function(e){return e==="lasso"||e==="drawclosedpath"||e==="drawopenpath"};My.selectingOrDrawing=function(e){return My.freeMode(e)||My.rectMode(e)}});var lM=ye((Zrr,Zle)=>{"use strict";Zle.exports=function(t){var r=t._fullLayout;r._glcanvas&&r._glcanvas.size()&&r._glcanvas.each(function(n){n.regl&&n.regl.clear({color:!0,depth:!0})})}});var NL=ye((Xrr,Xle)=>{"use strict";Xle.exports={undo:{width:857.1,height:1e3,path:"m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z",transform:"matrix(1 0 0 -1 0 850)"},home:{width:928.6,height:1e3,path:"m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z",transform:"matrix(1 0 0 -1 0 850)"},"camera-retro":{width:1e3,height:1e3,path:"m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z",transform:"matrix(1 0 0 -1 0 850)"},zoombox:{width:1e3,height:1e3,path:"m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z",transform:"matrix(1 0 0 -1 0 850)"},pan:{width:1e3,height:1e3,path:"m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z",transform:"matrix(1 0 0 -1 0 850)"},zoom_plus:{width:875,height:1e3,path:"m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},zoom_minus:{width:875,height:1e3,path:"m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},autoscale:{width:1e3,height:1e3,path:"m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_basic:{width:1500,height:1e3,path:"m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_compare:{width:1125,height:1e3,path:"m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z",transform:"matrix(1 0 0 -1 0 850)"},plotlylogo:{width:1542,height:1e3,path:"m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z",transform:"matrix(1 0 0 -1 0 850)"},"z-axis":{width:1e3,height:1e3,path:"m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z",transform:"matrix(1 0 0 -1 0 850)"},"3d_rotate":{width:1e3,height:1e3,path:"m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z",transform:"matrix(1 0 0 -1 0 850)"},camera:{width:1e3,height:1e3,path:"m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z",transform:"matrix(1 0 0 -1 0 850)"},movie:{width:1e3,height:1e3,path:"m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z",transform:"matrix(1 0 0 -1 0 850)"},question:{width:857.1,height:1e3,path:"m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z",transform:"matrix(1 0 0 -1 0 850)"},disk:{width:857.1,height:1e3,path:"m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z",transform:"matrix(1 0 0 -1 0 850)"},drawopenpath:{width:70,height:70,path:"M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z",transform:"matrix(1 0 0 1 -15 -15)"},drawclosedpath:{width:90,height:90,path:"M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z",transform:"matrix(1 0 0 1 -5 -5)"},lasso:{width:1031,height:1e3,path:"m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z",transform:"matrix(1 0 0 -1 0 850)"},selectbox:{width:1e3,height:1e3,path:"m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z",transform:"matrix(1 0 0 -1 0 850)"},drawline:{width:70,height:70,path:"M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z",transform:"matrix(1 0 0 1 -15 -15)"},drawrect:{width:80,height:80,path:"M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z",transform:"matrix(1 0 0 1 -10 -10)"},drawcircle:{width:80,height:80,path:"M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z",transform:"matrix(1 0 0 1 -10 -10)"},eraseshape:{width:80,height:80,path:"M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z",transform:"matrix(1 0 0 1 -10 -10)"},spikeline:{width:1e3,height:1e3,path:"M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z",transform:"matrix(1.5 0 0 -1.5 0 850)"},pencil:{width:1792,height:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",transform:"matrix(1 0 0 1 0 1)"},newplotlylogo:{name:"newplotlylogo",svg:[""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}});var VL=ye((Yrr,Yle)=>{"use strict";var UL=32;Yle.exports={CIRCLE_SIDES:UL,i000:0,i090:UL/4,i180:UL/2,i270:UL/4*3,cos45:Math.cos(Math.PI/4),sin45:Math.sin(Math.PI/4),SQRT2:Math.sqrt(2)}});var HL=ye((Krr,Jle)=>{"use strict";var llt=Mr().strTranslate;function Kle(e,t){switch(e.type){case"log":return e.p2d(t);case"date":return e.p2r(t,0,e.calendar);default:return e.p2r(t)}}function ult(e,t){switch(e.type){case"log":return e.d2p(t);case"date":return e.r2p(t,0,e.calendar);default:return e.r2p(t)}}function clt(e){var t=e._id.charAt(0)==="y"?1:0;return function(r){return Kle(e,r[t])}}function flt(e){return llt(e.xaxis._offset,e.yaxis._offset)}Jle.exports={p2r:Kle,r2p:ult,axValue:clt,getTransform:flt}});var u_=ye(Ey=>{"use strict";var hlt=XS(),eue=VL(),V3=eue.CIRCLE_SIDES,NB=eue.SQRT2,tue=HL(),$le=tue.p2r,Qle=tue.r2p,dlt=[0,3,4,5,6,1,2],vlt=[0,3,4,1,2];Ey.writePaths=function(e){var t=e.length;if(!t)return"M0,0Z";for(var r="",n=0;n0&&l{"use strict";var oue=Sg(),plt=oue.drawMode,glt=oue.openMode,H3=VL(),rue=H3.i000,iue=H3.i090,nue=H3.i180,aue=H3.i270,mlt=H3.cos45,ylt=H3.sin45,sue=HL(),jL=sue.p2r,c_=sue.r2p,_lt=Q1(),xlt=_lt.clearOutline,WL=u_(),blt=WL.readPaths,wlt=WL.writePaths,Tlt=WL.ellipseOver,Alt=WL.fixDatesForPaths;function Slt(e,t){if(e.length){var r=e[0][0];if(r){var n=t.gd,i=t.isActiveShape,a=t.dragmode,o=(n.layout||{}).shapes||[];if(!plt(a)&&i!==void 0){var s=n._fullLayout._activeShapeIndex;if(s{"use strict";var Mlt=Sg(),Elt=Mlt.selectMode,klt=Q1(),Clt=klt.clearOutline,UB=u_(),Llt=UB.readPaths,Plt=UB.writePaths,Ilt=UB.fixDatesForPaths;cue.exports=function(t,r){if(t.length){var n=t[0][0];if(n){var i=n.getAttribute("d"),a=r.gd,o=a._fullLayout.newselection,s=r.plotinfo,l=s.xaxis,u=s.yaxis,c=r.isActiveSelection,f=r.dragmode,h=(a.layout||{}).selections||[];if(!Elt(f)&&c!==void 0){var d=a._fullLayout._activeSelectionIndex;if(d{"use strict";fue.exports={segmentRE:/[MLHVQCTSZ][^MLHVQCTSZ]*/g,paramRE:/[^\s,]+/g,paramIsX:{M:{0:!0,drawn:0},L:{0:!0,drawn:0},H:{0:!0,drawn:0},V:{},Q:{0:!0,2:!0,drawn:2},C:{0:!0,2:!0,4:!0,drawn:4},T:{0:!0,drawn:0},S:{0:!0,2:!0,drawn:2},Z:{}},paramIsY:{M:{1:!0,drawn:1},L:{1:!0,drawn:1},H:{},V:{0:!0,drawn:0},Q:{1:!0,3:!0,drawn:3},C:{1:!0,3:!0,5:!0,drawn:5},T:{1:!0,drawn:1},S:{1:!0,3:!0,drawn:5},Z:{}},numParams:{M:2,L:2,H:1,V:1,Q:4,C:6,T:2,S:4,Z:0}}});var f_=ye(Ld=>{"use strict";var Fb=cM(),hue=Mr(),XL=Qa();Ld.rangeToShapePosition=function(e){return e.type==="log"?e.r2d:function(t){return t}};Ld.shapePositionToRange=function(e){return e.type==="log"?e.d2r:function(t){return t}};Ld.decodeDate=function(e){return function(t){return t.replace&&(t=t.replace("_"," ")),e(t)}};Ld.encodeDate=function(e){return function(t){return e(t).replace(" ","_")}};Ld.extractPathCoords=function(e,t,r){var n=[],i=e.match(Fb.segmentRE);return i.forEach(function(a){var o=t[a.charAt(0)].drawn;if(o!==void 0){var s=a.substr(1).match(Fb.paramRE);if(!(!s||s.lengthd&&(x="X"),x});return u>d&&(v=v.replace(/[\s,]*X.*/,""),hue.log("Ignoring extra params in segment "+l)),c+v})}function fM(e,t){t=t||0;var r=0;return t&&e&&(e.type==="category"||e.type==="multicategory")&&(r=(e.r2p(1)-e.r2p(0))*t),r}});var GB=ye((rir,gue)=>{"use strict";var Dlt=Mr(),G3=Qa(),due=Ll(),vue=ao(),zlt=u_().readPaths,HB=f_(),Flt=HB.getPathString,pue=x6(),qlt=Nh().FROM_TL;gue.exports=function(t,r,n,i){if(i.selectAll(".shape-label").remove(),!!(n.label.text||n.label.texttemplate)){var a;if(n.label.texttemplate){var o={};if(n.type!=="path"){var s=G3.getFromId(t,n.xref),l=G3.getFromId(t,n.yref);for(var u in pue){var c=pue[u](n,s,l);c!==void 0&&(o[u]=c)}}a=Dlt.texttemplateStringForShapes(n.label.texttemplate,{},t._fullLayout._d3locale,o)}else a=n.label.text;var f={"data-index":r},h=n.label.font,d={"data-notex":1},v=i.append("g").attr(f).classed("shape-label",!0),x=v.append("text").attr(d).classed("shape-label-text",!0).text(a),b,g,E,k;if(n.path){var A=Flt(t,n),L=zlt(A,t);b=1/0,E=1/0,g=-1/0,k=-1/0;for(var _=0;_=e?i=t-n:i=n-t,-180/Math.PI*Math.atan2(i,a)}function Blt(e,t,r,n,i,a,o){var s=i.label.textposition,l=i.label.textangle,u=i.label.padding,c=i.type,f=Math.PI/180*a,h=Math.sin(f),d=Math.cos(f),v=i.label.xanchor,x=i.label.yanchor,b,g,E,k;if(c==="line"){s==="start"?(b=e,g=t):s==="end"?(b=r,g=n):(b=(e+r)/2,g=(t+n)/2),v==="auto"&&(s==="start"?l==="auto"?r>e?v="left":re?v="right":re?v="right":re?v="left":r{"use strict";var Nlt=Mr(),Ult=Nlt.strTranslate,mue=gv(),xue=Sg(),Vlt=xue.drawMode,bue=xue.selectMode,wue=ba(),yue=va(),KL=VL(),Hlt=KL.i000,Glt=KL.i090,jlt=KL.i180,Wlt=KL.i270,Zlt=Q1(),Tue=Zlt.clearOutlineControllers,WB=u_(),YL=WB.pointsOnRectangle,jB=WB.pointsOnEllipse,Xlt=WB.writePaths,Ylt=ZL().newShapes,Klt=ZL().createShapeObj,Jlt=VB(),$lt=GB();Aue.exports=function e(t,r,n,i){i||(i=0);var a=n.gd;function o(){e(t,r,n,i++),(jB(t[0])||n.hasText)&&s({redrawing:!0})}function s(G){var N={};n.isActiveShape!==void 0&&(n.isActiveShape=!1,N=Ylt(r,n)),n.isActiveSelection!==void 0&&(n.isActiveSelection=!1,N=Jlt(r,n),a._fullLayout._reselect=!0),Object.keys(N).length&&wue.call((G||{}).redrawing?"relayout":"_guiRelayout",a,N)}var l=a._fullLayout,u=l._zoomlayer,c=n.dragmode,f=Vlt(c),h=bue(c);(f||h)&&(a._fullLayout._outlining=!0),Tue(a),r.attr("d",Xlt(t));var d,v,x,b,g;if(!i&&(n.isActiveShape||n.isActiveSelection)){g=Qlt([],t);var E=u.append("g").attr("class","outline-controllers");P(E),X()}if(f&&n.hasText){var k=u.select(".label-temp"),A=Klt(r,n,n.dragmode);$lt(a,"label-temp",A,k)}function L(G){x=+G.srcElement.getAttribute("data-i"),b=+G.srcElement.getAttribute("data-j"),d[x][b].moveFn=_}function _(G,N){if(t.length){var W=g[x][b][1],re=g[x][b][2],ae=t[x],_e=ae.length;if(YL(ae)){var Me=G,ke=N;if(n.isActiveSelection){var ge=_ue(ae,b);ge[1]===ae[b][1]?ke=0:Me=0}for(var ie=0;ie<_e;ie++)if(ie!==b){var Te=ae[ie];Te[1]===ae[b][1]&&(Te[1]=W+Me),Te[2]===ae[b][2]&&(Te[2]=re+ke)}if(ae[b][1]=W+Me,ae[b][2]=re+ke,!YL(ae))for(var Ee=0;Ee<_e;Ee++)for(var Ae=0;Ae1&&!(G.length===2&&G[1][0]==="Z")&&(b===0&&(G[0][0]="M"),t[x]=G,o(),s())}}function p(G,N){if(G===2){x=+N.srcElement.getAttribute("data-i"),b=+N.srcElement.getAttribute("data-j");var W=t[x];!YL(W)&&!jB(W)&&M()}}function P(G){d=[];for(var N=0;N{"use strict";var tut=xa(),Lue=ba(),Sue=Mr(),j3=Qa(),rut=u_().readPaths,iut=JL(),QL=GB(),Pue=Q1().clearOutlineControllers,ZB=va(),YB=ao(),nut=Vs().arrayEditor,Mue=gv(),Eue=Tg(),qb=cM(),Mp=f_(),XB=Mp.getPathString;Due.exports={draw:KB,drawOne:Iue,eraseActiveShape:sut,drawLabel:QL};function KB(e){var t=e._fullLayout;t._shapeUpperLayer.selectAll("path").remove(),t._shapeLowerLayer.selectAll("path").remove(),t._shapeUpperLayer.selectAll("text").remove(),t._shapeLowerLayer.selectAll("text").remove();for(var r in t._plots){var n=t._plots[r].shapelayer;n&&(n.selectAll("path").remove(),n.selectAll("text").remove())}for(var i=0;io&&kt>s&&!rt.shiftKey?Mue.getCursor(Ct/Rt,1-Yt/kt):"move";Eue(t,xr),Te=xr.split("-")[0]}}function Ce(rt){$L(e)||(l&&(g=ae(r.xanchor)),u&&(E=_e(r.yanchor)),r.type==="path"?T=r.path:(d=l?r.x0:ae(r.x0),v=u?r.y0:_e(r.y0),x=l?r.x1:ae(r.x1),b=u?r.y1:_e(r.y1)),db?(k=v,C="y0",A=b,M="y1"):(k=b,C="y1",A=v,M="y0"),ze(rt),nt(i,r),qt(t,r,e),ie.moveFn=Te==="move"?ce:Ge,ie.altKey=rt.altKey)}function me(){$L(e)||(Eue(t),ct(i),Rue(t,e,r),Lue.call("_guiRelayout",e,a.getUpdateObj()))}function Re(){$L(e)||ct(i)}function ce(rt,ot){if(r.type==="path"){var Rt=function(Yt){return Yt},kt=Rt,Ct=Rt;l?h("xanchor",r.xanchor=Me(g+rt)):(kt=function(xr){return Me(ae(xr)+rt)},q&&q.type==="date"&&(kt=Mp.encodeDate(kt))),u?h("yanchor",r.yanchor=ke(E+ot)):(Ct=function(xr){return ke(_e(xr)+ot)},H&&H.type==="date"&&(Ct=Mp.encodeDate(Ct))),h("path",r.path=kue(T,kt,Ct))}else l?h("xanchor",r.xanchor=Me(g+rt)):(h("x0",r.x0=Me(d+rt)),h("x1",r.x1=Me(x+rt))),u?h("yanchor",r.yanchor=ke(E+ot)):(h("y0",r.y0=ke(v+ot)),h("y1",r.y1=ke(b+ot)));t.attr("d",XB(e,r)),nt(i,r),QL(e,n,r,F)}function Ge(rt,ot){if(f){var Rt=function(_r){return _r},kt=Rt,Ct=Rt;l?h("xanchor",r.xanchor=Me(g+rt)):(kt=function(Br){return Me(ae(Br)+rt)},q&&q.type==="date"&&(kt=Mp.encodeDate(kt))),u?h("yanchor",r.yanchor=ke(E+ot)):(Ct=function(Br){return ke(_e(Br)+ot)},H&&H.type==="date"&&(Ct=Mp.encodeDate(Ct))),h("path",r.path=kue(T,kt,Ct))}else if(c){if(Te==="resize-over-start-point"){var Yt=d+rt,xr=u?v-ot:v+ot;h("x0",r.x0=l?Yt:Me(Yt)),h("y0",r.y0=u?xr:ke(xr))}else if(Te==="resize-over-end-point"){var er=x+rt,Ke=u?b-ot:b+ot;h("x1",r.x1=l?er:Me(er)),h("y1",r.y1=u?Ke:ke(Ke))}}else{var xt=function(_r){return Te.indexOf(_r)!==-1},bt=xt("n"),Lt=xt("s"),St=xt("w"),Et=xt("e"),dt=bt?k+ot:k,Ht=Lt?A+ot:A,$t=St?L+rt:L,fr=Et?_+rt:_;u&&(bt&&(dt=k-ot),Lt&&(Ht=A-ot)),(!u&&Ht-dt>s||u&&dt-Ht>s)&&(h(C,r[C]=u?dt:ke(dt)),h(M,r[M]=u?Ht:ke(Ht))),fr-$t>o&&(h(p,r[p]=l?$t:Me($t)),h(P,r[P]=l?fr:Me(fr)))}t.attr("d",XB(e,r)),nt(i,r),QL(e,n,r,F)}function nt(rt,ot){(l||u)&&Rt();function Rt(){var kt=ot.type!=="path",Ct=rt.selectAll(".visual-cue").data([0]),Yt=1;Ct.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":Yt}).classed("visual-cue",!0);var xr=ae(l?ot.xanchor:Sue.midRange(kt?[ot.x0,ot.x1]:Mp.extractPathCoords(ot.path,qb.paramIsX))),er=_e(u?ot.yanchor:Sue.midRange(kt?[ot.y0,ot.y1]:Mp.extractPathCoords(ot.path,qb.paramIsY)));if(xr=Mp.roundPositionForSharpStrokeRendering(xr,Yt),er=Mp.roundPositionForSharpStrokeRendering(er,Yt),l&&u){var Ke="M"+(xr-1-Yt)+","+(er-1-Yt)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";Ct.attr("d",Ke)}else if(l){var xt="M"+(xr-1-Yt)+","+(er-9-Yt)+"v18 h2 v-18 Z";Ct.attr("d",xt)}else{var bt="M"+(xr-9-Yt)+","+(er-1-Yt)+"h18 v2 h-18 Z";Ct.attr("d",bt)}}}function ct(rt){rt.selectAll(".visual-cue").remove()}function qt(rt,ot,Rt){var kt=ot.xref,Ct=ot.yref,Yt=j3.getFromId(Rt,kt),xr=j3.getFromId(Rt,Ct),er="";kt!=="paper"&&!Yt.autorange&&(er+=kt),Ct!=="paper"&&!xr.autorange&&(er+=Ct),YB.setClipUrl(rt,er?"clip"+Rt._fullLayout._uid+er:null,Rt)}}function kue(e,t,r){return e.replace(qb.segmentRE,function(n){var i=0,a=n.charAt(0),o=qb.paramIsX[a],s=qb.paramIsY[a],l=qb.numParams[a],u=n.substr(1).replace(qb.paramRE,function(c){return i>=l||(o[i]?c=t(c):s[i]&&(c=r(c)),i++),c});return a+u})}function out(e,t){if(eP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeShapeIndex){Cue(e);return}e._fullLayout._activeShapeIndex=n,e._fullLayout._deactivateShape=Cue,KB(e)}}}function Cue(e){if(eP(e)){var t=e._fullLayout._activeShapeIndex;t>=0&&(Pue(e),delete e._fullLayout._activeShapeIndex,KB(e))}}function sut(e){if(eP(e)){Pue(e);var t=e._fullLayout._activeShapeIndex,r=(e.layout||{}).shapes||[];if(t{"use strict";var S0=ba(),zue=Xu(),Fue=af(),al=NL(),lut=tP().eraseActiveShape,rP=Mr(),Os=rP._,ol=Hue.exports={};ol.toImage={name:"toImage",title:function(e){var t=e._context.toImageButtonOptions||{},r=t.format||"png";return r==="png"?Os(e,"Download plot as a png"):Os(e,"Download plot")},icon:al.camera,click:function(e){var t=e._context.toImageButtonOptions,r={format:t.format||"png"};rP.notifier(Os(e,"Taking snapshot - this may take a few seconds"),"long"),["filename","width","height","scale"].forEach(function(n){n in t&&(r[n]=t[n])}),S0.call("downloadImage",e,r).then(function(n){rP.notifier(Os(e,"Snapshot succeeded")+" - "+n,"long")}).catch(function(){rP.notifier(Os(e,"Sorry, there was a problem downloading your snapshot!"),"long")})}};ol.sendDataToCloud={name:"sendDataToCloud",title:function(e){return Os(e,"Edit in Chart Studio")},icon:al.disk,click:function(e){zue.sendDataToCloud(e)}};ol.editInChartStudio={name:"editInChartStudio",title:function(e){return Os(e,"Edit in Chart Studio")},icon:al.pencil,click:function(e){zue.sendDataToCloud(e)}};ol.zoom2d={name:"zoom2d",_cat:"zoom",title:function(e){return Os(e,"Zoom")},attr:"dragmode",val:"zoom",icon:al.zoombox,click:Ov};ol.pan2d={name:"pan2d",_cat:"pan",title:function(e){return Os(e,"Pan")},attr:"dragmode",val:"pan",icon:al.pan,click:Ov};ol.select2d={name:"select2d",_cat:"select",title:function(e){return Os(e,"Box Select")},attr:"dragmode",val:"select",icon:al.selectbox,click:Ov};ol.lasso2d={name:"lasso2d",_cat:"lasso",title:function(e){return Os(e,"Lasso Select")},attr:"dragmode",val:"lasso",icon:al.lasso,click:Ov};ol.drawclosedpath={name:"drawclosedpath",title:function(e){return Os(e,"Draw closed freeform")},attr:"dragmode",val:"drawclosedpath",icon:al.drawclosedpath,click:Ov};ol.drawopenpath={name:"drawopenpath",title:function(e){return Os(e,"Draw open freeform")},attr:"dragmode",val:"drawopenpath",icon:al.drawopenpath,click:Ov};ol.drawline={name:"drawline",title:function(e){return Os(e,"Draw line")},attr:"dragmode",val:"drawline",icon:al.drawline,click:Ov};ol.drawrect={name:"drawrect",title:function(e){return Os(e,"Draw rectangle")},attr:"dragmode",val:"drawrect",icon:al.drawrect,click:Ov};ol.drawcircle={name:"drawcircle",title:function(e){return Os(e,"Draw circle")},attr:"dragmode",val:"drawcircle",icon:al.drawcircle,click:Ov};ol.eraseshape={name:"eraseshape",title:function(e){return Os(e,"Erase active shape")},icon:al.eraseshape,click:lut};ol.zoomIn2d={name:"zoomIn2d",_cat:"zoomin",title:function(e){return Os(e,"Zoom in")},attr:"zoom",val:"in",icon:al.zoom_plus,click:Ov};ol.zoomOut2d={name:"zoomOut2d",_cat:"zoomout",title:function(e){return Os(e,"Zoom out")},attr:"zoom",val:"out",icon:al.zoom_minus,click:Ov};ol.autoScale2d={name:"autoScale2d",_cat:"autoscale",title:function(e){return Os(e,"Autoscale")},attr:"zoom",val:"auto",icon:al.autoscale,click:Ov};ol.resetScale2d={name:"resetScale2d",_cat:"resetscale",title:function(e){return Os(e,"Reset axes")},attr:"zoom",val:"reset",icon:al.home,click:Ov};ol.hoverClosestCartesian={name:"hoverClosestCartesian",_cat:"hoverclosest",title:function(e){return Os(e,"Show closest data on hover")},attr:"hovermode",val:"closest",icon:al.tooltip_basic,gravity:"ne",click:Ov};ol.hoverCompareCartesian={name:"hoverCompareCartesian",_cat:"hoverCompare",title:function(e){return Os(e,"Compare data on hover")},attr:"hovermode",val:function(e){return e._fullLayout._isHoriz?"y":"x"},icon:al.tooltip_compare,gravity:"ne",click:Ov};function Ov(e,t){var r=t.currentTarget,n=r.getAttribute("data-attr"),i=r.getAttribute("data-val")||!0,a=e._fullLayout,o={},s=Fue.list(e,null,!0),l=a._cartesianSpikesEnabled,u,c;if(n==="zoom"){var f=i==="in"?.5:2,h=(1+f)/2,d=(1-f)/2,v;for(c=0;c{"use strict";var Gue=QB(),fut=Object.keys(Gue),jue=["drawline","drawopenpath","drawclosedpath","drawcircle","drawrect","eraseshape"],Wue=["v1hovermode","hoverclosest","hovercompare","togglehover","togglespikelines"].concat(jue),Z3=[],hut=function(e){if(Wue.indexOf(e._cat||e.name)===-1){var t=e.name,r=(e._cat||e.name).toLowerCase();Z3.indexOf(t)===-1&&Z3.push(t),Z3.indexOf(r)===-1&&Z3.push(r)}};fut.forEach(function(e){hut(Gue[e])});Z3.sort();Zue.exports={DRAW_MODES:jue,backButtons:Wue,foreButtons:Z3}});var tN=ye((lir,Xue)=>{"use strict";var sir=eN();Xue.exports={editType:"modebar",orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"modebar"},bgcolor:{valType:"color",editType:"modebar"},color:{valType:"color",editType:"modebar"},activecolor:{valType:"color",editType:"modebar"},uirevision:{valType:"any",editType:"none"},add:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"},remove:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"}}});var Kue=ye((uir,Yue)=>{"use strict";var dut=Mr(),hM=va(),vut=Vs(),put=tN();Yue.exports=function(t,r){var n=t.modebar||{},i=vut.newContainer(r,"modebar");function a(s,l){return dut.coerce(n,i,put,s,l)}a("orientation"),a("bgcolor",hM.addOpacity(r.paper_bgcolor,.5));var o=hM.contrast(hM.rgb(r.modebar.bgcolor));a("color",hM.addOpacity(o,.3)),a("activecolor",hM.addOpacity(o,.7)),a("uirevision",r.uirevision),a("add"),a("remove")}});var ece=ye((cir,Que)=>{"use strict";var rN=xa(),gut=uo(),nP=Mr(),Jue=NL(),mut=QC().version,yut=new DOMParser;function $ue(e){this.container=e.container,this.element=document.createElement("div"),this.update(e.graphInfo,e.buttons),this.container.appendChild(this.element)}var Tm=$ue.prototype;Tm.update=function(e,t){this.graphInfo=e;var r=this.graphInfo._context,n=this.graphInfo._fullLayout,i="modebar-"+n._uid;this.element.setAttribute("id",i),this._uid=i,this.element.className="modebar",r.displayModeBar==="hover"&&(this.element.className+=" modebar--hover ease-bg"),n.modebar.orientation==="v"&&(this.element.className+=" vertical",t=t.reverse());var a=n.modebar,o="#"+i+" .modebar-group";document.querySelectorAll(o).forEach(function(f){f.style.backgroundColor=a.bgcolor});var s=!this.hasButtons(t),l=this.hasLogo!==r.displaylogo,u=this.locale!==r.locale;if(this.locale=r.locale,(s||l||u)&&(this.removeAllButtons(),this.updateButtons(t),r.watermark||r.displaylogo)){var c=this.getLogo();r.watermark&&(c.className=c.className+" watermark"),n.modebar.orientation==="v"?this.element.insertBefore(c,this.element.childNodes[0]):this.element.appendChild(c),this.hasLogo=!0}this.updateActiveButton(),nP.setStyleOnHover("#"+i+" .modebar-btn",".active",".icon path","fill: "+a.activecolor,"fill: "+a.color,this.element)};Tm.updateButtons=function(e){var t=this;this.buttons=e,this.buttonElements=[],this.buttonsNames=[],this.buttons.forEach(function(r){var n=t.createGroup();r.forEach(function(i){var a=i.name;if(!a)throw new Error("must provide button 'name' in button config");if(t.buttonsNames.indexOf(a)!==-1)throw new Error("button name '"+a+"' is taken");t.buttonsNames.push(a);var o=t.createButton(i);t.buttonElements.push(o),n.appendChild(o)}),t.element.appendChild(n)})};Tm.createGroup=function(){var e=document.createElement("div");e.className="modebar-group";var t=this.graphInfo._fullLayout.modebar;return e.style.backgroundColor=t.bgcolor,e};Tm.createButton=function(e){var t=this,r=document.createElement("a");r.setAttribute("rel","tooltip"),r.className="modebar-btn";var n=e.title;n===void 0?n=e.name:typeof n=="function"&&(n=n(this.graphInfo)),(n||n===0)&&r.setAttribute("data-title",n),e.attr!==void 0&&r.setAttribute("data-attr",e.attr);var i=e.val;i!==void 0&&(typeof i=="function"&&(i=i(this.graphInfo)),r.setAttribute("data-val",i));var a=e.click;if(typeof a!="function")throw new Error("must provide button 'click' function in button config");r.addEventListener("click",function(s){e.click(t.graphInfo,s),t.updateActiveButton(s.currentTarget)}),r.setAttribute("data-toggle",e.toggle||!1),e.toggle&&rN.select(r).classed("active",!0);var o=e.icon;return typeof o=="function"?r.appendChild(o()):r.appendChild(this.createIcon(o||Jue.question)),r.setAttribute("data-gravity",e.gravity||"n"),r};Tm.createIcon=function(e){var t=gut(e.height)?Number(e.height):e.ascent-e.descent,r="http://www.w3.org/2000/svg",n;if(e.path){n=document.createElementNS(r,"svg"),n.setAttribute("viewBox",[0,0,e.width,t].join(" ")),n.setAttribute("class","icon");var i=document.createElementNS(r,"path");i.setAttribute("d",e.path),e.transform?i.setAttribute("transform",e.transform):e.ascent!==void 0&&i.setAttribute("transform","matrix(1 0 0 -1 0 "+e.ascent+")"),n.appendChild(i)}if(e.svg){var a=yut.parseFromString(e.svg,"application/xml");n=a.childNodes[0]}return n.setAttribute("height","1em"),n.setAttribute("width","1em"),n};Tm.updateActiveButton=function(e){var t=this.graphInfo._fullLayout,r=e!==void 0?e.getAttribute("data-attr"):null;this.buttonElements.forEach(function(n){var i=n.getAttribute("data-val")||!0,a=n.getAttribute("data-attr"),o=n.getAttribute("data-toggle")==="true",s=rN.select(n),l=function(f,h){var d=t.modebar,v=f.querySelector(".icon path");v&&(h||f.matches(":hover")?v.style.fill=d.activecolor:v.style.fill=d.color)};if(o){if(a===r){var u=!s.classed("active");s.classed("active",u),l(n,u)}}else{var c=a===null?a:nP.nestedProperty(t,a).get();s.classed("active",c===i),l(n,c===i)}})};Tm.hasButtons=function(e){var t=this.buttons;if(!t||e.length!==t.length)return!1;for(var r=0;r{"use strict";var but=af(),tce=lu(),iN=ba(),wut=rp().isUnifiedHover,Tut=ece(),aP=QB(),Aut=eN().DRAW_MODES,Sut=Mr().extendDeep;rce.exports=function(t){var r=t._fullLayout,n=t._context,i=r._modeBar;if(!n.displayModeBar&&!n.watermark){i&&(i.destroy(),delete r._modeBar);return}if(!Array.isArray(n.modeBarButtonsToRemove))throw new Error(["*modeBarButtonsToRemove* configuration options","must be an array."].join(" "));if(!Array.isArray(n.modeBarButtonsToAdd))throw new Error(["*modeBarButtonsToAdd* configuration options","must be an array."].join(" "));var a=n.modeBarButtons,o;Array.isArray(a)&&a.length?o=Put(a):!n.displayModeBar&&n.watermark?o=[]:o=Mut(t),i?i.update(t,o):r._modeBar=Tut(t,o)};function Mut(e){var t=e._fullLayout,r=e._fullData,n=e._context;function i(N,W){if(typeof W=="string"){if(W.toLowerCase()===N.toLowerCase())return!0}else{var re=W.name,ae=W._cat||W.name;if(re===N||ae===N.toLowerCase())return!0}return!1}var a=t.modebar.add;typeof a=="string"&&(a=[a]);var o=t.modebar.remove;typeof o=="string"&&(o=[o]);var s=n.modeBarButtonsToAdd.concat(a.filter(function(N){for(var W=0;W1?(P=["toggleHover"],T=["resetViews"]):f?(p=["zoomInGeo","zoomOutGeo"],P=["hoverClosestGeo"],T=["resetGeo"]):c?(P=["hoverClosest3d"],T=["resetCameraDefault3d","resetCameraLastSave3d"]):x?(p=["zoomInMapbox","zoomOutMapbox"],P=["toggleHover"],T=["resetViewMapbox"]):b?(p=["zoomInMap","zoomOutMap"],P=["toggleHover"],T=["resetViewMap"]):h?P=["hoverClosestPie"]:k?(P=["hoverClosestCartesian","hoverCompareCartesian"],T=["resetViewSankey"]):P=["toggleHover"],u&&P.push("toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"),(Cut(r)||L)&&(P=[]),u&&!A&&(p=["zoomIn2d","zoomOut2d","autoScale2d"],T[0]!=="resetViews"&&(T=["resetScale2d"])),c?F=["zoom3d","pan3d","orbitRotation","tableRotation"]:u&&!A||v?F=["zoom2d","pan2d"]:x||b||f?F=["pan2d"]:g&&(F=["zoom2d"]),kut(r)&&F.push("select2d","lasso2d");var q=[],V=function(N){q.indexOf(N)===-1&&P.indexOf(N)!==-1&&q.push(N)};if(Array.isArray(s)){for(var H=[],X=0;X{"use strict";nce.exports={moduleType:"component",name:"modebar",layoutAttributes:tN(),supplyLayoutDefaults:Kue(),manage:ice()}});var aN=ye((dir,ace)=>{"use strict";var Iut=Nh().FROM_BL;ace.exports=function(t,r,n){n===void 0&&(n=Iut[t.constraintoward||"center"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*n;t.range=t._input.range=[t.l2r(a+(i[0]-a)*r),t.l2r(a+(i[1]-a)*r)],t.setScale()}});var Bb=ye(dM=>{"use strict";var Ob=Mr(),oN=wg(),Mg=af().id2name,Rut=Cd(),oce=aN(),Dut=ym(),zut=es().ALMOST_EQUAL,Fut=Nh().FROM_BL;dM.handleDefaults=function(e,t,r){var n=r.axIds,i=r.axHasImage,a=t._axisConstraintGroups=[],o=t._axisMatchGroups=[],s,l,u,c,f,h,d,v;for(s=0;sa?r.substr(a):n.substr(i))+o}function Out(e,t){for(var r=t._size,n=r.h/r.w,i={},a=Object.keys(e),o=0;ozut*v&&!E)){for(a=0;aF&&reP&&(P=re);var _e=(P-p)/(2*T);f/=_e,p=l.l2r(p),P=l.l2r(P),l.range=l._input.range=_{"use strict";var sP=xa(),Bv=ba(),Jp=Xu(),M0=Mr(),uN=Ll(),cN=lM(),vM=va(),X3=ao(),cce=Mb(),pce=nN(),pM=Qa(),ky=Nh(),gce=Bb(),But=gce.enforce,Nut=gce.clean,fce=wg().doAutoRange,mce="start",Uut="middle",yce="end",Vut=ad().zindexSeparator;ld.layoutStyles=function(e){return M0.syncOrAsync([Jp.doAutoMargin,Gut],e)};function Hut(e,t,r){for(var n=0;n=e[1]||i[1]<=e[0])&&a[0]t[0])return!0}return!1}function Gut(e){var t=e._fullLayout,r=t._size,n=r.p,i=pM.list(e,"",!0),a,o,s,l,u,c;if(t._paperdiv.style({width:e._context.responsive&&t.autosize&&!e._context._hasZeroWidth&&!e.layout.width?"100%":t.width+"px",height:e._context.responsive&&t.autosize&&!e._context._hasZeroHeight&&!e.layout.height?"100%":t.height+"px"}).selectAll(".main-svg").call(X3.setSize,t.width,t.height),e._context.setBackground(e,t.paper_bgcolor),ld.drawMainTitle(e),pce.manage(e),!t._has("cartesian"))return Jp.previousPromises(e);function f(Ce,me,Re){var ce=Ce._lw/2;if(Ce._id.charAt(0)==="x"){if(me){if(Re==="top")return me._offset-n-ce}else return r.t+r.h*(1-(Ce.position||0))+ce%1;return me._offset+me._length+n+ce}if(me){if(Re==="right")return me._offset+me._length+n+ce}else return r.l+r.w*(Ce.position||0)+ce%1;return me._offset-n-ce}for(a=0;a0){Xut(e,a,u,l),s.attr({x:o,y:a,"text-anchor":n,dy:vce(t.yanchor)}).call(uN.positionText,o,a);var c=(t.text.match(uN.BR_TAG_ALL)||[]).length;if(c){var f=ky.LINE_SPACING*c+ky.MID_SHIFT;t.y===0&&(f=-f),s.selectAll(".line").each(function(){var b=+this.getAttribute("dy").slice(0,-2)-f+"em";this.setAttribute("dy",b)})}var h=sP.selectAll(".gtitle-subtitle");if(h.node()){var d=s.node().getBBox(),v=d.y+d.height,x=v+cce.SUBTITLE_PADDING_EM*t.subtitle.font.size;h.attr({x:o,y:x,"text-anchor":n,dy:vce(t.yanchor)}).call(uN.positionText,o,x)}}}};function jut(e,t,r,n,i){var a=t.yref==="paper"?e._fullLayout._size.h:e._fullLayout.height,o=M0.isTopAnchor(t)?n:n-i,s=r==="b"?a-o:o;return M0.isTopAnchor(t)&&r==="t"||M0.isBottomAnchor(t)&&r==="b"?!1:s.5?"t":"b",o=e._fullLayout.margin[a],s=0;return t.yref==="paper"?s=r+t.pad.t+t.pad.b:t.yref==="container"&&(s=Wut(a,n,i,e._fullLayout.height,r)+t.pad.t+t.pad.b),s>o?s:0}function Xut(e,t,r,n){var i="title.automargin",a=e._fullLayout.title,o=a.y>.5?"t":"b",s={x:a.x,y:a.y,t:0,b:0},l={};a.yref==="paper"&&jut(e,a,o,t,n)?s[o]=r:a.yref==="container"&&(l[o]=r,e._fullLayout._reservedMargin[i]=l),Jp.allowAutoMargin(e,i),Jp.autoMargin(e,i,s)}function Yut(e,t){var r=e.title,n=e._size,i=0;switch(t===mce?i=r.pad.l:t===yce&&(i=-r.pad.r),r.xref){case"paper":return n.l+n.w*r.x+i;case"container":default:return e.width*r.x+i}}function Kut(e,t){var r=e.title,n=e._size,i=0;if(t==="0em"||!t?i=-r.pad.b:t===ky.CAP_SHIFT+"em"&&(i=r.pad.t),r.y==="auto")return n.t/2;switch(r.yref){case"paper":return n.t+n.h-n.h*r.y+i;case"container":default:return e.height-e.height*r.y+i}}function vce(e){return e==="top"?ky.CAP_SHIFT+.3+"em":e==="bottom"?"-0.3em":ky.MID_SHIFT+"em"}function Jut(e){var t=e.title,r=Uut;return M0.isRightAnchor(t)?r=yce:M0.isLeftAnchor(t)&&(r=mce),r}function $ut(e){var t=e.title,r="0em";return M0.isTopAnchor(t)?r=ky.CAP_SHIFT+"em":M0.isMiddleAnchor(t)&&(r=ky.MID_SHIFT+"em"),r}ld.doTraceStyle=function(e){var t=e.calcdata,r=[],n;for(n=0;n{"use strict";var Qut=u_().readPaths,ect=JL(),_ce=Q1().clearOutlineControllers,fN=va(),xce=ao(),tct=Vs().arrayEditor,bce=f_(),rct=bce.getPathString;Tce.exports={draw:lP,drawOne:wce,activateLastSelection:act};function lP(e){var t=e._fullLayout;_ce(e),t._selectionLayer.selectAll("path").remove();for(var r in t._plots){var n=t._plots[r].selectionLayer;n&&n.selectAll("path").remove()}for(var i=0;i=0;b--){var g=o.append("path").attr(l).style("opacity",b?.1:u).call(fN.stroke,f).call(fN.fill,c).call(xce.dashLine,b?"solid":d,b?4+h:h);if(ict(g,e,n),v){var E=tct(e.layout,"selections",n);g.style({cursor:"move"});var k={element:g.node(),plotinfo:i,gd:e,editHelpers:E,isActiveSelection:!0},A=Qut(s,e);ect(A,g,k)}else g.style("pointer-events",b?"all":"none");x[b]=g}var L=x[0],_=x[1];_.node().addEventListener("click",function(){return nct(e,L)})}}function ict(e,t,r){var n=r.xref+r.yref;xce.setClipUrl(e,"clip"+t._fullLayout._uid+n,t)}function nct(e,t){if(uP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeSelectionIndex){hN(e);return}e._fullLayout._activeSelectionIndex=n,e._fullLayout._deactivateSelection=hN,lP(e)}}}function act(e){if(uP(e)){var t=e._fullLayout.selections.length-1;e._fullLayout._activeSelectionIndex=t,e._fullLayout._deactivateSelection=hN,lP(e)}}function hN(e){if(uP(e)){var t=e._fullLayout._activeSelectionIndex;t>=0&&(_ce(e),delete e._fullLayout._activeSelectionIndex,lP(e))}}});var Sce=ye((mir,Ace)=>{function oct(){var e,t=0,r=!1;function n(i,a){return e.list.push({type:i,data:a?JSON.parse(JSON.stringify(a)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(i,a){return n("check",{seg1:i,seg2:a})},segmentChop:function(i,a){return n("div_seg",{seg:i,pt:a}),n("chop",{seg:i,pt:a})},statusRemove:function(i){return n("pop_seg",{seg:i})},segmentUpdate:function(i){return n("seg_update",{seg:i})},segmentNew:function(i,a){return n("new_seg",{seg:i,primary:a})},segmentRemove:function(i){return n("rem_seg",{seg:i})},tempStatus:function(i,a,o){return n("temp_status",{seg:i,above:a,below:o})},rewind:function(i){return n("rewind",{seg:i})},status:function(i,a,o){return n("status",{seg:i,above:a,below:o})},vert:function(i){return i===r?e:(r=i,n("vert",{x:i}))},log:function(i){return typeof i!="string"&&(i=JSON.stringify(i,!1," ")),n("log",{txt:i})},reset:function(){return n("reset")},selected:function(i){return n("selected",{segs:i})},chainStart:function(i){return n("chain_start",{seg:i})},chainRemoveHead:function(i,a){return n("chain_rem_head",{index:i,pt:a})},chainRemoveTail:function(i,a){return n("chain_rem_tail",{index:i,pt:a})},chainNew:function(i,a){return n("chain_new",{pt1:i,pt2:a})},chainMatch:function(i){return n("chain_match",{index:i})},chainClose:function(i){return n("chain_close",{index:i})},chainAddHead:function(i,a){return n("chain_add_head",{index:i,pt:a})},chainAddTail:function(i,a){return n("chain_add_tail",{index:i,pt:a})},chainConnect:function(i,a){return n("chain_con",{index1:i,index2:a})},chainReverse:function(i){return n("chain_rev",{index:i})},chainJoin:function(i,a){return n("chain_join",{index1:i,index2:a})},done:function(){return n("done")}},e}Ace.exports=oct});var Ece=ye((yir,Mce)=>{function sct(e){typeof e!="number"&&(e=1e-10);var t={epsilon:function(r){return typeof r=="number"&&(e=r),e},pointAboveOrOnLine:function(r,n,i){var a=n[0],o=n[1],s=i[0],l=i[1],u=r[0],c=r[1];return(s-a)*(c-o)-(l-o)*(u-a)>=-e},pointBetween:function(r,n,i){var a=r[1]-n[1],o=i[0]-n[0],s=r[0]-n[0],l=i[1]-n[1],u=s*o+a*l;if(u-e)},pointsSameX:function(r,n){return Math.abs(r[0]-n[0])e!=s-a>e&&(o-c)*(a-f)/(s-f)+c-i>e&&(l=!l),o=c,s=f}return l}};return t}Mce.exports=sct});var Cce=ye((_ir,kce)=>{var lct={create:function(){var e={root:{root:!0,next:null},exists:function(t){return!(t===null||t===e.root)},isEmpty:function(){return e.root.next===null},getHead:function(){return e.root.next},insertBefore:function(t,r){for(var n=e.root,i=e.root.next;i!==null;){if(r(i)){t.prev=i.prev,t.next=i,i.prev.next=t,i.prev=t;return}n=i,i=i.next}n.next=t,t.prev=n,t.next=null},findTransition:function(t){for(var r=e.root,n=e.root.next;n!==null&&!t(n);)r=n,n=n.next;return{before:r===e.root?null:r,after:n,insert:function(i){return i.prev=r,i.next=n,r.next=i,n!==null&&(n.prev=i),i}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}};kce.exports=lct});var Pce=ye((xir,Lce)=>{var mM=Cce();function uct(e,t,r){function n(v,x){return{id:r?r.segmentId():-1,start:v,end:x,myFill:{above:null,below:null},otherFill:null}}function i(v,x,b){return{id:r?r.segmentId():-1,start:v,end:x,myFill:{above:b.myFill.above,below:b.myFill.below},otherFill:null}}var a=mM.create();function o(v,x,b,g,E,k){var A=t.pointsCompare(x,E);return A!==0?A:t.pointsSame(b,k)?0:v!==g?v?1:-1:t.pointAboveOrOnLine(b,g?E:k,g?k:E)?1:-1}function s(v,x){a.insertBefore(v,function(b){var g=o(v.isStart,v.pt,x,b.isStart,b.pt,b.other.pt);return g<0})}function l(v,x){var b=mM.node({isStart:!0,pt:v.start,seg:v,primary:x,other:null,status:null});return s(b,v.end),b}function u(v,x,b){var g=mM.node({isStart:!1,pt:x.end,seg:x,primary:b,other:v,status:null});v.other=g,s(g,v.pt)}function c(v,x){var b=l(v,x);return u(b,v,x),b}function f(v,x){r&&r.segmentChop(v.seg,x),v.other.remove(),v.seg.end=x,v.other.pt=x,s(v.other,v.pt)}function h(v,x){var b=i(x,v.seg.end,v.seg);return f(v,x),c(b,v.primary)}function d(v,x){var b=mM.create();function g(H,X){var G=H.seg.start,N=H.seg.end,W=X.seg.start,re=X.seg.end;return t.pointsCollinear(G,W,re)?t.pointsCollinear(N,W,re)||t.pointAboveOrOnLine(N,W,re)?1:-1:t.pointAboveOrOnLine(G,W,re)?1:-1}function E(H){return b.findTransition(function(X){var G=g(H,X.ev);return G>0})}function k(H,X){var G=H.seg,N=X.seg,W=G.start,re=G.end,ae=N.start,_e=N.end;r&&r.checkIntersection(G,N);var Me=t.linesIntersect(W,re,ae,_e);if(Me===!1){if(!t.pointsCollinear(W,re,ae)||t.pointsSame(W,_e)||t.pointsSame(re,ae))return!1;var ke=t.pointsSame(W,ae),ge=t.pointsSame(re,_e);if(ke&&ge)return X;var ie=!ke&&t.pointBetween(W,ae,_e),Te=!ge&&t.pointBetween(re,ae,_e);if(ke)return Te?h(X,re):h(H,_e),X;ie&&(ge||(Te?h(X,re):h(H,_e)),h(X,W))}else Me.alongA===0&&(Me.alongB===-1?h(H,ae):Me.alongB===0?h(H,Me.pt):Me.alongB===1&&h(H,_e)),Me.alongB===0&&(Me.alongA===-1?h(X,W):Me.alongA===0?h(X,Me.pt):Me.alongA===1&&h(X,re));return!1}for(var A=[];!a.isEmpty();){var L=a.getHead();if(r&&r.vert(L.pt[0]),L.isStart){let H=function(){if(C){var X=k(L,C);if(X)return X}return M?k(L,M):!1};var V=H;r&&r.segmentNew(L.seg,L.primary);var _=E(L),C=_.before?_.before.ev:null,M=_.after?_.after.ev:null;r&&r.tempStatus(L.seg,C?C.seg:!1,M?M.seg:!1);var p=H();if(p){if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,P&&(p.seg.myFill.above=!p.seg.myFill.above)}else p.seg.otherFill=L.seg.myFill;r&&r.segmentUpdate(p.seg),L.other.remove(),L.remove()}if(a.getHead()!==L){r&&r.rewind(L.seg);continue}if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,M?L.seg.myFill.below=M.seg.myFill.above:L.seg.myFill.below=v,P?L.seg.myFill.above=!L.seg.myFill.below:L.seg.myFill.above=L.seg.myFill.below}else if(L.seg.otherFill===null){var T;M?L.primary===M.primary?T=M.seg.otherFill.above:T=M.seg.myFill.above:T=L.primary?x:v,L.seg.otherFill={above:T,below:T}}r&&r.status(L.seg,C?C.seg:!1,M?M.seg:!1),L.other.status=_.insert(mM.node({ev:L}))}else{var F=L.status;if(F===null)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(b.exists(F.prev)&&b.exists(F.next)&&k(F.prev.ev,F.next.ev),r&&r.statusRemove(F.ev.seg),F.remove(),!L.primary){var q=L.seg.myFill;L.seg.myFill=L.seg.otherFill,L.seg.otherFill=q}A.push(L.seg)}a.getHead().remove()}return r&&r.done(),A}return e?{addRegion:function(v){for(var x,b=v[v.length-1],g=0;g{function cct(e,t,r){var n=[],i=[];return e.forEach(function(a){var o=a.start,s=a.end;if(t.pointsSame(o,s)){console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");return}r&&r.chainStart(a);var l={index:0,matches_head:!1,matches_pt1:!1},u={index:0,matches_head:!1,matches_pt1:!1},c=l;function f(V,H,X){return c.index=V,c.matches_head=H,c.matches_pt1=X,c===l?(c=u,!1):(c=null,!0)}for(var h=0;h{function yM(e,t,r){var n=[];return e.forEach(function(i){var a=(i.myFill.above?8:0)+(i.myFill.below?4:0)+(i.otherFill&&i.otherFill.above?2:0)+(i.otherFill&&i.otherFill.below?1:0);t[a]!==0&&n.push({id:r?r.segmentId():-1,start:i.start,end:i.end,myFill:{above:t[a]===1,below:t[a]===2},otherFill:null})}),r&&r.selected(n),n}var fct={union:function(e,t){return yM(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],t)},intersect:function(e,t){return yM(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],t)},difference:function(e,t){return yM(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],t)},differenceRev:function(e,t){return yM(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],t)},xor:function(e,t){return yM(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],t)}};Dce.exports=fct});var qce=ye((Tir,Fce)=>{var hct={toPolygon:function(e,t){function r(a){if(a.length<=0)return e.segments({inverted:!1,regions:[]});function o(u){var c=u.slice(0,u.length-1);return e.segments({inverted:!1,regions:[c]})}for(var s=o(a[0]),l=1;l{var dct=Sce(),vct=Ece(),Oce=Pce(),pct=Rce(),_M=zce(),Bce=qce(),E0=!1,xM=vct(),Ep;Ep={buildLog:function(e){return e===!0?E0=dct():e===!1&&(E0=!1),E0===!1?!1:E0.list},epsilon:function(e){return xM.epsilon(e)},segments:function(e){var t=Oce(!0,xM,E0);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){var r=Oce(!1,xM,E0);return{combined:r.calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:_M.union(e.combined,E0),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:_M.intersect(e.combined,E0),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:_M.difference(e.combined,E0),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:_M.differenceRev(e.combined,E0),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:_M.xor(e.combined,E0),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:pct(e.segments,xM,E0),inverted:e.inverted}},polygonFromGeoJSON:function(e){return Bce.toPolygon(Ep,e)},polygonToGeoJSON:function(e){return Bce.fromPolygon(Ep,xM,e)},union:function(e,t){return bM(e,t,Ep.selectUnion)},intersect:function(e,t){return bM(e,t,Ep.selectIntersect)},difference:function(e,t){return bM(e,t,Ep.selectDifference)},differenceRev:function(e,t){return bM(e,t,Ep.selectDifferenceRev)},xor:function(e,t){return bM(e,t,Ep.selectXor)}};function bM(e,t,r){var n=Ep.segments(e),i=Ep.segments(t),a=Ep.combine(n,i),o=r(a);return Ep.polygon(o)}typeof window=="object"&&(window.PolyBool=Ep);Nce.exports=Ep});var Hce=ye((Sir,Vce)=>{Vce.exports=function(t,r,n,i){var a=t[0],o=t[1],s=!1;n===void 0&&(n=0),i===void 0&&(i=r.length);for(var l=i-n,u=0,c=l-1;uo!=v>o&&a<(d-f)*(o-h)/(v-h)+f;x&&(s=!s)}return s}});var wM=ye((Mir,Gce)=>{"use strict";var vN=g6().dot,cP=es().BADNUM,fP=Gce.exports={};fP.tester=function(t){var r=t.slice(),n=r[0][0],i=n,a=r[0][1],o=a,s;for((r[r.length-1][0]!==r[0][0]||r[r.length-1][1]!==r[0][1])&&r.push(r[0]),s=1;si||g===cP||go||x&&u(v))}function f(v,x){var b=v[0],g=v[1];if(b===cP||bi||g===cP||go)return!1;var E=r.length,k=r[0][0],A=r[0][1],L=0,_,C,M,p,P;for(_=1;_Math.max(C,k)||g>Math.max(M,A)))if(gs||Math.abs(vN(f,u))>i)return!0;return!1};fP.filter=function(t,r){var n=[t[0]],i=0,a=0;function o(l){t.push(l);var u=n.length,c=i;n.splice(a+1);for(var f=c+1;f1){var s=t.pop();o(s)}return{addPt:o,raw:t,filtered:n}}});var Wce=ye((Eir,jce)=>{"use strict";jce.exports={BENDPX:1.5,MINSELECT:12,SELECTDELAY:100,SELECTID:"-select"}});var vfe=ye((kir,dfe)=>{"use strict";var Zce=Uce(),gct=Hce(),SM=ba(),mct=ao().dashStyle,TM=va(),yct=Nc(),_ct=rp().makeEventData,LM=Sg(),xct=LM.freeMode,bct=LM.rectMode,MM=LM.drawMode,yN=LM.openMode,_N=LM.selectMode,Xce=f_(),Yce=cM(),efe=JL(),tfe=Q1().clearOutline,rfe=u_(),pN=rfe.handleEllipse,wct=rfe.readPaths,Tct=ZL().newShapes,Act=VB(),Sct=dN().activateLastSelection,dP=Mr(),Mct=dP.sorterAsc,ife=wM(),AM=L6(),k0=af().getFromId,Ect=lM(),kct=gM().redrawReglTraces,vP=Wce(),Am=vP.MINSELECT,Cct=ife.filter,xN=ife.tester,bN=HL(),Kce=bN.p2r,Lct=bN.axValue,Pct=bN.getTransform;function wN(e){return e.subplot!==void 0}function Ict(e,t,r,n,i){var a=!wN(n),o=xct(i),s=bct(i),l=yN(i),u=MM(i),c=_N(i),f=i==="drawline",h=i==="drawcircle",d=f||h,v=n.gd,x=v._fullLayout,b=c&&x.newselection.mode==="immediate"&&a,g=x._zoomlayer,E=n.element.getBoundingClientRect(),k=n.plotinfo,A=Pct(k),L=t-E.left,_=r-E.top;x._calcInverseTransform(v);var C=dP.apply3DTransform(x._invTransform)(L,_);L=C[0],_=C[1];var M=x._invScaleX,p=x._invScaleY,P=L,T=_,F="M"+L+","+_,q=n.xaxes[0],V=n.yaxes[0],H=q._length,X=V._length,G=e.altKey&&!(MM(i)&&l),N,W,re,ae,_e,Me,ke;afe(e,v,n),o&&(N=Cct([[L,_]],vP.BENDPX));var ge=g.selectAll("path.select-outline-"+k.id).data([1]),ie=u?x.newshape:x.newselection;u&&(n.hasText=ie.label.text||ie.label.texttemplate);var Te=u&&!l?ie.fillcolor:"rgba(0,0,0,0)",Ee=ie.line.color||(a?TM.contrast(v._fullLayout.plot_bgcolor):"#7f7f7f");ge.enter().append("path").attr("class","select-outline select-outline-"+k.id).style({opacity:u?ie.opacity/2:1,"stroke-dasharray":mct(ie.line.dash,ie.line.width),"stroke-width":ie.line.width+"px","shape-rendering":"crispEdges"}).call(TM.stroke,Ee).call(TM.fill,Te).attr("fill-rule","evenodd").classed("cursor-move",!!u).attr("transform",A).attr("d",F+"Z");var Ae=g.append("path").attr("class","zoombox-corners").style({fill:TM.background,stroke:TM.defaultLine,"stroke-width":1}).attr("transform",A).attr("d","M0,0Z");if(u&&n.hasText){var ze=g.select(".label-temp");ze.empty()&&(ze=g.append("g").classed("label-temp",!0).classed("select-outline",!0).style({opacity:.8}))}var Ce=x._uid+vP.SELECTID,me=[],Re=pP(v,n.xaxes,n.yaxes,n.subplot);b&&!e.shiftKey&&(n._clearSubplotSelections=function(){if(a){var Ge=q._id,nt=V._id;cfe(v,Ge,nt,Re);for(var ct=(v.layout||{}).selections||[],qt=[],rt=!1,ot=0;ot=0){v._fullLayout._deactivateShape(v);return}if(!u){var ct=x.clickmode;AM.done(Ce).then(function(){if(AM.clear(Ce),Ge===2){for(ge.remove(),_e=0;_e-1&&nfe(nt,v,n.xaxes,n.yaxes,n.subplot,n,ge),ct==="event"&&CM(v,void 0);yct.click(v,nt,k.id)}).catch(dP.error)}},n.doneFn=function(){Ae.remove(),AM.done(Ce).then(function(){AM.clear(Ce),!b&&ae&&n.selectionDefs&&(ae.subtract=G,n.selectionDefs.push(ae),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,re)),(b||u)&&EM(n,b),n.doneFnCompleted&&n.doneFnCompleted(me),c&&CM(v,ke)}).catch(dP.error)}}function nfe(e,t,r,n,i,a,o){var s=t._hoverdata,l=t._fullLayout,u=l.clickmode,c=u.indexOf("event")>-1,f=[],h,d,v,x,b,g,E,k,A,L;if(qct(s)){afe(e,t,a),h=pP(t,r,n,i);var _=Oct(s,h),C=_.pointNumbers.length>0;if(C?Bct(h,_):Nct(h)&&(E=$ce(_))){for(o&&o.remove(),L=0;L=0}function Fct(e){return e._fullLayout._activeSelectionIndex>=0}function EM(e,t){var r=e.dragmode,n=e.plotinfo,i=e.gd;zct(i)&&i._fullLayout._deactivateShape(i),Fct(i)&&i._fullLayout._deactivateSelection(i);var a=i._fullLayout,o=a._zoomlayer,s=MM(r),l=_N(r);if(s||l){var u=o.selectAll(".select-outline-"+n.id);if(u&&i._fullLayout._outlining){var c;s&&(c=Tct(u,e)),c&&SM.call("_guiRelayout",i,{shapes:c});var f;l&&!wN(e)&&(f=Act(u,e)),f&&(i._fullLayout._noEmitSelectedAtStart=!0,SM.call("_guiRelayout",i,{selections:f}).then(function(){t&&Sct(i)})),i._fullLayout._outlining=!1}}n.selection={},n.selection.selectionDefs=e.selectionDefs=[],n.selection.mergedPolygons=e.mergedPolygons=[]}function Jce(e){return e._id}function pP(e,t,r,n){if(!e.calcdata)return[];var i=[],a=t.map(Jce),o=r.map(Jce),s,l,u;for(u=0;u0,a=i?n[0]:r;return t.selectedpoints?t.selectedpoints.indexOf(a)>-1:!1}function Bct(e,t){var r=[],n,i,a,o;for(o=0;o0&&r.push(n);if(r.length===1&&(a=r[0]===t.searchInfo,a&&(i=t.searchInfo.cd[0].trace,i.selectedpoints.length===t.pointNumbers.length))){for(o=0;o1||(t+=n.selectedpoints.length,t>1)))return!1;return t===1}function kM(e,t,r){var n;for(n=0;n-1&&t;if(!o&&t){var Ge=Qce(e,!0);if(Ge.length){var nt=Ge[0].xref,ct=Ge[0].yref;if(nt&&ct){var qt=ffe(Ge),rt=hfe([k0(e,nt,"x"),k0(e,ct,"y")]);rt(me,qt)}}e._fullLayout._noEmitSelectedAtStart?e._fullLayout._noEmitSelectedAtStart=!1:ce&&CM(e,me),h._reselect=!1}if(!o&&h._deselect){var ot=h._deselect;s=ot.xref,l=ot.yref,Hct(s,l,c)||cfe(e,s,l,n),ce&&(me.points.length?CM(e,me):SN(e)),h._deselect=!1}return{eventData:me,selectionTesters:r}}function Vct(e){var t=e.calcdata;if(t)for(var r=0;r{"use strict";pfe.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]});var PM=ye((Lir,gfe)=>{"use strict";gfe.exports={axisRefDescription:function(e,t,r){return["If set to a",e,"axis id (e.g. *"+e+"* or","*"+e+"2*), the `"+e+"` position refers to a",e,"coordinate. If set to *paper*, the `"+e+"`","position refers to the distance from the",t,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",t,"("+r+"). If set to a",e,"axis ID followed by","*domain* (separated by a space), the position behaves like for","*paper*, but refers to the distance in fractions of the domain","length from the",t,"of the domain of that axis: e.g.,","*"+e+"2 domain* refers to the domain of the second",e," axis and a",e,"position of 0.5 refers to the","point between the",t,"and the",r,"of the domain of the","second",e,"axis."].join(" ")}}});var Nb=ye((Iir,_fe)=>{"use strict";var mfe=MN(),yfe=Su(),gP=ad(),Xct=Vs().templatedArray,Pir=PM();_fe.exports=Xct("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:yfe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:mfe.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:mfe.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",gP.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",gP.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",gP.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",gP.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:yfe({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc"})});var Sm=ye((Rir,xfe)=>{"use strict";xfe.exports={PTS_LINESONLY:20,minTolerance:.2,toleranceGrowth:10,maxScreensAway:20,eventDataKeys:[]}});var Eg=ye((Dir,bfe)=>{"use strict";bfe.exports=function(t){return{valType:"color",editType:"style",anim:!0}}});var Uc=ye((zir,Efe)=>{"use strict";var wfe=Oc().axisHoverFormat,Yct=Wo().texttemplateAttrs,Kct=Wo().hovertemplateAttrs,Tfe=Kl(),Jct=Su(),$ct=Ed().dash,Qct=Ed().pattern,eft=ao(),tft=Sm(),mP=no().extendFlat,rft=Eg();function Afe(e){return{valType:"any",dflt:0,editType:"calc"}}function Sfe(e){return{valType:"any",editType:"calc"}}function Mfe(e){return{valType:"enumerated",values:["start","middle","end"],dflt:"middle",editType:"calc"}}Efe.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},x0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dx:{valType:"number",dflt:1,editType:"calc",anim:!0},y:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},y0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dy:{valType:"number",dflt:1,editType:"calc",anim:!0},xperiod:Afe("x"),yperiod:Afe("y"),xperiod0:Sfe("x0"),yperiod0:Sfe("y0"),xperiodalignment:Mfe("x"),yperiodalignment:Mfe("y"),xhoverformat:wfe("x"),yhoverformat:wfe("y"),offsetgroup:{valType:"string",dflt:"",editType:"calc"},alignmentgroup:{valType:"string",dflt:"",editType:"calc"},stackgroup:{valType:"string",dflt:"",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc"},groupnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},stackgaps:{valType:"enumerated",values:["infer zero","interpolate"],dflt:"infer zero",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},texttemplate:Yct({},{}),hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"],editType:"calc"},hoveron:{valType:"flaglist",flags:["points","fills"],editType:"style"},hovertemplate:Kct({},{keys:tft.eventDataKeys}),line:{color:{valType:"color",editType:"style",anim:!0},width:{valType:"number",min:0,dflt:2,editType:"style",anim:!0},shape:{valType:"enumerated",values:["linear","spline","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},smoothing:{valType:"number",min:0,max:1.3,dflt:1,editType:"plot"},dash:mP({},$ct,{editType:"style"}),backoff:{valType:"number",min:0,dflt:"auto",arrayOk:!0,editType:"plot"},simplify:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},cliponaxis:{valType:"boolean",dflt:!0,editType:"plot"},fill:{valType:"enumerated",values:["none","tozeroy","tozerox","tonexty","tonextx","toself","tonext"],editType:"calc"},fillcolor:rft(!0),fillgradient:mP({type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],dflt:"none",editType:"calc"},start:{valType:"number",editType:"calc"},stop:{valType:"number",editType:"calc"},colorscale:{valType:"colorscale",editType:"style"},editType:"calc"}),fillpattern:Qct,marker:mP({symbol:{valType:"enumerated",values:eft.symbolList,dflt:"circle",arrayOk:!0,editType:"style"},opacity:{valType:"number",min:0,max:1,arrayOk:!0,editType:"style",anim:!0},angle:{valType:"angle",dflt:0,arrayOk:!0,editType:"plot",anim:!1},angleref:{valType:"enumerated",values:["previous","up"],dflt:"up",editType:"plot",anim:!1},standoff:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"plot",anim:!0},size:{valType:"number",min:0,dflt:6,arrayOk:!0,editType:"calc",anim:!0},maxdisplayed:{valType:"number",min:0,dflt:0,editType:"plot"},sizeref:{valType:"number",dflt:1,editType:"calc"},sizemin:{valType:"number",min:0,dflt:0,editType:"calc"},sizemode:{valType:"enumerated",values:["diameter","area"],dflt:"diameter",editType:"calc"},line:mP({width:{valType:"number",min:0,arrayOk:!0,editType:"style",anim:!0},editType:"calc"},Tfe("marker.line",{anim:!0})),gradient:{type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],arrayOk:!0,dflt:"none",editType:"calc"},color:{valType:"color",arrayOk:!0,editType:"calc"},editType:"calc"},editType:"calc"},Tfe("marker",{anim:!0})),selected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},unselected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"middle center",arrayOk:!0,editType:"calc"},textfont:Jct({editType:"calc",colorEditType:"style",arrayOk:!0}),zorder:{valType:"integer",dflt:0,editType:"plot"}}});var EN=ye((qir,Lfe)=>{"use strict";var kfe=Nb(),Cfe=Uc().line,ift=Ed().dash,yP=no().extendFlat,nft=Bu().overrideAll,aft=Vs().templatedArray,Fir=PM();Lfe.exports=nft(aft("selection",{type:{valType:"enumerated",values:["rect","path"]},xref:yP({},kfe.xref,{}),yref:yP({},kfe.yref,{}),x0:{valType:"any"},x1:{valType:"any"},y0:{valType:"any"},y1:{valType:"any"},path:{valType:"string",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:.7,editType:"arraydraw"},line:{color:Cfe.color,width:yP({},Cfe.width,{min:1,dflt:1}),dash:yP({},ift,{dflt:"dot"})}}),"arraydraw","from-root")});var Dfe=ye((Oir,Rfe)=>{"use strict";var Pfe=Mr(),_P=Qa(),oft=Zd(),sft=EN(),Ife=f_();Rfe.exports=function(t,r){oft(t,r,{name:"selections",handleItemDefaults:lft});for(var n=r.selections,i=0;i{"use strict";zfe.exports=function(t,r,n){n("newselection.mode");var i=n("newselection.line.width");i&&(n("newselection.line.color"),n("newselection.line.dash")),n("activeselection.fillcolor"),n("activeselection.opacity")}});var IM=ye((Nir,Bfe)=>{"use strict";var uft=ba(),qfe=Mr(),Ofe=af();Bfe.exports=function(t){return function(n,i){var a=n[t];if(Array.isArray(a))for(var o=uft.subplotsRegistry.cartesian,s=o.idRegex,l=i._subplots,u=l.xaxis,c=l.yaxis,f=l.cartesian,h=i._has("cartesian"),d=0;d{"use strict";var Nfe=dN(),RM=vfe();Ufe.exports={moduleType:"component",name:"selections",layoutAttributes:EN(),supplyLayoutDefaults:Dfe(),supplyDrawNewSelectionDefaults:Ffe(),includeBasePlot:IM()("selections"),draw:Nfe.draw,drawOne:Nfe.drawOne,reselect:RM.reselect,prepSelect:RM.prepSelect,clearOutline:RM.clearOutline,clearSelectionsCache:RM.clearSelectionsCache,selectOnClick:RM.selectOnClick}});var DN=ye((Vir,she)=>{"use strict";var IN=xa(),C0=Mr(),Vfe=C0.numberFormat,cft=id(),fft=EL(),xP=ba(),Jfe=C0.strTranslate,hft=Ll(),Hfe=va(),d_=ao(),dft=Nc(),Gfe=Qa(),vft=Tg(),pft=gv(),$fe=Sg(),bP=$fe.selectingOrDrawing,gft=$fe.freeMode,mft=Nh().FROM_TL,yft=lM(),_ft=gM().redrawReglTraces,xft=Xu(),CN=af().getFromId,bft=wf().prepSelect,wft=wf().clearOutline,Tft=wf().selectOnClick,kN=aN(),RN=ad(),jfe=RN.MINDRAG,np=RN.MINZOOM,Wfe=!0;function Aft(e,t,r,n,i,a,o,s){var l=e._fullLayout._zoomlayer,u=o+s==="nsew",c=(o+s).length===1,f,h,d,v,x,b,g,E,k,A,L,_,C,M,p,P,T,F,q,V,H,X,G;r+=t.yaxis._shift;function N(){if(f=t.xaxis,h=t.yaxis,k=f._length,A=h._length,g=f._offset,E=h._offset,d={},d[f._id]=f,v={},v[h._id]=h,o&&s)for(var Et=t.overlays,dt=0;dt=0){Ht._fullLayout._deactivateShape(Ht);return}var $t=Ht._fullLayout.clickmode;if(PN(Ht),Et===2&&!c&&er(),u)$t.indexOf("select")>-1&&Tft(dt,Ht,x,b,t.id,ae),$t.indexOf("event")>-1&&dft.click(Ht,dt,t.id);else if(Et===1&&c){var fr=o?h:f,_r=o==="s"||s==="w"?0:1,Br=fr._name+".range["+_r+"]",Or=Sft(fr,_r),Nr="left",ut="middle";if(fr.fixedrange)return;o?(ut=o==="n"?"top":"bottom",fr.side==="right"&&(Nr="right")):s==="e"&&(Nr="right"),Ht._context.showAxisRangeEntryBoxes&&IN.select(re).call(hft.makeEditable,{gd:Ht,immediate:!0,background:Ht._fullLayout.paper_bgcolor,text:String(Or),fill:fr.tickfont?fr.tickfont.color:"#444",horizontalAlign:Nr,verticalAlign:ut}).on("edit",function(Ne){var Ye=fr.d2r(Ne);Ye!==void 0&&xP.call("_guiRelayout",Ht,Br,Ye)})}}pft.init(ae);var ke,ge,ie,Te,Ee,Ae,ze,Ce,me,Re;function ce(Et,dt,Ht){var $t=re.getBoundingClientRect();ke=dt-$t.left,ge=Ht-$t.top,e._fullLayout._calcInverseTransform(e);var fr=C0.apply3DTransform(e._fullLayout._invTransform)(ke,ge);ke=fr[0],ge=fr[1],ie={l:ke,r:ke,w:0,t:ge,b:ge,h:0},Te=e._hmpixcount?e._hmlumcount/e._hmpixcount:cft(e._fullLayout.plot_bgcolor).getLuminance(),Ee="M0,0H"+k+"V"+A+"H0V0",Ae=!1,ze="xy",Re=!1,Ce=the(l,Te,g,E,Ee),me=rhe(l,g,E)}function Ge(Et,dt){if(e._transitioningWithDuration)return!1;var Ht=Math.max(0,Math.min(k,X*Et+ke)),$t=Math.max(0,Math.min(A,G*dt+ge)),fr=Math.abs(Ht-ke),_r=Math.abs($t-ge);ie.l=Math.min(ke,Ht),ie.r=Math.max(ke,Ht),ie.t=Math.min(ge,$t),ie.b=Math.max(ge,$t);function Br(){ze="",ie.r=ie.l,ie.t=ie.b,me.attr("d","M0,0Z")}if(L.isSubplotConstrained)fr>np||_r>np?(ze="xy",fr/k>_r/A?(_r=fr*A/k,ge>$t?ie.t=ge-_r:ie.b=ge+_r):(fr=_r*k/A,ke>Ht?ie.l=ke-fr:ie.r=ke+fr),me.attr("d",wP(ie))):Br();else if(_.isSubplotConstrained)if(fr>np||_r>np){ze="xy";var Or=Math.min(ie.l/k,(A-ie.b)/A),Nr=Math.max(ie.r/k,(A-ie.t)/A);ie.l=Or*k,ie.r=Nr*k,ie.b=(1-Or)*A,ie.t=(1-Nr)*A,me.attr("d",wP(ie))}else Br();else!M||_r0){var Ne;if(_.isSubplotConstrained||!C&&M.length===1){for(Ne=0;Ne1&&(Br.maxallowed!==void 0&&P===(Br.range[0]1&&(Or.maxallowed!==void 0&&T===(Or.range[0]=0?Math.min(e,.9):1/(1/Math.max(e,-.3)+3.222))}function Eft(e,t,r){return e?e==="nsew"?r?"":t==="pan"?"move":"crosshair":e.toLowerCase()+"-resize":"pointer"}function the(e,t,r,n,i){return e.append("path").attr("class","zoombox").style({fill:t>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",Jfe(r,n)).attr("d",i+"Z")}function rhe(e,t,r){return e.append("path").attr("class","zoombox-corners").style({fill:Hfe.background,stroke:Hfe.defaultLine,"stroke-width":1,opacity:0}).attr("transform",Jfe(t,r)).attr("d","M0,0Z")}function ihe(e,t,r,n,i,a){e.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),nhe(e,t,i,a)}function nhe(e,t,r,n){r||(e.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),t.transition().style("opacity",1).duration(200))}function PN(e){IN.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function ahe(e){Wfe&&e.data&&e._context.showTips&&(C0.notifier(C0._(e,"Double-click to zoom back out"),"long"),Wfe=!1)}function kft(e,t){return"M"+(e.l-.5)+","+(t-np-.5)+"h-3v"+(2*np+1)+"h3ZM"+(e.r+.5)+","+(t-np-.5)+"h3v"+(2*np+1)+"h-3Z"}function Cft(e,t){return"M"+(t-np-.5)+","+(e.t-.5)+"v-3h"+(2*np+1)+"v3ZM"+(t-np-.5)+","+(e.b+.5)+"v3h"+(2*np+1)+"v-3Z"}function wP(e){var t=Math.floor(Math.min(e.b-e.t,e.r-e.l,np)/2);return"M"+(e.l-3.5)+","+(e.t-.5+t)+"h3v"+-t+"h"+t+"v-3h-"+(t+3)+"ZM"+(e.r+3.5)+","+(e.t-.5+t)+"h-3v"+-t+"h"+-t+"v-3h"+(t+3)+"ZM"+(e.r+3.5)+","+(e.b+.5-t)+"h-3v"+t+"h"+-t+"v3h"+(t+3)+"ZM"+(e.l-3.5)+","+(e.b+.5-t)+"h3v"+t+"h"+t+"v3h-"+(t+3)+"Z"}function Yfe(e,t,r,n,i){for(var a=!1,o={},s={},l,u,c,f,h=(i||{}).xaHash,d=(i||{}).yaHash,v=0;v{"use strict";var Lft=xa(),TP=Nc(),Pft=gv(),Ift=Tg(),kg=DN().makeDragBox,ud=ad().DRAGGERSIZE;AP.initInteractions=function(t){var r=t._fullLayout;if(t._context.staticPlot){Lft.select(t).selectAll(".drag").remove();return}if(!(!r._has("cartesian")&&!r._has("splom"))){var n=Object.keys(r._plots||{}).sort(function(a,o){if((r._plots[a].mainplot&&!0)===(r._plots[o].mainplot&&!0)){var s=a.split("y"),l=o.split("y");return s[0]===l[0]?Number(s[1]||1)-Number(l[1]||1):Number(s[0]||1)-Number(l[0]||1)}return r._plots[a].mainplot?1:-1});n.forEach(function(a){var o=r._plots[a],s=o.xaxis,l=o.yaxis;if(!o.mainplot){var u=kg(t,o,s._offset,l._offset,s._length,l._length,"ns","ew");u.onmousemove=function(h){t._fullLayout._rehover=function(){t._fullLayout._hoversubplot===a&&t._fullLayout._plots[a]&&TP.hover(t,h,a)},TP.hover(t,h,a),t._fullLayout._lasthover=u,t._fullLayout._hoversubplot=a},u.onmouseout=function(h){t._dragging||(t._fullLayout._hoversubplot=null,Pft.unhover(t,h))},t._context.showAxisDragHandles&&(kg(t,o,s._offset-ud,l._offset-ud,ud,ud,"n","w"),kg(t,o,s._offset+s._length,l._offset-ud,ud,ud,"n","e"),kg(t,o,s._offset-ud,l._offset+l._length,ud,ud,"s","w"),kg(t,o,s._offset+s._length,l._offset+l._length,ud,ud,"s","e"))}if(t._context.showAxisDragHandles){if(a===s._mainSubplot){var c=s._mainLinePosition;s.side==="top"&&(c-=ud),kg(t,o,s._offset+s._length*.1,c,s._length*.8,ud,"","ew"),kg(t,o,s._offset,c,s._length*.1,ud,"","w"),kg(t,o,s._offset+s._length*.9,c,s._length*.1,ud,"","e")}if(a===l._mainSubplot){var f=l._mainLinePosition;l.side!=="right"&&(f-=ud),kg(t,o,f,l._offset+l._length*.1,ud,l._length*.8,"ns",""),kg(t,o,f,l._offset+l._length*.9,ud,l._length*.1,"s",""),kg(t,o,f,l._offset,ud,l._length*.1,"n","")}}});var i=r._hoverlayer.node();i.onmousemove=function(a){a.target=t._fullLayout._lasthover,TP.hover(t,a,r._hoversubplot)},i.onclick=function(a){a.target=t._fullLayout._lasthover,TP.click(t,a)},i.onmousedown=function(a){t._fullLayout._lasthover.onmousedown(a)},AP.updateFx(t)}};AP.updateFx=function(e){var t=e._fullLayout,r=t.dragmode==="pan"?"move":"crosshair";Ift(t._draggers,r)}});var che=ye((Gir,uhe)=>{"use strict";var lhe=ba();uhe.exports=function(t){for(var r=lhe.layoutArrayContainers,n=lhe.layoutArrayRegexes,i=t.split("[")[0],a,o,s=0;s{"use strict";var Rft=gy(),FN=p6(),DM=H1(),Dft=E6().sorterAsc,qN=ba();zM.containerArrayMatch=che();var zft=zM.isAddVal=function(t){return t==="add"||Rft(t)},fhe=zM.isRemoveVal=function(t){return t===null||t==="remove"};zM.applyContainerArrayChanges=function(t,r,n,i,a){var o=r.astr,s=qN.getComponentMethod(o,"supplyLayoutDefaults"),l=qN.getComponentMethod(o,"draw"),u=qN.getComponentMethod(o,"drawOne"),c=i.replot||i.recalc||s===FN||l===FN,f=t.layout,h=t._fullLayout;if(n[""]){Object.keys(n).length>1&&DM.warn("Full array edits are incompatible with other edits",o);var d=n[""][""];if(fhe(d))r.set(null);else if(Array.isArray(d))r.set(d);else return DM.warn("Unrecognized full array edit value",o,d),!0;return c?!1:(s(f,h),l(t),!0)}var v=Object.keys(n).map(Number).sort(Dft),x=r.get(),b=x||[],g=a(h,o).get(),E=[],k=-1,A=b.length,L,_,C,M,p,P,T,F;for(L=0;Lb.length-(T?0:1)){DM.warn("index out of range",o,C);continue}if(P!==void 0)p.length>1&&DM.warn("Insertion & removal are incompatible with edits to the same index.",o,C),fhe(P)?E.push(C):T?(P==="add"&&(P={}),b.splice(C,0,P),g&&g.splice(C,0,{})):DM.warn("Unrecognized full object edit value",o,C,P),k===-1&&(k=C);else for(_=0;_=0;L--)b.splice(E[L],1),g&&g.splice(E[L],1);if(b.length?x||r.set(b):r.set(null),c)return!1;if(s(f,h),u!==FN){var q;if(k===-1)q=v;else{for(A=Math.max(b.length,A),q=[],L=0;L=k));L++)q.push(C);for(L=k;L{"use strict";var ghe=uo(),Wir=Cq(),mhe=ba(),kp=Mr(),FM=Xu(),yhe=af(),_he=va(),qM=yhe.cleanId,Fft=yhe.getFromTrace,ON=mhe.traceIs;Cg.clearPromiseQueue=function(e){Array.isArray(e._promises)&&e._promises.length>0&&kp.log("Clearing previous rejected promises from queue."),e._promises=[]};Cg.cleanLayout=function(e){var t,r;e||(e={}),e.xaxis1&&(e.xaxis||(e.xaxis=e.xaxis1),delete e.xaxis1),e.yaxis1&&(e.yaxis||(e.yaxis=e.yaxis1),delete e.yaxis1),e.scene1&&(e.scene||(e.scene=e.scene1),delete e.scene1);var n=(FM.subplotsRegistry.cartesian||{}).attrRegex,i=(FM.subplotsRegistry.polar||{}).attrRegex,a=(FM.subplotsRegistry.ternary||{}).attrRegex,o=(FM.subplotsRegistry.gl3d||{}).attrRegex,s=Object.keys(e);for(t=0;t3?(b.x=1.02,b.xanchor="left"):b.x<-2&&(b.x=-.02,b.xanchor="right"),b.y>3?(b.y=1.02,b.yanchor="bottom"):b.y<-2&&(b.y=-.02,b.yanchor="top")),e.dragmode==="rotate"&&(e.dragmode="orbit"),_he.clean(e),e.template&&e.template.layout&&Cg.cleanLayout(e.template.layout),e};function Y3(e,t){var r=e[t],n=t.charAt(0);r&&r!=="paper"&&(e[t]=qM(r,n,!0))}Cg.cleanData=function(e){for(var t=0;t0)return e.substr(0,t)}Cg.hasParent=function(e,t){for(var r=phe(t);r;){if(r in e)return!0;r=phe(r)}return!1};var Bft=["x","y","z"];Cg.clearAxisTypes=function(e,t,r){for(var n=0;n{"use strict";var kP=xa(),Nft=uo(),Uft=Jq(),sa=Mr(),Yu=sa.nestedProperty,UN=g3(),ap=nne(),L0=ba(),zP=_3(),Ho=Xu(),Nv=Qa(),Vft=hB(),Hft=Cd(),BN=ao(),Gft=va(),jft=zN().initInteractions,Wft=Zp(),Zft=wf().clearOutline,She=ub().dfltConfig,MP=hhe(),yh=xhe(),Jl=gM(),v_=Bu(),Xft=ad().AX_NAME_PATTERN,NN=0,bhe=5;function Yft(e,t,r,n){var i;if(e=sa.getGraphDiv(e),UN.init(e),sa.isPlainObject(t)){var a=t;t=a.data,r=a.layout,n=a.config,i=a.frames}var o=UN.triggerHandler(e,"plotly_beforeplot",[t,r,n]);if(o===!1)return Promise.reject();!t&&!r&&!sa.isPlotDiv(e)&&sa.warn("Calling _doPlot as if redrawing but this container doesn't yet have a plot.",e);function s(){if(i)return pl.addFrames(e,i)}Ehe(e,n),r||(r={}),kP.select(e).classed("js-plotly-plot",!0),BN.makeTester(),Array.isArray(e._promises)||(e._promises=[]);var l=(e.data||[]).length===0&&Array.isArray(t);Array.isArray(t)&&(yh.cleanData(t),l?e.data=t:e.data.push.apply(e.data,t),e.empty=!1),(!e.layout||l)&&(e.layout=yh.cleanLayout(r)),Ho.supplyDefaults(e);var u=e._fullLayout,c=u._has("cartesian");u._replotting=!0,(l||u._shouldCreateBgLayer)&&(yht(e),u._shouldCreateBgLayer&&delete u._shouldCreateBgLayer),BN.initGradients(e),BN.initPatterns(e),l&&Nv.saveShowSpikeInitial(e);var f=!e.calcdata||e.calcdata.length!==(e._fullData||[]).length;f&&Ho.doCalcdata(e);for(var h=0;h=e.data.length||i<-e.data.length)throw new Error(r+" must be valid indices for gd.data.");if(t.indexOf(i,n+1)>-1||i>=0&&t.indexOf(-e.data.length+i)>-1||i<0&&t.indexOf(e.data.length+i)>-1)throw new Error("each index in "+r+" must be unique.")}}function khe(e,t,r){if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("currentIndices is a required argument.");if(Array.isArray(t)||(t=[t]),LP(e,t,"currentIndices"),typeof r!="undefined"&&!Array.isArray(r)&&(r=[r]),typeof r!="undefined"&&LP(e,r,"newIndices"),typeof r!="undefined"&&t.length!==r.length)throw new Error("current and new indices must be of equal length.")}function eht(e,t,r){var n,i;if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("traces must be defined.");for(Array.isArray(t)||(t=[t]),n=0;n=0&&c=0&&c0&&typeof M.parts[T]!="string";)T--;var F=M.parts[T],q=M.parts[T-1]+"."+F,V=M.parts.slice(0,T).join("."),H=Yu(e.layout,V).get(),X=Yu(n,V).get(),G=M.get();if(p!==void 0){g[C]=p,E[C]=F==="reverse"?p:Cy(G);var N=zP.getLayoutValObject(n,M.parts);if(N&&N.impliedEdits&&p!==null)for(var W in N.impliedEdits)k(sa.relativeAttr(C,W),N.impliedEdits[W]);if(["width","height"].indexOf(C)!==-1)if(p){k("autosize",null);var re=C==="height"?"width":"height";k(re,n[re])}else n[C]=e._initialAutoSize[C];else if(C==="autosize")k("width",p?null:n.width),k("height",p?null:n.height);else if(q.match(qhe))_(q),Yu(n,V+"._inputRange").set(null);else if(q.match(Ohe)){_(q),Yu(n,V+"._inputRange").set(null);var ae=Yu(n,V).get();ae._inputDomain&&(ae._input.domain=ae._inputDomain.slice())}else q.match(nht)&&Yu(n,V+"._inputDomain").set(null);if(F==="type"){L=H;var _e=X.type==="linear"&&p==="log",Me=X.type==="log"&&p==="linear";if(_e||Me){if(!L||!L.range)k(V+".autorange",!0);else if(X.autorange)_e&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var ke=L.range[0],ge=L.range[1];_e?(ke<=0&&ge<=0&&k(V+".autorange",!0),ke<=0?ke=ge/1e6:ge<=0&&(ge=ke/1e6),k(V+".range[0]",Math.log(ke)/Math.LN10),k(V+".range[1]",Math.log(ge)/Math.LN10)):(k(V+".range[0]",Math.pow(10,ke)),k(V+".range[1]",Math.pow(10,ge)))}Array.isArray(n._subplots.polar)&&n._subplots.polar.length&&n[M.parts[0]]&&M.parts[1]==="radialaxis"&&delete n[M.parts[0]]._subplot.viewInitial["radialaxis.range"],L0.getComponentMethod("annotations","convertCoords")(e,X,p,k),L0.getComponentMethod("images","convertCoords")(e,X,p,k)}else k(V+".autorange",!0),k(V+".range",null);Yu(n,V+"._inputRange").set(null)}else if(F.match(Xft)){var ie=Yu(n,C).get(),Te=(p||{}).type;(!Te||Te==="-")&&(Te="linear"),L0.getComponentMethod("annotations","convertCoords")(e,ie,Te,k),L0.getComponentMethod("images","convertCoords")(e,ie,Te,k)}var Ee=MP.containerArrayMatch(C);if(Ee){c=Ee.array,f=Ee.index;var Ae=Ee.property,ze=N||{editType:"calc"};f!==""&&Ae===""&&(MP.isAddVal(p)?E[C]=null:MP.isRemoveVal(p)?E[C]=(Yu(r,c).get()||[])[f]:sa.warn("unrecognized full object value",t)),v_.update(b,ze),u[c]||(u[c]={});var Ce=u[c][f];Ce||(Ce=u[c][f]={}),Ce[Ae]=p,delete t[C]}else F==="reverse"?(H.range?H.range.reverse():(k(V+".autorange",!0),H.range=[1,0]),X.autorange?b.calc=!0:b.plot=!0):(C==="dragmode"&&(p===!1&&G!==!1||p!==!1&&G===!1)||n._has("scatter-like")&&n._has("regl")&&C==="dragmode"&&(p==="lasso"||p==="select")&&!(G==="lasso"||G==="select")?b.plot=!0:N?v_.update(b,N):b.calc=!0,M.set(p))}}for(c in u){var me=MP.applyContainerArrayChanges(e,a(r,c),u[c],b,a);me||(b.plot=!0)}for(var Re in A){L=Nv.getFromId(e,Re);var ce=L&&L._constraintGroup;if(ce){b.calc=!0;for(var Ge in ce)A[Ge]||(Nv.getFromId(e,Ge)._constraintShrinkable=!0)}}(Nhe(e)||t.height||t.width)&&(b.plot=!0);var nt=n.shapes;for(f=0;f1;)if(n.pop(),r=Yu(t,n.join(".")+".uirevision").get(),r!==void 0)return r;return t.uirevision}function sht(e,t){for(var r=0;r=i.length?i[0]:i[u]:i}function s(u){return Array.isArray(a)?u>=a.length?a[0]:a[u]:a}function l(u,c){var f=0;return function(){if(u&&++f===c)return u()}}return new Promise(function(u,c){function f(){if(n._frameQueue.length!==0){for(;n._frameQueue.length;){var F=n._frameQueue.pop();F.onInterrupt&&F.onInterrupt()}e.emit("plotly_animationinterrupted",[])}}function h(F){if(F.length!==0){for(var q=0;qn._timeToNext&&v()};F()}var b=0;function g(F){return Array.isArray(i)?b>=i.length?F.transitionOpts=i[b]:F.transitionOpts=i[0]:F.transitionOpts=i,b++,F}var E,k,A=[],L=t==null,_=Array.isArray(t),C=!L&&!_&&sa.isPlainObject(t);if(C)A.push({type:"object",data:g(sa.extendFlat({},t))});else if(L||["string","number"].indexOf(typeof t)!==-1)for(E=0;E0&&PP)&&T.push(k);A=T}}A.length>0?h(A):(e.emit("plotly_animated"),u())})}function vht(e,t,r){if(e=sa.getGraphDiv(e),t==null)return Promise.resolve();if(!sa.isPlotDiv(e))throw new Error("This element is not a Plotly plot: "+e+". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");var n,i,a,o,s=e._transitionData._frames,l=e._transitionData._frameHash;if(!Array.isArray(t))throw new Error("addFrames failure: frameList must be an Array of frame definitions"+t);var u=s.length+t.length*2,c=[],f={};for(n=t.length-1;n>=0;n--)if(sa.isPlainObject(t[n])){var h=t[n].name,d=(l[h]||f[h]||{}).name,v=t[n].name,x=l[d]||f[d];d&&v&&typeof v=="number"&&x&&NNM.index?-1:C.index=0;n--){if(i=c[n].frame,typeof i.name=="number"&&sa.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!i.name)for(;l[i.name="frame "+e._transitionData._counter++];);if(l[i.name]){for(a=0;a=0;r--)n=t[r],a.push({type:"delete",index:n}),o.unshift({type:"insert",index:n,value:i[n]});var s=Ho.modifyFrames,l=Ho.modifyFrames,u=[e,o],c=[e,a];return ap&&ap.add(e,s,u,l,c),Ho.modifyFrames(e,a)}function ght(e){e=sa.getGraphDiv(e);var t=e._fullLayout||{},r=e._fullData||[];return Ho.cleanPlot([],{},r,t),Ho.purge(e),UN.purge(e),t._container&&t._container.remove(),delete e._context,e}function mht(e){var t=e._fullLayout,r=e.getBoundingClientRect();if(!sa.equalDomRects(r,t._lastBBox)){var n=t._invTransform=sa.inverseTransformMatrix(sa.getFullTransformMatrix(e));t._invScaleX=Math.sqrt(n[0][0]*n[0][0]+n[0][1]*n[0][1]+n[0][2]*n[0][2]),t._invScaleY=Math.sqrt(n[1][0]*n[1][0]+n[1][1]*n[1][1]+n[1][2]*n[1][2]),t._lastBBox=r}}function yht(e){var t=kP.select(e),r=e._fullLayout;if(r._calcInverseTransform=mht,r._calcInverseTransform(e),r._container=t.selectAll(".plot-container").data([0]),r._container.enter().insert("div",":first-child").classed("plot-container",!0).classed("plotly",!0).style({width:"100%",height:"100%"}),r._paperdiv=r._container.selectAll(".svg-container").data([0]),r._paperdiv.enter().append("div").classed("user-select-none",!0).classed("svg-container",!0).style("position","relative"),r._glcontainer=r._paperdiv.selectAll(".gl-container").data([{}]),r._glcontainer.enter().append("div").classed("gl-container",!0),r._paperdiv.selectAll(".main-svg").remove(),r._paperdiv.select(".modebar-container").remove(),r._paper=r._paperdiv.insert("svg",":first-child").classed("main-svg",!0),r._toppaper=r._paperdiv.append("svg").classed("main-svg",!0),r._modebardiv=r._paperdiv.append("div"),delete r._modeBar,r._hoverpaper=r._paperdiv.append("svg").classed("main-svg",!0),!r._uid){var n={};kP.selectAll("defs").each(function(){this.id&&(n[this.id.split("-")[1]]=1)}),r._uid=sa.randstr(n)}r._paperdiv.selectAll(".main-svg").attr(Wft.svgAttrs),r._defs=r._paper.append("defs").attr("id","defs-"+r._uid),r._clips=r._defs.append("g").classed("clips",!0),r._topdefs=r._toppaper.append("defs").attr("id","topdefs-"+r._uid),r._topclips=r._topdefs.append("g").classed("clips",!0),r._bgLayer=r._paper.append("g").classed("bglayer",!0),r._draggers=r._paper.append("g").classed("draglayer",!0);var i=r._paper.append("g").classed("layer-below",!0);r._imageLowerLayer=i.append("g").classed("imagelayer",!0),r._shapeLowerLayer=i.append("g").classed("shapelayer",!0),r._cartesianlayer=r._paper.append("g").classed("cartesianlayer",!0),r._polarlayer=r._paper.append("g").classed("polarlayer",!0),r._smithlayer=r._paper.append("g").classed("smithlayer",!0),r._ternarylayer=r._paper.append("g").classed("ternarylayer",!0),r._geolayer=r._paper.append("g").classed("geolayer",!0),r._funnelarealayer=r._paper.append("g").classed("funnelarealayer",!0),r._pielayer=r._paper.append("g").classed("pielayer",!0),r._iciclelayer=r._paper.append("g").classed("iciclelayer",!0),r._treemaplayer=r._paper.append("g").classed("treemaplayer",!0),r._sunburstlayer=r._paper.append("g").classed("sunburstlayer",!0),r._indicatorlayer=r._toppaper.append("g").classed("indicatorlayer",!0),r._glimages=r._paper.append("g").classed("glimages",!0);var a=r._toppaper.append("g").classed("layer-above",!0);r._imageUpperLayer=a.append("g").classed("imagelayer",!0),r._shapeUpperLayer=a.append("g").classed("shapelayer",!0),r._selectionLayer=r._toppaper.append("g").classed("selectionlayer",!0),r._infolayer=r._toppaper.append("g").classed("infolayer",!0),r._menulayer=r._toppaper.append("g").classed("menulayer",!0),r._zoomlayer=r._toppaper.append("g").classed("zoomlayer",!0),r._hoverlayer=r._hoverpaper.append("g").classed("hoverlayer",!0),r._modebardiv.classed("modebar-container",!0).style("position","absolute").style("top","0px").style("right","0px"),e.emit("plotly_framework")}pl.animate=dht;pl.addFrames=vht;pl.deleteFrames=pht;pl.addTraces=Rhe;pl.deleteTraces=Dhe;pl.extendTraces=Phe;pl.moveTraces=VN;pl.prependTraces=Ihe;pl.newPlot=Qft;pl._doPlot=Yft;pl.purge=ght;pl.react=cht;pl.redraw=$ft;pl.relayout=OM;pl.restyle=PP;pl.setPlotConfig=Kft;pl.update=RP;pl._guiRelayout=GN(OM);pl._guiRestyle=GN(PP);pl._guiUpdate=GN(RP);pl._storeDirectGUIEdit=iht});var Ly=ye(Mm=>{"use strict";var _ht=ba();Mm.getDelay=function(e){return e._has&&(e._has("gl3d")||e._has("mapbox")||e._has("map"))?500:0};Mm.getRedrawFunc=function(e){return function(){_ht.getComponentMethod("colorbar","draw")(e)}};Mm.encodeSVG=function(e){return"data:image/svg+xml,"+encodeURIComponent(e)};Mm.encodeJSON=function(e){return"data:application/json,"+encodeURIComponent(e)};var Uhe=window.URL||window.webkitURL;Mm.createObjectURL=function(e){return Uhe.createObjectURL(e)};Mm.revokeObjectURL=function(e){return Uhe.revokeObjectURL(e)};Mm.createBlob=function(e,t){if(t==="svg")return new window.Blob([e],{type:"image/svg+xml;charset=utf-8"});if(t==="full-json")return new window.Blob([e],{type:"application/json;charset=utf-8"});var r=xht(window.atob(e));return new window.Blob([r],{type:"image/"+t})};Mm.octetStream=function(e){document.location.href="data:application/octet-stream"+e};function xht(e){for(var t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r),i=0;i{"use strict";var WN=xa(),Kir=Mr(),bht=ao(),wht=va(),Jir=Zp(),jN=/"/g,NM="TOBESTRIPPED",Tht=new RegExp('("'+NM+")|("+NM+'")',"g");function Aht(e){var t=WN.select("body").append("div").style({display:"none"}).html(""),r=e.replace(/(&[^;]*;)/gi,function(n){return n==="<"?"<":n==="&rt;"?">":n.indexOf("<")!==-1||n.indexOf(">")!==-1?"":t.html(n).text()});return t.remove(),r}function Sht(e){return e.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")}Vhe.exports=function(t,r,n){var i=t._fullLayout,a=i._paper,o=i._toppaper,s=i.width,l=i.height,u;a.insert("rect",":first-child").call(bht.setRect,0,0,s,l).call(wht.fill,i.paper_bgcolor);var c=i._basePlotModules||[];for(u=0;u{"use strict";var Mht=Mr(),Eht=vb().EventEmitter,UM=Ly();function kht(e){var t=e.emitter||new Eht,r=new Promise(function(n,i){var a=window.Image,o=e.svg,s=e.format||"png",l=e.canvas,u=e.scale||1,c=e.width||300,f=e.height||150,h=u*c,d=u*f,v=l.getContext("2d",{willReadFrequently:!0}),x=new a,b,g;s==="svg"||Mht.isSafari()?g=UM.encodeSVG(o):(b=UM.createBlob(o,"svg"),g=UM.createObjectURL(b)),l.width=h,l.height=d,x.onload=function(){var E;switch(b=null,UM.revokeObjectURL(g),s!=="svg"&&v.drawImage(x,0,0,h,d),s){case"jpeg":E=l.toDataURL("image/jpeg");break;case"png":E=l.toDataURL("image/png");break;case"webp":E=l.toDataURL("image/webp");break;case"svg":E=g;break;default:var k="Image format is not jpeg, png, svg or webp.";if(i(new Error(k)),!e.promise)return t.emit("error",k)}n(E),e.promise||t.emit("success",E)},x.onerror=function(E){if(b=null,UM.revokeObjectURL(g),i(E),!e.promise)return t.emit("error",E)},x.src=g});return e.promise?r:t}Hhe.exports=kht});var XN=ye((enr,Whe)=>{"use strict";var Ghe=uo(),jhe=qP(),Cht=Xu(),Em=Mr(),VM=Ly(),Lht=OP(),Pht=BP(),Iht=QC().version,ZN={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};function Rht(e,t){t=t||{};var r,n,i,a;Em.isPlainObject(e)?(r=e.data||[],n=e.layout||{},i=e.config||{},a={}):(e=Em.getGraphDiv(e),r=Em.extendDeep([],e.data),n=Em.extendDeep({},e.layout),i=e._context,a=e._fullLayout||{});function o(_){return!(_ in t)||Em.validate(t[_],ZN[_])}if(!o("width")&&t.width!==null||!o("height")&&t.height!==null)throw new Error("Height and width should be pixel values.");if(!o("format"))throw new Error("Export format is not "+Em.join2(ZN.format.values,", "," or ")+".");var s={};function l(_,C){return Em.coerce(t,s,ZN,_,C)}var u=l("format"),c=l("width"),f=l("height"),h=l("scale"),d=l("setBackground"),v=l("imageDataOnly"),x=document.createElement("div");x.style.position="absolute",x.style.left="-5000px",document.body.appendChild(x);var b=Em.extendFlat({},n);c?b.width=c:t.width===null&&Ghe(a.width)&&(b.width=a.width),f?b.height=f:t.height===null&&Ghe(a.height)&&(b.height=a.height);var g=Em.extendFlat({},i,{_exportedPlot:!0,staticPlot:!0,setBackground:d}),E=VM.getRedrawFunc(x);function k(){return new Promise(function(_){setTimeout(_,VM.getDelay(x._fullLayout))})}function A(){return new Promise(function(_,C){var M=Lht(x,u,h),p=x._fullLayout.width,P=x._fullLayout.height;function T(){jhe.purge(x),document.body.removeChild(x)}if(u==="full-json"){var F=Cht.graphJson(x,!1,"keepdata","object",!0,!0);return F.version=Iht,F=JSON.stringify(F),T(),_(v?F:VM.encodeJSON(F))}if(T(),u==="svg")return _(v?M:VM.encodeSVG(M));var q=document.createElement("canvas");q.id=Em.randstr(),Pht({format:u,width:p,height:P,scale:h,canvas:q,svg:M,promise:!0}).then(_).catch(C)})}function L(_){return v?_.replace(VM.IMAGE_URL_PREFIX,""):_}return new Promise(function(_,C){jhe.newPlot(x,r,b,g).then(E).then(k).then(A).then(function(M){_(L(M))}).catch(function(M){C(M)})})}Whe.exports=Rht});var Khe=ye((tnr,Yhe)=>{"use strict";var P0=Mr(),Dht=Xu(),zht=_3(),Fht=ub().dfltConfig,Lg=P0.isPlainObject,Vb=Array.isArray,Zhe=P0.isArrayOrTypedArray;Yhe.exports=function(t,r){t===void 0&&(t=[]),r===void 0&&(r={});var n=zht.get(),i=[],a={_context:P0.extendFlat({},Fht)},o,s;Vb(t)?(a.data=P0.extendDeep([],t),o=t):(a.data=[],o=[],i.push(cd("array","data"))),Lg(r)?(a.layout=P0.extendDeep({},r),s=r):(a.layout={},s={},arguments.length>1&&i.push(cd("object","layout"))),Dht.supplyDefaults(a);for(var l=a._fullData,u=o.length,c=0;cf.length&&n.push(cd("unused",i,u.concat(f.length)));var g=f.length,E=Array.isArray(b);E&&(g=Math.min(g,b.length));var k,A,L,_,C;if(h.dimensions===2)for(A=0;Af[A].length&&n.push(cd("unused",i,u.concat(A,f[A].length)));var M=f[A].length;for(k=0;k<(E?Math.min(M,b[A].length):M);k++)L=E?b[A][k]:b,_=c[A][k],C=f[A][k],P0.validate(_,L)?C!==_&&C!==+_&&n.push(cd("dynamic",i,u.concat(A,k),_,C)):n.push(cd("value",i,u.concat(A,k),_))}else n.push(cd("array",i,u.concat(A),c[A]));else for(A=0;A{"use strict";var Hht=Mr(),UP=Ly();function Ght(e,t,r){var n=document.createElement("a"),i="download"in n,a=new Promise(function(o,s){var l,u;if(i)return l=UP.createBlob(e,r),u=UP.createObjectURL(l),n.href=u,n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n),UP.revokeObjectURL(u),l=null,o(t);if(Hht.isSafari()){var c=r==="svg"?",":";base64,";return UP.octetStream(c+encodeURIComponent(e)),o(t)}s(new Error("download error"))});return a}Jhe.exports=Ght});var YN=ye((nnr,ede)=>{"use strict";var Qhe=Mr(),jht=XN(),Wht=$he(),inr=Ly();function Zht(e,t){var r;return Qhe.isPlainObject(e)||(r=Qhe.getGraphDiv(e)),t=t||{},t.format=t.format||"png",t.width=t.width||null,t.height=t.height||null,t.imageDataOnly=!0,new Promise(function(n,i){r&&r._snapshotInProgress&&i(new Error("Snapshotting already in progress.")),r&&(r._snapshotInProgress=!0);var a=jht(e,t),o=t.filename||e.fn||"newplot";o+="."+t.format.replace("-","."),a.then(function(s){return r&&(r._snapshotInProgress=!1),Wht(s,o,t.format)}).then(function(s){n(s)}).catch(function(s){r&&(r._snapshotInProgress=!1),i(s)})})}ede.exports=Zht});var ade=ye(KN=>{"use strict";var Cp=Mr(),Lp=Cp.isPlainObject,tde=_3(),rde=Xu(),Xht=vl(),ide=Vs(),nde=ub().dfltConfig;KN.makeTemplate=function(e){e=Cp.isPlainObject(e)?e:Cp.getGraphDiv(e),e=Cp.extendDeep({_context:nde},{data:e.data,layout:e.layout}),rde.supplyDefaults(e);var t=e.data||[],r=e.layout||{};r._basePlotModules=e._fullLayout._basePlotModules,r._modules=e._fullLayout._modules;var n={data:{},layout:{}};t.forEach(function(d){var v={};HM(d,v,Kht.bind(null,d));var x=Cp.coerce(d,{},Xht,"type"),b=n.data[x];b||(b=n.data[x]=[]),b.push(v)}),HM(r,n.layout,Yht.bind(null,r)),delete n.layout.template;var i=r.template;if(Lp(i)){var a=i.layout,o,s,l,u,c,f;Lp(a)&&VP(a,n.layout);var h=i.data;if(Lp(h)){for(s in n.data)if(l=h[s],Array.isArray(l)){for(c=n.data[s],f=c.length,u=l.length,o=0;og?o.push({code:"unused",traceType:d,templateCount:b,dataCount:g}):g>b&&o.push({code:"reused",traceType:d,templateCount:b,dataCount:g})}}function E(k,A){for(var L in k)if(L.charAt(0)!=="_"){var _=k[L],C=I0(k,L,A);Lp(_)?(Array.isArray(k)&&_._template===!1&&_.templateitemname&&o.push({code:"missing",path:C,templateitemname:_.templateitemname}),E(_,C)):Array.isArray(_)&&Jht(_)&&E(_,C)}}if(E({data:l,layout:s},""),o.length)return o.map($ht)};function Jht(e){for(var t=0;t{"use strict";var Hh=qP();Sc._doPlot=Hh._doPlot;Sc.newPlot=Hh.newPlot;Sc.restyle=Hh.restyle;Sc.relayout=Hh.relayout;Sc.redraw=Hh.redraw;Sc.update=Hh.update;Sc._guiRestyle=Hh._guiRestyle;Sc._guiRelayout=Hh._guiRelayout;Sc._guiUpdate=Hh._guiUpdate;Sc._storeDirectGUIEdit=Hh._storeDirectGUIEdit;Sc.react=Hh.react;Sc.extendTraces=Hh.extendTraces;Sc.prependTraces=Hh.prependTraces;Sc.addTraces=Hh.addTraces;Sc.deleteTraces=Hh.deleteTraces;Sc.moveTraces=Hh.moveTraces;Sc.purge=Hh.purge;Sc.addFrames=Hh.addFrames;Sc.deleteFrames=Hh.deleteFrames;Sc.animate=Hh.animate;Sc.setPlotConfig=Hh.setPlotConfig;var Qht=DS().getGraphDiv,edt=tP().eraseActiveShape;Sc.deleteActiveShape=function(e){return edt(Qht(e))};Sc.toImage=XN();Sc.validate=Khe();Sc.downloadImage=YN();var ode=ade();Sc.makeTemplate=ode.makeTemplate;Sc.validateTemplate=ode.validateTemplate});var K3=ye((snr,lde)=>{"use strict";var JN=Mr(),tdt=ba();lde.exports=function(t,r,n,i){var a=i("x"),o=i("y"),s,l=tdt.getComponentMethod("calendars","handleTraceDefaults");if(l(t,r,["x","y"],n),a){var u=JN.minRowLength(a);o?s=Math.min(u,JN.minRowLength(o)):(s=u,i("y0"),i("dy"))}else{if(!o)return 0;s=JN.minRowLength(o),i("x0"),i("dx")}return r._length=s,s}});var Pg=ye((lnr,fde)=>{"use strict";var ude=Mr().dateTick0,rdt=es(),idt=rdt.ONEWEEK;function cde(e,t){return e%idt===0?ude(t,1):ude(t,0)}fde.exports=function(t,r,n,i,a){if(a||(a={x:!0,y:!0}),a.x){var o=i("xperiod");o&&(i("xperiod0",cde(o,r.xcalendar)),i("xperiodalignment"))}if(a.y){var s=i("yperiod");s&&(i("yperiod0",cde(s,r.ycalendar)),i("yperiodalignment"))}}});var vde=ye((unr,dde)=>{"use strict";var hde=["orientation","groupnorm","stackgaps"];dde.exports=function(t,r,n,i){var a=n._scatterStackOpts,o=i("stackgroup");if(o){var s=r.xaxis+r.yaxis,l=a[s];l||(l=a[s]={});var u=l[o],c=!1;u?u.traces.push(r):(u=l[o]={traceIndices:[],traces:[r]},c=!0);for(var f={orientation:r.x&&!r.y?"h":"v"},h=0;h{"use strict";var pde=va(),gde=Dv().hasColorscale,mde=Uh(),ndt=lu();yde.exports=function(t,r,n,i,a,o){var s=ndt.isBubble(t),l=(t.line||{}).color,u;if(o=o||{},l&&(n=l),a("marker.symbol"),a("marker.opacity",s?.7:1),a("marker.size"),o.noAngle||(a("marker.angle"),o.noAngleRef||a("marker.angleref"),o.noStandOff||a("marker.standoff")),a("marker.color",n),gde(t,"marker")&&mde(t,r,i,a,{prefix:"marker.",cLetter:"c"}),o.noSelect||(a("selected.marker.color"),a("unselected.marker.color"),a("selected.marker.size"),a("unselected.marker.size")),o.noLine||(l&&!Array.isArray(l)&&r.marker.color!==l?u=l:s?u=pde.background:u=pde.defaultLine,a("marker.line.color",u),gde(t,"marker.line")&&mde(t,r,i,a,{prefix:"marker.line.",cLetter:"c"}),a("marker.line.width",s?1:0)),s&&(a("marker.sizeref"),a("marker.sizemin"),a("marker.sizemode")),o.gradient){var c=a("marker.gradient.type");c!=="none"&&a("marker.gradient.color")}}});var R0=ye((fnr,_de)=>{"use strict";var adt=Mr().isArrayOrTypedArray,odt=Dv().hasColorscale,sdt=Uh();_de.exports=function(t,r,n,i,a,o){o||(o={});var s=(t.marker||{}).color;if(s&&s._inputArray&&(s=s._inputArray),a("line.color",n),odt(t,"line"))sdt(t,r,i,a,{prefix:"line.",cLetter:"c"});else{var l=(adt(s)?!1:s)||n;a("line.color",l)}a("line.width"),o.noDash||a("line.dash"),o.backoff&&a("line.backoff")}});var J3=ye((hnr,xde)=>{"use strict";xde.exports=function(t,r,n){var i=n("line.shape");i==="spline"&&n("line.smoothing")}});var D0=ye((dnr,bde)=>{"use strict";var ldt=Mr();bde.exports=function(e,t,r,n,i){i=i||{},n("textposition"),ldt.coerceFont(n,"textfont",i.font||r.font,i),i.noSelect||(n("selected.textfont.color"),n("unselected.textfont.color"))}});var Ig=ye((vnr,Tde)=>{"use strict";var GP=va(),wde=Mr().isArrayOrTypedArray;function udt(e){for(var t=GP.interpolate(e[0][1],e[1][1],.5),r=2;r{"use strict";var Ade=Mr(),cdt=ba(),fdt=Uc(),hdt=Sm(),$3=lu(),ddt=K3(),vdt=Pg(),pdt=vde(),gdt=$p(),mdt=R0(),Sde=J3(),ydt=D0(),_dt=Ig(),xdt=Mr().coercePattern;Mde.exports=function(t,r,n,i){function a(d,v){return Ade.coerce(t,r,fdt,d,v)}var o=ddt(t,r,i,a);if(o||(r.visible=!1),!!r.visible){vdt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("zorder");var s=pdt(t,r,i,a);i.scattermode==="group"&&r.orientation===void 0&&a("orientation","v");var l=!s&&o{"use strict";var bdt=Bb().getAxisGroup;kde.exports=function(t,r,n,i,a){var o=r.orientation,s=r[{v:"x",h:"y"}[o]+"axis"],l=bdt(n,s)+o,u=n._alignmentOpts||{},c=i("alignmentgroup"),f=u[l];f||(f=u[l]={});var h=f[c];h?h.traces.push(r):h=f[c]={traces:[r],alignmentIndex:Object.keys(f).length,offsetGroups:{}};var d=i("offsetgroup")||"",v=h.offsetGroups,x=v[d];r._offsetIndex=0,(a!=="group"||d)&&(x||(x=v[d]={offsetIndex:Object.keys(v).length}),r._offsetIndex=x.offsetIndex)}});var $N=ye((mnr,Cde)=>{"use strict";var wdt=Mr(),Tdt=Hb(),Adt=Uc();Cde.exports=function(t,r){var n,i,a,o=r.scattermode;function s(h){return wdt.coerce(i._input,i,Adt,h)}if(r.scattermode==="group")for(a=0;a=0;c--){var f=t[c];if(f.type==="scatter"&&f.xaxis===l.xaxis&&f.yaxis===l.yaxis){f.opacity=void 0;break}}}}}});var Pde=ye((ynr,Lde)=>{"use strict";var Sdt=Mr(),Mdt=U6();Lde.exports=function(e,t){function r(i,a){return Sdt.coerce(e,t,Mdt,i,a)}var n=t.barmode==="group";t.scattermode==="group"&&r("scattergap",n?t.bargap:.2)}});var Rg=ye((_nr,Rde)=>{"use strict";var Edt=uo(),Ide=Mr(),kdt=Ide.dateTime2ms,jP=Ide.incrementMonth,Cdt=es(),Ldt=Cdt.ONEAVGMONTH;Rde.exports=function(t,r,n,i){if(r.type!=="date")return{vals:i};var a=t[n+"periodalignment"];if(!a)return{vals:i};var o=t[n+"period"],s;if(Edt(o)){if(o=+o,o<=0)return{vals:i}}else if(typeof o=="string"&&o.charAt(0)==="M"){var l=+o.substring(1);if(l>0&&Math.round(l)===l)s=l;else return{vals:i}}for(var u=r.calendar,c=a==="start",f=a==="end",h=t[n+"period0"],d=kdt(h,u)||0,v=[],x=[],b=[],g=i.length,E=0;Ek;)_=jP(_,-s,u);for(;_<=k;)_=jP(_,s,u);L=jP(_,-s,u)}else{for(A=Math.round((k-d)/o),_=d+A*o;_>k;)_-=o;for(;_<=k;)_+=o;L=_-o}v[E]=c?L:f?_:(L+_)/2,x[E]=L,b[E]=_}return{vals:v,starts:x,ends:b}}});var z0=ye((xnr,zde)=>{"use strict";var QN=Dv().hasColorscale,eU=zv(),Dde=lu();zde.exports=function(t,r){Dde.hasLines(r)&&QN(r,"line")&&eU(t,r,{vals:r.line.color,containerStr:"line",cLetter:"c"}),Dde.hasMarkers(r)&&(QN(r,"marker")&&eU(t,r,{vals:r.marker.color,containerStr:"marker",cLetter:"c"}),QN(r,"marker.line")&&eU(t,r,{vals:r.marker.line.color,containerStr:"marker.line",cLetter:"c"}))}});var km=ye((bnr,Fde)=>{"use strict";var Df=Mr();Fde.exports=function(t,r){for(var n=0;n{"use strict";var qde=Mr();Ode.exports=function(t,r){qde.isArrayOrTypedArray(r.selectedpoints)&&qde.tagSelected(t,r)}});var q0=ye((Tnr,jde)=>{"use strict";var Bde=uo(),rU=Mr(),GM=Qa(),Nde=Rg(),tU=es().BADNUM,iU=lu(),Pdt=z0(),Idt=km(),Rdt=F0();function Ddt(e,t){var r=e._fullLayout,n=t._xA=GM.getFromId(e,t.xaxis||"x","x"),i=t._yA=GM.getFromId(e,t.yaxis||"y","y"),a=n.makeCalcdata(t,"x"),o=i.makeCalcdata(t,"y"),s=Nde(t,n,"x",a),l=Nde(t,i,"y",o),u=s.vals,c=l.vals,f=t._length,h=new Array(f),d=t.ids,v=nU(t,r,n,i),x=!1,b,g,E,k,A,L;Hde(r,t);var _="x",C="y",M;if(v)rU.pushUnique(v.traceIndices,t.index),b=v.orientation==="v",b?(C="s",M="x"):(_="s",M="y"),A=v.stackgaps==="interpolate";else{var p=Vde(t,f);Ude(e,t,n,i,u,c,p)}var P=!!t.xperiodalignment,T=!!t.yperiodalignment;for(g=0;gg&&h[k].gap;)k--;for(L=h[k].s,E=h.length-1;E>k;E--)h[E].s=L;for(;g{"use strict";Wde.exports=WP;var zdt=Mr().distinctVals;function WP(e,t){this.traces=e,this.sepNegVal=t.sepNegVal,this.overlapNoMerge=t.overlapNoMerge;for(var r=1/0,n=t.posAxis._id.charAt(0),i=[],a=0;a{"use strict";var O0=uo(),p_=Mr().isArrayOrTypedArray,Q3=es().BADNUM,Fdt=ba(),jM=Qa(),qdt=Bb().getAxisGroup,ZP=Zde();function Odt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ul+o||!O0(s))}for(var c=0;c{"use strict";var $de=q0(),Qde=Gb().setGroupPositions;function Kdt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;up[c]&&c{"use strict";var $dt=ao(),ave=es(),WM=ave.BADNUM,ove=ave.LOG_CLIP,rve=ove+.5,ive=ove-.5,XP=Mr(),Qdt=XP.segmentsIntersect,nve=XP.constrain,cU=Sm();sve.exports=function(t,r){var n=r.trace||{},i=r.xaxis,a=r.yaxis,o=i.type==="log",s=a.type==="log",l=i._length,u=a._length,c=r.backoff,f=n.marker,h=r.connectGaps,d=r.baseTolerance,v=r.shape,x=v==="linear",b=n.fill&&n.fill!=="none",g=[],E=cU.minTolerance,k=t.length,A=new Array(k),L=0,_,C,M,p,P,T,F,q,V,H,X,G,N,W,re,ae;function _e(ut){var Ne=t[ut];if(!Ne)return!1;var Ye=r.linearized?i.l2p(Ne.x):i.c2p(Ne.x),Ve=r.linearized?a.l2p(Ne.y):a.c2p(Ne.y);if(Ye===WM){if(o&&(Ye=i.c2p(Ne.x,!0)),Ye===WM)return!1;s&&Ve===WM&&(Ye*=Math.abs(i._m*u*(i._m>0?rve:ive)/(a._m*l*(a._m>0?rve:ive)))),Ye*=1e3}if(Ve===WM){if(s&&(Ve=a.c2p(Ne.y,!0)),Ve===WM)return!1;Ve*=1e3}return[Ye,Ve]}function Me(ut,Ne,Ye,Ve){var Xe=Ye-ut,ht=Ve-Ne,Le=.5-ut,xe=.5-Ne,Se=Xe*Xe+ht*ht,lt=Xe*Le+ht*xe;if(lt>0&<1||Math.abs(Le.y-Ye[0][1])>1)&&(Le=[Le.x,Le.y],Ve&&Te(Le,ut)ze||ut[1]me)return[nve(ut[0],Ae,ze),nve(ut[1],Ce,me)]}function kt(ut,Ne){if(ut[0]===Ne[0]&&(ut[0]===Ae||ut[0]===ze)||ut[1]===Ne[1]&&(ut[1]===Ce||ut[1]===me))return!0}function Ct(ut,Ne){var Ye=[],Ve=Rt(ut),Xe=Rt(Ne);return Ve&&Xe&&kt(Ve,Xe)||(Ve&&Ye.push(Ve),Xe&&Ye.push(Xe)),Ye}function Yt(ut,Ne,Ye){return function(Ve,Xe){var ht=Rt(Ve),Le=Rt(Xe),xe=[];if(ht&&Le&&kt(ht,Le))return xe;ht&&xe.push(ht),Le&&xe.push(Le);var Se=2*XP.constrain((Ve[ut]+Xe[ut])/2,Ne,Ye)-((ht||Ve)[ut]+(Le||Xe)[ut]);if(Se){var lt;ht&&Le?lt=Se>0==ht[ut]>Le[ut]?ht:Le:lt=ht||Le,lt[ut]+=Se}return xe}}var xr;v==="linear"||v==="spline"?xr=ot:v==="hv"||v==="vh"?xr=Ct:v==="hvh"?xr=Yt(0,Ae,ze):v==="vhv"&&(xr=Yt(1,Ce,me));function er(ut,Ne){var Ye=Ne[0]-ut[0],Ve=(Ne[1]-ut[1])/Ye,Xe=(ut[1]*Ne[0]-Ne[1]*ut[0])/Ye;return Xe>0?[Ve>0?Ae:ze,me]:[Ve>0?ze:Ae,Ce]}function Ke(ut){var Ne=ut[0],Ye=ut[1],Ve=Ne===A[L-1][0],Xe=Ye===A[L-1][1];if(!(Ve&&Xe))if(L>1){var ht=Ne===A[L-2][0],Le=Ye===A[L-2][1];Ve&&(Ne===Ae||Ne===ze)&&ht?Le?L--:A[L-1]=ut:Xe&&(Ye===Ce||Ye===me)&&Le?ht?L--:A[L-1]=ut:A[L++]=ut}else A[L++]=ut}function xt(ut){A[L-1][0]!==ut[0]&&A[L-1][1]!==ut[1]&&Ke([nt,ct]),Ke(ut),qt=null,nt=ct=0}var bt=XP.isArrayOrTypedArray(f);function Lt(ut){if(ut&&c&&(ut.i=_,ut.d=t,ut.trace=n,ut.marker=bt?f[ut.i]:f,ut.backoff=c),ke=ut[0]/l,ge=ut[1]/u,ce=ut[0]ze?ze:0,Ge=ut[1]me?me:0,ce||Ge){if(!L)A[L++]=[ce||ut[0],Ge||ut[1]];else if(qt){var Ne=xr(qt,ut);Ne.length>1&&(xt(Ne[0]),A[L++]=Ne[1])}else rt=xr(A[L-1],ut)[0],A[L++]=rt;var Ye=A[L-1];ce&&Ge&&(Ye[0]!==ce||Ye[1]!==Ge)?(qt&&(nt!==ce&&ct!==Ge?Ke(nt&&ct?er(qt,ut):[nt||ce,ct||Ge]):nt&&ct&&Ke([nt,ct])),Ke([ce,Ge])):nt-ce&&ct-Ge&&Ke([ce||nt,Ge||ct]),qt=ut,nt=ce,ct=Ge}else qt&&xt(xr(qt,ut)[0]),A[L++]=ut}for(_=0;_ie(T,St))break;M=T,N=V[0]*q[0]+V[1]*q[1],N>X?(X=N,p=T,F=!1):N=t.length||!T)break;Lt(T),C=T}}qt&&Ke([nt||qt[0],ct||qt[1]]),g.push(A.slice(0,L))}var Et=v.slice(v.length-1);if(c&&Et!=="h"&&Et!=="v"){for(var dt=!1,Ht=-1,$t=[],fr=0;fr{"use strict";var lve={tonextx:1,tonexty:1,tonext:1};uve.exports=function(t,r,n){var i,a,o,s,l,u={},c=!1,f=-1,h=0,d=-1;for(a=0;a=0?l=d:(l=d=h,h++),l{"use strict";var Dg=xa(),evt=ba(),ZM=Mr(),tT=ZM.ensureSingle,fve=ZM.identity,zf=ao(),rT=lu(),tvt=fU(),rvt=hU(),YP=wM().tester;hve.exports=function(t,r,n,i,a,o){var s,l,u=!a,c=!!a&&a.duration>0,f=rvt(t,r,n);if(s=i.selectAll("g.trace").data(f,function(d){return d[0].trace.uid}),s.enter().append("g").attr("class",function(d){return"trace scatter trace"+d[0].trace.uid}).style("stroke-miterlimit",2),s.order(),ivt(t,s,r),c){o&&(l=o());var h=Dg.transition().duration(a.duration).ease(a.easing).each("end",function(){l&&l()}).each("interrupt",function(){l&&l()});h.each(function(){i.selectAll("g.trace").each(function(d,v){cve(t,v,r,d,f,this,a)})})}else s.each(function(d,v){cve(t,v,r,d,f,this,a)});u&&s.exit().remove(),i.selectAll("path:not([d])").remove()};function ivt(e,t,r){t.each(function(n){var i=tT(Dg.select(this),"g","fills");zf.setClipUrl(i,r.layerClipId,e);var a=n[0].trace,o=[];a._ownfill&&o.push("_ownFill"),a._nexttrace&&o.push("_nextFill");var s=i.selectAll("g").data(o,fve);s.enter().append("g"),s.exit().each(function(l){a[l]=null}).remove(),s.order().each(function(l){a[l]=tT(Dg.select(this),"path","js-fill")})})}function cve(e,t,r,n,i,a,o){var s=e._context.staticPlot,l;nvt(e,t,r,n,i);var u=!!o&&o.duration>0;function c(Yt){return u?Yt.transition():Yt}var f=r.xaxis,h=r.yaxis,d=n[0].trace,v=d.line,x=Dg.select(a),b=tT(x,"g","errorbars"),g=tT(x,"g","lines"),E=tT(x,"g","points"),k=tT(x,"g","text");if(evt.getComponentMethod("errorbars","plot")(e,b,r,o),d.visible!==!0)return;c(x).style("opacity",d.opacity);var A,L,_=d.fill.charAt(d.fill.length-1);_!=="x"&&_!=="y"&&(_="");var C,M;_==="y"?(C=1,M=h.c2p(0,!0)):_==="x"&&(C=0,M=f.c2p(0,!0)),n[0][r.isRangePlot?"nodeRangePlot3":"node3"]=x;var p="",P=[],T=d._prevtrace,F=null,q=null;T&&(p=T._prevRevpath||"",L=T._nextFill,P=T._ownPolygons,F=T._fillsegments,q=T._fillElement);var V,H,X="",G="",N,W,re,ae,_e,Me,ke=[];d._polygons=[];var ge=[],ie=[],Te=ZM.noop;if(A=d._ownFill,rT.hasLines(d)||d.fill!=="none"){L&&L.datum(n),["hv","vh","hvh","vhv"].indexOf(v.shape)!==-1?(N=zf.steps(v.shape),W=zf.steps(v.shape.split("").reverse().join(""))):v.shape==="spline"?N=W=function(Yt){var xr=Yt[Yt.length-1];return Yt.length>1&&Yt[0][0]===xr[0]&&Yt[0][1]===xr[1]?zf.smoothclosed(Yt.slice(1),v.smoothing):zf.smoothopen(Yt,v.smoothing)}:N=W=function(Yt){return"M"+Yt.join("L")},re=function(Yt){return W(Yt.reverse())},ie=tvt(n,{xaxis:f,yaxis:h,trace:d,connectGaps:d.connectgaps,baseTolerance:Math.max(v.width||1,3)/4,shape:v.shape,backoff:v.backoff,simplify:v.simplify,fill:d.fill}),ge=new Array(ie.length);var Ee=0;for(l=0;l=s[0]&&x.x<=s[1]&&x.y>=l[0]&&x.y<=l[1]}),h=Math.ceil(f.length/c),d=0;i.forEach(function(x,b){var g=x[0].trace;rT.hasMarkers(g)&&g.marker.maxdisplayed>0&&b{"use strict";dve.exports={container:"marker",min:"cmin",max:"cmax"}});var JP=ye((Pnr,vve)=>{"use strict";var KP=Qa();vve.exports=function(t,r,n){var i={},a={_fullLayout:n},o=KP.getFromTrace(a,r,"x"),s=KP.getFromTrace(a,r,"y"),l=t.orig_x;l===void 0&&(l=t.x);var u=t.orig_y;return u===void 0&&(u=t.y),i.xLabel=KP.tickText(o,o.c2l(l),!0).text,i.yLabel=KP.tickText(s,s.c2l(u),!0).text,i}});var op=ye((Inr,pve)=>{"use strict";var dU=xa(),nT=ao(),avt=ba();function ovt(e){var t=dU.select(e).selectAll("g.trace.scatter");t.style("opacity",function(r){return r[0].trace.opacity}),t.selectAll("g.points").each(function(r){var n=dU.select(this),i=r.trace||r[0].trace;vU(n,i,e)}),t.selectAll("g.text").each(function(r){var n=dU.select(this),i=r.trace||r[0].trace;pU(n,i,e)}),t.selectAll("g.trace path.js-line").call(nT.lineGroupStyle),t.selectAll("g.trace path.js-fill").call(nT.fillGroupStyle,e,!1),avt.getComponentMethod("errorbars","style")(t)}function vU(e,t,r){nT.pointStyle(e.selectAll("path.point"),t,r)}function pU(e,t,r){nT.textPointStyle(e.selectAll("text"),t,r)}function svt(e,t,r){var n=t[0].trace;n.selectedpoints?(nT.selectedPointStyle(r.selectAll("path.point"),n),nT.selectedTextStyle(r.selectAll("text"),n)):(vU(r,n,e),pU(r,n,e))}pve.exports={style:ovt,stylePoints:vU,styleText:pU,styleOnSelect:svt}});var oT=ye((Rnr,gve)=>{"use strict";var aT=va(),lvt=lu();gve.exports=function(t,r){var n,i;if(t.mode==="lines")return n=t.line.color,n&&aT.opacity(n)?n:t.fillcolor;if(t.mode==="none")return t.fill?t.fillcolor:"";var a=r.mcc||(t.marker||{}).color,o=r.mlcc||((t.marker||{}).line||{}).color;return i=a&&aT.opacity(a)?a:o&&aT.opacity(o)&&(r.mlw||((t.marker||{}).line||{}).width)?o:"",i?aT.opacity(i)<.3?aT.addOpacity(i,.3):i:(n=(t.line||{}).color,n&&aT.opacity(n)&&lvt.hasLines(t)&&t.line.width?n:t.fillcolor)}});var sT=ye((Dnr,yve)=>{"use strict";var $P=Mr(),mve=Nc(),uvt=ba(),cvt=oT(),gU=va(),fvt=$P.fillText;yve.exports=function(t,r,n,i){var a=t.cd,o=a[0].trace,s=t.xa,l=t.ya,u=s.c2p(r),c=l.c2p(n),f=[u,c],h=o.hoveron||"",d=o.mode.indexOf("markers")!==-1?3:.5,v=!!o.xperiodalignment,x=!!o.yperiodalignment;if(h.indexOf("points")!==-1){var b=function(G){if(v){var N=s.c2p(G.xStart),W=s.c2p(G.xEnd);return u>=Math.min(N,W)&&u<=Math.max(N,W)?0:1/0}var re=Math.max(3,G.mrc||0),ae=1-1/re,_e=Math.abs(s.c2p(G.x)-u);return _e=Math.min(N,W)&&c<=Math.max(N,W)?0:1/0}var re=Math.max(3,G.mrc||0),ae=1-1/re,_e=Math.abs(l.c2p(G.y)-c);return _eke!=me>=ke&&(Ae=Te[ie-1][0],ze=Te[ie][0],me-Ce&&(Ee=Ae+(ze-Ae)*(ke-Ce)/(me-Ce),re=Math.min(re,Ee),ae=Math.max(ae,Ee)));return re=Math.max(re,0),ae=Math.min(ae,s._length),{x0:re,x1:ae,y0:ke,y1:ke}}if(h.indexOf("fills")!==-1&&o._fillElement){var V=F(o._fillElement)&&!F(o._fillExclusionElement);if(V){var H=q(o._polygons);H===null&&(H={x0:f[0],x1:f[0],y0:f[1],y1:f[1]});var X=gU.defaultLine;return gU.opacity(o.fillcolor)?X=o.fillcolor:gU.opacity((o.line||{}).color)&&(X=o.line.color),$P.extendFlat(t,{distance:t.maxHoverDistance,x0:H.x0,x1:H.x1,y0:H.y0,y1:H.y1,color:X,hovertemplate:!1}),delete t.index,o.text&&!$P.isArrayOrTypedArray(o.text)?t.text=String(o.text):t.text=o.name,[t]}}}});var lT=ye((znr,xve)=>{"use strict";var _ve=lu();xve.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h=!_ve.hasMarkers(s)&&!_ve.hasText(s);if(h)return[];if(r===!1)for(l=0;l{"use strict";bve.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}});var yU=ye((qnr,Sve)=>{"use strict";var XM=ba().traceIs,mU=L3();Sve.exports=function(t,r,n,i){n("autotypenumbers",i.autotypenumbersDflt);var a=n("type",(i.splomStash||{}).type);a==="-"&&(hvt(r,i.data),r.type==="-"?r.type="linear":t.type=r.type)};function hvt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i;r.indexOf("scene")!==-1&&(r=n);var a=dvt(t,r,n);if(a){if(a.type==="histogram"&&n==={v:"y",h:"x"}[a.orientation||"v"]){e.type="linear";return}var o=n+"calendar",s=a[o],l={noMultiCategory:!XM(a,"cartesian")||XM(a,"noMultiCategory")};if(a.type==="box"&&a._hasPreCompStats&&n==={h:"x",v:"y"}[a.orientation||"v"]&&(l.noMultiCategory=!0),l.autotypenumbers=e.autotypenumbers,Ave(a,n)){var u=Tve(a),c=[];for(i=0;i0&&(i["_"+r+"axes"]||{})[t])return i;if((i[r+"axis"]||r)===t){if(Ave(i,r))return i;if((i[r]||[]).length||i[r+"0"])return i}}}function Tve(e){return{v:"x",h:"y"}[e.orientation||"v"]}function Ave(e,t){var r=Tve(e),n=XM(e,"box-violin"),i=XM(e._fullInput||{},"candlestick");return n&&!i&&t===r&&e[r]===void 0&&e[r+"0"]===void 0}});var QP=ye((Onr,Mve)=>{"use strict";var vvt=vv().isTypedArraySpec;function pvt(e,t){var r=t.dataAttr||e._id.charAt(0),n={},i,a,o;if(t.axData)i=t.axData;else for(i=[],a=0;a0||vvt(a),s;o&&(s="array");var l=n("categoryorder",s),u;l==="array"&&(u=n("categoryarray")),!o&&l==="array"&&(l=r.categoryorder="trace"),l==="trace"?r._initialCategories=[]:l==="array"?r._initialCategories=u.slice():(u=pvt(r,i).sort(),l==="category ascending"?r._initialCategories=u:l==="category descending"&&(r._initialCategories=u.reverse()))}}});var YM=ye((Bnr,kve)=>{"use strict";var Eve=id().mix,gvt=dh(),mvt=Mr();kve.exports=function(t,r,n,i){i=i||{};var a=i.dfltColor;function o(C,M){return mvt.coerce2(t,r,i.attributes,C,M)}var s=o("linecolor",a),l=o("linewidth"),u=n("showline",i.showLine||!!s||!!l);u||(delete r.linecolor,delete r.linewidth);var c=Eve(a,i.bgColor,i.blend||gvt.lightFraction).toRgbString(),f=o("gridcolor",c),h=o("gridwidth"),d=o("griddash"),v=n("showgrid",i.showGrid||!!f||!!h||!!d);if(v||(delete r.gridcolor,delete r.gridwidth,delete r.griddash),i.hasMinor){var x=Eve(r.gridcolor,i.bgColor,67).toRgbString(),b=o("minor.gridcolor",x),g=o("minor.gridwidth",r.gridwidth||1),E=o("minor.griddash",r.griddash||"solid"),k=n("minor.showgrid",!!b||!!g||!!E);k||(delete r.minor.gridcolor,delete r.minor.gridwidth,delete r.minor.griddash)}if(!i.noZeroLine){var A=o("zerolinecolor",a),L=o("zerolinewidth"),_=n("zeroline",i.showGrid||!!A||!!L);_||(delete r.zerolinecolor,delete r.zerolinewidth)}}});var JM=ye((Nnr,Dve)=>{"use strict";var Cve=uo(),yvt=ba(),KM=Mr(),_vt=Vs(),xvt=Zd(),_U=Cd(),Lve=xb(),Pve=T3(),bvt=e_(),wvt=t_(),Tvt=QP(),Avt=YM(),Svt=hB(),Ive=ym(),eI=ad().WEEKDAY_PATTERN,Mvt=ad().HOUR_PATTERN;Dve.exports=function(t,r,n,i,a){var o=i.letter,s=i.font||{},l=i.splomStash||{},u=n("visible",!i.visibleDflt),c=r._template||{},f=r.type||c.type||"-",h;if(f==="date"){var d=yvt.getComponentMethod("calendars","handleDefaults");d(t,r,"calendar",i.calendar),i.noTicklabelmode||(h=n("ticklabelmode"))}!i.noTicklabelindex&&(f==="date"||f==="linear")&&n("ticklabelindex");var v="";(!i.noTicklabelposition||f==="multicategory")&&(v=KM.coerce(t,r,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:h==="period"?["outside","inside"]:o==="x"?["outside","inside","outside left","inside left","outside right","inside right"]:["outside","inside","outside top","inside top","outside bottom","inside bottom"]}},"ticklabelposition")),i.noTicklabeloverflow||n("ticklabeloverflow",v.indexOf("inside")!==-1?"hide past domain":f==="category"||f==="multicategory"?"allow":"hide past div"),Ive(r,a),Svt(t,r,n,i),Tvt(t,r,n,i),f!=="category"&&!i.noHover&&n("hoverformat");var x=n("color"),b=x!==_U.color.dflt?x:s.color,g=l.label||a._dfltTitle[o];if(wvt(t,r,n,f,i),!u)return r;n("title.text",g),KM.coerceFont(n,"title.font",s,{overrideDflt:{size:KM.bigFont(s.size),color:b}}),Lve(t,r,n,f);var E=i.hasMinor;if(E&&(_vt.newContainer(r,"minor"),Lve(t,r,n,f,{isMinor:!0})),bvt(t,r,n,f,i),Pve(t,r,n,i),E){var k=i.isMinor;i.isMinor=!0,Pve(t,r,n,i),i.isMinor=k}Avt(t,r,n,{dfltColor:x,bgColor:i.bgColor,showGrid:i.showGrid,hasMinor:E,attributes:_U}),E&&!r.minor.ticks&&!r.minor.showgrid&&delete r.minor,(r.showline||r.ticks)&&n("mirror");var A=f==="multicategory";if(!i.noTickson&&(f==="category"||A)&&(r.ticks||r.showgrid)){var L;A&&(L="boundaries");var _=n("tickson",L);_==="boundaries"&&delete r.ticklabelposition}if(A){var C=n("showdividers");C&&(n("dividercolor"),n("dividerwidth"))}if(f==="date")if(xvt(t,r,{name:"rangebreaks",inclusionAttr:"enabled",handleItemDefaults:Evt}),!r.rangebreaks.length)delete r.rangebreaks;else{for(var M=0;M=2){var o="",s,l;if(a.length===2){for(s=0;s<2;s++)if(l=Rve(a[s]),l){o=eI;break}}var u=n("pattern",o);if(u===eI)for(s=0;s<2;s++)l=Rve(a[s]),l&&(t.bounds[s]=a[s]=l-1);if(u)for(s=0;s<2;s++)switch(l=a[s],u){case eI:if(!Cve(l)){t.enabled=!1;return}if(l=+l,l!==Math.floor(l)||l<0||l>=7){t.enabled=!1;return}t.bounds[s]=a[s]=l;break;case Mvt:if(!Cve(l)){t.enabled=!1;return}if(l=+l,l<0||l>24){t.enabled=!1;return}t.bounds[s]=a[s]=l;break}if(r.autorange===!1){var c=r.range;if(c[0]c[1]){t.enabled=!1;return}}else if(a[0]>c[0]&&a[1]{"use strict";var Cvt=uo(),tI=Mr();zve.exports=function(t,r,n,i){var a=i.counterAxes||[],o=i.overlayableAxes||[],s=i.letter,l=i.grid,u=i.overlayingDomain,c,f,h,d,v,x;l&&(f=l._domains[s][l._axisMap[r._id]],c=l._anchors[r._id],f&&(h=l[s+"side"].split(" ")[0],d=l.domain[s][h==="right"||h==="top"?1:0])),f=f||[0,1],c=c||(Cvt(t.position)?"free":a[0]||"free"),h=h||(s==="x"?"bottom":"left"),d=d||0,v=0,x=!1;var b=tI.coerce(t,r,{anchor:{valType:"enumerated",values:["free"].concat(a),dflt:c}},"anchor"),g=tI.coerce(t,r,{side:{valType:"enumerated",values:s==="x"?["bottom","top"]:["left","right"],dflt:h}},"side");if(b==="free"){if(s==="y"){var E=n("autoshift");E&&(d=g==="left"?u[0]:u[1],x=r.automargin?r.automargin:!0,v=g==="left"?-3:3),n("shift",v)}n("position",d)}n("automargin",x);var k=!1;if(o.length&&(k=tI.coerce(t,r,{overlaying:{valType:"enumerated",values:[!1].concat(o),dflt:!1}},"overlaying")),!k){var A=n("domain",f);A[0]>A[1]-1/4096&&(r.domain=f),tI.noneOrAll(t.domain,r.domain,f),r.tickmode==="sync"&&(r.tickmode="auto")}return n("layer"),r}});var Gve=ye((Vnr,Hve)=>{"use strict";var jb=Mr(),Fve=va(),Lvt=rp().isUnifiedHover,Pvt=OB(),qve=Vs(),Ivt=s3(),Ove=Cd(),Rvt=yU(),Bve=JM(),Dvt=Bb(),Nve=rI(),bU=af(),Cm=bU.id2name,Uve=bU.name2id,zvt=ad().AX_ID_PATTERN,Vve=ba(),iI=Vve.traceIs,xU=Vve.getComponentMethod;function nI(e,t,r){Array.isArray(e[t])?e[t].push(r):e[t]=[r]}Hve.exports=function(t,r,n){var i=r.autotypenumbers,a={},o={},s={},l={},u={},c={},f={},h={},d={},v={},x,b;for(x=0;x{"use strict";var Fvt=xa(),jve=ba(),aI=Mr(),Qp=ao(),oI=Qa();Wve.exports=function(t,r,n,i){var a=t._fullLayout;if(r.length===0){oI.redrawComponents(t);return}function o(b){var g=b.xaxis,E=b.yaxis;a._defs.select("#"+b.clipId+"> rect").call(Qp.setTranslate,0,0).call(Qp.setScale,1,1),b.plot.call(Qp.setTranslate,g._offset,E._offset).call(Qp.setScale,1,1);var k=b.plot.selectAll(".scatterlayer .trace");k.selectAll(".point").call(Qp.setPointGroupScale,1,1),k.selectAll(".textpoint").call(Qp.setTextPointsScale,1,1),k.call(Qp.hideOutsideRangePoints,b)}function s(b,g){var E=b.plotinfo,k=E.xaxis,A=E.yaxis,L=k._length,_=A._length,C=!!b.xr1,M=!!b.yr1,p=[];if(C){var P=aI.simpleMap(b.xr0,k.r2l),T=aI.simpleMap(b.xr1,k.r2l),F=P[1]-P[0],q=T[1]-T[0];p[0]=(P[0]*(1-g)+g*T[0]-P[0])/(P[1]-P[0])*L,p[2]=L*(1-g+g*q/F),k.range[0]=k.l2r(P[0]*(1-g)+g*T[0]),k.range[1]=k.l2r(P[1]*(1-g)+g*T[1])}else p[0]=0,p[2]=L;if(M){var V=aI.simpleMap(b.yr0,A.r2l),H=aI.simpleMap(b.yr1,A.r2l),X=V[1]-V[0],G=H[1]-H[0];p[1]=(V[1]*(1-g)+g*H[1]-V[1])/(V[0]-V[1])*_,p[3]=_*(1-g+g*G/X),A.range[0]=k.l2r(V[0]*(1-g)+g*H[0]),A.range[1]=A.l2r(V[1]*(1-g)+g*H[1])}else p[1]=0,p[3]=_;oI.drawOne(t,k,{skipTitle:!0}),oI.drawOne(t,A,{skipTitle:!0}),oI.redrawComponents(t,[k._id,A._id]);var N=C?L/p[2]:1,W=M?_/p[3]:1,re=C?p[0]:0,ae=M?p[1]:0,_e=C?p[0]/p[2]*L:0,Me=M?p[1]/p[3]*_:0,ke=k._offset-_e,ge=A._offset-Me;E.clipRect.call(Qp.setTranslate,re,ae).call(Qp.setScale,1/N,1/W),E.plot.call(Qp.setTranslate,ke,ge).call(Qp.setScale,N,W),Qp.setPointGroupScale(E.zoomScalePts,1/N,1/W),Qp.setTextPointsScale(E.zoomScaleTxt,1/N,1/W)}var l;i&&(l=i());function u(){for(var b={},g=0;gn.duration?(u(),d=window.cancelAnimationFrame(x)):d=window.requestAnimationFrame(x)}return f=Date.now(),d=window.requestAnimationFrame(x),Promise.resolve()}});var Jf=ye(yv=>{"use strict";var lI=xa(),Xve=ba(),Wb=Mr(),qvt=Xu(),Ovt=ao(),Yve=kd().getModuleCalcData,g_=af(),zg=ad(),Bvt=Zp(),Fl=Wb.ensureSingle;function sI(e,t,r){return Wb.ensureSingle(e,t,r,function(n){n.datum(r)})}var Zb=zg.zindexSeparator;yv.name="cartesian";yv.attr=["xaxis","yaxis"];yv.idRoot=["x","y"];yv.idRegex=zg.idRegex;yv.attrRegex=zg.attrRegex;yv.attributes=wve();yv.layoutAttributes=Cd();yv.supplyLayoutDefaults=Gve();yv.transitionAxes=Zve();yv.finalizeSubplots=function(e,t){var r=t._subplots,n=r.xaxis,i=r.yaxis,a=r.cartesian,o=a,s={},l={},u,c,f;for(u=0;u0){var d=h.id;if(d.indexOf(Zb)!==-1)continue;d+=Zb+(u+1),h=Wb.extendFlat({},h,{id:d,plot:i._cartesianlayer.selectAll(".subplot").select("."+d)})}for(var v=[],x,b=0;b1&&(L+=Zb+A),k.push(s+L),o=0;o1,f=t.mainplotinfo;if(!t.mainplot||c)if(u)t.xlines=Fl(n,"path","xlines-above"),t.ylines=Fl(n,"path","ylines-above"),t.xaxislayer=Fl(n,"g","xaxislayer-above"),t.yaxislayer=Fl(n,"g","yaxislayer-above");else{if(!o){var h=Fl(n,"g","layer-subplot");t.shapelayer=Fl(h,"g","shapelayer"),t.imagelayer=Fl(h,"g","imagelayer"),f&&c?(t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer):(t.minorGridlayer=Fl(n,"g","minor-gridlayer"),t.gridlayer=Fl(n,"g","gridlayer"),t.zerolinelayer=Fl(n,"g","zerolinelayer"));var d=Fl(n,"g","layer-between");t.shapelayerBetween=Fl(d,"g","shapelayer"),t.imagelayerBetween=Fl(d,"g","imagelayer"),Fl(n,"path","xlines-below"),Fl(n,"path","ylines-below"),t.overlinesBelow=Fl(n,"g","overlines-below"),Fl(n,"g","xaxislayer-below"),Fl(n,"g","yaxislayer-below"),t.overaxesBelow=Fl(n,"g","overaxes-below")}t.overplot=Fl(n,"g","overplot"),t.plot=Fl(t.overplot,"g",i),o||(t.xlines=Fl(n,"path","xlines-above"),t.ylines=Fl(n,"path","ylines-above"),t.overlinesAbove=Fl(n,"g","overlines-above"),Fl(n,"g","xaxislayer-above"),Fl(n,"g","yaxislayer-above"),t.overaxesAbove=Fl(n,"g","overaxes-above"),t.xlines=n.select(".xlines-"+s),t.ylines=n.select(".ylines-"+l),t.xaxislayer=n.select(".xaxislayer-"+s),t.yaxislayer=n.select(".yaxislayer-"+l))}else{var v=f.plotgroup,x=i+"-x",b=i+"-y";t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer,Fl(f.overlinesBelow,"path",x),Fl(f.overlinesBelow,"path",b),Fl(f.overaxesBelow,"g",x),Fl(f.overaxesBelow,"g",b),t.plot=Fl(f.overplot,"g",i),Fl(f.overlinesAbove,"path",x),Fl(f.overlinesAbove,"path",b),Fl(f.overaxesAbove,"g",x),Fl(f.overaxesAbove,"g",b),t.xlines=v.select(".overlines-"+s).select("."+x),t.ylines=v.select(".overlines-"+l).select("."+b),t.xaxislayer=v.select(".overaxes-"+s).select("."+x),t.yaxislayer=v.select(".overaxes-"+l).select("."+b)}o||(u||(sI(t.minorGridlayer,"g",t.xaxis._id),sI(t.minorGridlayer,"g",t.yaxis._id),t.minorGridlayer.selectAll("g").map(function(g){return g[0]}).sort(g_.idSort),sI(t.gridlayer,"g",t.xaxis._id),sI(t.gridlayer,"g",t.yaxis._id),t.gridlayer.selectAll("g").map(function(g){return g[0]}).sort(g_.idSort)),t.xlines.style("fill","none").classed("crisp",!0),t.ylines.style("fill","none").classed("crisp",!0))}function $ve(e,t){if(e){var r={};e.each(function(l){var u=l[0],c=lI.select(this);c.remove(),Qve(u,t),r[u]=!0});for(var n in t._plots)for(var i=t._plots[n],a=i.overlays||[],o=0;o{"use strict";var uI=lu();epe.exports={hasLines:uI.hasLines,hasMarkers:uI.hasMarkers,hasText:uI.hasText,isBubble:uI.isBubble,attributes:Uc(),layoutAttributes:U6(),supplyDefaults:Ede(),crossTraceDefaults:$N(),supplyLayoutDefaults:Pde(),calc:q0().calc,crossTraceCalc:tve(),arraysToCalcdata:km(),plot:iT(),colorbar:Kd(),formatLabels:JP(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:sT(),selectPoints:lT(),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:Jf(),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}});var npe=ye((Wnr,ipe)=>{"use strict";var Uvt=xa(),Vvt=va(),rpe=MN(),wU=Mr(),Hvt=wU.strScale,Gvt=wU.strRotate,jvt=wU.strTranslate;ipe.exports=function(t,r,n){var i=t.node(),a=rpe[n.arrowhead||0],o=rpe[n.startarrowhead||0],s=(n.arrowwidth||1)*(n.arrowsize||1),l=(n.arrowwidth||1)*(n.startarrowsize||1),u=r.indexOf("start")>=0,c=r.indexOf("end")>=0,f=a.backoff*s+n.standoff,h=o.backoff*l+n.startstandoff,d,v,x,b;if(i.nodeName==="line"){d={x:+t.attr("x1"),y:+t.attr("y1")},v={x:+t.attr("x2"),y:+t.attr("y2")};var g=d.x-v.x,E=d.y-v.y;if(x=Math.atan2(E,g),b=x+Math.PI,f&&h&&f+h>Math.sqrt(g*g+E*E)){V();return}if(f){if(f*f>g*g+E*E){V();return}var k=f*Math.cos(x),A=f*Math.sin(x);v.x+=k,v.y+=A,t.attr({x2:v.x,y2:v.y})}if(h){if(h*h>g*g+E*E){V();return}var L=h*Math.cos(x),_=h*Math.sin(x);d.x-=L,d.y-=_,t.attr({x1:d.x,y1:d.y})}}else if(i.nodeName==="path"){var C=i.getTotalLength(),M="";if(C{"use strict";var ape=xa(),TU=ba(),Wvt=Xu(),y_=Mr(),AU=y_.strTranslate,QM=Qa(),Xb=va(),Py=ao(),ope=Nc(),SU=Ll(),MU=Tg(),$M=gv(),Zvt=Vs().arrayEditor,Xvt=npe();upe.exports={draw:Yvt,drawOne:spe,drawRaw:lpe};function Yvt(e){var t=e._fullLayout;t._infolayer.selectAll(".annotation").remove();for(var r=0;r2/3?Xe="right":Xe="center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[Xe]}for(var Ce=!1,me=["x","y"],Re=0;Re1)&&(nt===Ge?(St=ct.r2fraction(t["a"+ce]),(St<0||St>1)&&(Ce=!0)):Ce=!0),xr=ct._offset+ct.r2p(t[ce]),xt=.5}else{var Et=Lt==="domain";ce==="x"?(Ke=t[ce],xr=Et?ct._offset+ct._length*Ke:xr=s.l+s.w*Ke):(Ke=1-t[ce],xr=Et?ct._offset+ct._length*Ke:xr=s.t+s.h*Ke),xt=t.showarrow?.5:Ke}if(t.showarrow){Yt.head=xr;var dt=t["a"+ce];if(bt=rt*ze(.5,t.xanchor)-ot*ze(.5,t.yanchor),nt===Ge){var Ht=QM.getRefType(nt);Ht==="domain"?(ce==="y"&&(dt=1-dt),Yt.tail=ct._offset+ct._length*dt):Ht==="paper"?ce==="y"?(dt=1-dt,Yt.tail=s.t+s.h*dt):Yt.tail=s.l+s.w*dt:Yt.tail=ct._offset+ct.r2p(dt),er=bt}else Yt.tail=xr+dt,er=bt+dt;Yt.text=Yt.tail+bt;var $t=o[ce==="x"?"width":"height"];if(Ge==="paper"&&(Yt.head=y_.constrain(Yt.head,1,$t-1)),nt==="pixel"){var fr=-Math.max(Yt.tail-3,Yt.text),_r=Math.min(Yt.tail+3,Yt.text)-$t;fr>0?(Yt.tail+=fr,Yt.text+=fr):_r>0&&(Yt.tail-=_r,Yt.text-=_r)}Yt.tail+=Ct,Yt.head+=Ct}else bt=Rt*ze(xt,kt),er=bt,Yt.text=xr+bt;Yt.text+=Ct,bt+=Ct,er+=Ct,t["_"+ce+"padplus"]=Rt/2+er,t["_"+ce+"padminus"]=Rt/2-er,t["_"+ce+"size"]=Rt,t["_"+ce+"shift"]=bt}if(Ce){C.remove();return}var Br=0,Or=0;if(t.align!=="left"&&(Br=(ie-ke)*(t.align==="center"?.5:1)),t.valign!=="top"&&(Or=(Te-ge)*(t.valign==="middle"?.5:1)),_e)ae.select("svg").attr({x:P+Br-1,y:P+Or}).call(Py.setClipUrl,F?x:null,e);else{var Nr=P+Or-Me.top,ut=P+Br-Me.left;X.call(SU.positionText,ut,Nr).call(Py.setClipUrl,F?x:null,e)}q.select("rect").call(Py.setRect,P,P,ie,Te),T.call(Py.setRect,M/2,M/2,Ee-M,Ae-M),C.call(Py.setTranslate,Math.round(b.x.text-Ee/2),Math.round(b.y.text-Ae/2)),k.attr({transform:"rotate("+g+","+b.x.text+","+b.y.text+")"});var Ne=function(Ve,Xe){E.selectAll(".annotation-arrow-g").remove();var ht=b.x.head,Le=b.y.head,xe=b.x.tail+Ve,Se=b.y.tail+Xe,lt=b.x.text+Ve,Gt=b.y.text+Xe,Vt=y_.rotationXYMatrix(g,lt,Gt),ar=y_.apply2DTransform(Vt),Qr=y_.apply2DTransform2(Vt),ai=+T.attr("width"),jr=+T.attr("height"),ri=lt-.5*ai,bi=ri+ai,nn=Gt-.5*jr,Wi=nn+jr,Ni=[[ri,nn,ri,Wi],[ri,Wi,bi,Wi],[bi,Wi,bi,nn],[bi,nn,ri,nn]].map(Qr);if(!Ni.reduce(function(Vr,gi){return Vr^!!y_.segmentsIntersect(ht,Le,ht+1e6,Le+1e6,gi[0],gi[1],gi[2],gi[3])},!1)){Ni.forEach(function(Vr){var gi=y_.segmentsIntersect(xe,Se,ht,Le,Vr[0],Vr[1],Vr[2],Vr[3]);gi&&(xe=gi.x,Se=gi.y)});var _n=t.arrowwidth,$i=t.arrowcolor,zn=t.arrowside,Wn=E.append("g").style({opacity:Xb.opacity($i)}).classed("annotation-arrow-g",!0),It=Wn.append("path").attr("d","M"+xe+","+Se+"L"+ht+","+Le).style("stroke-width",_n+"px").call(Xb.stroke,Xb.rgb($i));if(Xvt(It,zn,t),l.annotationPosition&&It.node().parentNode&&!n){var ft=ht,jt=Le;if(t.standoff){var Zt=Math.sqrt(Math.pow(ht-xe,2)+Math.pow(Le-Se,2));ft+=t.standoff*(xe-ht)/Zt,jt+=t.standoff*(Se-Le)/Zt}var yr=Wn.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(xe-ft)+","+(Se-jt),transform:AU(ft,jt)}).style("stroke-width",_n+6+"px").call(Xb.stroke,"rgba(0,0,0,0)").call(Xb.fill,"rgba(0,0,0,0)"),Fr,Zr;$M.init({element:yr.node(),gd:e,prepFn:function(){var Vr=Py.getTranslate(C);Fr=Vr.x,Zr=Vr.y,i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0)},moveFn:function(Vr,gi){var Si=ar(Fr,Zr),Mi=Si[0]+Vr,Pi=Si[1]+gi;C.call(Py.setTranslate,Mi,Pi),d("x",m_(i,Vr,"x",s,t)),d("y",m_(a,gi,"y",s,t)),t.axref===t.xref&&d("ax",m_(i,Vr,"ax",s,t)),t.ayref===t.yref&&d("ay",m_(a,gi,"ay",s,t)),Wn.attr("transform",AU(Vr,gi)),k.attr({transform:"rotate("+g+","+Mi+","+Pi+")"})},doneFn:function(){TU.call("_guiRelayout",e,v());var Vr=document.querySelector(".js-notes-box-panel");Vr&&Vr.redraw(Vr.selectedObj)}})}}};if(t.showarrow&&Ne(0,0),A){var Ye;$M.init({element:C.node(),gd:e,prepFn:function(){Ye=k.attr("transform")},moveFn:function(Ve,Xe){var ht="pointer";if(t.showarrow)t.axref===t.xref?d("ax",m_(i,Ve,"ax",s,t)):d("ax",t.ax+Ve),t.ayref===t.yref?d("ay",m_(a,Xe,"ay",s.w,t)):d("ay",t.ay+Xe),Ne(Ve,Xe);else{if(n)return;var Le,xe;if(i)Le=m_(i,Ve,"x",s,t);else{var Se=t._xsize/s.w,lt=t.x+(t._xshift-t.xshift)/s.w-Se/2;Le=$M.align(lt+Ve/s.w,Se,0,1,t.xanchor)}if(a)xe=m_(a,Xe,"y",s,t);else{var Gt=t._ysize/s.h,Vt=t.y-(t._yshift+t.yshift)/s.h-Gt/2;xe=$M.align(Vt-Xe/s.h,Gt,0,1,t.yanchor)}d("x",Le),d("y",xe),(!i||!a)&&(ht=$M.getCursor(i?.5:Le,a?.5:xe,t.xanchor,t.yanchor))}k.attr({transform:AU(Ve,Xe)+Ye}),MU(C,ht)},clickFn:function(Ve,Xe){t.captureevents&&e.emit("plotly_clickannotation",_(Xe))},doneFn:function(){MU(C),TU.call("_guiRelayout",e,v());var Ve=document.querySelector(".js-notes-box-panel");Ve&&Ve.redraw(Ve.selectedObj)}})}}l.annotationText?X.call(SU.makeEditable,{delegate:C,gd:e}).call(G).on("edit",function(W){t.text=W,this.call(G),d("text",W),i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0),TU.call("_guiRelayout",e,v())}):X.call(G)}});var ppe=ye((Xnr,vpe)=>{"use strict";var cpe=Mr(),Kvt=ba(),fpe=Vs().arrayEditor;vpe.exports={hasClickToShow:Jvt,onClick:$vt};function Jvt(e,t){var r=dpe(e,t);return r.on.length>0||r.explicitOff.length>0}function $vt(e,t){var r=dpe(e,t),n=r.on,i=r.off.concat(r.explicitOff),a={},o=e._fullLayout.annotations,s,l;if(n.length||i.length){for(s=0;s{"use strict";var EU=Mr(),uT=va();gpe.exports=function(t,r,n,i){i("opacity");var a=i("bgcolor"),o=i("bordercolor"),s=uT.opacity(o);i("borderpad");var l=i("borderwidth"),u=i("showarrow");i("text",u?" ":n._dfltTitle.annotation),i("textangle"),EU.coerceFont(i,"font",n.font),i("width"),i("align");var c=i("height");if(c&&i("valign"),u){var f=i("arrowside"),h,d;f.indexOf("end")!==-1&&(h=i("arrowhead"),d=i("arrowsize")),f.indexOf("start")!==-1&&(i("startarrowhead",h),i("startarrowsize",d)),i("arrowcolor",s?r.bordercolor:uT.defaultLine),i("arrowwidth",(s&&l||1)*2),i("standoff"),i("startstandoff")}var v=i("hovertext"),x=n.hoverlabel||{};if(v){var b=i("hoverlabel.bgcolor",x.bgcolor||(uT.opacity(a)?uT.rgb(a):uT.defaultLine)),g=i("hoverlabel.bordercolor",x.bordercolor||uT.contrast(b)),E=EU.extendFlat({},x.font);E.color||(E.color=g),EU.coerceFont(i,"hoverlabel.font",E)}i("captureevents",!!v)}});var ype=ye((Knr,mpe)=>{"use strict";var CU=Mr(),Yb=Qa(),Qvt=Zd(),ept=kU(),tpt=Nb();mpe.exports=function(t,r){Qvt(t,r,{name:"annotations",handleItemDefaults:rpt})};function rpt(e,t,r){function n(k,A){return CU.coerce(e,t,tpt,k,A)}var i=n("visible"),a=n("clicktoshow");if(i||a){ept(e,t,r,n);for(var o=t.showarrow,s=["x","y"],l=[-10,-30],u={_fullLayout:r},c=0;c<2;c++){var f=s[c],h=Yb.coerceRef(e,t,u,f,"","paper");if(h!=="paper"){var d=Yb.getFromId(u,h);d._annIndices.push(t._index)}if(Yb.coercePosition(t,u,n,h,f,.5),o){var v="a"+f,x=Yb.coerceRef(e,t,u,v,"pixel",["pixel","paper"]);x!=="pixel"&&x!==h&&(x=t[v]="pixel");var b=x==="pixel"?l[c]:.4;Yb.coercePosition(t,u,n,x,v,b)}n(f+"anchor"),n(f+"shift")}if(CU.noneOrAll(e,t,["x","y"]),o&&CU.noneOrAll(e,t,["ax","ay"]),a){var g=n("xclick"),E=n("yclick");t._xclick=g===void 0?t.x:Yb.cleanPosition(g,u,t.xref),t._yclick=E===void 0?t.y:Yb.cleanPosition(E,u,t.yref)}}}});var bpe=ye((Jnr,xpe)=>{"use strict";var LU=Mr(),Kb=Qa(),ipt=cI().draw;xpe.exports=function(t){var r=t._fullLayout,n=LU.filterVisible(r.annotations);if(n.length&&t._fullData.length)return LU.syncOrAsync([ipt,npt],t)};function npt(e){var t=e._fullLayout;LU.filterVisible(t.annotations).forEach(function(r){var n=Kb.getFromId(e,r.xref),i=Kb.getFromId(e,r.yref),a=Kb.getRefType(r.xref),o=Kb.getRefType(r.yref);r._extremes={},a==="range"&&_pe(r,n),o==="range"&&_pe(r,i)})}function _pe(e,t){var r=t._id,n=r.charAt(0),i=e[n],a=e["a"+n],o=e[n+"ref"],s=e["a"+n+"ref"],l=e["_"+n+"padplus"],u=e["_"+n+"padminus"],c={x:1,y:-1}[n]*e[n+"shift"],f=3*e.arrowsize*e.arrowwidth||0,h=f+c,d=f-c,v=3*e.startarrowsize*e.arrowwidth||0,x=v+c,b=v-c,g;if(s===o){var E=Kb.findExtremes(t,[t.r2c(i)],{ppadplus:h,ppadminus:d}),k=Kb.findExtremes(t,[t.r2c(a)],{ppadplus:Math.max(l,x),ppadminus:Math.max(u,b)});g={min:[E.min[0],k.min[0]],max:[E.max[0],k.max[0]]}}else x=a?x+a:x,b=a?b-a:b,g=Kb.findExtremes(t,[t.r2c(i)],{ppadplus:Math.max(l,h,x),ppadminus:Math.max(u,d,b)});e._extremes[r]=g}});var Tpe=ye(($nr,wpe)=>{"use strict";var apt=uo(),opt=l6();wpe.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(!(a||o))return;var s=t._fullLayout.annotations,l=r._id.charAt(0),u,c;function f(d){var v=u[d],x=null;a?x=opt(v,r.range):x=Math.pow(10,v),apt(x)||(x=null),i(c+d,x)}for(var h=0;h{"use strict";var PU=cI(),Ape=ppe();Spe.exports={moduleType:"component",name:"annotations",layoutAttributes:Nb(),supplyLayoutDefaults:ype(),includeBasePlot:IM()("annotations"),calcAutorange:bpe(),draw:PU.draw,drawOne:PU.drawOne,drawRaw:PU.drawRaw,hasClickToShow:Ape.hasClickToShow,onClick:Ape.onClick,convertCoords:Tpe()}});var fI=ye((ear,Epe)=>{"use strict";var Ku=Nb(),spt=Bu().overrideAll,lpt=Vs().templatedArray;Epe.exports=spt(lpt("annotation",{visible:Ku.visible,x:{valType:"any"},y:{valType:"any"},z:{valType:"any"},ax:{valType:"number"},ay:{valType:"number"},xanchor:Ku.xanchor,xshift:Ku.xshift,yanchor:Ku.yanchor,yshift:Ku.yshift,text:Ku.text,textangle:Ku.textangle,font:Ku.font,width:Ku.width,height:Ku.height,opacity:Ku.opacity,align:Ku.align,valign:Ku.valign,bgcolor:Ku.bgcolor,bordercolor:Ku.bordercolor,borderpad:Ku.borderpad,borderwidth:Ku.borderwidth,showarrow:Ku.showarrow,arrowcolor:Ku.arrowcolor,arrowhead:Ku.arrowhead,startarrowhead:Ku.startarrowhead,arrowside:Ku.arrowside,arrowsize:Ku.arrowsize,startarrowsize:Ku.startarrowsize,arrowwidth:Ku.arrowwidth,standoff:Ku.standoff,startstandoff:Ku.startstandoff,hovertext:Ku.hovertext,hoverlabel:Ku.hoverlabel,captureevents:Ku.captureevents}),"calc","from-root")});var Cpe=ye((tar,kpe)=>{"use strict";var IU=Mr(),upt=Qa(),cpt=Zd(),fpt=kU(),hpt=fI();kpe.exports=function(t,r,n){cpt(t,r,{name:"annotations",handleItemDefaults:dpt,fullLayout:n.fullLayout})};function dpt(e,t,r,n){function i(s,l){return IU.coerce(e,t,hpt,s,l)}function a(s){var l=s+"axis",u={_fullLayout:{}};return u._fullLayout[l]=r[l],upt.coercePosition(t,u,i,s,s,.5)}var o=i("visible");o&&(fpt(e,t,n.fullLayout,i),a("x"),a("y"),a("z"),IU.noneOrAll(e,t,["x","y","z"]),t.xref="x",t.yref="y",t.zref="z",i("xanchor"),i("yanchor"),i("xshift"),i("yshift"),t.showarrow&&(t.axref="pixel",t.ayref="pixel",i("ax",-10),i("ay",-30),IU.noneOrAll(e,t,["ax","ay"])))}});var Rpe=ye((rar,Ipe)=>{"use strict";var Lpe=Mr(),Ppe=Qa();Ipe.exports=function(t){for(var r=t.fullSceneLayout,n=r.annotations,i=0;i{"use strict";function RU(e,t){var r=[0,0,0,0],n,i;for(n=0;n<4;++n)for(i=0;i<4;++i)r[i]+=e[4*n+i]*t[n];return r}function ppt(e,t){var r=RU(e.projection,RU(e.view,RU(e.model,[t[0],t[1],t[2],1])));return r}Dpe.exports=ppt});var Fpe=ye((nar,zpe)=>{"use strict";var gpt=cI().drawRaw,mpt=DU(),ypt=["x","y","z"];zpe.exports=function(t){for(var r=t.fullSceneLayout,n=t.dataScale,i=r.annotations,a=0;a1){s=!0;break}}s?t.fullLayout._infolayer.select(".annotation-"+t.id+'[data-index="'+a+'"]').remove():(o._pdata=mpt(t.glplot.cameraParams,[r.xaxis.r2l(o.x)*n[0],r.yaxis.r2l(o.y)*n[1],r.zaxis.r2l(o.z)*n[2]]),gpt(t.graphDiv,o,a,t.id,o._xa,o._ya))}}});var Bpe=ye((aar,Ope)=>{"use strict";var _pt=ba(),qpe=Mr();Ope.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:fI()}}},layoutAttributes:fI(),handleDefaults:Cpe(),includeBasePlot:xpt,convert:Rpe(),draw:Fpe()};function xpt(e,t){var r=_pt.subplotsRegistry.gl3d;if(r)for(var n=r.attrRegex,i=Object.keys(e),a=0;a{"use strict";var Npe=Nb(),Upe=Su(),Vpe=Uc().line,bpt=Ed().dash,Fg=no().extendFlat,wpt=Vs().templatedArray,oar=PM(),cT=vl(),Tpt=Wo().shapeTexttemplateAttrs,Apt=x6();Hpe.exports=wpt("shape",{visible:Fg({},cT.visible,{editType:"calc+arraydraw"}),showlegend:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},legend:Fg({},cT.legend,{editType:"calc+arraydraw"}),legendgroup:Fg({},cT.legendgroup,{editType:"calc+arraydraw"}),legendgrouptitle:{text:Fg({},cT.legendgrouptitle.text,{editType:"calc+arraydraw"}),font:Upe({editType:"calc+arraydraw"}),editType:"calc+arraydraw"},legendrank:Fg({},cT.legendrank,{editType:"calc+arraydraw"}),legendwidth:Fg({},cT.legendwidth,{editType:"calc+arraydraw"}),type:{valType:"enumerated",values:["circle","rect","path","line"],editType:"calc+arraydraw"},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above",editType:"arraydraw"},xref:Fg({},Npe.xref,{}),xsizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},xanchor:{valType:"any",editType:"calc+arraydraw"},x0:{valType:"any",editType:"calc+arraydraw"},x1:{valType:"any",editType:"calc+arraydraw"},x0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},x1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},yref:Fg({},Npe.yref,{}),ysizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},yanchor:{valType:"any",editType:"calc+arraydraw"},y0:{valType:"any",editType:"calc+arraydraw"},y1:{valType:"any",editType:"calc+arraydraw"},y0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},y1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},path:{valType:"string",editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},line:{color:Fg({},Vpe.color,{editType:"arraydraw"}),width:Fg({},Vpe.width,{editType:"calc+arraydraw"}),dash:Fg({},bpt,{editType:"arraydraw"}),editType:"calc+arraydraw"},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd",editType:"arraydraw"},editable:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},label:{text:{valType:"string",dflt:"",editType:"arraydraw"},texttemplate:Tpt({},{keys:Object.keys(Apt)}),font:Upe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"],editType:"arraydraw"},textangle:{valType:"angle",dflt:"auto",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],editType:"calc+arraydraw"},padding:{valType:"number",dflt:3,min:0,editType:"arraydraw"},editType:"arraydraw"},editType:"arraydraw"})});var Wpe=ye((lar,jpe)=>{"use strict";var e4=Mr(),fT=Qa(),Spt=Zd(),Mpt=zU(),Gpe=f_();jpe.exports=function(t,r){Spt(t,r,{name:"shapes",handleItemDefaults:kpt})};function Ept(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}function kpt(e,t,r){function n(W,re){return e4.coerce(e,t,Mpt,W,re)}t._isShape=!0;var i=n("visible");if(i){var a=n("showlegend");a&&(n("legend"),n("legendwidth"),n("legendgroup"),n("legendgrouptitle.text"),e4.coerceFont(n,"legendgrouptitle.font"),n("legendrank"));var o=n("path"),s=o?"path":"rect",l=n("type",s),u=l!=="path";u&&delete t.path,n("editable"),n("layer"),n("opacity"),n("fillcolor"),n("fillrule");var c=n("line.width");c&&(n("line.color"),n("line.dash"));for(var f=n("xsizemode"),h=n("ysizemode"),d=["x","y"],v=0;v<2;v++){var x=d[v],b=x+"anchor",g=x==="x"?f:h,E={_fullLayout:r},k,A,L,_=fT.coerceRef(e,t,E,x,void 0,"paper"),C=fT.getRefType(_);if(C==="range"?(k=fT.getFromId(E,_),k._shapeIndices.push(t._index),L=Gpe.rangeToShapePosition(k),A=Gpe.shapePositionToRange(k),(k.type==="category"||k.type==="multicategory")&&(n(x+"0shift"),n(x+"1shift"))):A=L=e4.identity,u){var M=.25,p=.75,P=x+"0",T=x+"1",F=e[P],q=e[T];e[P]=A(e[P],!0),e[T]=A(e[T],!0),g==="pixel"?(n(P,0),n(T,10)):(fT.coercePosition(t,E,n,_,P,M),fT.coercePosition(t,E,n,_,T,p)),t[P]=L(t[P]),t[T]=L(t[T]),e[P]=F,e[T]=q}if(g==="pixel"){var V=e[b];e[b]=A(e[b],!0),fT.coercePosition(t,E,n,_,b,.25),t[b]=L(t[b]),e[b]=V}}u&&e4.noneOrAll(e,t,["x0","x1","y0","y1"]);var H=l==="line",X,G;if(u&&(X=n("label.texttemplate")),X||(G=n("label.text")),G||X){n("label.textangle");var N=n("label.textposition",H?"middle":"middle center");n("label.xanchor"),n("label.yanchor",Ept(H,N)),n("label.padding"),e4.coerceFont(n,"label.font",r.font)}}}});var Ype=ye((uar,Xpe)=>{"use strict";var Cpt=va(),Zpe=Mr();function Lpt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}Xpe.exports=function(t,r,n){n("newshape.visible"),n("newshape.name"),n("newshape.showlegend"),n("newshape.legend"),n("newshape.legendwidth"),n("newshape.legendgroup"),n("newshape.legendgrouptitle.text"),Zpe.coerceFont(n,"newshape.legendgrouptitle.font"),n("newshape.legendrank"),n("newshape.drawdirection"),n("newshape.layer"),n("newshape.fillcolor"),n("newshape.fillrule"),n("newshape.opacity");var i=n("newshape.line.width");if(i){var a=(t||{}).plot_bgcolor||"#FFF";n("newshape.line.color",Cpt.contrast(a)),n("newshape.line.dash")}var o=t.dragmode==="drawline",s=n("newshape.label.text"),l=n("newshape.label.texttemplate");if(s||l){n("newshape.label.textangle");var u=n("newshape.label.textposition",o?"middle":"middle center");n("newshape.label.xanchor"),n("newshape.label.yanchor",Lpt(o,u)),n("newshape.label.padding"),Zpe.coerceFont(n,"newshape.label.font",r.font)}n("activeshape.fillcolor"),n("activeshape.opacity")}});var e0e=ye((car,Qpe)=>{"use strict";var FU=Mr(),hT=Qa(),dT=cM(),Jpe=f_();Qpe.exports=function(t){var r=t._fullLayout,n=FU.filterVisible(r.shapes);if(!(!n.length||!t._fullData.length))for(var i=0;i0?u+o:o;return{ppad:o,ppadplus:s?f:h,ppadminus:s?h:f}}else return{ppad:o}}function Kpe(e,t,r){var n=e._id.charAt(0)==="x"?"x":"y",i=e.type==="category"||e.type==="multicategory",a,o,s=0,l=0,u=i?e.r2c:e.d2c,c=t[n+"sizemode"]==="scaled";if(c?(a=t[n+"0"],o=t[n+"1"],i&&(s=t[n+"0shift"],l=t[n+"1shift"])):(a=t[n+"anchor"],o=t[n+"anchor"]),a!==void 0)return[u(a)+s,u(o)+l];if(t.path){var f=1/0,h=-1/0,d=t.path.match(dT.segmentRE),v,x,b,g,E;for(e.type==="date"&&(u=Jpe.decodeDate(u)),v=0;vh&&(h=E)));if(h>=f)return[f,h]}}});var i0e=ye((far,r0e)=>{"use strict";var t0e=tP();r0e.exports={moduleType:"component",name:"shapes",layoutAttributes:zU(),supplyLayoutDefaults:Wpe(),supplyDrawNewShapeDefaults:Ype(),includeBasePlot:IM()("shapes"),calcAutorange:e0e(),draw:t0e.draw,drawOne:t0e.drawOne}});var qU=ye((dar,a0e)=>{"use strict";var n0e=ad(),Rpt=Vs().templatedArray,har=PM();a0e.exports=Rpt("image",{visible:{valType:"boolean",dflt:!0,editType:"arraydraw"},source:{valType:"string",editType:"arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},sizex:{valType:"number",dflt:0,editType:"arraydraw"},sizey:{valType:"number",dflt:0,editType:"arraydraw"},sizing:{valType:"enumerated",values:["fill","contain","stretch"],dflt:"contain",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},x:{valType:"any",dflt:0,editType:"arraydraw"},y:{valType:"any",dflt:0,editType:"arraydraw"},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left",editType:"arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],dflt:"top",editType:"arraydraw"},xref:{valType:"enumerated",values:["paper",n0e.idRegex.x.toString()],dflt:"paper",editType:"arraydraw"},yref:{valType:"enumerated",values:["paper",n0e.idRegex.y.toString()],dflt:"paper",editType:"arraydraw"},editType:"arraydraw"})});var s0e=ye((par,o0e)=>{"use strict";var Dpt=Mr(),OU=Qa(),zpt=Zd(),Fpt=qU(),qpt="images";o0e.exports=function(t,r){var n={name:qpt,handleItemDefaults:Opt};zpt(t,r,n)};function Opt(e,t,r){function n(h,d){return Dpt.coerce(e,t,Fpt,h,d)}var i=n("source"),a=n("visible",!!i);if(!a)return t;n("layer"),n("xanchor"),n("yanchor"),n("sizex"),n("sizey"),n("sizing"),n("opacity");for(var o={_fullLayout:r},s=["x","y"],l=0;l<2;l++){var u=s[l],c=OU.coerceRef(e,t,o,u,"paper",void 0);if(c!=="paper"){var f=OU.getFromId(o,c);f._imgIndices.push(t._index)}OU.coercePosition(t,o,n,c,u,0)}return t}});var f0e=ye((gar,c0e)=>{"use strict";var l0e=xa(),Bpt=ao(),vT=Qa(),u0e=af(),Npt=Zp();c0e.exports=function(t){var r=t._fullLayout,n=[],i={},a=[],o,s;for(s=0;s{"use strict";var h0e=uo(),Upt=l6();d0e.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(a||o){for(var s=t._fullLayout.images,l=r._id.charAt(0),u,c,f=0;f{"use strict";p0e.exports={moduleType:"component",name:"images",layoutAttributes:qU(),supplyLayoutDefaults:s0e(),includeBasePlot:IM()("images"),draw:f0e(),convertCoords:v0e()}});var hI=ye((_ar,m0e)=>{"use strict";m0e.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"\u25C4",right:"\u25BA",up:"\u25B2",down:"\u25BC"}}});var BU=ye((xar,_0e)=>{"use strict";var Vpt=Su(),Hpt=dh(),Gpt=no().extendFlat,jpt=Bu().overrideAll,Wpt=b6(),y0e=Vs().templatedArray,Zpt=y0e("button",{visible:{valType:"boolean"},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},args2:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}});_0e.exports=jpt(y0e("updatemenu",{_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:Zpt,x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:Gpt(Wpt({editType:"arraydraw"}),{}),font:Vpt({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:Hpt.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}}),"arraydraw","from-root")});var T0e=ye((bar,w0e)=>{"use strict";var dI=Mr(),x0e=Zd(),b0e=BU(),Xpt=hI(),Ypt=Xpt.name,Kpt=b0e.buttons;w0e.exports=function(t,r){var n={name:Ypt,handleItemDefaults:Jpt};x0e(t,r,n)};function Jpt(e,t,r){function n(o,s){return dI.coerce(e,t,b0e,o,s)}var i=x0e(e,t,{name:"buttons",handleItemDefaults:$pt}),a=n("visible",i.length>0);a&&(n("active"),n("direction"),n("type"),n("showactive"),n("x"),n("y"),dI.noneOrAll(e,t,["x","y"]),n("xanchor"),n("yanchor"),n("pad.t"),n("pad.r"),n("pad.b"),n("pad.l"),dI.coerceFont(n,"font",r.font),n("bgcolor",r.paper_bgcolor),n("bordercolor"),n("borderwidth"))}function $pt(e,t){function r(i,a){return dI.coerce(e,t,Kpt,i,a)}var n=r("visible",e.method==="skip"||Array.isArray(e.args));n&&(r("method"),r("args"),r("args2"),r("label"),r("execute"))}});var M0e=ye((war,S0e)=>{"use strict";S0e.exports=of;var qg=xa(),A0e=va(),pT=ao(),vI=Mr();function of(e,t,r){this.gd=e,this.container=t,this.id=r,this.position=null,this.translateX=null,this.translateY=null,this.hbar=null,this.vbar=null,this.bg=this.container.selectAll("rect.scrollbox-bg").data([0]),this.bg.exit().on(".drag",null).on("wheel",null).remove(),this.bg.enter().append("rect").classed("scrollbox-bg",!0).style("pointer-events","all").attr({opacity:0,x:0,y:0,width:0,height:0})}of.barWidth=2;of.barLength=20;of.barRadius=2;of.barPad=1;of.barColor="#808BA4";of.prototype.enable=function(t,r,n){var i=this.gd._fullLayout,a=i.width,o=i.height;this.position=t;var s=this.position.l,l=this.position.w,u=this.position.t,c=this.position.h,f=this.position.direction,h=f==="down",d=f==="left",v=f==="right",x=f==="up",b=l,g=c,E,k,A,L;!h&&!d&&!v&&!x&&(this.position.direction="down",h=!0);var _=h||x;_?(E=s,k=E+b,h?(A=u,L=Math.min(A+g,o),g=L-A):(L=u+g,A=Math.max(L-g,0),g=L-A)):(A=u,L=A+g,d?(k=s+b,E=Math.max(k-b,0),b=k-E):(E=s,k=Math.min(E+b,a),b=k-E)),this._box={l:E,t:A,w:b,h:g};var C=l>b,M=of.barLength+2*of.barPad,p=of.barWidth+2*of.barPad,P=s,T=u+c;T+p>o&&(T=o-p);var F=this.container.selectAll("rect.scrollbar-horizontal").data(C?[0]:[]);F.exit().on(".drag",null).remove(),F.enter().append("rect").classed("scrollbar-horizontal",!0).call(A0e.fill,of.barColor),C?(this.hbar=F.attr({rx:of.barRadius,ry:of.barRadius,x:P,y:T,width:M,height:p}),this._hbarXMin=P+M/2,this._hbarTranslateMax=b-M):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var q=c>g,V=of.barWidth+2*of.barPad,H=of.barLength+2*of.barPad,X=s+l,G=u;X+V>a&&(X=a-V);var N=this.container.selectAll("rect.scrollbar-vertical").data(q?[0]:[]);N.exit().on(".drag",null).remove(),N.enter().append("rect").classed("scrollbar-vertical",!0).call(A0e.fill,of.barColor),q?(this.vbar=N.attr({rx:of.barRadius,ry:of.barRadius,x:X,y:G,width:V,height:H}),this._vbarYMin=G+H/2,this._vbarTranslateMax=g-H):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var W=this.id,re=E-.5,ae=q?k+V+.5:k+.5,_e=A-.5,Me=C?L+p+.5:L+.5,ke=i._topdefs.selectAll("#"+W).data(C||q?[0]:[]);if(ke.exit().remove(),ke.enter().append("clipPath").attr("id",W).append("rect"),C||q?(this._clipRect=ke.select("rect").attr({x:Math.floor(re),y:Math.floor(_e),width:Math.ceil(ae)-Math.floor(re),height:Math.ceil(Me)-Math.floor(_e)}),this.container.call(pT.setClipUrl,W,this.gd),this.bg.attr({x:s,y:u,width:l,height:c})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(pT.setClipUrl,null),delete this._clipRect),C||q){var ge=qg.behavior.drag().on("dragstart",function(){qg.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(ge);var ie=qg.behavior.drag().on("dragstart",function(){qg.event.sourceEvent.preventDefault(),qg.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));C&&this.hbar.on(".drag",null).call(ie),q&&this.vbar.on(".drag",null).call(ie)}this.setTranslate(r,n)};of.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(pT.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)};of.prototype._onBoxDrag=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t-=qg.event.dx),this.vbar&&(r-=qg.event.dy),this.setTranslate(t,r)};of.prototype._onBoxWheel=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t+=qg.event.deltaY),this.vbar&&(r+=qg.event.deltaY),this.setTranslate(t,r)};of.prototype._onBarDrag=function(){var t=this.translateX,r=this.translateY;if(this.hbar){var n=t+this._hbarXMin,i=n+this._hbarTranslateMax,a=vI.constrain(qg.event.x,n,i),o=(a-n)/(i-n),s=this.position.w-this._box.w;t=o*s}if(this.vbar){var l=r+this._vbarYMin,u=l+this._vbarTranslateMax,c=vI.constrain(qg.event.y,l,u),f=(c-l)/(u-l),h=this.position.h-this._box.h;r=f*h}this.setTranslate(t,r)};of.prototype.setTranslate=function(t,r){var n=this.position.w-this._box.w,i=this.position.h-this._box.h;if(t=vI.constrain(t||0,0,n),r=vI.constrain(r||0,0,i),this.translateX=t,this.translateY=r,this.container.call(pT.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-r),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+r-.5)}),this.hbar){var a=t/n;this.hbar.call(pT.setTranslate,t+a*this._hbarTranslateMax,r)}if(this.vbar){var o=r/i;this.vbar.call(pT.setTranslate,t,r+o*this._vbarTranslateMax)}}});var F0e=ye((Tar,z0e)=>{"use strict";var gT=xa(),t4=Xu(),r4=va(),mT=ao(),e0=Mr(),pI=Ll(),Qpt=Vs().arrayEditor,k0e=Nh().LINE_SPACING,Go=hI(),e0t=M0e();z0e.exports=function(t){var r=t._fullLayout,n=e0.filterVisible(r[Go.name]);function i(h){t4.autoMargin(t,R0e(h))}var a=r._menulayer.selectAll("g."+Go.containerClassName).data(n.length>0?[0]:[]);if(a.enter().append("g").classed(Go.containerClassName,!0).style("cursor","pointer"),a.exit().each(function(){gT.select(this).selectAll("g."+Go.headerGroupClassName).each(i)}).remove(),n.length!==0){var o=a.selectAll("g."+Go.headerGroupClassName).data(n,t0t);o.enter().append("g").classed(Go.headerGroupClassName,!0);for(var s=e0.ensureSingle(a,"g",Go.dropdownButtonGroupClassName,function(h){h.style("pointer-events","all")}),l=0;l{"use strict";var l0t=hI();q0e.exports={moduleType:"component",name:l0t.name,layoutAttributes:BU(),supplyLayoutDefaults:T0e(),draw:F0e()}});var n4=ye((Sar,B0e)=>{"use strict";B0e.exports={name:"sliders",containerClassName:"slider-container",groupClassName:"slider-group",inputAreaClass:"slider-input-area",railRectClass:"slider-rail-rect",railTouchRectClass:"slider-rail-touch-rect",gripRectClass:"slider-grip-rect",tickRectClass:"slider-tick-rect",inputProxyClass:"slider-input-proxy",labelsClass:"slider-labels",labelGroupClass:"slider-label-group",labelClass:"slider-label",currentValueClass:"slider-current-value",railHeight:5,menuIndexAttrName:"slider-active-index",autoMarginIdRoot:"slider-",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:"#bec8d9",railBgColor:"#f8fafc",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:"#bec8d9",gripBgColor:"#f6f8fa",gripBgActiveColor:"#dbdde0",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:"#333",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:"#333",minorTickLength:4,currentValuePadding:8,currentValueInset:0}});var HU=ye((Mar,V0e)=>{"use strict";var N0e=Su(),u0t=b6(),c0t=no().extendDeepAll,f0t=Bu().overrideAll,h0t=zS(),U0e=Vs().templatedArray,Jb=n4(),d0t=U0e("step",{visible:{valType:"boolean",dflt:!0},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string"},value:{valType:"string"},execute:{valType:"boolean",dflt:!0}});V0e.exports=f0t(U0e("slider",{visible:{valType:"boolean",dflt:!0},active:{valType:"number",min:0,dflt:0},steps:d0t,lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number",min:-2,max:3,dflt:0},pad:c0t(u0t({editType:"arraydraw"}),{},{t:{dflt:20}}),xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left"},y:{valType:"number",min:-2,max:3,dflt:0},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},transition:{duration:{valType:"number",min:0,dflt:150},easing:{valType:"enumerated",values:h0t.transition.easing.values,dflt:"cubic-in-out"}},currentvalue:{visible:{valType:"boolean",dflt:!0},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left"},offset:{valType:"number",dflt:10},prefix:{valType:"string"},suffix:{valType:"string"},font:N0e({})},font:N0e({}),activebgcolor:{valType:"color",dflt:Jb.gripBgActiveColor},bgcolor:{valType:"color",dflt:Jb.railBgColor},bordercolor:{valType:"color",dflt:Jb.railBorderColor},borderwidth:{valType:"number",min:0,dflt:Jb.railBorderWidth},ticklen:{valType:"number",min:0,dflt:Jb.tickLength},tickcolor:{valType:"color",dflt:Jb.tickColor},tickwidth:{valType:"number",min:0,dflt:1},minorticklen:{valType:"number",min:0,dflt:Jb.minorTickLength}}),"arraydraw","from-root")});var W0e=ye((Ear,j0e)=>{"use strict";var yT=Mr(),H0e=Zd(),G0e=HU(),v0t=n4(),p0t=v0t.name,g0t=G0e.steps;j0e.exports=function(t,r){H0e(t,r,{name:p0t,handleItemDefaults:m0t})};function m0t(e,t,r){function n(f,h){return yT.coerce(e,t,G0e,f,h)}for(var i=H0e(e,t,{name:"steps",handleItemDefaults:y0t}),a=0,o=0;o{"use strict";var Og=xa(),gI=Xu(),__=va(),Bg=ao(),t0=Mr(),_0t=t0.strTranslate,a4=Ll(),x0t=Vs().arrayEditor,gs=n4(),WU=Nh(),Y0e=WU.LINE_SPACING,GU=WU.FROM_TL,jU=WU.FROM_BR;tge.exports=function(t){var r=t._context.staticPlot,n=t._fullLayout,i=b0t(n,t),a=n._infolayer.selectAll("g."+gs.containerClassName).data(i.length>0?[0]:[]);a.enter().append("g").classed(gs.containerClassName,!0).style("cursor",r?null:"ew-resize");function o(c){c._commandObserver&&(c._commandObserver.remove(),delete c._commandObserver),gI.autoMargin(t,K0e(c))}if(a.exit().each(function(){Og.select(this).selectAll("g."+gs.groupClassName).each(o)}).remove(),i.length!==0){var s=a.selectAll("g."+gs.groupClassName).data(i,w0t);s.enter().append("g").classed(gs.groupClassName,!0),s.exit().each(o).remove();for(var l=0;l0&&(s=s.transition().duration(t.transition.duration).ease(t.transition.easing)),s.attr("transform",_0t(o-gs.gripWidth*.5,t._dims.currentValueTotalHeight))}}function ZU(e,t){var r=e._dims;return r.inputAreaStart+gs.stepInset+(r.inputAreaLength-2*gs.stepInset)*Math.min(1,Math.max(0,t))}function X0e(e,t){var r=e._dims;return Math.min(1,Math.max(0,(t-gs.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*gs.stepInset-2*r.inputAreaStart)))}function C0t(e,t,r){var n=r._dims,i=t0.ensureSingle(e,"rect",gs.railTouchRectClass,function(a){a.call(Q0e,t,e,r).style("pointer-events","all")});i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,gs.tickOffset+r.ticklen+n.labelHeight)}).call(__.fill,r.bgcolor).attr("opacity",0),Bg.setTranslate(i,0,n.currentValueTotalHeight)}function L0t(e,t){var r=t._dims,n=r.inputAreaLength-gs.railInset*2,i=t0.ensureSingle(e,"rect",gs.railRectClass);i.attr({width:n,height:gs.railWidth,rx:gs.railRadius,ry:gs.railRadius,"shape-rendering":"crispEdges"}).call(__.stroke,t.bordercolor).call(__.fill,t.bgcolor).style("stroke-width",t.borderwidth+"px"),Bg.setTranslate(i,gs.railInset,(r.inputAreaWidth-gs.railWidth)*.5+r.currentValueTotalHeight)}});var nge=ye((Car,ige)=>{"use strict";var P0t=n4();ige.exports={moduleType:"component",name:P0t.name,layoutAttributes:HU(),supplyLayoutDefaults:W0e(),draw:rge()}});var yI=ye((Lar,oge)=>{"use strict";var age=dh();oge.exports={bgcolor:{valType:"color",dflt:age.background,editType:"plot"},bordercolor:{valType:"color",dflt:age.defaultLine,editType:"plot"},borderwidth:{valType:"integer",dflt:0,min:0,editType:"plot"},autorange:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},range:{valType:"info_array",items:[{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}}],editType:"calc",impliedEdits:{autorange:!1}},thickness:{valType:"number",dflt:.15,min:0,max:1,editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"}});var XU=ye((Par,sge)=>{"use strict";sge.exports={_isSubplotObj:!0,rangemode:{valType:"enumerated",values:["auto","fixed","match"],dflt:"match",editType:"calc"},range:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},editType:"calc"}});var _I=ye((Iar,lge)=>{"use strict";lge.exports={name:"rangeslider",containerClassName:"rangeslider-container",bgClassName:"rangeslider-bg",rangePlotClassName:"rangeslider-rangeplot",maskMinClassName:"rangeslider-mask-min",maskMaxClassName:"rangeslider-mask-max",slideBoxClassName:"rangeslider-slidebox",grabberMinClassName:"rangeslider-grabber-min",grabAreaMinClassName:"rangeslider-grabarea-min",handleMinClassName:"rangeslider-handle-min",grabberMaxClassName:"rangeslider-grabber-max",grabAreaMaxClassName:"rangeslider-grabarea-max",handleMaxClassName:"rangeslider-handle-max",maskMinOppAxisClassName:"rangeslider-mask-min-opp-axis",maskMaxOppAxisClassName:"rangeslider-mask-max-opp-axis",maskColor:"rgba(0,0,0,0.4)",maskOppAxisColor:"rgba(0,0,0,0.2)",slideBoxFill:"transparent",slideBoxCursor:"ew-resize",grabAreaFill:"transparent",grabAreaCursor:"col-resize",grabAreaWidth:10,handleWidth:4,handleRadius:1,handleStrokeWidth:1,extraPad:15}});var fge=ye(bI=>{"use strict";var I0t=af(),R0t=Ll(),uge=_I(),D0t=Nh().LINE_SPACING,xI=uge.name;function cge(e){var t=e&&e[xI];return t&&t.visible}bI.isVisible=cge;bI.makeData=function(e){for(var t=I0t.list({_fullLayout:e},"x",!0),r=e.margin,n=[],i=0;i{"use strict";var wI=Mr(),hge=Vs(),dge=af(),z0t=yI(),F0t=XU();vge.exports=function(t,r,n){var i=t[n],a=r[n];if(!(i.rangeslider||r._requestRangeslider[a._id]))return;wI.isPlainObject(i.rangeslider)||(i.rangeslider={});var o=i.rangeslider,s=hge.newContainer(a,"rangeslider");function l(L,_){return wI.coerce(o,s,z0t,L,_)}var u,c;function f(L,_){return wI.coerce(u,c,F0t,L,_)}var h=l("visible");if(h){l("bgcolor",r.plot_bgcolor),l("bordercolor"),l("borderwidth"),l("thickness"),l("autorange",!a.isValidRange(o.range)),l("range");var d=r._subplots;if(d)for(var v=d.cartesian.filter(function(L){return L.substr(0,L.indexOf("y"))===dge.name2id(n)}).map(function(L){return L.substr(L.indexOf("y"),L.length)}),x=wI.simpleMap(v,dge.id2name),b=0;b{"use strict";var q0t=af().list,O0t=wg().getAutoRange,B0t=_I();gge.exports=function(t){for(var r=q0t(t,"x",!0),n=0;n{"use strict";var TI=xa(),N0t=ba(),U0t=Xu(),Ff=Mr(),AI=Ff.strTranslate,_ge=ao(),x_=va(),V0t=Mb(),H0t=Jf(),YU=af(),G0t=gv(),j0t=Tg(),Bs=_I();xge.exports=function(e){for(var t=e._fullLayout,r=t._rangeSliderData,n=0;n=N.max)X=T[G+1];else if(H=N.pmax)X=T[G+1];else if(H0?e.touches[0].clientX:0}function W0t(e,t,r,n){if(t._context.staticPlot)return;var i=e.select("rect."+Bs.slideBoxClassName).node(),a=e.select("rect."+Bs.grabAreaMinClassName).node(),o=e.select("rect."+Bs.grabAreaMaxClassName).node();function s(){var l=TI.event,u=l.target,c=yge(l),f=c-e.node().getBoundingClientRect().left,h=n.d2p(r._rl[0]),d=n.d2p(r._rl[1]),v=G0t.coverSlip();this.addEventListener("touchmove",x),this.addEventListener("touchend",b),v.addEventListener("mousemove",x),v.addEventListener("mouseup",b);function x(g){var E=yge(g),k=+E-c,A,L,_;switch(u){case i:if(_="ew-resize",h+k>r._length||d+k<0)return;A=h+k,L=d+k;break;case a:if(_="col-resize",h+k>r._length)return;A=h+k,L=d;break;case o:if(_="col-resize",d+k<0)return;A=h,L=d+k;break;default:_="ew-resize",A=f,L=f+k;break}if(L{"use strict";var rgt=Mr(),igt=yI(),ngt=XU(),KU=fge();wge.exports={moduleType:"component",name:"rangeslider",schema:{subplots:{xaxis:{rangeslider:rgt.extendFlat({},igt,{yaxis:ngt})}}},layoutAttributes:yI(),handleDefaults:pge(),calcAutorange:mge(),draw:bge(),isVisible:KU.isVisible,makeData:KU.makeData,autoMarginOpts:KU.autoMarginOpts}});var SI=ye((Oar,Sge)=>{"use strict";var agt=Su(),Age=dh(),ogt=Vs().templatedArray,sgt=ogt("button",{visible:{valType:"boolean",dflt:!0,editType:"plot"},step:{valType:"enumerated",values:["month","year","day","hour","minute","second","all"],dflt:"month",editType:"plot"},stepmode:{valType:"enumerated",values:["backward","todate"],dflt:"backward",editType:"plot"},count:{valType:"number",min:0,dflt:1,editType:"plot"},label:{valType:"string",editType:"plot"},editType:"plot"});Sge.exports={visible:{valType:"boolean",editType:"plot"},buttons:sgt,x:{valType:"number",min:-2,max:3,editType:"plot"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"plot"},y:{valType:"number",min:-2,max:3,editType:"plot"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"bottom",editType:"plot"},font:agt({editType:"plot"}),bgcolor:{valType:"color",dflt:Age.lightLine,editType:"plot"},activecolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:Age.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"}});var JU=ye((Bar,Mge)=>{"use strict";Mge.exports={yPad:.02,minButtonWidth:30,rx:3,ry:3,lightAmount:25,darkAmount:10}});var Cge=ye((Nar,kge)=>{"use strict";var MI=Mr(),lgt=va(),ugt=Vs(),cgt=Zd(),Ege=SI(),$U=JU();kge.exports=function(t,r,n,i,a){var o=t.rangeselector||{},s=ugt.newContainer(r,"rangeselector");function l(d,v){return MI.coerce(o,s,Ege,d,v)}var u=cgt(o,s,{name:"buttons",handleItemDefaults:fgt,calendar:a}),c=l("visible",u.length>0);if(c){var f=hgt(r,n,i);l("x",f[0]),l("y",f[1]),MI.noneOrAll(t,r,["x","y"]),l("xanchor"),l("yanchor"),MI.coerceFont(l,"font",n.font);var h=l("bgcolor");l("activecolor",lgt.contrast(h,$U.lightAmount,$U.darkAmount)),l("bordercolor"),l("borderwidth")}};function fgt(e,t,r,n){var i=n.calendar;function a(l,u){return MI.coerce(e,t,Ege.buttons,l,u)}var o=a("visible");if(o){var s=a("step");s!=="all"&&(i&&i!=="gregorian"&&(s==="month"||s==="year")?t.stepmode="backward":a("stepmode"),a("count")),a("label")}}function hgt(e,t,r){for(var n=r.filter(function(s){return t[s].anchor===e._id}),i=0,a=0;a{"use strict";var dgt=hq(),vgt=Mr().titleCase;Lge.exports=function(t,r){var n=t._name,i={};if(r.step==="all")i[n+".autorange"]=!0;else{var a=pgt(t,r);i[n+".range[0]"]=a[0],i[n+".range[1]"]=a[1]}return i};function pgt(e,t){var r=e.range,n=new Date(e.r2l(r[1])),i=t.step,a=dgt["utc"+vgt(i)],o=t.count,s;switch(t.stepmode){case"backward":s=e.l2r(+a.offset(n,-o));break;case"todate":var l=a.offset(n,-o);s=e.l2r(+a.ceil(l));break}var u=r[1];return[s,u]}});var Bge=ye((Var,Oge)=>{"use strict";var kI=xa(),ggt=ba(),mgt=Xu(),Ige=va(),qge=ao(),Iy=Mr(),Rge=Iy.strTranslate,EI=Ll(),ygt=af(),tV=Nh(),Dge=tV.LINE_SPACING,zge=tV.FROM_TL,Fge=tV.FROM_BR,eV=JU(),_gt=Pge();Oge.exports=function(t){var r=t._fullLayout,n=r._infolayer.selectAll(".rangeselector").data(xgt(t),bgt);n.enter().append("g").classed("rangeselector",!0),n.exit().remove(),n.style({cursor:"pointer","pointer-events":"all"}),n.each(function(i){var a=kI.select(this),o=i,s=o.rangeselector,l=a.selectAll("g.button").data(Iy.filterVisible(s.buttons));l.enter().append("g").classed("button",!0),l.exit().remove(),l.each(function(u){var c=kI.select(this),f=_gt(o,u);u._isActive=wgt(o,u,f),c.call(QU,s,u),c.call(Agt,s,u,t),c.on("click",function(){t._dragged||ggt.call("_guiRelayout",t,f)}),c.on("mouseover",function(){u._isHovered=!0,c.call(QU,s,u)}),c.on("mouseout",function(){u._isHovered=!1,c.call(QU,s,u)})}),Mgt(t,l,s,o._name,a)})};function xgt(e){for(var t=ygt.list(e,"x",!0),r=[],n=0;n{"use strict";Nge.exports={moduleType:"component",name:"rangeselector",schema:{subplots:{xaxis:{rangeselector:SI()}}},layoutAttributes:SI(),handleDefaults:Cge(),draw:Bge()}});var Ju=ye(rV=>{"use strict";var Vge=no().extendFlat;rV.attributes=function(e,t){e=e||{},t=t||{};var r={valType:"info_array",editType:e.editType,items:[{valType:"number",min:0,max:1,editType:e.editType},{valType:"number",min:0,max:1,editType:e.editType}],dflt:[0,1]},n=e.name?e.name+" ":"",i=e.trace?"trace ":"subplot ",a=t.description?" "+t.description:"",o={x:Vge({},r,{}),y:Vge({},r,{}),editType:e.editType};return e.noGridCell||(o.row={valType:"integer",min:0,dflt:0,editType:e.editType},o.column={valType:"integer",min:0,dflt:0,editType:e.editType}),o};rV.defaults=function(e,t,r,n){var i=n&&n.x||[0,1],a=n&&n.y||[0,1],o=t.grid;if(o){var s=r("domain.column");s!==void 0&&(s{"use strict";var Egt=Mr(),kgt=n3().counter,Cgt=Ju().attributes,Hge=ad().idRegex,Lgt=Vs(),iV={rows:{valType:"integer",min:1,editType:"plot"},roworder:{valType:"enumerated",values:["top to bottom","bottom to top"],dflt:"top to bottom",editType:"plot"},columns:{valType:"integer",min:1,editType:"plot"},subplots:{valType:"info_array",freeLength:!0,dimensions:2,items:{valType:"enumerated",values:[kgt("xy").toString(),""],editType:"plot"},editType:"plot"},xaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[Hge.x.toString(),""],editType:"plot"},editType:"plot"},yaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[Hge.y.toString(),""],editType:"plot"},editType:"plot"},pattern:{valType:"enumerated",values:["independent","coupled"],dflt:"coupled",editType:"plot"},xgap:{valType:"number",min:0,max:1,editType:"plot"},ygap:{valType:"number",min:0,max:1,editType:"plot"},domain:Cgt({name:"grid",editType:"plot",noGridCell:!0},{}),xside:{valType:"enumerated",values:["bottom","bottom plot","top plot","top"],dflt:"bottom plot",editType:"plot"},yside:{valType:"enumerated",values:["left","left plot","right plot","right"],dflt:"left plot",editType:"plot"},editType:"plot"};function CI(e,t,r){var n=t[r+"axes"],i=Object.keys((e._splomAxes||{})[r]||{});if(Array.isArray(n))return n;if(i.length)return i}function Pgt(e,t){var r=e.grid||{},n=CI(t,r,"x"),i=CI(t,r,"y");if(!e.grid&&!n&&!i)return;var a=Array.isArray(r.subplots)&&Array.isArray(r.subplots[0]),o=Array.isArray(n),s=Array.isArray(i),l=o&&n!==r.xaxes&&s&&i!==r.yaxes,u,c;a?(u=r.subplots.length,c=r.subplots[0].length):(s&&(u=i.length),o&&(c=n.length));var f=Lgt.newContainer(t,"grid");function h(_,C){return Egt.coerce(r,f,iV,_,C)}var d=h("rows",u),v=h("columns",c);if(!(d*v>1)){delete t.grid;return}if(!a&&!o&&!s){var x=h("pattern")==="independent";x&&(a=!0)}f._hasSubplotGrid=a;var b=h("roworder"),g=b==="top to bottom",E=a?.2:.1,k=a?.3:.1,A,L;l&&t._splomGridDflt&&(A=t._splomGridDflt.xside,L=t._splomGridDflt.yside),f._domains={x:Gge("x",h,E,A,v),y:Gge("y",h,k,L,d,g)}}function Gge(e,t,r,n,i,a){var o=t(e+"gap",r),s=t("domain."+e);t(e+"side",n);for(var l=new Array(i),u=s[0],c=(s[1]-u)/(i-o),f=c*(1-o),h=0;h{"use strict";Zge.exports={visible:{valType:"boolean",editType:"calc"},type:{valType:"enumerated",values:["percent","constant","sqrt","data"],editType:"calc"},symmetric:{valType:"boolean",editType:"calc"},array:{valType:"data_array",editType:"calc"},arrayminus:{valType:"data_array",editType:"calc"},value:{valType:"number",min:0,dflt:10,editType:"calc"},valueminus:{valType:"number",min:0,dflt:10,editType:"calc"},traceref:{valType:"integer",min:0,dflt:0,editType:"style"},tracerefminus:{valType:"integer",min:0,dflt:0,editType:"style"},copy_ystyle:{valType:"boolean",editType:"plot"},copy_zstyle:{valType:"boolean",editType:"style"},color:{valType:"color",editType:"style"},thickness:{valType:"number",min:0,dflt:2,editType:"style"},width:{valType:"number",min:0,editType:"plot"},editType:"calc"}});var Kge=ye((Zar,Yge)=>{"use strict";var Xge=uo(),Rgt=ba(),Dgt=Mr(),zgt=Vs(),Fgt=aV();Yge.exports=function(e,t,r,n){var i="error_"+n.axis,a=zgt.newContainer(t,i),o=e[i]||{};function s(v,x){return Dgt.coerce(o,a,Fgt,v,x)}var l=o.array!==void 0||o.value!==void 0||o.type==="sqrt",u=s("visible",l);if(u!==!1){var c=s("type","array"in o?"data":"percent"),f=!0;c!=="sqrt"&&(f=s("symmetric",!((c==="data"?"arrayminus":"valueminus")in o))),c==="data"?(s("array"),s("traceref"),f||(s("arrayminus"),s("tracerefminus"))):(c==="percent"||c==="constant")&&(s("value"),f||s("valueminus"));var h="copy_"+n.inherit+"style";if(n.inherit){var d=t["error_"+n.inherit];(d||{}).visible&&s(h,!(o.color||Xge(o.thickness)||Xge(o.width)))}(!n.inherit||!a[h])&&(s("color",r),s("thickness"),s("width",Rgt.traceIs(t,"gl3d")?0:4))}}});var oV=ye((Xar,$ge)=>{"use strict";$ge.exports=function(t){var r=t.type,n=t.symmetric;if(r==="data"){var i=t.array||[];if(n)return function(u,c){var f=+i[c];return[f,f]};var a=t.arrayminus||[];return function(u,c){var f=+i[c],h=+a[c];return!isNaN(f)||!isNaN(h)?[h||0,f||0]:[NaN,NaN]}}else{var o=Jge(r,t.value),s=Jge(r,t.valueminus);return n||t.valueminus===void 0?function(u){var c=o(u);return[c,c]}:function(u){return[s(u),o(u)]}}};function Jge(e,t){if(e==="percent")return function(r){return Math.abs(r*t/100)};if(e==="constant")return function(){return Math.abs(t)};if(e==="sqrt")return function(r){return Math.sqrt(Math.abs(r))}}});var tme=ye((Yar,eme)=>{"use strict";var sV=uo(),qgt=ba(),lV=Qa(),Ogt=Mr(),Bgt=oV();eme.exports=function(t){for(var r=t.calcdata,n=0;n{"use strict";var rme=xa(),b_=uo(),Ngt=ao(),Ugt=lu();ime.exports=function(t,r,n,i){var a,o=n.xaxis,s=n.yaxis,l=i&&i.duration>0,u=t._context.staticPlot;r.each(function(c){var f=c[0].trace,h=f.error_x||{},d=f.error_y||{},v;f.ids&&(v=function(E){return E.id});var x=Ugt.hasMarkers(f)&&f.marker.maxdisplayed>0;!d.visible&&!h.visible&&(c=[]);var b=rme.select(this).selectAll("g.errorbar").data(c,v);if(b.exit().remove(),!!c.length){h.visible||b.selectAll("path.xerror").remove(),d.visible||b.selectAll("path.yerror").remove(),b.style("opacity",1);var g=b.enter().append("g").classed("errorbar",!0);l&&g.style("opacity",0).transition().duration(i.duration).style("opacity",1),Ngt.setClipUrl(b,n.layerClipId,t),b.each(function(E){var k=rme.select(this),A=Vgt(E,o,s);if(!(x&&!E.vis)){var L,_=k.select("path.yerror");if(d.visible&&b_(A.x)&&b_(A.yh)&&b_(A.ys)){var C=d.width;L="M"+(A.x-C)+","+A.yh+"h"+2*C+"m-"+C+",0V"+A.ys,A.noYS||(L+="m-"+C+",0h"+2*C),a=!_.size(),a?_=k.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("yerror",!0):l&&(_=_.transition().duration(i.duration).ease(i.easing)),_.attr("d",L)}else _.remove();var M=k.select("path.xerror");if(h.visible&&b_(A.y)&&b_(A.xh)&&b_(A.xs)){var p=(h.copy_ystyle?d:h).width;L="M"+A.xh+","+(A.y-p)+"v"+2*p+"m0,-"+p+"H"+A.xs,A.noXS||(L+="m0,-"+p+"v"+2*p),a=!M.size(),a?M=k.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("xerror",!0):l&&(M=M.transition().duration(i.duration).ease(i.easing)),M.attr("d",L)}else M.remove()}})}})};function Vgt(e,t,r){var n={x:t.c2p(e.x),y:r.c2p(e.y)};return e.yh!==void 0&&(n.yh=r.c2p(e.yh),n.ys=r.c2p(e.ys),b_(n.ys)||(n.noYS=!0,n.ys=r.c2p(e.ys,!0))),e.xh!==void 0&&(n.xh=t.c2p(e.xh),n.xs=t.c2p(e.xs),b_(n.xs)||(n.noXS=!0,n.xs=t.c2p(e.xs,!0))),n}});var sme=ye((Jar,ome)=>{"use strict";var Hgt=xa(),ame=va();ome.exports=function(t){t.each(function(r){var n=r[0].trace,i=n.error_y||{},a=n.error_x||{},o=Hgt.select(this);o.selectAll("path.yerror").style("stroke-width",i.thickness+"px").call(ame.stroke,i.color),a.copy_ystyle&&(a=i),o.selectAll("path.xerror").style("stroke-width",a.thickness+"px").call(ame.stroke,a.color)})}});var cme=ye(($ar,ume)=>{"use strict";var o4=Mr(),lme=Bu().overrideAll,s4=aV(),$b={error_x:o4.extendFlat({},s4),error_y:o4.extendFlat({},s4)};delete $b.error_x.copy_zstyle;delete $b.error_y.copy_zstyle;delete $b.error_y.copy_ystyle;var l4={error_x:o4.extendFlat({},s4),error_y:o4.extendFlat({},s4),error_z:o4.extendFlat({},s4)};delete l4.error_x.copy_ystyle;delete l4.error_y.copy_ystyle;delete l4.error_z.copy_ystyle;delete l4.error_z.copy_zstyle;ume.exports={moduleType:"component",name:"errorbars",schema:{traces:{scatter:$b,bar:$b,histogram:$b,scatter3d:lme(l4,"calc","nested"),scattergl:lme($b,"calc","nested")}},supplyDefaults:Kge(),calc:tme(),makeComputeError:oV(),plot:nme(),style:sme(),hoverInfo:Ggt};function Ggt(e,t,r){(t.error_y||{}).visible&&(r.yerr=e.yh-e.y,t.error_y.symmetric||(r.yerrneg=e.y-e.ys)),(t.error_x||{}).visible&&(r.xerr=e.xh-e.x,t.error_x.symmetric||(r.xerrneg=e.x-e.xs))}});var hme=ye((Qar,fme)=>{"use strict";fme.exports={cn:{colorbar:"colorbar",cbbg:"cbbg",cbfill:"cbfill",cbfills:"cbfills",cbline:"cbline",cblines:"cblines",cbaxis:"cbaxis",cbtitleunshift:"cbtitleunshift",cbtitle:"cbtitle",cboutline:"cboutline",crisp:"crisp",jsPlaceholder:"js-placeholder"}}});var _me=ye((eor,yme)=>{"use strict";var w_=xa(),uV=id(),PI=Xu(),dme=ba(),Ry=Qa(),LI=gv(),B0=Mr(),Ug=B0.strTranslate,mme=no().extendFlat,cV=Tg(),Ng=ao(),fV=va(),jgt=Mb(),Wgt=Ll(),Zgt=Dv().flipScale,Xgt=JM(),Ygt=rI(),Kgt=Cd(),hV=Nh(),vme=hV.LINE_SPACING,pme=hV.FROM_TL,gme=hV.FROM_BR,Vc=hme().cn;function Jgt(e){var t=e._fullLayout,r=t._infolayer.selectAll("g."+Vc.colorbar).data($gt(e),function(n){return n._id});r.enter().append("g").attr("class",function(n){return n._id}).classed(Vc.colorbar,!0),r.each(function(n){var i=w_.select(this);B0.ensureSingle(i,"rect",Vc.cbbg),B0.ensureSingle(i,"g",Vc.cbfills),B0.ensureSingle(i,"g",Vc.cblines),B0.ensureSingle(i,"g",Vc.cbaxis,function(o){o.classed(Vc.crisp,!0)}),B0.ensureSingle(i,"g",Vc.cbtitleunshift,function(o){o.append("g").classed(Vc.cbtitle,!0)}),B0.ensureSingle(i,"rect",Vc.cboutline);var a=Qgt(i,n,e);a&&a.then&&(e._promises||[]).push(a),e._context.edits.colorbarPosition&&emt(i,n,e)}),r.exit().each(function(n){PI.autoMargin(e,n._id)}).remove(),r.order()}function $gt(e){var t=e._fullLayout,r=e.calcdata,n=[],i,a,o,s;function l(k){return mme(k,{_fillcolor:null,_line:{color:null,width:null,dash:null},_levels:{start:null,end:null,size:null},_filllevels:null,_fillgradient:null,_zrange:null})}function u(){typeof s.calc=="function"?s.calc(e,o,i):(i._fillgradient=a.reversescale?Zgt(a.colorscale):a.colorscale,i._zrange=[a[s.min],a[s.max]])}for(var c=0;c1){var Re=Math.pow(10,Math.floor(Math.log(me)/Math.LN10));ze*=Re*B0.roundUp(me/Re,[2,5,10]),(Math.abs(F.start)/F.size+1e-6)%1<2e-6&&(Ee.tick0=0)}Ee.dtick=ze}Ee.domain=n?[ie+v/A.h,ie+W-v/A.h]:[ie+d/A.w,ie+W-d/A.w],Ee.setScale(),e.attr("transform",Ug(Math.round(A.l),Math.round(A.t)));var ce=e.select("."+Vc.cbtitleunshift).attr("transform",Ug(-Math.round(A.l),-Math.round(A.t))),Ge=Ee.ticklabelposition,nt=Ee.title.font.size,ct=e.select("."+Vc.cbaxis),qt,rt=0,ot=0;function Rt(er,Ke){var xt={propContainer:Ee,propName:t._propPrefix+"title",traceIndex:t._traceIndex,_meta:t._meta,placeholder:k._dfltTitle.colorbar,containerGroup:e.select("."+Vc.cbtitle)},bt=er.charAt(0)==="h"?er.substr(1):"h"+er;e.selectAll("."+bt+",."+bt+"-math-group").remove(),jgt.draw(r,er,mme(xt,Ke||{}))}function kt(){if(n&&Ae||!n&&!Ae){var er,Ke;M==="top"&&(er=d+A.l+re*x,Ke=v+A.t+ae*(1-ie-W)+3+nt*.75),M==="bottom"&&(er=d+A.l+re*x,Ke=v+A.t+ae*(1-ie)-3-nt*.25),M==="right"&&(Ke=v+A.t+ae*b+3+nt*.75,er=d+A.l+re*ie),Rt(Ee._id+"title",{attributes:{x:er,y:Ke,"text-anchor":n?"start":"middle"}})}}function Ct(){if(n&&!Ae||!n&&Ae){var er=Ee.position||0,Ke=Ee._offset+Ee._length/2,xt,bt;if(M==="right")bt=Ke,xt=A.l+re*er+10+nt*(Ee.showticklabels?1:.5);else if(xt=Ke,M==="bottom"&&(bt=A.t+ae*er+10+(Ge.indexOf("inside")===-1?Ee.tickfont.size:0)+(Ee.ticks!=="intside"&&t.ticklen||0)),M==="top"){var Lt=C.text.split("
").length;bt=A.t+ae*er+10-X-vme*nt*Lt}Rt((n?"h":"v")+Ee._id+"title",{avoid:{selection:w_.select(r).selectAll("g."+Ee._id+"tick"),side:M,offsetTop:n?0:A.t,offsetLeft:n?A.l:0,maxShift:n?k.width:k.height},attributes:{x:xt,y:bt,"text-anchor":"middle"},transform:{rotate:n?-90:0,offset:0}})}}function Yt(){if(!n&&!Ae||n&&Ae){var er=e.select("."+Vc.cbtitle),Ke=er.select("text"),xt=[-l/2,l/2],bt=er.select(".h"+Ee._id+"title-math-group").node(),Lt=15.6;Ke.node()&&(Lt=parseInt(Ke.node().style.fontSize,10)*vme);var St;if(bt?(St=Ng.bBox(bt),ot=St.width,rt=St.height,rt>Lt&&(xt[1]-=(rt-Lt)/2)):Ke.node()&&!Ke.classed(Vc.jsPlaceholder)&&(St=Ng.bBox(Ke.node()),ot=St.width,rt=St.height),n){if(rt){if(rt+=5,M==="top")Ee.domain[1]-=rt/A.h,xt[1]*=-1;else{Ee.domain[0]+=rt/A.h;var Et=Wgt.lineCount(Ke);xt[1]+=(1-Et)*Lt}er.attr("transform",Ug(xt[0],xt[1])),Ee.setScale()}}else ot&&(M==="right"&&(Ee.domain[0]+=(ot+nt/2)/A.w),er.attr("transform",Ug(xt[0],xt[1])),Ee.setScale())}e.selectAll("."+Vc.cbfills+",."+Vc.cblines).attr("transform",n?Ug(0,Math.round(A.h*(1-Ee.domain[1]))):Ug(Math.round(A.w*Ee.domain[0]),0)),ct.attr("transform",n?Ug(0,Math.round(-A.t)):Ug(Math.round(-A.l),0));var dt=e.select("."+Vc.cbfills).selectAll("rect."+Vc.cbfill).attr("style","").data(V);dt.enter().append("rect").classed(Vc.cbfill,!0).attr("style",""),dt.exit().remove();var Ht=p.map(Ee.c2p).map(Math.round).sort(function(Or,Nr){return Or-Nr});dt.each(function(Or,Nr){var ut=[Nr===0?p[0]:(V[Nr]+V[Nr-1])/2,Nr===V.length-1?p[1]:(V[Nr]+V[Nr+1])/2].map(Ee.c2p).map(Math.round);n&&(ut[1]=B0.constrain(ut[1]+(ut[1]>ut[0])?1:-1,Ht[0],Ht[1]));var Ne=w_.select(this).attr(n?"x":"y",_e).attr(n?"y":"x",w_.min(ut)).attr(n?"width":"height",Math.max(X,2)).attr(n?"height":"width",Math.max(w_.max(ut)-w_.min(ut),2));if(t._fillgradient)Ng.gradient(Ne,r,t._id,n?"vertical":"horizontalreversed",t._fillgradient,"fill");else{var Ye=T(Or).replace("e-","");Ne.attr("fill",uV(Ye).toHexString())}});var $t=e.select("."+Vc.cblines).selectAll("path."+Vc.cbline).data(_.color&&_.width?H:[]);$t.enter().append("path").classed(Vc.cbline,!0),$t.exit().remove(),$t.each(function(Or){var Nr=_e,ut=Math.round(Ee.c2p(Or))+_.width/2%1;w_.select(this).attr("d","M"+(n?Nr+","+ut:ut+","+Nr)+(n?"h":"v")+X).call(Ng.lineGroupStyle,_.width,P(Or),_.dash)}),ct.selectAll("g."+Ee._id+"tick,path").remove();var fr=_e+X+(l||0)/2-(t.ticks==="outside"?1:0),_r=Ry.calcTicks(Ee),Br=Ry.getTickSigns(Ee)[2];return Ry.drawTicks(r,Ee,{vals:Ee.ticks==="inside"?Ry.clipEnds(Ee,_r):_r,layer:ct,path:Ry.makeTickPath(Ee,fr,Br),transFn:Ry.makeTransTickFn(Ee)}),Ry.drawLabels(r,Ee,{vals:_r,layer:ct,transFn:Ry.makeTransTickLabelFn(Ee),labelFns:Ry.makeLabelFns(Ee,fr)})}function xr(){var er,Ke=X+l/2;Ge.indexOf("inside")===-1&&(er=Ng.bBox(ct.node()),Ke+=n?er.width:er.height),qt=ce.select("text");var xt=0,bt=n&&M==="top",Lt=!n&&M==="right",St=0;if(qt.node()&&!qt.classed(Vc.jsPlaceholder)){var Et,dt=ce.select(".h"+Ee._id+"title-math-group").node();dt&&(n&&Ae||!n&&!Ae)?(er=Ng.bBox(dt),xt=er.width,Et=er.height):(er=Ng.bBox(ce.node()),xt=er.right-A.l-(n?_e:Te),Et=er.bottom-A.t-(n?Te:_e),!n&&M==="top"&&(Ke+=er.height,St=er.height)),Lt&&(qt.attr("transform",Ug(xt/2+nt/2,0)),xt*=2),Ke=Math.max(Ke,n?xt:Et)}var Ht=(n?d:v)*2+Ke+u+l/2,$t=0;!n&&C.text&&h==="bottom"&&b<=0&&($t=Ht/2,Ht+=$t,St+=$t),k._hColorbarMoveTitle=$t,k._hColorbarMoveCBTitle=St;var fr=u+l,_r=(n?_e:Te)-fr/2-(n?d:0),Br=(n?Te:_e)-(n?N:v+St-$t);e.select("."+Vc.cbbg).attr("x",_r).attr("y",Br).attr(n?"width":"height",Math.max(Ht-$t,2)).attr(n?"height":"width",Math.max(N+fr,2)).call(fV.fill,c).call(fV.stroke,t.bordercolor).style("stroke-width",u);var Or=Lt?Math.max(xt-10,0):0;e.selectAll("."+Vc.cboutline).attr("x",(n?_e:Te+d)+Or).attr("y",(n?Te+v-N:_e)+(bt?rt:0)).attr(n?"width":"height",Math.max(X,2)).attr(n?"height":"width",Math.max(N-(n?2*v+rt:2*d+Or),2)).call(fV.stroke,t.outlinecolor).style({fill:"none","stroke-width":l});var Nr=n?Me*Ht:0,ut=n?0:(1-ke)*Ht-St;if(Nr=E?A.l-Nr:-Nr,ut=g?A.t-ut:-ut,e.attr("transform",Ug(Nr,ut)),!n&&(u||uV(c).getAlpha()&&!uV.equals(k.paper_bgcolor,c))){var Ne=ct.selectAll("text"),Ye=Ne[0].length,Ve=e.select("."+Vc.cbbg).node(),Xe=Ng.bBox(Ve),ht=Ng.getTranslate(e),Le=2;Ne.each(function(ri,bi){var nn=0,Wi=Ye-1;if(bi===nn||bi===Wi){var Ni=Ng.bBox(this),_n=Ng.getTranslate(this),$i;if(bi===Wi){var zn=Ni.right+_n.x,Wn=Xe.right+ht.x+Te-u-Le+x;$i=Wn-zn,$i>0&&($i=0)}else if(bi===nn){var It=Ni.left+_n.x,ft=Xe.left+ht.x+Te+u+Le;$i=ft-It,$i<0&&($i=0)}$i&&(Ye<3?this.setAttribute("transform","translate("+$i+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}})}var xe={},Se=pme[f],lt=gme[f],Gt=pme[h],Vt=gme[h],ar=Ht-X;n?(a==="pixels"?(xe.y=b,xe.t=N*Gt,xe.b=N*Vt):(xe.t=xe.b=0,xe.yt=b+i*Gt,xe.yb=b-i*Vt),s==="pixels"?(xe.x=x,xe.l=Ht*Se,xe.r=Ht*lt):(xe.l=ar*Se,xe.r=ar*lt,xe.xl=x-o*Se,xe.xr=x+o*lt)):(a==="pixels"?(xe.x=x,xe.l=N*Se,xe.r=N*lt):(xe.l=xe.r=0,xe.xl=x+i*Se,xe.xr=x-i*lt),s==="pixels"?(xe.y=1-b,xe.t=Ht*Gt,xe.b=Ht*Vt):(xe.t=ar*Gt,xe.b=ar*Vt,xe.yt=b-o*Gt,xe.yb=b+o*Vt));var Qr=t.y<.5?"b":"t",ai=t.x<.5?"l":"r";r._fullLayout._reservedMargin[t._id]={};var jr={r:k.width-_r-Nr,l:_r+xe.r,b:k.height-Br-ut,t:Br+xe.b};E&&g?PI.autoMargin(r,t._id,xe):E?r._fullLayout._reservedMargin[t._id][Qr]=jr[Qr]:g||n?r._fullLayout._reservedMargin[t._id][ai]=jr[ai]:r._fullLayout._reservedMargin[t._id][Qr]=jr[Qr]}return B0.syncOrAsync([PI.previousPromises,kt,Yt,Ct,PI.previousPromises,xr],r)}function emt(e,t,r){var n=t.orientation==="v",i=r._fullLayout,a=i._size,o,s,l;LI.init({element:e.node(),gd:r,prepFn:function(){o=e.attr("transform"),cV(e)},moveFn:function(u,c){e.attr("transform",o+Ug(u,c)),s=LI.align((n?t._uFrac:t._vFrac)+u/a.w,n?t._thickFrac:t._lenFrac,0,1,t.xanchor),l=LI.align((n?t._vFrac:1-t._uFrac)-c/a.h,n?t._lenFrac:t._thickFrac,0,1,t.yanchor);var f=LI.getCursor(s,l,t.xanchor,t.yanchor);cV(e,f)},doneFn:function(){if(cV(e),s!==void 0&&l!==void 0){var u={};u[t._propPrefix+"x"]=s,u[t._propPrefix+"y"]=l,t._traceIndex!==void 0?dme.call("_guiRestyle",r,u,t._traceIndex):dme.call("_guiRelayout",r,u)}}})}function tmt(e,t,r){var n=t._levels,i=[],a=[],o,s,l=n.end+n.size/100,u=n.size,c=1.001*r[0]-.001*r[1],f=1.001*r[1]-.001*r[0];for(s=0;s<1e5&&(o=n.start+s*u,!(u>0?o>=l:o<=l));s++)o>c&&o0?o>=l:o<=l));s++)o>r[0]&&o{"use strict";xme.exports={moduleType:"component",name:"colorbar",attributes:Y6(),supplyDefaults:AO(),draw:_me().draw,hasColorbar:mO()}});var Tme=ye((ror,wme)=>{"use strict";wme.exports={moduleType:"component",name:"legend",layoutAttributes:yB(),supplyLayoutDefaults:bB(),draw:RB(),style:CB()}});var Sme=ye((ior,Ame)=>{"use strict";Ame.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}});var Eme=ye((nor,Mme)=>{"use strict";Mme.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}});var vV=ye((aor,Pme)=>{"use strict";var imt=ba(),Lme=Mr(),dV=Lme.extendFlat,kme=Lme.extendDeep;function Cme(e){var t;switch(e){case"themes__thumb":t={autosize:!0,width:150,height:150,title:{text:""},showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case"thumbnail":t={title:{text:""},hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:"",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:t={}}return t}function nmt(e){var t=["xaxis","yaxis","zaxis"];return t.indexOf(e.slice(0,5))>-1}Pme.exports=function(t,r){var n,i=t.data,a=t.layout,o=kme([],i),s=kme({},a,Cme(r.tileClass)),l=t._context||{};if(r.width&&(s.width=r.width),r.height&&(s.height=r.height),r.tileClass==="thumbnail"||r.tileClass==="themes__thumb"){s.annotations=[];var u=Object.keys(s);for(n=0;n{"use strict";var amt=vb().EventEmitter,omt=ba(),smt=Mr(),Ime=Ly(),lmt=vV(),umt=OP(),cmt=BP();function fmt(e,t){var r=new amt,n=lmt(e,{format:"png"}),i=n.gd;i.style.position="absolute",i.style.left="-5000px",document.body.appendChild(i);function a(){var s=Ime.getDelay(i._fullLayout);setTimeout(function(){var l=umt(i),u=document.createElement("canvas");u.id=smt.randstr(),r=cmt({format:t.format,width:i._fullLayout.width,height:i._fullLayout.height,canvas:u,emitter:r,svg:l}),r.clean=function(){i&&document.body.removeChild(i)}},s)}var o=Ime.getRedrawFunc(i);return omt.call("_doPlot",i,n.data,n.layout,n.config).then(o).then(a).catch(function(s){r.emit("error",s)}),r}Rme.exports=fmt});var qme=ye((sor,Fme)=>{"use strict";var zme=Ly(),hmt={getDelay:zme.getDelay,getRedrawFunc:zme.getRedrawFunc,clone:vV(),toSVG:OP(),svgToImg:BP(),toImage:Dme(),downloadImage:YN()};Fme.exports=hmt});var Bme=ye(Dy=>{"use strict";Dy.version=QC().version;QQ();Vie();var dmt=ba(),u4=Dy.register=dmt.register,gV=sde(),Ome=Object.keys(gV);for(II=0;II{"use strict";Nme.exports=Bme()});var Qb=ye((cor,Vme)=>{"use strict";Vme.exports={TEXTPAD:3,eventDataKeys:["value","label"]}});var Lm=ye((hor,Wme)=>{"use strict";var Tf=Uc(),Hme=Oc().axisHoverFormat,vmt=Wo().hovertemplateAttrs,pmt=Wo().texttemplateAttrs,jme=Kl(),gmt=Su(),Gme=Qb(),mmt=Ed().pattern,e2=no().extendFlat,mV=gmt({editType:"calc",arrayOk:!0,colorEditType:"style"}),ymt=Tf.marker,_mt=ymt.line,xmt=e2({},_mt.width,{dflt:0}),bmt=e2({width:xmt,editType:"calc"},jme("marker.line")),wmt=e2({line:bmt,editType:"calc"},jme("marker"),{opacity:{valType:"number",arrayOk:!0,dflt:1,min:0,max:1,editType:"style"},pattern:mmt,cornerradius:{valType:"any",editType:"calc"}});Wme.exports={x:Tf.x,x0:Tf.x0,dx:Tf.dx,y:Tf.y,y0:Tf.y0,dy:Tf.dy,xperiod:Tf.xperiod,yperiod:Tf.yperiod,xperiod0:Tf.xperiod0,yperiod0:Tf.yperiod0,xperiodalignment:Tf.xperiodalignment,yperiodalignment:Tf.yperiodalignment,xhoverformat:Hme("x"),yhoverformat:Hme("y"),text:Tf.text,texttemplate:pmt({editType:"plot"},{keys:Gme.eventDataKeys}),hovertext:Tf.hovertext,hovertemplate:vmt({},{keys:Gme.eventDataKeys}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"calc"},insidetextanchor:{valType:"enumerated",values:["end","middle","start"],dflt:"end",editType:"plot"},textangle:{valType:"angle",dflt:"auto",editType:"plot"},textfont:e2({},mV,{}),insidetextfont:e2({},mV,{}),outsidetextfont:e2({},mV,{}),constraintext:{valType:"enumerated",values:["inside","outside","both","none"],dflt:"both",editType:"calc"},cliponaxis:e2({},Tf.cliponaxis,{}),orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},base:{valType:"any",dflt:null,arrayOk:!0,editType:"calc"},offset:{valType:"number",dflt:null,arrayOk:!0,editType:"calc"},width:{valType:"number",dflt:null,min:0,arrayOk:!0,editType:"calc"},marker:wmt,offsetgroup:Tf.offsetgroup,alignmentgroup:Tf.alignmentgroup,selected:{marker:{opacity:Tf.selected.marker.opacity,color:Tf.selected.marker.color,editType:"style"},textfont:Tf.selected.textfont,editType:"style"},unselected:{marker:{opacity:Tf.unselected.marker.opacity,color:Tf.unselected.marker.color,editType:"style"},textfont:Tf.unselected.textfont,editType:"style"},zorder:Tf.zorder}});var DI=ye((dor,Zme)=>{"use strict";Zme.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},barcornerradius:{valType:"any",editType:"calc"}}});var zI=ye((vor,Kme)=>{"use strict";var Tmt=va(),Xme=Dv().hasColorscale,Yme=Uh(),Amt=Mr().coercePattern;Kme.exports=function(t,r,n,i,a){var o=n("marker.color",i),s=Xme(t,"marker");s&&Yme(t,r,a,n,{prefix:"marker.",cLetter:"c"}),n("marker.line.color",Tmt.defaultLine),Xme(t,"marker.line")&&Yme(t,r,a,n,{prefix:"marker.line.",cLetter:"c"}),n("marker.line.width"),n("marker.opacity"),Amt(n,"marker.pattern",o,s),n("selected.marker.color"),n("unselected.marker.color")}});var r0=ye((por,rye)=>{"use strict";var Jme=uo(),xT=Mr(),$me=va(),Smt=ba(),Mmt=K3(),Emt=Pg(),kmt=zI(),Cmt=Hb(),Qme=Lm(),FI=xT.coerceFont;function Lmt(e,t,r,n){function i(u,c){return xT.coerce(e,t,Qme,u,c)}var a=Mmt(e,t,n,i);if(!a){t.visible=!1;return}Emt(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("zorder"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate");var o=i("textposition");tye(e,t,n,i,o,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),kmt(e,t,i,r,n);var s=(t.marker.line||{}).color,l=Smt.getComponentMethod("errorbars","supplyDefaults");l(e,t,s||$me.defaultLine,{axis:"y"}),l(e,t,s||$me.defaultLine,{axis:"x",inherit:"y"}),xT.coerceSelectionMarkerOpacity(t,i)}function Pmt(e,t){var r,n;function i(s,l){return xT.coerce(n._input,n,Qme,s,l)}for(var a=0;a=0)return e}else if(typeof e=="string"&&(e=e.trim(),e.slice(-1)==="%"&&Jme(e.slice(0,-1))&&(e=+e.slice(0,-1),e>=0)))return e+"%"}function tye(e,t,r,n,i,a){a=a||{};var o=a.moduleHasSelected!==!1,s=a.moduleHasUnselected!==!1,l=a.moduleHasConstrain!==!1,u=a.moduleHasCliponaxis!==!1,c=a.moduleHasTextangle!==!1,f=a.moduleHasInsideanchor!==!1,h=!!a.hasPathbar,d=Array.isArray(i)||i==="auto",v=d||i==="inside",x=d||i==="outside";if(v||x){var b=FI(n,"textfont",r.font),g=xT.extendFlat({},b),E=e.textfont&&e.textfont.color,k=!E;if(k&&delete g.color,FI(n,"insidetextfont",g),h){var A=xT.extendFlat({},b);k&&delete A.color,FI(n,"pathbar.textfont",A)}x&&FI(n,"outsidetextfont",b),o&&n("selected.textfont.color"),s&&n("unselected.textfont.color"),l&&n("constraintext"),u&&n("cliponaxis"),c&&n("textangle"),n("texttemplate")}v&&f&&n("insidetextanchor")}rye.exports={supplyDefaults:Lmt,crossTraceDefaults:Pmt,handleText:tye,validateCornerradius:eye}});var yV=ye((gor,iye)=>{"use strict";var Imt=ba(),Rmt=Qa(),Dmt=Mr(),zmt=DI(),Fmt=r0().validateCornerradius;iye.exports=function(e,t,r){function n(x,b){return Dmt.coerce(e,t,zmt,x,b)}for(var i=!1,a=!1,o=!1,s={},l=n("barmode"),u=l==="group",c=0;c0&&!s[h]&&(o=!0),s[h]=!0),f.visible&&f.type==="histogram"){var d=Rmt.getFromId({_fullLayout:t},f[f.orientation==="v"?"xaxis":"yaxis"]);d.type!=="category"&&(a=!0)}}if(!i){delete t.barmode;return}l!=="overlay"&&n("barnorm"),n("bargap",a&&!o?0:.2),n("bargroupgap");var v=n("barcornerradius");t.barcornerradius=Fmt(v)}});var c4=ye((mor,nye)=>{"use strict";var bT=Mr();nye.exports=function(t,r){for(var n=0;n{"use strict";var aye=Qa(),oye=Rg(),sye=Dv().hasColorscale,lye=zv(),qmt=c4(),Omt=F0();uye.exports=function(t,r){var n=aye.getFromId(t,r.xaxis||"x"),i=aye.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f={msUTC:!!(r.base||r.base===0)};r.orientation==="h"?(a=n.makeCalcdata(r,"x",f),s=i.makeCalcdata(r,"y"),l=oye(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y",f),s=n.makeCalcdata(r,"x"),l=oye(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var h=Math.min(o.length,a.length),d=new Array(h),v=0;v{"use strict";var Bmt=xa(),Nmt=Mr();function Umt(e,t,r){var n=e._fullLayout,i=n["_"+r+"Text_minsize"];if(i){var a=n.uniformtext.mode==="hide",o;switch(r){case"funnelarea":case"pie":case"sunburst":o="g.slice";break;case"treemap":case"icicle":o="g.slice, g.pathbar";break;default:o="g.points > g.point"}t.selectAll(o).each(function(s){var l=s.transform;if(l){l.scale=a&&l.hide?0:i/l.fontSize;var u=Bmt.select(this).select("text");Nmt.setTransormAndDisplay(u,l)}})}}function Vmt(e,t,r){if(r.uniformtext.mode){var n=fye(e),i=r.uniformtext.minsize,a=t.scale*t.fontSize;t.hide=a{"use strict";var Gmt=uo(),jmt=id(),dye=Mr().isArrayOrTypedArray;t2.coerceString=function(e,t,r){if(typeof t=="string"){if(t||!e.noBlank)return t}else if((typeof t=="number"||t===!0)&&!e.strict)return String(t);return r!==void 0?r:e.dflt};t2.coerceNumber=function(e,t,r){if(Gmt(t)){t=+t;var n=e.min,i=e.max,a=n!==void 0&&ti;if(!a)return t}return r!==void 0?r:e.dflt};t2.coerceColor=function(e,t,r){return jmt(t).isValid()?t:r!==void 0?r:e.dflt};t2.coerceEnumerated=function(e,t,r){return e.coerceNumber&&(t=+t),e.values.indexOf(t)!==-1?t:r!==void 0?r:e.dflt};t2.getValue=function(e,t){var r;return dye(e)?t{"use strict";var f4=xa(),Wmt=va(),h4=ao(),vye=Mr(),pye=ba(),gye=_v().resizeText,_V=Lm(),Zmt=_V.textfont,Xmt=_V.insidetextfont,Ymt=_V.outsidetextfont,Jd=qI();function Kmt(e){var t=f4.select(e).selectAll('g[class^="barlayer"]').selectAll("g.trace");gye(e,t,"bar");var r=t.size(),n=e._fullLayout;t.style("opacity",function(i){return i[0].trace.opacity}).each(function(i){(n.barmode==="stack"&&r>1||n.bargap===0&&n.bargroupgap===0&&!i[0].trace.marker.line.width)&&f4.select(this).attr("shape-rendering","crispEdges")}),t.selectAll("g.points").each(function(i){var a=f4.select(this),o=i[0].trace;mye(a,o,e)}),pye.getComponentMethod("errorbars","style")(t)}function mye(e,t,r){h4.pointStyle(e.selectAll("path"),t,r),yye(e,t,r)}function yye(e,t,r){e.selectAll("text").each(function(n){var i=f4.select(this),a=vye.ensureUniformFontSize(r,_ye(i,n,t,r));h4.font(i,a)})}function Jmt(e,t,r){var n=t[0].trace;n.selectedpoints?$mt(r,n,e):(mye(r,n,e),pye.getComponentMethod("errorbars","style")(r))}function $mt(e,t,r){h4.selectedPointStyle(e.selectAll("path"),t),Qmt(e.selectAll("text"),t,r)}function Qmt(e,t,r){e.each(function(n){var i=f4.select(this),a;if(n.selected){a=vye.ensureUniformFontSize(r,_ye(i,n,t,r));var o=t.selected.textfont&&t.selected.textfont.color;o&&(a.color=o),h4.font(i,a)}else h4.selectedTextStyle(i,t)})}function _ye(e,t,r,n){var i=n._fullLayout.font,a=r.textfont;if(e.classed("bartext-inside")){var o=Tye(t,r);a=bye(r,t.i,i,o)}else e.classed("bartext-outside")&&(a=wye(r,t.i,i));return a}function xye(e,t,r){return xV(Zmt,e.textfont,t,r)}function bye(e,t,r,n){var i=xye(e,t,r),a=e._input.textfont===void 0||e._input.textfont.color===void 0||Array.isArray(e.textfont.color)&&e.textfont.color[t]===void 0;return a&&(i={color:Wmt.contrast(n),family:i.family,size:i.size,weight:i.weight,style:i.style,variant:i.variant,textcase:i.textcase,lineposition:i.lineposition,shadow:i.shadow}),xV(Xmt,e.insidetextfont,t,i)}function wye(e,t,r){var n=xye(e,t,r);return xV(Ymt,e.outsidetextfont,t,n)}function xV(e,t,r,n){t=t||{};var i=Jd.getValue(t.family,r),a=Jd.getValue(t.size,r),o=Jd.getValue(t.color,r),s=Jd.getValue(t.weight,r),l=Jd.getValue(t.style,r),u=Jd.getValue(t.variant,r),c=Jd.getValue(t.textcase,r),f=Jd.getValue(t.lineposition,r),h=Jd.getValue(t.shadow,r);return{family:Jd.coerceString(e.family,i,n.family),size:Jd.coerceNumber(e.size,a,n.size),color:Jd.coerceColor(e.color,o,n.color),weight:Jd.coerceString(e.weight,s,n.weight),style:Jd.coerceString(e.style,l,n.style),variant:Jd.coerceString(e.variant,u,n.variant),textcase:Jd.coerceString(e.variant,c,n.textcase),lineposition:Jd.coerceString(e.variant,f,n.lineposition),shadow:Jd.coerceString(e.variant,h,n.shadow)}}function Tye(e,t){return t.type==="waterfall"?t[e.dir].marker.color:e.mcc||e.mc||t.marker.color}Aye.exports={style:Kmt,styleTextPoints:yye,styleOnSelect:Jmt,getInsideTextFont:bye,getOutsideTextFont:wye,getBarColor:Tye,resizeText:gye}});var i2=ye((wor,Iye)=>{"use strict";var OI=xa(),BI=uo(),Pd=Mr(),eyt=Ll(),tyt=va(),T_=ao(),ryt=ba(),NI=Qa().tickText,Sye=_v(),iyt=Sye.recordMinTextSize,nyt=Sye.clearMinTextSize,bV=N0(),wT=qI(),ayt=Qb(),Mye=Lm(),oyt=Mye.text,syt=Mye.textposition,lyt=rp().appendArrayPointValue,Uv=ayt.TEXTPAD;function uyt(e){return e.id}function cyt(e){if(e.ids)return uyt}function wV(e){return(e>0)-(e<0)}function Pm(e,t){return e0}function hyt(e,t,r,n,i,a){var o=t.xaxis,s=t.yaxis,l=e._fullLayout,u=e._context.staticPlot;i||(i={mode:l.barmode,norm:l.barmode,gap:l.bargap,groupgap:l.bargroupgap},nyt("bar",l));var c=Pd.makeTraceGroups(n,r,"trace bars").each(function(f){var h=OI.select(this),d=f[0].trace,v=f[0].t,x=d.type==="waterfall",b=d.type==="funnel",g=d.type==="histogram",E=d.type==="bar",k=E||b,A=0;x&&d.connector.visible&&d.connector.mode==="between"&&(A=d.connector.line.width/2);var L=d.orientation==="h",_=kye(i),C=Pd.ensureSingle(h,"g","points"),M=cyt(d),p=C.selectAll("g.point").data(Pd.identity,M);p.enter().append("g").classed("point",!0),p.exit().remove(),p.each(function(T,F){var q=OI.select(this),V=fyt(T,o,s,L),H=V[0][0],X=V[0][1],G=V[1][0],N=V[1][1],W=(L?X-H:N-G)===0;W&&k&&wT.getLineWidth(d,T)&&(W=!1),W||(W=!BI(H)||!BI(X)||!BI(G)||!BI(N)),T.isBlank=W,W&&(L?X=H:N=G),A&&!W&&(L?(H-=Pm(H,X)*A,X+=Pm(H,X)*A):(G-=Pm(G,N)*A,N+=Pm(G,N)*A));var re,ae;if(d.type==="waterfall"){if(!W){var _e=d[T.dir].marker;re=_e.line.width,ae=_e.color}}else re=wT.getLineWidth(d,T),ae=T.mc||d.marker.color;function Me(Ke){var xt=OI.round(re/2%1,2);return i.gap===0&&i.groupgap===0?OI.round(Math.round(Ke)-xt,2):Ke}function ke(Ke,xt,bt){return bt&&Ke===xt?Ke:Math.abs(Ke-xt)>=2?Me(Ke):Ke>xt?Math.ceil(Ke):Math.floor(Ke)}var ge=tyt.opacity(ae),ie=ge<1||re>.01?Me:ke;e._context.staticPlot||(H=ie(H,X,L),X=ie(X,H,L),G=ie(G,N,!L),N=ie(N,G,!L));var Te=L?o.c2p:s.c2p,Ee;T.s0>0?Ee=T._sMax:T.s0<0?Ee=T._sMin:Ee=T.s1>0?T._sMax:T._sMin;function Ae(Ke,xt){if(!Ke)return 0;var bt=Math.abs(L?N-G:X-H),Lt=Math.abs(L?X-H:N-G),St=ie(Math.abs(Te(Ee,!0)-Te(0,!0))),Et=T.hasB?Math.min(bt/2,Lt/2):Math.min(bt/2,St),dt;if(xt==="%"){var Ht=Math.min(50,Ke);dt=bt*(Ht/100)}else dt=Ke;return ie(Math.max(Math.min(dt,Et),0))}var ze=E||g?Ae(v.cornerradiusvalue,v.cornerradiusform):0,Ce,me,Re="M"+H+","+G+"V"+N+"H"+X+"V"+G+"Z",ce=0;if(ze&&T.s){var Ge=wV(T.s0)===0||wV(T.s)===wV(T.s0)?T.s1:T.s0;if(ce=ie(T.hasB?0:Math.abs(Te(Ee,!0)-Te(Ge,!0))),ce0?Math.sqrt(ce*(2*ze-ce)):0,Rt=nt>0?Math.max:Math.min;Ce="M"+H+","+G+"V"+(N-rt*ct)+"H"+Rt(X-(ze-ce)*nt,H)+"A "+ze+","+ze+" 0 0 "+qt+" "+X+","+(N-ze*ct-ot)+"V"+(G+ze*ct+ot)+"A "+ze+","+ze+" 0 0 "+qt+" "+Rt(X-(ze-ce)*nt,H)+","+(G+rt*ct)+"Z"}else if(T.hasB)Ce="M"+(H+ze*nt)+","+G+"A "+ze+","+ze+" 0 0 "+qt+" "+H+","+(G+ze*ct)+"V"+(N-ze*ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(H+ze*nt)+","+N+"H"+(X-ze*nt)+"A "+ze+","+ze+" 0 0 "+qt+" "+X+","+(N-ze*ct)+"V"+(G+ze*ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(X-ze*nt)+","+G+"Z";else{me=Math.abs(N-G)+ce;var kt=me0?Math.sqrt(ce*(2*ze-ce)):0,Yt=ct>0?Math.max:Math.min;Ce="M"+(H+kt*nt)+","+G+"V"+Yt(N-(ze-ce)*ct,G)+"A "+ze+","+ze+" 0 0 "+qt+" "+(H+ze*nt-Ct)+","+N+"H"+(X-ze*nt+Ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(X-kt*nt)+","+Yt(N-(ze-ce)*ct,G)+"V"+G+"Z"}}else Ce=Re}else Ce=Re;var xr=Eye(Pd.ensureSingle(q,"path"),l,i,a);if(xr.style("vector-effect",u?"none":"non-scaling-stroke").attr("d",isNaN((X-H)*(N-G))||W&&e._context.staticPlot?"M0,0Z":Ce).call(T_.setClipUrl,t.layerClipId,e),!l.uniformtext.mode&&_){var er=T_.makePointStyleFns(d);T_.singlePointStyle(T,xr,d,er,e)}dyt(e,t,q,f,F,H,X,G,N,ze,ce,i,a),t.layerClipId&&T_.hideOutsideRangePoint(T,q.select("text"),o,s,d.xcalendar,d.ycalendar)});var P=d.cliponaxis===!1;T_.setClipUrl(h,P?null:t.layerClipId,e)});ryt.getComponentMethod("errorbars","plot")(e,c,t,i)}function dyt(e,t,r,n,i,a,o,s,l,u,c,f,h){var d=t.xaxis,v=t.yaxis,x=e._fullLayout,b;function g(me,Re,ce){var Ge=Pd.ensureSingle(me,"text").text(Re).attr({class:"bartext bartext-"+b,"text-anchor":"middle","data-notex":1}).call(T_.font,ce).call(eyt.convertToTspans,e);return Ge}var E=n[0].trace,k=E.orientation==="h",A=gyt(x,n,i,d,v);b=myt(E,i);var L=f.mode==="stack"||f.mode==="relative",_=n[i],C=!L||_._outmost,M=_.hasB,p=u&&u-c>Uv;if(!A||b==="none"||(_.isBlank||a===o||s===l)&&(b==="auto"||b==="inside")){r.select("text").remove();return}var P=x.font,T=bV.getBarColor(n[i],E),F=bV.getInsideTextFont(E,i,P,T),q=bV.getOutsideTextFont(E,i,P),V=E.insidetextanchor||"end",H=r.datum();k?d.type==="log"&&H.s0<=0&&(d.range[0]0&&Me>0,ie;p?M?ie=r2(N-2*u,W,_e,Me,k)||r2(N,W-2*u,_e,Me,k):k?ie=r2(N-(u-c),W,_e,Me,k)||r2(N,W-2*(u-c),_e,Me,k):ie=r2(N,W-(u-c),_e,Me,k)||r2(N-2*(u-c),W,_e,Me,k):ie=r2(N,W,_e,Me,k),ge&&ie?b="inside":(b="outside",re.remove(),re=null)}else b="inside";if(!re){ke=Pd.ensureUniformFontSize(e,b==="outside"?q:F),re=g(r,A,ke);var Te=re.attr("transform");if(re.attr("transform",""),ae=T_.bBox(re.node()),_e=ae.width,Me=ae.height,re.attr("transform",Te),_e<=0||Me<=0){re.remove();return}}var Ee=E.textangle,Ae,ze;b==="outside"?(ze=E.constraintext==="both"||E.constraintext==="outside",Ae=pyt(a,o,s,l,ae,{isHorizontal:k,constrained:ze,angle:Ee})):(ze=E.constraintext==="both"||E.constraintext==="inside",Ae=Pye(a,o,s,l,ae,{isHorizontal:k,constrained:ze,angle:Ee,anchor:V,hasB:M,r:u,overhead:c})),Ae.fontSize=ke.size,iyt(E.type==="histogram"?"bar":E.type,Ae,x),_.transform=Ae;var Ce=Eye(re,x,f,h);Pd.setTransormAndDisplay(Ce,Ae)}function r2(e,t,r,n,i){if(e<0||t<0)return!1;var a=r<=e&&n<=t,o=r<=t&&n<=e,s=i?e>=r*(t/n):t>=n*(e/r);return a||o||s}function Cye(e){return e==="auto"?0:e}function Lye(e,t){var r=Math.PI/180*t,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:e.width*i+e.height*n,y:e.width*n+e.height*i}}function Pye(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=a.anchor,c=u==="end",f=u==="start",h=a.leftToRight||0,d=(h+1)/2,v=1-d,x=a.hasB,b=a.r,g=a.overhead,E=i.width,k=i.height,A=Math.abs(t-e),L=Math.abs(n-r),_=A>2*Uv&&L>2*Uv?Uv:0;A-=2*_,L-=2*_;var C=Cye(l);l==="auto"&&!(E<=A&&k<=L)&&(E>A||k>L)&&(!(E>L||k>A)||EUv){var T=vyt(e,t,r,n,M,b,g,o,x);p=T.scale,P=T.pad}else p=1,s&&(p=Math.min(1,A/M.x,L/M.y)),P=0;var F=i.left*v+i.right*d,q=(i.top+i.bottom)/2,V=(e+Uv)*v+(t-Uv)*d,H=(r+n)/2,X=0,G=0;if(f||c){var N=(o?M.x:M.y)/2;b&&(c||x)&&(_+=P);var W=o?Pm(e,t):Pm(r,n);o?f?(V=e+W*_,X=-W*N):(V=t-W*_,X=W*N):f?(H=r+W*_,G=-W*N):(H=n-W*_,G=W*N)}return{textX:F,textY:q,targetX:V,targetY:H,anchorX:X,anchorY:G,scale:p,rotate:C}}function vyt(e,t,r,n,i,a,o,s,l){var u=Math.max(0,Math.abs(t-e)-2*Uv),c=Math.max(0,Math.abs(n-r)-2*Uv),f=a-Uv,h=o?f-Math.sqrt(f*f-(f-o)*(f-o)):f,d=l?f*2:s?f-o:2*h,v=l?f*2:s?2*h:f-o,x,b,g,E,k;return i.y/i.x>=c/(u-d)?E=c/i.y:i.y/i.x<=(c-v)/u?E=u/i.x:!l&&s?(x=i.x*i.x+i.y*i.y/4,b=-2*i.x*(u-f)-i.y*(c/2-f),g=(u-f)*(u-f)+(c/2-f)*(c/2-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*g))/(2*x)):l?(x=(i.x*i.x+i.y*i.y)/4,b=-i.x*(u/2-f)-i.y*(c/2-f),g=(u/2-f)*(u/2-f)+(c/2-f)*(c/2-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*g))/(2*x)):(x=i.x*i.x/4+i.y*i.y,b=-i.x*(u/2-f)-2*i.y*(c-f),g=(u/2-f)*(u/2-f)+(c-f)*(c-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*g))/(2*x)),E=Math.min(1,E),s?k=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(c-i.y*E)/2)*(f-(c-i.y*E)/2)))-o):k=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(u-i.x*E)/2)*(f-(u-i.x*E)/2)))-o),{scale:E,pad:k}}function pyt(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=i.width,c=i.height,f=Math.abs(t-e),h=Math.abs(n-r),d;o?d=h>2*Uv?Uv:0:d=f>2*Uv?Uv:0;var v=1;s&&(v=o?Math.min(1,h/c):Math.min(1,f/u));var x=Cye(l),b=Lye(i,x),g=(o?b.x:b.y)/2,E=(i.left+i.right)/2,k=(i.top+i.bottom)/2,A=(e+t)/2,L=(r+n)/2,_=0,C=0,M=o?Pm(t,e):Pm(r,n);return o?(A=t-M*d,_=M*g):(L=n+M*d,C=-M*g),{textX:E,textY:k,targetX:A,targetY:L,anchorX:_,anchorY:C,scale:v,rotate:x}}function gyt(e,t,r,n,i){var a=t[0].trace,o=a.texttemplate,s;return o?s=yyt(e,t,r,n,i):a.textinfo?s=_yt(t,r,n,i):s=wT.getValue(a.text,r),wT.coerceString(oyt,s)}function myt(e,t){var r=wT.getValue(e.textposition,t);return wT.coerceEnumerated(syt,r)}function yyt(e,t,r,n,i){var a=t[0].trace,o=Pd.castOption(a,r,"texttemplate");if(!o)return"";var s=a.type==="histogram",l=a.type==="waterfall",u=a.type==="funnel",c=a.orientation==="h",f,h,d,v;c?(f="y",h=i,d="x",v=n):(f="x",h=n,d="y",v=i);function x(_){return NI(h,h.c2l(_),!0).text}function b(_){return NI(v,v.c2l(_),!0).text}var g=t[r],E={};E.label=g.p,E.labelLabel=E[f+"Label"]=x(g.p);var k=Pd.castOption(a,g.i,"text");(k===0||k)&&(E.text=k),E.value=g.s,E.valueLabel=E[d+"Label"]=b(g.s);var A={};lyt(A,a,g.i),(s||A.x===void 0)&&(A.x=c?E.value:E.label),(s||A.y===void 0)&&(A.y=c?E.label:E.value),(s||A.xLabel===void 0)&&(A.xLabel=c?E.valueLabel:E.labelLabel),(s||A.yLabel===void 0)&&(A.yLabel=c?E.labelLabel:E.valueLabel),l&&(E.delta=+g.rawS||g.s,E.deltaLabel=b(E.delta),E.final=g.v,E.finalLabel=b(E.final),E.initial=E.final-E.delta,E.initialLabel=b(E.initial)),u&&(E.value=g.s,E.valueLabel=b(E.value),E.percentInitial=g.begR,E.percentInitialLabel=Pd.formatPercent(g.begR),E.percentPrevious=g.difR,E.percentPreviousLabel=Pd.formatPercent(g.difR),E.percentTotal=g.sumR,E.percenTotalLabel=Pd.formatPercent(g.sumR));var L=Pd.castOption(a,g.i,"customdata");return L&&(E.customdata=L),Pd.texttemplateString(o,E,e._d3locale,A,E,a._meta||{})}function _yt(e,t,r,n){var i=e[0].trace,a=i.orientation==="h",o=i.type==="waterfall",s=i.type==="funnel";function l(L){var _=a?n:r;return NI(_,L,!0).text}function u(L){var _=a?r:n;return NI(_,+L,!0).text}var c=i.textinfo,f=e[t],h=c.split("+"),d=[],v,x=function(L){return h.indexOf(L)!==-1};if(x("label")&&d.push(l(e[t].p)),x("text")&&(v=Pd.castOption(i,f.i,"text"),(v===0||v)&&d.push(v)),o){var b=+f.rawS||f.s,g=f.v,E=g-b;x("initial")&&d.push(u(E)),x("delta")&&d.push(u(b)),x("final")&&d.push(u(g))}if(s){x("value")&&d.push(u(f.s));var k=0;x("percent initial")&&k++,x("percent previous")&&k++,x("percent total")&&k++;var A=k>1;x("percent initial")&&(v=Pd.formatPercent(f.begR),A&&(v+=" of initial"),d.push(v)),x("percent previous")&&(v=Pd.formatPercent(f.difR),A&&(v+=" of previous"),d.push(v)),x("percent total")&&(v=Pd.formatPercent(f.sumR),A&&(v+=" of total"),d.push(v))}return d.join("
")}Iye.exports={plot:hyt,toMoveInsideBar:Pye}});var TT=ye((Tor,Fye)=>{"use strict";var d4=Nc(),xyt=ba(),Rye=va(),byt=Mr().fillText,wyt=qI().getLineWidth,TV=Qa().hoverLabelText,Tyt=es().BADNUM;function Ayt(e,t,r,n,i){var a=Dye(e,t,r,n,i);if(a){var o=a.cd,s=o[0].trace,l=o[a.index];return a.color=zye(s,l),xyt.getComponentMethod("errorbars","hoverInfo")(l,s,a),[a]}}function Dye(e,t,r,n,i){var a=e.cd,o=a[0].trace,s=a[0].t,l=n==="closest",u=o.type==="waterfall",c=e.maxHoverDistance,f=e.maxSpikeDistance,h,d,v,x,b,g,E;o.orientation==="h"?(h=r,d=t,v="y",x="x",b=H,g=F):(h=t,d=r,v="x",x="y",g=H,b=F);var k=o[v+"period"],A=l||k;function L(ie){return C(ie,-1)}function _(ie){return C(ie,1)}function C(ie,Te){var Ee=ie.w;return ie[v]+Te*Ee/2}function M(ie){return ie[v+"End"]-ie[v+"Start"]}var p=l?L:k?function(ie){return ie.p-M(ie)/2}:function(ie){return Math.min(L(ie),ie.p-s.bardelta/2)},P=l?_:k?function(ie){return ie.p+M(ie)/2}:function(ie){return Math.max(_(ie),ie.p+s.bardelta/2)};function T(ie,Te,Ee){return i.finiteRange&&(Ee=0),d4.inbox(ie-h,Te-h,Ee+Math.min(1,Math.abs(Te-ie)/E)-1)}function F(ie){return T(p(ie),P(ie),c)}function q(ie){return T(L(ie),_(ie),f)}function V(ie){var Te=ie[x];if(u){var Ee=Math.abs(ie.rawS)||0;d>0?Te+=Ee:d<0&&(Te-=Ee)}return Te}function H(ie){var Te=d,Ee=ie.b,Ae=V(ie);return d4.inbox(Ee-Te,Ae-Te,c+(Ae-Te)/(Ae-Ee)-1)}function X(ie){var Te=d,Ee=ie.b,Ae=V(ie);return d4.inbox(Ee-Te,Ae-Te,f+(Ae-Te)/(Ae-Ee)-1)}var G=e[v+"a"],N=e[x+"a"];E=Math.abs(G.r2c(G.range[1])-G.r2c(G.range[0]));function W(ie){return(b(ie)+g(ie))/2}var re=d4.getDistanceFunction(n,b,g,W);if(d4.getClosest(a,re,e),e.index!==!1&&a[e.index].p!==Tyt){A||(p=function(ie){return Math.min(L(ie),ie.p-s.bargroupwidth/2)},P=function(ie){return Math.max(_(ie),ie.p+s.bargroupwidth/2)});var ae=e.index,_e=a[ae],Me=o.base?_e.b+_e.s:_e.s;e[x+"0"]=e[x+"1"]=N.c2p(_e[x],!0),e[x+"LabelVal"]=Me;var ke=s.extents[s.extents.round(_e.p)];e[v+"0"]=G.c2p(l?p(_e):ke[0],!0),e[v+"1"]=G.c2p(l?P(_e):ke[1],!0);var ge=_e.orig_p!==void 0;return e[v+"LabelVal"]=ge?_e.orig_p:_e.p,e.labelLabel=TV(G,e[v+"LabelVal"],o[v+"hoverformat"]),e.valueLabel=TV(N,e[x+"LabelVal"],o[x+"hoverformat"]),e.baseLabel=TV(N,_e.b,o[x+"hoverformat"]),e.spikeDistance=(X(_e)+q(_e))/2,e[v+"Spike"]=G.c2p(_e.p,!0),byt(_e,o,e),e.hovertemplate=o.hovertemplate,e}}function zye(e,t){var r=t.mcc||e.marker.color,n=t.mlcc||e.marker.line.color,i=wyt(e,t);if(Rye.opacity(r))return r;if(Rye.opacity(n)&&i)return n}Fye.exports={hoverPoints:Ayt,hoverOnBars:Dye,getTraceColor:zye}});var Oye=ye((Aor,qye)=>{"use strict";qye.exports=function(t,r,n){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),n.orientation==="h"?(t.label=t.y,t.value=t.x):(t.label=t.x,t.value=t.y),t}});var AT=ye((Sor,Bye)=>{"use strict";Bye.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=n[0].trace,s=o.type==="funnel",l=o.orientation==="h",u=[],c;if(r===!1)for(c=0;c{"use strict";Nye.exports={attributes:Lm(),layoutAttributes:DI(),supplyDefaults:r0().supplyDefaults,crossTraceDefaults:r0().crossTraceDefaults,supplyLayoutDefaults:yV(),calc:cye(),crossTraceCalc:Gb().crossTraceCalc,colorbar:Kd(),arraysToCalcdata:c4(),plot:i2().plot,style:N0().style,styleOnSelect:N0().styleOnSelect,hoverPoints:TT().hoverPoints,eventData:Oye(),selectPoints:AT(),moduleType:"trace",name:"bar",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}});var Hye=ye((Eor,Vye)=>{"use strict";Vye.exports=Uye()});var v4=ye((kor,Zye)=>{"use strict";var Myt=Eg(),U0=Uc(),Gye=Lm(),Eyt=dh(),jye=Oc().axisHoverFormat,kyt=Wo().hovertemplateAttrs,zy=no().extendFlat,ST=U0.marker,Wye=ST.line;Zye.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:U0.xperiod,yperiod:U0.yperiod,xperiod0:U0.xperiod0,yperiod0:U0.yperiod0,xperiodalignment:U0.xperiodalignment,yperiodalignment:U0.yperiodalignment,xhoverformat:jye("x"),yhoverformat:jye("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},sdmultiple:{valType:"number",min:0,editType:"calc",dflt:1},sizemode:{valType:"enumerated",values:["quartiles","sd"],editType:"calc",dflt:"quartiles"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:zy({},ST.symbol,{arrayOk:!1,editType:"plot"}),opacity:zy({},ST.opacity,{arrayOk:!1,dflt:1,editType:"style"}),angle:zy({},ST.angle,{arrayOk:!1,editType:"calc"}),size:zy({},ST.size,{arrayOk:!1,editType:"calc"}),color:zy({},ST.color,{arrayOk:!1,editType:"style"}),line:{color:zy({},Wye.color,{arrayOk:!1,dflt:Eyt.defaultLine,editType:"style"}),width:zy({},Wye.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:Myt(),whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},showwhiskers:{valType:"boolean",editType:"calc"},offsetgroup:Gye.offsetgroup,alignmentgroup:Gye.alignmentgroup,selected:{marker:U0.selected.marker,editType:"style"},unselected:{marker:U0.unselected.marker,editType:"style"},text:zy({},U0.text,{}),hovertext:zy({},U0.hovertext,{}),hovertemplate:kyt({}),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"},zorder:U0.zorder}});var p4=ye((Cor,Xye)=>{"use strict";Xye.exports={boxmode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},boxgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"},boxgroupgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"}}});var m4=ye((Lor,$ye)=>{"use strict";var V0=Mr(),Cyt=ba(),Lyt=va(),Pyt=Pg(),Iyt=Hb(),Yye=L3(),g4=v4();function Ryt(e,t,r,n){function i(v,x){return V0.coerce(e,t,g4,v,x)}if(Kye(e,t,i,n),t.visible!==!1){Pyt(e,t,n,i),i("xhoverformat"),i("yhoverformat");var a=t._hasPreCompStats;a&&(i("lowerfence"),i("upperfence")),i("line.color",(e.marker||{}).color||r),i("line.width"),i("fillcolor",Lyt.addOpacity(t.line.color,.5));var o=!1;if(a){var s=i("mean"),l=i("sd");s&&s.length&&(o=!0,l&&l.length&&(o="sd"))}i("whiskerwidth");var u=i("sizemode"),c;u==="quartiles"&&(c=i("boxmean",o)),i("showwhiskers",u==="quartiles"),(u==="sd"||c==="sd")&&i("sdmultiple"),i("width"),i("quartilemethod");var f=!1;if(a){var h=i("notchspan");h&&h.length&&(f=!0)}else V0.validate(e.notchwidth,g4.notchwidth)&&(f=!0);var d=i("notched",f);d&&i("notchwidth"),Jye(e,t,i,{prefix:"box"}),i("zorder")}}function Kye(e,t,r,n){function i(P){var T=0;return P&&P.length&&(T+=1,V0.isArrayOrTypedArray(P[0])&&P[0].length&&(T+=1)),T}function a(P){return V0.validate(e[P],g4[P])}var o=r("y"),s=r("x"),l;if(t.type==="box"){var u=r("q1"),c=r("median"),f=r("q3");t._hasPreCompStats=u&&u.length&&c&&c.length&&f&&f.length,l=Math.min(V0.minRowLength(u),V0.minRowLength(c),V0.minRowLength(f))}var h=i(o),d=i(s),v=h&&V0.minRowLength(o),x=d&&V0.minRowLength(s),b=n.calendar,g={autotypenumbers:n.autotypenumbers},E,k;if(t._hasPreCompStats)switch(String(d)+String(h)){case"00":var A=a("x0")||a("dx"),L=a("y0")||a("dy");L&&!A?E="h":E="v",k=l;break;case"10":E="v",k=Math.min(l,x);break;case"20":E="h",k=Math.min(l,s.length);break;case"01":E="h",k=Math.min(l,v);break;case"02":E="v",k=Math.min(l,o.length);break;case"12":E="v",k=Math.min(l,x,o.length);break;case"21":E="h",k=Math.min(l,s.length,v);break;case"11":k=0;break;case"22":var _=!1,C;for(C=0;C0?(E="v",d>0?k=Math.min(x,v):k=Math.min(v)):d>0?(E="h",k=Math.min(x)):k=0;if(!k){t.visible=!1;return}t._length=k;var M=r("orientation",E);t._hasPreCompStats?M==="v"&&d===0?(r("x0",0),r("dx",1)):M==="h"&&h===0&&(r("y0",0),r("dy",1)):M==="v"&&d===0?r("x0"):M==="h"&&h===0&&r("y0");var p=Cyt.getComponentMethod("calendars","handleTraceDefaults");p(e,t,["x","y"],n)}function Jye(e,t,r,n){var i=n.prefix,a=V0.coerce2(e,t,g4,"marker.outliercolor"),o=r("marker.line.outliercolor"),s="outliers";t._hasPreCompStats?s="all":(a||o)&&(s="suspectedoutliers");var l=r(i+"points",s);l?(r("jitter",l==="all"?.3:0),r("pointpos",l==="all"?-1.5:0),r("marker.symbol"),r("marker.opacity"),r("marker.size"),r("marker.angle"),r("marker.color",t.line.color),r("marker.line.color"),r("marker.line.width"),l==="suspectedoutliers"&&(r("marker.line.outliercolor",t.marker.color),r("marker.line.outlierwidth")),r("selected.marker.color"),r("unselected.marker.color"),r("selected.marker.size"),r("unselected.marker.size"),r("text"),r("hovertext")):delete t.marker;var u=r("hoveron");(u==="all"||u.indexOf("points")!==-1)&&r("hovertemplate"),V0.coerceSelectionMarkerOpacity(t,r)}function Dyt(e,t){var r,n;function i(l){return V0.coerce(n._input,n,g4,l)}for(var a=0;a{"use strict";var zyt=ba(),Fyt=Mr(),qyt=p4();function Qye(e,t,r,n,i){for(var a=i+"Layout",o=!1,s=0;s{"use strict";var SV=uo(),VI=Qa(),Byt=Rg(),$f=Mr(),i0=es().BADNUM,Fy=$f._;u1e.exports=function(t,r){var n=t._fullLayout,i=VI.getFromId(t,r.xaxis||"x"),a=VI.getFromId(t,r.yaxis||"y"),o=[],s=r.type==="violin"?"_numViolins":"_numBoxes",l,u,c,f,h,d,v;r.orientation==="h"?(c=i,f="x",h=a,d="y",v=!!r.yperiodalignment):(c=a,f="y",h=i,d="x",v=!!r.xperiodalignment);var x=Nyt(r,d,h,n[s]),b=x[0],g=x[1],E=$f.distinctVals(b,h),k=E.vals,A=E.minDiff/2,L,_,C,M,p,P,T=(r.boxpoints||r.points)==="all"?$f.identity:function(qt){return qt.vL.uf};if(r._hasPreCompStats){var F=r[f],q=function(qt){return c.d2c((r[qt]||[])[l])},V=1/0,H=-1/0;for(l=0;l=L.q1&&L.q3>=L.med){var G=q("lowerfence");L.lf=G!==i0&&G<=L.q1?G:n1e(L,C,M);var N=q("upperfence");L.uf=N!==i0&&N>=L.q3?N:a1e(L,C,M);var W=q("mean");L.mean=W!==i0?W:M?$f.mean(C,M):(L.q1+L.q3)/2;var re=q("sd");L.sd=W!==i0&&re>=0?re:M?$f.stdev(C,M,L.mean):L.q3-L.q1,L.lo=o1e(L),L.uo=s1e(L);var ae=q("notchspan");ae=ae!==i0&&ae>0?ae:l1e(L,M),L.ln=L.med-ae,L.un=L.med+ae;var _e=L.lf,Me=L.uf;r.boxpoints&&C.length&&(_e=Math.min(_e,C[0]),Me=Math.max(Me,C[M-1])),r.notched&&(_e=Math.min(_e,L.ln),Me=Math.max(Me,L.un)),L.min=_e,L.max=Me}else{$f.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+L.q1,"median = "+L.med,"q3 = "+L.q3].join(` -`));var ke;L.med!==i0?ke=L.med:L.q1!==i0?L.q3!==i0?ke=(L.q1+L.q3)/2:ke=L.q1:L.q3!==i0?ke=L.q3:ke=0,L.med=ke,L.q1=L.q3=ke,L.lf=L.uf=ke,L.mean=L.sd=ke,L.ln=L.un=ke,L.min=L.max=ke}V=Math.min(V,L.min),H=Math.max(H,L.max),L.pts2=_.filter(T),o.push(L)}}r._extremes[c._id]=VI.findExtremes(c,[V,H],{padded:!0})}else{var ge=c.makeCalcdata(r,f),ie=Uyt(k,A),Te=k.length,Ee=Vyt(Te);for(l=0;l=0&&Ae0){if(L={},L.pos=L[d]=k[l],_=L.pts=Ee[l].sort(r1e),C=L[f]=_.map(i1e),M=C.length,L.min=C[0],L.max=C[M-1],L.mean=$f.mean(C,M),L.sd=$f.stdev(C,M,L.mean)*r.sdmultiple,L.med=$f.interp(C,.5),M%2&&(Re||ce)){var Ge,nt;Re?(Ge=C.slice(0,M/2),nt=C.slice(M/2+1)):ce&&(Ge=C.slice(0,M/2+1),nt=C.slice(M/2)),L.q1=$f.interp(Ge,.5),L.q3=$f.interp(nt,.5)}else L.q1=$f.interp(C,.25),L.q3=$f.interp(C,.75);L.lf=n1e(L,C,M),L.uf=a1e(L,C,M),L.lo=o1e(L),L.uo=s1e(L);var ct=l1e(L,M);L.ln=L.med-ct,L.un=L.med+ct,ze=Math.min(ze,L.ln),Ce=Math.max(Ce,L.un),L.pts2=_.filter(T),o.push(L)}r.notched&&$f.isTypedArray(ge)&&(ge=Array.from(ge)),r._extremes[c._id]=VI.findExtremes(c,r.notched?ge.concat([ze,Ce]):ge,{padded:!0})}return Hyt(o,r),o.length>0?(o[0].t={num:n[s],dPos:A,posLetter:d,valLetter:f,labels:{med:Fy(t,"median:"),min:Fy(t,"min:"),q1:Fy(t,"q1:"),q3:Fy(t,"q3:"),max:Fy(t,"max:"),mean:r.boxmean==="sd"||r.sizemode==="sd"?Fy(t,"mean \xB1 \u03C3:").replace("\u03C3",r.sdmultiple===1?"\u03C3":r.sdmultiple+"\u03C3"):Fy(t,"mean:"),lf:Fy(t,"lower fence:"),uf:Fy(t,"upper fence:")}},n[s]++,o):[{t:{empty:!0}}]};function Nyt(e,t,r,n){var i=t in e,a=t+"0"in e,o="d"+t in e;if(i||a&&o){var s=r.makeCalcdata(e,t),l=Byt(e,r,t,s).vals;return[l,s]}var u;a?u=e[t+"0"]:"name"in e&&(r.type==="category"||SV(e.name)&&["linear","log"].indexOf(r.type)!==-1||$f.isDateTime(e.name)&&r.type==="date")?u=e.name:u=n;for(var c=r.type==="multicategory"?r.r2c_just_indices(u):r.d2c(u,0,e[t+"calendar"]),f=e._length,h=new Array(f),d=0;d{"use strict";var c1e=Qa(),Gyt=Mr(),jyt=Bb().getAxisGroup,f1e=["v","h"];function Wyt(e,t){for(var r=e.calcdata,n=t.xaxis,i=t.yaxis,a=0;a1,E=1-a[e+"gap"],k=1-a[e+"groupgap"];for(l=0;l0;if(C==="positive"?(N=M*(_?1:.5),ae=re,W=ae=P):C==="negative"?(N=ae=P,W=M*(_?1:.5),_e=re):(N=W=M,ae=_e=re),Ee){var Ae=A.pointpos,ze=A.jitter,Ce=A.marker.size/2,me=0;Ae+ze>=0&&(me=re*(Ae+ze),me>N?(Te=!0,ge=Ce,Me=me):me>ae&&(ge=Ce,Me=N)),me<=N&&(Me=N);var Re=0;Ae-ze<=0&&(Re=-re*(Ae-ze),Re>W?(Te=!0,ie=Ce,ke=Re):Re>_e&&(ie=Ce,ke=W)),Re<=W&&(ke=W)}else Me=N,ke=W;var ce=new Array(c.length);for(u=0;u{"use strict";var MT=xa(),n2=Mr(),Zyt=ao(),v1e=5,Xyt=.01;function Yyt(e,t,r,n){var i=e._context.staticPlot,a=t.xaxis,o=t.yaxis;n2.makeTraceGroups(n,r,"trace boxes").each(function(s){var l=MT.select(this),u=s[0],c=u.t,f=u.trace;if(c.wdPos=c.bdPos*f.whiskerwidth,f.visible!==!0||c.empty){l.remove();return}var h,d;f.orientation==="h"?(h=o,d=a):(h=a,d=o),p1e(l,{pos:h,val:d},f,c,i),g1e(l,{x:a,y:o},f,c),m1e(l,{pos:h,val:d},f,c)})}function p1e(e,t,r,n,i){var a=r.orientation==="h",o=t.val,s=t.pos,l=!!s.rangebreaks,u=n.bPos,c=n.wdPos||0,f=n.bPosPxOffset||0,h=r.whiskerwidth||0,d=r.showwhiskers!==!1,v=r.notched||!1,x=v?1-2*r.notchwidth:1,b,g;Array.isArray(n.bdPos)?(b=n.bdPos[0],g=n.bdPos[1]):(b=n.bdPos,g=n.bdPos);var E=e.selectAll("path.box").data(r.type!=="violin"||r.box.visible?n2.identity:[]);E.enter().append("path").style("vector-effect",i?"none":"non-scaling-stroke").attr("class","box"),E.exit().remove(),E.each(function(k){if(k.empty)return MT.select(this).attr("d","M0,0Z");var A=s.c2l(k.pos+u,!0),L=s.l2p(A-b)+f,_=s.l2p(A+g)+f,C=l?(L+_)/2:s.l2p(A)+f,M=r.whiskerwidth,p=l?L*M+(1-M)*C:s.l2p(A-c)+f,P=l?_*M+(1-M)*C:s.l2p(A+c)+f,T=s.l2p(A-b*x)+f,F=s.l2p(A+g*x)+f,q=r.sizemode==="sd",V=o.c2p(q?k.mean-k.sd:k.q1,!0),H=q?o.c2p(k.mean+k.sd,!0):o.c2p(k.q3,!0),X=n2.constrain(q?o.c2p(k.mean,!0):o.c2p(k.med,!0),Math.min(V,H)+1,Math.max(V,H)-1),G=k.lf===void 0||r.boxpoints===!1||q,N=o.c2p(G?k.min:k.lf,!0),W=o.c2p(G?k.max:k.uf,!0),re=o.c2p(k.ln,!0),ae=o.c2p(k.un,!0);a?MT.select(this).attr("d","M"+X+","+T+"V"+F+"M"+V+","+L+"V"+_+(v?"H"+re+"L"+X+","+F+"L"+ae+","+_:"")+"H"+H+"V"+L+(v?"H"+ae+"L"+X+","+T+"L"+re+","+L:"")+"Z"+(d?"M"+V+","+C+"H"+N+"M"+H+","+C+"H"+W+(h===0?"":"M"+N+","+p+"V"+P+"M"+W+","+p+"V"+P):"")):MT.select(this).attr("d","M"+T+","+X+"H"+F+"M"+L+","+V+"H"+_+(v?"V"+re+"L"+F+","+X+"L"+_+","+ae:"")+"V"+H+"H"+L+(v?"V"+ae+"L"+T+","+X+"L"+L+","+re:"")+"Z"+(d?"M"+C+","+V+"V"+N+"M"+C+","+H+"V"+W+(h===0?"":"M"+p+","+N+"H"+P+"M"+p+","+W+"H"+P):""))})}function g1e(e,t,r,n){var i=t.x,a=t.y,o=n.bdPos,s=n.bPos,l=r.boxpoints||r.points;n2.seedPseudoRandom();var u=function(h){return h.forEach(function(d){d.t=n,d.trace=r}),h},c=e.selectAll("g.points").data(l?u:[]);c.enter().append("g").attr("class","points"),c.exit().remove();var f=c.selectAll("path").data(function(h){var d,v=h.pts2,x=Math.max((h.max-h.min)/10,h.q3-h.q1),b=x*1e-9,g=x*Xyt,E=[],k=0,A;if(r.jitter){if(x===0)for(k=1,E=new Array(v.length),d=0;dh.lo&&(P.so=!0)}return v});f.enter().append("path").classed("point",!0),f.exit().remove(),f.call(Zyt.translatePoints,i,a)}function m1e(e,t,r,n){var i=t.val,a=t.pos,o=!!a.rangebreaks,s=n.bPos,l=n.bPosPxOffset||0,u=r.boxmean||(r.meanline||{}).visible,c,f;Array.isArray(n.bdPos)?(c=n.bdPos[0],f=n.bdPos[1]):(c=n.bdPos,f=n.bdPos);var h=e.selectAll("path.mean").data(r.type==="box"&&r.boxmean||r.type==="violin"&&r.box.visible&&r.meanline.visible?n2.identity:[]);h.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),h.exit().remove(),h.each(function(d){var v=a.c2l(d.pos+s,!0),x=a.l2p(v-c)+l,b=a.l2p(v+f)+l,g=o?(x+b)/2:a.l2p(v)+l,E=i.c2p(d.mean,!0),k=i.c2p(d.mean-d.sd,!0),A=i.c2p(d.mean+d.sd,!0);r.orientation==="h"?MT.select(this).attr("d","M"+E+","+x+"V"+b+(u==="sd"?"m0,0L"+k+","+g+"L"+E+","+x+"L"+A+","+g+"Z":"")):MT.select(this).attr("d","M"+x+","+E+"H"+b+(u==="sd"?"m0,0L"+g+","+k+"L"+x+","+E+"L"+g+","+A+"Z":""))})}y1e.exports={plot:Yyt,plotBoxAndWhiskers:p1e,plotPoints:g1e,plotBoxMean:m1e}});var jI=ye((zor,_1e)=>{"use strict";var EV=xa(),kV=va(),CV=ao();function Kyt(e,t,r){var n=r||EV.select(e).selectAll("g.trace.boxes");n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=EV.select(this),o=i[0].trace,s=o.line.width;function l(f,h,d,v){f.style("stroke-width",h+"px").call(kV.stroke,d).call(kV.fill,v)}var u=a.selectAll("path.box");if(o.type==="candlestick")u.each(function(f){if(!f.empty){var h=EV.select(this),d=o[f.dir];l(h,d.line.width,d.line.color,d.fillcolor),h.style("opacity",o.selectedpoints&&!f.selected?.3:1)}});else{l(u,s,o.line.color,o.fillcolor),a.selectAll("path.mean").style({"stroke-width":s,"stroke-dasharray":2*s+"px,"+s+"px"}).call(kV.stroke,o.line.color);var c=a.selectAll("path.point");CV.pointStyle(c,o,e)}})}function Jyt(e,t,r){var n=t[0].trace,i=r.selectAll("path.point");n.selectedpoints?CV.selectedPointStyle(i,n):CV.pointStyle(i,n,e)}_1e.exports={style:Kyt,styleOnSelect:Jyt}});var PV=ye((For,T1e)=>{"use strict";var $yt=Qa(),LV=Mr(),A_=Nc(),x1e=va(),Qyt=LV.fillText;function e1t(e,t,r,n){var i=e.cd,a=i[0].trace,o=a.hoveron,s=[],l;return o.indexOf("boxes")!==-1&&(s=s.concat(b1e(e,t,r,n))),o.indexOf("points")!==-1&&(l=w1e(e,t,r)),n==="closest"?l?[l]:s:(l&&s.push(l),s)}function b1e(e,t,r,n){var i=e.cd,a=e.xa,o=e.ya,s=i[0].trace,l=i[0].t,u=s.type==="violin",c,f,h,d,v,x,b,g,E,k,A,L=l.bdPos,_,C,M=l.wHover,p=function(Ce){return h.c2l(Ce.pos)+l.bPos-h.c2l(x)};u&&s.side!=="both"?(s.side==="positive"&&(E=function(Ce){var me=p(Ce);return A_.inbox(me,me+M,k)},_=L,C=0),s.side==="negative"&&(E=function(Ce){var me=p(Ce);return A_.inbox(me-M,me,k)},_=0,C=L)):(E=function(Ce){var me=p(Ce);return A_.inbox(me-M,me+M,k)},_=C=L);var P;u?P=function(Ce){return A_.inbox(Ce.span[0]-v,Ce.span[1]-v,k)}:P=function(Ce){return A_.inbox(Ce.min-v,Ce.max-v,k)},s.orientation==="h"?(v=t,x=r,b=P,g=E,c="y",h=o,f="x",d=a):(v=r,x=t,b=E,g=P,c="x",h=a,f="y",d=o);var T=Math.min(1,L/Math.abs(h.r2c(h.range[1])-h.r2c(h.range[0])));k=e.maxHoverDistance-T,A=e.maxSpikeDistance-T;function F(Ce){return(b(Ce)+g(Ce))/2}var q=A_.getDistanceFunction(n,b,g,F);if(A_.getClosest(i,q,e),e.index===!1)return[];var V=i[e.index],H=s.line.color,X=(s.marker||{}).color;x1e.opacity(H)&&s.line.width?e.color=H:x1e.opacity(X)&&s.boxpoints?e.color=X:e.color=s.fillcolor,e[c+"0"]=h.c2p(V.pos+l.bPos-C,!0),e[c+"1"]=h.c2p(V.pos+l.bPos+_,!0),e[c+"LabelVal"]=V.orig_p!==void 0?V.orig_p:V.pos;var G=c+"Spike";e.spikeDistance=F(V)*A/k,e[G]=h.c2p(V.pos,!0);var N=s.boxmean||s.sizemode==="sd"||(s.meanline||{}).visible,W=s.boxpoints||s.points,re=W&&N?["max","uf","q3","med","mean","q1","lf","min"]:W&&!N?["max","uf","q3","med","q1","lf","min"]:!W&&N?["max","q3","med","mean","q1","min"]:["max","q3","med","q1","min"],ae=d.range[1]{"use strict";A1e.exports=function(t,r){return r.hoverOnBox&&(t.hoverOnBox=r.hoverOnBox),"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var IV=ye((Oor,M1e)=>{"use strict";M1e.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l;if(r===!1)for(s=0;s{"use strict";E1e.exports={attributes:v4(),layoutAttributes:p4(),supplyDefaults:m4().supplyDefaults,crossTraceDefaults:m4().crossTraceDefaults,supplyLayoutDefaults:UI().supplyLayoutDefaults,calc:MV(),crossTraceCalc:HI().crossTraceCalc,plot:GI().plot,style:jI().style,styleOnSelect:jI().styleOnSelect,hoverPoints:PV().hoverPoints,eventData:S1e(),selectPoints:IV(),moduleType:"trace",name:"box",basePlotModule:Jf(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","boxLayout","zoomScale"],meta:{}}});var L1e=ye((Nor,C1e)=>{"use strict";C1e.exports=k1e()});var ET=ye((Uor,P1e)=>{"use strict";var n0=Uc(),t1t=vl(),r1t=Su(),RV=Oc().axisHoverFormat,i1t=Wo().hovertemplateAttrs,n1t=Wo().texttemplateAttrs,a1t=Kl(),Pp=no().extendFlat;P1e.exports=Pp({z:{valType:"data_array",editType:"calc"},x:Pp({},n0.x,{impliedEdits:{xtype:"array"}}),x0:Pp({},n0.x0,{impliedEdits:{xtype:"scaled"}}),dx:Pp({},n0.dx,{impliedEdits:{xtype:"scaled"}}),y:Pp({},n0.y,{impliedEdits:{ytype:"array"}}),y0:Pp({},n0.y0,{impliedEdits:{ytype:"scaled"}}),dy:Pp({},n0.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:Pp({},n0.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:Pp({},n0.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:Pp({},n0.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:Pp({},n0.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:Pp({},n0.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:Pp({},n0.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:RV("x"),yhoverformat:RV("y"),zhoverformat:RV("z",1),hovertemplate:i1t(),texttemplate:n1t({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),textfont:r1t({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:Pp({},t1t.showlegend,{dflt:!1}),zorder:n0.zorder},a1t("",{cLetter:"z",autoColorDflt:!1}))});var ZI=ye((Vor,R1e)=>{"use strict";var o1t=uo(),WI=Mr(),s1t=ba();R1e.exports=function(t,r,n,i,a,o){var s=n("z");a=a||"x",o=o||"y";var l,u;if(s===void 0||!s.length)return 0;if(WI.isArray1D(s)){l=n(a),u=n(o);var c=WI.minRowLength(l),f=WI.minRowLength(u);if(c===0||f===0)return 0;r._length=Math.min(c,f,s.length)}else{if(l=I1e(a,n),u=I1e(o,n),!l1t(s))return 0;n("transpose"),r._length=null}var h=s1t.getComponentMethod("calendars","handleTraceDefaults");return h(t,r,[a,o],i),!0};function I1e(e,t){var r=t(e),n=r?t(e+"type","array"):"scaled";return n==="scaled"&&(t(e+"0"),t("d"+e)),r}function l1t(e){for(var t=!0,r=!1,n=!1,i,a=0;a0&&(r=!0);for(var o=0;o{"use strict";var D1e=Mr();z1e.exports=function(t,r){t("texttemplate");var n=D1e.extendFlat({},r.font,{color:"auto",size:"auto"});D1e.coerceFont(t,"textfont",n)}});var DV=ye((Gor,F1e)=>{"use strict";F1e.exports=function(t,r,n){var i=n("zsmooth");i===!1&&(n("xgap"),n("ygap")),n("zhoverformat")}});var B1e=ye((jor,O1e)=>{"use strict";var q1e=Mr(),u1t=ZI(),c1t=y4(),f1t=Pg(),h1t=DV(),d1t=Uh(),v1t=ET();O1e.exports=function(t,r,n,i){function a(s,l){return q1e.coerce(t,r,v1t,s,l)}var o=u1t(t,r,a,i);if(!o){r.visible=!1;return}f1t(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hovertemplate"),c1t(a,i),h1t(t,r,a,i),a("hoverongaps"),a("connectgaps",q1e.isArray1D(r.z)&&r.zsmooth!==!1),d1t(t,r,i,a,{prefix:"",cLetter:"z"}),a("zorder")}});var zV=ye((Wor,N1e)=>{"use strict";var kT=uo();N1e.exports={count:function(e,t,r){return r[e]++,1},sum:function(e,t,r,n){var i=n[t];return kT(i)?(i=Number(i),r[e]+=i,i):0},avg:function(e,t,r,n,i){var a=n[t];return kT(a)&&(a=Number(a),r[e]+=a,i[e]++),0},min:function(e,t,r,n){var i=n[t];if(kT(i))if(i=Number(i),kT(r[e])){if(r[e]>i){var a=i-r[e];return r[e]=i,a}}else return r[e]=i,i;return 0},max:function(e,t,r,n){var i=n[t];if(kT(i))if(i=Number(i),kT(r[e])){if(r[e]{"use strict";U1e.exports={percent:function(e,t){for(var r=e.length,n=100/t,i=0;i{"use strict";V1e.exports=function(t,r){for(var n=t.length,i=0,a=0;a{"use strict";var CT=es(),a2=CT.ONEAVGYEAR,H1e=CT.ONEAVGMONTH,YI=CT.ONEDAY,G1e=CT.ONEHOUR,j1e=CT.ONEMIN,W1e=CT.ONESEC,Z1e=Qa().tickIncrement;K1e.exports=function(t,r,n,i,a){var o=-1.1*r,s=-.1*r,l=t-s,u=n[0],c=n[1],f=Math.min(XI(u+s,u+l,i,a),XI(c+s,c+l,i,a)),h=Math.min(XI(u+o,u+s,i,a),XI(c+o,c+s,i,a)),d,v;if(f>h&&hYI){var x=d===a2?1:6,b=d===a2?"M12":"M1";return function(g,E){var k=i.c2d(g,a2,a),A=k.indexOf("-",x);A>0&&(k=k.substr(0,A));var L=i.d2c(k,0,a);if(LW1e?e>YI?e>a2*1.1?a2:e>H1e*1.1?H1e:YI:e>G1e?G1e:e>j1e?j1e:W1e:Math.pow(10,Math.floor(Math.log(e)/Math.LN10))}function p1t(e,t,r,n,i,a){if(n&&e>YI){var o=Y1e(t,i,a),s=Y1e(r,i,a),l=e===a2?0:1;return o[l]!==s[l]}return Math.floor(r/e)-Math.floor(t/e)>.1}function Y1e(e,t,r){var n=t.c2d(e,a2,r).split("-");return n[0]===""&&(n.unshift(),n[0]="-"+n[0]),n}});var UV=ye((Kor,Q1e)=>{"use strict";var BV=uo(),Vv=Mr(),J1e=ba(),H0=Qa(),g1t=c4(),$1e=zV(),m1t=FV(),y1t=qV(),_1t=OV();function x1t(e,t){var r=[],n=[],i=t.orientation==="h",a=H0.getFromId(e,i?t.yaxis:t.xaxis),o=i?"y":"x",s={x:"y",y:"x"}[o],l=t[o+"calendar"],u=t.cumulative,c,f=NV(e,t,a,o),h=f[0],d=f[1],v=typeof h.size=="string",x=[],b=v?x:h,g=[],E=[],k=[],A=0,L=t.histnorm,_=t.histfunc,C=L.indexOf("density")!==-1,M,p,P;u.enabled&&C&&(L=L.replace(/ ?density$/,""),C=!1);var T=_==="max"||_==="min",F=T?null:0,q=$1e.count,V=m1t[L],H=!1,X=function(me){return a.r2c(me,0,l)},G;for(Vv.isArrayOrTypedArray(t[s])&&_!=="count"&&(G=t[s],H=_==="avg",q=$1e[_]),c=X(h.start),p=X(h.end)+(c-H0.tickIncrement(c,h.size,!1,l))/1e6;c=0&&P=Ae;c--)if(n[c]){ze=c;break}for(c=Ae;c<=ze;c++)if(BV(r[c])&&BV(n[c])){var Ce={p:r[c],s:n[c],b:0};u.enabled||(Ce.pts=k[c],ae?Ce.ph0=Ce.ph1=k[c].length?d[k[c][0]]:r[c]:(t._computePh=!0,Ce.ph0=ie(x[c]),Ce.ph1=ie(x[c+1],!0))),Ee.push(Ce)}return Ee.length===1&&(Ee[0].width1=H0.tickIncrement(Ee[0].p,h.size,!1,l)-Ee[0].p),g1t(Ee,t),Vv.isArrayOrTypedArray(t.selectedpoints)&&Vv.tagSelected(Ee,t,ke),Ee}function NV(e,t,r,n,i){var a=n+"bins",o=e._fullLayout,s=t["_"+n+"bingroup"],l=o._histogramBinOpts[s],u=o.barmode==="overlay",c,f,h,d,v,x,b,g=function(ge){return r.r2c(ge,0,d)},E=function(ge){return r.c2r(ge,0,d)},k=r.type==="date"?function(ge){return ge||ge===0?Vv.cleanDate(ge,null,d):null}:function(ge){return BV(ge)?Number(ge):null};function A(ge,ie,Te){ie[ge+"Found"]?(ie[ge]=k(ie[ge]),ie[ge]===null&&(ie[ge]=Te[ge])):(x[ge]=ie[ge]=Te[ge],Vv.nestedProperty(f[0],a+"."+ge).set(Te[ge]))}if(t["_"+n+"autoBinFinished"])delete t["_"+n+"autoBinFinished"];else{f=l.traces;var L=[],_=!0,C=!1,M=!1;for(c=0;cr.r2l(G)&&(W=H0.tickIncrement(W,l.size,!0,d)),q.start=r.l2r(W),X||Vv.nestedProperty(t,a+".start").set(q.start)}var re=l.end,ae=r.r2l(F.end),_e=ae!==void 0;if((l.endFound||_e)&&ae!==r.r2l(re)){var Me=_e?ae:Vv.aggNums(Math.max,null,v);q.end=r.l2r(Me),_e||Vv.nestedProperty(t,a+".start").set(q.end)}var ke="autobin"+n;return t._input[ke]===!1&&(t._input[a]=Vv.extendFlat({},t[a]||{}),delete t._input[ke],delete t[ke]),[q,v]}function b1t(e,t,r,n,i){var a=e._fullLayout,o=w1t(e,t),s=!1,l=1/0,u=[t],c,f,h;for(c=0;c=0;n--)s(n);else if(t==="increasing"){for(n=1;n=0;n--)e[n]+=e[n+1];r==="exclude"&&(e.push(0),e.shift())}}Q1e.exports={calc:x1t,calcAllAutoBins:NV}});var s_e=ye((Jor,o_e)=>{"use strict";var e_e=Mr(),LT=Qa(),t_e=zV(),A1t=FV(),S1t=qV(),M1t=OV(),r_e=UV().calcAllAutoBins;o_e.exports=function(t,r){var n=LT.getFromId(t,r.xaxis),i=LT.getFromId(t,r.yaxis),a=r.xcalendar,o=r.ycalendar,s=function(Et){return n.r2c(Et,0,a)},l=function(Et){return i.r2c(Et,0,o)},u=function(Et){return n.c2r(Et,0,a)},c=function(Et){return i.c2r(Et,0,o)},f,h,d,v,x=r_e(t,r,n,"x"),b=x[0],g=x[1],E=r_e(t,r,i,"y"),k=E[0],A=E[1],L=r._length;g.length>L&&g.splice(L,g.length-L),A.length>L&&A.splice(L,A.length-L);var _=[],C=[],M=[],p=typeof b.size=="string",P=typeof k.size=="string",T=[],F=[],q=p?T:b,V=P?F:k,H=0,X=[],G=[],N=r.histnorm,W=r.histfunc,re=N.indexOf("density")!==-1,ae=W==="max"||W==="min",_e=ae?null:0,Me=t_e.count,ke=A1t[N],ge=!1,ie=[],Te=[],Ee="z"in r?r.z:"marker"in r&&Array.isArray(r.marker.color)?r.marker.color:"";Ee&&W!=="count"&&(ge=W==="avg",Me=t_e[W]);var Ae=b.size,ze=s(b.start),Ce=s(b.end)+(ze-LT.tickIncrement(ze,Ae,!1,a))/1e6;for(f=ze;f=0&&d=0&&v{"use strict";var Im=Mr(),l_e=es().BADNUM,u_e=Rg();c_e.exports=function(t,r,n,i,a,o){var s=t._length,l=r.makeCalcdata(t,i),u=n.makeCalcdata(t,a);l=u_e(t,r,i,l).vals,u=u_e(t,n,a,u).vals;var c=t.text,f=c!==void 0&&Im.isArray1D(c),h=t.hovertext,d=h!==void 0&&Im.isArray1D(h),v,x,b=Im.distinctVals(l),g=b.vals,E=Im.distinctVals(u),k=E.vals,A=[],L,_,C=k.length,M=g.length;for(v=0;v{"use strict";var E1t=uo(),k1t=Mr(),JI=es().BADNUM;f_e.exports=function(t,r,n,i){var a,o,s,l,u,c;function f(g){if(E1t(g))return+g}if(r&&r.transpose){for(a=0,u=0;u{"use strict";var C1t=Mr(),h_e=.01,L1t=[[-1,0],[1,0],[0,-1],[0,1]];function P1t(e){return .5-.25*Math.min(1,e*.5)}v_e.exports=function(t,r){var n=1,i;for(d_e(t,r),i=0;ih_e;i++)n=d_e(t,r,P1t(n));return n>h_e&&C1t.log("interp2d didn't converge quickly",n),t};function d_e(e,t,r){var n=0,i,a,o,s,l,u,c,f,h,d,v,x,b;for(s=0;sx&&(n=Math.max(n,Math.abs(e[a][o]-v)/(b-x))))}return n}});var e8=ye((tsr,p_e)=>{"use strict";var I1t=Mr().maxRowLength;p_e.exports=function(t){var r=[],n={},i=[],a=t[0],o=[],s=[0,0,0],l=I1t(t),u,c,f,h,d,v,x,b;for(c=0;c=0;d--)h=i[d],c=h[0],f=h[1],v=((n[[c-1,f]]||s)[2]+(n[[c+1,f]]||s)[2]+(n[[c,f-1]]||s)[2]+(n[[c,f+1]]||s)[2])/20,v&&(x[h]=[c,f,v],i.splice(d,1),b=!0);if(!b)throw"findEmpties iterated with no new neighbors";for(h in x)n[h]=x[h],r.push(x[h])}return r.sort(function(g,E){return E[2]-g[2]})}});var VV=ye((rsr,y_e)=>{"use strict";var g_e=ba(),m_e=Mr().isArrayOrTypedArray;y_e.exports=function(t,r,n,i,a,o){var s=[],l=g_e.traceIs(t,"contour"),u=g_e.traceIs(t,"histogram"),c,f,h,d=m_e(r)&&r.length>1;if(d&&!u&&o.type!=="category"){var v=r.length;if(v<=a){if(l)s=Array.from(r).slice(0,a);else if(a===1)o.type==="log"?s=[.5*r[0],2*r[0]]:s=[r[0]-.5,r[0]+.5];else if(o.type==="log"){for(s=[Math.pow(r[0],1.5)/Math.pow(r[1],.5)],h=1;h{"use strict";var __e=ba(),HV=Mr(),t8=Qa(),x_e=Rg(),R1t=s_e(),D1t=zv(),z1t=KI(),F1t=$I(),q1t=QI(),O1t=e8(),r8=VV(),GV=es().BADNUM;w_e.exports=function(t,r){var n=t8.getFromId(t,r.xaxis||"x"),i=t8.getFromId(t,r.yaxis||"y"),a=__e.traceIs(r,"contour"),o=__e.traceIs(r,"histogram"),s=a?"best":r.zsmooth,l,u,c,f,h,d,v,x,b,g,E;if(n._minDtick=0,i._minDtick=0,o)E=R1t(t,r),f=E.orig_x,l=E.x,u=E.x0,c=E.dx,x=E.orig_y,h=E.y,d=E.y0,v=E.dy,b=E.z;else{var k=r.z;HV.isArray1D(k)?(z1t(r,n,i,"x","y",["z"]),l=r._x,h=r._y,k=r._z):(f=r.x?n.makeCalcdata(r,"x"):[],x=r.y?i.makeCalcdata(r,"y"):[],l=x_e(r,n,"x",f).vals,h=x_e(r,i,"y",x).vals,r._x=l,r._y=h),u=r.x0,c=r.dx,d=r.y0,v=r.dy,b=F1t(k,r,n,i)}(n.rangebreaks||i.rangebreaks)&&(b=B1t(l,h,b),o||(l=b_e(l),h=b_e(h),r._x=l,r._y=h)),!o&&(a||r.connectgaps)&&(r._emptypoints=O1t(b),q1t(b,r._emptypoints));function A(q){s=r._input.zsmooth=r.zsmooth=!1,HV.warn('cannot use zsmooth: "fast": '+q)}function L(q){if(q.length>1){var V=(q[q.length-1]-q[0])/(q.length-1),H=Math.abs(V/100);for(g=0;gH)return!1}return!0}r._islinear=!1,n.type==="log"||i.type==="log"?s==="fast"&&A("log axis found"):L(l)?L(h)?r._islinear=!0:s==="fast"&&A("y scale is not linear"):s==="fast"&&A("x scale is not linear");var _=HV.maxRowLength(b),C=r.xtype==="scaled"?"":l,M=r8(r,C,u,c,_,n),p=r.ytype==="scaled"?"":h,P=r8(r,p,d,v,b.length,i);r._extremes[n._id]=t8.findExtremes(n,M),r._extremes[i._id]=t8.findExtremes(i,P);var T={x:M,y:P,z:b,text:r._text||r.text,hovertext:r._hovertext||r.hovertext};if(r.xperiodalignment&&f&&(T.orig_x=f),r.yperiodalignment&&x&&(T.orig_y=x),C&&C.length===M.length-1&&(T.xCenter=C),p&&p.length===P.length-1&&(T.yCenter=p),o&&(T.xRanges=E.xRanges,T.yRanges=E.yRanges,T.pts=E.pts),a||D1t(t,r,{vals:b,cLetter:"z"}),a&&r.contours&&r.contours.coloring==="heatmap"){var F={type:r.type==="contour"?"heatmap":"histogram2d",xcalendar:r.xcalendar,ycalendar:r.ycalendar};T.xfill=r8(F,C,u,c,_,n),T.yfill=r8(F,p,d,v,b.length,i)}return[T]};function b_e(e){for(var t=[],r=e.length,n=0;n{"use strict";n8.CSS_DECLARATIONS=[["image-rendering","optimizeSpeed"],["image-rendering","-moz-crisp-edges"],["image-rendering","-o-crisp-edges"],["image-rendering","-webkit-optimize-contrast"],["image-rendering","optimize-contrast"],["image-rendering","crisp-edges"],["image-rendering","pixelated"]];n8.STYLE=n8.CSS_DECLARATIONS.map(function(e){return e.join(": ")+"; "}).join("")});var jV=ye((asr,S_e)=>{"use strict";var T_e=a8(),N1t=ao(),A_e=Mr(),PT=null;function U1t(){if(PT!==null)return PT;PT=!1;var e=A_e.isSafari()||A_e.isIOS();if(window.navigator.userAgent&&!e){var t=Array.from(T_e.CSS_DECLARATIONS).reverse(),r=window.CSS&&window.CSS.supports||window.supportsCSS;if(typeof r=="function")PT=t.some(function(o){return r.apply(null,o)});else{var n=N1t.tester.append("image").attr("style",T_e.STYLE),i=window.getComputedStyle(n.node()),a=i.imageRendering;PT=t.some(function(o){var s=o[1];return a===s||a===s.toLowerCase()}),n.remove()}}return PT}S_e.exports=U1t});var o8=ye((osr,D_e)=>{"use strict";var M_e=xa(),V1t=id(),H1t=ba(),G1t=ao(),j1t=Qa(),G0=Mr(),E_e=Ll(),W1t=JP(),Z1t=va(),X1t=Mu().extractOpts,Y1t=Mu().makeColorScaleFuncFromTrace,K1t=Zp(),J1t=Nh(),WV=J1t.LINE_SPACING,$1t=jV(),Q1t=a8().STYLE,I_e="heatmap-label";function R_e(e){return e.selectAll("g."+I_e)}function k_e(e){R_e(e).remove()}D_e.exports=function(e,t,r,n){var i=t.xaxis,a=t.yaxis;G0.makeTraceGroups(n,r,"hm").each(function(o){var s=M_e.select(this),l=o[0],u=l.trace,c=u.xgap||0,f=u.ygap||0,h=l.z,d=l.x,v=l.y,x=l.xCenter,b=l.yCenter,g=H1t.traceIs(u,"contour"),E=g?"best":u.zsmooth,k=h.length,A=G0.maxRowLength(h),L=!1,_=!1,C,M,p,P,T,F,q,V;for(F=0;C===void 0&&F0;)M=i.c2p(d[F]),F--;for(M0;)T=a.c2p(v[F]),F--;T=i._length||M<=0||P>=a._length||T<=0;if(W){var re=s.selectAll("image").data([]);re.exit().remove(),k_e(s);return}var ae,_e;H==="fast"?(ae=A,_e=k):(ae=G,_e=N);var Me=document.createElement("canvas");Me.width=ae,Me.height=_e;var ke=Me.getContext("2d",{willReadFrequently:!0}),ge=Y1t(u,{noNumericCheck:!0,returnArray:!0}),ie,Te;H==="fast"?(ie=L?function(Pi){return A-1-Pi}:G0.identity,Te=_?function(Pi){return k-1-Pi}:G0.identity):(ie=function(Pi){return G0.constrain(Math.round(i.c2p(d[Pi])-C),0,G)},Te=function(Pi){return G0.constrain(Math.round(a.c2p(v[Pi])-P),0,N)});var Ee=Te(0),Ae=[Ee,Ee],ze=L?0:1,Ce=_?0:1,me=0,Re=0,ce=0,Ge=0,nt,ct,qt,rt,ot;function Rt(Pi,Gi){if(Pi!==void 0){var Ki=ge(Pi);return Ki[0]=Math.round(Ki[0]),Ki[1]=Math.round(Ki[1]),Ki[2]=Math.round(Ki[2]),me+=Gi,Re+=Ki[0]*Gi,ce+=Ki[1]*Gi,Ge+=Ki[2]*Gi,Ki}return[0,0,0,0]}function kt(Pi,Gi,Ki,ka){var jn=Pi[Ki.bin0];if(jn===void 0)return Rt(void 0,1);var la=Pi[Ki.bin1],Fa=Gi[Ki.bin0],Ra=Gi[Ki.bin1],jo=la-jn||0,oa=Fa-jn||0,Sn;return la===void 0?Ra===void 0?Sn=0:Fa===void 0?Sn=2*(Ra-jn):Sn=(2*Ra-Fa-jn)*2/3:Ra===void 0?Fa===void 0?Sn=0:Sn=(2*jn-la-Fa)*2/3:Fa===void 0?Sn=(2*Ra-la-jn)*2/3:Sn=Ra+jn-la-Fa,Rt(jn+Ki.frac*jo+ka.frac*(oa+Ki.frac*Sn))}if(H!=="default"){var Ct=0,Yt;try{Yt=new Uint8Array(ae*_e*4)}catch(Pi){Yt=new Array(ae*_e*4)}if(H==="smooth"){var xr=x||d,er=b||v,Ke=new Array(xr.length),xt=new Array(er.length),bt=new Array(G),Lt=x?L_e:C_e,St=b?L_e:C_e,Et,dt,Ht;for(F=0;Far||ar>a._length))for(q=Se;qai||ai>i._length)){var jr=W1t({x:Qr,y:Vt},u,e._fullLayout);jr.x=Qr,jr.y=Vt;var ri=l.z[F][q];ri===void 0?(jr.z="",jr.zLabel=""):(jr.z=ri,jr.zLabel=j1t.tickText(Ve,ri,"hover").text);var bi=l.text&&l.text[F]&&l.text[F][q];(bi===void 0||bi===!1)&&(bi=""),jr.text=bi;var nn=G0.texttemplateString(Ne,jr,e._fullLayout._d3locale,jr,u._meta||{});if(nn){var Wi=nn.split("
"),Ni=Wi.length,_n=0;for(V=0;V{"use strict";z_e.exports={min:"zmin",max:"zmax"}});var s8=ye((lsr,F_e)=>{"use strict";var e_t=xa();F_e.exports=function(t){e_t.select(t).selectAll(".hm image").style("opacity",function(r){return r.trace.opacity})}});var u8=ye((usr,O_e)=>{"use strict";var q_e=Nc(),_4=Mr(),l8=_4.isArrayOrTypedArray,t_t=Qa(),r_t=Mu().extractOpts;O_e.exports=function(t,r,n,i,a){a||(a={});var o=a.isContour,s=t.cd[0],l=s.trace,u=t.xa,c=t.ya,f=s.x,h=s.y,d=s.z,v=s.xCenter,x=s.yCenter,b=s.zmask,g=l.zhoverformat,E=f,k=h,A,L,_,C;if(t.index!==!1){try{_=Math.round(t.index[1]),C=Math.round(t.index[0])}catch(re){_4.error("Error hovering on heatmap, pointNumber must be [row,col], found:",t.index);return}if(_<0||_>=d[0].length||C<0||C>d.length)return}else{if(q_e.inbox(r-f[0],r-f[f.length-1],0)>0||q_e.inbox(n-h[0],n-h[h.length-1],0)>0)return;if(o){var M;for(E=[2*f[0]-f[1]],M=1;M{"use strict";B_e.exports={attributes:ET(),supplyDefaults:B1e(),calc:i8(),plot:o8(),colorbar:S_(),style:s8(),hoverPoints:u8(),moduleType:"trace",name:"heatmap",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","showLegend"],meta:{}}});var V_e=ye((fsr,U_e)=>{"use strict";U_e.exports=N_e()});var ZV=ye((hsr,H_e)=>{"use strict";H_e.exports=function(t,r){return{start:{valType:"any",editType:"calc"},end:{valType:"any",editType:"calc"},size:{valType:"any",editType:"calc"},editType:"calc"}}});var j_e=ye((dsr,G_e)=>{"use strict";G_e.exports={eventDataKeys:["binNumber"]}});var c8=ye((vsr,X_e)=>{"use strict";var Ip=Lm(),W_e=Oc().axisHoverFormat,i_t=Wo().hovertemplateAttrs,n_t=Wo().texttemplateAttrs,XV=Su(),Z_e=ZV(),a_t=j_e(),YV=no().extendFlat;X_e.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},xhoverformat:W_e("x"),yhoverformat:W_e("y"),text:YV({},Ip.text,{}),hovertext:YV({},Ip.hovertext,{}),orientation:Ip.orientation,histfunc:{valType:"enumerated",values:["count","sum","avg","min","max"],dflt:"count",editType:"calc"},histnorm:{valType:"enumerated",values:["","percent","probability","density","probability density"],dflt:"",editType:"calc"},cumulative:{enabled:{valType:"boolean",dflt:!1,editType:"calc"},direction:{valType:"enumerated",values:["increasing","decreasing"],dflt:"increasing",editType:"calc"},currentbin:{valType:"enumerated",values:["include","exclude","half"],dflt:"include",editType:"calc"},editType:"calc"},nbinsx:{valType:"integer",min:0,dflt:0,editType:"calc"},xbins:Z_e("x",!0),nbinsy:{valType:"integer",min:0,dflt:0,editType:"calc"},ybins:Z_e("y",!0),autobinx:{valType:"boolean",dflt:null,editType:"calc"},autobiny:{valType:"boolean",dflt:null,editType:"calc"},bingroup:{valType:"string",dflt:"",editType:"calc"},hovertemplate:i_t({},{keys:a_t.eventDataKeys}),texttemplate:n_t({arrayOk:!1,editType:"plot"},{keys:["label","value"]}),textposition:YV({},Ip.textposition,{arrayOk:!1}),textfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),outsidetextfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextanchor:Ip.insidetextanchor,textangle:Ip.textangle,cliponaxis:Ip.cliponaxis,constraintext:Ip.constraintext,marker:Ip.marker,offsetgroup:Ip.offsetgroup,alignmentgroup:Ip.alignmentgroup,selected:Ip.selected,unselected:Ip.unselected,zorder:Ip.zorder}});var $_e=ye((psr,J_e)=>{"use strict";var Y_e=ba(),x4=Mr(),K_e=va(),o_t=r0().handleText,s_t=zI(),l_t=c8();J_e.exports=function(t,r,n,i){function a(E,k){return x4.coerce(t,r,l_t,E,k)}var o=a("x"),s=a("y"),l=a("cumulative.enabled");l&&(a("cumulative.direction"),a("cumulative.currentbin")),a("text");var u=a("textposition");o_t(t,r,i,a,u,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat");var c=a("orientation",s&&!o?"h":"v"),f=c==="v"?"x":"y",h=c==="v"?"y":"x",d=o&&s?Math.min(x4.minRowLength(o)&&x4.minRowLength(s)):x4.minRowLength(r[f]||[]);if(!d){r.visible=!1;return}r._length=d;var v=Y_e.getComponentMethod("calendars","handleTraceDefaults");v(t,r,["x","y"],i);var x=r[h];x&&a("histfunc"),a("histnorm"),a("autobin"+f),s_t(t,r,a,n,i),x4.coerceSelectionMarkerOpacity(r,a);var b=(r.marker.line||{}).color,g=Y_e.getComponentMethod("errorbars","supplyDefaults");g(t,r,b||K_e.defaultLine,{axis:"y"}),g(t,r,b||K_e.defaultLine,{axis:"x",inherit:"y"}),a("zorder")}});var h8=ye((gsr,txe)=>{"use strict";var b4=Mr(),u_t=af(),f8=ba().traceIs,c_t=Hb(),f_t=r0().validateCornerradius,Q_e=b4.nestedProperty,KV=Bb().getAxisGroup,exe=[{aStr:{x:"xbins.start",y:"ybins.start"},name:"start"},{aStr:{x:"xbins.end",y:"ybins.end"},name:"end"},{aStr:{x:"xbins.size",y:"ybins.size"},name:"size"},{aStr:{x:"nbinsx",y:"nbinsy"},name:"nbins"}],h_t=["x","y"];txe.exports=function(t,r){var n=r._histogramBinOpts={},i=[],a={},o=[],s,l,u,c,f,h,d;function v(H,X){return b4.coerce(s._input,s,s._module.attributes,H,X)}function x(H){return H.orientation==="v"?"x":"y"}function b(H,X){var G=u_t.getFromTrace({_fullLayout:r},H,X);return G.type}function g(H,X,G){var N=H.uid+"__"+G;X||(X=N);var W=b(H,G),re=H[G+"calendar"]||"",ae=n[X],_e=!0;ae&&(W===ae.axType&&re===ae.calendar?(_e=!1,ae.traces.push(H),ae.dirs.push(G)):(X=N,W!==ae.axType&&b4.warn(["Attempted to group the bins of trace",H.index,"set on a","type:"+W,"axis","with bins on","type:"+ae.axType,"axis."].join(" ")),re!==ae.calendar&&b4.warn(["Attempted to group the bins of trace",H.index,"set with a",re,"calendar","with bins",ae.calendar?"on a "+ae.calendar+" calendar":"w/o a set calendar"].join(" ")))),_e&&(n[X]={traces:[H],dirs:[G],axType:W,calendar:H[G+"calendar"]||""}),H["_"+G+"bingroup"]=X}for(f=0;f{"use strict";var d_t=TT().hoverPoints,v_t=Qa().hoverLabelText;rxe.exports=function(t,r,n,i,a){var o=d_t(t,r,n,i,a);if(o){t=o[0];var s=t.cd[t.index],l=t.cd[0].trace;if(!l.cumulative.enabled){var u=l.orientation==="h"?"y":"x";t[u+"Label"]=v_t(t[u+"a"],[s.ph0,s.ph1],l[u+"hoverformat"])}return o}}});var JV=ye((ysr,nxe)=>{"use strict";nxe.exports=function(t,r,n,i,a){if(t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"zLabelVal"in r&&(t.z=r.zLabelVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),!(n.cumulative||{}).enabled){var o=Array.isArray(a)?i[0].pts[a[0]][a[1]]:i[a].pts;t.pointNumbers=o,t.binNumber=t.pointNumber,delete t.pointNumber,delete t.pointIndex;var s;if(n._indexToPoints){s=[];for(var l=0;l{"use strict";axe.exports={attributes:c8(),layoutAttributes:DI(),supplyDefaults:$_e(),crossTraceDefaults:h8(),supplyLayoutDefaults:yV(),calc:UV().calc,crossTraceCalc:Gb().crossTraceCalc,plot:i2().plot,layerName:"barlayer",style:N0().style,styleOnSelect:N0().styleOnSelect,colorbar:Kd(),hoverPoints:ixe(),selectPoints:AT(),eventData:JV(),moduleType:"trace",name:"histogram",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","bar","histogram","oriented","errorBarsOK","showLegend"],meta:{}}});var lxe=ye((xsr,sxe)=>{"use strict";sxe.exports=oxe()});var v8=ye((bsr,cxe)=>{"use strict";var Vg=c8(),uxe=ZV(),d8=ET(),p_t=vl(),$V=Oc().axisHoverFormat,g_t=Wo().hovertemplateAttrs,m_t=Wo().texttemplateAttrs,y_t=Kl(),w4=no().extendFlat;cxe.exports=w4({x:Vg.x,y:Vg.y,z:{valType:"data_array",editType:"calc"},marker:{color:{valType:"data_array",editType:"calc"},editType:"calc"},histnorm:Vg.histnorm,histfunc:Vg.histfunc,nbinsx:Vg.nbinsx,xbins:uxe("x"),nbinsy:Vg.nbinsy,ybins:uxe("y"),autobinx:Vg.autobinx,autobiny:Vg.autobiny,bingroup:w4({},Vg.bingroup,{}),xbingroup:w4({},Vg.bingroup,{}),ybingroup:w4({},Vg.bingroup,{}),xgap:d8.xgap,ygap:d8.ygap,zsmooth:d8.zsmooth,xhoverformat:$V("x"),yhoverformat:$V("y"),zhoverformat:$V("z",1),hovertemplate:g_t({},{keys:"z"}),texttemplate:m_t({arrayOk:!1,editType:"plot"},{keys:"z"}),textfont:d8.textfont,showlegend:w4({},p_t.showlegend,{dflt:!1})},y_t("",{cLetter:"z",autoColorDflt:!1}))});var QV=ye((wsr,hxe)=>{"use strict";var __t=ba(),fxe=Mr();hxe.exports=function(t,r,n,i){var a=n("x"),o=n("y"),s=fxe.minRowLength(a),l=fxe.minRowLength(o);if(!s||!l){r.visible=!1;return}r._length=Math.min(s,l);var u=__t.getComponentMethod("calendars","handleTraceDefaults");u(t,r,["x","y"],i);var c=n("z")||n("marker.color");c&&n("histfunc"),n("histnorm"),n("autobinx"),n("autobiny")}});var vxe=ye((Tsr,dxe)=>{"use strict";var x_t=Mr(),b_t=QV(),w_t=DV(),T_t=Uh(),A_t=y4(),S_t=v8();dxe.exports=function(t,r,n,i){function a(o,s){return x_t.coerce(t,r,S_t,o,s)}b_t(t,r,a,i),r.visible!==!1&&(w_t(t,r,a,i),T_t(t,r,i,a,{prefix:"",cLetter:"z"}),a("hovertemplate"),A_t(a,i),a("xhoverformat"),a("yhoverformat"))}});var mxe=ye((Asr,gxe)=>{"use strict";var M_t=u8(),pxe=Qa().hoverLabelText;gxe.exports=function(t,r,n,i,a){var o=M_t(t,r,n,i,a);if(o){t=o[0];var s=t.index,l=s[0],u=s[1],c=t.cd[0],f=c.trace,h=c.xRanges[u],d=c.yRanges[l];return t.xLabel=pxe(t.xa,[h[0],h[1]],f.xhoverformat),t.yLabel=pxe(t.ya,[d[0],d[1]],f.yhoverformat),o}}});var _xe=ye((Ssr,yxe)=>{"use strict";yxe.exports={attributes:v8(),supplyDefaults:vxe(),crossTraceDefaults:h8(),calc:i8(),plot:o8(),layerName:"heatmaplayer",colorbar:S_(),style:s8(),hoverPoints:mxe(),eventData:JV(),moduleType:"trace",name:"histogram2d",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","histogram","showLegend"],meta:{}}});var bxe=ye((Msr,xxe)=>{"use strict";xxe.exports=_xe()});var p8=ye((Esr,wxe)=>{"use strict";wxe.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}});var T4=ye((ksr,Mxe)=>{"use strict";var Gh=ET(),g8=Uc(),Axe=Oc(),eH=Axe.axisHoverFormat,E_t=Axe.descriptionOnlyNumbers,k_t=Kl(),C_t=Ed().dash,L_t=Su(),IT=no().extendFlat,Sxe=p8(),P_t=Sxe.COMPARISON_OPS2,I_t=Sxe.INTERVAL_OPS,Txe=g8.line;Mxe.exports=IT({z:Gh.z,x:Gh.x,x0:Gh.x0,dx:Gh.dx,y:Gh.y,y0:Gh.y0,dy:Gh.dy,xperiod:Gh.xperiod,yperiod:Gh.yperiod,xperiod0:g8.xperiod0,yperiod0:g8.yperiod0,xperiodalignment:Gh.xperiodalignment,yperiodalignment:Gh.yperiodalignment,text:Gh.text,hovertext:Gh.hovertext,transpose:Gh.transpose,xtype:Gh.xtype,ytype:Gh.ytype,xhoverformat:eH("x"),yhoverformat:eH("y"),zhoverformat:eH("z",1),hovertemplate:Gh.hovertemplate,texttemplate:IT({},Gh.texttemplate,{}),textfont:IT({},Gh.textfont,{}),hoverongaps:Gh.hoverongaps,connectgaps:IT({},Gh.connectgaps,{}),fillcolor:{valType:"color",editType:"calc"},autocontour:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"contours.start":void 0,"contours.end":void 0,"contours.size":void 0}},ncontours:{valType:"integer",dflt:15,min:1,editType:"calc"},contours:{type:{valType:"enumerated",values:["levels","constraint"],dflt:"levels",editType:"calc"},start:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},end:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},size:{valType:"number",dflt:null,min:0,editType:"plot",impliedEdits:{"^autocontour":!1}},coloring:{valType:"enumerated",values:["fill","heatmap","lines","none"],dflt:"fill",editType:"calc"},showlines:{valType:"boolean",dflt:!0,editType:"plot"},showlabels:{valType:"boolean",dflt:!1,editType:"plot"},labelfont:L_t({editType:"plot",colorEditType:"style"}),labelformat:{valType:"string",dflt:"",editType:"plot",description:E_t("contour label")},operation:{valType:"enumerated",values:[].concat(P_t).concat(I_t),dflt:"=",editType:"calc"},value:{valType:"any",dflt:0,editType:"calc"},editType:"calc",impliedEdits:{autocontour:!1}},line:{color:IT({},Txe.color,{editType:"style+colorbars"}),width:{valType:"number",min:0,editType:"style+colorbars"},dash:C_t,smoothing:IT({},Txe.smoothing,{}),editType:"plot"},zorder:g8.zorder},k_t("",{cLetter:"z",autoColorDflt:!1,editTypeOverride:"calc"}))});var rH=ye((Csr,kxe)=>{"use strict";var Hv=v8(),qy=T4(),R_t=Kl(),tH=Oc().axisHoverFormat,Exe=no().extendFlat;kxe.exports=Exe({x:Hv.x,y:Hv.y,z:Hv.z,marker:Hv.marker,histnorm:Hv.histnorm,histfunc:Hv.histfunc,nbinsx:Hv.nbinsx,xbins:Hv.xbins,nbinsy:Hv.nbinsy,ybins:Hv.ybins,autobinx:Hv.autobinx,autobiny:Hv.autobiny,bingroup:Hv.bingroup,xbingroup:Hv.xbingroup,ybingroup:Hv.ybingroup,autocontour:qy.autocontour,ncontours:qy.ncontours,contours:qy.contours,line:{color:qy.line.color,width:Exe({},qy.line.width,{dflt:.5}),dash:qy.line.dash,smoothing:qy.line.smoothing,editType:"plot"},xhoverformat:tH("x"),yhoverformat:tH("y"),zhoverformat:tH("z",1),hovertemplate:Hv.hovertemplate,texttemplate:qy.texttemplate,textfont:qy.textfont},R_t("",{cLetter:"z",editTypeOverride:"calc"}))});var m8=ye((Lsr,Cxe)=>{"use strict";Cxe.exports=function(t,r,n,i){var a=i("contours.start"),o=i("contours.end"),s=a===!1||o===!1,l=n("contours.size"),u;s?u=r.autocontour=!0:u=n("autocontour",!1),(u||!l)&&n("ncontours")}});var iH=ye((Psr,Lxe)=>{"use strict";var D_t=Mr();Lxe.exports=function(t,r,n,i){i||(i={});var a=t("contours.showlabels");if(a){var o=r.font;D_t.coerceFont(t,"contours.labelfont",o,{overrideDflt:{color:n}}),t("contours.labelformat")}i.hasHover!==!1&&t("zhoverformat")}});var y8=ye((Isr,Pxe)=>{"use strict";var z_t=Uh(),F_t=iH();Pxe.exports=function(t,r,n,i,a){var o=n("contours.coloring"),s,l="";o==="fill"&&(s=n("contours.showlines")),s!==!1&&(o!=="lines"&&(l=n("line.color","#000")),n("line.width",.5),n("line.dash")),o!=="none"&&(t.showlegend!==!0&&(r.showlegend=!1),r._dfltShowLegend=!1,z_t(t,r,i,n,{prefix:"",cLetter:"z"})),n("line.smoothing"),F_t(n,i,l,a)}});var zxe=ye((Rsr,Dxe)=>{"use strict";var Ixe=Mr(),q_t=QV(),O_t=m8(),B_t=y8(),N_t=y4(),Rxe=rH();Dxe.exports=function(t,r,n,i){function a(s,l){return Ixe.coerce(t,r,Rxe,s,l)}function o(s){return Ixe.coerce2(t,r,Rxe,s)}q_t(t,r,a,i),r.visible!==!1&&(O_t(t,r,a,o),B_t(t,r,a,i),a("xhoverformat"),a("yhoverformat"),a("hovertemplate"),r.contours&&r.contours.coloring==="heatmap"&&N_t(a,i))}});var oH=ye((Dsr,qxe)=>{"use strict";var aH=Qa(),nH=Mr();qxe.exports=function(t,r){var n=t.contours;if(t.autocontour){var i=t.zmin,a=t.zmax;(t.zauto||i===void 0)&&(i=nH.aggNums(Math.min,null,r)),(t.zauto||a===void 0)&&(a=nH.aggNums(Math.max,null,r));var o=Fxe(i,a,t.ncontours);n.size=o.dtick,n.start=aH.tickFirst(o),o.range.reverse(),n.end=aH.tickFirst(o),n.start===i&&(n.start+=n.size),n.end===a&&(n.end-=n.size),n.start>n.end&&(n.start=n.end=(n.start+n.end)/2),t._input.contours||(t._input.contours={}),nH.extendFlat(t._input.contours,{start:n.start,end:n.end,size:n.size}),t._input.autocontour=!0}else if(n.type!=="constraint"){var s=n.start,l=n.end,u=t._input.contours;if(s>l&&(n.start=u.start=l,l=n.end=u.end=s,s=n.start),!(n.size>0)){var c;s===l?c=1:c=Fxe(s,l,t.ncontours).dtick,u.size=n.size=c}}};function Fxe(e,t,r){var n={type:"linear",range:[e,t]};return aH.autoTicks(n,(t-e)/(r||15)),n}});var A4=ye((zsr,Oxe)=>{"use strict";Oxe.exports=function(t){return t.end+t.size/1e6}});var sH=ye((Fsr,Nxe)=>{"use strict";var Bxe=Mu(),U_t=i8(),V_t=oH(),H_t=A4();Nxe.exports=function(t,r){var n=U_t(t,r),i=n[0].z;V_t(r,i);var a=r.contours,o=Bxe.extractOpts(r),s;if(a.coloring==="heatmap"&&o.auto&&r.autocontour===!1){var l=a.start,u=H_t(a),c=a.size||1,f=Math.floor((u-l)/c)+1;isFinite(c)||(c=1,f=1);var h=l-c/2,d=h+f*c;s=[h,d]}else s=i;return Bxe.calc(t,r,{vals:s,cLetter:"z"}),n}});var S4=ye((qsr,Uxe)=>{"use strict";Uxe.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}});var lH=ye((Osr,Vxe)=>{"use strict";var _8=S4();Vxe.exports=function(t){var r=t[0].z,n=r.length,i=r[0].length,a=n===2||i===2,o,s,l,u,c,f,h,d,v;for(s=0;se?0:1)+(t[0][1]>e?0:2)+(t[1][1]>e?0:4)+(t[1][0]>e?0:8);if(r===5||r===10){var n=(t[0][0]+t[0][1]+t[1][0]+t[1][1])/4;return e>n?r===5?713:1114:r===5?104:208}return r===15?0:r}});var uH=ye((Bsr,jxe)=>{"use strict";var x8=Mr(),RT=S4();jxe.exports=function(t,r,n){var i,a,o,s,l;for(r=r||.01,n=n||.01,o=0;o20?(o=RT.CHOOSESADDLE[o][(s[0]||s[1])<0?0:1],e.crossings[a]=RT.SADDLEREMAINDER[o]):delete e.crossings[a],s=RT.NEWDELTA[o],!s){x8.log("Found bad marching index:",o,t,e.level);break}l.push(Gxe(e,t,s)),t[0]+=s[0],t[1]+=s[1],a=t.join(","),M4(l[l.length-1],l[l.length-2],n,i)&&l.pop();var v=s[0]&&(t[0]<0||t[0]>c-2)||s[1]&&(t[1]<0||t[1]>u-2),x=t[0]===f[0]&&t[1]===f[1]&&s[0]===h[0]&&s[1]===h[1];if(x||r&&v)break;o=e.crossings[a]}d===1e4&&x8.log("Infinite loop in contour?");var b=M4(l[0],l[l.length-1],n,i),g=0,E=.2*e.smoothing,k=[],A=0,L,_,C,M,p,P,T,F,q,V,H;for(d=1;d=A;d--)if(L=k[d],L=A&&L+k[_]F&&q--,e.edgepaths[q]=H.concat(l,V));break}W||(e.edgepaths[F]=l.concat(V))}for(F=0;F20&&t?e===208||e===1114?n=r[0]===0?1:-1:i=r[1]===0?1:-1:RT.BOTTOMSTART.indexOf(e)!==-1?i=1:RT.LEFTSTART.indexOf(e)!==-1?n=1:RT.TOPSTART.indexOf(e)!==-1?i=-1:n=-1,[n,i]}function Gxe(e,t,r){var n=t[0]+Math.max(r[0],0),i=t[1]+Math.max(r[1],0),a=e.z[i][n],o=e.xaxis,s=e.yaxis;if(r[1]){var l=(e.level-a)/(e.z[i][n+1]-a),u=(l!==1?(1-l)*o.c2l(e.x[n]):0)+(l!==0?l*o.c2l(e.x[n+1]):0);return[o.c2p(o.l2c(u),!0),s.c2p(e.y[i],!0),n+l,i]}else{var c=(e.level-a)/(e.z[i+1][n]-a),f=(c!==1?(1-c)*s.c2l(e.y[i]):0)+(c!==0?c*s.c2l(e.y[i+1]):0);return[o.c2p(e.x[n],!0),s.c2p(s.l2c(f),!0),n,i+c]}}});var Yxe=ye((Nsr,Xxe)=>{"use strict";var cH=p8(),Z_t=uo();Xxe.exports={"[]":Wxe("[]"),"][":Wxe("]["),">":fH(">"),"<":fH("<"),"=":fH("=")};function Zxe(e,t){var r=Array.isArray(t),n;function i(a){return Z_t(a)?+a:null}return cH.COMPARISON_OPS2.indexOf(e)!==-1?n=i(r?t[0]:t):cH.INTERVAL_OPS.indexOf(e)!==-1?n=r?[i(t[0]),i(t[1])]:[i(t),i(t)]:cH.SET_OPS.indexOf(e)!==-1&&(n=r?t.map(i):[i(t)]),n}function Wxe(e){return function(t){t=Zxe(e,t);var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return{start:r,end:n,size:n-r}}}function fH(e){return function(t){return t=Zxe(e,t),{start:t,end:1/0,size:1/0}}}});var hH=ye((Usr,Jxe)=>{"use strict";var Kxe=Mr(),X_t=Yxe(),Y_t=A4();Jxe.exports=function(t,r,n){for(var i=t.type==="constraint"?X_t[t._operation](t.value):t,a=i.size,o=[],s=Y_t(i),l=n.trace._carpetTrace,u=l?{xaxis:l.aaxis,yaxis:l.baxis,x:n.a,y:n.b}:{xaxis:r.xaxis,yaxis:r.yaxis,x:n.x,y:n.y},c=i.start;c1e3){Kxe.warn("Too many contours, clipping at 1000",t);break}return o}});var dH=ye((Vsr,Qxe)=>{"use strict";var DT=Mr();Qxe.exports=function(e,t){var r,n,i,a=function(l){return l.reverse()},o=function(l){return l};switch(t){case"=":case"<":return e;case">":for(e.length!==1&&DT.warn("Contour data invalid for the specified inequality operation."),n=e[0],r=0;r{"use strict";ebe.exports=function(e,t){var r=e[0],n=r.z,i;switch(t.type){case"levels":var a=Math.min(n[0][0],n[0][1]);for(i=0;io.level||o.starts.length&&a===o.level)}break;case"constraint":if(r.prefixBoundary=!1,r.edgepaths.length)return;var s=r.x.length,l=r.y.length,u=-1/0,c=1/0;for(i=0;i":f>u&&(r.prefixBoundary=!0);break;case"<":(fu||r.starts.length&&d===c)&&(r.prefixBoundary=!0);break;case"][":h=Math.min(f[0],f[1]),d=Math.max(f[0],f[1]),hu&&(r.prefixBoundary=!0);break}break}}});var b8=ye(Gv=>{"use strict";var k4=xa(),Id=Mr(),Oy=ao(),K_t=Mu(),ibe=Ll(),tbe=Qa(),rbe=ym(),J_t=o8(),nbe=lH(),abe=uH(),$_t=hH(),Q_t=dH(),obe=vH(),E4=S4(),Rm=E4.LABELOPTIMIZER;Gv.plot=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;Id.makeTraceGroups(i,n,"contour").each(function(s){var l=k4.select(this),u=s[0],c=u.trace,f=u.x,h=u.y,d=c.contours,v=$_t(d,r,u),x=Id.ensureSingle(l,"g","heatmapcoloring"),b=[];d.coloring==="heatmap"&&(b=[s]),J_t(t,r,b,x),nbe(v),abe(v);var g=a.c2p(f[0],!0),E=a.c2p(f[f.length-1],!0),k=o.c2p(h[0],!0),A=o.c2p(h[h.length-1],!0),L=[[g,A],[E,A],[E,k],[g,k]],_=v;d.type==="constraint"&&(_=Q_t(v,d._operation)),ext(l,L,d),txt(l,_,L,d),rxt(l,v,t,u,d),nxt(l,r,t,u,L)})};function ext(e,t,r){var n=Id.ensureSingle(e,"g","contourbg"),i=n.selectAll("path").data(r.coloring==="fill"?[0]:[]);i.enter().append("path"),i.exit().remove(),i.attr("d","M"+t.join("L")+"Z").style("stroke","none")}function txt(e,t,r,n){var i=n.coloring==="fill"||n.type==="constraint"&&n._operation!=="=",a="M"+r.join("L")+"Z";i&&obe(t,n);var o=Id.ensureSingle(e,"g","contourfill"),s=o.selectAll("path").data(i?t:[]);s.enter().append("path"),s.exit().remove(),s.each(function(l){var u=(l.prefixBoundary?a:"")+sbe(l,r);u?k4.select(this).attr("d",u).style("stroke","none"):k4.select(this).remove()})}function sbe(e,t){var r="",n=0,i=e.edgepaths.map(function(g,E){return E}),a=!0,o,s,l,u,c,f;function h(g){return Math.abs(g[1]-t[0][1])<.01}function d(g){return Math.abs(g[1]-t[2][1])<.01}function v(g){return Math.abs(g[0]-t[0][0])<.01}function x(g){return Math.abs(g[0]-t[2][0])<.01}for(;i.length;){for(f=Oy.smoothopen(e.edgepaths[n],e.smoothing),r+=a?f:f.replace(/^M/,"L"),i.splice(i.indexOf(n),1),o=e.edgepaths[n][e.edgepaths[n].length-1],u=-1,l=0;l<4;l++){if(!o){Id.log("Missing end?",n,e);break}for(h(o)&&!x(o)?s=t[1]:v(o)?s=t[0]:d(o)?s=t[3]:x(o)&&(s=t[2]),c=0;c=0&&(s=b,u=c):Math.abs(o[1]-s[1])<.01?Math.abs(o[1]-b[1])<.01&&(b[0]-o[0])*(s[0]-b[0])>=0&&(s=b,u=c):Id.log("endpt to newendpt is not vert. or horz.",o,s,b)}if(o=s,u>=0)break;r+="L"+s}if(u===e.edgepaths.length){Id.log("unclosed perimeter path");break}n=u,a=i.indexOf(n)===-1,a&&(n=i[0],r+="Z")}for(n=0;nRm.MAXCOST*2)break;h&&(s/=2),o=u-s/2,l=o+s*1.5}if(f<=Rm.MAXCOST)return c};function ixt(e,t,r,n){var i=t.width/2,a=t.height/2,o=e.x,s=e.y,l=e.theta,u=Math.cos(l)*i,c=Math.sin(l)*i,f=(o>n.center?n.right-o:o-n.left)/(u+Math.abs(Math.sin(l)*a)),h=(s>n.middle?n.bottom-s:s-n.top)/(Math.abs(c)+Math.cos(l)*a);if(f<1||h<1)return 1/0;var d=Rm.EDGECOST*(1/(f-1)+1/(h-1));d+=Rm.ANGLECOST*l*l;for(var v=o-u,x=s-c,b=o+u,g=s+c,E=0;E{"use strict";var oxt=xa(),pH=Mu(),sxt=A4();lbe.exports=function(t){var r=t.contours,n=r.start,i=sxt(r),a=r.size||1,o=Math.floor((i-n)/a)+1,s=r.coloring==="lines"?0:1,l=pH.extractOpts(t);isFinite(a)||(a=1,o=1);var u=l.reversescale?pH.flipScale(l.colorscale):l.colorscale,c=u.length,f=new Array(c),h=new Array(c),d,v,x=l.min,b=l.max;if(r.coloring==="heatmap"){for(v=0;v=b)&&(n<=x&&(n=x),i>=b&&(i=b),o=Math.floor((i-n)/a)+1,s=0),v=0;vx&&(f.unshift(x),h.unshift(h[0])),f[f.length-1]{"use strict";var w8=xa(),ube=ao(),lxt=s8(),uxt=gH();cbe.exports=function(t){var r=w8.select(t).selectAll("g.contour");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=w8.select(this),a=n[0].trace,o=a.contours,s=a.line,l=o.size||1,u=o.start,c=o.type==="constraint",f=!c&&o.coloring==="lines",h=!c&&o.coloring==="fill",d=f||h?uxt(a):null;i.selectAll("g.contourlevel").each(function(b){w8.select(this).selectAll("path").call(ube.lineGroupStyle,s.width,f?d(b.level):s.color,s.dash)});var v=o.labelfont;if(i.selectAll("g.contourlabels text").each(function(b){ube.font(w8.select(this),{weight:v.weight,style:v.style,variant:v.variant,textcase:v.textcase,lineposition:v.lineposition,shadow:v.shadow,family:v.family,size:v.size,color:v.color||(f?d(b.level):s.color)})}),c)i.selectAll("g.contourfill path").style("fill",a.fillcolor);else if(h){var x;i.selectAll("g.contourfill path").style("fill",function(b){return x===void 0&&(x=b.level),d(b.level+.5*l)}),x===void 0&&(x=u),i.selectAll("g.contourbg path").style("fill",d(x-.5*l))}}),lxt(t)}});var A8=ye((Zsr,hbe)=>{"use strict";var fbe=Mu(),cxt=gH(),fxt=A4();function hxt(e,t,r){var n=t.contours,i=t.line,a=n.size||1,o=n.coloring,s=cxt(t,{isColorbar:!0});if(o==="heatmap"){var l=fbe.extractOpts(t);r._fillgradient=l.reversescale?fbe.flipScale(l.colorscale):l.colorscale,r._zrange=[l.min,l.max]}else o==="fill"&&(r._fillcolor=s);r._line={color:o==="lines"?s:i.color,width:n.showlines!==!1?i.width:0,dash:i.dash},r._levels={start:n.start,end:fxt(n),size:a}}hbe.exports={min:"zmin",max:"zmax",calc:hxt}});var mH=ye((Xsr,dbe)=>{"use strict";var S8=va(),dxt=u8();dbe.exports=function(t,r,n,i,a){a||(a={}),a.isContour=!0;var o=dxt(t,r,n,i,a);return o&&o.forEach(function(s){var l=s.trace;l.contours.type==="constraint"&&(l.fillcolor&&S8.opacity(l.fillcolor)?s.color=S8.addOpacity(l.fillcolor,1):l.contours.showlines&&S8.opacity(l.line.color)&&(s.color=S8.addOpacity(l.line.color,1)))}),o}});var pbe=ye((Ysr,vbe)=>{"use strict";vbe.exports={attributes:rH(),supplyDefaults:zxe(),crossTraceDefaults:h8(),calc:sH(),plot:b8().plot,layerName:"contourlayer",style:T8(),colorbar:A8(),hoverPoints:mH(),moduleType:"trace",name:"histogram2dcontour",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","contour","histogram","showLegend"],meta:{}}});var mbe=ye((Ksr,gbe)=>{"use strict";gbe.exports=pbe()});var yH=ye((Jsr,Tbe)=>{"use strict";var ybe=uo(),vxt=iH(),bbe=va(),_be=bbe.addOpacity,pxt=bbe.opacity,wbe=p8(),xbe=Mr().isArrayOrTypedArray,gxt=wbe.CONSTRAINT_REDUCTION,mxt=wbe.COMPARISON_OPS2;Tbe.exports=function(t,r,n,i,a,o){var s=r.contours,l,u,c,f=n("contours.operation");if(s._operation=gxt[f],yxt(n,s),f==="="?l=s.showlines=!0:(l=n("contours.showlines"),c=n("fillcolor",_be((t.line||{}).color||a,.5))),l){var h=c&&pxt(c)?_be(r.fillcolor,1):a;u=n("line.color",h),n("line.width",2),n("line.dash")}n("line.smoothing"),vxt(n,i,u,o)};function yxt(e,t){var r;mxt.indexOf(t.operation)===-1?(e("contours.value",[0,1]),xbe(t.value)?t.value.length>2?t.value=t.value.slice(2):t.length===0?t.value=[0,1]:t.length<2?(r=parseFloat(t.value[0]),t.value=[r,r+1]):t.value=[parseFloat(t.value[0]),parseFloat(t.value[1])]:ybe(t.value)&&(r=parseFloat(t.value),t.value=[r,r+1])):(e("contours.value",0),ybe(t.value)||(xbe(t.value)?t.value=parseFloat(t.value[0]):t.value=0))}});var Mbe=ye(($sr,Sbe)=>{"use strict";var _H=Mr(),_xt=ZI(),xxt=Pg(),bxt=yH(),wxt=m8(),Txt=y8(),Axt=y4(),Abe=T4();Sbe.exports=function(t,r,n,i){function a(u,c){return _H.coerce(t,r,Abe,u,c)}function o(u){return _H.coerce2(t,r,Abe,u)}var s=_xt(t,r,a,i);if(!s){r.visible=!1;return}xxt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hoverongaps"),a("hovertemplate");var l=a("contours.type")==="constraint";a("connectgaps",_H.isArray1D(r.z)),l?bxt(t,r,a,i,n):(wxt(t,r,a,o),Txt(t,r,a,i)),r.contours&&r.contours.coloring==="heatmap"&&Axt(a,i),a("zorder")}});var kbe=ye((Qsr,Ebe)=>{"use strict";Ebe.exports={attributes:T4(),supplyDefaults:Mbe(),calc:sH(),plot:b8().plot,style:T8(),colorbar:A8(),hoverPoints:mH(),moduleType:"trace",name:"contour",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","contour","showLegend"],meta:{}}});var Lbe=ye((elr,Cbe)=>{"use strict";Cbe.exports=kbe()});var xH=ye((tlr,Ibe)=>{"use strict";var Sxt=Wo().hovertemplateAttrs,Mxt=Wo().texttemplateAttrs,Ext=Eg(),a0=Uc(),kxt=vl(),Pbe=Kl(),Cxt=Ed().dash,M_=no().extendFlat,j0=a0.marker,C4=a0.line,Lxt=j0.line;Ibe.exports={a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},c:{valType:"data_array",editType:"calc"},sum:{valType:"number",dflt:0,min:0,editType:"calc"},mode:M_({},a0.mode,{dflt:"markers"}),text:M_({},a0.text,{}),texttemplate:Mxt({editType:"plot"},{keys:["a","b","c","text"]}),hovertext:M_({},a0.hovertext,{}),line:{color:C4.color,width:C4.width,dash:Cxt,backoff:C4.backoff,shape:M_({},C4.shape,{values:["linear","spline"]}),smoothing:C4.smoothing,editType:"calc"},connectgaps:a0.connectgaps,cliponaxis:a0.cliponaxis,fill:M_({},a0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:Ext(),marker:M_({symbol:j0.symbol,opacity:j0.opacity,angle:j0.angle,angleref:j0.angleref,standoff:j0.standoff,maxdisplayed:j0.maxdisplayed,size:j0.size,sizeref:j0.sizeref,sizemin:j0.sizemin,sizemode:j0.sizemode,line:M_({width:Lxt.width,editType:"calc"},Pbe("marker.line")),gradient:j0.gradient,editType:"calc"},Pbe("marker")),textfont:a0.textfont,textposition:a0.textposition,selected:a0.selected,unselected:a0.unselected,hoverinfo:M_({},kxt.hoverinfo,{flags:["a","b","c","text","name"]}),hoveron:a0.hoveron,hovertemplate:Sxt()}});var Fbe=ye((rlr,zbe)=>{"use strict";var Rbe=Mr(),Pxt=Sm(),zT=lu(),Ixt=$p(),Rxt=R0(),Dbe=J3(),Dxt=D0(),zxt=Ig(),Fxt=xH();zbe.exports=function(t,r,n,i){function a(h,d){return Rbe.coerce(t,r,Fxt,h,d)}var o=a("a"),s=a("b"),l=a("c"),u;if(o?(u=o.length,s?(u=Math.min(u,s.length),l&&(u=Math.min(u,l.length))):l?u=Math.min(u,l.length):u=0):s&&l&&(u=Math.min(s.length,l.length)),!u){r.visible=!1;return}r._length=u,a("sum"),a("text"),a("hovertext"),r.hoveron!=="fills"&&a("hovertemplate");var c=u{"use strict";var bH=Qa();qbe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.aLabel=bH.tickText(a.aaxis,t.a,!0).text,i.bLabel=bH.tickText(a.baxis,t.b,!0).text,i.cLabel=bH.tickText(a.caxis,t.c,!0).text,i}});var Vbe=ye((nlr,Ube)=>{"use strict";var wH=uo(),qxt=z0(),Oxt=km(),Bxt=F0(),Nxt=q0().calcMarkerSize,Bbe=["a","b","c"],Nbe={a:["b","c"],b:["a","c"],c:["a","b"]};Ube.exports=function(t,r){var n=t._fullLayout[r.subplot],i=n.sum,a=r.sum||i,o={a:r.a,b:r.b,c:r.c},s=r.ids,l,u,c,f,h,d;for(l=0;l{"use strict";var Uxt=iT();Hbe.exports=function(t,r,n){var i=r.plotContainer;i.select(".scatterlayer").selectAll("*").remove();for(var a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:i,layerClipId:r._hasClipOnAxisFalse?r.clipIdRelative:null},l=r.layers.frontplot.select("g.scatterlayer"),u=0;u{"use strict";var Vxt=sT();jbe.exports=function(t,r,n,i){var a=Vxt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index],h=o.trace,d=o.subplot;o.a=f.a,o.b=f.b,o.c=f.c,o.xLabelVal=void 0,o.yLabelVal=void 0;var v={};v[h.subplot]={_subplot:d};var x=h._module.formatLabels(f,h,v);o.aLabel=x.aLabel,o.bLabel=x.bLabel,o.cLabel=x.cLabel;var b=f.hi||h.hoverinfo,g=[];function E(A,L){g.push(A._hovertitle+": "+L)}if(!h.hovertemplate){var k=b.split("+");k.indexOf("all")!==-1&&(k=["a","b","c"]),k.indexOf("a")!==-1&&E(d.aaxis,o.aLabel),k.indexOf("b")!==-1&&E(d.baxis,o.bLabel),k.indexOf("c")!==-1&&E(d.caxis,o.cLabel)}return o.extraText=g.join("
"),o.hovertemplate=h.hovertemplate,a}});var Xbe=ye((slr,Zbe)=>{"use strict";Zbe.exports=function(t,r,n,i,a){if(r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),i[a]){var o=i[a];t.a=o.a,t.b=o.b,t.c=o.c}else t.a=r.a,t.b=r.b,t.c=r.c;return t}});var a2e=ye((llr,n2e)=>{"use strict";var e2e=xa(),Hxt=id(),TH=ba(),By=Mr(),Dm=By.strTranslate,M8=By._,qT=va(),E8=ao(),L4=ym(),AH=no().extendFlat,Gxt=Xu(),E_=Qa(),Ybe=gv(),Kbe=Nc(),t2e=Sg(),Jbe=t2e.freeMode,jxt=t2e.rectMode,SH=Mb(),Wxt=wf().prepSelect,Zxt=wf().selectOnClick,Xxt=wf().clearOutline,Yxt=wf().clearSelectionsCache,r2e=ad();function i2e(e,t){this.id=e.id,this.graphDiv=e.graphDiv,this.init(t),this.makeFramework(t),this.updateFx(t),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}n2e.exports=i2e;var zm=i2e.prototype;zm.init=function(e){this.container=e._ternarylayer,this.defs=e._defs,this.layoutId=e._uid,this.traceHash={},this.layers={}};zm.plot=function(e,t){var r=this,n=t[r.id],i=t._size;r._hasClipOnAxisFalse=!1;for(var a=0;aFT*u?(g=u,b=g*FT):(b=l,g=b/FT),E=o*b/l,k=s*g/u,v=t.l+t.w*i-b/2,x=t.t+t.h*(1-a)-g/2,r.x0=v,r.y0=x,r.w=b,r.h=g,r.sum=c,r.xaxis={type:"linear",range:[f+2*d-c,c-f-2*h],domain:[i-E/2,i+E/2],_id:"x"},L4(r.xaxis,r.graphDiv._fullLayout),r.xaxis.setScale(),r.xaxis.isPtWithinRange=function(V){return V.a>=r.aaxis.range[0]&&V.a<=r.aaxis.range[1]&&V.b>=r.baxis.range[1]&&V.b<=r.baxis.range[0]&&V.c>=r.caxis.range[1]&&V.c<=r.caxis.range[0]},r.yaxis={type:"linear",range:[f,c-h-d],domain:[a-k/2,a+k/2],_id:"y"},L4(r.yaxis,r.graphDiv._fullLayout),r.yaxis.setScale(),r.yaxis.isPtWithinRange=function(){return!0};var A=r.yaxis.domain[0],L=r.aaxis=AH({},e.aaxis,{range:[f,c-h-d],side:"left",tickangle:(+e.aaxis.tickangle||0)-30,domain:[A,A+k*FT],anchor:"free",position:0,_id:"y",_length:b});L4(L,r.graphDiv._fullLayout),L.setScale();var _=r.baxis=AH({},e.baxis,{range:[c-f-d,h],side:"bottom",domain:r.xaxis.domain,anchor:"free",position:0,_id:"x",_length:b});L4(_,r.graphDiv._fullLayout),_.setScale();var C=r.caxis=AH({},e.caxis,{range:[c-f-h,d],side:"right",tickangle:(+e.caxis.tickangle||0)+30,domain:[A,A+k*FT],anchor:"free",position:0,_id:"y",_length:b});L4(C,r.graphDiv._fullLayout),C.setScale();var M="M"+v+","+(x+g)+"h"+b+"l-"+b/2+",-"+g+"Z";r.clipDef.select("path").attr("d",M),r.layers.plotbg.select("path").attr("d",M);var p="M0,"+g+"h"+b+"l-"+b/2+",-"+g+"Z";r.clipDefRelative.select("path").attr("d",p);var P=Dm(v,x);r.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",P),r.clipDefRelative.select("path").attr("transform",null);var T=Dm(v-_._offset,x+g);r.layers.baxis.attr("transform",T),r.layers.bgrid.attr("transform",T);var F=Dm(v+b/2,x)+"rotate(30)"+Dm(0,-L._offset);r.layers.aaxis.attr("transform",F),r.layers.agrid.attr("transform",F);var q=Dm(v+b/2,x)+"rotate(-30)"+Dm(0,-C._offset);r.layers.caxis.attr("transform",q),r.layers.cgrid.attr("transform",q),r.drawAxes(!0),r.layers.aline.select("path").attr("d",L.showline?"M"+v+","+(x+g)+"l"+b/2+",-"+g:"M0,0").call(qT.stroke,L.linecolor||"#000").style("stroke-width",(L.linewidth||0)+"px"),r.layers.bline.select("path").attr("d",_.showline?"M"+v+","+(x+g)+"h"+b:"M0,0").call(qT.stroke,_.linecolor||"#000").style("stroke-width",(_.linewidth||0)+"px"),r.layers.cline.select("path").attr("d",C.showline?"M"+(v+b/2)+","+x+"l"+b/2+","+g:"M0,0").call(qT.stroke,C.linecolor||"#000").style("stroke-width",(C.linewidth||0)+"px"),r.graphDiv._context.staticPlot||r.initInteractions(),E8.setClipUrl(r.layers.frontplot,r._hasClipOnAxisFalse?null:r.clipId,r.graphDiv)};zm.drawAxes=function(e){var t=this,r=t.graphDiv,n=t.id.substr(7)+"title",i=t.layers,a=t.aaxis,o=t.baxis,s=t.caxis;if(t.drawAx(a),t.drawAx(o),t.drawAx(s),e){var l=Math.max(a.showticklabels?a.tickfont.size/2:0,(s.showticklabels?s.tickfont.size*.75:0)+(s.ticks==="outside"?s.ticklen*.87:0)),u=(o.showticklabels?o.tickfont.size:0)+(o.ticks==="outside"?o.ticklen:0)+3;i["a-title"]=SH.draw(r,"a"+n,{propContainer:a,propName:t.id+".aaxis.title",placeholder:M8(r,"Click to enter Component A title"),attributes:{x:t.x0+t.w/2,y:t.y0-a.title.font.size/3-l,"text-anchor":"middle"}}),i["b-title"]=SH.draw(r,"b"+n,{propContainer:o,propName:t.id+".baxis.title",placeholder:M8(r,"Click to enter Component B title"),attributes:{x:t.x0-u,y:t.y0+t.h+o.title.font.size*.83+u,"text-anchor":"middle"}}),i["c-title"]=SH.draw(r,"c"+n,{propContainer:s,propName:t.id+".caxis.title",placeholder:M8(r,"Click to enter Component C title"),attributes:{x:t.x0+t.w+u,y:t.y0+t.h+s.title.font.size*.83+u,"text-anchor":"middle"}})}};zm.drawAx=function(e){var t=this,r=t.graphDiv,n=e._name,i=n.charAt(0),a=e._id,o=t.layers[n],s=30,l=i+"tickLayout",u=Kxt(e);t[l]!==u&&(o.selectAll("."+a+"tick").remove(),t[l]=u),e.setScale();var c=E_.calcTicks(e),f=E_.clipEnds(e,c),h=E_.makeTransTickFn(e),d=E_.getTickSigns(e)[2],v=By.deg2rad(s),x=d*(e.linewidth||1)/2,b=d*e.ticklen,g=t.w,E=t.h,k=i==="b"?"M0,"+x+"l"+Math.sin(v)*b+","+Math.cos(v)*b:"M"+x+",0l"+Math.cos(v)*b+","+-Math.sin(v)*b,A={a:"M0,0l"+E+",-"+g/2,b:"M0,0l-"+g/2+",-"+E,c:"M0,0l-"+E+","+g/2}[i];E_.drawTicks(r,e,{vals:e.ticks==="inside"?f:c,layer:o,path:k,transFn:h,crisp:!1}),E_.drawGrid(r,e,{vals:f,layer:t.layers[i+"grid"],path:A,transFn:h,crisp:!1}),E_.drawLabels(r,e,{vals:c,layer:o,transFn:h,labelFns:E_.makeLabelFns(e,0,s)})};function Kxt(e){return e.ticks+String(e.ticklen)+String(e.showticklabels)}var fd=r2e.MINZOOM/2+.87,Jxt="m-0.87,.5h"+fd+"v3h-"+(fd+5.2)+"l"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l2.6,1.5l-"+fd/2+","+fd*.87+"Z",$xt="m0.87,.5h-"+fd+"v3h"+(fd+5.2)+"l-"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l-2.6,1.5l"+fd/2+","+fd*.87+"Z",Qxt="m0,1l"+fd/2+","+fd*.87+"l2.6,-1.5l-"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l-"+(fd/2+2.6)+","+(fd*.87+4.5)+"l2.6,1.5l"+fd/2+",-"+fd*.87+"Z",ebt="m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z",$be=!0;zm.clearOutline=function(){Yxt(this.dragOptions),Xxt(this.dragOptions.gd)};zm.initInteractions=function(){var e=this,t=e.layers.plotbg.select("path").node(),r=e.graphDiv,n=r._fullLayout._zoomlayer,i,a;this.dragOptions={element:t,gd:r,plotinfo:{id:e.id,domain:r._fullLayout[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis},subplot:e.id,prepFn:function(T,F,q){e.dragOptions.xaxes=[e.xaxis],e.dragOptions.yaxes=[e.yaxis],i=r._fullLayout._invScaleX,a=r._fullLayout._invScaleY;var V=e.dragOptions.dragmode=r._fullLayout.dragmode;Jbe(V)?e.dragOptions.minDrag=1:e.dragOptions.minDrag=void 0,V==="zoom"?(e.dragOptions.moveFn=_,e.dragOptions.clickFn=g,e.dragOptions.doneFn=C,E(T,F,q)):V==="pan"?(e.dragOptions.moveFn=p,e.dragOptions.clickFn=g,e.dragOptions.doneFn=P,M(),e.clearOutline(r)):(jxt(V)||Jbe(V))&&Wxt(T,F,q,e.dragOptions,V)}};var o,s,l,u,c,f,h,d,v,x;function b(T){var F={};return F[e.id+".aaxis.min"]=T.a,F[e.id+".baxis.min"]=T.b,F[e.id+".caxis.min"]=T.c,F}function g(T,F){var q=r._fullLayout.clickmode;Qbe(r),T===2&&(r.emit("plotly_doubleclick",null),TH.call("_guiRelayout",r,b({a:0,b:0,c:0}))),q.indexOf("select")>-1&&T===1&&Zxt(F,r,[e.xaxis],[e.yaxis],e.id,e.dragOptions),q.indexOf("event")>-1&&Kbe.click(r,F,e.id)}function E(T,F,q){var V=t.getBoundingClientRect();o=F-V.left,s=q-V.top,r._fullLayout._calcInverseTransform(r);var H=r._fullLayout._invTransform,X=By.apply3DTransform(H)(o,s);o=X[0],s=X[1],l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l,u=e.aaxis.range[1]-l.a,f=Hxt(e.graphDiv._fullLayout[e.id].bgcolor).getLuminance(),h="M0,"+e.h+"L"+e.w/2+", 0L"+e.w+","+e.h+"Z",d=!1,v=n.append("path").attr("class","zoombox").attr("transform",Dm(e.x0,e.y0)).style({fill:f>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",h),x=n.append("path").attr("class","zoombox-corners").attr("transform",Dm(e.x0,e.y0)).style({fill:qT.background,stroke:qT.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),e.clearOutline(r)}function k(T,F){return 1-F/e.h}function A(T,F){return 1-(T+(e.h-F)/Math.sqrt(3))/e.w}function L(T,F){return(T-(e.h-F)/Math.sqrt(3))/e.w}function _(T,F){var q=o+T*i,V=s+F*a,H=Math.max(0,Math.min(1,k(o,s),k(q,V))),X=Math.max(0,Math.min(1,A(o,s),A(q,V))),G=Math.max(0,Math.min(1,L(o,s),L(q,V))),N=(H/2+G)*e.w,W=(1-H/2-X)*e.w,re=(N+W)/2,ae=W-N,_e=(1-H)*e.h,Me=_e-ae/FT;ae.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),x.transition().style("opacity",1).duration(200),d=!0),r.emit("plotly_relayouting",b(c))}function C(){Qbe(r),c!==l&&(TH.call("_guiRelayout",r,b(c)),$be&&r.data&&r._context.showTips&&(By.notifier(M8(r,"Double-click to zoom back out"),"long"),$be=!1))}function M(){l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l}function p(T,F){var q=T/e.xaxis._m,V=F/e.yaxis._m;c={a:l.a-V,b:l.b+(q+V)/2,c:l.c-(q-V)/2};var H=[c.a,c.b,c.c].sort(By.sorterAsc),X={a:H.indexOf(c.a),b:H.indexOf(c.b),c:H.indexOf(c.c)};H[0]<0&&(H[1]+H[0]/2<0?(H[2]+=H[0]+H[1],H[0]=H[1]=0):(H[2]+=H[0]/2,H[1]+=H[0]/2,H[0]=0),c={a:H[X.a],b:H[X.b],c:H[X.c]},F=(l.a-c.a)*e.yaxis._m,T=(l.c-c.c-l.b+c.b)*e.xaxis._m);var G=Dm(e.x0+T,e.y0+F);e.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",G);var N=Dm(-T,-F);e.clipDefRelative.select("path").attr("transform",N),e.aaxis.range=[c.a,e.sum-c.b-c.c],e.baxis.range=[e.sum-c.a-c.c,c.b],e.caxis.range=[e.sum-c.a-c.b,c.c],e.drawAxes(!1),e._hasClipOnAxisFalse&&e.plotContainer.select(".scatterlayer").selectAll(".trace").call(E8.hideOutsideRangePoints,e),r.emit("plotly_relayouting",b(c))}function P(){TH.call("_guiRelayout",r,b(c))}t.onmousemove=function(T){Kbe.hover(r,T,e.id),r._fullLayout._lasthover=t,r._fullLayout._hoversubplot=e.id},t.onmouseout=function(T){r._dragging||Ybe.unhover(r,T)},Ybe.init(this.dragOptions)};function Qbe(e){e2e.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}});var kH=ye((ulr,o2e)=>{"use strict";var tbt=dh(),rbt=Ju().attributes,ql=Cd(),ibt=Bu().overrideAll,MH=no().extendFlat,EH={title:{text:ql.title.text,font:ql.title.font},color:ql.color,tickmode:ql.minor.tickmode,nticks:MH({},ql.nticks,{dflt:6,min:1}),tick0:ql.tick0,dtick:ql.dtick,tickvals:ql.tickvals,ticktext:ql.ticktext,ticks:ql.ticks,ticklen:ql.ticklen,tickwidth:ql.tickwidth,tickcolor:ql.tickcolor,ticklabelstep:ql.ticklabelstep,showticklabels:ql.showticklabels,labelalias:ql.labelalias,showtickprefix:ql.showtickprefix,tickprefix:ql.tickprefix,showticksuffix:ql.showticksuffix,ticksuffix:ql.ticksuffix,showexponent:ql.showexponent,exponentformat:ql.exponentformat,minexponent:ql.minexponent,separatethousands:ql.separatethousands,tickfont:ql.tickfont,tickangle:ql.tickangle,tickformat:ql.tickformat,tickformatstops:ql.tickformatstops,hoverformat:ql.hoverformat,showline:MH({},ql.showline,{dflt:!0}),linecolor:ql.linecolor,linewidth:ql.linewidth,showgrid:MH({},ql.showgrid,{dflt:!0}),gridcolor:ql.gridcolor,gridwidth:ql.gridwidth,griddash:ql.griddash,layer:ql.layer,min:{valType:"number",dflt:0,min:0}},k8=o2e.exports=ibt({domain:rbt({name:"ternary"}),bgcolor:{valType:"color",dflt:tbt.background},sum:{valType:"number",dflt:1,min:0},aaxis:EH,baxis:EH,caxis:EH},"plot","from-root");k8.uirevision={valType:"any",editType:"none"};k8.aaxis.uirevision=k8.baxis.uirevision=k8.caxis.uirevision={valType:"any",editType:"none"}});var k_=ye((clr,s2e)=>{"use strict";var nbt=Mr(),abt=Vs(),obt=Ju().defaults;s2e.exports=function(t,r,n,i){var a=i.type,o=i.attributes,s=i.handleDefaults,l=i.partition||"x",u=r._subplots[a],c=u.length,f=c&&u[0].replace(/\d+$/,""),h,d;function v(E,k){return nbt.coerce(h,d,o,E,k)}for(var x=0;x{"use strict";var sbt=va(),lbt=Vs(),C8=Mr(),ubt=k_(),cbt=e_(),fbt=t_(),hbt=T3(),dbt=xb(),vbt=YM(),u2e=kH(),l2e=["aaxis","baxis","caxis"];c2e.exports=function(t,r,n){ubt(t,r,n,{type:"ternary",attributes:u2e,handleDefaults:pbt,font:r.font,paper_bgcolor:r.paper_bgcolor})};function pbt(e,t,r,n){var i=r("bgcolor"),a=r("sum");n.bgColor=sbt.combine(i,n.paper_bgcolor);for(var o,s,l,u=0;u=a&&(c.min=0,f.min=0,h.min=0,e.aaxis&&delete e.aaxis.min,e.baxis&&delete e.baxis.min,e.caxis&&delete e.caxis.min)}function gbt(e,t,r,n){var i=u2e[t._name];function a(d,v){return C8.coerce(e,t,i,d,v)}a("uirevision",n.uirevision),t.type="linear";var o=a("color"),s=o!==i.color.dflt?o:r.font.color,l=t._name,u=l.charAt(0).toUpperCase(),c="Component "+u,f=a("title.text",c);t._hovertitle=f===c?f:u,C8.coerceFont(a,"title.font",r.font,{overrideDflt:{size:C8.bigFont(r.font.size),color:s}}),a("min"),dbt(e,t,a,"linear"),fbt(e,t,a,"linear"),cbt(e,t,a,"linear",{noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0}),hbt(e,t,a,{outerTicks:!0});var h=a("showticklabels");h&&(C8.coerceFont(a,"tickfont",r.font,{overrideDflt:{color:s}}),a("tickangle"),a("tickformat")),vbt(e,t,a,{dfltColor:o,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),a("hoverformat"),a("layer")}});var h2e=ye(W0=>{"use strict";var mbt=a2e(),ybt=kd().getSubplotCalcData,_bt=Mr().counterRegex,OT="ternary";W0.name=OT;var xbt=W0.attr="subplot";W0.idRoot=OT;W0.idRegex=W0.attrRegex=_bt(OT);var bbt=W0.attributes={};bbt[xbt]={valType:"subplotid",dflt:"ternary",editType:"calc"};W0.layoutAttributes=kH();W0.supplyLayoutDefaults=f2e();W0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[OT],a=0;a{"use strict";d2e.exports={attributes:xH(),supplyDefaults:Fbe(),colorbar:Kd(),formatLabels:Obe(),calc:Vbe(),plot:Gbe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:Wbe(),selectPoints:lT(),eventData:Xbe(),moduleType:"trace",name:"scatterternary",basePlotModule:h2e(),categories:["ternary","symbols","showLegend","scatter-like"],meta:{}}});var g2e=ye((vlr,p2e)=>{"use strict";p2e.exports=v2e()});var CH=ye((plr,y2e)=>{"use strict";var jh=v4(),BT=no().extendFlat,m2e=Oc().axisHoverFormat;y2e.exports={y:jh.y,x:jh.x,x0:jh.x0,y0:jh.y0,xhoverformat:m2e("x"),yhoverformat:m2e("y"),name:BT({},jh.name,{}),orientation:BT({},jh.orientation,{}),bandwidth:{valType:"number",min:0,editType:"calc"},scalegroup:{valType:"string",dflt:"",editType:"calc"},scalemode:{valType:"enumerated",values:["width","count"],dflt:"width",editType:"calc"},spanmode:{valType:"enumerated",values:["soft","hard","manual"],dflt:"soft",editType:"calc"},span:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:jh.fillcolor,points:BT({},jh.boxpoints,{}),jitter:BT({},jh.jitter,{}),pointpos:BT({},jh.pointpos,{}),width:BT({},jh.width,{}),marker:jh.marker,text:jh.text,hovertext:jh.hovertext,hovertemplate:jh.hovertemplate,quartilemethod:jh.quartilemethod,box:{visible:{valType:"boolean",dflt:!1,editType:"plot"},width:{valType:"number",min:0,max:1,dflt:.25,editType:"plot"},fillcolor:{valType:"color",editType:"style"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"style"},editType:"plot"},meanline:{visible:{valType:"boolean",dflt:!1,editType:"plot"},color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"plot"},side:{valType:"enumerated",values:["both","positive","negative"],dflt:"both",editType:"calc"},offsetgroup:jh.offsetgroup,alignmentgroup:jh.alignmentgroup,selected:jh.selected,unselected:jh.unselected,hoveron:{valType:"flaglist",flags:["violins","points","kde"],dflt:"violins+points+kde",extras:["all"],editType:"style"},zorder:jh.zorder}});var IH=ye((glr,_2e)=>{"use strict";var LH=p4(),PH=Mr().extendFlat;_2e.exports={violinmode:PH({},LH.boxmode,{}),violingap:PH({},LH.boxgap,{}),violingroupgap:PH({},LH.boxgroupgap,{})}});var A2e=ye((mlr,T2e)=>{"use strict";var x2e=Mr(),wbt=va(),b2e=m4(),w2e=CH();T2e.exports=function(t,r,n,i){function a(L,_){return x2e.coerce(t,r,w2e,L,_)}function o(L,_){return x2e.coerce2(t,r,w2e,L,_)}if(b2e.handleSampleDefaults(t,r,a,i),r.visible!==!1){a("bandwidth"),a("side");var s=a("width");s||(a("scalegroup",r.name),a("scalemode"));var l=a("span"),u;Array.isArray(l)&&(u="manual"),a("spanmode",u);var c=a("line.color",(t.marker||{}).color||n),f=a("line.width"),h=a("fillcolor",wbt.addOpacity(r.line.color,.5));b2e.handlePointsDefaults(t,r,a,{prefix:""});var d=o("box.width"),v=o("box.fillcolor",h),x=o("box.line.color",c),b=o("box.line.width",f),g=a("box.visible",!!(d||v||x||b));g||(r.box={visible:!1});var E=o("meanline.color",c),k=o("meanline.width",f),A=a("meanline.visible",!!(E||k));A||(r.meanline={visible:!1}),a("quartilemethod"),a("zorder")}}});var M2e=ye((ylr,S2e)=>{"use strict";var Tbt=Mr(),Abt=IH(),Sbt=UI();S2e.exports=function(t,r,n){function i(a,o){return Tbt.coerce(t,r,Abt,a,o)}Sbt._supply(t,r,n,i,"violin")}});var L8=ye(o2=>{"use strict";var Mbt=Mr(),Ebt={gaussian:function(e){return 1/Math.sqrt(2*Math.PI)*Math.exp(-.5*e*e)}};o2.makeKDE=function(e,t,r){var n=r.length,i=Ebt.gaussian,a=e.bandwidth,o=1/(n*a);return function(s){for(var l=0,u=0;u{"use strict";var RH=Mr(),DH=Qa(),kbt=MV(),E2e=L8(),Cbt=es().BADNUM;k2e.exports=function(t,r){var n=kbt(t,r);if(n[0].t.empty)return n;for(var i=t._fullLayout,a=DH.getFromId(t,r[r.orientation==="h"?"xaxis":"yaxis"]),o=1/0,s=-1/0,l=0,u=0,c=0;c{"use strict";var Rbt=HI().setPositionOffset,L2e=["v","h"];P2e.exports=function(t,r){for(var n=t.calcdata,i=r.xaxis,a=r.yaxis,o=0;o{"use strict";var zH=xa(),FH=Mr(),Dbt=ao(),qH=GI(),zbt=fU(),Fbt=L8();R2e.exports=function(t,r,n,i){var a=t._context.staticPlot,o=t._fullLayout,s=r.xaxis,l=r.yaxis;function u(c,f){var h=zbt(c,{xaxis:s,yaxis:l,trace:f,connectGaps:!0,baseTolerance:.75,shape:"spline",simplify:!0,linearized:!0});return Dbt.smoothopen(h[0],1)}FH.makeTraceGroups(i,n,"trace violins").each(function(c){var f=zH.select(this),h=c[0],d=h.t,v=h.trace;if(v.visible!==!0||d.empty){f.remove();return}var x=d.bPos,b=d.bdPos,g=r[d.valLetter+"axis"],E=r[d.posLetter+"axis"],k=v.side==="both",A=k||v.side==="positive",L=k||v.side==="negative",_=f.selectAll("path.violin").data(FH.identity);_.enter().append("path").style("vector-effect",a?"none":"non-scaling-stroke").attr("class","violin"),_.exit().remove(),_.each(function(V){var H=zH.select(this),X=V.density,G=X.length,N=E.c2l(V.pos+x,!0),W=E.l2p(N),re;if(v.width)re=d.maxKDE/b;else{var ae=o._violinScaleGroupStats[v.scalegroup];re=v.scalemode==="count"?ae.maxKDE/b*(ae.maxCount/V.pts.length):ae.maxKDE/b}var _e,Me,ke,ge,ie,Te,Ee;if(A){for(Te=new Array(G),ge=0;ge{"use strict";var z2e=xa(),NT=va(),qbt=op().stylePoints;F2e.exports=function(t){var r=z2e.select(t).selectAll("g.trace.violins");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=n[0].trace,a=z2e.select(this),o=i.box||{},s=o.line||{},l=i.meanline||{},u=l.width;a.selectAll("path.violin").style("stroke-width",i.line.width+"px").call(NT.stroke,i.line.color).call(NT.fill,i.fillcolor),a.selectAll("path.box").style("stroke-width",s.width+"px").call(NT.stroke,s.color).call(NT.fill,o.fillcolor);var c={"stroke-width":u+"px","stroke-dasharray":2*u+"px,"+u+"px"};a.selectAll("path.mean").style(c).call(NT.stroke,l.color),a.selectAll("path.meanline").style(c).call(NT.stroke,l.color),qbt(a,i,t)})}});var U2e=ye((Alr,N2e)=>{"use strict";var Obt=va(),OH=Mr(),Bbt=Qa(),O2e=PV(),B2e=L8();N2e.exports=function(t,r,n,i,a){a||(a={});var o=a.hoverLayer,s=t.cd,l=s[0].trace,u=l.hoveron,c=u.indexOf("violins")!==-1,f=u.indexOf("kde")!==-1,h=[],d,v;if(c||f){var x=O2e.hoverOnBoxes(t,r,n,i);if(f&&x.length>0){var b=t.xa,g=t.ya,E,k,A,L,_;l.orientation==="h"?(_=r,E="y",A=g,k="x",L=b):(_=n,E="x",A=b,k="y",L=g);var C=s[t.index];if(_>=C.span[0]&&_<=C.span[1]){var M=OH.extendFlat({},t),p=L.c2p(_,!0),P=B2e.getKdeValue(C,l,_),T=B2e.getPositionOnKdePath(C,l,p),F=A._offset,q=A._length;M[E+"0"]=T[0],M[E+"1"]=T[1],M[k+"0"]=M[k+"1"]=p,M[k+"Label"]=k+": "+Bbt.hoverLabelText(L,_,l[k+"hoverformat"])+", "+s[0].t.labels.kde+" "+P.toFixed(3);for(var V=0,H=0;H{"use strict";V2e.exports={attributes:CH(),layoutAttributes:IH(),supplyDefaults:A2e(),crossTraceDefaults:m4().crossTraceDefaults,supplyLayoutDefaults:M2e(),calc:C2e(),crossTraceCalc:I2e(),plot:D2e(),style:q2e(),styleOnSelect:op().styleOnSelect,hoverPoints:U2e(),selectPoints:IV(),moduleType:"trace",name:"violin",basePlotModule:Jf(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","violinLayout","zoomScale"],meta:{}}});var j2e=ye((Mlr,G2e)=>{"use strict";G2e.exports=H2e()});var Z2e=ye((Elr,W2e)=>{"use strict";W2e.exports={eventDataKeys:["percentInitial","percentPrevious","percentTotal"]}});var NH=ye((klr,K2e)=>{"use strict";var lc=Lm(),BH=Uc().line,Nbt=vl(),X2e=Oc().axisHoverFormat,Ubt=Wo().hovertemplateAttrs,Vbt=Wo().texttemplateAttrs,Y2e=Z2e(),Ny=no().extendFlat,Hbt=va();K2e.exports={x:lc.x,x0:lc.x0,dx:lc.dx,y:lc.y,y0:lc.y0,dy:lc.dy,xperiod:lc.xperiod,yperiod:lc.yperiod,xperiod0:lc.xperiod0,yperiod0:lc.yperiod0,xperiodalignment:lc.xperiodalignment,yperiodalignment:lc.yperiodalignment,xhoverformat:X2e("x"),yhoverformat:X2e("y"),hovertext:lc.hovertext,hovertemplate:Ubt({},{keys:Y2e.eventDataKeys}),hoverinfo:Ny({},Nbt.hoverinfo,{flags:["name","x","y","text","percent initial","percent previous","percent total"]}),textinfo:{valType:"flaglist",flags:["label","text","percent initial","percent previous","percent total","value"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:Vbt({editType:"plot"},{keys:Y2e.eventDataKeys.concat(["label","value"])}),text:lc.text,textposition:lc.textposition,insidetextanchor:Ny({},lc.insidetextanchor,{dflt:"middle"}),textangle:Ny({},lc.textangle,{dflt:0}),textfont:lc.textfont,insidetextfont:lc.insidetextfont,outsidetextfont:lc.outsidetextfont,constraintext:lc.constraintext,cliponaxis:lc.cliponaxis,orientation:Ny({},lc.orientation,{}),offset:Ny({},lc.offset,{arrayOk:!1}),width:Ny({},lc.width,{arrayOk:!1}),marker:Gbt(),connector:{fillcolor:{valType:"color",editType:"style"},line:{color:Ny({},BH.color,{dflt:Hbt.defaultLine}),width:Ny({},BH.width,{dflt:0,editType:"plot"}),dash:BH.dash,editType:"style"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:lc.offsetgroup,alignmentgroup:lc.alignmentgroup,zorder:lc.zorder};function Gbt(){var e=Ny({},lc.marker);return delete e.pattern,delete e.cornerradius,e}});var UH=ye((Clr,J2e)=>{"use strict";J2e.exports={funnelmode:{valType:"enumerated",values:["stack","group","overlay"],dflt:"stack",editType:"calc"},funnelgap:{valType:"number",min:0,max:1,editType:"calc"},funnelgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var HH=ye((Llr,Q2e)=>{"use strict";var P8=Mr(),jbt=Hb(),Wbt=r0().handleText,Zbt=K3(),Xbt=Pg(),$2e=NH(),VH=va();function Ybt(e,t,r,n){function i(f,h){return P8.coerce(e,t,$2e,f,h)}var a=Zbt(e,t,n,i);if(!a){t.visible=!1;return}Xbt(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("orientation",t.y&&!t.x?"v":"h"),i("offset"),i("width");var o=i("text");i("hovertext"),i("hovertemplate");var s=i("textposition");Wbt(e,t,n,i,s,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&!t.texttemplate&&i("textinfo",P8.isArrayOrTypedArray(o)?"text+value":"value");var l=i("marker.color",r);i("marker.line.color",VH.defaultLine),i("marker.line.width");var u=i("connector.visible");if(u){i("connector.fillcolor",Kbt(l));var c=i("connector.line.width");c&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function Kbt(e){var t=P8.isArrayOrTypedArray(e)?"#000":e;return VH.addOpacity(t,.5*VH.opacity(t))}function Jbt(e,t){var r,n;function i(o){return P8.coerce(n._input,n,$2e,o)}for(var a=0;a{"use strict";var $bt=Mr(),Qbt=UH();ewe.exports=function(e,t,r){var n=!1;function i(s,l){return $bt.coerce(e,t,Qbt,s,l)}for(var a=0;a{"use strict";var UT=Mr();rwe.exports=function(t,r){for(var n=0;n{"use strict";var nwe=Qa(),awe=Rg(),e2t=iwe(),t2t=F0(),P4=es().BADNUM;owe.exports=function(t,r){var n=nwe.getFromId(t,r.xaxis||"x"),i=nwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f,h;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=awe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=awe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;var d=Math.min(o.length,a.length),v=new Array(d);for(r._base=[],f=0;f{"use strict";var lwe=Gb().setGroupPositions;uwe.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var I8=xa(),L_=Mr(),fwe=ao(),C_=es().BADNUM,r2t=i2(),i2t=_v().clearMinTextSize;dwe.exports=function(t,r,n,i){var a=t._fullLayout;i2t("funnel",a),n2t(t,r,n,i),a2t(t,r,n,i),r2t.plot(t,r,n,i,{mode:a.funnelmode,norm:a.funnelmode,gap:a.funnelgap,groupgap:a.funnelgroupgap})};function n2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;L_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=I8.select(this),l=o[0].trace,u=L_.ensureSingle(s,"g","regions");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.region").data(L_.identity);f.enter().append("g").classed("region",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var x=hwe(d,i,a,c),b=x[0],g=x[1],E="";b[0]!==C_&&g[0]!==C_&&b[1]!==C_&&g[1]!==C_&&b[2]!==C_&&g[2]!==C_&&b[3]!==C_&&g[3]!==C_&&(c?E+="M"+b[0]+","+g[1]+"L"+b[2]+","+g[2]+"H"+b[3]+"L"+b[1]+","+g[1]+"Z":E+="M"+b[1]+","+g[1]+"L"+b[2]+","+g[3]+"V"+g[2]+"L"+b[1]+","+g[0]+"Z"),E===""&&(E="M0,0Z"),L_.ensureSingle(I8.select(this),"path").attr("d",E).call(fwe.setClipUrl,t.layerClipId,e)}})})}function a2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;L_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=I8.select(this),l=o[0].trace,u=L_.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible||!l.connector.line.width){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.line").data(L_.identity);f.enter().append("g").classed("line",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var x=hwe(d,i,a,c),b=x[0],g=x[1],E="";b[3]!==void 0&&g[3]!==void 0&&(c?(E+="M"+b[0]+","+g[1]+"L"+b[2]+","+g[2],E+="M"+b[1]+","+g[1]+"L"+b[3]+","+g[2]):(E+="M"+b[1]+","+g[1]+"L"+b[2]+","+g[3],E+="M"+b[1]+","+g[0]+"L"+b[2]+","+g[2])),E===""&&(E="M0,0Z"),L_.ensureSingle(I8.select(this),"path").attr("d",E).call(fwe.setClipUrl,t.layerClipId,e)}})})}function hwe(e,t,r,n){var i=[],a=[],o=n?t:r,s=n?r:t;return i[0]=o.c2p(e.s0,!0),a[0]=s.c2p(e.p0,!0),i[1]=o.c2p(e.s1,!0),a[1]=s.c2p(e.p1,!0),i[2]=o.c2p(e.nextS0,!0),a[2]=s.c2p(e.nextP0,!0),i[3]=o.c2p(e.nextS1,!0),a[3]=s.c2p(e.nextP1,!0),n?[i,a]:[a,i]}});var mwe=ye((Flr,gwe)=>{"use strict";var I4=xa(),pwe=ao(),jH=va(),o2t=N1().DESELECTDIM,s2t=N0(),l2t=_v().resizeText,u2t=s2t.styleTextPoints;function c2t(e,t,r){var n=r||I4.select(e).selectAll('g[class^="funnellayer"]').selectAll("g.trace");l2t(e,n,"funnel"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=I4.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o.marker;I4.select(this).call(jH.fill,s.mc||l.color).call(jH.stroke,s.mlc||l.line.color).call(pwe.dashLine,l.line.dash,s.mlw||l.line.width).style("opacity",o.selectedpoints&&!s.selected?o2t:1)}}),u2t(a,o,e),a.selectAll(".regions").each(function(){I4.select(this).selectAll("path").style("stroke-width",0).call(jH.fill,o.connector.fillcolor)}),a.selectAll(".lines").each(function(){var s=o.connector.line;pwe.lineGroupStyle(I4.select(this).selectAll("path"),s.width,s.color,s.dash)})})}gwe.exports={style:c2t}});var xwe=ye((qlr,_we)=>{"use strict";var ywe=va().opacity,f2t=TT().hoverOnBars,WH=Mr().formatPercent;_we.exports=function(t,r,n,i,a){var o=f2t(t,r,n,i,a);if(o){var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=o.index,f=s[c],h=u?"x":"y";o[h+"LabelVal"]=f.s,o.percentInitial=f.begR,o.percentInitialLabel=WH(f.begR,1),o.percentPrevious=f.difR,o.percentPreviousLabel=WH(f.difR,1),o.percentTotal=f.sumR,o.percentTotalLabel=WH(f.sumR,1);var d=f.hi||l.hoverinfo,v=[];if(d&&d!=="none"&&d!=="skip"){var x=d==="all",b=d.split("+"),g=function(E){return x||b.indexOf(E)!==-1};g("percent initial")&&v.push(o.percentInitialLabel+" of initial"),g("percent previous")&&v.push(o.percentPreviousLabel+" of previous"),g("percent total")&&v.push(o.percentTotalLabel+" of total")}return o.extraText=v.join("
"),o.color=h2t(l,f),[o]}};function h2t(e,t){var r=e.marker,n=t.mc||r.color,i=t.mlc||r.line.color,a=t.mlw||r.line.width;if(ywe(n))return n;if(ywe(i)&&a)return i}});var wwe=ye((Olr,bwe)=>{"use strict";bwe.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"percentInitial"in r&&(t.percentInitial=r.percentInitial),"percentPrevious"in r&&(t.percentPrevious=r.percentPrevious),"percentTotal"in r&&(t.percentTotal=r.percentTotal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var Awe=ye((Blr,Twe)=>{"use strict";Twe.exports={attributes:NH(),layoutAttributes:UH(),supplyDefaults:HH().supplyDefaults,crossTraceDefaults:HH().crossTraceDefaults,supplyLayoutDefaults:twe(),calc:swe(),crossTraceCalc:cwe(),plot:vwe(),style:mwe().style,hoverPoints:xwe(),eventData:wwe(),selectPoints:AT(),moduleType:"trace",name:"funnel",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var Mwe=ye((Nlr,Swe)=>{"use strict";Swe.exports=Awe()});var kwe=ye((Ulr,Ewe)=>{"use strict";Ewe.exports={eventDataKeys:["initial","delta","final"]}});var YH=ye((Vlr,Pwe)=>{"use strict";var Uu=Lm(),ZH=Uc().line,d2t=vl(),Cwe=Oc().axisHoverFormat,v2t=Wo().hovertemplateAttrs,p2t=Wo().texttemplateAttrs,Lwe=kwe(),VT=no().extendFlat,g2t=va();function XH(e){return{marker:{color:VT({},Uu.marker.color,{arrayOk:!1,editType:"style"}),line:{color:VT({},Uu.marker.line.color,{arrayOk:!1,editType:"style"}),width:VT({},Uu.marker.line.width,{arrayOk:!1,editType:"style"}),editType:"style"},editType:"style"},editType:"style"}}Pwe.exports={measure:{valType:"data_array",dflt:[],editType:"calc"},base:{valType:"number",dflt:null,arrayOk:!1,editType:"calc"},x:Uu.x,x0:Uu.x0,dx:Uu.dx,y:Uu.y,y0:Uu.y0,dy:Uu.dy,xperiod:Uu.xperiod,yperiod:Uu.yperiod,xperiod0:Uu.xperiod0,yperiod0:Uu.yperiod0,xperiodalignment:Uu.xperiodalignment,yperiodalignment:Uu.yperiodalignment,xhoverformat:Cwe("x"),yhoverformat:Cwe("y"),hovertext:Uu.hovertext,hovertemplate:v2t({},{keys:Lwe.eventDataKeys}),hoverinfo:VT({},d2t.hoverinfo,{flags:["name","x","y","text","initial","delta","final"]}),textinfo:{valType:"flaglist",flags:["label","text","initial","delta","final"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:p2t({editType:"plot"},{keys:Lwe.eventDataKeys.concat(["label"])}),text:Uu.text,textposition:Uu.textposition,insidetextanchor:Uu.insidetextanchor,textangle:Uu.textangle,textfont:Uu.textfont,insidetextfont:Uu.insidetextfont,outsidetextfont:Uu.outsidetextfont,constraintext:Uu.constraintext,cliponaxis:Uu.cliponaxis,orientation:Uu.orientation,offset:Uu.offset,width:Uu.width,increasing:XH("increasing"),decreasing:XH("decreasing"),totals:XH("intermediate sums and total"),connector:{line:{color:VT({},ZH.color,{dflt:g2t.defaultLine}),width:VT({},ZH.width,{editType:"plot"}),dash:ZH.dash,editType:"plot"},mode:{valType:"enumerated",values:["spanning","between"],dflt:"between",editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:Uu.offsetgroup,alignmentgroup:Uu.alignmentgroup,zorder:Uu.zorder}});var KH=ye((Hlr,Iwe)=>{"use strict";Iwe.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var HT=ye((Glr,Rwe)=>{"use strict";Rwe.exports={INCREASING:{COLOR:"#3D9970",SYMBOL:"\u25B2"},DECREASING:{COLOR:"#FF4136",SYMBOL:"\u25BC"}}});var $H=ye((jlr,qwe)=>{"use strict";var Dwe=Mr(),m2t=Hb(),y2t=r0().handleText,_2t=K3(),x2t=Pg(),zwe=YH(),b2t=va(),Fwe=HT(),w2t=Fwe.INCREASING.COLOR,T2t=Fwe.DECREASING.COLOR,A2t="#4499FF";function JH(e,t,r){e(t+".marker.color",r),e(t+".marker.line.color",b2t.defaultLine),e(t+".marker.line.width")}function S2t(e,t,r,n){function i(u,c){return Dwe.coerce(e,t,zwe,u,c)}var a=_2t(e,t,n,i);if(!a){t.visible=!1;return}x2t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("measure"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate");var o=i("textposition");y2t(e,t,n,i,o,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&(i("texttemplate"),t.texttemplate||i("textinfo")),JH(i,"increasing",w2t),JH(i,"decreasing",T2t),JH(i,"totals",A2t);var s=i("connector.visible");if(s){i("connector.mode");var l=i("connector.line.width");l&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function M2t(e,t){var r,n;function i(o){return Dwe.coerce(n._input,n,zwe,o)}if(t.waterfallmode==="group")for(var a=0;a{"use strict";var E2t=Mr(),k2t=KH();Owe.exports=function(e,t,r){var n=!1;function i(s,l){return E2t.coerce(e,t,k2t,s,l)}for(var a=0;a{"use strict";var Nwe=Qa(),Uwe=Rg(),Vwe=Mr().mergeArray,C2t=F0(),Hwe=es().BADNUM;function QH(e){return e==="a"||e==="absolute"}function eG(e){return e==="t"||e==="total"}Gwe.exports=function(t,r){var n=Nwe.getFromId(t,r.xaxis||"x"),i=Nwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=Uwe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=Uwe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var f=Math.min(o.length,a.length),h=new Array(f),d=0,v,x=!1,b=0;b{"use strict";var Wwe=Gb().setGroupPositions;Zwe.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var Ywe=xa(),R8=Mr(),L2t=ao(),GT=es().BADNUM,P2t=i2(),I2t=_v().clearMinTextSize;Kwe.exports=function(t,r,n,i){var a=t._fullLayout;I2t("waterfall",a),P2t.plot(t,r,n,i,{mode:a.waterfallmode,norm:a.waterfallmode,gap:a.waterfallgap,groupgap:a.waterfallgroupgap}),R2t(t,r,n,i)};function R2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;R8.makeTraceGroups(n,r,"trace bars").each(function(o){var s=Ywe.select(this),l=o[0].trace,u=R8.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=l.connector.mode,h=u.selectAll("g.line").data(R8.identity);h.enter().append("g").classed("line",!0),h.exit().remove();var d=h.size();h.each(function(v,x){if(!(x!==d-1&&!v.cNext)){var b=D2t(v,i,a,c),g=b[0],E=b[1],k="";g[0]!==GT&&E[0]!==GT&&g[1]!==GT&&E[1]!==GT&&(f==="spanning"&&!v.isSum&&x>0&&(c?k+="M"+g[0]+","+E[1]+"V"+E[0]:k+="M"+g[1]+","+E[0]+"H"+g[0]),f!=="between"&&(v.isSum||x{"use strict";var D8=xa(),$we=ao(),Qwe=va(),z2t=N1().DESELECTDIM,F2t=N0(),q2t=_v().resizeText,O2t=F2t.styleTextPoints;function B2t(e,t,r){var n=r||D8.select(e).selectAll('g[class^="waterfalllayer"]').selectAll("g.trace");q2t(e,n,"waterfall"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=D8.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o[s.dir].marker;D8.select(this).call(Qwe.fill,l.color).call(Qwe.stroke,l.line.color).call($we.dashLine,l.line.dash,l.line.width).style("opacity",o.selectedpoints&&!s.selected?z2t:1)}}),O2t(a,o,e),a.selectAll(".lines").each(function(){var s=o.connector.line;$we.lineGroupStyle(D8.select(this).selectAll("path"),s.width,s.color,s.dash)})})}e3e.exports={style:B2t}});var o3e=ye((Jlr,a3e)=>{"use strict";var N2t=Qa().hoverLabelText,r3e=va().opacity,U2t=TT().hoverOnBars,i3e=HT(),n3e={increasing:i3e.INCREASING.SYMBOL,decreasing:i3e.DECREASING.SYMBOL};a3e.exports=function(t,r,n,i,a){var o=U2t(t,r,n,i,a);if(!o)return;var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=u?"x":"y",f=u?t.xa:t.ya;function h(_){return N2t(f,_,l[c+"hoverformat"])}var d=o.index,v=s[d],x=v.isSum?v.b+v.s:v.rawS;o.initial=v.b+v.s-x,o.delta=x,o.final=o.initial+o.delta;var b=h(Math.abs(o.delta));o.deltaLabel=x<0?"("+b+")":b,o.finalLabel=h(o.final),o.initialLabel=h(o.initial);var g=v.hi||l.hoverinfo,E=[];if(g&&g!=="none"&&g!=="skip"){var k=g==="all",A=g.split("+"),L=function(_){return k||A.indexOf(_)!==-1};v.isSum||(L("final")&&(u?!L("x"):!L("y"))&&E.push(o.finalLabel),L("delta")&&(x<0?E.push(o.deltaLabel+" "+n3e.decreasing):E.push(o.deltaLabel+" "+n3e.increasing)),L("initial")&&E.push("Initial: "+o.initialLabel))}return E.length&&(o.extraText=E.join("
")),o.color=V2t(l,v),[o]};function V2t(e,t){var r=e[t.dir].marker,n=r.color,i=r.line.color,a=r.line.width;if(r3e(n))return n;if(r3e(i)&&a)return i}});var l3e=ye(($lr,s3e)=>{"use strict";s3e.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"initial"in r&&(t.initial=r.initial),"delta"in r&&(t.delta=r.delta),"final"in r&&(t.final=r.final),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var c3e=ye((Qlr,u3e)=>{"use strict";u3e.exports={attributes:YH(),layoutAttributes:KH(),supplyDefaults:$H().supplyDefaults,crossTraceDefaults:$H().crossTraceDefaults,supplyLayoutDefaults:Bwe(),calc:jwe(),crossTraceCalc:Xwe(),plot:Jwe(),style:t3e().style,hoverPoints:o3e(),eventData:l3e(),selectPoints:AT(),moduleType:"trace",name:"waterfall",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var h3e=ye((eur,f3e)=>{"use strict";f3e.exports=c3e()});var jT=ye((tur,d3e)=>{"use strict";d3e.exports={colormodel:{rgb:{min:[0,0,0],max:[255,255,255],fmt:function(e){return e.slice(0,3)},suffix:["","",""]},rgba:{min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},rgba256:{colormodel:"rgba",zminDflt:[0,0,0,0],zmaxDflt:[255,255,255,255],min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},hsl:{min:[0,0,0],max:[360,100,100],fmt:function(e){var t=e.slice(0,3);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%"]},hsla:{min:[0,0,0,0],max:[360,100,100,1],fmt:function(e){var t=e.slice(0,4);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%",""]}}}});var tG=ye((rur,p3e)=>{"use strict";var H2t=vl(),G2t=Uc().zorder,j2t=Wo().hovertemplateAttrs,v3e=no().extendFlat,W2t=jT().colormodel,D4=["rgb","rgba","rgba256","hsl","hsla"],Z2t=[],X2t=[];for(WT=0;WT{"use strict";var Y2t=Mr(),K2t=tG(),g3e=jT(),J2t=Ly().IMAGE_URL_PREFIX;m3e.exports=function(t,r){function n(o,s){return Y2t.coerce(t,r,K2t,o,s)}n("source"),r.source&&!r.source.match(J2t)&&delete r.source,r._hasSource=!!r.source;var i=n("z");if(r._hasZ=!(i===void 0||!i.length||!i[0]||!i[0].length),!r._hasZ&&!r._hasSource){r.visible=!1;return}n("x0"),n("y0"),n("dx"),n("dy");var a;r._hasZ?(n("colormodel","rgb"),a=g3e.colormodel[r.colormodel],n("zmin",a.zminDflt||a.min),n("zmax",a.zmaxDflt||a.max)):r._hasSource&&(r.colormodel="rgba256",a=g3e.colormodel[r.colormodel],r.zmin=a.zminDflt,r.zmax=a.zmaxDflt),n("zsmooth"),n("text"),n("hovertext"),n("hovertemplate"),r._length=null,n("zorder")}});var Uy=ye((nur,rG)=>{typeof Object.create=="function"?rG.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:rG.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}}});var iG=ye((aur,_3e)=>{_3e.exports=vb().EventEmitter});var w3e=ye(z8=>{"use strict";z8.byteLength=Q2t;z8.toByteArray=twt;z8.fromByteArray=nwt;var Fm=[],Z0=[],$2t=typeof Uint8Array!="undefined"?Uint8Array:Array,nG="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(s2=0,x3e=nG.length;s20)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function Q2t(e){var t=b3e(e),r=t[0],n=t[1];return(r+n)*3/4-n}function ewt(e,t,r){return(t+r)*3/4-r}function twt(e){var t,r=b3e(e),n=r[0],i=r[1],a=new $2t(ewt(e,n,i)),o=0,s=i>0?n-4:n,l;for(l=0;l>16&255,a[o++]=t>>8&255,a[o++]=t&255;return i===2&&(t=Z0[e.charCodeAt(l)]<<2|Z0[e.charCodeAt(l+1)]>>4,a[o++]=t&255),i===1&&(t=Z0[e.charCodeAt(l)]<<10|Z0[e.charCodeAt(l+1)]<<4|Z0[e.charCodeAt(l+2)]>>2,a[o++]=t>>8&255,a[o++]=t&255),a}function rwt(e){return Fm[e>>18&63]+Fm[e>>12&63]+Fm[e>>6&63]+Fm[e&63]}function iwt(e,t,r){for(var n,i=[],a=t;as?s:o+a));return n===1?(t=e[r-1],i.push(Fm[t>>2]+Fm[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],i.push(Fm[t>>10]+Fm[t>>4&63]+Fm[t<<2&63]+"=")),i.join("")}});var T3e=ye(aG=>{aG.read=function(e,t,r,n,i){var a,o,s=i*8-n-1,l=(1<>1,c=-7,f=r?i-1:0,h=r?-1:1,d=e[t+f];for(f+=h,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=a*256+e[t+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+f],f+=h,c-=8);if(a===0)a=1-u;else{if(a===l)return o?NaN:(d?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-u}return(d?-1:1)*o*Math.pow(2,a-n)};aG.write=function(e,t,r,n,i,a){var o,s,l,u=a*8-i-1,c=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:a-1,v=n?1:-1,x=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?t+=h/l:t+=h*Math.pow(2,1-f),t*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(t*l-1)*Math.pow(2,i),o=o+f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;e[r+d]=s&255,d+=v,s/=256,i-=8);for(o=o<0;e[r+d]=o&255,d+=v,o/=256,u-=8);e[r+d-v]|=x*128}});var u2=ye(KT=>{"use strict";var oG=w3e(),XT=T3e(),A3e=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;KT.Buffer=In;KT.SlowBuffer=cwt;KT.INSPECT_MAX_BYTES=50;var F8=2147483647;KT.kMaxLength=F8;In.TYPED_ARRAY_SUPPORT=awt();!In.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function awt(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch(e){return!1}}Object.defineProperty(In.prototype,"parent",{enumerable:!0,get:function(){if(In.isBuffer(this))return this.buffer}});Object.defineProperty(In.prototype,"offset",{enumerable:!0,get:function(){if(In.isBuffer(this))return this.byteOffset}});function Vy(e){if(e>F8)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,In.prototype),t}function In(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return cG(e)}return k3e(e,t,r)}In.poolSize=8192;function k3e(e,t,r){if(typeof e=="string")return swt(e,t);if(ArrayBuffer.isView(e))return lwt(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(qm(e,ArrayBuffer)||e&&qm(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(qm(e,SharedArrayBuffer)||e&&qm(e.buffer,SharedArrayBuffer)))return lG(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return In.from(n,t,r);let i=uwt(e);if(i)return i;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return In.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}In.from=function(e,t,r){return k3e(e,t,r)};Object.setPrototypeOf(In.prototype,Uint8Array.prototype);Object.setPrototypeOf(In,Uint8Array);function C3e(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function owt(e,t,r){return C3e(e),e<=0?Vy(e):t!==void 0?typeof r=="string"?Vy(e).fill(t,r):Vy(e).fill(t):Vy(e)}In.alloc=function(e,t,r){return owt(e,t,r)};function cG(e){return C3e(e),Vy(e<0?0:fG(e)|0)}In.allocUnsafe=function(e){return cG(e)};In.allocUnsafeSlow=function(e){return cG(e)};function swt(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!In.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=L3e(e,t)|0,n=Vy(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function sG(e){let t=e.length<0?0:fG(e.length)|0,r=Vy(t);for(let n=0;n=F8)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+F8.toString(16)+" bytes");return e|0}function cwt(e){return+e!=e&&(e=0),In.alloc(+e)}In.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==In.prototype};In.compare=function(t,r){if(qm(t,Uint8Array)&&(t=In.from(t,t.offset,t.byteLength)),qm(r,Uint8Array)&&(r=In.from(r,r.offset,r.byteLength)),!In.isBuffer(t)||!In.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;let n=t.length,i=r.length;for(let a=0,o=Math.min(n,i);ai.length?(In.isBuffer(o)||(o=In.from(o)),o.copy(i,a)):Uint8Array.prototype.set.call(i,o,a);else if(In.isBuffer(o))o.copy(i,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=o.length}return i};function L3e(e,t){if(In.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||qm(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return uG(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return B3e(e).length;default:if(i)return n?-1:uG(e).length;t=(""+t).toLowerCase(),i=!0}}In.byteLength=L3e;function fwt(e,t,r){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return bwt(this,t,r);case"utf8":case"utf-8":return I3e(this,t,r);case"ascii":return _wt(this,t,r);case"latin1":case"binary":return xwt(this,t,r);case"base64":return mwt(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wwt(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}In.prototype._isBuffer=!0;function l2(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}In.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(t+=" ... "),""};A3e&&(In.prototype[A3e]=In.prototype.inspect);In.prototype.compare=function(t,r,n,i,a){if(qm(t,Uint8Array)&&(t=In.from(t,t.offset,t.byteLength)),!In.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;let o=a-i,s=n-r,l=Math.min(o,s),u=this.slice(i,a),c=t.slice(r,n);for(let f=0;f2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,dG(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=In.from(t,n)),In.isBuffer(t))return t.length===0?-1:S3e(e,t,r,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):S3e(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function S3e(e,t,r,n,i){let a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function l(c,f){return a===1?c[f]:c.readUInt16BE(f*a)}let u;if(i){let c=-1;for(u=r;uo&&(r=o-s),u=r;u>=0;u--){let c=!0;for(let f=0;fi&&(n=i)):n=i;let a=t.length;n>a/2&&(n=a/2);let o;for(o=0;o>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((n===void 0||n>a)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return hwt(this,t,r,n);case"utf8":case"utf-8":return dwt(this,t,r,n);case"ascii":case"latin1":case"binary":return vwt(this,t,r,n);case"base64":return pwt(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return gwt(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};In.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function mwt(e,t,r){return t===0&&r===e.length?oG.fromByteArray(e):oG.fromByteArray(e.slice(t,r))}function I3e(e,t,r){r=Math.min(e.length,r);let n=[],i=t;for(;i239?4:a>223?3:a>191?2:1;if(i+s<=r){let l,u,c,f;switch(s){case 1:a<128&&(o=a);break;case 2:l=e[i+1],(l&192)===128&&(f=(a&31)<<6|l&63,f>127&&(o=f));break;case 3:l=e[i+1],u=e[i+2],(l&192)===128&&(u&192)===128&&(f=(a&15)<<12|(l&63)<<6|u&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:l=e[i+1],u=e[i+2],c=e[i+3],(l&192)===128&&(u&192)===128&&(c&192)===128&&(f=(a&15)<<18|(l&63)<<12|(u&63)<<6|c&63,f>65535&&f<1114112&&(o=f))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return ywt(n)}var M3e=4096;function ywt(e){let t=e.length;if(t<=M3e)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn)&&(r=n);let i="";for(let a=t;an&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),rr)throw new RangeError("Trying to access beyond buffer length")}In.prototype.readUintLE=In.prototype.readUIntLE=function(t,r,n){t=t>>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t],a=1,o=0;for(;++o>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t+--r],a=1;for(;r>0&&(a*=256);)i+=this[t+--r]*a;return i};In.prototype.readUint8=In.prototype.readUInt8=function(t,r){return t=t>>>0,r||$d(t,1,this.length),this[t]};In.prototype.readUint16LE=In.prototype.readUInt16LE=function(t,r){return t=t>>>0,r||$d(t,2,this.length),this[t]|this[t+1]<<8};In.prototype.readUint16BE=In.prototype.readUInt16BE=function(t,r){return t=t>>>0,r||$d(t,2,this.length),this[t]<<8|this[t+1]};In.prototype.readUint32LE=In.prototype.readUInt32LE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};In.prototype.readUint32BE=In.prototype.readUInt32BE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};In.prototype.readBigUInt64LE=P_(function(t){t=t>>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=r+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,a=this[++t]+this[++t]*2**8+this[++t]*2**16+n*2**24;return BigInt(i)+(BigInt(a)<>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=r*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],a=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+n;return(BigInt(i)<>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t],a=1,o=0;for(;++o=a&&(i-=Math.pow(2,8*r)),i};In.prototype.readIntBE=function(t,r,n){t=t>>>0,r=r>>>0,n||$d(t,r,this.length);let i=r,a=1,o=this[t+--i];for(;i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};In.prototype.readInt8=function(t,r){return t=t>>>0,r||$d(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};In.prototype.readInt16LE=function(t,r){t=t>>>0,r||$d(t,2,this.length);let n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};In.prototype.readInt16BE=function(t,r){t=t>>>0,r||$d(t,2,this.length);let n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};In.prototype.readInt32LE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};In.prototype.readInt32BE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};In.prototype.readBigInt64LE=P_(function(t){t=t>>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(n<<24);return(BigInt(i)<>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=(r<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(i)<>>0,r||$d(t,4,this.length),XT.read(this,t,!0,23,4)};In.prototype.readFloatBE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),XT.read(this,t,!1,23,4)};In.prototype.readDoubleLE=function(t,r){return t=t>>>0,r||$d(t,8,this.length),XT.read(this,t,!0,52,8)};In.prototype.readDoubleBE=function(t,r){return t=t>>>0,r||$d(t,8,this.length),XT.read(this,t,!1,52,8)};function Rp(e,t,r,n,i,a){if(!In.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}In.prototype.writeUintLE=In.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=1,o=0;for(this[r]=t&255;++o>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=n-1,o=1;for(this[r+a]=t&255;--a>=0&&(o*=256);)this[r+a]=t/o&255;return r+n};In.prototype.writeUint8=In.prototype.writeUInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,255,0),this[r]=t&255,r+1};In.prototype.writeUint16LE=In.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t&255,this[r+1]=t>>>8,r+2};In.prototype.writeUint16BE=In.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=t&255,r+2};In.prototype.writeUint32LE=In.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255,r+4};In.prototype.writeUint32BE=In.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};function R3e(e,t,r,n,i){O3e(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,r}function D3e(e,t,r,n,i){O3e(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a=a>>8,e[r+6]=a,a=a>>8,e[r+5]=a,a=a>>8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o=o>>8,e[r+2]=o,o=o>>8,e[r+1]=o,o=o>>8,e[r]=o,r+8}In.prototype.writeBigUInt64LE=P_(function(t,r=0){return R3e(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});In.prototype.writeBigUInt64BE=P_(function(t,r=0){return D3e(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});In.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=0,o=1,s=0;for(this[r]=t&255;++a>0)-s&255;return r+n};In.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=n-1,o=1,s=0;for(this[r+a]=t&255;--a>=0&&(o*=256);)t<0&&s===0&&this[r+a+1]!==0&&(s=1),this[r+a]=(t/o>>0)-s&255;return r+n};In.prototype.writeInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=t&255,r+1};In.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t&255,this[r+1]=t>>>8,r+2};In.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=t&255,r+2};In.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4};In.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};In.prototype.writeBigInt64LE=P_(function(t,r=0){return R3e(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});In.prototype.writeBigInt64BE=P_(function(t,r=0){return D3e(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function z3e(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function F3e(e,t,r,n,i){return t=+t,r=r>>>0,i||z3e(e,t,r,4,34028234663852886e22,-34028234663852886e22),XT.write(e,t,r,n,23,4),r+4}In.prototype.writeFloatLE=function(t,r,n){return F3e(this,t,r,!0,n)};In.prototype.writeFloatBE=function(t,r,n){return F3e(this,t,r,!1,n)};function q3e(e,t,r,n,i){return t=+t,r=r>>>0,i||z3e(e,t,r,8,17976931348623157e292,-17976931348623157e292),XT.write(e,t,r,n,52,8),r+8}In.prototype.writeDoubleLE=function(t,r,n){return q3e(this,t,r,!0,n)};In.prototype.writeDoubleBE=function(t,r,n){return q3e(this,t,r,!1,n)};In.prototype.copy=function(t,r,n,i){if(!In.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r>>0,n=n===void 0?this.length:n>>>0,t||(t=0);let a;if(typeof t=="number")for(a=r;a2**32?i=E3e(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=E3e(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function E3e(e){let t="",r=e.length,n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Twt(e,t,r){YT(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&z4(t,e.length-(r+1))}function O3e(e,t,r,n,i,a){if(e>r||e3?t===0||t===BigInt(0)?s=`>= 0${o} and < 2${o} ** ${(a+1)*8}${o}`:s=`>= -(2${o} ** ${(a+1)*8-1}${o}) and < 2 ** ${(a+1)*8-1}${o}`:s=`>= ${t}${o} and <= ${r}${o}`,new ZT.ERR_OUT_OF_RANGE("value",s,e)}Twt(n,i,a)}function YT(e,t){if(typeof e!="number")throw new ZT.ERR_INVALID_ARG_TYPE(t,"number",e)}function z4(e,t,r){throw Math.floor(e)!==e?(YT(e,r),new ZT.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new ZT.ERR_BUFFER_OUT_OF_BOUNDS:new ZT.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var Awt=/[^+/0-9A-Za-z-_]/g;function Swt(e){if(e=e.split("=")[0],e=e.trim().replace(Awt,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function uG(e,t){t=t||1/0;let r,n=e.length,i=null,a=[];for(let o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function Mwt(e){let t=[];for(let r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function B3e(e){return oG.toByteArray(Swt(e))}function q8(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function qm(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function dG(e){return e!==e}var kwt=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function P_(e){return typeof BigInt=="undefined"?Cwt:e}function Cwt(){throw new Error("BigInt not supported")}});var O8=ye((cur,N3e)=>{"use strict";N3e.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;t[r]=i;for(r in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var a=Object.getOwnPropertySymbols(t);if(a.length!==1||a[0]!==r||!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(t,r);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var F4=ye((fur,U3e)=>{"use strict";var Lwt=O8();U3e.exports=function(){return Lwt()&&!!Symbol.toStringTag}});var H3e=ye((hur,V3e)=>{"use strict";V3e.exports=Error});var j3e=ye((dur,G3e)=>{"use strict";G3e.exports=EvalError});var Z3e=ye((vur,W3e)=>{"use strict";W3e.exports=RangeError});var Y3e=ye((pur,X3e)=>{"use strict";X3e.exports=ReferenceError});var vG=ye((gur,K3e)=>{"use strict";K3e.exports=SyntaxError});var q4=ye((mur,J3e)=>{"use strict";J3e.exports=TypeError});var Q3e=ye((yur,$3e)=>{"use strict";$3e.exports=URIError});var rTe=ye((_ur,tTe)=>{"use strict";var eTe=typeof Symbol!="undefined"&&Symbol,Pwt=O8();tTe.exports=function(){return typeof eTe!="function"||typeof Symbol!="function"||typeof eTe("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:Pwt()}});var aTe=ye((xur,nTe)=>{"use strict";var iTe={foo:{}},Iwt=Object;nTe.exports=function(){return{__proto__:iTe}.foo===iTe.foo&&!({__proto__:null}instanceof Iwt)}});var lTe=ye((bur,sTe)=>{"use strict";var Rwt="Function.prototype.bind called on incompatible ",Dwt=Object.prototype.toString,zwt=Math.max,Fwt="[object Function]",oTe=function(t,r){for(var n=[],i=0;i{"use strict";var Bwt=lTe();uTe.exports=Function.prototype.bind||Bwt});var fTe=ye((Tur,cTe)=>{"use strict";var Nwt=Function.prototype.call,Uwt=Object.prototype.hasOwnProperty,Vwt=B8();cTe.exports=Vwt.call(Nwt,Uwt)});var t5=ye((Aur,gTe)=>{"use strict";var Gl,Hwt=H3e(),Gwt=j3e(),jwt=Z3e(),Wwt=Y3e(),e5=vG(),QT=q4(),Zwt=Q3e(),pTe=Function,pG=function(e){try{return pTe('"use strict"; return ('+e+").constructor;")()}catch(t){}},c2=Object.getOwnPropertyDescriptor;if(c2)try{c2({},"")}catch(e){c2=null}var gG=function(){throw new QT},Xwt=c2?function(){try{return arguments.callee,gG}catch(e){try{return c2(arguments,"callee").get}catch(t){return gG}}}():gG,JT=rTe()(),Ywt=aTe()(),Qd=Object.getPrototypeOf||(Ywt?function(e){return e.__proto__}:null),$T={},Kwt=typeof Uint8Array=="undefined"||!Qd?Gl:Qd(Uint8Array),f2={__proto__:null,"%AggregateError%":typeof AggregateError=="undefined"?Gl:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer=="undefined"?Gl:ArrayBuffer,"%ArrayIteratorPrototype%":JT&&Qd?Qd([][Symbol.iterator]()):Gl,"%AsyncFromSyncIteratorPrototype%":Gl,"%AsyncFunction%":$T,"%AsyncGenerator%":$T,"%AsyncGeneratorFunction%":$T,"%AsyncIteratorPrototype%":$T,"%Atomics%":typeof Atomics=="undefined"?Gl:Atomics,"%BigInt%":typeof BigInt=="undefined"?Gl:BigInt,"%BigInt64Array%":typeof BigInt64Array=="undefined"?Gl:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array=="undefined"?Gl:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView=="undefined"?Gl:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Hwt,"%eval%":eval,"%EvalError%":Gwt,"%Float32Array%":typeof Float32Array=="undefined"?Gl:Float32Array,"%Float64Array%":typeof Float64Array=="undefined"?Gl:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry=="undefined"?Gl:FinalizationRegistry,"%Function%":pTe,"%GeneratorFunction%":$T,"%Int8Array%":typeof Int8Array=="undefined"?Gl:Int8Array,"%Int16Array%":typeof Int16Array=="undefined"?Gl:Int16Array,"%Int32Array%":typeof Int32Array=="undefined"?Gl:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":JT&&Qd?Qd(Qd([][Symbol.iterator]())):Gl,"%JSON%":typeof JSON=="object"?JSON:Gl,"%Map%":typeof Map=="undefined"?Gl:Map,"%MapIteratorPrototype%":typeof Map=="undefined"||!JT||!Qd?Gl:Qd(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise=="undefined"?Gl:Promise,"%Proxy%":typeof Proxy=="undefined"?Gl:Proxy,"%RangeError%":jwt,"%ReferenceError%":Wwt,"%Reflect%":typeof Reflect=="undefined"?Gl:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set=="undefined"?Gl:Set,"%SetIteratorPrototype%":typeof Set=="undefined"||!JT||!Qd?Gl:Qd(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer=="undefined"?Gl:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":JT&&Qd?Qd(""[Symbol.iterator]()):Gl,"%Symbol%":JT?Symbol:Gl,"%SyntaxError%":e5,"%ThrowTypeError%":Xwt,"%TypedArray%":Kwt,"%TypeError%":QT,"%Uint8Array%":typeof Uint8Array=="undefined"?Gl:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray=="undefined"?Gl:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array=="undefined"?Gl:Uint16Array,"%Uint32Array%":typeof Uint32Array=="undefined"?Gl:Uint32Array,"%URIError%":Zwt,"%WeakMap%":typeof WeakMap=="undefined"?Gl:WeakMap,"%WeakRef%":typeof WeakRef=="undefined"?Gl:WeakRef,"%WeakSet%":typeof WeakSet=="undefined"?Gl:WeakSet};if(Qd)try{null.error}catch(e){hTe=Qd(Qd(e)),f2["%Error.prototype%"]=hTe}var hTe,Jwt=function e(t){var r;if(t==="%AsyncFunction%")r=pG("async function () {}");else if(t==="%GeneratorFunction%")r=pG("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=pG("async function* () {}");else if(t==="%AsyncGenerator%"){var n=e("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&Qd&&(r=Qd(i.prototype))}return f2[t]=r,r},dTe={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},O4=B8(),N8=fTe(),$wt=O4.call(Function.call,Array.prototype.concat),Qwt=O4.call(Function.apply,Array.prototype.splice),vTe=O4.call(Function.call,String.prototype.replace),U8=O4.call(Function.call,String.prototype.slice),e3t=O4.call(Function.call,RegExp.prototype.exec),t3t=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,r3t=/\\(\\)?/g,i3t=function(t){var r=U8(t,0,1),n=U8(t,-1);if(r==="%"&&n!=="%")throw new e5("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new e5("invalid intrinsic syntax, expected opening `%`");var i=[];return vTe(t,t3t,function(a,o,s,l){i[i.length]=s?vTe(l,r3t,"$1"):o||a}),i},n3t=function(t,r){var n=t,i;if(N8(dTe,n)&&(i=dTe[n],n="%"+i[0]+"%"),N8(f2,n)){var a=f2[n];if(a===$T&&(a=Jwt(n)),typeof a=="undefined"&&!r)throw new QT("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new e5("intrinsic "+t+" does not exist!")};gTe.exports=function(t,r){if(typeof t!="string"||t.length===0)throw new QT("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new QT('"allowMissing" argument must be a boolean');if(e3t(/^%?[^%]*%?$/,t)===null)throw new e5("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=i3t(t),i=n.length>0?n[0]:"",a=n3t("%"+i+"%",r),o=a.name,s=a.value,l=!1,u=a.alias;u&&(i=u[0],Qwt(n,$wt([0,1],u)));for(var c=1,f=!0;c=n.length){var x=c2(s,h);f=!!x,f&&"get"in x&&!("originalValue"in x.get)?s=x.get:s=s[h]}else f=N8(s,h),s=s[h];f&&!l&&(f2[o]=s)}}return s}});var H8=ye((Sur,mTe)=>{"use strict";var a3t=t5(),V8=a3t("%Object.defineProperty%",!0)||!1;if(V8)try{V8({},"a",{value:1})}catch(e){V8=!1}mTe.exports=V8});var B4=ye((Mur,yTe)=>{"use strict";var o3t=t5(),G8=o3t("%Object.getOwnPropertyDescriptor%",!0);if(G8)try{G8([],"length")}catch(e){G8=null}yTe.exports=G8});var wTe=ye((Eur,bTe)=>{"use strict";var _Te=H8(),s3t=vG(),r5=q4(),xTe=B4();bTe.exports=function(t,r,n){if(!t||typeof t!="object"&&typeof t!="function")throw new r5("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new r5("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new r5("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new r5("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new r5("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new r5("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,a=arguments.length>4?arguments[4]:null,o=arguments.length>5?arguments[5]:null,s=arguments.length>6?arguments[6]:!1,l=!!xTe&&xTe(t,r);if(_Te)_Te(t,r,{configurable:o===null&&l?l.configurable:!o,enumerable:i===null&&l?l.enumerable:!i,value:n,writable:a===null&&l?l.writable:!a});else if(s||!i&&!a&&!o)t[r]=n;else throw new s3t("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}});var yG=ye((kur,ATe)=>{"use strict";var mG=H8(),TTe=function(){return!!mG};TTe.hasArrayLengthDefineBug=function(){if(!mG)return null;try{return mG([],"length",{value:1}).length!==1}catch(t){return!0}};ATe.exports=TTe});var CTe=ye((Cur,kTe)=>{"use strict";var l3t=t5(),STe=wTe(),u3t=yG()(),MTe=B4(),ETe=q4(),c3t=l3t("%Math.floor%");kTe.exports=function(t,r){if(typeof t!="function")throw new ETe("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||c3t(r)!==r)throw new ETe("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],i=!0,a=!0;if("length"in t&&MTe){var o=MTe(t,"length");o&&!o.configurable&&(i=!1),o&&!o.writable&&(a=!1)}return(i||a||!n)&&(u3t?STe(t,"length",r,!0,!0):STe(t,"length",r)),t}});var N4=ye((Lur,j8)=>{"use strict";var _G=B8(),W8=t5(),f3t=CTe(),h3t=q4(),ITe=W8("%Function.prototype.apply%"),RTe=W8("%Function.prototype.call%"),DTe=W8("%Reflect.apply%",!0)||_G.call(RTe,ITe),LTe=H8(),d3t=W8("%Math.max%");j8.exports=function(t){if(typeof t!="function")throw new h3t("a function is required");var r=DTe(_G,RTe,arguments);return f3t(r,1+d3t(0,t.length-(arguments.length-1)),!0)};var PTe=function(){return DTe(_G,ITe,arguments)};LTe?LTe(j8.exports,"apply",{value:PTe}):j8.exports.apply=PTe});var i5=ye((Pur,qTe)=>{"use strict";var zTe=t5(),FTe=N4(),v3t=FTe(zTe("String.prototype.indexOf"));qTe.exports=function(t,r){var n=zTe(t,!!r);return typeof n=="function"&&v3t(t,".prototype.")>-1?FTe(n):n}});var NTe=ye((Iur,BTe)=>{"use strict";var p3t=F4()(),g3t=i5(),xG=g3t("Object.prototype.toString"),Z8=function(t){return p3t&&t&&typeof t=="object"&&Symbol.toStringTag in t?!1:xG(t)==="[object Arguments]"},OTe=function(t){return Z8(t)?!0:t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&xG(t)!=="[object Array]"&&xG(t.callee)==="[object Function]"},m3t=function(){return Z8(arguments)}();Z8.isLegacyArguments=OTe;BTe.exports=m3t?Z8:OTe});var HTe=ye((Rur,VTe)=>{"use strict";var y3t=Object.prototype.toString,_3t=Function.prototype.toString,x3t=/^\s*(?:function)?\*/,UTe=F4()(),bG=Object.getPrototypeOf,b3t=function(){if(!UTe)return!1;try{return Function("return function*() {}")()}catch(e){}},wG;VTe.exports=function(t){if(typeof t!="function")return!1;if(x3t.test(_3t.call(t)))return!0;if(!UTe){var r=y3t.call(t);return r==="[object GeneratorFunction]"}if(!bG)return!1;if(typeof wG=="undefined"){var n=b3t();wG=n?bG(n):!1}return bG(t)===wG}});var ZTe=ye((Dur,WTe)=>{"use strict";var jTe=Function.prototype.toString,n5=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,AG,X8;if(typeof n5=="function"&&typeof Object.defineProperty=="function")try{AG=Object.defineProperty({},"length",{get:function(){throw X8}}),X8={},n5(function(){throw 42},null,AG)}catch(e){e!==X8&&(n5=null)}else n5=null;var w3t=/^\s*class\b/,SG=function(t){try{var r=jTe.call(t);return w3t.test(r)}catch(n){return!1}},TG=function(t){try{return SG(t)?!1:(jTe.call(t),!0)}catch(r){return!1}},Y8=Object.prototype.toString,T3t="[object Object]",A3t="[object Function]",S3t="[object GeneratorFunction]",M3t="[object HTMLAllCollection]",E3t="[object HTML document.all class]",k3t="[object HTMLCollection]",C3t=typeof Symbol=="function"&&!!Symbol.toStringTag,L3t=!(0 in[,]),MG=function(){return!1};typeof document=="object"&&(GTe=document.all,Y8.call(GTe)===Y8.call(document.all)&&(MG=function(t){if((L3t||!t)&&(typeof t=="undefined"||typeof t=="object"))try{var r=Y8.call(t);return(r===M3t||r===E3t||r===k3t||r===T3t)&&t("")==null}catch(n){}return!1}));var GTe;WTe.exports=n5?function(t){if(MG(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;try{n5(t,null,AG)}catch(r){if(r!==X8)return!1}return!SG(t)&&TG(t)}:function(t){if(MG(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;if(C3t)return TG(t);if(SG(t))return!1;var r=Y8.call(t);return r!==A3t&&r!==S3t&&!/^\[object HTML/.test(r)?!1:TG(t)}});var EG=ye((zur,YTe)=>{"use strict";var P3t=ZTe(),I3t=Object.prototype.toString,XTe=Object.prototype.hasOwnProperty,R3t=function(t,r,n){for(var i=0,a=t.length;i=3&&(i=n),I3t.call(t)==="[object Array]"?R3t(t,r,i):typeof t=="string"?D3t(t,r,i):z3t(t,r,i)};YTe.exports=F3t});var CG=ye((Fur,KTe)=>{"use strict";var kG=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],q3t=typeof globalThis=="undefined"?window:globalThis;KTe.exports=function(){for(var t=[],r=0;r{"use strict";var J8=EG(),O3t=CG(),JTe=N4(),IG=i5(),K8=B4(),B3t=IG("Object.prototype.toString"),QTe=F4()(),$Te=typeof globalThis=="undefined"?window:globalThis,PG=O3t(),RG=IG("String.prototype.slice"),LG=Object.getPrototypeOf,N3t=IG("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1?r:r!=="Object"?!1:V3t(t)}return K8?U3t(t):null}});var s5e=ye((Our,o5e)=>{"use strict";var r5e=EG(),H3t=CG(),zG=i5(),G3t=zG("Object.prototype.toString"),i5e=F4()(),Q8=B4(),j3t=typeof globalThis=="undefined"?window:globalThis,n5e=H3t(),W3t=zG("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1}return Q8?X3t(t):!1}});var OG=ye(Ol=>{"use strict";var Y3t=NTe(),K3t=HTe(),Hg=t5e(),l5e=s5e();function a5(e){return e.call.bind(e)}var u5e=typeof BigInt!="undefined",c5e=typeof Symbol!="undefined",X0=a5(Object.prototype.toString),J3t=a5(Number.prototype.valueOf),$3t=a5(String.prototype.valueOf),Q3t=a5(Boolean.prototype.valueOf);u5e&&(f5e=a5(BigInt.prototype.valueOf));var f5e;c5e&&(h5e=a5(Symbol.prototype.valueOf));var h5e;function V4(e,t){if(typeof e!="object")return!1;try{return t(e),!0}catch(r){return!1}}Ol.isArgumentsObject=Y3t;Ol.isGeneratorFunction=K3t;Ol.isTypedArray=l5e;function eTt(e){return typeof Promise!="undefined"&&e instanceof Promise||e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"}Ol.isPromise=eTt;function tTt(e){return typeof ArrayBuffer!="undefined"&&ArrayBuffer.isView?ArrayBuffer.isView(e):l5e(e)||v5e(e)}Ol.isArrayBufferView=tTt;function rTt(e){return Hg(e)==="Uint8Array"}Ol.isUint8Array=rTt;function iTt(e){return Hg(e)==="Uint8ClampedArray"}Ol.isUint8ClampedArray=iTt;function nTt(e){return Hg(e)==="Uint16Array"}Ol.isUint16Array=nTt;function aTt(e){return Hg(e)==="Uint32Array"}Ol.isUint32Array=aTt;function oTt(e){return Hg(e)==="Int8Array"}Ol.isInt8Array=oTt;function sTt(e){return Hg(e)==="Int16Array"}Ol.isInt16Array=sTt;function lTt(e){return Hg(e)==="Int32Array"}Ol.isInt32Array=lTt;function uTt(e){return Hg(e)==="Float32Array"}Ol.isFloat32Array=uTt;function cTt(e){return Hg(e)==="Float64Array"}Ol.isFloat64Array=cTt;function fTt(e){return Hg(e)==="BigInt64Array"}Ol.isBigInt64Array=fTt;function hTt(e){return Hg(e)==="BigUint64Array"}Ol.isBigUint64Array=hTt;function eR(e){return X0(e)==="[object Map]"}eR.working=typeof Map!="undefined"&&eR(new Map);function dTt(e){return typeof Map=="undefined"?!1:eR.working?eR(e):e instanceof Map}Ol.isMap=dTt;function tR(e){return X0(e)==="[object Set]"}tR.working=typeof Set!="undefined"&&tR(new Set);function vTt(e){return typeof Set=="undefined"?!1:tR.working?tR(e):e instanceof Set}Ol.isSet=vTt;function rR(e){return X0(e)==="[object WeakMap]"}rR.working=typeof WeakMap!="undefined"&&rR(new WeakMap);function pTt(e){return typeof WeakMap=="undefined"?!1:rR.working?rR(e):e instanceof WeakMap}Ol.isWeakMap=pTt;function qG(e){return X0(e)==="[object WeakSet]"}qG.working=typeof WeakSet!="undefined"&&qG(new WeakSet);function gTt(e){return qG(e)}Ol.isWeakSet=gTt;function iR(e){return X0(e)==="[object ArrayBuffer]"}iR.working=typeof ArrayBuffer!="undefined"&&iR(new ArrayBuffer);function d5e(e){return typeof ArrayBuffer=="undefined"?!1:iR.working?iR(e):e instanceof ArrayBuffer}Ol.isArrayBuffer=d5e;function nR(e){return X0(e)==="[object DataView]"}nR.working=typeof ArrayBuffer!="undefined"&&typeof DataView!="undefined"&&nR(new DataView(new ArrayBuffer(1),0,1));function v5e(e){return typeof DataView=="undefined"?!1:nR.working?nR(e):e instanceof DataView}Ol.isDataView=v5e;var FG=typeof SharedArrayBuffer!="undefined"?SharedArrayBuffer:void 0;function U4(e){return X0(e)==="[object SharedArrayBuffer]"}function p5e(e){return typeof FG=="undefined"?!1:(typeof U4.working=="undefined"&&(U4.working=U4(new FG)),U4.working?U4(e):e instanceof FG)}Ol.isSharedArrayBuffer=p5e;function mTt(e){return X0(e)==="[object AsyncFunction]"}Ol.isAsyncFunction=mTt;function yTt(e){return X0(e)==="[object Map Iterator]"}Ol.isMapIterator=yTt;function _Tt(e){return X0(e)==="[object Set Iterator]"}Ol.isSetIterator=_Tt;function xTt(e){return X0(e)==="[object Generator]"}Ol.isGeneratorObject=xTt;function bTt(e){return X0(e)==="[object WebAssembly.Module]"}Ol.isWebAssemblyCompiledModule=bTt;function g5e(e){return V4(e,J3t)}Ol.isNumberObject=g5e;function m5e(e){return V4(e,$3t)}Ol.isStringObject=m5e;function y5e(e){return V4(e,Q3t)}Ol.isBooleanObject=y5e;function _5e(e){return u5e&&V4(e,f5e)}Ol.isBigIntObject=_5e;function x5e(e){return c5e&&V4(e,h5e)}Ol.isSymbolObject=x5e;function wTt(e){return g5e(e)||m5e(e)||y5e(e)||_5e(e)||x5e(e)}Ol.isBoxedPrimitive=wTt;function TTt(e){return typeof Uint8Array!="undefined"&&(d5e(e)||p5e(e))}Ol.isAnyArrayBuffer=TTt;["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(e){Object.defineProperty(Ol,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})})});var BG=ye((Nur,b5e)=>{b5e.exports=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"}});var jG=ye(Bl=>{var w5e=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),HG(t)?r.showHidden=t:t&&Bl._extend(r,t),d2(r.showHidden)&&(r.showHidden=!1),d2(r.depth)&&(r.depth=2),d2(r.colors)&&(r.colors=!1),d2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=STt),lR(r,e,r.depth)}Bl.inspect=I_;I_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};I_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function STt(e,t){var r=I_.styles[t];return r?"\x1B["+I_.colors[r][0]+"m"+e+"\x1B["+I_.colors[r][1]+"m":e}function MTt(e,t){return e}function ETt(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function lR(e,t,r){if(e.customInspect&&t&&sR(t.inspect)&&t.inspect!==Bl.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return fR(n)||(n=lR(e,n,r)),n}var i=kTt(e,t);if(i)return i;var a=Object.keys(t),o=ETt(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),G4(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return NG(t);if(a.length===0){if(sR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(H4(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(uR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(G4(t))return NG(t)}var l="",u=!1,c=["{","}"];if(A5e(t)&&(u=!0,c=["[","]"]),sR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if(H4(t)&&(l=" "+RegExp.prototype.toString.call(t)),uR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),G4(t)&&(l=" "+NG(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return H4(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=CTt(e,t,r,o,a):h=a.map(function(d){return VG(e,t,r,o,d,u)}),e.seen.pop(),LTt(h,l,c)}function kTt(e,t){if(d2(t))return e.stylize("undefined","undefined");if(fR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(S5e(t))return e.stylize(""+t,"number");if(HG(t))return e.stylize(""+t,"boolean");if(cR(t))return e.stylize("null","null")}function NG(e){return"["+Error.prototype.toString.call(e)+"]"}function CTt(e,t,r,n,i){for(var a=[],o=0,s=t.length;o24?(isFinite(oe)&&(clearTimeout(Sa),Sa=setTimeout(ho,oe)),Fn=0):(Fn=1,go(ho))}e.timer.flush=function(){Mo(),xo()};function Mo(){for(var Z=Date.now(),oe=Ji;oe;)Z>=oe.t&&oe.c(Z-oe.t)&&(oe.c=null),oe=oe.n;return Z}function xo(){for(var Z,oe=Ji,we=1/0;oe;)oe.c?(oe.t=0;--tt)qr.push(Ue[or[Dr[tt]][2]]);for(tt=+oi;tt1&&Vt(Z[we[Be-2]],Z[we[Be-1]],Z[Ue])<=0;)--Be;we[Be++]=Ue}return we.slice(0,Be)}function Xs(Z,oe){return Z[0]-oe[0]||Z[1]-oe[1]}e.geom.polygon=function(Z){return ie(Z,wl),Z};var wl=e.geom.polygon.prototype=[];wl.area=function(){for(var Z=-1,oe=this.length,we,Be=this[oe-1],Ue=0;++ZYe)tt=tt.L;else if(wt=oe-vo(tt,we),wt>Ye){if(!tt.R){Be=tt;break}tt=tt.R}else{We>-Ye?(Be=tt.P,Ue=tt):wt>-Ye?(Be=tt,Ue=tt.N):Be=Ue=tt;break}var zt=ms(Z);if(Hs.insert(Be,zt),!(!Be&&!Ue)){if(Be===Ue){ko(Be),Ue=ms(Be.site),Hs.insert(zt,Ue),zt.edge=Ue.edge=cf(Be.site,zt.site),Zn(Be),Zn(Ue);return}if(!Ue){zt.edge=cf(Be.site,zt.site);return}ko(Be),ko(Ue);var or=Be.site,lr=or.x,Dr=or.y,Ir=Z.x-lr,oi=Z.y-Dr,ui=Ue.site,qr=ui.x-lr,Kr=ui.y-Dr,ii=2*(Ir*Kr-oi*qr),vi=Ir*Ir+oi*oi,ci=qr*qr+Kr*Kr,Jr={x:(Kr*vi-oi*ci)/ii+lr,y:(Ir*ci-qr*vi)/ii+Dr};Al(Ue.edge,or,ui,Jr),zt.edge=cf(or,Z,null,Jr),Ue.edge=cf(Z,ui,null,Jr),Zn(Be),Zn(Ue)}}function Rl(Z,oe){var we=Z.site,Be=we.x,Ue=we.y,We=Ue-oe;if(!We)return Be;var wt=Z.P;if(!wt)return-1/0;we=wt.site;var tt=we.x,zt=we.y,or=zt-oe;if(!or)return tt;var lr=tt-Be,Dr=1/We-1/or,Ir=lr/or;return Dr?(-Ir+Math.sqrt(Ir*Ir-2*Dr*(lr*lr/(-2*or)-zt+or/2+Ue-We/2)))/Dr+Be:(Be+tt)/2}function vo(Z,oe){var we=Z.N;if(we)return Rl(we,oe);var Be=Z.site;return Be.y===oe?Be.x:1/0}function Zl(Z){this.site=Z,this.edges=[]}Zl.prototype.prepare=function(){for(var Z=this.edges,oe=Z.length,we;oe--;)we=Z[oe].edge,(!we.b||!we.a)&&Z.splice(oe,1);return Z.sort(Xl),Z.length};function Ks(Z){for(var oe=Z[0][0],we=Z[1][0],Be=Z[0][1],Ue=Z[1][1],We,wt,tt,zt,or=Ys,lr=or.length,Dr,Ir,oi,ui,qr,Kr;lr--;)if(Dr=or[lr],!(!Dr||!Dr.prepare()))for(oi=Dr.edges,ui=oi.length,Ir=0;IrYe||p(zt-wt)>Ye)&&(oi.splice(Ir,0,new Hc(rh(Dr.site,Kr,p(tt-oe)Ye?{x:oe,y:p(We-oe)Ye?{x:p(wt-Ue)Ye?{x:we,y:p(We-we)Ye?{x:p(wt-Be)=-Ve)){var Ir=zt*zt+or*or,oi=lr*lr+Kr*Kr,ui=(Kr*Ir-or*oi)/Dr,qr=(zt*oi-lr*Ir)/Dr,Kr=qr+tt,ii=Hu.pop()||new Ec;ii.arc=Z,ii.site=Ue,ii.x=ui+wt,ii.y=Kr+Math.sqrt(ui*ui+qr*qr),ii.cy=Kr,Z.circle=ii;for(var vi=null,ci=Ql._;ci;)if(ii.y0)){if(qr/=oi,oi<0){if(qr0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}if(qr=we-tt,!(!oi&&qr<0)){if(qr/=oi,oi<0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}else if(oi>0){if(qr0)){if(qr/=ui,ui<0){if(qr0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}if(qr=Be-zt,!(!ui&&qr<0)){if(qr/=ui,ui<0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}else if(ui>0){if(qr0&&(Ue.a={x:tt+Dr*oi,y:zt+Dr*ui}),Ir<1&&(Ue.b={x:tt+Ir*oi,y:zt+Ir*ui}),Ue}}}}}}function Tl(Z){for(var oe=ml,we=Co(Z[0][0],Z[0][1],Z[1][0],Z[1][1]),Be=oe.length,Ue;Be--;)Ue=oe[Be],(!uf(Ue,Z)||!we(Ue)||p(Ue.a.x-Ue.b.x)=We)return;if(lr>Ir){if(!Be)Be={x:ui,y:wt};else if(Be.y>=tt)return;we={x:ui,y:tt}}else{if(!Be)Be={x:ui,y:tt};else if(Be.y1)if(lr>Ir){if(!Be)Be={x:(wt-ii)/Kr,y:wt};else if(Be.y>=tt)return;we={x:(tt-ii)/Kr,y:tt}}else{if(!Be)Be={x:(tt-ii)/Kr,y:tt};else if(Be.y=We)return;we={x:We,y:Kr*We+ii}}else{if(!Be)Be={x:We,y:Kr*We+ii};else if(Be.x=lr&&ii.x<=Ir&&ii.y>=Dr&&ii.y<=oi?[[lr,oi],[Ir,oi],[Ir,Dr],[lr,Dr]]:[];vi.point=zt[qr]}),or}function tt(zt){return zt.map(function(or,lr){return{x:Math.round(Be(or,lr)/Ye)*Ye,y:Math.round(Ue(or,lr)/Ye)*Ye,i:lr}})}return wt.links=function(zt){return Gc(tt(zt)).edges.filter(function(or){return or.l&&or.r}).map(function(or){return{source:zt[or.l.i],target:zt[or.r.i]}})},wt.triangles=function(zt){var or=[];return Gc(tt(zt)).cells.forEach(function(lr,Dr){for(var Ir=lr.site,oi=lr.edges.sort(Xl),ui=-1,qr=oi.length,Kr,ii,vi=oi[qr-1].edge,ci=vi.l===Ir?vi.r:vi.l;++uici&&(ci=lr.x),lr.y>Jr&&(Jr=lr.y),oi.push(lr.x),ui.push(lr.y);else for(qr=0;qrci&&(ci=un),dn>Jr&&(Jr=dn),oi.push(un),ui.push(dn)}var En=ci-ii,Nn=Jr-vi;En>Nn?Jr=vi+En:ci=ii+Nn;function ga(wa,io,Ss,_s,Ns,pn,za,Lo){if(!(isNaN(Ss)||isNaN(_s)))if(wa.leaf){var Fo=wa.x,js=wa.y;if(Fo!=null)if(p(Fo-Ss)+p(js-_s)<.01)ya(wa,io,Ss,_s,Ns,pn,za,Lo);else{var xl=wa.point;wa.x=wa.y=wa.point=null,ya(wa,xl,Fo,js,Ns,pn,za,Lo),ya(wa,io,Ss,_s,Ns,pn,za,Lo)}else wa.x=Ss,wa.y=_s,wa.point=io}else ya(wa,io,Ss,_s,Ns,pn,za,Lo)}function ya(wa,io,Ss,_s,Ns,pn,za,Lo){var Fo=(Ns+za)*.5,js=(pn+Lo)*.5,xl=Ss>=Fo,fu=_s>=js,dl=fu<<1|xl;wa.leaf=!1,wa=wa.nodes[dl]||(wa.nodes[dl]=Vl()),xl?Ns=Fo:za=Fo,fu?pn=js:Lo=js,ga(wa,io,Ss,_s,Ns,pn,za,Lo)}var so=Vl();if(so.add=function(wa){ga(so,wa,+Dr(wa,++qr),+Ir(wa,qr),ii,vi,ci,Jr)},so.visit=function(wa){Js(wa,so,ii,vi,ci,Jr)},so.find=function(wa){return hc(so,wa[0],wa[1],ii,vi,ci,Jr)},qr=-1,oe==null){for(;++qrWe||Ir>wt||oi=un,Nn=we>=dn,ga=Nn<<1|En,ya=ga+4;gawe&&(We=oe.slice(we,We),tt[wt]?tt[wt]+=We:tt[++wt]=We),(Be=Be[0])===(Ue=Ue[0])?tt[wt]?tt[wt]+=Ue:tt[++wt]=Ue:(tt[++wt]=null,zt.push({i:wt,x:$s(Be,Ue)})),we=dc.lastIndex;return we=0&&!(Be=e.interpolators[we](Z,oe)););return Be}e.interpolators=[function(Z,oe){var we=typeof oe;return(we==="string"?Hr.has(oe.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(oe)?Cc:hs:oe instanceof Wn?Cc:Array.isArray(oe)?ec:we==="object"&&isNaN(oe)?ws:$s)(Z,oe)}],e.interpolateArray=ec;function ec(Z,oe){var we=[],Be=[],Ue=Z.length,We=oe.length,wt=Math.min(Z.length,oe.length),tt;for(tt=0;tt=0?Z.slice(0,oe):Z,Be=oe>=0?Z.slice(oe+1):"in";return we=ov.get(we)||Ps,Be=wo.get(Be)||H,Od(Be(we.apply(null,t.call(arguments,1))))};function Od(Z){return function(oe){return oe<=0?0:oe>=1?1:Z(oe)}}function $o(Z){return function(oe){return 1-Z(1-oe)}}function Ja(Z){return function(oe){return .5*(oe<.5?Z(2*oe):2-Z(2-2*oe))}}function Ef(Z){return Z*Z}function tc(Z){return Z*Z*Z}function uu(Z){if(Z<=0)return 0;if(Z>=1)return 1;var oe=Z*Z,we=oe*Z;return 4*(Z<.5?we:3*(Z-oe)+we-.75)}function Mh(Z){return function(oe){return Math.pow(oe,Z)}}function jc(Z){return 1-Math.cos(Z*xe)}function kf(Z){return Math.pow(2,10*(Z-1))}function Ml(Z){return 1-Math.sqrt(1-Z*Z)}function Yh(Z,oe){var we;return arguments.length<2&&(oe=.45),arguments.length?we=oe/ht*Math.asin(1/Z):(Z=1,we=oe/4),function(Be){return 1+Z*Math.pow(2,-10*Be)*Math.sin((Be-we)*ht/oe)}}function Eh(Z){return Z||(Z=1.70158),function(oe){return oe*oe*((Z+1)*oe-Z)}}function nh(Z){return Z<1/2.75?7.5625*Z*Z:Z<2/2.75?7.5625*(Z-=1.5/2.75)*Z+.75:Z<2.5/2.75?7.5625*(Z-=2.25/2.75)*Z+.9375:7.5625*(Z-=2.625/2.75)*Z+.984375}e.interpolateHcl=hf;function hf(Z,oe){Z=e.hcl(Z),oe=e.hcl(oe);var we=Z.h,Be=Z.c,Ue=Z.l,We=oe.h-we,wt=oe.c-Be,tt=oe.l-Ue;return isNaN(wt)&&(wt=0,Be=isNaN(Be)?oe.c:Be),isNaN(We)?(We=0,we=isNaN(we)?oe.h:we):We>180?We-=360:We<-180&&(We+=360),function(zt){return Fr(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateHsl=kh;function kh(Z,oe){Z=e.hsl(Z),oe=e.hsl(oe);var we=Z.h,Be=Z.s,Ue=Z.l,We=oe.h-we,wt=oe.s-Be,tt=oe.l-Ue;return isNaN(wt)&&(wt=0,Be=isNaN(Be)?oe.s:Be),isNaN(We)?(We=0,we=isNaN(we)?oe.h:we):We>180?We-=360:We<-180&&(We+=360),function(zt){return jt(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateLab=Kh;function Kh(Z,oe){Z=e.lab(Z),oe=e.lab(oe);var we=Z.l,Be=Z.a,Ue=Z.b,We=oe.l-we,wt=oe.a-Be,tt=oe.b-Ue;return function(zt){return Gi(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateRound=rc;function rc(Z,oe){return oe-=Z,function(we){return Math.round(Z+oe*we)}}e.transform=function(Z){var oe=n.createElementNS(e.ns.prefix.svg,"g");return(e.transform=function(we){if(we!=null){oe.setAttribute("transform",we);var Be=oe.transform.baseVal.consolidate()}return new ah(Be?Be.matrix:Nf)})(Z)};function ah(Z){var oe=[Z.a,Z.b],we=[Z.c,Z.d],Be=df(oe),Ue=Wc(oe,we),We=df(Cu(we,oe,-Ue))||0;oe[0]*we[1]180?oe+=360:oe-Z>180&&(Z+=360),Be.push({i:we.push(Zc(we)+"rotate(",null,")")-2,x:$s(Z,oe)})):oe&&we.push(Zc(we)+"rotate("+oe+")")}function Bd(Z,oe,we,Be){Z!==oe?Be.push({i:we.push(Zc(we)+"skewX(",null,")")-2,x:$s(Z,oe)}):oe&&we.push(Zc(we)+"skewX("+oe+")")}function Jh(Z,oe,we,Be){if(Z[0]!==oe[0]||Z[1]!==oe[1]){var Ue=we.push(Zc(we)+"scale(",null,",",null,")");Be.push({i:Ue-4,x:$s(Z[0],oe[0])},{i:Ue-2,x:$s(Z[1],oe[1])})}else(oe[0]!==1||oe[1]!==1)&&we.push(Zc(we)+"scale("+oe+")")}function Cf(Z,oe){var we=[],Be=[];return Z=e.transform(Z),oe=e.transform(oe),ds(Z.translate,oe.translate,we,Be),Ch(Z.rotate,oe.rotate,we,Be),Bd(Z.skew,oe.skew,we,Be),Jh(Z.scale,oe.scale,we,Be),Z=oe=null,function(Ue){for(var We=-1,wt=Be.length,tt;++We0?We=Jr:(we.c=null,we.t=NaN,we=null,oe.end({type:"end",alpha:We=0})):Jr>0&&(oe.start({type:"start",alpha:We=Jr}),we=Oo(Z.tick)),Z):We},Z.start=function(){var Jr,un=oi.length,dn=ui.length,En=Be[0],Nn=Be[1],ga,ya;for(Jr=0;Jr=0;)We.push(lr=or[zt]),lr.parent=tt,lr.depth=tt.depth+1;we&&(tt.value=0),tt.children=or}else we&&(tt.value=+we.call(Be,tt,tt.depth)||0),delete tt.children;return vc(Ue,function(Dr){var Ir,oi;Z&&(Ir=Dr.children)&&Ir.sort(Z),we&&(oi=Dr.parent)&&(oi.value+=Dr.value)}),wt}return Be.sort=function(Ue){return arguments.length?(Z=Ue,Be):Z},Be.children=function(Ue){return arguments.length?(oe=Ue,Be):oe},Be.value=function(Ue){return arguments.length?(we=Ue,Be):we},Be.revalue=function(Ue){return we&&(Pc(Ue,function(We){We.children&&(We.value=0)}),vc(Ue,function(We){var wt;We.children||(We.value=+we.call(Be,We,We.depth)||0),(wt=We.parent)&&(wt.value+=We.value)})),Ue},Be};function Gu(Z,oe){return e.rebind(Z,oe,"sort","children","value"),Z.nodes=Z,Z.links=Iu,Z}function Pc(Z,oe){for(var we=[Z];(Z=we.pop())!=null;)if(oe(Z),(Ue=Z.children)&&(Be=Ue.length))for(var Be,Ue;--Be>=0;)we.push(Ue[Be])}function vc(Z,oe){for(var we=[Z],Be=[];(Z=we.pop())!=null;)if(Be.push(Z),(wt=Z.children)&&(We=wt.length))for(var Ue=-1,We,wt;++UeUe&&(Ue=tt),Be.push(tt)}for(wt=0;wtBe&&(we=oe,Be=Ue);return we}function Is(Z){return Z.reduce(Pf,0)}function Pf(Z,oe){return Z+oe[1]}e.layout.histogram=function(){var Z=!0,oe=Number,we=Vf,Be=Ic;function Ue(We,Ir){for(var tt=[],zt=We.map(oe,this),or=we.call(this,zt,Ir),lr=Be.call(this,or,zt,Ir),Dr,Ir=-1,oi=zt.length,ui=lr.length-1,qr=Z?1:1/oi,Kr;++Ir0)for(Ir=-1;++Ir=or[0]&&Kr<=or[1]&&(Dr=tt[e.bisect(lr,Kr,1,ui)-1],Dr.y+=qr,Dr.push(We[Ir]));return tt}return Ue.value=function(We){return arguments.length?(oe=We,Ue):oe},Ue.range=function(We){return arguments.length?(we=ti(We),Ue):we},Ue.bins=function(We){return arguments.length?(Be=typeof We=="number"?function(wt){return ju(wt,We)}:ti(We),Ue):Be},Ue.frequency=function(We){return arguments.length?(Z=!!We,Ue):Z},Ue};function Ic(Z,oe){return ju(Z,Math.ceil(Math.log(oe.length)/Math.LN2+1))}function ju(Z,oe){for(var we=-1,Be=+Z[0],Ue=(Z[1]-Be)/oe,We=[];++we<=oe;)We[we]=Ue*we+Be;return We}function Vf(Z){return[e.min(Z),e.max(Z)]}e.layout.pack=function(){var Z=e.layout.hierarchy().sort(pc),oe=0,we=[1,1],Be;function Ue(We,wt){var tt=Z.call(this,We,wt),zt=tt[0],or=we[0],lr=we[1],Dr=Be==null?Math.sqrt:typeof Be=="function"?Be:function(){return Be};if(zt.x=zt.y=0,vc(zt,function(oi){oi.r=+Dr(oi.value)}),vc(zt,Ih),oe){var Ir=oe*(Be?1:Math.max(2*zt.r/or,2*zt.r/lr))/2;vc(zt,function(oi){oi.r+=Ir}),vc(zt,Ih),vc(zt,function(oi){oi.r-=Ir})}return gc(zt,or/2,lr/2,Be?1:1/Math.max(2*zt.r/or,2*zt.r/lr)),tt}return Ue.size=function(We){return arguments.length?(we=We,Ue):we},Ue.radius=function(We){return arguments.length?(Be=We==null||typeof We=="function"?We:+We,Ue):Be},Ue.padding=function(We){return arguments.length?(oe=+We,Ue):oe},Gu(Ue,Z)};function pc(Z,oe){return Z.value-oe.value}function pf(Z,oe){var we=Z._pack_next;Z._pack_next=oe,oe._pack_prev=Z,oe._pack_next=we,we._pack_prev=oe}function Ph(Z,oe){Z._pack_next=oe,oe._pack_prev=Z}function Dl(Z,oe){var we=oe.x-Z.x,Be=oe.y-Z.y,Ue=Z.r+oe.r;return .999*Ue*Ue>we*we+Be*Be}function Ih(Z){if(!(oe=Z.children)||!(Ir=oe.length))return;var oe,we=1/0,Be=-1/0,Ue=1/0,We=-1/0,wt,tt,zt,or,lr,Dr,Ir;function oi(Jr){we=Math.min(Jr.x-Jr.r,we),Be=Math.max(Jr.x+Jr.r,Be),Ue=Math.min(Jr.y-Jr.r,Ue),We=Math.max(Jr.y+Jr.r,We)}if(oe.forEach(Wu),wt=oe[0],wt.x=-wt.r,wt.y=0,oi(wt),Ir>1&&(tt=oe[1],tt.x=tt.r,tt.y=0,oi(tt),Ir>2))for(zt=oe[2],hl(wt,tt,zt),oi(zt),pf(wt,zt),wt._pack_prev=zt,pf(zt,tt),tt=wt._pack_next,or=3;orKr.x&&(Kr=un),un.depth>ii.depth&&(ii=un)});var vi=oe(qr,Kr)/2-qr.x,ci=we[0]/(Kr.x+oe(Kr,qr)/2+vi),Jr=we[1]/(ii.depth||1);Pc(oi,function(un){un.x=(un.x+vi)*ci,un.y=un.depth*Jr})}return Ir}function We(lr){for(var Dr={A:null,children:[lr]},Ir=[Dr],oi;(oi=Ir.pop())!=null;)for(var ui=oi.children,qr,Kr=0,ii=ui.length;Kr0&&(nc(gt(qr,lr,Ir),lr,un),ii+=un,vi+=un),ci+=qr.m,ii+=oi.m,Jr+=Kr.m,vi+=ui.m;qr&&!Yc(ui)&&(ui.t=qr,ui.m+=ci-vi),oi&&!mc(Kr)&&(Kr.t=oi,Kr.m+=ii-Jr,Ir=lr)}return Ir}function or(lr){lr.x*=we[0],lr.y=lr.depth*we[1]}return Ue.separation=function(lr){return arguments.length?(oe=lr,Ue):oe},Ue.size=function(lr){return arguments.length?(Be=(we=lr)==null?or:null,Ue):Be?null:we},Ue.nodeSize=function(lr){return arguments.length?(Be=(we=lr)==null?null:or,Ue):Be?we:null},Gu(Ue,Z)};function iu(Z,oe){return Z.parent==oe.parent?1:2}function mc(Z){var oe=Z.children;return oe.length?oe[0]:Z.t}function Yc(Z){var oe=Z.children,we;return(we=oe.length)?oe[we-1]:Z.t}function nc(Z,oe,we){var Be=we/(oe.i-Z.i);oe.c-=Be,oe.s+=we,Z.c+=Be,oe.z+=we,oe.m+=we}function gf(Z){for(var oe=0,we=0,Be=Z.children,Ue=Be.length,We;--Ue>=0;)We=Be[Ue],We.z+=oe,We.m+=oe,oe+=We.s+(we+=We.c)}function gt(Z,oe,we){return Z.a.parent===oe.parent?Z.a:we}e.layout.cluster=function(){var Z=e.layout.hierarchy().sort(null).value(null),oe=iu,we=[1,1],Be=!1;function Ue(We,wt){var tt=Z.call(this,We,wt),zt=tt[0],or,lr=0;vc(zt,function(qr){var Kr=qr.children;Kr&&Kr.length?(qr.x=wr(Kr),qr.y=Bt(Kr)):(qr.x=or?lr+=oe(qr,or):0,qr.y=0,or=qr)});var Dr=vr(zt),Ir=Ur(zt),oi=Dr.x-oe(Dr,Ir)/2,ui=Ir.x+oe(Ir,Dr)/2;return vc(zt,Be?function(qr){qr.x=(qr.x-zt.x)*we[0],qr.y=(zt.y-qr.y)*we[1]}:function(qr){qr.x=(qr.x-oi)/(ui-oi)*we[0],qr.y=(1-(zt.y?qr.y/zt.y:1))*we[1]}),tt}return Ue.separation=function(We){return arguments.length?(oe=We,Ue):oe},Ue.size=function(We){return arguments.length?(Be=(we=We)==null,Ue):Be?null:we},Ue.nodeSize=function(We){return arguments.length?(Be=(we=We)!=null,Ue):Be?we:null},Gu(Ue,Z)};function Bt(Z){return 1+e.max(Z,function(oe){return oe.y})}function wr(Z){return Z.reduce(function(oe,we){return oe+we.x},0)/Z.length}function vr(Z){var oe=Z.children;return oe&&oe.length?vr(oe[0]):Z}function Ur(Z){var oe=Z.children,we;return oe&&(we=oe.length)?Ur(oe[we-1]):Z}e.layout.treemap=function(){var Z=e.layout.hierarchy(),oe=Math.round,we=[1,1],Be=null,Ue=fi,We=!1,wt,tt="squarify",zt=.5*(1+Math.sqrt(5));function or(qr,Kr){for(var ii=-1,vi=qr.length,ci,Jr;++ii0;)vi.push(Jr=ci[Nn-1]),vi.area+=Jr.area,tt!=="squarify"||(dn=Ir(vi,En))<=un?(ci.pop(),un=dn):(vi.area-=vi.pop().area,oi(vi,En,ii,!1),En=Math.min(ii.dx,ii.dy),vi.length=vi.area=0,un=1/0);vi.length&&(oi(vi,En,ii,!0),vi.length=vi.area=0),Kr.forEach(lr)}}function Dr(qr){var Kr=qr.children;if(Kr&&Kr.length){var ii=Ue(qr),vi=Kr.slice(),ci,Jr=[];for(or(vi,ii.dx*ii.dy/qr.value),Jr.area=0;ci=vi.pop();)Jr.push(ci),Jr.area+=ci.area,ci.z!=null&&(oi(Jr,ci.z?ii.dx:ii.dy,ii,!vi.length),Jr.length=Jr.area=0);Kr.forEach(Dr)}}function Ir(qr,Kr){for(var ii=qr.area,vi,ci=0,Jr=1/0,un=-1,dn=qr.length;++unci&&(ci=vi));return ii*=ii,Kr*=Kr,ii?Math.max(Kr*ci*zt/ii,ii/(Kr*Jr*zt)):1/0}function oi(qr,Kr,ii,vi){var ci=-1,Jr=qr.length,un=ii.x,dn=ii.y,En=Kr?oe(qr.area/Kr):0,Nn;if(Kr==ii.dx){for((vi||En>ii.dy)&&(En=ii.dy);++ciii.dx)&&(En=ii.dx);++ci1);return Z+oe*Be*Math.sqrt(-2*Math.log(We)/We)}},logNormal:function(){var Z=e.random.normal.apply(e,arguments);return function(){return Math.exp(Z())}},bates:function(Z){var oe=e.random.irwinHall(Z);return function(){return oe()/Z}},irwinHall:function(Z){return function(){for(var oe=0,we=0;we2?mi:hn,or=Be?Lu:pd;return Ue=zt(Z,oe,or,we),We=zt(oe,Z,or,Sl),tt}function tt(zt){return Ue(zt)}return tt.invert=function(zt){return We(zt)},tt.domain=function(zt){return arguments.length?(Z=zt.map(Number),wt()):Z},tt.range=function(zt){return arguments.length?(oe=zt,wt()):oe},tt.rangeRound=function(zt){return tt.range(zt).interpolate(rc)},tt.clamp=function(zt){return arguments.length?(Be=zt,wt()):Be},tt.interpolate=function(zt){return arguments.length?(we=zt,wt()):we},tt.ticks=function(zt){return qa(Z,zt)},tt.tickFormat=function(zt,or){return d3_scale_linearTickFormat(Z,zt,or)},tt.nice=function(zt){return Ta(Z,zt),wt()},tt.copy=function(){return Pn(Z,oe,we,Be)},wt()}function Ma(Z,oe){return e.rebind(Z,oe,"range","rangeRound","interpolate","clamp")}function Ta(Z,oe){return Ti(Z,qi(Ea(Z,oe)[2])),Ti(Z,qi(Ea(Z,oe)[2])),Z}function Ea(Z,oe){oe==null&&(oe=10);var we=Fi(Z),Be=we[1]-we[0],Ue=Math.pow(10,Math.floor(Math.log(Be/oe)/Math.LN10)),We=oe/Be*Ue;return We<=.15?Ue*=10:We<=.35?Ue*=5:We<=.75&&(Ue*=2),we[0]=Math.ceil(we[0]/Ue)*Ue,we[1]=Math.floor(we[1]/Ue)*Ue+Ue*.5,we[2]=Ue,we}function qa(Z,oe){return e.range.apply(e,Ea(Z,oe))}var Cn={s:1,g:1,p:1,r:1,e:1};function sn(Z){return-Math.floor(Math.log(Z)/Math.LN10+.01)}function Ua(Z,oe){var we=sn(oe[2]);return Z in Cn?Math.abs(we-sn(Math.max(p(oe[0]),p(oe[1]))))+ +(Z!=="e"):we-(Z==="%")*2}e.scale.log=function(){return mo(e.scale.linear().domain([0,1]),10,!0,[1,10])};function mo(Z,oe,we,Be){function Ue(tt){return(we?Math.log(tt<0?0:tt):-Math.log(tt>0?0:-tt))/Math.log(oe)}function We(tt){return we?Math.pow(oe,tt):-Math.pow(oe,-tt)}function wt(tt){return Z(Ue(tt))}return wt.invert=function(tt){return We(Z.invert(tt))},wt.domain=function(tt){return arguments.length?(we=tt[0]>=0,Z.domain((Be=tt.map(Number)).map(Ue)),wt):Be},wt.base=function(tt){return arguments.length?(oe=+tt,Z.domain(Be.map(Ue)),wt):oe},wt.nice=function(){var tt=Ti(Be.map(Ue),we?Math:Xo);return Z.domain(tt),Be=tt.map(We),wt},wt.ticks=function(){var tt=Fi(Be),zt=[],or=tt[0],lr=tt[1],Dr=Math.floor(Ue(or)),Ir=Math.ceil(Ue(lr)),oi=oe%1?2:oe;if(isFinite(Ir-Dr)){if(we){for(;Dr0;ui--)zt.push(We(Dr)*ui);for(Dr=0;zt[Dr]lr;Ir--);zt=zt.slice(Dr,Ir)}return zt},wt.copy=function(){return mo(Z.copy(),oe,we,Be)},Ma(wt,Z)}var Xo={floor:function(Z){return-Math.ceil(-Z)},ceil:function(Z){return-Math.floor(-Z)}};e.scale.pow=function(){return Ts(e.scale.linear(),1,[0,1])};function Ts(Z,oe,we){var Be=Qo(oe),Ue=Qo(1/oe);function We(wt){return Z(Be(wt))}return We.invert=function(wt){return Ue(Z.invert(wt))},We.domain=function(wt){return arguments.length?(Z.domain((we=wt.map(Number)).map(Be)),We):we},We.ticks=function(wt){return qa(we,wt)},We.tickFormat=function(wt,tt){return d3_scale_linearTickFormat(we,wt,tt)},We.nice=function(wt){return We.domain(Ta(we,wt))},We.exponent=function(wt){return arguments.length?(Be=Qo(oe=wt),Ue=Qo(1/oe),Z.domain(we.map(Be)),We):oe},We.copy=function(){return Ts(Z.copy(),oe,we)},Ma(We,Z)}function Qo(Z){return function(oe){return oe<0?-Math.pow(-oe,Z):Math.pow(oe,Z)}}e.scale.sqrt=function(){return e.scale.pow().exponent(.5)},e.scale.ordinal=function(){return ys([],{t:"range",a:[[]]})};function ys(Z,oe){var we,Be,Ue;function We(tt){return Be[((we.get(tt)||(oe.t==="range"?we.set(tt,Z.push(tt)):NaN))-1)%Be.length]}function wt(tt,zt){return e.range(Z.length).map(function(or){return tt+zt*or})}return We.domain=function(tt){if(!arguments.length)return Z;Z=[],we=new A;for(var zt=-1,or=tt.length,lr;++zt0?we[We-1]:Z[0],WeIr?0:1;if(lr=Le)return zt(lr,ui)+(or?zt(or,1-ui):"")+"Z";var qr,Kr,ii,vi,ci=0,Jr=0,un,dn,En,Nn,ga,ya,so,wa,io=[];if((vi=(+wt.apply(this,arguments)||0)/2)&&(ii=Be===Ru?Math.sqrt(or*or+lr*lr):+Be.apply(this,arguments),ui||(Jr*=-1),lr&&(Jr=Qr(ii/lr*Math.sin(vi))),or&&(ci=Qr(ii/or*Math.sin(vi)))),lr){un=lr*Math.cos(Dr+Jr),dn=lr*Math.sin(Dr+Jr),En=lr*Math.cos(Ir-Jr),Nn=lr*Math.sin(Ir-Jr);var Ss=Math.abs(Ir-Dr-2*Jr)<=Xe?0:1;if(Jr&&Dc(un,dn,En,Nn)===ui^Ss){var _s=(Dr+Ir)/2;un=lr*Math.cos(_s),dn=lr*Math.sin(_s),En=Nn=null}}else un=dn=0;if(or){ga=or*Math.cos(Ir-ci),ya=or*Math.sin(Ir-ci),so=or*Math.cos(Dr+ci),wa=or*Math.sin(Dr+ci);var Ns=Math.abs(Dr-Ir+2*ci)<=Xe?0:1;if(ci&&Dc(ga,ya,so,wa)===1-ui^Ns){var pn=(Dr+Ir)/2;ga=or*Math.cos(pn),ya=or*Math.sin(pn),so=wa=null}}else ga=ya=0;if(oi>Ye&&(qr=Math.min(Math.abs(lr-or)/2,+we.apply(this,arguments)))>.001){Kr=or0?0:1}function Da(Z,oe,we,Be,Ue){var We=Z[0]-oe[0],wt=Z[1]-oe[1],tt=(Ue?Be:-Be)/Math.sqrt(We*We+wt*wt),zt=tt*wt,or=-tt*We,lr=Z[0]+zt,Dr=Z[1]+or,Ir=oe[0]+zt,oi=oe[1]+or,ui=(lr+Ir)/2,qr=(Dr+oi)/2,Kr=Ir-lr,ii=oi-Dr,vi=Kr*Kr+ii*ii,ci=we-Be,Jr=lr*oi-Ir*Dr,un=(ii<0?-1:1)*Math.sqrt(Math.max(0,ci*ci*vi-Jr*Jr)),dn=(Jr*ii-Kr*un)/vi,En=(-Jr*Kr-ii*un)/vi,Nn=(Jr*ii+Kr*un)/vi,ga=(-Jr*Kr+ii*un)/vi,ya=dn-ui,so=En-qr,wa=Nn-ui,io=ga-qr;return ya*ya+so*so>wa*wa+io*io&&(dn=Nn,En=ga),[[dn-zt,En-or],[dn*we/ci,En*we/ci]]}function eo(){return!0}function Jc(Z){var oe=zs,we=ks,Be=eo,Ue=_c,We=Ue.key,wt=.7;function tt(zt){var or=[],lr=[],Dr=-1,Ir=zt.length,oi,ui=ti(oe),qr=ti(we);function Kr(){or.push("M",Ue(Z(lr),wt))}for(;++Dr1?Z.join("L"):Z+"Z"}function le(Z){return Z.join("L")+"Z"}function w(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe1&&Ue.push("H",Be[0]),Ue.join("")}function B(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe1){tt=oe[1],We=Z[zt],zt++,Be+="C"+(Ue[0]+wt[0])+","+(Ue[1]+wt[1])+","+(We[0]-tt[0])+","+(We[1]-tt[1])+","+We[0]+","+We[1];for(var or=2;or9&&(We=we*3/Math.sqrt(We),wt[tt]=We*Be,wt[tt+1]=We*Ue));for(tt=-1;++tt<=zt;)We=(Z[Math.min(zt,tt+1)][0]-Z[Math.max(0,tt-1)][0])/(6*(1+wt[tt]*wt[tt])),oe.push([We||0,wt[tt]*We||0]);return oe}function Mt(Z){return Z.length<3?_c(Z):Z[0]+je(Z,et(Z))}e.svg.line.radial=function(){var Z=Jc(Dt);return Z.radius=Z.x,delete Z.x,Z.angle=Z.y,delete Z.y,Z};function Dt(Z){for(var oe,we=-1,Be=Z.length,Ue,We;++weXe)+",1 "+Dr}function or(lr,Dr,Ir,oi){return"Q 0,0 "+oi}return We.radius=function(lr){return arguments.length?(we=ti(lr),We):we},We.source=function(lr){return arguments.length?(Z=ti(lr),We):Z},We.target=function(lr){return arguments.length?(oe=ti(lr),We):oe},We.startAngle=function(lr){return arguments.length?(Be=ti(lr),We):Be},We.endAngle=function(lr){return arguments.length?(Ue=ti(lr),We):Ue},We};function Rr(Z){return Z.radius}e.svg.diagonal=function(){var Z=tr,oe=mr,we=zr;function Be(Ue,We){var wt=Z.call(this,Ue,We),tt=oe.call(this,Ue,We),zt=(wt.y+tt.y)/2,or=[wt,{x:wt.x,y:zt},{x:tt.x,y:zt},tt];return or=or.map(we),"M"+or[0]+"C"+or[1]+" "+or[2]+" "+or[3]}return Be.source=function(Ue){return arguments.length?(Z=ti(Ue),Be):Z},Be.target=function(Ue){return arguments.length?(oe=ti(Ue),Be):oe},Be.projection=function(Ue){return arguments.length?(we=Ue,Be):we},Be};function zr(Z){return[Z.x,Z.y]}e.svg.diagonal.radial=function(){var Z=e.svg.diagonal(),oe=zr,we=Z.projection;return Z.projection=function(Be){return arguments.length?we(Xr(oe=Be)):oe},Z};function Xr(Z){return function(){var oe=Z.apply(this,arguments),we=oe[0],Be=oe[1]-xe;return[we*Math.cos(Be),we*Math.sin(Be)]}}e.svg.symbol=function(){var Z=Li,oe=di;function we(Be,Ue){return(Qi.get(Z.call(this,Be,Ue))||Ci)(oe.call(this,Be,Ue))}return we.type=function(Be){return arguments.length?(Z=ti(Be),we):Z},we.size=function(Be){return arguments.length?(oe=ti(Be),we):oe},we};function di(){return 64}function Li(){return"circle"}function Ci(Z){var oe=Math.sqrt(Z/Xe);return"M0,"+oe+"A"+oe+","+oe+" 0 1,1 0,"+-oe+"A"+oe+","+oe+" 0 1,1 0,"+oe+"Z"}var Qi=e.map({circle:Ci,cross:function(Z){var oe=Math.sqrt(Z/5)/2;return"M"+-3*oe+","+-oe+"H"+-oe+"V"+-3*oe+"H"+oe+"V"+-oe+"H"+3*oe+"V"+oe+"H"+oe+"V"+3*oe+"H"+-oe+"V"+oe+"H"+-3*oe+"Z"},diamond:function(Z){var oe=Math.sqrt(Z/(2*pa)),we=oe*pa;return"M0,"+-oe+"L"+we+",0 0,"+oe+" "+-we+",0Z"},square:function(Z){var oe=Math.sqrt(Z)/2;return"M"+-oe+","+-oe+"L"+oe+","+-oe+" "+oe+","+oe+" "+-oe+","+oe+"Z"},"triangle-down":function(Z){var oe=Math.sqrt(Z/Mn),we=oe*Mn/2;return"M0,"+we+"L"+oe+","+-we+" "+-oe+","+-we+"Z"},"triangle-up":function(Z){var oe=Math.sqrt(Z/Mn),we=oe*Mn/2;return"M0,"+-we+"L"+oe+","+we+" "+-oe+","+we+"Z"}});e.svg.symbolTypes=Qi.keys();var Mn=Math.sqrt(3),pa=Math.tan(30*Se);Ce.transition=function(Z){for(var oe=Ro||++co,we=po(Z),Be=[],Ue,We,wt=Ds||{time:Date.now(),ease:uu,delay:0,duration:250},tt=-1,zt=this.length;++tt0;)Dr[--vi].call(Z,ii);if(Kr>=1)return wt.event&&wt.event.end.call(Z,Z.__data__,oe),--We.count?delete We[Be]:delete Z[we],1}wt||(tt=Ue.time,zt=Oo(Ir,0,tt),wt=We[Be]={tween:new A,time:tt,timer:zt,delay:Ue.delay,duration:Ue.duration,ease:Ue.ease,index:oe},Ue=null,++We.count)}e.svg.axis=function(){var Z=e.scale.linear(),oe=Hl,we=6,Be=6,Ue=3,We=[10],wt=null,tt;function zt(or){or.each(function(){var lr=e.select(this),Dr=this.__chart__||Z,Ir=this.__chart__=Z.copy(),oi=wt==null?Ir.ticks?Ir.ticks.apply(Ir,We):Ir.domain():wt,ui=tt==null?Ir.tickFormat?Ir.tickFormat.apply(Ir,We):H:tt,qr=lr.selectAll(".tick").data(oi,Ir),Kr=qr.enter().insert("g",".domain").attr("class","tick").style("opacity",Ye),ii=e.transition(qr.exit()).style("opacity",Ye).remove(),vi=e.transition(qr.order()).style("opacity",1),ci=Math.max(we,0)+Ue,Jr,un=Xi(Ir),dn=lr.selectAll(".domain").data([0]),En=(dn.enter().append("path").attr("class","domain"),e.transition(dn));Kr.append("line"),Kr.append("text");var Nn=Kr.select("line"),ga=vi.select("line"),ya=qr.select("text").text(ui),so=Kr.select("text"),wa=vi.select("text"),io=oe==="top"||oe==="left"?-1:1,Ss,_s,Ns,pn;if(oe==="bottom"||oe==="top"?(Jr=cu,Ss="x",Ns="y",_s="x2",pn="y2",ya.attr("dy",io<0?"0em":".71em").style("text-anchor","middle"),En.attr("d","M"+un[0]+","+io*Be+"V0H"+un[1]+"V"+io*Be)):(Jr=el,Ss="y",Ns="x",_s="y2",pn="x2",ya.attr("dy",".32em").style("text-anchor",io<0?"end":"start"),En.attr("d","M"+io*Be+","+un[0]+"H0V"+un[1]+"H"+io*Be)),Nn.attr(pn,io*we),so.attr(Ns,io*ci),ga.attr(_s,0).attr(pn,io*we),wa.attr(Ss,0).attr(Ns,io*ci),Ir.rangeBand){var za=Ir,Lo=za.rangeBand()/2;Dr=Ir=function(Fo){return za(Fo)+Lo}}else Dr.rangeBand?Dr=Ir:ii.call(Jr,Ir,Dr);Kr.call(Jr,Dr,Ir),vi.call(Jr,Ir,Ir)})}return zt.scale=function(or){return arguments.length?(Z=or,zt):Z},zt.orient=function(or){return arguments.length?(oe=or in Zu?or+"":Hl,zt):oe},zt.ticks=function(){return arguments.length?(We=r(arguments),zt):We},zt.tickValues=function(or){return arguments.length?(wt=or,zt):wt},zt.tickFormat=function(or){return arguments.length?(tt=or,zt):tt},zt.tickSize=function(or){var lr=arguments.length;return lr?(we=+or,Be=+arguments[lr-1],zt):we},zt.innerTickSize=function(or){return arguments.length?(we=+or,zt):we},zt.outerTickSize=function(or){return arguments.length?(Be=+or,zt):Be},zt.tickPadding=function(or){return arguments.length?(Ue=+or,zt):Ue},zt.tickSubdivide=function(){return arguments.length&&zt},zt};var Hl="bottom",Zu={top:1,right:1,bottom:1,left:1};function cu(Z,oe,we){Z.attr("transform",function(Be){var Ue=oe(Be);return"translate("+(isFinite(Ue)?Ue:we(Be))+",0)"})}function el(Z,oe,we){Z.attr("transform",function(Be){var Ue=oe(Be);return"translate(0,"+(isFinite(Ue)?Ue:we(Be))+")"})}e.svg.brush=function(){var Z=ke(lr,"brushstart","brush","brushend"),oe=null,we=null,Be=[0,0],Ue=[0,0],We,wt,tt=!0,zt=!0,or=zc[0];function lr(qr){qr.each(function(){var Kr=e.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",ui).on("touchstart.brush",ui),ii=Kr.selectAll(".background").data([0]);ii.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),Kr.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var vi=Kr.selectAll(".resize").data(or,H);vi.exit().remove(),vi.enter().append("g").attr("class",function(dn){return"resize "+dn}).style("cursor",function(dn){return au[dn]}).append("rect").attr("x",function(dn){return/[ew]$/.test(dn)?-3:null}).attr("y",function(dn){return/^[ns]/.test(dn)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),vi.style("display",lr.empty()?"none":null);var ci=e.transition(Kr),Jr=e.transition(ii),un;oe&&(un=Xi(oe),Jr.attr("x",un[0]).attr("width",un[1]-un[0]),Ir(ci)),we&&(un=Xi(we),Jr.attr("y",un[0]).attr("height",un[1]-un[0]),oi(ci)),Dr(ci)})}lr.event=function(qr){qr.each(function(){var Kr=Z.of(this,arguments),ii={x:Be,y:Ue,i:We,j:wt},vi=this.__chart__||ii;this.__chart__=ii,Ro?e.select(this).transition().each("start.brush",function(){We=vi.i,wt=vi.j,Be=vi.x,Ue=vi.y,Kr({type:"brushstart"})}).tween("brush:brush",function(){var ci=ec(Be,ii.x),Jr=ec(Ue,ii.y);return We=wt=null,function(un){Be=ii.x=ci(un),Ue=ii.y=Jr(un),Kr({type:"brush",mode:"resize"})}}).each("end.brush",function(){We=ii.i,wt=ii.j,Kr({type:"brush",mode:"resize"}),Kr({type:"brushend"})}):(Kr({type:"brushstart"}),Kr({type:"brush",mode:"resize"}),Kr({type:"brushend"}))})};function Dr(qr){qr.selectAll(".resize").attr("transform",function(Kr){return"translate("+Be[+/e$/.test(Kr)]+","+Ue[+/^s/.test(Kr)]+")"})}function Ir(qr){qr.select(".extent").attr("x",Be[0]),qr.selectAll(".extent,.n>rect,.s>rect").attr("width",Be[1]-Be[0])}function oi(qr){qr.select(".extent").attr("y",Ue[0]),qr.selectAll(".extent,.e>rect,.w>rect").attr("height",Ue[1]-Ue[0])}function ui(){var qr=this,Kr=e.select(e.event.target),ii=Z.of(qr,arguments),vi=e.select(qr),ci=Kr.datum(),Jr=!/^(n|s)$/.test(ci)&&oe,un=!/^(e|w)$/.test(ci)&&we,dn=Kr.classed("extent"),En=Or(qr),Nn,ga=e.mouse(qr),ya,so=e.select(a(qr)).on("keydown.brush",Ss).on("keyup.brush",_s);if(e.event.changedTouches?so.on("touchmove.brush",Ns).on("touchend.brush",za):so.on("mousemove.brush",Ns).on("mouseup.brush",za),vi.interrupt().selectAll("*").interrupt(),dn)ga[0]=Be[0]-ga[0],ga[1]=Ue[0]-ga[1];else if(ci){var wa=+/w$/.test(ci),io=+/^n/.test(ci);ya=[Be[1-wa]-ga[0],Ue[1-io]-ga[1]],ga[0]=Be[wa],ga[1]=Ue[io]}else e.event.altKey&&(Nn=ga.slice());vi.style("pointer-events","none").selectAll(".resize").style("display",null),e.select("body").style("cursor",Kr.style("cursor")),ii({type:"brushstart"}),Ns();function Ss(){e.event.keyCode==32&&(dn||(Nn=null,ga[0]-=Be[1],ga[1]-=Ue[1],dn=2),_e())}function _s(){e.event.keyCode==32&&dn==2&&(ga[0]+=Be[1],ga[1]+=Ue[1],dn=0,_e())}function Ns(){var Lo=e.mouse(qr),Fo=!1;ya&&(Lo[0]+=ya[0],Lo[1]+=ya[1]),dn||(e.event.altKey?(Nn||(Nn=[(Be[0]+Be[1])/2,(Ue[0]+Ue[1])/2]),ga[0]=Be[+(Lo[0]{(function(e,t){typeof i6=="object"&&typeof nee!="undefined"?t(i6):(e=e||self,t(e.d3=e.d3||{}))})(i6,function(e){"use strict";var t=new Date,r=new Date;function n(Ke,xt,bt,Lt){function St(Et){return Ke(Et=arguments.length===0?new Date:new Date(+Et)),Et}return St.floor=function(Et){return Ke(Et=new Date(+Et)),Et},St.ceil=function(Et){return Ke(Et=new Date(Et-1)),xt(Et,1),Ke(Et),Et},St.round=function(Et){var dt=St(Et),Ht=St.ceil(Et);return Et-dt0))return $t;do $t.push(fr=new Date(+Et)),xt(Et,Ht),Ke(Et);while(fr=dt)for(;Ke(dt),!Et(dt);)dt.setTime(dt-1)},function(dt,Ht){if(dt>=dt)if(Ht<0)for(;++Ht<=0;)for(;xt(dt,-1),!Et(dt););else for(;--Ht>=0;)for(;xt(dt,1),!Et(dt););})},bt&&(St.count=function(Et,dt){return t.setTime(+Et),r.setTime(+dt),Ke(t),Ke(r),Math.floor(bt(t,r))},St.every=function(Et){return Et=Math.floor(Et),!isFinite(Et)||!(Et>0)?null:Et>1?St.filter(Lt?function(dt){return Lt(dt)%Et===0}:function(dt){return St.count(0,dt)%Et===0}):St}),St}var i=n(function(){},function(Ke,xt){Ke.setTime(+Ke+xt)},function(Ke,xt){return xt-Ke});i.every=function(Ke){return Ke=Math.floor(Ke),!isFinite(Ke)||!(Ke>0)?null:Ke>1?n(function(xt){xt.setTime(Math.floor(xt/Ke)*Ke)},function(xt,bt){xt.setTime(+xt+bt*Ke)},function(xt,bt){return(bt-xt)/Ke}):i};var a=i.range,o=1e3,s=6e4,l=36e5,u=864e5,c=6048e5,f=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds())},function(Ke,xt){Ke.setTime(+Ke+xt*o)},function(Ke,xt){return(xt-Ke)/o},function(Ke){return Ke.getUTCSeconds()}),h=f.range,d=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds()-Ke.getSeconds()*o)},function(Ke,xt){Ke.setTime(+Ke+xt*s)},function(Ke,xt){return(xt-Ke)/s},function(Ke){return Ke.getMinutes()}),v=d.range,x=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds()-Ke.getSeconds()*o-Ke.getMinutes()*s)},function(Ke,xt){Ke.setTime(+Ke+xt*l)},function(Ke,xt){return(xt-Ke)/l},function(Ke){return Ke.getHours()}),b=x.range,p=n(function(Ke){Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setDate(Ke.getDate()+xt)},function(Ke,xt){return(xt-Ke-(xt.getTimezoneOffset()-Ke.getTimezoneOffset())*s)/u},function(Ke){return Ke.getDate()-1}),E=p.range;function k(Ke){return n(function(xt){xt.setDate(xt.getDate()-(xt.getDay()+7-Ke)%7),xt.setHours(0,0,0,0)},function(xt,bt){xt.setDate(xt.getDate()+bt*7)},function(xt,bt){return(bt-xt-(bt.getTimezoneOffset()-xt.getTimezoneOffset())*s)/c})}var A=k(0),L=k(1),_=k(2),C=k(3),M=k(4),g=k(5),P=k(6),T=A.range,F=L.range,q=_.range,V=C.range,H=M.range,X=g.range,G=P.range,N=n(function(Ke){Ke.setDate(1),Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setMonth(Ke.getMonth()+xt)},function(Ke,xt){return xt.getMonth()-Ke.getMonth()+(xt.getFullYear()-Ke.getFullYear())*12},function(Ke){return Ke.getMonth()}),W=N.range,re=n(function(Ke){Ke.setMonth(0,1),Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setFullYear(Ke.getFullYear()+xt)},function(Ke,xt){return xt.getFullYear()-Ke.getFullYear()},function(Ke){return Ke.getFullYear()});re.every=function(Ke){return!isFinite(Ke=Math.floor(Ke))||!(Ke>0)?null:n(function(xt){xt.setFullYear(Math.floor(xt.getFullYear()/Ke)*Ke),xt.setMonth(0,1),xt.setHours(0,0,0,0)},function(xt,bt){xt.setFullYear(xt.getFullYear()+bt*Ke)})};var ae=re.range,_e=n(function(Ke){Ke.setUTCSeconds(0,0)},function(Ke,xt){Ke.setTime(+Ke+xt*s)},function(Ke,xt){return(xt-Ke)/s},function(Ke){return Ke.getUTCMinutes()}),Me=_e.range,ke=n(function(Ke){Ke.setUTCMinutes(0,0,0)},function(Ke,xt){Ke.setTime(+Ke+xt*l)},function(Ke,xt){return(xt-Ke)/l},function(Ke){return Ke.getUTCHours()}),ge=ke.range,ie=n(function(Ke){Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCDate(Ke.getUTCDate()+xt)},function(Ke,xt){return(xt-Ke)/u},function(Ke){return Ke.getUTCDate()-1}),Te=ie.range;function Ee(Ke){return n(function(xt){xt.setUTCDate(xt.getUTCDate()-(xt.getUTCDay()+7-Ke)%7),xt.setUTCHours(0,0,0,0)},function(xt,bt){xt.setUTCDate(xt.getUTCDate()+bt*7)},function(xt,bt){return(bt-xt)/c})}var Ae=Ee(0),ze=Ee(1),Ce=Ee(2),me=Ee(3),Re=Ee(4),ce=Ee(5),Ge=Ee(6),nt=Ae.range,ct=ze.range,qt=Ce.range,rt=me.range,ot=Re.range,Rt=ce.range,kt=Ge.range,Ct=n(function(Ke){Ke.setUTCDate(1),Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCMonth(Ke.getUTCMonth()+xt)},function(Ke,xt){return xt.getUTCMonth()-Ke.getUTCMonth()+(xt.getUTCFullYear()-Ke.getUTCFullYear())*12},function(Ke){return Ke.getUTCMonth()}),Yt=Ct.range,xr=n(function(Ke){Ke.setUTCMonth(0,1),Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCFullYear(Ke.getUTCFullYear()+xt)},function(Ke,xt){return xt.getUTCFullYear()-Ke.getUTCFullYear()},function(Ke){return Ke.getUTCFullYear()});xr.every=function(Ke){return!isFinite(Ke=Math.floor(Ke))||!(Ke>0)?null:n(function(xt){xt.setUTCFullYear(Math.floor(xt.getUTCFullYear()/Ke)*Ke),xt.setUTCMonth(0,1),xt.setUTCHours(0,0,0,0)},function(xt,bt){xt.setUTCFullYear(xt.getUTCFullYear()+bt*Ke)})};var er=xr.range;e.timeDay=p,e.timeDays=E,e.timeFriday=g,e.timeFridays=X,e.timeHour=x,e.timeHours=b,e.timeInterval=n,e.timeMillisecond=i,e.timeMilliseconds=a,e.timeMinute=d,e.timeMinutes=v,e.timeMonday=L,e.timeMondays=F,e.timeMonth=N,e.timeMonths=W,e.timeSaturday=P,e.timeSaturdays=G,e.timeSecond=f,e.timeSeconds=h,e.timeSunday=A,e.timeSundays=T,e.timeThursday=M,e.timeThursdays=H,e.timeTuesday=_,e.timeTuesdays=q,e.timeWednesday=C,e.timeWednesdays=V,e.timeWeek=A,e.timeWeeks=T,e.timeYear=re,e.timeYears=ae,e.utcDay=ie,e.utcDays=Te,e.utcFriday=ce,e.utcFridays=Rt,e.utcHour=ke,e.utcHours=ge,e.utcMillisecond=i,e.utcMilliseconds=a,e.utcMinute=_e,e.utcMinutes=Me,e.utcMonday=ze,e.utcMondays=ct,e.utcMonth=Ct,e.utcMonths=Yt,e.utcSaturday=Ge,e.utcSaturdays=kt,e.utcSecond=f,e.utcSeconds=h,e.utcSunday=Ae,e.utcSundays=nt,e.utcThursday=Re,e.utcThursdays=ot,e.utcTuesday=Ce,e.utcTuesdays=qt,e.utcWednesday=me,e.utcWednesdays=rt,e.utcWeek=Ae,e.utcWeeks=nt,e.utcYear=xr,e.utcYears=er,Object.defineProperty(e,"__esModule",{value:!0})})});var e3=ye((n6,aee)=>{(function(e,t){typeof n6=="object"&&typeof aee!="undefined"?t(n6,dq()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(n6,function(e,t){"use strict";function r(Ne){if(0<=Ne.y&&Ne.y<100){var Ye=new Date(-1,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L);return Ye.setFullYear(Ne.y),Ye}return new Date(Ne.y,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L)}function n(Ne){if(0<=Ne.y&&Ne.y<100){var Ye=new Date(Date.UTC(-1,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L));return Ye.setUTCFullYear(Ne.y),Ye}return new Date(Date.UTC(Ne.y,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L))}function i(Ne,Ye,Ve){return{y:Ne,m:Ye,d:Ve,H:0,M:0,S:0,L:0}}function a(Ne){var Ye=Ne.dateTime,Ve=Ne.date,Xe=Ne.time,ht=Ne.periods,Le=Ne.days,xe=Ne.shortDays,Se=Ne.months,lt=Ne.shortMonths,Gt=h(ht),Vt=d(ht),ar=h(Le),Qr=d(Le),ai=h(xe),jr=d(xe),ri=h(Se),bi=d(Se),nn=h(lt),Wi=d(lt),Ni={a:Si,A:Mi,b:Pi,B:Gi,c:null,d:N,e:N,f:Me,H:W,I:re,j:ae,L:_e,m:ke,M:ge,p:Ki,q:ka,Q:dt,s:Ht,S:ie,u:Te,U:Ee,V:Ae,w:ze,W:Ce,x:null,X:null,y:me,Y:Re,Z:ce,"%":Et},_n={a:jn,A:la,b:Fa,B:Ra,c:null,d:Ge,e:Ge,f:ot,H:nt,I:ct,j:qt,L:rt,m:Rt,M:kt,p:jo,q:oa,Q:dt,s:Ht,S:Ct,u:Yt,U:xr,V:er,w:Ke,W:xt,x:null,X:null,y:bt,Y:Lt,Z:St,"%":Et},$i={a:jt,A:Zt,b:yr,B:Fr,c:Zr,d:M,e:M,f:V,H:P,I:P,j:g,L:q,m:C,M:T,p:ft,q:_,Q:X,s:G,S:F,u:x,U:b,V:p,w:v,W:E,x:Vr,X:gi,y:A,Y:k,Z:L,"%":H};Ni.x=zn(Ve,Ni),Ni.X=zn(Xe,Ni),Ni.c=zn(Ye,Ni),_n.x=zn(Ve,_n),_n.X=zn(Xe,_n),_n.c=zn(Ye,_n);function zn(Sn,Ha){return function(oo){var xn=[],_t=-1,br=0,Hr=Sn.length,ti,zi,Yi;for(oo instanceof Date||(oo=new Date(+oo));++_t53)return null;"w"in xn||(xn.w=1),"Z"in xn?(br=n(i(xn.y,0,1)),Hr=br.getUTCDay(),br=Hr>4||Hr===0?t.utcMonday.ceil(br):t.utcMonday(br),br=t.utcDay.offset(br,(xn.V-1)*7),xn.y=br.getUTCFullYear(),xn.m=br.getUTCMonth(),xn.d=br.getUTCDate()+(xn.w+6)%7):(br=r(i(xn.y,0,1)),Hr=br.getDay(),br=Hr>4||Hr===0?t.timeMonday.ceil(br):t.timeMonday(br),br=t.timeDay.offset(br,(xn.V-1)*7),xn.y=br.getFullYear(),xn.m=br.getMonth(),xn.d=br.getDate()+(xn.w+6)%7)}else("W"in xn||"U"in xn)&&("w"in xn||(xn.w="u"in xn?xn.u%7:"W"in xn?1:0),Hr="Z"in xn?n(i(xn.y,0,1)).getUTCDay():r(i(xn.y,0,1)).getDay(),xn.m=0,xn.d="W"in xn?(xn.w+6)%7+xn.W*7-(Hr+5)%7:xn.w+xn.U*7-(Hr+6)%7);return"Z"in xn?(xn.H+=xn.Z/100|0,xn.M+=xn.Z%100,n(xn)):r(xn)}}function It(Sn,Ha,oo,xn){for(var _t=0,br=Ha.length,Hr=oo.length,ti,zi;_t=Hr)return-1;if(ti=Ha.charCodeAt(_t++),ti===37){if(ti=Ha.charAt(_t++),zi=$i[ti in o?Ha.charAt(_t++):ti],!zi||(xn=zi(Sn,oo,xn))<0)return-1}else if(ti!=oo.charCodeAt(xn++))return-1}return xn}function ft(Sn,Ha,oo){var xn=Gt.exec(Ha.slice(oo));return xn?(Sn.p=Vt[xn[0].toLowerCase()],oo+xn[0].length):-1}function jt(Sn,Ha,oo){var xn=ai.exec(Ha.slice(oo));return xn?(Sn.w=jr[xn[0].toLowerCase()],oo+xn[0].length):-1}function Zt(Sn,Ha,oo){var xn=ar.exec(Ha.slice(oo));return xn?(Sn.w=Qr[xn[0].toLowerCase()],oo+xn[0].length):-1}function yr(Sn,Ha,oo){var xn=nn.exec(Ha.slice(oo));return xn?(Sn.m=Wi[xn[0].toLowerCase()],oo+xn[0].length):-1}function Fr(Sn,Ha,oo){var xn=ri.exec(Ha.slice(oo));return xn?(Sn.m=bi[xn[0].toLowerCase()],oo+xn[0].length):-1}function Zr(Sn,Ha,oo){return It(Sn,Ye,Ha,oo)}function Vr(Sn,Ha,oo){return It(Sn,Ve,Ha,oo)}function gi(Sn,Ha,oo){return It(Sn,Xe,Ha,oo)}function Si(Sn){return xe[Sn.getDay()]}function Mi(Sn){return Le[Sn.getDay()]}function Pi(Sn){return lt[Sn.getMonth()]}function Gi(Sn){return Se[Sn.getMonth()]}function Ki(Sn){return ht[+(Sn.getHours()>=12)]}function ka(Sn){return 1+~~(Sn.getMonth()/3)}function jn(Sn){return xe[Sn.getUTCDay()]}function la(Sn){return Le[Sn.getUTCDay()]}function Fa(Sn){return lt[Sn.getUTCMonth()]}function Ra(Sn){return Se[Sn.getUTCMonth()]}function jo(Sn){return ht[+(Sn.getUTCHours()>=12)]}function oa(Sn){return 1+~~(Sn.getUTCMonth()/3)}return{format:function(Sn){var Ha=zn(Sn+="",Ni);return Ha.toString=function(){return Sn},Ha},parse:function(Sn){var Ha=Wn(Sn+="",!1);return Ha.toString=function(){return Sn},Ha},utcFormat:function(Sn){var Ha=zn(Sn+="",_n);return Ha.toString=function(){return Sn},Ha},utcParse:function(Sn){var Ha=Wn(Sn+="",!0);return Ha.toString=function(){return Sn},Ha}}}var o={"-":"",_:" ",0:"0"},s=/^\s*\d+/,l=/^%/,u=/[\\^$*+?|[\]().{}]/g;function c(Ne,Ye,Ve){var Xe=Ne<0?"-":"",ht=(Xe?-Ne:Ne)+"",Le=ht.length;return Xe+(Le68?1900:2e3),Ve+Xe[0].length):-1}function L(Ne,Ye,Ve){var Xe=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(Ye.slice(Ve,Ve+6));return Xe?(Ne.Z=Xe[1]?0:-(Xe[2]+(Xe[3]||"00")),Ve+Xe[0].length):-1}function _(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+1));return Xe?(Ne.q=Xe[0]*3-3,Ve+Xe[0].length):-1}function C(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.m=Xe[0]-1,Ve+Xe[0].length):-1}function M(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.d=+Xe[0],Ve+Xe[0].length):-1}function g(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+3));return Xe?(Ne.m=0,Ne.d=+Xe[0],Ve+Xe[0].length):-1}function P(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.H=+Xe[0],Ve+Xe[0].length):-1}function T(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.M=+Xe[0],Ve+Xe[0].length):-1}function F(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.S=+Xe[0],Ve+Xe[0].length):-1}function q(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+3));return Xe?(Ne.L=+Xe[0],Ve+Xe[0].length):-1}function V(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+6));return Xe?(Ne.L=Math.floor(Xe[0]/1e3),Ve+Xe[0].length):-1}function H(Ne,Ye,Ve){var Xe=l.exec(Ye.slice(Ve,Ve+1));return Xe?Ve+Xe[0].length:-1}function X(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve));return Xe?(Ne.Q=+Xe[0],Ve+Xe[0].length):-1}function G(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve));return Xe?(Ne.s=+Xe[0],Ve+Xe[0].length):-1}function N(Ne,Ye){return c(Ne.getDate(),Ye,2)}function W(Ne,Ye){return c(Ne.getHours(),Ye,2)}function re(Ne,Ye){return c(Ne.getHours()%12||12,Ye,2)}function ae(Ne,Ye){return c(1+t.timeDay.count(t.timeYear(Ne),Ne),Ye,3)}function _e(Ne,Ye){return c(Ne.getMilliseconds(),Ye,3)}function Me(Ne,Ye){return _e(Ne,Ye)+"000"}function ke(Ne,Ye){return c(Ne.getMonth()+1,Ye,2)}function ge(Ne,Ye){return c(Ne.getMinutes(),Ye,2)}function ie(Ne,Ye){return c(Ne.getSeconds(),Ye,2)}function Te(Ne){var Ye=Ne.getDay();return Ye===0?7:Ye}function Ee(Ne,Ye){return c(t.timeSunday.count(t.timeYear(Ne)-1,Ne),Ye,2)}function Ae(Ne,Ye){var Ve=Ne.getDay();return Ne=Ve>=4||Ve===0?t.timeThursday(Ne):t.timeThursday.ceil(Ne),c(t.timeThursday.count(t.timeYear(Ne),Ne)+(t.timeYear(Ne).getDay()===4),Ye,2)}function ze(Ne){return Ne.getDay()}function Ce(Ne,Ye){return c(t.timeMonday.count(t.timeYear(Ne)-1,Ne),Ye,2)}function me(Ne,Ye){return c(Ne.getFullYear()%100,Ye,2)}function Re(Ne,Ye){return c(Ne.getFullYear()%1e4,Ye,4)}function ce(Ne){var Ye=Ne.getTimezoneOffset();return(Ye>0?"-":(Ye*=-1,"+"))+c(Ye/60|0,"0",2)+c(Ye%60,"0",2)}function Ge(Ne,Ye){return c(Ne.getUTCDate(),Ye,2)}function nt(Ne,Ye){return c(Ne.getUTCHours(),Ye,2)}function ct(Ne,Ye){return c(Ne.getUTCHours()%12||12,Ye,2)}function qt(Ne,Ye){return c(1+t.utcDay.count(t.utcYear(Ne),Ne),Ye,3)}function rt(Ne,Ye){return c(Ne.getUTCMilliseconds(),Ye,3)}function ot(Ne,Ye){return rt(Ne,Ye)+"000"}function Rt(Ne,Ye){return c(Ne.getUTCMonth()+1,Ye,2)}function kt(Ne,Ye){return c(Ne.getUTCMinutes(),Ye,2)}function Ct(Ne,Ye){return c(Ne.getUTCSeconds(),Ye,2)}function Yt(Ne){var Ye=Ne.getUTCDay();return Ye===0?7:Ye}function xr(Ne,Ye){return c(t.utcSunday.count(t.utcYear(Ne)-1,Ne),Ye,2)}function er(Ne,Ye){var Ve=Ne.getUTCDay();return Ne=Ve>=4||Ve===0?t.utcThursday(Ne):t.utcThursday.ceil(Ne),c(t.utcThursday.count(t.utcYear(Ne),Ne)+(t.utcYear(Ne).getUTCDay()===4),Ye,2)}function Ke(Ne){return Ne.getUTCDay()}function xt(Ne,Ye){return c(t.utcMonday.count(t.utcYear(Ne)-1,Ne),Ye,2)}function bt(Ne,Ye){return c(Ne.getUTCFullYear()%100,Ye,2)}function Lt(Ne,Ye){return c(Ne.getUTCFullYear()%1e4,Ye,4)}function St(){return"+0000"}function Et(){return"%"}function dt(Ne){return+Ne}function Ht(Ne){return Math.floor(+Ne/1e3)}var $t;fr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function fr(Ne){return $t=a(Ne),e.timeFormat=$t.format,e.timeParse=$t.parse,e.utcFormat=$t.utcFormat,e.utcParse=$t.utcParse,$t}var _r="%Y-%m-%dT%H:%M:%S.%LZ";function Br(Ne){return Ne.toISOString()}var Or=Date.prototype.toISOString?Br:e.utcFormat(_r);function Nr(Ne){var Ye=new Date(Ne);return isNaN(Ye)?null:Ye}var ut=+new Date("2000-01-01T00:00:00.000Z")?Nr:e.utcParse(_r);e.isoFormat=Or,e.isoParse=ut,e.timeFormatDefaultLocale=fr,e.timeFormatLocale=a,Object.defineProperty(e,"__esModule",{value:!0})})});var vq=ye((a6,oee)=>{(function(e,t){typeof a6=="object"&&typeof oee!="undefined"?t(a6):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.d3=e.d3||{}))})(a6,function(e){"use strict";function t(C){return Math.abs(C=Math.round(C))>=1e21?C.toLocaleString("en").replace(/,/g,""):C.toString(10)}function r(C,M){if((g=(C=M?C.toExponential(M-1):C.toExponential()).indexOf("e"))<0)return null;var g,P=C.slice(0,g);return[P.length>1?P[0]+P.slice(2):P,+C.slice(g+1)]}function n(C){return C=r(Math.abs(C)),C?C[1]:NaN}function i(C,M){return function(g,P){for(var T=g.length,F=[],q=0,V=C[0],H=0;T>0&&V>0&&(H+V+1>P&&(V=Math.max(1,P-H)),F.push(g.substring(T-=V,T+V)),!((H+=V+1)>P));)V=C[q=(q+1)%C.length];return F.reverse().join(M)}}function a(C){return function(M){return M.replace(/[0-9]/g,function(g){return C[+g]})}}var o=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function s(C){if(!(M=o.exec(C)))throw new Error("invalid format: "+C);var M;return new l({fill:M[1],align:M[2],sign:M[3],symbol:M[4],zero:M[5],width:M[6],comma:M[7],precision:M[8]&&M[8].slice(1),trim:M[9],type:M[10]})}s.prototype=l.prototype;function l(C){this.fill=C.fill===void 0?" ":C.fill+"",this.align=C.align===void 0?">":C.align+"",this.sign=C.sign===void 0?"-":C.sign+"",this.symbol=C.symbol===void 0?"":C.symbol+"",this.zero=!!C.zero,this.width=C.width===void 0?void 0:+C.width,this.comma=!!C.comma,this.precision=C.precision===void 0?void 0:+C.precision,this.trim=!!C.trim,this.type=C.type===void 0?"":C.type+""}l.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function u(C){e:for(var M=C.length,g=1,P=-1,T;g0&&(P=0);break}return P>0?C.slice(0,P)+C.slice(T+1):C}var c;function f(C,M){var g=r(C,M);if(!g)return C+"";var P=g[0],T=g[1],F=T-(c=Math.max(-8,Math.min(8,Math.floor(T/3)))*3)+1,q=P.length;return F===q?P:F>q?P+new Array(F-q+1).join("0"):F>0?P.slice(0,F)+"."+P.slice(F):"0."+new Array(1-F).join("0")+r(C,Math.max(0,M+F-1))[0]}function h(C,M){var g=r(C,M);if(!g)return C+"";var P=g[0],T=g[1];return T<0?"0."+new Array(-T).join("0")+P:P.length>T+1?P.slice(0,T+1)+"."+P.slice(T+1):P+new Array(T-P.length+2).join("0")}var d={"%":function(C,M){return(C*100).toFixed(M)},b:function(C){return Math.round(C).toString(2)},c:function(C){return C+""},d:t,e:function(C,M){return C.toExponential(M)},f:function(C,M){return C.toFixed(M)},g:function(C,M){return C.toPrecision(M)},o:function(C){return Math.round(C).toString(8)},p:function(C,M){return h(C*100,M)},r:h,s:f,X:function(C){return Math.round(C).toString(16).toUpperCase()},x:function(C){return Math.round(C).toString(16)}};function v(C){return C}var x=Array.prototype.map,b=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function p(C){var M=C.grouping===void 0||C.thousands===void 0?v:i(x.call(C.grouping,Number),C.thousands+""),g=C.currency===void 0?"":C.currency[0]+"",P=C.currency===void 0?"":C.currency[1]+"",T=C.decimal===void 0?".":C.decimal+"",F=C.numerals===void 0?v:a(x.call(C.numerals,String)),q=C.percent===void 0?"%":C.percent+"",V=C.minus===void 0?"-":C.minus+"",H=C.nan===void 0?"NaN":C.nan+"";function X(N){N=s(N);var W=N.fill,re=N.align,ae=N.sign,_e=N.symbol,Me=N.zero,ke=N.width,ge=N.comma,ie=N.precision,Te=N.trim,Ee=N.type;Ee==="n"?(ge=!0,Ee="g"):d[Ee]||(ie===void 0&&(ie=12),Te=!0,Ee="g"),(Me||W==="0"&&re==="=")&&(Me=!0,W="0",re="=");var Ae=_e==="$"?g:_e==="#"&&/[boxX]/.test(Ee)?"0"+Ee.toLowerCase():"",ze=_e==="$"?P:/[%p]/.test(Ee)?q:"",Ce=d[Ee],me=/[defgprs%]/.test(Ee);ie=ie===void 0?6:/[gprs]/.test(Ee)?Math.max(1,Math.min(21,ie)):Math.max(0,Math.min(20,ie));function Re(ce){var Ge=Ae,nt=ze,ct,qt,rt;if(Ee==="c")nt=Ce(ce)+nt,ce="";else{ce=+ce;var ot=ce<0||1/ce<0;if(ce=isNaN(ce)?H:Ce(Math.abs(ce),ie),Te&&(ce=u(ce)),ot&&+ce==0&&ae!=="+"&&(ot=!1),Ge=(ot?ae==="("?ae:V:ae==="-"||ae==="("?"":ae)+Ge,nt=(Ee==="s"?b[8+c/3]:"")+nt+(ot&&ae==="("?")":""),me){for(ct=-1,qt=ce.length;++ctrt||rt>57){nt=(rt===46?T+ce.slice(ct+1):ce.slice(ct))+nt,ce=ce.slice(0,ct);break}}}ge&&!Me&&(ce=M(ce,1/0));var Rt=Ge.length+ce.length+nt.length,kt=Rt>1)+Ge+ce+nt+kt.slice(Rt);break;default:ce=kt+Ge+ce+nt;break}return F(ce)}return Re.toString=function(){return N+""},Re}function G(N,W){var re=X((N=s(N),N.type="f",N)),ae=Math.max(-8,Math.min(8,Math.floor(n(W)/3)))*3,_e=Math.pow(10,-ae),Me=b[8+ae/3];return function(ke){return re(_e*ke)+Me}}return{format:X,formatPrefix:G}}var E;k({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});function k(C){return E=p(C),e.format=E.format,e.formatPrefix=E.formatPrefix,E}function A(C){return Math.max(0,-n(Math.abs(C)))}function L(C,M){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(n(M)/3)))*3-n(Math.abs(C)))}function _(C,M){return C=Math.abs(C),M=Math.abs(M)-C,Math.max(0,n(M)-n(C))+1}e.FormatSpecifier=l,e.formatDefaultLocale=k,e.formatLocale=p,e.formatSpecifier=s,e.precisionFixed=A,e.precisionPrefix=L,e.precisionRound=_,Object.defineProperty(e,"__esModule",{value:!0})})});var lee=ye((OQt,see)=>{"use strict";see.exports=function(e){for(var t=e.length,r,n=0;n13)&&r!==32&&r!==133&&r!==160&&r!==5760&&r!==6158&&(r<8192||r>8205)&&r!==8232&&r!==8233&&r!==8239&&r!==8287&&r!==8288&&r!==12288&&r!==65279)return!1;return!0}});var uo=ye((BQt,uee)=>{"use strict";var KQe=lee();uee.exports=function(e){var t=typeof e;if(t==="string"){var r=e;if(e=+e,e===0&&KQe(r))return!1}else if(t!=="number")return!1;return e-e<1}});var es=ye((NQt,cee)=>{"use strict";cee.exports={BADNUM:void 0,FP_SAFE:Number.MAX_VALUE*1e-4,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,ONEMILLI:1,ONEMICROSEC:.001,EPOCHJD:24405875e-1,ALMOST_EQUAL:1-1e-6,LOG_CLIP:10,MINUS_SIGN:"\u2212"}});var pq=ye((o6,fee)=>{(function(e,t){typeof o6=="object"&&typeof fee!="undefined"?t(o6):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e["base64-arraybuffer"]={}))})(o6,function(e){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),n=0;n>2],c+=t[(s[l]&3)<<4|s[l+1]>>4],c+=t[(s[l+1]&15)<<2|s[l+2]>>6],c+=t[s[l+2]&63];return u%3===2?c=c.substring(0,c.length-1)+"=":u%3===1&&(c=c.substring(0,c.length-2)+"=="),c},a=function(o){var s=o.length*.75,l=o.length,u,c=0,f,h,d,v;o[o.length-1]==="="&&(s--,o[o.length-2]==="="&&s--);var x=new ArrayBuffer(s),b=new Uint8Array(x);for(u=0;u>4,b[c++]=(h&15)<<4|d>>2,b[c++]=(d&3)<<6|v&63;return x};e.decode=a,e.encode=i,Object.defineProperty(e,"__esModule",{value:!0})})});var gy=ye((UQt,hee)=>{"use strict";hee.exports=function(t){return window&&window.process&&window.process.versions?Object.prototype.toString.call(t)==="[object Object]":Object.prototype.toString.call(t)==="[object Object]"&&Object.getPrototypeOf(t).hasOwnProperty("hasOwnProperty")}});var vv=ye(mg=>{"use strict";var JQe=pq().decode,$Qe=gy(),gq=Array.isArray,QQe=ArrayBuffer,eet=DataView;function dee(e){return QQe.isView(e)&&!(e instanceof eet)}mg.isTypedArray=dee;function s6(e){return gq(e)||dee(e)}mg.isArrayOrTypedArray=s6;function tet(e){return!s6(e[0])}mg.isArray1D=tet;mg.ensureArray=function(e,t){return gq(e)||(e=[]),e.length=t,e};var Md={u1c:typeof Uint8ClampedArray=="undefined"?void 0:Uint8ClampedArray,i1:typeof Int8Array=="undefined"?void 0:Int8Array,u1:typeof Uint8Array=="undefined"?void 0:Uint8Array,i2:typeof Int16Array=="undefined"?void 0:Int16Array,u2:typeof Uint16Array=="undefined"?void 0:Uint16Array,i4:typeof Int32Array=="undefined"?void 0:Int32Array,u4:typeof Uint32Array=="undefined"?void 0:Uint32Array,f4:typeof Float32Array=="undefined"?void 0:Float32Array,f8:typeof Float64Array=="undefined"?void 0:Float64Array};Md.uint8c=Md.u1c;Md.uint8=Md.u1;Md.int8=Md.i1;Md.uint16=Md.u2;Md.int16=Md.i2;Md.uint32=Md.u4;Md.int32=Md.i4;Md.float32=Md.f4;Md.float64=Md.f8;function mq(e){return e.constructor===ArrayBuffer}mg.isArrayBuffer=mq;mg.decodeTypedArraySpec=function(e){var t=[],r=ret(e),n=r.dtype,i=Md[n];if(!i)throw new Error('Error in dtype: "'+n+'"');var a=i.BYTES_PER_ELEMENT,o=r.bdata;mq(o)||(o=JQe(o));var s=r.shape===void 0?[o.byteLength/a]:(""+r.shape).split(",");s.reverse();var l=s.length,u,c,f=+s[0],h=a*f,d=0;if(l===1)t=new i(o);else if(l===2)for(u=+s[1],c=0;c{"use strict";var pee=uo(),_q=vv().isArrayOrTypedArray;_ee.exports=function(t,r){if(pee(r))r=String(r);else if(typeof r!="string"||r.substr(r.length-4)==="[-1]")throw"bad property string";var n=r.split("."),i,a,o,s;for(s=0;s{"use strict";var t3=ES(),set=/^\w*$/,uet=0,xee=1,l6=2,bee=3,ob=4;wee.exports=function(t,r,n,i){n=n||"name",i=i||"value";var a,o,s,l={};r&&r.length?(s=t3(t,r),o=s.get()):o=t,r=r||"";var u={};if(o)for(a=0;a2)return l[d]=l[d]|l6,f.set(h,null);if(c){for(a=d;a{"use strict";var cet=/^(.*)(\.[^\.\[\]]+|\[\d\])$/,fet=/^[^\.\[\]]+$/;Aee.exports=function(e,t){for(;t;){var r=e.match(cet);if(r)e=r[1];else if(e.match(fet))e="";else throw new Error("bad relativeAttr call:"+[e,t]);if(t.charAt(0)==="^")t=t.slice(1);else break}return e&&t.charAt(0)!=="["?e+"."+t:e+t}});var u6=ye((WQt,Mee)=>{"use strict";var het=uo();Mee.exports=function(t,r){if(t>0)return Math.log(t)/Math.LN10;var n=Math.log(Math.min(r[0],r[1]))/Math.LN10;return het(n)||(n=Math.log(Math.max(r[0],r[1]))/Math.LN10-6),n}});var Cee=ye((ZQt,kee)=>{"use strict";var Eee=vv().isArrayOrTypedArray,kS=gy();kee.exports=function e(t,r){for(var n in r){var i=r[n],a=t[n];if(a!==i)if(n.charAt(0)==="_"||typeof i=="function"){if(n in t)continue;t[n]=i}else if(Eee(i)&&Eee(a)&&kS(i[0])){if(n==="customdata"||n==="ids")continue;for(var o=Math.min(i.length,a.length),s=0;s{"use strict";function det(e,t){var r=e%t;return r<0?r+t:r}function vet(e,t){return Math.abs(e)>t/2?e-Math.round(e/t)*t:e}Lee.exports={mod:det,modHalf:vet}});var id=ye((YQt,c6)=>{(function(e){var t=/^\s+/,r=/\s+$/,n=0,i=e.round,a=e.min,o=e.max,s=e.random;function l(me,Re){if(me=me||"",Re=Re||{},me instanceof l)return me;if(!(this instanceof l))return new l(me,Re);var ce=u(me);this._originalInput=me,this._r=ce.r,this._g=ce.g,this._b=ce.b,this._a=ce.a,this._roundA=i(100*this._a)/100,this._format=Re.format||ce.format,this._gradientType=Re.gradientType,this._r<1&&(this._r=i(this._r)),this._g<1&&(this._g=i(this._g)),this._b<1&&(this._b=i(this._b)),this._ok=ce.ok,this._tc_id=n++}l.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var me=this.toRgb();return(me.r*299+me.g*587+me.b*114)/1e3},getLuminance:function(){var me=this.toRgb(),Re,ce,Ge,nt,ct,qt;return Re=me.r/255,ce=me.g/255,Ge=me.b/255,Re<=.03928?nt=Re/12.92:nt=e.pow((Re+.055)/1.055,2.4),ce<=.03928?ct=ce/12.92:ct=e.pow((ce+.055)/1.055,2.4),Ge<=.03928?qt=Ge/12.92:qt=e.pow((Ge+.055)/1.055,2.4),.2126*nt+.7152*ct+.0722*qt},setAlpha:function(me){return this._a=N(me),this._roundA=i(100*this._a)/100,this},toHsv:function(){var me=d(this._r,this._g,this._b);return{h:me.h*360,s:me.s,v:me.v,a:this._a}},toHsvString:function(){var me=d(this._r,this._g,this._b),Re=i(me.h*360),ce=i(me.s*100),Ge=i(me.v*100);return this._a==1?"hsv("+Re+", "+ce+"%, "+Ge+"%)":"hsva("+Re+", "+ce+"%, "+Ge+"%, "+this._roundA+")"},toHsl:function(){var me=f(this._r,this._g,this._b);return{h:me.h*360,s:me.s,l:me.l,a:this._a}},toHslString:function(){var me=f(this._r,this._g,this._b),Re=i(me.h*360),ce=i(me.s*100),Ge=i(me.l*100);return this._a==1?"hsl("+Re+", "+ce+"%, "+Ge+"%)":"hsla("+Re+", "+ce+"%, "+Ge+"%, "+this._roundA+")"},toHex:function(me){return x(this._r,this._g,this._b,me)},toHexString:function(me){return"#"+this.toHex(me)},toHex8:function(me){return b(this._r,this._g,this._b,this._a,me)},toHex8String:function(me){return"#"+this.toHex8(me)},toRgb:function(){return{r:i(this._r),g:i(this._g),b:i(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+i(this._r)+", "+i(this._g)+", "+i(this._b)+")":"rgba("+i(this._r)+", "+i(this._g)+", "+i(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:i(W(this._r,255)*100)+"%",g:i(W(this._g,255)*100)+"%",b:i(W(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+i(W(this._r,255)*100)+"%, "+i(W(this._g,255)*100)+"%, "+i(W(this._b,255)*100)+"%)":"rgba("+i(W(this._r,255)*100)+"%, "+i(W(this._g,255)*100)+"%, "+i(W(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:X[x(this._r,this._g,this._b,!0)]||!1},toFilter:function(me){var Re="#"+p(this._r,this._g,this._b,this._a),ce=Re,Ge=this._gradientType?"GradientType = 1, ":"";if(me){var nt=l(me);ce="#"+p(nt._r,nt._g,nt._b,nt._a)}return"progid:DXImageTransform.Microsoft.gradient("+Ge+"startColorstr="+Re+",endColorstr="+ce+")"},toString:function(me){var Re=!!me;me=me||this._format;var ce=!1,Ge=this._a<1&&this._a>=0,nt=!Re&&Ge&&(me==="hex"||me==="hex6"||me==="hex3"||me==="hex4"||me==="hex8"||me==="name");return nt?me==="name"&&this._a===0?this.toName():this.toRgbString():(me==="rgb"&&(ce=this.toRgbString()),me==="prgb"&&(ce=this.toPercentageRgbString()),(me==="hex"||me==="hex6")&&(ce=this.toHexString()),me==="hex3"&&(ce=this.toHexString(!0)),me==="hex4"&&(ce=this.toHex8String(!0)),me==="hex8"&&(ce=this.toHex8String()),me==="name"&&(ce=this.toName()),me==="hsl"&&(ce=this.toHslString()),me==="hsv"&&(ce=this.toHsvString()),ce||this.toHexString())},clone:function(){return l(this.toString())},_applyModification:function(me,Re){var ce=me.apply(null,[this].concat([].slice.call(Re)));return this._r=ce._r,this._g=ce._g,this._b=ce._b,this.setAlpha(ce._a),this},lighten:function(){return this._applyModification(L,arguments)},brighten:function(){return this._applyModification(_,arguments)},darken:function(){return this._applyModification(C,arguments)},desaturate:function(){return this._applyModification(E,arguments)},saturate:function(){return this._applyModification(k,arguments)},greyscale:function(){return this._applyModification(A,arguments)},spin:function(){return this._applyModification(M,arguments)},_applyCombination:function(me,Re){return me.apply(null,[this].concat([].slice.call(Re)))},analogous:function(){return this._applyCombination(q,arguments)},complement:function(){return this._applyCombination(g,arguments)},monochromatic:function(){return this._applyCombination(V,arguments)},splitcomplement:function(){return this._applyCombination(F,arguments)},triad:function(){return this._applyCombination(P,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},l.fromRatio=function(me,Re){if(typeof me=="object"){var ce={};for(var Ge in me)me.hasOwnProperty(Ge)&&(Ge==="a"?ce[Ge]=me[Ge]:ce[Ge]=ge(me[Ge]));me=ce}return l(me,Re)};function u(me){var Re={r:0,g:0,b:0},ce=1,Ge=null,nt=null,ct=null,qt=!1,rt=!1;return typeof me=="string"&&(me=ze(me)),typeof me=="object"&&(Ae(me.r)&&Ae(me.g)&&Ae(me.b)?(Re=c(me.r,me.g,me.b),qt=!0,rt=String(me.r).substr(-1)==="%"?"prgb":"rgb"):Ae(me.h)&&Ae(me.s)&&Ae(me.v)?(Ge=ge(me.s),nt=ge(me.v),Re=v(me.h,Ge,nt),qt=!0,rt="hsv"):Ae(me.h)&&Ae(me.s)&&Ae(me.l)&&(Ge=ge(me.s),ct=ge(me.l),Re=h(me.h,Ge,ct),qt=!0,rt="hsl"),me.hasOwnProperty("a")&&(ce=me.a)),ce=N(ce),{ok:qt,format:me.format||rt,r:a(255,o(Re.r,0)),g:a(255,o(Re.g,0)),b:a(255,o(Re.b,0)),a:ce}}function c(me,Re,ce){return{r:W(me,255)*255,g:W(Re,255)*255,b:W(ce,255)*255}}function f(me,Re,ce){me=W(me,255),Re=W(Re,255),ce=W(ce,255);var Ge=o(me,Re,ce),nt=a(me,Re,ce),ct,qt,rt=(Ge+nt)/2;if(Ge==nt)ct=qt=0;else{var ot=Ge-nt;switch(qt=rt>.5?ot/(2-Ge-nt):ot/(Ge+nt),Ge){case me:ct=(Re-ce)/ot+(Re1&&(Ct-=1),Ct<1/6?Rt+(kt-Rt)*6*Ct:Ct<1/2?kt:Ct<2/3?Rt+(kt-Rt)*(2/3-Ct)*6:Rt}if(Re===0)Ge=nt=ct=ce;else{var rt=ce<.5?ce*(1+Re):ce+Re-ce*Re,ot=2*ce-rt;Ge=qt(ot,rt,me+1/3),nt=qt(ot,rt,me),ct=qt(ot,rt,me-1/3)}return{r:Ge*255,g:nt*255,b:ct*255}}function d(me,Re,ce){me=W(me,255),Re=W(Re,255),ce=W(ce,255);var Ge=o(me,Re,ce),nt=a(me,Re,ce),ct,qt,rt=Ge,ot=Ge-nt;if(qt=Ge===0?0:ot/Ge,Ge==nt)ct=0;else{switch(Ge){case me:ct=(Re-ce)/ot+(Re>1)+720)%360;--Re;)Ge.h=(Ge.h+nt)%360,ct.push(l(Ge));return ct}function V(me,Re){Re=Re||6;for(var ce=l(me).toHsv(),Ge=ce.h,nt=ce.s,ct=ce.v,qt=[],rt=1/Re;Re--;)qt.push(l({h:Ge,s:nt,v:ct})),ct=(ct+rt)%1;return qt}l.mix=function(me,Re,ce){ce=ce===0?0:ce||50;var Ge=l(me).toRgb(),nt=l(Re).toRgb(),ct=ce/100,qt={r:(nt.r-Ge.r)*ct+Ge.r,g:(nt.g-Ge.g)*ct+Ge.g,b:(nt.b-Ge.b)*ct+Ge.b,a:(nt.a-Ge.a)*ct+Ge.a};return l(qt)},l.readability=function(me,Re){var ce=l(me),Ge=l(Re);return(e.max(ce.getLuminance(),Ge.getLuminance())+.05)/(e.min(ce.getLuminance(),Ge.getLuminance())+.05)},l.isReadable=function(me,Re,ce){var Ge=l.readability(me,Re),nt,ct;switch(ct=!1,nt=Ce(ce),nt.level+nt.size){case"AAsmall":case"AAAlarge":ct=Ge>=4.5;break;case"AAlarge":ct=Ge>=3;break;case"AAAsmall":ct=Ge>=7;break}return ct},l.mostReadable=function(me,Re,ce){var Ge=null,nt=0,ct,qt,rt,ot;ce=ce||{},qt=ce.includeFallbackColors,rt=ce.level,ot=ce.size;for(var Rt=0;Rtnt&&(nt=ct,Ge=l(Re[Rt]));return l.isReadable(me,Ge,{level:rt,size:ot})||!qt?Ge:(ce.includeFallbackColors=!1,l.mostReadable(me,["#fff","#000"],ce))};var H=l.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},X=l.hexNames=G(H);function G(me){var Re={};for(var ce in me)me.hasOwnProperty(ce)&&(Re[me[ce]]=ce);return Re}function N(me){return me=parseFloat(me),(isNaN(me)||me<0||me>1)&&(me=1),me}function W(me,Re){_e(me)&&(me="100%");var ce=Me(me);return me=a(Re,o(0,parseFloat(me))),ce&&(me=parseInt(me*Re,10)/100),e.abs(me-Re)<1e-6?1:me%Re/parseFloat(Re)}function re(me){return a(1,o(0,me))}function ae(me){return parseInt(me,16)}function _e(me){return typeof me=="string"&&me.indexOf(".")!=-1&&parseFloat(me)===1}function Me(me){return typeof me=="string"&&me.indexOf("%")!=-1}function ke(me){return me.length==1?"0"+me:""+me}function ge(me){return me<=1&&(me=me*100+"%"),me}function ie(me){return e.round(parseFloat(me)*255).toString(16)}function Te(me){return ae(me)/255}var Ee=function(){var me="[-\\+]?\\d+%?",Re="[-\\+]?\\d*\\.\\d+%?",ce="(?:"+Re+")|(?:"+me+")",Ge="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?",nt="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?";return{CSS_UNIT:new RegExp(ce),rgb:new RegExp("rgb"+Ge),rgba:new RegExp("rgba"+nt),hsl:new RegExp("hsl"+Ge),hsla:new RegExp("hsla"+nt),hsv:new RegExp("hsv"+Ge),hsva:new RegExp("hsva"+nt),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Ae(me){return!!Ee.CSS_UNIT.exec(me)}function ze(me){me=me.replace(t,"").replace(r,"").toLowerCase();var Re=!1;if(H[me])me=H[me],Re=!0;else if(me=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var ce;return(ce=Ee.rgb.exec(me))?{r:ce[1],g:ce[2],b:ce[3]}:(ce=Ee.rgba.exec(me))?{r:ce[1],g:ce[2],b:ce[3],a:ce[4]}:(ce=Ee.hsl.exec(me))?{h:ce[1],s:ce[2],l:ce[3]}:(ce=Ee.hsla.exec(me))?{h:ce[1],s:ce[2],l:ce[3],a:ce[4]}:(ce=Ee.hsv.exec(me))?{h:ce[1],s:ce[2],v:ce[3]}:(ce=Ee.hsva.exec(me))?{h:ce[1],s:ce[2],v:ce[3],a:ce[4]}:(ce=Ee.hex8.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),a:Te(ce[4]),format:Re?"name":"hex8"}:(ce=Ee.hex6.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),format:Re?"name":"hex"}:(ce=Ee.hex4.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),a:Te(ce[4]+""+ce[4]),format:Re?"name":"hex8"}:(ce=Ee.hex3.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),format:Re?"name":"hex"}:!1}function Ce(me){var Re,ce;return me=me||{level:"AA",size:"small"},Re=(me.level||"AA").toUpperCase(),ce=(me.size||"small").toLowerCase(),Re!=="AA"&&Re!=="AAA"&&(Re="AA"),ce!=="small"&&ce!=="large"&&(ce="small"),{level:Re,size:ce}}typeof c6!="undefined"&&c6.exports?c6.exports=l:window.tinycolor=l})(Math)});var no=ye(PS=>{"use strict";var Pee=gy(),CS=Array.isArray;function pet(e,t){var r,n;for(r=0;r{"use strict";Iee.exports=function(e){var t=e.variantValues,r=e.editType,n=e.colorEditType;n===void 0&&(n=r);var i={editType:r,valType:"integer",min:1,max:1e3,extras:["normal","bold"],dflt:"normal"};e.noNumericWeightValues&&(i.valType="enumerated",i.values=i.extras,i.extras=void 0,i.min=void 0,i.max=void 0);var a={family:{valType:"string",noBlank:!0,strict:!0,editType:r},size:{valType:"number",min:1,editType:r},color:{valType:"color",editType:n},weight:i,style:{editType:r,valType:"enumerated",values:["normal","italic"],dflt:"normal"},variant:e.noFontVariant?void 0:{editType:r,valType:"enumerated",values:t||["normal","small-caps","all-small-caps","all-petite-caps","petite-caps","unicase"],dflt:"normal"},textcase:e.noFontTextcase?void 0:{editType:r,valType:"enumerated",values:["normal","word caps","upper","lower"],dflt:"normal"},lineposition:e.noFontLineposition?void 0:{editType:r,valType:"flaglist",flags:["under","over","through"],extras:["none"],dflt:"none"},shadow:e.noFontShadow?void 0:{editType:r,valType:"string",dflt:e.autoShadowDflt?"auto":"none"},editType:r};return e.autoSize&&(a.size.dflt="auto"),e.autoColor&&(a.color.dflt="auto"),e.arrayOk&&(a.family.arrayOk=!0,a.weight.arrayOk=!0,a.style.arrayOk=!0,e.noFontVariant||(a.variant.arrayOk=!0),e.noFontTextcase||(a.textcase.arrayOk=!0),e.noFontLineposition||(a.lineposition.arrayOk=!0),e.noFontShadow||(a.shadow.arrayOk=!0),a.size.arrayOk=!0,a.color.arrayOk=!0),a}});var IS=ye(($Qt,Ree)=>{"use strict";Ree.exports={YANGLE:60,HOVERARROWSIZE:6,HOVERTEXTPAD:3,HOVERFONTSIZE:13,HOVERFONT:"Arial, sans-serif",HOVERMINTIME:50,HOVERID:"-hover"}});var N1=ye((QQt,Fee)=>{"use strict";var Dee=IS(),zee=Su(),xq=zee({editType:"none"});xq.family.dflt=Dee.HOVERFONT;xq.size.dflt=Dee.HOVERFONTSIZE;Fee.exports={clickmode:{valType:"flaglist",flags:["event","select"],dflt:"event",editType:"plot",extras:["none"]},dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","drawclosedpath","drawopenpath","drawline","drawrect","drawcircle","orbit","turntable",!1],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1,"x unified","y unified"],dflt:"closest",editType:"modebar"},hoversubplots:{valType:"enumerated",values:["single","overlaying","axis"],dflt:"overlaying",editType:"none"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:-1,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:xq,grouptitlefont:zee({editType:"none"}),align:{valType:"enumerated",values:["left","right","auto"],dflt:"auto",editType:"none"},namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},editType:"none"},selectdirection:{valType:"enumerated",values:["h","v","d","any"],dflt:"any",editType:"none"}}});var i3=ye((eer,qee)=>{"use strict";var get=Su(),f6=N1().hoverlabel,h6=no().extendFlat;qee.exports={hoverlabel:{bgcolor:h6({},f6.bgcolor,{arrayOk:!0}),bordercolor:h6({},f6.bordercolor,{arrayOk:!0}),font:get({arrayOk:!0,editType:"none"}),align:h6({},f6.align,{arrayOk:!0}),namelength:h6({},f6.namelength,{arrayOk:!0}),editType:"none"}}});var vl=ye((ter,Oee)=>{"use strict";var met=Su(),yet=i3();Oee.exports={type:{valType:"enumerated",values:[],dflt:"scatter",editType:"calc+clearAxisTypes",_noTemplating:!0},visible:{valType:"enumerated",values:[!0,!1,"legendonly"],dflt:!0,editType:"calc"},showlegend:{valType:"boolean",dflt:!0,editType:"style"},legend:{valType:"subplotid",dflt:"legend",editType:"style"},legendgroup:{valType:"string",dflt:"",editType:"style"},legendgrouptitle:{text:{valType:"string",dflt:"",editType:"style"},font:met({editType:"style"}),editType:"style"},legendrank:{valType:"number",dflt:1e3,editType:"style"},legendwidth:{valType:"number",min:0,editType:"style"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"style"},name:{valType:"string",editType:"style"},uid:{valType:"string",editType:"plot",anim:!0},ids:{valType:"data_array",editType:"calc",anim:!0},customdata:{valType:"data_array",editType:"calc"},meta:{valType:"any",arrayOk:!0,editType:"plot"},selectedpoints:{valType:"any",editType:"calc"},hoverinfo:{valType:"flaglist",flags:["x","y","z","text","name"],extras:["all","none","skip"],arrayOk:!0,dflt:"all",editType:"none"},hoverlabel:yet.hoverlabel,stream:{token:{valType:"string",noBlank:!0,strict:!0,editType:"calc"},maxpoints:{valType:"number",min:0,max:1e4,dflt:500,editType:"calc"},editType:"calc"},uirevision:{valType:"any",editType:"none"}}});var sb=ye((rer,Uee)=>{"use strict";var _et=id(),d6={Greys:[[0,"rgb(0,0,0)"],[1,"rgb(255,255,255)"]],YlGnBu:[[0,"rgb(8,29,88)"],[.125,"rgb(37,52,148)"],[.25,"rgb(34,94,168)"],[.375,"rgb(29,145,192)"],[.5,"rgb(65,182,196)"],[.625,"rgb(127,205,187)"],[.75,"rgb(199,233,180)"],[.875,"rgb(237,248,217)"],[1,"rgb(255,255,217)"]],Greens:[[0,"rgb(0,68,27)"],[.125,"rgb(0,109,44)"],[.25,"rgb(35,139,69)"],[.375,"rgb(65,171,93)"],[.5,"rgb(116,196,118)"],[.625,"rgb(161,217,155)"],[.75,"rgb(199,233,192)"],[.875,"rgb(229,245,224)"],[1,"rgb(247,252,245)"]],YlOrRd:[[0,"rgb(128,0,38)"],[.125,"rgb(189,0,38)"],[.25,"rgb(227,26,28)"],[.375,"rgb(252,78,42)"],[.5,"rgb(253,141,60)"],[.625,"rgb(254,178,76)"],[.75,"rgb(254,217,118)"],[.875,"rgb(255,237,160)"],[1,"rgb(255,255,204)"]],Bluered:[[0,"rgb(0,0,255)"],[1,"rgb(255,0,0)"]],RdBu:[[0,"rgb(5,10,172)"],[.35,"rgb(106,137,247)"],[.5,"rgb(190,190,190)"],[.6,"rgb(220,170,132)"],[.7,"rgb(230,145,90)"],[1,"rgb(178,10,28)"]],Reds:[[0,"rgb(220,220,220)"],[.2,"rgb(245,195,157)"],[.4,"rgb(245,160,105)"],[1,"rgb(178,10,28)"]],Blues:[[0,"rgb(5,10,172)"],[.35,"rgb(40,60,190)"],[.5,"rgb(70,100,245)"],[.6,"rgb(90,120,245)"],[.7,"rgb(106,137,247)"],[1,"rgb(220,220,220)"]],Picnic:[[0,"rgb(0,0,255)"],[.1,"rgb(51,153,255)"],[.2,"rgb(102,204,255)"],[.3,"rgb(153,204,255)"],[.4,"rgb(204,204,255)"],[.5,"rgb(255,255,255)"],[.6,"rgb(255,204,255)"],[.7,"rgb(255,153,255)"],[.8,"rgb(255,102,204)"],[.9,"rgb(255,102,102)"],[1,"rgb(255,0,0)"]],Rainbow:[[0,"rgb(150,0,90)"],[.125,"rgb(0,0,200)"],[.25,"rgb(0,25,255)"],[.375,"rgb(0,152,255)"],[.5,"rgb(44,255,150)"],[.625,"rgb(151,255,0)"],[.75,"rgb(255,234,0)"],[.875,"rgb(255,111,0)"],[1,"rgb(255,0,0)"]],Portland:[[0,"rgb(12,51,131)"],[.25,"rgb(10,136,186)"],[.5,"rgb(242,211,56)"],[.75,"rgb(242,143,56)"],[1,"rgb(217,30,30)"]],Jet:[[0,"rgb(0,0,131)"],[.125,"rgb(0,60,170)"],[.375,"rgb(5,255,255)"],[.625,"rgb(255,255,0)"],[.875,"rgb(250,0,0)"],[1,"rgb(128,0,0)"]],Hot:[[0,"rgb(0,0,0)"],[.3,"rgb(230,0,0)"],[.6,"rgb(255,210,0)"],[1,"rgb(255,255,255)"]],Blackbody:[[0,"rgb(0,0,0)"],[.2,"rgb(230,0,0)"],[.4,"rgb(230,210,0)"],[.7,"rgb(255,255,255)"],[1,"rgb(160,200,255)"]],Earth:[[0,"rgb(0,0,130)"],[.1,"rgb(0,180,180)"],[.2,"rgb(40,210,40)"],[.4,"rgb(230,230,50)"],[.6,"rgb(120,70,20)"],[1,"rgb(255,255,255)"]],Electric:[[0,"rgb(0,0,0)"],[.15,"rgb(30,0,100)"],[.4,"rgb(120,0,100)"],[.6,"rgb(160,90,0)"],[.8,"rgb(230,200,0)"],[1,"rgb(255,250,220)"]],Viridis:[[0,"#440154"],[.06274509803921569,"#48186a"],[.12549019607843137,"#472d7b"],[.18823529411764706,"#424086"],[.25098039215686274,"#3b528b"],[.3137254901960784,"#33638d"],[.3764705882352941,"#2c728e"],[.4392156862745098,"#26828e"],[.5019607843137255,"#21918c"],[.5647058823529412,"#1fa088"],[.6274509803921569,"#28ae80"],[.6901960784313725,"#3fbc73"],[.7529411764705882,"#5ec962"],[.8156862745098039,"#84d44b"],[.8784313725490196,"#addc30"],[.9411764705882353,"#d8e219"],[1,"#fde725"]],Cividis:[[0,"rgb(0,32,76)"],[.058824,"rgb(0,42,102)"],[.117647,"rgb(0,52,110)"],[.176471,"rgb(39,63,108)"],[.235294,"rgb(60,74,107)"],[.294118,"rgb(76,85,107)"],[.352941,"rgb(91,95,109)"],[.411765,"rgb(104,106,112)"],[.470588,"rgb(117,117,117)"],[.529412,"rgb(131,129,120)"],[.588235,"rgb(146,140,120)"],[.647059,"rgb(161,152,118)"],[.705882,"rgb(176,165,114)"],[.764706,"rgb(192,177,109)"],[.823529,"rgb(209,191,102)"],[.882353,"rgb(225,204,92)"],[.941176,"rgb(243,219,79)"],[1,"rgb(255,233,69)"]]},Bee=d6.RdBu;function xet(e,t){if(t||(t=Bee),!e)return t;function r(){try{e=d6[e]||JSON.parse(e)}catch(n){e=t}}return typeof e=="string"&&(r(),typeof e=="string"&&r()),Nee(e)?e:t}function Nee(e){var t=0;if(!Array.isArray(e)||e.length<2||!e[0]||!e[e.length-1]||+e[0][0]!=0||+e[e.length-1][0]!=1)return!1;for(var r=0;r{"use strict";lb.defaults=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"];lb.defaultLine="#444";lb.lightLine="#eee";lb.background="#fff";lb.borderLine="#BEC8D9";lb.lightFraction=100*10/11});var va=ye((ner,Vee)=>{"use strict";var xp=id(),wet=uo(),Tet=vv().isTypedArray,nd=Vee.exports={},v6=dh();nd.defaults=v6.defaults;var Aet=nd.defaultLine=v6.defaultLine;nd.lightLine=v6.lightLine;var wq=nd.background=v6.background;nd.tinyRGB=function(e){var t=e.toRgb();return"rgb("+Math.round(t.r)+", "+Math.round(t.g)+", "+Math.round(t.b)+")"};nd.rgb=function(e){return nd.tinyRGB(xp(e))};nd.opacity=function(e){return e?xp(e).getAlpha():0};nd.addOpacity=function(e,t){var r=xp(e).toRgb();return"rgba("+Math.round(r.r)+", "+Math.round(r.g)+", "+Math.round(r.b)+", "+t+")"};nd.combine=function(e,t){var r=xp(e).toRgb();if(r.a===1)return xp(e).toRgbString();var n=xp(t||wq).toRgb(),i=n.a===1?n:{r:255*(1-n.a)+n.r*n.a,g:255*(1-n.a)+n.g*n.a,b:255*(1-n.a)+n.b*n.a},a={r:i.r*(1-r.a)+r.r*r.a,g:i.g*(1-r.a)+r.g*r.a,b:i.b*(1-r.a)+r.b*r.a};return xp(a).toRgbString()};nd.interpolate=function(e,t,r){var n=xp(e).toRgb(),i=xp(t).toRgb(),a={r:r*n.r+(1-r)*i.r,g:r*n.g+(1-r)*i.g,b:r*n.b+(1-r)*i.b};return xp(a).toRgbString()};nd.contrast=function(e,t,r){var n=xp(e);n.getAlpha()!==1&&(n=xp(nd.combine(e,wq)));var i=n.isDark()?t?n.lighten(t):wq:r?n.darken(r):Aet;return i.toString()};nd.stroke=function(e,t){var r=xp(t);e.style({stroke:nd.tinyRGB(r),"stroke-opacity":r.getAlpha()})};nd.fill=function(e,t){var r=xp(t);e.style({fill:nd.tinyRGB(r),"fill-opacity":r.getAlpha()})};nd.clean=function(e){if(!(!e||typeof e!="object")){var t=Object.keys(e),r,n,i,a;for(r=0;r=0)))return e;if(a===3)n[a]>1&&(n[a]=1);else if(n[a]>=1)return e}var o=Math.round(n[0]*255)+", "+Math.round(n[1]*255)+", "+Math.round(n[2]*255);return i?"rgba("+o+", "+n[3]+")":"rgb("+o+")"}});var U1=ye((aer,Hee)=>{"use strict";Hee.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}});var n3=ye(Gee=>{"use strict";Gee.counter=function(e,t,r,n){var i=(t||"")+(r?"":"$"),a=n===!1?"":"^";return e==="xy"?new RegExp(a+"x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?"+i):new RegExp(a+e+"([2-9]|[1-9][0-9]+)?"+i)}});var Xee=ye(bp=>{"use strict";var Tq=uo(),jee=id(),Wee=no().extendFlat,Met=vl(),Eet=sb(),ket=va(),Cet=U1().DESELECTDIM,a3=ES(),Zee=n3().counter,Let=r3().modHalf,dm=vv().isArrayOrTypedArray,V1=vv().isTypedArraySpec,H1=vv().decodeTypedArraySpec;bp.valObjectMeta={data_array:{coerceFunction:function(e,t,r){t.set(dm(e)?e:V1(e)?H1(e):r)}},enumerated:{coerceFunction:function(e,t,r,n){n.coerceNumber&&(e=+e),n.values.indexOf(e)===-1?t.set(r):t.set(e)},validateFunction:function(e,t){t.coerceNumber&&(e=+e);for(var r=t.values,n=0;nn.max?t.set(r):t.set(+e)}},integer:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}V1(e)&&(e=H1(e)),e%1||!Tq(e)||n.min!==void 0&&en.max?t.set(r):t.set(+e)}},string:{coerceFunction:function(e,t,r,n){if(typeof e!="string"){var i=typeof e=="number";n.strict===!0||!i?t.set(r):t.set(String(e))}else n.noBlank&&!e?t.set(r):t.set(e)}},color:{coerceFunction:function(e,t,r){V1(e)&&(e=H1(e)),jee(e).isValid()?t.set(e):t.set(r)}},colorlist:{coerceFunction:function(e,t,r){function n(i){return jee(i).isValid()}!Array.isArray(e)||!e.length?t.set(r):e.every(n)?t.set(e):t.set(r)}},colorscale:{coerceFunction:function(e,t,r){t.set(Eet.get(e,r))}},angle:{coerceFunction:function(e,t,r){V1(e)&&(e=H1(e)),e==="auto"?t.set("auto"):Tq(e)?t.set(Let(+e,360)):t.set(r)}},subplotid:{coerceFunction:function(e,t,r,n){var i=n.regex||Zee(r);if(typeof e=="string"&&i.test(e)){t.set(e);return}t.set(r)},validateFunction:function(e,t){var r=t.dflt;return e===r?!0:typeof e!="string"?!1:!!Zee(r).test(e)}},flaglist:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}if(typeof e!="string"){t.set(r);return}for(var i=e.split("+"),a=0;a{"use strict";var Yee={staticPlot:{valType:"boolean",dflt:!1},typesetMath:{valType:"boolean",dflt:!0},plotlyServerURL:{valType:"string",dflt:""},editable:{valType:"boolean",dflt:!1},edits:{annotationPosition:{valType:"boolean",dflt:!1},annotationTail:{valType:"boolean",dflt:!1},annotationText:{valType:"boolean",dflt:!1},axisTitleText:{valType:"boolean",dflt:!1},colorbarPosition:{valType:"boolean",dflt:!1},colorbarTitleText:{valType:"boolean",dflt:!1},legendPosition:{valType:"boolean",dflt:!1},legendText:{valType:"boolean",dflt:!1},shapePosition:{valType:"boolean",dflt:!1},titleText:{valType:"boolean",dflt:!1}},editSelection:{valType:"boolean",dflt:!0},autosizable:{valType:"boolean",dflt:!1},responsive:{valType:"boolean",dflt:!1},fillFrame:{valType:"boolean",dflt:!1},frameMargins:{valType:"number",dflt:0,min:0,max:.5},scrollZoom:{valType:"flaglist",flags:["cartesian","gl3d","geo","mapbox","map"],extras:[!0,!1],dflt:"gl3d+geo+map"},doubleClick:{valType:"enumerated",values:[!1,"reset","autosize","reset+autosize"],dflt:"reset+autosize"},doubleClickDelay:{valType:"number",dflt:300,min:0},showAxisDragHandles:{valType:"boolean",dflt:!0},showAxisRangeEntryBoxes:{valType:"boolean",dflt:!0},showTips:{valType:"boolean",dflt:!0},showLink:{valType:"boolean",dflt:!1},linkText:{valType:"string",dflt:"Edit chart",noBlank:!0},sendData:{valType:"boolean",dflt:!0},showSources:{valType:"any",dflt:!1},displayModeBar:{valType:"enumerated",values:["hover",!0,!1],dflt:"hover"},showSendToCloud:{valType:"boolean",dflt:!1},showEditInChartStudio:{valType:"boolean",dflt:!1},modeBarButtonsToRemove:{valType:"any",dflt:[]},modeBarButtonsToAdd:{valType:"any",dflt:[]},modeBarButtons:{valType:"any",dflt:!1},toImageButtonOptions:{valType:"any",dflt:{}},displaylogo:{valType:"boolean",dflt:!0},watermark:{valType:"boolean",dflt:!1},plotGlPixelRatio:{valType:"number",dflt:2,min:1,max:4},setBackground:{valType:"any",dflt:"transparent"},topojsonURL:{valType:"string",noBlank:!0,dflt:"https://cdn.plot.ly/"},mapboxAccessToken:{valType:"string",dflt:null},logging:{valType:"integer",min:0,max:2,dflt:1},notifyOnLogging:{valType:"integer",min:0,max:2,dflt:0},queueLength:{valType:"integer",min:0,dflt:0},locale:{valType:"string",dflt:"en-US"},locales:{valType:"any",dflt:{}}},Kee={};function Jee(e,t){for(var r in e){var n=e[r];n.valType?t[r]=n.dflt:(t[r]||(t[r]={}),Jee(n,t[r]))}}Jee(Yee,Kee);$ee.exports={configAttributes:Yee,dfltConfig:Kee}});var Sq=ye((uer,Qee)=>{"use strict";var Aq=xa(),Pet=uo(),RS=[];Qee.exports=function(e,t){if(RS.indexOf(e)!==-1)return;RS.push(e);var r=1e3;Pet(t)?r=t:t==="long"&&(r=3e3);var n=Aq.select("body").selectAll(".plotly-notifier").data([0]);n.enter().append("div").classed("plotly-notifier",!0);var i=n.selectAll(".notifier-note").data(RS);function a(o){o.duration(700).style("opacity",0).each("end",function(s){var l=RS.indexOf(s);l!==-1&&RS.splice(l,1),Aq.select(this).remove()})}i.enter().append("div").classed("notifier-note",!0).style("opacity",0).each(function(o){var s=Aq.select(this);s.append("button").classed("notifier-close",!0).html("×").on("click",function(){s.transition().call(a)});for(var l=s.append("p"),u=o.split(//g),c=0;c{"use strict";var o3=ub().dfltConfig,Mq=Sq(),Eq=ete.exports={};Eq.log=function(){var e;if(o3.logging>1){var t=["LOG:"];for(e=0;e1){var r=[];for(e=0;e"),"long")}};Eq.warn=function(){var e;if(o3.logging>0){var t=["WARN:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}};Eq.error=function(){var e;if(o3.logging>0){var t=["ERROR:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}}});var g6=ye((fer,tte)=>{"use strict";tte.exports=function(){}});var kq=ye((her,rte)=>{"use strict";rte.exports=function(t,r){if(r instanceof RegExp){for(var n=r.toString(),i=0;i{ite.exports=Iet;function Iet(){var e=new Float32Array(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var ote=ye((ver,ate)=>{ate.exports=Ret;function Ret(e){var t=new Float32Array(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}});var lte=ye((per,ste)=>{ste.exports=Det;function Det(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var Cq=ye((ger,ute)=>{ute.exports=zet;function zet(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var fte=ye((mer,cte)=>{cte.exports=Fet;function Fet(e,t){if(e===t){var r=t[1],n=t[2],i=t[3],a=t[6],o=t[7],s=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=i,e[13]=o,e[14]=s}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}});var dte=ye((yer,hte)=>{hte.exports=qet;function qet(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],x=t[13],b=t[14],p=t[15],E=r*s-n*o,k=r*l-i*o,A=r*u-a*o,L=n*l-i*s,_=n*u-a*s,C=i*u-a*l,M=c*x-f*v,g=c*b-h*v,P=c*p-d*v,T=f*b-h*x,F=f*p-d*x,q=h*p-d*b,V=E*q-k*F+A*T+L*P-_*g+C*M;return V?(V=1/V,e[0]=(s*q-l*F+u*T)*V,e[1]=(i*F-n*q-a*T)*V,e[2]=(x*C-b*_+p*L)*V,e[3]=(h*_-f*C-d*L)*V,e[4]=(l*P-o*q-u*g)*V,e[5]=(r*q-i*P+a*g)*V,e[6]=(b*A-v*C-p*k)*V,e[7]=(c*C-h*A+d*k)*V,e[8]=(o*F-s*P+u*M)*V,e[9]=(n*P-r*F-a*M)*V,e[10]=(v*_-x*A+p*E)*V,e[11]=(f*A-c*_-d*E)*V,e[12]=(s*g-o*T-l*M)*V,e[13]=(r*T-n*g+i*M)*V,e[14]=(x*k-v*L-b*E)*V,e[15]=(c*L-f*k+h*E)*V,e):null}});var pte=ye((_er,vte)=>{vte.exports=Oet;function Oet(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],x=t[13],b=t[14],p=t[15];return e[0]=s*(h*p-d*b)-f*(l*p-u*b)+x*(l*d-u*h),e[1]=-(n*(h*p-d*b)-f*(i*p-a*b)+x*(i*d-a*h)),e[2]=n*(l*p-u*b)-s*(i*p-a*b)+x*(i*u-a*l),e[3]=-(n*(l*d-u*h)-s*(i*d-a*h)+f*(i*u-a*l)),e[4]=-(o*(h*p-d*b)-c*(l*p-u*b)+v*(l*d-u*h)),e[5]=r*(h*p-d*b)-c*(i*p-a*b)+v*(i*d-a*h),e[6]=-(r*(l*p-u*b)-o*(i*p-a*b)+v*(i*u-a*l)),e[7]=r*(l*d-u*h)-o*(i*d-a*h)+c*(i*u-a*l),e[8]=o*(f*p-d*x)-c*(s*p-u*x)+v*(s*d-u*f),e[9]=-(r*(f*p-d*x)-c*(n*p-a*x)+v*(n*d-a*f)),e[10]=r*(s*p-u*x)-o*(n*p-a*x)+v*(n*u-a*s),e[11]=-(r*(s*d-u*f)-o*(n*d-a*f)+c*(n*u-a*s)),e[12]=-(o*(f*b-h*x)-c*(s*b-l*x)+v*(s*h-l*f)),e[13]=r*(f*b-h*x)-c*(n*b-i*x)+v*(n*h-i*f),e[14]=-(r*(s*b-l*x)-o*(n*b-i*x)+v*(n*l-i*s)),e[15]=r*(s*h-l*f)-o*(n*h-i*f)+c*(n*l-i*s),e}});var mte=ye((xer,gte)=>{gte.exports=Bet;function Bet(e){var t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],f=e[10],h=e[11],d=e[12],v=e[13],x=e[14],b=e[15],p=t*o-r*a,E=t*s-n*a,k=t*l-i*a,A=r*s-n*o,L=r*l-i*o,_=n*l-i*s,C=u*v-c*d,M=u*x-f*d,g=u*b-h*d,P=c*x-f*v,T=c*b-h*v,F=f*b-h*x;return p*F-E*T+k*P+A*g-L*M+_*C}});var _te=ye((ber,yte)=>{yte.exports=Net;function Net(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],f=t[8],h=t[9],d=t[10],v=t[11],x=t[12],b=t[13],p=t[14],E=t[15],k=r[0],A=r[1],L=r[2],_=r[3];return e[0]=k*n+A*s+L*f+_*x,e[1]=k*i+A*l+L*h+_*b,e[2]=k*a+A*u+L*d+_*p,e[3]=k*o+A*c+L*v+_*E,k=r[4],A=r[5],L=r[6],_=r[7],e[4]=k*n+A*s+L*f+_*x,e[5]=k*i+A*l+L*h+_*b,e[6]=k*a+A*u+L*d+_*p,e[7]=k*o+A*c+L*v+_*E,k=r[8],A=r[9],L=r[10],_=r[11],e[8]=k*n+A*s+L*f+_*x,e[9]=k*i+A*l+L*h+_*b,e[10]=k*a+A*u+L*d+_*p,e[11]=k*o+A*c+L*v+_*E,k=r[12],A=r[13],L=r[14],_=r[15],e[12]=k*n+A*s+L*f+_*x,e[13]=k*i+A*l+L*h+_*b,e[14]=k*a+A*u+L*d+_*p,e[15]=k*o+A*c+L*v+_*E,e}});var bte=ye((wer,xte)=>{xte.exports=Uet;function Uet(e,t,r){var n=r[0],i=r[1],a=r[2],o,s,l,u,c,f,h,d,v,x,b,p;return t===e?(e[12]=t[0]*n+t[4]*i+t[8]*a+t[12],e[13]=t[1]*n+t[5]*i+t[9]*a+t[13],e[14]=t[2]*n+t[6]*i+t[10]*a+t[14],e[15]=t[3]*n+t[7]*i+t[11]*a+t[15]):(o=t[0],s=t[1],l=t[2],u=t[3],c=t[4],f=t[5],h=t[6],d=t[7],v=t[8],x=t[9],b=t[10],p=t[11],e[0]=o,e[1]=s,e[2]=l,e[3]=u,e[4]=c,e[5]=f,e[6]=h,e[7]=d,e[8]=v,e[9]=x,e[10]=b,e[11]=p,e[12]=o*n+c*i+v*a+t[12],e[13]=s*n+f*i+x*a+t[13],e[14]=l*n+h*i+b*a+t[14],e[15]=u*n+d*i+p*a+t[15]),e}});var Tte=ye((Ter,wte)=>{wte.exports=Vet;function Vet(e,t,r){var n=r[0],i=r[1],a=r[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var Ste=ye((Aer,Ate)=>{Ate.exports=Het;function Het(e,t,r,n){var i=n[0],a=n[1],o=n[2],s=Math.sqrt(i*i+a*a+o*o),l,u,c,f,h,d,v,x,b,p,E,k,A,L,_,C,M,g,P,T,F,q,V,H;return Math.abs(s)<1e-6?null:(s=1/s,i*=s,a*=s,o*=s,l=Math.sin(r),u=Math.cos(r),c=1-u,f=t[0],h=t[1],d=t[2],v=t[3],x=t[4],b=t[5],p=t[6],E=t[7],k=t[8],A=t[9],L=t[10],_=t[11],C=i*i*c+u,M=a*i*c+o*l,g=o*i*c-a*l,P=i*a*c-o*l,T=a*a*c+u,F=o*a*c+i*l,q=i*o*c+a*l,V=a*o*c-i*l,H=o*o*c+u,e[0]=f*C+x*M+k*g,e[1]=h*C+b*M+A*g,e[2]=d*C+p*M+L*g,e[3]=v*C+E*M+_*g,e[4]=f*P+x*T+k*F,e[5]=h*P+b*T+A*F,e[6]=d*P+p*T+L*F,e[7]=v*P+E*T+_*F,e[8]=f*q+x*V+k*H,e[9]=h*q+b*V+A*H,e[10]=d*q+p*V+L*H,e[11]=v*q+E*V+_*H,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}});var Ete=ye((Ser,Mte)=>{Mte.exports=Get;function Get(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[4],o=t[5],s=t[6],l=t[7],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+u*n,e[5]=o*i+c*n,e[6]=s*i+f*n,e[7]=l*i+h*n,e[8]=u*i-a*n,e[9]=c*i-o*n,e[10]=f*i-s*n,e[11]=h*i-l*n,e}});var Cte=ye((Mer,kte)=>{kte.exports=jet;function jet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-u*n,e[1]=o*i-c*n,e[2]=s*i-f*n,e[3]=l*i-h*n,e[8]=a*n+u*i,e[9]=o*n+c*i,e[10]=s*n+f*i,e[11]=l*n+h*i,e}});var Pte=ye((Eer,Lte)=>{Lte.exports=Wet;function Wet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[4],c=t[5],f=t[6],h=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+u*n,e[1]=o*i+c*n,e[2]=s*i+f*n,e[3]=l*i+h*n,e[4]=u*i-a*n,e[5]=c*i-o*n,e[6]=f*i-s*n,e[7]=h*i-l*n,e}});var Rte=ye((ker,Ite)=>{Ite.exports=Zet;function Zet(e,t,r){var n,i,a,o=r[0],s=r[1],l=r[2],u=Math.sqrt(o*o+s*s+l*l);return Math.abs(u)<1e-6?null:(u=1/u,o*=u,s*=u,l*=u,n=Math.sin(t),i=Math.cos(t),a=1-i,e[0]=o*o*a+i,e[1]=s*o*a+l*n,e[2]=l*o*a-s*n,e[3]=0,e[4]=o*s*a-l*n,e[5]=s*s*a+i,e[6]=l*s*a+o*n,e[7]=0,e[8]=o*l*a+s*n,e[9]=s*l*a-o*n,e[10]=l*l*a+i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}});var zte=ye((Cer,Dte)=>{Dte.exports=Xet;function Xet(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=n+n,l=i+i,u=a+a,c=n*s,f=n*l,h=n*u,d=i*l,v=i*u,x=a*u,b=o*s,p=o*l,E=o*u;return e[0]=1-(d+x),e[1]=f+E,e[2]=h-p,e[3]=0,e[4]=f-E,e[5]=1-(c+x),e[6]=v+b,e[7]=0,e[8]=h+p,e[9]=v-b,e[10]=1-(c+d),e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}});var qte=ye((Ler,Fte)=>{Fte.exports=Yet;function Yet(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Bte=ye((Per,Ote)=>{Ote.exports=Ket;function Ket(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}});var Ute=ye((Ier,Nte)=>{Nte.exports=Jet;function Jet(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=r,e[7]=0,e[8]=0,e[9]=-r,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Hte=ye((Rer,Vte)=>{Vte.exports=$et;function $et(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-r,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=r,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var jte=ye((Der,Gte)=>{Gte.exports=Qet;function Qet(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=r,e[2]=0,e[3]=0,e[4]=-r,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Lq=ye((zer,Wte)=>{Wte.exports=ett;function ett(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=r+r,s=n+n,l=i+i,u=r*o,c=n*o,f=n*s,h=i*o,d=i*s,v=i*l,x=a*o,b=a*s,p=a*l;return e[0]=1-f-v,e[1]=c+p,e[2]=h-b,e[3]=0,e[4]=c-p,e[5]=1-u-v,e[6]=d+x,e[7]=0,e[8]=h+b,e[9]=d-x,e[10]=1-u-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Xte=ye((Fer,Zte)=>{Zte.exports=ttt;function ttt(e,t,r,n,i,a,o){var s=1/(r-t),l=1/(i-n),u=1/(a-o);return e[0]=a*2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(r+t)*s,e[9]=(i+n)*l,e[10]=(o+a)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*a*2*u,e[15]=0,e}});var Kte=ye((qer,Yte)=>{Yte.exports=rtt;function rtt(e,t,r,n,i){var a=1/Math.tan(t/2),o=1/(n-i);return e[0]=a/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(i+n)*o,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*i*n*o,e[15]=0,e}});var $te=ye((Oer,Jte)=>{Jte.exports=itt;function itt(e,t,r,n){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),s=Math.tan(t.rightDegrees*Math.PI/180),l=2/(o+s),u=2/(i+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=u,e[6]=0,e[7]=0,e[8]=-((o-s)*l*.5),e[9]=(i-a)*u*.5,e[10]=n/(r-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*r/(r-n),e[15]=0,e}});var ere=ye((Ber,Qte)=>{Qte.exports=ntt;function ntt(e,t,r,n,i,a,o){var s=1/(t-r),l=1/(n-i),u=1/(a-o);return e[0]=-2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+r)*s,e[13]=(i+n)*l,e[14]=(o+a)*u,e[15]=1,e}});var rre=ye((Ner,tre)=>{var att=Cq();tre.exports=ott;function ott(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v=t[0],x=t[1],b=t[2],p=n[0],E=n[1],k=n[2],A=r[0],L=r[1],_=r[2];return Math.abs(v-A)<1e-6&&Math.abs(x-L)<1e-6&&Math.abs(b-_)<1e-6?att(e):(c=v-A,f=x-L,h=b-_,d=1/Math.sqrt(c*c+f*f+h*h),c*=d,f*=d,h*=d,i=E*h-k*f,a=k*c-p*h,o=p*f-E*c,d=Math.sqrt(i*i+a*a+o*o),d?(d=1/d,i*=d,a*=d,o*=d):(i=0,a=0,o=0),s=f*o-h*a,l=h*i-c*o,u=c*a-f*i,d=Math.sqrt(s*s+l*l+u*u),d?(d=1/d,s*=d,l*=d,u*=d):(s=0,l=0,u=0),e[0]=i,e[1]=s,e[2]=c,e[3]=0,e[4]=a,e[5]=l,e[6]=f,e[7]=0,e[8]=o,e[9]=u,e[10]=h,e[11]=0,e[12]=-(i*v+a*x+o*b),e[13]=-(s*v+l*x+u*b),e[14]=-(c*v+f*x+h*b),e[15]=1,e)}});var nre=ye((Uer,ire)=>{ire.exports=stt;function stt(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}});var Pq=ye((Ver,are)=>{are.exports={create:nte(),clone:ote(),copy:lte(),identity:Cq(),transpose:fte(),invert:dte(),adjoint:pte(),determinant:mte(),multiply:_te(),translate:bte(),scale:Tte(),rotate:Ste(),rotateX:Ete(),rotateY:Cte(),rotateZ:Pte(),fromRotation:Rte(),fromRotationTranslation:zte(),fromScaling:qte(),fromTranslation:Bte(),fromXRotation:Ute(),fromYRotation:Hte(),fromZRotation:jte(),fromQuat:Lq(),frustum:Xte(),perspective:Kte(),perspectiveFromFieldOfView:$te(),ortho:ere(),lookAt:rre(),str:nre()}});var m6=ye(Xf=>{"use strict";var ltt=Pq();Xf.init2dArray=function(e,t){for(var r=new Array(e),n=0;n{"use strict";var utt=xa(),ore=G1(),ctt=m6(),ftt=Pq();function htt(e){var t;if(typeof e=="string"){if(t=document.getElementById(e),t===null)throw new Error("No DOM element with id '"+e+"' exists on the page.");return t}else if(e==null)throw new Error("DOM element provided is null or undefined");return e}function dtt(e){var t=utt.select(e);return t.node()instanceof HTMLElement&&t.size()&&t.classed("js-plotly-plot")}function sre(e){var t=e&&e.parentNode;t&&t.removeChild(e)}function vtt(e,t){lre("global",e,t)}function lre(e,t,r){var n="plotly.js-style-"+e,i=document.getElementById(n);if(!(i&&i.matches(".no-inline-styles"))){i||(i=document.createElement("style"),i.setAttribute("id",n),i.appendChild(document.createTextNode("")),document.head.appendChild(i));var a=i.sheet;a?a.insertRule?a.insertRule(t+"{"+r+"}",0):a.addRule?a.addRule(t,r,0):ore.warn("addStyleRule failed"):ore.warn("Cannot addRelatedStyleRule, probably due to strict CSP...")}}function ptt(e){var t="plotly.js-style-"+e,r=document.getElementById(t);r&&sre(r)}function gtt(e,t,r,n,i,a){var o=n.split(":"),s=i.split(":"),l="data-btn-style-event-added";a||(a=document),a.querySelectorAll(e).forEach(function(u){u.getAttribute(l)||(u.addEventListener("mouseenter",function(){var c=this.querySelector(r);c&&(c.style[o[0]]=o[1])}),u.addEventListener("mouseleave",function(){var c=this.querySelector(r);c&&(t&&this.matches(t)?c.style[o[0]]=o[1]:c.style[s[0]]=s[1])}),u.setAttribute(l,!0))})}function mtt(e){var t=cre(e),r=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];return t.forEach(function(n){var i=ure(n);if(i){var a=ctt.convertCssMatrix(i);r=ftt.multiply(r,r,a)}}),r}function ure(e){var t=window.getComputedStyle(e,null),r=t.getPropertyValue("-webkit-transform")||t.getPropertyValue("-moz-transform")||t.getPropertyValue("-ms-transform")||t.getPropertyValue("-o-transform")||t.getPropertyValue("transform");return r==="none"?null:r.replace("matrix","").replace("3d","").slice(1,-1).split(",").map(function(n){return+n})}function cre(e){for(var t=[];ytt(e);)t.push(e),e=e.parentNode,typeof ShadowRoot=="function"&&e instanceof ShadowRoot&&(e=e.host);return t}function ytt(e){return e&&(e instanceof Element||e instanceof HTMLElement)}function _tt(e,t){return e&&t&&e.top===t.top&&e.left===t.left&&e.right===t.right&&e.bottom===t.bottom}fre.exports={getGraphDiv:htt,isPlotDiv:dtt,removeElement:sre,addStyleRule:vtt,addRelatedStyleRule:lre,deleteRelatedStyleRule:ptt,setStyleOnHover:gtt,getFullTransformMatrix:mtt,getElementTransformMatrix:ure,getElementAndAncestors:cre,equalDomRects:_tt}});var zS=ye((jer,hre)=>{"use strict";hre.exports={mode:{valType:"enumerated",dflt:"afterall",values:["immediate","next","afterall"]},direction:{valType:"enumerated",values:["forward","reverse"],dflt:"forward"},fromcurrent:{valType:"boolean",dflt:!1},frame:{duration:{valType:"number",min:0,dflt:500},redraw:{valType:"boolean",dflt:!0}},transition:{duration:{valType:"number",min:0,dflt:500,editType:"none"},easing:{valType:"enumerated",dflt:"cubic-in-out",values:["linear","quad","cubic","sin","exp","circle","elastic","back","bounce","linear-in","quad-in","cubic-in","sin-in","exp-in","circle-in","elastic-in","back-in","bounce-in","linear-out","quad-out","cubic-out","sin-out","exp-out","circle-out","elastic-out","back-out","bounce-out","linear-in-out","quad-in-out","cubic-in-out","sin-in-out","exp-in-out","circle-in-out","elastic-in-out","back-in-out","bounce-in-out"],editType:"none"},ordering:{valType:"enumerated",values:["layout first","traces first"],dflt:"layout first",editType:"none"}}}});var Bu=ye((Wer,_re)=>{"use strict";var vre=no().extendFlat,xtt=gy(),pre={valType:"flaglist",extras:["none"],flags:["calc","clearAxisTypes","plot","style","markerSize","colorbars"]},gre={valType:"flaglist",extras:["none"],flags:["calc","plot","legend","ticks","axrange","layoutstyle","modebar","camera","arraydraw","colorbars"]},btt=pre.flags.slice().concat(["fullReplot"]),wtt=gre.flags.slice().concat("layoutReplot");_re.exports={traces:pre,layout:gre,traceFlags:function(){return dre(btt)},layoutFlags:function(){return dre(wtt)},update:function(e,t){var r=t.editType;if(r&&r!=="none")for(var n=r.split("+"),i=0;i{"use strict";Iq.dash={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"};Iq.pattern={shape:{valType:"enumerated",values:["","/","\\","x","-","|","+","."],dflt:"",arrayOk:!0,editType:"style"},fillmode:{valType:"enumerated",values:["replace","overlay"],dflt:"replace",editType:"style"},bgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgopacity:{valType:"number",editType:"style",min:0,max:1},size:{valType:"number",min:0,dflt:8,arrayOk:!0,editType:"style"},solidity:{valType:"number",min:0,max:1,dflt:.3,arrayOk:!0,editType:"style"},editType:"style"}});var Rq=ye((Xer,xre)=>{"use strict";xre.exports={FORMAT_LINK:"https://github.com/d3/d3-format/tree/v1.4.5#d3-format",DATE_FORMAT_LINK:"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"}});var Wo=ye(y6=>{"use strict";var bre=Rq(),Yer=bre.FORMAT_LINK,Ker=bre.DATE_FORMAT_LINK;function Dq(e){var t=e.description?" "+e.description:"",r=e.keys||[];if(r.length>0){for(var n=[],i=0;i{"use strict";function j1(e,t){return t?t.d2l(e):e}function wre(e,t){return t?t.l2d(e):e}function Ttt(e){return e.x0}function Att(e){return e.x1}function Stt(e){return e.y0}function Mtt(e){return e.y1}function Tre(e){return e.x0shift||0}function Are(e){return e.x1shift||0}function Sre(e){return e.y0shift||0}function Mre(e){return e.y1shift||0}function _6(e,t){return j1(e.x1,t)+Are(e)-j1(e.x0,t)-Tre(e)}function x6(e,t,r){return j1(e.y1,r)+Mre(e)-j1(e.y0,r)-Sre(e)}function Ett(e,t){return Math.abs(_6(e,t))}function ktt(e,t,r){return Math.abs(x6(e,t,r))}function Ctt(e,t,r){return e.type!=="line"?void 0:Math.sqrt(Math.pow(_6(e,t),2)+Math.pow(x6(e,t,r),2))}function Ltt(e,t){return wre((j1(e.x1,t)+Are(e)+j1(e.x0,t)+Tre(e))/2,t)}function Ptt(e,t,r){return wre((j1(e.y1,r)+Mre(e)+j1(e.y0,r)+Sre(e))/2,r)}function Itt(e,t,r){return e.type!=="line"?void 0:x6(e,t,r)/_6(e,t)}Ere.exports={x0:Ttt,x1:Att,y0:Stt,y1:Mtt,slope:Itt,dx:_6,dy:x6,width:Ett,height:ktt,length:Ctt,xcenter:Ltt,ycenter:Ptt}});var Lre=ye((Qer,Cre)=>{"use strict";var Rtt=Bu().overrideAll,cb=vl(),kre=Su(),Dtt=Ed().dash,W1=no().extendFlat,ztt=Wo().shapeTexttemplateAttrs,Ftt=b6();Cre.exports=Rtt({newshape:{visible:W1({},cb.visible,{}),showlegend:{valType:"boolean",dflt:!1},legend:W1({},cb.legend,{}),legendgroup:W1({},cb.legendgroup,{}),legendgrouptitle:{text:W1({},cb.legendgrouptitle.text,{}),font:kre({})},legendrank:W1({},cb.legendrank,{}),legendwidth:W1({},cb.legendwidth,{}),line:{color:{valType:"color"},width:{valType:"number",min:0,dflt:4},dash:W1({},Dtt,{dflt:"solid"})},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd"},opacity:{valType:"number",min:0,max:1,dflt:1},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above"},drawdirection:{valType:"enumerated",values:["ortho","horizontal","vertical","diagonal"],dflt:"diagonal"},name:W1({},cb.name,{}),label:{text:{valType:"string",dflt:""},texttemplate:ztt({newshape:!0},{keys:Object.keys(Ftt)}),font:kre({}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"]},textangle:{valType:"angle",dflt:"auto"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},padding:{valType:"number",dflt:3,min:0}}},activeshape:{fillcolor:{valType:"color",dflt:"rgb(255,0,255)"},opacity:{valType:"number",min:0,max:1,dflt:.5}}},"none","from-root")});var Ire=ye((etr,Pre)=>{"use strict";var qtt=Ed().dash,Ott=no().extendFlat;Pre.exports={newselection:{mode:{valType:"enumerated",values:["immediate","gradual"],dflt:"immediate",editType:"none"},line:{color:{valType:"color",editType:"none"},width:{valType:"number",min:1,dflt:1,editType:"none"},dash:Ott({},qtt,{dflt:"dot",editType:"none"}),editType:"none"},editType:"none"},activeselection:{fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"none"},opacity:{valType:"number",min:0,max:1,dflt:.5,editType:"none"},editType:"none"}}});var w6=ye((ttr,Rre)=>{"use strict";Rre.exports=function(e){var t=e.editType;return{t:{valType:"number",dflt:0,editType:t},r:{valType:"number",dflt:0,editType:t},b:{valType:"number",dflt:0,editType:t},l:{valType:"number",dflt:0,editType:t},editType:t}}});var s3=ye((rtr,qre)=>{"use strict";var zq=Su(),Btt=zS(),T6=dh(),Dre=Lre(),zre=Ire(),Ntt=w6(),Fre=no().extendFlat,A6=zq({editType:"calc"});A6.family.dflt='"Open Sans", verdana, arial, sans-serif';A6.size.dflt=12;A6.color.dflt=T6.defaultLine;qre.exports={font:A6,title:{text:{valType:"string",editType:"layoutstyle"},font:zq({editType:"layoutstyle"}),subtitle:{text:{valType:"string",editType:"layoutstyle"},font:zq({editType:"layoutstyle"}),editType:"layoutstyle"},xref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},yref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},x:{valType:"number",min:0,max:1,dflt:.5,editType:"layoutstyle"},y:{valType:"number",min:0,max:1,dflt:"auto",editType:"layoutstyle"},xanchor:{valType:"enumerated",dflt:"auto",values:["auto","left","center","right"],editType:"layoutstyle"},yanchor:{valType:"enumerated",dflt:"auto",values:["auto","top","middle","bottom"],editType:"layoutstyle"},pad:Fre(Ntt({editType:"layoutstyle"}),{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},editType:"layoutstyle"},uniformtext:{mode:{valType:"enumerated",values:[!1,"hide","show"],dflt:!1,editType:"plot"},minsize:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"},autosize:{valType:"boolean",dflt:!1,editType:"none"},width:{valType:"number",min:10,dflt:700,editType:"plot"},height:{valType:"number",min:10,dflt:450,editType:"plot"},minreducedwidth:{valType:"number",min:2,dflt:64,editType:"plot"},minreducedheight:{valType:"number",min:2,dflt:64,editType:"plot"},margin:{l:{valType:"number",min:0,dflt:80,editType:"plot"},r:{valType:"number",min:0,dflt:80,editType:"plot"},t:{valType:"number",min:0,dflt:100,editType:"plot"},b:{valType:"number",min:0,dflt:80,editType:"plot"},pad:{valType:"number",min:0,dflt:0,editType:"plot"},autoexpand:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},computed:{valType:"any",editType:"none"},paper_bgcolor:{valType:"color",dflt:T6.background,editType:"plot"},plot_bgcolor:{valType:"color",dflt:T6.background,editType:"layoutstyle"},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},separators:{valType:"string",editType:"plot"},hidesources:{valType:"boolean",dflt:!1,editType:"plot"},showlegend:{valType:"boolean",editType:"legend"},colorway:{valType:"colorlist",dflt:T6.defaults,editType:"calc"},datarevision:{valType:"any",editType:"calc"},uirevision:{valType:"any",editType:"none"},editrevision:{valType:"any",editType:"none"},selectionrevision:{valType:"any",editType:"none"},template:{valType:"any",editType:"calc"},newshape:Dre.newshape,activeshape:Dre.activeshape,newselection:zre.newselection,activeselection:zre.activeselection,meta:{valType:"any",arrayOk:!0,editType:"plot"},transition:Fre({},Btt.transition,{editType:"none"})}});var Ore=Ll(()=>{});var Utt={};var Bre=Ll(()=>{Ore()});var ba=ye(qs=>{"use strict";var l3=G1(),Nre=g6(),Ure=kq(),Vtt=gy(),Htt=DS().addStyleRule,Vre=no(),Gtt=vl(),jtt=s3(),Wtt=Vre.extendFlat,Fq=Vre.extendDeepAll;qs.modules={};qs.allCategories={};qs.allTypes=[];qs.subplotsRegistry={};qs.componentsRegistry={};qs.layoutArrayContainers=[];qs.layoutArrayRegexes=[];qs.traceLayoutAttributes={};qs.localeRegistry={};qs.apiMethodRegistry={};qs.collectableSubplotTypes=null;qs.register=function(t){if(qs.collectableSubplotTypes=null,t)t&&!Array.isArray(t)&&(t=[t]);else throw new Error("No argument passed to Plotly.register.");for(var r=0;r{"use strict";var $tt=e3().timeFormat,Qre=uo(),qq=G1(),X1=r3().mod,f3=es(),_0=f3.BADNUM,wp=f3.ONEDAY,FS=f3.ONEHOUR,Z1=f3.ONEMIN,c3=f3.ONESEC,qS=f3.EPOCHJD,my=ba(),Zre=e3().utcFormat,Qtt=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\d)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,ert=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\di?)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,Xre=new Date().getFullYear()-70;function yy(e){return e&&my.componentsRegistry.calendars&&typeof e=="string"&&e!=="gregorian"}Yf.dateTick0=function(e,t){var r=trt(e,!!t);if(t<2)return r;var n=Yf.dateTime2ms(r,e);return n+=wp*(t-1),Yf.ms2DateTime(n,0,e)};function trt(e,t){return yy(e)?t?my.getComponentMethod("calendars","CANONICAL_SUNDAY")[e]:my.getComponentMethod("calendars","CANONICAL_TICK")[e]:t?"2000-01-02":"2000-01-01"}Yf.dfltRange=function(e){return yy(e)?my.getComponentMethod("calendars","DFLTRANGE")[e]:["2000-01-01","2001-01-01"]};Yf.isJSDate=function(e){return typeof e=="object"&&e!==null&&typeof e.getTime=="function"};var M6,E6;Yf.dateTime2ms=function(e,t){if(Yf.isJSDate(e)){var r=e.getTimezoneOffset()*Z1,n=(e.getUTCMinutes()-e.getMinutes())*Z1+(e.getUTCSeconds()-e.getSeconds())*c3+(e.getUTCMilliseconds()-e.getMilliseconds());if(n){var i=3*Z1;r=r-i/2+X1(n-r+i/2,i)}return e=Number(e)-r,e>=M6&&e<=E6?e:_0}if(typeof e!="string"&&typeof e!="number")return _0;e=String(e);var a=yy(t),o=e.charAt(0);a&&(o==="G"||o==="g")&&(e=e.substr(1),t="");var s=a&&t.substr(0,7)==="chinese",l=e.match(s?ert:Qtt);if(!l)return _0;var u=l[1],c=l[3]||"1",f=Number(l[5]||1),h=Number(l[7]||0),d=Number(l[9]||0),v=Number(l[11]||0);if(a){if(u.length===2)return _0;u=Number(u);var x;try{var b=my.getComponentMethod("calendars","getCal")(t);if(s){var p=c.charAt(c.length-1)==="i";c=parseInt(c,10),x=b.newDate(u,b.toMonthIndex(u,c,p),f)}else x=b.newDate(u,Number(c),f)}catch(k){return _0}return x?(x.toJD()-qS)*wp+h*FS+d*Z1+v*c3:_0}u.length===2?u=(Number(u)+2e3-Xre)%100+Xre:u=Number(u),c-=1;var E=new Date(Date.UTC(2e3,c,f,h,d));return E.setUTCFullYear(u),E.getUTCMonth()!==c||E.getUTCDate()!==f?_0:E.getTime()+v*c3};M6=Yf.MIN_MS=Yf.dateTime2ms("-9999");E6=Yf.MAX_MS=Yf.dateTime2ms("9999-12-31 23:59:59.9999");Yf.isDateTime=function(e,t){return Yf.dateTime2ms(e,t)!==_0};function u3(e,t){return String(e+Math.pow(10,t)).substr(1)}var S6=90*wp,Yre=3*FS,Kre=5*Z1;Yf.ms2DateTime=function(e,t,r){if(typeof e!="number"||!(e>=M6&&e<=E6))return _0;t||(t=0);var n=Math.floor(X1(e+.05,1)*10),i=Math.round(e-n/10),a,o,s,l,u,c;if(yy(r)){var f=Math.floor(i/wp)+qS,h=Math.floor(X1(e,wp));try{a=my.getComponentMethod("calendars","getCal")(r).fromJD(f).formatDate("yyyy-mm-dd")}catch(d){a=Zre("G%Y-%m-%d")(new Date(i))}if(a.charAt(0)==="-")for(;a.length<11;)a="-0"+a.substr(1);else for(;a.length<10;)a="0"+a;o=t=M6+wp&&e<=E6-wp))return _0;var t=Math.floor(X1(e+.05,1)*10),r=new Date(Math.round(e-t/10)),n=$tt("%Y-%m-%d")(r),i=r.getHours(),a=r.getMinutes(),o=r.getSeconds(),s=r.getUTCMilliseconds()*10+t;return eie(n,i,a,o,s)};function eie(e,t,r,n,i){if((t||r||n||i)&&(e+=" "+u3(t,2)+":"+u3(r,2),(n||i)&&(e+=":"+u3(n,2),i))){for(var a=4;i%10===0;)a-=1,i/=10;e+="."+u3(i,a)}return e}Yf.cleanDate=function(e,t,r){if(e===_0)return t;if(Yf.isJSDate(e)||typeof e=="number"&&isFinite(e)){if(yy(r))return qq.error("JS Dates and milliseconds are incompatible with world calendars",e),t;if(e=Yf.ms2DateTimeLocal(+e),!e&&t!==void 0)return t}else if(!Yf.isDateTime(e,r))return qq.error("unrecognized date",e),t;return e};var rrt=/%\d?f/g,irt=/%h/g,nrt={1:"1",2:"1",3:"2",4:"2"};function Jre(e,t,r,n){e=e.replace(rrt,function(a){var o=Math.min(+a.charAt(1)||6,6),s=(t/1e3%1+2).toFixed(o).substr(2).replace(/0+$/,"")||"0";return s});var i=new Date(Math.floor(t+.05));if(e=e.replace(irt,function(){return nrt[r("%q")(i)]}),yy(n))try{e=my.getComponentMethod("calendars","worldCalFmt")(e,t,n)}catch(a){return"Invalid"}return r(e)(i)}var art=[59,59.9,59.99,59.999,59.9999];function ort(e,t){var r=X1(e+.05,wp),n=u3(Math.floor(r/FS),2)+":"+u3(X1(Math.floor(r/Z1),60),2);if(t!=="M"){Qre(t)||(t=0);var i=Math.min(X1(e/c3,60),art[t]),a=(100+i).toFixed(t).substr(1);t>0&&(a=a.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+a}return n}Yf.formatDate=function(e,t,r,n,i,a){if(i=yy(i)&&i,!t)if(r==="y")t=a.year;else if(r==="m")t=a.month;else if(r==="d")t=a.dayMonth+` +`+a.year;else return ort(e,r)+` +`+Jre(a.dayMonthYear,e,n,i);return Jre(t,e,n,i)};var $re=3*wp;Yf.incrementMonth=function(e,t,r){r=yy(r)&&r;var n=X1(e,wp);if(e=Math.round(e-n),r)try{var i=Math.round(e/wp)+qS,a=my.getComponentMethod("calendars","getCal")(r),o=a.fromJD(i);return t%12?a.add(o,t,"m"):a.add(o,t/12,"y"),(o.toJD()-qS)*wp+n}catch(l){qq.error("invalid ms "+e+" in calendar "+r)}var s=new Date(e+$re);return s.setUTCMonth(s.getUTCMonth()+t)+n-$re};Yf.findExactDates=function(e,t){for(var r=0,n=0,i=0,a=0,o,s,l=yy(t)&&my.getComponentMethod("calendars","getCal")(t),u=0;u{"use strict";rie.exports=function(t){return t}});var k6=ye(_y=>{"use strict";var srt=uo(),lrt=G1(),urt=OS(),crt=es().BADNUM,Oq=1e-9;_y.findBin=function(e,t,r){if(srt(t.start))return r?Math.ceil((e-t.start)/t.size-Oq)-1:Math.floor((e-t.start)/t.size+Oq);var n=0,i=t.length,a=0,o=i>1?(t[i-1]-t[0])/(i-1):1,s,l;for(o>=0?l=r?frt:hrt:l=r?vrt:drt,e+=o*Oq*(r?-1:1)*(o>=0?1:-1);n90&&lrt.log("Long binary search..."),n-1};function frt(e,t){return et}function vrt(e,t){return e>=t}_y.sorterAsc=function(e,t){return e-t};_y.sorterDes=function(e,t){return t-e};_y.distinctVals=function(e){var t=e.slice();t.sort(_y.sorterAsc);var r;for(r=t.length-1;r>-1&&t[r]===crt;r--);for(var n=t[r]-t[0]||1,i=n/(r||1)/1e4,a=[],o,s=0;s<=r;s++){var l=t[s],u=l-o;o===void 0?(a.push(l),o=l):u>i&&(n=Math.min(n,u),a.push(l),o=l)}return{vals:a,minDiff:n}};_y.roundUp=function(e,t,r){for(var n=0,i=t.length-1,a,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;n0&&(n=1),r&&n)return e.sort(t)}return n?e:e.reverse()};_y.findIndexOfMin=function(e,t){t=t||urt;for(var r=1/0,n,i=0;i{"use strict";iie.exports=function(t){return Object.keys(t).sort()}});var nie=ye(Kf=>{"use strict";var BS=uo(),prt=vv().isArrayOrTypedArray;Kf.aggNums=function(e,t,r,n){var i,a;if((!n||n>r.length)&&(n=r.length),BS(t)||(t=!1),prt(r[0])){for(a=new Array(n),i=0;ie.length-1)return e[e.length-1];var r=t%1;return r*e[Math.ceil(t)]+(1-r)*e[Math.floor(t)]}});var uie=ye((htr,lie)=>{"use strict";var aie=r3(),Bq=aie.mod,grt=aie.modHalf,NS=Math.PI,K1=2*NS;function mrt(e){return e/180*NS}function yrt(e){return e/NS*180}function Nq(e){return Math.abs(e[1]-e[0])>K1-1e-14}function oie(e,t){return grt(t-e,K1)}function _rt(e,t){return Math.abs(oie(e,t))}function sie(e,t){if(Nq(t))return!0;var r,n;t[0]n&&(n+=K1);var i=Bq(e,K1),a=i+K1;return i>=r&&i<=n||a>=r&&a<=n}function xrt(e,t,r,n){if(!sie(t,n))return!1;var i,a;return r[0]=i&&e<=a}function Uq(e,t,r,n,i,a,o){i=i||0,a=a||0;var s=Nq([r,n]),l,u,c,f,h;s?(l=0,u=NS,c=K1):r{"use strict";fb.isLeftAnchor=function(t){return t.xanchor==="left"||t.xanchor==="auto"&&t.x<=1/3};fb.isCenterAnchor=function(t){return t.xanchor==="center"||t.xanchor==="auto"&&t.x>1/3&&t.x<2/3};fb.isRightAnchor=function(t){return t.xanchor==="right"||t.xanchor==="auto"&&t.x>=2/3};fb.isTopAnchor=function(t){return t.yanchor==="top"||t.yanchor==="auto"&&t.y>=2/3};fb.isMiddleAnchor=function(t){return t.yanchor==="middle"||t.yanchor==="auto"&&t.y>1/3&&t.y<2/3};fb.isBottomAnchor=function(t){return t.yanchor==="bottom"||t.yanchor==="auto"&&t.y<=1/3}});var die=ye(hb=>{"use strict";var Vq=r3().mod;hb.segmentsIntersect=hie;function hie(e,t,r,n,i,a,o,s){var l=r-e,u=i-e,c=o-i,f=n-t,h=a-t,d=s-a,v=l*d-c*f;if(v===0)return null;var x=(u*d-c*h)/v,b=(u*f-l*h)/v;return b<0||b>1||x<0||x>1?null:{x:e+l*x,y:t+f*x}}hb.segmentDistance=function(t,r,n,i,a,o,s,l){if(hie(t,r,n,i,a,o,s,l))return 0;var u=n-t,c=i-r,f=s-a,h=l-o,d=u*u+c*c,v=f*f+h*h,x=Math.min(C6(u,c,d,a-t,o-r),C6(u,c,d,s-t,l-r),C6(f,h,v,t-a,r-o),C6(f,h,v,n-a,i-o));return Math.sqrt(x)};function C6(e,t,r,n,i){var a=n*e+i*t;if(a<0)return n*n+i*i;if(a>r){var o=n-e,s=i-t;return o*o+s*s}else{var l=n*t-i*e;return l*l/r}}var L6,Hq,fie;hb.getTextLocation=function(t,r,n,i){if((t!==Hq||i!==fie)&&(L6={},Hq=t,fie=i),L6[n])return L6[n];var a=t.getPointAtLength(Vq(n-i/2,r)),o=t.getPointAtLength(Vq(n+i/2,r)),s=Math.atan((o.y-a.y)/(o.x-a.x)),l=t.getPointAtLength(Vq(n,r)),u=(l.x*4+a.x+o.x)/6,c=(l.y*4+a.y+o.y)/6,f={x:u,y:c,theta:s};return L6[n]=f,f};hb.clearLocationCache=function(){Hq=null};hb.getVisibleSegment=function(t,r,n){var i=r.left,a=r.right,o=r.top,s=r.bottom,l=0,u=t.getTotalLength(),c=u,f,h;function d(x){var b=t.getPointAtLength(x);x===0?f=b:x===u&&(h=b);var p=b.xa?b.x-a:0,E=b.ys?b.y-s:0;return Math.sqrt(p*p+E*E)}for(var v=d(l);v;){if(l+=v+n,l>c)return;v=d(l)}for(v=d(c);v;){if(c-=v+n,l>c)return;v=d(c)}return{min:l,max:c,len:c-l,total:u,isClosed:l===0&&c===u&&Math.abs(f.x-h.x)<.1&&Math.abs(f.y-h.y)<.1}};hb.findPointOnPath=function(t,r,n,i){i=i||{};for(var a=i.pathLength||t.getTotalLength(),o=i.tolerance||.001,s=i.iterationLimit||30,l=t.getPointAtLength(0)[n]>t.getPointAtLength(a)[n]?-1:1,u=0,c=0,f=a,h,d,v;u0?f=h:c=h,u++}return d}});var P6=ye(US=>{"use strict";var xy={};US.throttle=function(t,r,n){var i=xy[t],a=Date.now();if(!i){for(var o in xy)xy[o].tsi.ts+r){s();return}i.timer=setTimeout(function(){s(),i.timer=null},r)};US.done=function(e){var t=xy[e];return!t||!t.timer?Promise.resolve():new Promise(function(r){var n=t.onDone;t.onDone=function(){n&&n(),r(),t.onDone=null}})};US.clear=function(e){if(e)vie(xy[e]),delete xy[e];else for(var t in xy)US.clear(t)};function vie(e){e&&e.timer!==null&&(clearTimeout(e.timer),e.timer=null)}});var gie=ye((gtr,pie)=>{"use strict";pie.exports=function(t){t._responsiveChartHandler&&(window.removeEventListener("resize",t._responsiveChartHandler),delete t._responsiveChartHandler)}});var mie=ye((mtr,I6)=>{"use strict";I6.exports=Gq;I6.exports.isMobile=Gq;I6.exports.default=Gq;var Art=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,Srt=/CrOS/,Mrt=/android|ipad|playbook|silk/i;function Gq(e){e||(e={});let t=e.ua;if(!t&&typeof navigator!="undefined"&&(t=navigator.userAgent),t&&t.headers&&typeof t.headers["user-agent"]=="string"&&(t=t.headers["user-agent"]),typeof t!="string")return!1;let r=Art.test(t)&&!Srt.test(t)||!!e.tablet&&Mrt.test(t);return!r&&e.tablet&&e.featureDetect&&navigator&&navigator.maxTouchPoints>1&&t.indexOf("Macintosh")!==-1&&t.indexOf("Safari")!==-1&&(r=!0),r}});var _ie=ye((ytr,yie)=>{"use strict";var Ert=uo(),krt=mie();yie.exports=function(t){var r;if(t&&t.hasOwnProperty("userAgent")?r=t.userAgent:r=Crt(),typeof r!="string")return!0;var n=krt({ua:{headers:{"user-agent":r}},tablet:!0,featureDetect:!1});if(!n)for(var i=r.split(" "),a=1;a-1;s--){var l=i[s];if(l.substr(0,8)==="Version/"){var u=l.substr(8).split(".")[0];if(Ert(u)&&(u=+u),u>=13)return!0}}}return n};function Crt(){var e;return typeof navigator!="undefined"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers["user-agent"]=="string"&&(e=e.headers["user-agent"]),e}});var bie=ye((_tr,xie)=>{"use strict";var Lrt=xa();xie.exports=function(t,r,n){var i=t.selectAll("g."+n.replace(/\s/g,".")).data(r,function(o){return o[0].trace.uid});i.exit().remove(),i.enter().append("g").attr("class",n),i.order();var a=t.classed("rangeplot")?"nodeRangePlot3":"node3";return i.each(function(o){o[0][a]=Lrt.select(this)}),i}});var Tie=ye((xtr,wie)=>{"use strict";var Prt=ba();wie.exports=function(t,r){for(var n=t._context.locale,i=0;i<2;i++){for(var a=t._context.locales,o=0;o<2;o++){var s=(a[n]||{}).dictionary;if(s){var l=s[r];if(l)return l}a=Prt.localeRegistry}var u=n.split("-")[0];if(u===n)break;n=u}return r}});var jq=ye((btr,Aie)=>{"use strict";Aie.exports=function(t){for(var r={},n=[],i=0,a=0;a{"use strict";Sie.exports=function(t){for(var r=Drt(t)?Rrt:Irt,n=[],i=0;i{"use strict";Eie.exports=function(t,r){if(!r)return t;var n=1/Math.abs(r),i=n>1?(n*t+n*r)/n:t+r,a=String(i).length;if(a>16){var o=String(r).length,s=String(t).length;if(a>=s+o){var l=parseFloat(i).toPrecision(12);l.indexOf("e+")===-1&&(i=+l)}}return i}});var Lie=ye((Atr,Cie)=>{"use strict";var zrt=uo(),Frt=es().BADNUM,qrt=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;Cie.exports=function(t){return typeof t=="string"&&(t=t.replace(qrt,"")),zrt(t)?Number(t):Frt}});var Mr=ye((Str,Hie)=>{"use strict";var VS=xa(),Ort=e3().utcFormat,Brt=vq().format,Fie=uo(),qie=es(),Oie=qie.FP_SAFE,Nrt=-Oie,Pie=qie.BADNUM,li=Hie.exports={};li.adjustFormat=function(t){return!t||/^\d[.]\df/.test(t)||/[.]\d%/.test(t)?t:t==="0.f"?"~f":/^\d%/.test(t)?"~%":/^\ds/.test(t)?"~s":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?"~"+t:t};var Iie={};li.warnBadFormat=function(e){var t=String(e);Iie[t]||(Iie[t]=1,li.warn('encountered bad format: "'+t+'"'))};li.noFormat=function(e){return String(e)};li.numberFormat=function(e){var t;try{t=Brt(li.adjustFormat(e))}catch(r){return li.warnBadFormat(e),li.noFormat}return t};li.nestedProperty=ES();li.keyedContainer=Tee();li.relativeAttr=See();li.isPlainObject=gy();li.toLogRange=u6();li.relinkPrivateKeys=Cee();var J1=vv();li.isArrayBuffer=J1.isArrayBuffer;li.isTypedArray=J1.isTypedArray;li.isArrayOrTypedArray=J1.isArrayOrTypedArray;li.isArray1D=J1.isArray1D;li.ensureArray=J1.ensureArray;li.concat=J1.concat;li.maxRowLength=J1.maxRowLength;li.minRowLength=J1.minRowLength;var Bie=r3();li.mod=Bie.mod;li.modHalf=Bie.modHalf;var $1=Xee();li.valObjectMeta=$1.valObjectMeta;li.coerce=$1.coerce;li.coerce2=$1.coerce2;li.coerceFont=$1.coerceFont;li.coercePattern=$1.coercePattern;li.coerceHoverinfo=$1.coerceHoverinfo;li.coerceSelectionMarkerOpacity=$1.coerceSelectionMarkerOpacity;li.validate=$1.validate;var Wp=tie();li.dateTime2ms=Wp.dateTime2ms;li.isDateTime=Wp.isDateTime;li.ms2DateTime=Wp.ms2DateTime;li.ms2DateTimeLocal=Wp.ms2DateTimeLocal;li.cleanDate=Wp.cleanDate;li.isJSDate=Wp.isJSDate;li.formatDate=Wp.formatDate;li.incrementMonth=Wp.incrementMonth;li.dateTick0=Wp.dateTick0;li.dfltRange=Wp.dfltRange;li.findExactDates=Wp.findExactDates;li.MIN_MS=Wp.MIN_MS;li.MAX_MS=Wp.MAX_MS;var db=k6();li.findBin=db.findBin;li.sorterAsc=db.sorterAsc;li.sorterDes=db.sorterDes;li.distinctVals=db.distinctVals;li.roundUp=db.roundUp;li.sort=db.sort;li.findIndexOfMin=db.findIndexOfMin;li.sortObjectKeys=Y1();var by=nie();li.aggNums=by.aggNums;li.len=by.len;li.mean=by.mean;li.geometricMean=by.geometricMean;li.median=by.median;li.midRange=by.midRange;li.variance=by.variance;li.stdev=by.stdev;li.interp=by.interp;var yg=m6();li.init2dArray=yg.init2dArray;li.transposeRagged=yg.transposeRagged;li.dot=yg.dot;li.translationMatrix=yg.translationMatrix;li.rotationMatrix=yg.rotationMatrix;li.rotationXYMatrix=yg.rotationXYMatrix;li.apply3DTransform=yg.apply3DTransform;li.apply2DTransform=yg.apply2DTransform;li.apply2DTransform2=yg.apply2DTransform2;li.convertCssMatrix=yg.convertCssMatrix;li.inverseTransformMatrix=yg.inverseTransformMatrix;var vm=uie();li.deg2rad=vm.deg2rad;li.rad2deg=vm.rad2deg;li.angleDelta=vm.angleDelta;li.angleDist=vm.angleDist;li.isFullCircle=vm.isFullCircle;li.isAngleInsideSector=vm.isAngleInsideSector;li.isPtInsideSector=vm.isPtInsideSector;li.pathArc=vm.pathArc;li.pathSector=vm.pathSector;li.pathAnnulus=vm.pathAnnulus;var d3=cie();li.isLeftAnchor=d3.isLeftAnchor;li.isCenterAnchor=d3.isCenterAnchor;li.isRightAnchor=d3.isRightAnchor;li.isTopAnchor=d3.isTopAnchor;li.isMiddleAnchor=d3.isMiddleAnchor;li.isBottomAnchor=d3.isBottomAnchor;var v3=die();li.segmentsIntersect=v3.segmentsIntersect;li.segmentDistance=v3.segmentDistance;li.getTextLocation=v3.getTextLocation;li.clearLocationCache=v3.clearLocationCache;li.getVisibleSegment=v3.getVisibleSegment;li.findPointOnPath=v3.findPointOnPath;var z6=no();li.extendFlat=z6.extendFlat;li.extendDeep=z6.extendDeep;li.extendDeepAll=z6.extendDeepAll;li.extendDeepNoArrays=z6.extendDeepNoArrays;var Wq=G1();li.log=Wq.log;li.warn=Wq.warn;li.error=Wq.error;var Urt=n3();li.counterRegex=Urt.counter;var Zq=P6();li.throttle=Zq.throttle;li.throttleDone=Zq.done;li.clearThrottle=Zq.clear;var _g=DS();li.getGraphDiv=_g.getGraphDiv;li.isPlotDiv=_g.isPlotDiv;li.removeElement=_g.removeElement;li.addStyleRule=_g.addStyleRule;li.addRelatedStyleRule=_g.addRelatedStyleRule;li.deleteRelatedStyleRule=_g.deleteRelatedStyleRule;li.setStyleOnHover=_g.setStyleOnHover;li.getFullTransformMatrix=_g.getFullTransformMatrix;li.getElementTransformMatrix=_g.getElementTransformMatrix;li.getElementAndAncestors=_g.getElementAndAncestors;li.equalDomRects=_g.equalDomRects;li.clearResponsive=gie();li.preserveDrawingBuffer=_ie();li.makeTraceGroups=bie();li._=Tie();li.notifier=Sq();li.filterUnique=jq();li.filterVisible=Mie();li.pushUnique=kq();li.increment=kie();li.cleanNumber=Lie();li.ensureNumber=function(t){return Fie(t)?(t=Number(t),t>Oie||t=t?!1:Fie(e)&&e>=0&&e%1===0};li.noop=g6();li.identity=OS();li.repeat=function(e,t){for(var r=new Array(t),n=0;nr?Math.max(r,Math.min(t,e)):Math.max(t,Math.min(r,e))};li.bBoxIntersect=function(e,t,r){return r=r||0,e.left<=t.right+r&&t.left<=e.right+r&&e.top<=t.bottom+r&&t.top<=e.bottom+r};li.simpleMap=function(e,t,r,n,i){for(var a=e.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(li.warn("randstr failed uniqueness"),o):e(t,r,n,(i||0)+1):o};li.OptionControl=function(e,t){e||(e={}),t||(t="opt");var r={};return r.optionList=[],r._newoption=function(n){n[t]=e,r[n.name]=n,r.optionList.push(n)},r["_"+t]=e,r};li.smooth=function(e,t){if(t=Math.round(t)||0,t<2)return e;var r=e.length,n=2*r,i=2*t-1,a=new Array(i),o=new Array(r),s,l,u,c;for(s=0;s=n&&(u-=n*Math.floor(u/n)),u<0?u=-1-u:u>=r&&(u=n-1-u),c+=e[u]*a[l];o[s]=c}return o};li.syncOrAsync=function(e,t,r){var n,i;function a(){return li.syncOrAsync(e,t,r)}for(;e.length;)if(i=e.splice(0,1)[0],n=i(t),n&&n.then)return n.then(a);return r&&r(t)};li.stripTrailingSlash=function(e){return e.substr(-1)==="/"?e.substr(0,e.length-1):e};li.noneOrAll=function(e,t,r){if(e){var n=!1,i=!0,a,o;for(a=0;a0?i:0})};li.fillArray=function(e,t,r,n){if(n=n||li.identity,li.isArrayOrTypedArray(e))for(var i=0;i1?i+o[1]:"";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,"$1"+a+"$2");return s+l};li.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var Vie=/^\w*$/;li.templateString=function(e,t){var r={};return e.replace(li.TEMPLATE_STRING_REGEX,function(n,i){var a;return Vie.test(i)?a=t[i]:(r[i]=r[i]||li.nestedProperty(t,i).get,a=r[i](!0)),a!==void 0?a:""})};var Zrt={max:10,count:0,name:"hovertemplate"};li.hovertemplateString=function(){return Xq.apply(Zrt,arguments)};var Xrt={max:10,count:0,name:"texttemplate"};li.texttemplateString=function(){return Xq.apply(Xrt,arguments)};var Yrt=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/;function Krt(e){var t=e.match(Yrt);return t?{key:t[1],op:t[2],number:Number(t[3])}:{key:e,op:null,number:null}}var Jrt={max:10,count:0,name:"texttemplate",parseMultDiv:!0};li.texttemplateStringForShapes=function(){return Xq.apply(Jrt,arguments)};var Rie=/^[:|\|]/;function Xq(e,t,r){var n=this,i=arguments;return t||(t={}),e.replace(li.TEMPLATE_STRING_REGEX,function(a,o,s){var l=o==="xother"||o==="yother",u=o==="_xother"||o==="_yother",c=o==="_xother_"||o==="_yother_",f=o==="xother_"||o==="yother_",h=l||u||f||c,d=o;(u||c)&&(d=d.substring(1)),(f||c)&&(d=d.substring(0,d.length-1));var v=null,x=null;if(n.parseMultDiv){var b=Krt(d);d=b.key,v=b.op,x=b.number}var p;if(h){if(p=t[d],p===void 0)return""}else{var E,k;for(k=3;k=D6&&o<=Die,u=s>=D6&&s<=Die;if(l&&(n=10*n+o-D6),u&&(i=10*i+s-D6),!l||!u){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var h3=2e9;li.seedPseudoRandom=function(){h3=2e9};li.pseudoRandom=function(){var e=h3;return h3=(69069*h3+1)%4294967296,Math.abs(h3-e)<429496729?li.pseudoRandom():h3/4294967296};li.fillText=function(e,t,r){var n=Array.isArray(r)?function(o){r.push(o)}:function(o){r.text=o},i=li.extractOption(e,t,"htx","hovertext");if(li.isValidTextValue(i))return n(i);var a=li.extractOption(e,t,"tx","text");if(li.isValidTextValue(a))return n(a)};li.isValidTextValue=function(e){return e||e===0};li.formatPercent=function(e,t){t=t||0;for(var r=(Math.round(100*e*Math.pow(10,t))*Math.pow(.1,t)).toFixed(t)+"%",n=0;n1&&(u=1):u=0,li.strTranslate(i-u*(r+o),a-u*(n+s))+li.strScale(u)+(l?"rotate("+l+(t?"":" "+r+" "+n)+")":"")};li.setTransormAndDisplay=function(e,t){e.attr("transform",li.getTextTransform(t)),e.style("display",t.scale?null:"none")};li.ensureUniformFontSize=function(e,t){var r=li.extendFlat({},t);return r.size=Math.max(t.size,e._fullLayout.uniformtext.minsize||0),r};li.join2=function(e,t,r){var n=e.length;return n>1?e.slice(0,-1).join(t)+r+e[n-1]:e.join(t)};li.bigFont=function(e){return Math.round(1.2*e)};var zie=li.getFirefoxVersion(),$rt=zie!==null&&zie<86;li.getPositionFromD3Event=function(){return $rt?[VS.event.layerX,VS.event.layerY]:[VS.event.offsetX,VS.event.offsetY]}});var Wie=ye(()=>{"use strict";var Qrt=Mr(),Gie={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(Yq in Gie)jie=Yq.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier"),Qrt.addStyleRule(jie,Gie[Yq]);var jie,Yq});var Kq=ye((ktr,Zie)=>{Zie.exports=!0});var $q=ye((Ctr,Xie)=>{"use strict";var eit=Kq(),Jq;typeof window.matchMedia=="function"?Jq=!window.matchMedia("(hover: none)").matches:Jq=eit;Xie.exports=Jq});var vb=ye((Ltr,Qq)=>{"use strict";var p3=typeof Reflect=="object"?Reflect:null,Yie=p3&&typeof p3.apply=="function"?p3.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},F6;p3&&typeof p3.ownKeys=="function"?F6=p3.ownKeys:Object.getOwnPropertySymbols?F6=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:F6=function(t){return Object.getOwnPropertyNames(t)};function tit(e){console&&console.warn&&console.warn(e)}var Jie=Number.isNaN||function(t){return t!==t};function Tc(){Tc.init.call(this)}Qq.exports=Tc;Qq.exports.once=ait;Tc.EventEmitter=Tc;Tc.prototype._events=void 0;Tc.prototype._eventsCount=0;Tc.prototype._maxListeners=void 0;var Kie=10;function q6(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Tc,"defaultMaxListeners",{enumerable:!0,get:function(){return Kie},set:function(e){if(typeof e!="number"||e<0||Jie(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Kie=e}});Tc.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Tc.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||Jie(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function $ie(e){return e._maxListeners===void 0?Tc.defaultMaxListeners:e._maxListeners}Tc.prototype.getMaxListeners=function(){return $ie(this)};Tc.prototype.emit=function(t){for(var r=[],n=1;n0&&(o=r[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[t];if(l===void 0)return!1;if(typeof l=="function")Yie(l,this,r);else for(var u=l.length,c=ine(l,u),n=0;n0&&o.length>i&&!o.warned){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,tit(s)}return e}Tc.prototype.addListener=function(t,r){return Qie(this,t,r,!1)};Tc.prototype.on=Tc.prototype.addListener;Tc.prototype.prependListener=function(t,r){return Qie(this,t,r,!0)};function rit(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function ene(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=rit.bind(n);return i.listener=r,n.wrapFn=i,i}Tc.prototype.once=function(t,r){return q6(r),this.on(t,ene(this,t,r)),this};Tc.prototype.prependOnceListener=function(t,r){return q6(r),this.prependListener(t,ene(this,t,r)),this};Tc.prototype.removeListener=function(t,r){var n,i,a,o,s;if(q6(r),i=this._events,i===void 0)return this;if(n=i[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(a=-1,o=n.length-1;o>=0;o--)if(n[o]===r||n[o].listener===r){s=n[o].listener,a=o;break}if(a<0)return this;a===0?n.shift():iit(n,a),n.length===1&&(i[t]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",t,s||r)}return this};Tc.prototype.off=Tc.prototype.removeListener;Tc.prototype.removeAllListeners=function(t){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var a=Object.keys(n),o;for(i=0;i=0;i--)this.removeListener(t,r[i]);return this};function tne(e,t,r){var n=e._events;if(n===void 0)return[];var i=n[t];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?nit(i):ine(i,i.length)}Tc.prototype.listeners=function(t){return tne(this,t,!0)};Tc.prototype.rawListeners=function(t){return tne(this,t,!1)};Tc.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):rne.call(e,t)};Tc.prototype.listenerCount=rne;function rne(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Tc.prototype.eventNames=function(){return this._eventsCount>0?F6(this._events):[]};function ine(e,t){for(var r=new Array(t),n=0;n{"use strict";var eO=vb().EventEmitter,sit={init:function(e){if(e._ev instanceof eO)return e;var t=new eO,r=new eO;return e._ev=t,e._internalEv=r,e.on=t.on.bind(t),e.once=t.once.bind(t),e.removeListener=t.removeListener.bind(t),e.removeAllListeners=t.removeAllListeners.bind(t),e._internalOn=r.on.bind(r),e._internalOnce=r.once.bind(r),e._removeInternalListener=r.removeListener.bind(r),e._removeAllInternalListeners=r.removeAllListeners.bind(r),e.emit=function(n,i){t.emit(n,i),r.emit(n,i)},e},triggerHandler:function(e,t,r){var n,i=e._ev;if(!i)return;var a=i._events[t];if(!a)return;function o(l){if(l.listener){if(i.removeListener(t,l.listener),!l.fired)return l.fired=!0,l.listener.apply(i,[r])}else return l.apply(i,[r])}a=Array.isArray(a)?a:[a];var s;for(s=0;s{"use strict";var one=Mr(),lit=ub().dfltConfig;function uit(e,t){for(var r=[],n,i=0;ilit.queueLength&&(e.undoQueue.queue.shift(),e.undoQueue.index--)};wy.startSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!0,e.undoQueue.beginSequence=!0};wy.stopSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!1,e.undoQueue.beginSequence=!1};wy.undo=function(t){var r,n;if(!(t.undoQueue===void 0||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n=t.undoQueue.queue.length)){for(r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n{"use strict";une.exports={_isLinkedToArray:"frames_entry",group:{valType:"string"},name:{valType:"string"},traces:{valType:"any"},baseframe:{valType:"string"},data:{valType:"any"},layout:{valType:"any"}}});var _3=ye(Bh=>{"use strict";var x0=ba(),HS=Mr(),B6=vl(),rO=s3(),cit=tO(),fit=zS(),hit=ub().configAttributes,cne=Bu(),xg=HS.extendDeepAll,m3=HS.isPlainObject,dit=HS.isArrayOrTypedArray,N6=HS.nestedProperty,vit=HS.valObjectMeta,iO="_isSubplotObj",U6="_isLinkedToArray",pit="_arrayAttrRegexps",hne="_deprecated",nO=[iO,U6,pit,hne];Bh.IS_SUBPLOT_OBJ=iO;Bh.IS_LINKED_TO_ARRAY=U6;Bh.DEPRECATED=hne;Bh.UNDERSCORE_ATTRS=nO;Bh.get=function(){var e={};return x0.allTypes.forEach(function(t){e[t]=mit(t)}),{defs:{valObjects:vit,metaKeys:nO.concat(["description","role","editType","impliedEdits"]),editType:{traces:cne.traces,layout:cne.layout},impliedEdits:{}},traces:e,layout:yit(),frames:_it(),animation:y3(fit),config:y3(hit)}};Bh.crawl=function(e,t,r,n){var i=r||0;n=n||"",Object.keys(e).forEach(function(a){var o=e[a];if(nO.indexOf(a)===-1){var s=(n?n+".":"")+a;t(o,a,e,i,s),!Bh.isValObject(o)&&m3(o)&&a!=="impliedEdits"&&Bh.crawl(o,t,i+1,s)}})};Bh.isValObject=function(e){return e&&e.valType!==void 0};Bh.findArrayAttributes=function(e){var t=[],r=[],n=[],i,a;function o(l,u,c,f){r=r.slice(0,f).concat([u]),n=n.slice(0,f).concat([l&&l._isLinkedToArray]);var h=l&&(l.valType==="data_array"||l.arrayOk===!0)&&!(r[f-1]==="colorbar"&&(u==="ticktext"||u==="tickvals"));h&&s(i,0,"")}function s(l,u,c){var f=l[r[u]],h=c+r[u];if(u===r.length-1)dit(f)&&t.push(a+h);else if(n[u]){if(Array.isArray(f))for(var d=0;d=a.length)return!1;if(e.dimensions===2){if(r++,t.length===r)return e;var o=t[r];if(!O6(o))return!1;e=a[i][o]}else e=a[i]}else e=a}}return e}function O6(e){return e===Math.round(e)&&e>=0}function mit(e){var t,r;t=x0.modules[e]._module,r=t.basePlotModule;var n={};n.type=null;var i=xg({},B6),a=xg({},t.attributes);Bh.crawl(a,function(l,u,c,f,h){N6(i,h).set(void 0),l===void 0&&N6(a,h).set(void 0)}),xg(n,i),x0.traceIs(e,"noOpacity")&&delete n.opacity,x0.traceIs(e,"showLegend")||(delete n.showlegend,delete n.legendgroup),x0.traceIs(e,"noHover")&&(delete n.hoverinfo,delete n.hoverlabel),t.selectPoints||delete n.selectedpoints,xg(n,a),r.attributes&&xg(n,r.attributes),n.type=e;var o={meta:t.meta||{},categories:t.categories||{},animatable:!!t.animatable,type:e,attributes:y3(n)};if(t.layoutAttributes){var s={};xg(s,t.layoutAttributes),o.layoutAttributes=y3(s)}return t.animatable||Bh.crawl(o,function(l){Bh.isValObject(l)&&"anim"in l&&delete l.anim}),o}function yit(){var e={},t,r;xg(e,rO);for(t in x0.subplotsRegistry)if(r=x0.subplotsRegistry[t],!!r.layoutAttributes)if(Array.isArray(r.attr))for(var n=0;n{"use strict";var x3=Mr(),Ait=vl(),Q1="templateitemname",aO={name:{valType:"string",editType:"none"}};aO[Q1]={valType:"string",editType:"calc"};pb.templatedArray=function(e,t){return t._isLinkedToArray=e,t.name=aO.name,t[Q1]=aO[Q1],t};pb.traceTemplater=function(e){var t={},r,n;for(r in e)n=e[r],Array.isArray(n)&&n.length&&(t[r]=0);function i(a){r=x3.coerce(a,{},Ait,"type");var o={type:r,_template:null};if(r in t){n=e[r];var s=t[r]%n.length;t[r]++,o._template=n[s]}return o}return{newTrace:i}};pb.newContainer=function(e,t,r){var n=e._template,i=n&&(n[t]||r&&n[r]);x3.isPlainObject(i)||(i=null);var a=e[t]={_template:i};return a};pb.arrayTemplater=function(e,t,r){var n=e._template,i=n&&n[pne(t)],a=n&&n[t];(!Array.isArray(a)||!a.length)&&(a=[]);var o={};function s(u){var c={name:u.name,_input:u},f=c[Q1]=u[Q1];if(!vne(f))return c._template=i,c;for(var h=0;h=n&&(r._input||{})._templateitemname;a&&(i=n);var o=t+"["+i+"]",s;function l(){s={},a&&(s[o]={},s[o][Q1]=a)}l();function u(d,v){s[d]=v}function c(d,v){a?x3.nestedProperty(s[o],d).set(v):s[o+"."+d]=v}function f(){var d=s;return l(),d}function h(d,v){d&&c(d,v);var x=f();for(var b in x)x3.nestedProperty(e,b).set(x[b])}return{modifyBase:u,modifyItem:c,getUpdateObj:f,applyUpdate:h}}});var ad=ye((Ftr,gne)=>{"use strict";var GS=n3().counter;gne.exports={idRegex:{x:GS("x","( domain)?"),y:GS("y","( domain)?")},attrRegex:GS("[xy]axis"),xAxisMatch:GS("xaxis"),yAxisMatch:GS("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*( domain)?$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,HOUR_PATTERN:"hour",WEEKDAY_PATTERN:"day of week",MINDRAG:8,MINZOOM:20,DRAGGERSIZE:20,REDRAWDELAY:50,DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","heatmaplayer","contourcarpetlayer","contourlayer","funnellayer","waterfalllayer","barlayer","carpetlayer","violinlayer","boxlayer","ohlclayer","scattercarpetlayer","scatterlayer"],clipOnAxisFalseQuery:[".scatterlayer",".barlayer",".funnellayer",".waterfalllayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"},zindexSeparator:"z"}});var af=ye(Tp=>{"use strict";var Sit=ba(),oO=ad();Tp.id2name=function(t){if(!(typeof t!="string"||!t.match(oO.AX_ID_PATTERN))){var r=t.split(" ")[0].substr(1);return r==="1"&&(r=""),t.charAt(0)+"axis"+r}};Tp.name2id=function(t){if(t.match(oO.AX_NAME_PATTERN)){var r=t.substr(5);return r==="1"&&(r=""),t.charAt(0)+r}};Tp.cleanId=function(t,r,n){var i=/( domain)$/.test(t);if(!(typeof t!="string"||!t.match(oO.AX_ID_PATTERN))&&!(r&&t.charAt(0)!==r)&&!(i&&!n)){var a=t.split(" ")[0].substr(1).replace(/^0+/,"");return a==="1"&&(a=""),t.charAt(0)+a+(i&&n?" domain":"")}};Tp.list=function(e,t,r){var n=e._fullLayout;if(!n)return[];var i=Tp.listIds(e,t),a=new Array(i.length),o;for(o=0;on?1:-1:+(e.substr(1)||1)-+(t.substr(1)||1)};Tp.ref2id=function(e){return/^[xyz]/.test(e)?e.split(" ")[0]:!1};function mne(e,t){if(t&&t.length){for(var r=0;r{"use strict";function Mit(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".outline-controllers").remove()}function Eit(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".select-outline").remove(),e._fullLayout._outlining=!1}yne.exports={clearOutlineControllers:Mit,clearOutline:Eit}});var V6=ye((Btr,_ne)=>{"use strict";_ne.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}});var kd=ye(G6=>{"use strict";var H6=ba(),Ntr=ad().SUBPLOT_PATTERN;G6.getSubplotCalcData=function(e,t,r){var n=H6.subplotsRegistry[t];if(!n)return[];for(var i=n.attr,a=[],o=0;o{"use strict";var kit=ba(),b3=Mr();gb.manageCommandObserver=function(e,t,r,n){var i={},a=!0;t&&t._commandObserver&&(i=t._commandObserver),i.cache||(i.cache={}),i.lookupTable={};var o=gb.hasSimpleAPICommandBindings(e,r,i.lookupTable);if(t&&t._commandObserver){if(o)return i;if(t._commandObserver.remove)return t._commandObserver.remove(),t._commandObserver=null,i}if(o){xne(e,o,i.cache),i.check=function(){if(a){var c=xne(e,o,i.cache);return c.changed&&n&&i.lookupTable[c.value]!==void 0&&(i.disable(),Promise.resolve(n({value:c.value,type:o.type,prop:o.prop,traces:o.traces,index:i.lookupTable[c.value]})).then(i.enable,i.enable)),c.changed}};for(var s=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],l=0;l0?".":"")+i;b3.isPlainObject(a)?sO(a,t,o,n+1):t(o,i,a)}})}});var Xu=ye((Htr,qne)=>{"use strict";var Lne=xa(),Lit=e3().timeFormatLocale,Pit=vq().formatLocale,jS=uo(),Iit=pq(),bl=ba(),Pne=_3(),Rit=Vs(),Ca=Mr(),Ine=va(),Ane=es().BADNUM,Ap=af(),Dit=e_().clearOutline,zit=V6(),lO=zS(),Fit=tO(),qit=kd().getModuleCalcData,Sne=Ca.relinkPrivateKeys,mb=Ca._,ha=qne.exports={};Ca.extendFlat(ha,bl);ha.attributes=vl();ha.attributes.type.values=ha.allTypes;ha.fontAttrs=Su();ha.layoutAttributes=s3();var W6=Tne();ha.executeAPICommand=W6.executeAPICommand;ha.computeAPICommandBindings=W6.computeAPICommandBindings;ha.manageCommandObserver=W6.manageCommandObserver;ha.hasSimpleAPICommandBindings=W6.hasSimpleAPICommandBindings;ha.redrawText=function(e){return e=Ca.getGraphDiv(e),new Promise(function(t){setTimeout(function(){e._fullLayout&&(bl.getComponentMethod("annotations","draw")(e),bl.getComponentMethod("legend","draw")(e),bl.getComponentMethod("colorbar","draw")(e),t(ha.previousPromises(e)))},300)})};ha.resize=function(e){e=Ca.getGraphDiv(e);var t,r=new Promise(function(n,i){(!e||Ca.isHidden(e))&&i(new Error("Resize must be passed a displayed plot div element.")),e._redrawTimer&&clearTimeout(e._redrawTimer),e._resolveResize&&(t=e._resolveResize),e._resolveResize=n,e._redrawTimer=setTimeout(function(){if(!e.layout||e.layout.width&&e.layout.height||Ca.isHidden(e)){n(e);return}delete e.layout.width,delete e.layout.height;var a=e.changed;e.autoplay=!0,bl.call("relayout",e,{autosize:!0}).then(function(){e.changed=a,e._resolveResize===n&&(delete e._resolveResize,n(e))})},100)});return t&&t(r),r};ha.previousPromises=function(e){if((e._promises||[]).length)return Promise.all(e._promises).then(function(){e._promises=[]})};ha.addLinks=function(e){if(!(!e._context.showLink&&!e._context.showSources)){var t=e._fullLayout,r=Ca.ensureSingle(t._paper,"text","js-plot-link-container",function(l){l.style({"font-family":'"Open Sans", Arial, sans-serif',"font-size":"12px",fill:Ine.defaultLine,"pointer-events":"all"}).each(function(){var u=Lne.select(this);u.append("tspan").classed("js-link-to-tool",!0),u.append("tspan").classed("js-link-spacer",!0),u.append("tspan").classed("js-sourcelinks",!0)})}),n=r.node(),i={y:t._paper.attr("height")-9};document.body.contains(n)&&n.getComputedTextLength()>=t.width-20?(i["text-anchor"]="start",i.x=5):(i["text-anchor"]="end",i.x=t._paper.attr("width")-7),r.attr(i);var a=r.select(".js-link-to-tool"),o=r.select(".js-link-spacer"),s=r.select(".js-sourcelinks");e._context.showSources&&e._context.showSources(e),e._context.showLink&&Oit(e,a),o.text(a.text()&&s.text()?" - ":"")}};function Oit(e,t){t.text("");var r=t.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(e._context.linkText+" \xBB");if(e._context.sendData)r.on("click",function(){ha.sendDataToCloud(e)});else{var n=window.location.pathname.split("/"),i=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+i})}}ha.sendDataToCloud=function(e){var t=(window.PLOTLYENV||{}).BASE_URL||e._context.plotlyServerURL;if(t){e.emit("plotly_beforeexport");var r=Lne.select(e).append("div").attr("id","hiddenform").style("display","none"),n=r.append("form").attr({action:t+"/external",method:"post",target:"_blank"}),i=n.append("input").attr({type:"text",name:"data"});return i.node().value=ha.graphJson(e,!1,"keepdata"),n.node().submit(),r.remove(),e.emit("plotly_afterexport"),!1}};var Bit=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],Nit=["year","month","dayMonth","dayMonthYear"];ha.supplyDefaults=function(e,t){var r=t&&t.skipUpdateCalc,n=e._fullLayout||{};if(n._skipDefaults){delete n._skipDefaults;return}var i=e._fullLayout={},a=e.layout||{},o=e._fullData||[],s=e._fullData=[],l=e.data||[],u=e.calcdata||[],c=e._context||{},f;e._transitionData||ha.createTransitionData(e),i._dfltTitle={plot:mb(e,"Click to enter Plot title"),subtitle:mb(e,"Click to enter Plot subtitle"),x:mb(e,"Click to enter X axis title"),y:mb(e,"Click to enter Y axis title"),colorbar:mb(e,"Click to enter Colorscale title"),annotation:mb(e,"new text")},i._traceWord=mb(e,"trace");var h=Mne(e,Bit);if(i._mapboxAccessToken=c.mapboxAccessToken,n._initialAutoSizeIsDone){var d=n.width,v=n.height;ha.supplyLayoutGlobalDefaults(a,i,h),a.width||(i.width=d),a.height||(i.height=v),ha.sanitizeMargins(i)}else{ha.supplyLayoutGlobalDefaults(a,i,h);var x=!a.width||!a.height,b=i.autosize,p=c.autosizable,E=x&&(b||p);E?ha.plotAutoSize(e,a,i):x&&ha.sanitizeMargins(i),!b&&x&&(a.width=i.width,a.height=i.height)}i._d3locale=Hit(h,i.separators),i._extraFormat=Mne(e,Nit),i._initialAutoSizeIsDone=!0,i._dataLength=l.length,i._modules=[],i._visibleModules=[],i._basePlotModules=[];var k=i._subplots=Vit(),A=i._splomAxes={x:{},y:{}},L=i._splomSubplots={};i._splomGridDflt={},i._scatterStackOpts={},i._firstScatter={},i._alignmentOpts={},i._colorAxes={},i._requestRangeslider={},i._traceUids=Uit(o,l),ha.supplyDataDefaults(l,s,a,i);var _=Object.keys(A.x),C=Object.keys(A.y);if(_.length>1&&C.length>1){for(bl.getComponentMethod("grid","sizeDefaults")(a,i),f=0;f<_.length;f++)Ca.pushUnique(k.xaxis,_[f]);for(f=0;f15&&C.length>15&&i.shapes.length===0&&i.images.length===0,ha.linkSubplots(s,i,o,n),ha.cleanPlot(s,i,o,n);var F=!!(n._has&&n._has("cartesian")),q=!!(i._has&&i._has("cartesian")),V=F,H=q;V&&!H?n._bgLayer.remove():H&&!V&&(i._shouldCreateBgLayer=!0),n._zoomlayer&&!e._dragging&&Dit({_fullLayout:n}),Git(s,i),Sne(i,n),bl.getComponentMethod("colorscale","crossTraceDefaults")(s,i),i._preGUI||(i._preGUI={}),i._tracePreGUI||(i._tracePreGUI={});var X=i._tracePreGUI,G={},N;for(N in X)G[N]="old";for(f=0;f0){var c=1-2*a;o=Math.round(c*o),s=Math.round(c*s)}}var f=ha.layoutAttributes.width.min,h=ha.layoutAttributes.height.min;o1,v=!r.height&&Math.abs(n.height-s)>1;(v||d)&&(d&&(n.width=o),v&&(n.height=s)),t._initialAutoSize||(t._initialAutoSize={width:o,height:s}),ha.sanitizeMargins(n)};ha.supplyLayoutModuleDefaults=function(e,t,r,n){var i=bl.componentsRegistry,a=t._basePlotModules,o,s,l,u=bl.subplotsRegistry.cartesian;for(o in i)l=i[o],l.includeBasePlot&&l.includeBasePlot(e,t);a.length||a.push(u),t._has("cartesian")&&(bl.getComponentMethod("grid","contentDefaults")(e,t),u.finalizeSubplots(e,t));for(var c in t._subplots)t._subplots[c].sort(Ca.subplotSort);for(s=0;s1&&(r.l/=b,r.r/=b)}if(h){var p=(r.t+r.b)/h;p>1&&(r.t/=p,r.b/=p)}var E=r.xl!==void 0?r.xl:r.x,k=r.xr!==void 0?r.xr:r.x,A=r.yt!==void 0?r.yt:r.y,L=r.yb!==void 0?r.yb:r.y;d[t]={l:{val:E,size:r.l+x},r:{val:k,size:r.r+x},b:{val:L,size:r.b+x},t:{val:A,size:r.t+x}},v[t]=1}if(!n._replotting)return ha.doAutoMargin(e)}};function Wit(e){if("_redrawFromAutoMarginCount"in e._fullLayout)return!1;var t=Ap.list(e,"",!0);for(var r in t)if(t[r].autoshift||t[r].shift)return!0;return!1}ha.doAutoMargin=function(e){var t=e._fullLayout,r=t.width,n=t.height;t._size||(t._size={}),Rne(t);var i=t._size,a=t.margin,o={t:0,b:0,l:0,r:0},s=Ca.extendFlat({},i),l=a.l,u=a.r,c=a.t,f=a.b,h=t._pushmargin,d=t._pushmarginIds,v=t.minreducedwidth,x=t.minreducedheight;if(a.autoexpand!==!1){for(var b in h)d[b]||delete h[b];var p=e._fullLayout._reservedMargin;for(var E in p)for(var k in p[E]){var A=p[E][k];o[k]=Math.max(o[k],A)}h.base={l:{val:0,size:l},r:{val:1,size:u},t:{val:1,size:c},b:{val:0,size:f}};for(var L in o){var _=0;for(var C in h)C!=="base"&&jS(h[C][L].size)&&(_=h[C][L].size>_?h[C][L].size:_);var M=Math.max(0,a[L]-_);o[L]=Math.max(0,o[L]-M)}for(var g in h){var P=h[g].l||{},T=h[g].b||{},F=P.val,q=P.size,V=T.val,H=T.size,X=r-o.r-o.l,G=n-o.t-o.b;for(var N in h){if(jS(q)&&h[N].r){var W=h[N].r.val,re=h[N].r.size;if(W>F){var ae=(q*W+(re-X)*F)/(W-F),_e=(re*(1-F)+(q-X)*(1-W))/(W-F);ae+_e>l+u&&(l=ae,u=_e)}}if(jS(H)&&h[N].t){var Me=h[N].t.val,ke=h[N].t.size;if(Me>V){var ge=(H*Me+(ke-G)*V)/(Me-V),ie=(ke*(1-V)+(H-G)*(1-Me))/(Me-V);ge+ie>f+c&&(f=ge,c=ie)}}}}}var Te=Ca.constrain(r-a.l-a.r,Dne,v),Ee=Ca.constrain(n-a.t-a.b,zne,x),Ae=Math.max(0,r-Te),ze=Math.max(0,n-Ee);if(Ae){var Ce=(l+u)/Ae;Ce>1&&(l/=Ce,u/=Ce)}if(ze){var me=(f+c)/ze;me>1&&(f/=me,c/=me)}if(i.l=Math.round(l)+o.l,i.r=Math.round(u)+o.r,i.t=Math.round(c)+o.t,i.b=Math.round(f)+o.b,i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!t._replotting&&(ha.didMarginChange(s,i)||Wit(e))){"_redrawFromAutoMarginCount"in t?t._redrawFromAutoMarginCount++:t._redrawFromAutoMarginCount=1;var Re=3*(1+Object.keys(d).length);if(t._redrawFromAutoMarginCount1)return!0}return!1};ha.graphJson=function(e,t,r,n,i,a){(i&&t&&!e._fullData||i&&!t&&!e._fullLayout)&&ha.supplyDefaults(e);var o=i?e._fullData:e.data,s=i?e._fullLayout:e.layout,l=(e._transitionData||{})._frames;function u(h,d){if(typeof h=="function")return d?"_function_":null;if(Ca.isPlainObject(h)){var v={},x;return Object.keys(h).sort().forEach(function(k){if(["_","["].indexOf(k.charAt(0))===-1){if(typeof h[k]=="function"){d&&(v[k]="_function");return}if(r==="keepdata"){if(k.substr(k.length-3)==="src")return}else if(r==="keepstream"){if(x=h[k+"src"],typeof x=="string"&&x.indexOf(":")>0&&!Ca.isPlainObject(h.stream))return}else if(r!=="keepall"&&(x=h[k+"src"],typeof x=="string"&&x.indexOf(":")>0))return;v[k]=u(h[k],d)}}),v}var b=Array.isArray(h),p=Ca.isTypedArray(h);if((b||p)&&h.dtype&&h.shape){var E=h.bdata;return u({dtype:h.dtype,shape:h.shape,bdata:Ca.isArrayBuffer(E)?Iit.encode(E):E},d)}return b?h.map(function(k){return u(k,d)}):p?Ca.simpleMap(h,Ca.identity):Ca.isJSDate(h)?Ca.ms2DateTimeLocal(+h):h}var c={data:(o||[]).map(function(h){var d=u(h);return t&&delete d.fit,d})};if(!t&&(c.layout=u(s),i)){var f=s._size;c.layout.computed={margin:{b:f.b,l:f.l,r:f.r,t:f.t}}}return l&&(c.frames=u(l)),a&&(c.config=u(e._context,!0)),n==="object"?c:JSON.stringify(c)};ha.modifyFrames=function(e,t){var r,n,i,a=e._transitionData._frames,o=e._transitionData._frameHash;for(r=0;r0&&(e._transitioningWithDuration=!0),e._transitionData._interruptCallbacks.push(function(){n=!0}),r.redraw&&e._transitionData._interruptCallbacks.push(function(){return bl.call("redraw",e)}),e._transitionData._interruptCallbacks.push(function(){e.emit("plotly_transitioninterrupted",[])});var h=0,d=0;function v(){return h++,function(){d++,!n&&d===h&&s(f)}}r.runFn(v),setTimeout(v())})}function s(f){if(e._transitionData)return a(e._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(r.redraw)return bl.call("redraw",e)}).then(function(){e._transitioning=!1,e._transitioningWithDuration=!1,e.emit("plotly_transitioned",[])}).then(f)}function l(){if(e._transitionData)return e._transitioning=!1,i(e._transitionData._interruptCallbacks)}var u=[ha.previousPromises,l,r.prepareFn,ha.rehover,ha.reselect,o],c=Ca.syncOrAsync(u,e);return(!c||!c.then)&&(c=Promise.resolve()),c.then(function(){return e})}ha.doCalcdata=function(e,t){var r=Ap.list(e),n=e._fullData,i=e._fullLayout,a,o,s,l,u=new Array(n.length),c=(e.calcdata||[]).slice();for(e.calcdata=u,i._numBoxes=0,i._numViolins=0,i._violinScaleGroupStats={},e._hmpixcount=0,e._hmlumcount=0,i._piecolormap={},i._sunburstcolormap={},i._treemapcolormap={},i._iciclecolormap={},i._funnelareacolormap={},s=0;s=0;l--)if(L[l].enabled){a._indexToPoints=L[l]._indexToPoints;break}o&&o.calc&&(A=o.calc(e,a))}(!Array.isArray(A)||!A[0])&&(A=[{x:Ane,y:Ane}]),A[0].t||(A[0].t={}),A[0].trace=a,u[E]=A}}for(kne(r,n,i),s=0;s{"use strict";yb.xmlns="http://www.w3.org/2000/xmlns/";yb.svg="http://www.w3.org/2000/svg";yb.xlink="http://www.w3.org/1999/xlink";yb.svgAttrs={xmlns:yb.svg,"xmlns:xlink":yb.xlink}});var Nh=ye((jtr,One)=>{"use strict";One.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}});var Pl=ye(b0=>{"use strict";var vh=xa(),Ty=Mr(),Kit=Ty.strTranslate,uO=Zp(),Jit=Nh().LINE_SPACING,$it=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;b0.convertToTspans=function(e,t,r){var n=e.text(),i=!e.attr("data-notex")&&t&&t._context.typesetMath&&typeof MathJax!="undefined"&&n.match($it),a=vh.select(e.node().parentNode);if(a.empty())return;var o=e.attr("class")?e.attr("class").split(" ")[0]:"text";o+="-math",a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove(),e.style("display",null).attr({"data-unformatted":n,"data-math":"N"});function s(){a.empty()||(o=e.attr("class")+"-math",a.select("svg."+o).remove()),e.text("").style("white-space","pre");var l=fnt(e.node(),n);l&&e.style("pointer-events","all"),b0.positionText(e),r&&r.call(e)}return i?(t&&t._promises||[]).push(new Promise(function(l){e.style("display","none");var u=parseInt(e.node().style.fontSize,10),c={fontSize:u};rnt(i[2],c,function(f,h,d){a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove();var v=f&&f.select("svg");if(!v||!v.node()){s(),l();return}var x=a.append("g").classed(o+"-group",!0).attr({"pointer-events":"none","data-unformatted":n,"data-math":"Y"});x.node().appendChild(v.node()),h&&h.node()&&v.node().insertBefore(h.node().cloneNode(!0),v.node().firstChild);var b=d.width,p=d.height;v.attr({class:o,height:p,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var E=e.node().style.fill||"black",k=v.select("g");k.attr({fill:E,stroke:E});var A=k.node().getBoundingClientRect(),L=A.width,_=A.height;(L>b||_>p)&&(v.style("overflow","hidden"),A=v.node().getBoundingClientRect(),L=A.width,_=A.height);var C=+e.attr("x"),M=+e.attr("y"),g=u||e.node().getBoundingClientRect().height,P=-g/4;if(o[0]==="y")x.attr({transform:"rotate("+[-90,C,M]+")"+Kit(-L/2,P-_/2)});else if(o[0]==="l")M=P-_/2;else if(o[0]==="a"&&o.indexOf("atitle")!==0)C=0,M=P;else{var T=e.attr("text-anchor");C=C-L*(T==="middle"?.5:T==="end"?1:0),M=M+P-_/2}v.attr({x:C,y:M}),r&&r.call(e,x),l(x)})})):s(),e};var Qit=/(<|<|<)/g,ent=/(>|>|>)/g;function tnt(e){return e.replace(Qit,"\\lt ").replace(ent,"\\gt ")}var Bne=[["$","$"],["\\(","\\)"]];function rnt(e,t,r){var n=parseInt((MathJax.version||"").split(".")[0]);if(n!==2&&n!==3){Ty.warn("No MathJax version:",MathJax.version);return}var i,a,o,s,l=function(){return a=Ty.extendDeepAll({},MathJax.Hub.config),o=MathJax.Hub.processSectionDelay,MathJax.Hub.processSectionDelay!==void 0&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:Bne},displayAlign:"left"})},u=function(){a=Ty.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=Bne},c=function(){if(i=MathJax.Hub.config.menuSettings.renderer,i!=="SVG")return MathJax.Hub.setRenderer("SVG")},f=function(){i=MathJax.config.startup.output,i!=="svg"&&(MathJax.config.startup.output="svg")},h=function(){var E="math-output-"+Ty.randstr({},64);s=vh.select("body").append("div").attr({id:E}).style({visibility:"hidden",position:"absolute","font-size":t.fontSize+"px"}).text(tnt(e));var k=s.node();return n===2?MathJax.Hub.Typeset(k):MathJax.typeset([k])},d=function(){var E=s.select(n===2?".MathJax_SVG":".MathJax"),k=!E.empty()&&s.select("svg").node();if(!k)Ty.log("There was an error in the tex syntax.",e),r();else{var A=k.getBoundingClientRect(),L;n===2?L=vh.select("body").select("#MathJax_SVG_glyphs"):L=E.select("defs"),r(E,L,A)}s.remove()},v=function(){if(i!=="SVG")return MathJax.Hub.setRenderer(i)},x=function(){i!=="svg"&&(MathJax.config.startup.output=i)},b=function(){return o!==void 0&&(MathJax.Hub.processSectionDelay=o),MathJax.Hub.Config(a)},p=function(){MathJax.config=a};n===2?MathJax.Hub.Queue(l,c,h,d,v,b):n===3&&(u(),f(),MathJax.startup.defaultReady(),MathJax.startup.promise.then(function(){h(),d(),x(),p()}))}var Hne={sup:"font-size:70%",sub:"font-size:70%",s:"text-decoration:line-through",u:"text-decoration:underline",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},int={sub:"0.3em",sup:"-0.6em"},nnt={sub:"-0.21em",sup:"0.42em"},Nne="\u200B",Une=["http:","https:","mailto:","",void 0,":"],Gne=b0.NEWLINES=/(\r\n?|\n)/g,fO=/(<[^<>]*>)/,hO=/<(\/?)([^ >]*)(\s+(.*))?>/i,ant=//i;b0.BR_TAG_ALL=//gi;var jne=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,Wne=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,Zne=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,ont=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function _b(e,t){if(!e)return null;var r=e.match(t),n=r&&(r[3]||r[4]);return n&&Z6(n)}var snt=/(^|;)\s*color:/;b0.plainText=function(e,t){t=t||{};for(var r=t.len!==void 0&&t.len!==-1?t.len:1/0,n=t.allowedTags!==void 0?t.allowedTags:["br"],i="...",a=i.length,o=e.split(fO),s=[],l="",u=0,c=0;ca?s.push(f.substr(0,x-a)+i):s.push(f.substr(0,x));break}l=""}}return s.join("")};var lnt={mu:"\u03BC",amp:"&",lt:"<",gt:">",nbsp:"\xA0",times:"\xD7",plusmn:"\xB1",deg:"\xB0"},unt=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function Z6(e){return e.replace(unt,function(t,r){var n;return r.charAt(0)==="#"?n=cnt(r.charAt(1)==="x"?parseInt(r.substr(2),16):parseInt(r.substr(1),10)):n=lnt[r],n||t})}b0.convertEntities=Z6;function cnt(e){if(!(e>1114111)){var t=String.fromCodePoint;if(t)return t(e);var r=String.fromCharCode;return e<=65535?r(e):r((e>>10)+55232,e%1024+56320)}}function fnt(e,t){t=t.replace(Gne," ");var r=!1,n=[],i,a=-1;function o(){a++;var _=document.createElementNS(uO.svg,"tspan");vh.select(_).attr({class:"line",dy:a*Jit+"em"}),e.appendChild(_),i=_;var C=n;if(n=[{node:_}],C.length>1)for(var M=1;M.",t);return}var C=n.pop();_!==C.type&&Ty.log("Start tag <"+C.type+"> doesnt match end tag <"+_+">. Pretending it did match.",t),i=n[n.length-1].node}var c=ant.test(t);c?o():(i=e,n=[{node:e}]);for(var f=t.split(fO),h=0;h{"use strict";var hnt=xa(),Y6=id(),ZS=uo(),X6=Mr(),Yne=va(),dnt=sb().isValid;function vnt(e,t,r){var n=t?X6.nestedProperty(e,t).get()||{}:e,i=n[r||"color"];i&&i._inputArray&&(i=i._inputArray);var a=!1;if(X6.isArrayOrTypedArray(i)){for(var o=0;o=0;n--,i++){var a=e[n];r[i]=[1-a[0],a[1]]}return r}function tae(e,t){t=t||{};for(var r=e.domain,n=e.range,i=n.length,a=new Array(i),o=0;o{"use strict";var iae=Rq(),gnt=iae.FORMAT_LINK,mnt=iae.DATE_FORMAT_LINK;function ynt(e,t){return{valType:"string",dflt:"",editType:"none",description:(t?dO:nae)("hover text",e)+["By default the values are formatted using "+(t?"generic number format":"`"+e+"axis.hoverformat`")+"."].join(" ")}}function dO(e,t){return["Sets the "+e+" formatting rule"+(t?"for `"+t+"` ":""),"using d3 formatting mini-languages","which are very similar to those in Python. For numbers, see: "+gnt+"."].join(" ")}function nae(e,t){return dO(e,t)+[" And for dates see: "+mnt+".","We add two items to d3's date formatter:","*%h* for half of the year as a decimal number as well as","*%{n}f* for fractional seconds","with n digits. For example, *2016-10-13 09:15:23.456* with tickformat","*%H~%M~%S.%2f* would display *09~15~23.46*"].join(" ")}aae.exports={axisHoverFormat:ynt,descriptionOnlyNumbers:dO,descriptionWithDates:nae}});var Cd=ye((Ytr,wae)=>{"use strict";var oae=Su(),w3=dh(),bae=Ed().dash,pO=no().extendFlat,sae=Vs().templatedArray,lae=Oc().descriptionWithDates,_nt=es().ONEDAY,pm=ad(),xnt=pm.HOUR_PATTERN,bnt=pm.WEEKDAY_PATTERN,vO={valType:"enumerated",values:["auto","linear","array"],editType:"ticks",impliedEdits:{tick0:void 0,dtick:void 0}},wnt=pO({},vO,{values:vO.values.slice().concat(["sync"])});function uae(e){return{valType:"integer",min:0,dflt:e?5:0,editType:"ticks"}}var cae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},fae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},hae={valType:"data_array",editType:"ticks"},dae={valType:"enumerated",values:["outside","inside",""],editType:"ticks"};function vae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=5),t}function pae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var gae={valType:"color",dflt:w3.defaultLine,editType:"ticks"},mae={valType:"color",dflt:w3.lightLine,editType:"ticks"};function yae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var _ae=pO({},bae,{editType:"ticks"}),xae={valType:"boolean",editType:"ticks"};wae.exports={visible:{valType:"boolean",editType:"plot"},color:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},title:{text:{valType:"string",editType:"ticks"},font:oae({editType:"ticks"}),standoff:{valType:"number",min:0,editType:"ticks"},editType:"ticks"},type:{valType:"enumerated",values:["-","linear","log","date","category","multicategory"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},autorange:{valType:"enumerated",values:[!0,!1,"reversed","min reversed","max reversed","min","max"],dflt:!0,editType:"axrange",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},autorangeoptions:{minallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmin:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmax:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},include:{valType:"any",arrayOk:!0,editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},editType:"plot"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"plot"},range:{valType:"info_array",items:[{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0},{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0}],editType:"axrange",impliedEdits:{autorange:!1},anim:!0},minallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},insiderange:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},scaleanchor:{valType:"enumerated",values:[pm.idRegex.x.toString(),pm.idRegex.y.toString(),!1],editType:"plot"},scaleratio:{valType:"number",min:0,dflt:1,editType:"plot"},constrain:{valType:"enumerated",values:["range","domain"],editType:"plot"},constraintoward:{valType:"enumerated",values:["left","center","right","top","middle","bottom"],editType:"plot"},matches:{valType:"enumerated",values:[pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"calc"},rangebreaks:sae("rangebreak",{enabled:{valType:"boolean",dflt:!0,editType:"calc"},bounds:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},pattern:{valType:"enumerated",values:[bnt,xnt,""],editType:"calc"},values:{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"any",editType:"calc"}},dvalue:{valType:"number",editType:"calc",min:0,dflt:_nt},editType:"calc"}),tickmode:wnt,nticks:uae(),tick0:cae,dtick:fae,ticklabelstep:{valType:"integer",min:1,dflt:1,editType:"ticks"},tickvals:hae,ticktext:{valType:"data_array",editType:"ticks"},ticks:dae,tickson:{valType:"enumerated",values:["labels","boundaries"],dflt:"labels",editType:"ticks"},ticklabelmode:{valType:"enumerated",values:["instant","period"],dflt:"instant",editType:"ticks"},ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside",editType:"calc"},ticklabeloverflow:{valType:"enumerated",values:["allow","hide past div","hide past domain"],editType:"calc"},ticklabelshift:{valType:"integer",dflt:0,editType:"ticks"},ticklabelstandoff:{valType:"integer",dflt:0,editType:"ticks"},ticklabelindex:{valType:"integer",arrayOk:!0,editType:"calc"},mirror:{valType:"enumerated",values:[!0,"ticks",!1,"all","allticks"],dflt:!1,editType:"ticks+layoutstyle"},ticklen:vae(),tickwidth:pae(),tickcolor:gae,showticklabels:{valType:"boolean",dflt:!0,editType:"ticks"},labelalias:{valType:"any",dflt:!1,editType:"ticks"},automargin:{valType:"flaglist",flags:["height","width","left","right","top","bottom"],extras:[!0,!1],dflt:!1,editType:"ticks"},showspikes:{valType:"boolean",dflt:!1,editType:"modebar"},spikecolor:{valType:"color",dflt:null,editType:"none"},spikethickness:{valType:"number",dflt:3,editType:"none"},spikedash:pO({},bae,{dflt:"dash",editType:"none"}),spikemode:{valType:"flaglist",flags:["toaxis","across","marker"],dflt:"toaxis",editType:"none"},spikesnap:{valType:"enumerated",values:["data","cursor","hovered data"],dflt:"hovered data",editType:"none"},tickfont:oae({editType:"ticks"}),tickangle:{valType:"angle",dflt:"auto",editType:"ticks"},autotickangles:{valType:"info_array",freeLength:!0,items:{valType:"angle"},dflt:[0,30,90],editType:"ticks"},tickprefix:{valType:"string",dflt:"",editType:"ticks"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},ticksuffix:{valType:"string",dflt:"",editType:"ticks"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B"],dflt:"B",editType:"ticks"},minexponent:{valType:"number",dflt:3,min:0,editType:"ticks"},separatethousands:{valType:"boolean",dflt:!1,editType:"ticks"},tickformat:{valType:"string",dflt:"",editType:"ticks",description:lae("tick label")},tickformatstops:sae("tickformatstop",{enabled:{valType:"boolean",dflt:!0,editType:"ticks"},dtickrange:{valType:"info_array",items:[{valType:"any",editType:"ticks"},{valType:"any",editType:"ticks"}],editType:"ticks"},value:{valType:"string",dflt:"",editType:"ticks"},editType:"ticks"}),hoverformat:{valType:"string",dflt:"",editType:"none",description:lae("hover text")},showline:{valType:"boolean",dflt:!1,editType:"ticks+layoutstyle"},linecolor:{valType:"color",dflt:w3.defaultLine,editType:"layoutstyle"},linewidth:{valType:"number",min:0,dflt:1,editType:"ticks+layoutstyle"},showgrid:xae,gridcolor:mae,gridwidth:yae(),griddash:_ae,zeroline:{valType:"boolean",editType:"ticks"},zerolinecolor:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},zerolinewidth:{valType:"number",dflt:1,editType:"ticks"},showdividers:{valType:"boolean",dflt:!0,editType:"ticks"},dividercolor:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},dividerwidth:{valType:"number",dflt:1,editType:"ticks"},anchor:{valType:"enumerated",values:["free",pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"plot"},side:{valType:"enumerated",values:["top","bottom","left","right"],editType:"plot"},overlaying:{valType:"enumerated",values:["free",pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"plot"},minor:{tickmode:vO,nticks:uae("minor"),tick0:cae,dtick:fae,tickvals:hae,ticks:dae,ticklen:vae("minor"),tickwidth:pae("minor"),tickcolor:gae,gridcolor:mae,gridwidth:yae("minor"),griddash:_ae,showgrid:xae,editType:"ticks"},layer:{valType:"enumerated",values:["above traces","below traces"],dflt:"above traces",editType:"plot"},domain:{valType:"info_array",items:[{valType:"number",min:0,max:1,editType:"plot"},{valType:"number",min:0,max:1,editType:"plot"}],dflt:[0,1],editType:"plot"},position:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},autoshift:{valType:"boolean",dflt:!1,editType:"plot"},shift:{valType:"number",editType:"plot"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array","total ascending","total descending","min ascending","min descending","max ascending","max descending","sum ascending","sum descending","mean ascending","mean descending","geometric mean ascending","geometric mean descending","median ascending","median descending"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var K6=ye((Ktr,Sae)=>{"use strict";var Ac=Cd(),Tae=Su(),Aae=no().extendFlat,Tnt=Bu().overrideAll;Sae.exports=Tnt({orientation:{valType:"enumerated",values:["h","v"],dflt:"v"},thicknessmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels"},thickness:{valType:"number",min:0,dflt:30},lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["left","center","right"]},xpad:{valType:"number",min:0,dflt:10},y:{valType:"number"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},ypad:{valType:"number",min:0,dflt:10},outlinecolor:Ac.linecolor,outlinewidth:Ac.linewidth,bordercolor:Ac.linecolor,borderwidth:{valType:"number",min:0,dflt:0},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},tickmode:Ac.minor.tickmode,nticks:Ac.nticks,tick0:Ac.tick0,dtick:Ac.dtick,tickvals:Ac.tickvals,ticktext:Ac.ticktext,ticks:Aae({},Ac.ticks,{dflt:""}),ticklabeloverflow:Aae({},Ac.ticklabeloverflow,{}),ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside"},ticklen:Ac.ticklen,tickwidth:Ac.tickwidth,tickcolor:Ac.tickcolor,ticklabelstep:Ac.ticklabelstep,showticklabels:Ac.showticklabels,labelalias:Ac.labelalias,tickfont:Tae({}),tickangle:Ac.tickangle,tickformat:Ac.tickformat,tickformatstops:Ac.tickformatstops,tickprefix:Ac.tickprefix,showtickprefix:Ac.showtickprefix,ticksuffix:Ac.ticksuffix,showticksuffix:Ac.showticksuffix,separatethousands:Ac.separatethousands,exponentformat:Ac.exponentformat,minexponent:Ac.minexponent,showexponent:Ac.showexponent,title:{text:{valType:"string"},font:Tae({}),side:{valType:"enumerated",values:["right","top","bottom"]}}},"colorbars","from-root")});var Jl=ye(($tr,Eae)=>{"use strict";var Ant=K6(),Snt=n3().counter,Mnt=Y1(),Mae=sb().scales,Jtr=Mnt(Mae);function J6(e){return"`"+e+"`"}Eae.exports=function(t,r){t=t||"",r=r||{};var n=r.cLetter||"c",i="onlyIfNumerical"in r?r.onlyIfNumerical:!!t,a="noScale"in r?r.noScale:t==="marker.line",o="showScaleDflt"in r?r.showScaleDflt:n==="z",s=typeof r.colorscaleDflt=="string"?Mae[r.colorscaleDflt]:null,l=r.editTypeOverride||"",u=t?t+".":"",c,f;"colorAttr"in r?(c=r.colorAttr,f=r.colorAttr):(c={z:"z",c:"color"}[n],f="in "+J6(u+c));var h=i?" Has an effect only if "+f+" is set to a numerical array.":"",d=n+"auto",v=n+"min",x=n+"max",b=n+"mid",p=J6(u+d),E=J6(u+v),k=J6(u+x),A=E+" and "+k,L={};L[v]=L[x]=void 0;var _={};_[d]=!1;var C={};return c==="color"&&(C.color={valType:"color",arrayOk:!0,editType:l||"style"},r.anim&&(C.color.anim=!0)),C[d]={valType:"boolean",dflt:!0,editType:"calc",impliedEdits:L},C[v]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:_},C[x]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:_},C[b]={valType:"number",dflt:null,editType:"calc",impliedEdits:L},C.colorscale={valType:"colorscale",editType:"calc",dflt:s,impliedEdits:{autocolorscale:!1}},C.autocolorscale={valType:"boolean",dflt:r.autoColorDflt!==!1,editType:"calc",impliedEdits:{colorscale:void 0}},C.reversescale={valType:"boolean",dflt:!1,editType:"plot"},a||(C.showscale={valType:"boolean",dflt:o,editType:"calc"},C.colorbar=Ant),r.noColorAxis||(C.coloraxis={valType:"subplotid",regex:Snt("coloraxis"),dflt:null,editType:"calc"}),C}});var mO=ye((Qtr,kae)=>{"use strict";var Ent=no().extendFlat,knt=Jl(),gO=sb().scales;kae.exports={editType:"calc",colorscale:{editType:"calc",sequential:{valType:"colorscale",dflt:gO.Reds,editType:"calc"},sequentialminus:{valType:"colorscale",dflt:gO.Blues,editType:"calc"},diverging:{valType:"colorscale",dflt:gO.RdBu,editType:"calc"}},coloraxis:Ent({_isSubplotObj:!0,editType:"calc"},knt("",{colorAttr:"corresponding trace color array(s)",noColorAxis:!0,showScaleDflt:!0}))}});var yO=ye((err,Cae)=>{"use strict";var Cnt=Mr();Cae.exports=function(t){return Cnt.isPlainObject(t.colorbar)}});var bO=ye(xO=>{"use strict";var _O=uo(),Lae=Mr(),Pae=es(),Lnt=Pae.ONEDAY,Pnt=Pae.ONEWEEK;xO.dtick=function(e,t){var r=t==="log",n=t==="date",i=t==="category",a=n?Lnt:1;if(!e)return a;if(_O(e))return e=Number(e),e<=0?a:i?Math.max(1,Math.round(e)):n?Math.max(.1,e):e;if(typeof e!="string"||!(n||r))return a;var o=e.charAt(0),s=e.substr(1);return s=_O(s)?Number(s):0,s<=0||!(n&&o==="M"&&s===Math.round(s)||r&&o==="L"||r&&o==="D"&&(s===1||s===2))?a:e};xO.tick0=function(e,t,r,n){if(t==="date")return Lae.cleanDate(e,Lae.dateTick0(r,n%Pnt===0?1:0));if(!(n==="D1"||n==="D2"))return _O(e)?Number(e):0}});var xb=ye((rrr,Rae)=>{"use strict";var Iae=bO(),Int=Mr().isArrayOrTypedArray,Rnt=vv().isTypedArraySpec,Dnt=vv().decodeTypedArraySpec;Rae.exports=function(t,r,n,i,a){a||(a={});var o=a.isMinor,s=o?t.minor||{}:t,l=o?r.minor:r,u=o?"minor.":"";function c(E){var k=s[E];return Rnt(k)&&(k=Dnt(k)),k!==void 0?k:(l._template||{})[E]}var f=c("tick0"),h=c("dtick"),d=c("tickvals"),v=Int(d)?"array":h?"linear":"auto",x=n(u+"tickmode",v);if(x==="auto"||x==="sync")n(u+"nticks");else if(x==="linear"){var b=l.dtick=Iae.dtick(h,i);l.tick0=Iae.tick0(f,i,r.calendar,b)}else if(i!=="multicategory"){var p=n(u+"tickvals");p===void 0?l.tickmode="auto":o||n("ticktext")}}});var T3=ye((irr,zae)=>{"use strict";var wO=Mr(),Dae=Cd();zae.exports=function(t,r,n,i){var a=i.isMinor,o=a?t.minor||{}:t,s=a?r.minor:r,l=a?Dae.minor:Dae,u=a?"minor.":"",c=wO.coerce2(o,s,l,"ticklen",a?(r.ticklen||5)*.6:void 0),f=wO.coerce2(o,s,l,"tickwidth",a?r.tickwidth||1:void 0),h=wO.coerce2(o,s,l,"tickcolor",(a?r.tickcolor:void 0)||s.color),d=n(u+"ticks",!a&&i.outerTicks||c||f||h?"outside":"");d||(delete s.ticklen,delete s.tickwidth,delete s.tickcolor)}});var TO=ye((nrr,Fae)=>{"use strict";Fae.exports=function(t){var r=["showexponent","showtickprefix","showticksuffix"],n=r.filter(function(a){return t[a]!==void 0}),i=function(a){return t[a]===t[n[0]]};if(n.every(i)||n.length===1)return t[n[0]]}});var Zd=ye((arr,qae)=>{"use strict";var $6=Mr(),znt=Vs();qae.exports=function(t,r,n){var i=n.name,a=n.inclusionAttr||"visible",o=r[i],s=$6.isArrayOrTypedArray(t[i])?t[i]:[],l=r[i]=[],u=znt.arrayTemplater(r,i,a),c,f;for(c=0;c{"use strict";var AO=Mr(),Fnt=va().contrast,Oae=Cd(),qnt=TO(),Ont=Zd();Bae.exports=function(t,r,n,i,a){a||(a={});var o=n("labelalias");AO.isPlainObject(o)||delete r.labelalias;var s=qnt(t),l=n("showticklabels");if(l){a.noTicklabelshift||n("ticklabelshift"),a.noTicklabelstandoff||n("ticklabelstandoff");var u=a.font||{},c=r.color,f=r.ticklabelposition||"",h=f.indexOf("inside")!==-1?Fnt(a.bgColor):c&&c!==Oae.color.dflt?c:u.color;if(AO.coerceFont(n,"tickfont",u,{overrideDflt:{color:h}}),!a.noTicklabelstep&&i!=="multicategory"&&i!=="log"&&n("ticklabelstep"),!a.noAng){var d=n("tickangle");!a.noAutotickangles&&d==="auto"&&n("autotickangles")}if(i!=="category"){var v=n("tickformat");Ont(t,r,{name:"tickformatstops",inclusionAttr:"enabled",handleItemDefaults:Bnt}),r.tickformatstops.length||delete r.tickformatstops,!a.noExp&&!v&&i!=="date"&&(n("showexponent",s),n("exponentformat"),n("minexponent"),n("separatethousands"))}}};function Bnt(e,t){function r(i,a){return AO.coerce(e,t,Oae.tickformatstops,i,a)}var n=r("enabled");n&&(r("dtickrange"),r("value"))}});var r_=ye((srr,Nae)=>{"use strict";var Nnt=TO();Nae.exports=function(t,r,n,i,a){a||(a={});var o=a.tickSuffixDflt,s=Nnt(t),l=n("tickprefix");l&&n("showtickprefix",s);var u=n("ticksuffix",o);u&&n("showticksuffix",s)}});var SO=ye((lrr,Uae)=>{"use strict";var i_=Mr(),Unt=Vs(),Vnt=xb(),Hnt=T3(),Gnt=t_(),jnt=r_(),Wnt=K6();Uae.exports=function(t,r,n){var i=Unt.newContainer(r,"colorbar"),a=t.colorbar||{};function o(T,F){return i_.coerce(a,i,Wnt,T,F)}var s=n.margin||{t:0,b:0,l:0,r:0},l=n.width-s.l-s.r,u=n.height-s.t-s.b,c=o("orientation"),f=c==="v",h=o("thicknessmode");o("thickness",h==="fraction"?30/(f?l:u):30);var d=o("lenmode");o("len",d==="fraction"?1:f?u:l);var v=o("yref"),x=o("xref"),b=v==="paper",p=x==="paper",E,k,A,L="left";f?(A="middle",L=p?"left":"right",E=p?1.02:1,k=.5):(A=b?"bottom":"top",L="center",E=.5,k=b?1.02:1),i_.coerce(a,i,{x:{valType:"number",min:p?-2:0,max:p?3:1,dflt:E}},"x"),i_.coerce(a,i,{y:{valType:"number",min:b?-2:0,max:b?3:1,dflt:k}},"y"),o("xanchor",L),o("xpad"),o("yanchor",A),o("ypad"),i_.noneOrAll(a,i,["x","y"]),o("outlinecolor"),o("outlinewidth"),o("bordercolor"),o("borderwidth"),o("bgcolor");var _=i_.coerce(a,i,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:f?["outside","inside","outside top","inside top","outside bottom","inside bottom"]:["outside","inside","outside left","inside left","outside right","inside right"]}},"ticklabelposition");o("ticklabeloverflow",_.indexOf("inside")!==-1?"hide past domain":"hide past div"),Vnt(a,i,o,"linear");var C=n.font,M={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,outerTicks:!1,font:C};_.indexOf("inside")!==-1&&(M.bgColor="black"),jnt(a,i,o,"linear",M),Gnt(a,i,o,"linear",M),Hnt(a,i,o,"linear",M),o("title.text",n._dfltTitle.colorbar);var g=i.showticklabels?i.tickfont:C,P=i_.extendFlat({},C,{family:g.family,size:i_.bigFont(g.size)});i_.coerceFont(o,"title.font",P),o("title.side",f?"top":"right")}});var Uh=ye((urr,Gae)=>{"use strict";var Vae=uo(),EO=Mr(),Znt=yO(),Xnt=SO(),Hae=sb().isValid,Ynt=ba().traceIs;function MO(e,t){var r=t.slice(0,t.length-1);return t?EO.nestedProperty(e,r).get()||{}:e}Gae.exports=function e(t,r,n,i,a){var o=a.prefix,s=a.cLetter,l="_module"in r,u=MO(t,o),c=MO(r,o),f=MO(r._template||{},o)||{},h=function(){return delete t.coloraxis,delete r.coloraxis,e(t,r,n,i,a)};if(l){var d=n._colorAxes||{},v=i(o+"coloraxis");if(v){var x=Ynt(r,"contour")&&EO.nestedProperty(r,"contours.coloring").get()||"heatmap",b=d[v];b?(b[2].push(h),b[0]!==x&&(b[0]=!1,EO.warn(["Ignoring coloraxis:",v,"setting","as it is linked to incompatible colorscales."].join(" ")))):d[v]=[x,r,[h]];return}}var p=u[s+"min"],E=u[s+"max"],k=Vae(p)&&Vae(E)&&p{"use strict";var jae=Mr(),Knt=Vs(),Wae=mO(),Jnt=Uh();Zae.exports=function(t,r){function n(f,h){return jae.coerce(t,r,Wae,f,h)}n("colorscale.sequential"),n("colorscale.sequentialminus"),n("colorscale.diverging");var i=r._colorAxes,a,o;function s(f,h){return jae.coerce(a,o,Wae.coloraxis,f,h)}for(var l in i){var u=i[l];if(u[0])a=t[l]||{},o=Knt.newContainer(r,l,"coloraxis"),o._name=l,Jnt(a,o,r,s,{prefix:"",cLetter:"c"});else{for(var c=0;c{"use strict";var $nt=Mr(),Qnt=Dv().hasColorscale,eat=Dv().extractOpts;Yae.exports=function(t,r){function n(c,f){var h=c["_"+f];h!==void 0&&(c[f]=h)}function i(c,f){var h=f.container?$nt.nestedProperty(c,f.container).get():c;if(h)if(h.coloraxis)h._colorAx=r[h.coloraxis];else{var d=eat(h),v=d.auto;(v||d.min===void 0)&&n(h,f.min),(v||d.max===void 0)&&n(h,f.max),d.autocolorscale&&n(h,"colorscale")}}for(var a=0;a{"use strict";var Jae=uo(),kO=Mr(),tat=Dv().extractOpts;$ae.exports=function(t,r,n){var i=t._fullLayout,a=n.vals,o=n.containerStr,s=o?kO.nestedProperty(r,o).get():r,l=tat(s),u=l.auto!==!1,c=l.min,f=l.max,h=l.mid,d=function(){return kO.aggNums(Math.min,null,a)},v=function(){return kO.aggNums(Math.max,null,a)};if(c===void 0?c=d():u&&(s._colorAx&&Jae(c)?c=Math.min(c,d()):c=d()),f===void 0?f=v():u&&(s._colorAx&&Jae(f)?f=Math.max(f,v()):f=v()),u&&h!==void 0&&(f-h>h-c?c=h-(f-h):f-h=0?x=i.colorscale.sequential:x=i.colorscale.sequentialminus,l._sync("colorscale",x)}}});var Mu=ye((drr,Qae)=>{"use strict";var Q6=sb(),A3=Dv();Qae.exports={moduleType:"component",name:"colorscale",attributes:Jl(),layoutAttributes:mO(),supplyLayoutDefaults:Xae(),handleDefaults:Uh(),crossTraceDefaults:Kae(),calc:zv(),scales:Q6.scales,defaultScale:Q6.defaultScale,getScale:Q6.get,isValidScale:Q6.isValid,hasColorscale:A3.hasColorscale,extractOpts:A3.extractOpts,extractScale:A3.extractScale,flipScale:A3.flipScale,makeColorScaleFunc:A3.makeColorScaleFunc,makeColorScaleFuncFromTrace:A3.makeColorScaleFuncFromTrace}});var lu=ye((vrr,toe)=>{"use strict";var eoe=Mr(),rat=vv().isTypedArraySpec;toe.exports={hasLines:function(e){return e.visible&&e.mode&&e.mode.indexOf("lines")!==-1},hasMarkers:function(e){return e.visible&&(e.mode&&e.mode.indexOf("markers")!==-1||e.type==="splom")},hasText:function(e){return e.visible&&e.mode&&e.mode.indexOf("text")!==-1},isBubble:function(e){var t=e.marker;return eoe.isPlainObject(t)&&(eoe.isArrayOrTypedArray(t.size)||rat(t.size))}}});var S3=ye((prr,roe)=>{"use strict";var iat=uo();roe.exports=function(t,r){r||(r=2);var n=t.marker,i=n.sizeref||1,a=n.sizemin||0,o=n.sizemode==="area"?function(s){return Math.sqrt(s/i)}:function(s){return s/i};return function(s){var l=o(s/r);return iat(l)&&l>0?Math.max(l,a):0}}});var rp=ye(pv=>{"use strict";var ioe=Mr();pv.getSubplot=function(e){return e.subplot||e.xaxis+e.yaxis||e.geo};pv.isTraceInSubplots=function(e,t){if(e.type==="splom"){for(var r=e.xaxes||[],n=e.yaxes||[],i=0;i=0&&r.index{ooe.exports=lat;var CO={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},sat=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function lat(e){var t=[];return e.replace(sat,function(r,n,i){var a=n.toLowerCase();for(i=cat(i),a=="m"&&i.length>2&&(t.push([n].concat(i.splice(0,2))),a="l",n=n=="m"?"l":"L");;){if(i.length==CO[a])return i.unshift(n),t.push(i);if(i.length{"use strict";var fat=XS(),Yn=function(e,t){return t?Math.round(e*(t=Math.pow(10,t)))/t:Math.round(e)},ts="M0,0Z",soe=Math.sqrt(2),n_=Math.sqrt(3),LO=Math.PI,PO=Math.cos,IO=Math.sin;hoe.exports={circle:{n:0,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i="M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z";return r?is(t,r,i):i}},square:{n:1,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")}},diamond:{n:2,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"Z")}},cross:{n:3,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.4,2),i=Yn(e*1.2,2);return is(t,r,"M"+i+","+n+"H"+n+"V"+i+"H-"+n+"V"+n+"H-"+i+"V-"+n+"H-"+n+"V-"+i+"H"+n+"V-"+n+"H"+i+"Z")}},x:{n:4,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.8/soe,2),i="l"+n+","+n,a="l"+n+",-"+n,o="l-"+n+",-"+n,s="l-"+n+","+n;return is(t,r,"M0,"+n+i+a+o+a+o+s+o+s+i+s+i+"Z")}},"triangle-up":{n:5,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+n+","+i+"H"+n+"L0,-"+a+"Z")}},"triangle-down":{n:6,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+n+",-"+i+"H"+n+"L0,"+a+"Z")}},"triangle-left":{n:7,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M"+i+",-"+n+"V"+n+"L-"+a+",0Z")}},"triangle-right":{n:8,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+i+",-"+n+"V"+n+"L"+a+",0Z")}},"triangle-ne":{n:9,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M-"+i+",-"+n+"H"+n+"V"+i+"Z")}},"triangle-se":{n:10,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M"+n+",-"+i+"V"+n+"H-"+i+"Z")}},"triangle-sw":{n:11,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M"+i+","+n+"H-"+n+"V-"+i+"Z")}},"triangle-nw":{n:12,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M-"+n+","+i+"V-"+n+"H"+i+"Z")}},pentagon:{n:13,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.951,2),i=Yn(e*.588,2),a=Yn(-e,2),o=Yn(e*-.309,2),s=Yn(e*.809,2);return is(t,r,"M"+n+","+o+"L"+i+","+s+"H-"+i+"L-"+n+","+o+"L0,"+a+"Z")}},hexagon:{n:14,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/2,2),a=Yn(e*n_/2,2);return is(t,r,"M"+a+",-"+i+"V"+i+"L0,"+n+"L-"+a+","+i+"V-"+i+"L0,-"+n+"Z")}},hexagon2:{n:15,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/2,2),a=Yn(e*n_/2,2);return is(t,r,"M-"+i+","+a+"H"+i+"L"+n+",0L"+i+",-"+a+"H-"+i+"L-"+n+",0Z")}},octagon:{n:16,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.924,2),i=Yn(e*.383,2);return is(t,r,"M-"+i+",-"+n+"H"+i+"L"+n+",-"+i+"V"+i+"L"+i+","+n+"H-"+i+"L-"+n+","+i+"V-"+i+"Z")}},star:{n:17,f:function(e,t,r){if(rs(t))return ts;var n=e*1.4,i=Yn(n*.225,2),a=Yn(n*.951,2),o=Yn(n*.363,2),s=Yn(n*.588,2),l=Yn(-n,2),u=Yn(n*-.309,2),c=Yn(n*.118,2),f=Yn(n*.809,2),h=Yn(n*.382,2);return is(t,r,"M"+i+","+u+"H"+a+"L"+o+","+c+"L"+s+","+f+"L0,"+h+"L-"+s+","+f+"L-"+o+","+c+"L-"+a+","+u+"H-"+i+"L0,"+l+"Z")}},hexagram:{n:18,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.66,2),i=Yn(e*.38,2),a=Yn(e*.76,2);return is(t,r,"M-"+a+",0l-"+i+",-"+n+"h"+a+"l"+i+",-"+n+"l"+i+","+n+"h"+a+"l-"+i+","+n+"l"+i+","+n+"h-"+a+"l-"+i+","+n+"l-"+i+",-"+n+"h-"+a+"Z")}},"star-triangle-up":{n:19,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*n_*.8,2),i=Yn(e*.8,2),a=Yn(e*1.6,2),o=Yn(e*4,2),s="A "+o+","+o+" 0 0 1 ";return is(t,r,"M-"+n+","+i+s+n+","+i+s+"0,-"+a+s+"-"+n+","+i+"Z")}},"star-triangle-down":{n:20,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*n_*.8,2),i=Yn(e*.8,2),a=Yn(e*1.6,2),o=Yn(e*4,2),s="A "+o+","+o+" 0 0 1 ";return is(t,r,"M"+n+",-"+i+s+"-"+n+",-"+i+s+"0,"+a+s+n+",-"+i+"Z")}},"star-square":{n:21,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.1,2),i=Yn(e*2,2),a="A "+i+","+i+" 0 0 1 ";return is(t,r,"M-"+n+",-"+n+a+"-"+n+","+n+a+n+","+n+a+n+",-"+n+a+"-"+n+",-"+n+"Z")}},"star-diamond":{n:22,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2),i=Yn(e*1.9,2),a="A "+i+","+i+" 0 0 1 ";return is(t,r,"M-"+n+",0"+a+"0,"+n+a+n+",0"+a+"0,-"+n+a+"-"+n+",0Z")}},"diamond-tall":{n:23,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.7,2),i=Yn(e*1.4,2);return is(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},"diamond-wide":{n:24,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2),i=Yn(e*.7,2);return is(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},hourglass:{n:25,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"H-"+n+"L"+n+",-"+n+"H-"+n+"Z")},noDot:!0},bowtie:{n:26,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"V-"+n+"L-"+n+","+n+"V-"+n+"Z")},noDot:!0},"circle-cross":{n:27,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"circle-x":{n:28,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/soe,2);return is(t,r,"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"square-cross":{n:29,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"square-x":{n:30,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"diamond-cross":{n:31,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM0,-"+n+"V"+n+"M-"+n+",0H"+n)},needLine:!0,noDot:!0},"diamond-x":{n:32,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2),i=Yn(e*.65,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM-"+i+",-"+i+"L"+i+","+i+"M-"+i+","+i+"L"+i+",-"+i)},needLine:!0,noDot:!0},"cross-thin":{n:33,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"x-thin":{n:34,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*.85,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i)},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e/2,2),i=Yn(e,2);return is(t,r,"M"+n+","+i+"V-"+i+"M"+(n-i)+",-"+i+"V"+i+"M"+i+","+n+"H-"+i+"M-"+i+","+(n-i)+"H"+i)},needLine:!0,noFill:!0},"y-up":{n:37,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+n+","+a+"L0,0M"+n+","+a+"L0,0M0,-"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-down":{n:38,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+n+",-"+a+"L0,0M"+n+",-"+a+"L0,0M0,"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-left":{n:39,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M"+a+","+n+"L0,0M"+a+",-"+n+"L0,0M-"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-right":{n:40,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+a+","+n+"L0,0M-"+a+",-"+n+"L0,0M"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"line-ew":{n:41,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ns":{n:42,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M0,"+n+"V-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ne":{n:43,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},"line-nw":{n:44,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n)},needLine:!0,noDot:!0,noFill:!0},"arrow-up":{n:45,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,noDot:!0},"arrow-down":{n:46,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M0,0L-"+n+",-"+i+"H"+n+"Z")},noDot:!0},"arrow-left":{n:47,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,0L"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-right":{n:48,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,0L-"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-bar-up":{n:49,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,needLine:!0,noDot:!0},"arrow-bar-down":{n:50,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+",-"+i+"H"+n+"Z")},needLine:!0,noDot:!0},"arrow-bar-left":{n:51,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,-"+i+"V"+i+"M0,0L"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},"arrow-bar-right":{n:52,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,-"+i+"V"+i+"M0,0L-"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},arrow:{n:53,f:function(e,t,r){if(rs(t))return ts;var n=LO/2.5,i=2*e*PO(n),a=2*e*IO(n);return is(t,r,"M0,0L"+-i+","+a+"L"+i+","+a+"Z")},backoff:.9,noDot:!0},"arrow-wide":{n:54,f:function(e,t,r){if(rs(t))return ts;var n=LO/4,i=2*e*PO(n),a=2*e*IO(n);return is(t,r,"M0,0L"+-i+","+a+"A "+2*e+","+2*e+" 0 0 1 "+i+","+a+"Z")},backoff:.4,noDot:!0}};function rs(e){return e===null}var loe,uoe,coe,foe;function is(e,t,r){if((!e||e%360===0)&&!t)return r;if(coe===e&&foe===t&&loe===r)return uoe;coe=e,foe=t,loe=r;function n(b,p){var E=PO(b),k=IO(b),A=p[0],L=p[1]+(t||0);return[A*E-L*k,A*k+L*E]}for(var i=e/180*LO,a=0,o=0,s=fat(r),l="",u=0;u{"use strict";var od=xa(),du=Mr(),hat=du.numberFormat,Ab=uo(),OO=id(),tL=ba(),Xd=va(),dat=Mu(),KS=du.strTranslate,rL=Pl(),vat=Zp(),pat=Nh(),gat=pat.LINE_SPACING,Toe=U1().DESELECTDIM,mat=lu(),yat=S3(),_at=rp().appendArrayPointValue,na=Roe.exports={};na.font=function(e,t){var r=t.variant,n=t.style,i=t.weight,a=t.color,o=t.size,s=t.family,l=t.shadow,u=t.lineposition,c=t.textcase;s&&e.style("font-family",s),o+1&&e.style("font-size",o+"px"),a&&e.call(Xd.fill,a),i&&e.style("font-weight",i),n&&e.style("font-style",n),r&&e.style("font-variant",r),c&&e.style("text-transform",RO(bat(c))),l&&e.style("text-shadow",l==="auto"?rL.makeTextShadow(Xd.contrast(a)):RO(l)),u&&e.style("text-decoration-line",RO(wat(u)))};function RO(e){return e==="none"?void 0:e}var xat={normal:"none",lower:"lowercase",upper:"uppercase","word caps":"capitalize"};function bat(e){return xat[e]}function wat(e){return e.replace("under","underline").replace("over","overline").replace("through","line-through").split("+").join(" ")}na.setPosition=function(e,t,r){e.attr("x",t).attr("y",r)};na.setSize=function(e,t,r){e.attr("width",t).attr("height",r)};na.setRect=function(e,t,r,n,i){e.call(na.setPosition,t,r).call(na.setSize,n,i)};na.translatePoint=function(e,t,r,n){var i=r.c2p(e.x),a=n.c2p(e.y);if(Ab(i)&&Ab(a)&&t.node())t.node().nodeName==="text"?t.attr("x",i).attr("y",a):t.attr("transform",KS(i,a));else return!1;return!0};na.translatePoints=function(e,t,r){e.each(function(n){var i=od.select(this);na.translatePoint(n,i,t,r)})};na.hideOutsideRangePoint=function(e,t,r,n,i,a){t.attr("display",r.isPtWithinRange(e,i)&&n.isPtWithinRange(e,a)?null:"none")};na.hideOutsideRangePoints=function(e,t){if(t._hasClipOnAxisFalse){var r=t.xaxis,n=t.yaxis;e.each(function(i){var a=i[0].trace,o=a.xcalendar,s=a.ycalendar,l=tL.traceIs(a,"bar-like")?".bartext":".point,.textpoint";e.selectAll(l).each(function(u){na.hideOutsideRangePoint(u,od.select(this),r,n,o,s)})})}};na.crispRound=function(e,t,r){return!t||!Ab(t)?r||0:e._context.staticPlot?t:t<1?1:Math.round(t)};na.singleLineStyle=function(e,t,r,n,i){t.style("fill","none");var a=(((e||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||"";Xd.stroke(t,n||a.color),na.dashLine(t,s,o)};na.lineGroupStyle=function(e,t,r,n){e.style("fill","none").each(function(i){var a=(((i||[])[0]||{}).trace||{}).line||{},o=t||a.width||0,s=n||a.dash||"";od.select(this).call(Xd.stroke,r||a.color).call(na.dashLine,s,o)})};na.dashLine=function(e,t,r){r=+r||0,t=na.dashStyle(t,r),e.style({"stroke-dasharray":t,"stroke-width":r+"px"})};na.dashStyle=function(e,t){t=+t||1;var r=Math.max(t,3);return e==="solid"?e="":e==="dot"?e=r+"px,"+r+"px":e==="dash"?e=3*r+"px,"+3*r+"px":e==="longdash"?e=5*r+"px,"+5*r+"px":e==="dashdot"?e=3*r+"px,"+r+"px,"+r+"px,"+r+"px":e==="longdashdot"&&(e=5*r+"px,"+2*r+"px,"+r+"px,"+2*r+"px"),e};function Aoe(e,t,r,n){var i=t.fillpattern,a=t.fillgradient,o=i&&na.getPatternAttr(i.shape,0,"");if(o){var s=na.getPatternAttr(i.bgcolor,0,null),l=na.getPatternAttr(i.fgcolor,0,null),u=i.fgopacity,c=na.getPatternAttr(i.size,0,8),f=na.getPatternAttr(i.solidity,0,.3),h=t.uid;na.pattern(e,"point",r,h,o,c,f,void 0,i.fillmode,s,l,u)}else if(a&&a.type!=="none"){var d=a.type,v="scatterfill-"+t.uid;if(n&&(v="legendfill-"+t.uid),!n&&(a.start!==void 0||a.stop!==void 0)){var x,b;d==="horizontal"?(x={x:a.start,y:0},b={x:a.stop,y:0}):d==="vertical"&&(x={x:0,y:a.start},b={x:0,y:a.stop}),x.x=t._xA.c2p(x.x===void 0?t._extremes.x.min[0].val:x.x,!0),x.y=t._yA.c2p(x.y===void 0?t._extremes.y.min[0].val:x.y,!0),b.x=t._xA.c2p(b.x===void 0?t._extremes.x.max[0].val:b.x,!0),b.y=t._yA.c2p(b.y===void 0?t._extremes.y.max[0].val:b.y,!0),e.call(Eoe,r,v,"linear",a.colorscale,"fill",x,b,!0,!1)}else d==="horizontal"&&(d=d+"reversed"),e.call(na.gradient,r,v,d,a.colorscale,"fill")}else t.fillcolor&&e.call(Xd.fill,t.fillcolor)}na.singleFillStyle=function(e,t){var r=od.select(e.node()),n=r.data(),i=((n[0]||[])[0]||{}).trace||{};Aoe(e,i,t,!1)};na.fillGroupStyle=function(e,t,r){e.style("stroke-width",0).each(function(n){var i=od.select(this);n[0].trace&&Aoe(i,n[0].trace,t,r)})};var voe=doe();na.symbolNames=[];na.symbolFuncs=[];na.symbolBackOffs=[];na.symbolNeedLines={};na.symbolNoDot={};na.symbolNoFill={};na.symbolList=[];Object.keys(voe).forEach(function(e){var t=voe[e],r=t.n;na.symbolList.push(r,String(r),e,r+100,String(r+100),e+"-open"),na.symbolNames[r]=e,na.symbolFuncs[r]=t.f,na.symbolBackOffs[r]=t.backoff||0,t.needLine&&(na.symbolNeedLines[r]=!0),t.noDot?na.symbolNoDot[r]=!0:na.symbolList.push(r+200,String(r+200),e+"-dot",r+300,String(r+300),e+"-open-dot"),t.noFill&&(na.symbolNoFill[r]=!0)});var Tat=na.symbolNames.length,Aat="M0,0.5L0.5,0L0,-0.5L-0.5,0Z";na.symbolNumber=function(e){if(Ab(e))e=+e;else if(typeof e=="string"){var t=0;e.indexOf("-open")>0&&(t=100,e=e.replace("-open","")),e.indexOf("-dot")>0&&(t+=200,e=e.replace("-dot","")),e=na.symbolNames.indexOf(e),e>=0&&(e+=t)}return e%100>=Tat||e>=400?0:Math.floor(Math.max(e,0))};function Soe(e,t,r,n){var i=e%100;return na.symbolFuncs[i](t,r,n)+(e>=200?Aat:"")}var poe=hat("~f"),Moe={radial:{type:"radial"},radialreversed:{type:"radial",reversed:!0},horizontal:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0}},horizontalreversed:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0},reversed:!0},vertical:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0}},verticalreversed:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0},reversed:!0}};na.gradient=function(e,t,r,n,i,a){var o=Moe[n];return Eoe(e,t,r,o.type,i,a,o.start,o.stop,!1,o.reversed)};function Eoe(e,t,r,n,i,a,o,s,l,u){var c=i.length,f;n==="linear"?f={node:"linearGradient",attrs:{x1:o.x,y1:o.y,x2:s.x,y2:s.y,gradientUnits:l?"userSpaceOnUse":"objectBoundingBox"},reversed:u}:n==="radial"&&(f={node:"radialGradient",reversed:u});for(var h=new Array(c),d=0;d=0&&e.i===void 0&&(e.i=a.i),t.style("opacity",n.selectedOpacityFn?n.selectedOpacityFn(e):e.mo===void 0?o.opacity:e.mo),n.ms2mrc){var l;e.ms==="various"||o.size==="various"?l=3:l=n.ms2mrc(e.ms),e.mrc=l,n.selectedSizeFn&&(l=e.mrc=n.selectedSizeFn(e));var u=na.symbolNumber(e.mx||o.symbol)||0;e.om=u%200>=100;var c=UO(e,r),f=NO(e,r);t.attr("d",Soe(u,l,c,f))}var h=!1,d,v,x;if(e.so)x=s.outlierwidth,v=s.outliercolor,d=o.outliercolor;else{var b=(s||{}).width;x=(e.mlw+1||b+1||(e.trace?(e.trace.marker.line||{}).width:0)+1)-1||0,"mlc"in e?v=e.mlcc=n.lineScale(e.mlc):du.isArrayOrTypedArray(s.color)?v=Xd.defaultLine:v=s.color,du.isArrayOrTypedArray(o.color)&&(d=Xd.defaultLine,h=!0),"mc"in e?d=e.mcc=n.markerScale(e.mc):d=o.color||o.colors||"rgba(0,0,0,0)",n.selectedColorFn&&(d=n.selectedColorFn(e))}if(e.om)t.call(Xd.stroke,d).style({"stroke-width":(x||1)+"px",fill:"none"});else{t.style("stroke-width",(e.isBlank?0:x)+"px");var p=o.gradient,E=e.mgt;E?h=!0:E=p&&p.type,du.isArrayOrTypedArray(E)&&(E=E[0],Moe[E]||(E=0));var k=o.pattern,A=k&&na.getPatternAttr(k.shape,e.i,"");if(E&&E!=="none"){var L=e.mgc;L?h=!0:L=p.color;var _=r.uid;h&&(_+="-"+e.i),na.gradient(t,i,_,E,[[0,L],[1,d]],"fill")}else if(A){var C=!1,M=k.fgcolor;!M&&a&&a.color&&(M=a.color,C=!0);var g=na.getPatternAttr(M,e.i,a&&a.color||null),P=na.getPatternAttr(k.bgcolor,e.i,null),T=k.fgopacity,F=na.getPatternAttr(k.size,e.i,8),q=na.getPatternAttr(k.solidity,e.i,.3);C=C||e.mcc||du.isArrayOrTypedArray(k.shape)||du.isArrayOrTypedArray(k.bgcolor)||du.isArrayOrTypedArray(k.fgcolor)||du.isArrayOrTypedArray(k.size)||du.isArrayOrTypedArray(k.solidity);var V=r.uid;C&&(V+="-"+e.i),na.pattern(t,"point",i,V,A,F,q,e.mcc,k.fillmode,P,g,T)}else du.isArrayOrTypedArray(d)?Xd.fill(t,d[e.i]):Xd.fill(t,d);x&&Xd.stroke(t,v)}};na.makePointStyleFns=function(e){var t={},r=e.marker;return t.markerScale=na.tryColorscale(r,""),t.lineScale=na.tryColorscale(r,"line"),tL.traceIs(e,"symbols")&&(t.ms2mrc=mat.isBubble(e)?yat(e):function(){return(r.size||6)/2}),e.selectedpoints&&du.extendFlat(t,na.makeSelectedPointStyleFns(e)),t};na.makeSelectedPointStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.marker||{},a=r.marker||{},o=n.marker||{},s=i.opacity,l=a.opacity,u=o.opacity,c=l!==void 0,f=u!==void 0;(du.isArrayOrTypedArray(s)||c||f)&&(t.selectedOpacityFn=function(A){var L=A.mo===void 0?i.opacity:A.mo;return A.selected?c?l:L:f?u:Toe*L});var h=i.color,d=a.color,v=o.color;(d||v)&&(t.selectedColorFn=function(A){var L=A.mcc||h;return A.selected?d||L:v||L});var x=i.size,b=a.size,p=o.size,E=b!==void 0,k=p!==void 0;return tL.traceIs(e,"symbols")&&(E||k)&&(t.selectedSizeFn=function(A){var L=A.mrc||x/2;return A.selected?E?b/2:L:k?p/2:L}),t};na.makeSelectedTextStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return t.selectedTextColorFn=function(c){var f=c.tc||s;return c.selected?l||f:u||(l?f:Xd.addOpacity(f,Toe))},t};na.selectedPointStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=na.makeSelectedPointStyleFns(t),n=t.marker||{},i=[];r.selectedOpacityFn&&i.push(function(a,o){a.style("opacity",r.selectedOpacityFn(o))}),r.selectedColorFn&&i.push(function(a,o){Xd.fill(a,r.selectedColorFn(o))}),r.selectedSizeFn&&i.push(function(a,o){var s=o.mx||n.symbol||0,l=r.selectedSizeFn(o);a.attr("d",Soe(na.symbolNumber(s),l,UO(o,t),NO(o,t))),o.mrc2=l}),i.length&&e.each(function(a){for(var o=od.select(this),s=0;s0?r:0}na.textPointStyle=function(e,t,r){if(e.size()){var n;if(t.selectedpoints){var i=na.makeSelectedTextStyleFns(t);n=i.selectedTextColorFn}var a=t.texttemplate,o=r._fullLayout;e.each(function(s){var l=od.select(this),u=a?du.extractOption(s,t,"txt","texttemplate"):du.extractOption(s,t,"tx","text");if(!u&&u!==0){l.remove();return}if(a){var c=t._module.formatLabels,f=c?c(s,t,o):{},h={};_at(h,t,s.i);var d=t._meta||{};u=du.texttemplateString(u,f,o._d3locale,h,s,d)}var v=s.tp||t.textposition,x=Coe(s,t),b=n?n(s):s.tc||t.textfont.color;l.call(na.font,{family:s.tf||t.textfont.family,weight:s.tw||t.textfont.weight,style:s.ty||t.textfont.style,variant:s.tv||t.textfont.variant,textcase:s.tC||t.textfont.textcase,lineposition:s.tE||t.textfont.lineposition,shadow:s.tS||t.textfont.shadow,size:x,color:b}).text(u).call(rL.convertToTspans,r).call(koe,v,x,s.mrc)})}};na.selectedTextStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=na.makeSelectedTextStyleFns(t);e.each(function(n){var i=od.select(this),a=r.selectedTextColorFn(n),o=n.tp||t.textposition,s=Coe(n,t);Xd.fill(i,a);var l=tL.traceIs(t,"bar-like");koe(i,o,s,n.mrc2||n.mrc,l)})}};var goe=.5;na.smoothopen=function(e,t){if(e.length<3)return"M"+e.join("L");var r="M"+e[0],n=[],i;for(i=1;i=l||A>=c&&A<=l)&&(L<=f&&L>=u||L>=f&&L<=u)&&(e=[A,L])}return e}na.applyBackoff=Ioe;na.makeTester=function(){var e=du.ensureSingleById(od.select("body"),"svg","js-plotly-tester",function(r){r.attr(vat.svgAttrs).style({position:"absolute",left:"-10000px",top:"-10000px",width:"9000px",height:"9000px","z-index":"1"})}),t=du.ensureSingle(e,"path","js-reference-point",function(r){r.attr("d","M0,0H1V1H0Z").style({"stroke-width":0,fill:"black"})});na.tester=e,na.testref=t};na.savedBBoxes={};var zO=0,Eat=1e4;na.bBox=function(e,t,r){r||(r=moe(e));var n;if(r){if(n=na.savedBBoxes[r],n)return du.extendFlat({},n)}else if(e.childNodes.length===1){var i=e.childNodes[0];if(r=moe(i),r){var a=+i.getAttribute("x")||0,o=+i.getAttribute("y")||0,s=i.getAttribute("transform");if(!s){var l=na.bBox(i,!1,r);return a&&(l.left+=a,l.right+=a),o&&(l.top+=o,l.bottom+=o),l}if(r+="~"+a+"~"+o+"~"+s,n=na.savedBBoxes[r],n)return du.extendFlat({},n)}}var u,c;t?u=e:(c=na.tester.node(),u=e.cloneNode(!0),c.appendChild(u)),od.select(u).attr("transform",null).call(rL.positionText,0,0);var f=u.getBoundingClientRect(),h=na.testref.node().getBoundingClientRect();t||c.removeChild(u);var d={height:f.height,width:f.width,left:f.left-h.left,top:f.top-h.top,right:f.right-h.left,bottom:f.bottom-h.top};return zO>=Eat&&(na.savedBBoxes={},zO=0),r&&(na.savedBBoxes[r]=d),zO++,du.extendFlat({},d)};function moe(e){var t=e.getAttribute("data-unformatted");if(t!==null)return t+e.getAttribute("data-math")+e.getAttribute("text-anchor")+e.getAttribute("style")}na.setClipUrl=function(e,t,r){e.attr("clip-path",BO(t,r))};function BO(e,t){if(!e)return null;var r=t._context,n=r._exportedPlot?"":r._baseUrl||"";return n?"url('"+n+"#"+e+"')":"url(#"+e+")"}na.getTranslate=function(e){var t=/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||0,y:+i[1]||0}};na.setTranslate=function(e,t,r){var n=/(\btranslate\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||0,r=r||0,o=o.replace(n,"").trim(),o+=KS(t,r),o=o.trim(),e[a]("transform",o),o};na.getScale=function(e){var t=/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||1,y:+i[1]||1}};na.setScale=function(e,t,r){var n=/(\bscale\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||1,r=r||1,o=o.replace(n,"").trim(),o+="scale("+t+","+r+")",o=o.trim(),e[a]("transform",o),o};var kat=/\s*sc.*/;na.setPointGroupScale=function(e,t,r){if(t=t||1,r=r||1,!!e){var n=t===1&&r===1?"":"scale("+t+","+r+")";e.each(function(){var i=(this.getAttribute("transform")||"").replace(kat,"");i+=n,i=i.trim(),this.setAttribute("transform",i)})}};var Cat=/translate\([^)]*\)\s*$/;na.setTextPointsScale=function(e,t,r){e&&e.each(function(){var n,i=od.select(this),a=i.select("text");if(a.node()){var o=parseFloat(a.attr("x")||0),s=parseFloat(a.attr("y")||0),l=(i.attr("transform")||"").match(Cat);t===1&&r===1?n=[]:n=[KS(o,s),"scale("+t+","+r+")",KS(-o,-s)],l&&n.push(l),i.attr("transform",n.join(""))}})};function NO(e,t){var r;return e&&(r=e.mf),r===void 0&&(r=t.marker&&t.marker.standoff||0),!t._geo&&!t._xA?-r:r}na.getMarkerStandoff=NO;var YS=Math.atan2,bb=Math.cos,E3=Math.sin;function yoe(e,t){var r=t[0],n=t[1];return[r*bb(e)-n*E3(e),r*E3(e)+n*bb(e)]}var _oe,xoe,boe,woe,FO,qO;function UO(e,t){var r=e.ma;r===void 0&&(r=t.marker.angle,(!r||du.isArrayOrTypedArray(r))&&(r=0));var n,i,a=t.marker.angleref;if(a==="previous"||a==="north"){if(t._geo){var o=t._geo.project(e.lonlat);n=o[0],i=o[1]}else{var s=t._xA,l=t._yA;if(s&&l)n=s.c2p(e.x),i=l.c2p(e.y);else return 90}if(t._geo){var u=e.lonlat[0],c=e.lonlat[1],f=t._geo.project([u,c+1e-5]),h=t._geo.project([u+1e-5,c]),d=YS(h[1]-i,h[0]-n),v=YS(f[1]-i,f[0]-n),x;if(a==="north")x=r/180*Math.PI;else if(a==="previous"){var b=u/180*Math.PI,p=c/180*Math.PI,E=_oe/180*Math.PI,k=xoe/180*Math.PI,A=E-b,L=bb(k)*E3(A),_=E3(k)*bb(p)-bb(k)*E3(p)*bb(A);x=-YS(L,_)-Math.PI,_oe=u,xoe=c}var C=yoe(d,[bb(x),0]),M=yoe(v,[E3(x),0]);r=YS(C[1]+M[1],C[0]+M[0])/Math.PI*180,a==="previous"&&!(qO===t.uid&&e.i===FO+1)&&(r=null)}if(a==="previous"&&!t._geo)if(qO===t.uid&&e.i===FO+1&&Ab(n)&&Ab(i)){var g=n-boe,P=i-woe,T=t.line&&t.line.shape||"",F=T.slice(T.length-1);F==="h"&&(P=0),F==="v"&&(g=0),r+=YS(P,g)/Math.PI*180+90}else r=null}return boe=n,woe=i,FO=e.i,qO=t.uid,r}na.getMarkerAngle=UO});var Mb=ye((xrr,qoe)=>{"use strict";var k3=xa(),Lat=uo(),Pat=Xu(),VO=ba(),Sb=Mr(),Doe=Sb.strTranslate,iL=ao(),nL=va(),C3=Pl(),zoe=U1(),Iat=Nh().OPPOSITE_SIDE,Foe=/ [XY][0-9]* /,HO=1.6,GO=1.6;function Rat(e,t,r){var n=e._fullLayout,i=r.propContainer,a=r.propName,o=r.placeholder,s=r.traceIndex,l=r.avoid||{},u=r.attributes,c=r.transform,f=r.containerGroup,h=1,d=i.title,v=(d&&d.text?d.text:"").trim(),x=!1,b=d&&d.font?d.font:{},p=b.family,E=b.size,k=b.color,A=b.weight,L=b.style,_=b.variant,C=b.textcase,M=b.lineposition,g=b.shadow,P=r.subtitlePropName,T=!!P,F=r.subtitlePlaceholder,q=(i.title||{}).subtitle||{text:"",font:{}},V=q.text.trim(),H=!1,X=1,G=q.font,N=G.family,W=G.size,re=G.color,ae=G.weight,_e=G.style,Me=G.variant,ke=G.textcase,ge=G.lineposition,ie=G.shadow,Te;a==="title.text"?Te="titleText":a.indexOf("axis")!==-1?Te="axisTitleText":a.indexOf("colorbar"!==-1)&&(Te="colorbarTitleText");var Ee=e._context.edits[Te];function Ae(kt,Ct){return kt===void 0||Ct===void 0?!1:kt.replace(Foe," % ")===Ct.replace(Foe," % ")}v===""?h=0:Ae(v,o)&&(Ee||(v=""),h=.2,x=!0),T&&(V===""?X=0:Ae(V,F)&&(Ee||(V=""),X=.2,H=!0)),r._meta?v=Sb.templateString(v,r._meta):n._meta&&(v=Sb.templateString(v,n._meta));var ze=v||V||Ee,Ce;f||(f=Sb.ensureSingle(n._infolayer,"g","g-"+t),Ce=n._hColorbarMoveTitle);var me=f.selectAll("text."+t).data(ze?[0]:[]);me.enter().append("text"),me.text(v).attr("class",t),me.exit().remove();var Re=null,ce=t+"-subtitle",Ge=V||Ee;if(T&&Ge&&(Re=f.selectAll("text."+ce).data(Ge?[0]:[]),Re.enter().append("text"),Re.text(V).attr("class",ce),Re.exit().remove()),!ze)return f;function nt(kt,Ct){Sb.syncOrAsync([ct,qt],{title:kt,subtitle:Ct})}function ct(kt){var Ct=kt.title,Yt=kt.subtitle,xr;!c&&Ce&&(c={}),c?(xr="",c.rotate&&(xr+="rotate("+[c.rotate,u.x,u.y]+")"),(c.offset||Ce)&&(xr+=Doe(0,(c.offset||0)-(Ce||0)))):xr=null,Ct.attr("transform",xr);function er(Et){if(Et){var dt=k3.select(Et.node().parentNode).select("."+ce);if(!dt.empty()){var Ht=Et.node().getBBox();if(Ht.height){var $t=Ht.y+Ht.height+HO*W;dt.attr("y",$t)}}}}if(Ct.style("opacity",h*nL.opacity(k)).call(iL.font,{color:nL.rgb(k),size:k3.round(E,2),family:p,weight:A,style:L,variant:_,textcase:C,shadow:g,lineposition:M}).attr(u).call(C3.convertToTspans,e,er),Yt){var Ke=f.select("."+t+"-math-group"),xt=Ct.node().getBBox(),bt=Ke.node()?Ke.node().getBBox():void 0,Lt=bt?bt.y+bt.height+HO*W:xt.y+xt.height+GO*W,St=Sb.extendFlat({},u,{y:Lt});Yt.attr("transform",xr),Yt.style("opacity",X*nL.opacity(re)).call(iL.font,{color:nL.rgb(re),size:k3.round(W,2),family:N,weight:ae,style:_e,variant:Me,textcase:ke,shadow:ie,lineposition:ge}).attr(St).call(C3.convertToTspans,e)}return Pat.previousPromises(e)}function qt(kt){var Ct=kt.title,Yt=k3.select(Ct.node().parentNode);if(l&&l.selection&&l.side&&v){Yt.attr("transform",null);var xr=Iat[l.side],er=l.side==="left"||l.side==="top"?-1:1,Ke=Lat(l.pad)?l.pad:2,xt=iL.bBox(Yt.node()),bt={t:0,b:0,l:0,r:0},Lt=e._fullLayout._reservedMargin;for(var St in Lt)for(var Et in Lt[St]){var dt=Lt[St][Et];bt[Et]=Math.max(bt[Et],dt)}var Ht={left:bt.l,top:bt.t,right:n.width-bt.r,bottom:n.height-bt.b},$t=l.maxShift||er*(Ht[l.side]-xt[l.side]),fr=0;if($t<0)fr=$t;else{var _r=l.offsetLeft||0,Br=l.offsetTop||0;xt.left-=_r,xt.right-=_r,xt.top-=Br,xt.bottom-=Br,l.selection.each(function(){var Nr=iL.bBox(this);Sb.bBoxIntersect(xt,Nr,Ke)&&(fr=Math.max(fr,er*(Nr[l.side]-xt[xr])+Ke))}),fr=Math.min($t,fr),i._titleScoot=Math.abs(fr)}if(fr>0||$t<0){var Or={left:[-fr,0],right:[fr,0],top:[0,-fr],bottom:[0,fr]}[l.side];Yt.attr("transform",Doe(Or[0],Or[1]))}}}me.call(nt,Re);function rt(kt,Ct){kt.text(Ct).on("mouseover.opacity",function(){k3.select(this).transition().duration(zoe.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){k3.select(this).transition().duration(zoe.HIDE_PLACEHOLDER).style("opacity",0)})}if(Ee&&(v?me.on(".opacity",null):(rt(me,o),x=!0),me.call(C3.makeEditable,{gd:e}).on("edit",function(kt){s!==void 0?VO.call("_guiRestyle",e,a,kt,s):VO.call("_guiRelayout",e,a,kt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(nt)}).on("input",function(kt){this.text(kt||" ").call(C3.positionText,u.x,u.y)}),T)){if(T&&!v){var ot=me.node().getBBox(),Rt=ot.y+ot.height+GO*W;Re.attr("y",Rt)}V?Re.on(".opacity",null):(rt(Re,F),H=!0),Re.call(C3.makeEditable,{gd:e}).on("edit",function(kt){VO.call("_guiRelayout",e,"title.subtitle.text",kt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(nt)}).on("input",function(kt){this.text(kt||" ").call(C3.positionText,Re.attr("x"),Re.attr("y"))})}return me.classed("js-placeholder",x),Re&&Re.classed("js-placeholder",H),f}qoe.exports={draw:Rat,SUBTITLE_PADDING_EM:GO,SUBTITLE_PADDING_MATHJAX_EM:HO}});var ym=ye((brr,Voe)=>{"use strict";var Dat=xa(),zat=e3().utcFormat,Nu=Mr(),Fat=Nu.numberFormat,gm=uo(),a_=Nu.cleanNumber,qat=Nu.ms2DateTime,Ooe=Nu.dateTime2ms,mm=Nu.ensureNumber,Boe=Nu.isArrayOrTypedArray,o_=es(),aL=o_.FP_SAFE,bg=o_.BADNUM,Oat=o_.LOG_CLIP,Bat=o_.ONEWEEK,oL=o_.ONEDAY,sL=o_.ONEHOUR,Noe=o_.ONEMIN,Uoe=o_.ONESEC,lL=af(),fL=ad(),uL=fL.HOUR_PATTERN,cL=fL.WEEKDAY_PATTERN;function JS(e){return Math.pow(10,e)}function jO(e){return e!=null}Voe.exports=function(t,r){r=r||{};var n=t._id||"x",i=n.charAt(0);function a(A,L){if(A>0)return Math.log(A)/Math.LN10;if(A<=0&&L&&t.range&&t.range.length===2){var _=t.range[0],C=t.range[1];return .5*(_+C-2*Oat*Math.abs(_-C))}else return bg}function o(A,L,_,C){if((C||{}).msUTC&&gm(A))return+A;var M=Ooe(A,_||t.calendar);if(M===bg)if(gm(A)){A=+A;var g=Math.floor(Nu.mod(A+.05,1)*10),P=Math.round(A-g/10);M=Ooe(new Date(P))+g/10}else return bg;return M}function s(A,L,_){return qat(A,L,_||t.calendar)}function l(A){return t._categories[Math.round(A)]}function u(A){if(jO(A)){if(t._categoriesMap===void 0&&(t._categoriesMap={}),t._categoriesMap[A]!==void 0)return t._categoriesMap[A];t._categories.push(typeof A=="number"?String(A):A);var L=t._categories.length-1;return t._categoriesMap[A]=L,L}return bg}function c(A,L){for(var _=new Array(L),C=0;Ct.range[1]&&(_=!_);for(var C=_?-1:1,M=C*A,g=0,P=0;PF)g=P+1;else{g=M<(T+F)/2?P:P+1;break}}var q=t._B[g]||0;return isFinite(q)?v(A,t._m2,q):0},p=function(A){var L=t._rangebreaks.length;if(!L)return x(A,t._m,t._b);for(var _=0,C=0;Ct._rangebreaks[C].pmax&&(_=C+1);return x(A,t._m2,t._B[_])}}t.c2l=t.type==="log"?a:mm,t.l2c=t.type==="log"?JS:mm,t.l2p=b,t.p2l=p,t.c2p=t.type==="log"?function(A,L){return b(a(A,L))}:b,t.p2c=t.type==="log"?function(A){return JS(p(A))}:p,["linear","-"].indexOf(t.type)!==-1?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=a_,t.c2d=t.c2r=t.l2d=t.l2r=mm,t.d2p=t.r2p=function(A){return t.l2p(a_(A))},t.p2d=t.p2r=p,t.cleanPos=mm):t.type==="log"?(t.d2r=t.d2l=function(A,L){return a(a_(A),L)},t.r2d=t.r2c=function(A){return JS(a_(A))},t.d2c=t.r2l=a_,t.c2d=t.l2r=mm,t.c2r=a,t.l2d=JS,t.d2p=function(A,L){return t.l2p(t.d2r(A,L))},t.p2d=function(A){return JS(p(A))},t.r2p=function(A){return t.l2p(a_(A))},t.p2r=p,t.cleanPos=mm):t.type==="date"?(t.d2r=t.r2d=Nu.identity,t.d2c=t.r2c=t.d2l=t.r2l=o,t.c2d=t.c2r=t.l2d=t.l2r=s,t.d2p=t.r2p=function(A,L,_){return t.l2p(o(A,0,_))},t.p2d=t.p2r=function(A,L,_){return s(p(A),L,_)},t.cleanPos=function(A){return Nu.cleanDate(A,bg,t.calendar)}):t.type==="category"?(t.d2c=t.d2l=u,t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(A){var L=d(A);return L!==void 0?L:t.fraction2r(.5)},t.l2r=t.c2r=mm,t.r2l=d,t.d2p=function(A){return t.l2p(t.r2c(A))},t.p2d=function(A){return l(p(A))},t.r2p=t.d2p,t.p2r=p,t.cleanPos=function(A){return typeof A=="string"&&A!==""?A:mm(A)}):t.type==="multicategory"&&(t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(A){var L=h(A);return L!==void 0?L:t.fraction2r(.5)},t.r2c_just_indices=f,t.l2r=t.c2r=mm,t.r2l=h,t.d2p=function(A){return t.l2p(t.r2c(A))},t.p2d=function(A){return l(p(A))},t.r2p=t.d2p,t.p2r=p,t.cleanPos=function(A){return Array.isArray(A)||typeof A=="string"&&A!==""?A:mm(A)},t.setupMultiCategory=function(A){var L=t._traceIndices,_,C,M=t._matchGroup;if(M&&t._categories.length===0){for(var g in M)if(g!==n){var P=r[lL.id2name(g)];L=L.concat(P._traceIndices)}}var T=[[0,{}],[0,{}]],F=[];for(_=0;_P[1]&&(C[g?0:1]=_),C[0]===C[1]){var T=t.l2r(L),F=t.l2r(_);if(L!==void 0){var q=T+1;_!==void 0&&(q=Math.min(q,F)),C[g?1:0]=q}if(_!==void 0){var V=F+1;L!==void 0&&(V=Math.max(V,T)),C[g?0:1]=V}}}},t.cleanRange=function(A,L){t._cleanRange(A,L),t.limitRange(A)},t._cleanRange=function(A,L){L||(L={}),A||(A="range");var _=Nu.nestedProperty(t,A).get(),C,M;if(t.type==="date"?M=Nu.dfltRange(t.calendar):i==="y"?M=fL.DFLTRANGEY:t._name==="realaxis"?M=[0,1]:M=L.dfltRange||fL.DFLTRANGEX,M=M.slice(),(t.rangemode==="tozero"||t.rangemode==="nonnegative")&&(M[0]=0),!_||_.length!==2){Nu.nestedProperty(t,A).set(M);return}var g=_[0]===null,P=_[1]===null;for(t.type==="date"&&!t.autorange&&(_[0]=Nu.cleanDate(_[0],bg,t.calendar),_[1]=Nu.cleanDate(_[1],bg,t.calendar)),C=0;C<2;C++)if(t.type==="date"){if(!Nu.isDateTime(_[C],t.calendar)){t[A]=M;break}if(t.r2l(_[0])===t.r2l(_[1])){var T=Nu.constrain(t.r2l(_[0]),Nu.MIN_MS+1e3,Nu.MAX_MS-1e3);_[0]=t.l2r(T-1e3),_[1]=t.l2r(T+1e3);break}}else{if(!gm(_[C]))if(!(g||P)&&gm(_[1-C]))_[C]=_[1-C]*(C?10:.1);else{t[A]=M;break}if(_[C]<-aL?_[C]=-aL:_[C]>aL&&(_[C]=aL),_[0]===_[1]){var F=Math.max(1,Math.abs(_[0]*1e-6));_[0]-=F,_[1]+=F}}},t.setScale=function(A){var L=r._size;if(t.overlaying){var _=lL.getFromId({_fullLayout:r},t.overlaying);t.domain=_.domain}var C=A&&t._r?"_r":"range",M=t.calendar;t.cleanRange(C);var g=t.r2l(t[C][0],M),P=t.r2l(t[C][1],M),T=i==="y";if(T?(t._offset=L.t+(1-t.domain[1])*L.h,t._length=L.h*(t.domain[1]-t.domain[0]),t._m=t._length/(g-P),t._b=-t._m*P):(t._offset=L.l+t.domain[0]*L.w,t._length=L.w*(t.domain[1]-t.domain[0]),t._m=t._length/(P-g),t._b=-t._m*g),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks){var F,q;if(t._rangebreaks=t.locateBreaks(Math.min(g,P),Math.max(g,P)),t._rangebreaks.length){for(F=0;FP&&(V=!V),V&&t._rangebreaks.reverse();var H=V?-1:1;for(t._m2=H*t._length/(Math.abs(P-g)-t._lBreaks),t._B.push(-t._m2*(T?P:g)),F=0;FM&&(M+=7,gM&&(M+=24,g=C&&g=C&&A=ie.min&&(_eie.max&&(ie.max=Me),ke=!1)}ke&&P.push({min:_e,max:Me})}};for(_=0;_{"use strict";var Hoe=uo(),WO=Mr(),Nat=es().BADNUM,hL=WO.isArrayOrTypedArray,Uat=WO.isDateTime,Vat=WO.cleanNumber,Goe=Math.round;Woe.exports=function(t,r,n){var i=t,a=n.noMultiCategory;if(hL(i)&&!i.length)return"-";if(!a&&Zat(i))return"multicategory";if(a&&Array.isArray(i[0])){for(var o=[],s=0;sa*2}function joe(e){return Math.max(1,(e-1)/1e3)}function Wat(e,t){for(var r=e.length,n=joe(r),i=0,a=0,o={},s=0;si*2}function Zat(e){return hL(e[0])&&hL(e[1])}});var wg=ye((Trr,ese)=>{"use strict";var Xat=xa(),Koe=uo(),s_=Mr(),dL=es().FP_SAFE,Yat=ba(),Kat=ao(),Joe=af(),Jat=Joe.getFromId,$at=Joe.isLinked;ese.exports={applyAutorangeOptions:Qoe,getAutoRange:ZO,makePadFn:XO,doAutoRange:eot,findExtremes:tot,concatExtremes:JO};function ZO(e,t){var r,n,i=[],a=e._fullLayout,o=XO(a,t,0),s=XO(a,t,1),l=JO(e,t),u=l.min,c=l.max;if(u.length===0||c.length===0)return s_.simpleMap(t.range,t.r2l);var f=u[0].val,h=c[0].val;for(r=1;r0&&(P=k-o(_)-s(C),P>A?T/P>L&&(M=_,g=C,L=T/P):T/k>L&&(M={val:_.val,nopad:1},g={val:C.val,nopad:1},L=T/k));function F(G,N){return Math.max(G,s(N))}if(f===h){var q=f-1,V=f+1;if(p)if(f===0)i=[0,1];else{var H=(f>0?c:u).reduce(F,0),X=f/(1-Math.min(.5,H/k));i=f>0?[0,X]:[X,0]}else E?i=[Math.max(0,q),Math.max(1,V)]:i=[q,V]}else p?(M.val>=0&&(M={val:0,nopad:1}),g.val<=0&&(g={val:0,nopad:1})):E&&(M.val-L*o(M)<0&&(M={val:0,nopad:1}),g.val<=0&&(g={val:1,nopad:1})),L=(g.val-M.val-Zoe(t,_.val,C.val))/(k-o(M)-s(g)),i=[M.val-L*o(M),g.val+L*s(g)];return i=Qoe(i,t),t.limitRange&&t.limitRange(),v&&i.reverse(),s_.simpleMap(i,t.l2r||Number)}function Zoe(e,t,r){var n=0;if(e.rangebreaks)for(var i=e.locateBreaks(t,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),_=A((e._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),C=A(r.vpadplus||r.vpad),M=A(r.vpadminus||r.vpad);if(!u){if(E=1/0,k=-1/0,l)for(f=0;f0&&(E=h),h>k&&h-dL&&(E=h),h>k&&h=T;f--)P(f);return{min:n,max:i,opts:r}}function YO(e,t,r,n){$oe(e,t,r,n,rot)}function KO(e,t,r,n){$oe(e,t,r,n,iot)}function $oe(e,t,r,n,i){for(var a=n.tozero,o=n.extrapad,s=!0,l=0;l=r&&(u.extrapad||!o)){s=!1;break}else i(t,u.val)&&u.pad<=r&&(o||!u.extrapad)&&(e.splice(l,1),l--)}if(s){var c=a&&t===0;e.push({val:t,pad:c?0:r,extrapad:c?!1:o})}}function Yoe(e){return Koe(e)&&Math.abs(e)=t}function not(e,t){var r=t.autorangeoptions;return r&&r.minallowed!==void 0&&vL(t,r.minallowed,r.maxallowed)?r.minallowed:r&&r.clipmin!==void 0&&vL(t,r.clipmin,r.clipmax)?Math.max(e,t.d2l(r.clipmin)):e}function aot(e,t){var r=t.autorangeoptions;return r&&r.maxallowed!==void 0&&vL(t,r.minallowed,r.maxallowed)?r.maxallowed:r&&r.clipmax!==void 0&&vL(t,r.clipmin,r.clipmax)?Math.min(e,t.d2l(r.clipmax)):e}function vL(e,t,r){return t!==void 0&&r!==void 0?(t=e.d2l(t),r=e.d2l(r),t=l&&(a=l,r=l),o<=l&&(o=l,n=l)}}return r=not(r,t),n=aot(n,t),[r,n]}});var Qa=ye((Arr,wse)=>{"use strict";var w0=xa(),ph=uo(),P3=Xu(),QS=ba(),Vo=Mr(),I3=Vo.strTranslate,Eb=Pl(),oot=Mb(),eM=va(),Xp=ao(),sot=Cd(),tse=bO(),Yd=es(),lot=Yd.ONEMAXYEAR,mL=Yd.ONEAVGYEAR,yL=Yd.ONEMINYEAR,uot=Yd.ONEMAXQUARTER,tB=Yd.ONEAVGQUARTER,_L=Yd.ONEMINQUARTER,cot=Yd.ONEMAXMONTH,R3=Yd.ONEAVGMONTH,xL=Yd.ONEMINMONTH,Yp=Yd.ONEWEEK,Fv=Yd.ONEDAY,l_=Fv/2,xm=Yd.ONEHOUR,tM=Yd.ONEMIN,bL=Yd.ONESEC,fot=Yd.ONEMILLI,hot=Yd.ONEMICROSEC,kb=Yd.MINUS_SIGN,AL=Yd.BADNUM,rB={K:"zeroline"},iB={K:"gridline",L:"path"},nB={K:"minor-gridline",L:"path"},hse={K:"tick",L:"path"},rse={K:"tick",L:"text"},ise={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},SL=Nh(),$S=SL.MID_SHIFT,Cb=SL.CAP_SHIFT,rM=SL.LINE_SPACING,dot=SL.OPPOSITE_SIDE,wL=3,kn=wse.exports={};kn.setConvert=ym();var vot=L3(),Ay=af(),pot=Ay.idSort,got=Ay.isLinked;kn.id2name=Ay.id2name;kn.name2id=Ay.name2id;kn.cleanId=Ay.cleanId;kn.list=Ay.list;kn.listIds=Ay.listIds;kn.getFromId=Ay.getFromId;kn.getFromTrace=Ay.getFromTrace;var dse=wg();kn.getAutoRange=dse.getAutoRange;kn.findExtremes=dse.findExtremes;var mot=1e-4;function lB(e){var t=(e[1]-e[0])*mot;return[e[0]-t,e[1]+t]}kn.coerceRef=function(e,t,r,n,i,a){var o=n.charAt(n.length-1),s=r._fullLayout._subplots[o+"axis"],l=n+"ref",u={};return i||(i=s[0]||(typeof a=="string"?a:a[0])),a||(a=i),s=s.concat(s.map(function(c){return c+" domain"})),u[l]={valType:"enumerated",values:s.concat(a?typeof a=="string"?[a]:a:[]),dflt:i},Vo.coerce(e,t,u,l)};kn.getRefType=function(e){return e===void 0?e:e==="paper"?"paper":e==="pixel"?"pixel":/( domain)$/.test(e)?"domain":"range"};kn.coercePosition=function(e,t,r,n,i,a){var o,s,l=kn.getRefType(n);if(l!=="range")o=Vo.ensureNumber,s=r(i,a);else{var u=kn.getFromId(t,n);a=u.fraction2r(a),s=r(i,a),o=u.cleanPos}e[i]=o(s)};kn.cleanPosition=function(e,t,r){var n=r==="paper"||r==="pixel"?Vo.ensureNumber:kn.getFromId(t,r).cleanPos;return n(e)};kn.redrawComponents=function(e,t){t=t||kn.listIds(e);var r=e._fullLayout;function n(i,a,o,s){for(var l=QS.getComponentMethod(i,a),u={},c=0;c2e-6||((r-e._forceTick0)/e._minDtick%1+1.000001)%1>2e-6)&&(e._minDtick=0))};kn.saveRangeInitial=function(e,t){for(var r=kn.list(e,"",!0),n=!1,i=0;if*.3||u(n)||u(i))){var h=r.dtick/2;e+=e+ho){var s=Number(r.substr(1));a.exactYears>o&&s%12===0?e=kn.tickIncrement(e,"M6","reverse")+Fv*1.5:a.exactMonths>o?e=kn.tickIncrement(e,"M1","reverse")+Fv*15.5:e-=l_;var l=kn.tickIncrement(e,r);if(l<=n)return l}return e}kn.prepMinorTicks=function(e,t,r){if(!t.minor.dtick){delete e.dtick;var n=t.dtick&&ph(t._tmin),i;if(n){var a=kn.tickIncrement(t._tmin,t.dtick,!0);i=[t._tmin,a*.99+t._tmin*.01]}else{var o=Vo.simpleMap(t.range,t.r2l);i=[o[0],.8*o[0]+.2*o[1]]}if(e.range=Vo.simpleMap(i,t.l2r),e._isMinor=!0,kn.prepTicks(e,r),n){var s=ph(t.dtick),l=ph(e.dtick),u=s?t.dtick:+t.dtick.substring(1),c=l?e.dtick:+e.dtick.substring(1);s&&l?$O(u,c)?u===2*Yp&&c===2*Fv&&(e.dtick=Yp):u===2*Yp&&c===3*Fv?e.dtick=Yp:u===Yp&&!(t._input.minor||{}).nticks?e.dtick=Fv:ose(u/c,2.5)?e.dtick=u/2:e.dtick=u:String(t.dtick).charAt(0)==="M"?l?e.dtick="M1":$O(u,c)?u>=12&&c===2&&(e.dtick="M3"):e.dtick=t.dtick:String(e.dtick).charAt(0)==="L"?String(t.dtick).charAt(0)==="L"?$O(u,c)||(e.dtick=ose(u/c,2.5)?t.dtick/2:t.dtick):e.dtick="D1":e.dtick==="D2"&&+t.dtick>1&&(e.dtick=1)}e.range=t.range}t.minor._tick0Init===void 0&&(e.tick0=t.tick0)};function $O(e,t){return Math.abs((e/t+.5)%1-.5)<.001}function ose(e,t){return Math.abs(e/t-1)<.001}kn.prepTicks=function(e,t){var r=Vo.simpleMap(e.range,e.r2l,void 0,void 0,t);if(e.tickmode==="auto"||!e.dtick){var n=e.nticks,i;n||(e.type==="category"||e.type==="multicategory"?(i=e.tickfont?Vo.bigFont(e.tickfont.size||12):15,n=e._length/i):(i=e._id.charAt(0)==="y"?40:80,n=Vo.constrain(e._length/i,4,9)+1),e._name==="radialaxis"&&(n*=2)),e.minor&&e.minor.tickmode!=="array"||e.tickmode==="array"&&(n*=100),e._roughDTick=Math.abs(r[1]-r[0])/n,kn.autoTicks(e,e._roughDTick),e._minDtick>0&&e.dtick0?(a=n-1,o=n):(a=n,o=n);var s=e[a].value,l=e[o].value,u=Math.abs(l-s),c=r||u,f=0;c>=yL?u>=yL&&u<=lot?f=u:f=mL:r===tB&&c>=_L?u>=_L&&u<=uot?f=u:f=tB:c>=xL?u>=xL&&u<=cot?f=u:f=R3:r===Yp&&c>=Yp?f=Yp:c>=Fv?f=Fv:r===l_&&c>=l_?f=l_:r===xm&&c>=xm&&(f=xm);var h;f>=u&&(f=u,h=!0);var d=i+f;if(t.rangebreaks&&f>0){for(var v=84,x=0,b=0;bYp&&(f=u)}(f>0||n===0)&&(e[n].periodX=i+f/2)}}kn.calcTicks=function(t,r){for(var n=t.type,i=t.calendar,a=t.ticklabelstep,o=t.ticklabelmode==="period",s=t.range[0]>t.range[1],l=!t.ticklabelindex||Vo.isArrayOrTypedArray(t.ticklabelindex)?t.ticklabelindex:[t.ticklabelindex],u=Vo.simpleMap(t.range,t.r2l,void 0,void 0,r),c=u[1]=(k?0:1);A--){var L=!A;A?(t._dtickInit=t.dtick,t._tick0Init=t.tick0):(t.minor._dtickInit=t.minor.dtick,t.minor._tick0Init=t.minor.tick0);var _=A?t:Vo.extendFlat({},t,t.minor);if(L?kn.prepMinorTicks(_,t,r):kn.prepTicks(_,r),_.tickmode==="array"){A?(b=[],v=sse(t,!L)):(p=[],x=sse(t,!L));continue}if(_.tickmode==="sync"){b=[],v=Tot(t);continue}var C=lB(u),M=C[0],g=C[1],P=ph(_.dtick),T=n==="log"&&!(P||_.dtick.charAt(0)==="L"),F=kn.tickFirst(_,r);if(A){if(t._tmin=F,F=g:V<=g;V=kn.tickIncrement(V,G,c,i)){if(A&&H++,_.rangebreaks&&!c){if(V=h)break}if(b.length>d||V===q)break;q=V;var N={value:V};A?(T&&V!==(V|0)&&(N.simpleLabel=!0),a>1&&H%a&&(N.skipLabel=!0),b.push(N)):(N.minor=!0,p.push(N))}}if(!p||p.length<2)l=!1;else{var W=(p[1].value-p[0].value)*(s?-1:1);Zot(W,t.tickformat)||(l=!1)}if(!l)E=b;else{var re=b.concat(p);o&&b.length&&(re=re.slice(1)),re=re.sort(function(Rt,kt){return Rt.value-kt.value}).filter(function(Rt,kt,Ct){return kt===0||Rt.value!==Ct[kt-1].value});var ae=re.map(function(Rt,kt){return Rt.minor===void 0&&!Rt.skipLabel?kt:null}).filter(function(Rt){return Rt!==null});ae.forEach(function(Rt){l.map(function(kt){var Ct=Rt+kt;Ct>=0&&Ct-1;ze--){if(b[ze].drop){b.splice(ze,1);continue}b[ze].value=eB(b[ze].value,t);var ce=t.c2p(b[ze].value);(Ce?Re>ce-me:Reh||Yth&&(Ct.periodX=h),Yti&&hmL)t/=mL,n=i(10),e.dtick="M"+12*_m(t,n,pL);else if(a>R3)t/=R3,e.dtick="M"+_m(t,1,lse);else if(a>Fv){if(e.dtick=_m(t,Fv,e._hasDayOfWeekBreaks?[1,2,7,14]:Aot),!r){var o=kn.getTickFormat(e),s=e.ticklabelmode==="period";s&&(e._rawTick0=e.tick0),/%[uVW]/.test(o)?e.tick0=Vo.dateTick0(e.calendar,2):e.tick0=Vo.dateTick0(e.calendar,1),s&&(e._dowTick0=e.tick0)}}else a>xm?e.dtick=_m(t,xm,lse):a>tM?e.dtick=_m(t,tM,use):a>bL?e.dtick=_m(t,bL,use):(n=i(10),e.dtick=_m(t,n,pL))}else if(e.type==="log"){e.tick0=0;var l=Vo.simpleMap(e.range,e.r2l);if(e._isMinor&&(t*=1.5),t>.7)e.dtick=Math.ceil(t);else if(Math.abs(l[1]-l[0])<1){var u=1.5*Math.abs((l[1]-l[0])/t);t=Math.abs(Math.pow(10,l[1])-Math.pow(10,l[0]))/u,n=i(10),e.dtick="L"+_m(t,n,pL)}else e.dtick=t>.3?"D2":"D1"}else e.type==="category"||e.type==="multicategory"?(e.tick0=0,e.dtick=Math.ceil(Math.max(t,1))):fB(e)?(e.tick0=0,n=1,e.dtick=_m(t,n,Sot)):(e.tick0=0,n=i(10),e.dtick=_m(t,n,pL));if(e.dtick===0&&(e.dtick=1),!ph(e.dtick)&&typeof e.dtick!="string"){var c=e.dtick;throw e.dtick=1,"ax.dtick error: "+String(c)}};function mse(e){var t=e.dtick;if(e._tickexponent=0,!ph(t)&&typeof t!="string"&&(t=1),(e.type==="category"||e.type==="multicategory")&&(e._tickround=null),e.type==="date"){var r=e.r2l(e.tick0),n=e.l2r(r).replace(/(^-|i)/g,""),i=n.length;if(String(t).charAt(0)==="M")i>10||n.substr(5)!=="01-01"?e._tickround="d":e._tickround=+t.substr(1)%12===0?"y":"m";else if(t>=Fv&&i<=10||t>=Fv*15)e._tickround="d";else if(t>=tM&&i<=16||t>=xm)e._tickround="M";else if(t>=bL&&i<=19||t>=tM)e._tickround="S";else{var a=e.l2r(r+t).replace(/^-/,"").length;e._tickround=Math.max(i,a)-20,e._tickround<0&&(e._tickround=4)}}else if(ph(t)||t.charAt(0)==="L"){var o=e.range.map(e.r2d||Number);ph(t)||(t=Number(t.substr(1))),e._tickround=2-Math.floor(Math.log(t)/Math.LN10+.01);var s=Math.max(Math.abs(o[0]),Math.abs(o[1])),l=Math.floor(Math.log(s)/Math.LN10+.01),u=e.minexponent===void 0?3:e.minexponent;Math.abs(l)>u&&(TL(e.exponentformat)&&!uB(l)?e._tickexponent=3*Math.round((l-1)/3):e._tickexponent=l)}else e._tickround=null}kn.tickIncrement=function(e,t,r,n){var i=r?-1:1;if(ph(t))return Vo.increment(e,i*t);var a=t.charAt(0),o=i*Number(t.substr(1));if(a==="M")return Vo.incrementMonth(e,o,n);if(a==="L")return Math.log(Math.pow(10,e)+o)/Math.LN10;if(a==="D"){var s=t==="D2"?gse:pse,l=e+i*.01,u=Vo.roundUp(Vo.mod(l,1),s,r);return Math.floor(l)+Math.log(w0.round(Math.pow(10,u),1))/Math.LN10}throw"unrecognized dtick "+String(t)};kn.tickFirst=function(e,t){var r=e.r2l||Number,n=Vo.simpleMap(e.range,r,void 0,void 0,t),i=n[1]=0&&p<=e._length?b:null};if(a&&Vo.isArrayOrTypedArray(e.ticktext)){var f=Vo.simpleMap(e.range,e.r2l),h=(Math.abs(f[1]-f[0])-(e._lBreaks||0))/1e4;for(u=0;u"+s;else{var u=nM(e),c=e._trueSide||e.side;(!u&&c==="top"||u&&c==="bottom")&&(o+="
")}t.text=o}function Eot(e,t,r,n,i){var a=e.dtick,o=t.x,s=e.tickformat,l=typeof a=="string"&&a.charAt(0);if(i==="never"&&(i=""),n&&l!=="L"&&(a="L3",l="L"),s||l==="L")t.text=iM(Math.pow(10,o),e,i,n);else if(ph(a)||l==="D"&&Vo.mod(o+.01,1)<.1){var u=Math.round(o),c=Math.abs(u),f=e.exponentformat;f==="power"||TL(f)&&uB(u)?(u===0?t.text=1:u===1?t.text="10":t.text="10"+(u>1?"":kb)+c+"",t.fontSize*=1.25):(f==="e"||f==="E")&&c>2?t.text="1"+f+(u>0?"+":kb)+c:(t.text=iM(Math.pow(10,o),e,"","fakehover"),a==="D1"&&e._id.charAt(0)==="y"&&(t.dy-=t.fontSize/6))}else if(l==="D")t.text=String(Math.round(Math.pow(10,Vo.mod(o,1)))),t.fontSize*=.75;else throw"unrecognized dtick "+String(a);if(e.dtick==="D1"){var h=String(t.text).charAt(0);(h==="0"||h==="1")&&(e._id.charAt(0)==="y"?t.dx-=t.fontSize/4:(t.dy+=t.fontSize/2,t.dx+=(e.range[1]>e.range[0]?1:-1)*t.fontSize*(o<0?.5:.25)))}}function kot(e,t){var r=e._categories[Math.round(t.x)];r===void 0&&(r=""),t.text=String(r)}function Cot(e,t,r){var n=Math.round(t.x),i=e._categories[n]||[],a=i[1]===void 0?"":String(i[1]),o=i[0]===void 0?"":String(i[0]);r?t.text=o+" - "+a:(t.text=a,t.text2=o)}function Lot(e,t,r,n,i){i==="never"?i="":e.showexponent==="all"&&Math.abs(t.x/e.dtick)<1e-6&&(i="hide"),t.text=iM(t.x,e,i,n)}function Pot(e,t,r,n,i){if(e.thetaunit==="radians"&&!r){var a=t.x/180;if(a===0)t.text="0";else{var o=Iot(a);if(o[1]>=100)t.text=iM(Vo.deg2rad(t.x),e,i,n);else{var s=t.x<0;o[1]===1?o[0]===1?t.text="\u03C0":t.text=o[0]+"\u03C0":t.text=["",o[0],"","\u2044","",o[1],"","\u03C0"].join(""),s&&(t.text=kb+t.text)}}}else t.text=iM(t.x,e,i,n)}function Iot(e){function t(s,l){return Math.abs(s-l)<=1e-6}function r(s,l){return t(l,0)?s:r(l,s%l)}function n(s){for(var l=1;!t(Math.round(s*l)/l,s);)l*=10;return l}var i=n(e),a=e*i,o=Math.abs(r(a,i));return[Math.round(a/o),Math.round(i/o)]}var Rot=["f","p","n","\u03BC","m","","k","M","G","T"];function TL(e){return e==="SI"||e==="B"}function uB(e){return e>14||e<-15}function iM(e,t,r,n){var i=e<0,a=t._tickround,o=r||t.exponentformat||"B",s=t._tickexponent,l=kn.getTickFormat(t),u=t.separatethousands;if(n){var c={exponentformat:o,minexponent:t.minexponent,dtick:t.showexponent==="none"?t.dtick:ph(e)&&Math.abs(e)||1,range:t.showexponent==="none"?t.range.map(t.r2d):[0,e||1]};mse(c),a=(Number(c._tickround)||0)+4,s=c._tickexponent,t.hoverformat&&(l=t.hoverformat)}if(l)return t._numFormat(l)(e).replace(/-/g,kb);var f=Math.pow(10,-a)/2;if(o==="none"&&(s=0),e=Math.abs(e),e"+v+"":o==="B"&&s===9?e+="B":TL(o)&&(e+=Rot[s/3+5])}return i?kb+e:e}kn.getTickFormat=function(e){var t;function r(l){return typeof l!="string"?l:Number(l.replace("M",""))*R3}function n(l,u){var c=["L","D"];if(typeof l==typeof u){if(typeof l=="number")return l-u;var f=c.indexOf(l.charAt(0)),h=c.indexOf(u.charAt(0));return f===h?Number(l.replace(/(L|D)/g,""))-Number(u.replace(/(L|D)/g,"")):f-h}else return typeof l=="number"?1:-1}function i(l,u,c){var f=c||function(v){return v},h=u[0],d=u[1];return(!h&&typeof h!="number"||f(h)<=f(l))&&(!d&&typeof d!="number"||f(d)>=f(l))}function a(l,u){var c=u[0]===null,f=u[1]===null,h=n(l,u[0])>=0,d=n(l,u[1])<=0;return(c||h)&&(f||d)}var o,s;if(e.tickformatstops&&e.tickformatstops.length>0)switch(e.type){case"date":case"linear":{for(t=0;t=0&&i.unshift(i.splice(c,1).shift())}});var s={false:{left:0,right:0}};return Vo.syncOrAsync(i.map(function(l){return function(){if(l){var u=kn.getFromId(e,l);r||(r={}),r.axShifts=s,r.overlayingShiftedAx=o;var c=kn.drawOne(e,u,r);return u._shiftPusher&&sB(u,u._fullDepth||0,s,!0),u._r=u.range.slice(),u._rl=Vo.simpleMap(u._r,u.r2l),c}}}))};kn.drawOne=function(e,t,r){r=r||{};var n=r.axShifts||{},i=r.overlayingShiftedAx||[],a,o,s;t.setScale();var l=e._fullLayout,u=t._id,c=u.charAt(0),f=kn.counterLetter(u),h=l._plots[t._mainSubplot];if(!h)return;if(t._shiftPusher=t.autoshift||i.indexOf(t._id)!==-1||i.indexOf(t.overlaying)!==-1,t._shiftPusher&t.anchor==="free"){var d=t.linewidth/2||0;t.ticks==="inside"&&(d+=t.ticklen),sB(t,d,n,!0),sB(t,t.shift||0,n,!1)}(r.skipTitle!==!0||t._shift===void 0)&&(t._shift=Wot(t,n));var v=h[c+"axislayer"],x=t._mainLinePosition,b=x+=t._shift,p=t._mainMirrorPosition,E=t._vals=kn.calcTicks(t),k=[t.mirror,b,p].join("_");for(a=0;a0?Ct.bottom-Rt:0,kt))));var Ke=0,xt=0;if(t._shiftPusher&&(Ke=Math.max(kt,Ct.height>0?rt==="l"?Rt-Ct.left:Ct.right-Rt:0),t.title.text!==l._dfltTitle[c]&&(xt=(t._titleStandoff||0)+(t._titleScoot||0),rt==="l"&&(xt+=fse(t))),t._fullDepth=Math.max(Ke,xt)),t.automargin){Yt={x:0,y:0,r:0,l:0,t:0,b:0};var bt=[0,1],Lt=typeof t._shift=="number"?t._shift:0;if(c==="x"){if(rt==="b"?Yt[rt]=t._depth:(Yt[rt]=t._depth=Math.max(Ct.width>0?Rt-Ct.top:0,kt),bt.reverse()),Ct.width>0){var St=Ct.right-(t._offset+t._length);St>0&&(Yt.xr=1,Yt.r=St);var Et=t._offset-Ct.left;Et>0&&(Yt.xl=0,Yt.l=Et)}}else if(rt==="l"?(t._depth=Math.max(Ct.height>0?Rt-Ct.left:0,kt),Yt[rt]=t._depth-Lt):(t._depth=Math.max(Ct.height>0?Ct.right-Rt:0,kt),Yt[rt]=t._depth+Lt,bt.reverse()),Ct.height>0){var dt=Ct.bottom-(t._offset+t._length);dt>0&&(Yt.yb=0,Yt.b=dt);var Ht=t._offset-Ct.top;Ht>0&&(Yt.yt=1,Yt.t=Ht)}Yt[f]=t.anchor==="free"?t.position:t._anchorAxis.domain[bt[0]],t.title.text!==l._dfltTitle[c]&&(Yt[rt]+=fse(t)+(t.title.standoff||0)),t.mirror&&t.anchor!=="free"&&(xr={x:0,y:0,r:0,l:0,t:0,b:0},xr[ot]=t.linewidth,t.mirror&&t.mirror!==!0&&(xr[ot]+=kt),t.mirror===!0||t.mirror==="ticks"?xr[f]=t._anchorAxis.domain[bt[1]]:(t.mirror==="all"||t.mirror==="allticks")&&(xr[f]=[t._counterDomainMin,t._counterDomainMax][bt[1]]))}qt&&(er=QS.getComponentMethod("rangeslider","autoMarginOpts")(e,t)),typeof t.automargin=="string"&&(cse(Yt,t.automargin),cse(xr,t.automargin)),P3.autoMargin(e,cB(t),Yt),P3.autoMargin(e,xse(t),xr),P3.autoMargin(e,bse(t),er)}),Vo.syncOrAsync(nt)}};function cse(e,t){if(e){var r=Object.keys(ise).reduce(function(n,i){return t.indexOf(i)!==-1&&ise[i].forEach(function(a){n[a]=1}),n},{});Object.keys(e).forEach(function(n){r[n]||(n.length===1?e[n]=0:delete e[n])})}}function Dot(e,t){var r=[],n,i=function(a,o){var s=a.xbnd[o];s!==null&&r.push(Vo.extendFlat({},a,{x:s}))};if(t.length){for(n=0;ne.range[1],s=e.ticklabelposition&&e.ticklabelposition.indexOf("inside")!==-1,l=!s;if(r){var u=o?-1:1;r=r*u}if(n){var c=e.side,f=s&&(c==="top"||c==="left")||l&&(c==="bottom"||c==="right")?1:-1;n=n*f}return e._id.charAt(0)==="x"?function(h){return I3(i+e._offset+e.l2p(aB(h))+r,a+n)}:function(h){return I3(a+n,i+e._offset+e.l2p(aB(h))+r)}};function aB(e){return e.periodX!==void 0?e.periodX:e.x}function Oot(e){var t=e.ticklabelposition||"",r=function(d){return t.indexOf(d)!==-1},n=r("top"),i=r("left"),a=r("right"),o=r("bottom"),s=r("inside"),l=o||i||n||a;if(!l&&!s)return[0,0];var u=e.side,c=l?(e.tickwidth||0)/2:0,f=wL,h=e.tickfont?e.tickfont.size:12;return(o||n)&&(c+=h*Cb,f+=(e.linewidth||0)/2),(i||a)&&(c+=(e.linewidth||0)/2,f+=wL),s&&u==="top"&&(f-=h*(1-Cb)),(i||n)&&(c=-c),(u==="bottom"||u==="right")&&(f=-f),[l?c:0,s?f:0]}kn.makeTickPath=function(e,t,r,n){n||(n={});var i=n.minor;if(i&&!e.minor)return"";var a=n.len!==void 0?n.len:i?e.minor.ticklen:e.ticklen,o=e._id.charAt(0),s=(e.linewidth||1)/2;return o==="x"?"M0,"+(t+s*r)+"v"+a*r:"M"+(t+s*r)+",0h"+a*r};kn.makeLabelFns=function(e,t,r){var n=e.ticklabelposition||"",i=function(F){return n.indexOf(F)!==-1},a=i("top"),o=i("left"),s=i("right"),l=i("bottom"),u=l||o||a||s,c=i("inside"),f=n==="inside"&&e.ticks==="inside"||!c&&e.ticks==="outside"&&e.tickson!=="boundaries",h=0,d=0,v=f?e.ticklen:0;if(c?v*=-1:u&&(v=0),f&&(h+=v,r)){var x=Vo.deg2rad(r);h=v*Math.cos(x)+1,d=v*Math.sin(x)}e.showticklabels&&(f||e.showline)&&(h+=.2*e.tickfont.size),h+=(e.linewidth||1)/2*(c?-1:1);var b={labelStandoff:h,labelShift:d},p,E,k,A,L=0,_=e.side,C=e._id.charAt(0),M=e.tickangle,g;if(C==="x")g=!c&&_==="bottom"||c&&_==="top",A=g?1:-1,c&&(A*=-1),p=d*A,E=t+h*A,k=g?1:-.2,Math.abs(M)===90&&(c?k+=$S:M===-90&&_==="bottom"?k=Cb:M===90&&_==="top"?k=$S:k=.5,L=$S/2*(M/90)),b.xFn=function(F){return F.dx+p+L*F.fontSize},b.yFn=function(F){return F.dy+E+F.fontSize*k},b.anchorFn=function(F,q){if(u){if(o)return"end";if(s)return"start"}return!ph(q)||q===0||q===180?"middle":q*A<0!==c?"end":"start"},b.heightFn=function(F,q,V){return q<-60||q>60?-.5*V:e.side==="top"!==c?-V:0};else if(C==="y"){if(g=!c&&_==="left"||c&&_==="right",A=g?1:-1,c&&(A*=-1),p=h,E=d*A,k=0,!c&&Math.abs(M)===90&&(M===-90&&_==="left"||M===90&&_==="right"?k=Cb:k=.5),c){var P=ph(M)?+M:0;if(P!==0){var T=Vo.deg2rad(P);L=Math.abs(Math.sin(T))*Cb*A,k=0}}b.xFn=function(F){return F.dx+t-(p+F.fontSize*k)*A+L*F.fontSize},b.yFn=function(F){return F.dy+E+F.fontSize*$S},b.anchorFn=function(F,q){return ph(q)&&Math.abs(q)===90?"middle":g?"end":"start"},b.heightFn=function(F,q,V){return e.side==="right"&&(q*=-1),q<-30?-V:q<30?-.5*V:0}}return b};function ML(e){return[e.text,e.x,e.axInfo,e.font,e.fontSize,e.fontColor].join("_")}kn.drawTicks=function(e,t,r){r=r||{};var n=t._id+"tick",i=[].concat(t.minor&&t.minor.ticks?r.vals.filter(function(o){return o.minor&&!o.noTick}):[]).concat(t.ticks?r.vals.filter(function(o){return!o.minor&&!o.noTick}):[]),a=r.layer.selectAll("path."+n).data(i,ML);a.exit().remove(),a.enter().append("path").classed(n,1).classed("ticks",1).classed("crisp",r.crisp!==!1).each(function(o){return eM.stroke(w0.select(this),o.minor?t.minor.tickcolor:t.tickcolor)}).style("stroke-width",function(o){return Xp.crispRound(e,o.minor?t.minor.tickwidth:t.tickwidth,1)+"px"}).attr("d",r.path).style("display",null),EL(t,[hse]),a.attr("transform",r.transFn)};kn.drawGrid=function(e,t,r){if(r=r||{},t.tickmode!=="sync"){var n=t._id+"grid",i=t.minor&&t.minor.showgrid,a=i?r.vals.filter(function(p){return p.minor}):[],o=t.showgrid?r.vals.filter(function(p){return!p.minor}):[],s=r.counterAxis;if(s&&kn.shouldShowZeroLine(e,t,s))for(var l=t.tickmode==="array",u=0;u=0;v--){var x=v?h:d;if(x){var b=x.selectAll("path."+n).data(v?o:a,ML);b.exit().remove(),b.enter().append("path").classed(n,1).classed("crisp",r.crisp!==!1),b.attr("transform",r.transFn).attr("d",r.path).each(function(p){return eM.stroke(w0.select(this),p.minor?t.minor.gridcolor:t.gridcolor||"#ddd")}).style("stroke-dasharray",function(p){return Xp.dashStyle(p.minor?t.minor.griddash:t.griddash,p.minor?t.minor.gridwidth:t.gridwidth)}).style("stroke-width",function(p){return(p.minor?f:t._gw)+"px"}).style("display",null),typeof r.path=="function"&&b.attr("d",r.path)}}EL(t,[iB,nB])}};kn.drawZeroLine=function(e,t,r){r=r||r;var n=t._id+"zl",i=kn.shouldShowZeroLine(e,t,r.counterAxis),a=r.layer.selectAll("path."+n).data(i?[{x:0,id:t._id}]:[]);a.exit().remove(),a.enter().append("path").classed(n,1).classed("zl",1).classed("crisp",r.crisp!==!1).each(function(){r.layer.selectAll("path").sort(function(o,s){return pot(o.id,s.id)})}),a.attr("transform",r.transFn).attr("d",r.path).call(eM.stroke,t.zerolinecolor||eM.defaultLine).style("stroke-width",Xp.crispRound(e,t.zerolinewidth,t._gw||1)+"px").style("display",null),EL(t,[rB])};kn.drawLabels=function(e,t,r){r=r||{};var n=e._fullLayout,i=t._id,a=r.cls||i+"tick",o=r.vals.filter(function(N){return N.text}),s=r.labelFns,l=r.secondary?0:t.tickangle,u=(t._prevTickAngles||{})[a],c=r.layer.selectAll("g."+a).data(t.showticklabels?o:[],ML),f=[];c.enter().append("g").classed(a,1).append("text").attr("text-anchor","middle").each(function(N){var W=w0.select(this),re=e._promises.length;W.call(Eb.positionText,s.xFn(N),s.yFn(N)).call(Xp.font,{family:N.font,size:N.fontSize,color:N.fontColor,weight:N.fontWeight,style:N.fontStyle,variant:N.fontVariant,textcase:N.fontTextcase,lineposition:N.fontLineposition,shadow:N.fontShadow}).text(N.text).call(Eb.convertToTspans,e),e._promises[re]?f.push(e._promises.pop().then(function(){h(W,l)})):h(W,l)}),EL(t,[rse]),c.exit().remove(),r.repositionOnUpdate&&c.each(function(N){w0.select(this).select("text").call(Eb.positionText,s.xFn(N),s.yFn(N))});function h(N,W){N.each(function(re){var ae=w0.select(this),_e=ae.select(".text-math-group"),Me=s.anchorFn(re,W),ke=r.transFn.call(ae.node(),re)+(ph(W)&&+W!=0?" rotate("+W+","+s.xFn(re)+","+(s.yFn(re)-re.fontSize/2)+")":""),ge=Eb.lineCount(ae),ie=rM*re.fontSize,Te=s.heightFn(re,ph(W)?+W:0,(ge-1)*ie);if(Te&&(ke+=I3(0,Te)),_e.empty()){var Ee=ae.select("text");Ee.attr({transform:ke,"text-anchor":Me}),Ee.style("opacity",1),t._adjustTickLabelsOverflow&&t._adjustTickLabelsOverflow()}else{var Ae=Xp.bBox(_e.node()).width,ze=Ae*{end:-.5,start:.5}[Me];_e.attr("transform",ke+I3(ze,0))}})}t._adjustTickLabelsOverflow=function(){var N=t.ticklabeloverflow;if(!(!N||N==="allow")){var W=N.indexOf("hide")!==-1,re=t._id.charAt(0)==="x",ae=0,_e=re?e._fullLayout.width:e._fullLayout.height;if(N.indexOf("domain")!==-1){var Me=Vo.simpleMap(t.range,t.r2l);ae=t.l2p(Me[0])+t._offset,_e=t.l2p(Me[1])+t._offset}var ke=Math.min(ae,_e),ge=Math.max(ae,_e),ie=t.side,Te=1/0,Ee=-1/0;c.each(function(me){var Re=w0.select(this),ce=Re.select(".text-math-group");if(ce.empty()){var Ge=Xp.bBox(Re.node()),nt=0;re?(Ge.right>ge||Ge.leftge||Ge.top+(t.tickangle?0:me.fontSize/4)t["_visibleLabelMin_"+Me._id]?me.style("display","none"):ge.K==="tick"&&!ke&&me.style("display",null)})})})})},h(c,u+1?u:l);function d(){return f.length&&Promise.all(f)}var v=null;function x(){if(h(c,l),o.length&&t.autotickangles&&(t.type!=="log"||String(t.dtick).charAt(0)!=="D")){v=t.autotickangles[0];var N=0,W=[],re,ae=1;c.each(function(Ct){N=Math.max(N,Ct.fontSize);var Yt=t.l2p(Ct.x),xr=oB(this),er=Xp.bBox(xr.node());ae=Math.max(ae,Eb.lineCount(xr)),W.push({top:0,bottom:10,height:10,left:Yt-er.width/2,right:Yt+er.width/2+2,width:er.width+2})});var _e=(t.tickson==="boundaries"||t.showdividers)&&!r.secondary,Me=o.length,ke=Math.abs((o[Me-1].x-o[0].x)*t._m)/(Me-1),ge=_e?ke/2:ke,ie=_e?t.ticklen:N*1.25*ae,Te=Math.sqrt(Math.pow(ge,2)+Math.pow(ie,2)),Ee=ge/Te,Ae=t.autotickangles.map(function(Ct){return Ct*Math.PI/180}),ze=Ae.find(function(Ct){return Math.abs(Math.cos(Ct))<=Ee});ze===void 0&&(ze=Ae.reduce(function(Ct,Yt){return Math.abs(Math.cos(Ct))H*V&&(T=V,M[C]=g[C]=F[C])}var X=Math.abs(T-P);X-A>0?(X-=A,A*=1+A/X):A=0,t._id.charAt(0)!=="y"&&(A=-A),M[_]=E.p2r(E.r2p(g[_])+L*A),E.autorange==="min"||E.autorange==="max reversed"?(M[0]=null,E._rangeInitial0=void 0,E._rangeInitial1=void 0):(E.autorange==="max"||E.autorange==="min reversed")&&(M[1]=null,E._rangeInitial0=void 0,E._rangeInitial1=void 0),n._insideTickLabelsUpdaterange[E._name+".range"]=M}var G=Vo.syncOrAsync(b);return G&&G.then&&e._promises.push(G),G};function Bot(e,t,r){var n=t._id+"divider",i=r.vals,a=r.layer.selectAll("path."+n).data(i,ML);a.exit().remove(),a.enter().insert("path",":first-child").classed(n,1).classed("crisp",1).call(eM.stroke,t.dividercolor).style("stroke-width",Xp.crispRound(e,t.dividerwidth,1)+"px"),a.attr("transform",r.transFn).attr("d",r.path)}kn.getPxPosition=function(e,t){var r=e._fullLayout._size,n=t._id.charAt(0),i=t.side,a;if(t.anchor!=="free"?a=t._anchorAxis:n==="x"?a={_offset:r.t+(1-(t.position||0))*r.h,_length:0}:n==="y"&&(a={_offset:r.l+(t.position||0)*r.w+t._shift,_length:0}),i==="top"||i==="left")return a._offset;if(i==="bottom"||i==="right")return a._offset+a._length};function fse(e){var t=e.title.font.size,r=(e.title.text.match(Eb.BR_TAG_ALL)||[]).length;return e.title.hasOwnProperty("standoff")?t*(Cb+r*rM):r?t*(r+1)*rM:t}function Not(e,t){var r=e._fullLayout,n=t._id,i=n.charAt(0),a=t.title.font.size,o,s=(t.title.text.match(Eb.BR_TAG_ALL)||[]).length;if(t.title.hasOwnProperty("standoff"))t.side==="bottom"||t.side==="right"?o=t._depth+t.title.standoff+a*Cb:(t.side==="top"||t.side==="left")&&(o=t._depth+t.title.standoff+a*($S+s*rM));else{var l=nM(t);if(t.type==="multicategory")o=t._depth;else{var u=1.5*a;l&&(u=.5*a,t.ticks==="outside"&&(u+=t.ticklen)),o=10+u+(t.linewidth?t.linewidth-1:0)}l||(i==="x"?o+=t.side==="top"?a*(t.showticklabels?1:0):a*(t.showticklabels?1.5:.5):o+=t.side==="right"?a*(t.showticklabels?1:.5):a*(t.showticklabels?.5:0))}var c=kn.getPxPosition(e,t),f,h,d;i==="x"?(h=t._offset+t._length/2,d=t.side==="top"?c-o:c+o):(d=t._offset+t._length/2,h=t.side==="right"?c+o:c-o,f={rotate:"-90",offset:0});var v;if(t.type!=="multicategory"){var x=t._selections[t._id+"tick"];if(v={selection:x,side:t.side},x&&x.node()&&x.node().parentNode){var b=Xp.getTranslate(x.node().parentNode);v.offsetLeft=b.x,v.offsetTop=b.y}t.title.hasOwnProperty("standoff")&&(v.pad=0)}return t._titleStandoff=o,oot.draw(e,n+"title",{propContainer:t,propName:t._name+".title.text",placeholder:r._dfltTitle[i],avoid:v,transform:f,attributes:{x:h,y:d,"text-anchor":"middle"}})}kn.shouldShowZeroLine=function(e,t,r){var n=Vo.simpleMap(t.range,t.r2l);return n[0]*n[1]<=0&&t.zeroline&&(t.type==="linear"||t.type==="-")&&!(t.rangebreaks&&t.maskBreaks(0)===AL)&&(_se(t,0)||!Uot(e,t,r,n)||Vot(e,t))};kn.clipEnds=function(e,t){return t.filter(function(r){return _se(e,r.x)})};function _se(e,t){var r=e.l2p(t);return r>1&&r1)for(i=1;i=i.min&&e=hot:/%L/.test(t)?e>=fot:/%[SX]/.test(t)?e>=bL:/%M/.test(t)?e>=tM:/%[HI]/.test(t)?e>=xm:/%p/.test(t)?e>=l_:/%[Aadejuwx]/.test(t)?e>=Fv:/%[UVW]/.test(t)?e>=Yp:/%[Bbm]/.test(t)?e>=xL:/%[q]/.test(t)?e>=_L:/%[Yy]/.test(t)?e>=yL:!0}});var hB=ye((Srr,Tse)=>{"use strict";Tse.exports=function(t,r,n){var i,a;if(n){var o=r==="reversed"||r==="min reversed"||r==="max reversed";i=n[o?1:0],a=n[o?0:1]}var s=t("autorangeoptions.minallowed",a===null?i:void 0),l=t("autorangeoptions.maxallowed",i===null?a:void 0);s===void 0&&t("autorangeoptions.clipmin"),l===void 0&&t("autorangeoptions.clipmax"),t("autorangeoptions.include")}});var dB=ye((Mrr,Ase)=>{"use strict";var Xot=hB();Ase.exports=function(t,r,n,i){var a=r._template||{},o=r.type||a.type||"-";n("minallowed"),n("maxallowed");var s=n("range");if(!s){var l;!i.noInsiderange&&o!=="log"&&(l=n("insiderange"),l&&(l[0]===null||l[1]===null)&&(r.insiderange=!1,l=void 0),l&&(s=n("range",l)))}var u=r.getAutorangeDflt(s,i),c=n("autorange",u),f;s&&(s[0]===null&&s[1]===null||(s[0]===null||s[1]===null)&&(c==="reversed"||c===!0)||s[0]!==null&&(c==="min"||c==="max reversed")||s[1]!==null&&(c==="max"||c==="min reversed"))&&(s=void 0,delete r.range,r.autorange=!0,f=!0),f||(u=r.getAutorangeDflt(s,i),c=n("autorange",u)),c&&(Xot(n,c,s),(o==="linear"||o==="-")&&n("rangemode")),r.cleanRange()}});var Mse=ye((Err,Sse)=>{var Yot={left:0,top:0};Sse.exports=Kot;function Kot(e,t,r){t=t||e.currentTarget||e.srcElement,Array.isArray(r)||(r=[0,0]);var n=e.clientX||0,i=e.clientY||0,a=Jot(t);return r[0]=n-a.left,r[1]=i-a.top,r}function Jot(e){return e===window||e===document||e===document.body?Yot:e.getBoundingClientRect()}});var kL=ye((krr,Ese)=>{"use strict";var $ot=Kq();function Qot(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(r){e=!1}return e}Ese.exports=$ot&&Qot()});var Cse=ye((Crr,kse)=>{"use strict";kse.exports=function(t,r,n,i,a){var o=(t-n)/(i-n),s=o+r/(i-n),l=(o+s)/2;return a==="left"||a==="bottom"?o:a==="center"||a==="middle"?l:a==="right"||a==="top"?s:o<2/3-l?o:s>4/3-l?s:l}});var Ise=ye((Lrr,Pse)=>{"use strict";var Lse=Mr(),est=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];Pse.exports=function(t,r,n,i){return n==="left"?t=0:n==="center"?t=1:n==="right"?t=2:t=Lse.constrain(Math.floor(t*3),0,2),i==="bottom"?r=0:i==="middle"?r=1:i==="top"?r=2:r=Lse.constrain(Math.floor(r*3),0,2),est[r][t]}});var Dse=ye((Prr,Rse)=>{"use strict";var tst=g3(),rst=P6(),ist=DS().getGraphDiv,nst=IS(),vB=Rse.exports={};vB.wrapped=function(e,t,r){e=ist(e),e._fullLayout&&rst.clear(e._fullLayout._uid+nst.HOVERID),vB.raw(e,t,r)};vB.raw=function(t,r){var n=t._fullLayout,i=t._hoverdata;r||(r={}),!(r.target&&!t._dragged&&tst.triggerHandler(t,"plotly_beforehover",r)===!1)&&(n._hoverlayer.selectAll("g").remove(),n._hoverlayer.selectAll("line").remove(),n._hoverlayer.selectAll("circle").remove(),t._hoverdata=void 0,r.target&&i&&t.emit("plotly_unhover",{event:r,points:i}))}});var gv=ye((Irr,Ose)=>{"use strict";var ast=Mse(),pB=$q(),ost=kL(),sst=Mr().removeElement,lst=ad(),Lb=Ose.exports={};Lb.align=Cse();Lb.getCursor=Ise();var Fse=Dse();Lb.unhover=Fse.wrapped;Lb.unhoverRaw=Fse.raw;Lb.init=function(t){var r=t.gd,n=1,i=r._context.doubleClickDelay,a=t.element,o,s,l,u,c,f,h,d;r._mouseDownTime||(r._mouseDownTime=0),a.style.pointerEvents="all",a.onmousedown=b,ost?(a._ontouchstart&&a.removeEventListener("touchstart",a._ontouchstart),a._ontouchstart=b,a.addEventListener("touchstart",b,{passive:!1})):a.ontouchstart=b;function v(k,A,L){return Math.abs(k)i&&(n=Math.max(n-1,1)),r._dragged)t.doneFn&&t.doneFn();else{var A;f.target===h?A=f:(A={target:h,srcElement:h,toElement:h},Object.keys(f).concat(Object.keys(f.__proto__)).forEach(L=>{var _=f[L];!A[L]&&typeof _!="function"&&(A[L]=_)})),t.clickFn&&t.clickFn(n,A),d||h.dispatchEvent(new MouseEvent("click",k))}r._dragging=!1,r._dragged=!1}};function qse(){var e=document.createElement("div");e.className="dragcover";var t=e.style;return t.position="fixed",t.left=0,t.right=0,t.top=0,t.bottom=0,t.zIndex=999999999,t.background="none",document.body.appendChild(e),e}Lb.coverSlip=qse;function zse(e){return ast(e.changedTouches?e.changedTouches[0]:e,document.body)}});var Tg=ye((Rrr,Bse)=>{"use strict";Bse.exports=function(t,r){(t.attr("class")||"").split(" ").forEach(function(n){n.indexOf("cursor-")===0&&t.classed(n,!1)}),r&&t.classed("cursor-"+r,!0)}});var Vse=ye((Drr,Use)=>{"use strict";var gB=Tg(),aM="data-savedcursor",Nse="!!";Use.exports=function(t,r){var n=t.attr(aM);if(r){if(!n){for(var i=(t.attr("class")||"").split(" "),a=0;a{"use strict";var mB=Su(),ust=dh();Hse.exports={_isSubplotObj:!0,visible:{valType:"boolean",dflt:!0,editType:"legend"},bgcolor:{valType:"color",editType:"legend"},bordercolor:{valType:"color",dflt:ust.defaultLine,editType:"legend"},borderwidth:{valType:"number",min:0,dflt:0,editType:"legend"},font:mB({editType:"legend"}),grouptitlefont:mB({editType:"legend"}),orientation:{valType:"enumerated",values:["v","h"],dflt:"v",editType:"legend"},traceorder:{valType:"flaglist",flags:["reversed","grouped"],extras:["normal"],editType:"legend"},tracegroupgap:{valType:"number",min:0,dflt:10,editType:"legend"},entrywidth:{valType:"number",min:0,editType:"legend"},entrywidthmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels",editType:"legend"},indentation:{valType:"number",min:-15,dflt:0,editType:"legend"},itemsizing:{valType:"enumerated",values:["trace","constant"],dflt:"trace",editType:"legend"},itemwidth:{valType:"number",min:30,dflt:30,editType:"legend"},itemclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggle",editType:"legend"},itemdoubleclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggleothers",editType:"legend"},groupclick:{valType:"enumerated",values:["toggleitem","togglegroup"],dflt:"togglegroup",editType:"legend"},x:{valType:"number",editType:"legend"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"legend"},y:{valType:"number",editType:"legend"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],editType:"legend"},uirevision:{valType:"any",editType:"none"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"legend"},title:{text:{valType:"string",dflt:"",editType:"legend"},font:mB({editType:"legend"}),side:{valType:"enumerated",values:["top","left","top left","top center","top right"],editType:"legend"},editType:"legend"},editType:"legend"}});var LL=ye(CL=>{"use strict";CL.isGrouped=function(t){return(t.traceorder||"").indexOf("grouped")!==-1};CL.isVertical=function(t){return t.orientation!=="h"};CL.isReversed=function(t){return(t.traceorder||"").indexOf("reversed")!==-1}});var bB=ye((qrr,Gse)=>{"use strict";var _B=ba(),Kp=Mr(),cst=Vs(),fst=vl(),hst=yB(),dst=s3(),xB=LL();function vst(e,t,r,n){var i=t[e]||{},a=cst.newContainer(r,e);function o(G,N){return Kp.coerce(i,a,hst,G,N)}var s=Kp.coerceFont(o,"font",r.font);o("bgcolor",r.paper_bgcolor),o("bordercolor");var l=o("visible");if(l){for(var u,c=function(G,N){var W=u._input,re=u;return Kp.coerce(W,re,fst,G,N)},f=r.font||{},h=Kp.coerceFont(o,"grouptitlefont",f,{overrideDflt:{size:Math.round(f.size*1.1)}}),d=0,v=!1,x="normal",b=(r.shapes||[]).filter(function(G){return G.showlegend}),p=n.concat(b).filter(function(G){return e===(G.legend||"legend")}),E=0;E(e==="legend"?1:0));if(A===!1&&(r[e]=void 0),!(A===!1&&!i.uirevision)&&(o("uirevision",r.uirevision),A!==!1)){o("borderwidth");var L=o("orientation"),_=o("yref"),C=o("xref"),M=L==="h",g=_==="paper",P=C==="paper",T,F,q,V="left";M?(T=0,_B.getComponentMethod("rangeslider","isVisible")(t.xaxis)?g?(F=1.1,q="bottom"):(F=1,q="top"):g?(F=-.1,q="top"):(F=0,q="bottom")):(F=1,q="auto",P?T=1.02:(T=1,V="right")),Kp.coerce(i,a,{x:{valType:"number",editType:"legend",min:P?-2:0,max:P?3:1,dflt:T}},"x"),Kp.coerce(i,a,{y:{valType:"number",editType:"legend",min:g?-2:0,max:g?3:1,dflt:F}},"y"),o("traceorder",x),xB.isGrouped(r[e])&&o("tracegroupgap"),o("entrywidth"),o("entrywidthmode"),o("indentation"),o("itemsizing"),o("itemwidth"),o("itemclick"),o("itemdoubleclick"),o("groupclick"),o("xanchor",V),o("yanchor",q),o("valign"),Kp.noneOrAll(i,a,["x","y"]);var H=o("title.text");if(H){o("title.side",M?"left":"top");var X=Kp.extendFlat({},s,{size:Kp.bigFont(s.size)});Kp.coerceFont(o,"title.font",X)}}}}Gse.exports=function(t,r,n){var i,a=n.slice(),o=r.shapes;if(o)for(i=0;i{"use strict";var D3=ba(),TB=Mr(),pst=TB.pushUnique,wB=!0;jse.exports=function(t,r,n){var i=r._fullLayout;if(r._dragged||r._editing)return;var a=i.legend.itemclick,o=i.legend.itemdoubleclick,s=i.legend.groupclick;n===1&&a==="toggle"&&o==="toggleothers"&&wB&&r.data&&r._context.showTips&&TB.notifier(TB._(r,"Double-click on legend to isolate one trace"),"long"),wB=!1;var l;if(n===1?l=a:n===2&&(l=o),!l)return;var u=s==="togglegroup",c=i.hiddenlabels?i.hiddenlabels.slice():[],f=t.data()[0][0];if(f.groupTitle&&f.noClick)return;var h=r._fullData,d=(i.shapes||[]).filter(function(Rt){return Rt.showlegend}),v=h.concat(d),x=f.trace;x._isShape&&(x=x._fullInput);var b=x.legendgroup,p,E,k,A,L,_,C={},M=[],g=[],P=[];function T(Rt,kt){var Ct=M.indexOf(Rt),Yt=C.visible;return Yt||(Yt=C.visible=[]),M.indexOf(Rt)===-1&&(M.push(Rt),Ct=M.length-1),Yt[Ct]=kt,Ct}var F=(i.shapes||[]).map(function(Rt){return Rt._input}),q=!1;function V(Rt,kt){F[Rt].visible=kt,q=!0}function H(Rt,kt){if(!(f.groupTitle&&!u)){var Ct=Rt._fullInput||Rt,Yt=Ct._isShape,xr=Ct.index;xr===void 0&&(xr=Ct._index);var er=Ct.visible===!1?!1:kt;Yt?V(xr,er):T(xr,er)}}var X=x.legend,G=x._fullInput,N=G&&G._isShape;if(!N&&D3.traceIs(x,"pie-like")){var W=f.label,re=c.indexOf(W);if(l==="toggle")re===-1?c.push(W):c.splice(re,1);else if(l==="toggleothers"){var ae=re!==-1,_e=[];for(p=0;p{"use strict";Zse.exports={scrollBarWidth:6,scrollBarMinHeight:20,scrollBarColor:"#808BA4",scrollBarMargin:4,scrollBarEnterAttrs:{rx:20,ry:3,width:0,height:0},titlePad:2,itemGap:5}});var Kse=ye((Nrr,Yse)=>{"use strict";var Xse=ba(),SB=LL();Yse.exports=function(t,r,n){var i=r._inHover,a=SB.isGrouped(r),o=SB.isReversed(r),s={},l=[],u=!1,c={},f=0,h=0,d,v;function x(G,N,W){if(r.visible!==!1&&!(n&&G!==r._id))if(N===""||!SB.isGrouped(r)){var re="~~i"+f;l.push(re),s[re]=[W],f++}else l.indexOf(N)===-1?(l.push(N),u=!0,s[N]=[W]):s[N].push(W)}for(d=0;dP&&(g=P)}C[d][0]._groupMinRank=g,C[d][0]._preGroupSort=d}var T=function(G,N){return G[0]._groupMinRank-N[0]._groupMinRank||G[0]._preGroupSort-N[0]._preGroupSort},F=function(G,N){return G.trace.legendrank-N.trace.legendrank||G._preSort-N._preSort};for(C.forEach(function(G,N){G[0]._preGroupSort=N}),C.sort(T),d=0;d{"use strict";var PL=Mr();function Jse(e){return e.indexOf("e")!==-1?e.replace(/[.]?0+e/,"e"):e.indexOf(".")!==-1?e.replace(/[.]?0+$/,""):e}Pb.formatPiePercent=function(t,r){var n=Jse((t*100).toPrecision(3));return PL.numSeparate(n,r)+"%"};Pb.formatPieValue=function(t,r){var n=Jse(t.toPrecision(10));return PL.numSeparate(n,r)};Pb.getFirstFilled=function(t,r){if(PL.isArrayOrTypedArray(t))for(var n=0;n{"use strict";var gst=ao(),mst=va();$se.exports=function(t,r,n,i){var a=n.marker.pattern;a&&a.shape?gst.pointStyle(t,n,i,r):mst.fill(t,r.color)}});var z3=ye((Hrr,rle)=>{"use strict";var ele=va(),tle=u_().castOption,yst=Qse();rle.exports=function(t,r,n,i){var a=n.marker.line,o=tle(a.color,r.pts)||ele.defaultLine,s=tle(a.width,r.pts)||0;t.call(yst,r,n,i).style("stroke-width",s).call(ele.stroke,o)}});var CB=ye((Grr,lle)=>{"use strict";var qv=xa(),MB=ba(),mv=Mr(),ile=mv.strTranslate,ip=ao(),T0=va(),EB=Dv().extractOpts,IL=lu(),_st=z3(),xst=u_().castOption,bst=AB(),nle=12,ale=5,Ib=2,wst=10,F3=5;lle.exports=function(t,r,n){var i=r._fullLayout;n||(n=i.legend);var a=n.itemsizing==="constant",o=n.itemwidth,s=(o+bst.itemGap*2)/2,l=ile(s,0),u=function(C,M,g,P){var T;if(C+1)T=C;else if(M&&M.width>0)T=M.width;else return 0;return a?P:Math.min(T,g)};t.each(function(C){var M=qv.select(this),g=mv.ensureSingle(M,"g","layers");g.style("opacity",C[0].trace.opacity);var P=n.indentation,T=n.valign,F=C[0].lineHeight,q=C[0].height;if(T==="middle"&&P===0||!F||!q)g.attr("transform",null);else{var V={top:1,bottom:-1}[T],H=V*(.5*(F-q+3))||0,X=n.indentation;g.attr("transform",ile(X,H))}var G=g.selectAll("g.legendfill").data([C]);G.enter().append("g").classed("legendfill",!0);var N=g.selectAll("g.legendlines").data([C]);N.enter().append("g").classed("legendlines",!0);var W=g.selectAll("g.legendsymbols").data([C]);W.enter().append("g").classed("legendsymbols",!0),W.selectAll("g.legendpoints").data([C]).enter().append("g").classed("legendpoints",!0)}).each(_).each(h).each(v).each(d).each(b).each(A).each(k).each(c).each(f).each(p).each(E);function c(C){var M=ole(C),g=M.showFill,P=M.showLine,T=M.showGradientLine,F=M.showGradientFill,q=M.anyFill,V=M.anyLine,H=C[0],X=H.trace,G,N,W=EB(X),re=W.colorscale,ae=W.reversescale,_e=function(Ae){if(Ae.size())if(g)ip.fillGroupStyle(Ae,r,!0);else{var ze="legendfill-"+X.uid;ip.gradient(Ae,r,ze,kB(ae),re,"fill")}},Me=function(Ae){if(Ae.size()){var ze="legendline-"+X.uid;ip.lineGroupStyle(Ae),ip.gradient(Ae,r,ze,kB(ae),re,"stroke")}},ke=IL.hasMarkers(X)||!q?"M5,0":V?"M5,-2":"M5,-3",ge=qv.select(this),ie=ge.select(".legendfill").selectAll("path").data(g||F?[C]:[]);if(ie.enter().append("path").classed("js-fill",!0),ie.exit().remove(),ie.attr("d",ke+"h"+o+"v6h-"+o+"z").call(_e),P||T){var Te=u(void 0,X.line,wst,ale);N=mv.minExtend(X,{line:{width:Te}}),G=[mv.minExtend(H,{trace:N})]}var Ee=ge.select(".legendlines").selectAll("path").data(P||T?[G]:[]);Ee.enter().append("path").classed("js-line",!0),Ee.exit().remove(),Ee.attr("d",ke+(T?"l"+o+",0.0001":"h"+o)).call(P?ip.lineGroupStyle:Me)}function f(C){var M=ole(C),g=M.anyFill,P=M.anyLine,T=M.showLine,F=M.showMarker,q=C[0],V=q.trace,H=!F&&!P&&!g&&IL.hasText(V),X,G;function N(ie,Te,Ee,Ae){var ze=mv.nestedProperty(V,ie).get(),Ce=mv.isArrayOrTypedArray(ze)&&Te?Te(ze):ze;if(a&&Ce&&Ae!==void 0&&(Ce=Ae),Ee){if(CeEe[1])return Ee[1]}return Ce}function W(ie){return q._distinct&&q.index&&ie[q.index]?ie[q.index]:ie[0]}if(F||H||T){var re={},ae={};if(F){re.mc=N("marker.color",W),re.mx=N("marker.symbol",W),re.mo=N("marker.opacity",mv.mean,[.2,1]),re.mlc=N("marker.line.color",W),re.mlw=N("marker.line.width",mv.mean,[0,5],Ib),ae.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var _e=N("marker.size",mv.mean,[2,16],nle);re.ms=_e,ae.marker.size=_e}T&&(ae.line={width:N("line.width",W,[0,10],ale)}),H&&(re.tx="Aa",re.tp=N("textposition",W),re.ts=10,re.tc=N("textfont.color",W),re.tf=N("textfont.family",W),re.tw=N("textfont.weight",W),re.ty=N("textfont.style",W),re.tv=N("textfont.variant",W),re.tC=N("textfont.textcase",W),re.tE=N("textfont.lineposition",W),re.tS=N("textfont.shadow",W)),X=[mv.minExtend(q,re)],G=mv.minExtend(V,ae),G.selectedpoints=null,G.texttemplate=null}var Me=qv.select(this).select("g.legendpoints"),ke=Me.selectAll("path.scatterpts").data(F?X:[]);ke.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",l),ke.exit().remove(),ke.call(ip.pointStyle,G,r),F&&(X[0].mrc=3);var ge=Me.selectAll("g.pointtext").data(H?X:[]);ge.enter().append("g").classed("pointtext",!0).append("text").attr("transform",l),ge.exit().remove(),ge.selectAll("text").call(ip.textPointStyle,G,r)}function h(C){var M=C[0].trace,g=M.type==="waterfall";if(C[0]._distinct&&g){var P=C[0].trace[C[0].dir].marker;return C[0].mc=P.color,C[0].mlw=P.line.width,C[0].mlc=P.line.color,x(C,this,"waterfall")}var T=[];M.visible&&g&&(T=C[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var F=qv.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(T);F.enter().append("path").classed("legendwaterfall",!0).attr("transform",l).style("stroke-miterlimit",1),F.exit().remove(),F.each(function(q){var V=qv.select(this),H=M[q[0]].marker,X=u(void 0,H.line,F3,Ib);V.attr("d",q[1]).style("stroke-width",X+"px").call(T0.fill,H.color),X&&V.call(T0.stroke,H.line.color)})}function d(C){x(C,this)}function v(C){x(C,this,"funnel")}function x(C,M,g){var P=C[0].trace,T=P.marker||{},F=T.line||{},q=T.cornerradius?"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z":"M6,6H-6V-6H6Z",V=g?P.visible&&P.type===g:MB.traceIs(P,"bar"),H=qv.select(M).select("g.legendpoints").selectAll("path.legend"+g).data(V?[C]:[]);H.enter().append("path").classed("legend"+g,!0).attr("d",q).attr("transform",l),H.exit().remove(),H.each(function(X){var G=qv.select(this),N=X[0],W=u(N.mlw,T.line,F3,Ib);G.style("stroke-width",W+"px");var re=N.mcc;if(!n._inHover&&"mc"in N){var ae=EB(T),_e=ae.mid;_e===void 0&&(_e=(ae.max+ae.min)/2),re=ip.tryColorscale(T,"")(_e)}var Me=re||N.mc||T.color,ke=T.pattern,ge=ke&&ip.getPatternAttr(ke.shape,0,"");if(ge){var ie=ip.getPatternAttr(ke.bgcolor,0,null),Te=ip.getPatternAttr(ke.fgcolor,0,null),Ee=ke.fgopacity,Ae=sle(ke.size,8,10),ze=sle(ke.solidity,.5,1),Ce="legend-"+P.uid;G.call(ip.pattern,"legend",r,Ce,ge,Ae,ze,re,ke.fillmode,ie,Te,Ee)}else G.call(T0.fill,Me);W&&T0.stroke(G,N.mlc||F.color)})}function b(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendbox").data(M.visible&&MB.traceIs(M,"box-violin")?[C]:[]);g.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),g.exit().remove(),g.each(function(){var P=qv.select(this);if((M.boxpoints==="all"||M.points==="all")&&T0.opacity(M.fillcolor)===0&&T0.opacity((M.line||{}).color)===0){var T=mv.minExtend(M,{marker:{size:a?nle:mv.constrain(M.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});g.call(ip.pointStyle,T,r)}else{var F=u(void 0,M.line,F3,Ib);P.style("stroke-width",F+"px").call(T0.fill,M.fillcolor),F&&T0.stroke(P,M.line.color)}})}function p(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(M.visible&&M.type==="candlestick"?[C,C]:[]);g.enter().append("path").classed("legendcandle",!0).attr("d",function(P,T){return T?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"}).attr("transform",l).style("stroke-miterlimit",1),g.exit().remove(),g.each(function(P,T){var F=qv.select(this),q=M[T?"increasing":"decreasing"],V=u(void 0,q.line,F3,Ib);F.style("stroke-width",V+"px").call(T0.fill,q.fillcolor),V&&T0.stroke(F,q.line.color)})}function E(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(M.visible&&M.type==="ohlc"?[C,C]:[]);g.enter().append("path").classed("legendohlc",!0).attr("d",function(P,T){return T?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"}).attr("transform",l).style("stroke-miterlimit",1),g.exit().remove(),g.each(function(P,T){var F=qv.select(this),q=M[T?"increasing":"decreasing"],V=u(void 0,q.line,F3,Ib);F.style("fill","none").call(ip.dashLine,q.line.dash,V),V&&T0.stroke(F,q.line.color)})}function k(C){L(C,this,"pie")}function A(C){L(C,this,"funnelarea")}function L(C,M,g){var P=C[0],T=P.trace,F=g?T.visible&&T.type===g:MB.traceIs(T,g),q=qv.select(M).select("g.legendpoints").selectAll("path.legend"+g).data(F?[C]:[]);if(q.enter().append("path").classed("legend"+g,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),q.exit().remove(),q.size()){var V=T.marker||{},H=u(xst(V.line.width,P.pts),V.line,F3,Ib),X="pieLike",G=mv.minExtend(T,{marker:{line:{width:H}}},X),N=mv.minExtend(P,{trace:G},X);_st(q,N,G,r)}}function _(C){var M=C[0].trace,g,P=[];if(M.visible)switch(M.type){case"histogram2d":case"heatmap":P=[["M-15,-2V4H15V-2Z"]],g=!0;break;case"choropleth":case"choroplethmapbox":case"choroplethmap":P=[["M-6,-6V6H6V-6Z"]],g=!0;break;case"densitymapbox":case"densitymap":P=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],g="radial";break;case"cone":P=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],g=!1;break;case"streamtube":P=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],g=!1;break;case"surface":P=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],g=!0;break;case"mesh3d":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],g=!1;break;case"volume":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],g=!0;break;case"isosurface":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],g=!1;break}var T=qv.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(P);T.enter().append("path").classed("legend3dandfriends",!0).attr("transform",l).style("stroke-miterlimit",1),T.exit().remove(),T.each(function(F,q){var V=qv.select(this),H=EB(M),X=H.colorscale,G=H.reversescale,N=function(_e){if(_e.size()){var Me="legendfill-"+M.uid;ip.gradient(_e,r,Me,kB(G,g==="radial"),X,"fill")}},W;if(X){if(!g){var ae=X.length;W=q===0?X[G?ae-1:0][1]:q===1?X[G?0:ae-1][1]:X[Math.floor((ae-1)/2)][1]}}else{var re=M.vertexcolor||M.facecolor||M.color;W=mv.isArrayOrTypedArray(re)?re[q]||re[0]:re}V.attr("d",F[0]),W?V.call(T0.fill,W):V.call(N)})}};function kB(e,t){var r=t?"radial":"horizontal";return r+(e?"":"reversed")}function ole(e){var t=e[0].trace,r=t.contours,n=IL.hasLines(t),i=IL.hasMarkers(t),a=t.visible&&t.fill&&t.fill!=="none",o=!1,s=!1;if(r){var l=r.coloring;l==="lines"?o=!0:n=l==="none"||l==="heatmap"||r.showlines,r.type==="constraint"?a=r._operation!=="=":(l==="fill"||l==="heatmap")&&(s=!0)}return{showMarker:i,showLine:n,showFill:a,showGradientLine:o,showGradientFill:s,anyLine:n||o,anyFill:a||s}}function sle(e,t,r){return e&&mv.isArrayOrTypedArray(e)?t:e>r?r:e}});var RB=ye((jrr,yle)=>{"use strict";var Sp=xa(),gh=Mr(),PB=Xu(),B3=ba(),ule=g3(),LB=gv(),mh=ao(),DL=va(),Rb=Pl(),cle=Wse(),Vh=AB(),IB=Nh(),gle=IB.LINE_SPACING,O3=IB.FROM_TL,fle=IB.FROM_BR,hle=Kse(),Tst=CB(),dle=LL(),q3=1,Ast=/^legend[0-9]*$/;yle.exports=function(t,r){if(r)vle(t,r);else{var n=t._fullLayout,i=n._legends,a=n._infolayer.selectAll('[class^="legend"]');a.each(function(){var u=Sp.select(this),c=u.attr("class"),f=c.split(" ")[0];f.match(Ast)&&i.indexOf(f)===-1&&u.remove()});for(var o=0;o1)}var v=n.hiddenlabels||[];if(!s&&(!n.showlegend||!l.length))return o.selectAll("."+i).remove(),n._topdefs.select("#"+a).remove(),PB.autoMargin(e,i);var x=gh.ensureSingle(o,"g",i,function(M){s||M.attr("pointer-events","all")}),b=gh.ensureSingleById(n._topdefs,"clipPath",a,function(M){M.append("rect")}),p=gh.ensureSingle(x,"rect","bg",function(M){M.attr("shape-rendering","crispEdges")});p.call(DL.stroke,r.bordercolor).call(DL.fill,r.bgcolor).style("stroke-width",r.borderwidth+"px");var E=gh.ensureSingle(x,"g","scrollbox"),k=r.title;r._titleWidth=0,r._titleHeight=0;var A;k.text?(A=gh.ensureSingle(E,"text",i+"titletext"),A.attr("text-anchor","start").call(mh.font,k.font).text(k.text),zL(A,E,e,r,q3)):E.selectAll("."+i+"titletext").remove();var L=gh.ensureSingle(x,"rect","scrollbar",function(M){M.attr(Vh.scrollBarEnterAttrs).call(DL.fill,Vh.scrollBarColor)}),_=E.selectAll("g.groups").data(l);_.enter().append("g").attr("class","groups"),_.exit().remove();var C=_.selectAll("g.traces").data(gh.identity);C.enter().append("g").attr("class","traces"),C.exit().remove(),C.style("opacity",function(M){var g=M[0].trace;return B3.traceIs(g,"pie-like")?v.indexOf(M[0].label)!==-1?.5:1:g.visible==="legendonly"?.5:1}).each(function(){Sp.select(this).call(Mst,e,r)}).call(Tst,e,r).each(function(){s||Sp.select(this).call(Est,e,i)}),gh.syncOrAsync([PB.previousPromises,function(){return Lst(e,_,C,r)},function(){var M=n._size,g=r.borderwidth,P=r.xref==="paper",T=r.yref==="paper";if(k.text&&Sst(A,r,g),!s){var F,q;P?F=M.l+M.w*r.x-O3[FL(r)]*r._width:F=n.width*r.x-O3[FL(r)]*r._width,T?q=M.t+M.h*(1-r.y)-O3[qL(r)]*r._effHeight:q=n.height*(1-r.y)-O3[qL(r)]*r._effHeight;var V=Pst(e,i,F,q);if(V)return;if(n.margin.autoexpand){var H=F,X=q;F=P?gh.constrain(F,0,n.width-r._width):H,q=T?gh.constrain(q,0,n.height-r._effHeight):X,F!==H&&gh.log("Constrain "+i+".x to make legend fit inside graph"),q!==X&&gh.log("Constrain "+i+".y to make legend fit inside graph")}mh.setTranslate(x,F,q)}if(L.on(".drag",null),x.on("wheel",null),s||r._height<=r._maxHeight||e._context.staticPlot){var G=r._effHeight;s&&(G=r._height),p.attr({width:r._width-g,height:G-g,x:g/2,y:g/2}),mh.setTranslate(E,0,0),b.select("rect").attr({width:r._width-2*g,height:G-2*g,x:g,y:g}),mh.setClipUrl(E,a,e),mh.setRect(L,0,0,0,0),delete r._scrollY}else{var N=Math.max(Vh.scrollBarMinHeight,r._effHeight*r._effHeight/r._height),W=r._effHeight-N-2*Vh.scrollBarMargin,re=r._height-r._effHeight,ae=W/re,_e=Math.min(r._scrollY||0,re);p.attr({width:r._width-2*g+Vh.scrollBarWidth+Vh.scrollBarMargin,height:r._effHeight-g,x:g/2,y:g/2}),b.select("rect").attr({width:r._width-2*g+Vh.scrollBarWidth+Vh.scrollBarMargin,height:r._effHeight-2*g,x:g,y:g+_e}),mh.setClipUrl(E,a,e),ze(_e,N,ae),x.on("wheel",function(){_e=gh.constrain(r._scrollY+Sp.event.deltaY/W*re,0,re),ze(_e,N,ae),_e!==0&&_e!==re&&Sp.event.preventDefault()});var Me,ke,ge,ie=function(Ge,nt,ct){var qt=(ct-nt)/ae+Ge;return gh.constrain(qt,0,re)},Te=function(Ge,nt,ct){var qt=(nt-ct)/ae+Ge;return gh.constrain(qt,0,re)},Ee=Sp.behavior.drag().on("dragstart",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchstart"?Me=Ge.changedTouches[0].clientY:Me=Ge.clientY,ge=_e}).on("drag",function(){var Ge=Sp.event.sourceEvent;Ge.buttons===2||Ge.ctrlKey||(Ge.type==="touchmove"?ke=Ge.changedTouches[0].clientY:ke=Ge.clientY,_e=ie(ge,Me,ke),ze(_e,N,ae))});L.call(Ee);var Ae=Sp.behavior.drag().on("dragstart",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchstart"&&(Me=Ge.changedTouches[0].clientY,ge=_e)}).on("drag",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchmove"&&(ke=Ge.changedTouches[0].clientY,_e=Te(ge,Me,ke),ze(_e,N,ae))});E.call(Ae)}function ze(Ge,nt,ct){r._scrollY=e._fullLayout[i]._scrollY=Ge,mh.setTranslate(E,0,-Ge),mh.setRect(L,r._width,Vh.scrollBarMargin+Ge*ct,Vh.scrollBarWidth,nt),b.select("rect").attr("y",g+Ge)}if(e._context.edits.legendPosition){var Ce,me,Re,ce;x.classed("cursor-move",!0),LB.init({element:x.node(),gd:e,prepFn:function(Ge){if(Ge.target!==L.node()){var nt=mh.getTranslate(x);Re=nt.x,ce=nt.y}},moveFn:function(Ge,nt){if(Re!==void 0&&ce!==void 0){var ct=Re+Ge,qt=ce+nt;mh.setTranslate(x,ct,qt),Ce=LB.align(ct,r._width,M.l,M.l+M.w,r.xanchor),me=LB.align(qt+r._height,-r._height,M.t+M.h,M.t,r.yanchor)}},doneFn:function(){if(Ce!==void 0&&me!==void 0){var Ge={};Ge[i+".x"]=Ce,Ge[i+".y"]=me,B3.call("_guiRelayout",e,Ge)}},clickFn:function(Ge,nt){var ct=o.selectAll("g.traces").filter(function(){var qt=this.getBoundingClientRect();return nt.clientX>=qt.left&&nt.clientX<=qt.right&&nt.clientY>=qt.top&&nt.clientY<=qt.bottom});ct.size()>0&&mle(e,x,ct,Ge,nt)}})}}],e)}}function RL(e,t,r){var n=e[0],i=n.width,a=t.entrywidthmode,o=n.trace.legendwidth||t.entrywidth;return a==="fraction"?t._maxWidth*o:r+(o||i)}function mle(e,t,r,n,i){var a=r.data()[0][0].trace,o={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a.index,data:e.data,layout:e.layout,frames:e._transitionData._frames,config:e._context,fullData:e._fullData,fullLayout:e._fullLayout};a._group&&(o.group=a._group),B3.traceIs(a,"pie-like")&&(o.label=r.datum()[0].label);var s=ule.triggerHandler(e,"plotly_legendclick",o);if(n===1){if(s===!1)return;t._clickTimeout=setTimeout(function(){e._fullLayout&&cle(r,e,n)},e._context.doubleClickDelay)}else if(n===2){t._clickTimeout&&clearTimeout(t._clickTimeout),e._legendMouseDownTime=0;var l=ule.triggerHandler(e,"plotly_legenddoubleclick",o);l!==!1&&s!==!1&&cle(r,e,n)}}function Mst(e,t,r){var n=OL(r),i=e.data()[0][0],a=i.trace,o=B3.traceIs(a,"pie-like"),s=!r._inHover&&t._context.edits.legendText&&!o,l=r._maxNameLength,u,c;i.groupTitle?(u=i.groupTitle.text,c=i.groupTitle.font):(c=r.font,r.entries?u=i.text:(u=o?i.label:a.name,a._meta&&(u=gh.templateString(u,a._meta))));var f=gh.ensureSingle(e,"text",n+"text");f.attr("text-anchor","start").call(mh.font,c).text(s?ple(u,l):u);var h=r.indentation+r.itemwidth+Vh.itemGap*2;Rb.positionText(f,h,0),s?f.call(Rb.makeEditable,{gd:t,text:u}).call(zL,e,t,r).on("edit",function(d){this.text(ple(d,l)).call(zL,e,t,r);var v=i.trace._fullInput||{},x={};return x.name=d,v._isShape?B3.call("_guiRelayout",t,"shapes["+a.index+"].name",x.name):B3.call("_guiRestyle",t,x,a.index)}):zL(f,e,t,r)}function ple(e,t){var r=Math.max(4,t);if(e&&e.trim().length>=r/2)return e;e=e||"";for(var n=r-e.length;n>0;n--)e+=" ";return e}function Est(e,t,r){var n=t._context.doubleClickDelay,i,a=1,o=gh.ensureSingle(e,"rect",r+"toggle",function(s){t._context.staticPlot||s.style("cursor","pointer").attr("pointer-events","all"),s.call(DL.fill,"rgba(0,0,0,0)")});t._context.staticPlot||(o.on("mousedown",function(){i=new Date().getTime(),i-t._legendMouseDownTimen&&(a=Math.max(a-1,1)),mle(t,s,e,a,Sp.event)}}))}function zL(e,t,r,n,i){n._inHover&&e.attr("data-notex",!0),Rb.convertToTspans(e,r,function(){kst(t,r,n,i)})}function kst(e,t,r,n){var i=e.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend){e.remove();return}var a=e.select("g[class*=math-group]"),o=a.node(),s=OL(r);r||(r=t._fullLayout[s]);var l=r.borderwidth,u;n===q3?u=r.title.font:i.groupTitle?u=i.groupTitle.font:u=r.font;var c=u.size*gle,f,h;if(o){var d=mh.bBox(o);f=d.height,h=d.width,n===q3?mh.setTranslate(a,l,l+f*.75):mh.setTranslate(a,0,f*.25)}else{var v="."+s+(n===q3?"title":"")+"text",x=e.select(v),b=Rb.lineCount(x),p=x.node();if(f=c*b,h=p?mh.bBox(p).width:0,n===q3)r.title.side==="left"&&(h+=Vh.itemGap*2),Rb.positionText(x,l+Vh.titlePad,l+c);else{var E=Vh.itemGap*2+r.indentation+r.itemwidth;i.groupTitle&&(E=Vh.itemGap,h-=r.indentation+r.itemwidth),Rb.positionText(x,E,-c*((b-1)/2-.3))}}n===q3?(r._titleWidth=h,r._titleHeight=f):(i.lineHeight=c,i.height=Math.max(f,16)+3,i.width=h)}function Cst(e){var t=0,r=0,n=e.title.side;return n&&(n.indexOf("left")!==-1&&(t=e._titleWidth),n.indexOf("top")!==-1&&(r=e._titleHeight)),[t,r]}function Lst(e,t,r,n){var i=e._fullLayout,a=OL(n);n||(n=i[a]);var o=i._size,s=dle.isVertical(n),l=dle.isGrouped(n),u=n.entrywidthmode==="fraction",c=n.borderwidth,f=2*c,h=Vh.itemGap,d=n.indentation+n.itemwidth+h*2,v=2*(c+h),x=qL(n),b=n.y<0||n.y===0&&x==="top",p=n.y>1||n.y===1&&x==="bottom",E=n.tracegroupgap,k={};n._maxHeight=Math.max(b||p?i.height/2:o.h,30);var A=0;n._width=0,n._height=0;var L=Cst(n);if(s)r.each(function(ge){var ie=ge[0].height;mh.setTranslate(this,c+L[0],c+L[1]+n._height+ie/2+h),n._height+=ie,n._width=Math.max(n._width,ge[0].width)}),A=d+n._width,n._width+=h+d+f,n._height+=v,l&&(t.each(function(ge,ie){mh.setTranslate(this,0,ie*n.tracegroupgap)}),n._height+=(n._lgroupsLength-1)*n.tracegroupgap);else{var _=FL(n),C=n.x<0||n.x===0&&_==="right",M=n.x>1||n.x===1&&_==="left",g=p||b,P=i.width/2;n._maxWidth=Math.max(C?g&&_==="left"?o.l+o.w:P:M?g&&_==="right"?o.r+o.w:P:o.w,2*d);var T=0,F=0;r.each(function(ge){var ie=RL(ge,n,d);T=Math.max(T,ie),F+=ie}),A=null;var q=0;if(l){var V=0,H=0,X=0;t.each(function(){var ge=0,ie=0;Sp.select(this).selectAll("g.traces").each(function(Ee){var Ae=RL(Ee,n,d),ze=Ee[0].height;mh.setTranslate(this,L[0],L[1]+c+h+ze/2+ie),ie+=ze,ge=Math.max(ge,Ae),k[Ee[0].trace.legendgroup]=ge});var Te=ge+h;H>0&&Te+c+H>n._maxWidth?(q=Math.max(q,H),H=0,X+=V+E,V=ie):V=Math.max(V,ie),mh.setTranslate(this,H,X),H+=Te}),n._width=Math.max(q,H)+c,n._height=X+V+v}else{var G=r.size(),N=F+f+(G-1)*h=n._maxWidth&&(q=Math.max(q,_e),re=0,ae+=W,n._height+=W,W=0),mh.setTranslate(this,L[0]+c+re,L[1]+c+ae+ie/2+h),_e=re+Te+h,re+=Ee,W=Math.max(W,ie)}),N?(n._width=re+f,n._height=W+v):(n._width=Math.max(q,_e)+f,n._height+=W+v)}}n._width=Math.ceil(Math.max(n._width+L[0],n._titleWidth+2*(c+Vh.titlePad))),n._height=Math.ceil(Math.max(n._height+L[1],n._titleHeight+2*(c+Vh.itemGap))),n._effHeight=Math.min(n._height,n._maxHeight);var Me=e._context.edits,ke=Me.legendText||Me.legendPosition;r.each(function(ge){var ie=Sp.select(this).select("."+a+"toggle"),Te=ge[0].height,Ee=ge[0].trace.legendgroup,Ae=RL(ge,n,d);l&&Ee!==""&&(Ae=k[Ee]);var ze=ke?d:A||Ae;!s&&!u&&(ze+=h/2),mh.setRect(ie,0,-Te/2,ze,Te)})}function Pst(e,t,r,n){var i=e._fullLayout,a=i[t],o=FL(a),s=qL(a),l=a.xref==="paper",u=a.yref==="paper";e._fullLayout._reservedMargin[t]={};var c=a.y<.5?"b":"t",f=a.x<.5?"l":"r",h={r:i.width-r,l:r+a._width,b:i.height-n,t:n+a._effHeight};if(l&&u)return PB.autoMargin(e,t,{x:a.x,y:a.y,l:a._width*O3[o],r:a._width*fle[o],b:a._effHeight*fle[s],t:a._effHeight*O3[s]});l?e._fullLayout._reservedMargin[t][c]=h[c]:u||a.orientation==="v"?e._fullLayout._reservedMargin[t][f]=h[f]:e._fullLayout._reservedMargin[t][c]=h[c]}function FL(e){return gh.isRightAnchor(e)?"right":gh.isCenterAnchor(e)?"center":"left"}function qL(e){return gh.isBottomAnchor(e)?"bottom":gh.isMiddleAnchor(e)?"middle":"top"}function OL(e){return e._id||"legend"}});var qB=ye(FB=>{"use strict";var Db=xa(),Sy=uo(),_le=id(),Rf=Mr(),Ist=Rf.pushUnique,DB=Rf.strTranslate,Rst=Rf.strRotate,Dst=g3(),A0=Pl(),zst=Vse(),bm=ao(),sd=va(),BL=gv(),wm=Qa(),Fst=ad().zindexSeparator,U3=ba(),Ag=rp(),zb=IS(),qst=bB(),Ost=RB(),Ele=zb.YANGLE,zB=Math.PI*Ele/180,Bst=1/Math.sin(zB),Nst=Math.cos(zB),Ust=Math.sin(zB),Bc=zb.HOVERARROWSIZE,Us=zb.HOVERTEXTPAD,xle={box:!0,ohlc:!0,violin:!0,candlestick:!0},Vst={scatter:!0,scattergl:!0,splom:!0};function ble(e,t){return e.distance-t.distance}FB.hover=function(t,r,n,i){t=Rf.getGraphDiv(t);var a=r.target;Rf.throttle(t._fullLayout._uid+zb.HOVERID,zb.HOVERMINTIME,function(){Hst(t,r,n,i,a)})};FB.loneHover=function(t,r){var n=!0;Array.isArray(t)||(n=!1,t=[t]);var i=r.gd,a=Ile(i),o=Rle(i),s=t.map(function(b){var p=b._x0||b.x0||b.x||0,E=b._x1||b.x1||b.x||0,k=b._y0||b.y0||b.y||0,A=b._y1||b.y1||b.y||0,L=b.eventData;if(L){var _=Math.min(p,E),C=Math.max(p,E),M=Math.min(k,A),g=Math.max(k,A),P=b.trace;if(U3.traceIs(P,"gl3d")){var T=i._fullLayout[P.scene]._scene.container,F=T.offsetLeft,q=T.offsetTop;_+=F,C+=F,M+=q,g+=q}L.bbox={x0:_+o,x1:C+o,y0:M+a,y1:g+a},r.inOut_bbox&&r.inOut_bbox.push(L.bbox)}else L=!1;return{color:b.color||sd.defaultLine,x0:b.x0||b.x||0,x1:b.x1||b.x||0,y0:b.y0||b.y||0,y1:b.y1||b.y||0,xLabel:b.xLabel,yLabel:b.yLabel,zLabel:b.zLabel,text:b.text,name:b.name,idealAlign:b.idealAlign,borderColor:b.borderColor,fontFamily:b.fontFamily,fontSize:b.fontSize,fontColor:b.fontColor,fontWeight:b.fontWeight,fontStyle:b.fontStyle,fontVariant:b.fontVariant,nameLength:b.nameLength,textAlign:b.textAlign,trace:b.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:b.hovertemplate||!1,hovertemplateLabels:b.hovertemplateLabels||!1,eventData:L}}),l=!1,u=Cle(s,{gd:i,hovermode:"closest",rotateLabels:l,bgColor:r.bgColor||sd.background,container:Db.select(r.container),outerContainer:r.outerContainer||r.container}),c=u.hoverLabels,f=5,h=0,d=0;c.sort(function(b,p){return b.y0-p.y0}).each(function(b,p){var E=b.y0-b.by/2;E-fC[0]._length||ce<0||ce>M[0]._length)return BL.unhoverRaw(e,t)}if(t.pointerX=Re+C[0]._offset,t.pointerY=ce+M[0]._offset,"xval"in t?X=Ag.flat(a,t.xval):X=Ag.p2c(C,Re),"yval"in t?G=Ag.flat(a,t.yval):G=Ag.p2c(M,ce),!Sy(X[0])||!Sy(G[0]))return Rf.warn("Fx.hover failed",t,e),BL.unhoverRaw(e,t)}var ct=1/0;function qt(Ni,_n){for(W=0;WEe&&(V.splice(0,Ee),ct=V[0].distance),f&&q!==0&&V.length===0){Te.distance=q,Te.index=!1;var ft=ae._module.hoverPoints(Te,ge,ie,"closest",{hoverLayer:s._hoverlayer});if(ft&&(ft=ft.filter(function(Vr){return Vr.spikeDistance<=q})),ft&&ft.length){var jt,Zt=ft.filter(function(Vr){return Vr.xa.showspikes&&Vr.xa.spikesnap!=="hovered data"});if(Zt.length){var yr=Zt[0];Sy(yr.x0)&&Sy(yr.y0)&&(jt=ot(yr),(!Ae.vLinePoint||Ae.vLinePoint.spikeDistance>jt.spikeDistance)&&(Ae.vLinePoint=jt))}var Fr=ft.filter(function(Vr){return Vr.ya.showspikes&&Vr.ya.spikesnap!=="hovered data"});if(Fr.length){var Zr=Fr[0];Sy(Zr.x0)&&Sy(Zr.y0)&&(jt=ot(Zr),(!Ae.hLinePoint||Ae.hLinePoint.spikeDistance>jt.spikeDistance)&&(Ae.hLinePoint=jt))}}}}}qt();function rt(Ni,_n,$i){for(var zn=null,Wn=1/0,It,ft=0;ft0&&Math.abs(Ni.distance)dt-1;Nr--)Or(V[Nr]);V=fr,Yt()}var ut=e._hoverdata,Ne=[],Ye=Ile(e),Ve=Rle(e);for(N=0;N1||V.length>1)||h==="closest"&&ze&&V.length>1,ri=sd.combine(s.plot_bgcolor||sd.background,s.paper_bgcolor),bi=Cle(V,{gd:e,hovermode:h,rotateLabels:jr,bgColor:ri,container:s._hoverlayer,outerContainer:s._paper.node(),commonLabelOpts:s.hoverlabel,hoverdistance:s.hoverdistance}),nn=bi.hoverLabels;if(Ag.isUnifiedHover(h)||(jst(nn,jr,s,bi.commonLabelBoundingBox),Ple(nn,jr,s._invScaleX,s._invScaleY)),i&&i.tagName){var Wi=U3.getComponentMethod("annotations","hasClickToShow")(e,Ne);zst(Db.select(i),Wi?"pointer":"")}!i||n||!Xst(e,t,ut)||(ut&&e.emit("plotly_unhover",{event:t,points:ut}),e.emit("plotly_hover",{event:t,points:e._hoverdata,xaxes:C,yaxes:M,xvals:X,yvals:G}))}function kle(e){return[e.trace.index,e.index,e.x0,e.y0,e.name,e.attr,e.xa?e.xa._id:"",e.ya?e.ya._id:""].join(",")}var Gst=/([\s\S]*)<\/extra>/;function Cle(e,t){var r=t.gd,n=r._fullLayout,i=t.hovermode,a=t.rotateLabels,o=t.bgColor,s=t.container,l=t.outerContainer,u=t.commonLabelOpts||{};if(e.length===0)return[[]];var c=t.fontFamily||zb.HOVERFONT,f=t.fontSize||zb.HOVERFONTSIZE,h=t.fontWeight||n.font.weight,d=t.fontStyle||n.font.style,v=t.fontVariant||n.font.variant,x=t.fontTextcase||n.font.textcase,b=t.fontLineposition||n.font.lineposition,p=t.fontShadow||n.font.shadow,E=e[0],k=E.xa,A=E.ya,L=i.charAt(0),_=L+"Label",C=E[_];if(C===void 0&&k.type==="multicategory")for(var M=0;Mn.width-ut&&(Ne=n.width-ut),Lt.attr("d","M"+(Br-Ne)+",0L"+(Br-Ne+Bc)+","+Nr+Bc+"H"+ut+"v"+Nr+(Us*2+_r.height)+"H"+-ut+"V"+Nr+Bc+"H"+(Br-Ne-Bc)+"Z"),Br=Ne,W.minX=Br-ut,W.maxX=Br+ut,k.side==="top"?(W.minY=Or-(Us*2+_r.height),W.maxY=Or-Us):(W.minY=Or+Us,W.maxY=Or+(Us*2+_r.height))}else{var Ye,Ve,Xe;A.side==="right"?(Ye="start",Ve=1,Xe="",Br=k._offset+k._length):(Ye="end",Ve=-1,Xe="-",Br=k._offset),Or=A._offset+(E.y0+E.y1)/2,St.attr("text-anchor",Ye),Lt.attr("d","M0,0L"+Xe+Bc+","+Bc+"V"+(Us+_r.height/2)+"h"+Xe+(Us*2+_r.width)+"V-"+(Us+_r.height/2)+"H"+Xe+Bc+"V-"+Bc+"Z"),W.minY=Or-(Us+_r.height/2),W.maxY=Or+(Us+_r.height/2),A.side==="right"?(W.minX=Br+Bc,W.maxX=Br+Bc+(Us*2+_r.width)):(W.minX=Br-Bc-(Us*2+_r.width),W.maxX=Br-Bc);var ht=_r.height/2,Le=P-_r.top-ht,xe="clip"+n._uid+"commonlabel"+A._id,Se;if(Br<_r.width+2*Us+Bc){Se="M-"+(Bc+Us)+"-"+ht+"h-"+(_r.width-Us)+"V"+ht+"h"+(_r.width-Us)+"Z";var lt=_r.width-Br+Us;A0.positionText(St,lt,Le),Ye==="end"&&St.selectAll("tspan").each(function(){var Vt=Db.select(this),ar=bm.tester.append("text").text(Vt.text()).call(bm.font,fr),Qr=N3(r,ar.node());Math.round(Qr.width)=0?er=kt:Ct+ce=0?er=Ct:Yt+ce=0?Ke=ot:Rt+Ge=0?Ke=Rt:xr+Ge=0,(bt.idealAlign==="top"||!Vt)&&ar?(Xe-=Le/2,bt.anchor="end"):Vt?(Xe+=Le/2,bt.anchor="start"):bt.anchor="middle",bt.crossPos=Xe;else{if(bt.pos=Xe,Vt=Ve+ht/2+Gt<=T,ar=Ve-ht/2-Gt>=0,(bt.idealAlign==="left"||!Vt)&&ar)Ve-=ht/2,bt.anchor="end";else if(Vt)Ve+=ht/2,bt.anchor="start";else{bt.anchor="middle";var Qr=Gt/2,ai=Ve+Qr-T,jr=Ve-Qr;ai>0&&(Ve-=ai),jr<0&&(Ve+=-jr)}bt.crossPos=Ve}Or.attr("text-anchor",bt.anchor),ut&&Nr.attr("text-anchor",bt.anchor),Lt.attr("transform",DB(Ve,Xe)+(a?Rst(Ele):""))}),{hoverLabels:xt,commonLabelBoundingBox:W}}function wle(e,t,r,n,i,a){var o="",s="";e.nameOverride!==void 0&&(e.name=e.nameOverride),e.name&&(e.trace._meta&&(e.name=Rf.templateString(e.name,e.trace._meta)),o=Sle(e.name,e.nameLength));var l=r.charAt(0),u=l==="x"?"y":"x";e.zLabel!==void 0?(e.xLabel!==void 0&&(s+="x: "+e.xLabel+"
"),e.yLabel!==void 0&&(s+="y: "+e.yLabel+"
"),e.trace.type!=="choropleth"&&e.trace.type!=="choroplethmapbox"&&e.trace.type!=="choroplethmap"&&(s+=(s?"z: ":"")+e.zLabel)):t&&e[l+"Label"]===i?s=e[u+"Label"]||"":e.xLabel===void 0?e.yLabel!==void 0&&e.trace.type!=="scattercarpet"&&(s=e.yLabel):e.yLabel===void 0?s=e.xLabel:s="("+e.xLabel+", "+e.yLabel+")",(e.text||e.text===0)&&!Array.isArray(e.text)&&(s+=(s?"
":"")+e.text),e.extraText!==void 0&&(s+=(s?"
":"")+e.extraText),a&&s===""&&!e.hovertemplate&&(o===""&&a.remove(),s=o);var c=e.hovertemplate||!1;if(c){var f=e.hovertemplateLabels||e;e[l+"Label"]!==i&&(f[l+"other"]=f[l+"Val"],f[l+"otherLabel"]=f[l+"Label"]),s=Rf.hovertemplateString(c,f,n._d3locale,e.eventData[0]||{},e.trace._meta),s=s.replace(Gst,function(h,d){return o=Sle(d,e.nameLength),""})}return[s,o]}function jst(e,t,r,n){var i=t?"xa":"ya",a=t?"ya":"xa",o=0,s=1,l=e.size(),u=new Array(l),c=0,f=n.minX,h=n.maxX,d=n.minY,v=n.maxY,x=function(X){return X*r._invScaleX},b=function(X){return X*r._invScaleY};e.each(function(X){var G=X[i],N=X[a],W=G._id.charAt(0)==="x",re=G.range;c===0&&re&&re[0]>re[1]!==W&&(s=-1);var ae=0,_e=W?r.width:r.height;if(r.hovermode==="x"||r.hovermode==="y"){var Me=Lle(X,t),ke=X.anchor,ge=ke==="end"?-1:1,ie,Te;if(ke==="middle")ie=X.crossPos+(W?b(Me.y-X.by/2):x(X.bx/2+X.tx2width/2)),Te=ie+(W?b(X.by):x(X.bx));else if(W)ie=X.crossPos+b(Bc+Me.y)-b(X.by/2-Bc),Te=ie+b(X.by);else{var Ee=x(ge*Bc+Me.x),Ae=Ee+x(ge*X.bx);ie=X.crossPos+Math.min(Ee,Ae),Te=X.crossPos+Math.max(Ee,Ae)}W?d!==void 0&&v!==void 0&&Math.min(Te,v)-Math.max(ie,d)>1&&(N.side==="left"?(ae=N._mainLinePosition,_e=r.width):_e=N._mainLinePosition):f!==void 0&&h!==void 0&&Math.min(Te,h)-Math.max(ie,f)>1&&(N.side==="top"?(ae=N._mainLinePosition,_e=r.height):_e=N._mainLinePosition)}u[c++]=[{datum:X,traceIndex:X.trace.index,dp:0,pos:X.pos,posref:X.posref,size:X.by*(W?Bst:1)/2,pmin:ae,pmax:_e}]}),u.sort(function(X,G){return X[0].posref-G[0].posref||s*(G[0].traceIndex-X[0].traceIndex)});var p,E,k,A,L,_,C;function M(X){var G=X[0],N=X[X.length-1];if(E=G.pmin-G.pos-G.dp+G.size,k=N.pos+N.dp+N.size-G.pmax,E>.01){for(L=X.length-1;L>=0;L--)X[L].dp+=E;p=!1}if(!(k<.01)){if(E<-.01){for(L=X.length-1;L>=0;L--)X[L].dp-=k;p=!1}if(p){var W=0;for(A=0;AG.pmax&&W++;for(A=X.length-1;A>=0&&!(W<=0);A--)_=X[A],_.pos>G.pmax-1&&(_.del=!0,W--);for(A=0;A=0;L--)X[L].dp-=k;for(A=X.length-1;A>=0&&!(W<=0);A--)_=X[A],_.pos+_.dp+_.size>G.pmax&&(_.del=!0,W--)}}}for(;!p&&o<=l;){for(o++,p=!0,A=0;A.01){for(L=P.length-1;L>=0;L--)P[L].dp+=E;for(g.push.apply(g,P),u.splice(A+1,1),C=0,L=g.length-1;L>=0;L--)C+=g[L].dp;for(k=C/g.length,L=g.length-1;L>=0;L--)g[L].dp-=k;p=!1}else A++}u.forEach(M)}for(A=u.length-1;A>=0;A--){var q=u[A];for(L=q.length-1;L>=0;L--){var V=q[L],H=V.datum;H.offset=V.dp,H.del=V.del}}}function Lle(e,t){var r=0,n=e.offset;return t&&(n*=-Ust,r=e.offset*Nst),{x:r,y:n}}function Wst(e){var t={start:1,end:-1,middle:0}[e.anchor],r=t*(Bc+Us),n=r+t*(e.txwidth+Us),i=e.anchor==="middle";return i&&(r-=e.tx2width/2,n+=e.txwidth/2+Us),{alignShift:t,textShiftX:r,text2ShiftX:n}}function Ple(e,t,r,n){var i=function(o){return o*r},a=function(o){return o*n};e.each(function(o){var s=Db.select(this);if(o.del)return s.remove();var l=s.select("text.nums"),u=o.anchor,c=u==="end"?-1:1,f=Wst(o),h=Lle(o,t),d=h.x,v=h.y,x=u==="middle";s.select("path").attr("d",x?"M-"+i(o.bx/2+o.tx2width/2)+","+a(v-o.by/2)+"h"+i(o.bx)+"v"+a(o.by)+"h-"+i(o.bx)+"Z":"M0,0L"+i(c*Bc+d)+","+a(Bc+v)+"v"+a(o.by/2-Bc)+"h"+i(c*o.bx)+"v-"+a(o.by)+"H"+i(c*Bc+d)+"V"+a(v-Bc)+"Z");var b=d+f.textShiftX,p=v+o.ty0-o.by/2+Us,E=o.textAlign||"auto";E!=="auto"&&(E==="left"&&u!=="start"?(l.attr("text-anchor","start"),b=x?-o.bx/2-o.tx2width/2+Us:-o.bx-Us):E==="right"&&u!=="end"&&(l.attr("text-anchor","end"),b=x?o.bx/2-o.tx2width/2-Us:o.bx+Us)),l.call(A0.positionText,i(b),a(p)),o.tx2width&&(s.select("text.name").call(A0.positionText,i(f.text2ShiftX+f.alignShift*Us+d),a(v+o.ty0-o.by/2+Us)),s.select("rect").call(bm.setRect,i(f.text2ShiftX+(f.alignShift-1)*o.tx2width/2+d),a(v-o.by/2-1),i(o.tx2width),a(o.by+2)))})}function Zst(e,t){var r=e.index,n=e.trace||{},i=e.cd[0],a=e.cd[r]||{};function o(h){return h||Sy(h)&&h===0}var s=Array.isArray(r)?function(h,d){var v=Rf.castOption(i,r,h);return o(v)?v:Rf.extractOption({},n,"",d)}:function(h,d){return Rf.extractOption(a,n,h,d)};function l(h,d,v){var x=s(d,v);o(x)&&(e[h]=x)}if(l("hoverinfo","hi","hoverinfo"),l("bgcolor","hbg","hoverlabel.bgcolor"),l("borderColor","hbc","hoverlabel.bordercolor"),l("fontFamily","htf","hoverlabel.font.family"),l("fontSize","hts","hoverlabel.font.size"),l("fontColor","htc","hoverlabel.font.color"),l("fontWeight","htw","hoverlabel.font.weight"),l("fontStyle","hty","hoverlabel.font.style"),l("fontVariant","htv","hoverlabel.font.variant"),l("nameLength","hnl","hoverlabel.namelength"),l("textAlign","hta","hoverlabel.align"),e.posref=t==="y"||t==="closest"&&n.orientation==="h"?e.xa._offset+(e.x0+e.x1)/2:e.ya._offset+(e.y0+e.y1)/2,e.x0=Rf.constrain(e.x0,0,e.xa._length),e.x1=Rf.constrain(e.x1,0,e.xa._length),e.y0=Rf.constrain(e.y0,0,e.ya._length),e.y1=Rf.constrain(e.y1,0,e.ya._length),e.xLabelVal!==void 0&&(e.xLabel="xLabel"in e?e.xLabel:wm.hoverLabelText(e.xa,e.xLabelVal,n.xhoverformat),e.xVal=e.xa.c2d(e.xLabelVal)),e.yLabelVal!==void 0&&(e.yLabel="yLabel"in e?e.yLabel:wm.hoverLabelText(e.ya,e.yLabelVal,n.yhoverformat),e.yVal=e.ya.c2d(e.yLabelVal)),e.zLabelVal!==void 0&&e.zLabel===void 0&&(e.zLabel=String(e.zLabelVal)),!isNaN(e.xerr)&&!(e.xa.type==="log"&&e.xerr<=0)){var u=wm.tickText(e.xa,e.xa.c2l(e.xerr),"hover").text;e.xerrneg!==void 0?e.xLabel+=" +"+u+" / -"+wm.tickText(e.xa,e.xa.c2l(e.xerrneg),"hover").text:e.xLabel+=" \xB1 "+u,t==="x"&&(e.distance+=1)}if(!isNaN(e.yerr)&&!(e.ya.type==="log"&&e.yerr<=0)){var c=wm.tickText(e.ya,e.ya.c2l(e.yerr),"hover").text;e.yerrneg!==void 0?e.yLabel+=" +"+c+" / -"+wm.tickText(e.ya,e.ya.c2l(e.yerrneg),"hover").text:e.yLabel+=" \xB1 "+c,t==="y"&&(e.distance+=1)}var f=e.hoverinfo||e.trace.hoverinfo;return f&&f!=="all"&&(f=Array.isArray(f)?f:f.split("+"),f.indexOf("x")===-1&&(e.xLabel=void 0),f.indexOf("y")===-1&&(e.yLabel=void 0),f.indexOf("z")===-1&&(e.zLabel=void 0),f.indexOf("text")===-1&&(e.text=void 0),f.indexOf("name")===-1&&(e.name=void 0)),e}function Tle(e,t,r){var n=r.container,i=r.fullLayout,a=i._size,o=r.event,s=!!t.hLinePoint,l=!!t.vLinePoint,u,c;if(n.selectAll(".spikeline").remove(),!!(l||s)){var f=sd.combine(i.plot_bgcolor,i.paper_bgcolor);if(s){var h=t.hLinePoint,d,v;u=h&&h.xa,c=h&&h.ya;var x=c.spikesnap;x==="cursor"?(d=o.pointerX,v=o.pointerY):(d=u._offset+h.x,v=c._offset+h.y);var b=_le.readability(h.color,f)<1.5?sd.contrast(f):h.color,p=c.spikemode,E=c.spikethickness,k=c.spikecolor||b,A=wm.getPxPosition(e,c),L,_;if(p.indexOf("toaxis")!==-1||p.indexOf("across")!==-1){if(p.indexOf("toaxis")!==-1&&(L=A,_=d),p.indexOf("across")!==-1){var C=c._counterDomainMin,M=c._counterDomainMax;c.anchor==="free"&&(C=Math.min(C,c.position),M=Math.max(M,c.position)),L=a.l+C*a.w,_=a.l+M*a.w}n.insert("line",":first-child").attr({x1:L,x2:_,y1:v,y2:v,"stroke-width":E,stroke:k,"stroke-dasharray":bm.dashStyle(c.spikedash,E)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:L,x2:_,y1:v,y2:v,"stroke-width":E+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}p.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:A+(c.side!=="right"?E:-E),cy:v,r:E,fill:k}).classed("spikeline",!0)}if(l){var g=t.vLinePoint,P,T;u=g&&g.xa,c=g&&g.ya;var F=u.spikesnap;F==="cursor"?(P=o.pointerX,T=o.pointerY):(P=u._offset+g.x,T=c._offset+g.y);var q=_le.readability(g.color,f)<1.5?sd.contrast(f):g.color,V=u.spikemode,H=u.spikethickness,X=u.spikecolor||q,G=wm.getPxPosition(e,u),N,W;if(V.indexOf("toaxis")!==-1||V.indexOf("across")!==-1){if(V.indexOf("toaxis")!==-1&&(N=G,W=T),V.indexOf("across")!==-1){var re=u._counterDomainMin,ae=u._counterDomainMax;u.anchor==="free"&&(re=Math.min(re,u.position),ae=Math.max(ae,u.position)),N=a.t+(1-ae)*a.h,W=a.t+(1-re)*a.h}n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:W,"stroke-width":H,stroke:X,"stroke-dasharray":bm.dashStyle(u.spikedash,H)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:W,"stroke-width":H+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}V.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:P,cy:G-(u.side!=="top"?H:-H),r:H,fill:X}).classed("spikeline",!0)}}}function Xst(e,t,r){if(!r||r.length!==e._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=e._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}function Ale(e,t){return!t||t.vLinePoint!==e._spikepoints.vLinePoint||t.hLinePoint!==e._spikepoints.hLinePoint}function Sle(e,t){return A0.plainText(e||"",{len:t,allowedTags:["br","sub","sup","b","i","em","s","u"]})}function Yst(e,t){for(var r=t.charAt(0),n=[],i=[],a=[],o=0;o{"use strict";var Kst=Mr(),Jst=va(),$st=rp().isUnifiedHover;Dle.exports=function(t,r,n,i){i=i||{};var a=r.legend;function o(s){i.font[s]||(i.font[s]=a?r.legend.font[s]:r.font[s])}r&&$st(r.hovermode)&&(i.font||(i.font={}),o("size"),o("family"),o("color"),o("weight"),o("style"),o("variant"),a?(i.bgcolor||(i.bgcolor=Jst.combine(r.legend.bgcolor,r.paper_bgcolor)),i.bordercolor||(i.bordercolor=r.legend.bordercolor)):i.bgcolor||(i.bgcolor=r.paper_bgcolor)),n("hoverlabel.bgcolor",i.bgcolor),n("hoverlabel.bordercolor",i.bordercolor),n("hoverlabel.namelength",i.namelength),Kst.coerceFont(n,"hoverlabel.font",i.font),n("hoverlabel.align",i.align)}});var Fle=ye((Xrr,zle)=>{"use strict";var Qst=Mr(),elt=oM(),tlt=N1();zle.exports=function(t,r){function n(i,a){return Qst.coerce(t,r,tlt,i,a)}elt(t,r,n)}});var Ble=ye((Yrr,Ole)=>{"use strict";var qle=Mr(),rlt=i3(),ilt=oM();Ole.exports=function(t,r,n,i){function a(s,l){return qle.coerce(t,r,rlt,s,l)}var o=qle.extendFlat({},i.hoverlabel);r.hovertemplate&&(o.namelength=-1),ilt(t,r,a,o)}});var OB=ye((Krr,Nle)=>{"use strict";var nlt=Mr(),alt=N1();Nle.exports=function(t,r){function n(i,a){return r[i]!==void 0?r[i]:nlt.coerce(t,r,alt,i,a)}return n("clickmode"),n("hoversubplots"),n("hovermode")}});var Hle=ye((Jrr,Vle)=>{"use strict";var Ule=Mr(),olt=N1(),slt=OB(),llt=oM();Vle.exports=function(t,r){function n(c,f){return Ule.coerce(t,r,olt,c,f)}var i=slt(t,r);i&&(n("hoverdistance"),n("spikedistance"));var a=n("dragmode");a==="select"&&n("selectdirection");var o=r._has("mapbox"),s=r._has("map"),l=r._has("geo"),u=r._basePlotModules.length;r.dragmode==="zoom"&&((o||s||l)&&u===1||(o||s)&&l&&u===2)&&(r.dragmode="pan"),llt(t,r,n),Ule.coerceFont(n,"hoverlabel.grouptitlefont",r.hoverlabel.font)}});var Wle=ye(($rr,jle)=>{"use strict";var BB=Mr(),Gle=ba();jle.exports=function(t){var r=t.calcdata,n=t._fullLayout;function i(u){return function(c){return BB.coerceHoverinfo({hoverinfo:c},{_module:u._module},n)}}for(var a=0;a{"use strict";var clt=ba(),flt=qB().hover;Zle.exports=function(t,r,n){var i=clt.getComponentMethod("annotations","onClick")(t,t._hoverdata);n!==void 0&&flt(t,r,n,!0);function a(){t.emit("plotly_click",{points:t._hoverdata,event:r})}t._hoverdata&&r&&r.target&&(i&&i.then?i.then(a):a(),r.stopImmediatePropagation&&r.stopImmediatePropagation())}});var Nc=ye((eir,Jle)=>{"use strict";var hlt=xa(),NL=Mr(),dlt=gv(),sM=rp(),Yle=N1(),Kle=qB();Jle.exports={moduleType:"component",name:"fx",constants:IS(),schema:{layout:Yle},attributes:i3(),layoutAttributes:Yle,supplyLayoutGlobalDefaults:Fle(),supplyDefaults:Ble(),supplyLayoutDefaults:Hle(),calc:Wle(),getDistanceFunction:sM.getDistanceFunction,getClosest:sM.getClosest,inbox:sM.inbox,quadrature:sM.quadrature,appendArrayPointValue:sM.appendArrayPointValue,castHoverOption:plt,castHoverinfo:glt,hover:Kle.hover,unhover:dlt.unhover,loneHover:Kle.loneHover,loneUnhover:vlt,click:Xle()};function vlt(e){var t=NL.isD3Selection(e)?e:hlt.select(e);t.selectAll("g.hovertext").remove(),t.selectAll(".spikeline").remove()}function plt(e,t,r){return NL.castOption(e,t,"hoverlabel."+r)}function glt(e,t,r){function n(i){return NL.coerceHoverinfo({hoverinfo:i},{_module:e._module},t)}return NL.castOption(e,r,"hoverinfo",n)}});var Sg=ye(My=>{"use strict";My.selectMode=function(e){return e==="lasso"||e==="select"};My.drawMode=function(e){return e==="drawclosedpath"||e==="drawopenpath"||e==="drawline"||e==="drawrect"||e==="drawcircle"};My.openMode=function(e){return e==="drawline"||e==="drawopenpath"};My.rectMode=function(e){return e==="select"||e==="drawline"||e==="drawrect"||e==="drawcircle"};My.freeMode=function(e){return e==="lasso"||e==="drawclosedpath"||e==="drawopenpath"};My.selectingOrDrawing=function(e){return My.freeMode(e)||My.rectMode(e)}});var lM=ye((rir,$le)=>{"use strict";$le.exports=function(t){var r=t._fullLayout;r._glcanvas&&r._glcanvas.size()&&r._glcanvas.each(function(n){n.regl&&n.regl.clear({color:!0,depth:!0})})}});var UL=ye((iir,Qle)=>{"use strict";Qle.exports={undo:{width:857.1,height:1e3,path:"m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z",transform:"matrix(1 0 0 -1 0 850)"},home:{width:928.6,height:1e3,path:"m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z",transform:"matrix(1 0 0 -1 0 850)"},"camera-retro":{width:1e3,height:1e3,path:"m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z",transform:"matrix(1 0 0 -1 0 850)"},zoombox:{width:1e3,height:1e3,path:"m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z",transform:"matrix(1 0 0 -1 0 850)"},pan:{width:1e3,height:1e3,path:"m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z",transform:"matrix(1 0 0 -1 0 850)"},zoom_plus:{width:875,height:1e3,path:"m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},zoom_minus:{width:875,height:1e3,path:"m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},autoscale:{width:1e3,height:1e3,path:"m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_basic:{width:1500,height:1e3,path:"m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_compare:{width:1125,height:1e3,path:"m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z",transform:"matrix(1 0 0 -1 0 850)"},plotlylogo:{width:1542,height:1e3,path:"m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z",transform:"matrix(1 0 0 -1 0 850)"},"z-axis":{width:1e3,height:1e3,path:"m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z",transform:"matrix(1 0 0 -1 0 850)"},"3d_rotate":{width:1e3,height:1e3,path:"m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z",transform:"matrix(1 0 0 -1 0 850)"},camera:{width:1e3,height:1e3,path:"m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z",transform:"matrix(1 0 0 -1 0 850)"},movie:{width:1e3,height:1e3,path:"m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z",transform:"matrix(1 0 0 -1 0 850)"},question:{width:857.1,height:1e3,path:"m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z",transform:"matrix(1 0 0 -1 0 850)"},disk:{width:857.1,height:1e3,path:"m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z",transform:"matrix(1 0 0 -1 0 850)"},drawopenpath:{width:70,height:70,path:"M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z",transform:"matrix(1 0 0 1 -15 -15)"},drawclosedpath:{width:90,height:90,path:"M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z",transform:"matrix(1 0 0 1 -5 -5)"},lasso:{width:1031,height:1e3,path:"m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z",transform:"matrix(1 0 0 -1 0 850)"},selectbox:{width:1e3,height:1e3,path:"m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z",transform:"matrix(1 0 0 -1 0 850)"},drawline:{width:70,height:70,path:"M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z",transform:"matrix(1 0 0 1 -15 -15)"},drawrect:{width:80,height:80,path:"M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z",transform:"matrix(1 0 0 1 -10 -10)"},drawcircle:{width:80,height:80,path:"M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z",transform:"matrix(1 0 0 1 -10 -10)"},eraseshape:{width:80,height:80,path:"M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z",transform:"matrix(1 0 0 1 -10 -10)"},spikeline:{width:1e3,height:1e3,path:"M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z",transform:"matrix(1.5 0 0 -1.5 0 850)"},pencil:{width:1792,height:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",transform:"matrix(1 0 0 1 0 1)"},newplotlylogo:{name:"newplotlylogo",svg:[""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}});var HL=ye((nir,eue)=>{"use strict";var VL=32;eue.exports={CIRCLE_SIDES:VL,i000:0,i090:VL/4,i180:VL/2,i270:VL/4*3,cos45:Math.cos(Math.PI/4),sin45:Math.sin(Math.PI/4),SQRT2:Math.sqrt(2)}});var GL=ye((air,rue)=>{"use strict";var mlt=Mr().strTranslate;function tue(e,t){switch(e.type){case"log":return e.p2d(t);case"date":return e.p2r(t,0,e.calendar);default:return e.p2r(t)}}function ylt(e,t){switch(e.type){case"log":return e.d2p(t);case"date":return e.r2p(t,0,e.calendar);default:return e.r2p(t)}}function _lt(e){var t=e._id.charAt(0)==="y"?1:0;return function(r){return tue(e,r[t])}}function xlt(e){return mlt(e.xaxis._offset,e.yaxis._offset)}rue.exports={p2r:tue,r2p:ylt,axValue:_lt,getTransform:xlt}});var c_=ye(Ey=>{"use strict";var blt=XS(),aue=HL(),V3=aue.CIRCLE_SIDES,NB=aue.SQRT2,oue=GL(),iue=oue.p2r,nue=oue.r2p,wlt=[0,3,4,5,6,1,2],Tlt=[0,3,4,1,2];Ey.writePaths=function(e){var t=e.length;if(!t)return"M0,0Z";for(var r="",n=0;n0&&l{"use strict";var fue=Sg(),Alt=fue.drawMode,Slt=fue.openMode,H3=HL(),sue=H3.i000,lue=H3.i090,uue=H3.i180,cue=H3.i270,Mlt=H3.cos45,Elt=H3.sin45,hue=GL(),WL=hue.p2r,f_=hue.r2p,klt=e_(),Clt=klt.clearOutline,ZL=c_(),Llt=ZL.readPaths,Plt=ZL.writePaths,Ilt=ZL.ellipseOver,Rlt=ZL.fixDatesForPaths;function Dlt(e,t){if(e.length){var r=e[0][0];if(r){var n=t.gd,i=t.isActiveShape,a=t.dragmode,o=(n.layout||{}).shapes||[];if(!Alt(a)&&i!==void 0){var s=n._fullLayout._activeShapeIndex;if(s{"use strict";var zlt=Sg(),Flt=zlt.selectMode,qlt=e_(),Olt=qlt.clearOutline,UB=c_(),Blt=UB.readPaths,Nlt=UB.writePaths,Ult=UB.fixDatesForPaths;pue.exports=function(t,r){if(t.length){var n=t[0][0];if(n){var i=n.getAttribute("d"),a=r.gd,o=a._fullLayout.newselection,s=r.plotinfo,l=s.xaxis,u=s.yaxis,c=r.isActiveSelection,f=r.dragmode,h=(a.layout||{}).selections||[];if(!Flt(f)&&c!==void 0){var d=a._fullLayout._activeSelectionIndex;if(d{"use strict";gue.exports={segmentRE:/[MLHVQCTSZ][^MLHVQCTSZ]*/g,paramRE:/[^\s,]+/g,paramIsX:{M:{0:!0,drawn:0},L:{0:!0,drawn:0},H:{0:!0,drawn:0},V:{},Q:{0:!0,2:!0,drawn:2},C:{0:!0,2:!0,4:!0,drawn:4},T:{0:!0,drawn:0},S:{0:!0,2:!0,drawn:2},Z:{}},paramIsY:{M:{1:!0,drawn:1},L:{1:!0,drawn:1},H:{},V:{0:!0,drawn:0},Q:{1:!0,3:!0,drawn:3},C:{1:!0,3:!0,5:!0,drawn:5},T:{1:!0,drawn:1},S:{1:!0,3:!0,drawn:5},Z:{}},numParams:{M:2,L:2,H:1,V:1,Q:4,C:6,T:2,S:4,Z:0}}});var h_=ye(Ld=>{"use strict";var Fb=cM(),mue=Mr(),YL=Qa();Ld.rangeToShapePosition=function(e){return e.type==="log"?e.r2d:function(t){return t}};Ld.shapePositionToRange=function(e){return e.type==="log"?e.d2r:function(t){return t}};Ld.decodeDate=function(e){return function(t){return t.replace&&(t=t.replace("_"," ")),e(t)}};Ld.encodeDate=function(e){return function(t){return e(t).replace(" ","_")}};Ld.extractPathCoords=function(e,t,r){var n=[],i=e.match(Fb.segmentRE);return i.forEach(function(a){var o=t[a.charAt(0)].drawn;if(o!==void 0){var s=a.substr(1).match(Fb.paramRE);if(!(!s||s.lengthd&&(x="X"),x});return u>d&&(v=v.replace(/[\s,]*X.*/,""),mue.log("Ignoring extra params in segment "+l)),c+v})}function fM(e,t){t=t||0;var r=0;return t&&e&&(e.type==="category"||e.type==="multicategory")&&(r=(e.r2p(1)-e.r2p(0))*t),r}});var GB=ye((fir,bue)=>{"use strict";var Hlt=Mr(),G3=Qa(),yue=Pl(),_ue=ao(),Glt=c_().readPaths,HB=h_(),jlt=HB.getPathString,xue=b6(),Wlt=Nh().FROM_TL;bue.exports=function(t,r,n,i){if(i.selectAll(".shape-label").remove(),!!(n.label.text||n.label.texttemplate)){var a;if(n.label.texttemplate){var o={};if(n.type!=="path"){var s=G3.getFromId(t,n.xref),l=G3.getFromId(t,n.yref);for(var u in xue){var c=xue[u](n,s,l);c!==void 0&&(o[u]=c)}}a=Hlt.texttemplateStringForShapes(n.label.texttemplate,{},t._fullLayout._d3locale,o)}else a=n.label.text;var f={"data-index":r},h=n.label.font,d={"data-notex":1},v=i.append("g").attr(f).classed("shape-label",!0),x=v.append("text").attr(d).classed("shape-label-text",!0).text(a),b,p,E,k;if(n.path){var A=jlt(t,n),L=Glt(A,t);b=1/0,E=1/0,p=-1/0,k=-1/0;for(var _=0;_=e?i=t-n:i=n-t,-180/Math.PI*Math.atan2(i,a)}function Xlt(e,t,r,n,i,a,o){var s=i.label.textposition,l=i.label.textangle,u=i.label.padding,c=i.type,f=Math.PI/180*a,h=Math.sin(f),d=Math.cos(f),v=i.label.xanchor,x=i.label.yanchor,b,p,E,k;if(c==="line"){s==="start"?(b=e,p=t):s==="end"?(b=r,p=n):(b=(e+r)/2,p=(t+n)/2),v==="auto"&&(s==="start"?l==="auto"?r>e?v="left":re?v="right":re?v="right":re?v="left":r{"use strict";var Ylt=Mr(),Klt=Ylt.strTranslate,wue=gv(),Sue=Sg(),Jlt=Sue.drawMode,Mue=Sue.selectMode,Eue=ba(),Tue=va(),JL=HL(),$lt=JL.i000,Qlt=JL.i090,eut=JL.i180,tut=JL.i270,rut=e_(),kue=rut.clearOutlineControllers,WB=c_(),KL=WB.pointsOnRectangle,jB=WB.pointsOnEllipse,iut=WB.writePaths,nut=XL().newShapes,aut=XL().createShapeObj,out=VB(),sut=GB();Cue.exports=function e(t,r,n,i){i||(i=0);var a=n.gd;function o(){e(t,r,n,i++),(jB(t[0])||n.hasText)&&s({redrawing:!0})}function s(G){var N={};n.isActiveShape!==void 0&&(n.isActiveShape=!1,N=nut(r,n)),n.isActiveSelection!==void 0&&(n.isActiveSelection=!1,N=out(r,n),a._fullLayout._reselect=!0),Object.keys(N).length&&Eue.call((G||{}).redrawing?"relayout":"_guiRelayout",a,N)}var l=a._fullLayout,u=l._zoomlayer,c=n.dragmode,f=Jlt(c),h=Mue(c);(f||h)&&(a._fullLayout._outlining=!0),kue(a),r.attr("d",iut(t));var d,v,x,b,p;if(!i&&(n.isActiveShape||n.isActiveSelection)){p=lut([],t);var E=u.append("g").attr("class","outline-controllers");P(E),X()}if(f&&n.hasText){var k=u.select(".label-temp"),A=aut(r,n,n.dragmode);sut(a,"label-temp",A,k)}function L(G){x=+G.srcElement.getAttribute("data-i"),b=+G.srcElement.getAttribute("data-j"),d[x][b].moveFn=_}function _(G,N){if(t.length){var W=p[x][b][1],re=p[x][b][2],ae=t[x],_e=ae.length;if(KL(ae)){var Me=G,ke=N;if(n.isActiveSelection){var ge=Aue(ae,b);ge[1]===ae[b][1]?ke=0:Me=0}for(var ie=0;ie<_e;ie++)if(ie!==b){var Te=ae[ie];Te[1]===ae[b][1]&&(Te[1]=W+Me),Te[2]===ae[b][2]&&(Te[2]=re+ke)}if(ae[b][1]=W+Me,ae[b][2]=re+ke,!KL(ae))for(var Ee=0;Ee<_e;Ee++)for(var Ae=0;Ae1&&!(G.length===2&&G[1][0]==="Z")&&(b===0&&(G[0][0]="M"),t[x]=G,o(),s())}}function g(G,N){if(G===2){x=+N.srcElement.getAttribute("data-i"),b=+N.srcElement.getAttribute("data-j");var W=t[x];!KL(W)&&!jB(W)&&M()}}function P(G){d=[];for(var N=0;N{"use strict";var cut=xa(),zue=ba(),Lue=Mr(),j3=Qa(),fut=c_().readPaths,hut=$L(),eP=GB(),Fue=e_().clearOutlineControllers,ZB=va(),YB=ao(),dut=Vs().arrayEditor,Pue=gv(),Iue=Tg(),qb=cM(),Mp=h_(),XB=Mp.getPathString;Bue.exports={draw:KB,drawOne:que,eraseActiveShape:gut,drawLabel:eP};function KB(e){var t=e._fullLayout;t._shapeUpperLayer.selectAll("path").remove(),t._shapeLowerLayer.selectAll("path").remove(),t._shapeUpperLayer.selectAll("text").remove(),t._shapeLowerLayer.selectAll("text").remove();for(var r in t._plots){var n=t._plots[r].shapelayer;n&&(n.selectAll("path").remove(),n.selectAll("text").remove())}for(var i=0;io&&kt>s&&!rt.shiftKey?Pue.getCursor(Ct/Rt,1-Yt/kt):"move";Iue(t,xr),Te=xr.split("-")[0]}}function Ce(rt){QL(e)||(l&&(p=ae(r.xanchor)),u&&(E=_e(r.yanchor)),r.type==="path"?T=r.path:(d=l?r.x0:ae(r.x0),v=u?r.y0:_e(r.y0),x=l?r.x1:ae(r.x1),b=u?r.y1:_e(r.y1)),db?(k=v,C="y0",A=b,M="y1"):(k=b,C="y1",A=v,M="y0"),ze(rt),nt(i,r),qt(t,r,e),ie.moveFn=Te==="move"?ce:Ge,ie.altKey=rt.altKey)}function me(){QL(e)||(Iue(t),ct(i),Oue(t,e,r),zue.call("_guiRelayout",e,a.getUpdateObj()))}function Re(){QL(e)||ct(i)}function ce(rt,ot){if(r.type==="path"){var Rt=function(Yt){return Yt},kt=Rt,Ct=Rt;l?h("xanchor",r.xanchor=Me(p+rt)):(kt=function(xr){return Me(ae(xr)+rt)},q&&q.type==="date"&&(kt=Mp.encodeDate(kt))),u?h("yanchor",r.yanchor=ke(E+ot)):(Ct=function(xr){return ke(_e(xr)+ot)},H&&H.type==="date"&&(Ct=Mp.encodeDate(Ct))),h("path",r.path=Rue(T,kt,Ct))}else l?h("xanchor",r.xanchor=Me(p+rt)):(h("x0",r.x0=Me(d+rt)),h("x1",r.x1=Me(x+rt))),u?h("yanchor",r.yanchor=ke(E+ot)):(h("y0",r.y0=ke(v+ot)),h("y1",r.y1=ke(b+ot)));t.attr("d",XB(e,r)),nt(i,r),eP(e,n,r,F)}function Ge(rt,ot){if(f){var Rt=function(_r){return _r},kt=Rt,Ct=Rt;l?h("xanchor",r.xanchor=Me(p+rt)):(kt=function(Br){return Me(ae(Br)+rt)},q&&q.type==="date"&&(kt=Mp.encodeDate(kt))),u?h("yanchor",r.yanchor=ke(E+ot)):(Ct=function(Br){return ke(_e(Br)+ot)},H&&H.type==="date"&&(Ct=Mp.encodeDate(Ct))),h("path",r.path=Rue(T,kt,Ct))}else if(c){if(Te==="resize-over-start-point"){var Yt=d+rt,xr=u?v-ot:v+ot;h("x0",r.x0=l?Yt:Me(Yt)),h("y0",r.y0=u?xr:ke(xr))}else if(Te==="resize-over-end-point"){var er=x+rt,Ke=u?b-ot:b+ot;h("x1",r.x1=l?er:Me(er)),h("y1",r.y1=u?Ke:ke(Ke))}}else{var xt=function(_r){return Te.indexOf(_r)!==-1},bt=xt("n"),Lt=xt("s"),St=xt("w"),Et=xt("e"),dt=bt?k+ot:k,Ht=Lt?A+ot:A,$t=St?L+rt:L,fr=Et?_+rt:_;u&&(bt&&(dt=k-ot),Lt&&(Ht=A-ot)),(!u&&Ht-dt>s||u&&dt-Ht>s)&&(h(C,r[C]=u?dt:ke(dt)),h(M,r[M]=u?Ht:ke(Ht))),fr-$t>o&&(h(g,r[g]=l?$t:Me($t)),h(P,r[P]=l?fr:Me(fr)))}t.attr("d",XB(e,r)),nt(i,r),eP(e,n,r,F)}function nt(rt,ot){(l||u)&&Rt();function Rt(){var kt=ot.type!=="path",Ct=rt.selectAll(".visual-cue").data([0]),Yt=1;Ct.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":Yt}).classed("visual-cue",!0);var xr=ae(l?ot.xanchor:Lue.midRange(kt?[ot.x0,ot.x1]:Mp.extractPathCoords(ot.path,qb.paramIsX))),er=_e(u?ot.yanchor:Lue.midRange(kt?[ot.y0,ot.y1]:Mp.extractPathCoords(ot.path,qb.paramIsY)));if(xr=Mp.roundPositionForSharpStrokeRendering(xr,Yt),er=Mp.roundPositionForSharpStrokeRendering(er,Yt),l&&u){var Ke="M"+(xr-1-Yt)+","+(er-1-Yt)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";Ct.attr("d",Ke)}else if(l){var xt="M"+(xr-1-Yt)+","+(er-9-Yt)+"v18 h2 v-18 Z";Ct.attr("d",xt)}else{var bt="M"+(xr-9-Yt)+","+(er-1-Yt)+"h18 v2 h-18 Z";Ct.attr("d",bt)}}}function ct(rt){rt.selectAll(".visual-cue").remove()}function qt(rt,ot,Rt){var kt=ot.xref,Ct=ot.yref,Yt=j3.getFromId(Rt,kt),xr=j3.getFromId(Rt,Ct),er="";kt!=="paper"&&!Yt.autorange&&(er+=kt),Ct!=="paper"&&!xr.autorange&&(er+=Ct),YB.setClipUrl(rt,er?"clip"+Rt._fullLayout._uid+er:null,Rt)}}function Rue(e,t,r){return e.replace(qb.segmentRE,function(n){var i=0,a=n.charAt(0),o=qb.paramIsX[a],s=qb.paramIsY[a],l=qb.numParams[a],u=n.substr(1).replace(qb.paramRE,function(c){return i>=l||(o[i]?c=t(c):s[i]&&(c=r(c)),i++),c});return a+u})}function put(e,t){if(tP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeShapeIndex){Due(e);return}e._fullLayout._activeShapeIndex=n,e._fullLayout._deactivateShape=Due,KB(e)}}}function Due(e){if(tP(e)){var t=e._fullLayout._activeShapeIndex;t>=0&&(Fue(e),delete e._fullLayout._activeShapeIndex,KB(e))}}function gut(e){if(tP(e)){Fue(e);var t=e._fullLayout._activeShapeIndex,r=(e.layout||{}).shapes||[];if(t{"use strict";var S0=ba(),Nue=Xu(),Uue=af(),al=UL(),mut=rP().eraseActiveShape,iP=Mr(),Os=iP._,ol=Xue.exports={};ol.toImage={name:"toImage",title:function(e){var t=e._context.toImageButtonOptions||{},r=t.format||"png";return r==="png"?Os(e,"Download plot as a png"):Os(e,"Download plot")},icon:al.camera,click:function(e){var t=e._context.toImageButtonOptions,r={format:t.format||"png"};iP.notifier(Os(e,"Taking snapshot - this may take a few seconds"),"long"),["filename","width","height","scale"].forEach(function(n){n in t&&(r[n]=t[n])}),S0.call("downloadImage",e,r).then(function(n){iP.notifier(Os(e,"Snapshot succeeded")+" - "+n,"long")}).catch(function(){iP.notifier(Os(e,"Sorry, there was a problem downloading your snapshot!"),"long")})}};ol.sendDataToCloud={name:"sendDataToCloud",title:function(e){return Os(e,"Edit in Chart Studio")},icon:al.disk,click:function(e){Nue.sendDataToCloud(e)}};ol.editInChartStudio={name:"editInChartStudio",title:function(e){return Os(e,"Edit in Chart Studio")},icon:al.pencil,click:function(e){Nue.sendDataToCloud(e)}};ol.zoom2d={name:"zoom2d",_cat:"zoom",title:function(e){return Os(e,"Zoom")},attr:"dragmode",val:"zoom",icon:al.zoombox,click:Ov};ol.pan2d={name:"pan2d",_cat:"pan",title:function(e){return Os(e,"Pan")},attr:"dragmode",val:"pan",icon:al.pan,click:Ov};ol.select2d={name:"select2d",_cat:"select",title:function(e){return Os(e,"Box Select")},attr:"dragmode",val:"select",icon:al.selectbox,click:Ov};ol.lasso2d={name:"lasso2d",_cat:"lasso",title:function(e){return Os(e,"Lasso Select")},attr:"dragmode",val:"lasso",icon:al.lasso,click:Ov};ol.drawclosedpath={name:"drawclosedpath",title:function(e){return Os(e,"Draw closed freeform")},attr:"dragmode",val:"drawclosedpath",icon:al.drawclosedpath,click:Ov};ol.drawopenpath={name:"drawopenpath",title:function(e){return Os(e,"Draw open freeform")},attr:"dragmode",val:"drawopenpath",icon:al.drawopenpath,click:Ov};ol.drawline={name:"drawline",title:function(e){return Os(e,"Draw line")},attr:"dragmode",val:"drawline",icon:al.drawline,click:Ov};ol.drawrect={name:"drawrect",title:function(e){return Os(e,"Draw rectangle")},attr:"dragmode",val:"drawrect",icon:al.drawrect,click:Ov};ol.drawcircle={name:"drawcircle",title:function(e){return Os(e,"Draw circle")},attr:"dragmode",val:"drawcircle",icon:al.drawcircle,click:Ov};ol.eraseshape={name:"eraseshape",title:function(e){return Os(e,"Erase active shape")},icon:al.eraseshape,click:mut};ol.zoomIn2d={name:"zoomIn2d",_cat:"zoomin",title:function(e){return Os(e,"Zoom in")},attr:"zoom",val:"in",icon:al.zoom_plus,click:Ov};ol.zoomOut2d={name:"zoomOut2d",_cat:"zoomout",title:function(e){return Os(e,"Zoom out")},attr:"zoom",val:"out",icon:al.zoom_minus,click:Ov};ol.autoScale2d={name:"autoScale2d",_cat:"autoscale",title:function(e){return Os(e,"Autoscale")},attr:"zoom",val:"auto",icon:al.autoscale,click:Ov};ol.resetScale2d={name:"resetScale2d",_cat:"resetscale",title:function(e){return Os(e,"Reset axes")},attr:"zoom",val:"reset",icon:al.home,click:Ov};ol.hoverClosestCartesian={name:"hoverClosestCartesian",_cat:"hoverclosest",title:function(e){return Os(e,"Show closest data on hover")},attr:"hovermode",val:"closest",icon:al.tooltip_basic,gravity:"ne",click:Ov};ol.hoverCompareCartesian={name:"hoverCompareCartesian",_cat:"hoverCompare",title:function(e){return Os(e,"Compare data on hover")},attr:"hovermode",val:function(e){return e._fullLayout._isHoriz?"y":"x"},icon:al.tooltip_compare,gravity:"ne",click:Ov};function Ov(e,t){var r=t.currentTarget,n=r.getAttribute("data-attr"),i=r.getAttribute("data-val")||!0,a=e._fullLayout,o={},s=Uue.list(e,null,!0),l=a._cartesianSpikesEnabled,u,c;if(n==="zoom"){var f=i==="in"?.5:2,h=(1+f)/2,d=(1-f)/2,v;for(c=0;c{"use strict";var Yue=QB(),xut=Object.keys(Yue),Kue=["drawline","drawopenpath","drawclosedpath","drawcircle","drawrect","eraseshape"],Jue=["v1hovermode","hoverclosest","hovercompare","togglehover","togglespikelines"].concat(Kue),Z3=[],but=function(e){if(Jue.indexOf(e._cat||e.name)===-1){var t=e.name,r=(e._cat||e.name).toLowerCase();Z3.indexOf(t)===-1&&Z3.push(t),Z3.indexOf(r)===-1&&Z3.push(r)}};xut.forEach(function(e){but(Yue[e])});Z3.sort();$ue.exports={DRAW_MODES:Kue,backButtons:Jue,foreButtons:Z3}});var tN=ye((mir,Que)=>{"use strict";var gir=eN();Que.exports={editType:"modebar",orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"modebar"},bgcolor:{valType:"color",editType:"modebar"},color:{valType:"color",editType:"modebar"},activecolor:{valType:"color",editType:"modebar"},uirevision:{valType:"any",editType:"none"},add:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"},remove:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"}}});var tce=ye((yir,ece)=>{"use strict";var wut=Mr(),hM=va(),Tut=Vs(),Aut=tN();ece.exports=function(t,r){var n=t.modebar||{},i=Tut.newContainer(r,"modebar");function a(s,l){return wut.coerce(n,i,Aut,s,l)}a("orientation"),a("bgcolor",hM.addOpacity(r.paper_bgcolor,.5));var o=hM.contrast(hM.rgb(r.modebar.bgcolor));a("color",hM.addOpacity(o,.3)),a("activecolor",hM.addOpacity(o,.7)),a("uirevision",r.uirevision),a("add"),a("remove")}});var ace=ye((_ir,nce)=>{"use strict";var rN=xa(),Sut=uo(),aP=Mr(),rce=UL(),Mut=e6().version,Eut=new DOMParser;function ice(e){this.container=e.container,this.element=document.createElement("div"),this.update(e.graphInfo,e.buttons),this.container.appendChild(this.element)}var Tm=ice.prototype;Tm.update=function(e,t){this.graphInfo=e;var r=this.graphInfo._context,n=this.graphInfo._fullLayout,i="modebar-"+n._uid;this.element.setAttribute("id",i),this._uid=i,this.element.className="modebar",r.displayModeBar==="hover"&&(this.element.className+=" modebar--hover ease-bg"),n.modebar.orientation==="v"&&(this.element.className+=" vertical",t=t.reverse());var a=n.modebar,o="#"+i+" .modebar-group";document.querySelectorAll(o).forEach(function(f){f.style.backgroundColor=a.bgcolor});var s=!this.hasButtons(t),l=this.hasLogo!==r.displaylogo,u=this.locale!==r.locale;if(this.locale=r.locale,(s||l||u)&&(this.removeAllButtons(),this.updateButtons(t),r.watermark||r.displaylogo)){var c=this.getLogo();r.watermark&&(c.className=c.className+" watermark"),n.modebar.orientation==="v"?this.element.insertBefore(c,this.element.childNodes[0]):this.element.appendChild(c),this.hasLogo=!0}this.updateActiveButton(),aP.setStyleOnHover("#"+i+" .modebar-btn",".active",".icon path","fill: "+a.activecolor,"fill: "+a.color,this.element)};Tm.updateButtons=function(e){var t=this;this.buttons=e,this.buttonElements=[],this.buttonsNames=[],this.buttons.forEach(function(r){var n=t.createGroup();r.forEach(function(i){var a=i.name;if(!a)throw new Error("must provide button 'name' in button config");if(t.buttonsNames.indexOf(a)!==-1)throw new Error("button name '"+a+"' is taken");t.buttonsNames.push(a);var o=t.createButton(i);t.buttonElements.push(o),n.appendChild(o)}),t.element.appendChild(n)})};Tm.createGroup=function(){var e=document.createElement("div");e.className="modebar-group";var t=this.graphInfo._fullLayout.modebar;return e.style.backgroundColor=t.bgcolor,e};Tm.createButton=function(e){var t=this,r=document.createElement("a");r.setAttribute("rel","tooltip"),r.className="modebar-btn";var n=e.title;n===void 0?n=e.name:typeof n=="function"&&(n=n(this.graphInfo)),(n||n===0)&&r.setAttribute("data-title",n),e.attr!==void 0&&r.setAttribute("data-attr",e.attr);var i=e.val;i!==void 0&&(typeof i=="function"&&(i=i(this.graphInfo)),r.setAttribute("data-val",i));var a=e.click;if(typeof a!="function")throw new Error("must provide button 'click' function in button config");r.addEventListener("click",function(s){e.click(t.graphInfo,s),t.updateActiveButton(s.currentTarget)}),r.setAttribute("data-toggle",e.toggle||!1),e.toggle&&rN.select(r).classed("active",!0);var o=e.icon;return typeof o=="function"?r.appendChild(o()):r.appendChild(this.createIcon(o||rce.question)),r.setAttribute("data-gravity",e.gravity||"n"),r};Tm.createIcon=function(e){var t=Sut(e.height)?Number(e.height):e.ascent-e.descent,r="http://www.w3.org/2000/svg",n;if(e.path){n=document.createElementNS(r,"svg"),n.setAttribute("viewBox",[0,0,e.width,t].join(" ")),n.setAttribute("class","icon");var i=document.createElementNS(r,"path");i.setAttribute("d",e.path),e.transform?i.setAttribute("transform",e.transform):e.ascent!==void 0&&i.setAttribute("transform","matrix(1 0 0 -1 0 "+e.ascent+")"),n.appendChild(i)}if(e.svg){var a=Eut.parseFromString(e.svg,"application/xml");n=a.childNodes[0]}return n.setAttribute("height","1em"),n.setAttribute("width","1em"),n};Tm.updateActiveButton=function(e){var t=this.graphInfo._fullLayout,r=e!==void 0?e.getAttribute("data-attr"):null;this.buttonElements.forEach(function(n){var i=n.getAttribute("data-val")||!0,a=n.getAttribute("data-attr"),o=n.getAttribute("data-toggle")==="true",s=rN.select(n),l=function(f,h){var d=t.modebar,v=f.querySelector(".icon path");v&&(h||f.matches(":hover")?v.style.fill=d.activecolor:v.style.fill=d.color)};if(o){if(a===r){var u=!s.classed("active");s.classed("active",u),l(n,u)}}else{var c=a===null?a:aP.nestedProperty(t,a).get();s.classed("active",c===i),l(n,c===i)}})};Tm.hasButtons=function(e){var t=this.buttons;if(!t||e.length!==t.length)return!1;for(var r=0;r{"use strict";var Lut=af(),oce=lu(),iN=ba(),Put=rp().isUnifiedHover,Iut=ace(),oP=QB(),Rut=eN().DRAW_MODES,Dut=Mr().extendDeep;sce.exports=function(t){var r=t._fullLayout,n=t._context,i=r._modeBar;if(!n.displayModeBar&&!n.watermark){i&&(i.destroy(),delete r._modeBar);return}if(!Array.isArray(n.modeBarButtonsToRemove))throw new Error(["*modeBarButtonsToRemove* configuration options","must be an array."].join(" "));if(!Array.isArray(n.modeBarButtonsToAdd))throw new Error(["*modeBarButtonsToAdd* configuration options","must be an array."].join(" "));var a=n.modeBarButtons,o;Array.isArray(a)&&a.length?o=Nut(a):!n.displayModeBar&&n.watermark?o=[]:o=zut(t),i?i.update(t,o):r._modeBar=Iut(t,o)};function zut(e){var t=e._fullLayout,r=e._fullData,n=e._context;function i(N,W){if(typeof W=="string"){if(W.toLowerCase()===N.toLowerCase())return!0}else{var re=W.name,ae=W._cat||W.name;if(re===N||ae===N.toLowerCase())return!0}return!1}var a=t.modebar.add;typeof a=="string"&&(a=[a]);var o=t.modebar.remove;typeof o=="string"&&(o=[o]);var s=n.modeBarButtonsToAdd.concat(a.filter(function(N){for(var W=0;W1?(P=["toggleHover"],T=["resetViews"]):f?(g=["zoomInGeo","zoomOutGeo"],P=["hoverClosestGeo"],T=["resetGeo"]):c?(P=["hoverClosest3d"],T=["resetCameraDefault3d","resetCameraLastSave3d"]):x?(g=["zoomInMapbox","zoomOutMapbox"],P=["toggleHover"],T=["resetViewMapbox"]):b?(g=["zoomInMap","zoomOutMap"],P=["toggleHover"],T=["resetViewMap"]):h?P=["hoverClosestPie"]:k?(P=["hoverClosestCartesian","hoverCompareCartesian"],T=["resetViewSankey"]):P=["toggleHover"],u&&P.push("toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"),(Out(r)||L)&&(P=[]),u&&!A&&(g=["zoomIn2d","zoomOut2d","autoScale2d"],T[0]!=="resetViews"&&(T=["resetScale2d"])),c?F=["zoom3d","pan3d","orbitRotation","tableRotation"]:u&&!A||v?F=["zoom2d","pan2d"]:x||b||f?F=["pan2d"]:p&&(F=["zoom2d"]),qut(r)&&F.push("select2d","lasso2d");var q=[],V=function(N){q.indexOf(N)===-1&&P.indexOf(N)!==-1&&q.push(N)};if(Array.isArray(s)){for(var H=[],X=0;X{"use strict";uce.exports={moduleType:"component",name:"modebar",layoutAttributes:tN(),supplyLayoutDefaults:tce(),manage:lce()}});var aN=ye((wir,cce)=>{"use strict";var Uut=Nh().FROM_BL;cce.exports=function(t,r,n){n===void 0&&(n=Uut[t.constraintoward||"center"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*n;t.range=t._input.range=[t.l2r(a+(i[0]-a)*r),t.l2r(a+(i[1]-a)*r)],t.setScale()}});var Bb=ye(dM=>{"use strict";var Ob=Mr(),oN=wg(),Mg=af().id2name,Vut=Cd(),fce=aN(),Hut=ym(),Gut=es().ALMOST_EQUAL,jut=Nh().FROM_BL;dM.handleDefaults=function(e,t,r){var n=r.axIds,i=r.axHasImage,a=t._axisConstraintGroups=[],o=t._axisMatchGroups=[],s,l,u,c,f,h,d,v;for(s=0;sa?r.substr(a):n.substr(i))+o}function Zut(e,t){for(var r=t._size,n=r.h/r.w,i={},a=Object.keys(e),o=0;oGut*v&&!E)){for(a=0;aF&&reP&&(P=re);var _e=(P-g)/(2*T);f/=_e,g=l.l2r(g),P=l.l2r(P),l.range=l._input.range=_{"use strict";var lP=xa(),Bv=ba(),Jp=Xu(),M0=Mr(),uN=Pl(),cN=lM(),vM=va(),X3=ao(),pce=Mb(),xce=nN(),pM=Qa(),ky=Nh(),bce=Bb(),Xut=bce.enforce,Yut=bce.clean,gce=wg().doAutoRange,wce="start",Kut="middle",Tce="end",Jut=ad().zindexSeparator;ld.layoutStyles=function(e){return M0.syncOrAsync([Jp.doAutoMargin,Qut],e)};function $ut(e,t,r){for(var n=0;n=e[1]||i[1]<=e[0])&&a[0]t[0])return!0}return!1}function Qut(e){var t=e._fullLayout,r=t._size,n=r.p,i=pM.list(e,"",!0),a,o,s,l,u,c;if(t._paperdiv.style({width:e._context.responsive&&t.autosize&&!e._context._hasZeroWidth&&!e.layout.width?"100%":t.width+"px",height:e._context.responsive&&t.autosize&&!e._context._hasZeroHeight&&!e.layout.height?"100%":t.height+"px"}).selectAll(".main-svg").call(X3.setSize,t.width,t.height),e._context.setBackground(e,t.paper_bgcolor),ld.drawMainTitle(e),xce.manage(e),!t._has("cartesian"))return Jp.previousPromises(e);function f(Ce,me,Re){var ce=Ce._lw/2;if(Ce._id.charAt(0)==="x"){if(me){if(Re==="top")return me._offset-n-ce}else return r.t+r.h*(1-(Ce.position||0))+ce%1;return me._offset+me._length+n+ce}if(me){if(Re==="right")return me._offset+me._length+n+ce}else return r.l+r.w*(Ce.position||0)+ce%1;return me._offset-n-ce}for(a=0;a0){ict(e,a,u,l),s.attr({x:o,y:a,"text-anchor":n,dy:_ce(t.yanchor)}).call(uN.positionText,o,a);var c=(t.text.match(uN.BR_TAG_ALL)||[]).length;if(c){var f=ky.LINE_SPACING*c+ky.MID_SHIFT;t.y===0&&(f=-f),s.selectAll(".line").each(function(){var b=+this.getAttribute("dy").slice(0,-2)-f+"em";this.setAttribute("dy",b)})}var h=lP.selectAll(".gtitle-subtitle");if(h.node()){var d=s.node().getBBox(),v=d.y+d.height,x=v+pce.SUBTITLE_PADDING_EM*t.subtitle.font.size;h.attr({x:o,y:x,"text-anchor":n,dy:_ce(t.yanchor)}).call(uN.positionText,o,x)}}}};function ect(e,t,r,n,i){var a=t.yref==="paper"?e._fullLayout._size.h:e._fullLayout.height,o=M0.isTopAnchor(t)?n:n-i,s=r==="b"?a-o:o;return M0.isTopAnchor(t)&&r==="t"||M0.isBottomAnchor(t)&&r==="b"?!1:s.5?"t":"b",o=e._fullLayout.margin[a],s=0;return t.yref==="paper"?s=r+t.pad.t+t.pad.b:t.yref==="container"&&(s=tct(a,n,i,e._fullLayout.height,r)+t.pad.t+t.pad.b),s>o?s:0}function ict(e,t,r,n){var i="title.automargin",a=e._fullLayout.title,o=a.y>.5?"t":"b",s={x:a.x,y:a.y,t:0,b:0},l={};a.yref==="paper"&&ect(e,a,o,t,n)?s[o]=r:a.yref==="container"&&(l[o]=r,e._fullLayout._reservedMargin[i]=l),Jp.allowAutoMargin(e,i),Jp.autoMargin(e,i,s)}function nct(e,t){var r=e.title,n=e._size,i=0;switch(t===wce?i=r.pad.l:t===Tce&&(i=-r.pad.r),r.xref){case"paper":return n.l+n.w*r.x+i;case"container":default:return e.width*r.x+i}}function act(e,t){var r=e.title,n=e._size,i=0;if(t==="0em"||!t?i=-r.pad.b:t===ky.CAP_SHIFT+"em"&&(i=r.pad.t),r.y==="auto")return n.t/2;switch(r.yref){case"paper":return n.t+n.h-n.h*r.y+i;case"container":default:return e.height-e.height*r.y+i}}function _ce(e){return e==="top"?ky.CAP_SHIFT+.3+"em":e==="bottom"?"-0.3em":ky.MID_SHIFT+"em"}function oct(e){var t=e.title,r=Kut;return M0.isRightAnchor(t)?r=Tce:M0.isLeftAnchor(t)&&(r=wce),r}function sct(e){var t=e.title,r="0em";return M0.isTopAnchor(t)?r=ky.CAP_SHIFT+"em":M0.isMiddleAnchor(t)&&(r=ky.MID_SHIFT+"em"),r}ld.doTraceStyle=function(e){var t=e.calcdata,r=[],n;for(n=0;n{"use strict";var lct=c_().readPaths,uct=$L(),Ace=e_().clearOutlineControllers,fN=va(),Sce=ao(),cct=Vs().arrayEditor,Mce=h_(),fct=Mce.getPathString;kce.exports={draw:uP,drawOne:Ece,activateLastSelection:vct};function uP(e){var t=e._fullLayout;Ace(e),t._selectionLayer.selectAll("path").remove();for(var r in t._plots){var n=t._plots[r].selectionLayer;n&&n.selectAll("path").remove()}for(var i=0;i=0;b--){var p=o.append("path").attr(l).style("opacity",b?.1:u).call(fN.stroke,f).call(fN.fill,c).call(Sce.dashLine,b?"solid":d,b?4+h:h);if(hct(p,e,n),v){var E=cct(e.layout,"selections",n);p.style({cursor:"move"});var k={element:p.node(),plotinfo:i,gd:e,editHelpers:E,isActiveSelection:!0},A=lct(s,e);uct(A,p,k)}else p.style("pointer-events",b?"all":"none");x[b]=p}var L=x[0],_=x[1];_.node().addEventListener("click",function(){return dct(e,L)})}}function hct(e,t,r){var n=r.xref+r.yref;Sce.setClipUrl(e,"clip"+t._fullLayout._uid+n,t)}function dct(e,t){if(cP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeSelectionIndex){hN(e);return}e._fullLayout._activeSelectionIndex=n,e._fullLayout._deactivateSelection=hN,uP(e)}}}function vct(e){if(cP(e)){var t=e._fullLayout.selections.length-1;e._fullLayout._activeSelectionIndex=t,e._fullLayout._deactivateSelection=hN,uP(e)}}function hN(e){if(cP(e)){var t=e._fullLayout._activeSelectionIndex;t>=0&&(Ace(e),delete e._fullLayout._activeSelectionIndex,uP(e))}}});var Lce=ye((Mir,Cce)=>{function pct(){var e,t=0,r=!1;function n(i,a){return e.list.push({type:i,data:a?JSON.parse(JSON.stringify(a)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(i,a){return n("check",{seg1:i,seg2:a})},segmentChop:function(i,a){return n("div_seg",{seg:i,pt:a}),n("chop",{seg:i,pt:a})},statusRemove:function(i){return n("pop_seg",{seg:i})},segmentUpdate:function(i){return n("seg_update",{seg:i})},segmentNew:function(i,a){return n("new_seg",{seg:i,primary:a})},segmentRemove:function(i){return n("rem_seg",{seg:i})},tempStatus:function(i,a,o){return n("temp_status",{seg:i,above:a,below:o})},rewind:function(i){return n("rewind",{seg:i})},status:function(i,a,o){return n("status",{seg:i,above:a,below:o})},vert:function(i){return i===r?e:(r=i,n("vert",{x:i}))},log:function(i){return typeof i!="string"&&(i=JSON.stringify(i,!1," ")),n("log",{txt:i})},reset:function(){return n("reset")},selected:function(i){return n("selected",{segs:i})},chainStart:function(i){return n("chain_start",{seg:i})},chainRemoveHead:function(i,a){return n("chain_rem_head",{index:i,pt:a})},chainRemoveTail:function(i,a){return n("chain_rem_tail",{index:i,pt:a})},chainNew:function(i,a){return n("chain_new",{pt1:i,pt2:a})},chainMatch:function(i){return n("chain_match",{index:i})},chainClose:function(i){return n("chain_close",{index:i})},chainAddHead:function(i,a){return n("chain_add_head",{index:i,pt:a})},chainAddTail:function(i,a){return n("chain_add_tail",{index:i,pt:a})},chainConnect:function(i,a){return n("chain_con",{index1:i,index2:a})},chainReverse:function(i){return n("chain_rev",{index:i})},chainJoin:function(i,a){return n("chain_join",{index1:i,index2:a})},done:function(){return n("done")}},e}Cce.exports=pct});var Ice=ye((Eir,Pce)=>{function gct(e){typeof e!="number"&&(e=1e-10);var t={epsilon:function(r){return typeof r=="number"&&(e=r),e},pointAboveOrOnLine:function(r,n,i){var a=n[0],o=n[1],s=i[0],l=i[1],u=r[0],c=r[1];return(s-a)*(c-o)-(l-o)*(u-a)>=-e},pointBetween:function(r,n,i){var a=r[1]-n[1],o=i[0]-n[0],s=r[0]-n[0],l=i[1]-n[1],u=s*o+a*l;if(u-e)},pointsSameX:function(r,n){return Math.abs(r[0]-n[0])e!=s-a>e&&(o-c)*(a-f)/(s-f)+c-i>e&&(l=!l),o=c,s=f}return l}};return t}Pce.exports=gct});var Dce=ye((kir,Rce)=>{var mct={create:function(){var e={root:{root:!0,next:null},exists:function(t){return!(t===null||t===e.root)},isEmpty:function(){return e.root.next===null},getHead:function(){return e.root.next},insertBefore:function(t,r){for(var n=e.root,i=e.root.next;i!==null;){if(r(i)){t.prev=i.prev,t.next=i,i.prev.next=t,i.prev=t;return}n=i,i=i.next}n.next=t,t.prev=n,t.next=null},findTransition:function(t){for(var r=e.root,n=e.root.next;n!==null&&!t(n);)r=n,n=n.next;return{before:r===e.root?null:r,after:n,insert:function(i){return i.prev=r,i.next=n,r.next=i,n!==null&&(n.prev=i),i}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}};Rce.exports=mct});var Fce=ye((Cir,zce)=>{var mM=Dce();function yct(e,t,r){function n(v,x){return{id:r?r.segmentId():-1,start:v,end:x,myFill:{above:null,below:null},otherFill:null}}function i(v,x,b){return{id:r?r.segmentId():-1,start:v,end:x,myFill:{above:b.myFill.above,below:b.myFill.below},otherFill:null}}var a=mM.create();function o(v,x,b,p,E,k){var A=t.pointsCompare(x,E);return A!==0?A:t.pointsSame(b,k)?0:v!==p?v?1:-1:t.pointAboveOrOnLine(b,p?E:k,p?k:E)?1:-1}function s(v,x){a.insertBefore(v,function(b){var p=o(v.isStart,v.pt,x,b.isStart,b.pt,b.other.pt);return p<0})}function l(v,x){var b=mM.node({isStart:!0,pt:v.start,seg:v,primary:x,other:null,status:null});return s(b,v.end),b}function u(v,x,b){var p=mM.node({isStart:!1,pt:x.end,seg:x,primary:b,other:v,status:null});v.other=p,s(p,v.pt)}function c(v,x){var b=l(v,x);return u(b,v,x),b}function f(v,x){r&&r.segmentChop(v.seg,x),v.other.remove(),v.seg.end=x,v.other.pt=x,s(v.other,v.pt)}function h(v,x){var b=i(x,v.seg.end,v.seg);return f(v,x),c(b,v.primary)}function d(v,x){var b=mM.create();function p(H,X){var G=H.seg.start,N=H.seg.end,W=X.seg.start,re=X.seg.end;return t.pointsCollinear(G,W,re)?t.pointsCollinear(N,W,re)||t.pointAboveOrOnLine(N,W,re)?1:-1:t.pointAboveOrOnLine(G,W,re)?1:-1}function E(H){return b.findTransition(function(X){var G=p(H,X.ev);return G>0})}function k(H,X){var G=H.seg,N=X.seg,W=G.start,re=G.end,ae=N.start,_e=N.end;r&&r.checkIntersection(G,N);var Me=t.linesIntersect(W,re,ae,_e);if(Me===!1){if(!t.pointsCollinear(W,re,ae)||t.pointsSame(W,_e)||t.pointsSame(re,ae))return!1;var ke=t.pointsSame(W,ae),ge=t.pointsSame(re,_e);if(ke&&ge)return X;var ie=!ke&&t.pointBetween(W,ae,_e),Te=!ge&&t.pointBetween(re,ae,_e);if(ke)return Te?h(X,re):h(H,_e),X;ie&&(ge||(Te?h(X,re):h(H,_e)),h(X,W))}else Me.alongA===0&&(Me.alongB===-1?h(H,ae):Me.alongB===0?h(H,Me.pt):Me.alongB===1&&h(H,_e)),Me.alongB===0&&(Me.alongA===-1?h(X,W):Me.alongA===0?h(X,Me.pt):Me.alongA===1&&h(X,re));return!1}for(var A=[];!a.isEmpty();){var L=a.getHead();if(r&&r.vert(L.pt[0]),L.isStart){let H=function(){if(C){var X=k(L,C);if(X)return X}return M?k(L,M):!1};var V=H;r&&r.segmentNew(L.seg,L.primary);var _=E(L),C=_.before?_.before.ev:null,M=_.after?_.after.ev:null;r&&r.tempStatus(L.seg,C?C.seg:!1,M?M.seg:!1);var g=H();if(g){if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,P&&(g.seg.myFill.above=!g.seg.myFill.above)}else g.seg.otherFill=L.seg.myFill;r&&r.segmentUpdate(g.seg),L.other.remove(),L.remove()}if(a.getHead()!==L){r&&r.rewind(L.seg);continue}if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,M?L.seg.myFill.below=M.seg.myFill.above:L.seg.myFill.below=v,P?L.seg.myFill.above=!L.seg.myFill.below:L.seg.myFill.above=L.seg.myFill.below}else if(L.seg.otherFill===null){var T;M?L.primary===M.primary?T=M.seg.otherFill.above:T=M.seg.myFill.above:T=L.primary?x:v,L.seg.otherFill={above:T,below:T}}r&&r.status(L.seg,C?C.seg:!1,M?M.seg:!1),L.other.status=_.insert(mM.node({ev:L}))}else{var F=L.status;if(F===null)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(b.exists(F.prev)&&b.exists(F.next)&&k(F.prev.ev,F.next.ev),r&&r.statusRemove(F.ev.seg),F.remove(),!L.primary){var q=L.seg.myFill;L.seg.myFill=L.seg.otherFill,L.seg.otherFill=q}A.push(L.seg)}a.getHead().remove()}return r&&r.done(),A}return e?{addRegion:function(v){for(var x,b=v[v.length-1],p=0;p{function _ct(e,t,r){var n=[],i=[];return e.forEach(function(a){var o=a.start,s=a.end;if(t.pointsSame(o,s)){console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");return}r&&r.chainStart(a);var l={index:0,matches_head:!1,matches_pt1:!1},u={index:0,matches_head:!1,matches_pt1:!1},c=l;function f(V,H,X){return c.index=V,c.matches_head=H,c.matches_pt1=X,c===l?(c=u,!1):(c=null,!0)}for(var h=0;h{function yM(e,t,r){var n=[];return e.forEach(function(i){var a=(i.myFill.above?8:0)+(i.myFill.below?4:0)+(i.otherFill&&i.otherFill.above?2:0)+(i.otherFill&&i.otherFill.below?1:0);t[a]!==0&&n.push({id:r?r.segmentId():-1,start:i.start,end:i.end,myFill:{above:t[a]===1,below:t[a]===2},otherFill:null})}),r&&r.selected(n),n}var xct={union:function(e,t){return yM(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],t)},intersect:function(e,t){return yM(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],t)},difference:function(e,t){return yM(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],t)},differenceRev:function(e,t){return yM(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],t)},xor:function(e,t){return yM(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],t)}};Bce.exports=xct});var Vce=ye((Iir,Uce)=>{var bct={toPolygon:function(e,t){function r(a){if(a.length<=0)return e.segments({inverted:!1,regions:[]});function o(u){var c=u.slice(0,u.length-1);return e.segments({inverted:!1,regions:[c]})}for(var s=o(a[0]),l=1;l{var wct=Lce(),Tct=Ice(),Hce=Fce(),Act=Oce(),_M=Nce(),Gce=Vce(),E0=!1,xM=Tct(),Ep;Ep={buildLog:function(e){return e===!0?E0=wct():e===!1&&(E0=!1),E0===!1?!1:E0.list},epsilon:function(e){return xM.epsilon(e)},segments:function(e){var t=Hce(!0,xM,E0);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){var r=Hce(!1,xM,E0);return{combined:r.calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:_M.union(e.combined,E0),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:_M.intersect(e.combined,E0),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:_M.difference(e.combined,E0),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:_M.differenceRev(e.combined,E0),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:_M.xor(e.combined,E0),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:Act(e.segments,xM,E0),inverted:e.inverted}},polygonFromGeoJSON:function(e){return Gce.toPolygon(Ep,e)},polygonToGeoJSON:function(e){return Gce.fromPolygon(Ep,xM,e)},union:function(e,t){return bM(e,t,Ep.selectUnion)},intersect:function(e,t){return bM(e,t,Ep.selectIntersect)},difference:function(e,t){return bM(e,t,Ep.selectDifference)},differenceRev:function(e,t){return bM(e,t,Ep.selectDifferenceRev)},xor:function(e,t){return bM(e,t,Ep.selectXor)}};function bM(e,t,r){var n=Ep.segments(e),i=Ep.segments(t),a=Ep.combine(n,i),o=r(a);return Ep.polygon(o)}typeof window=="object"&&(window.PolyBool=Ep);jce.exports=Ep});var Xce=ye((Dir,Zce)=>{Zce.exports=function(t,r,n,i){var a=t[0],o=t[1],s=!1;n===void 0&&(n=0),i===void 0&&(i=r.length);for(var l=i-n,u=0,c=l-1;uo!=v>o&&a<(d-f)*(o-h)/(v-h)+f;x&&(s=!s)}return s}});var wM=ye((zir,Yce)=>{"use strict";var vN=m6().dot,fP=es().BADNUM,hP=Yce.exports={};hP.tester=function(t){var r=t.slice(),n=r[0][0],i=n,a=r[0][1],o=a,s;for((r[r.length-1][0]!==r[0][0]||r[r.length-1][1]!==r[0][1])&&r.push(r[0]),s=1;si||p===fP||po||x&&u(v))}function f(v,x){var b=v[0],p=v[1];if(b===fP||bi||p===fP||po)return!1;var E=r.length,k=r[0][0],A=r[0][1],L=0,_,C,M,g,P;for(_=1;_Math.max(C,k)||p>Math.max(M,A)))if(ps||Math.abs(vN(f,u))>i)return!0;return!1};hP.filter=function(t,r){var n=[t[0]],i=0,a=0;function o(l){t.push(l);var u=n.length,c=i;n.splice(a+1);for(var f=c+1;f1){var s=t.pop();o(s)}return{addPt:o,raw:t,filtered:n}}});var Jce=ye((Fir,Kce)=>{"use strict";Kce.exports={BENDPX:1.5,MINSELECT:12,SELECTDELAY:100,SELECTID:"-select"}});var _fe=ye((qir,yfe)=>{"use strict";var $ce=Wce(),Sct=Xce(),SM=ba(),Mct=ao().dashStyle,TM=va(),Ect=Nc(),kct=rp().makeEventData,LM=Sg(),Cct=LM.freeMode,Lct=LM.rectMode,MM=LM.drawMode,yN=LM.openMode,_N=LM.selectMode,Qce=h_(),efe=cM(),afe=$L(),ofe=e_().clearOutline,sfe=c_(),pN=sfe.handleEllipse,Pct=sfe.readPaths,Ict=XL().newShapes,Rct=VB(),Dct=dN().activateLastSelection,vP=Mr(),zct=vP.sorterAsc,lfe=wM(),AM=P6(),k0=af().getFromId,Fct=lM(),qct=gM().redrawReglTraces,pP=Jce(),Am=pP.MINSELECT,Oct=lfe.filter,xN=lfe.tester,bN=GL(),tfe=bN.p2r,Bct=bN.axValue,Nct=bN.getTransform;function wN(e){return e.subplot!==void 0}function Uct(e,t,r,n,i){var a=!wN(n),o=Cct(i),s=Lct(i),l=yN(i),u=MM(i),c=_N(i),f=i==="drawline",h=i==="drawcircle",d=f||h,v=n.gd,x=v._fullLayout,b=c&&x.newselection.mode==="immediate"&&a,p=x._zoomlayer,E=n.element.getBoundingClientRect(),k=n.plotinfo,A=Nct(k),L=t-E.left,_=r-E.top;x._calcInverseTransform(v);var C=vP.apply3DTransform(x._invTransform)(L,_);L=C[0],_=C[1];var M=x._invScaleX,g=x._invScaleY,P=L,T=_,F="M"+L+","+_,q=n.xaxes[0],V=n.yaxes[0],H=q._length,X=V._length,G=e.altKey&&!(MM(i)&&l),N,W,re,ae,_e,Me,ke;cfe(e,v,n),o&&(N=Oct([[L,_]],pP.BENDPX));var ge=p.selectAll("path.select-outline-"+k.id).data([1]),ie=u?x.newshape:x.newselection;u&&(n.hasText=ie.label.text||ie.label.texttemplate);var Te=u&&!l?ie.fillcolor:"rgba(0,0,0,0)",Ee=ie.line.color||(a?TM.contrast(v._fullLayout.plot_bgcolor):"#7f7f7f");ge.enter().append("path").attr("class","select-outline select-outline-"+k.id).style({opacity:u?ie.opacity/2:1,"stroke-dasharray":Mct(ie.line.dash,ie.line.width),"stroke-width":ie.line.width+"px","shape-rendering":"crispEdges"}).call(TM.stroke,Ee).call(TM.fill,Te).attr("fill-rule","evenodd").classed("cursor-move",!!u).attr("transform",A).attr("d",F+"Z");var Ae=p.append("path").attr("class","zoombox-corners").style({fill:TM.background,stroke:TM.defaultLine,"stroke-width":1}).attr("transform",A).attr("d","M0,0Z");if(u&&n.hasText){var ze=p.select(".label-temp");ze.empty()&&(ze=p.append("g").classed("label-temp",!0).classed("select-outline",!0).style({opacity:.8}))}var Ce=x._uid+pP.SELECTID,me=[],Re=gP(v,n.xaxes,n.yaxes,n.subplot);b&&!e.shiftKey&&(n._clearSubplotSelections=function(){if(a){var Ge=q._id,nt=V._id;pfe(v,Ge,nt,Re);for(var ct=(v.layout||{}).selections||[],qt=[],rt=!1,ot=0;ot=0){v._fullLayout._deactivateShape(v);return}if(!u){var ct=x.clickmode;AM.done(Ce).then(function(){if(AM.clear(Ce),Ge===2){for(ge.remove(),_e=0;_e-1&&ufe(nt,v,n.xaxes,n.yaxes,n.subplot,n,ge),ct==="event"&&CM(v,void 0);Ect.click(v,nt,k.id)}).catch(vP.error)}},n.doneFn=function(){Ae.remove(),AM.done(Ce).then(function(){AM.clear(Ce),!b&&ae&&n.selectionDefs&&(ae.subtract=G,n.selectionDefs.push(ae),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,re)),(b||u)&&EM(n,b),n.doneFnCompleted&&n.doneFnCompleted(me),c&&CM(v,ke)}).catch(vP.error)}}function ufe(e,t,r,n,i,a,o){var s=t._hoverdata,l=t._fullLayout,u=l.clickmode,c=u.indexOf("event")>-1,f=[],h,d,v,x,b,p,E,k,A,L;if(Wct(s)){cfe(e,t,a),h=gP(t,r,n,i);var _=Zct(s,h),C=_.pointNumbers.length>0;if(C?Xct(h,_):Yct(h)&&(E=ife(_))){for(o&&o.remove(),L=0;L=0}function jct(e){return e._fullLayout._activeSelectionIndex>=0}function EM(e,t){var r=e.dragmode,n=e.plotinfo,i=e.gd;Gct(i)&&i._fullLayout._deactivateShape(i),jct(i)&&i._fullLayout._deactivateSelection(i);var a=i._fullLayout,o=a._zoomlayer,s=MM(r),l=_N(r);if(s||l){var u=o.selectAll(".select-outline-"+n.id);if(u&&i._fullLayout._outlining){var c;s&&(c=Ict(u,e)),c&&SM.call("_guiRelayout",i,{shapes:c});var f;l&&!wN(e)&&(f=Rct(u,e)),f&&(i._fullLayout._noEmitSelectedAtStart=!0,SM.call("_guiRelayout",i,{selections:f}).then(function(){t&&Dct(i)})),i._fullLayout._outlining=!1}}n.selection={},n.selection.selectionDefs=e.selectionDefs=[],n.selection.mergedPolygons=e.mergedPolygons=[]}function rfe(e){return e._id}function gP(e,t,r,n){if(!e.calcdata)return[];var i=[],a=t.map(rfe),o=r.map(rfe),s,l,u;for(u=0;u0,a=i?n[0]:r;return t.selectedpoints?t.selectedpoints.indexOf(a)>-1:!1}function Xct(e,t){var r=[],n,i,a,o;for(o=0;o0&&r.push(n);if(r.length===1&&(a=r[0]===t.searchInfo,a&&(i=t.searchInfo.cd[0].trace,i.selectedpoints.length===t.pointNumbers.length))){for(o=0;o1||(t+=n.selectedpoints.length,t>1)))return!1;return t===1}function kM(e,t,r){var n;for(n=0;n-1&&t;if(!o&&t){var Ge=nfe(e,!0);if(Ge.length){var nt=Ge[0].xref,ct=Ge[0].yref;if(nt&&ct){var qt=gfe(Ge),rt=mfe([k0(e,nt,"x"),k0(e,ct,"y")]);rt(me,qt)}}e._fullLayout._noEmitSelectedAtStart?e._fullLayout._noEmitSelectedAtStart=!1:ce&&CM(e,me),h._reselect=!1}if(!o&&h._deselect){var ot=h._deselect;s=ot.xref,l=ot.yref,$ct(s,l,c)||pfe(e,s,l,n),ce&&(me.points.length?CM(e,me):SN(e)),h._deselect=!1}return{eventData:me,selectionTesters:r}}function Jct(e){var t=e.calcdata;if(t)for(var r=0;r{"use strict";xfe.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]});var PM=ye((Bir,bfe)=>{"use strict";bfe.exports={axisRefDescription:function(e,t,r){return["If set to a",e,"axis id (e.g. *"+e+"* or","*"+e+"2*), the `"+e+"` position refers to a",e,"coordinate. If set to *paper*, the `"+e+"`","position refers to the distance from the",t,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",t,"("+r+"). If set to a",e,"axis ID followed by","*domain* (separated by a space), the position behaves like for","*paper*, but refers to the distance in fractions of the domain","length from the",t,"of the domain of that axis: e.g.,","*"+e+"2 domain* refers to the domain of the second",e," axis and a",e,"position of 0.5 refers to the","point between the",t,"and the",r,"of the domain of the","second",e,"axis."].join(" ")}}});var Nb=ye((Uir,Afe)=>{"use strict";var wfe=MN(),Tfe=Su(),mP=ad(),ift=Vs().templatedArray,Nir=PM();Afe.exports=ift("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:Tfe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:wfe.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:wfe.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",mP.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",mP.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",mP.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",mP.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:Tfe({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc"})});var Sm=ye((Vir,Sfe)=>{"use strict";Sfe.exports={PTS_LINESONLY:20,minTolerance:.2,toleranceGrowth:10,maxScreensAway:20,eventDataKeys:[]}});var Eg=ye((Hir,Mfe)=>{"use strict";Mfe.exports=function(t){return{valType:"color",editType:"style",anim:!0}}});var Uc=ye((Gir,Ife)=>{"use strict";var Efe=Oc().axisHoverFormat,nft=Wo().texttemplateAttrs,aft=Wo().hovertemplateAttrs,kfe=Jl(),oft=Su(),sft=Ed().dash,lft=Ed().pattern,uft=ao(),cft=Sm(),yP=no().extendFlat,fft=Eg();function Cfe(e){return{valType:"any",dflt:0,editType:"calc"}}function Lfe(e){return{valType:"any",editType:"calc"}}function Pfe(e){return{valType:"enumerated",values:["start","middle","end"],dflt:"middle",editType:"calc"}}Ife.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},x0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dx:{valType:"number",dflt:1,editType:"calc",anim:!0},y:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},y0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dy:{valType:"number",dflt:1,editType:"calc",anim:!0},xperiod:Cfe("x"),yperiod:Cfe("y"),xperiod0:Lfe("x0"),yperiod0:Lfe("y0"),xperiodalignment:Pfe("x"),yperiodalignment:Pfe("y"),xhoverformat:Efe("x"),yhoverformat:Efe("y"),offsetgroup:{valType:"string",dflt:"",editType:"calc"},alignmentgroup:{valType:"string",dflt:"",editType:"calc"},stackgroup:{valType:"string",dflt:"",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc"},groupnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},stackgaps:{valType:"enumerated",values:["infer zero","interpolate"],dflt:"infer zero",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},texttemplate:nft({},{}),hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"],editType:"calc"},hoveron:{valType:"flaglist",flags:["points","fills"],editType:"style"},hovertemplate:aft({},{keys:cft.eventDataKeys}),line:{color:{valType:"color",editType:"style",anim:!0},width:{valType:"number",min:0,dflt:2,editType:"style",anim:!0},shape:{valType:"enumerated",values:["linear","spline","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},smoothing:{valType:"number",min:0,max:1.3,dflt:1,editType:"plot"},dash:yP({},sft,{editType:"style"}),backoff:{valType:"number",min:0,dflt:"auto",arrayOk:!0,editType:"plot"},simplify:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},cliponaxis:{valType:"boolean",dflt:!0,editType:"plot"},fill:{valType:"enumerated",values:["none","tozeroy","tozerox","tonexty","tonextx","toself","tonext"],editType:"calc"},fillcolor:fft(!0),fillgradient:yP({type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],dflt:"none",editType:"calc"},start:{valType:"number",editType:"calc"},stop:{valType:"number",editType:"calc"},colorscale:{valType:"colorscale",editType:"style"},editType:"calc"}),fillpattern:lft,marker:yP({symbol:{valType:"enumerated",values:uft.symbolList,dflt:"circle",arrayOk:!0,editType:"style"},opacity:{valType:"number",min:0,max:1,arrayOk:!0,editType:"style",anim:!0},angle:{valType:"angle",dflt:0,arrayOk:!0,editType:"plot",anim:!1},angleref:{valType:"enumerated",values:["previous","up"],dflt:"up",editType:"plot",anim:!1},standoff:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"plot",anim:!0},size:{valType:"number",min:0,dflt:6,arrayOk:!0,editType:"calc",anim:!0},maxdisplayed:{valType:"number",min:0,dflt:0,editType:"plot"},sizeref:{valType:"number",dflt:1,editType:"calc"},sizemin:{valType:"number",min:0,dflt:0,editType:"calc"},sizemode:{valType:"enumerated",values:["diameter","area"],dflt:"diameter",editType:"calc"},line:yP({width:{valType:"number",min:0,arrayOk:!0,editType:"style",anim:!0},editType:"calc"},kfe("marker.line",{anim:!0})),gradient:{type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],arrayOk:!0,dflt:"none",editType:"calc"},color:{valType:"color",arrayOk:!0,editType:"calc"},editType:"calc"},editType:"calc"},kfe("marker",{anim:!0})),selected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},unselected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"middle center",arrayOk:!0,editType:"calc"},textfont:oft({editType:"calc",colorEditType:"style",arrayOk:!0}),zorder:{valType:"integer",dflt:0,editType:"plot"}}});var EN=ye((Wir,zfe)=>{"use strict";var Rfe=Nb(),Dfe=Uc().line,hft=Ed().dash,_P=no().extendFlat,dft=Bu().overrideAll,vft=Vs().templatedArray,jir=PM();zfe.exports=dft(vft("selection",{type:{valType:"enumerated",values:["rect","path"]},xref:_P({},Rfe.xref,{}),yref:_P({},Rfe.yref,{}),x0:{valType:"any"},x1:{valType:"any"},y0:{valType:"any"},y1:{valType:"any"},path:{valType:"string",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:.7,editType:"arraydraw"},line:{color:Dfe.color,width:_P({},Dfe.width,{min:1,dflt:1}),dash:_P({},hft,{dflt:"dot"})}}),"arraydraw","from-root")});var Bfe=ye((Zir,Ofe)=>{"use strict";var Ffe=Mr(),xP=Qa(),pft=Zd(),gft=EN(),qfe=h_();Ofe.exports=function(t,r){pft(t,r,{name:"selections",handleItemDefaults:mft});for(var n=r.selections,i=0;i{"use strict";Nfe.exports=function(t,r,n){n("newselection.mode");var i=n("newselection.line.width");i&&(n("newselection.line.color"),n("newselection.line.dash")),n("activeselection.fillcolor"),n("activeselection.opacity")}});var IM=ye((Yir,Gfe)=>{"use strict";var yft=ba(),Vfe=Mr(),Hfe=af();Gfe.exports=function(t){return function(n,i){var a=n[t];if(Array.isArray(a))for(var o=yft.subplotsRegistry.cartesian,s=o.idRegex,l=i._subplots,u=l.xaxis,c=l.yaxis,f=l.cartesian,h=i._has("cartesian"),d=0;d{"use strict";var jfe=dN(),RM=_fe();Wfe.exports={moduleType:"component",name:"selections",layoutAttributes:EN(),supplyLayoutDefaults:Bfe(),supplyDrawNewSelectionDefaults:Ufe(),includeBasePlot:IM()("selections"),draw:jfe.draw,drawOne:jfe.drawOne,reselect:RM.reselect,prepSelect:RM.prepSelect,clearOutline:RM.clearOutline,clearSelectionsCache:RM.clearSelectionsCache,selectOnClick:RM.selectOnClick}});var DN=ye((Jir,hhe)=>{"use strict";var IN=xa(),C0=Mr(),Zfe=C0.numberFormat,_ft=id(),xft=kL(),bP=ba(),rhe=C0.strTranslate,bft=Pl(),Xfe=va(),v_=ao(),wft=Nc(),Yfe=Qa(),Tft=Tg(),Aft=gv(),ihe=Sg(),wP=ihe.selectingOrDrawing,Sft=ihe.freeMode,Mft=Nh().FROM_TL,Eft=lM(),kft=gM().redrawReglTraces,Cft=Xu(),CN=af().getFromId,Lft=wf().prepSelect,Pft=wf().clearOutline,Ift=wf().selectOnClick,kN=aN(),RN=ad(),Kfe=RN.MINDRAG,np=RN.MINZOOM,Jfe=!0;function Rft(e,t,r,n,i,a,o,s){var l=e._fullLayout._zoomlayer,u=o+s==="nsew",c=(o+s).length===1,f,h,d,v,x,b,p,E,k,A,L,_,C,M,g,P,T,F,q,V,H,X,G;r+=t.yaxis._shift;function N(){if(f=t.xaxis,h=t.yaxis,k=f._length,A=h._length,p=f._offset,E=h._offset,d={},d[f._id]=f,v={},v[h._id]=h,o&&s)for(var Et=t.overlays,dt=0;dt=0){Ht._fullLayout._deactivateShape(Ht);return}var $t=Ht._fullLayout.clickmode;if(PN(Ht),Et===2&&!c&&er(),u)$t.indexOf("select")>-1&&Ift(dt,Ht,x,b,t.id,ae),$t.indexOf("event")>-1&&wft.click(Ht,dt,t.id);else if(Et===1&&c){var fr=o?h:f,_r=o==="s"||s==="w"?0:1,Br=fr._name+".range["+_r+"]",Or=Dft(fr,_r),Nr="left",ut="middle";if(fr.fixedrange)return;o?(ut=o==="n"?"top":"bottom",fr.side==="right"&&(Nr="right")):s==="e"&&(Nr="right"),Ht._context.showAxisRangeEntryBoxes&&IN.select(re).call(bft.makeEditable,{gd:Ht,immediate:!0,background:Ht._fullLayout.paper_bgcolor,text:String(Or),fill:fr.tickfont?fr.tickfont.color:"#444",horizontalAlign:Nr,verticalAlign:ut}).on("edit",function(Ne){var Ye=fr.d2r(Ne);Ye!==void 0&&bP.call("_guiRelayout",Ht,Br,Ye)})}}Aft.init(ae);var ke,ge,ie,Te,Ee,Ae,ze,Ce,me,Re;function ce(Et,dt,Ht){var $t=re.getBoundingClientRect();ke=dt-$t.left,ge=Ht-$t.top,e._fullLayout._calcInverseTransform(e);var fr=C0.apply3DTransform(e._fullLayout._invTransform)(ke,ge);ke=fr[0],ge=fr[1],ie={l:ke,r:ke,w:0,t:ge,b:ge,h:0},Te=e._hmpixcount?e._hmlumcount/e._hmpixcount:_ft(e._fullLayout.plot_bgcolor).getLuminance(),Ee="M0,0H"+k+"V"+A+"H0V0",Ae=!1,ze="xy",Re=!1,Ce=ohe(l,Te,p,E,Ee),me=she(l,p,E)}function Ge(Et,dt){if(e._transitioningWithDuration)return!1;var Ht=Math.max(0,Math.min(k,X*Et+ke)),$t=Math.max(0,Math.min(A,G*dt+ge)),fr=Math.abs(Ht-ke),_r=Math.abs($t-ge);ie.l=Math.min(ke,Ht),ie.r=Math.max(ke,Ht),ie.t=Math.min(ge,$t),ie.b=Math.max(ge,$t);function Br(){ze="",ie.r=ie.l,ie.t=ie.b,me.attr("d","M0,0Z")}if(L.isSubplotConstrained)fr>np||_r>np?(ze="xy",fr/k>_r/A?(_r=fr*A/k,ge>$t?ie.t=ge-_r:ie.b=ge+_r):(fr=_r*k/A,ke>Ht?ie.l=ke-fr:ie.r=ke+fr),me.attr("d",TP(ie))):Br();else if(_.isSubplotConstrained)if(fr>np||_r>np){ze="xy";var Or=Math.min(ie.l/k,(A-ie.b)/A),Nr=Math.max(ie.r/k,(A-ie.t)/A);ie.l=Or*k,ie.r=Nr*k,ie.b=(1-Or)*A,ie.t=(1-Nr)*A,me.attr("d",TP(ie))}else Br();else!M||_r0){var Ne;if(_.isSubplotConstrained||!C&&M.length===1){for(Ne=0;Ne1&&(Br.maxallowed!==void 0&&P===(Br.range[0]1&&(Or.maxallowed!==void 0&&T===(Or.range[0]=0?Math.min(e,.9):1/(1/Math.max(e,-.3)+3.222))}function Fft(e,t,r){return e?e==="nsew"?r?"":t==="pan"?"move":"crosshair":e.toLowerCase()+"-resize":"pointer"}function ohe(e,t,r,n,i){return e.append("path").attr("class","zoombox").style({fill:t>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",rhe(r,n)).attr("d",i+"Z")}function she(e,t,r){return e.append("path").attr("class","zoombox-corners").style({fill:Xfe.background,stroke:Xfe.defaultLine,"stroke-width":1,opacity:0}).attr("transform",rhe(t,r)).attr("d","M0,0Z")}function lhe(e,t,r,n,i,a){e.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),uhe(e,t,i,a)}function uhe(e,t,r,n){r||(e.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),t.transition().style("opacity",1).duration(200))}function PN(e){IN.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function che(e){Jfe&&e.data&&e._context.showTips&&(C0.notifier(C0._(e,"Double-click to zoom back out"),"long"),Jfe=!1)}function qft(e,t){return"M"+(e.l-.5)+","+(t-np-.5)+"h-3v"+(2*np+1)+"h3ZM"+(e.r+.5)+","+(t-np-.5)+"h3v"+(2*np+1)+"h-3Z"}function Oft(e,t){return"M"+(t-np-.5)+","+(e.t-.5)+"v-3h"+(2*np+1)+"v3ZM"+(t-np-.5)+","+(e.b+.5)+"v3h"+(2*np+1)+"v-3Z"}function TP(e){var t=Math.floor(Math.min(e.b-e.t,e.r-e.l,np)/2);return"M"+(e.l-3.5)+","+(e.t-.5+t)+"h3v"+-t+"h"+t+"v-3h-"+(t+3)+"ZM"+(e.r+3.5)+","+(e.t-.5+t)+"h-3v"+-t+"h"+-t+"v-3h"+(t+3)+"ZM"+(e.r+3.5)+","+(e.b+.5-t)+"h-3v"+t+"h"+-t+"v3h"+(t+3)+"ZM"+(e.l-3.5)+","+(e.b+.5-t)+"h3v"+t+"h"+t+"v3h-"+(t+3)+"Z"}function ehe(e,t,r,n,i){for(var a=!1,o={},s={},l,u,c,f,h=(i||{}).xaHash,d=(i||{}).yaHash,v=0;v{"use strict";var Bft=xa(),AP=Nc(),Nft=gv(),Uft=Tg(),kg=DN().makeDragBox,ud=ad().DRAGGERSIZE;SP.initInteractions=function(t){var r=t._fullLayout;if(t._context.staticPlot){Bft.select(t).selectAll(".drag").remove();return}if(!(!r._has("cartesian")&&!r._has("splom"))){var n=Object.keys(r._plots||{}).sort(function(a,o){if((r._plots[a].mainplot&&!0)===(r._plots[o].mainplot&&!0)){var s=a.split("y"),l=o.split("y");return s[0]===l[0]?Number(s[1]||1)-Number(l[1]||1):Number(s[0]||1)-Number(l[0]||1)}return r._plots[a].mainplot?1:-1});n.forEach(function(a){var o=r._plots[a],s=o.xaxis,l=o.yaxis;if(!o.mainplot){var u=kg(t,o,s._offset,l._offset,s._length,l._length,"ns","ew");u.onmousemove=function(h){t._fullLayout._rehover=function(){t._fullLayout._hoversubplot===a&&t._fullLayout._plots[a]&&AP.hover(t,h,a)},AP.hover(t,h,a),t._fullLayout._lasthover=u,t._fullLayout._hoversubplot=a},u.onmouseout=function(h){t._dragging||(t._fullLayout._hoversubplot=null,Nft.unhover(t,h))},t._context.showAxisDragHandles&&(kg(t,o,s._offset-ud,l._offset-ud,ud,ud,"n","w"),kg(t,o,s._offset+s._length,l._offset-ud,ud,ud,"n","e"),kg(t,o,s._offset-ud,l._offset+l._length,ud,ud,"s","w"),kg(t,o,s._offset+s._length,l._offset+l._length,ud,ud,"s","e"))}if(t._context.showAxisDragHandles){if(a===s._mainSubplot){var c=s._mainLinePosition;s.side==="top"&&(c-=ud),kg(t,o,s._offset+s._length*.1,c,s._length*.8,ud,"","ew"),kg(t,o,s._offset,c,s._length*.1,ud,"","w"),kg(t,o,s._offset+s._length*.9,c,s._length*.1,ud,"","e")}if(a===l._mainSubplot){var f=l._mainLinePosition;l.side!=="right"&&(f-=ud),kg(t,o,f,l._offset+l._length*.1,ud,l._length*.8,"ns",""),kg(t,o,f,l._offset+l._length*.9,ud,l._length*.1,"s",""),kg(t,o,f,l._offset,ud,l._length*.1,"n","")}}});var i=r._hoverlayer.node();i.onmousemove=function(a){a.target=t._fullLayout._lasthover,AP.hover(t,a,r._hoversubplot)},i.onclick=function(a){a.target=t._fullLayout._lasthover,AP.click(t,a)},i.onmousedown=function(a){t._fullLayout._lasthover.onmousedown(a)},SP.updateFx(t)}};SP.updateFx=function(e){var t=e._fullLayout,r=t.dragmode==="pan"?"move":"crosshair";Uft(t._draggers,r)}});var phe=ye((Qir,vhe)=>{"use strict";var dhe=ba();vhe.exports=function(t){for(var r=dhe.layoutArrayContainers,n=dhe.layoutArrayRegexes,i=t.split("[")[0],a,o,s=0;s{"use strict";var Vft=gy(),FN=g6(),DM=G1(),Hft=k6().sorterAsc,qN=ba();zM.containerArrayMatch=phe();var Gft=zM.isAddVal=function(t){return t==="add"||Vft(t)},ghe=zM.isRemoveVal=function(t){return t===null||t==="remove"};zM.applyContainerArrayChanges=function(t,r,n,i,a){var o=r.astr,s=qN.getComponentMethod(o,"supplyLayoutDefaults"),l=qN.getComponentMethod(o,"draw"),u=qN.getComponentMethod(o,"drawOne"),c=i.replot||i.recalc||s===FN||l===FN,f=t.layout,h=t._fullLayout;if(n[""]){Object.keys(n).length>1&&DM.warn("Full array edits are incompatible with other edits",o);var d=n[""][""];if(ghe(d))r.set(null);else if(Array.isArray(d))r.set(d);else return DM.warn("Unrecognized full array edit value",o,d),!0;return c?!1:(s(f,h),l(t),!0)}var v=Object.keys(n).map(Number).sort(Hft),x=r.get(),b=x||[],p=a(h,o).get(),E=[],k=-1,A=b.length,L,_,C,M,g,P,T,F;for(L=0;Lb.length-(T?0:1)){DM.warn("index out of range",o,C);continue}if(P!==void 0)g.length>1&&DM.warn("Insertion & removal are incompatible with edits to the same index.",o,C),ghe(P)?E.push(C):T?(P==="add"&&(P={}),b.splice(C,0,P),p&&p.splice(C,0,{})):DM.warn("Unrecognized full object edit value",o,C,P),k===-1&&(k=C);else for(_=0;_=0;L--)b.splice(E[L],1),p&&p.splice(E[L],1);if(b.length?x||r.set(b):r.set(null),c)return!1;if(s(f,h),u!==FN){var q;if(k===-1)q=v;else{for(A=Math.max(b.length,A),q=[],L=0;L=k));L++)q.push(C);for(L=k;L{"use strict";var bhe=uo(),tnr=Lq(),whe=ba(),kp=Mr(),FM=Xu(),The=af(),Ahe=va(),qM=The.cleanId,jft=The.getFromTrace,ON=whe.traceIs;Cg.clearPromiseQueue=function(e){Array.isArray(e._promises)&&e._promises.length>0&&kp.log("Clearing previous rejected promises from queue."),e._promises=[]};Cg.cleanLayout=function(e){var t,r;e||(e={}),e.xaxis1&&(e.xaxis||(e.xaxis=e.xaxis1),delete e.xaxis1),e.yaxis1&&(e.yaxis||(e.yaxis=e.yaxis1),delete e.yaxis1),e.scene1&&(e.scene||(e.scene=e.scene1),delete e.scene1);var n=(FM.subplotsRegistry.cartesian||{}).attrRegex,i=(FM.subplotsRegistry.polar||{}).attrRegex,a=(FM.subplotsRegistry.ternary||{}).attrRegex,o=(FM.subplotsRegistry.gl3d||{}).attrRegex,s=Object.keys(e);for(t=0;t3?(b.x=1.02,b.xanchor="left"):b.x<-2&&(b.x=-.02,b.xanchor="right"),b.y>3?(b.y=1.02,b.yanchor="bottom"):b.y<-2&&(b.y=-.02,b.yanchor="top")),e.dragmode==="rotate"&&(e.dragmode="orbit"),Ahe.clean(e),e.template&&e.template.layout&&Cg.cleanLayout(e.template.layout),e};function Y3(e,t){var r=e[t],n=t.charAt(0);r&&r!=="paper"&&(e[t]=qM(r,n,!0))}Cg.cleanData=function(e){for(var t=0;t0)return e.substr(0,t)}Cg.hasParent=function(e,t){for(var r=xhe(t);r;){if(r in e)return!0;r=xhe(r)}return!1};var Xft=["x","y","z"];Cg.clearAxisTypes=function(e,t,r){for(var n=0;n{"use strict";var CP=xa(),Yft=uo(),Kft=$q(),sa=Mr(),Yu=sa.nestedProperty,UN=g3(),ap=lne(),L0=ba(),FP=_3(),Ho=Xu(),Nv=Qa(),Jft=dB(),$ft=Cd(),BN=ao(),Qft=va(),eht=zN().initInteractions,tht=Zp(),rht=wf().clearOutline,Lhe=ub().dfltConfig,EP=mhe(),yh=She(),$l=gM(),p_=Bu(),iht=ad().AX_NAME_PATTERN,NN=0,Mhe=5;function nht(e,t,r,n){var i;if(e=sa.getGraphDiv(e),UN.init(e),sa.isPlainObject(t)){var a=t;t=a.data,r=a.layout,n=a.config,i=a.frames}var o=UN.triggerHandler(e,"plotly_beforeplot",[t,r,n]);if(o===!1)return Promise.reject();!t&&!r&&!sa.isPlotDiv(e)&&sa.warn("Calling _doPlot as if redrawing but this container doesn't yet have a plot.",e);function s(){if(i)return pl.addFrames(e,i)}Ihe(e,n),r||(r={}),CP.select(e).classed("js-plotly-plot",!0),BN.makeTester(),Array.isArray(e._promises)||(e._promises=[]);var l=(e.data||[]).length===0&&Array.isArray(t);Array.isArray(t)&&(yh.cleanData(t),l?e.data=t:e.data.push.apply(e.data,t),e.empty=!1),(!e.layout||l)&&(e.layout=yh.cleanLayout(r)),Ho.supplyDefaults(e);var u=e._fullLayout,c=u._has("cartesian");u._replotting=!0,(l||u._shouldCreateBgLayer)&&(Eht(e),u._shouldCreateBgLayer&&delete u._shouldCreateBgLayer),BN.initGradients(e),BN.initPatterns(e),l&&Nv.saveShowSpikeInitial(e);var f=!e.calcdata||e.calcdata.length!==(e._fullData||[]).length;f&&Ho.doCalcdata(e);for(var h=0;h=e.data.length||i<-e.data.length)throw new Error(r+" must be valid indices for gd.data.");if(t.indexOf(i,n+1)>-1||i>=0&&t.indexOf(-e.data.length+i)>-1||i<0&&t.indexOf(e.data.length+i)>-1)throw new Error("each index in "+r+" must be unique.")}}function Rhe(e,t,r){if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("currentIndices is a required argument.");if(Array.isArray(t)||(t=[t]),PP(e,t,"currentIndices"),typeof r!="undefined"&&!Array.isArray(r)&&(r=[r]),typeof r!="undefined"&&PP(e,r,"newIndices"),typeof r!="undefined"&&t.length!==r.length)throw new Error("current and new indices must be of equal length.")}function uht(e,t,r){var n,i;if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("traces must be defined.");for(Array.isArray(t)||(t=[t]),n=0;n=0&&c=0&&c0&&typeof M.parts[T]!="string";)T--;var F=M.parts[T],q=M.parts[T-1]+"."+F,V=M.parts.slice(0,T).join("."),H=Yu(e.layout,V).get(),X=Yu(n,V).get(),G=M.get();if(g!==void 0){p[C]=g,E[C]=F==="reverse"?g:Cy(G);var N=FP.getLayoutValObject(n,M.parts);if(N&&N.impliedEdits&&g!==null)for(var W in N.impliedEdits)k(sa.relativeAttr(C,W),N.impliedEdits[W]);if(["width","height"].indexOf(C)!==-1)if(g){k("autosize",null);var re=C==="height"?"width":"height";k(re,n[re])}else n[C]=e._initialAutoSize[C];else if(C==="autosize")k("width",g?null:n.width),k("height",g?null:n.height);else if(q.match(Vhe))_(q),Yu(n,V+"._inputRange").set(null);else if(q.match(Hhe)){_(q),Yu(n,V+"._inputRange").set(null);var ae=Yu(n,V).get();ae._inputDomain&&(ae._input.domain=ae._inputDomain.slice())}else q.match(dht)&&Yu(n,V+"._inputDomain").set(null);if(F==="type"){L=H;var _e=X.type==="linear"&&g==="log",Me=X.type==="log"&&g==="linear";if(_e||Me){if(!L||!L.range)k(V+".autorange",!0);else if(X.autorange)_e&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var ke=L.range[0],ge=L.range[1];_e?(ke<=0&&ge<=0&&k(V+".autorange",!0),ke<=0?ke=ge/1e6:ge<=0&&(ge=ke/1e6),k(V+".range[0]",Math.log(ke)/Math.LN10),k(V+".range[1]",Math.log(ge)/Math.LN10)):(k(V+".range[0]",Math.pow(10,ke)),k(V+".range[1]",Math.pow(10,ge)))}Array.isArray(n._subplots.polar)&&n._subplots.polar.length&&n[M.parts[0]]&&M.parts[1]==="radialaxis"&&delete n[M.parts[0]]._subplot.viewInitial["radialaxis.range"],L0.getComponentMethod("annotations","convertCoords")(e,X,g,k),L0.getComponentMethod("images","convertCoords")(e,X,g,k)}else k(V+".autorange",!0),k(V+".range",null);Yu(n,V+"._inputRange").set(null)}else if(F.match(iht)){var ie=Yu(n,C).get(),Te=(g||{}).type;(!Te||Te==="-")&&(Te="linear"),L0.getComponentMethod("annotations","convertCoords")(e,ie,Te,k),L0.getComponentMethod("images","convertCoords")(e,ie,Te,k)}var Ee=EP.containerArrayMatch(C);if(Ee){c=Ee.array,f=Ee.index;var Ae=Ee.property,ze=N||{editType:"calc"};f!==""&&Ae===""&&(EP.isAddVal(g)?E[C]=null:EP.isRemoveVal(g)?E[C]=(Yu(r,c).get()||[])[f]:sa.warn("unrecognized full object value",t)),p_.update(b,ze),u[c]||(u[c]={});var Ce=u[c][f];Ce||(Ce=u[c][f]={}),Ce[Ae]=g,delete t[C]}else F==="reverse"?(H.range?H.range.reverse():(k(V+".autorange",!0),H.range=[1,0]),X.autorange?b.calc=!0:b.plot=!0):(C==="dragmode"&&(g===!1&&G!==!1||g!==!1&&G===!1)||n._has("scatter-like")&&n._has("regl")&&C==="dragmode"&&(g==="lasso"||g==="select")&&!(G==="lasso"||G==="select")?b.plot=!0:N?p_.update(b,N):b.calc=!0,M.set(g))}}for(c in u){var me=EP.applyContainerArrayChanges(e,a(r,c),u[c],b,a);me||(b.plot=!0)}for(var Re in A){L=Nv.getFromId(e,Re);var ce=L&&L._constraintGroup;if(ce){b.calc=!0;for(var Ge in ce)A[Ge]||(Nv.getFromId(e,Ge)._constraintShrinkable=!0)}}(jhe(e)||t.height||t.width)&&(b.plot=!0);var nt=n.shapes;for(f=0;f1;)if(n.pop(),r=Yu(t,n.join(".")+".uirevision").get(),r!==void 0)return r;return t.uirevision}function ght(e,t){for(var r=0;r=i.length?i[0]:i[u]:i}function s(u){return Array.isArray(a)?u>=a.length?a[0]:a[u]:a}function l(u,c){var f=0;return function(){if(u&&++f===c)return u()}}return new Promise(function(u,c){function f(){if(n._frameQueue.length!==0){for(;n._frameQueue.length;){var F=n._frameQueue.pop();F.onInterrupt&&F.onInterrupt()}e.emit("plotly_animationinterrupted",[])}}function h(F){if(F.length!==0){for(var q=0;qn._timeToNext&&v()};F()}var b=0;function p(F){return Array.isArray(i)?b>=i.length?F.transitionOpts=i[b]:F.transitionOpts=i[0]:F.transitionOpts=i,b++,F}var E,k,A=[],L=t==null,_=Array.isArray(t),C=!L&&!_&&sa.isPlainObject(t);if(C)A.push({type:"object",data:p(sa.extendFlat({},t))});else if(L||["string","number"].indexOf(typeof t)!==-1)for(E=0;E0&&PP)&&T.push(k);A=T}}A.length>0?h(A):(e.emit("plotly_animated"),u())})}function Tht(e,t,r){if(e=sa.getGraphDiv(e),t==null)return Promise.resolve();if(!sa.isPlotDiv(e))throw new Error("This element is not a Plotly plot: "+e+". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");var n,i,a,o,s=e._transitionData._frames,l=e._transitionData._frameHash;if(!Array.isArray(t))throw new Error("addFrames failure: frameList must be an Array of frame definitions"+t);var u=s.length+t.length*2,c=[],f={};for(n=t.length-1;n>=0;n--)if(sa.isPlainObject(t[n])){var h=t[n].name,d=(l[h]||f[h]||{}).name,v=t[n].name,x=l[d]||f[d];d&&v&&typeof v=="number"&&x&&NNM.index?-1:C.index=0;n--){if(i=c[n].frame,typeof i.name=="number"&&sa.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!i.name)for(;l[i.name="frame "+e._transitionData._counter++];);if(l[i.name]){for(a=0;a=0;r--)n=t[r],a.push({type:"delete",index:n}),o.unshift({type:"insert",index:n,value:i[n]});var s=Ho.modifyFrames,l=Ho.modifyFrames,u=[e,o],c=[e,a];return ap&&ap.add(e,s,u,l,c),Ho.modifyFrames(e,a)}function Sht(e){e=sa.getGraphDiv(e);var t=e._fullLayout||{},r=e._fullData||[];return Ho.cleanPlot([],{},r,t),Ho.purge(e),UN.purge(e),t._container&&t._container.remove(),delete e._context,e}function Mht(e){var t=e._fullLayout,r=e.getBoundingClientRect();if(!sa.equalDomRects(r,t._lastBBox)){var n=t._invTransform=sa.inverseTransformMatrix(sa.getFullTransformMatrix(e));t._invScaleX=Math.sqrt(n[0][0]*n[0][0]+n[0][1]*n[0][1]+n[0][2]*n[0][2]),t._invScaleY=Math.sqrt(n[1][0]*n[1][0]+n[1][1]*n[1][1]+n[1][2]*n[1][2]),t._lastBBox=r}}function Eht(e){var t=CP.select(e),r=e._fullLayout;if(r._calcInverseTransform=Mht,r._calcInverseTransform(e),r._container=t.selectAll(".plot-container").data([0]),r._container.enter().insert("div",":first-child").classed("plot-container",!0).classed("plotly",!0).style({width:"100%",height:"100%"}),r._paperdiv=r._container.selectAll(".svg-container").data([0]),r._paperdiv.enter().append("div").classed("user-select-none",!0).classed("svg-container",!0).style("position","relative"),r._glcontainer=r._paperdiv.selectAll(".gl-container").data([{}]),r._glcontainer.enter().append("div").classed("gl-container",!0),r._paperdiv.selectAll(".main-svg").remove(),r._paperdiv.select(".modebar-container").remove(),r._paper=r._paperdiv.insert("svg",":first-child").classed("main-svg",!0),r._toppaper=r._paperdiv.append("svg").classed("main-svg",!0),r._modebardiv=r._paperdiv.append("div"),delete r._modeBar,r._hoverpaper=r._paperdiv.append("svg").classed("main-svg",!0),!r._uid){var n={};CP.selectAll("defs").each(function(){this.id&&(n[this.id.split("-")[1]]=1)}),r._uid=sa.randstr(n)}r._paperdiv.selectAll(".main-svg").attr(tht.svgAttrs),r._defs=r._paper.append("defs").attr("id","defs-"+r._uid),r._clips=r._defs.append("g").classed("clips",!0),r._topdefs=r._toppaper.append("defs").attr("id","topdefs-"+r._uid),r._topclips=r._topdefs.append("g").classed("clips",!0),r._bgLayer=r._paper.append("g").classed("bglayer",!0),r._draggers=r._paper.append("g").classed("draglayer",!0);var i=r._paper.append("g").classed("layer-below",!0);r._imageLowerLayer=i.append("g").classed("imagelayer",!0),r._shapeLowerLayer=i.append("g").classed("shapelayer",!0),r._cartesianlayer=r._paper.append("g").classed("cartesianlayer",!0),r._polarlayer=r._paper.append("g").classed("polarlayer",!0),r._smithlayer=r._paper.append("g").classed("smithlayer",!0),r._ternarylayer=r._paper.append("g").classed("ternarylayer",!0),r._geolayer=r._paper.append("g").classed("geolayer",!0),r._funnelarealayer=r._paper.append("g").classed("funnelarealayer",!0),r._pielayer=r._paper.append("g").classed("pielayer",!0),r._iciclelayer=r._paper.append("g").classed("iciclelayer",!0),r._treemaplayer=r._paper.append("g").classed("treemaplayer",!0),r._sunburstlayer=r._paper.append("g").classed("sunburstlayer",!0),r._indicatorlayer=r._toppaper.append("g").classed("indicatorlayer",!0),r._glimages=r._paper.append("g").classed("glimages",!0);var a=r._toppaper.append("g").classed("layer-above",!0);r._imageUpperLayer=a.append("g").classed("imagelayer",!0),r._shapeUpperLayer=a.append("g").classed("shapelayer",!0),r._selectionLayer=r._toppaper.append("g").classed("selectionlayer",!0),r._infolayer=r._toppaper.append("g").classed("infolayer",!0),r._menulayer=r._toppaper.append("g").classed("menulayer",!0),r._zoomlayer=r._toppaper.append("g").classed("zoomlayer",!0),r._hoverlayer=r._hoverpaper.append("g").classed("hoverlayer",!0),r._modebardiv.classed("modebar-container",!0).style("position","absolute").style("top","0px").style("right","0px"),e.emit("plotly_framework")}pl.animate=wht;pl.addFrames=Tht;pl.deleteFrames=Aht;pl.addTraces=Ohe;pl.deleteTraces=Bhe;pl.extendTraces=Fhe;pl.moveTraces=VN;pl.prependTraces=qhe;pl.newPlot=lht;pl._doPlot=nht;pl.purge=Sht;pl.react=_ht;pl.redraw=sht;pl.relayout=OM;pl.restyle=IP;pl.setPlotConfig=aht;pl.update=DP;pl._guiRelayout=GN(OM);pl._guiRestyle=GN(IP);pl._guiUpdate=GN(DP);pl._storeDirectGUIEdit=hht});var Ly=ye(Mm=>{"use strict";var kht=ba();Mm.getDelay=function(e){return e._has&&(e._has("gl3d")||e._has("mapbox")||e._has("map"))?500:0};Mm.getRedrawFunc=function(e){return function(){kht.getComponentMethod("colorbar","draw")(e)}};Mm.encodeSVG=function(e){return"data:image/svg+xml,"+encodeURIComponent(e)};Mm.encodeJSON=function(e){return"data:application/json,"+encodeURIComponent(e)};var Whe=window.URL||window.webkitURL;Mm.createObjectURL=function(e){return Whe.createObjectURL(e)};Mm.revokeObjectURL=function(e){return Whe.revokeObjectURL(e)};Mm.createBlob=function(e,t){if(t==="svg")return new window.Blob([e],{type:"image/svg+xml;charset=utf-8"});if(t==="full-json")return new window.Blob([e],{type:"application/json;charset=utf-8"});var r=Cht(window.atob(e));return new window.Blob([r],{type:"image/"+t})};Mm.octetStream=function(e){document.location.href="data:application/octet-stream"+e};function Cht(e){for(var t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r),i=0;i{"use strict";var WN=xa(),anr=Mr(),Lht=ao(),Pht=va(),onr=Zp(),jN=/"/g,NM="TOBESTRIPPED",Iht=new RegExp('("'+NM+")|("+NM+'")',"g");function Rht(e){var t=WN.select("body").append("div").style({display:"none"}).html(""),r=e.replace(/(&[^;]*;)/gi,function(n){return n==="<"?"<":n==="&rt;"?">":n.indexOf("<")!==-1||n.indexOf(">")!==-1?"":t.html(n).text()});return t.remove(),r}function Dht(e){return e.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")}Zhe.exports=function(t,r,n){var i=t._fullLayout,a=i._paper,o=i._toppaper,s=i.width,l=i.height,u;a.insert("rect",":first-child").call(Lht.setRect,0,0,s,l).call(Pht.fill,i.paper_bgcolor);var c=i._basePlotModules||[];for(u=0;u{"use strict";var zht=Mr(),Fht=vb().EventEmitter,UM=Ly();function qht(e){var t=e.emitter||new Fht,r=new Promise(function(n,i){var a=window.Image,o=e.svg,s=e.format||"png",l=e.canvas,u=e.scale||1,c=e.width||300,f=e.height||150,h=u*c,d=u*f,v=l.getContext("2d",{willReadFrequently:!0}),x=new a,b,p;s==="svg"||zht.isSafari()?p=UM.encodeSVG(o):(b=UM.createBlob(o,"svg"),p=UM.createObjectURL(b)),l.width=h,l.height=d,x.onload=function(){var E;switch(b=null,UM.revokeObjectURL(p),s!=="svg"&&v.drawImage(x,0,0,h,d),s){case"jpeg":E=l.toDataURL("image/jpeg");break;case"png":E=l.toDataURL("image/png");break;case"webp":E=l.toDataURL("image/webp");break;case"svg":E=p;break;default:var k="Image format is not jpeg, png, svg or webp.";if(i(new Error(k)),!e.promise)return t.emit("error",k)}n(E),e.promise||t.emit("success",E)},x.onerror=function(E){if(b=null,UM.revokeObjectURL(p),i(E),!e.promise)return t.emit("error",E)},x.src=p});return e.promise?r:t}Xhe.exports=qht});var XN=ye((unr,Jhe)=>{"use strict";var Yhe=uo(),Khe=OP(),Oht=Xu(),Em=Mr(),VM=Ly(),Bht=BP(),Nht=NP(),Uht=e6().version,ZN={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};function Vht(e,t){t=t||{};var r,n,i,a;Em.isPlainObject(e)?(r=e.data||[],n=e.layout||{},i=e.config||{},a={}):(e=Em.getGraphDiv(e),r=Em.extendDeep([],e.data),n=Em.extendDeep({},e.layout),i=e._context,a=e._fullLayout||{});function o(_){return!(_ in t)||Em.validate(t[_],ZN[_])}if(!o("width")&&t.width!==null||!o("height")&&t.height!==null)throw new Error("Height and width should be pixel values.");if(!o("format"))throw new Error("Export format is not "+Em.join2(ZN.format.values,", "," or ")+".");var s={};function l(_,C){return Em.coerce(t,s,ZN,_,C)}var u=l("format"),c=l("width"),f=l("height"),h=l("scale"),d=l("setBackground"),v=l("imageDataOnly"),x=document.createElement("div");x.style.position="absolute",x.style.left="-5000px",document.body.appendChild(x);var b=Em.extendFlat({},n);c?b.width=c:t.width===null&&Yhe(a.width)&&(b.width=a.width),f?b.height=f:t.height===null&&Yhe(a.height)&&(b.height=a.height);var p=Em.extendFlat({},i,{_exportedPlot:!0,staticPlot:!0,setBackground:d}),E=VM.getRedrawFunc(x);function k(){return new Promise(function(_){setTimeout(_,VM.getDelay(x._fullLayout))})}function A(){return new Promise(function(_,C){var M=Bht(x,u,h),g=x._fullLayout.width,P=x._fullLayout.height;function T(){Khe.purge(x),document.body.removeChild(x)}if(u==="full-json"){var F=Oht.graphJson(x,!1,"keepdata","object",!0,!0);return F.version=Uht,F=JSON.stringify(F),T(),_(v?F:VM.encodeJSON(F))}if(T(),u==="svg")return _(v?M:VM.encodeSVG(M));var q=document.createElement("canvas");q.id=Em.randstr(),Nht({format:u,width:g,height:P,scale:h,canvas:q,svg:M,promise:!0}).then(_).catch(C)})}function L(_){return v?_.replace(VM.IMAGE_URL_PREFIX,""):_}return new Promise(function(_,C){Khe.newPlot(x,r,b,p).then(E).then(k).then(A).then(function(M){_(L(M))}).catch(function(M){C(M)})})}Jhe.exports=Vht});var tde=ye((cnr,ede)=>{"use strict";var P0=Mr(),Hht=Xu(),Ght=_3(),jht=ub().dfltConfig,Lg=P0.isPlainObject,Vb=Array.isArray,$he=P0.isArrayOrTypedArray;ede.exports=function(t,r){t===void 0&&(t=[]),r===void 0&&(r={});var n=Ght.get(),i=[],a={_context:P0.extendFlat({},jht)},o,s;Vb(t)?(a.data=P0.extendDeep([],t),o=t):(a.data=[],o=[],i.push(cd("array","data"))),Lg(r)?(a.layout=P0.extendDeep({},r),s=r):(a.layout={},s={},arguments.length>1&&i.push(cd("object","layout"))),Hht.supplyDefaults(a);for(var l=a._fullData,u=o.length,c=0;cf.length&&n.push(cd("unused",i,u.concat(f.length)));var p=f.length,E=Array.isArray(b);E&&(p=Math.min(p,b.length));var k,A,L,_,C;if(h.dimensions===2)for(A=0;Af[A].length&&n.push(cd("unused",i,u.concat(A,f[A].length)));var M=f[A].length;for(k=0;k<(E?Math.min(M,b[A].length):M);k++)L=E?b[A][k]:b,_=c[A][k],C=f[A][k],P0.validate(_,L)?C!==_&&C!==+_&&n.push(cd("dynamic",i,u.concat(A,k),_,C)):n.push(cd("value",i,u.concat(A,k),_))}else n.push(cd("array",i,u.concat(A),c[A]));else for(A=0;A{"use strict";var $ht=Mr(),VP=Ly();function Qht(e,t,r){var n=document.createElement("a"),i="download"in n,a=new Promise(function(o,s){var l,u;if(i)return l=VP.createBlob(e,r),u=VP.createObjectURL(l),n.href=u,n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n),VP.revokeObjectURL(u),l=null,o(t);if($ht.isSafari()){var c=r==="svg"?",":";base64,";return VP.octetStream(c+encodeURIComponent(e)),o(t)}s(new Error("download error"))});return a}rde.exports=Qht});var YN=ye((dnr,ade)=>{"use strict";var nde=Mr(),edt=XN(),tdt=ide(),hnr=Ly();function rdt(e,t){var r;return nde.isPlainObject(e)||(r=nde.getGraphDiv(e)),t=t||{},t.format=t.format||"png",t.width=t.width||null,t.height=t.height||null,t.imageDataOnly=!0,new Promise(function(n,i){r&&r._snapshotInProgress&&i(new Error("Snapshotting already in progress.")),r&&(r._snapshotInProgress=!0);var a=edt(e,t),o=t.filename||e.fn||"newplot";o+="."+t.format.replace("-","."),a.then(function(s){return r&&(r._snapshotInProgress=!1),tdt(s,o,t.format)}).then(function(s){n(s)}).catch(function(s){r&&(r._snapshotInProgress=!1),i(s)})})}ade.exports=rdt});var cde=ye(KN=>{"use strict";var Cp=Mr(),Lp=Cp.isPlainObject,ode=_3(),sde=Xu(),idt=vl(),lde=Vs(),ude=ub().dfltConfig;KN.makeTemplate=function(e){e=Cp.isPlainObject(e)?e:Cp.getGraphDiv(e),e=Cp.extendDeep({_context:ude},{data:e.data,layout:e.layout}),sde.supplyDefaults(e);var t=e.data||[],r=e.layout||{};r._basePlotModules=e._fullLayout._basePlotModules,r._modules=e._fullLayout._modules;var n={data:{},layout:{}};t.forEach(function(d){var v={};HM(d,v,adt.bind(null,d));var x=Cp.coerce(d,{},idt,"type"),b=n.data[x];b||(b=n.data[x]=[]),b.push(v)}),HM(r,n.layout,ndt.bind(null,r)),delete n.layout.template;var i=r.template;if(Lp(i)){var a=i.layout,o,s,l,u,c,f;Lp(a)&&HP(a,n.layout);var h=i.data;if(Lp(h)){for(s in n.data)if(l=h[s],Array.isArray(l)){for(c=n.data[s],f=c.length,u=l.length,o=0;op?o.push({code:"unused",traceType:d,templateCount:b,dataCount:p}):p>b&&o.push({code:"reused",traceType:d,templateCount:b,dataCount:p})}}function E(k,A){for(var L in k)if(L.charAt(0)!=="_"){var _=k[L],C=I0(k,L,A);Lp(_)?(Array.isArray(k)&&_._template===!1&&_.templateitemname&&o.push({code:"missing",path:C,templateitemname:_.templateitemname}),E(_,C)):Array.isArray(_)&&odt(_)&&E(_,C)}}if(E({data:l,layout:s},""),o.length)return o.map(sdt)};function odt(e){for(var t=0;t{"use strict";var Hh=OP();Sc._doPlot=Hh._doPlot;Sc.newPlot=Hh.newPlot;Sc.restyle=Hh.restyle;Sc.relayout=Hh.relayout;Sc.redraw=Hh.redraw;Sc.update=Hh.update;Sc._guiRestyle=Hh._guiRestyle;Sc._guiRelayout=Hh._guiRelayout;Sc._guiUpdate=Hh._guiUpdate;Sc._storeDirectGUIEdit=Hh._storeDirectGUIEdit;Sc.react=Hh.react;Sc.extendTraces=Hh.extendTraces;Sc.prependTraces=Hh.prependTraces;Sc.addTraces=Hh.addTraces;Sc.deleteTraces=Hh.deleteTraces;Sc.moveTraces=Hh.moveTraces;Sc.purge=Hh.purge;Sc.addFrames=Hh.addFrames;Sc.deleteFrames=Hh.deleteFrames;Sc.animate=Hh.animate;Sc.setPlotConfig=Hh.setPlotConfig;var ldt=DS().getGraphDiv,udt=rP().eraseActiveShape;Sc.deleteActiveShape=function(e){return udt(ldt(e))};Sc.toImage=XN();Sc.validate=tde();Sc.downloadImage=YN();var fde=cde();Sc.makeTemplate=fde.makeTemplate;Sc.validateTemplate=fde.validateTemplate});var K3=ye((gnr,dde)=>{"use strict";var JN=Mr(),cdt=ba();dde.exports=function(t,r,n,i){var a=i("x"),o=i("y"),s,l=cdt.getComponentMethod("calendars","handleTraceDefaults");if(l(t,r,["x","y"],n),a){var u=JN.minRowLength(a);o?s=Math.min(u,JN.minRowLength(o)):(s=u,i("y0"),i("dy"))}else{if(!o)return 0;s=JN.minRowLength(o),i("x0"),i("dx")}return r._length=s,s}});var Pg=ye((mnr,gde)=>{"use strict";var vde=Mr().dateTick0,fdt=es(),hdt=fdt.ONEWEEK;function pde(e,t){return e%hdt===0?vde(t,1):vde(t,0)}gde.exports=function(t,r,n,i,a){if(a||(a={x:!0,y:!0}),a.x){var o=i("xperiod");o&&(i("xperiod0",pde(o,r.xcalendar)),i("xperiodalignment"))}if(a.y){var s=i("yperiod");s&&(i("yperiod0",pde(s,r.ycalendar)),i("yperiodalignment"))}}});var _de=ye((ynr,yde)=>{"use strict";var mde=["orientation","groupnorm","stackgaps"];yde.exports=function(t,r,n,i){var a=n._scatterStackOpts,o=i("stackgroup");if(o){var s=r.xaxis+r.yaxis,l=a[s];l||(l=a[s]={});var u=l[o],c=!1;u?u.traces.push(r):(u=l[o]={traceIndices:[],traces:[r]},c=!0);for(var f={orientation:r.x&&!r.y?"h":"v"},h=0;h{"use strict";var xde=va(),bde=Dv().hasColorscale,wde=Uh(),ddt=lu();Tde.exports=function(t,r,n,i,a,o){var s=ddt.isBubble(t),l=(t.line||{}).color,u;if(o=o||{},l&&(n=l),a("marker.symbol"),a("marker.opacity",s?.7:1),a("marker.size"),o.noAngle||(a("marker.angle"),o.noAngleRef||a("marker.angleref"),o.noStandOff||a("marker.standoff")),a("marker.color",n),bde(t,"marker")&&wde(t,r,i,a,{prefix:"marker.",cLetter:"c"}),o.noSelect||(a("selected.marker.color"),a("unselected.marker.color"),a("selected.marker.size"),a("unselected.marker.size")),o.noLine||(l&&!Array.isArray(l)&&r.marker.color!==l?u=l:s?u=xde.background:u=xde.defaultLine,a("marker.line.color",u),bde(t,"marker.line")&&wde(t,r,i,a,{prefix:"marker.line.",cLetter:"c"}),a("marker.line.width",s?1:0)),s&&(a("marker.sizeref"),a("marker.sizemin"),a("marker.sizemode")),o.gradient){var c=a("marker.gradient.type");c!=="none"&&a("marker.gradient.color")}}});var R0=ye((xnr,Ade)=>{"use strict";var vdt=Mr().isArrayOrTypedArray,pdt=Dv().hasColorscale,gdt=Uh();Ade.exports=function(t,r,n,i,a,o){o||(o={});var s=(t.marker||{}).color;if(s&&s._inputArray&&(s=s._inputArray),a("line.color",n),pdt(t,"line"))gdt(t,r,i,a,{prefix:"line.",cLetter:"c"});else{var l=(vdt(s)?!1:s)||n;a("line.color",l)}a("line.width"),o.noDash||a("line.dash"),o.backoff&&a("line.backoff")}});var J3=ye((bnr,Sde)=>{"use strict";Sde.exports=function(t,r,n){var i=n("line.shape");i==="spline"&&n("line.smoothing")}});var D0=ye((wnr,Mde)=>{"use strict";var mdt=Mr();Mde.exports=function(e,t,r,n,i){i=i||{},n("textposition"),mdt.coerceFont(n,"textfont",i.font||r.font,i),i.noSelect||(n("selected.textfont.color"),n("unselected.textfont.color"))}});var Ig=ye((Tnr,kde)=>{"use strict";var jP=va(),Ede=Mr().isArrayOrTypedArray;function ydt(e){for(var t=jP.interpolate(e[0][1],e[1][1],.5),r=2;r{"use strict";var Cde=Mr(),_dt=ba(),xdt=Uc(),bdt=Sm(),$3=lu(),wdt=K3(),Tdt=Pg(),Adt=_de(),Sdt=$p(),Mdt=R0(),Lde=J3(),Edt=D0(),kdt=Ig(),Cdt=Mr().coercePattern;Pde.exports=function(t,r,n,i){function a(d,v){return Cde.coerce(t,r,xdt,d,v)}var o=wdt(t,r,i,a);if(o||(r.visible=!1),!!r.visible){Tdt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("zorder");var s=Adt(t,r,i,a);i.scattermode==="group"&&r.orientation===void 0&&a("orientation","v");var l=!s&&o{"use strict";var Ldt=Bb().getAxisGroup;Rde.exports=function(t,r,n,i,a){var o=r.orientation,s=r[{v:"x",h:"y"}[o]+"axis"],l=Ldt(n,s)+o,u=n._alignmentOpts||{},c=i("alignmentgroup"),f=u[l];f||(f=u[l]={});var h=f[c];h?h.traces.push(r):h=f[c]={traces:[r],alignmentIndex:Object.keys(f).length,offsetGroups:{}};var d=i("offsetgroup")||"",v=h.offsetGroups,x=v[d];r._offsetIndex=0,(a!=="group"||d)&&(x||(x=v[d]={offsetIndex:Object.keys(v).length}),r._offsetIndex=x.offsetIndex)}});var $N=ye((Mnr,Dde)=>{"use strict";var Pdt=Mr(),Idt=Hb(),Rdt=Uc();Dde.exports=function(t,r){var n,i,a,o=r.scattermode;function s(h){return Pdt.coerce(i._input,i,Rdt,h)}if(r.scattermode==="group")for(a=0;a=0;c--){var f=t[c];if(f.type==="scatter"&&f.xaxis===l.xaxis&&f.yaxis===l.yaxis){f.opacity=void 0;break}}}}}});var Fde=ye((Enr,zde)=>{"use strict";var Ddt=Mr(),zdt=V6();zde.exports=function(e,t){function r(i,a){return Ddt.coerce(e,t,zdt,i,a)}var n=t.barmode==="group";t.scattermode==="group"&&r("scattergap",n?t.bargap:.2)}});var Rg=ye((knr,Ode)=>{"use strict";var Fdt=uo(),qde=Mr(),qdt=qde.dateTime2ms,WP=qde.incrementMonth,Odt=es(),Bdt=Odt.ONEAVGMONTH;Ode.exports=function(t,r,n,i){if(r.type!=="date")return{vals:i};var a=t[n+"periodalignment"];if(!a)return{vals:i};var o=t[n+"period"],s;if(Fdt(o)){if(o=+o,o<=0)return{vals:i}}else if(typeof o=="string"&&o.charAt(0)==="M"){var l=+o.substring(1);if(l>0&&Math.round(l)===l)s=l;else return{vals:i}}for(var u=r.calendar,c=a==="start",f=a==="end",h=t[n+"period0"],d=qdt(h,u)||0,v=[],x=[],b=[],p=i.length,E=0;Ek;)_=WP(_,-s,u);for(;_<=k;)_=WP(_,s,u);L=WP(_,-s,u)}else{for(A=Math.round((k-d)/o),_=d+A*o;_>k;)_-=o;for(;_<=k;)_+=o;L=_-o}v[E]=c?L:f?_:(L+_)/2,x[E]=L,b[E]=_}return{vals:v,starts:x,ends:b}}});var z0=ye((Cnr,Nde)=>{"use strict";var QN=Dv().hasColorscale,eU=zv(),Bde=lu();Nde.exports=function(t,r){Bde.hasLines(r)&&QN(r,"line")&&eU(t,r,{vals:r.line.color,containerStr:"line",cLetter:"c"}),Bde.hasMarkers(r)&&(QN(r,"marker")&&eU(t,r,{vals:r.marker.color,containerStr:"marker",cLetter:"c"}),QN(r,"marker.line")&&eU(t,r,{vals:r.marker.line.color,containerStr:"marker.line",cLetter:"c"}))}});var km=ye((Lnr,Ude)=>{"use strict";var Df=Mr();Ude.exports=function(t,r){for(var n=0;n{"use strict";var Vde=Mr();Hde.exports=function(t,r){Vde.isArrayOrTypedArray(r.selectedpoints)&&Vde.tagSelected(t,r)}});var q0=ye((Inr,Kde)=>{"use strict";var Gde=uo(),rU=Mr(),GM=Qa(),jde=Rg(),tU=es().BADNUM,iU=lu(),Ndt=z0(),Udt=km(),Vdt=F0();function Hdt(e,t){var r=e._fullLayout,n=t._xA=GM.getFromId(e,t.xaxis||"x","x"),i=t._yA=GM.getFromId(e,t.yaxis||"y","y"),a=n.makeCalcdata(t,"x"),o=i.makeCalcdata(t,"y"),s=jde(t,n,"x",a),l=jde(t,i,"y",o),u=s.vals,c=l.vals,f=t._length,h=new Array(f),d=t.ids,v=nU(t,r,n,i),x=!1,b,p,E,k,A,L;Xde(r,t);var _="x",C="y",M;if(v)rU.pushUnique(v.traceIndices,t.index),b=v.orientation==="v",b?(C="s",M="x"):(_="s",M="y"),A=v.stackgaps==="interpolate";else{var g=Zde(t,f);Wde(e,t,n,i,u,c,g)}var P=!!t.xperiodalignment,T=!!t.yperiodalignment;for(p=0;pp&&h[k].gap;)k--;for(L=h[k].s,E=h.length-1;E>k;E--)h[E].s=L;for(;p{"use strict";Jde.exports=ZP;var Gdt=Mr().distinctVals;function ZP(e,t){this.traces=e,this.sepNegVal=t.sepNegVal,this.overlapNoMerge=t.overlapNoMerge;for(var r=1/0,n=t.posAxis._id.charAt(0),i=[],a=0;a{"use strict";var O0=uo(),g_=Mr().isArrayOrTypedArray,Q3=es().BADNUM,jdt=ba(),jM=Qa(),Wdt=Bb().getAxisGroup,XP=$de();function Zdt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ul+o||!O0(s))}for(var c=0;c{"use strict";var ive=q0(),nve=Gb().setGroupPositions;function avt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ug[c]&&c{"use strict";var svt=ao(),cve=es(),WM=cve.BADNUM,fve=cve.LOG_CLIP,sve=fve+.5,lve=fve-.5,YP=Mr(),lvt=YP.segmentsIntersect,uve=YP.constrain,cU=Sm();hve.exports=function(t,r){var n=r.trace||{},i=r.xaxis,a=r.yaxis,o=i.type==="log",s=a.type==="log",l=i._length,u=a._length,c=r.backoff,f=n.marker,h=r.connectGaps,d=r.baseTolerance,v=r.shape,x=v==="linear",b=n.fill&&n.fill!=="none",p=[],E=cU.minTolerance,k=t.length,A=new Array(k),L=0,_,C,M,g,P,T,F,q,V,H,X,G,N,W,re,ae;function _e(ut){var Ne=t[ut];if(!Ne)return!1;var Ye=r.linearized?i.l2p(Ne.x):i.c2p(Ne.x),Ve=r.linearized?a.l2p(Ne.y):a.c2p(Ne.y);if(Ye===WM){if(o&&(Ye=i.c2p(Ne.x,!0)),Ye===WM)return!1;s&&Ve===WM&&(Ye*=Math.abs(i._m*u*(i._m>0?sve:lve)/(a._m*l*(a._m>0?sve:lve)))),Ye*=1e3}if(Ve===WM){if(s&&(Ve=a.c2p(Ne.y,!0)),Ve===WM)return!1;Ve*=1e3}return[Ye,Ve]}function Me(ut,Ne,Ye,Ve){var Xe=Ye-ut,ht=Ve-Ne,Le=.5-ut,xe=.5-Ne,Se=Xe*Xe+ht*ht,lt=Xe*Le+ht*xe;if(lt>0&<1||Math.abs(Le.y-Ye[0][1])>1)&&(Le=[Le.x,Le.y],Ve&&Te(Le,ut)ze||ut[1]me)return[uve(ut[0],Ae,ze),uve(ut[1],Ce,me)]}function kt(ut,Ne){if(ut[0]===Ne[0]&&(ut[0]===Ae||ut[0]===ze)||ut[1]===Ne[1]&&(ut[1]===Ce||ut[1]===me))return!0}function Ct(ut,Ne){var Ye=[],Ve=Rt(ut),Xe=Rt(Ne);return Ve&&Xe&&kt(Ve,Xe)||(Ve&&Ye.push(Ve),Xe&&Ye.push(Xe)),Ye}function Yt(ut,Ne,Ye){return function(Ve,Xe){var ht=Rt(Ve),Le=Rt(Xe),xe=[];if(ht&&Le&&kt(ht,Le))return xe;ht&&xe.push(ht),Le&&xe.push(Le);var Se=2*YP.constrain((Ve[ut]+Xe[ut])/2,Ne,Ye)-((ht||Ve)[ut]+(Le||Xe)[ut]);if(Se){var lt;ht&&Le?lt=Se>0==ht[ut]>Le[ut]?ht:Le:lt=ht||Le,lt[ut]+=Se}return xe}}var xr;v==="linear"||v==="spline"?xr=ot:v==="hv"||v==="vh"?xr=Ct:v==="hvh"?xr=Yt(0,Ae,ze):v==="vhv"&&(xr=Yt(1,Ce,me));function er(ut,Ne){var Ye=Ne[0]-ut[0],Ve=(Ne[1]-ut[1])/Ye,Xe=(ut[1]*Ne[0]-Ne[1]*ut[0])/Ye;return Xe>0?[Ve>0?Ae:ze,me]:[Ve>0?ze:Ae,Ce]}function Ke(ut){var Ne=ut[0],Ye=ut[1],Ve=Ne===A[L-1][0],Xe=Ye===A[L-1][1];if(!(Ve&&Xe))if(L>1){var ht=Ne===A[L-2][0],Le=Ye===A[L-2][1];Ve&&(Ne===Ae||Ne===ze)&&ht?Le?L--:A[L-1]=ut:Xe&&(Ye===Ce||Ye===me)&&Le?ht?L--:A[L-1]=ut:A[L++]=ut}else A[L++]=ut}function xt(ut){A[L-1][0]!==ut[0]&&A[L-1][1]!==ut[1]&&Ke([nt,ct]),Ke(ut),qt=null,nt=ct=0}var bt=YP.isArrayOrTypedArray(f);function Lt(ut){if(ut&&c&&(ut.i=_,ut.d=t,ut.trace=n,ut.marker=bt?f[ut.i]:f,ut.backoff=c),ke=ut[0]/l,ge=ut[1]/u,ce=ut[0]ze?ze:0,Ge=ut[1]me?me:0,ce||Ge){if(!L)A[L++]=[ce||ut[0],Ge||ut[1]];else if(qt){var Ne=xr(qt,ut);Ne.length>1&&(xt(Ne[0]),A[L++]=Ne[1])}else rt=xr(A[L-1],ut)[0],A[L++]=rt;var Ye=A[L-1];ce&&Ge&&(Ye[0]!==ce||Ye[1]!==Ge)?(qt&&(nt!==ce&&ct!==Ge?Ke(nt&&ct?er(qt,ut):[nt||ce,ct||Ge]):nt&&ct&&Ke([nt,ct])),Ke([ce,Ge])):nt-ce&&ct-Ge&&Ke([ce||nt,Ge||ct]),qt=ut,nt=ce,ct=Ge}else qt&&xt(xr(qt,ut)[0]),A[L++]=ut}for(_=0;_ie(T,St))break;M=T,N=V[0]*q[0]+V[1]*q[1],N>X?(X=N,g=T,F=!1):N=t.length||!T)break;Lt(T),C=T}}qt&&Ke([nt||qt[0],ct||qt[1]]),p.push(A.slice(0,L))}var Et=v.slice(v.length-1);if(c&&Et!=="h"&&Et!=="v"){for(var dt=!1,Ht=-1,$t=[],fr=0;fr{"use strict";var dve={tonextx:1,tonexty:1,tonext:1};vve.exports=function(t,r,n){var i,a,o,s,l,u={},c=!1,f=-1,h=0,d=-1;for(a=0;a=0?l=d:(l=d=h,h++),l{"use strict";var Dg=xa(),uvt=ba(),ZM=Mr(),tT=ZM.ensureSingle,gve=ZM.identity,zf=ao(),rT=lu(),cvt=fU(),fvt=hU(),KP=wM().tester;mve.exports=function(t,r,n,i,a,o){var s,l,u=!a,c=!!a&&a.duration>0,f=fvt(t,r,n);if(s=i.selectAll("g.trace").data(f,function(d){return d[0].trace.uid}),s.enter().append("g").attr("class",function(d){return"trace scatter trace"+d[0].trace.uid}).style("stroke-miterlimit",2),s.order(),hvt(t,s,r),c){o&&(l=o());var h=Dg.transition().duration(a.duration).ease(a.easing).each("end",function(){l&&l()}).each("interrupt",function(){l&&l()});h.each(function(){i.selectAll("g.trace").each(function(d,v){pve(t,v,r,d,f,this,a)})})}else s.each(function(d,v){pve(t,v,r,d,f,this,a)});u&&s.exit().remove(),i.selectAll("path:not([d])").remove()};function hvt(e,t,r){t.each(function(n){var i=tT(Dg.select(this),"g","fills");zf.setClipUrl(i,r.layerClipId,e);var a=n[0].trace,o=[];a._ownfill&&o.push("_ownFill"),a._nexttrace&&o.push("_nextFill");var s=i.selectAll("g").data(o,gve);s.enter().append("g"),s.exit().each(function(l){a[l]=null}).remove(),s.order().each(function(l){a[l]=tT(Dg.select(this),"path","js-fill")})})}function pve(e,t,r,n,i,a,o){var s=e._context.staticPlot,l;dvt(e,t,r,n,i);var u=!!o&&o.duration>0;function c(Yt){return u?Yt.transition():Yt}var f=r.xaxis,h=r.yaxis,d=n[0].trace,v=d.line,x=Dg.select(a),b=tT(x,"g","errorbars"),p=tT(x,"g","lines"),E=tT(x,"g","points"),k=tT(x,"g","text");if(uvt.getComponentMethod("errorbars","plot")(e,b,r,o),d.visible!==!0)return;c(x).style("opacity",d.opacity);var A,L,_=d.fill.charAt(d.fill.length-1);_!=="x"&&_!=="y"&&(_="");var C,M;_==="y"?(C=1,M=h.c2p(0,!0)):_==="x"&&(C=0,M=f.c2p(0,!0)),n[0][r.isRangePlot?"nodeRangePlot3":"node3"]=x;var g="",P=[],T=d._prevtrace,F=null,q=null;T&&(g=T._prevRevpath||"",L=T._nextFill,P=T._ownPolygons,F=T._fillsegments,q=T._fillElement);var V,H,X="",G="",N,W,re,ae,_e,Me,ke=[];d._polygons=[];var ge=[],ie=[],Te=ZM.noop;if(A=d._ownFill,rT.hasLines(d)||d.fill!=="none"){L&&L.datum(n),["hv","vh","hvh","vhv"].indexOf(v.shape)!==-1?(N=zf.steps(v.shape),W=zf.steps(v.shape.split("").reverse().join(""))):v.shape==="spline"?N=W=function(Yt){var xr=Yt[Yt.length-1];return Yt.length>1&&Yt[0][0]===xr[0]&&Yt[0][1]===xr[1]?zf.smoothclosed(Yt.slice(1),v.smoothing):zf.smoothopen(Yt,v.smoothing)}:N=W=function(Yt){return"M"+Yt.join("L")},re=function(Yt){return W(Yt.reverse())},ie=cvt(n,{xaxis:f,yaxis:h,trace:d,connectGaps:d.connectgaps,baseTolerance:Math.max(v.width||1,3)/4,shape:v.shape,backoff:v.backoff,simplify:v.simplify,fill:d.fill}),ge=new Array(ie.length);var Ee=0;for(l=0;l=s[0]&&x.x<=s[1]&&x.y>=l[0]&&x.y<=l[1]}),h=Math.ceil(f.length/c),d=0;i.forEach(function(x,b){var p=x[0].trace;rT.hasMarkers(p)&&p.marker.maxdisplayed>0&&b{"use strict";yve.exports={container:"marker",min:"cmin",max:"cmax"}});var $P=ye((Nnr,_ve)=>{"use strict";var JP=Qa();_ve.exports=function(t,r,n){var i={},a={_fullLayout:n},o=JP.getFromTrace(a,r,"x"),s=JP.getFromTrace(a,r,"y"),l=t.orig_x;l===void 0&&(l=t.x);var u=t.orig_y;return u===void 0&&(u=t.y),i.xLabel=JP.tickText(o,o.c2l(l),!0).text,i.yLabel=JP.tickText(s,s.c2l(u),!0).text,i}});var op=ye((Unr,xve)=>{"use strict";var dU=xa(),nT=ao(),vvt=ba();function pvt(e){var t=dU.select(e).selectAll("g.trace.scatter");t.style("opacity",function(r){return r[0].trace.opacity}),t.selectAll("g.points").each(function(r){var n=dU.select(this),i=r.trace||r[0].trace;vU(n,i,e)}),t.selectAll("g.text").each(function(r){var n=dU.select(this),i=r.trace||r[0].trace;pU(n,i,e)}),t.selectAll("g.trace path.js-line").call(nT.lineGroupStyle),t.selectAll("g.trace path.js-fill").call(nT.fillGroupStyle,e,!1),vvt.getComponentMethod("errorbars","style")(t)}function vU(e,t,r){nT.pointStyle(e.selectAll("path.point"),t,r)}function pU(e,t,r){nT.textPointStyle(e.selectAll("text"),t,r)}function gvt(e,t,r){var n=t[0].trace;n.selectedpoints?(nT.selectedPointStyle(r.selectAll("path.point"),n),nT.selectedTextStyle(r.selectAll("text"),n)):(vU(r,n,e),pU(r,n,e))}xve.exports={style:pvt,stylePoints:vU,styleText:pU,styleOnSelect:gvt}});var oT=ye((Vnr,bve)=>{"use strict";var aT=va(),mvt=lu();bve.exports=function(t,r){var n,i;if(t.mode==="lines")return n=t.line.color,n&&aT.opacity(n)?n:t.fillcolor;if(t.mode==="none")return t.fill?t.fillcolor:"";var a=r.mcc||(t.marker||{}).color,o=r.mlcc||((t.marker||{}).line||{}).color;return i=a&&aT.opacity(a)?a:o&&aT.opacity(o)&&(r.mlw||((t.marker||{}).line||{}).width)?o:"",i?aT.opacity(i)<.3?aT.addOpacity(i,.3):i:(n=(t.line||{}).color,n&&aT.opacity(n)&&mvt.hasLines(t)&&t.line.width?n:t.fillcolor)}});var sT=ye((Hnr,Tve)=>{"use strict";var QP=Mr(),wve=Nc(),yvt=ba(),_vt=oT(),gU=va(),xvt=QP.fillText;Tve.exports=function(t,r,n,i){var a=t.cd,o=a[0].trace,s=t.xa,l=t.ya,u=s.c2p(r),c=l.c2p(n),f=[u,c],h=o.hoveron||"",d=o.mode.indexOf("markers")!==-1?3:.5,v=!!o.xperiodalignment,x=!!o.yperiodalignment;if(h.indexOf("points")!==-1){var b=function(G){if(v){var N=s.c2p(G.xStart),W=s.c2p(G.xEnd);return u>=Math.min(N,W)&&u<=Math.max(N,W)?0:1/0}var re=Math.max(3,G.mrc||0),ae=1-1/re,_e=Math.abs(s.c2p(G.x)-u);return _e=Math.min(N,W)&&c<=Math.max(N,W)?0:1/0}var re=Math.max(3,G.mrc||0),ae=1-1/re,_e=Math.abs(l.c2p(G.y)-c);return _eke!=me>=ke&&(Ae=Te[ie-1][0],ze=Te[ie][0],me-Ce&&(Ee=Ae+(ze-Ae)*(ke-Ce)/(me-Ce),re=Math.min(re,Ee),ae=Math.max(ae,Ee)));return re=Math.max(re,0),ae=Math.min(ae,s._length),{x0:re,x1:ae,y0:ke,y1:ke}}if(h.indexOf("fills")!==-1&&o._fillElement){var V=F(o._fillElement)&&!F(o._fillExclusionElement);if(V){var H=q(o._polygons);H===null&&(H={x0:f[0],x1:f[0],y0:f[1],y1:f[1]});var X=gU.defaultLine;return gU.opacity(o.fillcolor)?X=o.fillcolor:gU.opacity((o.line||{}).color)&&(X=o.line.color),QP.extendFlat(t,{distance:t.maxHoverDistance,x0:H.x0,x1:H.x1,y0:H.y0,y1:H.y1,color:X,hovertemplate:!1}),delete t.index,o.text&&!QP.isArrayOrTypedArray(o.text)?t.text=String(o.text):t.text=o.name,[t]}}}});var lT=ye((Gnr,Sve)=>{"use strict";var Ave=lu();Sve.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h=!Ave.hasMarkers(s)&&!Ave.hasText(s);if(h)return[];if(r===!1)for(l=0;l{"use strict";Mve.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}});var yU=ye((Wnr,Lve)=>{"use strict";var XM=ba().traceIs,mU=L3();Lve.exports=function(t,r,n,i){n("autotypenumbers",i.autotypenumbersDflt);var a=n("type",(i.splomStash||{}).type);a==="-"&&(bvt(r,i.data),r.type==="-"?r.type="linear":t.type=r.type)};function bvt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i;r.indexOf("scene")!==-1&&(r=n);var a=wvt(t,r,n);if(a){if(a.type==="histogram"&&n==={v:"y",h:"x"}[a.orientation||"v"]){e.type="linear";return}var o=n+"calendar",s=a[o],l={noMultiCategory:!XM(a,"cartesian")||XM(a,"noMultiCategory")};if(a.type==="box"&&a._hasPreCompStats&&n==={h:"x",v:"y"}[a.orientation||"v"]&&(l.noMultiCategory=!0),l.autotypenumbers=e.autotypenumbers,Cve(a,n)){var u=kve(a),c=[];for(i=0;i0&&(i["_"+r+"axes"]||{})[t])return i;if((i[r+"axis"]||r)===t){if(Cve(i,r))return i;if((i[r]||[]).length||i[r+"0"])return i}}}function kve(e){return{v:"x",h:"y"}[e.orientation||"v"]}function Cve(e,t){var r=kve(e),n=XM(e,"box-violin"),i=XM(e._fullInput||{},"candlestick");return n&&!i&&t===r&&e[r]===void 0&&e[r+"0"]===void 0}});var eI=ye((Znr,Pve)=>{"use strict";var Tvt=vv().isTypedArraySpec;function Avt(e,t){var r=t.dataAttr||e._id.charAt(0),n={},i,a,o;if(t.axData)i=t.axData;else for(i=[],a=0;a0||Tvt(a),s;o&&(s="array");var l=n("categoryorder",s),u;l==="array"&&(u=n("categoryarray")),!o&&l==="array"&&(l=r.categoryorder="trace"),l==="trace"?r._initialCategories=[]:l==="array"?r._initialCategories=u.slice():(u=Avt(r,i).sort(),l==="category ascending"?r._initialCategories=u:l==="category descending"&&(r._initialCategories=u.reverse()))}}});var YM=ye((Xnr,Rve)=>{"use strict";var Ive=id().mix,Svt=dh(),Mvt=Mr();Rve.exports=function(t,r,n,i){i=i||{};var a=i.dfltColor;function o(C,M){return Mvt.coerce2(t,r,i.attributes,C,M)}var s=o("linecolor",a),l=o("linewidth"),u=n("showline",i.showLine||!!s||!!l);u||(delete r.linecolor,delete r.linewidth);var c=Ive(a,i.bgColor,i.blend||Svt.lightFraction).toRgbString(),f=o("gridcolor",c),h=o("gridwidth"),d=o("griddash"),v=n("showgrid",i.showGrid||!!f||!!h||!!d);if(v||(delete r.gridcolor,delete r.gridwidth,delete r.griddash),i.hasMinor){var x=Ive(r.gridcolor,i.bgColor,67).toRgbString(),b=o("minor.gridcolor",x),p=o("minor.gridwidth",r.gridwidth||1),E=o("minor.griddash",r.griddash||"solid"),k=n("minor.showgrid",!!b||!!p||!!E);k||(delete r.minor.gridcolor,delete r.minor.gridwidth,delete r.minor.griddash)}if(!i.noZeroLine){var A=o("zerolinecolor",a),L=o("zerolinewidth"),_=n("zeroline",i.showGrid||!!A||!!L);_||(delete r.zerolinecolor,delete r.zerolinewidth)}}});var JM=ye((Ynr,Bve)=>{"use strict";var Dve=uo(),Evt=ba(),KM=Mr(),kvt=Vs(),Cvt=Zd(),_U=Cd(),zve=xb(),Fve=T3(),Lvt=t_(),Pvt=r_(),Ivt=eI(),Rvt=YM(),Dvt=dB(),qve=ym(),tI=ad().WEEKDAY_PATTERN,zvt=ad().HOUR_PATTERN;Bve.exports=function(t,r,n,i,a){var o=i.letter,s=i.font||{},l=i.splomStash||{},u=n("visible",!i.visibleDflt),c=r._template||{},f=r.type||c.type||"-",h;if(f==="date"){var d=Evt.getComponentMethod("calendars","handleDefaults");d(t,r,"calendar",i.calendar),i.noTicklabelmode||(h=n("ticklabelmode"))}!i.noTicklabelindex&&(f==="date"||f==="linear")&&n("ticklabelindex");var v="";(!i.noTicklabelposition||f==="multicategory")&&(v=KM.coerce(t,r,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:h==="period"?["outside","inside"]:o==="x"?["outside","inside","outside left","inside left","outside right","inside right"]:["outside","inside","outside top","inside top","outside bottom","inside bottom"]}},"ticklabelposition")),i.noTicklabeloverflow||n("ticklabeloverflow",v.indexOf("inside")!==-1?"hide past domain":f==="category"||f==="multicategory"?"allow":"hide past div"),qve(r,a),Dvt(t,r,n,i),Ivt(t,r,n,i),f!=="category"&&!i.noHover&&n("hoverformat");var x=n("color"),b=x!==_U.color.dflt?x:s.color,p=l.label||a._dfltTitle[o];if(Pvt(t,r,n,f,i),!u)return r;n("title.text",p),KM.coerceFont(n,"title.font",s,{overrideDflt:{size:KM.bigFont(s.size),color:b}}),zve(t,r,n,f);var E=i.hasMinor;if(E&&(kvt.newContainer(r,"minor"),zve(t,r,n,f,{isMinor:!0})),Lvt(t,r,n,f,i),Fve(t,r,n,i),E){var k=i.isMinor;i.isMinor=!0,Fve(t,r,n,i),i.isMinor=k}Rvt(t,r,n,{dfltColor:x,bgColor:i.bgColor,showGrid:i.showGrid,hasMinor:E,attributes:_U}),E&&!r.minor.ticks&&!r.minor.showgrid&&delete r.minor,(r.showline||r.ticks)&&n("mirror");var A=f==="multicategory";if(!i.noTickson&&(f==="category"||A)&&(r.ticks||r.showgrid)){var L;A&&(L="boundaries");var _=n("tickson",L);_==="boundaries"&&delete r.ticklabelposition}if(A){var C=n("showdividers");C&&(n("dividercolor"),n("dividerwidth"))}if(f==="date")if(Cvt(t,r,{name:"rangebreaks",inclusionAttr:"enabled",handleItemDefaults:Fvt}),!r.rangebreaks.length)delete r.rangebreaks;else{for(var M=0;M=2){var o="",s,l;if(a.length===2){for(s=0;s<2;s++)if(l=Ove(a[s]),l){o=tI;break}}var u=n("pattern",o);if(u===tI)for(s=0;s<2;s++)l=Ove(a[s]),l&&(t.bounds[s]=a[s]=l-1);if(u)for(s=0;s<2;s++)switch(l=a[s],u){case tI:if(!Dve(l)){t.enabled=!1;return}if(l=+l,l!==Math.floor(l)||l<0||l>=7){t.enabled=!1;return}t.bounds[s]=a[s]=l;break;case zvt:if(!Dve(l)){t.enabled=!1;return}if(l=+l,l<0||l>24){t.enabled=!1;return}t.bounds[s]=a[s]=l;break}if(r.autorange===!1){var c=r.range;if(c[0]c[1]){t.enabled=!1;return}}else if(a[0]>c[0]&&a[1]{"use strict";var Ovt=uo(),rI=Mr();Nve.exports=function(t,r,n,i){var a=i.counterAxes||[],o=i.overlayableAxes||[],s=i.letter,l=i.grid,u=i.overlayingDomain,c,f,h,d,v,x;l&&(f=l._domains[s][l._axisMap[r._id]],c=l._anchors[r._id],f&&(h=l[s+"side"].split(" ")[0],d=l.domain[s][h==="right"||h==="top"?1:0])),f=f||[0,1],c=c||(Ovt(t.position)?"free":a[0]||"free"),h=h||(s==="x"?"bottom":"left"),d=d||0,v=0,x=!1;var b=rI.coerce(t,r,{anchor:{valType:"enumerated",values:["free"].concat(a),dflt:c}},"anchor"),p=rI.coerce(t,r,{side:{valType:"enumerated",values:s==="x"?["bottom","top"]:["left","right"],dflt:h}},"side");if(b==="free"){if(s==="y"){var E=n("autoshift");E&&(d=p==="left"?u[0]:u[1],x=r.automargin?r.automargin:!0,v=p==="left"?-3:3),n("shift",v)}n("position",d)}n("automargin",x);var k=!1;if(o.length&&(k=rI.coerce(t,r,{overlaying:{valType:"enumerated",values:[!1].concat(o),dflt:!1}},"overlaying")),!k){var A=n("domain",f);A[0]>A[1]-1/4096&&(r.domain=f),rI.noneOrAll(t.domain,r.domain,f),r.tickmode==="sync"&&(r.tickmode="auto")}return n("layer"),r}});var Yve=ye((Jnr,Xve)=>{"use strict";var jb=Mr(),Uve=va(),Bvt=rp().isUnifiedHover,Nvt=OB(),Vve=Vs(),Uvt=s3(),Hve=Cd(),Vvt=yU(),Gve=JM(),Hvt=Bb(),jve=iI(),bU=af(),Cm=bU.id2name,Wve=bU.name2id,Gvt=ad().AX_ID_PATTERN,Zve=ba(),nI=Zve.traceIs,xU=Zve.getComponentMethod;function aI(e,t,r){Array.isArray(e[t])?e[t].push(r):e[t]=[r]}Xve.exports=function(t,r,n){var i=r.autotypenumbers,a={},o={},s={},l={},u={},c={},f={},h={},d={},v={},x,b;for(x=0;x{"use strict";var jvt=xa(),Kve=ba(),oI=Mr(),Qp=ao(),sI=Qa();Jve.exports=function(t,r,n,i){var a=t._fullLayout;if(r.length===0){sI.redrawComponents(t);return}function o(b){var p=b.xaxis,E=b.yaxis;a._defs.select("#"+b.clipId+"> rect").call(Qp.setTranslate,0,0).call(Qp.setScale,1,1),b.plot.call(Qp.setTranslate,p._offset,E._offset).call(Qp.setScale,1,1);var k=b.plot.selectAll(".scatterlayer .trace");k.selectAll(".point").call(Qp.setPointGroupScale,1,1),k.selectAll(".textpoint").call(Qp.setTextPointsScale,1,1),k.call(Qp.hideOutsideRangePoints,b)}function s(b,p){var E=b.plotinfo,k=E.xaxis,A=E.yaxis,L=k._length,_=A._length,C=!!b.xr1,M=!!b.yr1,g=[];if(C){var P=oI.simpleMap(b.xr0,k.r2l),T=oI.simpleMap(b.xr1,k.r2l),F=P[1]-P[0],q=T[1]-T[0];g[0]=(P[0]*(1-p)+p*T[0]-P[0])/(P[1]-P[0])*L,g[2]=L*(1-p+p*q/F),k.range[0]=k.l2r(P[0]*(1-p)+p*T[0]),k.range[1]=k.l2r(P[1]*(1-p)+p*T[1])}else g[0]=0,g[2]=L;if(M){var V=oI.simpleMap(b.yr0,A.r2l),H=oI.simpleMap(b.yr1,A.r2l),X=V[1]-V[0],G=H[1]-H[0];g[1]=(V[1]*(1-p)+p*H[1]-V[1])/(V[0]-V[1])*_,g[3]=_*(1-p+p*G/X),A.range[0]=k.l2r(V[0]*(1-p)+p*H[0]),A.range[1]=A.l2r(V[1]*(1-p)+p*H[1])}else g[1]=0,g[3]=_;sI.drawOne(t,k,{skipTitle:!0}),sI.drawOne(t,A,{skipTitle:!0}),sI.redrawComponents(t,[k._id,A._id]);var N=C?L/g[2]:1,W=M?_/g[3]:1,re=C?g[0]:0,ae=M?g[1]:0,_e=C?g[0]/g[2]*L:0,Me=M?g[1]/g[3]*_:0,ke=k._offset-_e,ge=A._offset-Me;E.clipRect.call(Qp.setTranslate,re,ae).call(Qp.setScale,1/N,1/W),E.plot.call(Qp.setTranslate,ke,ge).call(Qp.setScale,N,W),Qp.setPointGroupScale(E.zoomScalePts,1/N,1/W),Qp.setTextPointsScale(E.zoomScaleTxt,1/N,1/W)}var l;i&&(l=i());function u(){for(var b={},p=0;pn.duration?(u(),d=window.cancelAnimationFrame(x)):d=window.requestAnimationFrame(x)}return f=Date.now(),d=window.requestAnimationFrame(x),Promise.resolve()}});var Jf=ye(yv=>{"use strict";var uI=xa(),Qve=ba(),Wb=Mr(),Wvt=Xu(),Zvt=ao(),epe=kd().getModuleCalcData,m_=af(),zg=ad(),Xvt=Zp(),ql=Wb.ensureSingle;function lI(e,t,r){return Wb.ensureSingle(e,t,r,function(n){n.datum(r)})}var Zb=zg.zindexSeparator;yv.name="cartesian";yv.attr=["xaxis","yaxis"];yv.idRoot=["x","y"];yv.idRegex=zg.idRegex;yv.attrRegex=zg.attrRegex;yv.attributes=Eve();yv.layoutAttributes=Cd();yv.supplyLayoutDefaults=Yve();yv.transitionAxes=$ve();yv.finalizeSubplots=function(e,t){var r=t._subplots,n=r.xaxis,i=r.yaxis,a=r.cartesian,o=a,s={},l={},u,c,f;for(u=0;u0){var d=h.id;if(d.indexOf(Zb)!==-1)continue;d+=Zb+(u+1),h=Wb.extendFlat({},h,{id:d,plot:i._cartesianlayer.selectAll(".subplot").select("."+d)})}for(var v=[],x,b=0;b1&&(L+=Zb+A),k.push(s+L),o=0;o1,f=t.mainplotinfo;if(!t.mainplot||c)if(u)t.xlines=ql(n,"path","xlines-above"),t.ylines=ql(n,"path","ylines-above"),t.xaxislayer=ql(n,"g","xaxislayer-above"),t.yaxislayer=ql(n,"g","yaxislayer-above");else{if(!o){var h=ql(n,"g","layer-subplot");t.shapelayer=ql(h,"g","shapelayer"),t.imagelayer=ql(h,"g","imagelayer"),f&&c?(t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer):(t.minorGridlayer=ql(n,"g","minor-gridlayer"),t.gridlayer=ql(n,"g","gridlayer"),t.zerolinelayer=ql(n,"g","zerolinelayer"));var d=ql(n,"g","layer-between");t.shapelayerBetween=ql(d,"g","shapelayer"),t.imagelayerBetween=ql(d,"g","imagelayer"),ql(n,"path","xlines-below"),ql(n,"path","ylines-below"),t.overlinesBelow=ql(n,"g","overlines-below"),ql(n,"g","xaxislayer-below"),ql(n,"g","yaxislayer-below"),t.overaxesBelow=ql(n,"g","overaxes-below")}t.overplot=ql(n,"g","overplot"),t.plot=ql(t.overplot,"g",i),o||(t.xlines=ql(n,"path","xlines-above"),t.ylines=ql(n,"path","ylines-above"),t.overlinesAbove=ql(n,"g","overlines-above"),ql(n,"g","xaxislayer-above"),ql(n,"g","yaxislayer-above"),t.overaxesAbove=ql(n,"g","overaxes-above"),t.xlines=n.select(".xlines-"+s),t.ylines=n.select(".ylines-"+l),t.xaxislayer=n.select(".xaxislayer-"+s),t.yaxislayer=n.select(".yaxislayer-"+l))}else{var v=f.plotgroup,x=i+"-x",b=i+"-y";t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer,ql(f.overlinesBelow,"path",x),ql(f.overlinesBelow,"path",b),ql(f.overaxesBelow,"g",x),ql(f.overaxesBelow,"g",b),t.plot=ql(f.overplot,"g",i),ql(f.overlinesAbove,"path",x),ql(f.overlinesAbove,"path",b),ql(f.overaxesAbove,"g",x),ql(f.overaxesAbove,"g",b),t.xlines=v.select(".overlines-"+s).select("."+x),t.ylines=v.select(".overlines-"+l).select("."+b),t.xaxislayer=v.select(".overaxes-"+s).select("."+x),t.yaxislayer=v.select(".overaxes-"+l).select("."+b)}o||(u||(lI(t.minorGridlayer,"g",t.xaxis._id),lI(t.minorGridlayer,"g",t.yaxis._id),t.minorGridlayer.selectAll("g").map(function(p){return p[0]}).sort(m_.idSort),lI(t.gridlayer,"g",t.xaxis._id),lI(t.gridlayer,"g",t.yaxis._id),t.gridlayer.selectAll("g").map(function(p){return p[0]}).sort(m_.idSort)),t.xlines.style("fill","none").classed("crisp",!0),t.ylines.style("fill","none").classed("crisp",!0))}function ipe(e,t){if(e){var r={};e.each(function(l){var u=l[0],c=uI.select(this);c.remove(),npe(u,t),r[u]=!0});for(var n in t._plots)for(var i=t._plots[n],a=i.overlays||[],o=0;o{"use strict";var cI=lu();ape.exports={hasLines:cI.hasLines,hasMarkers:cI.hasMarkers,hasText:cI.hasText,isBubble:cI.isBubble,attributes:Uc(),layoutAttributes:V6(),supplyDefaults:Ide(),crossTraceDefaults:$N(),supplyLayoutDefaults:Fde(),calc:q0().calc,crossTraceCalc:ove(),arraysToCalcdata:km(),plot:iT(),colorbar:Kd(),formatLabels:$P(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:sT(),selectPoints:lT(),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:Jf(),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}});var upe=ye((tar,lpe)=>{"use strict";var Kvt=xa(),Jvt=va(),spe=MN(),wU=Mr(),$vt=wU.strScale,Qvt=wU.strRotate,ept=wU.strTranslate;lpe.exports=function(t,r,n){var i=t.node(),a=spe[n.arrowhead||0],o=spe[n.startarrowhead||0],s=(n.arrowwidth||1)*(n.arrowsize||1),l=(n.arrowwidth||1)*(n.startarrowsize||1),u=r.indexOf("start")>=0,c=r.indexOf("end")>=0,f=a.backoff*s+n.standoff,h=o.backoff*l+n.startstandoff,d,v,x,b;if(i.nodeName==="line"){d={x:+t.attr("x1"),y:+t.attr("y1")},v={x:+t.attr("x2"),y:+t.attr("y2")};var p=d.x-v.x,E=d.y-v.y;if(x=Math.atan2(E,p),b=x+Math.PI,f&&h&&f+h>Math.sqrt(p*p+E*E)){V();return}if(f){if(f*f>p*p+E*E){V();return}var k=f*Math.cos(x),A=f*Math.sin(x);v.x+=k,v.y+=A,t.attr({x2:v.x,y2:v.y})}if(h){if(h*h>p*p+E*E){V();return}var L=h*Math.cos(x),_=h*Math.sin(x);d.x-=L,d.y-=_,t.attr({x1:d.x,y1:d.y})}}else if(i.nodeName==="path"){var C=i.getTotalLength(),M="";if(C{"use strict";var cpe=xa(),TU=ba(),tpt=Xu(),__=Mr(),AU=__.strTranslate,QM=Qa(),Xb=va(),Py=ao(),fpe=Nc(),SU=Pl(),MU=Tg(),$M=gv(),rpt=Vs().arrayEditor,ipt=upe();vpe.exports={draw:npt,drawOne:hpe,drawRaw:dpe};function npt(e){var t=e._fullLayout;t._infolayer.selectAll(".annotation").remove();for(var r=0;r2/3?Xe="right":Xe="center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[Xe]}for(var Ce=!1,me=["x","y"],Re=0;Re1)&&(nt===Ge?(St=ct.r2fraction(t["a"+ce]),(St<0||St>1)&&(Ce=!0)):Ce=!0),xr=ct._offset+ct.r2p(t[ce]),xt=.5}else{var Et=Lt==="domain";ce==="x"?(Ke=t[ce],xr=Et?ct._offset+ct._length*Ke:xr=s.l+s.w*Ke):(Ke=1-t[ce],xr=Et?ct._offset+ct._length*Ke:xr=s.t+s.h*Ke),xt=t.showarrow?.5:Ke}if(t.showarrow){Yt.head=xr;var dt=t["a"+ce];if(bt=rt*ze(.5,t.xanchor)-ot*ze(.5,t.yanchor),nt===Ge){var Ht=QM.getRefType(nt);Ht==="domain"?(ce==="y"&&(dt=1-dt),Yt.tail=ct._offset+ct._length*dt):Ht==="paper"?ce==="y"?(dt=1-dt,Yt.tail=s.t+s.h*dt):Yt.tail=s.l+s.w*dt:Yt.tail=ct._offset+ct.r2p(dt),er=bt}else Yt.tail=xr+dt,er=bt+dt;Yt.text=Yt.tail+bt;var $t=o[ce==="x"?"width":"height"];if(Ge==="paper"&&(Yt.head=__.constrain(Yt.head,1,$t-1)),nt==="pixel"){var fr=-Math.max(Yt.tail-3,Yt.text),_r=Math.min(Yt.tail+3,Yt.text)-$t;fr>0?(Yt.tail+=fr,Yt.text+=fr):_r>0&&(Yt.tail-=_r,Yt.text-=_r)}Yt.tail+=Ct,Yt.head+=Ct}else bt=Rt*ze(xt,kt),er=bt,Yt.text=xr+bt;Yt.text+=Ct,bt+=Ct,er+=Ct,t["_"+ce+"padplus"]=Rt/2+er,t["_"+ce+"padminus"]=Rt/2-er,t["_"+ce+"size"]=Rt,t["_"+ce+"shift"]=bt}if(Ce){C.remove();return}var Br=0,Or=0;if(t.align!=="left"&&(Br=(ie-ke)*(t.align==="center"?.5:1)),t.valign!=="top"&&(Or=(Te-ge)*(t.valign==="middle"?.5:1)),_e)ae.select("svg").attr({x:P+Br-1,y:P+Or}).call(Py.setClipUrl,F?x:null,e);else{var Nr=P+Or-Me.top,ut=P+Br-Me.left;X.call(SU.positionText,ut,Nr).call(Py.setClipUrl,F?x:null,e)}q.select("rect").call(Py.setRect,P,P,ie,Te),T.call(Py.setRect,M/2,M/2,Ee-M,Ae-M),C.call(Py.setTranslate,Math.round(b.x.text-Ee/2),Math.round(b.y.text-Ae/2)),k.attr({transform:"rotate("+p+","+b.x.text+","+b.y.text+")"});var Ne=function(Ve,Xe){E.selectAll(".annotation-arrow-g").remove();var ht=b.x.head,Le=b.y.head,xe=b.x.tail+Ve,Se=b.y.tail+Xe,lt=b.x.text+Ve,Gt=b.y.text+Xe,Vt=__.rotationXYMatrix(p,lt,Gt),ar=__.apply2DTransform(Vt),Qr=__.apply2DTransform2(Vt),ai=+T.attr("width"),jr=+T.attr("height"),ri=lt-.5*ai,bi=ri+ai,nn=Gt-.5*jr,Wi=nn+jr,Ni=[[ri,nn,ri,Wi],[ri,Wi,bi,Wi],[bi,Wi,bi,nn],[bi,nn,ri,nn]].map(Qr);if(!Ni.reduce(function(Vr,gi){return Vr^!!__.segmentsIntersect(ht,Le,ht+1e6,Le+1e6,gi[0],gi[1],gi[2],gi[3])},!1)){Ni.forEach(function(Vr){var gi=__.segmentsIntersect(xe,Se,ht,Le,Vr[0],Vr[1],Vr[2],Vr[3]);gi&&(xe=gi.x,Se=gi.y)});var _n=t.arrowwidth,$i=t.arrowcolor,zn=t.arrowside,Wn=E.append("g").style({opacity:Xb.opacity($i)}).classed("annotation-arrow-g",!0),It=Wn.append("path").attr("d","M"+xe+","+Se+"L"+ht+","+Le).style("stroke-width",_n+"px").call(Xb.stroke,Xb.rgb($i));if(ipt(It,zn,t),l.annotationPosition&&It.node().parentNode&&!n){var ft=ht,jt=Le;if(t.standoff){var Zt=Math.sqrt(Math.pow(ht-xe,2)+Math.pow(Le-Se,2));ft+=t.standoff*(xe-ht)/Zt,jt+=t.standoff*(Se-Le)/Zt}var yr=Wn.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(xe-ft)+","+(Se-jt),transform:AU(ft,jt)}).style("stroke-width",_n+6+"px").call(Xb.stroke,"rgba(0,0,0,0)").call(Xb.fill,"rgba(0,0,0,0)"),Fr,Zr;$M.init({element:yr.node(),gd:e,prepFn:function(){var Vr=Py.getTranslate(C);Fr=Vr.x,Zr=Vr.y,i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0)},moveFn:function(Vr,gi){var Si=ar(Fr,Zr),Mi=Si[0]+Vr,Pi=Si[1]+gi;C.call(Py.setTranslate,Mi,Pi),d("x",y_(i,Vr,"x",s,t)),d("y",y_(a,gi,"y",s,t)),t.axref===t.xref&&d("ax",y_(i,Vr,"ax",s,t)),t.ayref===t.yref&&d("ay",y_(a,gi,"ay",s,t)),Wn.attr("transform",AU(Vr,gi)),k.attr({transform:"rotate("+p+","+Mi+","+Pi+")"})},doneFn:function(){TU.call("_guiRelayout",e,v());var Vr=document.querySelector(".js-notes-box-panel");Vr&&Vr.redraw(Vr.selectedObj)}})}}};if(t.showarrow&&Ne(0,0),A){var Ye;$M.init({element:C.node(),gd:e,prepFn:function(){Ye=k.attr("transform")},moveFn:function(Ve,Xe){var ht="pointer";if(t.showarrow)t.axref===t.xref?d("ax",y_(i,Ve,"ax",s,t)):d("ax",t.ax+Ve),t.ayref===t.yref?d("ay",y_(a,Xe,"ay",s.w,t)):d("ay",t.ay+Xe),Ne(Ve,Xe);else{if(n)return;var Le,xe;if(i)Le=y_(i,Ve,"x",s,t);else{var Se=t._xsize/s.w,lt=t.x+(t._xshift-t.xshift)/s.w-Se/2;Le=$M.align(lt+Ve/s.w,Se,0,1,t.xanchor)}if(a)xe=y_(a,Xe,"y",s,t);else{var Gt=t._ysize/s.h,Vt=t.y-(t._yshift+t.yshift)/s.h-Gt/2;xe=$M.align(Vt-Xe/s.h,Gt,0,1,t.yanchor)}d("x",Le),d("y",xe),(!i||!a)&&(ht=$M.getCursor(i?.5:Le,a?.5:xe,t.xanchor,t.yanchor))}k.attr({transform:AU(Ve,Xe)+Ye}),MU(C,ht)},clickFn:function(Ve,Xe){t.captureevents&&e.emit("plotly_clickannotation",_(Xe))},doneFn:function(){MU(C),TU.call("_guiRelayout",e,v());var Ve=document.querySelector(".js-notes-box-panel");Ve&&Ve.redraw(Ve.selectedObj)}})}}l.annotationText?X.call(SU.makeEditable,{delegate:C,gd:e}).call(G).on("edit",function(W){t.text=W,this.call(G),d("text",W),i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0),TU.call("_guiRelayout",e,v())}):X.call(G)}});var xpe=ye((iar,_pe)=>{"use strict";var ppe=Mr(),apt=ba(),gpe=Vs().arrayEditor;_pe.exports={hasClickToShow:opt,onClick:spt};function opt(e,t){var r=ype(e,t);return r.on.length>0||r.explicitOff.length>0}function spt(e,t){var r=ype(e,t),n=r.on,i=r.off.concat(r.explicitOff),a={},o=e._fullLayout.annotations,s,l;if(n.length||i.length){for(s=0;s{"use strict";var EU=Mr(),uT=va();bpe.exports=function(t,r,n,i){i("opacity");var a=i("bgcolor"),o=i("bordercolor"),s=uT.opacity(o);i("borderpad");var l=i("borderwidth"),u=i("showarrow");i("text",u?" ":n._dfltTitle.annotation),i("textangle"),EU.coerceFont(i,"font",n.font),i("width"),i("align");var c=i("height");if(c&&i("valign"),u){var f=i("arrowside"),h,d;f.indexOf("end")!==-1&&(h=i("arrowhead"),d=i("arrowsize")),f.indexOf("start")!==-1&&(i("startarrowhead",h),i("startarrowsize",d)),i("arrowcolor",s?r.bordercolor:uT.defaultLine),i("arrowwidth",(s&&l||1)*2),i("standoff"),i("startstandoff")}var v=i("hovertext"),x=n.hoverlabel||{};if(v){var b=i("hoverlabel.bgcolor",x.bgcolor||(uT.opacity(a)?uT.rgb(a):uT.defaultLine)),p=i("hoverlabel.bordercolor",x.bordercolor||uT.contrast(b)),E=EU.extendFlat({},x.font);E.color||(E.color=p),EU.coerceFont(i,"hoverlabel.font",E)}i("captureevents",!!v)}});var Tpe=ye((aar,wpe)=>{"use strict";var CU=Mr(),Yb=Qa(),lpt=Zd(),upt=kU(),cpt=Nb();wpe.exports=function(t,r){lpt(t,r,{name:"annotations",handleItemDefaults:fpt})};function fpt(e,t,r){function n(k,A){return CU.coerce(e,t,cpt,k,A)}var i=n("visible"),a=n("clicktoshow");if(i||a){upt(e,t,r,n);for(var o=t.showarrow,s=["x","y"],l=[-10,-30],u={_fullLayout:r},c=0;c<2;c++){var f=s[c],h=Yb.coerceRef(e,t,u,f,"","paper");if(h!=="paper"){var d=Yb.getFromId(u,h);d._annIndices.push(t._index)}if(Yb.coercePosition(t,u,n,h,f,.5),o){var v="a"+f,x=Yb.coerceRef(e,t,u,v,"pixel",["pixel","paper"]);x!=="pixel"&&x!==h&&(x=t[v]="pixel");var b=x==="pixel"?l[c]:.4;Yb.coercePosition(t,u,n,x,v,b)}n(f+"anchor"),n(f+"shift")}if(CU.noneOrAll(e,t,["x","y"]),o&&CU.noneOrAll(e,t,["ax","ay"]),a){var p=n("xclick"),E=n("yclick");t._xclick=p===void 0?t.x:Yb.cleanPosition(p,u,t.xref),t._yclick=E===void 0?t.y:Yb.cleanPosition(E,u,t.yref)}}}});var Mpe=ye((oar,Spe)=>{"use strict";var LU=Mr(),Kb=Qa(),hpt=fI().draw;Spe.exports=function(t){var r=t._fullLayout,n=LU.filterVisible(r.annotations);if(n.length&&t._fullData.length)return LU.syncOrAsync([hpt,dpt],t)};function dpt(e){var t=e._fullLayout;LU.filterVisible(t.annotations).forEach(function(r){var n=Kb.getFromId(e,r.xref),i=Kb.getFromId(e,r.yref),a=Kb.getRefType(r.xref),o=Kb.getRefType(r.yref);r._extremes={},a==="range"&&Ape(r,n),o==="range"&&Ape(r,i)})}function Ape(e,t){var r=t._id,n=r.charAt(0),i=e[n],a=e["a"+n],o=e[n+"ref"],s=e["a"+n+"ref"],l=e["_"+n+"padplus"],u=e["_"+n+"padminus"],c={x:1,y:-1}[n]*e[n+"shift"],f=3*e.arrowsize*e.arrowwidth||0,h=f+c,d=f-c,v=3*e.startarrowsize*e.arrowwidth||0,x=v+c,b=v-c,p;if(s===o){var E=Kb.findExtremes(t,[t.r2c(i)],{ppadplus:h,ppadminus:d}),k=Kb.findExtremes(t,[t.r2c(a)],{ppadplus:Math.max(l,x),ppadminus:Math.max(u,b)});p={min:[E.min[0],k.min[0]],max:[E.max[0],k.max[0]]}}else x=a?x+a:x,b=a?b-a:b,p=Kb.findExtremes(t,[t.r2c(i)],{ppadplus:Math.max(l,h,x),ppadminus:Math.max(u,d,b)});e._extremes[r]=p}});var kpe=ye((sar,Epe)=>{"use strict";var vpt=uo(),ppt=u6();Epe.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(!(a||o))return;var s=t._fullLayout.annotations,l=r._id.charAt(0),u,c;function f(d){var v=u[d],x=null;a?x=ppt(v,r.range):x=Math.pow(10,v),vpt(x)||(x=null),i(c+d,x)}for(var h=0;h{"use strict";var PU=fI(),Cpe=xpe();Lpe.exports={moduleType:"component",name:"annotations",layoutAttributes:Nb(),supplyLayoutDefaults:Tpe(),includeBasePlot:IM()("annotations"),calcAutorange:Mpe(),draw:PU.draw,drawOne:PU.drawOne,drawRaw:PU.drawRaw,hasClickToShow:Cpe.hasClickToShow,onClick:Cpe.onClick,convertCoords:kpe()}});var hI=ye((uar,Ipe)=>{"use strict";var Ku=Nb(),gpt=Bu().overrideAll,mpt=Vs().templatedArray;Ipe.exports=gpt(mpt("annotation",{visible:Ku.visible,x:{valType:"any"},y:{valType:"any"},z:{valType:"any"},ax:{valType:"number"},ay:{valType:"number"},xanchor:Ku.xanchor,xshift:Ku.xshift,yanchor:Ku.yanchor,yshift:Ku.yshift,text:Ku.text,textangle:Ku.textangle,font:Ku.font,width:Ku.width,height:Ku.height,opacity:Ku.opacity,align:Ku.align,valign:Ku.valign,bgcolor:Ku.bgcolor,bordercolor:Ku.bordercolor,borderpad:Ku.borderpad,borderwidth:Ku.borderwidth,showarrow:Ku.showarrow,arrowcolor:Ku.arrowcolor,arrowhead:Ku.arrowhead,startarrowhead:Ku.startarrowhead,arrowside:Ku.arrowside,arrowsize:Ku.arrowsize,startarrowsize:Ku.startarrowsize,arrowwidth:Ku.arrowwidth,standoff:Ku.standoff,startstandoff:Ku.startstandoff,hovertext:Ku.hovertext,hoverlabel:Ku.hoverlabel,captureevents:Ku.captureevents}),"calc","from-root")});var Dpe=ye((car,Rpe)=>{"use strict";var IU=Mr(),ypt=Qa(),_pt=Zd(),xpt=kU(),bpt=hI();Rpe.exports=function(t,r,n){_pt(t,r,{name:"annotations",handleItemDefaults:wpt,fullLayout:n.fullLayout})};function wpt(e,t,r,n){function i(s,l){return IU.coerce(e,t,bpt,s,l)}function a(s){var l=s+"axis",u={_fullLayout:{}};return u._fullLayout[l]=r[l],ypt.coercePosition(t,u,i,s,s,.5)}var o=i("visible");o&&(xpt(e,t,n.fullLayout,i),a("x"),a("y"),a("z"),IU.noneOrAll(e,t,["x","y","z"]),t.xref="x",t.yref="y",t.zref="z",i("xanchor"),i("yanchor"),i("xshift"),i("yshift"),t.showarrow&&(t.axref="pixel",t.ayref="pixel",i("ax",-10),i("ay",-30),IU.noneOrAll(e,t,["ax","ay"])))}});var Ope=ye((far,qpe)=>{"use strict";var zpe=Mr(),Fpe=Qa();qpe.exports=function(t){for(var r=t.fullSceneLayout,n=r.annotations,i=0;i{"use strict";function RU(e,t){var r=[0,0,0,0],n,i;for(n=0;n<4;++n)for(i=0;i<4;++i)r[i]+=e[4*n+i]*t[n];return r}function Apt(e,t){var r=RU(e.projection,RU(e.view,RU(e.model,[t[0],t[1],t[2],1])));return r}Bpe.exports=Apt});var Upe=ye((dar,Npe)=>{"use strict";var Spt=fI().drawRaw,Mpt=DU(),Ept=["x","y","z"];Npe.exports=function(t){for(var r=t.fullSceneLayout,n=t.dataScale,i=r.annotations,a=0;a1){s=!0;break}}s?t.fullLayout._infolayer.select(".annotation-"+t.id+'[data-index="'+a+'"]').remove():(o._pdata=Mpt(t.glplot.cameraParams,[r.xaxis.r2l(o.x)*n[0],r.yaxis.r2l(o.y)*n[1],r.zaxis.r2l(o.z)*n[2]]),Spt(t.graphDiv,o,a,t.id,o._xa,o._ya))}}});var Gpe=ye((par,Hpe)=>{"use strict";var kpt=ba(),Vpe=Mr();Hpe.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:hI()}}},layoutAttributes:hI(),handleDefaults:Dpe(),includeBasePlot:Cpt,convert:Ope(),draw:Upe()};function Cpt(e,t){var r=kpt.subplotsRegistry.gl3d;if(r)for(var n=r.attrRegex,i=Object.keys(e),a=0;a{"use strict";var jpe=Nb(),Wpe=Su(),Zpe=Uc().line,Lpt=Ed().dash,Fg=no().extendFlat,Ppt=Vs().templatedArray,gar=PM(),cT=vl(),Ipt=Wo().shapeTexttemplateAttrs,Rpt=b6();Xpe.exports=Ppt("shape",{visible:Fg({},cT.visible,{editType:"calc+arraydraw"}),showlegend:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},legend:Fg({},cT.legend,{editType:"calc+arraydraw"}),legendgroup:Fg({},cT.legendgroup,{editType:"calc+arraydraw"}),legendgrouptitle:{text:Fg({},cT.legendgrouptitle.text,{editType:"calc+arraydraw"}),font:Wpe({editType:"calc+arraydraw"}),editType:"calc+arraydraw"},legendrank:Fg({},cT.legendrank,{editType:"calc+arraydraw"}),legendwidth:Fg({},cT.legendwidth,{editType:"calc+arraydraw"}),type:{valType:"enumerated",values:["circle","rect","path","line"],editType:"calc+arraydraw"},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above",editType:"arraydraw"},xref:Fg({},jpe.xref,{}),xsizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},xanchor:{valType:"any",editType:"calc+arraydraw"},x0:{valType:"any",editType:"calc+arraydraw"},x1:{valType:"any",editType:"calc+arraydraw"},x0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},x1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},yref:Fg({},jpe.yref,{}),ysizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},yanchor:{valType:"any",editType:"calc+arraydraw"},y0:{valType:"any",editType:"calc+arraydraw"},y1:{valType:"any",editType:"calc+arraydraw"},y0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},y1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},path:{valType:"string",editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},line:{color:Fg({},Zpe.color,{editType:"arraydraw"}),width:Fg({},Zpe.width,{editType:"calc+arraydraw"}),dash:Fg({},Lpt,{editType:"arraydraw"}),editType:"calc+arraydraw"},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd",editType:"arraydraw"},editable:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},label:{text:{valType:"string",dflt:"",editType:"arraydraw"},texttemplate:Ipt({},{keys:Object.keys(Rpt)}),font:Wpe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"],editType:"arraydraw"},textangle:{valType:"angle",dflt:"auto",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],editType:"calc+arraydraw"},padding:{valType:"number",dflt:3,min:0,editType:"arraydraw"},editType:"arraydraw"},editType:"arraydraw"})});var Jpe=ye((yar,Kpe)=>{"use strict";var e4=Mr(),fT=Qa(),Dpt=Zd(),zpt=zU(),Ype=h_();Kpe.exports=function(t,r){Dpt(t,r,{name:"shapes",handleItemDefaults:qpt})};function Fpt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}function qpt(e,t,r){function n(W,re){return e4.coerce(e,t,zpt,W,re)}t._isShape=!0;var i=n("visible");if(i){var a=n("showlegend");a&&(n("legend"),n("legendwidth"),n("legendgroup"),n("legendgrouptitle.text"),e4.coerceFont(n,"legendgrouptitle.font"),n("legendrank"));var o=n("path"),s=o?"path":"rect",l=n("type",s),u=l!=="path";u&&delete t.path,n("editable"),n("layer"),n("opacity"),n("fillcolor"),n("fillrule");var c=n("line.width");c&&(n("line.color"),n("line.dash"));for(var f=n("xsizemode"),h=n("ysizemode"),d=["x","y"],v=0;v<2;v++){var x=d[v],b=x+"anchor",p=x==="x"?f:h,E={_fullLayout:r},k,A,L,_=fT.coerceRef(e,t,E,x,void 0,"paper"),C=fT.getRefType(_);if(C==="range"?(k=fT.getFromId(E,_),k._shapeIndices.push(t._index),L=Ype.rangeToShapePosition(k),A=Ype.shapePositionToRange(k),(k.type==="category"||k.type==="multicategory")&&(n(x+"0shift"),n(x+"1shift"))):A=L=e4.identity,u){var M=.25,g=.75,P=x+"0",T=x+"1",F=e[P],q=e[T];e[P]=A(e[P],!0),e[T]=A(e[T],!0),p==="pixel"?(n(P,0),n(T,10)):(fT.coercePosition(t,E,n,_,P,M),fT.coercePosition(t,E,n,_,T,g)),t[P]=L(t[P]),t[T]=L(t[T]),e[P]=F,e[T]=q}if(p==="pixel"){var V=e[b];e[b]=A(e[b],!0),fT.coercePosition(t,E,n,_,b,.25),t[b]=L(t[b]),e[b]=V}}u&&e4.noneOrAll(e,t,["x0","x1","y0","y1"]);var H=l==="line",X,G;if(u&&(X=n("label.texttemplate")),X||(G=n("label.text")),G||X){n("label.textangle");var N=n("label.textposition",H?"middle":"middle center");n("label.xanchor"),n("label.yanchor",Fpt(H,N)),n("label.padding"),e4.coerceFont(n,"label.font",r.font)}}}});var e0e=ye((_ar,Qpe)=>{"use strict";var Opt=va(),$pe=Mr();function Bpt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}Qpe.exports=function(t,r,n){n("newshape.visible"),n("newshape.name"),n("newshape.showlegend"),n("newshape.legend"),n("newshape.legendwidth"),n("newshape.legendgroup"),n("newshape.legendgrouptitle.text"),$pe.coerceFont(n,"newshape.legendgrouptitle.font"),n("newshape.legendrank"),n("newshape.drawdirection"),n("newshape.layer"),n("newshape.fillcolor"),n("newshape.fillrule"),n("newshape.opacity");var i=n("newshape.line.width");if(i){var a=(t||{}).plot_bgcolor||"#FFF";n("newshape.line.color",Opt.contrast(a)),n("newshape.line.dash")}var o=t.dragmode==="drawline",s=n("newshape.label.text"),l=n("newshape.label.texttemplate");if(s||l){n("newshape.label.textangle");var u=n("newshape.label.textposition",o?"middle":"middle center");n("newshape.label.xanchor"),n("newshape.label.yanchor",Bpt(o,u)),n("newshape.label.padding"),$pe.coerceFont(n,"newshape.label.font",r.font)}n("activeshape.fillcolor"),n("activeshape.opacity")}});var a0e=ye((xar,n0e)=>{"use strict";var FU=Mr(),hT=Qa(),dT=cM(),r0e=h_();n0e.exports=function(t){var r=t._fullLayout,n=FU.filterVisible(r.shapes);if(!(!n.length||!t._fullData.length))for(var i=0;i0?u+o:o;return{ppad:o,ppadplus:s?f:h,ppadminus:s?h:f}}else return{ppad:o}}function t0e(e,t,r){var n=e._id.charAt(0)==="x"?"x":"y",i=e.type==="category"||e.type==="multicategory",a,o,s=0,l=0,u=i?e.r2c:e.d2c,c=t[n+"sizemode"]==="scaled";if(c?(a=t[n+"0"],o=t[n+"1"],i&&(s=t[n+"0shift"],l=t[n+"1shift"])):(a=t[n+"anchor"],o=t[n+"anchor"]),a!==void 0)return[u(a)+s,u(o)+l];if(t.path){var f=1/0,h=-1/0,d=t.path.match(dT.segmentRE),v,x,b,p,E;for(e.type==="date"&&(u=r0e.decodeDate(u)),v=0;vh&&(h=E)));if(h>=f)return[f,h]}}});var l0e=ye((bar,s0e)=>{"use strict";var o0e=rP();s0e.exports={moduleType:"component",name:"shapes",layoutAttributes:zU(),supplyLayoutDefaults:Jpe(),supplyDrawNewShapeDefaults:e0e(),includeBasePlot:IM()("shapes"),calcAutorange:a0e(),draw:o0e.draw,drawOne:o0e.drawOne}});var qU=ye((Tar,c0e)=>{"use strict";var u0e=ad(),Vpt=Vs().templatedArray,war=PM();c0e.exports=Vpt("image",{visible:{valType:"boolean",dflt:!0,editType:"arraydraw"},source:{valType:"string",editType:"arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},sizex:{valType:"number",dflt:0,editType:"arraydraw"},sizey:{valType:"number",dflt:0,editType:"arraydraw"},sizing:{valType:"enumerated",values:["fill","contain","stretch"],dflt:"contain",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},x:{valType:"any",dflt:0,editType:"arraydraw"},y:{valType:"any",dflt:0,editType:"arraydraw"},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left",editType:"arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],dflt:"top",editType:"arraydraw"},xref:{valType:"enumerated",values:["paper",u0e.idRegex.x.toString()],dflt:"paper",editType:"arraydraw"},yref:{valType:"enumerated",values:["paper",u0e.idRegex.y.toString()],dflt:"paper",editType:"arraydraw"},editType:"arraydraw"})});var h0e=ye((Aar,f0e)=>{"use strict";var Hpt=Mr(),OU=Qa(),Gpt=Zd(),jpt=qU(),Wpt="images";f0e.exports=function(t,r){var n={name:Wpt,handleItemDefaults:Zpt};Gpt(t,r,n)};function Zpt(e,t,r){function n(h,d){return Hpt.coerce(e,t,jpt,h,d)}var i=n("source"),a=n("visible",!!i);if(!a)return t;n("layer"),n("xanchor"),n("yanchor"),n("sizex"),n("sizey"),n("sizing"),n("opacity");for(var o={_fullLayout:r},s=["x","y"],l=0;l<2;l++){var u=s[l],c=OU.coerceRef(e,t,o,u,"paper",void 0);if(c!=="paper"){var f=OU.getFromId(o,c);f._imgIndices.push(t._index)}OU.coercePosition(t,o,n,c,u,0)}return t}});var g0e=ye((Sar,p0e)=>{"use strict";var d0e=xa(),Xpt=ao(),vT=Qa(),v0e=af(),Ypt=Zp();p0e.exports=function(t){var r=t._fullLayout,n=[],i={},a=[],o,s;for(s=0;s{"use strict";var m0e=uo(),Kpt=u6();y0e.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(a||o){for(var s=t._fullLayout.images,l=r._id.charAt(0),u,c,f=0;f{"use strict";x0e.exports={moduleType:"component",name:"images",layoutAttributes:qU(),supplyLayoutDefaults:h0e(),includeBasePlot:IM()("images"),draw:g0e(),convertCoords:_0e()}});var dI=ye((kar,w0e)=>{"use strict";w0e.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"\u25C4",right:"\u25BA",up:"\u25B2",down:"\u25BC"}}});var BU=ye((Car,A0e)=>{"use strict";var Jpt=Su(),$pt=dh(),Qpt=no().extendFlat,e0t=Bu().overrideAll,t0t=w6(),T0e=Vs().templatedArray,r0t=T0e("button",{visible:{valType:"boolean"},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},args2:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}});A0e.exports=e0t(T0e("updatemenu",{_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:r0t,x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:Qpt(t0t({editType:"arraydraw"}),{}),font:Jpt({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:$pt.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}}),"arraydraw","from-root")});var k0e=ye((Lar,E0e)=>{"use strict";var vI=Mr(),S0e=Zd(),M0e=BU(),i0t=dI(),n0t=i0t.name,a0t=M0e.buttons;E0e.exports=function(t,r){var n={name:n0t,handleItemDefaults:o0t};S0e(t,r,n)};function o0t(e,t,r){function n(o,s){return vI.coerce(e,t,M0e,o,s)}var i=S0e(e,t,{name:"buttons",handleItemDefaults:s0t}),a=n("visible",i.length>0);a&&(n("active"),n("direction"),n("type"),n("showactive"),n("x"),n("y"),vI.noneOrAll(e,t,["x","y"]),n("xanchor"),n("yanchor"),n("pad.t"),n("pad.r"),n("pad.b"),n("pad.l"),vI.coerceFont(n,"font",r.font),n("bgcolor",r.paper_bgcolor),n("bordercolor"),n("borderwidth"))}function s0t(e,t){function r(i,a){return vI.coerce(e,t,a0t,i,a)}var n=r("visible",e.method==="skip"||Array.isArray(e.args));n&&(r("method"),r("args"),r("args2"),r("label"),r("execute"))}});var P0e=ye((Par,L0e)=>{"use strict";L0e.exports=of;var qg=xa(),C0e=va(),pT=ao(),pI=Mr();function of(e,t,r){this.gd=e,this.container=t,this.id=r,this.position=null,this.translateX=null,this.translateY=null,this.hbar=null,this.vbar=null,this.bg=this.container.selectAll("rect.scrollbox-bg").data([0]),this.bg.exit().on(".drag",null).on("wheel",null).remove(),this.bg.enter().append("rect").classed("scrollbox-bg",!0).style("pointer-events","all").attr({opacity:0,x:0,y:0,width:0,height:0})}of.barWidth=2;of.barLength=20;of.barRadius=2;of.barPad=1;of.barColor="#808BA4";of.prototype.enable=function(t,r,n){var i=this.gd._fullLayout,a=i.width,o=i.height;this.position=t;var s=this.position.l,l=this.position.w,u=this.position.t,c=this.position.h,f=this.position.direction,h=f==="down",d=f==="left",v=f==="right",x=f==="up",b=l,p=c,E,k,A,L;!h&&!d&&!v&&!x&&(this.position.direction="down",h=!0);var _=h||x;_?(E=s,k=E+b,h?(A=u,L=Math.min(A+p,o),p=L-A):(L=u+p,A=Math.max(L-p,0),p=L-A)):(A=u,L=A+p,d?(k=s+b,E=Math.max(k-b,0),b=k-E):(E=s,k=Math.min(E+b,a),b=k-E)),this._box={l:E,t:A,w:b,h:p};var C=l>b,M=of.barLength+2*of.barPad,g=of.barWidth+2*of.barPad,P=s,T=u+c;T+g>o&&(T=o-g);var F=this.container.selectAll("rect.scrollbar-horizontal").data(C?[0]:[]);F.exit().on(".drag",null).remove(),F.enter().append("rect").classed("scrollbar-horizontal",!0).call(C0e.fill,of.barColor),C?(this.hbar=F.attr({rx:of.barRadius,ry:of.barRadius,x:P,y:T,width:M,height:g}),this._hbarXMin=P+M/2,this._hbarTranslateMax=b-M):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var q=c>p,V=of.barWidth+2*of.barPad,H=of.barLength+2*of.barPad,X=s+l,G=u;X+V>a&&(X=a-V);var N=this.container.selectAll("rect.scrollbar-vertical").data(q?[0]:[]);N.exit().on(".drag",null).remove(),N.enter().append("rect").classed("scrollbar-vertical",!0).call(C0e.fill,of.barColor),q?(this.vbar=N.attr({rx:of.barRadius,ry:of.barRadius,x:X,y:G,width:V,height:H}),this._vbarYMin=G+H/2,this._vbarTranslateMax=p-H):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var W=this.id,re=E-.5,ae=q?k+V+.5:k+.5,_e=A-.5,Me=C?L+g+.5:L+.5,ke=i._topdefs.selectAll("#"+W).data(C||q?[0]:[]);if(ke.exit().remove(),ke.enter().append("clipPath").attr("id",W).append("rect"),C||q?(this._clipRect=ke.select("rect").attr({x:Math.floor(re),y:Math.floor(_e),width:Math.ceil(ae)-Math.floor(re),height:Math.ceil(Me)-Math.floor(_e)}),this.container.call(pT.setClipUrl,W,this.gd),this.bg.attr({x:s,y:u,width:l,height:c})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(pT.setClipUrl,null),delete this._clipRect),C||q){var ge=qg.behavior.drag().on("dragstart",function(){qg.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(ge);var ie=qg.behavior.drag().on("dragstart",function(){qg.event.sourceEvent.preventDefault(),qg.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));C&&this.hbar.on(".drag",null).call(ie),q&&this.vbar.on(".drag",null).call(ie)}this.setTranslate(r,n)};of.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(pT.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)};of.prototype._onBoxDrag=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t-=qg.event.dx),this.vbar&&(r-=qg.event.dy),this.setTranslate(t,r)};of.prototype._onBoxWheel=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t+=qg.event.deltaY),this.vbar&&(r+=qg.event.deltaY),this.setTranslate(t,r)};of.prototype._onBarDrag=function(){var t=this.translateX,r=this.translateY;if(this.hbar){var n=t+this._hbarXMin,i=n+this._hbarTranslateMax,a=pI.constrain(qg.event.x,n,i),o=(a-n)/(i-n),s=this.position.w-this._box.w;t=o*s}if(this.vbar){var l=r+this._vbarYMin,u=l+this._vbarTranslateMax,c=pI.constrain(qg.event.y,l,u),f=(c-l)/(u-l),h=this.position.h-this._box.h;r=f*h}this.setTranslate(t,r)};of.prototype.setTranslate=function(t,r){var n=this.position.w-this._box.w,i=this.position.h-this._box.h;if(t=pI.constrain(t||0,0,n),r=pI.constrain(r||0,0,i),this.translateX=t,this.translateY=r,this.container.call(pT.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-r),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+r-.5)}),this.hbar){var a=t/n;this.hbar.call(pT.setTranslate,t+a*this._hbarTranslateMax,r)}if(this.vbar){var o=r/i;this.vbar.call(pT.setTranslate,t,r+o*this._vbarTranslateMax)}}});var U0e=ye((Iar,N0e)=>{"use strict";var gT=xa(),t4=Xu(),r4=va(),mT=ao(),e0=Mr(),gI=Pl(),l0t=Vs().arrayEditor,R0e=Nh().LINE_SPACING,Go=dI(),u0t=P0e();N0e.exports=function(t){var r=t._fullLayout,n=e0.filterVisible(r[Go.name]);function i(h){t4.autoMargin(t,O0e(h))}var a=r._menulayer.selectAll("g."+Go.containerClassName).data(n.length>0?[0]:[]);if(a.enter().append("g").classed(Go.containerClassName,!0).style("cursor","pointer"),a.exit().each(function(){gT.select(this).selectAll("g."+Go.headerGroupClassName).each(i)}).remove(),n.length!==0){var o=a.selectAll("g."+Go.headerGroupClassName).data(n,c0t);o.enter().append("g").classed(Go.headerGroupClassName,!0);for(var s=e0.ensureSingle(a,"g",Go.dropdownButtonGroupClassName,function(h){h.style("pointer-events","all")}),l=0;l{"use strict";var m0t=dI();V0e.exports={moduleType:"component",name:m0t.name,layoutAttributes:BU(),supplyLayoutDefaults:k0e(),draw:U0e()}});var n4=ye((Dar,G0e)=>{"use strict";G0e.exports={name:"sliders",containerClassName:"slider-container",groupClassName:"slider-group",inputAreaClass:"slider-input-area",railRectClass:"slider-rail-rect",railTouchRectClass:"slider-rail-touch-rect",gripRectClass:"slider-grip-rect",tickRectClass:"slider-tick-rect",inputProxyClass:"slider-input-proxy",labelsClass:"slider-labels",labelGroupClass:"slider-label-group",labelClass:"slider-label",currentValueClass:"slider-current-value",railHeight:5,menuIndexAttrName:"slider-active-index",autoMarginIdRoot:"slider-",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:"#bec8d9",railBgColor:"#f8fafc",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:"#bec8d9",gripBgColor:"#f6f8fa",gripBgActiveColor:"#dbdde0",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:"#333",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:"#333",minorTickLength:4,currentValuePadding:8,currentValueInset:0}});var HU=ye((zar,Z0e)=>{"use strict";var j0e=Su(),y0t=w6(),_0t=no().extendDeepAll,x0t=Bu().overrideAll,b0t=zS(),W0e=Vs().templatedArray,Jb=n4(),w0t=W0e("step",{visible:{valType:"boolean",dflt:!0},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string"},value:{valType:"string"},execute:{valType:"boolean",dflt:!0}});Z0e.exports=x0t(W0e("slider",{visible:{valType:"boolean",dflt:!0},active:{valType:"number",min:0,dflt:0},steps:w0t,lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number",min:-2,max:3,dflt:0},pad:_0t(y0t({editType:"arraydraw"}),{},{t:{dflt:20}}),xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left"},y:{valType:"number",min:-2,max:3,dflt:0},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},transition:{duration:{valType:"number",min:0,dflt:150},easing:{valType:"enumerated",values:b0t.transition.easing.values,dflt:"cubic-in-out"}},currentvalue:{visible:{valType:"boolean",dflt:!0},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left"},offset:{valType:"number",dflt:10},prefix:{valType:"string"},suffix:{valType:"string"},font:j0e({})},font:j0e({}),activebgcolor:{valType:"color",dflt:Jb.gripBgActiveColor},bgcolor:{valType:"color",dflt:Jb.railBgColor},bordercolor:{valType:"color",dflt:Jb.railBorderColor},borderwidth:{valType:"number",min:0,dflt:Jb.railBorderWidth},ticklen:{valType:"number",min:0,dflt:Jb.tickLength},tickcolor:{valType:"color",dflt:Jb.tickColor},tickwidth:{valType:"number",min:0,dflt:1},minorticklen:{valType:"number",min:0,dflt:Jb.minorTickLength}}),"arraydraw","from-root")});var J0e=ye((Far,K0e)=>{"use strict";var yT=Mr(),X0e=Zd(),Y0e=HU(),T0t=n4(),A0t=T0t.name,S0t=Y0e.steps;K0e.exports=function(t,r){X0e(t,r,{name:A0t,handleItemDefaults:M0t})};function M0t(e,t,r){function n(f,h){return yT.coerce(e,t,Y0e,f,h)}for(var i=X0e(e,t,{name:"steps",handleItemDefaults:E0t}),a=0,o=0;o{"use strict";var Og=xa(),mI=Xu(),x_=va(),Bg=ao(),t0=Mr(),k0t=t0.strTranslate,a4=Pl(),C0t=Vs().arrayEditor,gs=n4(),WU=Nh(),ege=WU.LINE_SPACING,GU=WU.FROM_TL,jU=WU.FROM_BR;oge.exports=function(t){var r=t._context.staticPlot,n=t._fullLayout,i=L0t(n,t),a=n._infolayer.selectAll("g."+gs.containerClassName).data(i.length>0?[0]:[]);a.enter().append("g").classed(gs.containerClassName,!0).style("cursor",r?null:"ew-resize");function o(c){c._commandObserver&&(c._commandObserver.remove(),delete c._commandObserver),mI.autoMargin(t,tge(c))}if(a.exit().each(function(){Og.select(this).selectAll("g."+gs.groupClassName).each(o)}).remove(),i.length!==0){var s=a.selectAll("g."+gs.groupClassName).data(i,P0t);s.enter().append("g").classed(gs.groupClassName,!0),s.exit().each(o).remove();for(var l=0;l0&&(s=s.transition().duration(t.transition.duration).ease(t.transition.easing)),s.attr("transform",k0t(o-gs.gripWidth*.5,t._dims.currentValueTotalHeight))}}function ZU(e,t){var r=e._dims;return r.inputAreaStart+gs.stepInset+(r.inputAreaLength-2*gs.stepInset)*Math.min(1,Math.max(0,t))}function Q0e(e,t){var r=e._dims;return Math.min(1,Math.max(0,(t-gs.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*gs.stepInset-2*r.inputAreaStart)))}function O0t(e,t,r){var n=r._dims,i=t0.ensureSingle(e,"rect",gs.railTouchRectClass,function(a){a.call(nge,t,e,r).style("pointer-events","all")});i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,gs.tickOffset+r.ticklen+n.labelHeight)}).call(x_.fill,r.bgcolor).attr("opacity",0),Bg.setTranslate(i,0,n.currentValueTotalHeight)}function B0t(e,t){var r=t._dims,n=r.inputAreaLength-gs.railInset*2,i=t0.ensureSingle(e,"rect",gs.railRectClass);i.attr({width:n,height:gs.railWidth,rx:gs.railRadius,ry:gs.railRadius,"shape-rendering":"crispEdges"}).call(x_.stroke,t.bordercolor).call(x_.fill,t.bgcolor).style("stroke-width",t.borderwidth+"px"),Bg.setTranslate(i,gs.railInset,(r.inputAreaWidth-gs.railWidth)*.5+r.currentValueTotalHeight)}});var uge=ye((Oar,lge)=>{"use strict";var N0t=n4();lge.exports={moduleType:"component",name:N0t.name,layoutAttributes:HU(),supplyLayoutDefaults:J0e(),draw:sge()}});var _I=ye((Bar,fge)=>{"use strict";var cge=dh();fge.exports={bgcolor:{valType:"color",dflt:cge.background,editType:"plot"},bordercolor:{valType:"color",dflt:cge.defaultLine,editType:"plot"},borderwidth:{valType:"integer",dflt:0,min:0,editType:"plot"},autorange:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},range:{valType:"info_array",items:[{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}}],editType:"calc",impliedEdits:{autorange:!1}},thickness:{valType:"number",dflt:.15,min:0,max:1,editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"}});var XU=ye((Nar,hge)=>{"use strict";hge.exports={_isSubplotObj:!0,rangemode:{valType:"enumerated",values:["auto","fixed","match"],dflt:"match",editType:"calc"},range:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},editType:"calc"}});var xI=ye((Uar,dge)=>{"use strict";dge.exports={name:"rangeslider",containerClassName:"rangeslider-container",bgClassName:"rangeslider-bg",rangePlotClassName:"rangeslider-rangeplot",maskMinClassName:"rangeslider-mask-min",maskMaxClassName:"rangeslider-mask-max",slideBoxClassName:"rangeslider-slidebox",grabberMinClassName:"rangeslider-grabber-min",grabAreaMinClassName:"rangeslider-grabarea-min",handleMinClassName:"rangeslider-handle-min",grabberMaxClassName:"rangeslider-grabber-max",grabAreaMaxClassName:"rangeslider-grabarea-max",handleMaxClassName:"rangeslider-handle-max",maskMinOppAxisClassName:"rangeslider-mask-min-opp-axis",maskMaxOppAxisClassName:"rangeslider-mask-max-opp-axis",maskColor:"rgba(0,0,0,0.4)",maskOppAxisColor:"rgba(0,0,0,0.2)",slideBoxFill:"transparent",slideBoxCursor:"ew-resize",grabAreaFill:"transparent",grabAreaCursor:"col-resize",grabAreaWidth:10,handleWidth:4,handleRadius:1,handleStrokeWidth:1,extraPad:15}});var gge=ye(wI=>{"use strict";var U0t=af(),V0t=Pl(),vge=xI(),H0t=Nh().LINE_SPACING,bI=vge.name;function pge(e){var t=e&&e[bI];return t&&t.visible}wI.isVisible=pge;wI.makeData=function(e){for(var t=U0t.list({_fullLayout:e},"x",!0),r=e.margin,n=[],i=0;i{"use strict";var TI=Mr(),mge=Vs(),yge=af(),G0t=_I(),j0t=XU();_ge.exports=function(t,r,n){var i=t[n],a=r[n];if(!(i.rangeslider||r._requestRangeslider[a._id]))return;TI.isPlainObject(i.rangeslider)||(i.rangeslider={});var o=i.rangeslider,s=mge.newContainer(a,"rangeslider");function l(L,_){return TI.coerce(o,s,G0t,L,_)}var u,c;function f(L,_){return TI.coerce(u,c,j0t,L,_)}var h=l("visible");if(h){l("bgcolor",r.plot_bgcolor),l("bordercolor"),l("borderwidth"),l("thickness"),l("autorange",!a.isValidRange(o.range)),l("range");var d=r._subplots;if(d)for(var v=d.cartesian.filter(function(L){return L.substr(0,L.indexOf("y"))===yge.name2id(n)}).map(function(L){return L.substr(L.indexOf("y"),L.length)}),x=TI.simpleMap(v,yge.id2name),b=0;b{"use strict";var W0t=af().list,Z0t=wg().getAutoRange,X0t=xI();bge.exports=function(t){for(var r=W0t(t,"x",!0),n=0;n{"use strict";var AI=xa(),Y0t=ba(),K0t=Xu(),Ff=Mr(),SI=Ff.strTranslate,Age=ao(),b_=va(),J0t=Mb(),$0t=Jf(),YU=af(),Q0t=gv(),egt=Tg(),Bs=xI();Sge.exports=function(e){for(var t=e._fullLayout,r=t._rangeSliderData,n=0;n=N.max)X=T[G+1];else if(H=N.pmax)X=T[G+1];else if(H0?e.touches[0].clientX:0}function tgt(e,t,r,n){if(t._context.staticPlot)return;var i=e.select("rect."+Bs.slideBoxClassName).node(),a=e.select("rect."+Bs.grabAreaMinClassName).node(),o=e.select("rect."+Bs.grabAreaMaxClassName).node();function s(){var l=AI.event,u=l.target,c=Tge(l),f=c-e.node().getBoundingClientRect().left,h=n.d2p(r._rl[0]),d=n.d2p(r._rl[1]),v=Q0t.coverSlip();this.addEventListener("touchmove",x),this.addEventListener("touchend",b),v.addEventListener("mousemove",x),v.addEventListener("mouseup",b);function x(p){var E=Tge(p),k=+E-c,A,L,_;switch(u){case i:if(_="ew-resize",h+k>r._length||d+k<0)return;A=h+k,L=d+k;break;case a:if(_="col-resize",h+k>r._length)return;A=h+k,L=d;break;case o:if(_="col-resize",d+k<0)return;A=h,L=d+k;break;default:_="ew-resize",A=f,L=f+k;break}if(L{"use strict";var fgt=Mr(),hgt=_I(),dgt=XU(),KU=gge();Ege.exports={moduleType:"component",name:"rangeslider",schema:{subplots:{xaxis:{rangeslider:fgt.extendFlat({},hgt,{yaxis:dgt})}}},layoutAttributes:_I(),handleDefaults:xge(),calcAutorange:wge(),draw:Mge(),isVisible:KU.isVisible,makeData:KU.makeData,autoMarginOpts:KU.autoMarginOpts}});var MI=ye((Zar,Lge)=>{"use strict";var vgt=Su(),Cge=dh(),pgt=Vs().templatedArray,ggt=pgt("button",{visible:{valType:"boolean",dflt:!0,editType:"plot"},step:{valType:"enumerated",values:["month","year","day","hour","minute","second","all"],dflt:"month",editType:"plot"},stepmode:{valType:"enumerated",values:["backward","todate"],dflt:"backward",editType:"plot"},count:{valType:"number",min:0,dflt:1,editType:"plot"},label:{valType:"string",editType:"plot"},editType:"plot"});Lge.exports={visible:{valType:"boolean",editType:"plot"},buttons:ggt,x:{valType:"number",min:-2,max:3,editType:"plot"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"plot"},y:{valType:"number",min:-2,max:3,editType:"plot"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"bottom",editType:"plot"},font:vgt({editType:"plot"}),bgcolor:{valType:"color",dflt:Cge.lightLine,editType:"plot"},activecolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:Cge.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"}});var JU=ye((Xar,Pge)=>{"use strict";Pge.exports={yPad:.02,minButtonWidth:30,rx:3,ry:3,lightAmount:25,darkAmount:10}});var Dge=ye((Yar,Rge)=>{"use strict";var EI=Mr(),mgt=va(),ygt=Vs(),_gt=Zd(),Ige=MI(),$U=JU();Rge.exports=function(t,r,n,i,a){var o=t.rangeselector||{},s=ygt.newContainer(r,"rangeselector");function l(d,v){return EI.coerce(o,s,Ige,d,v)}var u=_gt(o,s,{name:"buttons",handleItemDefaults:xgt,calendar:a}),c=l("visible",u.length>0);if(c){var f=bgt(r,n,i);l("x",f[0]),l("y",f[1]),EI.noneOrAll(t,r,["x","y"]),l("xanchor"),l("yanchor"),EI.coerceFont(l,"font",n.font);var h=l("bgcolor");l("activecolor",mgt.contrast(h,$U.lightAmount,$U.darkAmount)),l("bordercolor"),l("borderwidth")}};function xgt(e,t,r,n){var i=n.calendar;function a(l,u){return EI.coerce(e,t,Ige.buttons,l,u)}var o=a("visible");if(o){var s=a("step");s!=="all"&&(i&&i!=="gregorian"&&(s==="month"||s==="year")?t.stepmode="backward":a("stepmode"),a("count")),a("label")}}function bgt(e,t,r){for(var n=r.filter(function(s){return t[s].anchor===e._id}),i=0,a=0;a{"use strict";var wgt=dq(),Tgt=Mr().titleCase;zge.exports=function(t,r){var n=t._name,i={};if(r.step==="all")i[n+".autorange"]=!0;else{var a=Agt(t,r);i[n+".range[0]"]=a[0],i[n+".range[1]"]=a[1]}return i};function Agt(e,t){var r=e.range,n=new Date(e.r2l(r[1])),i=t.step,a=wgt["utc"+Tgt(i)],o=t.count,s;switch(t.stepmode){case"backward":s=e.l2r(+a.offset(n,-o));break;case"todate":var l=a.offset(n,-o);s=e.l2r(+a.ceil(l));break}var u=r[1];return[s,u]}});var Gge=ye((Jar,Hge)=>{"use strict";var CI=xa(),Sgt=ba(),Mgt=Xu(),qge=va(),Vge=ao(),Iy=Mr(),Oge=Iy.strTranslate,kI=Pl(),Egt=af(),tV=Nh(),Bge=tV.LINE_SPACING,Nge=tV.FROM_TL,Uge=tV.FROM_BR,eV=JU(),kgt=Fge();Hge.exports=function(t){var r=t._fullLayout,n=r._infolayer.selectAll(".rangeselector").data(Cgt(t),Lgt);n.enter().append("g").classed("rangeselector",!0),n.exit().remove(),n.style({cursor:"pointer","pointer-events":"all"}),n.each(function(i){var a=CI.select(this),o=i,s=o.rangeselector,l=a.selectAll("g.button").data(Iy.filterVisible(s.buttons));l.enter().append("g").classed("button",!0),l.exit().remove(),l.each(function(u){var c=CI.select(this),f=kgt(o,u);u._isActive=Pgt(o,u,f),c.call(QU,s,u),c.call(Rgt,s,u,t),c.on("click",function(){t._dragged||Sgt.call("_guiRelayout",t,f)}),c.on("mouseover",function(){u._isHovered=!0,c.call(QU,s,u)}),c.on("mouseout",function(){u._isHovered=!1,c.call(QU,s,u)})}),zgt(t,l,s,o._name,a)})};function Cgt(e){for(var t=Egt.list(e,"x",!0),r=[],n=0;n{"use strict";jge.exports={moduleType:"component",name:"rangeselector",schema:{subplots:{xaxis:{rangeselector:MI()}}},layoutAttributes:MI(),handleDefaults:Dge(),draw:Gge()}});var Ju=ye(rV=>{"use strict";var Zge=no().extendFlat;rV.attributes=function(e,t){e=e||{},t=t||{};var r={valType:"info_array",editType:e.editType,items:[{valType:"number",min:0,max:1,editType:e.editType},{valType:"number",min:0,max:1,editType:e.editType}],dflt:[0,1]},n=e.name?e.name+" ":"",i=e.trace?"trace ":"subplot ",a=t.description?" "+t.description:"",o={x:Zge({},r,{}),y:Zge({},r,{}),editType:e.editType};return e.noGridCell||(o.row={valType:"integer",min:0,dflt:0,editType:e.editType},o.column={valType:"integer",min:0,dflt:0,editType:e.editType}),o};rV.defaults=function(e,t,r,n){var i=n&&n.x||[0,1],a=n&&n.y||[0,1],o=t.grid;if(o){var s=r("domain.column");s!==void 0&&(s{"use strict";var Fgt=Mr(),qgt=n3().counter,Ogt=Ju().attributes,Xge=ad().idRegex,Bgt=Vs(),iV={rows:{valType:"integer",min:1,editType:"plot"},roworder:{valType:"enumerated",values:["top to bottom","bottom to top"],dflt:"top to bottom",editType:"plot"},columns:{valType:"integer",min:1,editType:"plot"},subplots:{valType:"info_array",freeLength:!0,dimensions:2,items:{valType:"enumerated",values:[qgt("xy").toString(),""],editType:"plot"},editType:"plot"},xaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[Xge.x.toString(),""],editType:"plot"},editType:"plot"},yaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[Xge.y.toString(),""],editType:"plot"},editType:"plot"},pattern:{valType:"enumerated",values:["independent","coupled"],dflt:"coupled",editType:"plot"},xgap:{valType:"number",min:0,max:1,editType:"plot"},ygap:{valType:"number",min:0,max:1,editType:"plot"},domain:Ogt({name:"grid",editType:"plot",noGridCell:!0},{}),xside:{valType:"enumerated",values:["bottom","bottom plot","top plot","top"],dflt:"bottom plot",editType:"plot"},yside:{valType:"enumerated",values:["left","left plot","right plot","right"],dflt:"left plot",editType:"plot"},editType:"plot"};function LI(e,t,r){var n=t[r+"axes"],i=Object.keys((e._splomAxes||{})[r]||{});if(Array.isArray(n))return n;if(i.length)return i}function Ngt(e,t){var r=e.grid||{},n=LI(t,r,"x"),i=LI(t,r,"y");if(!e.grid&&!n&&!i)return;var a=Array.isArray(r.subplots)&&Array.isArray(r.subplots[0]),o=Array.isArray(n),s=Array.isArray(i),l=o&&n!==r.xaxes&&s&&i!==r.yaxes,u,c;a?(u=r.subplots.length,c=r.subplots[0].length):(s&&(u=i.length),o&&(c=n.length));var f=Bgt.newContainer(t,"grid");function h(_,C){return Fgt.coerce(r,f,iV,_,C)}var d=h("rows",u),v=h("columns",c);if(!(d*v>1)){delete t.grid;return}if(!a&&!o&&!s){var x=h("pattern")==="independent";x&&(a=!0)}f._hasSubplotGrid=a;var b=h("roworder"),p=b==="top to bottom",E=a?.2:.1,k=a?.3:.1,A,L;l&&t._splomGridDflt&&(A=t._splomGridDflt.xside,L=t._splomGridDflt.yside),f._domains={x:Yge("x",h,E,A,v),y:Yge("y",h,k,L,d,p)}}function Yge(e,t,r,n,i,a){var o=t(e+"gap",r),s=t("domain."+e);t(e+"side",n);for(var l=new Array(i),u=s[0],c=(s[1]-u)/(i-o),f=c*(1-o),h=0;h{"use strict";$ge.exports={visible:{valType:"boolean",editType:"calc"},type:{valType:"enumerated",values:["percent","constant","sqrt","data"],editType:"calc"},symmetric:{valType:"boolean",editType:"calc"},array:{valType:"data_array",editType:"calc"},arrayminus:{valType:"data_array",editType:"calc"},value:{valType:"number",min:0,dflt:10,editType:"calc"},valueminus:{valType:"number",min:0,dflt:10,editType:"calc"},traceref:{valType:"integer",min:0,dflt:0,editType:"style"},tracerefminus:{valType:"integer",min:0,dflt:0,editType:"style"},copy_ystyle:{valType:"boolean",editType:"plot"},copy_zstyle:{valType:"boolean",editType:"style"},color:{valType:"color",editType:"style"},thickness:{valType:"number",min:0,dflt:2,editType:"style"},width:{valType:"number",min:0,editType:"plot"},editType:"calc"}});var tme=ye((ror,eme)=>{"use strict";var Qge=uo(),Vgt=ba(),Hgt=Mr(),Ggt=Vs(),jgt=aV();eme.exports=function(e,t,r,n){var i="error_"+n.axis,a=Ggt.newContainer(t,i),o=e[i]||{};function s(v,x){return Hgt.coerce(o,a,jgt,v,x)}var l=o.array!==void 0||o.value!==void 0||o.type==="sqrt",u=s("visible",l);if(u!==!1){var c=s("type","array"in o?"data":"percent"),f=!0;c!=="sqrt"&&(f=s("symmetric",!((c==="data"?"arrayminus":"valueminus")in o))),c==="data"?(s("array"),s("traceref"),f||(s("arrayminus"),s("tracerefminus"))):(c==="percent"||c==="constant")&&(s("value"),f||s("valueminus"));var h="copy_"+n.inherit+"style";if(n.inherit){var d=t["error_"+n.inherit];(d||{}).visible&&s(h,!(o.color||Qge(o.thickness)||Qge(o.width)))}(!n.inherit||!a[h])&&(s("color",r),s("thickness"),s("width",Vgt.traceIs(t,"gl3d")?0:4))}}});var oV=ye((ior,ime)=>{"use strict";ime.exports=function(t){var r=t.type,n=t.symmetric;if(r==="data"){var i=t.array||[];if(n)return function(u,c){var f=+i[c];return[f,f]};var a=t.arrayminus||[];return function(u,c){var f=+i[c],h=+a[c];return!isNaN(f)||!isNaN(h)?[h||0,f||0]:[NaN,NaN]}}else{var o=rme(r,t.value),s=rme(r,t.valueminus);return n||t.valueminus===void 0?function(u){var c=o(u);return[c,c]}:function(u){return[s(u),o(u)]}}};function rme(e,t){if(e==="percent")return function(r){return Math.abs(r*t/100)};if(e==="constant")return function(){return Math.abs(t)};if(e==="sqrt")return function(r){return Math.sqrt(Math.abs(r))}}});var ome=ye((nor,ame)=>{"use strict";var sV=uo(),Wgt=ba(),lV=Qa(),Zgt=Mr(),Xgt=oV();ame.exports=function(t){for(var r=t.calcdata,n=0;n{"use strict";var sme=xa(),w_=uo(),Ygt=ao(),Kgt=lu();lme.exports=function(t,r,n,i){var a,o=n.xaxis,s=n.yaxis,l=i&&i.duration>0,u=t._context.staticPlot;r.each(function(c){var f=c[0].trace,h=f.error_x||{},d=f.error_y||{},v;f.ids&&(v=function(E){return E.id});var x=Kgt.hasMarkers(f)&&f.marker.maxdisplayed>0;!d.visible&&!h.visible&&(c=[]);var b=sme.select(this).selectAll("g.errorbar").data(c,v);if(b.exit().remove(),!!c.length){h.visible||b.selectAll("path.xerror").remove(),d.visible||b.selectAll("path.yerror").remove(),b.style("opacity",1);var p=b.enter().append("g").classed("errorbar",!0);l&&p.style("opacity",0).transition().duration(i.duration).style("opacity",1),Ygt.setClipUrl(b,n.layerClipId,t),b.each(function(E){var k=sme.select(this),A=Jgt(E,o,s);if(!(x&&!E.vis)){var L,_=k.select("path.yerror");if(d.visible&&w_(A.x)&&w_(A.yh)&&w_(A.ys)){var C=d.width;L="M"+(A.x-C)+","+A.yh+"h"+2*C+"m-"+C+",0V"+A.ys,A.noYS||(L+="m-"+C+",0h"+2*C),a=!_.size(),a?_=k.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("yerror",!0):l&&(_=_.transition().duration(i.duration).ease(i.easing)),_.attr("d",L)}else _.remove();var M=k.select("path.xerror");if(h.visible&&w_(A.y)&&w_(A.xh)&&w_(A.xs)){var g=(h.copy_ystyle?d:h).width;L="M"+A.xh+","+(A.y-g)+"v"+2*g+"m0,-"+g+"H"+A.xs,A.noXS||(L+="m0,-"+g+"v"+2*g),a=!M.size(),a?M=k.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("xerror",!0):l&&(M=M.transition().duration(i.duration).ease(i.easing)),M.attr("d",L)}else M.remove()}})}})};function Jgt(e,t,r){var n={x:t.c2p(e.x),y:r.c2p(e.y)};return e.yh!==void 0&&(n.yh=r.c2p(e.yh),n.ys=r.c2p(e.ys),w_(n.ys)||(n.noYS=!0,n.ys=r.c2p(e.ys,!0))),e.xh!==void 0&&(n.xh=t.c2p(e.xh),n.xs=t.c2p(e.xs),w_(n.xs)||(n.noXS=!0,n.xs=t.c2p(e.xs,!0))),n}});var hme=ye((oor,fme)=>{"use strict";var $gt=xa(),cme=va();fme.exports=function(t){t.each(function(r){var n=r[0].trace,i=n.error_y||{},a=n.error_x||{},o=$gt.select(this);o.selectAll("path.yerror").style("stroke-width",i.thickness+"px").call(cme.stroke,i.color),a.copy_ystyle&&(a=i),o.selectAll("path.xerror").style("stroke-width",a.thickness+"px").call(cme.stroke,a.color)})}});var pme=ye((sor,vme)=>{"use strict";var o4=Mr(),dme=Bu().overrideAll,s4=aV(),$b={error_x:o4.extendFlat({},s4),error_y:o4.extendFlat({},s4)};delete $b.error_x.copy_zstyle;delete $b.error_y.copy_zstyle;delete $b.error_y.copy_ystyle;var l4={error_x:o4.extendFlat({},s4),error_y:o4.extendFlat({},s4),error_z:o4.extendFlat({},s4)};delete l4.error_x.copy_ystyle;delete l4.error_y.copy_ystyle;delete l4.error_z.copy_ystyle;delete l4.error_z.copy_zstyle;vme.exports={moduleType:"component",name:"errorbars",schema:{traces:{scatter:$b,bar:$b,histogram:$b,scatter3d:dme(l4,"calc","nested"),scattergl:dme($b,"calc","nested")}},supplyDefaults:tme(),calc:ome(),makeComputeError:oV(),plot:ume(),style:hme(),hoverInfo:Qgt};function Qgt(e,t,r){(t.error_y||{}).visible&&(r.yerr=e.yh-e.y,t.error_y.symmetric||(r.yerrneg=e.y-e.ys)),(t.error_x||{}).visible&&(r.xerr=e.xh-e.x,t.error_x.symmetric||(r.xerrneg=e.x-e.xs))}});var mme=ye((lor,gme)=>{"use strict";gme.exports={cn:{colorbar:"colorbar",cbbg:"cbbg",cbfill:"cbfill",cbfills:"cbfills",cbline:"cbline",cblines:"cblines",cbaxis:"cbaxis",cbtitleunshift:"cbtitleunshift",cbtitle:"cbtitle",cboutline:"cboutline",crisp:"crisp",jsPlaceholder:"js-placeholder"}}});var Ame=ye((uor,Tme)=>{"use strict";var T_=xa(),uV=id(),II=Xu(),yme=ba(),Ry=Qa(),PI=gv(),B0=Mr(),Ug=B0.strTranslate,wme=no().extendFlat,cV=Tg(),Ng=ao(),fV=va(),emt=Mb(),tmt=Pl(),rmt=Dv().flipScale,imt=JM(),nmt=iI(),amt=Cd(),hV=Nh(),_me=hV.LINE_SPACING,xme=hV.FROM_TL,bme=hV.FROM_BR,Vc=mme().cn;function omt(e){var t=e._fullLayout,r=t._infolayer.selectAll("g."+Vc.colorbar).data(smt(e),function(n){return n._id});r.enter().append("g").attr("class",function(n){return n._id}).classed(Vc.colorbar,!0),r.each(function(n){var i=T_.select(this);B0.ensureSingle(i,"rect",Vc.cbbg),B0.ensureSingle(i,"g",Vc.cbfills),B0.ensureSingle(i,"g",Vc.cblines),B0.ensureSingle(i,"g",Vc.cbaxis,function(o){o.classed(Vc.crisp,!0)}),B0.ensureSingle(i,"g",Vc.cbtitleunshift,function(o){o.append("g").classed(Vc.cbtitle,!0)}),B0.ensureSingle(i,"rect",Vc.cboutline);var a=lmt(i,n,e);a&&a.then&&(e._promises||[]).push(a),e._context.edits.colorbarPosition&&umt(i,n,e)}),r.exit().each(function(n){II.autoMargin(e,n._id)}).remove(),r.order()}function smt(e){var t=e._fullLayout,r=e.calcdata,n=[],i,a,o,s;function l(k){return wme(k,{_fillcolor:null,_line:{color:null,width:null,dash:null},_levels:{start:null,end:null,size:null},_filllevels:null,_fillgradient:null,_zrange:null})}function u(){typeof s.calc=="function"?s.calc(e,o,i):(i._fillgradient=a.reversescale?rmt(a.colorscale):a.colorscale,i._zrange=[a[s.min],a[s.max]])}for(var c=0;c1){var Re=Math.pow(10,Math.floor(Math.log(me)/Math.LN10));ze*=Re*B0.roundUp(me/Re,[2,5,10]),(Math.abs(F.start)/F.size+1e-6)%1<2e-6&&(Ee.tick0=0)}Ee.dtick=ze}Ee.domain=n?[ie+v/A.h,ie+W-v/A.h]:[ie+d/A.w,ie+W-d/A.w],Ee.setScale(),e.attr("transform",Ug(Math.round(A.l),Math.round(A.t)));var ce=e.select("."+Vc.cbtitleunshift).attr("transform",Ug(-Math.round(A.l),-Math.round(A.t))),Ge=Ee.ticklabelposition,nt=Ee.title.font.size,ct=e.select("."+Vc.cbaxis),qt,rt=0,ot=0;function Rt(er,Ke){var xt={propContainer:Ee,propName:t._propPrefix+"title",traceIndex:t._traceIndex,_meta:t._meta,placeholder:k._dfltTitle.colorbar,containerGroup:e.select("."+Vc.cbtitle)},bt=er.charAt(0)==="h"?er.substr(1):"h"+er;e.selectAll("."+bt+",."+bt+"-math-group").remove(),emt.draw(r,er,wme(xt,Ke||{}))}function kt(){if(n&&Ae||!n&&!Ae){var er,Ke;M==="top"&&(er=d+A.l+re*x,Ke=v+A.t+ae*(1-ie-W)+3+nt*.75),M==="bottom"&&(er=d+A.l+re*x,Ke=v+A.t+ae*(1-ie)-3-nt*.25),M==="right"&&(Ke=v+A.t+ae*b+3+nt*.75,er=d+A.l+re*ie),Rt(Ee._id+"title",{attributes:{x:er,y:Ke,"text-anchor":n?"start":"middle"}})}}function Ct(){if(n&&!Ae||!n&&Ae){var er=Ee.position||0,Ke=Ee._offset+Ee._length/2,xt,bt;if(M==="right")bt=Ke,xt=A.l+re*er+10+nt*(Ee.showticklabels?1:.5);else if(xt=Ke,M==="bottom"&&(bt=A.t+ae*er+10+(Ge.indexOf("inside")===-1?Ee.tickfont.size:0)+(Ee.ticks!=="intside"&&t.ticklen||0)),M==="top"){var Lt=C.text.split("
").length;bt=A.t+ae*er+10-X-_me*nt*Lt}Rt((n?"h":"v")+Ee._id+"title",{avoid:{selection:T_.select(r).selectAll("g."+Ee._id+"tick"),side:M,offsetTop:n?0:A.t,offsetLeft:n?A.l:0,maxShift:n?k.width:k.height},attributes:{x:xt,y:bt,"text-anchor":"middle"},transform:{rotate:n?-90:0,offset:0}})}}function Yt(){if(!n&&!Ae||n&&Ae){var er=e.select("."+Vc.cbtitle),Ke=er.select("text"),xt=[-l/2,l/2],bt=er.select(".h"+Ee._id+"title-math-group").node(),Lt=15.6;Ke.node()&&(Lt=parseInt(Ke.node().style.fontSize,10)*_me);var St;if(bt?(St=Ng.bBox(bt),ot=St.width,rt=St.height,rt>Lt&&(xt[1]-=(rt-Lt)/2)):Ke.node()&&!Ke.classed(Vc.jsPlaceholder)&&(St=Ng.bBox(Ke.node()),ot=St.width,rt=St.height),n){if(rt){if(rt+=5,M==="top")Ee.domain[1]-=rt/A.h,xt[1]*=-1;else{Ee.domain[0]+=rt/A.h;var Et=tmt.lineCount(Ke);xt[1]+=(1-Et)*Lt}er.attr("transform",Ug(xt[0],xt[1])),Ee.setScale()}}else ot&&(M==="right"&&(Ee.domain[0]+=(ot+nt/2)/A.w),er.attr("transform",Ug(xt[0],xt[1])),Ee.setScale())}e.selectAll("."+Vc.cbfills+",."+Vc.cblines).attr("transform",n?Ug(0,Math.round(A.h*(1-Ee.domain[1]))):Ug(Math.round(A.w*Ee.domain[0]),0)),ct.attr("transform",n?Ug(0,Math.round(-A.t)):Ug(Math.round(-A.l),0));var dt=e.select("."+Vc.cbfills).selectAll("rect."+Vc.cbfill).attr("style","").data(V);dt.enter().append("rect").classed(Vc.cbfill,!0).attr("style",""),dt.exit().remove();var Ht=g.map(Ee.c2p).map(Math.round).sort(function(Or,Nr){return Or-Nr});dt.each(function(Or,Nr){var ut=[Nr===0?g[0]:(V[Nr]+V[Nr-1])/2,Nr===V.length-1?g[1]:(V[Nr]+V[Nr+1])/2].map(Ee.c2p).map(Math.round);n&&(ut[1]=B0.constrain(ut[1]+(ut[1]>ut[0])?1:-1,Ht[0],Ht[1]));var Ne=T_.select(this).attr(n?"x":"y",_e).attr(n?"y":"x",T_.min(ut)).attr(n?"width":"height",Math.max(X,2)).attr(n?"height":"width",Math.max(T_.max(ut)-T_.min(ut),2));if(t._fillgradient)Ng.gradient(Ne,r,t._id,n?"vertical":"horizontalreversed",t._fillgradient,"fill");else{var Ye=T(Or).replace("e-","");Ne.attr("fill",uV(Ye).toHexString())}});var $t=e.select("."+Vc.cblines).selectAll("path."+Vc.cbline).data(_.color&&_.width?H:[]);$t.enter().append("path").classed(Vc.cbline,!0),$t.exit().remove(),$t.each(function(Or){var Nr=_e,ut=Math.round(Ee.c2p(Or))+_.width/2%1;T_.select(this).attr("d","M"+(n?Nr+","+ut:ut+","+Nr)+(n?"h":"v")+X).call(Ng.lineGroupStyle,_.width,P(Or),_.dash)}),ct.selectAll("g."+Ee._id+"tick,path").remove();var fr=_e+X+(l||0)/2-(t.ticks==="outside"?1:0),_r=Ry.calcTicks(Ee),Br=Ry.getTickSigns(Ee)[2];return Ry.drawTicks(r,Ee,{vals:Ee.ticks==="inside"?Ry.clipEnds(Ee,_r):_r,layer:ct,path:Ry.makeTickPath(Ee,fr,Br),transFn:Ry.makeTransTickFn(Ee)}),Ry.drawLabels(r,Ee,{vals:_r,layer:ct,transFn:Ry.makeTransTickLabelFn(Ee),labelFns:Ry.makeLabelFns(Ee,fr)})}function xr(){var er,Ke=X+l/2;Ge.indexOf("inside")===-1&&(er=Ng.bBox(ct.node()),Ke+=n?er.width:er.height),qt=ce.select("text");var xt=0,bt=n&&M==="top",Lt=!n&&M==="right",St=0;if(qt.node()&&!qt.classed(Vc.jsPlaceholder)){var Et,dt=ce.select(".h"+Ee._id+"title-math-group").node();dt&&(n&&Ae||!n&&!Ae)?(er=Ng.bBox(dt),xt=er.width,Et=er.height):(er=Ng.bBox(ce.node()),xt=er.right-A.l-(n?_e:Te),Et=er.bottom-A.t-(n?Te:_e),!n&&M==="top"&&(Ke+=er.height,St=er.height)),Lt&&(qt.attr("transform",Ug(xt/2+nt/2,0)),xt*=2),Ke=Math.max(Ke,n?xt:Et)}var Ht=(n?d:v)*2+Ke+u+l/2,$t=0;!n&&C.text&&h==="bottom"&&b<=0&&($t=Ht/2,Ht+=$t,St+=$t),k._hColorbarMoveTitle=$t,k._hColorbarMoveCBTitle=St;var fr=u+l,_r=(n?_e:Te)-fr/2-(n?d:0),Br=(n?Te:_e)-(n?N:v+St-$t);e.select("."+Vc.cbbg).attr("x",_r).attr("y",Br).attr(n?"width":"height",Math.max(Ht-$t,2)).attr(n?"height":"width",Math.max(N+fr,2)).call(fV.fill,c).call(fV.stroke,t.bordercolor).style("stroke-width",u);var Or=Lt?Math.max(xt-10,0):0;e.selectAll("."+Vc.cboutline).attr("x",(n?_e:Te+d)+Or).attr("y",(n?Te+v-N:_e)+(bt?rt:0)).attr(n?"width":"height",Math.max(X,2)).attr(n?"height":"width",Math.max(N-(n?2*v+rt:2*d+Or),2)).call(fV.stroke,t.outlinecolor).style({fill:"none","stroke-width":l});var Nr=n?Me*Ht:0,ut=n?0:(1-ke)*Ht-St;if(Nr=E?A.l-Nr:-Nr,ut=p?A.t-ut:-ut,e.attr("transform",Ug(Nr,ut)),!n&&(u||uV(c).getAlpha()&&!uV.equals(k.paper_bgcolor,c))){var Ne=ct.selectAll("text"),Ye=Ne[0].length,Ve=e.select("."+Vc.cbbg).node(),Xe=Ng.bBox(Ve),ht=Ng.getTranslate(e),Le=2;Ne.each(function(ri,bi){var nn=0,Wi=Ye-1;if(bi===nn||bi===Wi){var Ni=Ng.bBox(this),_n=Ng.getTranslate(this),$i;if(bi===Wi){var zn=Ni.right+_n.x,Wn=Xe.right+ht.x+Te-u-Le+x;$i=Wn-zn,$i>0&&($i=0)}else if(bi===nn){var It=Ni.left+_n.x,ft=Xe.left+ht.x+Te+u+Le;$i=ft-It,$i<0&&($i=0)}$i&&(Ye<3?this.setAttribute("transform","translate("+$i+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}})}var xe={},Se=xme[f],lt=bme[f],Gt=xme[h],Vt=bme[h],ar=Ht-X;n?(a==="pixels"?(xe.y=b,xe.t=N*Gt,xe.b=N*Vt):(xe.t=xe.b=0,xe.yt=b+i*Gt,xe.yb=b-i*Vt),s==="pixels"?(xe.x=x,xe.l=Ht*Se,xe.r=Ht*lt):(xe.l=ar*Se,xe.r=ar*lt,xe.xl=x-o*Se,xe.xr=x+o*lt)):(a==="pixels"?(xe.x=x,xe.l=N*Se,xe.r=N*lt):(xe.l=xe.r=0,xe.xl=x+i*Se,xe.xr=x-i*lt),s==="pixels"?(xe.y=1-b,xe.t=Ht*Gt,xe.b=Ht*Vt):(xe.t=ar*Gt,xe.b=ar*Vt,xe.yt=b-o*Gt,xe.yb=b+o*Vt));var Qr=t.y<.5?"b":"t",ai=t.x<.5?"l":"r";r._fullLayout._reservedMargin[t._id]={};var jr={r:k.width-_r-Nr,l:_r+xe.r,b:k.height-Br-ut,t:Br+xe.b};E&&p?II.autoMargin(r,t._id,xe):E?r._fullLayout._reservedMargin[t._id][Qr]=jr[Qr]:p||n?r._fullLayout._reservedMargin[t._id][ai]=jr[ai]:r._fullLayout._reservedMargin[t._id][Qr]=jr[Qr]}return B0.syncOrAsync([II.previousPromises,kt,Yt,Ct,II.previousPromises,xr],r)}function umt(e,t,r){var n=t.orientation==="v",i=r._fullLayout,a=i._size,o,s,l;PI.init({element:e.node(),gd:r,prepFn:function(){o=e.attr("transform"),cV(e)},moveFn:function(u,c){e.attr("transform",o+Ug(u,c)),s=PI.align((n?t._uFrac:t._vFrac)+u/a.w,n?t._thickFrac:t._lenFrac,0,1,t.xanchor),l=PI.align((n?t._vFrac:1-t._uFrac)-c/a.h,n?t._lenFrac:t._thickFrac,0,1,t.yanchor);var f=PI.getCursor(s,l,t.xanchor,t.yanchor);cV(e,f)},doneFn:function(){if(cV(e),s!==void 0&&l!==void 0){var u={};u[t._propPrefix+"x"]=s,u[t._propPrefix+"y"]=l,t._traceIndex!==void 0?yme.call("_guiRestyle",r,u,t._traceIndex):yme.call("_guiRelayout",r,u)}}})}function cmt(e,t,r){var n=t._levels,i=[],a=[],o,s,l=n.end+n.size/100,u=n.size,c=1.001*r[0]-.001*r[1],f=1.001*r[1]-.001*r[0];for(s=0;s<1e5&&(o=n.start+s*u,!(u>0?o>=l:o<=l));s++)o>c&&o0?o>=l:o<=l));s++)o>r[0]&&o{"use strict";Sme.exports={moduleType:"component",name:"colorbar",attributes:K6(),supplyDefaults:SO(),draw:Ame().draw,hasColorbar:yO()}});var kme=ye((hor,Eme)=>{"use strict";Eme.exports={moduleType:"component",name:"legend",layoutAttributes:yB(),supplyLayoutDefaults:bB(),draw:RB(),style:CB()}});var Lme=ye((dor,Cme)=>{"use strict";Cme.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}});var Ime=ye((vor,Pme)=>{"use strict";Pme.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}});var vV=ye((por,Fme)=>{"use strict";var hmt=ba(),zme=Mr(),dV=zme.extendFlat,Rme=zme.extendDeep;function Dme(e){var t;switch(e){case"themes__thumb":t={autosize:!0,width:150,height:150,title:{text:""},showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case"thumbnail":t={title:{text:""},hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:"",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:t={}}return t}function dmt(e){var t=["xaxis","yaxis","zaxis"];return t.indexOf(e.slice(0,5))>-1}Fme.exports=function(t,r){var n,i=t.data,a=t.layout,o=Rme([],i),s=Rme({},a,Dme(r.tileClass)),l=t._context||{};if(r.width&&(s.width=r.width),r.height&&(s.height=r.height),r.tileClass==="thumbnail"||r.tileClass==="themes__thumb"){s.annotations=[];var u=Object.keys(s);for(n=0;n{"use strict";var vmt=vb().EventEmitter,pmt=ba(),gmt=Mr(),qme=Ly(),mmt=vV(),ymt=BP(),_mt=NP();function xmt(e,t){var r=new vmt,n=mmt(e,{format:"png"}),i=n.gd;i.style.position="absolute",i.style.left="-5000px",document.body.appendChild(i);function a(){var s=qme.getDelay(i._fullLayout);setTimeout(function(){var l=ymt(i),u=document.createElement("canvas");u.id=gmt.randstr(),r=_mt({format:t.format,width:i._fullLayout.width,height:i._fullLayout.height,canvas:u,emitter:r,svg:l}),r.clean=function(){i&&document.body.removeChild(i)}},s)}var o=qme.getRedrawFunc(i);return pmt.call("_doPlot",i,n.data,n.layout,n.config).then(o).then(a).catch(function(s){r.emit("error",s)}),r}Ome.exports=xmt});var Vme=ye((mor,Ume)=>{"use strict";var Nme=Ly(),bmt={getDelay:Nme.getDelay,getRedrawFunc:Nme.getRedrawFunc,clone:vV(),toSVG:BP(),svgToImg:NP(),toImage:Bme(),downloadImage:YN()};Ume.exports=bmt});var Gme=ye(Dy=>{"use strict";Dy.version=e6().version;iee();Wie();var wmt=ba(),u4=Dy.register=wmt.register,gV=hde(),Hme=Object.keys(gV);for(RI=0;RI{"use strict";jme.exports=Gme()});var Qb=ye((xor,Zme)=>{"use strict";Zme.exports={TEXTPAD:3,eventDataKeys:["value","label"]}});var Lm=ye((bor,Jme)=>{"use strict";var Tf=Uc(),Xme=Oc().axisHoverFormat,Tmt=Wo().hovertemplateAttrs,Amt=Wo().texttemplateAttrs,Kme=Jl(),Smt=Su(),Yme=Qb(),Mmt=Ed().pattern,e2=no().extendFlat,mV=Smt({editType:"calc",arrayOk:!0,colorEditType:"style"}),Emt=Tf.marker,kmt=Emt.line,Cmt=e2({},kmt.width,{dflt:0}),Lmt=e2({width:Cmt,editType:"calc"},Kme("marker.line")),Pmt=e2({line:Lmt,editType:"calc"},Kme("marker"),{opacity:{valType:"number",arrayOk:!0,dflt:1,min:0,max:1,editType:"style"},pattern:Mmt,cornerradius:{valType:"any",editType:"calc"}});Jme.exports={x:Tf.x,x0:Tf.x0,dx:Tf.dx,y:Tf.y,y0:Tf.y0,dy:Tf.dy,xperiod:Tf.xperiod,yperiod:Tf.yperiod,xperiod0:Tf.xperiod0,yperiod0:Tf.yperiod0,xperiodalignment:Tf.xperiodalignment,yperiodalignment:Tf.yperiodalignment,xhoverformat:Xme("x"),yhoverformat:Xme("y"),text:Tf.text,texttemplate:Amt({editType:"plot"},{keys:Yme.eventDataKeys}),hovertext:Tf.hovertext,hovertemplate:Tmt({},{keys:Yme.eventDataKeys}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"calc"},insidetextanchor:{valType:"enumerated",values:["end","middle","start"],dflt:"end",editType:"plot"},textangle:{valType:"angle",dflt:"auto",editType:"plot"},textfont:e2({},mV,{}),insidetextfont:e2({},mV,{}),outsidetextfont:e2({},mV,{}),constraintext:{valType:"enumerated",values:["inside","outside","both","none"],dflt:"both",editType:"calc"},cliponaxis:e2({},Tf.cliponaxis,{}),orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},base:{valType:"any",dflt:null,arrayOk:!0,editType:"calc"},offset:{valType:"number",dflt:null,arrayOk:!0,editType:"calc"},width:{valType:"number",dflt:null,min:0,arrayOk:!0,editType:"calc"},marker:Pmt,offsetgroup:Tf.offsetgroup,alignmentgroup:Tf.alignmentgroup,selected:{marker:{opacity:Tf.selected.marker.opacity,color:Tf.selected.marker.color,editType:"style"},textfont:Tf.selected.textfont,editType:"style"},unselected:{marker:{opacity:Tf.unselected.marker.opacity,color:Tf.unselected.marker.color,editType:"style"},textfont:Tf.unselected.textfont,editType:"style"},zorder:Tf.zorder}});var zI=ye((wor,$me)=>{"use strict";$me.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},barcornerradius:{valType:"any",editType:"calc"}}});var FI=ye((Tor,tye)=>{"use strict";var Imt=va(),Qme=Dv().hasColorscale,eye=Uh(),Rmt=Mr().coercePattern;tye.exports=function(t,r,n,i,a){var o=n("marker.color",i),s=Qme(t,"marker");s&&eye(t,r,a,n,{prefix:"marker.",cLetter:"c"}),n("marker.line.color",Imt.defaultLine),Qme(t,"marker.line")&&eye(t,r,a,n,{prefix:"marker.line.",cLetter:"c"}),n("marker.line.width"),n("marker.opacity"),Rmt(n,"marker.pattern",o,s),n("selected.marker.color"),n("unselected.marker.color")}});var r0=ye((Aor,sye)=>{"use strict";var rye=uo(),xT=Mr(),iye=va(),Dmt=ba(),zmt=K3(),Fmt=Pg(),qmt=FI(),Omt=Hb(),nye=Lm(),qI=xT.coerceFont;function Bmt(e,t,r,n){function i(u,c){return xT.coerce(e,t,nye,u,c)}var a=zmt(e,t,n,i);if(!a){t.visible=!1;return}Fmt(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("zorder"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate");var o=i("textposition");oye(e,t,n,i,o,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),qmt(e,t,i,r,n);var s=(t.marker.line||{}).color,l=Dmt.getComponentMethod("errorbars","supplyDefaults");l(e,t,s||iye.defaultLine,{axis:"y"}),l(e,t,s||iye.defaultLine,{axis:"x",inherit:"y"}),xT.coerceSelectionMarkerOpacity(t,i)}function Nmt(e,t){var r,n;function i(s,l){return xT.coerce(n._input,n,nye,s,l)}for(var a=0;a=0)return e}else if(typeof e=="string"&&(e=e.trim(),e.slice(-1)==="%"&&rye(e.slice(0,-1))&&(e=+e.slice(0,-1),e>=0)))return e+"%"}function oye(e,t,r,n,i,a){a=a||{};var o=a.moduleHasSelected!==!1,s=a.moduleHasUnselected!==!1,l=a.moduleHasConstrain!==!1,u=a.moduleHasCliponaxis!==!1,c=a.moduleHasTextangle!==!1,f=a.moduleHasInsideanchor!==!1,h=!!a.hasPathbar,d=Array.isArray(i)||i==="auto",v=d||i==="inside",x=d||i==="outside";if(v||x){var b=qI(n,"textfont",r.font),p=xT.extendFlat({},b),E=e.textfont&&e.textfont.color,k=!E;if(k&&delete p.color,qI(n,"insidetextfont",p),h){var A=xT.extendFlat({},b);k&&delete A.color,qI(n,"pathbar.textfont",A)}x&&qI(n,"outsidetextfont",b),o&&n("selected.textfont.color"),s&&n("unselected.textfont.color"),l&&n("constraintext"),u&&n("cliponaxis"),c&&n("textangle"),n("texttemplate")}v&&f&&n("insidetextanchor")}sye.exports={supplyDefaults:Bmt,crossTraceDefaults:Nmt,handleText:oye,validateCornerradius:aye}});var yV=ye((Sor,lye)=>{"use strict";var Umt=ba(),Vmt=Qa(),Hmt=Mr(),Gmt=zI(),jmt=r0().validateCornerradius;lye.exports=function(e,t,r){function n(x,b){return Hmt.coerce(e,t,Gmt,x,b)}for(var i=!1,a=!1,o=!1,s={},l=n("barmode"),u=l==="group",c=0;c0&&!s[h]&&(o=!0),s[h]=!0),f.visible&&f.type==="histogram"){var d=Vmt.getFromId({_fullLayout:t},f[f.orientation==="v"?"xaxis":"yaxis"]);d.type!=="category"&&(a=!0)}}if(!i){delete t.barmode;return}l!=="overlay"&&n("barnorm"),n("bargap",a&&!o?0:.2),n("bargroupgap");var v=n("barcornerradius");t.barcornerradius=jmt(v)}});var c4=ye((Mor,uye)=>{"use strict";var bT=Mr();uye.exports=function(t,r){for(var n=0;n{"use strict";var cye=Qa(),fye=Rg(),hye=Dv().hasColorscale,dye=zv(),Wmt=c4(),Zmt=F0();vye.exports=function(t,r){var n=cye.getFromId(t,r.xaxis||"x"),i=cye.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f={msUTC:!!(r.base||r.base===0)};r.orientation==="h"?(a=n.makeCalcdata(r,"x",f),s=i.makeCalcdata(r,"y"),l=fye(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y",f),s=n.makeCalcdata(r,"x"),l=fye(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var h=Math.min(o.length,a.length),d=new Array(h),v=0;v{"use strict";var Xmt=xa(),Ymt=Mr();function Kmt(e,t,r){var n=e._fullLayout,i=n["_"+r+"Text_minsize"];if(i){var a=n.uniformtext.mode==="hide",o;switch(r){case"funnelarea":case"pie":case"sunburst":o="g.slice";break;case"treemap":case"icicle":o="g.slice, g.pathbar";break;default:o="g.points > g.point"}t.selectAll(o).each(function(s){var l=s.transform;if(l){l.scale=a&&l.hide?0:i/l.fontSize;var u=Xmt.select(this).select("text");Ymt.setTransormAndDisplay(u,l)}})}}function Jmt(e,t,r){if(r.uniformtext.mode){var n=gye(e),i=r.uniformtext.minsize,a=t.scale*t.fontSize;t.hide=a{"use strict";var Qmt=uo(),eyt=id(),yye=Mr().isArrayOrTypedArray;t2.coerceString=function(e,t,r){if(typeof t=="string"){if(t||!e.noBlank)return t}else if((typeof t=="number"||t===!0)&&!e.strict)return String(t);return r!==void 0?r:e.dflt};t2.coerceNumber=function(e,t,r){if(Qmt(t)){t=+t;var n=e.min,i=e.max,a=n!==void 0&&ti;if(!a)return t}return r!==void 0?r:e.dflt};t2.coerceColor=function(e,t,r){return eyt(t).isValid()?t:r!==void 0?r:e.dflt};t2.coerceEnumerated=function(e,t,r){return e.coerceNumber&&(t=+t),e.values.indexOf(t)!==-1?t:r!==void 0?r:e.dflt};t2.getValue=function(e,t){var r;return yye(e)?t{"use strict";var f4=xa(),tyt=va(),h4=ao(),_ye=Mr(),xye=ba(),bye=_v().resizeText,_V=Lm(),ryt=_V.textfont,iyt=_V.insidetextfont,nyt=_V.outsidetextfont,Jd=OI();function ayt(e){var t=f4.select(e).selectAll('g[class^="barlayer"]').selectAll("g.trace");bye(e,t,"bar");var r=t.size(),n=e._fullLayout;t.style("opacity",function(i){return i[0].trace.opacity}).each(function(i){(n.barmode==="stack"&&r>1||n.bargap===0&&n.bargroupgap===0&&!i[0].trace.marker.line.width)&&f4.select(this).attr("shape-rendering","crispEdges")}),t.selectAll("g.points").each(function(i){var a=f4.select(this),o=i[0].trace;wye(a,o,e)}),xye.getComponentMethod("errorbars","style")(t)}function wye(e,t,r){h4.pointStyle(e.selectAll("path"),t,r),Tye(e,t,r)}function Tye(e,t,r){e.selectAll("text").each(function(n){var i=f4.select(this),a=_ye.ensureUniformFontSize(r,Aye(i,n,t,r));h4.font(i,a)})}function oyt(e,t,r){var n=t[0].trace;n.selectedpoints?syt(r,n,e):(wye(r,n,e),xye.getComponentMethod("errorbars","style")(r))}function syt(e,t,r){h4.selectedPointStyle(e.selectAll("path"),t),lyt(e.selectAll("text"),t,r)}function lyt(e,t,r){e.each(function(n){var i=f4.select(this),a;if(n.selected){a=_ye.ensureUniformFontSize(r,Aye(i,n,t,r));var o=t.selected.textfont&&t.selected.textfont.color;o&&(a.color=o),h4.font(i,a)}else h4.selectedTextStyle(i,t)})}function Aye(e,t,r,n){var i=n._fullLayout.font,a=r.textfont;if(e.classed("bartext-inside")){var o=kye(t,r);a=Mye(r,t.i,i,o)}else e.classed("bartext-outside")&&(a=Eye(r,t.i,i));return a}function Sye(e,t,r){return xV(ryt,e.textfont,t,r)}function Mye(e,t,r,n){var i=Sye(e,t,r),a=e._input.textfont===void 0||e._input.textfont.color===void 0||Array.isArray(e.textfont.color)&&e.textfont.color[t]===void 0;return a&&(i={color:tyt.contrast(n),family:i.family,size:i.size,weight:i.weight,style:i.style,variant:i.variant,textcase:i.textcase,lineposition:i.lineposition,shadow:i.shadow}),xV(iyt,e.insidetextfont,t,i)}function Eye(e,t,r){var n=Sye(e,t,r);return xV(nyt,e.outsidetextfont,t,n)}function xV(e,t,r,n){t=t||{};var i=Jd.getValue(t.family,r),a=Jd.getValue(t.size,r),o=Jd.getValue(t.color,r),s=Jd.getValue(t.weight,r),l=Jd.getValue(t.style,r),u=Jd.getValue(t.variant,r),c=Jd.getValue(t.textcase,r),f=Jd.getValue(t.lineposition,r),h=Jd.getValue(t.shadow,r);return{family:Jd.coerceString(e.family,i,n.family),size:Jd.coerceNumber(e.size,a,n.size),color:Jd.coerceColor(e.color,o,n.color),weight:Jd.coerceString(e.weight,s,n.weight),style:Jd.coerceString(e.style,l,n.style),variant:Jd.coerceString(e.variant,u,n.variant),textcase:Jd.coerceString(e.variant,c,n.textcase),lineposition:Jd.coerceString(e.variant,f,n.lineposition),shadow:Jd.coerceString(e.variant,h,n.shadow)}}function kye(e,t){return t.type==="waterfall"?t[e.dir].marker.color:e.mcc||e.mc||t.marker.color}Cye.exports={style:ayt,styleTextPoints:Tye,styleOnSelect:oyt,getInsideTextFont:Mye,getOutsideTextFont:Eye,getBarColor:kye,resizeText:bye}});var i2=ye((Por,qye)=>{"use strict";var BI=xa(),NI=uo(),Pd=Mr(),uyt=Pl(),cyt=va(),A_=ao(),fyt=ba(),UI=Qa().tickText,Lye=_v(),hyt=Lye.recordMinTextSize,dyt=Lye.clearMinTextSize,bV=N0(),wT=OI(),vyt=Qb(),Pye=Lm(),pyt=Pye.text,gyt=Pye.textposition,myt=rp().appendArrayPointValue,Uv=vyt.TEXTPAD;function yyt(e){return e.id}function _yt(e){if(e.ids)return yyt}function wV(e){return(e>0)-(e<0)}function Pm(e,t){return e0}function byt(e,t,r,n,i,a){var o=t.xaxis,s=t.yaxis,l=e._fullLayout,u=e._context.staticPlot;i||(i={mode:l.barmode,norm:l.barmode,gap:l.bargap,groupgap:l.bargroupgap},dyt("bar",l));var c=Pd.makeTraceGroups(n,r,"trace bars").each(function(f){var h=BI.select(this),d=f[0].trace,v=f[0].t,x=d.type==="waterfall",b=d.type==="funnel",p=d.type==="histogram",E=d.type==="bar",k=E||b,A=0;x&&d.connector.visible&&d.connector.mode==="between"&&(A=d.connector.line.width/2);var L=d.orientation==="h",_=Rye(i),C=Pd.ensureSingle(h,"g","points"),M=_yt(d),g=C.selectAll("g.point").data(Pd.identity,M);g.enter().append("g").classed("point",!0),g.exit().remove(),g.each(function(T,F){var q=BI.select(this),V=xyt(T,o,s,L),H=V[0][0],X=V[0][1],G=V[1][0],N=V[1][1],W=(L?X-H:N-G)===0;W&&k&&wT.getLineWidth(d,T)&&(W=!1),W||(W=!NI(H)||!NI(X)||!NI(G)||!NI(N)),T.isBlank=W,W&&(L?X=H:N=G),A&&!W&&(L?(H-=Pm(H,X)*A,X+=Pm(H,X)*A):(G-=Pm(G,N)*A,N+=Pm(G,N)*A));var re,ae;if(d.type==="waterfall"){if(!W){var _e=d[T.dir].marker;re=_e.line.width,ae=_e.color}}else re=wT.getLineWidth(d,T),ae=T.mc||d.marker.color;function Me(Ke){var xt=BI.round(re/2%1,2);return i.gap===0&&i.groupgap===0?BI.round(Math.round(Ke)-xt,2):Ke}function ke(Ke,xt,bt){return bt&&Ke===xt?Ke:Math.abs(Ke-xt)>=2?Me(Ke):Ke>xt?Math.ceil(Ke):Math.floor(Ke)}var ge=cyt.opacity(ae),ie=ge<1||re>.01?Me:ke;e._context.staticPlot||(H=ie(H,X,L),X=ie(X,H,L),G=ie(G,N,!L),N=ie(N,G,!L));var Te=L?o.c2p:s.c2p,Ee;T.s0>0?Ee=T._sMax:T.s0<0?Ee=T._sMin:Ee=T.s1>0?T._sMax:T._sMin;function Ae(Ke,xt){if(!Ke)return 0;var bt=Math.abs(L?N-G:X-H),Lt=Math.abs(L?X-H:N-G),St=ie(Math.abs(Te(Ee,!0)-Te(0,!0))),Et=T.hasB?Math.min(bt/2,Lt/2):Math.min(bt/2,St),dt;if(xt==="%"){var Ht=Math.min(50,Ke);dt=bt*(Ht/100)}else dt=Ke;return ie(Math.max(Math.min(dt,Et),0))}var ze=E||p?Ae(v.cornerradiusvalue,v.cornerradiusform):0,Ce,me,Re="M"+H+","+G+"V"+N+"H"+X+"V"+G+"Z",ce=0;if(ze&&T.s){var Ge=wV(T.s0)===0||wV(T.s)===wV(T.s0)?T.s1:T.s0;if(ce=ie(T.hasB?0:Math.abs(Te(Ee,!0)-Te(Ge,!0))),ce0?Math.sqrt(ce*(2*ze-ce)):0,Rt=nt>0?Math.max:Math.min;Ce="M"+H+","+G+"V"+(N-rt*ct)+"H"+Rt(X-(ze-ce)*nt,H)+"A "+ze+","+ze+" 0 0 "+qt+" "+X+","+(N-ze*ct-ot)+"V"+(G+ze*ct+ot)+"A "+ze+","+ze+" 0 0 "+qt+" "+Rt(X-(ze-ce)*nt,H)+","+(G+rt*ct)+"Z"}else if(T.hasB)Ce="M"+(H+ze*nt)+","+G+"A "+ze+","+ze+" 0 0 "+qt+" "+H+","+(G+ze*ct)+"V"+(N-ze*ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(H+ze*nt)+","+N+"H"+(X-ze*nt)+"A "+ze+","+ze+" 0 0 "+qt+" "+X+","+(N-ze*ct)+"V"+(G+ze*ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(X-ze*nt)+","+G+"Z";else{me=Math.abs(N-G)+ce;var kt=me0?Math.sqrt(ce*(2*ze-ce)):0,Yt=ct>0?Math.max:Math.min;Ce="M"+(H+kt*nt)+","+G+"V"+Yt(N-(ze-ce)*ct,G)+"A "+ze+","+ze+" 0 0 "+qt+" "+(H+ze*nt-Ct)+","+N+"H"+(X-ze*nt+Ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(X-kt*nt)+","+Yt(N-(ze-ce)*ct,G)+"V"+G+"Z"}}else Ce=Re}else Ce=Re;var xr=Iye(Pd.ensureSingle(q,"path"),l,i,a);if(xr.style("vector-effect",u?"none":"non-scaling-stroke").attr("d",isNaN((X-H)*(N-G))||W&&e._context.staticPlot?"M0,0Z":Ce).call(A_.setClipUrl,t.layerClipId,e),!l.uniformtext.mode&&_){var er=A_.makePointStyleFns(d);A_.singlePointStyle(T,xr,d,er,e)}wyt(e,t,q,f,F,H,X,G,N,ze,ce,i,a),t.layerClipId&&A_.hideOutsideRangePoint(T,q.select("text"),o,s,d.xcalendar,d.ycalendar)});var P=d.cliponaxis===!1;A_.setClipUrl(h,P?null:t.layerClipId,e)});fyt.getComponentMethod("errorbars","plot")(e,c,t,i)}function wyt(e,t,r,n,i,a,o,s,l,u,c,f,h){var d=t.xaxis,v=t.yaxis,x=e._fullLayout,b;function p(me,Re,ce){var Ge=Pd.ensureSingle(me,"text").text(Re).attr({class:"bartext bartext-"+b,"text-anchor":"middle","data-notex":1}).call(A_.font,ce).call(uyt.convertToTspans,e);return Ge}var E=n[0].trace,k=E.orientation==="h",A=Syt(x,n,i,d,v);b=Myt(E,i);var L=f.mode==="stack"||f.mode==="relative",_=n[i],C=!L||_._outmost,M=_.hasB,g=u&&u-c>Uv;if(!A||b==="none"||(_.isBlank||a===o||s===l)&&(b==="auto"||b==="inside")){r.select("text").remove();return}var P=x.font,T=bV.getBarColor(n[i],E),F=bV.getInsideTextFont(E,i,P,T),q=bV.getOutsideTextFont(E,i,P),V=E.insidetextanchor||"end",H=r.datum();k?d.type==="log"&&H.s0<=0&&(d.range[0]0&&Me>0,ie;g?M?ie=r2(N-2*u,W,_e,Me,k)||r2(N,W-2*u,_e,Me,k):k?ie=r2(N-(u-c),W,_e,Me,k)||r2(N,W-2*(u-c),_e,Me,k):ie=r2(N,W-(u-c),_e,Me,k)||r2(N-2*(u-c),W,_e,Me,k):ie=r2(N,W,_e,Me,k),ge&&ie?b="inside":(b="outside",re.remove(),re=null)}else b="inside";if(!re){ke=Pd.ensureUniformFontSize(e,b==="outside"?q:F),re=p(r,A,ke);var Te=re.attr("transform");if(re.attr("transform",""),ae=A_.bBox(re.node()),_e=ae.width,Me=ae.height,re.attr("transform",Te),_e<=0||Me<=0){re.remove();return}}var Ee=E.textangle,Ae,ze;b==="outside"?(ze=E.constraintext==="both"||E.constraintext==="outside",Ae=Ayt(a,o,s,l,ae,{isHorizontal:k,constrained:ze,angle:Ee})):(ze=E.constraintext==="both"||E.constraintext==="inside",Ae=Fye(a,o,s,l,ae,{isHorizontal:k,constrained:ze,angle:Ee,anchor:V,hasB:M,r:u,overhead:c})),Ae.fontSize=ke.size,hyt(E.type==="histogram"?"bar":E.type,Ae,x),_.transform=Ae;var Ce=Iye(re,x,f,h);Pd.setTransormAndDisplay(Ce,Ae)}function r2(e,t,r,n,i){if(e<0||t<0)return!1;var a=r<=e&&n<=t,o=r<=t&&n<=e,s=i?e>=r*(t/n):t>=n*(e/r);return a||o||s}function Dye(e){return e==="auto"?0:e}function zye(e,t){var r=Math.PI/180*t,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:e.width*i+e.height*n,y:e.width*n+e.height*i}}function Fye(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=a.anchor,c=u==="end",f=u==="start",h=a.leftToRight||0,d=(h+1)/2,v=1-d,x=a.hasB,b=a.r,p=a.overhead,E=i.width,k=i.height,A=Math.abs(t-e),L=Math.abs(n-r),_=A>2*Uv&&L>2*Uv?Uv:0;A-=2*_,L-=2*_;var C=Dye(l);l==="auto"&&!(E<=A&&k<=L)&&(E>A||k>L)&&(!(E>L||k>A)||EUv){var T=Tyt(e,t,r,n,M,b,p,o,x);g=T.scale,P=T.pad}else g=1,s&&(g=Math.min(1,A/M.x,L/M.y)),P=0;var F=i.left*v+i.right*d,q=(i.top+i.bottom)/2,V=(e+Uv)*v+(t-Uv)*d,H=(r+n)/2,X=0,G=0;if(f||c){var N=(o?M.x:M.y)/2;b&&(c||x)&&(_+=P);var W=o?Pm(e,t):Pm(r,n);o?f?(V=e+W*_,X=-W*N):(V=t-W*_,X=W*N):f?(H=r+W*_,G=-W*N):(H=n-W*_,G=W*N)}return{textX:F,textY:q,targetX:V,targetY:H,anchorX:X,anchorY:G,scale:g,rotate:C}}function Tyt(e,t,r,n,i,a,o,s,l){var u=Math.max(0,Math.abs(t-e)-2*Uv),c=Math.max(0,Math.abs(n-r)-2*Uv),f=a-Uv,h=o?f-Math.sqrt(f*f-(f-o)*(f-o)):f,d=l?f*2:s?f-o:2*h,v=l?f*2:s?2*h:f-o,x,b,p,E,k;return i.y/i.x>=c/(u-d)?E=c/i.y:i.y/i.x<=(c-v)/u?E=u/i.x:!l&&s?(x=i.x*i.x+i.y*i.y/4,b=-2*i.x*(u-f)-i.y*(c/2-f),p=(u-f)*(u-f)+(c/2-f)*(c/2-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)):l?(x=(i.x*i.x+i.y*i.y)/4,b=-i.x*(u/2-f)-i.y*(c/2-f),p=(u/2-f)*(u/2-f)+(c/2-f)*(c/2-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)):(x=i.x*i.x/4+i.y*i.y,b=-i.x*(u/2-f)-2*i.y*(c-f),p=(u/2-f)*(u/2-f)+(c-f)*(c-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)),E=Math.min(1,E),s?k=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(c-i.y*E)/2)*(f-(c-i.y*E)/2)))-o):k=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(u-i.x*E)/2)*(f-(u-i.x*E)/2)))-o),{scale:E,pad:k}}function Ayt(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=i.width,c=i.height,f=Math.abs(t-e),h=Math.abs(n-r),d;o?d=h>2*Uv?Uv:0:d=f>2*Uv?Uv:0;var v=1;s&&(v=o?Math.min(1,h/c):Math.min(1,f/u));var x=Dye(l),b=zye(i,x),p=(o?b.x:b.y)/2,E=(i.left+i.right)/2,k=(i.top+i.bottom)/2,A=(e+t)/2,L=(r+n)/2,_=0,C=0,M=o?Pm(t,e):Pm(r,n);return o?(A=t-M*d,_=M*p):(L=n+M*d,C=-M*p),{textX:E,textY:k,targetX:A,targetY:L,anchorX:_,anchorY:C,scale:v,rotate:x}}function Syt(e,t,r,n,i){var a=t[0].trace,o=a.texttemplate,s;return o?s=Eyt(e,t,r,n,i):a.textinfo?s=kyt(t,r,n,i):s=wT.getValue(a.text,r),wT.coerceString(pyt,s)}function Myt(e,t){var r=wT.getValue(e.textposition,t);return wT.coerceEnumerated(gyt,r)}function Eyt(e,t,r,n,i){var a=t[0].trace,o=Pd.castOption(a,r,"texttemplate");if(!o)return"";var s=a.type==="histogram",l=a.type==="waterfall",u=a.type==="funnel",c=a.orientation==="h",f,h,d,v;c?(f="y",h=i,d="x",v=n):(f="x",h=n,d="y",v=i);function x(_){return UI(h,h.c2l(_),!0).text}function b(_){return UI(v,v.c2l(_),!0).text}var p=t[r],E={};E.label=p.p,E.labelLabel=E[f+"Label"]=x(p.p);var k=Pd.castOption(a,p.i,"text");(k===0||k)&&(E.text=k),E.value=p.s,E.valueLabel=E[d+"Label"]=b(p.s);var A={};myt(A,a,p.i),(s||A.x===void 0)&&(A.x=c?E.value:E.label),(s||A.y===void 0)&&(A.y=c?E.label:E.value),(s||A.xLabel===void 0)&&(A.xLabel=c?E.valueLabel:E.labelLabel),(s||A.yLabel===void 0)&&(A.yLabel=c?E.labelLabel:E.valueLabel),l&&(E.delta=+p.rawS||p.s,E.deltaLabel=b(E.delta),E.final=p.v,E.finalLabel=b(E.final),E.initial=E.final-E.delta,E.initialLabel=b(E.initial)),u&&(E.value=p.s,E.valueLabel=b(E.value),E.percentInitial=p.begR,E.percentInitialLabel=Pd.formatPercent(p.begR),E.percentPrevious=p.difR,E.percentPreviousLabel=Pd.formatPercent(p.difR),E.percentTotal=p.sumR,E.percenTotalLabel=Pd.formatPercent(p.sumR));var L=Pd.castOption(a,p.i,"customdata");return L&&(E.customdata=L),Pd.texttemplateString(o,E,e._d3locale,A,E,a._meta||{})}function kyt(e,t,r,n){var i=e[0].trace,a=i.orientation==="h",o=i.type==="waterfall",s=i.type==="funnel";function l(L){var _=a?n:r;return UI(_,L,!0).text}function u(L){var _=a?r:n;return UI(_,+L,!0).text}var c=i.textinfo,f=e[t],h=c.split("+"),d=[],v,x=function(L){return h.indexOf(L)!==-1};if(x("label")&&d.push(l(e[t].p)),x("text")&&(v=Pd.castOption(i,f.i,"text"),(v===0||v)&&d.push(v)),o){var b=+f.rawS||f.s,p=f.v,E=p-b;x("initial")&&d.push(u(E)),x("delta")&&d.push(u(b)),x("final")&&d.push(u(p))}if(s){x("value")&&d.push(u(f.s));var k=0;x("percent initial")&&k++,x("percent previous")&&k++,x("percent total")&&k++;var A=k>1;x("percent initial")&&(v=Pd.formatPercent(f.begR),A&&(v+=" of initial"),d.push(v)),x("percent previous")&&(v=Pd.formatPercent(f.difR),A&&(v+=" of previous"),d.push(v)),x("percent total")&&(v=Pd.formatPercent(f.sumR),A&&(v+=" of total"),d.push(v))}return d.join("
")}qye.exports={plot:byt,toMoveInsideBar:Fye}});var TT=ye((Ior,Uye)=>{"use strict";var d4=Nc(),Cyt=ba(),Oye=va(),Lyt=Mr().fillText,Pyt=OI().getLineWidth,TV=Qa().hoverLabelText,Iyt=es().BADNUM;function Ryt(e,t,r,n,i){var a=Bye(e,t,r,n,i);if(a){var o=a.cd,s=o[0].trace,l=o[a.index];return a.color=Nye(s,l),Cyt.getComponentMethod("errorbars","hoverInfo")(l,s,a),[a]}}function Bye(e,t,r,n,i){var a=e.cd,o=a[0].trace,s=a[0].t,l=n==="closest",u=o.type==="waterfall",c=e.maxHoverDistance,f=e.maxSpikeDistance,h,d,v,x,b,p,E;o.orientation==="h"?(h=r,d=t,v="y",x="x",b=H,p=F):(h=t,d=r,v="x",x="y",p=H,b=F);var k=o[v+"period"],A=l||k;function L(ie){return C(ie,-1)}function _(ie){return C(ie,1)}function C(ie,Te){var Ee=ie.w;return ie[v]+Te*Ee/2}function M(ie){return ie[v+"End"]-ie[v+"Start"]}var g=l?L:k?function(ie){return ie.p-M(ie)/2}:function(ie){return Math.min(L(ie),ie.p-s.bardelta/2)},P=l?_:k?function(ie){return ie.p+M(ie)/2}:function(ie){return Math.max(_(ie),ie.p+s.bardelta/2)};function T(ie,Te,Ee){return i.finiteRange&&(Ee=0),d4.inbox(ie-h,Te-h,Ee+Math.min(1,Math.abs(Te-ie)/E)-1)}function F(ie){return T(g(ie),P(ie),c)}function q(ie){return T(L(ie),_(ie),f)}function V(ie){var Te=ie[x];if(u){var Ee=Math.abs(ie.rawS)||0;d>0?Te+=Ee:d<0&&(Te-=Ee)}return Te}function H(ie){var Te=d,Ee=ie.b,Ae=V(ie);return d4.inbox(Ee-Te,Ae-Te,c+(Ae-Te)/(Ae-Ee)-1)}function X(ie){var Te=d,Ee=ie.b,Ae=V(ie);return d4.inbox(Ee-Te,Ae-Te,f+(Ae-Te)/(Ae-Ee)-1)}var G=e[v+"a"],N=e[x+"a"];E=Math.abs(G.r2c(G.range[1])-G.r2c(G.range[0]));function W(ie){return(b(ie)+p(ie))/2}var re=d4.getDistanceFunction(n,b,p,W);if(d4.getClosest(a,re,e),e.index!==!1&&a[e.index].p!==Iyt){A||(g=function(ie){return Math.min(L(ie),ie.p-s.bargroupwidth/2)},P=function(ie){return Math.max(_(ie),ie.p+s.bargroupwidth/2)});var ae=e.index,_e=a[ae],Me=o.base?_e.b+_e.s:_e.s;e[x+"0"]=e[x+"1"]=N.c2p(_e[x],!0),e[x+"LabelVal"]=Me;var ke=s.extents[s.extents.round(_e.p)];e[v+"0"]=G.c2p(l?g(_e):ke[0],!0),e[v+"1"]=G.c2p(l?P(_e):ke[1],!0);var ge=_e.orig_p!==void 0;return e[v+"LabelVal"]=ge?_e.orig_p:_e.p,e.labelLabel=TV(G,e[v+"LabelVal"],o[v+"hoverformat"]),e.valueLabel=TV(N,e[x+"LabelVal"],o[x+"hoverformat"]),e.baseLabel=TV(N,_e.b,o[x+"hoverformat"]),e.spikeDistance=(X(_e)+q(_e))/2,e[v+"Spike"]=G.c2p(_e.p,!0),Lyt(_e,o,e),e.hovertemplate=o.hovertemplate,e}}function Nye(e,t){var r=t.mcc||e.marker.color,n=t.mlcc||e.marker.line.color,i=Pyt(e,t);if(Oye.opacity(r))return r;if(Oye.opacity(n)&&i)return n}Uye.exports={hoverPoints:Ryt,hoverOnBars:Bye,getTraceColor:Nye}});var Hye=ye((Ror,Vye)=>{"use strict";Vye.exports=function(t,r,n){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),n.orientation==="h"?(t.label=t.y,t.value=t.x):(t.label=t.x,t.value=t.y),t}});var AT=ye((Dor,Gye)=>{"use strict";Gye.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=n[0].trace,s=o.type==="funnel",l=o.orientation==="h",u=[],c;if(r===!1)for(c=0;c{"use strict";jye.exports={attributes:Lm(),layoutAttributes:zI(),supplyDefaults:r0().supplyDefaults,crossTraceDefaults:r0().crossTraceDefaults,supplyLayoutDefaults:yV(),calc:pye(),crossTraceCalc:Gb().crossTraceCalc,colorbar:Kd(),arraysToCalcdata:c4(),plot:i2().plot,style:N0().style,styleOnSelect:N0().styleOnSelect,hoverPoints:TT().hoverPoints,eventData:Hye(),selectPoints:AT(),moduleType:"trace",name:"bar",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}});var Xye=ye((For,Zye)=>{"use strict";Zye.exports=Wye()});var v4=ye((qor,$ye)=>{"use strict";var zyt=Eg(),U0=Uc(),Yye=Lm(),Fyt=dh(),Kye=Oc().axisHoverFormat,qyt=Wo().hovertemplateAttrs,zy=no().extendFlat,ST=U0.marker,Jye=ST.line;$ye.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:U0.xperiod,yperiod:U0.yperiod,xperiod0:U0.xperiod0,yperiod0:U0.yperiod0,xperiodalignment:U0.xperiodalignment,yperiodalignment:U0.yperiodalignment,xhoverformat:Kye("x"),yhoverformat:Kye("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},sdmultiple:{valType:"number",min:0,editType:"calc",dflt:1},sizemode:{valType:"enumerated",values:["quartiles","sd"],editType:"calc",dflt:"quartiles"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:zy({},ST.symbol,{arrayOk:!1,editType:"plot"}),opacity:zy({},ST.opacity,{arrayOk:!1,dflt:1,editType:"style"}),angle:zy({},ST.angle,{arrayOk:!1,editType:"calc"}),size:zy({},ST.size,{arrayOk:!1,editType:"calc"}),color:zy({},ST.color,{arrayOk:!1,editType:"style"}),line:{color:zy({},Jye.color,{arrayOk:!1,dflt:Fyt.defaultLine,editType:"style"}),width:zy({},Jye.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:zyt(),whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},showwhiskers:{valType:"boolean",editType:"calc"},offsetgroup:Yye.offsetgroup,alignmentgroup:Yye.alignmentgroup,selected:{marker:U0.selected.marker,editType:"style"},unselected:{marker:U0.unselected.marker,editType:"style"},text:zy({},U0.text,{}),hovertext:zy({},U0.hovertext,{}),hovertemplate:qyt({}),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"},zorder:U0.zorder}});var p4=ye((Oor,Qye)=>{"use strict";Qye.exports={boxmode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},boxgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"},boxgroupgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"}}});var m4=ye((Bor,i1e)=>{"use strict";var V0=Mr(),Oyt=ba(),Byt=va(),Nyt=Pg(),Uyt=Hb(),e1e=L3(),g4=v4();function Vyt(e,t,r,n){function i(v,x){return V0.coerce(e,t,g4,v,x)}if(t1e(e,t,i,n),t.visible!==!1){Nyt(e,t,n,i),i("xhoverformat"),i("yhoverformat");var a=t._hasPreCompStats;a&&(i("lowerfence"),i("upperfence")),i("line.color",(e.marker||{}).color||r),i("line.width"),i("fillcolor",Byt.addOpacity(t.line.color,.5));var o=!1;if(a){var s=i("mean"),l=i("sd");s&&s.length&&(o=!0,l&&l.length&&(o="sd"))}i("whiskerwidth");var u=i("sizemode"),c;u==="quartiles"&&(c=i("boxmean",o)),i("showwhiskers",u==="quartiles"),(u==="sd"||c==="sd")&&i("sdmultiple"),i("width"),i("quartilemethod");var f=!1;if(a){var h=i("notchspan");h&&h.length&&(f=!0)}else V0.validate(e.notchwidth,g4.notchwidth)&&(f=!0);var d=i("notched",f);d&&i("notchwidth"),r1e(e,t,i,{prefix:"box"}),i("zorder")}}function t1e(e,t,r,n){function i(P){var T=0;return P&&P.length&&(T+=1,V0.isArrayOrTypedArray(P[0])&&P[0].length&&(T+=1)),T}function a(P){return V0.validate(e[P],g4[P])}var o=r("y"),s=r("x"),l;if(t.type==="box"){var u=r("q1"),c=r("median"),f=r("q3");t._hasPreCompStats=u&&u.length&&c&&c.length&&f&&f.length,l=Math.min(V0.minRowLength(u),V0.minRowLength(c),V0.minRowLength(f))}var h=i(o),d=i(s),v=h&&V0.minRowLength(o),x=d&&V0.minRowLength(s),b=n.calendar,p={autotypenumbers:n.autotypenumbers},E,k;if(t._hasPreCompStats)switch(String(d)+String(h)){case"00":var A=a("x0")||a("dx"),L=a("y0")||a("dy");L&&!A?E="h":E="v",k=l;break;case"10":E="v",k=Math.min(l,x);break;case"20":E="h",k=Math.min(l,s.length);break;case"01":E="h",k=Math.min(l,v);break;case"02":E="v",k=Math.min(l,o.length);break;case"12":E="v",k=Math.min(l,x,o.length);break;case"21":E="h",k=Math.min(l,s.length,v);break;case"11":k=0;break;case"22":var _=!1,C;for(C=0;C0?(E="v",d>0?k=Math.min(x,v):k=Math.min(v)):d>0?(E="h",k=Math.min(x)):k=0;if(!k){t.visible=!1;return}t._length=k;var M=r("orientation",E);t._hasPreCompStats?M==="v"&&d===0?(r("x0",0),r("dx",1)):M==="h"&&h===0&&(r("y0",0),r("dy",1)):M==="v"&&d===0?r("x0"):M==="h"&&h===0&&r("y0");var g=Oyt.getComponentMethod("calendars","handleTraceDefaults");g(e,t,["x","y"],n)}function r1e(e,t,r,n){var i=n.prefix,a=V0.coerce2(e,t,g4,"marker.outliercolor"),o=r("marker.line.outliercolor"),s="outliers";t._hasPreCompStats?s="all":(a||o)&&(s="suspectedoutliers");var l=r(i+"points",s);l?(r("jitter",l==="all"?.3:0),r("pointpos",l==="all"?-1.5:0),r("marker.symbol"),r("marker.opacity"),r("marker.size"),r("marker.angle"),r("marker.color",t.line.color),r("marker.line.color"),r("marker.line.width"),l==="suspectedoutliers"&&(r("marker.line.outliercolor",t.marker.color),r("marker.line.outlierwidth")),r("selected.marker.color"),r("unselected.marker.color"),r("selected.marker.size"),r("unselected.marker.size"),r("text"),r("hovertext")):delete t.marker;var u=r("hoveron");(u==="all"||u.indexOf("points")!==-1)&&r("hovertemplate"),V0.coerceSelectionMarkerOpacity(t,r)}function Hyt(e,t){var r,n;function i(l){return V0.coerce(n._input,n,g4,l)}for(var a=0;a{"use strict";var Gyt=ba(),jyt=Mr(),Wyt=p4();function n1e(e,t,r,n,i){for(var a=i+"Layout",o=!1,s=0;s{"use strict";var SV=uo(),HI=Qa(),Xyt=Rg(),$f=Mr(),i0=es().BADNUM,Fy=$f._;v1e.exports=function(t,r){var n=t._fullLayout,i=HI.getFromId(t,r.xaxis||"x"),a=HI.getFromId(t,r.yaxis||"y"),o=[],s=r.type==="violin"?"_numViolins":"_numBoxes",l,u,c,f,h,d,v;r.orientation==="h"?(c=i,f="x",h=a,d="y",v=!!r.yperiodalignment):(c=a,f="y",h=i,d="x",v=!!r.xperiodalignment);var x=Yyt(r,d,h,n[s]),b=x[0],p=x[1],E=$f.distinctVals(b,h),k=E.vals,A=E.minDiff/2,L,_,C,M,g,P,T=(r.boxpoints||r.points)==="all"?$f.identity:function(qt){return qt.vL.uf};if(r._hasPreCompStats){var F=r[f],q=function(qt){return c.d2c((r[qt]||[])[l])},V=1/0,H=-1/0;for(l=0;l=L.q1&&L.q3>=L.med){var G=q("lowerfence");L.lf=G!==i0&&G<=L.q1?G:u1e(L,C,M);var N=q("upperfence");L.uf=N!==i0&&N>=L.q3?N:c1e(L,C,M);var W=q("mean");L.mean=W!==i0?W:M?$f.mean(C,M):(L.q1+L.q3)/2;var re=q("sd");L.sd=W!==i0&&re>=0?re:M?$f.stdev(C,M,L.mean):L.q3-L.q1,L.lo=f1e(L),L.uo=h1e(L);var ae=q("notchspan");ae=ae!==i0&&ae>0?ae:d1e(L,M),L.ln=L.med-ae,L.un=L.med+ae;var _e=L.lf,Me=L.uf;r.boxpoints&&C.length&&(_e=Math.min(_e,C[0]),Me=Math.max(Me,C[M-1])),r.notched&&(_e=Math.min(_e,L.ln),Me=Math.max(Me,L.un)),L.min=_e,L.max=Me}else{$f.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+L.q1,"median = "+L.med,"q3 = "+L.q3].join(` +`));var ke;L.med!==i0?ke=L.med:L.q1!==i0?L.q3!==i0?ke=(L.q1+L.q3)/2:ke=L.q1:L.q3!==i0?ke=L.q3:ke=0,L.med=ke,L.q1=L.q3=ke,L.lf=L.uf=ke,L.mean=L.sd=ke,L.ln=L.un=ke,L.min=L.max=ke}V=Math.min(V,L.min),H=Math.max(H,L.max),L.pts2=_.filter(T),o.push(L)}}r._extremes[c._id]=HI.findExtremes(c,[V,H],{padded:!0})}else{var ge=c.makeCalcdata(r,f),ie=Kyt(k,A),Te=k.length,Ee=Jyt(Te);for(l=0;l=0&&Ae0){if(L={},L.pos=L[d]=k[l],_=L.pts=Ee[l].sort(s1e),C=L[f]=_.map(l1e),M=C.length,L.min=C[0],L.max=C[M-1],L.mean=$f.mean(C,M),L.sd=$f.stdev(C,M,L.mean)*r.sdmultiple,L.med=$f.interp(C,.5),M%2&&(Re||ce)){var Ge,nt;Re?(Ge=C.slice(0,M/2),nt=C.slice(M/2+1)):ce&&(Ge=C.slice(0,M/2+1),nt=C.slice(M/2)),L.q1=$f.interp(Ge,.5),L.q3=$f.interp(nt,.5)}else L.q1=$f.interp(C,.25),L.q3=$f.interp(C,.75);L.lf=u1e(L,C,M),L.uf=c1e(L,C,M),L.lo=f1e(L),L.uo=h1e(L);var ct=d1e(L,M);L.ln=L.med-ct,L.un=L.med+ct,ze=Math.min(ze,L.ln),Ce=Math.max(Ce,L.un),L.pts2=_.filter(T),o.push(L)}r.notched&&$f.isTypedArray(ge)&&(ge=Array.from(ge)),r._extremes[c._id]=HI.findExtremes(c,r.notched?ge.concat([ze,Ce]):ge,{padded:!0})}return $yt(o,r),o.length>0?(o[0].t={num:n[s],dPos:A,posLetter:d,valLetter:f,labels:{med:Fy(t,"median:"),min:Fy(t,"min:"),q1:Fy(t,"q1:"),q3:Fy(t,"q3:"),max:Fy(t,"max:"),mean:r.boxmean==="sd"||r.sizemode==="sd"?Fy(t,"mean \xB1 \u03C3:").replace("\u03C3",r.sdmultiple===1?"\u03C3":r.sdmultiple+"\u03C3"):Fy(t,"mean:"),lf:Fy(t,"lower fence:"),uf:Fy(t,"upper fence:")}},n[s]++,o):[{t:{empty:!0}}]};function Yyt(e,t,r,n){var i=t in e,a=t+"0"in e,o="d"+t in e;if(i||a&&o){var s=r.makeCalcdata(e,t),l=Xyt(e,r,t,s).vals;return[l,s]}var u;a?u=e[t+"0"]:"name"in e&&(r.type==="category"||SV(e.name)&&["linear","log"].indexOf(r.type)!==-1||$f.isDateTime(e.name)&&r.type==="date")?u=e.name:u=n;for(var c=r.type==="multicategory"?r.r2c_just_indices(u):r.d2c(u,0,e[t+"calendar"]),f=e._length,h=new Array(f),d=0;d{"use strict";var p1e=Qa(),Qyt=Mr(),e1t=Bb().getAxisGroup,g1e=["v","h"];function t1t(e,t){for(var r=e.calcdata,n=t.xaxis,i=t.yaxis,a=0;a1,E=1-a[e+"gap"],k=1-a[e+"groupgap"];for(l=0;l0;if(C==="positive"?(N=M*(_?1:.5),ae=re,W=ae=P):C==="negative"?(N=ae=P,W=M*(_?1:.5),_e=re):(N=W=M,ae=_e=re),Ee){var Ae=A.pointpos,ze=A.jitter,Ce=A.marker.size/2,me=0;Ae+ze>=0&&(me=re*(Ae+ze),me>N?(Te=!0,ge=Ce,Me=me):me>ae&&(ge=Ce,Me=N)),me<=N&&(Me=N);var Re=0;Ae-ze<=0&&(Re=-re*(Ae-ze),Re>W?(Te=!0,ie=Ce,ke=Re):Re>_e&&(ie=Ce,ke=W)),Re<=W&&(ke=W)}else Me=N,ke=W;var ce=new Array(c.length);for(u=0;u{"use strict";var MT=xa(),n2=Mr(),r1t=ao(),_1e=5,i1t=.01;function n1t(e,t,r,n){var i=e._context.staticPlot,a=t.xaxis,o=t.yaxis;n2.makeTraceGroups(n,r,"trace boxes").each(function(s){var l=MT.select(this),u=s[0],c=u.t,f=u.trace;if(c.wdPos=c.bdPos*f.whiskerwidth,f.visible!==!0||c.empty){l.remove();return}var h,d;f.orientation==="h"?(h=o,d=a):(h=a,d=o),x1e(l,{pos:h,val:d},f,c,i),b1e(l,{x:a,y:o},f,c),w1e(l,{pos:h,val:d},f,c)})}function x1e(e,t,r,n,i){var a=r.orientation==="h",o=t.val,s=t.pos,l=!!s.rangebreaks,u=n.bPos,c=n.wdPos||0,f=n.bPosPxOffset||0,h=r.whiskerwidth||0,d=r.showwhiskers!==!1,v=r.notched||!1,x=v?1-2*r.notchwidth:1,b,p;Array.isArray(n.bdPos)?(b=n.bdPos[0],p=n.bdPos[1]):(b=n.bdPos,p=n.bdPos);var E=e.selectAll("path.box").data(r.type!=="violin"||r.box.visible?n2.identity:[]);E.enter().append("path").style("vector-effect",i?"none":"non-scaling-stroke").attr("class","box"),E.exit().remove(),E.each(function(k){if(k.empty)return MT.select(this).attr("d","M0,0Z");var A=s.c2l(k.pos+u,!0),L=s.l2p(A-b)+f,_=s.l2p(A+p)+f,C=l?(L+_)/2:s.l2p(A)+f,M=r.whiskerwidth,g=l?L*M+(1-M)*C:s.l2p(A-c)+f,P=l?_*M+(1-M)*C:s.l2p(A+c)+f,T=s.l2p(A-b*x)+f,F=s.l2p(A+p*x)+f,q=r.sizemode==="sd",V=o.c2p(q?k.mean-k.sd:k.q1,!0),H=q?o.c2p(k.mean+k.sd,!0):o.c2p(k.q3,!0),X=n2.constrain(q?o.c2p(k.mean,!0):o.c2p(k.med,!0),Math.min(V,H)+1,Math.max(V,H)-1),G=k.lf===void 0||r.boxpoints===!1||q,N=o.c2p(G?k.min:k.lf,!0),W=o.c2p(G?k.max:k.uf,!0),re=o.c2p(k.ln,!0),ae=o.c2p(k.un,!0);a?MT.select(this).attr("d","M"+X+","+T+"V"+F+"M"+V+","+L+"V"+_+(v?"H"+re+"L"+X+","+F+"L"+ae+","+_:"")+"H"+H+"V"+L+(v?"H"+ae+"L"+X+","+T+"L"+re+","+L:"")+"Z"+(d?"M"+V+","+C+"H"+N+"M"+H+","+C+"H"+W+(h===0?"":"M"+N+","+g+"V"+P+"M"+W+","+g+"V"+P):"")):MT.select(this).attr("d","M"+T+","+X+"H"+F+"M"+L+","+V+"H"+_+(v?"V"+re+"L"+F+","+X+"L"+_+","+ae:"")+"V"+H+"H"+L+(v?"V"+ae+"L"+T+","+X+"L"+L+","+re:"")+"Z"+(d?"M"+C+","+V+"V"+N+"M"+C+","+H+"V"+W+(h===0?"":"M"+g+","+N+"H"+P+"M"+g+","+W+"H"+P):""))})}function b1e(e,t,r,n){var i=t.x,a=t.y,o=n.bdPos,s=n.bPos,l=r.boxpoints||r.points;n2.seedPseudoRandom();var u=function(h){return h.forEach(function(d){d.t=n,d.trace=r}),h},c=e.selectAll("g.points").data(l?u:[]);c.enter().append("g").attr("class","points"),c.exit().remove();var f=c.selectAll("path").data(function(h){var d,v=h.pts2,x=Math.max((h.max-h.min)/10,h.q3-h.q1),b=x*1e-9,p=x*i1t,E=[],k=0,A;if(r.jitter){if(x===0)for(k=1,E=new Array(v.length),d=0;dh.lo&&(P.so=!0)}return v});f.enter().append("path").classed("point",!0),f.exit().remove(),f.call(r1t.translatePoints,i,a)}function w1e(e,t,r,n){var i=t.val,a=t.pos,o=!!a.rangebreaks,s=n.bPos,l=n.bPosPxOffset||0,u=r.boxmean||(r.meanline||{}).visible,c,f;Array.isArray(n.bdPos)?(c=n.bdPos[0],f=n.bdPos[1]):(c=n.bdPos,f=n.bdPos);var h=e.selectAll("path.mean").data(r.type==="box"&&r.boxmean||r.type==="violin"&&r.box.visible&&r.meanline.visible?n2.identity:[]);h.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),h.exit().remove(),h.each(function(d){var v=a.c2l(d.pos+s,!0),x=a.l2p(v-c)+l,b=a.l2p(v+f)+l,p=o?(x+b)/2:a.l2p(v)+l,E=i.c2p(d.mean,!0),k=i.c2p(d.mean-d.sd,!0),A=i.c2p(d.mean+d.sd,!0);r.orientation==="h"?MT.select(this).attr("d","M"+E+","+x+"V"+b+(u==="sd"?"m0,0L"+k+","+p+"L"+E+","+x+"L"+A+","+p+"Z":"")):MT.select(this).attr("d","M"+x+","+E+"H"+b+(u==="sd"?"m0,0L"+p+","+k+"L"+x+","+E+"L"+p+","+A+"Z":""))})}T1e.exports={plot:n1t,plotBoxAndWhiskers:x1e,plotPoints:b1e,plotBoxMean:w1e}});var WI=ye((Gor,A1e)=>{"use strict";var EV=xa(),kV=va(),CV=ao();function a1t(e,t,r){var n=r||EV.select(e).selectAll("g.trace.boxes");n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=EV.select(this),o=i[0].trace,s=o.line.width;function l(f,h,d,v){f.style("stroke-width",h+"px").call(kV.stroke,d).call(kV.fill,v)}var u=a.selectAll("path.box");if(o.type==="candlestick")u.each(function(f){if(!f.empty){var h=EV.select(this),d=o[f.dir];l(h,d.line.width,d.line.color,d.fillcolor),h.style("opacity",o.selectedpoints&&!f.selected?.3:1)}});else{l(u,s,o.line.color,o.fillcolor),a.selectAll("path.mean").style({"stroke-width":s,"stroke-dasharray":2*s+"px,"+s+"px"}).call(kV.stroke,o.line.color);var c=a.selectAll("path.point");CV.pointStyle(c,o,e)}})}function o1t(e,t,r){var n=t[0].trace,i=r.selectAll("path.point");n.selectedpoints?CV.selectedPointStyle(i,n):CV.pointStyle(i,n,e)}A1e.exports={style:a1t,styleOnSelect:o1t}});var PV=ye((jor,k1e)=>{"use strict";var s1t=Qa(),LV=Mr(),S_=Nc(),S1e=va(),l1t=LV.fillText;function u1t(e,t,r,n){var i=e.cd,a=i[0].trace,o=a.hoveron,s=[],l;return o.indexOf("boxes")!==-1&&(s=s.concat(M1e(e,t,r,n))),o.indexOf("points")!==-1&&(l=E1e(e,t,r)),n==="closest"?l?[l]:s:(l&&s.push(l),s)}function M1e(e,t,r,n){var i=e.cd,a=e.xa,o=e.ya,s=i[0].trace,l=i[0].t,u=s.type==="violin",c,f,h,d,v,x,b,p,E,k,A,L=l.bdPos,_,C,M=l.wHover,g=function(Ce){return h.c2l(Ce.pos)+l.bPos-h.c2l(x)};u&&s.side!=="both"?(s.side==="positive"&&(E=function(Ce){var me=g(Ce);return S_.inbox(me,me+M,k)},_=L,C=0),s.side==="negative"&&(E=function(Ce){var me=g(Ce);return S_.inbox(me-M,me,k)},_=0,C=L)):(E=function(Ce){var me=g(Ce);return S_.inbox(me-M,me+M,k)},_=C=L);var P;u?P=function(Ce){return S_.inbox(Ce.span[0]-v,Ce.span[1]-v,k)}:P=function(Ce){return S_.inbox(Ce.min-v,Ce.max-v,k)},s.orientation==="h"?(v=t,x=r,b=P,p=E,c="y",h=o,f="x",d=a):(v=r,x=t,b=E,p=P,c="x",h=a,f="y",d=o);var T=Math.min(1,L/Math.abs(h.r2c(h.range[1])-h.r2c(h.range[0])));k=e.maxHoverDistance-T,A=e.maxSpikeDistance-T;function F(Ce){return(b(Ce)+p(Ce))/2}var q=S_.getDistanceFunction(n,b,p,F);if(S_.getClosest(i,q,e),e.index===!1)return[];var V=i[e.index],H=s.line.color,X=(s.marker||{}).color;S1e.opacity(H)&&s.line.width?e.color=H:S1e.opacity(X)&&s.boxpoints?e.color=X:e.color=s.fillcolor,e[c+"0"]=h.c2p(V.pos+l.bPos-C,!0),e[c+"1"]=h.c2p(V.pos+l.bPos+_,!0),e[c+"LabelVal"]=V.orig_p!==void 0?V.orig_p:V.pos;var G=c+"Spike";e.spikeDistance=F(V)*A/k,e[G]=h.c2p(V.pos,!0);var N=s.boxmean||s.sizemode==="sd"||(s.meanline||{}).visible,W=s.boxpoints||s.points,re=W&&N?["max","uf","q3","med","mean","q1","lf","min"]:W&&!N?["max","uf","q3","med","q1","lf","min"]:!W&&N?["max","q3","med","mean","q1","min"]:["max","q3","med","q1","min"],ae=d.range[1]{"use strict";C1e.exports=function(t,r){return r.hoverOnBox&&(t.hoverOnBox=r.hoverOnBox),"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var IV=ye((Zor,P1e)=>{"use strict";P1e.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l;if(r===!1)for(s=0;s{"use strict";I1e.exports={attributes:v4(),layoutAttributes:p4(),supplyDefaults:m4().supplyDefaults,crossTraceDefaults:m4().crossTraceDefaults,supplyLayoutDefaults:VI().supplyLayoutDefaults,calc:MV(),crossTraceCalc:GI().crossTraceCalc,plot:jI().plot,style:WI().style,styleOnSelect:WI().styleOnSelect,hoverPoints:PV().hoverPoints,eventData:L1e(),selectPoints:IV(),moduleType:"trace",name:"box",basePlotModule:Jf(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","boxLayout","zoomScale"],meta:{}}});var z1e=ye((Yor,D1e)=>{"use strict";D1e.exports=R1e()});var ET=ye((Kor,F1e)=>{"use strict";var n0=Uc(),c1t=vl(),f1t=Su(),RV=Oc().axisHoverFormat,h1t=Wo().hovertemplateAttrs,d1t=Wo().texttemplateAttrs,v1t=Jl(),Pp=no().extendFlat;F1e.exports=Pp({z:{valType:"data_array",editType:"calc"},x:Pp({},n0.x,{impliedEdits:{xtype:"array"}}),x0:Pp({},n0.x0,{impliedEdits:{xtype:"scaled"}}),dx:Pp({},n0.dx,{impliedEdits:{xtype:"scaled"}}),y:Pp({},n0.y,{impliedEdits:{ytype:"array"}}),y0:Pp({},n0.y0,{impliedEdits:{ytype:"scaled"}}),dy:Pp({},n0.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:Pp({},n0.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:Pp({},n0.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:Pp({},n0.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:Pp({},n0.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:Pp({},n0.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:Pp({},n0.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:RV("x"),yhoverformat:RV("y"),zhoverformat:RV("z",1),hovertemplate:h1t(),texttemplate:d1t({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),textfont:f1t({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:Pp({},c1t.showlegend,{dflt:!1}),zorder:n0.zorder},v1t("",{cLetter:"z",autoColorDflt:!1}))});var XI=ye((Jor,O1e)=>{"use strict";var p1t=uo(),ZI=Mr(),g1t=ba();O1e.exports=function(t,r,n,i,a,o){var s=n("z");a=a||"x",o=o||"y";var l,u;if(s===void 0||!s.length)return 0;if(ZI.isArray1D(s)){l=n(a),u=n(o);var c=ZI.minRowLength(l),f=ZI.minRowLength(u);if(c===0||f===0)return 0;r._length=Math.min(c,f,s.length)}else{if(l=q1e(a,n),u=q1e(o,n),!m1t(s))return 0;n("transpose"),r._length=null}var h=g1t.getComponentMethod("calendars","handleTraceDefaults");return h(t,r,[a,o],i),!0};function q1e(e,t){var r=t(e),n=r?t(e+"type","array"):"scaled";return n==="scaled"&&(t(e+"0"),t("d"+e)),r}function m1t(e){for(var t=!0,r=!1,n=!1,i,a=0;a0&&(r=!0);for(var o=0;o{"use strict";var B1e=Mr();N1e.exports=function(t,r){t("texttemplate");var n=B1e.extendFlat({},r.font,{color:"auto",size:"auto"});B1e.coerceFont(t,"textfont",n)}});var DV=ye((Qor,U1e)=>{"use strict";U1e.exports=function(t,r,n){var i=n("zsmooth");i===!1&&(n("xgap"),n("ygap")),n("zhoverformat")}});var G1e=ye((esr,H1e)=>{"use strict";var V1e=Mr(),y1t=XI(),_1t=y4(),x1t=Pg(),b1t=DV(),w1t=Uh(),T1t=ET();H1e.exports=function(t,r,n,i){function a(s,l){return V1e.coerce(t,r,T1t,s,l)}var o=y1t(t,r,a,i);if(!o){r.visible=!1;return}x1t(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hovertemplate"),_1t(a,i),b1t(t,r,a,i),a("hoverongaps"),a("connectgaps",V1e.isArray1D(r.z)&&r.zsmooth!==!1),w1t(t,r,i,a,{prefix:"",cLetter:"z"}),a("zorder")}});var zV=ye((tsr,j1e)=>{"use strict";var kT=uo();j1e.exports={count:function(e,t,r){return r[e]++,1},sum:function(e,t,r,n){var i=n[t];return kT(i)?(i=Number(i),r[e]+=i,i):0},avg:function(e,t,r,n,i){var a=n[t];return kT(a)&&(a=Number(a),r[e]+=a,i[e]++),0},min:function(e,t,r,n){var i=n[t];if(kT(i))if(i=Number(i),kT(r[e])){if(r[e]>i){var a=i-r[e];return r[e]=i,a}}else return r[e]=i,i;return 0},max:function(e,t,r,n){var i=n[t];if(kT(i))if(i=Number(i),kT(r[e])){if(r[e]{"use strict";W1e.exports={percent:function(e,t){for(var r=e.length,n=100/t,i=0;i{"use strict";Z1e.exports=function(t,r){for(var n=t.length,i=0,a=0;a{"use strict";var CT=es(),a2=CT.ONEAVGYEAR,X1e=CT.ONEAVGMONTH,KI=CT.ONEDAY,Y1e=CT.ONEHOUR,K1e=CT.ONEMIN,J1e=CT.ONESEC,$1e=Qa().tickIncrement;t_e.exports=function(t,r,n,i,a){var o=-1.1*r,s=-.1*r,l=t-s,u=n[0],c=n[1],f=Math.min(YI(u+s,u+l,i,a),YI(c+s,c+l,i,a)),h=Math.min(YI(u+o,u+s,i,a),YI(c+o,c+s,i,a)),d,v;if(f>h&&hKI){var x=d===a2?1:6,b=d===a2?"M12":"M1";return function(p,E){var k=i.c2d(p,a2,a),A=k.indexOf("-",x);A>0&&(k=k.substr(0,A));var L=i.d2c(k,0,a);if(LJ1e?e>KI?e>a2*1.1?a2:e>X1e*1.1?X1e:KI:e>Y1e?Y1e:e>K1e?K1e:J1e:Math.pow(10,Math.floor(Math.log(e)/Math.LN10))}function A1t(e,t,r,n,i,a){if(n&&e>KI){var o=e_e(t,i,a),s=e_e(r,i,a),l=e===a2?0:1;return o[l]!==s[l]}return Math.floor(r/e)-Math.floor(t/e)>.1}function e_e(e,t,r){var n=t.c2d(e,a2,r).split("-");return n[0]===""&&(n.unshift(),n[0]="-"+n[0]),n}});var UV=ye((asr,n_e)=>{"use strict";var BV=uo(),Vv=Mr(),r_e=ba(),H0=Qa(),S1t=c4(),i_e=zV(),M1t=FV(),E1t=qV(),k1t=OV();function C1t(e,t){var r=[],n=[],i=t.orientation==="h",a=H0.getFromId(e,i?t.yaxis:t.xaxis),o=i?"y":"x",s={x:"y",y:"x"}[o],l=t[o+"calendar"],u=t.cumulative,c,f=NV(e,t,a,o),h=f[0],d=f[1],v=typeof h.size=="string",x=[],b=v?x:h,p=[],E=[],k=[],A=0,L=t.histnorm,_=t.histfunc,C=L.indexOf("density")!==-1,M,g,P;u.enabled&&C&&(L=L.replace(/ ?density$/,""),C=!1);var T=_==="max"||_==="min",F=T?null:0,q=i_e.count,V=M1t[L],H=!1,X=function(me){return a.r2c(me,0,l)},G;for(Vv.isArrayOrTypedArray(t[s])&&_!=="count"&&(G=t[s],H=_==="avg",q=i_e[_]),c=X(h.start),g=X(h.end)+(c-H0.tickIncrement(c,h.size,!1,l))/1e6;c=0&&P=Ae;c--)if(n[c]){ze=c;break}for(c=Ae;c<=ze;c++)if(BV(r[c])&&BV(n[c])){var Ce={p:r[c],s:n[c],b:0};u.enabled||(Ce.pts=k[c],ae?Ce.ph0=Ce.ph1=k[c].length?d[k[c][0]]:r[c]:(t._computePh=!0,Ce.ph0=ie(x[c]),Ce.ph1=ie(x[c+1],!0))),Ee.push(Ce)}return Ee.length===1&&(Ee[0].width1=H0.tickIncrement(Ee[0].p,h.size,!1,l)-Ee[0].p),S1t(Ee,t),Vv.isArrayOrTypedArray(t.selectedpoints)&&Vv.tagSelected(Ee,t,ke),Ee}function NV(e,t,r,n,i){var a=n+"bins",o=e._fullLayout,s=t["_"+n+"bingroup"],l=o._histogramBinOpts[s],u=o.barmode==="overlay",c,f,h,d,v,x,b,p=function(ge){return r.r2c(ge,0,d)},E=function(ge){return r.c2r(ge,0,d)},k=r.type==="date"?function(ge){return ge||ge===0?Vv.cleanDate(ge,null,d):null}:function(ge){return BV(ge)?Number(ge):null};function A(ge,ie,Te){ie[ge+"Found"]?(ie[ge]=k(ie[ge]),ie[ge]===null&&(ie[ge]=Te[ge])):(x[ge]=ie[ge]=Te[ge],Vv.nestedProperty(f[0],a+"."+ge).set(Te[ge]))}if(t["_"+n+"autoBinFinished"])delete t["_"+n+"autoBinFinished"];else{f=l.traces;var L=[],_=!0,C=!1,M=!1;for(c=0;cr.r2l(G)&&(W=H0.tickIncrement(W,l.size,!0,d)),q.start=r.l2r(W),X||Vv.nestedProperty(t,a+".start").set(q.start)}var re=l.end,ae=r.r2l(F.end),_e=ae!==void 0;if((l.endFound||_e)&&ae!==r.r2l(re)){var Me=_e?ae:Vv.aggNums(Math.max,null,v);q.end=r.l2r(Me),_e||Vv.nestedProperty(t,a+".start").set(q.end)}var ke="autobin"+n;return t._input[ke]===!1&&(t._input[a]=Vv.extendFlat({},t[a]||{}),delete t._input[ke],delete t[ke]),[q,v]}function L1t(e,t,r,n,i){var a=e._fullLayout,o=P1t(e,t),s=!1,l=1/0,u=[t],c,f,h;for(c=0;c=0;n--)s(n);else if(t==="increasing"){for(n=1;n=0;n--)e[n]+=e[n+1];r==="exclude"&&(e.push(0),e.shift())}}n_e.exports={calc:C1t,calcAllAutoBins:NV}});var h_e=ye((osr,f_e)=>{"use strict";var a_e=Mr(),LT=Qa(),o_e=zV(),R1t=FV(),D1t=qV(),z1t=OV(),s_e=UV().calcAllAutoBins;f_e.exports=function(t,r){var n=LT.getFromId(t,r.xaxis),i=LT.getFromId(t,r.yaxis),a=r.xcalendar,o=r.ycalendar,s=function(Et){return n.r2c(Et,0,a)},l=function(Et){return i.r2c(Et,0,o)},u=function(Et){return n.c2r(Et,0,a)},c=function(Et){return i.c2r(Et,0,o)},f,h,d,v,x=s_e(t,r,n,"x"),b=x[0],p=x[1],E=s_e(t,r,i,"y"),k=E[0],A=E[1],L=r._length;p.length>L&&p.splice(L,p.length-L),A.length>L&&A.splice(L,A.length-L);var _=[],C=[],M=[],g=typeof b.size=="string",P=typeof k.size=="string",T=[],F=[],q=g?T:b,V=P?F:k,H=0,X=[],G=[],N=r.histnorm,W=r.histfunc,re=N.indexOf("density")!==-1,ae=W==="max"||W==="min",_e=ae?null:0,Me=o_e.count,ke=R1t[N],ge=!1,ie=[],Te=[],Ee="z"in r?r.z:"marker"in r&&Array.isArray(r.marker.color)?r.marker.color:"";Ee&&W!=="count"&&(ge=W==="avg",Me=o_e[W]);var Ae=b.size,ze=s(b.start),Ce=s(b.end)+(ze-LT.tickIncrement(ze,Ae,!1,a))/1e6;for(f=ze;f=0&&d=0&&v{"use strict";var Im=Mr(),d_e=es().BADNUM,v_e=Rg();p_e.exports=function(t,r,n,i,a,o){var s=t._length,l=r.makeCalcdata(t,i),u=n.makeCalcdata(t,a);l=v_e(t,r,i,l).vals,u=v_e(t,n,a,u).vals;var c=t.text,f=c!==void 0&&Im.isArray1D(c),h=t.hovertext,d=h!==void 0&&Im.isArray1D(h),v,x,b=Im.distinctVals(l),p=b.vals,E=Im.distinctVals(u),k=E.vals,A=[],L,_,C=k.length,M=p.length;for(v=0;v{"use strict";var F1t=uo(),q1t=Mr(),$I=es().BADNUM;g_e.exports=function(t,r,n,i){var a,o,s,l,u,c;function f(p){if(F1t(p))return+p}if(r&&r.transpose){for(a=0,u=0;u{"use strict";var O1t=Mr(),m_e=.01,B1t=[[-1,0],[1,0],[0,-1],[0,1]];function N1t(e){return .5-.25*Math.min(1,e*.5)}__e.exports=function(t,r){var n=1,i;for(y_e(t,r),i=0;im_e;i++)n=y_e(t,r,N1t(n));return n>m_e&&O1t.log("interp2d didn't converge quickly",n),t};function y_e(e,t,r){var n=0,i,a,o,s,l,u,c,f,h,d,v,x,b;for(s=0;sx&&(n=Math.max(n,Math.abs(e[a][o]-v)/(b-x))))}return n}});var t8=ye((csr,x_e)=>{"use strict";var U1t=Mr().maxRowLength;x_e.exports=function(t){var r=[],n={},i=[],a=t[0],o=[],s=[0,0,0],l=U1t(t),u,c,f,h,d,v,x,b;for(c=0;c=0;d--)h=i[d],c=h[0],f=h[1],v=((n[[c-1,f]]||s)[2]+(n[[c+1,f]]||s)[2]+(n[[c,f-1]]||s)[2]+(n[[c,f+1]]||s)[2])/20,v&&(x[h]=[c,f,v],i.splice(d,1),b=!0);if(!b)throw"findEmpties iterated with no new neighbors";for(h in x)n[h]=x[h],r.push(x[h])}return r.sort(function(p,E){return E[2]-p[2]})}});var VV=ye((fsr,T_e)=>{"use strict";var b_e=ba(),w_e=Mr().isArrayOrTypedArray;T_e.exports=function(t,r,n,i,a,o){var s=[],l=b_e.traceIs(t,"contour"),u=b_e.traceIs(t,"histogram"),c,f,h,d=w_e(r)&&r.length>1;if(d&&!u&&o.type!=="category"){var v=r.length;if(v<=a){if(l)s=Array.from(r).slice(0,a);else if(a===1)o.type==="log"?s=[.5*r[0],2*r[0]]:s=[r[0]-.5,r[0]+.5];else if(o.type==="log"){for(s=[Math.pow(r[0],1.5)/Math.pow(r[1],.5)],h=1;h{"use strict";var A_e=ba(),HV=Mr(),r8=Qa(),S_e=Rg(),V1t=h_e(),H1t=zv(),G1t=JI(),j1t=QI(),W1t=e8(),Z1t=t8(),i8=VV(),GV=es().BADNUM;E_e.exports=function(t,r){var n=r8.getFromId(t,r.xaxis||"x"),i=r8.getFromId(t,r.yaxis||"y"),a=A_e.traceIs(r,"contour"),o=A_e.traceIs(r,"histogram"),s=a?"best":r.zsmooth,l,u,c,f,h,d,v,x,b,p,E;if(n._minDtick=0,i._minDtick=0,o)E=V1t(t,r),f=E.orig_x,l=E.x,u=E.x0,c=E.dx,x=E.orig_y,h=E.y,d=E.y0,v=E.dy,b=E.z;else{var k=r.z;HV.isArray1D(k)?(G1t(r,n,i,"x","y",["z"]),l=r._x,h=r._y,k=r._z):(f=r.x?n.makeCalcdata(r,"x"):[],x=r.y?i.makeCalcdata(r,"y"):[],l=S_e(r,n,"x",f).vals,h=S_e(r,i,"y",x).vals,r._x=l,r._y=h),u=r.x0,c=r.dx,d=r.y0,v=r.dy,b=j1t(k,r,n,i)}(n.rangebreaks||i.rangebreaks)&&(b=X1t(l,h,b),o||(l=M_e(l),h=M_e(h),r._x=l,r._y=h)),!o&&(a||r.connectgaps)&&(r._emptypoints=Z1t(b),W1t(b,r._emptypoints));function A(q){s=r._input.zsmooth=r.zsmooth=!1,HV.warn('cannot use zsmooth: "fast": '+q)}function L(q){if(q.length>1){var V=(q[q.length-1]-q[0])/(q.length-1),H=Math.abs(V/100);for(p=0;pH)return!1}return!0}r._islinear=!1,n.type==="log"||i.type==="log"?s==="fast"&&A("log axis found"):L(l)?L(h)?r._islinear=!0:s==="fast"&&A("y scale is not linear"):s==="fast"&&A("x scale is not linear");var _=HV.maxRowLength(b),C=r.xtype==="scaled"?"":l,M=i8(r,C,u,c,_,n),g=r.ytype==="scaled"?"":h,P=i8(r,g,d,v,b.length,i);r._extremes[n._id]=r8.findExtremes(n,M),r._extremes[i._id]=r8.findExtremes(i,P);var T={x:M,y:P,z:b,text:r._text||r.text,hovertext:r._hovertext||r.hovertext};if(r.xperiodalignment&&f&&(T.orig_x=f),r.yperiodalignment&&x&&(T.orig_y=x),C&&C.length===M.length-1&&(T.xCenter=C),g&&g.length===P.length-1&&(T.yCenter=g),o&&(T.xRanges=E.xRanges,T.yRanges=E.yRanges,T.pts=E.pts),a||H1t(t,r,{vals:b,cLetter:"z"}),a&&r.contours&&r.contours.coloring==="heatmap"){var F={type:r.type==="contour"?"heatmap":"histogram2d",xcalendar:r.xcalendar,ycalendar:r.ycalendar};T.xfill=i8(F,C,u,c,_,n),T.yfill=i8(F,g,d,v,b.length,i)}return[T]};function M_e(e){for(var t=[],r=e.length,n=0;n{"use strict";a8.CSS_DECLARATIONS=[["image-rendering","optimizeSpeed"],["image-rendering","-moz-crisp-edges"],["image-rendering","-o-crisp-edges"],["image-rendering","-webkit-optimize-contrast"],["image-rendering","optimize-contrast"],["image-rendering","crisp-edges"],["image-rendering","pixelated"]];a8.STYLE=a8.CSS_DECLARATIONS.map(function(e){return e.join(": ")+"; "}).join("")});var jV=ye((vsr,L_e)=>{"use strict";var k_e=o8(),Y1t=ao(),C_e=Mr(),PT=null;function K1t(){if(PT!==null)return PT;PT=!1;var e=C_e.isSafari()||C_e.isIOS();if(window.navigator.userAgent&&!e){var t=Array.from(k_e.CSS_DECLARATIONS).reverse(),r=window.CSS&&window.CSS.supports||window.supportsCSS;if(typeof r=="function")PT=t.some(function(o){return r.apply(null,o)});else{var n=Y1t.tester.append("image").attr("style",k_e.STYLE),i=window.getComputedStyle(n.node()),a=i.imageRendering;PT=t.some(function(o){var s=o[1];return a===s||a===s.toLowerCase()}),n.remove()}}return PT}L_e.exports=K1t});var s8=ye((psr,B_e)=>{"use strict";var P_e=xa(),J1t=id(),$1t=ba(),Q1t=ao(),e_t=Qa(),G0=Mr(),I_e=Pl(),t_t=$P(),r_t=va(),i_t=Mu().extractOpts,n_t=Mu().makeColorScaleFuncFromTrace,a_t=Zp(),o_t=Nh(),WV=o_t.LINE_SPACING,s_t=jV(),l_t=o8().STYLE,q_e="heatmap-label";function O_e(e){return e.selectAll("g."+q_e)}function R_e(e){O_e(e).remove()}B_e.exports=function(e,t,r,n){var i=t.xaxis,a=t.yaxis;G0.makeTraceGroups(n,r,"hm").each(function(o){var s=P_e.select(this),l=o[0],u=l.trace,c=u.xgap||0,f=u.ygap||0,h=l.z,d=l.x,v=l.y,x=l.xCenter,b=l.yCenter,p=$1t.traceIs(u,"contour"),E=p?"best":u.zsmooth,k=h.length,A=G0.maxRowLength(h),L=!1,_=!1,C,M,g,P,T,F,q,V;for(F=0;C===void 0&&F0;)M=i.c2p(d[F]),F--;for(M0;)T=a.c2p(v[F]),F--;T=i._length||M<=0||P>=a._length||T<=0;if(W){var re=s.selectAll("image").data([]);re.exit().remove(),R_e(s);return}var ae,_e;H==="fast"?(ae=A,_e=k):(ae=G,_e=N);var Me=document.createElement("canvas");Me.width=ae,Me.height=_e;var ke=Me.getContext("2d",{willReadFrequently:!0}),ge=n_t(u,{noNumericCheck:!0,returnArray:!0}),ie,Te;H==="fast"?(ie=L?function(Pi){return A-1-Pi}:G0.identity,Te=_?function(Pi){return k-1-Pi}:G0.identity):(ie=function(Pi){return G0.constrain(Math.round(i.c2p(d[Pi])-C),0,G)},Te=function(Pi){return G0.constrain(Math.round(a.c2p(v[Pi])-P),0,N)});var Ee=Te(0),Ae=[Ee,Ee],ze=L?0:1,Ce=_?0:1,me=0,Re=0,ce=0,Ge=0,nt,ct,qt,rt,ot;function Rt(Pi,Gi){if(Pi!==void 0){var Ki=ge(Pi);return Ki[0]=Math.round(Ki[0]),Ki[1]=Math.round(Ki[1]),Ki[2]=Math.round(Ki[2]),me+=Gi,Re+=Ki[0]*Gi,ce+=Ki[1]*Gi,Ge+=Ki[2]*Gi,Ki}return[0,0,0,0]}function kt(Pi,Gi,Ki,ka){var jn=Pi[Ki.bin0];if(jn===void 0)return Rt(void 0,1);var la=Pi[Ki.bin1],Fa=Gi[Ki.bin0],Ra=Gi[Ki.bin1],jo=la-jn||0,oa=Fa-jn||0,Sn;return la===void 0?Ra===void 0?Sn=0:Fa===void 0?Sn=2*(Ra-jn):Sn=(2*Ra-Fa-jn)*2/3:Ra===void 0?Fa===void 0?Sn=0:Sn=(2*jn-la-Fa)*2/3:Fa===void 0?Sn=(2*Ra-la-jn)*2/3:Sn=Ra+jn-la-Fa,Rt(jn+Ki.frac*jo+ka.frac*(oa+Ki.frac*Sn))}if(H!=="default"){var Ct=0,Yt;try{Yt=new Uint8Array(ae*_e*4)}catch(Pi){Yt=new Array(ae*_e*4)}if(H==="smooth"){var xr=x||d,er=b||v,Ke=new Array(xr.length),xt=new Array(er.length),bt=new Array(G),Lt=x?z_e:D_e,St=b?z_e:D_e,Et,dt,Ht;for(F=0;Far||ar>a._length))for(q=Se;qai||ai>i._length)){var jr=t_t({x:Qr,y:Vt},u,e._fullLayout);jr.x=Qr,jr.y=Vt;var ri=l.z[F][q];ri===void 0?(jr.z="",jr.zLabel=""):(jr.z=ri,jr.zLabel=e_t.tickText(Ve,ri,"hover").text);var bi=l.text&&l.text[F]&&l.text[F][q];(bi===void 0||bi===!1)&&(bi=""),jr.text=bi;var nn=G0.texttemplateString(Ne,jr,e._fullLayout._d3locale,jr,u._meta||{});if(nn){var Wi=nn.split("
"),Ni=Wi.length,_n=0;for(V=0;V{"use strict";N_e.exports={min:"zmin",max:"zmax"}});var l8=ye((msr,U_e)=>{"use strict";var u_t=xa();U_e.exports=function(t){u_t.select(t).selectAll(".hm image").style("opacity",function(r){return r.trace.opacity})}});var c8=ye((ysr,H_e)=>{"use strict";var V_e=Nc(),_4=Mr(),u8=_4.isArrayOrTypedArray,c_t=Qa(),f_t=Mu().extractOpts;H_e.exports=function(t,r,n,i,a){a||(a={});var o=a.isContour,s=t.cd[0],l=s.trace,u=t.xa,c=t.ya,f=s.x,h=s.y,d=s.z,v=s.xCenter,x=s.yCenter,b=s.zmask,p=l.zhoverformat,E=f,k=h,A,L,_,C;if(t.index!==!1){try{_=Math.round(t.index[1]),C=Math.round(t.index[0])}catch(re){_4.error("Error hovering on heatmap, pointNumber must be [row,col], found:",t.index);return}if(_<0||_>=d[0].length||C<0||C>d.length)return}else{if(V_e.inbox(r-f[0],r-f[f.length-1],0)>0||V_e.inbox(n-h[0],n-h[h.length-1],0)>0)return;if(o){var M;for(E=[2*f[0]-f[1]],M=1;M{"use strict";G_e.exports={attributes:ET(),supplyDefaults:G1e(),calc:n8(),plot:s8(),colorbar:M_(),style:l8(),hoverPoints:c8(),moduleType:"trace",name:"heatmap",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","showLegend"],meta:{}}});var Z_e=ye((xsr,W_e)=>{"use strict";W_e.exports=j_e()});var ZV=ye((bsr,X_e)=>{"use strict";X_e.exports=function(t,r){return{start:{valType:"any",editType:"calc"},end:{valType:"any",editType:"calc"},size:{valType:"any",editType:"calc"},editType:"calc"}}});var K_e=ye((wsr,Y_e)=>{"use strict";Y_e.exports={eventDataKeys:["binNumber"]}});var f8=ye((Tsr,Q_e)=>{"use strict";var Ip=Lm(),J_e=Oc().axisHoverFormat,h_t=Wo().hovertemplateAttrs,d_t=Wo().texttemplateAttrs,XV=Su(),$_e=ZV(),v_t=K_e(),YV=no().extendFlat;Q_e.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},xhoverformat:J_e("x"),yhoverformat:J_e("y"),text:YV({},Ip.text,{}),hovertext:YV({},Ip.hovertext,{}),orientation:Ip.orientation,histfunc:{valType:"enumerated",values:["count","sum","avg","min","max"],dflt:"count",editType:"calc"},histnorm:{valType:"enumerated",values:["","percent","probability","density","probability density"],dflt:"",editType:"calc"},cumulative:{enabled:{valType:"boolean",dflt:!1,editType:"calc"},direction:{valType:"enumerated",values:["increasing","decreasing"],dflt:"increasing",editType:"calc"},currentbin:{valType:"enumerated",values:["include","exclude","half"],dflt:"include",editType:"calc"},editType:"calc"},nbinsx:{valType:"integer",min:0,dflt:0,editType:"calc"},xbins:$_e("x",!0),nbinsy:{valType:"integer",min:0,dflt:0,editType:"calc"},ybins:$_e("y",!0),autobinx:{valType:"boolean",dflt:null,editType:"calc"},autobiny:{valType:"boolean",dflt:null,editType:"calc"},bingroup:{valType:"string",dflt:"",editType:"calc"},hovertemplate:h_t({},{keys:v_t.eventDataKeys}),texttemplate:d_t({arrayOk:!1,editType:"plot"},{keys:["label","value"]}),textposition:YV({},Ip.textposition,{arrayOk:!1}),textfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),outsidetextfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextanchor:Ip.insidetextanchor,textangle:Ip.textangle,cliponaxis:Ip.cliponaxis,constraintext:Ip.constraintext,marker:Ip.marker,offsetgroup:Ip.offsetgroup,alignmentgroup:Ip.alignmentgroup,selected:Ip.selected,unselected:Ip.unselected,zorder:Ip.zorder}});var ixe=ye((Asr,rxe)=>{"use strict";var exe=ba(),x4=Mr(),txe=va(),p_t=r0().handleText,g_t=FI(),m_t=f8();rxe.exports=function(t,r,n,i){function a(E,k){return x4.coerce(t,r,m_t,E,k)}var o=a("x"),s=a("y"),l=a("cumulative.enabled");l&&(a("cumulative.direction"),a("cumulative.currentbin")),a("text");var u=a("textposition");p_t(t,r,i,a,u,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat");var c=a("orientation",s&&!o?"h":"v"),f=c==="v"?"x":"y",h=c==="v"?"y":"x",d=o&&s?Math.min(x4.minRowLength(o)&&x4.minRowLength(s)):x4.minRowLength(r[f]||[]);if(!d){r.visible=!1;return}r._length=d;var v=exe.getComponentMethod("calendars","handleTraceDefaults");v(t,r,["x","y"],i);var x=r[h];x&&a("histfunc"),a("histnorm"),a("autobin"+f),g_t(t,r,a,n,i),x4.coerceSelectionMarkerOpacity(r,a);var b=(r.marker.line||{}).color,p=exe.getComponentMethod("errorbars","supplyDefaults");p(t,r,b||txe.defaultLine,{axis:"y"}),p(t,r,b||txe.defaultLine,{axis:"x",inherit:"y"}),a("zorder")}});var d8=ye((Ssr,oxe)=>{"use strict";var b4=Mr(),y_t=af(),h8=ba().traceIs,__t=Hb(),x_t=r0().validateCornerradius,nxe=b4.nestedProperty,KV=Bb().getAxisGroup,axe=[{aStr:{x:"xbins.start",y:"ybins.start"},name:"start"},{aStr:{x:"xbins.end",y:"ybins.end"},name:"end"},{aStr:{x:"xbins.size",y:"ybins.size"},name:"size"},{aStr:{x:"nbinsx",y:"nbinsy"},name:"nbins"}],b_t=["x","y"];oxe.exports=function(t,r){var n=r._histogramBinOpts={},i=[],a={},o=[],s,l,u,c,f,h,d;function v(H,X){return b4.coerce(s._input,s,s._module.attributes,H,X)}function x(H){return H.orientation==="v"?"x":"y"}function b(H,X){var G=y_t.getFromTrace({_fullLayout:r},H,X);return G.type}function p(H,X,G){var N=H.uid+"__"+G;X||(X=N);var W=b(H,G),re=H[G+"calendar"]||"",ae=n[X],_e=!0;ae&&(W===ae.axType&&re===ae.calendar?(_e=!1,ae.traces.push(H),ae.dirs.push(G)):(X=N,W!==ae.axType&&b4.warn(["Attempted to group the bins of trace",H.index,"set on a","type:"+W,"axis","with bins on","type:"+ae.axType,"axis."].join(" ")),re!==ae.calendar&&b4.warn(["Attempted to group the bins of trace",H.index,"set with a",re,"calendar","with bins",ae.calendar?"on a "+ae.calendar+" calendar":"w/o a set calendar"].join(" ")))),_e&&(n[X]={traces:[H],dirs:[G],axType:W,calendar:H[G+"calendar"]||""}),H["_"+G+"bingroup"]=X}for(f=0;f{"use strict";var w_t=TT().hoverPoints,T_t=Qa().hoverLabelText;sxe.exports=function(t,r,n,i,a){var o=w_t(t,r,n,i,a);if(o){t=o[0];var s=t.cd[t.index],l=t.cd[0].trace;if(!l.cumulative.enabled){var u=l.orientation==="h"?"y":"x";t[u+"Label"]=T_t(t[u+"a"],[s.ph0,s.ph1],l[u+"hoverformat"])}return o}}});var JV=ye((Esr,uxe)=>{"use strict";uxe.exports=function(t,r,n,i,a){if(t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"zLabelVal"in r&&(t.z=r.zLabelVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),!(n.cumulative||{}).enabled){var o=Array.isArray(a)?i[0].pts[a[0]][a[1]]:i[a].pts;t.pointNumbers=o,t.binNumber=t.pointNumber,delete t.pointNumber,delete t.pointIndex;var s;if(n._indexToPoints){s=[];for(var l=0;l{"use strict";cxe.exports={attributes:f8(),layoutAttributes:zI(),supplyDefaults:ixe(),crossTraceDefaults:d8(),supplyLayoutDefaults:yV(),calc:UV().calc,crossTraceCalc:Gb().crossTraceCalc,plot:i2().plot,layerName:"barlayer",style:N0().style,styleOnSelect:N0().styleOnSelect,colorbar:Kd(),hoverPoints:lxe(),selectPoints:AT(),eventData:JV(),moduleType:"trace",name:"histogram",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","bar","histogram","oriented","errorBarsOK","showLegend"],meta:{}}});var dxe=ye((Csr,hxe)=>{"use strict";hxe.exports=fxe()});var p8=ye((Lsr,pxe)=>{"use strict";var Vg=f8(),vxe=ZV(),v8=ET(),A_t=vl(),$V=Oc().axisHoverFormat,S_t=Wo().hovertemplateAttrs,M_t=Wo().texttemplateAttrs,E_t=Jl(),w4=no().extendFlat;pxe.exports=w4({x:Vg.x,y:Vg.y,z:{valType:"data_array",editType:"calc"},marker:{color:{valType:"data_array",editType:"calc"},editType:"calc"},histnorm:Vg.histnorm,histfunc:Vg.histfunc,nbinsx:Vg.nbinsx,xbins:vxe("x"),nbinsy:Vg.nbinsy,ybins:vxe("y"),autobinx:Vg.autobinx,autobiny:Vg.autobiny,bingroup:w4({},Vg.bingroup,{}),xbingroup:w4({},Vg.bingroup,{}),ybingroup:w4({},Vg.bingroup,{}),xgap:v8.xgap,ygap:v8.ygap,zsmooth:v8.zsmooth,xhoverformat:$V("x"),yhoverformat:$V("y"),zhoverformat:$V("z",1),hovertemplate:S_t({},{keys:"z"}),texttemplate:M_t({arrayOk:!1,editType:"plot"},{keys:"z"}),textfont:v8.textfont,showlegend:w4({},A_t.showlegend,{dflt:!1})},E_t("",{cLetter:"z",autoColorDflt:!1}))});var QV=ye((Psr,mxe)=>{"use strict";var k_t=ba(),gxe=Mr();mxe.exports=function(t,r,n,i){var a=n("x"),o=n("y"),s=gxe.minRowLength(a),l=gxe.minRowLength(o);if(!s||!l){r.visible=!1;return}r._length=Math.min(s,l);var u=k_t.getComponentMethod("calendars","handleTraceDefaults");u(t,r,["x","y"],i);var c=n("z")||n("marker.color");c&&n("histfunc"),n("histnorm"),n("autobinx"),n("autobiny")}});var _xe=ye((Isr,yxe)=>{"use strict";var C_t=Mr(),L_t=QV(),P_t=DV(),I_t=Uh(),R_t=y4(),D_t=p8();yxe.exports=function(t,r,n,i){function a(o,s){return C_t.coerce(t,r,D_t,o,s)}L_t(t,r,a,i),r.visible!==!1&&(P_t(t,r,a,i),I_t(t,r,i,a,{prefix:"",cLetter:"z"}),a("hovertemplate"),R_t(a,i),a("xhoverformat"),a("yhoverformat"))}});var wxe=ye((Rsr,bxe)=>{"use strict";var z_t=c8(),xxe=Qa().hoverLabelText;bxe.exports=function(t,r,n,i,a){var o=z_t(t,r,n,i,a);if(o){t=o[0];var s=t.index,l=s[0],u=s[1],c=t.cd[0],f=c.trace,h=c.xRanges[u],d=c.yRanges[l];return t.xLabel=xxe(t.xa,[h[0],h[1]],f.xhoverformat),t.yLabel=xxe(t.ya,[d[0],d[1]],f.yhoverformat),o}}});var Axe=ye((Dsr,Txe)=>{"use strict";Txe.exports={attributes:p8(),supplyDefaults:_xe(),crossTraceDefaults:d8(),calc:n8(),plot:s8(),layerName:"heatmaplayer",colorbar:M_(),style:l8(),hoverPoints:wxe(),eventData:JV(),moduleType:"trace",name:"histogram2d",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","histogram","showLegend"],meta:{}}});var Mxe=ye((zsr,Sxe)=>{"use strict";Sxe.exports=Axe()});var g8=ye((Fsr,Exe)=>{"use strict";Exe.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}});var T4=ye((qsr,Pxe)=>{"use strict";var Gh=ET(),m8=Uc(),Cxe=Oc(),eH=Cxe.axisHoverFormat,F_t=Cxe.descriptionOnlyNumbers,q_t=Jl(),O_t=Ed().dash,B_t=Su(),IT=no().extendFlat,Lxe=g8(),N_t=Lxe.COMPARISON_OPS2,U_t=Lxe.INTERVAL_OPS,kxe=m8.line;Pxe.exports=IT({z:Gh.z,x:Gh.x,x0:Gh.x0,dx:Gh.dx,y:Gh.y,y0:Gh.y0,dy:Gh.dy,xperiod:Gh.xperiod,yperiod:Gh.yperiod,xperiod0:m8.xperiod0,yperiod0:m8.yperiod0,xperiodalignment:Gh.xperiodalignment,yperiodalignment:Gh.yperiodalignment,text:Gh.text,hovertext:Gh.hovertext,transpose:Gh.transpose,xtype:Gh.xtype,ytype:Gh.ytype,xhoverformat:eH("x"),yhoverformat:eH("y"),zhoverformat:eH("z",1),hovertemplate:Gh.hovertemplate,texttemplate:IT({},Gh.texttemplate,{}),textfont:IT({},Gh.textfont,{}),hoverongaps:Gh.hoverongaps,connectgaps:IT({},Gh.connectgaps,{}),fillcolor:{valType:"color",editType:"calc"},autocontour:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"contours.start":void 0,"contours.end":void 0,"contours.size":void 0}},ncontours:{valType:"integer",dflt:15,min:1,editType:"calc"},contours:{type:{valType:"enumerated",values:["levels","constraint"],dflt:"levels",editType:"calc"},start:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},end:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},size:{valType:"number",dflt:null,min:0,editType:"plot",impliedEdits:{"^autocontour":!1}},coloring:{valType:"enumerated",values:["fill","heatmap","lines","none"],dflt:"fill",editType:"calc"},showlines:{valType:"boolean",dflt:!0,editType:"plot"},showlabels:{valType:"boolean",dflt:!1,editType:"plot"},labelfont:B_t({editType:"plot",colorEditType:"style"}),labelformat:{valType:"string",dflt:"",editType:"plot",description:F_t("contour label")},operation:{valType:"enumerated",values:[].concat(N_t).concat(U_t),dflt:"=",editType:"calc"},value:{valType:"any",dflt:0,editType:"calc"},editType:"calc",impliedEdits:{autocontour:!1}},line:{color:IT({},kxe.color,{editType:"style+colorbars"}),width:{valType:"number",min:0,editType:"style+colorbars"},dash:O_t,smoothing:IT({},kxe.smoothing,{}),editType:"plot"},zorder:m8.zorder},q_t("",{cLetter:"z",autoColorDflt:!1,editTypeOverride:"calc"}))});var rH=ye((Osr,Rxe)=>{"use strict";var Hv=p8(),qy=T4(),V_t=Jl(),tH=Oc().axisHoverFormat,Ixe=no().extendFlat;Rxe.exports=Ixe({x:Hv.x,y:Hv.y,z:Hv.z,marker:Hv.marker,histnorm:Hv.histnorm,histfunc:Hv.histfunc,nbinsx:Hv.nbinsx,xbins:Hv.xbins,nbinsy:Hv.nbinsy,ybins:Hv.ybins,autobinx:Hv.autobinx,autobiny:Hv.autobiny,bingroup:Hv.bingroup,xbingroup:Hv.xbingroup,ybingroup:Hv.ybingroup,autocontour:qy.autocontour,ncontours:qy.ncontours,contours:qy.contours,line:{color:qy.line.color,width:Ixe({},qy.line.width,{dflt:.5}),dash:qy.line.dash,smoothing:qy.line.smoothing,editType:"plot"},xhoverformat:tH("x"),yhoverformat:tH("y"),zhoverformat:tH("z",1),hovertemplate:Hv.hovertemplate,texttemplate:qy.texttemplate,textfont:qy.textfont},V_t("",{cLetter:"z",editTypeOverride:"calc"}))});var y8=ye((Bsr,Dxe)=>{"use strict";Dxe.exports=function(t,r,n,i){var a=i("contours.start"),o=i("contours.end"),s=a===!1||o===!1,l=n("contours.size"),u;s?u=r.autocontour=!0:u=n("autocontour",!1),(u||!l)&&n("ncontours")}});var iH=ye((Nsr,zxe)=>{"use strict";var H_t=Mr();zxe.exports=function(t,r,n,i){i||(i={});var a=t("contours.showlabels");if(a){var o=r.font;H_t.coerceFont(t,"contours.labelfont",o,{overrideDflt:{color:n}}),t("contours.labelformat")}i.hasHover!==!1&&t("zhoverformat")}});var _8=ye((Usr,Fxe)=>{"use strict";var G_t=Uh(),j_t=iH();Fxe.exports=function(t,r,n,i,a){var o=n("contours.coloring"),s,l="";o==="fill"&&(s=n("contours.showlines")),s!==!1&&(o!=="lines"&&(l=n("line.color","#000")),n("line.width",.5),n("line.dash")),o!=="none"&&(t.showlegend!==!0&&(r.showlegend=!1),r._dfltShowLegend=!1,G_t(t,r,i,n,{prefix:"",cLetter:"z"})),n("line.smoothing"),j_t(n,i,l,a)}});var Nxe=ye((Vsr,Bxe)=>{"use strict";var qxe=Mr(),W_t=QV(),Z_t=y8(),X_t=_8(),Y_t=y4(),Oxe=rH();Bxe.exports=function(t,r,n,i){function a(s,l){return qxe.coerce(t,r,Oxe,s,l)}function o(s){return qxe.coerce2(t,r,Oxe,s)}W_t(t,r,a,i),r.visible!==!1&&(Z_t(t,r,a,o),X_t(t,r,a,i),a("xhoverformat"),a("yhoverformat"),a("hovertemplate"),r.contours&&r.contours.coloring==="heatmap"&&Y_t(a,i))}});var oH=ye((Hsr,Vxe)=>{"use strict";var aH=Qa(),nH=Mr();Vxe.exports=function(t,r){var n=t.contours;if(t.autocontour){var i=t.zmin,a=t.zmax;(t.zauto||i===void 0)&&(i=nH.aggNums(Math.min,null,r)),(t.zauto||a===void 0)&&(a=nH.aggNums(Math.max,null,r));var o=Uxe(i,a,t.ncontours);n.size=o.dtick,n.start=aH.tickFirst(o),o.range.reverse(),n.end=aH.tickFirst(o),n.start===i&&(n.start+=n.size),n.end===a&&(n.end-=n.size),n.start>n.end&&(n.start=n.end=(n.start+n.end)/2),t._input.contours||(t._input.contours={}),nH.extendFlat(t._input.contours,{start:n.start,end:n.end,size:n.size}),t._input.autocontour=!0}else if(n.type!=="constraint"){var s=n.start,l=n.end,u=t._input.contours;if(s>l&&(n.start=u.start=l,l=n.end=u.end=s,s=n.start),!(n.size>0)){var c;s===l?c=1:c=Uxe(s,l,t.ncontours).dtick,u.size=n.size=c}}};function Uxe(e,t,r){var n={type:"linear",range:[e,t]};return aH.autoTicks(n,(t-e)/(r||15)),n}});var A4=ye((Gsr,Hxe)=>{"use strict";Hxe.exports=function(t){return t.end+t.size/1e6}});var sH=ye((jsr,jxe)=>{"use strict";var Gxe=Mu(),K_t=n8(),J_t=oH(),$_t=A4();jxe.exports=function(t,r){var n=K_t(t,r),i=n[0].z;J_t(r,i);var a=r.contours,o=Gxe.extractOpts(r),s;if(a.coloring==="heatmap"&&o.auto&&r.autocontour===!1){var l=a.start,u=$_t(a),c=a.size||1,f=Math.floor((u-l)/c)+1;isFinite(c)||(c=1,f=1);var h=l-c/2,d=h+f*c;s=[h,d]}else s=i;return Gxe.calc(t,r,{vals:s,cLetter:"z"}),n}});var S4=ye((Wsr,Wxe)=>{"use strict";Wxe.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}});var lH=ye((Zsr,Zxe)=>{"use strict";var x8=S4();Zxe.exports=function(t){var r=t[0].z,n=r.length,i=r[0].length,a=n===2||i===2,o,s,l,u,c,f,h,d,v;for(s=0;se?0:1)+(t[0][1]>e?0:2)+(t[1][1]>e?0:4)+(t[1][0]>e?0:8);if(r===5||r===10){var n=(t[0][0]+t[0][1]+t[1][0]+t[1][1])/4;return e>n?r===5?713:1114:r===5?104:208}return r===15?0:r}});var uH=ye((Xsr,Kxe)=>{"use strict";var b8=Mr(),RT=S4();Kxe.exports=function(t,r,n){var i,a,o,s,l;for(r=r||.01,n=n||.01,o=0;o20?(o=RT.CHOOSESADDLE[o][(s[0]||s[1])<0?0:1],e.crossings[a]=RT.SADDLEREMAINDER[o]):delete e.crossings[a],s=RT.NEWDELTA[o],!s){b8.log("Found bad marching index:",o,t,e.level);break}l.push(Yxe(e,t,s)),t[0]+=s[0],t[1]+=s[1],a=t.join(","),M4(l[l.length-1],l[l.length-2],n,i)&&l.pop();var v=s[0]&&(t[0]<0||t[0]>c-2)||s[1]&&(t[1]<0||t[1]>u-2),x=t[0]===f[0]&&t[1]===f[1]&&s[0]===h[0]&&s[1]===h[1];if(x||r&&v)break;o=e.crossings[a]}d===1e4&&b8.log("Infinite loop in contour?");var b=M4(l[0],l[l.length-1],n,i),p=0,E=.2*e.smoothing,k=[],A=0,L,_,C,M,g,P,T,F,q,V,H;for(d=1;d=A;d--)if(L=k[d],L=A&&L+k[_]F&&q--,e.edgepaths[q]=H.concat(l,V));break}W||(e.edgepaths[F]=l.concat(V))}for(F=0;F20&&t?e===208||e===1114?n=r[0]===0?1:-1:i=r[1]===0?1:-1:RT.BOTTOMSTART.indexOf(e)!==-1?i=1:RT.LEFTSTART.indexOf(e)!==-1?n=1:RT.TOPSTART.indexOf(e)!==-1?i=-1:n=-1,[n,i]}function Yxe(e,t,r){var n=t[0]+Math.max(r[0],0),i=t[1]+Math.max(r[1],0),a=e.z[i][n],o=e.xaxis,s=e.yaxis;if(r[1]){var l=(e.level-a)/(e.z[i][n+1]-a),u=(l!==1?(1-l)*o.c2l(e.x[n]):0)+(l!==0?l*o.c2l(e.x[n+1]):0);return[o.c2p(o.l2c(u),!0),s.c2p(e.y[i],!0),n+l,i]}else{var c=(e.level-a)/(e.z[i+1][n]-a),f=(c!==1?(1-c)*s.c2l(e.y[i]):0)+(c!==0?c*s.c2l(e.y[i+1]):0);return[o.c2p(e.x[n],!0),s.c2p(s.l2c(f),!0),n,i+c]}}});var ebe=ye((Ysr,Qxe)=>{"use strict";var cH=g8(),rxt=uo();Qxe.exports={"[]":Jxe("[]"),"][":Jxe("]["),">":fH(">"),"<":fH("<"),"=":fH("=")};function $xe(e,t){var r=Array.isArray(t),n;function i(a){return rxt(a)?+a:null}return cH.COMPARISON_OPS2.indexOf(e)!==-1?n=i(r?t[0]:t):cH.INTERVAL_OPS.indexOf(e)!==-1?n=r?[i(t[0]),i(t[1])]:[i(t),i(t)]:cH.SET_OPS.indexOf(e)!==-1&&(n=r?t.map(i):[i(t)]),n}function Jxe(e){return function(t){t=$xe(e,t);var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return{start:r,end:n,size:n-r}}}function fH(e){return function(t){return t=$xe(e,t),{start:t,end:1/0,size:1/0}}}});var hH=ye((Ksr,rbe)=>{"use strict";var tbe=Mr(),ixt=ebe(),nxt=A4();rbe.exports=function(t,r,n){for(var i=t.type==="constraint"?ixt[t._operation](t.value):t,a=i.size,o=[],s=nxt(i),l=n.trace._carpetTrace,u=l?{xaxis:l.aaxis,yaxis:l.baxis,x:n.a,y:n.b}:{xaxis:r.xaxis,yaxis:r.yaxis,x:n.x,y:n.y},c=i.start;c1e3){tbe.warn("Too many contours, clipping at 1000",t);break}return o}});var dH=ye((Jsr,nbe)=>{"use strict";var DT=Mr();nbe.exports=function(e,t){var r,n,i,a=function(l){return l.reverse()},o=function(l){return l};switch(t){case"=":case"<":return e;case">":for(e.length!==1&&DT.warn("Contour data invalid for the specified inequality operation."),n=e[0],r=0;r{"use strict";abe.exports=function(e,t){var r=e[0],n=r.z,i;switch(t.type){case"levels":var a=Math.min(n[0][0],n[0][1]);for(i=0;io.level||o.starts.length&&a===o.level)}break;case"constraint":if(r.prefixBoundary=!1,r.edgepaths.length)return;var s=r.x.length,l=r.y.length,u=-1/0,c=1/0;for(i=0;i":f>u&&(r.prefixBoundary=!0);break;case"<":(fu||r.starts.length&&d===c)&&(r.prefixBoundary=!0);break;case"][":h=Math.min(f[0],f[1]),d=Math.max(f[0],f[1]),hu&&(r.prefixBoundary=!0);break}break}}});var w8=ye(Gv=>{"use strict";var k4=xa(),Id=Mr(),Oy=ao(),axt=Mu(),lbe=Pl(),obe=Qa(),sbe=ym(),oxt=s8(),ube=lH(),cbe=uH(),sxt=hH(),lxt=dH(),fbe=vH(),E4=S4(),Rm=E4.LABELOPTIMIZER;Gv.plot=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;Id.makeTraceGroups(i,n,"contour").each(function(s){var l=k4.select(this),u=s[0],c=u.trace,f=u.x,h=u.y,d=c.contours,v=sxt(d,r,u),x=Id.ensureSingle(l,"g","heatmapcoloring"),b=[];d.coloring==="heatmap"&&(b=[s]),oxt(t,r,b,x),ube(v),cbe(v);var p=a.c2p(f[0],!0),E=a.c2p(f[f.length-1],!0),k=o.c2p(h[0],!0),A=o.c2p(h[h.length-1],!0),L=[[p,A],[E,A],[E,k],[p,k]],_=v;d.type==="constraint"&&(_=lxt(v,d._operation)),uxt(l,L,d),cxt(l,_,L,d),fxt(l,v,t,u,d),dxt(l,r,t,u,L)})};function uxt(e,t,r){var n=Id.ensureSingle(e,"g","contourbg"),i=n.selectAll("path").data(r.coloring==="fill"?[0]:[]);i.enter().append("path"),i.exit().remove(),i.attr("d","M"+t.join("L")+"Z").style("stroke","none")}function cxt(e,t,r,n){var i=n.coloring==="fill"||n.type==="constraint"&&n._operation!=="=",a="M"+r.join("L")+"Z";i&&fbe(t,n);var o=Id.ensureSingle(e,"g","contourfill"),s=o.selectAll("path").data(i?t:[]);s.enter().append("path"),s.exit().remove(),s.each(function(l){var u=(l.prefixBoundary?a:"")+hbe(l,r);u?k4.select(this).attr("d",u).style("stroke","none"):k4.select(this).remove()})}function hbe(e,t){var r="",n=0,i=e.edgepaths.map(function(p,E){return E}),a=!0,o,s,l,u,c,f;function h(p){return Math.abs(p[1]-t[0][1])<.01}function d(p){return Math.abs(p[1]-t[2][1])<.01}function v(p){return Math.abs(p[0]-t[0][0])<.01}function x(p){return Math.abs(p[0]-t[2][0])<.01}for(;i.length;){for(f=Oy.smoothopen(e.edgepaths[n],e.smoothing),r+=a?f:f.replace(/^M/,"L"),i.splice(i.indexOf(n),1),o=e.edgepaths[n][e.edgepaths[n].length-1],u=-1,l=0;l<4;l++){if(!o){Id.log("Missing end?",n,e);break}for(h(o)&&!x(o)?s=t[1]:v(o)?s=t[0]:d(o)?s=t[3]:x(o)&&(s=t[2]),c=0;c=0&&(s=b,u=c):Math.abs(o[1]-s[1])<.01?Math.abs(o[1]-b[1])<.01&&(b[0]-o[0])*(s[0]-b[0])>=0&&(s=b,u=c):Id.log("endpt to newendpt is not vert. or horz.",o,s,b)}if(o=s,u>=0)break;r+="L"+s}if(u===e.edgepaths.length){Id.log("unclosed perimeter path");break}n=u,a=i.indexOf(n)===-1,a&&(n=i[0],r+="Z")}for(n=0;nRm.MAXCOST*2)break;h&&(s/=2),o=u-s/2,l=o+s*1.5}if(f<=Rm.MAXCOST)return c};function hxt(e,t,r,n){var i=t.width/2,a=t.height/2,o=e.x,s=e.y,l=e.theta,u=Math.cos(l)*i,c=Math.sin(l)*i,f=(o>n.center?n.right-o:o-n.left)/(u+Math.abs(Math.sin(l)*a)),h=(s>n.middle?n.bottom-s:s-n.top)/(Math.abs(c)+Math.cos(l)*a);if(f<1||h<1)return 1/0;var d=Rm.EDGECOST*(1/(f-1)+1/(h-1));d+=Rm.ANGLECOST*l*l;for(var v=o-u,x=s-c,b=o+u,p=s+c,E=0;E{"use strict";var pxt=xa(),pH=Mu(),gxt=A4();dbe.exports=function(t){var r=t.contours,n=r.start,i=gxt(r),a=r.size||1,o=Math.floor((i-n)/a)+1,s=r.coloring==="lines"?0:1,l=pH.extractOpts(t);isFinite(a)||(a=1,o=1);var u=l.reversescale?pH.flipScale(l.colorscale):l.colorscale,c=u.length,f=new Array(c),h=new Array(c),d,v,x=l.min,b=l.max;if(r.coloring==="heatmap"){for(v=0;v=b)&&(n<=x&&(n=x),i>=b&&(i=b),o=Math.floor((i-n)/a)+1,s=0),v=0;vx&&(f.unshift(x),h.unshift(h[0])),f[f.length-1]{"use strict";var T8=xa(),vbe=ao(),mxt=l8(),yxt=gH();pbe.exports=function(t){var r=T8.select(t).selectAll("g.contour");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=T8.select(this),a=n[0].trace,o=a.contours,s=a.line,l=o.size||1,u=o.start,c=o.type==="constraint",f=!c&&o.coloring==="lines",h=!c&&o.coloring==="fill",d=f||h?yxt(a):null;i.selectAll("g.contourlevel").each(function(b){T8.select(this).selectAll("path").call(vbe.lineGroupStyle,s.width,f?d(b.level):s.color,s.dash)});var v=o.labelfont;if(i.selectAll("g.contourlabels text").each(function(b){vbe.font(T8.select(this),{weight:v.weight,style:v.style,variant:v.variant,textcase:v.textcase,lineposition:v.lineposition,shadow:v.shadow,family:v.family,size:v.size,color:v.color||(f?d(b.level):s.color)})}),c)i.selectAll("g.contourfill path").style("fill",a.fillcolor);else if(h){var x;i.selectAll("g.contourfill path").style("fill",function(b){return x===void 0&&(x=b.level),d(b.level+.5*l)}),x===void 0&&(x=u),i.selectAll("g.contourbg path").style("fill",d(x-.5*l))}}),mxt(t)}});var S8=ye((rlr,mbe)=>{"use strict";var gbe=Mu(),_xt=gH(),xxt=A4();function bxt(e,t,r){var n=t.contours,i=t.line,a=n.size||1,o=n.coloring,s=_xt(t,{isColorbar:!0});if(o==="heatmap"){var l=gbe.extractOpts(t);r._fillgradient=l.reversescale?gbe.flipScale(l.colorscale):l.colorscale,r._zrange=[l.min,l.max]}else o==="fill"&&(r._fillcolor=s);r._line={color:o==="lines"?s:i.color,width:n.showlines!==!1?i.width:0,dash:i.dash},r._levels={start:n.start,end:xxt(n),size:a}}mbe.exports={min:"zmin",max:"zmax",calc:bxt}});var mH=ye((ilr,ybe)=>{"use strict";var M8=va(),wxt=c8();ybe.exports=function(t,r,n,i,a){a||(a={}),a.isContour=!0;var o=wxt(t,r,n,i,a);return o&&o.forEach(function(s){var l=s.trace;l.contours.type==="constraint"&&(l.fillcolor&&M8.opacity(l.fillcolor)?s.color=M8.addOpacity(l.fillcolor,1):l.contours.showlines&&M8.opacity(l.line.color)&&(s.color=M8.addOpacity(l.line.color,1)))}),o}});var xbe=ye((nlr,_be)=>{"use strict";_be.exports={attributes:rH(),supplyDefaults:Nxe(),crossTraceDefaults:d8(),calc:sH(),plot:w8().plot,layerName:"contourlayer",style:A8(),colorbar:S8(),hoverPoints:mH(),moduleType:"trace",name:"histogram2dcontour",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","contour","histogram","showLegend"],meta:{}}});var wbe=ye((alr,bbe)=>{"use strict";bbe.exports=xbe()});var yH=ye((olr,kbe)=>{"use strict";var Tbe=uo(),Txt=iH(),Mbe=va(),Abe=Mbe.addOpacity,Axt=Mbe.opacity,Ebe=g8(),Sbe=Mr().isArrayOrTypedArray,Sxt=Ebe.CONSTRAINT_REDUCTION,Mxt=Ebe.COMPARISON_OPS2;kbe.exports=function(t,r,n,i,a,o){var s=r.contours,l,u,c,f=n("contours.operation");if(s._operation=Sxt[f],Ext(n,s),f==="="?l=s.showlines=!0:(l=n("contours.showlines"),c=n("fillcolor",Abe((t.line||{}).color||a,.5))),l){var h=c&&Axt(c)?Abe(r.fillcolor,1):a;u=n("line.color",h),n("line.width",2),n("line.dash")}n("line.smoothing"),Txt(n,i,u,o)};function Ext(e,t){var r;Mxt.indexOf(t.operation)===-1?(e("contours.value",[0,1]),Sbe(t.value)?t.value.length>2?t.value=t.value.slice(2):t.length===0?t.value=[0,1]:t.length<2?(r=parseFloat(t.value[0]),t.value=[r,r+1]):t.value=[parseFloat(t.value[0]),parseFloat(t.value[1])]:Tbe(t.value)&&(r=parseFloat(t.value),t.value=[r,r+1])):(e("contours.value",0),Tbe(t.value)||(Sbe(t.value)?t.value=parseFloat(t.value[0]):t.value=0))}});var Pbe=ye((slr,Lbe)=>{"use strict";var _H=Mr(),kxt=XI(),Cxt=Pg(),Lxt=yH(),Pxt=y8(),Ixt=_8(),Rxt=y4(),Cbe=T4();Lbe.exports=function(t,r,n,i){function a(u,c){return _H.coerce(t,r,Cbe,u,c)}function o(u){return _H.coerce2(t,r,Cbe,u)}var s=kxt(t,r,a,i);if(!s){r.visible=!1;return}Cxt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hoverongaps"),a("hovertemplate");var l=a("contours.type")==="constraint";a("connectgaps",_H.isArray1D(r.z)),l?Lxt(t,r,a,i,n):(Pxt(t,r,a,o),Ixt(t,r,a,i)),r.contours&&r.contours.coloring==="heatmap"&&Rxt(a,i),a("zorder")}});var Rbe=ye((llr,Ibe)=>{"use strict";Ibe.exports={attributes:T4(),supplyDefaults:Pbe(),calc:sH(),plot:w8().plot,style:A8(),colorbar:S8(),hoverPoints:mH(),moduleType:"trace",name:"contour",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","contour","showLegend"],meta:{}}});var zbe=ye((ulr,Dbe)=>{"use strict";Dbe.exports=Rbe()});var xH=ye((clr,qbe)=>{"use strict";var Dxt=Wo().hovertemplateAttrs,zxt=Wo().texttemplateAttrs,Fxt=Eg(),a0=Uc(),qxt=vl(),Fbe=Jl(),Oxt=Ed().dash,E_=no().extendFlat,j0=a0.marker,C4=a0.line,Bxt=j0.line;qbe.exports={a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},c:{valType:"data_array",editType:"calc"},sum:{valType:"number",dflt:0,min:0,editType:"calc"},mode:E_({},a0.mode,{dflt:"markers"}),text:E_({},a0.text,{}),texttemplate:zxt({editType:"plot"},{keys:["a","b","c","text"]}),hovertext:E_({},a0.hovertext,{}),line:{color:C4.color,width:C4.width,dash:Oxt,backoff:C4.backoff,shape:E_({},C4.shape,{values:["linear","spline"]}),smoothing:C4.smoothing,editType:"calc"},connectgaps:a0.connectgaps,cliponaxis:a0.cliponaxis,fill:E_({},a0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:Fxt(),marker:E_({symbol:j0.symbol,opacity:j0.opacity,angle:j0.angle,angleref:j0.angleref,standoff:j0.standoff,maxdisplayed:j0.maxdisplayed,size:j0.size,sizeref:j0.sizeref,sizemin:j0.sizemin,sizemode:j0.sizemode,line:E_({width:Bxt.width,editType:"calc"},Fbe("marker.line")),gradient:j0.gradient,editType:"calc"},Fbe("marker")),textfont:a0.textfont,textposition:a0.textposition,selected:a0.selected,unselected:a0.unselected,hoverinfo:E_({},qxt.hoverinfo,{flags:["a","b","c","text","name"]}),hoveron:a0.hoveron,hovertemplate:Dxt()}});var Ube=ye((flr,Nbe)=>{"use strict";var Obe=Mr(),Nxt=Sm(),zT=lu(),Uxt=$p(),Vxt=R0(),Bbe=J3(),Hxt=D0(),Gxt=Ig(),jxt=xH();Nbe.exports=function(t,r,n,i){function a(h,d){return Obe.coerce(t,r,jxt,h,d)}var o=a("a"),s=a("b"),l=a("c"),u;if(o?(u=o.length,s?(u=Math.min(u,s.length),l&&(u=Math.min(u,l.length))):l?u=Math.min(u,l.length):u=0):s&&l&&(u=Math.min(s.length,l.length)),!u){r.visible=!1;return}r._length=u,a("sum"),a("text"),a("hovertext"),r.hoveron!=="fills"&&a("hovertemplate");var c=u{"use strict";var bH=Qa();Vbe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.aLabel=bH.tickText(a.aaxis,t.a,!0).text,i.bLabel=bH.tickText(a.baxis,t.b,!0).text,i.cLabel=bH.tickText(a.caxis,t.c,!0).text,i}});var Zbe=ye((dlr,Wbe)=>{"use strict";var wH=uo(),Wxt=z0(),Zxt=km(),Xxt=F0(),Yxt=q0().calcMarkerSize,Gbe=["a","b","c"],jbe={a:["b","c"],b:["a","c"],c:["a","b"]};Wbe.exports=function(t,r){var n=t._fullLayout[r.subplot],i=n.sum,a=r.sum||i,o={a:r.a,b:r.b,c:r.c},s=r.ids,l,u,c,f,h,d;for(l=0;l{"use strict";var Kxt=iT();Xbe.exports=function(t,r,n){var i=r.plotContainer;i.select(".scatterlayer").selectAll("*").remove();for(var a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:i,layerClipId:r._hasClipOnAxisFalse?r.clipIdRelative:null},l=r.layers.frontplot.select("g.scatterlayer"),u=0;u{"use strict";var Jxt=sT();Kbe.exports=function(t,r,n,i){var a=Jxt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index],h=o.trace,d=o.subplot;o.a=f.a,o.b=f.b,o.c=f.c,o.xLabelVal=void 0,o.yLabelVal=void 0;var v={};v[h.subplot]={_subplot:d};var x=h._module.formatLabels(f,h,v);o.aLabel=x.aLabel,o.bLabel=x.bLabel,o.cLabel=x.cLabel;var b=f.hi||h.hoverinfo,p=[];function E(A,L){p.push(A._hovertitle+": "+L)}if(!h.hovertemplate){var k=b.split("+");k.indexOf("all")!==-1&&(k=["a","b","c"]),k.indexOf("a")!==-1&&E(d.aaxis,o.aLabel),k.indexOf("b")!==-1&&E(d.baxis,o.bLabel),k.indexOf("c")!==-1&&E(d.caxis,o.cLabel)}return o.extraText=p.join("
"),o.hovertemplate=h.hovertemplate,a}});var Qbe=ye((glr,$be)=>{"use strict";$be.exports=function(t,r,n,i,a){if(r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),i[a]){var o=i[a];t.a=o.a,t.b=o.b,t.c=o.c}else t.a=r.a,t.b=r.b,t.c=r.c;return t}});var c2e=ye((mlr,u2e)=>{"use strict";var a2e=xa(),$xt=id(),TH=ba(),By=Mr(),Dm=By.strTranslate,E8=By._,qT=va(),k8=ao(),L4=ym(),AH=no().extendFlat,Qxt=Xu(),k_=Qa(),e2e=gv(),t2e=Nc(),o2e=Sg(),r2e=o2e.freeMode,ebt=o2e.rectMode,SH=Mb(),tbt=wf().prepSelect,rbt=wf().selectOnClick,ibt=wf().clearOutline,nbt=wf().clearSelectionsCache,s2e=ad();function l2e(e,t){this.id=e.id,this.graphDiv=e.graphDiv,this.init(t),this.makeFramework(t),this.updateFx(t),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}u2e.exports=l2e;var zm=l2e.prototype;zm.init=function(e){this.container=e._ternarylayer,this.defs=e._defs,this.layoutId=e._uid,this.traceHash={},this.layers={}};zm.plot=function(e,t){var r=this,n=t[r.id],i=t._size;r._hasClipOnAxisFalse=!1;for(var a=0;aFT*u?(p=u,b=p*FT):(b=l,p=b/FT),E=o*b/l,k=s*p/u,v=t.l+t.w*i-b/2,x=t.t+t.h*(1-a)-p/2,r.x0=v,r.y0=x,r.w=b,r.h=p,r.sum=c,r.xaxis={type:"linear",range:[f+2*d-c,c-f-2*h],domain:[i-E/2,i+E/2],_id:"x"},L4(r.xaxis,r.graphDiv._fullLayout),r.xaxis.setScale(),r.xaxis.isPtWithinRange=function(V){return V.a>=r.aaxis.range[0]&&V.a<=r.aaxis.range[1]&&V.b>=r.baxis.range[1]&&V.b<=r.baxis.range[0]&&V.c>=r.caxis.range[1]&&V.c<=r.caxis.range[0]},r.yaxis={type:"linear",range:[f,c-h-d],domain:[a-k/2,a+k/2],_id:"y"},L4(r.yaxis,r.graphDiv._fullLayout),r.yaxis.setScale(),r.yaxis.isPtWithinRange=function(){return!0};var A=r.yaxis.domain[0],L=r.aaxis=AH({},e.aaxis,{range:[f,c-h-d],side:"left",tickangle:(+e.aaxis.tickangle||0)-30,domain:[A,A+k*FT],anchor:"free",position:0,_id:"y",_length:b});L4(L,r.graphDiv._fullLayout),L.setScale();var _=r.baxis=AH({},e.baxis,{range:[c-f-d,h],side:"bottom",domain:r.xaxis.domain,anchor:"free",position:0,_id:"x",_length:b});L4(_,r.graphDiv._fullLayout),_.setScale();var C=r.caxis=AH({},e.caxis,{range:[c-f-h,d],side:"right",tickangle:(+e.caxis.tickangle||0)+30,domain:[A,A+k*FT],anchor:"free",position:0,_id:"y",_length:b});L4(C,r.graphDiv._fullLayout),C.setScale();var M="M"+v+","+(x+p)+"h"+b+"l-"+b/2+",-"+p+"Z";r.clipDef.select("path").attr("d",M),r.layers.plotbg.select("path").attr("d",M);var g="M0,"+p+"h"+b+"l-"+b/2+",-"+p+"Z";r.clipDefRelative.select("path").attr("d",g);var P=Dm(v,x);r.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",P),r.clipDefRelative.select("path").attr("transform",null);var T=Dm(v-_._offset,x+p);r.layers.baxis.attr("transform",T),r.layers.bgrid.attr("transform",T);var F=Dm(v+b/2,x)+"rotate(30)"+Dm(0,-L._offset);r.layers.aaxis.attr("transform",F),r.layers.agrid.attr("transform",F);var q=Dm(v+b/2,x)+"rotate(-30)"+Dm(0,-C._offset);r.layers.caxis.attr("transform",q),r.layers.cgrid.attr("transform",q),r.drawAxes(!0),r.layers.aline.select("path").attr("d",L.showline?"M"+v+","+(x+p)+"l"+b/2+",-"+p:"M0,0").call(qT.stroke,L.linecolor||"#000").style("stroke-width",(L.linewidth||0)+"px"),r.layers.bline.select("path").attr("d",_.showline?"M"+v+","+(x+p)+"h"+b:"M0,0").call(qT.stroke,_.linecolor||"#000").style("stroke-width",(_.linewidth||0)+"px"),r.layers.cline.select("path").attr("d",C.showline?"M"+(v+b/2)+","+x+"l"+b/2+","+p:"M0,0").call(qT.stroke,C.linecolor||"#000").style("stroke-width",(C.linewidth||0)+"px"),r.graphDiv._context.staticPlot||r.initInteractions(),k8.setClipUrl(r.layers.frontplot,r._hasClipOnAxisFalse?null:r.clipId,r.graphDiv)};zm.drawAxes=function(e){var t=this,r=t.graphDiv,n=t.id.substr(7)+"title",i=t.layers,a=t.aaxis,o=t.baxis,s=t.caxis;if(t.drawAx(a),t.drawAx(o),t.drawAx(s),e){var l=Math.max(a.showticklabels?a.tickfont.size/2:0,(s.showticklabels?s.tickfont.size*.75:0)+(s.ticks==="outside"?s.ticklen*.87:0)),u=(o.showticklabels?o.tickfont.size:0)+(o.ticks==="outside"?o.ticklen:0)+3;i["a-title"]=SH.draw(r,"a"+n,{propContainer:a,propName:t.id+".aaxis.title",placeholder:E8(r,"Click to enter Component A title"),attributes:{x:t.x0+t.w/2,y:t.y0-a.title.font.size/3-l,"text-anchor":"middle"}}),i["b-title"]=SH.draw(r,"b"+n,{propContainer:o,propName:t.id+".baxis.title",placeholder:E8(r,"Click to enter Component B title"),attributes:{x:t.x0-u,y:t.y0+t.h+o.title.font.size*.83+u,"text-anchor":"middle"}}),i["c-title"]=SH.draw(r,"c"+n,{propContainer:s,propName:t.id+".caxis.title",placeholder:E8(r,"Click to enter Component C title"),attributes:{x:t.x0+t.w+u,y:t.y0+t.h+s.title.font.size*.83+u,"text-anchor":"middle"}})}};zm.drawAx=function(e){var t=this,r=t.graphDiv,n=e._name,i=n.charAt(0),a=e._id,o=t.layers[n],s=30,l=i+"tickLayout",u=abt(e);t[l]!==u&&(o.selectAll("."+a+"tick").remove(),t[l]=u),e.setScale();var c=k_.calcTicks(e),f=k_.clipEnds(e,c),h=k_.makeTransTickFn(e),d=k_.getTickSigns(e)[2],v=By.deg2rad(s),x=d*(e.linewidth||1)/2,b=d*e.ticklen,p=t.w,E=t.h,k=i==="b"?"M0,"+x+"l"+Math.sin(v)*b+","+Math.cos(v)*b:"M"+x+",0l"+Math.cos(v)*b+","+-Math.sin(v)*b,A={a:"M0,0l"+E+",-"+p/2,b:"M0,0l-"+p/2+",-"+E,c:"M0,0l-"+E+","+p/2}[i];k_.drawTicks(r,e,{vals:e.ticks==="inside"?f:c,layer:o,path:k,transFn:h,crisp:!1}),k_.drawGrid(r,e,{vals:f,layer:t.layers[i+"grid"],path:A,transFn:h,crisp:!1}),k_.drawLabels(r,e,{vals:c,layer:o,transFn:h,labelFns:k_.makeLabelFns(e,0,s)})};function abt(e){return e.ticks+String(e.ticklen)+String(e.showticklabels)}var fd=s2e.MINZOOM/2+.87,obt="m-0.87,.5h"+fd+"v3h-"+(fd+5.2)+"l"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l2.6,1.5l-"+fd/2+","+fd*.87+"Z",sbt="m0.87,.5h-"+fd+"v3h"+(fd+5.2)+"l-"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l-2.6,1.5l"+fd/2+","+fd*.87+"Z",lbt="m0,1l"+fd/2+","+fd*.87+"l2.6,-1.5l-"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l-"+(fd/2+2.6)+","+(fd*.87+4.5)+"l2.6,1.5l"+fd/2+",-"+fd*.87+"Z",ubt="m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z",i2e=!0;zm.clearOutline=function(){nbt(this.dragOptions),ibt(this.dragOptions.gd)};zm.initInteractions=function(){var e=this,t=e.layers.plotbg.select("path").node(),r=e.graphDiv,n=r._fullLayout._zoomlayer,i,a;this.dragOptions={element:t,gd:r,plotinfo:{id:e.id,domain:r._fullLayout[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis},subplot:e.id,prepFn:function(T,F,q){e.dragOptions.xaxes=[e.xaxis],e.dragOptions.yaxes=[e.yaxis],i=r._fullLayout._invScaleX,a=r._fullLayout._invScaleY;var V=e.dragOptions.dragmode=r._fullLayout.dragmode;r2e(V)?e.dragOptions.minDrag=1:e.dragOptions.minDrag=void 0,V==="zoom"?(e.dragOptions.moveFn=_,e.dragOptions.clickFn=p,e.dragOptions.doneFn=C,E(T,F,q)):V==="pan"?(e.dragOptions.moveFn=g,e.dragOptions.clickFn=p,e.dragOptions.doneFn=P,M(),e.clearOutline(r)):(ebt(V)||r2e(V))&&tbt(T,F,q,e.dragOptions,V)}};var o,s,l,u,c,f,h,d,v,x;function b(T){var F={};return F[e.id+".aaxis.min"]=T.a,F[e.id+".baxis.min"]=T.b,F[e.id+".caxis.min"]=T.c,F}function p(T,F){var q=r._fullLayout.clickmode;n2e(r),T===2&&(r.emit("plotly_doubleclick",null),TH.call("_guiRelayout",r,b({a:0,b:0,c:0}))),q.indexOf("select")>-1&&T===1&&rbt(F,r,[e.xaxis],[e.yaxis],e.id,e.dragOptions),q.indexOf("event")>-1&&t2e.click(r,F,e.id)}function E(T,F,q){var V=t.getBoundingClientRect();o=F-V.left,s=q-V.top,r._fullLayout._calcInverseTransform(r);var H=r._fullLayout._invTransform,X=By.apply3DTransform(H)(o,s);o=X[0],s=X[1],l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l,u=e.aaxis.range[1]-l.a,f=$xt(e.graphDiv._fullLayout[e.id].bgcolor).getLuminance(),h="M0,"+e.h+"L"+e.w/2+", 0L"+e.w+","+e.h+"Z",d=!1,v=n.append("path").attr("class","zoombox").attr("transform",Dm(e.x0,e.y0)).style({fill:f>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",h),x=n.append("path").attr("class","zoombox-corners").attr("transform",Dm(e.x0,e.y0)).style({fill:qT.background,stroke:qT.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),e.clearOutline(r)}function k(T,F){return 1-F/e.h}function A(T,F){return 1-(T+(e.h-F)/Math.sqrt(3))/e.w}function L(T,F){return(T-(e.h-F)/Math.sqrt(3))/e.w}function _(T,F){var q=o+T*i,V=s+F*a,H=Math.max(0,Math.min(1,k(o,s),k(q,V))),X=Math.max(0,Math.min(1,A(o,s),A(q,V))),G=Math.max(0,Math.min(1,L(o,s),L(q,V))),N=(H/2+G)*e.w,W=(1-H/2-X)*e.w,re=(N+W)/2,ae=W-N,_e=(1-H)*e.h,Me=_e-ae/FT;ae.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),x.transition().style("opacity",1).duration(200),d=!0),r.emit("plotly_relayouting",b(c))}function C(){n2e(r),c!==l&&(TH.call("_guiRelayout",r,b(c)),i2e&&r.data&&r._context.showTips&&(By.notifier(E8(r,"Double-click to zoom back out"),"long"),i2e=!1))}function M(){l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l}function g(T,F){var q=T/e.xaxis._m,V=F/e.yaxis._m;c={a:l.a-V,b:l.b+(q+V)/2,c:l.c-(q-V)/2};var H=[c.a,c.b,c.c].sort(By.sorterAsc),X={a:H.indexOf(c.a),b:H.indexOf(c.b),c:H.indexOf(c.c)};H[0]<0&&(H[1]+H[0]/2<0?(H[2]+=H[0]+H[1],H[0]=H[1]=0):(H[2]+=H[0]/2,H[1]+=H[0]/2,H[0]=0),c={a:H[X.a],b:H[X.b],c:H[X.c]},F=(l.a-c.a)*e.yaxis._m,T=(l.c-c.c-l.b+c.b)*e.xaxis._m);var G=Dm(e.x0+T,e.y0+F);e.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",G);var N=Dm(-T,-F);e.clipDefRelative.select("path").attr("transform",N),e.aaxis.range=[c.a,e.sum-c.b-c.c],e.baxis.range=[e.sum-c.a-c.c,c.b],e.caxis.range=[e.sum-c.a-c.b,c.c],e.drawAxes(!1),e._hasClipOnAxisFalse&&e.plotContainer.select(".scatterlayer").selectAll(".trace").call(k8.hideOutsideRangePoints,e),r.emit("plotly_relayouting",b(c))}function P(){TH.call("_guiRelayout",r,b(c))}t.onmousemove=function(T){t2e.hover(r,T,e.id),r._fullLayout._lasthover=t,r._fullLayout._hoversubplot=e.id},t.onmouseout=function(T){r._dragging||e2e.unhover(r,T)},e2e.init(this.dragOptions)};function n2e(e){a2e.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}});var kH=ye((ylr,f2e)=>{"use strict";var cbt=dh(),fbt=Ju().attributes,Ol=Cd(),hbt=Bu().overrideAll,MH=no().extendFlat,EH={title:{text:Ol.title.text,font:Ol.title.font},color:Ol.color,tickmode:Ol.minor.tickmode,nticks:MH({},Ol.nticks,{dflt:6,min:1}),tick0:Ol.tick0,dtick:Ol.dtick,tickvals:Ol.tickvals,ticktext:Ol.ticktext,ticks:Ol.ticks,ticklen:Ol.ticklen,tickwidth:Ol.tickwidth,tickcolor:Ol.tickcolor,ticklabelstep:Ol.ticklabelstep,showticklabels:Ol.showticklabels,labelalias:Ol.labelalias,showtickprefix:Ol.showtickprefix,tickprefix:Ol.tickprefix,showticksuffix:Ol.showticksuffix,ticksuffix:Ol.ticksuffix,showexponent:Ol.showexponent,exponentformat:Ol.exponentformat,minexponent:Ol.minexponent,separatethousands:Ol.separatethousands,tickfont:Ol.tickfont,tickangle:Ol.tickangle,tickformat:Ol.tickformat,tickformatstops:Ol.tickformatstops,hoverformat:Ol.hoverformat,showline:MH({},Ol.showline,{dflt:!0}),linecolor:Ol.linecolor,linewidth:Ol.linewidth,showgrid:MH({},Ol.showgrid,{dflt:!0}),gridcolor:Ol.gridcolor,gridwidth:Ol.gridwidth,griddash:Ol.griddash,layer:Ol.layer,min:{valType:"number",dflt:0,min:0}},C8=f2e.exports=hbt({domain:fbt({name:"ternary"}),bgcolor:{valType:"color",dflt:cbt.background},sum:{valType:"number",dflt:1,min:0},aaxis:EH,baxis:EH,caxis:EH},"plot","from-root");C8.uirevision={valType:"any",editType:"none"};C8.aaxis.uirevision=C8.baxis.uirevision=C8.caxis.uirevision={valType:"any",editType:"none"}});var C_=ye((_lr,h2e)=>{"use strict";var dbt=Mr(),vbt=Vs(),pbt=Ju().defaults;h2e.exports=function(t,r,n,i){var a=i.type,o=i.attributes,s=i.handleDefaults,l=i.partition||"x",u=r._subplots[a],c=u.length,f=c&&u[0].replace(/\d+$/,""),h,d;function v(E,k){return dbt.coerce(h,d,o,E,k)}for(var x=0;x{"use strict";var gbt=va(),mbt=Vs(),L8=Mr(),ybt=C_(),_bt=t_(),xbt=r_(),bbt=T3(),wbt=xb(),Tbt=YM(),v2e=kH(),d2e=["aaxis","baxis","caxis"];p2e.exports=function(t,r,n){ybt(t,r,n,{type:"ternary",attributes:v2e,handleDefaults:Abt,font:r.font,paper_bgcolor:r.paper_bgcolor})};function Abt(e,t,r,n){var i=r("bgcolor"),a=r("sum");n.bgColor=gbt.combine(i,n.paper_bgcolor);for(var o,s,l,u=0;u=a&&(c.min=0,f.min=0,h.min=0,e.aaxis&&delete e.aaxis.min,e.baxis&&delete e.baxis.min,e.caxis&&delete e.caxis.min)}function Sbt(e,t,r,n){var i=v2e[t._name];function a(d,v){return L8.coerce(e,t,i,d,v)}a("uirevision",n.uirevision),t.type="linear";var o=a("color"),s=o!==i.color.dflt?o:r.font.color,l=t._name,u=l.charAt(0).toUpperCase(),c="Component "+u,f=a("title.text",c);t._hovertitle=f===c?f:u,L8.coerceFont(a,"title.font",r.font,{overrideDflt:{size:L8.bigFont(r.font.size),color:s}}),a("min"),wbt(e,t,a,"linear"),xbt(e,t,a,"linear"),_bt(e,t,a,"linear",{noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0}),bbt(e,t,a,{outerTicks:!0});var h=a("showticklabels");h&&(L8.coerceFont(a,"tickfont",r.font,{overrideDflt:{color:s}}),a("tickangle"),a("tickformat")),Tbt(e,t,a,{dfltColor:o,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),a("hoverformat"),a("layer")}});var m2e=ye(W0=>{"use strict";var Mbt=c2e(),Ebt=kd().getSubplotCalcData,kbt=Mr().counterRegex,OT="ternary";W0.name=OT;var Cbt=W0.attr="subplot";W0.idRoot=OT;W0.idRegex=W0.attrRegex=kbt(OT);var Lbt=W0.attributes={};Lbt[Cbt]={valType:"subplotid",dflt:"ternary",editType:"calc"};W0.layoutAttributes=kH();W0.supplyLayoutDefaults=g2e();W0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[OT],a=0;a{"use strict";y2e.exports={attributes:xH(),supplyDefaults:Ube(),colorbar:Kd(),formatLabels:Hbe(),calc:Zbe(),plot:Ybe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:Jbe(),selectPoints:lT(),eventData:Qbe(),moduleType:"trace",name:"scatterternary",basePlotModule:m2e(),categories:["ternary","symbols","showLegend","scatter-like"],meta:{}}});var b2e=ye((Tlr,x2e)=>{"use strict";x2e.exports=_2e()});var CH=ye((Alr,T2e)=>{"use strict";var jh=v4(),BT=no().extendFlat,w2e=Oc().axisHoverFormat;T2e.exports={y:jh.y,x:jh.x,x0:jh.x0,y0:jh.y0,xhoverformat:w2e("x"),yhoverformat:w2e("y"),name:BT({},jh.name,{}),orientation:BT({},jh.orientation,{}),bandwidth:{valType:"number",min:0,editType:"calc"},scalegroup:{valType:"string",dflt:"",editType:"calc"},scalemode:{valType:"enumerated",values:["width","count"],dflt:"width",editType:"calc"},spanmode:{valType:"enumerated",values:["soft","hard","manual"],dflt:"soft",editType:"calc"},span:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:jh.fillcolor,points:BT({},jh.boxpoints,{}),jitter:BT({},jh.jitter,{}),pointpos:BT({},jh.pointpos,{}),width:BT({},jh.width,{}),marker:jh.marker,text:jh.text,hovertext:jh.hovertext,hovertemplate:jh.hovertemplate,quartilemethod:jh.quartilemethod,box:{visible:{valType:"boolean",dflt:!1,editType:"plot"},width:{valType:"number",min:0,max:1,dflt:.25,editType:"plot"},fillcolor:{valType:"color",editType:"style"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"style"},editType:"plot"},meanline:{visible:{valType:"boolean",dflt:!1,editType:"plot"},color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"plot"},side:{valType:"enumerated",values:["both","positive","negative"],dflt:"both",editType:"calc"},offsetgroup:jh.offsetgroup,alignmentgroup:jh.alignmentgroup,selected:jh.selected,unselected:jh.unselected,hoveron:{valType:"flaglist",flags:["violins","points","kde"],dflt:"violins+points+kde",extras:["all"],editType:"style"},zorder:jh.zorder}});var IH=ye((Slr,A2e)=>{"use strict";var LH=p4(),PH=Mr().extendFlat;A2e.exports={violinmode:PH({},LH.boxmode,{}),violingap:PH({},LH.boxgap,{}),violingroupgap:PH({},LH.boxgroupgap,{})}});var C2e=ye((Mlr,k2e)=>{"use strict";var S2e=Mr(),Pbt=va(),M2e=m4(),E2e=CH();k2e.exports=function(t,r,n,i){function a(L,_){return S2e.coerce(t,r,E2e,L,_)}function o(L,_){return S2e.coerce2(t,r,E2e,L,_)}if(M2e.handleSampleDefaults(t,r,a,i),r.visible!==!1){a("bandwidth"),a("side");var s=a("width");s||(a("scalegroup",r.name),a("scalemode"));var l=a("span"),u;Array.isArray(l)&&(u="manual"),a("spanmode",u);var c=a("line.color",(t.marker||{}).color||n),f=a("line.width"),h=a("fillcolor",Pbt.addOpacity(r.line.color,.5));M2e.handlePointsDefaults(t,r,a,{prefix:""});var d=o("box.width"),v=o("box.fillcolor",h),x=o("box.line.color",c),b=o("box.line.width",f),p=a("box.visible",!!(d||v||x||b));p||(r.box={visible:!1});var E=o("meanline.color",c),k=o("meanline.width",f),A=a("meanline.visible",!!(E||k));A||(r.meanline={visible:!1}),a("quartilemethod"),a("zorder")}}});var P2e=ye((Elr,L2e)=>{"use strict";var Ibt=Mr(),Rbt=IH(),Dbt=VI();L2e.exports=function(t,r,n){function i(a,o){return Ibt.coerce(t,r,Rbt,a,o)}Dbt._supply(t,r,n,i,"violin")}});var P8=ye(o2=>{"use strict";var zbt=Mr(),Fbt={gaussian:function(e){return 1/Math.sqrt(2*Math.PI)*Math.exp(-.5*e*e)}};o2.makeKDE=function(e,t,r){var n=r.length,i=Fbt.gaussian,a=e.bandwidth,o=1/(n*a);return function(s){for(var l=0,u=0;u{"use strict";var RH=Mr(),DH=Qa(),qbt=MV(),I2e=P8(),Obt=es().BADNUM;R2e.exports=function(t,r){var n=qbt(t,r);if(n[0].t.empty)return n;for(var i=t._fullLayout,a=DH.getFromId(t,r[r.orientation==="h"?"xaxis":"yaxis"]),o=1/0,s=-1/0,l=0,u=0,c=0;c{"use strict";var Vbt=GI().setPositionOffset,z2e=["v","h"];F2e.exports=function(t,r){for(var n=t.calcdata,i=r.xaxis,a=r.yaxis,o=0;o{"use strict";var zH=xa(),FH=Mr(),Hbt=ao(),qH=jI(),Gbt=fU(),jbt=P8();O2e.exports=function(t,r,n,i){var a=t._context.staticPlot,o=t._fullLayout,s=r.xaxis,l=r.yaxis;function u(c,f){var h=Gbt(c,{xaxis:s,yaxis:l,trace:f,connectGaps:!0,baseTolerance:.75,shape:"spline",simplify:!0,linearized:!0});return Hbt.smoothopen(h[0],1)}FH.makeTraceGroups(i,n,"trace violins").each(function(c){var f=zH.select(this),h=c[0],d=h.t,v=h.trace;if(v.visible!==!0||d.empty){f.remove();return}var x=d.bPos,b=d.bdPos,p=r[d.valLetter+"axis"],E=r[d.posLetter+"axis"],k=v.side==="both",A=k||v.side==="positive",L=k||v.side==="negative",_=f.selectAll("path.violin").data(FH.identity);_.enter().append("path").style("vector-effect",a?"none":"non-scaling-stroke").attr("class","violin"),_.exit().remove(),_.each(function(V){var H=zH.select(this),X=V.density,G=X.length,N=E.c2l(V.pos+x,!0),W=E.l2p(N),re;if(v.width)re=d.maxKDE/b;else{var ae=o._violinScaleGroupStats[v.scalegroup];re=v.scalemode==="count"?ae.maxKDE/b*(ae.maxCount/V.pts.length):ae.maxKDE/b}var _e,Me,ke,ge,ie,Te,Ee;if(A){for(Te=new Array(G),ge=0;ge{"use strict";var N2e=xa(),NT=va(),Wbt=op().stylePoints;U2e.exports=function(t){var r=N2e.select(t).selectAll("g.trace.violins");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=n[0].trace,a=N2e.select(this),o=i.box||{},s=o.line||{},l=i.meanline||{},u=l.width;a.selectAll("path.violin").style("stroke-width",i.line.width+"px").call(NT.stroke,i.line.color).call(NT.fill,i.fillcolor),a.selectAll("path.box").style("stroke-width",s.width+"px").call(NT.stroke,s.color).call(NT.fill,o.fillcolor);var c={"stroke-width":u+"px","stroke-dasharray":2*u+"px,"+u+"px"};a.selectAll("path.mean").style(c).call(NT.stroke,l.color),a.selectAll("path.meanline").style(c).call(NT.stroke,l.color),Wbt(a,i,t)})}});var W2e=ye((Rlr,j2e)=>{"use strict";var Zbt=va(),OH=Mr(),Xbt=Qa(),H2e=PV(),G2e=P8();j2e.exports=function(t,r,n,i,a){a||(a={});var o=a.hoverLayer,s=t.cd,l=s[0].trace,u=l.hoveron,c=u.indexOf("violins")!==-1,f=u.indexOf("kde")!==-1,h=[],d,v;if(c||f){var x=H2e.hoverOnBoxes(t,r,n,i);if(f&&x.length>0){var b=t.xa,p=t.ya,E,k,A,L,_;l.orientation==="h"?(_=r,E="y",A=p,k="x",L=b):(_=n,E="x",A=b,k="y",L=p);var C=s[t.index];if(_>=C.span[0]&&_<=C.span[1]){var M=OH.extendFlat({},t),g=L.c2p(_,!0),P=G2e.getKdeValue(C,l,_),T=G2e.getPositionOnKdePath(C,l,g),F=A._offset,q=A._length;M[E+"0"]=T[0],M[E+"1"]=T[1],M[k+"0"]=M[k+"1"]=g,M[k+"Label"]=k+": "+Xbt.hoverLabelText(L,_,l[k+"hoverformat"])+", "+s[0].t.labels.kde+" "+P.toFixed(3);for(var V=0,H=0;H{"use strict";Z2e.exports={attributes:CH(),layoutAttributes:IH(),supplyDefaults:C2e(),crossTraceDefaults:m4().crossTraceDefaults,supplyLayoutDefaults:P2e(),calc:D2e(),crossTraceCalc:q2e(),plot:B2e(),style:V2e(),styleOnSelect:op().styleOnSelect,hoverPoints:W2e(),selectPoints:IV(),moduleType:"trace",name:"violin",basePlotModule:Jf(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","violinLayout","zoomScale"],meta:{}}});var K2e=ye((zlr,Y2e)=>{"use strict";Y2e.exports=X2e()});var $2e=ye((Flr,J2e)=>{"use strict";J2e.exports={eventDataKeys:["percentInitial","percentPrevious","percentTotal"]}});var NH=ye((qlr,twe)=>{"use strict";var lc=Lm(),BH=Uc().line,Ybt=vl(),Q2e=Oc().axisHoverFormat,Kbt=Wo().hovertemplateAttrs,Jbt=Wo().texttemplateAttrs,ewe=$2e(),Ny=no().extendFlat,$bt=va();twe.exports={x:lc.x,x0:lc.x0,dx:lc.dx,y:lc.y,y0:lc.y0,dy:lc.dy,xperiod:lc.xperiod,yperiod:lc.yperiod,xperiod0:lc.xperiod0,yperiod0:lc.yperiod0,xperiodalignment:lc.xperiodalignment,yperiodalignment:lc.yperiodalignment,xhoverformat:Q2e("x"),yhoverformat:Q2e("y"),hovertext:lc.hovertext,hovertemplate:Kbt({},{keys:ewe.eventDataKeys}),hoverinfo:Ny({},Ybt.hoverinfo,{flags:["name","x","y","text","percent initial","percent previous","percent total"]}),textinfo:{valType:"flaglist",flags:["label","text","percent initial","percent previous","percent total","value"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:Jbt({editType:"plot"},{keys:ewe.eventDataKeys.concat(["label","value"])}),text:lc.text,textposition:lc.textposition,insidetextanchor:Ny({},lc.insidetextanchor,{dflt:"middle"}),textangle:Ny({},lc.textangle,{dflt:0}),textfont:lc.textfont,insidetextfont:lc.insidetextfont,outsidetextfont:lc.outsidetextfont,constraintext:lc.constraintext,cliponaxis:lc.cliponaxis,orientation:Ny({},lc.orientation,{}),offset:Ny({},lc.offset,{arrayOk:!1}),width:Ny({},lc.width,{arrayOk:!1}),marker:Qbt(),connector:{fillcolor:{valType:"color",editType:"style"},line:{color:Ny({},BH.color,{dflt:$bt.defaultLine}),width:Ny({},BH.width,{dflt:0,editType:"plot"}),dash:BH.dash,editType:"style"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:lc.offsetgroup,alignmentgroup:lc.alignmentgroup,zorder:lc.zorder};function Qbt(){var e=Ny({},lc.marker);return delete e.pattern,delete e.cornerradius,e}});var UH=ye((Olr,rwe)=>{"use strict";rwe.exports={funnelmode:{valType:"enumerated",values:["stack","group","overlay"],dflt:"stack",editType:"calc"},funnelgap:{valType:"number",min:0,max:1,editType:"calc"},funnelgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var HH=ye((Blr,nwe)=>{"use strict";var I8=Mr(),e2t=Hb(),t2t=r0().handleText,r2t=K3(),i2t=Pg(),iwe=NH(),VH=va();function n2t(e,t,r,n){function i(f,h){return I8.coerce(e,t,iwe,f,h)}var a=r2t(e,t,n,i);if(!a){t.visible=!1;return}i2t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("orientation",t.y&&!t.x?"v":"h"),i("offset"),i("width");var o=i("text");i("hovertext"),i("hovertemplate");var s=i("textposition");t2t(e,t,n,i,s,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&!t.texttemplate&&i("textinfo",I8.isArrayOrTypedArray(o)?"text+value":"value");var l=i("marker.color",r);i("marker.line.color",VH.defaultLine),i("marker.line.width");var u=i("connector.visible");if(u){i("connector.fillcolor",a2t(l));var c=i("connector.line.width");c&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function a2t(e){var t=I8.isArrayOrTypedArray(e)?"#000":e;return VH.addOpacity(t,.5*VH.opacity(t))}function o2t(e,t){var r,n;function i(o){return I8.coerce(n._input,n,iwe,o)}for(var a=0;a{"use strict";var s2t=Mr(),l2t=UH();awe.exports=function(e,t,r){var n=!1;function i(s,l){return s2t.coerce(e,t,l2t,s,l)}for(var a=0;a{"use strict";var UT=Mr();swe.exports=function(t,r){for(var n=0;n{"use strict";var uwe=Qa(),cwe=Rg(),u2t=lwe(),c2t=F0(),P4=es().BADNUM;fwe.exports=function(t,r){var n=uwe.getFromId(t,r.xaxis||"x"),i=uwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f,h;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=cwe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=cwe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;var d=Math.min(o.length,a.length),v=new Array(d);for(r._base=[],f=0;f{"use strict";var dwe=Gb().setGroupPositions;vwe.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var R8=xa(),P_=Mr(),gwe=ao(),L_=es().BADNUM,f2t=i2(),h2t=_v().clearMinTextSize;ywe.exports=function(t,r,n,i){var a=t._fullLayout;h2t("funnel",a),d2t(t,r,n,i),v2t(t,r,n,i),f2t.plot(t,r,n,i,{mode:a.funnelmode,norm:a.funnelmode,gap:a.funnelgap,groupgap:a.funnelgroupgap})};function d2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;P_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=R8.select(this),l=o[0].trace,u=P_.ensureSingle(s,"g","regions");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.region").data(P_.identity);f.enter().append("g").classed("region",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var x=mwe(d,i,a,c),b=x[0],p=x[1],E="";b[0]!==L_&&p[0]!==L_&&b[1]!==L_&&p[1]!==L_&&b[2]!==L_&&p[2]!==L_&&b[3]!==L_&&p[3]!==L_&&(c?E+="M"+b[0]+","+p[1]+"L"+b[2]+","+p[2]+"H"+b[3]+"L"+b[1]+","+p[1]+"Z":E+="M"+b[1]+","+p[1]+"L"+b[2]+","+p[3]+"V"+p[2]+"L"+b[1]+","+p[0]+"Z"),E===""&&(E="M0,0Z"),P_.ensureSingle(R8.select(this),"path").attr("d",E).call(gwe.setClipUrl,t.layerClipId,e)}})})}function v2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;P_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=R8.select(this),l=o[0].trace,u=P_.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible||!l.connector.line.width){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.line").data(P_.identity);f.enter().append("g").classed("line",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var x=mwe(d,i,a,c),b=x[0],p=x[1],E="";b[3]!==void 0&&p[3]!==void 0&&(c?(E+="M"+b[0]+","+p[1]+"L"+b[2]+","+p[2],E+="M"+b[1]+","+p[1]+"L"+b[3]+","+p[2]):(E+="M"+b[1]+","+p[1]+"L"+b[2]+","+p[3],E+="M"+b[1]+","+p[0]+"L"+b[2]+","+p[2])),E===""&&(E="M0,0Z"),P_.ensureSingle(R8.select(this),"path").attr("d",E).call(gwe.setClipUrl,t.layerClipId,e)}})})}function mwe(e,t,r,n){var i=[],a=[],o=n?t:r,s=n?r:t;return i[0]=o.c2p(e.s0,!0),a[0]=s.c2p(e.p0,!0),i[1]=o.c2p(e.s1,!0),a[1]=s.c2p(e.p1,!0),i[2]=o.c2p(e.nextS0,!0),a[2]=s.c2p(e.nextP0,!0),i[3]=o.c2p(e.nextS1,!0),a[3]=s.c2p(e.nextP1,!0),n?[i,a]:[a,i]}});var wwe=ye((jlr,bwe)=>{"use strict";var I4=xa(),xwe=ao(),jH=va(),p2t=U1().DESELECTDIM,g2t=N0(),m2t=_v().resizeText,y2t=g2t.styleTextPoints;function _2t(e,t,r){var n=r||I4.select(e).selectAll('g[class^="funnellayer"]').selectAll("g.trace");m2t(e,n,"funnel"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=I4.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o.marker;I4.select(this).call(jH.fill,s.mc||l.color).call(jH.stroke,s.mlc||l.line.color).call(xwe.dashLine,l.line.dash,s.mlw||l.line.width).style("opacity",o.selectedpoints&&!s.selected?p2t:1)}}),y2t(a,o,e),a.selectAll(".regions").each(function(){I4.select(this).selectAll("path").style("stroke-width",0).call(jH.fill,o.connector.fillcolor)}),a.selectAll(".lines").each(function(){var s=o.connector.line;xwe.lineGroupStyle(I4.select(this).selectAll("path"),s.width,s.color,s.dash)})})}bwe.exports={style:_2t}});var Swe=ye((Wlr,Awe)=>{"use strict";var Twe=va().opacity,x2t=TT().hoverOnBars,WH=Mr().formatPercent;Awe.exports=function(t,r,n,i,a){var o=x2t(t,r,n,i,a);if(o){var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=o.index,f=s[c],h=u?"x":"y";o[h+"LabelVal"]=f.s,o.percentInitial=f.begR,o.percentInitialLabel=WH(f.begR,1),o.percentPrevious=f.difR,o.percentPreviousLabel=WH(f.difR,1),o.percentTotal=f.sumR,o.percentTotalLabel=WH(f.sumR,1);var d=f.hi||l.hoverinfo,v=[];if(d&&d!=="none"&&d!=="skip"){var x=d==="all",b=d.split("+"),p=function(E){return x||b.indexOf(E)!==-1};p("percent initial")&&v.push(o.percentInitialLabel+" of initial"),p("percent previous")&&v.push(o.percentPreviousLabel+" of previous"),p("percent total")&&v.push(o.percentTotalLabel+" of total")}return o.extraText=v.join("
"),o.color=b2t(l,f),[o]}};function b2t(e,t){var r=e.marker,n=t.mc||r.color,i=t.mlc||r.line.color,a=t.mlw||r.line.width;if(Twe(n))return n;if(Twe(i)&&a)return i}});var Ewe=ye((Zlr,Mwe)=>{"use strict";Mwe.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"percentInitial"in r&&(t.percentInitial=r.percentInitial),"percentPrevious"in r&&(t.percentPrevious=r.percentPrevious),"percentTotal"in r&&(t.percentTotal=r.percentTotal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var Cwe=ye((Xlr,kwe)=>{"use strict";kwe.exports={attributes:NH(),layoutAttributes:UH(),supplyDefaults:HH().supplyDefaults,crossTraceDefaults:HH().crossTraceDefaults,supplyLayoutDefaults:owe(),calc:hwe(),crossTraceCalc:pwe(),plot:_we(),style:wwe().style,hoverPoints:Swe(),eventData:Ewe(),selectPoints:AT(),moduleType:"trace",name:"funnel",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var Pwe=ye((Ylr,Lwe)=>{"use strict";Lwe.exports=Cwe()});var Rwe=ye((Klr,Iwe)=>{"use strict";Iwe.exports={eventDataKeys:["initial","delta","final"]}});var YH=ye((Jlr,Fwe)=>{"use strict";var Uu=Lm(),ZH=Uc().line,w2t=vl(),Dwe=Oc().axisHoverFormat,T2t=Wo().hovertemplateAttrs,A2t=Wo().texttemplateAttrs,zwe=Rwe(),VT=no().extendFlat,S2t=va();function XH(e){return{marker:{color:VT({},Uu.marker.color,{arrayOk:!1,editType:"style"}),line:{color:VT({},Uu.marker.line.color,{arrayOk:!1,editType:"style"}),width:VT({},Uu.marker.line.width,{arrayOk:!1,editType:"style"}),editType:"style"},editType:"style"},editType:"style"}}Fwe.exports={measure:{valType:"data_array",dflt:[],editType:"calc"},base:{valType:"number",dflt:null,arrayOk:!1,editType:"calc"},x:Uu.x,x0:Uu.x0,dx:Uu.dx,y:Uu.y,y0:Uu.y0,dy:Uu.dy,xperiod:Uu.xperiod,yperiod:Uu.yperiod,xperiod0:Uu.xperiod0,yperiod0:Uu.yperiod0,xperiodalignment:Uu.xperiodalignment,yperiodalignment:Uu.yperiodalignment,xhoverformat:Dwe("x"),yhoverformat:Dwe("y"),hovertext:Uu.hovertext,hovertemplate:T2t({},{keys:zwe.eventDataKeys}),hoverinfo:VT({},w2t.hoverinfo,{flags:["name","x","y","text","initial","delta","final"]}),textinfo:{valType:"flaglist",flags:["label","text","initial","delta","final"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:A2t({editType:"plot"},{keys:zwe.eventDataKeys.concat(["label"])}),text:Uu.text,textposition:Uu.textposition,insidetextanchor:Uu.insidetextanchor,textangle:Uu.textangle,textfont:Uu.textfont,insidetextfont:Uu.insidetextfont,outsidetextfont:Uu.outsidetextfont,constraintext:Uu.constraintext,cliponaxis:Uu.cliponaxis,orientation:Uu.orientation,offset:Uu.offset,width:Uu.width,increasing:XH("increasing"),decreasing:XH("decreasing"),totals:XH("intermediate sums and total"),connector:{line:{color:VT({},ZH.color,{dflt:S2t.defaultLine}),width:VT({},ZH.width,{editType:"plot"}),dash:ZH.dash,editType:"plot"},mode:{valType:"enumerated",values:["spanning","between"],dflt:"between",editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:Uu.offsetgroup,alignmentgroup:Uu.alignmentgroup,zorder:Uu.zorder}});var KH=ye(($lr,qwe)=>{"use strict";qwe.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var HT=ye((Qlr,Owe)=>{"use strict";Owe.exports={INCREASING:{COLOR:"#3D9970",SYMBOL:"\u25B2"},DECREASING:{COLOR:"#FF4136",SYMBOL:"\u25BC"}}});var $H=ye((eur,Vwe)=>{"use strict";var Bwe=Mr(),M2t=Hb(),E2t=r0().handleText,k2t=K3(),C2t=Pg(),Nwe=YH(),L2t=va(),Uwe=HT(),P2t=Uwe.INCREASING.COLOR,I2t=Uwe.DECREASING.COLOR,R2t="#4499FF";function JH(e,t,r){e(t+".marker.color",r),e(t+".marker.line.color",L2t.defaultLine),e(t+".marker.line.width")}function D2t(e,t,r,n){function i(u,c){return Bwe.coerce(e,t,Nwe,u,c)}var a=k2t(e,t,n,i);if(!a){t.visible=!1;return}C2t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("measure"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate");var o=i("textposition");E2t(e,t,n,i,o,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&(i("texttemplate"),t.texttemplate||i("textinfo")),JH(i,"increasing",P2t),JH(i,"decreasing",I2t),JH(i,"totals",R2t);var s=i("connector.visible");if(s){i("connector.mode");var l=i("connector.line.width");l&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function z2t(e,t){var r,n;function i(o){return Bwe.coerce(n._input,n,Nwe,o)}if(t.waterfallmode==="group")for(var a=0;a{"use strict";var F2t=Mr(),q2t=KH();Hwe.exports=function(e,t,r){var n=!1;function i(s,l){return F2t.coerce(e,t,q2t,s,l)}for(var a=0;a{"use strict";var jwe=Qa(),Wwe=Rg(),Zwe=Mr().mergeArray,O2t=F0(),Xwe=es().BADNUM;function QH(e){return e==="a"||e==="absolute"}function eG(e){return e==="t"||e==="total"}Ywe.exports=function(t,r){var n=jwe.getFromId(t,r.xaxis||"x"),i=jwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=Wwe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=Wwe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var f=Math.min(o.length,a.length),h=new Array(f),d=0,v,x=!1,b=0;b{"use strict";var Jwe=Gb().setGroupPositions;$we.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var e3e=xa(),D8=Mr(),B2t=ao(),GT=es().BADNUM,N2t=i2(),U2t=_v().clearMinTextSize;t3e.exports=function(t,r,n,i){var a=t._fullLayout;U2t("waterfall",a),N2t.plot(t,r,n,i,{mode:a.waterfallmode,norm:a.waterfallmode,gap:a.waterfallgap,groupgap:a.waterfallgroupgap}),V2t(t,r,n,i)};function V2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;D8.makeTraceGroups(n,r,"trace bars").each(function(o){var s=e3e.select(this),l=o[0].trace,u=D8.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=l.connector.mode,h=u.selectAll("g.line").data(D8.identity);h.enter().append("g").classed("line",!0),h.exit().remove();var d=h.size();h.each(function(v,x){if(!(x!==d-1&&!v.cNext)){var b=H2t(v,i,a,c),p=b[0],E=b[1],k="";p[0]!==GT&&E[0]!==GT&&p[1]!==GT&&E[1]!==GT&&(f==="spanning"&&!v.isSum&&x>0&&(c?k+="M"+p[0]+","+E[1]+"V"+E[0]:k+="M"+p[1]+","+E[0]+"H"+p[0]),f!=="between"&&(v.isSum||x{"use strict";var z8=xa(),i3e=ao(),n3e=va(),G2t=U1().DESELECTDIM,j2t=N0(),W2t=_v().resizeText,Z2t=j2t.styleTextPoints;function X2t(e,t,r){var n=r||z8.select(e).selectAll('g[class^="waterfalllayer"]').selectAll("g.trace");W2t(e,n,"waterfall"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=z8.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o[s.dir].marker;z8.select(this).call(n3e.fill,l.color).call(n3e.stroke,l.line.color).call(i3e.dashLine,l.line.dash,l.line.width).style("opacity",o.selectedpoints&&!s.selected?G2t:1)}}),Z2t(a,o,e),a.selectAll(".lines").each(function(){var s=o.connector.line;i3e.lineGroupStyle(z8.select(this).selectAll("path"),s.width,s.color,s.dash)})})}a3e.exports={style:X2t}});var f3e=ye((our,c3e)=>{"use strict";var Y2t=Qa().hoverLabelText,s3e=va().opacity,K2t=TT().hoverOnBars,l3e=HT(),u3e={increasing:l3e.INCREASING.SYMBOL,decreasing:l3e.DECREASING.SYMBOL};c3e.exports=function(t,r,n,i,a){var o=K2t(t,r,n,i,a);if(!o)return;var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=u?"x":"y",f=u?t.xa:t.ya;function h(_){return Y2t(f,_,l[c+"hoverformat"])}var d=o.index,v=s[d],x=v.isSum?v.b+v.s:v.rawS;o.initial=v.b+v.s-x,o.delta=x,o.final=o.initial+o.delta;var b=h(Math.abs(o.delta));o.deltaLabel=x<0?"("+b+")":b,o.finalLabel=h(o.final),o.initialLabel=h(o.initial);var p=v.hi||l.hoverinfo,E=[];if(p&&p!=="none"&&p!=="skip"){var k=p==="all",A=p.split("+"),L=function(_){return k||A.indexOf(_)!==-1};v.isSum||(L("final")&&(u?!L("x"):!L("y"))&&E.push(o.finalLabel),L("delta")&&(x<0?E.push(o.deltaLabel+" "+u3e.decreasing):E.push(o.deltaLabel+" "+u3e.increasing)),L("initial")&&E.push("Initial: "+o.initialLabel))}return E.length&&(o.extraText=E.join("
")),o.color=J2t(l,v),[o]};function J2t(e,t){var r=e[t.dir].marker,n=r.color,i=r.line.color,a=r.line.width;if(s3e(n))return n;if(s3e(i)&&a)return i}});var d3e=ye((sur,h3e)=>{"use strict";h3e.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"initial"in r&&(t.initial=r.initial),"delta"in r&&(t.delta=r.delta),"final"in r&&(t.final=r.final),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var p3e=ye((lur,v3e)=>{"use strict";v3e.exports={attributes:YH(),layoutAttributes:KH(),supplyDefaults:$H().supplyDefaults,crossTraceDefaults:$H().crossTraceDefaults,supplyLayoutDefaults:Gwe(),calc:Kwe(),crossTraceCalc:Qwe(),plot:r3e(),style:o3e().style,hoverPoints:f3e(),eventData:d3e(),selectPoints:AT(),moduleType:"trace",name:"waterfall",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var m3e=ye((uur,g3e)=>{"use strict";g3e.exports=p3e()});var jT=ye((cur,y3e)=>{"use strict";y3e.exports={colormodel:{rgb:{min:[0,0,0],max:[255,255,255],fmt:function(e){return e.slice(0,3)},suffix:["","",""]},rgba:{min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},rgba256:{colormodel:"rgba",zminDflt:[0,0,0,0],zmaxDflt:[255,255,255,255],min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},hsl:{min:[0,0,0],max:[360,100,100],fmt:function(e){var t=e.slice(0,3);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%"]},hsla:{min:[0,0,0,0],max:[360,100,100,1],fmt:function(e){var t=e.slice(0,4);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%",""]}}}});var tG=ye((fur,x3e)=>{"use strict";var $2t=vl(),Q2t=Uc().zorder,ewt=Wo().hovertemplateAttrs,_3e=no().extendFlat,twt=jT().colormodel,D4=["rgb","rgba","rgba256","hsl","hsla"],rwt=[],iwt=[];for(WT=0;WT{"use strict";var nwt=Mr(),awt=tG(),b3e=jT(),owt=Ly().IMAGE_URL_PREFIX;w3e.exports=function(t,r){function n(o,s){return nwt.coerce(t,r,awt,o,s)}n("source"),r.source&&!r.source.match(owt)&&delete r.source,r._hasSource=!!r.source;var i=n("z");if(r._hasZ=!(i===void 0||!i.length||!i[0]||!i[0].length),!r._hasZ&&!r._hasSource){r.visible=!1;return}n("x0"),n("y0"),n("dx"),n("dy");var a;r._hasZ?(n("colormodel","rgb"),a=b3e.colormodel[r.colormodel],n("zmin",a.zminDflt||a.min),n("zmax",a.zmaxDflt||a.max)):r._hasSource&&(r.colormodel="rgba256",a=b3e.colormodel[r.colormodel],r.zmin=a.zminDflt,r.zmax=a.zmaxDflt),n("zsmooth"),n("text"),n("hovertext"),n("hovertemplate"),r._length=null,n("zorder")}});var Uy=ye((dur,rG)=>{typeof Object.create=="function"?rG.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:rG.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}}});var iG=ye((vur,A3e)=>{A3e.exports=vb().EventEmitter});var E3e=ye(F8=>{"use strict";F8.byteLength=lwt;F8.toByteArray=cwt;F8.fromByteArray=dwt;var Fm=[],Z0=[],swt=typeof Uint8Array!="undefined"?Uint8Array:Array,nG="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(s2=0,S3e=nG.length;s20)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function lwt(e){var t=M3e(e),r=t[0],n=t[1];return(r+n)*3/4-n}function uwt(e,t,r){return(t+r)*3/4-r}function cwt(e){var t,r=M3e(e),n=r[0],i=r[1],a=new swt(uwt(e,n,i)),o=0,s=i>0?n-4:n,l;for(l=0;l>16&255,a[o++]=t>>8&255,a[o++]=t&255;return i===2&&(t=Z0[e.charCodeAt(l)]<<2|Z0[e.charCodeAt(l+1)]>>4,a[o++]=t&255),i===1&&(t=Z0[e.charCodeAt(l)]<<10|Z0[e.charCodeAt(l+1)]<<4|Z0[e.charCodeAt(l+2)]>>2,a[o++]=t>>8&255,a[o++]=t&255),a}function fwt(e){return Fm[e>>18&63]+Fm[e>>12&63]+Fm[e>>6&63]+Fm[e&63]}function hwt(e,t,r){for(var n,i=[],a=t;as?s:o+a));return n===1?(t=e[r-1],i.push(Fm[t>>2]+Fm[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],i.push(Fm[t>>10]+Fm[t>>4&63]+Fm[t<<2&63]+"=")),i.join("")}});var k3e=ye(aG=>{aG.read=function(e,t,r,n,i){var a,o,s=i*8-n-1,l=(1<>1,c=-7,f=r?i-1:0,h=r?-1:1,d=e[t+f];for(f+=h,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=a*256+e[t+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+f],f+=h,c-=8);if(a===0)a=1-u;else{if(a===l)return o?NaN:(d?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-u}return(d?-1:1)*o*Math.pow(2,a-n)};aG.write=function(e,t,r,n,i,a){var o,s,l,u=a*8-i-1,c=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:a-1,v=n?1:-1,x=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?t+=h/l:t+=h*Math.pow(2,1-f),t*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(t*l-1)*Math.pow(2,i),o=o+f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;e[r+d]=s&255,d+=v,s/=256,i-=8);for(o=o<0;e[r+d]=o&255,d+=v,o/=256,u-=8);e[r+d-v]|=x*128}});var u2=ye(KT=>{"use strict";var oG=E3e(),XT=k3e(),C3e=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;KT.Buffer=In;KT.SlowBuffer=_wt;KT.INSPECT_MAX_BYTES=50;var q8=2147483647;KT.kMaxLength=q8;In.TYPED_ARRAY_SUPPORT=vwt();!In.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function vwt(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch(e){return!1}}Object.defineProperty(In.prototype,"parent",{enumerable:!0,get:function(){if(In.isBuffer(this))return this.buffer}});Object.defineProperty(In.prototype,"offset",{enumerable:!0,get:function(){if(In.isBuffer(this))return this.byteOffset}});function Vy(e){if(e>q8)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,In.prototype),t}function In(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return cG(e)}return R3e(e,t,r)}In.poolSize=8192;function R3e(e,t,r){if(typeof e=="string")return gwt(e,t);if(ArrayBuffer.isView(e))return mwt(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(qm(e,ArrayBuffer)||e&&qm(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(qm(e,SharedArrayBuffer)||e&&qm(e.buffer,SharedArrayBuffer)))return lG(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return In.from(n,t,r);let i=ywt(e);if(i)return i;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return In.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}In.from=function(e,t,r){return R3e(e,t,r)};Object.setPrototypeOf(In.prototype,Uint8Array.prototype);Object.setPrototypeOf(In,Uint8Array);function D3e(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function pwt(e,t,r){return D3e(e),e<=0?Vy(e):t!==void 0?typeof r=="string"?Vy(e).fill(t,r):Vy(e).fill(t):Vy(e)}In.alloc=function(e,t,r){return pwt(e,t,r)};function cG(e){return D3e(e),Vy(e<0?0:fG(e)|0)}In.allocUnsafe=function(e){return cG(e)};In.allocUnsafeSlow=function(e){return cG(e)};function gwt(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!In.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=z3e(e,t)|0,n=Vy(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function sG(e){let t=e.length<0?0:fG(e.length)|0,r=Vy(t);for(let n=0;n=q8)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+q8.toString(16)+" bytes");return e|0}function _wt(e){return+e!=e&&(e=0),In.alloc(+e)}In.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==In.prototype};In.compare=function(t,r){if(qm(t,Uint8Array)&&(t=In.from(t,t.offset,t.byteLength)),qm(r,Uint8Array)&&(r=In.from(r,r.offset,r.byteLength)),!In.isBuffer(t)||!In.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;let n=t.length,i=r.length;for(let a=0,o=Math.min(n,i);ai.length?(In.isBuffer(o)||(o=In.from(o)),o.copy(i,a)):Uint8Array.prototype.set.call(i,o,a);else if(In.isBuffer(o))o.copy(i,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=o.length}return i};function z3e(e,t){if(In.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||qm(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return uG(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return G3e(e).length;default:if(i)return n?-1:uG(e).length;t=(""+t).toLowerCase(),i=!0}}In.byteLength=z3e;function xwt(e,t,r){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Lwt(this,t,r);case"utf8":case"utf-8":return q3e(this,t,r);case"ascii":return kwt(this,t,r);case"latin1":case"binary":return Cwt(this,t,r);case"base64":return Mwt(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Pwt(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}In.prototype._isBuffer=!0;function l2(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}In.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(t+=" ... "),""};C3e&&(In.prototype[C3e]=In.prototype.inspect);In.prototype.compare=function(t,r,n,i,a){if(qm(t,Uint8Array)&&(t=In.from(t,t.offset,t.byteLength)),!In.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;let o=a-i,s=n-r,l=Math.min(o,s),u=this.slice(i,a),c=t.slice(r,n);for(let f=0;f2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,dG(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=In.from(t,n)),In.isBuffer(t))return t.length===0?-1:L3e(e,t,r,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):L3e(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function L3e(e,t,r,n,i){let a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function l(c,f){return a===1?c[f]:c.readUInt16BE(f*a)}let u;if(i){let c=-1;for(u=r;uo&&(r=o-s),u=r;u>=0;u--){let c=!0;for(let f=0;fi&&(n=i)):n=i;let a=t.length;n>a/2&&(n=a/2);let o;for(o=0;o>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((n===void 0||n>a)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return bwt(this,t,r,n);case"utf8":case"utf-8":return wwt(this,t,r,n);case"ascii":case"latin1":case"binary":return Twt(this,t,r,n);case"base64":return Awt(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Swt(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};In.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Mwt(e,t,r){return t===0&&r===e.length?oG.fromByteArray(e):oG.fromByteArray(e.slice(t,r))}function q3e(e,t,r){r=Math.min(e.length,r);let n=[],i=t;for(;i239?4:a>223?3:a>191?2:1;if(i+s<=r){let l,u,c,f;switch(s){case 1:a<128&&(o=a);break;case 2:l=e[i+1],(l&192)===128&&(f=(a&31)<<6|l&63,f>127&&(o=f));break;case 3:l=e[i+1],u=e[i+2],(l&192)===128&&(u&192)===128&&(f=(a&15)<<12|(l&63)<<6|u&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:l=e[i+1],u=e[i+2],c=e[i+3],(l&192)===128&&(u&192)===128&&(c&192)===128&&(f=(a&15)<<18|(l&63)<<12|(u&63)<<6|c&63,f>65535&&f<1114112&&(o=f))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return Ewt(n)}var P3e=4096;function Ewt(e){let t=e.length;if(t<=P3e)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn)&&(r=n);let i="";for(let a=t;an&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),rr)throw new RangeError("Trying to access beyond buffer length")}In.prototype.readUintLE=In.prototype.readUIntLE=function(t,r,n){t=t>>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t],a=1,o=0;for(;++o>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t+--r],a=1;for(;r>0&&(a*=256);)i+=this[t+--r]*a;return i};In.prototype.readUint8=In.prototype.readUInt8=function(t,r){return t=t>>>0,r||$d(t,1,this.length),this[t]};In.prototype.readUint16LE=In.prototype.readUInt16LE=function(t,r){return t=t>>>0,r||$d(t,2,this.length),this[t]|this[t+1]<<8};In.prototype.readUint16BE=In.prototype.readUInt16BE=function(t,r){return t=t>>>0,r||$d(t,2,this.length),this[t]<<8|this[t+1]};In.prototype.readUint32LE=In.prototype.readUInt32LE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};In.prototype.readUint32BE=In.prototype.readUInt32BE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};In.prototype.readBigUInt64LE=I_(function(t){t=t>>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=r+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,a=this[++t]+this[++t]*2**8+this[++t]*2**16+n*2**24;return BigInt(i)+(BigInt(a)<>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=r*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],a=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+n;return(BigInt(i)<>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t],a=1,o=0;for(;++o=a&&(i-=Math.pow(2,8*r)),i};In.prototype.readIntBE=function(t,r,n){t=t>>>0,r=r>>>0,n||$d(t,r,this.length);let i=r,a=1,o=this[t+--i];for(;i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};In.prototype.readInt8=function(t,r){return t=t>>>0,r||$d(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};In.prototype.readInt16LE=function(t,r){t=t>>>0,r||$d(t,2,this.length);let n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};In.prototype.readInt16BE=function(t,r){t=t>>>0,r||$d(t,2,this.length);let n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};In.prototype.readInt32LE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};In.prototype.readInt32BE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};In.prototype.readBigInt64LE=I_(function(t){t=t>>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(n<<24);return(BigInt(i)<>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=(r<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(i)<>>0,r||$d(t,4,this.length),XT.read(this,t,!0,23,4)};In.prototype.readFloatBE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),XT.read(this,t,!1,23,4)};In.prototype.readDoubleLE=function(t,r){return t=t>>>0,r||$d(t,8,this.length),XT.read(this,t,!0,52,8)};In.prototype.readDoubleBE=function(t,r){return t=t>>>0,r||$d(t,8,this.length),XT.read(this,t,!1,52,8)};function Rp(e,t,r,n,i,a){if(!In.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}In.prototype.writeUintLE=In.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=1,o=0;for(this[r]=t&255;++o>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=n-1,o=1;for(this[r+a]=t&255;--a>=0&&(o*=256);)this[r+a]=t/o&255;return r+n};In.prototype.writeUint8=In.prototype.writeUInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,255,0),this[r]=t&255,r+1};In.prototype.writeUint16LE=In.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t&255,this[r+1]=t>>>8,r+2};In.prototype.writeUint16BE=In.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=t&255,r+2};In.prototype.writeUint32LE=In.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255,r+4};In.prototype.writeUint32BE=In.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};function O3e(e,t,r,n,i){H3e(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,r}function B3e(e,t,r,n,i){H3e(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a=a>>8,e[r+6]=a,a=a>>8,e[r+5]=a,a=a>>8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o=o>>8,e[r+2]=o,o=o>>8,e[r+1]=o,o=o>>8,e[r]=o,r+8}In.prototype.writeBigUInt64LE=I_(function(t,r=0){return O3e(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});In.prototype.writeBigUInt64BE=I_(function(t,r=0){return B3e(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});In.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=0,o=1,s=0;for(this[r]=t&255;++a>0)-s&255;return r+n};In.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=n-1,o=1,s=0;for(this[r+a]=t&255;--a>=0&&(o*=256);)t<0&&s===0&&this[r+a+1]!==0&&(s=1),this[r+a]=(t/o>>0)-s&255;return r+n};In.prototype.writeInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=t&255,r+1};In.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t&255,this[r+1]=t>>>8,r+2};In.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=t&255,r+2};In.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4};In.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};In.prototype.writeBigInt64LE=I_(function(t,r=0){return O3e(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});In.prototype.writeBigInt64BE=I_(function(t,r=0){return B3e(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function N3e(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function U3e(e,t,r,n,i){return t=+t,r=r>>>0,i||N3e(e,t,r,4,34028234663852886e22,-34028234663852886e22),XT.write(e,t,r,n,23,4),r+4}In.prototype.writeFloatLE=function(t,r,n){return U3e(this,t,r,!0,n)};In.prototype.writeFloatBE=function(t,r,n){return U3e(this,t,r,!1,n)};function V3e(e,t,r,n,i){return t=+t,r=r>>>0,i||N3e(e,t,r,8,17976931348623157e292,-17976931348623157e292),XT.write(e,t,r,n,52,8),r+8}In.prototype.writeDoubleLE=function(t,r,n){return V3e(this,t,r,!0,n)};In.prototype.writeDoubleBE=function(t,r,n){return V3e(this,t,r,!1,n)};In.prototype.copy=function(t,r,n,i){if(!In.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r>>0,n=n===void 0?this.length:n>>>0,t||(t=0);let a;if(typeof t=="number")for(a=r;a2**32?i=I3e(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=I3e(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function I3e(e){let t="",r=e.length,n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Iwt(e,t,r){YT(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&z4(t,e.length-(r+1))}function H3e(e,t,r,n,i,a){if(e>r||e3?t===0||t===BigInt(0)?s=`>= 0${o} and < 2${o} ** ${(a+1)*8}${o}`:s=`>= -(2${o} ** ${(a+1)*8-1}${o}) and < 2 ** ${(a+1)*8-1}${o}`:s=`>= ${t}${o} and <= ${r}${o}`,new ZT.ERR_OUT_OF_RANGE("value",s,e)}Iwt(n,i,a)}function YT(e,t){if(typeof e!="number")throw new ZT.ERR_INVALID_ARG_TYPE(t,"number",e)}function z4(e,t,r){throw Math.floor(e)!==e?(YT(e,r),new ZT.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new ZT.ERR_BUFFER_OUT_OF_BOUNDS:new ZT.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var Rwt=/[^+/0-9A-Za-z-_]/g;function Dwt(e){if(e=e.split("=")[0],e=e.trim().replace(Rwt,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function uG(e,t){t=t||1/0;let r,n=e.length,i=null,a=[];for(let o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function zwt(e){let t=[];for(let r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function G3e(e){return oG.toByteArray(Dwt(e))}function O8(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function qm(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function dG(e){return e!==e}var qwt=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function I_(e){return typeof BigInt=="undefined"?Owt:e}function Owt(){throw new Error("BigInt not supported")}});var B8=ye((_ur,j3e)=>{"use strict";j3e.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;t[r]=i;for(r in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var a=Object.getOwnPropertySymbols(t);if(a.length!==1||a[0]!==r||!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(t,r);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var F4=ye((xur,W3e)=>{"use strict";var Bwt=B8();W3e.exports=function(){return Bwt()&&!!Symbol.toStringTag}});var X3e=ye((bur,Z3e)=>{"use strict";Z3e.exports=Error});var K3e=ye((wur,Y3e)=>{"use strict";Y3e.exports=EvalError});var $3e=ye((Tur,J3e)=>{"use strict";J3e.exports=RangeError});var eTe=ye((Aur,Q3e)=>{"use strict";Q3e.exports=ReferenceError});var vG=ye((Sur,tTe)=>{"use strict";tTe.exports=SyntaxError});var q4=ye((Mur,rTe)=>{"use strict";rTe.exports=TypeError});var nTe=ye((Eur,iTe)=>{"use strict";iTe.exports=URIError});var sTe=ye((kur,oTe)=>{"use strict";var aTe=typeof Symbol!="undefined"&&Symbol,Nwt=B8();oTe.exports=function(){return typeof aTe!="function"||typeof Symbol!="function"||typeof aTe("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:Nwt()}});var cTe=ye((Cur,uTe)=>{"use strict";var lTe={foo:{}},Uwt=Object;uTe.exports=function(){return{__proto__:lTe}.foo===lTe.foo&&!({__proto__:null}instanceof Uwt)}});var dTe=ye((Lur,hTe)=>{"use strict";var Vwt="Function.prototype.bind called on incompatible ",Hwt=Object.prototype.toString,Gwt=Math.max,jwt="[object Function]",fTe=function(t,r){for(var n=[],i=0;i{"use strict";var Xwt=dTe();vTe.exports=Function.prototype.bind||Xwt});var gTe=ye((Iur,pTe)=>{"use strict";var Ywt=Function.prototype.call,Kwt=Object.prototype.hasOwnProperty,Jwt=N8();pTe.exports=Jwt.call(Ywt,Kwt)});var t5=ye((Rur,bTe)=>{"use strict";var jl,$wt=X3e(),Qwt=K3e(),e3t=$3e(),t3t=eTe(),e5=vG(),QT=q4(),r3t=nTe(),xTe=Function,pG=function(e){try{return xTe('"use strict"; return ('+e+").constructor;")()}catch(t){}},c2=Object.getOwnPropertyDescriptor;if(c2)try{c2({},"")}catch(e){c2=null}var gG=function(){throw new QT},i3t=c2?function(){try{return arguments.callee,gG}catch(e){try{return c2(arguments,"callee").get}catch(t){return gG}}}():gG,JT=sTe()(),n3t=cTe()(),Qd=Object.getPrototypeOf||(n3t?function(e){return e.__proto__}:null),$T={},a3t=typeof Uint8Array=="undefined"||!Qd?jl:Qd(Uint8Array),f2={__proto__:null,"%AggregateError%":typeof AggregateError=="undefined"?jl:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer=="undefined"?jl:ArrayBuffer,"%ArrayIteratorPrototype%":JT&&Qd?Qd([][Symbol.iterator]()):jl,"%AsyncFromSyncIteratorPrototype%":jl,"%AsyncFunction%":$T,"%AsyncGenerator%":$T,"%AsyncGeneratorFunction%":$T,"%AsyncIteratorPrototype%":$T,"%Atomics%":typeof Atomics=="undefined"?jl:Atomics,"%BigInt%":typeof BigInt=="undefined"?jl:BigInt,"%BigInt64Array%":typeof BigInt64Array=="undefined"?jl:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array=="undefined"?jl:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView=="undefined"?jl:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$wt,"%eval%":eval,"%EvalError%":Qwt,"%Float32Array%":typeof Float32Array=="undefined"?jl:Float32Array,"%Float64Array%":typeof Float64Array=="undefined"?jl:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry=="undefined"?jl:FinalizationRegistry,"%Function%":xTe,"%GeneratorFunction%":$T,"%Int8Array%":typeof Int8Array=="undefined"?jl:Int8Array,"%Int16Array%":typeof Int16Array=="undefined"?jl:Int16Array,"%Int32Array%":typeof Int32Array=="undefined"?jl:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":JT&&Qd?Qd(Qd([][Symbol.iterator]())):jl,"%JSON%":typeof JSON=="object"?JSON:jl,"%Map%":typeof Map=="undefined"?jl:Map,"%MapIteratorPrototype%":typeof Map=="undefined"||!JT||!Qd?jl:Qd(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise=="undefined"?jl:Promise,"%Proxy%":typeof Proxy=="undefined"?jl:Proxy,"%RangeError%":e3t,"%ReferenceError%":t3t,"%Reflect%":typeof Reflect=="undefined"?jl:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set=="undefined"?jl:Set,"%SetIteratorPrototype%":typeof Set=="undefined"||!JT||!Qd?jl:Qd(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer=="undefined"?jl:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":JT&&Qd?Qd(""[Symbol.iterator]()):jl,"%Symbol%":JT?Symbol:jl,"%SyntaxError%":e5,"%ThrowTypeError%":i3t,"%TypedArray%":a3t,"%TypeError%":QT,"%Uint8Array%":typeof Uint8Array=="undefined"?jl:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray=="undefined"?jl:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array=="undefined"?jl:Uint16Array,"%Uint32Array%":typeof Uint32Array=="undefined"?jl:Uint32Array,"%URIError%":r3t,"%WeakMap%":typeof WeakMap=="undefined"?jl:WeakMap,"%WeakRef%":typeof WeakRef=="undefined"?jl:WeakRef,"%WeakSet%":typeof WeakSet=="undefined"?jl:WeakSet};if(Qd)try{null.error}catch(e){mTe=Qd(Qd(e)),f2["%Error.prototype%"]=mTe}var mTe,o3t=function e(t){var r;if(t==="%AsyncFunction%")r=pG("async function () {}");else if(t==="%GeneratorFunction%")r=pG("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=pG("async function* () {}");else if(t==="%AsyncGenerator%"){var n=e("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&Qd&&(r=Qd(i.prototype))}return f2[t]=r,r},yTe={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},O4=N8(),U8=gTe(),s3t=O4.call(Function.call,Array.prototype.concat),l3t=O4.call(Function.apply,Array.prototype.splice),_Te=O4.call(Function.call,String.prototype.replace),V8=O4.call(Function.call,String.prototype.slice),u3t=O4.call(Function.call,RegExp.prototype.exec),c3t=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,f3t=/\\(\\)?/g,h3t=function(t){var r=V8(t,0,1),n=V8(t,-1);if(r==="%"&&n!=="%")throw new e5("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new e5("invalid intrinsic syntax, expected opening `%`");var i=[];return _Te(t,c3t,function(a,o,s,l){i[i.length]=s?_Te(l,f3t,"$1"):o||a}),i},d3t=function(t,r){var n=t,i;if(U8(yTe,n)&&(i=yTe[n],n="%"+i[0]+"%"),U8(f2,n)){var a=f2[n];if(a===$T&&(a=o3t(n)),typeof a=="undefined"&&!r)throw new QT("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new e5("intrinsic "+t+" does not exist!")};bTe.exports=function(t,r){if(typeof t!="string"||t.length===0)throw new QT("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new QT('"allowMissing" argument must be a boolean');if(u3t(/^%?[^%]*%?$/,t)===null)throw new e5("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=h3t(t),i=n.length>0?n[0]:"",a=d3t("%"+i+"%",r),o=a.name,s=a.value,l=!1,u=a.alias;u&&(i=u[0],l3t(n,s3t([0,1],u)));for(var c=1,f=!0;c=n.length){var x=c2(s,h);f=!!x,f&&"get"in x&&!("originalValue"in x.get)?s=x.get:s=s[h]}else f=U8(s,h),s=s[h];f&&!l&&(f2[o]=s)}}return s}});var G8=ye((Dur,wTe)=>{"use strict";var v3t=t5(),H8=v3t("%Object.defineProperty%",!0)||!1;if(H8)try{H8({},"a",{value:1})}catch(e){H8=!1}wTe.exports=H8});var B4=ye((zur,TTe)=>{"use strict";var p3t=t5(),j8=p3t("%Object.getOwnPropertyDescriptor%",!0);if(j8)try{j8([],"length")}catch(e){j8=null}TTe.exports=j8});var ETe=ye((Fur,MTe)=>{"use strict";var ATe=G8(),g3t=vG(),r5=q4(),STe=B4();MTe.exports=function(t,r,n){if(!t||typeof t!="object"&&typeof t!="function")throw new r5("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new r5("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new r5("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new r5("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new r5("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new r5("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,a=arguments.length>4?arguments[4]:null,o=arguments.length>5?arguments[5]:null,s=arguments.length>6?arguments[6]:!1,l=!!STe&&STe(t,r);if(ATe)ATe(t,r,{configurable:o===null&&l?l.configurable:!o,enumerable:i===null&&l?l.enumerable:!i,value:n,writable:a===null&&l?l.writable:!a});else if(s||!i&&!a&&!o)t[r]=n;else throw new g3t("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}});var yG=ye((qur,CTe)=>{"use strict";var mG=G8(),kTe=function(){return!!mG};kTe.hasArrayLengthDefineBug=function(){if(!mG)return null;try{return mG([],"length",{value:1}).length!==1}catch(t){return!0}};CTe.exports=kTe});var DTe=ye((Our,RTe)=>{"use strict";var m3t=t5(),LTe=ETe(),y3t=yG()(),PTe=B4(),ITe=q4(),_3t=m3t("%Math.floor%");RTe.exports=function(t,r){if(typeof t!="function")throw new ITe("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||_3t(r)!==r)throw new ITe("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],i=!0,a=!0;if("length"in t&&PTe){var o=PTe(t,"length");o&&!o.configurable&&(i=!1),o&&!o.writable&&(a=!1)}return(i||a||!n)&&(y3t?LTe(t,"length",r,!0,!0):LTe(t,"length",r)),t}});var N4=ye((Bur,W8)=>{"use strict";var _G=N8(),Z8=t5(),x3t=DTe(),b3t=q4(),qTe=Z8("%Function.prototype.apply%"),OTe=Z8("%Function.prototype.call%"),BTe=Z8("%Reflect.apply%",!0)||_G.call(OTe,qTe),zTe=G8(),w3t=Z8("%Math.max%");W8.exports=function(t){if(typeof t!="function")throw new b3t("a function is required");var r=BTe(_G,OTe,arguments);return x3t(r,1+w3t(0,t.length-(arguments.length-1)),!0)};var FTe=function(){return BTe(_G,qTe,arguments)};zTe?zTe(W8.exports,"apply",{value:FTe}):W8.exports.apply=FTe});var i5=ye((Nur,VTe)=>{"use strict";var NTe=t5(),UTe=N4(),T3t=UTe(NTe("String.prototype.indexOf"));VTe.exports=function(t,r){var n=NTe(t,!!r);return typeof n=="function"&&T3t(t,".prototype.")>-1?UTe(n):n}});var jTe=ye((Uur,GTe)=>{"use strict";var A3t=F4()(),S3t=i5(),xG=S3t("Object.prototype.toString"),X8=function(t){return A3t&&t&&typeof t=="object"&&Symbol.toStringTag in t?!1:xG(t)==="[object Arguments]"},HTe=function(t){return X8(t)?!0:t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&xG(t)!=="[object Array]"&&xG(t.callee)==="[object Function]"},M3t=function(){return X8(arguments)}();X8.isLegacyArguments=HTe;GTe.exports=M3t?X8:HTe});var XTe=ye((Vur,ZTe)=>{"use strict";var E3t=Object.prototype.toString,k3t=Function.prototype.toString,C3t=/^\s*(?:function)?\*/,WTe=F4()(),bG=Object.getPrototypeOf,L3t=function(){if(!WTe)return!1;try{return Function("return function*() {}")()}catch(e){}},wG;ZTe.exports=function(t){if(typeof t!="function")return!1;if(C3t.test(k3t.call(t)))return!0;if(!WTe){var r=E3t.call(t);return r==="[object GeneratorFunction]"}if(!bG)return!1;if(typeof wG=="undefined"){var n=L3t();wG=n?bG(n):!1}return bG(t)===wG}});var $Te=ye((Hur,JTe)=>{"use strict";var KTe=Function.prototype.toString,n5=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,AG,Y8;if(typeof n5=="function"&&typeof Object.defineProperty=="function")try{AG=Object.defineProperty({},"length",{get:function(){throw Y8}}),Y8={},n5(function(){throw 42},null,AG)}catch(e){e!==Y8&&(n5=null)}else n5=null;var P3t=/^\s*class\b/,SG=function(t){try{var r=KTe.call(t);return P3t.test(r)}catch(n){return!1}},TG=function(t){try{return SG(t)?!1:(KTe.call(t),!0)}catch(r){return!1}},K8=Object.prototype.toString,I3t="[object Object]",R3t="[object Function]",D3t="[object GeneratorFunction]",z3t="[object HTMLAllCollection]",F3t="[object HTML document.all class]",q3t="[object HTMLCollection]",O3t=typeof Symbol=="function"&&!!Symbol.toStringTag,B3t=!(0 in[,]),MG=function(){return!1};typeof document=="object"&&(YTe=document.all,K8.call(YTe)===K8.call(document.all)&&(MG=function(t){if((B3t||!t)&&(typeof t=="undefined"||typeof t=="object"))try{var r=K8.call(t);return(r===z3t||r===F3t||r===q3t||r===I3t)&&t("")==null}catch(n){}return!1}));var YTe;JTe.exports=n5?function(t){if(MG(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;try{n5(t,null,AG)}catch(r){if(r!==Y8)return!1}return!SG(t)&&TG(t)}:function(t){if(MG(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;if(O3t)return TG(t);if(SG(t))return!1;var r=K8.call(t);return r!==R3t&&r!==D3t&&!/^\[object HTML/.test(r)?!1:TG(t)}});var EG=ye((Gur,e5e)=>{"use strict";var N3t=$Te(),U3t=Object.prototype.toString,QTe=Object.prototype.hasOwnProperty,V3t=function(t,r,n){for(var i=0,a=t.length;i=3&&(i=n),U3t.call(t)==="[object Array]"?V3t(t,r,i):typeof t=="string"?H3t(t,r,i):G3t(t,r,i)};e5e.exports=j3t});var CG=ye((jur,t5e)=>{"use strict";var kG=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],W3t=typeof globalThis=="undefined"?window:globalThis;t5e.exports=function(){for(var t=[],r=0;r{"use strict";var $8=EG(),Z3t=CG(),r5e=N4(),IG=i5(),J8=B4(),X3t=IG("Object.prototype.toString"),n5e=F4()(),i5e=typeof globalThis=="undefined"?window:globalThis,PG=Z3t(),RG=IG("String.prototype.slice"),LG=Object.getPrototypeOf,Y3t=IG("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1?r:r!=="Object"?!1:J3t(t)}return J8?K3t(t):null}});var h5e=ye((Zur,f5e)=>{"use strict";var s5e=EG(),$3t=CG(),zG=i5(),Q3t=zG("Object.prototype.toString"),l5e=F4()(),eR=B4(),eTt=typeof globalThis=="undefined"?window:globalThis,u5e=$3t(),tTt=zG("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1}return eR?iTt(t):!1}});var OG=ye(Bl=>{"use strict";var nTt=jTe(),aTt=XTe(),Hg=o5e(),d5e=h5e();function a5(e){return e.call.bind(e)}var v5e=typeof BigInt!="undefined",p5e=typeof Symbol!="undefined",X0=a5(Object.prototype.toString),oTt=a5(Number.prototype.valueOf),sTt=a5(String.prototype.valueOf),lTt=a5(Boolean.prototype.valueOf);v5e&&(g5e=a5(BigInt.prototype.valueOf));var g5e;p5e&&(m5e=a5(Symbol.prototype.valueOf));var m5e;function V4(e,t){if(typeof e!="object")return!1;try{return t(e),!0}catch(r){return!1}}Bl.isArgumentsObject=nTt;Bl.isGeneratorFunction=aTt;Bl.isTypedArray=d5e;function uTt(e){return typeof Promise!="undefined"&&e instanceof Promise||e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"}Bl.isPromise=uTt;function cTt(e){return typeof ArrayBuffer!="undefined"&&ArrayBuffer.isView?ArrayBuffer.isView(e):d5e(e)||_5e(e)}Bl.isArrayBufferView=cTt;function fTt(e){return Hg(e)==="Uint8Array"}Bl.isUint8Array=fTt;function hTt(e){return Hg(e)==="Uint8ClampedArray"}Bl.isUint8ClampedArray=hTt;function dTt(e){return Hg(e)==="Uint16Array"}Bl.isUint16Array=dTt;function vTt(e){return Hg(e)==="Uint32Array"}Bl.isUint32Array=vTt;function pTt(e){return Hg(e)==="Int8Array"}Bl.isInt8Array=pTt;function gTt(e){return Hg(e)==="Int16Array"}Bl.isInt16Array=gTt;function mTt(e){return Hg(e)==="Int32Array"}Bl.isInt32Array=mTt;function yTt(e){return Hg(e)==="Float32Array"}Bl.isFloat32Array=yTt;function _Tt(e){return Hg(e)==="Float64Array"}Bl.isFloat64Array=_Tt;function xTt(e){return Hg(e)==="BigInt64Array"}Bl.isBigInt64Array=xTt;function bTt(e){return Hg(e)==="BigUint64Array"}Bl.isBigUint64Array=bTt;function tR(e){return X0(e)==="[object Map]"}tR.working=typeof Map!="undefined"&&tR(new Map);function wTt(e){return typeof Map=="undefined"?!1:tR.working?tR(e):e instanceof Map}Bl.isMap=wTt;function rR(e){return X0(e)==="[object Set]"}rR.working=typeof Set!="undefined"&&rR(new Set);function TTt(e){return typeof Set=="undefined"?!1:rR.working?rR(e):e instanceof Set}Bl.isSet=TTt;function iR(e){return X0(e)==="[object WeakMap]"}iR.working=typeof WeakMap!="undefined"&&iR(new WeakMap);function ATt(e){return typeof WeakMap=="undefined"?!1:iR.working?iR(e):e instanceof WeakMap}Bl.isWeakMap=ATt;function qG(e){return X0(e)==="[object WeakSet]"}qG.working=typeof WeakSet!="undefined"&&qG(new WeakSet);function STt(e){return qG(e)}Bl.isWeakSet=STt;function nR(e){return X0(e)==="[object ArrayBuffer]"}nR.working=typeof ArrayBuffer!="undefined"&&nR(new ArrayBuffer);function y5e(e){return typeof ArrayBuffer=="undefined"?!1:nR.working?nR(e):e instanceof ArrayBuffer}Bl.isArrayBuffer=y5e;function aR(e){return X0(e)==="[object DataView]"}aR.working=typeof ArrayBuffer!="undefined"&&typeof DataView!="undefined"&&aR(new DataView(new ArrayBuffer(1),0,1));function _5e(e){return typeof DataView=="undefined"?!1:aR.working?aR(e):e instanceof DataView}Bl.isDataView=_5e;var FG=typeof SharedArrayBuffer!="undefined"?SharedArrayBuffer:void 0;function U4(e){return X0(e)==="[object SharedArrayBuffer]"}function x5e(e){return typeof FG=="undefined"?!1:(typeof U4.working=="undefined"&&(U4.working=U4(new FG)),U4.working?U4(e):e instanceof FG)}Bl.isSharedArrayBuffer=x5e;function MTt(e){return X0(e)==="[object AsyncFunction]"}Bl.isAsyncFunction=MTt;function ETt(e){return X0(e)==="[object Map Iterator]"}Bl.isMapIterator=ETt;function kTt(e){return X0(e)==="[object Set Iterator]"}Bl.isSetIterator=kTt;function CTt(e){return X0(e)==="[object Generator]"}Bl.isGeneratorObject=CTt;function LTt(e){return X0(e)==="[object WebAssembly.Module]"}Bl.isWebAssemblyCompiledModule=LTt;function b5e(e){return V4(e,oTt)}Bl.isNumberObject=b5e;function w5e(e){return V4(e,sTt)}Bl.isStringObject=w5e;function T5e(e){return V4(e,lTt)}Bl.isBooleanObject=T5e;function A5e(e){return v5e&&V4(e,g5e)}Bl.isBigIntObject=A5e;function S5e(e){return p5e&&V4(e,m5e)}Bl.isSymbolObject=S5e;function PTt(e){return b5e(e)||w5e(e)||T5e(e)||A5e(e)||S5e(e)}Bl.isBoxedPrimitive=PTt;function ITt(e){return typeof Uint8Array!="undefined"&&(y5e(e)||x5e(e))}Bl.isAnyArrayBuffer=ITt;["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(e){Object.defineProperty(Bl,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})})});var BG=ye((Yur,M5e)=>{M5e.exports=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"}});var jG=ye(Nl=>{var E5e=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),HG(t)?r.showHidden=t:t&&Nl._extend(r,t),d2(r.showHidden)&&(r.showHidden=!1),d2(r.depth)&&(r.depth=2),d2(r.colors)&&(r.colors=!1),d2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=DTt),uR(r,e,r.depth)}Nl.inspect=R_;R_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};R_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function DTt(e,t){var r=R_.styles[t];return r?"\x1B["+R_.colors[r][0]+"m"+e+"\x1B["+R_.colors[r][1]+"m":e}function zTt(e,t){return e}function FTt(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function uR(e,t,r){if(e.customInspect&&t&&lR(t.inspect)&&t.inspect!==Nl.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return hR(n)||(n=uR(e,n,r)),n}var i=qTt(e,t);if(i)return i;var a=Object.keys(t),o=FTt(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),G4(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return NG(t);if(a.length===0){if(lR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(H4(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(cR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(G4(t))return NG(t)}var l="",u=!1,c=["{","}"];if(C5e(t)&&(u=!0,c=["[","]"]),lR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if(H4(t)&&(l=" "+RegExp.prototype.toString.call(t)),cR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),G4(t)&&(l=" "+NG(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return H4(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=OTt(e,t,r,o,a):h=a.map(function(d){return VG(e,t,r,o,d,u)}),e.seen.pop(),BTt(h,l,c)}function qTt(e,t){if(d2(t))return e.stylize("undefined","undefined");if(hR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(L5e(t))return e.stylize(""+t,"number");if(HG(t))return e.stylize(""+t,"boolean");if(fR(t))return e.stylize("null","null")}function NG(e){return"["+Error.prototype.toString.call(e)+"]"}function OTt(e,t,r,n,i){for(var a=[],o=0,s=t.length;o-1&&(a?s=s.split(` `).map(function(u){return" "+u}).join(` `).slice(2):s=` `+s.split(` `).map(function(u){return" "+u}).join(` -`))):s=e.stylize("[Circular]","special")),d2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function LTt(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` +`))):s=e.stylize("[Circular]","special")),d2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function BTt(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` `)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` `)+" "+e.join(`, - `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}Bl.types=OG();function A5e(e){return Array.isArray(e)}Bl.isArray=A5e;function HG(e){return typeof e=="boolean"}Bl.isBoolean=HG;function cR(e){return e===null}Bl.isNull=cR;function PTt(e){return e==null}Bl.isNullOrUndefined=PTt;function S5e(e){return typeof e=="number"}Bl.isNumber=S5e;function fR(e){return typeof e=="string"}Bl.isString=fR;function ITt(e){return typeof e=="symbol"}Bl.isSymbol=ITt;function d2(e){return e===void 0}Bl.isUndefined=d2;function H4(e){return o5(e)&&GG(e)==="[object RegExp]"}Bl.isRegExp=H4;Bl.types.isRegExp=H4;function o5(e){return typeof e=="object"&&e!==null}Bl.isObject=o5;function uR(e){return o5(e)&&GG(e)==="[object Date]"}Bl.isDate=uR;Bl.types.isDate=uR;function G4(e){return o5(e)&&(GG(e)==="[object Error]"||e instanceof Error)}Bl.isError=G4;Bl.types.isNativeError=G4;function sR(e){return typeof e=="function"}Bl.isFunction=sR;function RTt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}Bl.isPrimitive=RTt;Bl.isBuffer=BG();function GG(e){return Object.prototype.toString.call(e)}function UG(e){return e<10?"0"+e.toString(10):e.toString(10)}var DTt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function zTt(){var e=new Date,t=[UG(e.getHours()),UG(e.getMinutes()),UG(e.getSeconds())].join(":");return[e.getDate(),DTt[e.getMonth()],t].join(" ")}Bl.log=function(){console.log("%s - %s",zTt(),Bl.format.apply(Bl,arguments))};Bl.inherits=Uy();Bl._extend=function(e,t){if(!t||!o5(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function M5e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var h2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;Bl.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(h2&&t[h2]){var r=t[h2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,h2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function E5e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function OTt(e){for(var t=1;t0?this.tail.next=n:this.head=n,this.tail=n,++this.length}},{key:"unshift",value:function(r){var n={data:r,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var n=this.head,i=""+n.data;n=n.next;)i+=r+n.data;return i}},{key:"concat",value:function(r){if(this.length===0)return hR.alloc(0);for(var n=hR.allocUnsafe(r>>>0),i=this.head,a=0;i;)jTt(i.data,n,a),a+=i.data.length,i=i.next;return n}},{key:"consume",value:function(r,n){var i;return ro.length?o.length:r;if(s===o.length?a+=o:a+=o.slice(0,r),r-=s,r===0){s===o.length?(++i,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(s));break}++i}return this.length-=i,a}},{key:"_getBuffer",value:function(r){var n=hR.allocUnsafe(r),i=this.head,a=1;for(i.data.copy(n),r-=i.data.length;i=i.next;){var o=i.data,s=r>o.length?o.length:r;if(o.copy(n,n.length-r,0,s),r-=s,r===0){s===o.length?(++a,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(s));break}++a}return this.length-=a,n}},{key:GTt,value:function(r,n){return WG(this,OTt({},n,{depth:0,customInspect:!1}))}}]),e}()});var XG=ye((Hur,I5e)=>{"use strict";function WTt(e,t){var r=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(ZG,this,e)):process.nextTick(ZG,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(a){!t&&a?r._writableState?r._writableState.errorEmitted?process.nextTick(dR,r):(r._writableState.errorEmitted=!0,process.nextTick(P5e,r,a)):process.nextTick(P5e,r,a):t?(process.nextTick(dR,r),t(a)):process.nextTick(dR,r)}),this)}function P5e(e,t){ZG(e,t),dR(e)}function dR(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function ZTt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function ZG(e,t){e.emit("error",t)}function XTt(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}I5e.exports={destroy:WTt,undestroy:ZTt,errorOrDestroy:XTt}});var v2=ye((Gur,z5e)=>{"use strict";function YTt(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var D5e={};function Y0(e,t,r){r||(r=Error);function n(a,o,s){return typeof t=="string"?t:t(a,o,s)}var i=function(a){YTt(o,a);function o(s,l,u){return a.call(this,n(s,l,u))||this}return o}(r);i.prototype.name=r.name,i.prototype.code=e,D5e[e]=i}function R5e(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(n){return String(n)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function KTt(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function JTt(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function $Tt(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Y0("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Y0("ERR_INVALID_ARG_TYPE",function(e,t,r){var n;typeof t=="string"&&KTt(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(JTt(e," argument"))i="The ".concat(e," ").concat(n," ").concat(R5e(t,"type"));else{var a=$Tt(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(R5e(t,"type"))}return i+=". Received type ".concat(typeof r),i},TypeError);Y0("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Y0("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Y0("ERR_STREAM_PREMATURE_CLOSE","Premature close");Y0("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Y0("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Y0("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Y0("ERR_STREAM_WRITE_AFTER_END","write after end");Y0("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Y0("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Y0("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");z5e.exports.codes=D5e});var YG=ye((jur,F5e)=>{"use strict";var QTt=v2().codes.ERR_INVALID_OPT_VALUE;function e5t(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function t5t(e,t,r,n){var i=e5t(t,n,r);if(i!=null){if(!(isFinite(i)&&Math.floor(i)===i)||i<0){var a=n?r:"highWaterMark";throw new QTt(a,i)}return Math.floor(i)}return e.objectMode?16:16*1024}F5e.exports={getHighWaterMark:t5t}});var O5e=ye((Wur,q5e)=>{q5e.exports=r5t;function r5t(e,t){if(KG("noDeprecation"))return e;var r=!1;function n(){if(!r){if(KG("throwDeprecation"))throw new Error(t);KG("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return n}function KG(e){try{if(!window.localStorage)return!1}catch(r){return!1}var t=window.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var QG=ye((Zur,G5e)=>{"use strict";G5e.exports=_h;function N5e(e){var t=this;this.next=null,this.entry=null,this.finish=function(){C5t(t,e)}}var s5;_h.WritableState=W4;var i5t={deprecate:O5e()},U5e=iG(),pR=u2().Buffer,n5t=window.Uint8Array||function(){};function a5t(e){return pR.from(e)}function o5t(e){return pR.isBuffer(e)||e instanceof n5t}var $G=XG(),s5t=YG(),l5t=s5t.getHighWaterMark,R_=v2().codes,u5t=R_.ERR_INVALID_ARG_TYPE,c5t=R_.ERR_METHOD_NOT_IMPLEMENTED,f5t=R_.ERR_MULTIPLE_CALLBACK,h5t=R_.ERR_STREAM_CANNOT_PIPE,d5t=R_.ERR_STREAM_DESTROYED,v5t=R_.ERR_STREAM_NULL_VALUES,p5t=R_.ERR_STREAM_WRITE_AFTER_END,g5t=R_.ERR_UNKNOWN_ENCODING,l5=$G.errorOrDestroy;Uy()(_h,U5e);function m5t(){}function W4(e,t,r){s5=s5||p2(),e=e||{},typeof r!="boolean"&&(r=t instanceof s5),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=l5t(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=e.decodeStrings===!1;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(i){A5t(t,i)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new N5e(this)}W4.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(W4.prototype,"buffer",{get:i5t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}})();var vR;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(vR=Function.prototype[Symbol.hasInstance],Object.defineProperty(_h,Symbol.hasInstance,{value:function(t){return vR.call(this,t)?!0:this!==_h?!1:t&&t._writableState instanceof W4}})):vR=function(t){return t instanceof this};function _h(e){s5=s5||p2();var t=this instanceof s5;if(!t&&!vR.call(_h,this))return new _h(e);this._writableState=new W4(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),U5e.call(this)}_h.prototype.pipe=function(){l5(this,new h5t)};function y5t(e,t){var r=new p5t;l5(e,r),process.nextTick(t,r)}function _5t(e,t,r,n){var i;return r===null?i=new v5t:typeof r!="string"&&!t.objectMode&&(i=new u5t("chunk",["string","Buffer"],r)),i?(l5(e,i),process.nextTick(n,i),!1):!0}_h.prototype.write=function(e,t,r){var n=this._writableState,i=!1,a=!n.objectMode&&o5t(e);return a&&!pR.isBuffer(e)&&(e=a5t(e)),typeof t=="function"&&(r=t,t=null),a?t="buffer":t||(t=n.defaultEncoding),typeof r!="function"&&(r=m5t),n.ending?y5t(this,r):(a||_5t(this,n,e,r))&&(n.pendingcb++,i=b5t(this,n,a,e,t,r)),i};_h.prototype.cork=function(){this._writableState.corked++};_h.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&V5e(this,e))};_h.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new g5t(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(_h.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function x5t(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=pR.from(t,r)),t}Object.defineProperty(_h.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function b5t(e,t,r,n,i,a){if(!r){var o=x5t(t,n,i);n!==o&&(r=!0,i="buffer",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length{"use strict";var L5t=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};W5e.exports=Om;var j5e=rj(),tj=QG();Uy()(Om,j5e);for(ej=L5t(tj.prototype),gR=0;gR{var yR=u2(),Bm=yR.Buffer;function Z5e(e,t){for(var r in e)t[r]=e[r]}Bm.from&&Bm.alloc&&Bm.allocUnsafe&&Bm.allocUnsafeSlow?X5e.exports=yR:(Z5e(yR,ij),ij.Buffer=g2);function g2(e,t,r){return Bm(e,t,r)}g2.prototype=Object.create(Bm.prototype);Z5e(Bm,g2);g2.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return Bm(e,t,r)};g2.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=Bm(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n};g2.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Bm(e)};g2.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return yR.SlowBuffer(e)}});var oj=ye(J5e=>{"use strict";var aj=Y5e().Buffer,K5e=aj.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function R5t(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function D5t(e){var t=R5t(e);if(typeof t!="string"&&(aj.isEncoding===K5e||!K5e(e)))throw new Error("Unknown encoding: "+e);return t||e}J5e.StringDecoder=Z4;function Z4(e){this.encoding=D5t(e);var t;switch(this.encoding){case"utf16le":this.text=N5t,this.end=U5t,t=4;break;case"utf8":this.fillLast=q5t,t=4;break;case"base64":this.text=V5t,this.end=H5t,t=3;break;default:this.write=G5t,this.end=j5t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=aj.allocUnsafe(t)}Z4.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function z5t(e,t,r){var n=t.length-1;if(n=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(i===2?i=0:e.lastNeed=i-3),i):0))}function F5t(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function q5t(e){var t=this.lastTotal-this.lastNeed,r=F5t(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function O5t(e,t){var r=z5t(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function B5t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function N5t(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function U5t(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function V5t(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function H5t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function G5t(e){return e.toString(this.encoding)}function j5t(e){return e&&e.length?this.write(e):""}});var _R=ye((Kur,eAe)=>{"use strict";var $5e=v2().codes.ERR_STREAM_PREMATURE_CLOSE;function W5t(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i{"use strict";var xR;function D_(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Y5t=_R(),z_=Symbol("lastResolve"),m2=Symbol("lastReject"),X4=Symbol("error"),bR=Symbol("ended"),y2=Symbol("lastPromise"),sj=Symbol("handlePromise"),_2=Symbol("stream");function F_(e,t){return{value:e,done:t}}function K5t(e){var t=e[z_];if(t!==null){var r=e[_2].read();r!==null&&(e[y2]=null,e[z_]=null,e[m2]=null,t(F_(r,!1)))}}function J5t(e){process.nextTick(K5t,e)}function $5t(e,t){return function(r,n){e.then(function(){if(t[bR]){r(F_(void 0,!0));return}t[sj](r,n)},n)}}var Q5t=Object.getPrototypeOf(function(){}),eAt=Object.setPrototypeOf((xR={get stream(){return this[_2]},next:function(){var t=this,r=this[X4];if(r!==null)return Promise.reject(r);if(this[bR])return Promise.resolve(F_(void 0,!0));if(this[_2].destroyed)return new Promise(function(o,s){process.nextTick(function(){t[X4]?s(t[X4]):o(F_(void 0,!0))})});var n=this[y2],i;if(n)i=new Promise($5t(n,this));else{var a=this[_2].read();if(a!==null)return Promise.resolve(F_(a,!1));i=new Promise(this[sj])}return this[y2]=i,i}},D_(xR,Symbol.asyncIterator,function(){return this}),D_(xR,"return",function(){var t=this;return new Promise(function(r,n){t[_2].destroy(null,function(i){if(i){n(i);return}r(F_(void 0,!0))})})}),xR),Q5t),tAt=function(t){var r,n=Object.create(eAt,(r={},D_(r,_2,{value:t,writable:!0}),D_(r,z_,{value:null,writable:!0}),D_(r,m2,{value:null,writable:!0}),D_(r,X4,{value:null,writable:!0}),D_(r,bR,{value:t._readableState.endEmitted,writable:!0}),D_(r,sj,{value:function(a,o){var s=n[_2].read();s?(n[y2]=null,n[z_]=null,n[m2]=null,a(F_(s,!1))):(n[z_]=a,n[m2]=o)},writable:!0}),r));return n[y2]=null,Y5t(t,function(i){if(i&&i.code!=="ERR_STREAM_PREMATURE_CLOSE"){var a=n[m2];a!==null&&(n[y2]=null,n[z_]=null,n[m2]=null,a(i)),n[X4]=i;return}var o=n[z_];o!==null&&(n[y2]=null,n[z_]=null,n[m2]=null,o(F_(void 0,!0))),n[bR]=!0}),t.on("readable",J5t.bind(null,n)),n};tAe.exports=tAt});var nAe=ye(($ur,iAe)=>{iAe.exports=function(){throw new Error("Readable.from is not available in the browser")}});var rj=ye((ecr,vAe)=>{"use strict";vAe.exports=vu;var u5;vu.ReadableState=lAe;var Qur=vb().EventEmitter,sAe=function(t,r){return t.listeners(r).length},K4=iG(),wR=u2().Buffer,rAt=window.Uint8Array||function(){};function iAt(e){return wR.from(e)}function nAt(e){return wR.isBuffer(e)||e instanceof rAt}var lj=jG(),Pl;lj&&lj.debuglog?Pl=lj.debuglog("stream"):Pl=function(){};var aAt=L5e(),pj=XG(),oAt=YG(),sAt=oAt.getHighWaterMark,TR=v2().codes,lAt=TR.ERR_INVALID_ARG_TYPE,uAt=TR.ERR_STREAM_PUSH_AFTER_EOF,cAt=TR.ERR_METHOD_NOT_IMPLEMENTED,fAt=TR.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,c5,uj,cj;Uy()(vu,K4);var Y4=pj.errorOrDestroy,fj=["error","close","destroy","pause","resume"];function hAt(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function lAe(e,t,r){u5=u5||p2(),e=e||{},typeof r!="boolean"&&(r=t instanceof u5),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=sAt(this,e,"readableHighWaterMark",r),this.buffer=new aAt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(c5||(c5=oj().StringDecoder),this.decoder=new c5(e.encoding),this.encoding=e.encoding)}function vu(e){if(u5=u5||p2(),!(this instanceof vu))return new vu(e);var t=this instanceof u5;this._readableState=new lAe(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),K4.call(this)}Object.defineProperty(vu.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});vu.prototype.destroy=pj.destroy;vu.prototype._undestroy=pj.undestroy;vu.prototype._destroy=function(e,t){t(e)};vu.prototype.push=function(e,t){var r=this._readableState,n;return r.objectMode?n=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=wR.from(e,t),t=""),n=!0),uAe(this,e,t,!1,n)};vu.prototype.unshift=function(e){return uAe(this,e,null,!0,!1)};function uAe(e,t,r,n,i){Pl("readableAddChunk",t);var a=e._readableState;if(t===null)a.reading=!1,pAt(e,a);else{var o;if(i||(o=dAt(a,t)),o)Y4(e,o);else if(a.objectMode||t&&t.length>0)if(typeof t!="string"&&!a.objectMode&&Object.getPrototypeOf(t)!==wR.prototype&&(t=iAt(t)),n)a.endEmitted?Y4(e,new fAt):hj(e,a,t,!0);else if(a.ended)Y4(e,new uAt);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||t.length!==0?hj(e,a,t,!1):vj(e,a)):hj(e,a,t,!1)}else n||(a.reading=!1,vj(e,a))}return!a.ended&&(a.length=aAe?e=aAe:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function oAe(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=vAt(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}vu.prototype.read=function(e){Pl("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return Pl("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?dj(this):AR(this),null;if(e=oAe(e,t),e===0&&t.ended)return t.length===0&&dj(this),null;var n=t.needReadable;Pl("need readable",n),(t.length===0||t.length-e0?i=hAe(e,t):i=null,i===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&dj(this)),i!==null&&this.emit("data",i),i};function pAt(e,t){if(Pl("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?AR(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,cAe(e)))}}function AR(e){var t=e._readableState;Pl("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(Pl("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(cAe,e))}function cAe(e){var t=e._readableState;Pl("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,gj(e)}function vj(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(gAt,e,t))}function gAt(e,t){for(;!t.reading&&!t.ended&&(t.length1&&dAe(n.pipes,e)!==-1)&&!u&&(Pl("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(b){Pl("onerror",b),x(),e.removeListener("error",h),sAe(e,"error")===0&&Y4(e,b)}hAt(e,"error",h);function d(){e.removeListener("finish",v),x()}e.once("close",d);function v(){Pl("onfinish"),e.removeListener("close",d),x()}e.once("finish",v);function x(){Pl("unpipe"),r.unpipe(e)}return e.emit("pipe",r),n.flowing||(Pl("pipe resume"),r.resume()),e};function mAt(e){return function(){var r=e._readableState;Pl("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&sAe(e,"data")&&(r.flowing=!0,gj(e))}}vu.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,n.flowing!==!1&&this.resume()):e==="readable"&&!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,Pl("on readable",n.length,n.reading),n.length?AR(this):n.reading||process.nextTick(yAt,this)),r};vu.prototype.addListener=vu.prototype.on;vu.prototype.removeListener=function(e,t){var r=K4.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(fAe,this),r};vu.prototype.removeAllListeners=function(e){var t=K4.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(fAe,this),t};function fAe(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function yAt(e){Pl("readable nexttick read 0"),e.read(0)}vu.prototype.resume=function(){var e=this._readableState;return e.flowing||(Pl("resume"),e.flowing=!e.readableListening,_At(this,e)),e.paused=!1,this};function _At(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(xAt,e,t))}function xAt(e,t){Pl("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),gj(e),t.flowing&&!t.reading&&e.read(0)}vu.prototype.pause=function(){return Pl("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Pl("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function gj(e){var t=e._readableState;for(Pl("flow",t.flowing);t.flowing&&e.read()!==null;);}vu.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;e.on("end",function(){if(Pl("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&t.push(o)}t.push(null)}),e.on("data",function(o){if(Pl("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var s=t.push(o);s||(n=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(s){return function(){return e[s].apply(e,arguments)}}(i));for(var a=0;a=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function dj(e){var t=e._readableState;Pl("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(bAt,t,e))}function bAt(e,t){if(Pl("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(vu.from=function(e,t){return cj===void 0&&(cj=nAe()),cj(vu,e,t)});function dAe(e,t){for(var r=0,n=e.length;r{"use strict";gAe.exports=Hy;var SR=v2().codes,wAt=SR.ERR_METHOD_NOT_IMPLEMENTED,TAt=SR.ERR_MULTIPLE_CALLBACK,AAt=SR.ERR_TRANSFORM_ALREADY_TRANSFORMING,SAt=SR.ERR_TRANSFORM_WITH_LENGTH_0,MR=p2();Uy()(Hy,MR);function MAt(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(n===null)return this.emit("error",new TAt);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";yAe.exports=J4;var mAe=mj();Uy()(J4,mAe);function J4(e){if(!(this instanceof J4))return new J4(e);mAe.call(this,e)}J4.prototype._transform=function(e,t,r){r(null,e)}});var AAe=ye((icr,TAe)=>{"use strict";var yj;function kAt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var wAe=v2().codes,CAt=wAe.ERR_MISSING_ARGS,LAt=wAe.ERR_STREAM_DESTROYED;function xAe(e){if(e)throw e}function PAt(e){return e.setHeader&&typeof e.abort=="function"}function IAt(e,t,r,n){n=kAt(n);var i=!1;e.on("close",function(){i=!0}),yj===void 0&&(yj=_R()),yj(e,{readable:t,writable:r},function(o){if(o)return n(o);i=!0,n()});var a=!1;return function(o){if(!i&&!a){if(a=!0,PAt(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();n(o||new LAt("pipe"))}}}function bAe(e){e()}function RAt(e,t){return e.pipe(t)}function DAt(e){return!e.length||typeof e[e.length-1]!="function"?xAe:e.pop()}function zAt(){for(var e=arguments.length,t=new Array(e),r=0;r0;return IAt(o,l,u,function(c){i||(i=c),c&&a.forEach(bAe),!l&&(a.forEach(bAe),n(i))})});return t.reduce(RAt)}TAe.exports=zAt});var MAe=ye((ncr,SAe)=>{SAe.exports=K0;var _j=vb().EventEmitter,FAt=Uy();FAt(K0,_j);K0.Readable=rj();K0.Writable=QG();K0.Duplex=p2();K0.Transform=mj();K0.PassThrough=_Ae();K0.finished=_R();K0.pipeline=AAe();K0.Stream=K0;function K0(){_j.call(this)}K0.prototype.pipe=function(e,t){var r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function i(){r.readable&&r.resume&&r.resume()}e.on("drain",i),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",o),r.on("close",s));var a=!1;function o(){a||(a=!0,e.end())}function s(){a||(a=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){if(u(),_j.listenerCount(this,"error")===0)throw c}r.on("error",l),e.on("error",l);function u(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",o),r.removeListener("close",s),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e}});var h5=ye(Nl=>{var EAe=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Tj(t)?r.showHidden=t:t&&Nl._extend(r,t),b2(r.showHidden)&&(r.showHidden=!1),b2(r.depth)&&(r.depth=2),b2(r.colors)&&(r.colors=!1),b2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=OAt),LR(r,e,r.depth)}Nl.inspect=q_;q_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};q_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function OAt(e,t){var r=q_.styles[t];return r?"\x1B["+q_.colors[r][0]+"m"+e+"\x1B["+q_.colors[r][1]+"m":e}function BAt(e,t){return e}function NAt(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function LR(e,t,r){if(e.customInspect&&t&&CR(t.inspect)&&t.inspect!==Nl.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return RR(n)||(n=LR(e,n,r)),n}var i=UAt(e,t);if(i)return i;var a=Object.keys(t),o=NAt(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),Q4(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return xj(t);if(a.length===0){if(CR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if($4(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(PR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Q4(t))return xj(t)}var l="",u=!1,c=["{","}"];if(CAe(t)&&(u=!0,c=["[","]"]),CR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if($4(t)&&(l=" "+RegExp.prototype.toString.call(t)),PR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),Q4(t)&&(l=" "+xj(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return $4(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=VAt(e,t,r,o,a):h=a.map(function(d){return wj(e,t,r,o,d,u)}),e.seen.pop(),HAt(h,l,c)}function UAt(e,t){if(b2(t))return e.stylize("undefined","undefined");if(RR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(LAe(t))return e.stylize(""+t,"number");if(Tj(t))return e.stylize(""+t,"boolean");if(IR(t))return e.stylize("null","null")}function xj(e){return"["+Error.prototype.toString.call(e)+"]"}function VAt(e,t,r,n,i){for(var a=[],o=0,s=t.length;o{"use strict";function I5e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function ZTt(e){for(var t=1;t0?this.tail.next=n:this.head=n,this.tail=n,++this.length}},{key:"unshift",value:function(r){var n={data:r,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var n=this.head,i=""+n.data;n=n.next;)i+=r+n.data;return i}},{key:"concat",value:function(r){if(this.length===0)return dR.alloc(0);for(var n=dR.allocUnsafe(r>>>0),i=this.head,a=0;i;)e5t(i.data,n,a),a+=i.data.length,i=i.next;return n}},{key:"consume",value:function(r,n){var i;return ro.length?o.length:r;if(s===o.length?a+=o:a+=o.slice(0,r),r-=s,r===0){s===o.length?(++i,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(s));break}++i}return this.length-=i,a}},{key:"_getBuffer",value:function(r){var n=dR.allocUnsafe(r),i=this.head,a=1;for(i.data.copy(n),r-=i.data.length;i=i.next;){var o=i.data,s=r>o.length?o.length:r;if(o.copy(n,n.length-r,0,s),r-=s,r===0){s===o.length?(++a,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(s));break}++a}return this.length-=a,n}},{key:QTt,value:function(r,n){return WG(this,ZTt({},n,{depth:0,customInspect:!1}))}}]),e}()});var XG=ye(($ur,q5e)=>{"use strict";function t5t(e,t){var r=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(ZG,this,e)):process.nextTick(ZG,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(a){!t&&a?r._writableState?r._writableState.errorEmitted?process.nextTick(vR,r):(r._writableState.errorEmitted=!0,process.nextTick(F5e,r,a)):process.nextTick(F5e,r,a):t?(process.nextTick(vR,r),t(a)):process.nextTick(vR,r)}),this)}function F5e(e,t){ZG(e,t),vR(e)}function vR(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function r5t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function ZG(e,t){e.emit("error",t)}function i5t(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}q5e.exports={destroy:t5t,undestroy:r5t,errorOrDestroy:i5t}});var v2=ye((Qur,N5e)=>{"use strict";function n5t(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var B5e={};function Y0(e,t,r){r||(r=Error);function n(a,o,s){return typeof t=="string"?t:t(a,o,s)}var i=function(a){n5t(o,a);function o(s,l,u){return a.call(this,n(s,l,u))||this}return o}(r);i.prototype.name=r.name,i.prototype.code=e,B5e[e]=i}function O5e(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(n){return String(n)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function a5t(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function o5t(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function s5t(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Y0("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Y0("ERR_INVALID_ARG_TYPE",function(e,t,r){var n;typeof t=="string"&&a5t(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(o5t(e," argument"))i="The ".concat(e," ").concat(n," ").concat(O5e(t,"type"));else{var a=s5t(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(O5e(t,"type"))}return i+=". Received type ".concat(typeof r),i},TypeError);Y0("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Y0("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Y0("ERR_STREAM_PREMATURE_CLOSE","Premature close");Y0("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Y0("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Y0("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Y0("ERR_STREAM_WRITE_AFTER_END","write after end");Y0("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Y0("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Y0("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");N5e.exports.codes=B5e});var YG=ye((ecr,U5e)=>{"use strict";var l5t=v2().codes.ERR_INVALID_OPT_VALUE;function u5t(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function c5t(e,t,r,n){var i=u5t(t,n,r);if(i!=null){if(!(isFinite(i)&&Math.floor(i)===i)||i<0){var a=n?r:"highWaterMark";throw new l5t(a,i)}return Math.floor(i)}return e.objectMode?16:16*1024}U5e.exports={getHighWaterMark:c5t}});var H5e=ye((tcr,V5e)=>{V5e.exports=f5t;function f5t(e,t){if(KG("noDeprecation"))return e;var r=!1;function n(){if(!r){if(KG("throwDeprecation"))throw new Error(t);KG("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return n}function KG(e){try{if(!window.localStorage)return!1}catch(r){return!1}var t=window.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var QG=ye((rcr,Y5e)=>{"use strict";Y5e.exports=_h;function j5e(e){var t=this;this.next=null,this.entry=null,this.finish=function(){O5t(t,e)}}var s5;_h.WritableState=W4;var h5t={deprecate:H5e()},W5e=iG(),gR=u2().Buffer,d5t=window.Uint8Array||function(){};function v5t(e){return gR.from(e)}function p5t(e){return gR.isBuffer(e)||e instanceof d5t}var $G=XG(),g5t=YG(),m5t=g5t.getHighWaterMark,D_=v2().codes,y5t=D_.ERR_INVALID_ARG_TYPE,_5t=D_.ERR_METHOD_NOT_IMPLEMENTED,x5t=D_.ERR_MULTIPLE_CALLBACK,b5t=D_.ERR_STREAM_CANNOT_PIPE,w5t=D_.ERR_STREAM_DESTROYED,T5t=D_.ERR_STREAM_NULL_VALUES,A5t=D_.ERR_STREAM_WRITE_AFTER_END,S5t=D_.ERR_UNKNOWN_ENCODING,l5=$G.errorOrDestroy;Uy()(_h,W5e);function M5t(){}function W4(e,t,r){s5=s5||p2(),e=e||{},typeof r!="boolean"&&(r=t instanceof s5),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=m5t(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=e.decodeStrings===!1;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(i){R5t(t,i)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new j5e(this)}W4.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(W4.prototype,"buffer",{get:h5t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}})();var pR;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(pR=Function.prototype[Symbol.hasInstance],Object.defineProperty(_h,Symbol.hasInstance,{value:function(t){return pR.call(this,t)?!0:this!==_h?!1:t&&t._writableState instanceof W4}})):pR=function(t){return t instanceof this};function _h(e){s5=s5||p2();var t=this instanceof s5;if(!t&&!pR.call(_h,this))return new _h(e);this._writableState=new W4(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),W5e.call(this)}_h.prototype.pipe=function(){l5(this,new b5t)};function E5t(e,t){var r=new A5t;l5(e,r),process.nextTick(t,r)}function k5t(e,t,r,n){var i;return r===null?i=new T5t:typeof r!="string"&&!t.objectMode&&(i=new y5t("chunk",["string","Buffer"],r)),i?(l5(e,i),process.nextTick(n,i),!1):!0}_h.prototype.write=function(e,t,r){var n=this._writableState,i=!1,a=!n.objectMode&&p5t(e);return a&&!gR.isBuffer(e)&&(e=v5t(e)),typeof t=="function"&&(r=t,t=null),a?t="buffer":t||(t=n.defaultEncoding),typeof r!="function"&&(r=M5t),n.ending?E5t(this,r):(a||k5t(this,n,e,r))&&(n.pendingcb++,i=L5t(this,n,a,e,t,r)),i};_h.prototype.cork=function(){this._writableState.corked++};_h.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&Z5e(this,e))};_h.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new S5t(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(_h.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function C5t(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=gR.from(t,r)),t}Object.defineProperty(_h.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L5t(e,t,r,n,i,a){if(!r){var o=C5t(t,n,i);n!==o&&(r=!0,i="buffer",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length{"use strict";var B5t=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};J5e.exports=Om;var K5e=rj(),tj=QG();Uy()(Om,K5e);for(ej=B5t(tj.prototype),mR=0;mR{var _R=u2(),Bm=_R.Buffer;function $5e(e,t){for(var r in e)t[r]=e[r]}Bm.from&&Bm.alloc&&Bm.allocUnsafe&&Bm.allocUnsafeSlow?Q5e.exports=_R:($5e(_R,ij),ij.Buffer=g2);function g2(e,t,r){return Bm(e,t,r)}g2.prototype=Object.create(Bm.prototype);$5e(Bm,g2);g2.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return Bm(e,t,r)};g2.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=Bm(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n};g2.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Bm(e)};g2.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return _R.SlowBuffer(e)}});var oj=ye(rAe=>{"use strict";var aj=eAe().Buffer,tAe=aj.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function V5t(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function H5t(e){var t=V5t(e);if(typeof t!="string"&&(aj.isEncoding===tAe||!tAe(e)))throw new Error("Unknown encoding: "+e);return t||e}rAe.StringDecoder=Z4;function Z4(e){this.encoding=H5t(e);var t;switch(this.encoding){case"utf16le":this.text=Y5t,this.end=K5t,t=4;break;case"utf8":this.fillLast=W5t,t=4;break;case"base64":this.text=J5t,this.end=$5t,t=3;break;default:this.write=Q5t,this.end=eAt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=aj.allocUnsafe(t)}Z4.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function G5t(e,t,r){var n=t.length-1;if(n=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(i===2?i=0:e.lastNeed=i-3),i):0))}function j5t(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function W5t(e){var t=this.lastTotal-this.lastNeed,r=j5t(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function Z5t(e,t){var r=G5t(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function X5t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function Y5t(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function K5t(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function J5t(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function $5t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Q5t(e){return e.toString(this.encoding)}function eAt(e){return e&&e.length?this.write(e):""}});var xR=ye((acr,aAe)=>{"use strict";var iAe=v2().codes.ERR_STREAM_PREMATURE_CLOSE;function tAt(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i{"use strict";var bR;function z_(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var nAt=xR(),F_=Symbol("lastResolve"),m2=Symbol("lastReject"),X4=Symbol("error"),wR=Symbol("ended"),y2=Symbol("lastPromise"),sj=Symbol("handlePromise"),_2=Symbol("stream");function q_(e,t){return{value:e,done:t}}function aAt(e){var t=e[F_];if(t!==null){var r=e[_2].read();r!==null&&(e[y2]=null,e[F_]=null,e[m2]=null,t(q_(r,!1)))}}function oAt(e){process.nextTick(aAt,e)}function sAt(e,t){return function(r,n){e.then(function(){if(t[wR]){r(q_(void 0,!0));return}t[sj](r,n)},n)}}var lAt=Object.getPrototypeOf(function(){}),uAt=Object.setPrototypeOf((bR={get stream(){return this[_2]},next:function(){var t=this,r=this[X4];if(r!==null)return Promise.reject(r);if(this[wR])return Promise.resolve(q_(void 0,!0));if(this[_2].destroyed)return new Promise(function(o,s){process.nextTick(function(){t[X4]?s(t[X4]):o(q_(void 0,!0))})});var n=this[y2],i;if(n)i=new Promise(sAt(n,this));else{var a=this[_2].read();if(a!==null)return Promise.resolve(q_(a,!1));i=new Promise(this[sj])}return this[y2]=i,i}},z_(bR,Symbol.asyncIterator,function(){return this}),z_(bR,"return",function(){var t=this;return new Promise(function(r,n){t[_2].destroy(null,function(i){if(i){n(i);return}r(q_(void 0,!0))})})}),bR),lAt),cAt=function(t){var r,n=Object.create(uAt,(r={},z_(r,_2,{value:t,writable:!0}),z_(r,F_,{value:null,writable:!0}),z_(r,m2,{value:null,writable:!0}),z_(r,X4,{value:null,writable:!0}),z_(r,wR,{value:t._readableState.endEmitted,writable:!0}),z_(r,sj,{value:function(a,o){var s=n[_2].read();s?(n[y2]=null,n[F_]=null,n[m2]=null,a(q_(s,!1))):(n[F_]=a,n[m2]=o)},writable:!0}),r));return n[y2]=null,nAt(t,function(i){if(i&&i.code!=="ERR_STREAM_PREMATURE_CLOSE"){var a=n[m2];a!==null&&(n[y2]=null,n[F_]=null,n[m2]=null,a(i)),n[X4]=i;return}var o=n[F_];o!==null&&(n[y2]=null,n[F_]=null,n[m2]=null,o(q_(void 0,!0))),n[wR]=!0}),t.on("readable",oAt.bind(null,n)),n};oAe.exports=cAt});var uAe=ye((scr,lAe)=>{lAe.exports=function(){throw new Error("Readable.from is not available in the browser")}});var rj=ye((ucr,_Ae)=>{"use strict";_Ae.exports=vu;var u5;vu.ReadableState=dAe;var lcr=vb().EventEmitter,hAe=function(t,r){return t.listeners(r).length},K4=iG(),TR=u2().Buffer,fAt=window.Uint8Array||function(){};function hAt(e){return TR.from(e)}function dAt(e){return TR.isBuffer(e)||e instanceof fAt}var lj=jG(),Il;lj&&lj.debuglog?Il=lj.debuglog("stream"):Il=function(){};var vAt=z5e(),pj=XG(),pAt=YG(),gAt=pAt.getHighWaterMark,AR=v2().codes,mAt=AR.ERR_INVALID_ARG_TYPE,yAt=AR.ERR_STREAM_PUSH_AFTER_EOF,_At=AR.ERR_METHOD_NOT_IMPLEMENTED,xAt=AR.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,c5,uj,cj;Uy()(vu,K4);var Y4=pj.errorOrDestroy,fj=["error","close","destroy","pause","resume"];function bAt(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function dAe(e,t,r){u5=u5||p2(),e=e||{},typeof r!="boolean"&&(r=t instanceof u5),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=gAt(this,e,"readableHighWaterMark",r),this.buffer=new vAt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(c5||(c5=oj().StringDecoder),this.decoder=new c5(e.encoding),this.encoding=e.encoding)}function vu(e){if(u5=u5||p2(),!(this instanceof vu))return new vu(e);var t=this instanceof u5;this._readableState=new dAe(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),K4.call(this)}Object.defineProperty(vu.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});vu.prototype.destroy=pj.destroy;vu.prototype._undestroy=pj.undestroy;vu.prototype._destroy=function(e,t){t(e)};vu.prototype.push=function(e,t){var r=this._readableState,n;return r.objectMode?n=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=TR.from(e,t),t=""),n=!0),vAe(this,e,t,!1,n)};vu.prototype.unshift=function(e){return vAe(this,e,null,!0,!1)};function vAe(e,t,r,n,i){Il("readableAddChunk",t);var a=e._readableState;if(t===null)a.reading=!1,AAt(e,a);else{var o;if(i||(o=wAt(a,t)),o)Y4(e,o);else if(a.objectMode||t&&t.length>0)if(typeof t!="string"&&!a.objectMode&&Object.getPrototypeOf(t)!==TR.prototype&&(t=hAt(t)),n)a.endEmitted?Y4(e,new xAt):hj(e,a,t,!0);else if(a.ended)Y4(e,new yAt);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||t.length!==0?hj(e,a,t,!1):vj(e,a)):hj(e,a,t,!1)}else n||(a.reading=!1,vj(e,a))}return!a.ended&&(a.length=cAe?e=cAe:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function fAe(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=TAt(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}vu.prototype.read=function(e){Il("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return Il("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?dj(this):SR(this),null;if(e=fAe(e,t),e===0&&t.ended)return t.length===0&&dj(this),null;var n=t.needReadable;Il("need readable",n),(t.length===0||t.length-e0?i=mAe(e,t):i=null,i===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&dj(this)),i!==null&&this.emit("data",i),i};function AAt(e,t){if(Il("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?SR(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,pAe(e)))}}function SR(e){var t=e._readableState;Il("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(Il("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(pAe,e))}function pAe(e){var t=e._readableState;Il("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,gj(e)}function vj(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(SAt,e,t))}function SAt(e,t){for(;!t.reading&&!t.ended&&(t.length1&&yAe(n.pipes,e)!==-1)&&!u&&(Il("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(b){Il("onerror",b),x(),e.removeListener("error",h),hAe(e,"error")===0&&Y4(e,b)}bAt(e,"error",h);function d(){e.removeListener("finish",v),x()}e.once("close",d);function v(){Il("onfinish"),e.removeListener("close",d),x()}e.once("finish",v);function x(){Il("unpipe"),r.unpipe(e)}return e.emit("pipe",r),n.flowing||(Il("pipe resume"),r.resume()),e};function MAt(e){return function(){var r=e._readableState;Il("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&hAe(e,"data")&&(r.flowing=!0,gj(e))}}vu.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,n.flowing!==!1&&this.resume()):e==="readable"&&!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,Il("on readable",n.length,n.reading),n.length?SR(this):n.reading||process.nextTick(EAt,this)),r};vu.prototype.addListener=vu.prototype.on;vu.prototype.removeListener=function(e,t){var r=K4.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(gAe,this),r};vu.prototype.removeAllListeners=function(e){var t=K4.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(gAe,this),t};function gAe(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function EAt(e){Il("readable nexttick read 0"),e.read(0)}vu.prototype.resume=function(){var e=this._readableState;return e.flowing||(Il("resume"),e.flowing=!e.readableListening,kAt(this,e)),e.paused=!1,this};function kAt(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(CAt,e,t))}function CAt(e,t){Il("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),gj(e),t.flowing&&!t.reading&&e.read(0)}vu.prototype.pause=function(){return Il("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Il("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function gj(e){var t=e._readableState;for(Il("flow",t.flowing);t.flowing&&e.read()!==null;);}vu.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;e.on("end",function(){if(Il("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&t.push(o)}t.push(null)}),e.on("data",function(o){if(Il("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var s=t.push(o);s||(n=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(s){return function(){return e[s].apply(e,arguments)}}(i));for(var a=0;a=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function dj(e){var t=e._readableState;Il("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(LAt,t,e))}function LAt(e,t){if(Il("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(vu.from=function(e,t){return cj===void 0&&(cj=uAe()),cj(vu,e,t)});function yAe(e,t){for(var r=0,n=e.length;r{"use strict";bAe.exports=Hy;var MR=v2().codes,PAt=MR.ERR_METHOD_NOT_IMPLEMENTED,IAt=MR.ERR_MULTIPLE_CALLBACK,RAt=MR.ERR_TRANSFORM_ALREADY_TRANSFORMING,DAt=MR.ERR_TRANSFORM_WITH_LENGTH_0,ER=p2();Uy()(Hy,ER);function zAt(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(n===null)return this.emit("error",new IAt);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";TAe.exports=J4;var wAe=mj();Uy()(J4,wAe);function J4(e){if(!(this instanceof J4))return new J4(e);wAe.call(this,e)}J4.prototype._transform=function(e,t,r){r(null,e)}});var CAe=ye((hcr,kAe)=>{"use strict";var yj;function qAt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var EAe=v2().codes,OAt=EAe.ERR_MISSING_ARGS,BAt=EAe.ERR_STREAM_DESTROYED;function SAe(e){if(e)throw e}function NAt(e){return e.setHeader&&typeof e.abort=="function"}function UAt(e,t,r,n){n=qAt(n);var i=!1;e.on("close",function(){i=!0}),yj===void 0&&(yj=xR()),yj(e,{readable:t,writable:r},function(o){if(o)return n(o);i=!0,n()});var a=!1;return function(o){if(!i&&!a){if(a=!0,NAt(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();n(o||new BAt("pipe"))}}}function MAe(e){e()}function VAt(e,t){return e.pipe(t)}function HAt(e){return!e.length||typeof e[e.length-1]!="function"?SAe:e.pop()}function GAt(){for(var e=arguments.length,t=new Array(e),r=0;r0;return UAt(o,l,u,function(c){i||(i=c),c&&a.forEach(MAe),!l&&(a.forEach(MAe),n(i))})});return t.reduce(VAt)}kAe.exports=GAt});var PAe=ye((dcr,LAe)=>{LAe.exports=K0;var _j=vb().EventEmitter,jAt=Uy();jAt(K0,_j);K0.Readable=rj();K0.Writable=QG();K0.Duplex=p2();K0.Transform=mj();K0.PassThrough=AAe();K0.finished=xR();K0.pipeline=CAe();K0.Stream=K0;function K0(){_j.call(this)}K0.prototype.pipe=function(e,t){var r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function i(){r.readable&&r.resume&&r.resume()}e.on("drain",i),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",o),r.on("close",s));var a=!1;function o(){a||(a=!0,e.end())}function s(){a||(a=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){if(u(),_j.listenerCount(this,"error")===0)throw c}r.on("error",l),e.on("error",l);function u(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",o),r.removeListener("close",s),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e}});var h5=ye(Ul=>{var IAe=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Tj(t)?r.showHidden=t:t&&Ul._extend(r,t),b2(r.showHidden)&&(r.showHidden=!1),b2(r.depth)&&(r.depth=2),b2(r.colors)&&(r.colors=!1),b2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=ZAt),PR(r,e,r.depth)}Ul.inspect=O_;O_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};O_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function ZAt(e,t){var r=O_.styles[t];return r?"\x1B["+O_.colors[r][0]+"m"+e+"\x1B["+O_.colors[r][1]+"m":e}function XAt(e,t){return e}function YAt(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function PR(e,t,r){if(e.customInspect&&t&&LR(t.inspect)&&t.inspect!==Ul.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return DR(n)||(n=PR(e,n,r)),n}var i=KAt(e,t);if(i)return i;var a=Object.keys(t),o=YAt(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),Q4(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return xj(t);if(a.length===0){if(LR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if($4(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(IR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Q4(t))return xj(t)}var l="",u=!1,c=["{","}"];if(DAe(t)&&(u=!0,c=["[","]"]),LR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if($4(t)&&(l=" "+RegExp.prototype.toString.call(t)),IR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),Q4(t)&&(l=" "+xj(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return $4(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=JAt(e,t,r,o,a):h=a.map(function(d){return wj(e,t,r,o,d,u)}),e.seen.pop(),$At(h,l,c)}function KAt(e,t){if(b2(t))return e.stylize("undefined","undefined");if(DR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(zAe(t))return e.stylize(""+t,"number");if(Tj(t))return e.stylize(""+t,"boolean");if(RR(t))return e.stylize("null","null")}function xj(e){return"["+Error.prototype.toString.call(e)+"]"}function JAt(e,t,r,n,i){for(var a=[],o=0,s=t.length;o-1&&(a?s=s.split(` `).map(function(u){return" "+u}).join(` `).slice(2):s=` `+s.split(` `).map(function(u){return" "+u}).join(` -`))):s=e.stylize("[Circular]","special")),b2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function HAt(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` +`))):s=e.stylize("[Circular]","special")),b2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function $At(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` `)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` `)+" "+e.join(`, - `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}Nl.types=OG();function CAe(e){return Array.isArray(e)}Nl.isArray=CAe;function Tj(e){return typeof e=="boolean"}Nl.isBoolean=Tj;function IR(e){return e===null}Nl.isNull=IR;function GAt(e){return e==null}Nl.isNullOrUndefined=GAt;function LAe(e){return typeof e=="number"}Nl.isNumber=LAe;function RR(e){return typeof e=="string"}Nl.isString=RR;function jAt(e){return typeof e=="symbol"}Nl.isSymbol=jAt;function b2(e){return e===void 0}Nl.isUndefined=b2;function $4(e){return f5(e)&&Aj(e)==="[object RegExp]"}Nl.isRegExp=$4;Nl.types.isRegExp=$4;function f5(e){return typeof e=="object"&&e!==null}Nl.isObject=f5;function PR(e){return f5(e)&&Aj(e)==="[object Date]"}Nl.isDate=PR;Nl.types.isDate=PR;function Q4(e){return f5(e)&&(Aj(e)==="[object Error]"||e instanceof Error)}Nl.isError=Q4;Nl.types.isNativeError=Q4;function CR(e){return typeof e=="function"}Nl.isFunction=CR;function WAt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}Nl.isPrimitive=WAt;Nl.isBuffer=BG();function Aj(e){return Object.prototype.toString.call(e)}function bj(e){return e<10?"0"+e.toString(10):e.toString(10)}var ZAt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function XAt(){var e=new Date,t=[bj(e.getHours()),bj(e.getMinutes()),bj(e.getSeconds())].join(":");return[e.getDate(),ZAt[e.getMonth()],t].join(" ")}Nl.log=function(){console.log("%s - %s",XAt(),Nl.format.apply(Nl,arguments))};Nl.inherits=Uy();Nl._extend=function(e,t){if(!t||!f5(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function PAe(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var x2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;Nl.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(x2&&t[x2]){var r=t[x2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,x2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function O_(e){"@babel/helpers - typeof";return O_=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},O_(e)}function IAe(e,t){for(var r=0;r2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function oSt(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function sSt(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function lSt(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}eE("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError);eE("ERR_INVALID_ARG_TYPE",function(e,t,r){d5===void 0&&(d5=tE()),d5(typeof e=="string","'name' must be a string");var n;typeof t=="string"&&oSt(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(sSt(e," argument"))i="The ".concat(e," ").concat(n," ").concat(RAe(t,"type"));else{var a=lSt(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(RAe(t,"type"))}return i+=". Received type ".concat(O_(r)),i},TypeError);eE("ERR_INVALID_ARG_VALUE",function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"is invalid";Sj===void 0&&(Sj=h5());var n=Sj.inspect(t);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(e,"' ").concat(r,". Received ").concat(n)},TypeError,RangeError);eE("ERR_INVALID_RETURN_VALUE",function(e,t,r){var n;return r&&r.constructor&&r.constructor.name?n="instance of ".concat(r.constructor.name):n="type ".concat(O_(r)),"Expected ".concat(e,' to be returned from the "').concat(t,'"')+" function but got ".concat(n,".")},TypeError);eE("ERR_MISSING_ARGS",function(){for(var e=arguments.length,t=new Array(e),r=0;r0,"At least one arg needs to be specified");var n="The ",i=t.length;switch(t=t.map(function(a){return'"'.concat(a,'"')}),i){case 1:n+="".concat(t[0]," argument");break;case 2:n+="".concat(t[0]," and ").concat(t[1]," arguments");break;default:n+=t.slice(0,i-1).join(", "),n+=", and ".concat(t[i-1]," arguments");break}return"".concat(n," must be specified")},TypeError);zAe.exports.codes=DAe});var jAe=ye((scr,GAe)=>{"use strict";function FAe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function qAe(e){for(var t=1;te.length)&&(r=e.length),e.substring(r-t.length,r)===t}function _St(e,t){if(t=Math.floor(t),e.length==0||t==0)return"";var r=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+=e.substring(0,r-e.length),e}var Gg="",rE="",iE="",xv="",w2={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"},xSt=10;function NAe(e){var t=Object.keys(e),r=Object.create(Object.getPrototypeOf(e));return t.forEach(function(n){r[n]=e[n]}),Object.defineProperty(r,"message",{value:e.message}),r}function nE(e){return Lj(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function bSt(e,t,r){var n="",i="",a=0,o="",s=!1,l=nE(e),u=l.split(` + `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}Ul.types=OG();function DAe(e){return Array.isArray(e)}Ul.isArray=DAe;function Tj(e){return typeof e=="boolean"}Ul.isBoolean=Tj;function RR(e){return e===null}Ul.isNull=RR;function QAt(e){return e==null}Ul.isNullOrUndefined=QAt;function zAe(e){return typeof e=="number"}Ul.isNumber=zAe;function DR(e){return typeof e=="string"}Ul.isString=DR;function eSt(e){return typeof e=="symbol"}Ul.isSymbol=eSt;function b2(e){return e===void 0}Ul.isUndefined=b2;function $4(e){return f5(e)&&Aj(e)==="[object RegExp]"}Ul.isRegExp=$4;Ul.types.isRegExp=$4;function f5(e){return typeof e=="object"&&e!==null}Ul.isObject=f5;function IR(e){return f5(e)&&Aj(e)==="[object Date]"}Ul.isDate=IR;Ul.types.isDate=IR;function Q4(e){return f5(e)&&(Aj(e)==="[object Error]"||e instanceof Error)}Ul.isError=Q4;Ul.types.isNativeError=Q4;function LR(e){return typeof e=="function"}Ul.isFunction=LR;function tSt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}Ul.isPrimitive=tSt;Ul.isBuffer=BG();function Aj(e){return Object.prototype.toString.call(e)}function bj(e){return e<10?"0"+e.toString(10):e.toString(10)}var rSt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function iSt(){var e=new Date,t=[bj(e.getHours()),bj(e.getMinutes()),bj(e.getSeconds())].join(":");return[e.getDate(),rSt[e.getMonth()],t].join(" ")}Ul.log=function(){console.log("%s - %s",iSt(),Ul.format.apply(Ul,arguments))};Ul.inherits=Uy();Ul._extend=function(e,t){if(!t||!f5(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function FAe(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var x2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;Ul.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(x2&&t[x2]){var r=t[x2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,x2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function B_(e){"@babel/helpers - typeof";return B_=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B_(e)}function qAe(e,t){for(var r=0;r2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function pSt(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function gSt(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function mSt(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}eE("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError);eE("ERR_INVALID_ARG_TYPE",function(e,t,r){d5===void 0&&(d5=tE()),d5(typeof e=="string","'name' must be a string");var n;typeof t=="string"&&pSt(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(gSt(e," argument"))i="The ".concat(e," ").concat(n," ").concat(OAe(t,"type"));else{var a=mSt(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(OAe(t,"type"))}return i+=". Received type ".concat(B_(r)),i},TypeError);eE("ERR_INVALID_ARG_VALUE",function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"is invalid";Sj===void 0&&(Sj=h5());var n=Sj.inspect(t);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(e,"' ").concat(r,". Received ").concat(n)},TypeError,RangeError);eE("ERR_INVALID_RETURN_VALUE",function(e,t,r){var n;return r&&r.constructor&&r.constructor.name?n="instance of ".concat(r.constructor.name):n="type ".concat(B_(r)),"Expected ".concat(e,' to be returned from the "').concat(t,'"')+" function but got ".concat(n,".")},TypeError);eE("ERR_MISSING_ARGS",function(){for(var e=arguments.length,t=new Array(e),r=0;r0,"At least one arg needs to be specified");var n="The ",i=t.length;switch(t=t.map(function(a){return'"'.concat(a,'"')}),i){case 1:n+="".concat(t[0]," argument");break;case 2:n+="".concat(t[0]," and ").concat(t[1]," arguments");break;default:n+=t.slice(0,i-1).join(", "),n+=", and ".concat(t[i-1]," arguments");break}return"".concat(n," must be specified")},TypeError);NAe.exports.codes=BAe});var KAe=ye((gcr,YAe)=>{"use strict";function UAe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function VAe(e){for(var t=1;te.length)&&(r=e.length),e.substring(r-t.length,r)===t}function kSt(e,t){if(t=Math.floor(t),e.length==0||t==0)return"";var r=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+=e.substring(0,r-e.length),e}var Gg="",rE="",iE="",xv="",w2={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"},CSt=10;function jAe(e){var t=Object.keys(e),r=Object.create(Object.getPrototypeOf(e));return t.forEach(function(n){r[n]=e[n]}),Object.defineProperty(r,"message",{value:e.message}),r}function nE(e){return Lj(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function LSt(e,t,r){var n="",i="",a=0,o="",s=!1,l=nE(e),u=l.split(` `),c=nE(t).split(` -`),f=0,h="";if(r==="strictEqual"&&Dp(e)==="object"&&Dp(t)==="object"&&e!==null&&t!==null&&(r="strictEqualObject"),u.length===1&&c.length===1&&u[0]!==c[0]){var d=u[0].length+c[0].length;if(d<=xSt){if((Dp(e)!=="object"||e===null)&&(Dp(t)!=="object"||t===null)&&(e!==0||t!==0))return"".concat(w2[r],` +`),f=0,h="";if(r==="strictEqual"&&Dp(e)==="object"&&Dp(t)==="object"&&e!==null&&t!==null&&(r="strictEqualObject"),u.length===1&&c.length===1&&u[0]!==c[0]){var d=u[0].length+c[0].length;if(d<=CSt){if((Dp(e)!=="object"||e===null)&&(Dp(t)!=="object"||t===null)&&(e!==0||t!==0))return"".concat(w2[r],` `)+"".concat(u[0]," !== ").concat(c[0],` `)}else if(r!=="strictEqualObject"){var v=process.stderr&&process.stderr.isTTY?process.stderr.columns:80;if(d2&&(h=` - `.concat(_St(" ",f),"^"),f=0)}}}for(var x=u[u.length-1],b=c[c.length-1];x===b&&(f++<2?o=` - `.concat(x).concat(o):n=x,u.pop(),c.pop(),!(u.length===0||c.length===0));)x=u[u.length-1],b=c[c.length-1];var g=Math.max(u.length,c.length);if(g===0){var E=l.split(` + `.concat(kSt(" ",f),"^"),f=0)}}}for(var x=u[u.length-1],b=c[c.length-1];x===b&&(f++<2?o=` + `.concat(x).concat(o):n=x,u.pop(),c.pop(),!(u.length===0||c.length===0));)x=u[u.length-1],b=c[c.length-1];var p=Math.max(u.length,c.length);if(p===0){var E=l.split(` `);if(E.length>30)for(E[26]="".concat(Gg,"...").concat(xv);E.length>27;)E.pop();return"".concat(w2.notIdentical,` `).concat(E.join(` @@ -52,7 +52,7 @@ `)}f>3&&(o=` `.concat(Gg,"...").concat(xv).concat(o),s=!0),n!==""&&(o=` `.concat(n).concat(o),n="");var k=0,A=w2[r]+` -`.concat(rE,"+ actual").concat(xv," ").concat(iE,"- expected").concat(xv),L=" ".concat(Gg,"...").concat(xv," Lines skipped");for(f=0;f1&&f>2&&(_>4?(i+=` +`.concat(rE,"+ actual").concat(xv," ").concat(iE,"- expected").concat(xv),L=" ".concat(Gg,"...").concat(xv," Lines skipped");for(f=0;f1&&f>2&&(_>4?(i+=` `.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` `.concat(c[f-2]),k++),i+=` `.concat(c[f-1]),k++),a=f,n+=` @@ -60,17 +60,17 @@ `.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` `.concat(u[f-2]),k++),i+=` `.concat(u[f-1]),k++),a=f,i+=` -`.concat(rE,"+").concat(xv," ").concat(u[f]),k++;else{var C=c[f],M=u[f],p=M!==C&&(!BAe(M,",")||M.slice(0,-1)!==C);p&&BAe(C,",")&&C.slice(0,-1)===M&&(p=!1,M+=","),p?(_>1&&f>2&&(_>4?(i+=` +`.concat(rE,"+").concat(xv," ").concat(u[f]),k++;else{var C=c[f],M=u[f],g=M!==C&&(!GAe(M,",")||M.slice(0,-1)!==C);g&&GAe(C,",")&&C.slice(0,-1)===M&&(g=!1,M+=","),g?(_>1&&f>2&&(_>4?(i+=` `.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` `.concat(u[f-2]),k++),i+=` `.concat(u[f-1]),k++),a=f,i+=` `.concat(rE,"+").concat(xv," ").concat(M),n+=` `.concat(iE,"-").concat(xv," ").concat(C),k+=2):(i+=n,n="",(_===1||f===0)&&(i+=` - `.concat(M),k++))}if(k>20&&f20&&f30)for(d[26]="".concat(Gg,"...").concat(xv);d.length>27;)d.pop();d.length===1?a=r.call(this,"".concat(h," ").concat(d[0])):a=r.call(this,"".concat(h,` `).concat(d.join(` @@ -83,22 +83,22 @@ should equal -`):x=" ".concat(s," ").concat(x)),a=r.call(this,"".concat(v).concat(x))}return Error.stackTraceLimit=f,a.generatedMessage=!o,Object.defineProperty(kj(a),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),a.code="ERR_ASSERTION",a.actual=u,a.expected=c,a.operator=s,Error.captureStackTrace&&Error.captureStackTrace(kj(a),l),a.stack,a.name="AssertionError",VAe(a)}return fSt(n,[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:t,value:function(a,o){return Lj(this,qAe(qAe({},o),{},{customInspect:!1,depth:0}))}}]),n}(Cj(Error),Lj.custom);GAe.exports=wSt});var Pj=ye((lcr,ZAe)=>{"use strict";var WAe=Object.prototype.toString;ZAe.exports=function(t){var r=WAe.call(t),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&WAe.call(t.callee)==="[object Function]"),n}});var rSe=ye((ucr,tSe)=>{"use strict";var eSe;Object.keys||(sE=Object.prototype.hasOwnProperty,Ij=Object.prototype.toString,XAe=Pj(),Rj=Object.prototype.propertyIsEnumerable,YAe=!Rj.call({toString:null},"toString"),KAe=Rj.call(function(){},"prototype"),lE=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],FR=function(e){var t=e.constructor;return t&&t.prototype===e},JAe={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},$Ae=function(){if(typeof window=="undefined")return!1;for(var e in window)try{if(!JAe["$"+e]&&sE.call(window,e)&&window[e]!==null&&typeof window[e]=="object")try{FR(window[e])}catch(t){return!0}}catch(t){return!0}return!1}(),QAe=function(e){if(typeof window=="undefined"||!$Ae)return FR(e);try{return FR(e)}catch(t){return!1}},eSe=function(t){var r=t!==null&&typeof t=="object",n=Ij.call(t)==="[object Function]",i=XAe(t),a=r&&Ij.call(t)==="[object String]",o=[];if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var s=KAe&&n;if(a&&t.length>0&&!sE.call(t,0))for(var l=0;l0)for(var u=0;u{"use strict";var TSt=Array.prototype.slice,ASt=Pj(),iSe=Object.keys,qR=iSe?function(t){return iSe(t)}:rSe(),nSe=Object.keys;qR.shim=function(){if(Object.keys){var t=function(){var r=Object.keys(arguments);return r&&r.length===arguments.length}(1,2);t||(Object.keys=function(n){return ASt(n)?nSe(TSt.call(n)):nSe(n)})}else Object.keys=qR;return Object.keys||qR};aSe.exports=qR});var fSe=ye((fcr,cSe)=>{"use strict";var SSt=Dj(),lSe=O8()(),uSe=i5(),oSe=Object,MSt=uSe("Array.prototype.push"),sSe=uSe("Object.prototype.propertyIsEnumerable"),ESt=lSe?Object.getOwnPropertySymbols:null;cSe.exports=function(t,r){if(t==null)throw new TypeError("target must be an object");var n=oSe(t);if(arguments.length===1)return n;for(var i=1;i{"use strict";var zj=fSe(),kSt=function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",t=e.split(""),r={},n=0;n{"use strict";var vSe=function(e){return e!==e};pSe.exports=function(t,r){return t===0&&r===0?1/t===1/r:!!(t===r||vSe(t)&&vSe(r))}});var OR=ye((vcr,gSe)=>{"use strict";var LSt=Fj();gSe.exports=function(){return typeof Object.is=="function"?Object.is:LSt}});var uE=ye((pcr,xSe)=>{"use strict";var PSt=Dj(),ISt=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",RSt=Object.prototype.toString,DSt=Array.prototype.concat,mSe=Object.defineProperty,zSt=function(e){return typeof e=="function"&&RSt.call(e)==="[object Function]"},FSt=yG()(),ySe=mSe&&FSt,qSt=function(e,t,r,n){if(t in e){if(n===!0){if(e[t]===r)return}else if(!zSt(n)||!n())return}ySe?mSe(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r},_Se=function(e,t){var r=arguments.length>2?arguments[2]:{},n=PSt(t);ISt&&(n=DSt.call(n,Object.getOwnPropertySymbols(t)));for(var i=0;i{"use strict";var OSt=OR(),BSt=uE();bSe.exports=function(){var t=OSt();return BSt(Object,{is:t},{is:function(){return Object.is!==t}}),t}});var MSe=ye((mcr,SSe)=>{"use strict";var NSt=uE(),USt=N4(),VSt=Fj(),TSe=OR(),HSt=wSe(),ASe=USt(TSe(),Object);NSt(ASe,{getPolyfill:TSe,implementation:VSt,shim:HSt});SSe.exports=ASe});var qj=ye((ycr,ESe)=>{"use strict";ESe.exports=function(t){return t!==t}});var Oj=ye((_cr,kSe)=>{"use strict";var GSt=qj();kSe.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:GSt}});var LSe=ye((xcr,CSe)=>{"use strict";var jSt=uE(),WSt=Oj();CSe.exports=function(){var t=WSt();return jSt(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}});var DSe=ye((bcr,RSe)=>{"use strict";var ZSt=N4(),XSt=uE(),YSt=qj(),PSe=Oj(),KSt=LSe(),ISe=ZSt(PSe(),Number);XSt(ISe,{getPolyfill:PSe,implementation:YSt,shim:KSt});RSe.exports=ISe});var eMe=ye((wcr,QSe)=>{"use strict";function zSe(e,t){return eMt(e)||QSt(e,t)||$St(e,t)||JSt()}function JSt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function $St(e,t){if(e){if(typeof e=="string")return FSe(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return FSe(e,t)}}function FSe(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r10)return!0;for(var t=0;t57)return!0}return e.length===10&&e>=Math.pow(2,32)}function UR(e){return Object.keys(e).filter(uMt).concat(HR(e).filter(Object.prototype.propertyIsEnumerable.bind(e)))}function YSe(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i{"use strict";function jg(e){"@babel/helpers - typeof";return jg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},jg(e)}function tMe(e,t){for(var r=0;r1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i{"use strict";var JAe=Object.prototype.toString;$Ae.exports=function(t){var r=JAe.call(t),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&JAe.call(t.callee)==="[object Function]"),n}});var sSe=ye((ycr,oSe)=>{"use strict";var aSe;Object.keys||(sE=Object.prototype.hasOwnProperty,Ij=Object.prototype.toString,QAe=Pj(),Rj=Object.prototype.propertyIsEnumerable,eSe=!Rj.call({toString:null},"toString"),tSe=Rj.call(function(){},"prototype"),lE=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],qR=function(e){var t=e.constructor;return t&&t.prototype===e},rSe={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},iSe=function(){if(typeof window=="undefined")return!1;for(var e in window)try{if(!rSe["$"+e]&&sE.call(window,e)&&window[e]!==null&&typeof window[e]=="object")try{qR(window[e])}catch(t){return!0}}catch(t){return!0}return!1}(),nSe=function(e){if(typeof window=="undefined"||!iSe)return qR(e);try{return qR(e)}catch(t){return!1}},aSe=function(t){var r=t!==null&&typeof t=="object",n=Ij.call(t)==="[object Function]",i=QAe(t),a=r&&Ij.call(t)==="[object String]",o=[];if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var s=tSe&&n;if(a&&t.length>0&&!sE.call(t,0))for(var l=0;l0)for(var u=0;u{"use strict";var ISt=Array.prototype.slice,RSt=Pj(),lSe=Object.keys,OR=lSe?function(t){return lSe(t)}:sSe(),uSe=Object.keys;OR.shim=function(){if(Object.keys){var t=function(){var r=Object.keys(arguments);return r&&r.length===arguments.length}(1,2);t||(Object.keys=function(n){return RSt(n)?uSe(ISt.call(n)):uSe(n)})}else Object.keys=OR;return Object.keys||OR};cSe.exports=OR});var gSe=ye((xcr,pSe)=>{"use strict";var DSt=Dj(),dSe=B8()(),vSe=i5(),fSe=Object,zSt=vSe("Array.prototype.push"),hSe=vSe("Object.prototype.propertyIsEnumerable"),FSt=dSe?Object.getOwnPropertySymbols:null;pSe.exports=function(t,r){if(t==null)throw new TypeError("target must be an object");var n=fSe(t);if(arguments.length===1)return n;for(var i=1;i{"use strict";var zj=gSe(),qSt=function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",t=e.split(""),r={},n=0;n{"use strict";var _Se=function(e){return e!==e};xSe.exports=function(t,r){return t===0&&r===0?1/t===1/r:!!(t===r||_Se(t)&&_Se(r))}});var BR=ye((Tcr,bSe)=>{"use strict";var BSt=Fj();bSe.exports=function(){return typeof Object.is=="function"?Object.is:BSt}});var uE=ye((Acr,SSe)=>{"use strict";var NSt=Dj(),USt=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",VSt=Object.prototype.toString,HSt=Array.prototype.concat,wSe=Object.defineProperty,GSt=function(e){return typeof e=="function"&&VSt.call(e)==="[object Function]"},jSt=yG()(),TSe=wSe&&jSt,WSt=function(e,t,r,n){if(t in e){if(n===!0){if(e[t]===r)return}else if(!GSt(n)||!n())return}TSe?wSe(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r},ASe=function(e,t){var r=arguments.length>2?arguments[2]:{},n=NSt(t);USt&&(n=HSt.call(n,Object.getOwnPropertySymbols(t)));for(var i=0;i{"use strict";var ZSt=BR(),XSt=uE();MSe.exports=function(){var t=ZSt();return XSt(Object,{is:t},{is:function(){return Object.is!==t}}),t}});var PSe=ye((Mcr,LSe)=>{"use strict";var YSt=uE(),KSt=N4(),JSt=Fj(),kSe=BR(),$St=ESe(),CSe=KSt(kSe(),Object);YSt(CSe,{getPolyfill:kSe,implementation:JSt,shim:$St});LSe.exports=CSe});var qj=ye((Ecr,ISe)=>{"use strict";ISe.exports=function(t){return t!==t}});var Oj=ye((kcr,RSe)=>{"use strict";var QSt=qj();RSe.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:QSt}});var zSe=ye((Ccr,DSe)=>{"use strict";var eMt=uE(),tMt=Oj();DSe.exports=function(){var t=tMt();return eMt(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}});var BSe=ye((Lcr,OSe)=>{"use strict";var rMt=N4(),iMt=uE(),nMt=qj(),FSe=Oj(),aMt=zSe(),qSe=rMt(FSe(),Number);iMt(qSe,{getPolyfill:FSe,implementation:nMt,shim:aMt});OSe.exports=qSe});var aMe=ye((Pcr,nMe)=>{"use strict";function NSe(e,t){return uMt(e)||lMt(e,t)||sMt(e,t)||oMt()}function oMt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function sMt(e,t){if(e){if(typeof e=="string")return USe(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return USe(e,t)}}function USe(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r10)return!0;for(var t=0;t57)return!0}return e.length===10&&e>=Math.pow(2,32)}function VR(e){return Object.keys(e).filter(yMt).concat(GR(e).filter(Object.prototype.propertyIsEnumerable.bind(e)))}function eMe(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i{"use strict";function jg(e){"@babel/helpers - typeof";return jg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},jg(e)}function oMe(e,t){for(var r=0;r1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i{var vE=1e3,pE=vE*60,gE=pE*60,mE=gE*24,zMt=mE*365.25;_Me.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return FMt(e);if(r==="number"&&isNaN(e)===!1)return t.long?OMt(e):qMt(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function FMt(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*zMt;case"days":case"day":case"d":return r*mE;case"hours":case"hour":case"hrs":case"hr":case"h":return r*gE;case"minutes":case"minute":case"mins":case"min":case"m":return r*pE;case"seconds":case"second":case"secs":case"sec":case"s":return r*vE;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function qMt(e){return e>=mE?Math.round(e/mE)+"d":e>=gE?Math.round(e/gE)+"h":e>=pE?Math.round(e/pE)+"m":e>=vE?Math.round(e/vE)+"s":e+"ms"}function OMt(e){return JR(e,mE,"day")||JR(e,gE,"hour")||JR(e,pE,"minute")||JR(e,vE,"second")||e+" ms"}function JR(e,t,r){if(!(e{$u=bMe.exports=jj.debug=jj.default=jj;$u.coerce=HMt;$u.disable=UMt;$u.enable=NMt;$u.enabled=VMt;$u.humanize=xMe();$u.names=[];$u.skips=[];$u.formatters={};var Gj;function BMt(e){var t=0,r;for(r in e)t=(t<<5)-t+e.charCodeAt(r),t|=0;return $u.colors[Math.abs(t)%$u.colors.length]}function jj(e){function t(){if(t.enabled){var r=t,n=+new Date,i=n-(Gj||n);r.diff=i,r.prev=Gj,r.curr=n,Gj=n;for(var a=new Array(arguments.length),o=0;o{lp=AMe.exports=wMe();lp.log=WMt;lp.formatArgs=jMt;lp.save=ZMt;lp.load=TMe;lp.useColors=GMt;lp.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:XMt();lp.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function GMt(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}lp.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}};function jMt(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+lp.humanize(this.diff),!!t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),e.splice(i,0,r)}}function WMt(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function ZMt(e){try{e==null?lp.storage.removeItem("debug"):lp.storage.debug=e}catch(t){}}function TMe(){var e;try{e=lp.storage.debug}catch(t){}return!e&&typeof process!="undefined"&&"env"in process&&(e=process.env.DEBUG),e}lp.enable(TMe());function XMt(){try{return window.localStorage}catch(e){}}});var RMe=ye((Scr,IMe)=>{var p5=tE(),V_=SMe()("stream-parser");IMe.exports=KMt;var EMe=-1,$R=0,YMt=1,kMe=2;function KMt(e){var t=e&&typeof e._transform=="function",r=e&&typeof e._write=="function";if(!t&&!r)throw new Error("must pass a Writable or Transform stream in");V_("extending Parser into stream"),e._bytes=JMt,e._skipBytes=$Mt,t&&(e._passthrough=QMt),t?e._transform=t4t:e._write=e4t}function yE(e){V_("initializing parser stream"),e._parserBytesLeft=0,e._parserBuffers=[],e._parserBuffered=0,e._parserState=EMe,e._parserCallback=null,typeof e.push=="function"&&(e._parserOutput=e.push.bind(e)),e._parserInit=!0}function JMt(e,t){p5(!this._parserCallback,'there is already a "callback" set!'),p5(isFinite(e)&&e>0,'can only buffer a finite number of bytes > 0, got "'+e+'"'),this._parserInit||yE(this),V_("buffering %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=$R}function $Mt(e,t){p5(!this._parserCallback,'there is already a "callback" set!'),p5(e>0,'can only skip > 0 bytes, got "'+e+'"'),this._parserInit||yE(this),V_("skipping %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=YMt}function QMt(e,t){p5(!this._parserCallback,'There is already a "callback" set!'),p5(e>0,'can only pass through > 0 bytes, got "'+e+'"'),this._parserInit||yE(this),V_("passing through %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=kMe}function e4t(e,t,r){this._parserInit||yE(this),V_("write(%o bytes)",e.length),typeof t=="function"&&(r=t),LMe(this,e,null,r)}function t4t(e,t,r){this._parserInit||yE(this),V_("transform(%o bytes)",e.length),typeof t!="function"&&(t=this._parserOutput),LMe(this,e,t,r)}function CMe(e,t,r,n){return e._parserBytesLeft<=0?n(new Error("got data but not currently parsing anything")):t.length<=e._parserBytesLeft?function(){return MMe(e,t,r,n)}:function(){var i=t.slice(0,e._parserBytesLeft);return MMe(e,i,r,function(a){if(a)return n(a);if(t.length>i.length)return function(){return CMe(e,t.slice(i.length),r,n)}})}}function MMe(e,t,r,n){if(e._parserBytesLeft-=t.length,V_("%o bytes left for stream piece",e._parserBytesLeft),e._parserState===$R?(e._parserBuffers.push(t),e._parserBuffered+=t.length):e._parserState===kMe&&r(t),e._parserBytesLeft===0){var i=e._parserCallback;if(i&&e._parserState===$R&&e._parserBuffers.length>1&&(t=Buffer.concat(e._parserBuffers,e._parserBuffered)),e._parserState!==$R&&(t=null),e._parserCallback=null,e._parserBuffered=0,e._parserState=EMe,e._parserBuffers.splice(0),i){var a=[];t&&a.push(t),r&&a.push(r);var o=i.length>a.length;o&&a.push(PMe(n));var s=i.apply(e,a);if(!o||n===s)return n}}else return n}var LMe=PMe(CMe);function PMe(e){return function(){for(var t=e.apply(this,arguments);typeof t=="function";)t=t();return t}}});var Eu=ye(Gy=>{"use strict";var DMe=MAe().Transform,r4t=RMe();function _E(){DMe.call(this,{readableObjectMode:!0})}_E.prototype=Object.create(DMe.prototype);_E.prototype.constructor=_E;r4t(_E.prototype);Gy.ParserStream=_E;Gy.sliceEq=function(e,t,r){for(var n=t,i=0;i{"use strict";var g5=Eu().readUInt16BE,Zj=Eu().readUInt32BE;function xE(e,t){if(e.length<4+t)return null;var r=Zj(e,t);return e.length>4&15,n=e[4]&15,i=e[5]>>4&15,a=g5(e,6),o=8,s=0;sa.width||i.width===a.width&&i.height>a.height?i:a}),r=e.reduce(function(i,a){return i.height>a.height||i.height===a.height&&i.width>a.width?i:a}),n;return t.width>r.height||t.width===r.height&&t.height>r.width?n=t:n=r,n}eD.exports.readSizeFromMeta=function(e){var t={sizes:[],transforms:[],item_inf:{},item_loc:{}};if(s4t(e,t),!!t.sizes.length){var r=l4t(t.sizes),n=1;t.transforms.forEach(function(a){var o={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},s={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(a.type==="imir"&&(a.value===0?n=s[n]:(n=s[n],n=o[n],n=o[n])),a.type==="irot")for(var l=0;l{"use strict";function tD(e,t){var r=new Error(e);return r.code=t,r}function u4t(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}function jy(e,t,r){this.input=e.subarray(t,r),this.start=t;var n=String.fromCharCode.apply(null,this.input.subarray(0,4));if(n!=="II*\0"&&n!=="MM\0*")throw tD("invalid TIFF signature","EBADDATA");this.big_endian=n[0]==="M"}jy.prototype.each=function(e){this.aborted=!1;var t=this.read_uint32(4);for(this.ifds_to_read=[{id:0,offset:t}];this.ifds_to_read.length>0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,e)}};jy.prototype.read_uint16=function(e){var t=this.input;if(e+2>t.length)throw tD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*256+t[e+1]:t[e]+t[e+1]*256};jy.prototype.read_uint32=function(e){var t=this.input;if(e+4>t.length)throw tD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*16777216+t[e+1]*65536+t[e+2]*256+t[e+3]:t[e]+t[e+1]*256+t[e+2]*65536+t[e+3]*16777216};jy.prototype.is_subifd_link=function(e,t){return e===0&&t===34665||e===0&&t===34853||e===34665&&t===40965};jy.prototype.exif_format_length=function(e){switch(e){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}};jy.prototype.exif_format_read=function(e,t){var r;switch(e){case 1:case 2:return r=this.input[t],r;case 6:return r=this.input[t],r|(r&128)*33554430;case 3:return r=this.read_uint16(t),r;case 8:return r=this.read_uint16(t),r|(r&32768)*131070;case 4:return r=this.read_uint32(t),r;case 9:return r=this.read_uint32(t),r|0;case 5:case 10:case 11:case 12:return null;case 7:return null;default:return null}};jy.prototype.scan_ifd=function(e,t,r){var n=this.read_uint16(t);t+=2;for(var i=0;ithis.input.length)throw tD("unexpected EOF","EBADDATA");for(var h=[],d=c,v=0;v0&&(this.ifds_to_read.push({id:a,offset:h[0]}),f=!0);var b={is_big_endian:this.big_endian,ifd:e,tag:a,format:o,count:s,entry_offset:t+this.start,data_length:u,data_offset:c+this.start,value:h,is_subifd_link:f};if(r(b)===!1){this.aborted=!0;return}t+=12}e===0&&this.ifds_to_read.push({id:1,offset:this.read_uint32(t)})};Xj.exports.ExifParser=jy;Xj.exports.get_orientation=function(e){var t=0;try{return new jy(e,0,e.length).each(function(r){if(r.ifd===0&&r.tag===274&&Array.isArray(r.value))return t=r.value[0],!1}),t}catch(r){return-1}}});var qMe=ye((Ccr,FMe)=>{"use strict";var c4t=Eu().str2arr,f4t=Eu().sliceEq,h4t=Eu().readUInt32BE,iD=zMe(),d4t=rD(),v4t=c4t("ftyp");FMe.exports=function(e){if(f4t(e,4,v4t)){var t=iD.unbox(e,0);if(t){var r=iD.getMimeType(t.data);if(r){for(var n,i=t.end;;){var a=iD.unbox(e,i);if(!a)break;if(i=a.end,a.boxtype==="mdat")return;if(a.boxtype==="meta"){n=a.data;break}}if(n){var o=iD.readSizeFromMeta(n);if(o){var s={width:o.width,height:o.height,type:r.type,mime:r.mime,wUnits:"px",hUnits:"px"};if(o.variants.length>1&&(s.variants=o.variants),o.orientation&&(s.orientation=o.orientation),o.exif_location&&o.exif_location.offset+o.exif_location.length<=e.length){var l=h4t(e,o.exif_location.offset),u=e.slice(o.exif_location.offset+l+4,o.exif_location.offset+o.exif_location.length),c=d4t.get_orientation(u);c>0&&(s.orientation=c)}return s}}}}}}});var NMe=ye((Lcr,BMe)=>{"use strict";var p4t=Eu().str2arr,g4t=Eu().sliceEq,OMe=Eu().readUInt16LE,m4t=p4t("BM");BMe.exports=function(e){if(!(e.length<26)&&g4t(e,0,m4t))return{width:OMe(e,18),height:OMe(e,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}});var jMe=ye((Pcr,GMe)=>{"use strict";var HMe=Eu().str2arr,UMe=Eu().sliceEq,VMe=Eu().readUInt16LE,y4t=HMe("GIF87a"),_4t=HMe("GIF89a");GMe.exports=function(e){if(!(e.length<10)&&!(!UMe(e,0,y4t)&&!UMe(e,0,_4t)))return{width:VMe(e,6),height:VMe(e,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}});var XMe=ye((Icr,ZMe)=>{"use strict";var Yj=Eu().readUInt16LE,x4t=0,b4t=1,WMe=16;ZMe.exports=function(e){var t=Yj(e,0),r=Yj(e,2),n=Yj(e,4);if(!(t!==x4t||r!==b4t||!n)){for(var i=[],a={width:0,height:0},o=0;oa.width||l>a.height)&&(a=u)}return{width:a.width,height:a.height,variants:i,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}});var KMe=ye((Rcr,YMe)=>{"use strict";var Kj=Eu().readUInt16BE,w4t=Eu().str2arr,T4t=Eu().sliceEq,A4t=rD(),S4t=w4t("Exif\0\0");YMe.exports=function(e){if(!(e.length<2)&&!(e[0]!==255||e[1]!==216||e[2]!==255))for(var t=2;;){for(;;){if(e.length-t<2)return;if(e[t++]===255)break}for(var r=e[t++],n;r===255;)r=e[t++];if(208<=r&&r<=217||r===1)n=0;else if(192<=r&&r<=254){if(e.length-t<2)return;n=Kj(e,t)-2,t+=2}else return;if(r===217||r===218)return;var i;if(r===225&&n>=10&&T4t(e,t,S4t)&&(i=A4t.get_orientation(e.slice(t+6,t+n))),n>=5&&192<=r&&r<=207&&r!==196&&r!==200&&r!==204){if(e.length-t0&&(a.orientation=i),a}t+=n}}});var t4e=ye((Dcr,e4e)=>{"use strict";var QMe=Eu().str2arr,JMe=Eu().sliceEq,$Me=Eu().readUInt32BE,M4t=QMe(`\x89PNG\r +`).concat(ZR(e),` +`));var s=new V_({actual:e,expected:t,message:r,operator:i,stackStartFn:n});throw s.generatedMessage=o,s}}sf.match=function e(t,r,n){bMe(t,r,n,e,"match")};sf.doesNotMatch=function e(t,r,n){bMe(t,r,n,e,"doesNotMatch")};function wMe(){for(var e=arguments.length,t=new Array(e),r=0;r{var vE=1e3,pE=vE*60,gE=pE*60,mE=gE*24,GMt=mE*365.25;AMe.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return jMt(e);if(r==="number"&&isNaN(e)===!1)return t.long?ZMt(e):WMt(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function jMt(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*GMt;case"days":case"day":case"d":return r*mE;case"hours":case"hour":case"hrs":case"hr":case"h":return r*gE;case"minutes":case"minute":case"mins":case"min":case"m":return r*pE;case"seconds":case"second":case"secs":case"sec":case"s":return r*vE;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function WMt(e){return e>=mE?Math.round(e/mE)+"d":e>=gE?Math.round(e/gE)+"h":e>=pE?Math.round(e/pE)+"m":e>=vE?Math.round(e/vE)+"s":e+"ms"}function ZMt(e){return $R(e,mE,"day")||$R(e,gE,"hour")||$R(e,pE,"minute")||$R(e,vE,"second")||e+" ms"}function $R(e,t,r){if(!(e{$u=MMe.exports=jj.debug=jj.default=jj;$u.coerce=$Mt;$u.disable=KMt;$u.enable=YMt;$u.enabled=JMt;$u.humanize=SMe();$u.names=[];$u.skips=[];$u.formatters={};var Gj;function XMt(e){var t=0,r;for(r in e)t=(t<<5)-t+e.charCodeAt(r),t|=0;return $u.colors[Math.abs(t)%$u.colors.length]}function jj(e){function t(){if(t.enabled){var r=t,n=+new Date,i=n-(Gj||n);r.diff=i,r.prev=Gj,r.curr=n,Gj=n;for(var a=new Array(arguments.length),o=0;o{lp=CMe.exports=EMe();lp.log=t4t;lp.formatArgs=e4t;lp.save=r4t;lp.load=kMe;lp.useColors=QMt;lp.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:i4t();lp.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function QMt(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}lp.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}};function e4t(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+lp.humanize(this.diff),!!t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),e.splice(i,0,r)}}function t4t(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function r4t(e){try{e==null?lp.storage.removeItem("debug"):lp.storage.debug=e}catch(t){}}function kMe(){var e;try{e=lp.storage.debug}catch(t){}return!e&&typeof process!="undefined"&&"env"in process&&(e=process.env.DEBUG),e}lp.enable(kMe());function i4t(){try{return window.localStorage}catch(e){}}});var OMe=ye((Dcr,qMe)=>{var p5=tE(),H_=LMe()("stream-parser");qMe.exports=a4t;var IMe=-1,QR=0,n4t=1,RMe=2;function a4t(e){var t=e&&typeof e._transform=="function",r=e&&typeof e._write=="function";if(!t&&!r)throw new Error("must pass a Writable or Transform stream in");H_("extending Parser into stream"),e._bytes=o4t,e._skipBytes=s4t,t&&(e._passthrough=l4t),t?e._transform=c4t:e._write=u4t}function yE(e){H_("initializing parser stream"),e._parserBytesLeft=0,e._parserBuffers=[],e._parserBuffered=0,e._parserState=IMe,e._parserCallback=null,typeof e.push=="function"&&(e._parserOutput=e.push.bind(e)),e._parserInit=!0}function o4t(e,t){p5(!this._parserCallback,'there is already a "callback" set!'),p5(isFinite(e)&&e>0,'can only buffer a finite number of bytes > 0, got "'+e+'"'),this._parserInit||yE(this),H_("buffering %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=QR}function s4t(e,t){p5(!this._parserCallback,'there is already a "callback" set!'),p5(e>0,'can only skip > 0 bytes, got "'+e+'"'),this._parserInit||yE(this),H_("skipping %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=n4t}function l4t(e,t){p5(!this._parserCallback,'There is already a "callback" set!'),p5(e>0,'can only pass through > 0 bytes, got "'+e+'"'),this._parserInit||yE(this),H_("passing through %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=RMe}function u4t(e,t,r){this._parserInit||yE(this),H_("write(%o bytes)",e.length),typeof t=="function"&&(r=t),zMe(this,e,null,r)}function c4t(e,t,r){this._parserInit||yE(this),H_("transform(%o bytes)",e.length),typeof t!="function"&&(t=this._parserOutput),zMe(this,e,t,r)}function DMe(e,t,r,n){return e._parserBytesLeft<=0?n(new Error("got data but not currently parsing anything")):t.length<=e._parserBytesLeft?function(){return PMe(e,t,r,n)}:function(){var i=t.slice(0,e._parserBytesLeft);return PMe(e,i,r,function(a){if(a)return n(a);if(t.length>i.length)return function(){return DMe(e,t.slice(i.length),r,n)}})}}function PMe(e,t,r,n){if(e._parserBytesLeft-=t.length,H_("%o bytes left for stream piece",e._parserBytesLeft),e._parserState===QR?(e._parserBuffers.push(t),e._parserBuffered+=t.length):e._parserState===RMe&&r(t),e._parserBytesLeft===0){var i=e._parserCallback;if(i&&e._parserState===QR&&e._parserBuffers.length>1&&(t=Buffer.concat(e._parserBuffers,e._parserBuffered)),e._parserState!==QR&&(t=null),e._parserCallback=null,e._parserBuffered=0,e._parserState=IMe,e._parserBuffers.splice(0),i){var a=[];t&&a.push(t),r&&a.push(r);var o=i.length>a.length;o&&a.push(FMe(n));var s=i.apply(e,a);if(!o||n===s)return n}}else return n}var zMe=FMe(DMe);function FMe(e){return function(){for(var t=e.apply(this,arguments);typeof t=="function";)t=t();return t}}});var Eu=ye(Gy=>{"use strict";var BMe=PAe().Transform,f4t=OMe();function _E(){BMe.call(this,{readableObjectMode:!0})}_E.prototype=Object.create(BMe.prototype);_E.prototype.constructor=_E;f4t(_E.prototype);Gy.ParserStream=_E;Gy.sliceEq=function(e,t,r){for(var n=t,i=0;i{"use strict";var g5=Eu().readUInt16BE,Zj=Eu().readUInt32BE;function xE(e,t){if(e.length<4+t)return null;var r=Zj(e,t);return e.length>4&15,n=e[4]&15,i=e[5]>>4&15,a=g5(e,6),o=8,s=0;sa.width||i.width===a.width&&i.height>a.height?i:a}),r=e.reduce(function(i,a){return i.height>a.height||i.height===a.height&&i.width>a.width?i:a}),n;return t.width>r.height||t.width===r.height&&t.height>r.width?n=t:n=r,n}tD.exports.readSizeFromMeta=function(e){var t={sizes:[],transforms:[],item_inf:{},item_loc:{}};if(g4t(e,t),!!t.sizes.length){var r=m4t(t.sizes),n=1;t.transforms.forEach(function(a){var o={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},s={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(a.type==="imir"&&(a.value===0?n=s[n]:(n=s[n],n=o[n],n=o[n])),a.type==="irot")for(var l=0;l{"use strict";function rD(e,t){var r=new Error(e);return r.code=t,r}function y4t(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}function jy(e,t,r){this.input=e.subarray(t,r),this.start=t;var n=String.fromCharCode.apply(null,this.input.subarray(0,4));if(n!=="II*\0"&&n!=="MM\0*")throw rD("invalid TIFF signature","EBADDATA");this.big_endian=n[0]==="M"}jy.prototype.each=function(e){this.aborted=!1;var t=this.read_uint32(4);for(this.ifds_to_read=[{id:0,offset:t}];this.ifds_to_read.length>0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,e)}};jy.prototype.read_uint16=function(e){var t=this.input;if(e+2>t.length)throw rD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*256+t[e+1]:t[e]+t[e+1]*256};jy.prototype.read_uint32=function(e){var t=this.input;if(e+4>t.length)throw rD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*16777216+t[e+1]*65536+t[e+2]*256+t[e+3]:t[e]+t[e+1]*256+t[e+2]*65536+t[e+3]*16777216};jy.prototype.is_subifd_link=function(e,t){return e===0&&t===34665||e===0&&t===34853||e===34665&&t===40965};jy.prototype.exif_format_length=function(e){switch(e){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}};jy.prototype.exif_format_read=function(e,t){var r;switch(e){case 1:case 2:return r=this.input[t],r;case 6:return r=this.input[t],r|(r&128)*33554430;case 3:return r=this.read_uint16(t),r;case 8:return r=this.read_uint16(t),r|(r&32768)*131070;case 4:return r=this.read_uint32(t),r;case 9:return r=this.read_uint32(t),r|0;case 5:case 10:case 11:case 12:return null;case 7:return null;default:return null}};jy.prototype.scan_ifd=function(e,t,r){var n=this.read_uint16(t);t+=2;for(var i=0;ithis.input.length)throw rD("unexpected EOF","EBADDATA");for(var h=[],d=c,v=0;v0&&(this.ifds_to_read.push({id:a,offset:h[0]}),f=!0);var b={is_big_endian:this.big_endian,ifd:e,tag:a,format:o,count:s,entry_offset:t+this.start,data_length:u,data_offset:c+this.start,value:h,is_subifd_link:f};if(r(b)===!1){this.aborted=!0;return}t+=12}e===0&&this.ifds_to_read.push({id:1,offset:this.read_uint32(t)})};Xj.exports.ExifParser=jy;Xj.exports.get_orientation=function(e){var t=0;try{return new jy(e,0,e.length).each(function(r){if(r.ifd===0&&r.tag===274&&Array.isArray(r.value))return t=r.value[0],!1}),t}catch(r){return-1}}});var VMe=ye((Ocr,UMe)=>{"use strict";var _4t=Eu().str2arr,x4t=Eu().sliceEq,b4t=Eu().readUInt32BE,nD=NMe(),w4t=iD(),T4t=_4t("ftyp");UMe.exports=function(e){if(x4t(e,4,T4t)){var t=nD.unbox(e,0);if(t){var r=nD.getMimeType(t.data);if(r){for(var n,i=t.end;;){var a=nD.unbox(e,i);if(!a)break;if(i=a.end,a.boxtype==="mdat")return;if(a.boxtype==="meta"){n=a.data;break}}if(n){var o=nD.readSizeFromMeta(n);if(o){var s={width:o.width,height:o.height,type:r.type,mime:r.mime,wUnits:"px",hUnits:"px"};if(o.variants.length>1&&(s.variants=o.variants),o.orientation&&(s.orientation=o.orientation),o.exif_location&&o.exif_location.offset+o.exif_location.length<=e.length){var l=b4t(e,o.exif_location.offset),u=e.slice(o.exif_location.offset+l+4,o.exif_location.offset+o.exif_location.length),c=w4t.get_orientation(u);c>0&&(s.orientation=c)}return s}}}}}}});var jMe=ye((Bcr,GMe)=>{"use strict";var A4t=Eu().str2arr,S4t=Eu().sliceEq,HMe=Eu().readUInt16LE,M4t=A4t("BM");GMe.exports=function(e){if(!(e.length<26)&&S4t(e,0,M4t))return{width:HMe(e,18),height:HMe(e,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}});var KMe=ye((Ncr,YMe)=>{"use strict";var XMe=Eu().str2arr,WMe=Eu().sliceEq,ZMe=Eu().readUInt16LE,E4t=XMe("GIF87a"),k4t=XMe("GIF89a");YMe.exports=function(e){if(!(e.length<10)&&!(!WMe(e,0,E4t)&&!WMe(e,0,k4t)))return{width:ZMe(e,6),height:ZMe(e,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}});var QMe=ye((Ucr,$Me)=>{"use strict";var Yj=Eu().readUInt16LE,C4t=0,L4t=1,JMe=16;$Me.exports=function(e){var t=Yj(e,0),r=Yj(e,2),n=Yj(e,4);if(!(t!==C4t||r!==L4t||!n)){for(var i=[],a={width:0,height:0},o=0;oa.width||l>a.height)&&(a=u)}return{width:a.width,height:a.height,variants:i,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}});var t4e=ye((Vcr,e4e)=>{"use strict";var Kj=Eu().readUInt16BE,P4t=Eu().str2arr,I4t=Eu().sliceEq,R4t=iD(),D4t=P4t("Exif\0\0");e4e.exports=function(e){if(!(e.length<2)&&!(e[0]!==255||e[1]!==216||e[2]!==255))for(var t=2;;){for(;;){if(e.length-t<2)return;if(e[t++]===255)break}for(var r=e[t++],n;r===255;)r=e[t++];if(208<=r&&r<=217||r===1)n=0;else if(192<=r&&r<=254){if(e.length-t<2)return;n=Kj(e,t)-2,t+=2}else return;if(r===217||r===218)return;var i;if(r===225&&n>=10&&I4t(e,t,D4t)&&(i=R4t.get_orientation(e.slice(t+6,t+n))),n>=5&&192<=r&&r<=207&&r!==196&&r!==200&&r!==204){if(e.length-t0&&(a.orientation=i),a}t+=n}}});var o4e=ye((Hcr,a4e)=>{"use strict";var n4e=Eu().str2arr,r4e=Eu().sliceEq,i4e=Eu().readUInt32BE,z4t=n4e(`\x89PNG\r  -`),E4t=QMe("IHDR");e4e.exports=function(e){if(!(e.length<24)&&JMe(e,0,M4t)&&JMe(e,12,E4t))return{width:$Me(e,16),height:$Me(e,20),type:"png",mime:"image/png",wUnits:"px",hUnits:"px"}}});var n4e=ye((zcr,i4e)=>{"use strict";var k4t=Eu().str2arr,C4t=Eu().sliceEq,r4e=Eu().readUInt32BE,L4t=k4t("8BPS\0");i4e.exports=function(e){if(!(e.length<22)&&C4t(e,0,L4t))return{width:r4e(e,18),height:r4e(e,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}});var s4e=ye((Fcr,o4e)=>{"use strict";function P4t(e){return e===32||e===9||e===13||e===10}function m5(e){return typeof e=="number"&&isFinite(e)&&e>0}function I4t(e){var t=0,r=e.length;for(e[0]===239&&e[1]===187&&e[2]===191&&(t=3);t]*>/,D4t=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,z4t=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,F4t=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,q4t=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,a4e=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function O4t(e){var t=e.match(z4t),r=e.match(F4t),n=e.match(q4t);return{width:t&&(t[1]||t[2]),height:r&&(r[1]||r[2]),viewbox:n&&(n[1]||n[2])}}function Nm(e){return a4e.test(e)?e.match(a4e)[0]:"px"}o4e.exports=function(e){if(I4t(e)){for(var t="",r=0;r{"use strict";var c4e=Eu().str2arr,l4e=Eu().sliceEq,B4t=Eu().readUInt16LE,N4t=Eu().readUInt16BE,U4t=Eu().readUInt32LE,V4t=Eu().readUInt32BE,H4t=c4e("II*\0"),G4t=c4e("MM\0*");function nD(e,t,r){return r?N4t(e,t):B4t(e,t)}function Jj(e,t,r){return r?V4t(e,t):U4t(e,t)}function u4e(e,t,r){var n=nD(e,t+2,r),i=Jj(e,t+4,r);return i!==1||n!==3&&n!==4?null:n===3?nD(e,t+8,r):Jj(e,t+8,r)}f4e.exports=function(e){if(!(e.length<8)&&!(!l4e(e,0,H4t)&&!l4e(e,0,G4t))){var t=e[0]===77,r=Jj(e,4,t)-8;if(!(r<0)){var n=r+8;if(!(e.length-n<2)){var i=nD(e,n+0,t)*12;if(!(i<=0)&&(n+=2,!(e.length-n{"use strict";var p4e=Eu().str2arr,d4e=Eu().sliceEq,v4e=Eu().readUInt16LE,$j=Eu().readUInt32LE,j4t=rD(),W4t=p4e("RIFF"),Z4t=p4e("WEBP");function X4t(e,t){if(!(e[t+3]!==157||e[t+4]!==1||e[t+5]!==42))return{width:v4e(e,t+6)&16383,height:v4e(e,t+8)&16383,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}function Y4t(e,t){if(e[t]===47){var r=$j(e,t+1);return{width:(r&16383)+1,height:(r>>14&16383)+1,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function K4t(e,t){return{width:(e[t+6]<<16|e[t+5]<<8|e[t+4])+1,height:(e[t+9]<e.length)){for(;t+8=10?r=r||X4t(e,t+8):a==="VP8L"&&o>=9?r=r||Y4t(e,t+8):a==="VP8X"&&o>=10?r=r||K4t(e,t+8):a==="EXIF"&&(n=j4t.get_orientation(e.slice(t+8,t+8+o)),t=1/0),t+=8+o}if(r)return n>0&&(r.orientation=n),r}}}});var _4e=ye((Bcr,y4e)=>{"use strict";y4e.exports={avif:qMe(),bmp:NMe(),gif:jMe(),ico:XMe(),jpeg:KMe(),png:t4e(),psd:n4e(),svg:s4e(),tiff:h4e(),webp:m4e()}});var x4e=ye((Ncr,eW)=>{"use strict";var Qj=_4e();function J4t(e){for(var t=Object.keys(Qj),r=0;r{"use strict";var $4t=x4e(),Q4t=Ly().IMAGE_URL_PREFIX,eEt=u2().Buffer;b4e.getImageSize=function(e){var t=e.replace(Q4t,""),r=new eEt(t,"base64");return $4t(r)}});var S4e=ye((Vcr,A4e)=>{"use strict";var T4e=Mr(),tEt=jT(),rEt=uo(),aD=Qa(),iEt=Mr().maxRowLength,nEt=w4e().getImageSize;A4e.exports=function(t,r){var n,i;if(r._hasZ)n=r.z.length,i=iEt(r.z);else if(r._hasSource){var a=nEt(r.source);n=a.height,i=a.width}var o=aD.getFromId(t,r.xaxis||"x"),s=aD.getFromId(t,r.yaxis||"y"),l=o.d2c(r.x0)-r.dx/2,u=s.d2c(r.y0)-r.dy/2,c,f=[l,l+i*r.dx],h=[u,u+n*r.dy];if(o&&o.type==="log")for(c=0;c{"use strict";var lEt=xa(),T2=Mr(),M4e=T2.strTranslate,uEt=Zp(),cEt=jT(),fEt=jV(),hEt=a8().STYLE;E4e.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis,s=!t._context._exportedPlot&&fEt();T2.makeTraceGroups(i,n,"im").each(function(l){var u=lEt.select(this),c=l[0],f=c.trace,h=(f.zsmooth==="fast"||f.zsmooth===!1&&s)&&!f._hasZ&&f._hasSource&&a.type==="linear"&&o.type==="linear";f._realImage=h;var d=c.z,v=c.x0,x=c.y0,b=c.w,g=c.h,E=f.dx,k=f.dy,A,L,_,C,M,p;for(p=0;A===void 0&&p0;)L=a.c2p(v+p*E),p--;for(p=0;C===void 0&&p0;)M=o.c2p(x+p*k),p--;if(LW[0];if(re||ae){var _e=A+T/2,Me=C+F/2;G+="transform:"+M4e(_e+"px",Me+"px")+"scale("+(re?-1:1)+","+(ae?-1:1)+")"+M4e(-_e+"px",-Me+"px")+";"}}X.attr("style",G);var ke=new Promise(function(ge){if(f._hasZ)ge();else if(f._hasSource)if(f._canvas&&f._canvas.el.width===b&&f._canvas.el.height===g&&f._canvas.source===f.source)ge();else{var ie=document.createElement("canvas");ie.width=b,ie.height=g;var Te=ie.getContext("2d",{willReadFrequently:!0});f._image=f._image||new Image;var Ee=f._image;Ee.onload=function(){Te.drawImage(Ee,0,0),f._canvas={el:ie,source:f.source},ge()},Ee.setAttribute("src",f.source)}}).then(function(){var ge,ie;if(f._hasZ)ie=H(function(Ae,ze){var Ce=d[ze][Ae];return T2.isTypedArray(Ce)&&(Ce=Array.from(Ce)),Ce}),ge=ie.toDataURL("image/png");else if(f._hasSource)if(h)ge=f.source;else{var Te=f._canvas.el.getContext("2d",{willReadFrequently:!0}),Ee=Te.getImageData(0,0,b,g).data;ie=H(function(Ae,ze){var Ce=4*(ze*b+Ae);return[Ee[Ce],Ee[Ce+1],Ee[Ce+2],Ee[Ce+3]]}),ge=ie.toDataURL("image/png")}X.attr({"xlink:href":ge,height:F,width:T,x:A,y:C})});t._promises.push(ke)})}});var L4e=ye((Gcr,C4e)=>{"use strict";var dEt=xa();C4e.exports=function(t){dEt.select(t).selectAll(".im image").style("opacity",function(r){return r[0].trace.opacity})}});var D4e=ye((jcr,R4e)=>{"use strict";var P4e=Nc(),I4e=Mr(),oD=I4e.isArrayOrTypedArray,vEt=jT();R4e.exports=function(t,r,n){var i=t.cd[0],a=i.trace,o=t.xa,s=t.ya;if(!(P4e.inbox(r-i.x0,r-(i.x0+i.w*a.dx),0)>0||P4e.inbox(n-i.y0,n-(i.y0+i.h*a.dy),0)>0)){var l=Math.floor((r-i.x0)/a.dx),u=Math.floor(Math.abs(n-i.y0)/a.dy),c;if(a._hasZ?c=i.z[u][l]:a._hasSource&&(c=a._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(l,u,1,1).data),!!c){var f=i.hi||a.hoverinfo,h;if(f){var d=f.split("+");d.indexOf("all")!==-1&&(d=["color"]),d.indexOf("color")!==-1&&(h=!0)}var v=vEt.colormodel[a.colormodel],x=v.colormodel||a.colormodel,b=x.length,g=a._scaler(c),E=v.suffix,k=[];(a.hovertemplate||h)&&(k.push("["+[g[0]+E[0],g[1]+E[1],g[2]+E[2]].join(", ")),b===4&&k.push(", "+g[3]+E[3]),k.push("]"),k=k.join(""),t.extraText=x.toUpperCase()+": "+k);var A;oD(a.hovertext)&&oD(a.hovertext[u])?A=a.hovertext[u][l]:oD(a.text)&&oD(a.text[u])&&(A=a.text[u][l]);var L=s.c2p(i.y0+(u+.5)*a.dy),_=i.x0+(l+.5)*a.dx,C=i.y0+(u+.5)*a.dy,M="["+c.slice(0,a.colormodel.length).join(", ")+"]";return[I4e.extendFlat(t,{index:[u,l],x0:o.c2p(i.x0+l*a.dx),x1:o.c2p(i.x0+(l+1)*a.dx),y0:L,y1:L,color:g,xVal:_,xLabelVal:_,yVal:C,yLabelVal:C,zLabelVal:M,text:A,hovertemplateLabels:{zLabel:M,colorLabel:k,"color[0]Label":g[0]+E[0],"color[1]Label":g[1]+E[1],"color[2]Label":g[2]+E[2],"color[3]Label":g[3]+E[3]}})]}}}});var F4e=ye((Wcr,z4e)=>{"use strict";z4e.exports=function(t,r){return"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t.color=r.color,t.colormodel=r.trace.colormodel,t.z||(t.z=r.color),t}});var O4e=ye((Zcr,q4e)=>{"use strict";q4e.exports={attributes:tG(),supplyDefaults:y3e(),calc:S4e(),plot:k4e(),style:L4e(),hoverPoints:D4e(),eventData:F4e(),moduleType:"trace",name:"image",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}});var N4e=ye((Xcr,B4e)=>{"use strict";B4e.exports=O4e()});var A2=ye((Ycr,U4e)=>{"use strict";var pEt=vl(),gEt=Ju().attributes,mEt=Su(),yEt=dh(),_Et=Wo().hovertemplateAttrs,xEt=Wo().texttemplateAttrs,bE=no().extendFlat,bEt=Ed().pattern,sD=mEt({editType:"plot",arrayOk:!0,colorEditType:"plot"});U4e.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:yEt.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},pattern:bEt,editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:bE({},pEt.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:_Et({},{keys:["label","color","value","percent","text"]}),texttemplate:xEt({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:bE({},sD,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:bE({},sD,{}),outsidetextfont:bE({},sD,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:bE({},sD,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:gEt({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"}}});var S2=ye((Kcr,G4e)=>{"use strict";var wEt=uo(),wE=Mr(),TEt=A2(),AEt=Ju().defaults,SEt=r0().handleText,MEt=Mr().coercePattern;function V4e(e,t){var r=wE.isArrayOrTypedArray(e),n=wE.isArrayOrTypedArray(t),i=Math.min(r?e.length:1/0,n?t.length:1/0);if(isFinite(i)||(i=0),i&&n){for(var a,o=0;o0){a=!0;break}}a||(i=0)}return{hasLabels:r,hasValues:n,len:i}}function H4e(e,t,r,n,i){var a=n("marker.line.width");a&&n("marker.line.color",i?void 0:r.paper_bgcolor);var o=n("marker.colors");MEt(n,"marker.pattern",o),e.marker&&!t.marker.pattern.fgcolor&&(t.marker.pattern.fgcolor=e.marker.colors),t.marker.pattern.bgcolor||(t.marker.pattern.bgcolor=r.paper_bgcolor)}function EEt(e,t,r,n){function i(E,k){return wE.coerce(e,t,TEt,E,k)}var a=i("labels"),o=i("values"),s=V4e(a,o),l=s.len;if(t._hasLabels=s.hasLabels,t._hasValues=s.hasValues,!t._hasLabels&&t._hasValues&&(i("label0"),i("dlabel")),!l){t.visible=!1;return}t._length=l,H4e(e,t,n,i,!0),i("scalegroup");var u=i("text"),c=i("texttemplate"),f;if(c||(f=i("textinfo",wE.isArrayOrTypedArray(u)?"text+percent":"percent")),i("hovertext"),i("hovertemplate"),c||f&&f!=="none"){var h=i("textposition");SEt(e,t,n,i,h,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1});var d=Array.isArray(h)||h==="auto",v=d||h==="outside";v&&i("automargin"),(h==="inside"||h==="auto"||Array.isArray(h))&&i("insidetextorientation")}else f==="none"&&i("textposition","none");AEt(t,n,i);var x=i("hole"),b=i("title.text");if(b){var g=i("title.position",x?"middle center":"top center");!x&&g==="middle center"&&(t.title.position="top center"),wE.coerceFont(i,"title.font",n.font)}i("sort"),i("direction"),i("rotation"),i("pull")}G4e.exports={handleLabelsAndValues:V4e,handleMarkerDefaults:H4e,supplyDefaults:EEt}});var lD=ye((Jcr,j4e)=>{"use strict";j4e.exports={hiddenlabels:{valType:"data_array",editType:"calc"},piecolorway:{valType:"colorlist",editType:"calc"},extendpiecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var Z4e=ye(($cr,W4e)=>{"use strict";var kEt=Mr(),CEt=lD();W4e.exports=function(t,r){function n(i,a){return kEt.coerce(t,r,CEt,i,a)}n("hiddenlabels"),n("piecolorway",r.colorway),n("extendpiecolors")}});var y5=ye((Qcr,K4e)=>{"use strict";var LEt=uo(),tW=id(),PEt=va(),IEt={};function REt(e,t){var r=[],n=e._fullLayout,i=n.hiddenlabels||[],a=t.labels,o=t.marker.colors||[],s=t.values,l=t._length,u=t._hasValues&&l,c,f;if(t.dlabel)for(a=new Array(l),c=0;c=0});var A=t.type==="funnelarea"?x:t.sort;return A&&r.sort(function(L,_){return _.v-L.v}),r[0]&&(r[0].vTotal=v),r}function X4e(e){return function(r,n){return!r||(r=tW(r),!r.isValid())?!1:(r=PEt.addOpacity(r,r.getAlpha()),e[n]||(e[n]=r),r)}}function DEt(e,t){var r=(t||{}).type;r||(r="pie");var n=e._fullLayout,i=e.calcdata,a=n[r+"colorway"],o=n["_"+r+"colormap"];n["extend"+r+"colors"]&&(a=Y4e(a,IEt));for(var s=0,l=0;l{"use strict";var zEt=rp().appendArrayMultiPointValues;J4e.exports=function(t,r){var n={curveNumber:r.index,pointNumbers:t.pts,data:r._input,fullData:r,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return t.pts.length===1&&(n.pointNumber=n.i=t.pts[0]),zEt(n,r,t.pts),r.type==="funnelarea"&&(delete n.v,delete n.i),n}});var hD=ye((tfr,_Ee)=>{"use strict";var zp=xa(),FEt=Xu(),uD=Nc(),nEe=va(),Wy=ao(),ev=Mr(),qEt=ev.strScale,Q4e=ev.strTranslate,rW=Ll(),aEe=_v(),OEt=aEe.recordMinTextSize,BEt=aEe.clearMinTextSize,oEe=Qb().TEXTPAD,Zo=l_(),cD=$4e(),eEe=Mr().isValidTextValue;function NEt(e,t){var r=e._context.staticPlot,n=e._fullLayout,i=n._size;BEt("pie",n),uEe(t,e),gEe(t,i);var a=ev.makeTraceGroups(n._pielayer,t,"trace").each(function(o){var s=zp.select(this),l=o[0],u=l.trace;YEt(o),s.attr("stroke-linejoin","round"),s.each(function(){var c=zp.select(this).selectAll("g.slice").data(o);c.enter().append("g").classed("slice",!0),c.exit().remove();var f=[[[],[]],[[],[]]],h=!1;c.each(function(A,L){if(A.hidden){zp.select(this).selectAll("path,g").remove();return}A.pointNumber=A.i,A.curveNumber=u.index,f[A.pxmid[1]<0?0:1][A.pxmid[0]<0?0:1].push(A);var _=l.cx,C=l.cy,M=zp.select(this),p=M.selectAll("path.surface").data([A]);if(p.enter().append("path").classed("surface",!0).style({"pointer-events":r?"none":"all"}),M.call(sEe,e,o),u.pull){var P=+Zo.castOption(u.pull,A.pts)||0;P>0&&(_+=P*A.pxmid[0],C+=P*A.pxmid[1])}A.cxFinal=_,A.cyFinal=C;function T(N,W,re,ae){var _e=ae*(W[0]-N[0]),Me=ae*(W[1]-N[1]);return"a"+ae*l.r+","+ae*l.r+" 0 "+A.largeArc+(re?" 1 ":" 0 ")+_e+","+Me}var F=u.hole;if(A.v===l.vTotal){var q="M"+(_+A.px0[0])+","+(C+A.px0[1])+T(A.px0,A.pxmid,!0,1)+T(A.pxmid,A.px0,!0,1)+"Z";F?p.attr("d","M"+(_+F*A.px0[0])+","+(C+F*A.px0[1])+T(A.px0,A.pxmid,!1,F)+T(A.pxmid,A.px0,!1,F)+"Z"+q):p.attr("d",q)}else{var V=T(A.px0,A.px1,!0,1);if(F){var H=1-F;p.attr("d","M"+(_+F*A.px1[0])+","+(C+F*A.px1[1])+T(A.px1,A.px0,!1,F)+"l"+H*A.px0[0]+","+H*A.px0[1]+V+"Z")}else p.attr("d","M"+_+","+C+"l"+A.px0[0]+","+A.px0[1]+V+"Z")}mEe(e,A,l);var X=Zo.castOption(u.textposition,A.pts),G=M.selectAll("g.slicetext").data(A.text&&X!=="none"?[0]:[]);G.enter().append("g").classed("slicetext",!0),G.exit().remove(),G.each(function(){var N=ev.ensureSingle(zp.select(this),"text","",function(ie){ie.attr("data-notex",1)}),W=ev.ensureUniformFontSize(e,X==="outside"?VEt(u,A,n.font):lEe(u,A,n.font));N.text(A.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(Wy.font,W).call(rW.convertToTspans,e);var re=Wy.bBox(N.node()),ae;if(X==="outside")ae=iEe(re,A);else if(ae=cEe(re,A,l),X==="auto"&&ae.scale<1){var _e=ev.ensureUniformFontSize(e,u.outsidetextfont);N.call(Wy.font,_e),re=Wy.bBox(N.node()),ae=iEe(re,A)}var Me=ae.textPosAngle,ke=Me===void 0?A.pxmid:fD(l.r,Me);if(ae.targetX=_+ke[0]*ae.rCenter+(ae.x||0),ae.targetY=C+ke[1]*ae.rCenter+(ae.y||0),yEe(ae,re),ae.outside){var ge=ae.targetY;A.yLabelMin=ge-re.height/2,A.yLabelMid=ge,A.yLabelMax=ge+re.height/2,A.labelExtraX=0,A.labelExtraY=0,h=!0}ae.fontSize=W.size,OEt(u.type,ae,n),o[L].transform=ae,ev.setTransormAndDisplay(N,ae)})});var d=zp.select(this).selectAll("g.titletext").data(u.title.text?[0]:[]);if(d.enter().append("g").classed("titletext",!0),d.exit().remove(),d.each(function(){var A=ev.ensureSingle(zp.select(this),"text","",function(C){C.attr("data-notex",1)}),L=u.title.text;u._meta&&(L=ev.templateString(L,u._meta)),A.text(L).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(Wy.font,u.title.font).call(rW.convertToTspans,e);var _;u.title.position==="middle center"?_=jEt(l):_=vEe(l,i),A.attr("transform",Q4e(_.x,_.y)+qEt(Math.min(1,_.scale))+Q4e(_.tx,_.ty))}),h&&ZEt(f,u),UEt(c,u),h&&u.automargin){var v=Wy.bBox(s.node()),x=u.domain,b=i.w*(x.x[1]-x.x[0]),g=i.h*(x.y[1]-x.y[0]),E=(.5*b-l.r)/i.w,k=(.5*g-l.r)/i.h;FEt.autoMargin(e,"pie."+u.uid+".automargin",{xl:x.x[0]-E,xr:x.x[1]+E,yb:x.y[0]-k,yt:x.y[1]+k,l:Math.max(l.cx-l.r-v.left,0),r:Math.max(v.right-(l.cx+l.r),0),b:Math.max(v.bottom-(l.cy+l.r),0),t:Math.max(l.cy-l.r-v.top,0),pad:5})}})});setTimeout(function(){a.selectAll("tspan").each(function(){var o=zp.select(this);o.attr("dy")&&o.attr("dy",o.attr("dy"))})},0)}function UEt(e,t){e.each(function(r){var n=zp.select(this);if(!r.labelExtraX&&!r.labelExtraY){n.select("path.textline").remove();return}var i=n.select("g.slicetext text");r.transform.targetX+=r.labelExtraX,r.transform.targetY+=r.labelExtraY,ev.setTransormAndDisplay(i,r.transform);var a=r.cxFinal+r.pxmid[0],o=r.cyFinal+r.pxmid[1],s="M"+a+","+o,l=(r.yLabelMax-r.yLabelMin)*(r.pxmid[0]<0?-1:1)/4;if(r.labelExtraX){var u=r.labelExtraX*r.pxmid[1]/r.pxmid[0],c=r.yLabelMid+r.labelExtraY-(r.cyFinal+r.pxmid[1]);Math.abs(u)>Math.abs(c)?s+="l"+c*r.pxmid[0]/r.pxmid[1]+","+c+"H"+(a+r.labelExtraX+l):s+="l"+r.labelExtraX+","+u+"v"+(c-u)+"h"+l}else s+="V"+(r.yLabelMid+r.labelExtraY)+"h"+l;ev.ensureSingle(n,"path","textline").call(nEe.stroke,t.outsidetextfont.color).attr({"stroke-width":Math.min(2,t.outsidetextfont.size/8),d:s,fill:"none"})})}function sEe(e,t,r){var n=r[0],i=n.cx,a=n.cy,o=n.trace,s=o.type==="funnelarea";"_hasHoverLabel"in o||(o._hasHoverLabel=!1),"_hasHoverEvent"in o||(o._hasHoverEvent=!1),e.on("mouseover",function(l){var u=t._fullLayout,c=t._fullData[o.index];if(!(t._dragging||u.hovermode===!1)){var f=c.hoverinfo;if(Array.isArray(f)&&(f=uD.castHoverinfo({hoverinfo:[Zo.castOption(f,l.pts)],_module:o._module},u,0)),f==="all"&&(f="label+text+value+percent+name"),c.hovertemplate||f!=="none"&&f!=="skip"&&f){var h=l.rInscribed||0,d=i+l.pxmid[0]*(1-h),v=a+l.pxmid[1]*(1-h),x=u.separators,b=[];if(f&&f.indexOf("label")!==-1&&b.push(l.label),l.text=Zo.castOption(c.hovertext||c.text,l.pts),f&&f.indexOf("text")!==-1){var g=l.text;ev.isValidTextValue(g)&&b.push(g)}l.value=l.v,l.valueLabel=Zo.formatPieValue(l.v,x),f&&f.indexOf("value")!==-1&&b.push(l.valueLabel),l.percent=l.v/n.vTotal,l.percentLabel=Zo.formatPiePercent(l.percent,x),f&&f.indexOf("percent")!==-1&&b.push(l.percentLabel);var E=c.hoverlabel,k=E.font,A=[];uD.loneHover({trace:o,x0:d-h*n.r,x1:d+h*n.r,y:v,_x0:s?i+l.TL[0]:d-h*n.r,_x1:s?i+l.TR[0]:d+h*n.r,_y0:s?a+l.TL[1]:v-h*n.r,_y1:s?a+l.BL[1]:v+h*n.r,text:b.join("
"),name:c.hovertemplate||f.indexOf("name")!==-1?c.name:void 0,idealAlign:l.pxmid[0]<0?"left":"right",color:Zo.castOption(E.bgcolor,l.pts)||l.color,borderColor:Zo.castOption(E.bordercolor,l.pts),fontFamily:Zo.castOption(k.family,l.pts),fontSize:Zo.castOption(k.size,l.pts),fontColor:Zo.castOption(k.color,l.pts),nameLength:Zo.castOption(E.namelength,l.pts),textAlign:Zo.castOption(E.align,l.pts),hovertemplate:Zo.castOption(c.hovertemplate,l.pts),hovertemplateLabels:l,eventData:[cD(l,c)]},{container:u._hoverlayer.node(),outerContainer:u._paper.node(),gd:t,inOut_bbox:A}),l.bbox=A[0],o._hasHoverLabel=!0}o._hasHoverEvent=!0,t.emit("plotly_hover",{points:[cD(l,c)],event:zp.event})}}),e.on("mouseout",function(l){var u=t._fullLayout,c=t._fullData[o.index],f=zp.select(this).datum();o._hasHoverEvent&&(l.originalEvent=zp.event,t.emit("plotly_unhover",{points:[cD(f,c)],event:zp.event}),o._hasHoverEvent=!1),o._hasHoverLabel&&(uD.loneUnhover(u._hoverlayer.node()),o._hasHoverLabel=!1)}),e.on("click",function(l){var u=t._fullLayout,c=t._fullData[o.index];t._dragging||u.hovermode===!1||(t._hoverdata=[cD(l,c)],uD.click(t,zp.event))})}function VEt(e,t,r){var n=Zo.castOption(e.outsidetextfont.color,t.pts)||Zo.castOption(e.textfont.color,t.pts)||r.color,i=Zo.castOption(e.outsidetextfont.family,t.pts)||Zo.castOption(e.textfont.family,t.pts)||r.family,a=Zo.castOption(e.outsidetextfont.size,t.pts)||Zo.castOption(e.textfont.size,t.pts)||r.size,o=Zo.castOption(e.outsidetextfont.weight,t.pts)||Zo.castOption(e.textfont.weight,t.pts)||r.weight,s=Zo.castOption(e.outsidetextfont.style,t.pts)||Zo.castOption(e.textfont.style,t.pts)||r.style,l=Zo.castOption(e.outsidetextfont.variant,t.pts)||Zo.castOption(e.textfont.variant,t.pts)||r.variant,u=Zo.castOption(e.outsidetextfont.textcase,t.pts)||Zo.castOption(e.textfont.textcase,t.pts)||r.textcase,c=Zo.castOption(e.outsidetextfont.lineposition,t.pts)||Zo.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=Zo.castOption(e.outsidetextfont.shadow,t.pts)||Zo.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n,family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function lEe(e,t,r){var n=Zo.castOption(e.insidetextfont.color,t.pts);!n&&e._input.textfont&&(n=Zo.castOption(e._input.textfont.color,t.pts));var i=Zo.castOption(e.insidetextfont.family,t.pts)||Zo.castOption(e.textfont.family,t.pts)||r.family,a=Zo.castOption(e.insidetextfont.size,t.pts)||Zo.castOption(e.textfont.size,t.pts)||r.size,o=Zo.castOption(e.insidetextfont.weight,t.pts)||Zo.castOption(e.textfont.weight,t.pts)||r.weight,s=Zo.castOption(e.insidetextfont.style,t.pts)||Zo.castOption(e.textfont.style,t.pts)||r.style,l=Zo.castOption(e.insidetextfont.variant,t.pts)||Zo.castOption(e.textfont.variant,t.pts)||r.variant,u=Zo.castOption(e.insidetextfont.textcase,t.pts)||Zo.castOption(e.textfont.textcase,t.pts)||r.textcase,c=Zo.castOption(e.insidetextfont.lineposition,t.pts)||Zo.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=Zo.castOption(e.insidetextfont.shadow,t.pts)||Zo.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n||nEe.contrast(t.color),family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function uEe(e,t){for(var r,n,i=0;i=-4;E-=2)g(Math.PI*E,"tan");for(E=4;E>=-4;E-=2)g(Math.PI*(E+1),"tan")}if(f||d){for(E=4;E>=-4;E-=2)g(Math.PI*(E+1.5),"rad");for(E=4;E>=-4;E-=2)g(Math.PI*(E+.5),"rad")}}if(s||v||f){var k=Math.sqrt(e.width*e.width+e.height*e.height);if(b={scale:i*n*2/k,rCenter:1-i,rotate:0},b.textPosAngle=(t.startangle+t.stopangle)/2,b.scale>=1)return b;x.push(b)}(v||d)&&(b=tEe(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,x.push(b)),(v||h)&&(b=rEe(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,x.push(b));for(var A=0,L=0,_=0;_=1)break}return x[A]}function HEt(e,t){var r=e.startangle,n=e.stopangle;return r>t&&t>n||r0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function jEt(e){var t=Math.sqrt(e.titleBox.width*e.titleBox.width+e.titleBox.height*e.titleBox.height);return{x:e.cx,y:e.cy,scale:e.trace.hole*e.r*2/t,tx:0,ty:-e.titleBox.height/2+e.trace.title.font.size}}function vEe(e,t){var r=1,n=1,i,a=e.trace,o={x:e.cx,y:e.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=pEe(a),a.title.position.indexOf("top")!==-1?(o.y-=(1+i)*e.r,s.ty-=e.titleBox.height):a.title.position.indexOf("bottom")!==-1&&(o.y+=(1+i)*e.r);var l=WEt(e.r,e.trace.aspectratio),u=t.w*(a.domain.x[1]-a.domain.x[0])/2;return a.title.position.indexOf("left")!==-1?(u=u+l,o.x-=(1+i)*l,s.tx+=e.titleBox.width/2):a.title.position.indexOf("center")!==-1?u*=2:a.title.position.indexOf("right")!==-1&&(u=u+l,o.x+=(1+i)*l,s.tx-=e.titleBox.width/2),r=u/e.titleBox.width,n=iW(e,t)/e.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function WEt(e,t){return e/(t===void 0?1:t)}function iW(e,t){var r=e.trace,n=t.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(e.titleBox.height,n/2)}function pEe(e){var t=e.pull;if(!t)return 0;var r;if(ev.isArrayOrTypedArray(t))for(t=0,r=0;rt&&(t=e.pull[r]);return t}function ZEt(e,t){var r,n,i,a,o,s,l,u,c,f,h,d,v;function x(k,A){return k.pxmid[1]-A.pxmid[1]}function b(k,A){return A.pxmid[1]-k.pxmid[1]}function g(k,A){A||(A={});var L=A.labelExtraY+(n?A.yLabelMax:A.yLabelMin),_=n?k.yLabelMin:k.yLabelMax,C=n?k.yLabelMax:k.yLabelMin,M=k.cyFinal+o(k.px0[1],k.px1[1]),p=L-_,P,T,F,q,V,H;if(p*l>0&&(k.labelExtraY=p),!!ev.isArrayOrTypedArray(t.pull))for(T=0;T=(Zo.castOption(t.pull,F.pts)||0))&&((k.pxmid[1]-F.pxmid[1])*l>0?(q=F.cyFinal+o(F.px0[1],F.px1[1]),p=q-_-k.labelExtraY,p*l>0&&(k.labelExtraY+=p)):(C+k.labelExtraY-M)*l>0&&(P=3*s*Math.abs(T-f.indexOf(k)),V=F.cxFinal+a(F.px0[0],F.px1[0]),H=V+P-(k.cxFinal+k.pxmid[0])-k.labelExtraX,H*s>0&&(k.labelExtraX+=H)))}for(n=0;n<2;n++)for(i=n?x:b,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,u=e[n][r],u.sort(i),c=e[1-n][r],f=c.concat(u),d=[],h=0;h1?(u=r.r,c=u/i.aspectratio):(c=r.r,u=c*i.aspectratio),u*=(1+i.baseratio)/2,l=u*c}o=Math.min(o,l/r.vTotal)}for(n=0;nt.vTotal/2?1:0,u.halfangle=Math.PI*Math.min(u.v/t.vTotal,.5),u.ring=1-n.hole,u.rInscribed=GEt(u,t))}function fD(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}function mEe(e,t,r){var n=e._fullLayout,i=r.trace,a=i.texttemplate,o=i.textinfo;if(!a&&o&&o!=="none"){var s=o.split("+"),l=function(A){return s.indexOf(A)!==-1},u=l("label"),c=l("text"),f=l("value"),h=l("percent"),d=n.separators,v;if(v=u?[t.label]:[],c){var x=Zo.getFirstFilled(i.text,t.pts);eEe(x)&&v.push(x)}f&&v.push(Zo.formatPieValue(t.v,d)),h&&v.push(Zo.formatPiePercent(t.v/r.vTotal,d)),t.text=v.join("
")}function b(A){return{label:A.label,value:A.v,valueLabel:Zo.formatPieValue(A.v,n.separators),percent:A.v/r.vTotal,percentLabel:Zo.formatPiePercent(A.v/r.vTotal,n.separators),color:A.color,text:A.text,customdata:ev.castOption(i,A.i,"customdata")}}if(a){var g=ev.castOption(i,t.i,"texttemplate");if(!g)t.text="";else{var E=b(t),k=Zo.getFirstFilled(i.text,t.pts);(eEe(k)||k==="")&&(E.text=k),t.text=ev.texttemplateString(g,E,e._fullLayout._d3locale,E,i._meta||{})}}}function yEe(e,t){var r=e.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(t.left+t.right)/2,o=(t.top+t.bottom)/2;e.textX=a*n-o*i,e.textY=a*i+o*n,e.noCenter=!0}_Ee.exports={plot:NEt,formatSliceLabel:mEe,transformInsideText:cEe,determineInsideTextFont:lEe,positionTitleOutside:vEe,prerenderTitles:uEe,layoutAreas:gEe,attachFxHandlers:sEe,computeTransform:yEe}});var wEe=ye((rfr,bEe)=>{"use strict";var xEe=xa(),KEt=z3(),JEt=_v().resizeText;bEe.exports=function(t){var r=t._fullLayout._pielayer.selectAll(".trace");JEt(t,r,"pie"),r.each(function(n){var i=n[0],a=i.trace,o=xEe.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){xEe.select(this).call(KEt,s,a,t)})})}});var AEe=ye(_5=>{"use strict";var TEe=Xu();_5.name="pie";_5.plot=function(e,t,r,n){TEe.plotBasePlot(_5.name,e,t,r,n)};_5.clean=function(e,t,r,n){TEe.cleanBasePlot(_5.name,e,t,r,n)}});var MEe=ye((nfr,SEe)=>{"use strict";SEe.exports={attributes:A2(),supplyDefaults:S2().supplyDefaults,supplyLayoutDefaults:Z4e(),layoutAttributes:lD(),calc:y5().calc,crossTraceCalc:y5().crossTraceCalc,plot:hD().plot,style:wEe(),styleOne:z3(),moduleType:"trace",name:"pie",basePlotModule:AEe(),categories:["pie-like","pie","showLegend"],meta:{}}});var kEe=ye((afr,EEe)=>{"use strict";EEe.exports=MEe()});var LEe=ye(x5=>{"use strict";var CEe=Xu();x5.name="sunburst";x5.plot=function(e,t,r,n){CEe.plotBasePlot(x5.name,e,t,r,n)};x5.clean=function(e,t,r,n){CEe.cleanBasePlot(x5.name,e,t,r,n)}});var nW=ye((sfr,PEe)=>{"use strict";PEe.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"linear",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"]}});var AE=ye((lfr,REe)=>{"use strict";var $Et=vl(),QEt=Wo().hovertemplateAttrs,ekt=Wo().texttemplateAttrs,tkt=Kl(),rkt=Ju().attributes,Zy=A2(),IEe=nW(),TE=no().extendFlat,ikt=Ed().pattern;REe.exports={labels:{valType:"data_array",editType:"calc"},parents:{valType:"data_array",editType:"calc"},values:{valType:"data_array",editType:"calc"},branchvalues:{valType:"enumerated",values:["remainder","total"],dflt:"remainder",editType:"calc"},count:{valType:"flaglist",flags:["branches","leaves"],dflt:"leaves",editType:"calc"},level:{valType:"any",editType:"plot",anim:!0},maxdepth:{valType:"integer",editType:"plot",dflt:-1},marker:TE({colors:{valType:"data_array",editType:"calc"},line:{color:TE({},Zy.marker.line.color,{dflt:null}),width:TE({},Zy.marker.line.width,{dflt:1}),editType:"calc"},pattern:ikt,editType:"calc"},tkt("marker",{colorAttr:"colors",anim:!1})),leaf:{opacity:{valType:"number",editType:"style",min:0,max:1},editType:"plot"},text:Zy.text,textinfo:{valType:"flaglist",flags:["label","text","value","current path","percent root","percent entry","percent parent"],extras:["none"],editType:"plot"},texttemplate:ekt({editType:"plot"},{keys:IEe.eventDataKeys.concat(["label","value"])}),hovertext:Zy.hovertext,hoverinfo:TE({},$Et.hoverinfo,{flags:["label","text","value","name","current path","percent root","percent entry","percent parent"],dflt:"label+text+value+name"}),hovertemplate:QEt({},{keys:IEe.eventDataKeys}),textfont:Zy.textfont,insidetextorientation:Zy.insidetextorientation,insidetextfont:Zy.insidetextfont,outsidetextfont:TE({},Zy.outsidetextfont,{}),rotation:{valType:"angle",dflt:0,editType:"plot"},sort:Zy.sort,root:{color:{valType:"color",editType:"calc",dflt:"rgba(0,0,0,0)"},editType:"calc"},domain:rkt({name:"sunburst",trace:!0,editType:"calc"})}});var aW=ye((ufr,DEe)=>{"use strict";DEe.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var OEe=ye((cfr,qEe)=>{"use strict";var zEe=Mr(),nkt=AE(),akt=Ju().defaults,okt=r0().handleText,skt=S2().handleMarkerDefaults,FEe=Mu(),lkt=FEe.hasColorscale,ukt=FEe.handleDefaults;qEe.exports=function(t,r,n,i){function a(h,d){return zEe.coerce(t,r,nkt,h,d)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),skt(t,r,i,a);var u=r._hasColorscale=lkt(t,"marker","colors")||(t.marker||{}).coloraxis;u&&ukt(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",u?1:.7);var c=a("text");a("texttemplate"),r.texttemplate||a("textinfo",zEe.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate");var f="auto";okt(t,r,i,a,f,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("insidetextorientation"),a("sort"),a("rotation"),a("root.color"),akt(r,i,a),r._length=null}});var NEe=ye((ffr,BEe)=>{"use strict";var ckt=Mr(),fkt=aW();BEe.exports=function(t,r){function n(i,a){return ckt.coerce(t,r,fkt,i,a)}n("sunburstcolorway",r.colorway),n("extendsunburstcolors")}});var SE=ye((dD,UEe)=>{(function(e,t){typeof dD=="object"&&typeof UEe!="undefined"?t(dD):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.d3=e.d3||{}))})(dD,function(e){"use strict";function t(Ve,Xe){return Ve.parent===Xe.parent?1:2}function r(Ve){return Ve.reduce(n,0)/Ve.length}function n(Ve,Xe){return Ve+Xe.x}function i(Ve){return 1+Ve.reduce(a,0)}function a(Ve,Xe){return Math.max(Ve,Xe.y)}function o(Ve){for(var Xe;Xe=Ve.children;)Ve=Xe[0];return Ve}function s(Ve){for(var Xe;Xe=Ve.children;)Ve=Xe[Xe.length-1];return Ve}function l(){var Ve=t,Xe=1,ht=1,Le=!1;function xe(Se){var lt,Gt=0;Se.eachAfter(function(jr){var ri=jr.children;ri?(jr.x=r(ri),jr.y=i(ri)):(jr.x=lt?Gt+=Ve(jr,lt):0,jr.y=0,lt=jr)});var Vt=o(Se),ar=s(Se),Qr=Vt.x-Ve(Vt,ar)/2,ai=ar.x+Ve(ar,Vt)/2;return Se.eachAfter(Le?function(jr){jr.x=(jr.x-Se.x)*Xe,jr.y=(Se.y-jr.y)*ht}:function(jr){jr.x=(jr.x-Qr)/(ai-Qr)*Xe,jr.y=(1-(Se.y?jr.y/Se.y:1))*ht})}return xe.separation=function(Se){return arguments.length?(Ve=Se,xe):Ve},xe.size=function(Se){return arguments.length?(Le=!1,Xe=+Se[0],ht=+Se[1],xe):Le?null:[Xe,ht]},xe.nodeSize=function(Se){return arguments.length?(Le=!0,Xe=+Se[0],ht=+Se[1],xe):Le?[Xe,ht]:null},xe}function u(Ve){var Xe=0,ht=Ve.children,Le=ht&&ht.length;if(!Le)Xe=1;else for(;--Le>=0;)Xe+=ht[Le].value;Ve.value=Xe}function c(){return this.eachAfter(u)}function f(Ve){var Xe=this,ht,Le=[Xe],xe,Se,lt;do for(ht=Le.reverse(),Le=[];Xe=ht.pop();)if(Ve(Xe),xe=Xe.children,xe)for(Se=0,lt=xe.length;Se=0;--xe)ht.push(Le[xe]);return this}function d(Ve){for(var Xe=this,ht=[Xe],Le=[],xe,Se,lt;Xe=ht.pop();)if(Le.push(Xe),xe=Xe.children,xe)for(Se=0,lt=xe.length;Se=0;)ht+=Le[xe].value;Xe.value=ht})}function x(Ve){return this.eachBefore(function(Xe){Xe.children&&Xe.children.sort(Ve)})}function b(Ve){for(var Xe=this,ht=g(Xe,Ve),Le=[Xe];Xe!==ht;)Xe=Xe.parent,Le.push(Xe);for(var xe=Le.length;Ve!==ht;)Le.splice(xe,0,Ve),Ve=Ve.parent;return Le}function g(Ve,Xe){if(Ve===Xe)return Ve;var ht=Ve.ancestors(),Le=Xe.ancestors(),xe=null;for(Ve=ht.pop(),Xe=Le.pop();Ve===Xe;)xe=Ve,Ve=ht.pop(),Xe=Le.pop();return xe}function E(){for(var Ve=this,Xe=[Ve];Ve=Ve.parent;)Xe.push(Ve);return Xe}function k(){var Ve=[];return this.each(function(Xe){Ve.push(Xe)}),Ve}function A(){var Ve=[];return this.eachBefore(function(Xe){Xe.children||Ve.push(Xe)}),Ve}function L(){var Ve=this,Xe=[];return Ve.each(function(ht){ht!==Ve&&Xe.push({source:ht.parent,target:ht})}),Xe}function _(Ve,Xe){var ht=new T(Ve),Le=+Ve.value&&(ht.value=Ve.value),xe,Se=[ht],lt,Gt,Vt,ar;for(Xe==null&&(Xe=M);xe=Se.pop();)if(Le&&(xe.value=+xe.data.value),(Gt=Xe(xe.data))&&(ar=Gt.length))for(xe.children=new Array(ar),Vt=ar-1;Vt>=0;--Vt)Se.push(lt=xe.children[Vt]=new T(Gt[Vt])),lt.parent=xe,lt.depth=xe.depth+1;return ht.eachBefore(P)}function C(){return _(this).eachBefore(p)}function M(Ve){return Ve.children}function p(Ve){Ve.data=Ve.data.data}function P(Ve){var Xe=0;do Ve.height=Xe;while((Ve=Ve.parent)&&Ve.height<++Xe)}function T(Ve){this.data=Ve,this.depth=this.height=0,this.parent=null}T.prototype=_.prototype={constructor:T,count:c,each:f,eachAfter:d,eachBefore:h,sum:v,sort:x,path:b,ancestors:E,descendants:k,leaves:A,links:L,copy:C};var F=Array.prototype.slice;function q(Ve){for(var Xe=Ve.length,ht,Le;Xe;)Le=Math.random()*Xe--|0,ht=Ve[Xe],Ve[Xe]=Ve[Le],Ve[Le]=ht;return Ve}function V(Ve){for(var Xe=0,ht=(Ve=q(F.call(Ve))).length,Le=[],xe,Se;Xe0&&ht*ht>Le*Le+xe*xe}function N(Ve,Xe){for(var ht=0;htVt?(xe=(ar+Vt-Se)/(2*ar),Gt=Math.sqrt(Math.max(0,Vt/ar-xe*xe)),ht.x=Ve.x-xe*Le-Gt*lt,ht.y=Ve.y-xe*lt+Gt*Le):(xe=(ar+Se-Vt)/(2*ar),Gt=Math.sqrt(Math.max(0,Se/ar-xe*xe)),ht.x=Xe.x+xe*Le-Gt*lt,ht.y=Xe.y+xe*lt+Gt*Le)):(ht.x=Xe.x+ht.r,ht.y=Xe.y)}function ke(Ve,Xe){var ht=Ve.r+Xe.r-1e-6,Le=Xe.x-Ve.x,xe=Xe.y-Ve.y;return ht>0&&ht*ht>Le*Le+xe*xe}function ge(Ve){var Xe=Ve._,ht=Ve.next._,Le=Xe.r+ht.r,xe=(Xe.x*ht.r+ht.x*Xe.r)/Le,Se=(Xe.y*ht.r+ht.y*Xe.r)/Le;return xe*xe+Se*Se}function ie(Ve){this._=Ve,this.next=null,this.previous=null}function Te(Ve){if(!(xe=Ve.length))return 0;var Xe,ht,Le,xe,Se,lt,Gt,Vt,ar,Qr,ai;if(Xe=Ve[0],Xe.x=0,Xe.y=0,!(xe>1))return Xe.r;if(ht=Ve[1],Xe.x=-ht.r,ht.x=Xe.r,ht.y=0,!(xe>2))return Xe.r+ht.r;Me(ht,Xe,Le=Ve[2]),Xe=new ie(Xe),ht=new ie(ht),Le=new ie(Le),Xe.next=Le.previous=ht,ht.next=Xe.previous=Le,Le.next=ht.previous=Xe;e:for(Gt=3;Gt0)throw new Error("cycle");return Gt}return ht.id=function(Le){return arguments.length?(Ve=ze(Le),ht):Ve},ht.parentId=function(Le){return arguments.length?(Xe=ze(Le),ht):Xe},ht}function Ke(Ve,Xe){return Ve.parent===Xe.parent?1:2}function xt(Ve){var Xe=Ve.children;return Xe?Xe[0]:Ve.t}function bt(Ve){var Xe=Ve.children;return Xe?Xe[Xe.length-1]:Ve.t}function Lt(Ve,Xe,ht){var Le=ht/(Xe.i-Ve.i);Xe.c-=Le,Xe.s+=ht,Ve.c+=Le,Xe.z+=ht,Xe.m+=ht}function St(Ve){for(var Xe=0,ht=0,Le=Ve.children,xe=Le.length,Se;--xe>=0;)Se=Le[xe],Se.z+=Xe,Se.m+=Xe,Xe+=Se.s+(ht+=Se.c)}function Et(Ve,Xe,ht){return Ve.a.parent===Xe.parent?Ve.a:ht}function dt(Ve,Xe){this._=Ve,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=Xe}dt.prototype=Object.create(T.prototype);function Ht(Ve){for(var Xe=new dt(Ve,0),ht,Le=[Xe],xe,Se,lt,Gt;ht=Le.pop();)if(Se=ht._.children)for(ht.children=new Array(Gt=Se.length),lt=Gt-1;lt>=0;--lt)Le.push(xe=ht.children[lt]=new dt(Se[lt],lt)),xe.parent=ht;return(Xe.parent=new dt(null,0)).children=[Xe],Xe}function $t(){var Ve=Ke,Xe=1,ht=1,Le=null;function xe(ar){var Qr=Ht(ar);if(Qr.eachAfter(Se),Qr.parent.m=-Qr.z,Qr.eachBefore(lt),Le)ar.eachBefore(Vt);else{var ai=ar,jr=ar,ri=ar;ar.eachBefore(function(_n){_n.xjr.x&&(jr=_n),_n.depth>ri.depth&&(ri=_n)});var bi=ai===jr?1:Ve(ai,jr)/2,nn=bi-ai.x,Wi=Xe/(jr.x+bi+nn),Ni=ht/(ri.depth||1);ar.eachBefore(function(_n){_n.x=(_n.x+nn)*Wi,_n.y=_n.depth*Ni})}return ar}function Se(ar){var Qr=ar.children,ai=ar.parent.children,jr=ar.i?ai[ar.i-1]:null;if(Qr){St(ar);var ri=(Qr[0].z+Qr[Qr.length-1].z)/2;jr?(ar.z=jr.z+Ve(ar._,jr._),ar.m=ar.z-ri):ar.z=ri}else jr&&(ar.z=jr.z+Ve(ar._,jr._));ar.parent.A=Gt(ar,jr,ar.parent.A||ai[0])}function lt(ar){ar._.x=ar.z+ar.parent.m,ar.m+=ar.parent.m}function Gt(ar,Qr,ai){if(Qr){for(var jr=ar,ri=ar,bi=Qr,nn=jr.parent.children[0],Wi=jr.m,Ni=ri.m,_n=bi.m,$i=nn.m,zn;bi=bt(bi),jr=xt(jr),bi&&jr;)nn=xt(nn),ri=bt(ri),ri.a=ar,zn=bi.z+_n-jr.z-Wi+Ve(bi._,jr._),zn>0&&(Lt(Et(bi,ar,ai),ar,zn),Wi+=zn,Ni+=zn),_n+=bi.m,Wi+=jr.m,$i+=nn.m,Ni+=ri.m;bi&&!bt(ri)&&(ri.t=bi,ri.m+=_n-Ni),jr&&!xt(nn)&&(nn.t=jr,nn.m+=Wi-$i,ai=ar)}return ai}function Vt(ar){ar.x*=Xe,ar.y=ar.depth*ht}return xe.separation=function(ar){return arguments.length?(Ve=ar,xe):Ve},xe.size=function(ar){return arguments.length?(Le=!1,Xe=+ar[0],ht=+ar[1],xe):Le?null:[Xe,ht]},xe.nodeSize=function(ar){return arguments.length?(Le=!0,Xe=+ar[0],ht=+ar[1],xe):Le?[Xe,ht]:null},xe}function fr(Ve,Xe,ht,Le,xe){for(var Se=Ve.children,lt,Gt=-1,Vt=Se.length,ar=Ve.value&&(xe-ht)/Ve.value;++Gt_n&&(_n=ar),It=Wi*Wi*Wn,$i=Math.max(_n/It,It/Ni),$i>zn){Wi-=ar;break}zn=$i}lt.push(Vt={value:Wi,dice:ri1?Le:1)},ht}(_r);function Nr(){var Ve=Or,Xe=!1,ht=1,Le=1,xe=[0],Se=Ce,lt=Ce,Gt=Ce,Vt=Ce,ar=Ce;function Qr(jr){return jr.x0=jr.y0=0,jr.x1=ht,jr.y1=Le,jr.eachBefore(ai),xe=[0],Xe&&jr.eachBefore(qt),jr}function ai(jr){var ri=xe[jr.depth],bi=jr.x0+ri,nn=jr.y0+ri,Wi=jr.x1-ri,Ni=jr.y1-ri;Wi=jr-1){var _n=Se[ai];_n.x0=bi,_n.y0=nn,_n.x1=Wi,_n.y1=Ni;return}for(var $i=ar[ai],zn=ri/2+$i,Wn=ai+1,It=jr-1;Wn>>1;ar[ft]Ni-nn){var yr=(bi*Zt+Wi*jt)/ri;Qr(ai,Wn,jt,bi,nn,yr,Ni),Qr(Wn,jr,Zt,yr,nn,Wi,Ni)}else{var Fr=(nn*Zt+Ni*jt)/ri;Qr(ai,Wn,jt,bi,nn,Wi,Fr),Qr(Wn,jr,Zt,bi,Fr,Wi,Ni)}}}function Ne(Ve,Xe,ht,Le,xe){(Ve.depth&1?fr:rt)(Ve,Xe,ht,Le,xe)}var Ye=function Ve(Xe){function ht(Le,xe,Se,lt,Gt){if((Vt=Le._squarify)&&Vt.ratio===Xe)for(var Vt,ar,Qr,ai,jr=-1,ri,bi=Vt.length,nn=Le.value;++jr1?Le:1)},ht}(_r);e.cluster=l,e.hierarchy=_,e.pack=ce,e.packEnclose=V,e.packSiblings=Ee,e.partition=ot,e.stratify=er,e.tree=$t,e.treemap=Nr,e.treemapBinary=ut,e.treemapDice=rt,e.treemapResquarify=Ye,e.treemapSlice=fr,e.treemapSliceDice=Ne,e.treemapSquarify=Or,Object.defineProperty(e,"__esModule",{value:!0})})});var EE=ye(ME=>{"use strict";var VEe=SE(),hkt=uo(),b5=Mr(),dkt=Mu().makeColorScaleFuncFromTrace,vkt=y5().makePullColorFn,pkt=y5().generateExtendedColors,gkt=Mu().calc,mkt=es().ALMOST_EQUAL,ykt={},_kt={},xkt={};ME.calc=function(e,t){var r=e._fullLayout,n=t.ids,i=b5.isArrayOrTypedArray(n),a=t.labels,o=t.parents,s=t.values,l=b5.isArrayOrTypedArray(s),u=[],c={},f={},h=function(G,N){c[G]?c[G].push(N):c[G]=[N],f[N]=1},d=function(G){return G||typeof G=="number"},v=function(G){return!l||hkt(s[G])&&s[G]>=0},x,b,g;i?(x=Math.min(n.length,o.length),b=function(G){return d(n[G])&&v(G)},g=function(G){return String(n[G])}):(x=Math.min(a.length,o.length),b=function(G){return d(a[G])&&v(G)},g=function(G){return String(a[G])}),l&&(x=Math.min(x,s.length));for(var E=0;E1){for(var M=b5.randstr(),p=0;p{"use strict";var q4t=Eu().str2arr,O4t=Eu().sliceEq,s4e=Eu().readUInt32BE,B4t=q4t("8BPS\0");l4e.exports=function(e){if(!(e.length<22)&&O4t(e,0,B4t))return{width:s4e(e,18),height:s4e(e,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}});var h4e=ye((jcr,f4e)=>{"use strict";function N4t(e){return e===32||e===9||e===13||e===10}function m5(e){return typeof e=="number"&&isFinite(e)&&e>0}function U4t(e){var t=0,r=e.length;for(e[0]===239&&e[1]===187&&e[2]===191&&(t=3);t]*>/,H4t=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,G4t=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,j4t=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,W4t=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,c4e=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function Z4t(e){var t=e.match(G4t),r=e.match(j4t),n=e.match(W4t);return{width:t&&(t[1]||t[2]),height:r&&(r[1]||r[2]),viewbox:n&&(n[1]||n[2])}}function Nm(e){return c4e.test(e)?e.match(c4e)[0]:"px"}f4e.exports=function(e){if(U4t(e)){for(var t="",r=0;r{"use strict";var p4e=Eu().str2arr,d4e=Eu().sliceEq,X4t=Eu().readUInt16LE,Y4t=Eu().readUInt16BE,K4t=Eu().readUInt32LE,J4t=Eu().readUInt32BE,$4t=p4e("II*\0"),Q4t=p4e("MM\0*");function aD(e,t,r){return r?Y4t(e,t):X4t(e,t)}function Jj(e,t,r){return r?J4t(e,t):K4t(e,t)}function v4e(e,t,r){var n=aD(e,t+2,r),i=Jj(e,t+4,r);return i!==1||n!==3&&n!==4?null:n===3?aD(e,t+8,r):Jj(e,t+8,r)}g4e.exports=function(e){if(!(e.length<8)&&!(!d4e(e,0,$4t)&&!d4e(e,0,Q4t))){var t=e[0]===77,r=Jj(e,4,t)-8;if(!(r<0)){var n=r+8;if(!(e.length-n<2)){var i=aD(e,n+0,t)*12;if(!(i<=0)&&(n+=2,!(e.length-n{"use strict";var x4e=Eu().str2arr,y4e=Eu().sliceEq,_4e=Eu().readUInt16LE,$j=Eu().readUInt32LE,eEt=iD(),tEt=x4e("RIFF"),rEt=x4e("WEBP");function iEt(e,t){if(!(e[t+3]!==157||e[t+4]!==1||e[t+5]!==42))return{width:_4e(e,t+6)&16383,height:_4e(e,t+8)&16383,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}function nEt(e,t){if(e[t]===47){var r=$j(e,t+1);return{width:(r&16383)+1,height:(r>>14&16383)+1,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function aEt(e,t){return{width:(e[t+6]<<16|e[t+5]<<8|e[t+4])+1,height:(e[t+9]<e.length)){for(;t+8=10?r=r||iEt(e,t+8):a==="VP8L"&&o>=9?r=r||nEt(e,t+8):a==="VP8X"&&o>=10?r=r||aEt(e,t+8):a==="EXIF"&&(n=eEt.get_orientation(e.slice(t+8,t+8+o)),t=1/0),t+=8+o}if(r)return n>0&&(r.orientation=n),r}}}});var A4e=ye((Xcr,T4e)=>{"use strict";T4e.exports={avif:VMe(),bmp:jMe(),gif:KMe(),ico:QMe(),jpeg:t4e(),png:o4e(),psd:u4e(),svg:h4e(),tiff:m4e(),webp:w4e()}});var S4e=ye((Ycr,eW)=>{"use strict";var Qj=A4e();function oEt(e){for(var t=Object.keys(Qj),r=0;r{"use strict";var sEt=S4e(),lEt=Ly().IMAGE_URL_PREFIX,uEt=u2().Buffer;M4e.getImageSize=function(e){var t=e.replace(lEt,""),r=new uEt(t,"base64");return sEt(r)}});var L4e=ye((Jcr,C4e)=>{"use strict";var k4e=Mr(),cEt=jT(),fEt=uo(),oD=Qa(),hEt=Mr().maxRowLength,dEt=E4e().getImageSize;C4e.exports=function(t,r){var n,i;if(r._hasZ)n=r.z.length,i=hEt(r.z);else if(r._hasSource){var a=dEt(r.source);n=a.height,i=a.width}var o=oD.getFromId(t,r.xaxis||"x"),s=oD.getFromId(t,r.yaxis||"y"),l=o.d2c(r.x0)-r.dx/2,u=s.d2c(r.y0)-r.dy/2,c,f=[l,l+i*r.dx],h=[u,u+n*r.dy];if(o&&o.type==="log")for(c=0;c{"use strict";var mEt=xa(),T2=Mr(),P4e=T2.strTranslate,yEt=Zp(),_Et=jT(),xEt=jV(),bEt=o8().STYLE;I4e.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis,s=!t._context._exportedPlot&&xEt();T2.makeTraceGroups(i,n,"im").each(function(l){var u=mEt.select(this),c=l[0],f=c.trace,h=(f.zsmooth==="fast"||f.zsmooth===!1&&s)&&!f._hasZ&&f._hasSource&&a.type==="linear"&&o.type==="linear";f._realImage=h;var d=c.z,v=c.x0,x=c.y0,b=c.w,p=c.h,E=f.dx,k=f.dy,A,L,_,C,M,g;for(g=0;A===void 0&&g0;)L=a.c2p(v+g*E),g--;for(g=0;C===void 0&&g0;)M=o.c2p(x+g*k),g--;if(LW[0];if(re||ae){var _e=A+T/2,Me=C+F/2;G+="transform:"+P4e(_e+"px",Me+"px")+"scale("+(re?-1:1)+","+(ae?-1:1)+")"+P4e(-_e+"px",-Me+"px")+";"}}X.attr("style",G);var ke=new Promise(function(ge){if(f._hasZ)ge();else if(f._hasSource)if(f._canvas&&f._canvas.el.width===b&&f._canvas.el.height===p&&f._canvas.source===f.source)ge();else{var ie=document.createElement("canvas");ie.width=b,ie.height=p;var Te=ie.getContext("2d",{willReadFrequently:!0});f._image=f._image||new Image;var Ee=f._image;Ee.onload=function(){Te.drawImage(Ee,0,0),f._canvas={el:ie,source:f.source},ge()},Ee.setAttribute("src",f.source)}}).then(function(){var ge,ie;if(f._hasZ)ie=H(function(Ae,ze){var Ce=d[ze][Ae];return T2.isTypedArray(Ce)&&(Ce=Array.from(Ce)),Ce}),ge=ie.toDataURL("image/png");else if(f._hasSource)if(h)ge=f.source;else{var Te=f._canvas.el.getContext("2d",{willReadFrequently:!0}),Ee=Te.getImageData(0,0,b,p).data;ie=H(function(Ae,ze){var Ce=4*(ze*b+Ae);return[Ee[Ce],Ee[Ce+1],Ee[Ce+2],Ee[Ce+3]]}),ge=ie.toDataURL("image/png")}X.attr({"xlink:href":ge,height:F,width:T,x:A,y:C})});t._promises.push(ke)})}});var z4e=ye((Qcr,D4e)=>{"use strict";var wEt=xa();D4e.exports=function(t){wEt.select(t).selectAll(".im image").style("opacity",function(r){return r[0].trace.opacity})}});var B4e=ye((efr,O4e)=>{"use strict";var F4e=Nc(),q4e=Mr(),sD=q4e.isArrayOrTypedArray,TEt=jT();O4e.exports=function(t,r,n){var i=t.cd[0],a=i.trace,o=t.xa,s=t.ya;if(!(F4e.inbox(r-i.x0,r-(i.x0+i.w*a.dx),0)>0||F4e.inbox(n-i.y0,n-(i.y0+i.h*a.dy),0)>0)){var l=Math.floor((r-i.x0)/a.dx),u=Math.floor(Math.abs(n-i.y0)/a.dy),c;if(a._hasZ?c=i.z[u][l]:a._hasSource&&(c=a._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(l,u,1,1).data),!!c){var f=i.hi||a.hoverinfo,h;if(f){var d=f.split("+");d.indexOf("all")!==-1&&(d=["color"]),d.indexOf("color")!==-1&&(h=!0)}var v=TEt.colormodel[a.colormodel],x=v.colormodel||a.colormodel,b=x.length,p=a._scaler(c),E=v.suffix,k=[];(a.hovertemplate||h)&&(k.push("["+[p[0]+E[0],p[1]+E[1],p[2]+E[2]].join(", ")),b===4&&k.push(", "+p[3]+E[3]),k.push("]"),k=k.join(""),t.extraText=x.toUpperCase()+": "+k);var A;sD(a.hovertext)&&sD(a.hovertext[u])?A=a.hovertext[u][l]:sD(a.text)&&sD(a.text[u])&&(A=a.text[u][l]);var L=s.c2p(i.y0+(u+.5)*a.dy),_=i.x0+(l+.5)*a.dx,C=i.y0+(u+.5)*a.dy,M="["+c.slice(0,a.colormodel.length).join(", ")+"]";return[q4e.extendFlat(t,{index:[u,l],x0:o.c2p(i.x0+l*a.dx),x1:o.c2p(i.x0+(l+1)*a.dx),y0:L,y1:L,color:p,xVal:_,xLabelVal:_,yVal:C,yLabelVal:C,zLabelVal:M,text:A,hovertemplateLabels:{zLabel:M,colorLabel:k,"color[0]Label":p[0]+E[0],"color[1]Label":p[1]+E[1],"color[2]Label":p[2]+E[2],"color[3]Label":p[3]+E[3]}})]}}}});var U4e=ye((tfr,N4e)=>{"use strict";N4e.exports=function(t,r){return"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t.color=r.color,t.colormodel=r.trace.colormodel,t.z||(t.z=r.color),t}});var H4e=ye((rfr,V4e)=>{"use strict";V4e.exports={attributes:tG(),supplyDefaults:T3e(),calc:L4e(),plot:R4e(),style:z4e(),hoverPoints:B4e(),eventData:U4e(),moduleType:"trace",name:"image",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}});var j4e=ye((ifr,G4e)=>{"use strict";G4e.exports=H4e()});var A2=ye((nfr,W4e)=>{"use strict";var AEt=vl(),SEt=Ju().attributes,MEt=Su(),EEt=dh(),kEt=Wo().hovertemplateAttrs,CEt=Wo().texttemplateAttrs,bE=no().extendFlat,LEt=Ed().pattern,lD=MEt({editType:"plot",arrayOk:!0,colorEditType:"plot"});W4e.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:EEt.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},pattern:LEt,editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:bE({},AEt.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:kEt({},{keys:["label","color","value","percent","text"]}),texttemplate:CEt({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:bE({},lD,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:bE({},lD,{}),outsidetextfont:bE({},lD,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:bE({},lD,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:SEt({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"}}});var S2=ye((afr,Y4e)=>{"use strict";var PEt=uo(),wE=Mr(),IEt=A2(),REt=Ju().defaults,DEt=r0().handleText,zEt=Mr().coercePattern;function Z4e(e,t){var r=wE.isArrayOrTypedArray(e),n=wE.isArrayOrTypedArray(t),i=Math.min(r?e.length:1/0,n?t.length:1/0);if(isFinite(i)||(i=0),i&&n){for(var a,o=0;o0){a=!0;break}}a||(i=0)}return{hasLabels:r,hasValues:n,len:i}}function X4e(e,t,r,n,i){var a=n("marker.line.width");a&&n("marker.line.color",i?void 0:r.paper_bgcolor);var o=n("marker.colors");zEt(n,"marker.pattern",o),e.marker&&!t.marker.pattern.fgcolor&&(t.marker.pattern.fgcolor=e.marker.colors),t.marker.pattern.bgcolor||(t.marker.pattern.bgcolor=r.paper_bgcolor)}function FEt(e,t,r,n){function i(E,k){return wE.coerce(e,t,IEt,E,k)}var a=i("labels"),o=i("values"),s=Z4e(a,o),l=s.len;if(t._hasLabels=s.hasLabels,t._hasValues=s.hasValues,!t._hasLabels&&t._hasValues&&(i("label0"),i("dlabel")),!l){t.visible=!1;return}t._length=l,X4e(e,t,n,i,!0),i("scalegroup");var u=i("text"),c=i("texttemplate"),f;if(c||(f=i("textinfo",wE.isArrayOrTypedArray(u)?"text+percent":"percent")),i("hovertext"),i("hovertemplate"),c||f&&f!=="none"){var h=i("textposition");DEt(e,t,n,i,h,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1});var d=Array.isArray(h)||h==="auto",v=d||h==="outside";v&&i("automargin"),(h==="inside"||h==="auto"||Array.isArray(h))&&i("insidetextorientation")}else f==="none"&&i("textposition","none");REt(t,n,i);var x=i("hole"),b=i("title.text");if(b){var p=i("title.position",x?"middle center":"top center");!x&&p==="middle center"&&(t.title.position="top center"),wE.coerceFont(i,"title.font",n.font)}i("sort"),i("direction"),i("rotation"),i("pull")}Y4e.exports={handleLabelsAndValues:Z4e,handleMarkerDefaults:X4e,supplyDefaults:FEt}});var uD=ye((ofr,K4e)=>{"use strict";K4e.exports={hiddenlabels:{valType:"data_array",editType:"calc"},piecolorway:{valType:"colorlist",editType:"calc"},extendpiecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var $4e=ye((sfr,J4e)=>{"use strict";var qEt=Mr(),OEt=uD();J4e.exports=function(t,r){function n(i,a){return qEt.coerce(t,r,OEt,i,a)}n("hiddenlabels"),n("piecolorway",r.colorway),n("extendpiecolors")}});var y5=ye((lfr,tEe)=>{"use strict";var BEt=uo(),tW=id(),NEt=va(),UEt={};function VEt(e,t){var r=[],n=e._fullLayout,i=n.hiddenlabels||[],a=t.labels,o=t.marker.colors||[],s=t.values,l=t._length,u=t._hasValues&&l,c,f;if(t.dlabel)for(a=new Array(l),c=0;c=0});var A=t.type==="funnelarea"?x:t.sort;return A&&r.sort(function(L,_){return _.v-L.v}),r[0]&&(r[0].vTotal=v),r}function Q4e(e){return function(r,n){return!r||(r=tW(r),!r.isValid())?!1:(r=NEt.addOpacity(r,r.getAlpha()),e[n]||(e[n]=r),r)}}function HEt(e,t){var r=(t||{}).type;r||(r="pie");var n=e._fullLayout,i=e.calcdata,a=n[r+"colorway"],o=n["_"+r+"colormap"];n["extend"+r+"colors"]&&(a=eEe(a,UEt));for(var s=0,l=0;l{"use strict";var GEt=rp().appendArrayMultiPointValues;rEe.exports=function(t,r){var n={curveNumber:r.index,pointNumbers:t.pts,data:r._input,fullData:r,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return t.pts.length===1&&(n.pointNumber=n.i=t.pts[0]),GEt(n,r,t.pts),r.type==="funnelarea"&&(delete n.v,delete n.i),n}});var dD=ye((cfr,AEe)=>{"use strict";var zp=xa(),jEt=Xu(),cD=Nc(),uEe=va(),Wy=ao(),ev=Mr(),WEt=ev.strScale,nEe=ev.strTranslate,rW=Pl(),cEe=_v(),ZEt=cEe.recordMinTextSize,XEt=cEe.clearMinTextSize,fEe=Qb().TEXTPAD,Zo=u_(),fD=iEe(),aEe=Mr().isValidTextValue;function YEt(e,t){var r=e._context.staticPlot,n=e._fullLayout,i=n._size;XEt("pie",n),vEe(t,e),bEe(t,i);var a=ev.makeTraceGroups(n._pielayer,t,"trace").each(function(o){var s=zp.select(this),l=o[0],u=l.trace;nkt(o),s.attr("stroke-linejoin","round"),s.each(function(){var c=zp.select(this).selectAll("g.slice").data(o);c.enter().append("g").classed("slice",!0),c.exit().remove();var f=[[[],[]],[[],[]]],h=!1;c.each(function(A,L){if(A.hidden){zp.select(this).selectAll("path,g").remove();return}A.pointNumber=A.i,A.curveNumber=u.index,f[A.pxmid[1]<0?0:1][A.pxmid[0]<0?0:1].push(A);var _=l.cx,C=l.cy,M=zp.select(this),g=M.selectAll("path.surface").data([A]);if(g.enter().append("path").classed("surface",!0).style({"pointer-events":r?"none":"all"}),M.call(hEe,e,o),u.pull){var P=+Zo.castOption(u.pull,A.pts)||0;P>0&&(_+=P*A.pxmid[0],C+=P*A.pxmid[1])}A.cxFinal=_,A.cyFinal=C;function T(N,W,re,ae){var _e=ae*(W[0]-N[0]),Me=ae*(W[1]-N[1]);return"a"+ae*l.r+","+ae*l.r+" 0 "+A.largeArc+(re?" 1 ":" 0 ")+_e+","+Me}var F=u.hole;if(A.v===l.vTotal){var q="M"+(_+A.px0[0])+","+(C+A.px0[1])+T(A.px0,A.pxmid,!0,1)+T(A.pxmid,A.px0,!0,1)+"Z";F?g.attr("d","M"+(_+F*A.px0[0])+","+(C+F*A.px0[1])+T(A.px0,A.pxmid,!1,F)+T(A.pxmid,A.px0,!1,F)+"Z"+q):g.attr("d",q)}else{var V=T(A.px0,A.px1,!0,1);if(F){var H=1-F;g.attr("d","M"+(_+F*A.px1[0])+","+(C+F*A.px1[1])+T(A.px1,A.px0,!1,F)+"l"+H*A.px0[0]+","+H*A.px0[1]+V+"Z")}else g.attr("d","M"+_+","+C+"l"+A.px0[0]+","+A.px0[1]+V+"Z")}wEe(e,A,l);var X=Zo.castOption(u.textposition,A.pts),G=M.selectAll("g.slicetext").data(A.text&&X!=="none"?[0]:[]);G.enter().append("g").classed("slicetext",!0),G.exit().remove(),G.each(function(){var N=ev.ensureSingle(zp.select(this),"text","",function(ie){ie.attr("data-notex",1)}),W=ev.ensureUniformFontSize(e,X==="outside"?JEt(u,A,n.font):dEe(u,A,n.font));N.text(A.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(Wy.font,W).call(rW.convertToTspans,e);var re=Wy.bBox(N.node()),ae;if(X==="outside")ae=lEe(re,A);else if(ae=pEe(re,A,l),X==="auto"&&ae.scale<1){var _e=ev.ensureUniformFontSize(e,u.outsidetextfont);N.call(Wy.font,_e),re=Wy.bBox(N.node()),ae=lEe(re,A)}var Me=ae.textPosAngle,ke=Me===void 0?A.pxmid:hD(l.r,Me);if(ae.targetX=_+ke[0]*ae.rCenter+(ae.x||0),ae.targetY=C+ke[1]*ae.rCenter+(ae.y||0),TEe(ae,re),ae.outside){var ge=ae.targetY;A.yLabelMin=ge-re.height/2,A.yLabelMid=ge,A.yLabelMax=ge+re.height/2,A.labelExtraX=0,A.labelExtraY=0,h=!0}ae.fontSize=W.size,ZEt(u.type,ae,n),o[L].transform=ae,ev.setTransormAndDisplay(N,ae)})});var d=zp.select(this).selectAll("g.titletext").data(u.title.text?[0]:[]);if(d.enter().append("g").classed("titletext",!0),d.exit().remove(),d.each(function(){var A=ev.ensureSingle(zp.select(this),"text","",function(C){C.attr("data-notex",1)}),L=u.title.text;u._meta&&(L=ev.templateString(L,u._meta)),A.text(L).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(Wy.font,u.title.font).call(rW.convertToTspans,e);var _;u.title.position==="middle center"?_=ekt(l):_=_Ee(l,i),A.attr("transform",nEe(_.x,_.y)+WEt(Math.min(1,_.scale))+nEe(_.tx,_.ty))}),h&&rkt(f,u),KEt(c,u),h&&u.automargin){var v=Wy.bBox(s.node()),x=u.domain,b=i.w*(x.x[1]-x.x[0]),p=i.h*(x.y[1]-x.y[0]),E=(.5*b-l.r)/i.w,k=(.5*p-l.r)/i.h;jEt.autoMargin(e,"pie."+u.uid+".automargin",{xl:x.x[0]-E,xr:x.x[1]+E,yb:x.y[0]-k,yt:x.y[1]+k,l:Math.max(l.cx-l.r-v.left,0),r:Math.max(v.right-(l.cx+l.r),0),b:Math.max(v.bottom-(l.cy+l.r),0),t:Math.max(l.cy-l.r-v.top,0),pad:5})}})});setTimeout(function(){a.selectAll("tspan").each(function(){var o=zp.select(this);o.attr("dy")&&o.attr("dy",o.attr("dy"))})},0)}function KEt(e,t){e.each(function(r){var n=zp.select(this);if(!r.labelExtraX&&!r.labelExtraY){n.select("path.textline").remove();return}var i=n.select("g.slicetext text");r.transform.targetX+=r.labelExtraX,r.transform.targetY+=r.labelExtraY,ev.setTransormAndDisplay(i,r.transform);var a=r.cxFinal+r.pxmid[0],o=r.cyFinal+r.pxmid[1],s="M"+a+","+o,l=(r.yLabelMax-r.yLabelMin)*(r.pxmid[0]<0?-1:1)/4;if(r.labelExtraX){var u=r.labelExtraX*r.pxmid[1]/r.pxmid[0],c=r.yLabelMid+r.labelExtraY-(r.cyFinal+r.pxmid[1]);Math.abs(u)>Math.abs(c)?s+="l"+c*r.pxmid[0]/r.pxmid[1]+","+c+"H"+(a+r.labelExtraX+l):s+="l"+r.labelExtraX+","+u+"v"+(c-u)+"h"+l}else s+="V"+(r.yLabelMid+r.labelExtraY)+"h"+l;ev.ensureSingle(n,"path","textline").call(uEe.stroke,t.outsidetextfont.color).attr({"stroke-width":Math.min(2,t.outsidetextfont.size/8),d:s,fill:"none"})})}function hEe(e,t,r){var n=r[0],i=n.cx,a=n.cy,o=n.trace,s=o.type==="funnelarea";"_hasHoverLabel"in o||(o._hasHoverLabel=!1),"_hasHoverEvent"in o||(o._hasHoverEvent=!1),e.on("mouseover",function(l){var u=t._fullLayout,c=t._fullData[o.index];if(!(t._dragging||u.hovermode===!1)){var f=c.hoverinfo;if(Array.isArray(f)&&(f=cD.castHoverinfo({hoverinfo:[Zo.castOption(f,l.pts)],_module:o._module},u,0)),f==="all"&&(f="label+text+value+percent+name"),c.hovertemplate||f!=="none"&&f!=="skip"&&f){var h=l.rInscribed||0,d=i+l.pxmid[0]*(1-h),v=a+l.pxmid[1]*(1-h),x=u.separators,b=[];if(f&&f.indexOf("label")!==-1&&b.push(l.label),l.text=Zo.castOption(c.hovertext||c.text,l.pts),f&&f.indexOf("text")!==-1){var p=l.text;ev.isValidTextValue(p)&&b.push(p)}l.value=l.v,l.valueLabel=Zo.formatPieValue(l.v,x),f&&f.indexOf("value")!==-1&&b.push(l.valueLabel),l.percent=l.v/n.vTotal,l.percentLabel=Zo.formatPiePercent(l.percent,x),f&&f.indexOf("percent")!==-1&&b.push(l.percentLabel);var E=c.hoverlabel,k=E.font,A=[];cD.loneHover({trace:o,x0:d-h*n.r,x1:d+h*n.r,y:v,_x0:s?i+l.TL[0]:d-h*n.r,_x1:s?i+l.TR[0]:d+h*n.r,_y0:s?a+l.TL[1]:v-h*n.r,_y1:s?a+l.BL[1]:v+h*n.r,text:b.join("
"),name:c.hovertemplate||f.indexOf("name")!==-1?c.name:void 0,idealAlign:l.pxmid[0]<0?"left":"right",color:Zo.castOption(E.bgcolor,l.pts)||l.color,borderColor:Zo.castOption(E.bordercolor,l.pts),fontFamily:Zo.castOption(k.family,l.pts),fontSize:Zo.castOption(k.size,l.pts),fontColor:Zo.castOption(k.color,l.pts),nameLength:Zo.castOption(E.namelength,l.pts),textAlign:Zo.castOption(E.align,l.pts),hovertemplate:Zo.castOption(c.hovertemplate,l.pts),hovertemplateLabels:l,eventData:[fD(l,c)]},{container:u._hoverlayer.node(),outerContainer:u._paper.node(),gd:t,inOut_bbox:A}),l.bbox=A[0],o._hasHoverLabel=!0}o._hasHoverEvent=!0,t.emit("plotly_hover",{points:[fD(l,c)],event:zp.event})}}),e.on("mouseout",function(l){var u=t._fullLayout,c=t._fullData[o.index],f=zp.select(this).datum();o._hasHoverEvent&&(l.originalEvent=zp.event,t.emit("plotly_unhover",{points:[fD(f,c)],event:zp.event}),o._hasHoverEvent=!1),o._hasHoverLabel&&(cD.loneUnhover(u._hoverlayer.node()),o._hasHoverLabel=!1)}),e.on("click",function(l){var u=t._fullLayout,c=t._fullData[o.index];t._dragging||u.hovermode===!1||(t._hoverdata=[fD(l,c)],cD.click(t,zp.event))})}function JEt(e,t,r){var n=Zo.castOption(e.outsidetextfont.color,t.pts)||Zo.castOption(e.textfont.color,t.pts)||r.color,i=Zo.castOption(e.outsidetextfont.family,t.pts)||Zo.castOption(e.textfont.family,t.pts)||r.family,a=Zo.castOption(e.outsidetextfont.size,t.pts)||Zo.castOption(e.textfont.size,t.pts)||r.size,o=Zo.castOption(e.outsidetextfont.weight,t.pts)||Zo.castOption(e.textfont.weight,t.pts)||r.weight,s=Zo.castOption(e.outsidetextfont.style,t.pts)||Zo.castOption(e.textfont.style,t.pts)||r.style,l=Zo.castOption(e.outsidetextfont.variant,t.pts)||Zo.castOption(e.textfont.variant,t.pts)||r.variant,u=Zo.castOption(e.outsidetextfont.textcase,t.pts)||Zo.castOption(e.textfont.textcase,t.pts)||r.textcase,c=Zo.castOption(e.outsidetextfont.lineposition,t.pts)||Zo.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=Zo.castOption(e.outsidetextfont.shadow,t.pts)||Zo.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n,family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function dEe(e,t,r){var n=Zo.castOption(e.insidetextfont.color,t.pts);!n&&e._input.textfont&&(n=Zo.castOption(e._input.textfont.color,t.pts));var i=Zo.castOption(e.insidetextfont.family,t.pts)||Zo.castOption(e.textfont.family,t.pts)||r.family,a=Zo.castOption(e.insidetextfont.size,t.pts)||Zo.castOption(e.textfont.size,t.pts)||r.size,o=Zo.castOption(e.insidetextfont.weight,t.pts)||Zo.castOption(e.textfont.weight,t.pts)||r.weight,s=Zo.castOption(e.insidetextfont.style,t.pts)||Zo.castOption(e.textfont.style,t.pts)||r.style,l=Zo.castOption(e.insidetextfont.variant,t.pts)||Zo.castOption(e.textfont.variant,t.pts)||r.variant,u=Zo.castOption(e.insidetextfont.textcase,t.pts)||Zo.castOption(e.textfont.textcase,t.pts)||r.textcase,c=Zo.castOption(e.insidetextfont.lineposition,t.pts)||Zo.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=Zo.castOption(e.insidetextfont.shadow,t.pts)||Zo.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n||uEe.contrast(t.color),family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function vEe(e,t){for(var r,n,i=0;i=-4;E-=2)p(Math.PI*E,"tan");for(E=4;E>=-4;E-=2)p(Math.PI*(E+1),"tan")}if(f||d){for(E=4;E>=-4;E-=2)p(Math.PI*(E+1.5),"rad");for(E=4;E>=-4;E-=2)p(Math.PI*(E+.5),"rad")}}if(s||v||f){var k=Math.sqrt(e.width*e.width+e.height*e.height);if(b={scale:i*n*2/k,rCenter:1-i,rotate:0},b.textPosAngle=(t.startangle+t.stopangle)/2,b.scale>=1)return b;x.push(b)}(v||d)&&(b=oEe(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,x.push(b)),(v||h)&&(b=sEe(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,x.push(b));for(var A=0,L=0,_=0;_=1)break}return x[A]}function $Et(e,t){var r=e.startangle,n=e.stopangle;return r>t&&t>n||r0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function ekt(e){var t=Math.sqrt(e.titleBox.width*e.titleBox.width+e.titleBox.height*e.titleBox.height);return{x:e.cx,y:e.cy,scale:e.trace.hole*e.r*2/t,tx:0,ty:-e.titleBox.height/2+e.trace.title.font.size}}function _Ee(e,t){var r=1,n=1,i,a=e.trace,o={x:e.cx,y:e.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=xEe(a),a.title.position.indexOf("top")!==-1?(o.y-=(1+i)*e.r,s.ty-=e.titleBox.height):a.title.position.indexOf("bottom")!==-1&&(o.y+=(1+i)*e.r);var l=tkt(e.r,e.trace.aspectratio),u=t.w*(a.domain.x[1]-a.domain.x[0])/2;return a.title.position.indexOf("left")!==-1?(u=u+l,o.x-=(1+i)*l,s.tx+=e.titleBox.width/2):a.title.position.indexOf("center")!==-1?u*=2:a.title.position.indexOf("right")!==-1&&(u=u+l,o.x+=(1+i)*l,s.tx-=e.titleBox.width/2),r=u/e.titleBox.width,n=iW(e,t)/e.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function tkt(e,t){return e/(t===void 0?1:t)}function iW(e,t){var r=e.trace,n=t.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(e.titleBox.height,n/2)}function xEe(e){var t=e.pull;if(!t)return 0;var r;if(ev.isArrayOrTypedArray(t))for(t=0,r=0;rt&&(t=e.pull[r]);return t}function rkt(e,t){var r,n,i,a,o,s,l,u,c,f,h,d,v;function x(k,A){return k.pxmid[1]-A.pxmid[1]}function b(k,A){return A.pxmid[1]-k.pxmid[1]}function p(k,A){A||(A={});var L=A.labelExtraY+(n?A.yLabelMax:A.yLabelMin),_=n?k.yLabelMin:k.yLabelMax,C=n?k.yLabelMax:k.yLabelMin,M=k.cyFinal+o(k.px0[1],k.px1[1]),g=L-_,P,T,F,q,V,H;if(g*l>0&&(k.labelExtraY=g),!!ev.isArrayOrTypedArray(t.pull))for(T=0;T=(Zo.castOption(t.pull,F.pts)||0))&&((k.pxmid[1]-F.pxmid[1])*l>0?(q=F.cyFinal+o(F.px0[1],F.px1[1]),g=q-_-k.labelExtraY,g*l>0&&(k.labelExtraY+=g)):(C+k.labelExtraY-M)*l>0&&(P=3*s*Math.abs(T-f.indexOf(k)),V=F.cxFinal+a(F.px0[0],F.px1[0]),H=V+P-(k.cxFinal+k.pxmid[0])-k.labelExtraX,H*s>0&&(k.labelExtraX+=H)))}for(n=0;n<2;n++)for(i=n?x:b,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,u=e[n][r],u.sort(i),c=e[1-n][r],f=c.concat(u),d=[],h=0;h1?(u=r.r,c=u/i.aspectratio):(c=r.r,u=c*i.aspectratio),u*=(1+i.baseratio)/2,l=u*c}o=Math.min(o,l/r.vTotal)}for(n=0;nt.vTotal/2?1:0,u.halfangle=Math.PI*Math.min(u.v/t.vTotal,.5),u.ring=1-n.hole,u.rInscribed=QEt(u,t))}function hD(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}function wEe(e,t,r){var n=e._fullLayout,i=r.trace,a=i.texttemplate,o=i.textinfo;if(!a&&o&&o!=="none"){var s=o.split("+"),l=function(A){return s.indexOf(A)!==-1},u=l("label"),c=l("text"),f=l("value"),h=l("percent"),d=n.separators,v;if(v=u?[t.label]:[],c){var x=Zo.getFirstFilled(i.text,t.pts);aEe(x)&&v.push(x)}f&&v.push(Zo.formatPieValue(t.v,d)),h&&v.push(Zo.formatPiePercent(t.v/r.vTotal,d)),t.text=v.join("
")}function b(A){return{label:A.label,value:A.v,valueLabel:Zo.formatPieValue(A.v,n.separators),percent:A.v/r.vTotal,percentLabel:Zo.formatPiePercent(A.v/r.vTotal,n.separators),color:A.color,text:A.text,customdata:ev.castOption(i,A.i,"customdata")}}if(a){var p=ev.castOption(i,t.i,"texttemplate");if(!p)t.text="";else{var E=b(t),k=Zo.getFirstFilled(i.text,t.pts);(aEe(k)||k==="")&&(E.text=k),t.text=ev.texttemplateString(p,E,e._fullLayout._d3locale,E,i._meta||{})}}}function TEe(e,t){var r=e.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(t.left+t.right)/2,o=(t.top+t.bottom)/2;e.textX=a*n-o*i,e.textY=a*i+o*n,e.noCenter=!0}AEe.exports={plot:YEt,formatSliceLabel:wEe,transformInsideText:pEe,determineInsideTextFont:dEe,positionTitleOutside:_Ee,prerenderTitles:vEe,layoutAreas:bEe,attachFxHandlers:hEe,computeTransform:TEe}});var EEe=ye((ffr,MEe)=>{"use strict";var SEe=xa(),akt=z3(),okt=_v().resizeText;MEe.exports=function(t){var r=t._fullLayout._pielayer.selectAll(".trace");okt(t,r,"pie"),r.each(function(n){var i=n[0],a=i.trace,o=SEe.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){SEe.select(this).call(akt,s,a,t)})})}});var CEe=ye(_5=>{"use strict";var kEe=Xu();_5.name="pie";_5.plot=function(e,t,r,n){kEe.plotBasePlot(_5.name,e,t,r,n)};_5.clean=function(e,t,r,n){kEe.cleanBasePlot(_5.name,e,t,r,n)}});var PEe=ye((dfr,LEe)=>{"use strict";LEe.exports={attributes:A2(),supplyDefaults:S2().supplyDefaults,supplyLayoutDefaults:$4e(),layoutAttributes:uD(),calc:y5().calc,crossTraceCalc:y5().crossTraceCalc,plot:dD().plot,style:EEe(),styleOne:z3(),moduleType:"trace",name:"pie",basePlotModule:CEe(),categories:["pie-like","pie","showLegend"],meta:{}}});var REe=ye((vfr,IEe)=>{"use strict";IEe.exports=PEe()});var zEe=ye(x5=>{"use strict";var DEe=Xu();x5.name="sunburst";x5.plot=function(e,t,r,n){DEe.plotBasePlot(x5.name,e,t,r,n)};x5.clean=function(e,t,r,n){DEe.cleanBasePlot(x5.name,e,t,r,n)}});var nW=ye((gfr,FEe)=>{"use strict";FEe.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"linear",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"]}});var AE=ye((mfr,OEe)=>{"use strict";var skt=vl(),lkt=Wo().hovertemplateAttrs,ukt=Wo().texttemplateAttrs,ckt=Jl(),fkt=Ju().attributes,Zy=A2(),qEe=nW(),TE=no().extendFlat,hkt=Ed().pattern;OEe.exports={labels:{valType:"data_array",editType:"calc"},parents:{valType:"data_array",editType:"calc"},values:{valType:"data_array",editType:"calc"},branchvalues:{valType:"enumerated",values:["remainder","total"],dflt:"remainder",editType:"calc"},count:{valType:"flaglist",flags:["branches","leaves"],dflt:"leaves",editType:"calc"},level:{valType:"any",editType:"plot",anim:!0},maxdepth:{valType:"integer",editType:"plot",dflt:-1},marker:TE({colors:{valType:"data_array",editType:"calc"},line:{color:TE({},Zy.marker.line.color,{dflt:null}),width:TE({},Zy.marker.line.width,{dflt:1}),editType:"calc"},pattern:hkt,editType:"calc"},ckt("marker",{colorAttr:"colors",anim:!1})),leaf:{opacity:{valType:"number",editType:"style",min:0,max:1},editType:"plot"},text:Zy.text,textinfo:{valType:"flaglist",flags:["label","text","value","current path","percent root","percent entry","percent parent"],extras:["none"],editType:"plot"},texttemplate:ukt({editType:"plot"},{keys:qEe.eventDataKeys.concat(["label","value"])}),hovertext:Zy.hovertext,hoverinfo:TE({},skt.hoverinfo,{flags:["label","text","value","name","current path","percent root","percent entry","percent parent"],dflt:"label+text+value+name"}),hovertemplate:lkt({},{keys:qEe.eventDataKeys}),textfont:Zy.textfont,insidetextorientation:Zy.insidetextorientation,insidetextfont:Zy.insidetextfont,outsidetextfont:TE({},Zy.outsidetextfont,{}),rotation:{valType:"angle",dflt:0,editType:"plot"},sort:Zy.sort,root:{color:{valType:"color",editType:"calc",dflt:"rgba(0,0,0,0)"},editType:"calc"},domain:fkt({name:"sunburst",trace:!0,editType:"calc"})}});var aW=ye((yfr,BEe)=>{"use strict";BEe.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var HEe=ye((_fr,VEe)=>{"use strict";var NEe=Mr(),dkt=AE(),vkt=Ju().defaults,pkt=r0().handleText,gkt=S2().handleMarkerDefaults,UEe=Mu(),mkt=UEe.hasColorscale,ykt=UEe.handleDefaults;VEe.exports=function(t,r,n,i){function a(h,d){return NEe.coerce(t,r,dkt,h,d)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),gkt(t,r,i,a);var u=r._hasColorscale=mkt(t,"marker","colors")||(t.marker||{}).coloraxis;u&&ykt(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",u?1:.7);var c=a("text");a("texttemplate"),r.texttemplate||a("textinfo",NEe.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate");var f="auto";pkt(t,r,i,a,f,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("insidetextorientation"),a("sort"),a("rotation"),a("root.color"),vkt(r,i,a),r._length=null}});var jEe=ye((xfr,GEe)=>{"use strict";var _kt=Mr(),xkt=aW();GEe.exports=function(t,r){function n(i,a){return _kt.coerce(t,r,xkt,i,a)}n("sunburstcolorway",r.colorway),n("extendsunburstcolors")}});var SE=ye((vD,WEe)=>{(function(e,t){typeof vD=="object"&&typeof WEe!="undefined"?t(vD):(e=e||self,t(e.d3=e.d3||{}))})(vD,function(e){"use strict";function t(Ve,Xe){return Ve.parent===Xe.parent?1:2}function r(Ve){return Ve.reduce(n,0)/Ve.length}function n(Ve,Xe){return Ve+Xe.x}function i(Ve){return 1+Ve.reduce(a,0)}function a(Ve,Xe){return Math.max(Ve,Xe.y)}function o(Ve){for(var Xe;Xe=Ve.children;)Ve=Xe[0];return Ve}function s(Ve){for(var Xe;Xe=Ve.children;)Ve=Xe[Xe.length-1];return Ve}function l(){var Ve=t,Xe=1,ht=1,Le=!1;function xe(Se){var lt,Gt=0;Se.eachAfter(function(jr){var ri=jr.children;ri?(jr.x=r(ri),jr.y=i(ri)):(jr.x=lt?Gt+=Ve(jr,lt):0,jr.y=0,lt=jr)});var Vt=o(Se),ar=s(Se),Qr=Vt.x-Ve(Vt,ar)/2,ai=ar.x+Ve(ar,Vt)/2;return Se.eachAfter(Le?function(jr){jr.x=(jr.x-Se.x)*Xe,jr.y=(Se.y-jr.y)*ht}:function(jr){jr.x=(jr.x-Qr)/(ai-Qr)*Xe,jr.y=(1-(Se.y?jr.y/Se.y:1))*ht})}return xe.separation=function(Se){return arguments.length?(Ve=Se,xe):Ve},xe.size=function(Se){return arguments.length?(Le=!1,Xe=+Se[0],ht=+Se[1],xe):Le?null:[Xe,ht]},xe.nodeSize=function(Se){return arguments.length?(Le=!0,Xe=+Se[0],ht=+Se[1],xe):Le?[Xe,ht]:null},xe}function u(Ve){var Xe=0,ht=Ve.children,Le=ht&&ht.length;if(!Le)Xe=1;else for(;--Le>=0;)Xe+=ht[Le].value;Ve.value=Xe}function c(){return this.eachAfter(u)}function f(Ve){var Xe=this,ht,Le=[Xe],xe,Se,lt;do for(ht=Le.reverse(),Le=[];Xe=ht.pop();)if(Ve(Xe),xe=Xe.children,xe)for(Se=0,lt=xe.length;Se=0;--xe)ht.push(Le[xe]);return this}function d(Ve){for(var Xe=this,ht=[Xe],Le=[],xe,Se,lt;Xe=ht.pop();)if(Le.push(Xe),xe=Xe.children,xe)for(Se=0,lt=xe.length;Se=0;)ht+=Le[xe].value;Xe.value=ht})}function x(Ve){return this.eachBefore(function(Xe){Xe.children&&Xe.children.sort(Ve)})}function b(Ve){for(var Xe=this,ht=p(Xe,Ve),Le=[Xe];Xe!==ht;)Xe=Xe.parent,Le.push(Xe);for(var xe=Le.length;Ve!==ht;)Le.splice(xe,0,Ve),Ve=Ve.parent;return Le}function p(Ve,Xe){if(Ve===Xe)return Ve;var ht=Ve.ancestors(),Le=Xe.ancestors(),xe=null;for(Ve=ht.pop(),Xe=Le.pop();Ve===Xe;)xe=Ve,Ve=ht.pop(),Xe=Le.pop();return xe}function E(){for(var Ve=this,Xe=[Ve];Ve=Ve.parent;)Xe.push(Ve);return Xe}function k(){var Ve=[];return this.each(function(Xe){Ve.push(Xe)}),Ve}function A(){var Ve=[];return this.eachBefore(function(Xe){Xe.children||Ve.push(Xe)}),Ve}function L(){var Ve=this,Xe=[];return Ve.each(function(ht){ht!==Ve&&Xe.push({source:ht.parent,target:ht})}),Xe}function _(Ve,Xe){var ht=new T(Ve),Le=+Ve.value&&(ht.value=Ve.value),xe,Se=[ht],lt,Gt,Vt,ar;for(Xe==null&&(Xe=M);xe=Se.pop();)if(Le&&(xe.value=+xe.data.value),(Gt=Xe(xe.data))&&(ar=Gt.length))for(xe.children=new Array(ar),Vt=ar-1;Vt>=0;--Vt)Se.push(lt=xe.children[Vt]=new T(Gt[Vt])),lt.parent=xe,lt.depth=xe.depth+1;return ht.eachBefore(P)}function C(){return _(this).eachBefore(g)}function M(Ve){return Ve.children}function g(Ve){Ve.data=Ve.data.data}function P(Ve){var Xe=0;do Ve.height=Xe;while((Ve=Ve.parent)&&Ve.height<++Xe)}function T(Ve){this.data=Ve,this.depth=this.height=0,this.parent=null}T.prototype=_.prototype={constructor:T,count:c,each:f,eachAfter:d,eachBefore:h,sum:v,sort:x,path:b,ancestors:E,descendants:k,leaves:A,links:L,copy:C};var F=Array.prototype.slice;function q(Ve){for(var Xe=Ve.length,ht,Le;Xe;)Le=Math.random()*Xe--|0,ht=Ve[Xe],Ve[Xe]=Ve[Le],Ve[Le]=ht;return Ve}function V(Ve){for(var Xe=0,ht=(Ve=q(F.call(Ve))).length,Le=[],xe,Se;Xe0&&ht*ht>Le*Le+xe*xe}function N(Ve,Xe){for(var ht=0;htVt?(xe=(ar+Vt-Se)/(2*ar),Gt=Math.sqrt(Math.max(0,Vt/ar-xe*xe)),ht.x=Ve.x-xe*Le-Gt*lt,ht.y=Ve.y-xe*lt+Gt*Le):(xe=(ar+Se-Vt)/(2*ar),Gt=Math.sqrt(Math.max(0,Se/ar-xe*xe)),ht.x=Xe.x+xe*Le-Gt*lt,ht.y=Xe.y+xe*lt+Gt*Le)):(ht.x=Xe.x+ht.r,ht.y=Xe.y)}function ke(Ve,Xe){var ht=Ve.r+Xe.r-1e-6,Le=Xe.x-Ve.x,xe=Xe.y-Ve.y;return ht>0&&ht*ht>Le*Le+xe*xe}function ge(Ve){var Xe=Ve._,ht=Ve.next._,Le=Xe.r+ht.r,xe=(Xe.x*ht.r+ht.x*Xe.r)/Le,Se=(Xe.y*ht.r+ht.y*Xe.r)/Le;return xe*xe+Se*Se}function ie(Ve){this._=Ve,this.next=null,this.previous=null}function Te(Ve){if(!(xe=Ve.length))return 0;var Xe,ht,Le,xe,Se,lt,Gt,Vt,ar,Qr,ai;if(Xe=Ve[0],Xe.x=0,Xe.y=0,!(xe>1))return Xe.r;if(ht=Ve[1],Xe.x=-ht.r,ht.x=Xe.r,ht.y=0,!(xe>2))return Xe.r+ht.r;Me(ht,Xe,Le=Ve[2]),Xe=new ie(Xe),ht=new ie(ht),Le=new ie(Le),Xe.next=Le.previous=ht,ht.next=Xe.previous=Le,Le.next=ht.previous=Xe;e:for(Gt=3;Gt0)throw new Error("cycle");return Gt}return ht.id=function(Le){return arguments.length?(Ve=ze(Le),ht):Ve},ht.parentId=function(Le){return arguments.length?(Xe=ze(Le),ht):Xe},ht}function Ke(Ve,Xe){return Ve.parent===Xe.parent?1:2}function xt(Ve){var Xe=Ve.children;return Xe?Xe[0]:Ve.t}function bt(Ve){var Xe=Ve.children;return Xe?Xe[Xe.length-1]:Ve.t}function Lt(Ve,Xe,ht){var Le=ht/(Xe.i-Ve.i);Xe.c-=Le,Xe.s+=ht,Ve.c+=Le,Xe.z+=ht,Xe.m+=ht}function St(Ve){for(var Xe=0,ht=0,Le=Ve.children,xe=Le.length,Se;--xe>=0;)Se=Le[xe],Se.z+=Xe,Se.m+=Xe,Xe+=Se.s+(ht+=Se.c)}function Et(Ve,Xe,ht){return Ve.a.parent===Xe.parent?Ve.a:ht}function dt(Ve,Xe){this._=Ve,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=Xe}dt.prototype=Object.create(T.prototype);function Ht(Ve){for(var Xe=new dt(Ve,0),ht,Le=[Xe],xe,Se,lt,Gt;ht=Le.pop();)if(Se=ht._.children)for(ht.children=new Array(Gt=Se.length),lt=Gt-1;lt>=0;--lt)Le.push(xe=ht.children[lt]=new dt(Se[lt],lt)),xe.parent=ht;return(Xe.parent=new dt(null,0)).children=[Xe],Xe}function $t(){var Ve=Ke,Xe=1,ht=1,Le=null;function xe(ar){var Qr=Ht(ar);if(Qr.eachAfter(Se),Qr.parent.m=-Qr.z,Qr.eachBefore(lt),Le)ar.eachBefore(Vt);else{var ai=ar,jr=ar,ri=ar;ar.eachBefore(function(_n){_n.xjr.x&&(jr=_n),_n.depth>ri.depth&&(ri=_n)});var bi=ai===jr?1:Ve(ai,jr)/2,nn=bi-ai.x,Wi=Xe/(jr.x+bi+nn),Ni=ht/(ri.depth||1);ar.eachBefore(function(_n){_n.x=(_n.x+nn)*Wi,_n.y=_n.depth*Ni})}return ar}function Se(ar){var Qr=ar.children,ai=ar.parent.children,jr=ar.i?ai[ar.i-1]:null;if(Qr){St(ar);var ri=(Qr[0].z+Qr[Qr.length-1].z)/2;jr?(ar.z=jr.z+Ve(ar._,jr._),ar.m=ar.z-ri):ar.z=ri}else jr&&(ar.z=jr.z+Ve(ar._,jr._));ar.parent.A=Gt(ar,jr,ar.parent.A||ai[0])}function lt(ar){ar._.x=ar.z+ar.parent.m,ar.m+=ar.parent.m}function Gt(ar,Qr,ai){if(Qr){for(var jr=ar,ri=ar,bi=Qr,nn=jr.parent.children[0],Wi=jr.m,Ni=ri.m,_n=bi.m,$i=nn.m,zn;bi=bt(bi),jr=xt(jr),bi&&jr;)nn=xt(nn),ri=bt(ri),ri.a=ar,zn=bi.z+_n-jr.z-Wi+Ve(bi._,jr._),zn>0&&(Lt(Et(bi,ar,ai),ar,zn),Wi+=zn,Ni+=zn),_n+=bi.m,Wi+=jr.m,$i+=nn.m,Ni+=ri.m;bi&&!bt(ri)&&(ri.t=bi,ri.m+=_n-Ni),jr&&!xt(nn)&&(nn.t=jr,nn.m+=Wi-$i,ai=ar)}return ai}function Vt(ar){ar.x*=Xe,ar.y=ar.depth*ht}return xe.separation=function(ar){return arguments.length?(Ve=ar,xe):Ve},xe.size=function(ar){return arguments.length?(Le=!1,Xe=+ar[0],ht=+ar[1],xe):Le?null:[Xe,ht]},xe.nodeSize=function(ar){return arguments.length?(Le=!0,Xe=+ar[0],ht=+ar[1],xe):Le?[Xe,ht]:null},xe}function fr(Ve,Xe,ht,Le,xe){for(var Se=Ve.children,lt,Gt=-1,Vt=Se.length,ar=Ve.value&&(xe-ht)/Ve.value;++Gt_n&&(_n=ar),It=Wi*Wi*Wn,$i=Math.max(_n/It,It/Ni),$i>zn){Wi-=ar;break}zn=$i}lt.push(Vt={value:Wi,dice:ri1?Le:1)},ht}(_r);function Nr(){var Ve=Or,Xe=!1,ht=1,Le=1,xe=[0],Se=Ce,lt=Ce,Gt=Ce,Vt=Ce,ar=Ce;function Qr(jr){return jr.x0=jr.y0=0,jr.x1=ht,jr.y1=Le,jr.eachBefore(ai),xe=[0],Xe&&jr.eachBefore(qt),jr}function ai(jr){var ri=xe[jr.depth],bi=jr.x0+ri,nn=jr.y0+ri,Wi=jr.x1-ri,Ni=jr.y1-ri;Wi=jr-1){var _n=Se[ai];_n.x0=bi,_n.y0=nn,_n.x1=Wi,_n.y1=Ni;return}for(var $i=ar[ai],zn=ri/2+$i,Wn=ai+1,It=jr-1;Wn>>1;ar[ft]Ni-nn){var yr=(bi*Zt+Wi*jt)/ri;Qr(ai,Wn,jt,bi,nn,yr,Ni),Qr(Wn,jr,Zt,yr,nn,Wi,Ni)}else{var Fr=(nn*Zt+Ni*jt)/ri;Qr(ai,Wn,jt,bi,nn,Wi,Fr),Qr(Wn,jr,Zt,bi,Fr,Wi,Ni)}}}function Ne(Ve,Xe,ht,Le,xe){(Ve.depth&1?fr:rt)(Ve,Xe,ht,Le,xe)}var Ye=function Ve(Xe){function ht(Le,xe,Se,lt,Gt){if((Vt=Le._squarify)&&Vt.ratio===Xe)for(var Vt,ar,Qr,ai,jr=-1,ri,bi=Vt.length,nn=Le.value;++jr1?Le:1)},ht}(_r);e.cluster=l,e.hierarchy=_,e.pack=ce,e.packEnclose=V,e.packSiblings=Ee,e.partition=ot,e.stratify=er,e.tree=$t,e.treemap=Nr,e.treemapBinary=ut,e.treemapDice=rt,e.treemapResquarify=Ye,e.treemapSlice=fr,e.treemapSliceDice=Ne,e.treemapSquarify=Or,Object.defineProperty(e,"__esModule",{value:!0})})});var EE=ye(ME=>{"use strict";var ZEe=SE(),bkt=uo(),b5=Mr(),wkt=Mu().makeColorScaleFuncFromTrace,Tkt=y5().makePullColorFn,Akt=y5().generateExtendedColors,Skt=Mu().calc,Mkt=es().ALMOST_EQUAL,Ekt={},kkt={},Ckt={};ME.calc=function(e,t){var r=e._fullLayout,n=t.ids,i=b5.isArrayOrTypedArray(n),a=t.labels,o=t.parents,s=t.values,l=b5.isArrayOrTypedArray(s),u=[],c={},f={},h=function(G,N){c[G]?c[G].push(N):c[G]=[N],f[N]=1},d=function(G){return G||typeof G=="number"},v=function(G){return!l||bkt(s[G])&&s[G]>=0},x,b,p;i?(x=Math.min(n.length,o.length),b=function(G){return d(n[G])&&v(G)},p=function(G){return String(n[G])}):(x=Math.min(a.length,o.length),b=function(G){return d(a[G])&&v(G)},p=function(G){return String(a[G])}),l&&(x=Math.min(x,s.length));for(var E=0;E1){for(var M=b5.randstr(),g=0;g{});function Vm(){}function jEe(){return this.rgb().formatHex()}function kkt(){return this.rgb().formatHex8()}function Ckt(){return $Ee(this).formatHsl()}function WEe(){return this.rgb().formatRgb()}function j_(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=bkt.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?ZEe(t):r===3?new hd(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?pD(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?pD(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=wkt.exec(e))?new hd(t[1],t[2],t[3],1):(t=Tkt.exec(e))?new hd(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Akt.exec(e))?pD(t[1],t[2],t[3],t[4]):(t=Skt.exec(e))?pD(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Mkt.exec(e))?KEe(t[1],t[2]/100,t[3]/100,1):(t=Ekt.exec(e))?KEe(t[1],t[2]/100,t[3]/100,t[4]):GEe.hasOwnProperty(e)?ZEe(GEe[e]):e==="transparent"?new hd(NaN,NaN,NaN,0):null}function ZEe(e){return new hd(e>>16&255,e>>8&255,e&255,1)}function pD(e,t,r,n){return n<=0&&(e=t=r=NaN),new hd(e,t,r,n)}function CE(e){return e instanceof Vm||(e=j_(e)),e?(e=e.rgb(),new hd(e.r,e.g,e.b,e.opacity)):new hd}function T5(e,t,r,n){return arguments.length===1?CE(e):new hd(e,t,r,n==null?1:n)}function hd(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function XEe(){return`#${M2(this.r)}${M2(this.g)}${M2(this.b)}`}function Lkt(){return`#${M2(this.r)}${M2(this.g)}${M2(this.b)}${M2((isNaN(this.opacity)?1:this.opacity)*255)}`}function YEe(){let e=mD(this.opacity);return`${e===1?"rgb(":"rgba("}${E2(this.r)}, ${E2(this.g)}, ${E2(this.b)}${e===1?")":`, ${e})`}`}function mD(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function E2(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function M2(e){return e=E2(e),(e<16?"0":"")+e.toString(16)}function KEe(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Zg(e,t,r,n)}function $Ee(e){if(e instanceof Zg)return new Zg(e.h,e.s,e.l,e.opacity);if(e instanceof Vm||(e=j_(e)),!e)return new Zg;if(e instanceof Zg)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(t===a?o=(r-n)/s+(r0&&l<1?0:o,new Zg(o,s,l,e.opacity)}function LE(e,t,r,n){return arguments.length===1?$Ee(e):new Zg(e,t,r,n==null?1:n)}function Zg(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function JEe(e){return e=(e||0)%360,e<0?e+360:e}function gD(e){return Math.max(0,Math.min(1,e||0))}function oW(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var G_,k2,w5,kE,Um,bkt,wkt,Tkt,Akt,Skt,Mkt,Ekt,GEe,yD=su(()=>{vD();G_=.7,k2=1/G_,w5="\\s*([+-]?\\d+)\\s*",kE="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Um="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",bkt=/^#([0-9a-f]{3,8})$/,wkt=new RegExp(`^rgb\\(${w5},${w5},${w5}\\)$`),Tkt=new RegExp(`^rgb\\(${Um},${Um},${Um}\\)$`),Akt=new RegExp(`^rgba\\(${w5},${w5},${w5},${kE}\\)$`),Skt=new RegExp(`^rgba\\(${Um},${Um},${Um},${kE}\\)$`),Mkt=new RegExp(`^hsl\\(${kE},${Um},${Um}\\)$`),Ekt=new RegExp(`^hsla\\(${kE},${Um},${Um},${kE}\\)$`),GEe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Xy(Vm,j_,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:jEe,formatHex:jEe,formatHex8:kkt,formatHsl:Ckt,formatRgb:WEe,toString:WEe});Xy(hd,T5,H_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new hd(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?G_:Math.pow(G_,e),new hd(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new hd(E2(this.r),E2(this.g),E2(this.b),mD(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:XEe,formatHex:XEe,formatHex8:Lkt,formatRgb:YEe,toString:YEe}));Xy(Zg,LE,H_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new Zg(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?G_:Math.pow(G_,e),new Zg(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new hd(oW(e>=240?e-240:e+120,i,n),oW(e,i,n),oW(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Zg(JEe(this.h),gD(this.s),gD(this.l),mD(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=mD(this.opacity);return`${e===1?"hsl(":"hsla("}${JEe(this.h)}, ${gD(this.s)*100}%, ${gD(this.l)*100}%${e===1?")":`, ${e})`}`}}))});var _D,xD,sW=su(()=>{_D=Math.PI/180,xD=180/Math.PI});function nke(e){if(e instanceof Hm)return new Hm(e.l,e.a,e.b,e.opacity);if(e instanceof Yy)return ake(e);e instanceof hd||(e=CE(e));var t=fW(e.r),r=fW(e.g),n=fW(e.b),i=lW((.2225045*t+.7168786*r+.0606169*n)/eke),a,o;return t===r&&r===n?a=o=i:(a=lW((.4360747*t+.3850649*r+.1430804*n)/QEe),o=lW((.0139322*t+.0971045*r+.7141733*n)/tke)),new Hm(116*i-16,500*(a-i),200*(i-o),e.opacity)}function S5(e,t,r,n){return arguments.length===1?nke(e):new Hm(e,t,r,n==null?1:n)}function Hm(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function lW(e){return e>Pkt?Math.pow(e,1/3):e/ike+rke}function uW(e){return e>A5?e*e*e:ike*(e-rke)}function cW(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function fW(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Ikt(e){if(e instanceof Yy)return new Yy(e.h,e.c,e.l,e.opacity);if(e instanceof Hm||(e=nke(e)),e.a===0&&e.b===0)return new Yy(NaN,0{vD();yD();sW();bD=18,QEe=.96422,eke=1,tke=.82521,rke=4/29,A5=6/29,ike=3*A5*A5,Pkt=A5*A5*A5;Xy(Hm,S5,H_(Vm,{brighter(e){return new Hm(this.l+bD*(e==null?1:e),this.a,this.b,this.opacity)},darker(e){return new Hm(this.l-bD*(e==null?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=QEe*uW(t),e=eke*uW(e),r=tke*uW(r),new hd(cW(3.1338561*t-1.6168667*e-.4906146*r),cW(-.9787684*t+1.9161415*e+.033454*r),cW(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));Xy(Yy,PE,H_(Vm,{brighter(e){return new Yy(this.h,this.c,this.l+bD*(e==null?1:e),this.opacity)},darker(e){return new Yy(this.h,this.c,this.l-bD*(e==null?1:e),this.opacity)},rgb(){return ake(this).rgb()}}))});function Rkt(e){if(e instanceof C2)return new C2(e.h,e.s,e.l,e.opacity);e instanceof hd||(e=CE(e));var t=e.r/255,r=e.g/255,n=e.b/255,i=(uke*n+ske*t-lke*r)/(uke+ske-lke),a=n-i,o=(IE*(r-i)-dW*a)/wD,s=Math.sqrt(o*o+a*a)/(IE*i*(1-i)),l=s?Math.atan2(o,a)*xD-120:NaN;return new C2(l<0?l+360:l,s,i,e.opacity)}function M5(e,t,r,n){return arguments.length===1?Rkt(e):new C2(e,t,r,n==null?1:n)}function C2(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}var cke,hW,dW,wD,IE,ske,lke,uke,fke=su(()=>{vD();yD();sW();cke=-.14861,hW=1.78277,dW=-.29227,wD=-.90649,IE=1.97294,ske=IE*wD,lke=IE*hW,uke=hW*dW-wD*cke;Xy(C2,M5,H_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new C2(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?G_:Math.pow(G_,e),new C2(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*_D,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),i=Math.sin(e);return new hd(255*(t+r*(cke*n+hW*i)),255*(t+r*(dW*n+wD*i)),255*(t+r*(IE*n)),this.opacity)}}))});var L2=su(()=>{yD();oke();fke()});function vW(e,t,r,n,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*r+(1+3*e+3*a-3*o)*n+o*i)/6}function TD(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],o=n>0?e[n-1]:2*i-a,s=n{});function SD(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],o=e[(n+1)%t],s=e[(n+2)%t];return vW((r-n/t)*t,i,a,o,s)}}var pW=su(()=>{AD()});var E5,gW=su(()=>{E5=e=>()=>e});function hke(e,t){return function(r){return e+r*t}}function Dkt(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function W_(e,t){var r=t-e;return r?hke(e,r>180||r<-180?r-360*Math.round(r/360):r):E5(isNaN(e)?t:e)}function dke(e){return(e=+e)==1?qf:function(t,r){return r-t?Dkt(t,r,e):E5(isNaN(t)?r:t)}}function qf(e,t){var r=t-e;return r?hke(e,r):E5(isNaN(e)?t:e)}var P2=su(()=>{gW()});function vke(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),o,s;for(o=0;o{L2();AD();pW();P2();RE=function e(t){var r=dke(t);function n(i,a){var o=r((i=T5(i)).r,(a=T5(a)).r),s=r(i.g,a.g),l=r(i.b,a.b),u=qf(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=s(c),i.b=l(c),i.opacity=u(c),i+""}}return n.gamma=e,n}(1);pke=vke(TD),gke=vke(SD)});function k5(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i{});function mke(e,t){return(MD(t)?k5:yW)(e,t)}function yW(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),o;for(o=0;o{DE();ED()});function kD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var xW=su(()=>{});function Fp(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var zE=su(()=>{});function CD(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=Z_(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var bW=su(()=>{DE()});function zkt(e){return function(){return e}}function Fkt(e){return function(t){return e(t)+""}}function LD(e,t){var r=TW.lastIndex=wW.lastIndex=0,n,i,a,o=-1,s=[],l=[];for(e=e+"",t=t+"";(n=TW.exec(e))&&(i=wW.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),s[o]?s[o]+=a:s[++o]=a),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:Fp(n,i)})),r=wW.lastIndex;return r{zE();TW=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,wW=new RegExp(TW.source,"g")});function Z_(e,t){var r=typeof t,n;return t==null||r==="boolean"?E5(t):(r==="number"?Fp:r==="string"?(n=j_(t))?(t=n,RE):LD:t instanceof j_?RE:t instanceof Date?kD:MD(t)?k5:Array.isArray(t)?yW:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?CD:Fp)(e,t)}var DE=su(()=>{L2();mW();_W();xW();zE();bW();AW();gW();ED()});function yke(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var _ke=su(()=>{});function xke(e,t){var r=W_(+e,+t);return function(n){var i=r(n);return i-360*Math.floor(i/360)}}var bke=su(()=>{P2()});function wke(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var Tke=su(()=>{});function SW(e,t,r,n,i,a){var o,s,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),e*n{Ake=180/Math.PI,PD={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function Mke(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?PD:SW(t.a,t.b,t.c,t.d,t.e,t.f)}function Eke(e){return e==null?PD:(ID||(ID=document.createElementNS("http://www.w3.org/2000/svg","g")),ID.setAttribute("transform",e),(e=ID.transform.baseVal.consolidate())?(e=e.matrix,SW(e.a,e.b,e.c,e.d,e.e,e.f)):PD)}var ID,kke=su(()=>{Ske()});function Cke(e,t,r,n){function i(u){return u.length?u.pop()+" ":""}function a(u,c,f,h,d,v){if(u!==f||c!==h){var x=d.push("translate(",null,t,null,r);v.push({i:x-4,x:Fp(u,f)},{i:x-2,x:Fp(c,h)})}else(f||h)&&d.push("translate("+f+t+h+r)}function o(u,c,f,h){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),h.push({i:f.push(i(f)+"rotate(",null,n)-2,x:Fp(u,c)})):c&&f.push(i(f)+"rotate("+c+n)}function s(u,c,f,h){u!==c?h.push({i:f.push(i(f)+"skewX(",null,n)-2,x:Fp(u,c)}):c&&f.push(i(f)+"skewX("+c+n)}function l(u,c,f,h,d,v){if(u!==f||c!==h){var x=d.push(i(d)+"scale(",null,",",null,")");v.push({i:x-4,x:Fp(u,f)},{i:x-2,x:Fp(c,h)})}else(f!==1||h!==1)&&d.push(i(d)+"scale("+f+","+h+")")}return function(u,c){var f=[],h=[];return u=e(u),c=e(c),a(u.translateX,u.translateY,c.translateX,c.translateY,f,h),o(u.rotate,c.rotate,f,h),s(u.skewX,c.skewX,f,h),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,h),u=c=null,function(d){for(var v=-1,x=h.length,b;++v{zE();kke();Lke=Cke(Mke,"px, ","px)","deg)"),Pke=Cke(Eke,", ",")",")")});function Rke(e){return((e=Math.exp(e))+1/e)/2}function Okt(e){return((e=Math.exp(e))-1/e)/2}function Bkt(e){return((e=Math.exp(2*e))-1)/(e+1)}var qkt,Dke,zke=su(()=>{qkt=1e-12;Dke=function e(t,r,n){function i(a,o){var s=a[0],l=a[1],u=a[2],c=o[0],f=o[1],h=o[2],d=c-s,v=f-l,x=d*d+v*v,b,g;if(x{L2();P2();qke=Fke(W_),Oke=Fke(qf)});function MW(e,t){var r=qf((e=S5(e)).l,(t=S5(t)).l),n=qf(e.a,t.a),i=qf(e.b,t.b),a=qf(e.opacity,t.opacity);return function(o){return e.l=r(o),e.a=n(o),e.b=i(o),e.opacity=a(o),e+""}}var Nke=su(()=>{L2();P2()});function Uke(e){return function(t,r){var n=e((t=PE(t)).h,(r=PE(r)).h),i=qf(t.c,r.c),a=qf(t.l,r.l),o=qf(t.opacity,r.opacity);return function(s){return t.h=n(s),t.c=i(s),t.l=a(s),t.opacity=o(s),t+""}}}var Vke,Hke,Gke=su(()=>{L2();P2();Vke=Uke(W_),Hke=Uke(qf)});function jke(e){return function t(r){r=+r;function n(i,a){var o=e((i=M5(i)).h,(a=M5(a)).h),s=qf(i.s,a.s),l=qf(i.l,a.l),u=qf(i.opacity,a.opacity);return function(c){return i.h=o(c),i.s=s(c),i.l=l(Math.pow(c,r)),i.opacity=u(c),i+""}}return n.gamma=t,n}(1)}var Wke,Zke,Xke=su(()=>{L2();P2();Wke=jke(W_),Zke=jke(qf)});function EW(e,t){t===void 0&&(t=e,e=Z_);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r{DE()});function Kke(e,t){for(var r=new Array(t),n=0;n{});var I2={};BQe(I2,{interpolate:()=>Z_,interpolateArray:()=>mke,interpolateBasis:()=>TD,interpolateBasisClosed:()=>SD,interpolateCubehelix:()=>Wke,interpolateCubehelixLong:()=>Zke,interpolateDate:()=>kD,interpolateDiscrete:()=>yke,interpolateHcl:()=>Vke,interpolateHclLong:()=>Hke,interpolateHsl:()=>qke,interpolateHslLong:()=>Oke,interpolateHue:()=>xke,interpolateLab:()=>MW,interpolateNumber:()=>Fp,interpolateNumberArray:()=>k5,interpolateObject:()=>CD,interpolateRgb:()=>RE,interpolateRgbBasis:()=>pke,interpolateRgbBasisClosed:()=>gke,interpolateRound:()=>wke,interpolateString:()=>LD,interpolateTransformCss:()=>Lke,interpolateTransformSvg:()=>Pke,interpolateZoom:()=>Dke,piecewise:()=>EW,quantize:()=>Kke});var R2=su(()=>{DE();_W();AD();pW();xW();_ke();bke();zE();ED();bW();Tke();AW();Ike();zke();mW();Bke();Nke();Gke();Xke();Yke();Jke()});var RD=ye((tdr,$ke)=>{"use strict";var Nkt=ao(),Ukt=va();$ke.exports=function(t,r,n,i,a){var o=r.data.data,s=o.i,l=a||o.color;if(s>=0){r.i=o.i;var u=n.marker;u.pattern?(!u.colors||!u.pattern.shape)&&(u.color=l,r.color=l):(u.color=l,r.color=l),Nkt.pointStyle(t,n,i,r)}else Ukt.fill(t,l)}});var kW=ye((rdr,iCe)=>{"use strict";var Qke=xa(),eCe=va(),tCe=Mr(),Vkt=_v().resizeText,Hkt=RD();function Gkt(e){var t=e._fullLayout._sunburstlayer.selectAll(".trace");Vkt(e,t,"sunburst"),t.each(function(r){var n=Qke.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){Qke.select(this).call(rCe,o,a,e)})})}function rCe(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=tCe.castOption(r,o,"marker.line.color")||eCe.defaultLine,l=tCe.castOption(r,o,"marker.line.width")||0;e.call(Hkt,t,r,n).style("stroke-width",l).call(eCe.stroke,s).style("opacity",a?r.leaf.opacity:null)}iCe.exports={style:Gkt,styleOne:rCe}});var Ky=ye(bs=>{"use strict";var D2=Mr(),jkt=va(),Wkt=Tg(),nCe=l_();bs.findEntryWithLevel=function(e,t){var r;return t&&e.eachAfter(function(n){if(bs.getPtId(n)===t)return r=n.copy()}),r||e};bs.findEntryWithChild=function(e,t){var r;return e.eachAfter(function(n){for(var i=n.children||[],a=0;a0)};bs.getMaxDepth=function(e){return e.maxdepth>=0?e.maxdepth:1/0};bs.isHeader=function(e,t){return!(bs.isLeaf(e)||e.depth===t._maxDepth-1)};function aCe(e){return e.data.data.pid}bs.getParent=function(e,t){return bs.findEntryWithLevel(e,aCe(t))};bs.listPath=function(e,t){var r=e.parent;if(!r)return[];var n=t?[r.data[t]]:[r];return bs.listPath(r,t).concat(n)};bs.getPath=function(e){return bs.listPath(e,"label").join("/")+"/"};bs.formatValue=nCe.formatPieValue;bs.formatPercent=function(e,t){var r=D2.formatPercent(e,0);return r==="0%"&&(r=nCe.formatPiePercent(e,t)),r}});var OE=ye((ndr,lCe)=>{"use strict";var C5=xa(),oCe=ba(),Ykt=rp().appendArrayPointValue,FE=Nc(),sCe=Mr(),Kkt=g3(),Wh=Ky(),Jkt=l_(),$kt=Jkt.formatPieValue;lCe.exports=function(t,r,n,i,a){var o=i[0],s=o.trace,l=o.hierarchy,u=s.type==="sunburst",c=s.type==="treemap"||s.type==="icicle";"_hasHoverLabel"in s||(s._hasHoverLabel=!1),"_hasHoverEvent"in s||(s._hasHoverEvent=!1);var f=function(v){var x=n._fullLayout;if(!(n._dragging||x.hovermode===!1)){var b=n._fullData[s.index],g=v.data.data,E=g.i,k=Wh.isHierarchyRoot(v),A=Wh.getParent(l,v),L=Wh.getValue(v),_=function(Me){return sCe.castOption(b,E,Me)},C=_("hovertemplate"),M=FE.castHoverinfo(b,x,E),p=x.separators,P;if(C||M&&M!=="none"&&M!=="skip"){var T,F;u&&(T=o.cx+v.pxmid[0]*(1-v.rInscribed),F=o.cy+v.pxmid[1]*(1-v.rInscribed)),c&&(T=v._hoverX,F=v._hoverY);var q={},V=[],H=[],X=function(Me){return V.indexOf(Me)!==-1};M&&(V=M==="all"?b._module.attributes.hoverinfo.flags:M.split("+")),q.label=g.label,X("label")&&q.label&&H.push(q.label),g.hasOwnProperty("v")&&(q.value=g.v,q.valueLabel=$kt(q.value,p),X("value")&&H.push(q.valueLabel)),q.currentPath=v.currentPath=Wh.getPath(v.data),X("current path")&&!k&&H.push(q.currentPath);var G,N=[],W=function(){N.indexOf(G)===-1&&(H.push(G),N.push(G))};q.percentParent=v.percentParent=L/Wh.getValue(A),q.parent=v.parentString=Wh.getPtLabel(A),X("percent parent")&&(G=Wh.formatPercent(q.percentParent,p)+" of "+q.parent,W()),q.percentEntry=v.percentEntry=L/Wh.getValue(r),q.entry=v.entry=Wh.getPtLabel(r),X("percent entry")&&!k&&!v.onPathbar&&(G=Wh.formatPercent(q.percentEntry,p)+" of "+q.entry,W()),q.percentRoot=v.percentRoot=L/Wh.getValue(l),q.root=v.root=Wh.getPtLabel(l),X("percent root")&&!k&&(G=Wh.formatPercent(q.percentRoot,p)+" of "+q.root,W()),q.text=_("hovertext")||_("text"),X("text")&&(G=q.text,sCe.isValidTextValue(G)&&H.push(G)),P=[qE(v,b,a.eventDataKeys)];var re={trace:b,y:F,_x0:v._x0,_x1:v._x1,_y0:v._y0,_y1:v._y1,text:H.join("
"),name:C||X("name")?b.name:void 0,color:_("hoverlabel.bgcolor")||g.color,borderColor:_("hoverlabel.bordercolor"),fontFamily:_("hoverlabel.font.family"),fontSize:_("hoverlabel.font.size"),fontColor:_("hoverlabel.font.color"),fontWeight:_("hoverlabel.font.weight"),fontStyle:_("hoverlabel.font.style"),fontVariant:_("hoverlabel.font.variant"),nameLength:_("hoverlabel.namelength"),textAlign:_("hoverlabel.align"),hovertemplate:C,hovertemplateLabels:q,eventData:P};u&&(re.x0=T-v.rInscribed*v.rpx1,re.x1=T+v.rInscribed*v.rpx1,re.idealAlign=v.pxmid[0]<0?"left":"right"),c&&(re.x=T,re.idealAlign=T<0?"left":"right");var ae=[];FE.loneHover(re,{container:x._hoverlayer.node(),outerContainer:x._paper.node(),gd:n,inOut_bbox:ae}),P[0].bbox=ae[0],s._hasHoverLabel=!0}if(c){var _e=t.select("path.surface");a.styleOne(_e,v,b,n,{hovered:!0})}s._hasHoverEvent=!0,n.emit("plotly_hover",{points:P||[qE(v,b,a.eventDataKeys)],event:C5.event})}},h=function(v){var x=n._fullLayout,b=n._fullData[s.index],g=C5.select(this).datum();if(s._hasHoverEvent&&(v.originalEvent=C5.event,n.emit("plotly_unhover",{points:[qE(g,b,a.eventDataKeys)],event:C5.event}),s._hasHoverEvent=!1),s._hasHoverLabel&&(FE.loneUnhover(x._hoverlayer.node()),s._hasHoverLabel=!1),c){var E=t.select("path.surface");a.styleOne(E,g,b,n,{hovered:!1})}},d=function(v){var x=n._fullLayout,b=n._fullData[s.index],g=u&&(Wh.isHierarchyRoot(v)||Wh.isLeaf(v)),E=Wh.getPtId(v),k=Wh.isEntry(v)?Wh.findEntryWithChild(l,E):Wh.findEntryWithLevel(l,E),A=Wh.getPtId(k),L={points:[qE(v,b,a.eventDataKeys)],event:C5.event};g||(L.nextLevel=A);var _=Kkt.triggerHandler(n,"plotly_"+s.type+"click",L);if(_!==!1&&x.hovermode&&(n._hoverdata=[qE(v,b,a.eventDataKeys)],FE.click(n,C5.event)),!g&&_!==!1&&!n._dragging&&!n._transitioning){oCe.call("_storeDirectGUIEdit",b,x._tracePreGUI[b.uid],{level:b.level});var C={data:[{level:A}],traces:[s.index]},M={frame:{redraw:!1,duration:a.transitionTime},transition:{duration:a.transitionTime,easing:a.transitionEasing},mode:"immediate",fromcurrent:!0};FE.loneUnhover(x._hoverlayer.node()),oCe.call("animate",n,C,M)}};t.on("mouseover",f),t.on("mouseout",h),t.on("click",d)};function qE(e,t,r){for(var n=e.data.data,i={curveNumber:t.index,pointNumber:n.i,data:t._input,fullData:t},a=0;a{"use strict";var BE=xa(),Qkt=SE(),Xg=(R2(),ab(I2)).interpolate,uCe=ao(),bv=Mr(),eCt=Ll(),dCe=_v(),cCe=dCe.recordMinTextSize,tCt=dCe.clearMinTextSize,vCe=hD(),rCt=l_().getRotationAngle,iCt=vCe.computeTransform,nCt=vCe.transformInsideText,aCt=kW().styleOne,oCt=N0().resizeText,sCt=OE(),CW=nW(),sl=Ky();DD.plot=function(e,t,r,n){var i=e._fullLayout,a=i._sunburstlayer,o,s,l=!r,u=!i.uniformtext.mode&&sl.hasTransition(r);if(tCt("sunburst",i),o=a.selectAll("g.trace.sunburst").data(t,function(f){return f[0].trace.uid}),o.enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),o.order(),u){n&&(s=n());var c=BE.transition().duration(r.duration).ease(r.easing).each("end",function(){s&&s()}).each("interrupt",function(){s&&s()});c.each(function(){a.selectAll("g.trace").each(function(f){fCe(e,f,this,r)})})}else o.each(function(f){fCe(e,f,this,r)}),i.uniformtext.mode&&oCt(e,i._sunburstlayer.selectAll(".trace"),"sunburst");l&&o.exit().remove()};function fCe(e,t,r,n){var i=e._context.staticPlot,a=e._fullLayout,o=!a.uniformtext.mode&&sl.hasTransition(n),s=BE.select(r),l=s.selectAll("g.slice"),u=t[0],c=u.trace,f=u.hierarchy,h=sl.findEntryWithLevel(f,c.level),d=sl.getMaxDepth(c),v=a._size,x=c.domain,b=v.w*(x.x[1]-x.x[0]),g=v.h*(x.y[1]-x.y[0]),E=.5*Math.min(b,g),k=u.cx=v.l+v.w*(x.x[1]+x.x[0])/2,A=u.cy=v.t+v.h*(1-x.y[0])-g/2;if(!h)return l.remove();var L=null,_={};o&&l.each(function(ge){_[sl.getPtId(ge)]={rpx0:ge.rpx0,rpx1:ge.rpx1,x0:ge.x0,x1:ge.x1,transform:ge.transform},!L&&sl.isEntry(ge)&&(L=ge)});var C=lCt(h).descendants(),M=h.height+1,p=0,P=d;u.hasMultipleRoots&&sl.isHierarchyRoot(h)&&(C=C.slice(1),M-=1,p=1,P+=1),C=C.filter(function(ge){return ge.y1<=P});var T=rCt(c.rotation);T&&C.forEach(function(ge){ge.x0+=T,ge.x1+=T});var F=Math.min(M,d),q=function(ge){return(ge-p)/F*E},V=function(ge,ie){return[ge*Math.cos(ie),-ge*Math.sin(ie)]},H=function(ge){return bv.pathAnnulus(ge.rpx0,ge.rpx1,ge.x0,ge.x1,k,A)},X=function(ge){return k+hCe(ge)[0]*(ge.transform.rCenter||0)+(ge.transform.x||0)},G=function(ge){return A+hCe(ge)[1]*(ge.transform.rCenter||0)+(ge.transform.y||0)};l=l.data(C,sl.getPtId),l.enter().append("g").classed("slice",!0),o?l.exit().transition().each(function(){var ge=BE.select(this),ie=ge.select("path.surface");ie.transition().attrTween("d",function(Ee){var Ae=ae(Ee);return function(ze){return H(Ae(ze))}});var Te=ge.select("g.slicetext");Te.attr("opacity",0)}).remove():l.exit().remove(),l.order();var N=null;if(o&&L){var W=sl.getPtId(L);l.each(function(ge){N===null&&sl.getPtId(ge)===W&&(N=ge.x1)})}var re=l;o&&(re=re.transition().each("end",function(){var ge=BE.select(this);sl.setSliceCursor(ge,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:!1})})),re.each(function(ge){var ie=BE.select(this),Te=bv.ensureSingle(ie,"path","surface",function(Re){Re.style("pointer-events",i?"none":"all")});ge.rpx0=q(ge.y0),ge.rpx1=q(ge.y1),ge.xmid=(ge.x0+ge.x1)/2,ge.pxmid=V(ge.rpx1,ge.xmid),ge.midangle=-(ge.xmid-Math.PI/2),ge.startangle=-(ge.x0-Math.PI/2),ge.stopangle=-(ge.x1-Math.PI/2),ge.halfangle=.5*Math.min(bv.angleDelta(ge.x0,ge.x1)||Math.PI,Math.PI),ge.ring=1-ge.rpx0/ge.rpx1,ge.rInscribed=uCt(ge,c),o?Te.transition().attrTween("d",function(Re){var ce=_e(Re);return function(Ge){return H(ce(Ge))}}):Te.attr("d",H),ie.call(sCt,h,e,t,{eventDataKeys:CW.eventDataKeys,transitionTime:CW.CLICK_TRANSITION_TIME,transitionEasing:CW.CLICK_TRANSITION_EASING}).call(sl.setSliceCursor,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:e._transitioning}),Te.call(aCt,ge,c,e);var Ee=bv.ensureSingle(ie,"g","slicetext"),Ae=bv.ensureSingle(Ee,"text","",function(Re){Re.attr("data-notex",1)}),ze=bv.ensureUniformFontSize(e,sl.determineTextFont(c,ge,a.font));Ae.text(DD.formatSliceLabel(ge,h,c,t,a)).classed("slicetext",!0).attr("text-anchor","middle").call(uCe.font,ze).call(eCt.convertToTspans,e);var Ce=uCe.bBox(Ae.node());ge.transform=nCt(Ce,ge,u),ge.transform.targetX=X(ge),ge.transform.targetY=G(ge);var me=function(Re,ce){var Ge=Re.transform;return iCt(Ge,ce),Ge.fontSize=ze.size,cCe(c.type,Ge,a),bv.getTextTransform(Ge)};o?Ae.transition().attrTween("transform",function(Re){var ce=Me(Re);return function(Ge){return me(ce(Ge),Ce)}}):Ae.attr("transform",me(ge,Ce))});function ae(ge){var ie=sl.getPtId(ge),Te=_[ie],Ee=_[sl.getPtId(h)],Ae;if(Ee){var ze=(ge.x1>Ee.x1?2*Math.PI:0)+T;Ae=ge.rpx1N?2*Math.PI:0)+T;Te={x0:Ae,x1:Ae}}else Te={rpx0:E,rpx1:E},bv.extendFlat(Te,ke(ge));else Te={rpx0:0,rpx1:0};else Te={x0:T,x1:T};return Xg(Te,Ee)}function Me(ge){var ie=_[sl.getPtId(ge)],Te,Ee=ge.transform;if(ie)Te=ie;else if(Te={rpx1:ge.rpx1,transform:{textPosAngle:Ee.textPosAngle,scale:0,rotate:Ee.rotate,rCenter:Ee.rCenter,x:Ee.x,y:Ee.y}},L)if(ge.parent)if(N){var Ae=ge.x1>N?2*Math.PI:0;Te.x0=Te.x1=Ae}else bv.extendFlat(Te,ke(ge));else Te.x0=Te.x1=T;else Te.x0=Te.x1=T;var ze=Xg(Te.transform.textPosAngle,ge.transform.textPosAngle),Ce=Xg(Te.rpx1,ge.rpx1),me=Xg(Te.x0,ge.x0),Re=Xg(Te.x1,ge.x1),ce=Xg(Te.transform.scale,Ee.scale),Ge=Xg(Te.transform.rotate,Ee.rotate),nt=Ee.rCenter===0?3:Te.transform.rCenter===0?1/3:1,ct=Xg(Te.transform.rCenter,Ee.rCenter),qt=function(rt){return ct(Math.pow(rt,nt))};return function(rt){var ot=Ce(rt),Rt=me(rt),kt=Re(rt),Ct=qt(rt),Yt=V(ot,(Rt+kt)/2),xr=ze(rt),er={pxmid:Yt,rpx1:ot,transform:{textPosAngle:xr,rCenter:Ct,x:Ee.x,y:Ee.y}};return cCe(c.type,Ee,a),{transform:{targetX:X(er),targetY:G(er),scale:ce(rt),rotate:Ge(rt),rCenter:Ct}}}}function ke(ge){var ie=ge.parent,Te=_[sl.getPtId(ie)],Ee={};if(Te){var Ae=ie.children,ze=Ae.indexOf(ge),Ce=Ae.length,me=Xg(Te.x0,Te.x1);Ee.x0=me(ze/Ce),Ee.x1=me(ze/Ce)}else Ee.x0=Ee.x1=0;return Ee}}function lCt(e){return Qkt.partition().size([2*Math.PI,e.height+1])(e)}DD.formatSliceLabel=function(e,t,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!a&&(!o||o==="none"))return"";var s=i.separators,l=n[0],u=e.data.data,c=l.hierarchy,f=sl.isHierarchyRoot(e),h=sl.getParent(c,e),d=sl.getValue(e);if(!a){var v=o.split("+"),x=function(p){return v.indexOf(p)!==-1},b=[],g;if(x("label")&&u.label&&b.push(u.label),u.hasOwnProperty("v")&&x("value")&&b.push(sl.formatValue(u.v,s)),!f){x("current path")&&b.push(sl.getPath(e.data));var E=0;x("percent parent")&&E++,x("percent entry")&&E++,x("percent root")&&E++;var k=E>1;if(E){var A,L=function(p){g=sl.formatPercent(A,s),k&&(g+=" of "+p),b.push(g)};x("percent parent")&&!f&&(A=d/sl.getValue(h),L("parent")),x("percent entry")&&(A=d/sl.getValue(t),L("entry")),x("percent root")&&(A=d/sl.getValue(c),L("root"))}}return x("text")&&(g=bv.castOption(r,u.i,"text"),bv.isValidTextValue(g)&&b.push(g)),b.join("
")}var _=bv.castOption(r,u.i,"texttemplate");if(!_)return"";var C={};u.label&&(C.label=u.label),u.hasOwnProperty("v")&&(C.value=u.v,C.valueLabel=sl.formatValue(u.v,s)),C.currentPath=sl.getPath(e.data),f||(C.percentParent=d/sl.getValue(h),C.percentParentLabel=sl.formatPercent(C.percentParent,s),C.parent=sl.getPtLabel(h)),C.percentEntry=d/sl.getValue(t),C.percentEntryLabel=sl.formatPercent(C.percentEntry,s),C.entry=sl.getPtLabel(t),C.percentRoot=d/sl.getValue(c),C.percentRootLabel=sl.formatPercent(C.percentRoot,s),C.root=sl.getPtLabel(c),u.hasOwnProperty("color")&&(C.color=u.color);var M=bv.castOption(r,u.i,"text");return(bv.isValidTextValue(M)||M==="")&&(C.text=M),C.customdata=bv.castOption(r,u.i,"customdata"),bv.texttemplateString(_,C,i._d3locale,C,r._meta||{})};function uCt(e){return e.rpx0===0&&bv.isFullCircle([e.x0,e.x1])?1:Math.max(0,Math.min(1/(1+1/Math.sin(e.halfangle)),e.ring/2))}function hCe(e){return cCt(e.rpx1,e.transform.textPosAngle)}function cCt(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}});var gCe=ye((odr,pCe)=>{"use strict";pCe.exports={moduleType:"trace",name:"sunburst",basePlotModule:LEe(),categories:[],animatable:!0,attributes:AE(),layoutAttributes:aW(),supplyDefaults:OEe(),supplyLayoutDefaults:NEe(),calc:EE().calc,crossTraceCalc:EE().crossTraceCalc,plot:zD().plot,style:kW().style,colorbar:Kd(),meta:{}}});var yCe=ye((sdr,mCe)=>{"use strict";mCe.exports=gCe()});var xCe=ye(L5=>{"use strict";var _Ce=Xu();L5.name="treemap";L5.plot=function(e,t,r,n){_Ce.plotBasePlot(L5.name,e,t,r,n)};L5.clean=function(e,t,r,n){_Ce.cleanBasePlot(L5.name,e,t,r,n)}});var z2=ye((udr,bCe)=>{"use strict";bCe.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}});var FD=ye((cdr,TCe)=>{"use strict";var fCt=Wo().hovertemplateAttrs,hCt=Wo().texttemplateAttrs,dCt=Kl(),vCt=Ju().attributes,F2=A2(),Q0=AE(),wCe=z2(),LW=no().extendFlat,pCt=Ed().pattern;TCe.exports={labels:Q0.labels,parents:Q0.parents,values:Q0.values,branchvalues:Q0.branchvalues,count:Q0.count,level:Q0.level,maxdepth:Q0.maxdepth,tiling:{packing:{valType:"enumerated",values:["squarify","binary","dice","slice","slice-dice","dice-slice"],dflt:"squarify",editType:"plot"},squarifyratio:{valType:"number",min:1,dflt:1,editType:"plot"},flip:{valType:"flaglist",flags:["x","y"],dflt:"",editType:"plot"},pad:{valType:"number",min:0,dflt:3,editType:"plot"},editType:"calc"},marker:LW({pad:{t:{valType:"number",min:0,editType:"plot"},l:{valType:"number",min:0,editType:"plot"},r:{valType:"number",min:0,editType:"plot"},b:{valType:"number",min:0,editType:"plot"},editType:"calc"},colors:Q0.marker.colors,pattern:pCt,depthfade:{valType:"enumerated",values:[!0,!1,"reversed"],editType:"style"},line:Q0.marker.line,cornerradius:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},dCt("marker",{colorAttr:"colors",anim:!1})),pathbar:{visible:{valType:"boolean",dflt:!0,editType:"plot"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},edgeshape:{valType:"enumerated",values:[">","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:LW({},F2.textfont,{}),editType:"calc"},text:F2.text,textinfo:Q0.textinfo,texttemplate:hCt({editType:"plot"},{keys:wCe.eventDataKeys.concat(["label","value"])}),hovertext:F2.hovertext,hoverinfo:Q0.hoverinfo,hovertemplate:fCt({},{keys:wCe.eventDataKeys}),textfont:F2.textfont,insidetextfont:F2.insidetextfont,outsidetextfont:LW({},F2.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:F2.sort,root:Q0.root,domain:vCt({name:"treemap",trace:!0,editType:"calc"})}});var PW=ye((fdr,ACe)=>{"use strict";ACe.exports={treemapcolorway:{valType:"colorlist",editType:"calc"},extendtreemapcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var kCe=ye((hdr,ECe)=>{"use strict";var SCe=Mr(),gCt=FD(),mCt=va(),yCt=Ju().defaults,_Ct=r0().handleText,xCt=Qb().TEXTPAD,bCt=S2().handleMarkerDefaults,MCe=Mu(),wCt=MCe.hasColorscale,TCt=MCe.handleDefaults;ECe.exports=function(t,r,n,i){function a(b,g){return SCe.coerce(t,r,gCt,b,g)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth");var u=a("tiling.packing");u==="squarify"&&a("tiling.squarifyratio"),a("tiling.flip"),a("tiling.pad");var c=a("text");a("texttemplate"),r.texttemplate||a("textinfo",SCe.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate");var f=a("pathbar.visible"),h="auto";_Ct(t,r,i,a,h,{hasPathbar:f,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition");var d=r.textposition.indexOf("bottom")!==-1;bCt(t,r,i,a);var v=r._hasColorscale=wCt(t,"marker","colors")||(t.marker||{}).coloraxis;v?TCt(t,r,i,a,{prefix:"marker.",cLetter:"c"}):a("marker.depthfade",!(r.marker.colors||[]).length);var x=r.textfont.size*2;a("marker.pad.t",d?x/4:x),a("marker.pad.l",x/4),a("marker.pad.r",x/4),a("marker.pad.b",d?x:x/4),a("marker.cornerradius"),r._hovered={marker:{line:{width:2,color:mCt.contrast(i.paper_bgcolor)}}},f&&(a("pathbar.thickness",r.pathbar.textfont.size+2*xCt),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),yCt(r,i,a),r._length=null}});var LCe=ye((ddr,CCe)=>{"use strict";var ACt=Mr(),SCt=PW();CCe.exports=function(t,r){function n(i,a){return ACt.coerce(t,r,SCt,i,a)}n("treemapcolorway",r.colorway),n("extendtreemapcolors")}});var RW=ye(IW=>{"use strict";var PCe=EE();IW.calc=function(e,t){return PCe.calc(e,t)};IW.crossTraceCalc=function(e){return PCe._runCrossTraceCalc("treemap",e)}});var DW=ye((pdr,ICe)=>{"use strict";ICe.exports=function e(t,r,n){var i;n.swapXY&&(i=t.x0,t.x0=t.y0,t.y0=i,i=t.x1,t.x1=t.y1,t.y1=i),n.flipX&&(i=t.x0,t.x0=r[0]-t.x1,t.x1=r[0]-i),n.flipY&&(i=t.y0,t.y0=r[1]-t.y1,t.y1=r[1]-i);var a=t.children;if(a)for(var o=0;o{"use strict";var P5=SE(),MCt=DW();RCe.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.packing==="dice-slice",s=n.pad[a?"bottom":"top"],l=n.pad[i?"right":"left"],u=n.pad[i?"left":"right"],c=n.pad[a?"top":"bottom"],f;o&&(f=l,l=s,s=f,f=u,u=c,c=f);var h=P5.treemap().tile(ECt(n.packing,n.squarifyratio)).paddingInner(n.pad.inner).paddingLeft(l).paddingRight(u).paddingTop(s).paddingBottom(c).size(o?[r[1],r[0]]:r)(t);return(o||i||a)&&MCt(h,r,{swapXY:o,flipX:i,flipY:a}),h};function ECt(e,t){switch(e){case"squarify":return P5.treemapSquarify.ratio(t);case"binary":return P5.treemapBinary;case"dice":return P5.treemapDice;case"slice":return P5.treemapSlice;default:return P5.treemapSliceDice}}});var qD=ye((mdr,qCe)=>{"use strict";var DCe=xa(),I5=va(),zCe=Mr(),FW=Ky(),kCt=_v().resizeText,CCt=RD();function LCt(e){var t=e._fullLayout._treemaplayer.selectAll(".trace");kCt(e,t,"treemap"),t.each(function(r){var n=DCe.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){DCe.select(this).call(FCe,o,a,e,{hovered:!1})})})}function FCe(e,t,r,n,i){var a=(i||{}).hovered,o=t.data.data,s=o.i,l,u,c=o.color,f=FW.isHierarchyRoot(t),h=1;if(a)l=r._hovered.marker.line.color,u=r._hovered.marker.line.width;else if(f&&c===r.root.color)h=100,l="rgba(0,0,0,0)",u=0;else if(l=zCe.castOption(r,s,"marker.line.color")||I5.defaultLine,u=zCe.castOption(r,s,"marker.line.width")||0,!r._hasColorscale&&!t.onPathbar){var d=r.marker.depthfade;if(d){var v=I5.combine(I5.addOpacity(r._backgroundColor,.75),c),x;if(d===!0){var b=FW.getMaxDepth(r);isFinite(b)?FW.isLeaf(t)?x=0:x=r._maxVisibleLayers-(t.data.depth-r._entryDepth):x=t.data.height+1}else x=t.data.depth-r._entryDepth,r._atRootLevel||x++;if(x>0)for(var g=0;g{"use strict";var OCe=xa(),OD=Mr(),BCe=ao(),PCt=Ll(),ICt=zW(),NCe=qD().styleOne,qW=z2(),R5=Ky(),RCt=OE(),OW=!0;UCe.exports=function(t,r,n,i,a){var o=a.barDifY,s=a.width,l=a.height,u=a.viewX,c=a.viewY,f=a.pathSlice,h=a.toMoveInsideSlice,d=a.strTransform,v=a.hasTransition,x=a.handleSlicesExit,b=a.makeUpdateSliceInterpolator,g=a.makeUpdateTextInterpolator,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=L.hierarchy,M=s/_._entryDepth,p=R5.listPath(n.data,"id"),P=ICt(C.copy(),[s,l],{packing:"dice",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();P=P.filter(function(F){var q=p.indexOf(F.data.id);return q===-1?!1:(F.x0=M*q,F.x1=M*(q+1),F.y0=o,F.y1=o+l,F.onPathbar=!0,!0)}),P.reverse(),i=i.data(P,R5.getPtId),i.enter().append("g").classed("pathbar",!0),x(i,OW,E,[s,l],f),i.order();var T=i;v&&(T=T.transition().each("end",function(){var F=OCe.select(this);R5.setSliceCursor(F,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),T.each(function(F){F._x0=u(F.x0),F._x1=u(F.x1),F._y0=c(F.y0),F._y1=c(F.y1),F._hoverX=u(F.x1-Math.min(s,l)/2),F._hoverY=c(F.y1-l/2);var q=OCe.select(this),V=OD.ensureSingle(q,"path","surface",function(N){N.style("pointer-events",k?"none":"all")});v?V.transition().attrTween("d",function(N){var W=b(N,OW,E,[s,l]);return function(re){return f(W(re))}}):V.attr("d",f),q.call(RCt,n,t,r,{styleOne:NCe,eventDataKeys:qW.eventDataKeys,transitionTime:qW.CLICK_TRANSITION_TIME,transitionEasing:qW.CLICK_TRANSITION_EASING}).call(R5.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),V.call(NCe,F,_,t,{hovered:!1}),F._text=(R5.getPtLabel(F)||"").split("
").join(" ")||"";var H=OD.ensureSingle(q,"g","slicetext"),X=OD.ensureSingle(H,"text","",function(N){N.attr("data-notex",1)}),G=OD.ensureUniformFontSize(t,R5.determineTextFont(_,F,A.font,{onPathbar:!0}));X.text(F._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(BCe.font,G).call(PCt.convertToTspans,t),F.textBB=BCe.bBox(X.node()),F.transform=h(F,{fontSize:G.size,onPathbar:!0}),F.transform.fontSize=G.size,v?X.transition().attrTween("transform",function(N){var W=g(N,OW,E,[s,l]);return function(re){return d(W(re))}}):X.attr("transform",d(F))})}});var WCe=ye((_dr,jCe)=>{"use strict";var HCe=xa(),BW=(R2(),ab(I2)).interpolate,X_=Ky(),NE=Mr(),GCe=Qb().TEXTPAD,DCt=i2(),zCt=DCt.toMoveInsideBar,FCt=_v(),NW=FCt.recordMinTextSize,qCt=z2(),OCt=VCe();function q2(e){return X_.isHierarchyRoot(e)?"":X_.getPtId(e)}jCe.exports=function(t,r,n,i,a){var o=t._fullLayout,s=r[0],l=s.trace,u=l.type,c=u==="icicle",f=s.hierarchy,h=X_.findEntryWithLevel(f,l.level),d=HCe.select(n),v=d.selectAll("g.pathbar"),x=d.selectAll("g.slice");if(!h){v.remove(),x.remove();return}var b=X_.isHierarchyRoot(h),g=!o.uniformtext.mode&&X_.hasTransition(i),E=X_.getMaxDepth(l),k=function(Ke){return Ke.data.depth-h.data.depth-1?C+P:-(p+P):0,F={x0:M,x1:M,y0:T,y1:T+p},q=function(Ke,xt,bt){var Lt=l.tiling.pad,St=function($t){return $t-Lt<=xt.x0},Et=function($t){return $t+Lt>=xt.x1},dt=function($t){return $t-Lt<=xt.y0},Ht=function($t){return $t+Lt>=xt.y1};return Ke.x0===xt.x0&&Ke.x1===xt.x1&&Ke.y0===xt.y0&&Ke.y1===xt.y1?{x0:Ke.x0,x1:Ke.x1,y0:Ke.y0,y1:Ke.y1}:{x0:St(Ke.x0-Lt)?0:Et(Ke.x0-Lt)?bt[0]:Ke.x0,x1:St(Ke.x1+Lt)?0:Et(Ke.x1+Lt)?bt[0]:Ke.x1,y0:dt(Ke.y0-Lt)?0:Ht(Ke.y0-Lt)?bt[1]:Ke.y0,y1:dt(Ke.y1+Lt)?0:Ht(Ke.y1+Lt)?bt[1]:Ke.y1}},V=null,H={},X={},G=null,N=function(Ke,xt){return xt?H[q2(Ke)]:X[q2(Ke)]},W=function(Ke,xt,bt,Lt){if(xt)return H[q2(f)]||F;var St=X[l.level]||bt;return k(Ke)?q(Ke,St,Lt):{}};s.hasMultipleRoots&&b&&E++,l._maxDepth=E,l._backgroundColor=o.paper_bgcolor,l._entryDepth=h.data.depth,l._atRootLevel=b;var re=-_/2+A.l+A.w*(L.x[1]+L.x[0])/2,ae=-C/2+A.t+A.h*(1-(L.y[1]+L.y[0])/2),_e=function(Ke){return re+Ke},Me=function(Ke){return ae+Ke},ke=Me(0),ge=_e(0),ie=function(Ke){return ge+Ke},Te=function(Ke){return ke+Ke};function Ee(Ke,xt){return Ke+","+xt}var Ae=ie(0),ze=function(Ke){Ke.x=Math.max(Ae,Ke.x)},Ce=l.pathbar.edgeshape,me=function(Ke){var xt=ie(Math.max(Math.min(Ke.x0,Ke.x0),0)),bt=ie(Math.min(Math.max(Ke.x1,Ke.x1),M)),Lt=Te(Ke.y0),St=Te(Ke.y1),Et=p/2,dt={},Ht={};dt.x=xt,Ht.x=bt,dt.y=Ht.y=(Lt+St)/2;var $t={x:xt,y:Lt},fr={x:bt,y:Lt},_r={x:bt,y:St},Br={x:xt,y:St};return Ce===">"?($t.x-=Et,fr.x-=Et,_r.x-=Et,Br.x-=Et):Ce==="/"?(_r.x-=Et,Br.x-=Et,dt.x-=Et/2,Ht.x-=Et/2):Ce==="\\"?($t.x-=Et,fr.x-=Et,dt.x-=Et/2,Ht.x-=Et/2):Ce==="<"&&(dt.x-=Et,Ht.x-=Et),ze($t),ze(Br),ze(dt),ze(fr),ze(_r),ze(Ht),"M"+Ee($t.x,$t.y)+"L"+Ee(fr.x,fr.y)+"L"+Ee(Ht.x,Ht.y)+"L"+Ee(_r.x,_r.y)+"L"+Ee(Br.x,Br.y)+"L"+Ee(dt.x,dt.y)+"Z"},Re=l[c?"tiling":"marker"].pad,ce=function(Ke){return l.textposition.indexOf(Ke)!==-1},Ge=ce("top"),nt=ce("left"),ct=ce("right"),qt=ce("bottom"),rt=function(Ke){var xt=_e(Ke.x0),bt=_e(Ke.x1),Lt=Me(Ke.y0),St=Me(Ke.y1),Et=bt-xt,dt=St-Lt;if(!Et||!dt)return"";var Ht=l.marker.cornerradius||0,$t=Math.min(Ht,Et/2,dt/2);$t&&Ke.data&&Ke.data.data&&Ke.data.data.label&&(Ge&&($t=Math.min($t,Re.t)),nt&&($t=Math.min($t,Re.l)),ct&&($t=Math.min($t,Re.r)),qt&&($t=Math.min($t,Re.b)));var fr=function(_r,Br){return $t?"a"+Ee($t,$t)+" 0 0 1 "+Ee(_r,Br):""};return"M"+Ee(xt,Lt+$t)+fr($t,-$t)+"L"+Ee(bt-$t,Lt)+fr($t,$t)+"L"+Ee(bt,St-$t)+fr(-$t,$t)+"L"+Ee(xt+$t,St)+fr(-$t,-$t)+"Z"},ot=function(Ke,xt){var bt=Ke.x0,Lt=Ke.x1,St=Ke.y0,Et=Ke.y1,dt=Ke.textBB,Ht=Ge||xt.isHeader&&!qt,$t=Ht?"start":qt?"end":"middle",fr=ce("right"),_r=ce("left")||xt.onPathbar,Br=_r?-1:fr?1:0;if(xt.isHeader){if(bt+=(c?Re:Re.l)-GCe,Lt-=(c?Re:Re.r)-GCe,bt>=Lt){var Or=(bt+Lt)/2;bt=Or,Lt=Or}var Nr;qt?(Nr=Et-(c?Re:Re.b),St{"use strict";var BCt=xa(),NCt=Ky(),UCt=_v(),VCt=UCt.clearMinTextSize,HCt=N0().resizeText,ZCe=WCe();XCe.exports=function(t,r,n,i,a){var o=a.type,s=a.drawDescendants,l=t._fullLayout,u=l["_"+o+"layer"],c,f,h=!n;if(VCt(o,l),c=u.selectAll("g.trace."+o).data(r,function(v){return v[0].trace.uid}),c.enter().append("g").classed("trace",!0).classed(o,!0),c.order(),!l.uniformtext.mode&&NCt.hasTransition(n)){i&&(f=i());var d=BCt.transition().duration(n.duration).ease(n.easing).each("end",function(){f&&f()}).each("interrupt",function(){f&&f()});d.each(function(){u.selectAll("g.trace").each(function(v){ZCe(t,v,this,n,s)})})}else c.each(function(v){ZCe(t,v,this,n,s)}),l.uniformtext.mode&&HCt(t,u.selectAll(".trace"),o);h&&c.exit().remove()}});var QCe=ye((bdr,$Ce)=>{"use strict";var YCe=xa(),BD=Mr(),KCe=ao(),GCt=Ll(),jCt=zW(),JCe=qD().styleOne,VW=z2(),Y_=Ky(),WCt=OE(),ZCt=zD().formatSliceLabel,HW=!1;$Ce.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,x=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,g=a.prevEntry,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=_.textposition.indexOf("left")!==-1,M=_.textposition.indexOf("right")!==-1,p=_.textposition.indexOf("bottom")!==-1,P=!p&&!_.marker.pad.t||p&&!_.marker.pad.b,T=jCt(n,[o,s],{packing:_.tiling.packing,squarifyratio:_.tiling.squarifyratio,flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1,pad:{inner:_.tiling.pad,top:_.marker.pad.t,left:_.marker.pad.l,right:_.marker.pad.r,bottom:_.marker.pad.b}}),F=T.descendants(),q=1/0,V=-1/0;F.forEach(function(W){var re=W.depth;re>=_._maxDepth?(W.x0=W.x1=(W.x0+W.x1)/2,W.y0=W.y1=(W.y0+W.y1)/2):(q=Math.min(q,re),V=Math.max(V,re))}),i=i.data(F,Y_.getPtId),_._maxVisibleLayers=isFinite(V)?V-q+1:0,i.enter().append("g").classed("slice",!0),v(i,HW,E,[o,s],c),i.order();var H=null;if(d&&g){var X=Y_.getPtId(g);i.each(function(W){H===null&&Y_.getPtId(W)===X&&(H={x0:W.x0,x1:W.x1,y0:W.y0,y1:W.y1})})}var G=function(){return H||{x0:0,x1:o,y0:0,y1:s}},N=i;return d&&(N=N.transition().each("end",function(){var W=YCe.select(this);Y_.setSliceCursor(W,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),N.each(function(W){var re=Y_.isHeader(W,_);W._x0=l(W.x0),W._x1=l(W.x1),W._y0=u(W.y0),W._y1=u(W.y1),W._hoverX=l(W.x1-_.marker.pad.r),W._hoverY=u(p?W.y1-_.marker.pad.b/2:W.y0+_.marker.pad.t/2);var ae=YCe.select(this),_e=BD.ensureSingle(ae,"path","surface",function(Ee){Ee.style("pointer-events",k?"none":"all")});d?_e.transition().attrTween("d",function(Ee){var Ae=x(Ee,HW,G(),[o,s]);return function(ze){return c(Ae(ze))}}):_e.attr("d",c),ae.call(WCt,n,t,r,{styleOne:JCe,eventDataKeys:VW.eventDataKeys,transitionTime:VW.CLICK_TRANSITION_TIME,transitionEasing:VW.CLICK_TRANSITION_EASING}).call(Y_.setSliceCursor,t,{isTransitioning:t._transitioning}),_e.call(JCe,W,_,t,{hovered:!1}),W.x0===W.x1||W.y0===W.y1?W._text="":re?W._text=P?"":Y_.getPtLabel(W)||"":W._text=ZCt(W,n,_,r,A)||"";var Me=BD.ensureSingle(ae,"g","slicetext"),ke=BD.ensureSingle(Me,"text","",function(Ee){Ee.attr("data-notex",1)}),ge=BD.ensureUniformFontSize(t,Y_.determineTextFont(_,W,A.font)),ie=W._text||" ",Te=re&&ie.indexOf("
")===-1;ke.text(ie).classed("slicetext",!0).attr("text-anchor",M?"end":C||Te?"start":"middle").call(KCe.font,ge).call(GCt.convertToTspans,t),W.textBB=KCe.bBox(ke.node()),W.transform=f(W,{fontSize:ge.size,isHeader:re}),W.transform.fontSize=ge.size,d?ke.transition().attrTween("transform",function(Ee){var Ae=b(Ee,HW,G(),[o,s]);return function(ze){return h(Ae(ze))}}):ke.attr("transform",h(W))}),H}});var t6e=ye((wdr,e6e)=>{"use strict";var XCt=UW(),YCt=QCe();e6e.exports=function(t,r,n,i){return XCt(t,r,n,i,{type:"treemap",drawDescendants:YCt})}});var i6e=ye((Tdr,r6e)=>{"use strict";r6e.exports={moduleType:"trace",name:"treemap",basePlotModule:xCe(),categories:[],animatable:!0,attributes:FD(),layoutAttributes:PW(),supplyDefaults:kCe(),supplyLayoutDefaults:LCe(),calc:RW().calc,crossTraceCalc:RW().crossTraceCalc,plot:t6e(),style:qD().style,colorbar:Kd(),meta:{}}});var a6e=ye((Adr,n6e)=>{"use strict";n6e.exports=i6e()});var s6e=ye(D5=>{"use strict";var o6e=Xu();D5.name="icicle";D5.plot=function(e,t,r,n){o6e.plotBasePlot(D5.name,e,t,r,n)};D5.clean=function(e,t,r,n){o6e.cleanBasePlot(D5.name,e,t,r,n)}});var GW=ye((Mdr,u6e)=>{"use strict";var KCt=Wo().hovertemplateAttrs,JCt=Wo().texttemplateAttrs,$Ct=Kl(),QCt=Ju().attributes,UE=A2(),o0=AE(),ND=FD(),l6e=z2(),e6t=no().extendFlat,t6t=Ed().pattern;u6e.exports={labels:o0.labels,parents:o0.parents,values:o0.values,branchvalues:o0.branchvalues,count:o0.count,level:o0.level,maxdepth:o0.maxdepth,tiling:{orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"plot"},flip:ND.tiling.flip,pad:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},marker:e6t({colors:o0.marker.colors,line:o0.marker.line,pattern:t6t,editType:"calc"},$Ct("marker",{colorAttr:"colors",anim:!1})),leaf:o0.leaf,pathbar:ND.pathbar,text:UE.text,textinfo:o0.textinfo,texttemplate:JCt({editType:"plot"},{keys:l6e.eventDataKeys.concat(["label","value"])}),hovertext:UE.hovertext,hoverinfo:o0.hoverinfo,hovertemplate:KCt({},{keys:l6e.eventDataKeys}),textfont:UE.textfont,insidetextfont:UE.insidetextfont,outsidetextfont:ND.outsidetextfont,textposition:ND.textposition,sort:UE.sort,root:o0.root,domain:QCt({name:"icicle",trace:!0,editType:"calc"})}});var jW=ye((Edr,c6e)=>{"use strict";c6e.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var v6e=ye((kdr,d6e)=>{"use strict";var f6e=Mr(),r6t=GW(),i6t=va(),n6t=Ju().defaults,a6t=r0().handleText,o6t=Qb().TEXTPAD,s6t=S2().handleMarkerDefaults,h6e=Mu(),l6t=h6e.hasColorscale,u6t=h6e.handleDefaults;d6e.exports=function(t,r,n,i){function a(d,v){return f6e.coerce(t,r,r6t,d,v)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),a("tiling.orientation"),a("tiling.flip"),a("tiling.pad");var u=a("text");a("texttemplate"),r.texttemplate||a("textinfo",f6e.isArrayOrTypedArray(u)?"text+label":"label"),a("hovertext"),a("hovertemplate");var c=a("pathbar.visible"),f="auto";a6t(t,r,i,a,f,{hasPathbar:c,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition"),s6t(t,r,i,a);var h=r._hasColorscale=l6t(t,"marker","colors")||(t.marker||{}).coloraxis;h&&u6t(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",h?1:.7),r._hovered={marker:{line:{width:2,color:i6t.contrast(i.paper_bgcolor)}}},c&&(a("pathbar.thickness",r.pathbar.textfont.size+2*o6t),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),n6t(r,i,a),r._length=null}});var g6e=ye((Cdr,p6e)=>{"use strict";var c6t=Mr(),f6t=jW();p6e.exports=function(t,r){function n(i,a){return c6t.coerce(t,r,f6t,i,a)}n("iciclecolorway",r.colorway),n("extendiciclecolors")}});var ZW=ye(WW=>{"use strict";var m6e=EE();WW.calc=function(e,t){return m6e.calc(e,t)};WW.crossTraceCalc=function(e){return m6e._runCrossTraceCalc("icicle",e)}});var _6e=ye((Pdr,y6e)=>{"use strict";var h6t=SE(),d6t=DW();y6e.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.orientation==="h",s=n.maxDepth,l=r[0],u=r[1];s&&(l=(t.height+1)*r[0]/Math.min(t.height+1,s),u=(t.height+1)*r[1]/Math.min(t.height+1,s));var c=h6t.partition().padding(n.pad.inner).size(o?[r[1],l]:[r[0],u])(t);return(o||i||a)&&d6t(c,r,{swapXY:o,flipX:i,flipY:a}),c}});var XW=ye((Idr,A6e)=>{"use strict";var x6e=xa(),b6e=va(),w6e=Mr(),v6t=_v().resizeText,p6t=RD();function g6t(e){var t=e._fullLayout._iciclelayer.selectAll(".trace");v6t(e,t,"icicle"),t.each(function(r){var n=x6e.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){x6e.select(this).call(T6e,o,a,e)})})}function T6e(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=w6e.castOption(r,o,"marker.line.color")||b6e.defaultLine,l=w6e.castOption(r,o,"marker.line.width")||0;e.call(p6t,t,r,n).style("stroke-width",l).call(b6e.stroke,s).style("opacity",a?r.leaf.opacity:null)}A6e.exports={style:g6t,styleOne:T6e}});var C6e=ye((Rdr,k6e)=>{"use strict";var S6e=xa(),UD=Mr(),M6e=ao(),m6t=Ll(),y6t=_6e(),E6e=XW().styleOne,YW=z2(),z5=Ky(),_6t=OE(),x6t=zD().formatSliceLabel,KW=!1;k6e.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,x=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,g=a.prevEntry,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=_.textposition.indexOf("left")!==-1,M=_.textposition.indexOf("right")!==-1,p=_.textposition.indexOf("bottom")!==-1,P=y6t(n,[o,s],{flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1,orientation:_.tiling.orientation,pad:{inner:_.tiling.pad},maxDepth:_._maxDepth}),T=P.descendants(),F=1/0,q=-1/0;T.forEach(function(N){var W=N.depth;W>=_._maxDepth?(N.x0=N.x1=(N.x0+N.x1)/2,N.y0=N.y1=(N.y0+N.y1)/2):(F=Math.min(F,W),q=Math.max(q,W))}),i=i.data(T,z5.getPtId),_._maxVisibleLayers=isFinite(q)?q-F+1:0,i.enter().append("g").classed("slice",!0),v(i,KW,E,[o,s],c),i.order();var V=null;if(d&&g){var H=z5.getPtId(g);i.each(function(N){V===null&&z5.getPtId(N)===H&&(V={x0:N.x0,x1:N.x1,y0:N.y0,y1:N.y1})})}var X=function(){return V||{x0:0,x1:o,y0:0,y1:s}},G=i;return d&&(G=G.transition().each("end",function(){var N=S6e.select(this);z5.setSliceCursor(N,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),G.each(function(N){N._x0=l(N.x0),N._x1=l(N.x1),N._y0=u(N.y0),N._y1=u(N.y1),N._hoverX=l(N.x1-_.tiling.pad),N._hoverY=u(p?N.y1-_.tiling.pad/2:N.y0+_.tiling.pad/2);var W=S6e.select(this),re=UD.ensureSingle(W,"path","surface",function(ke){ke.style("pointer-events",k?"none":"all")});d?re.transition().attrTween("d",function(ke){var ge=x(ke,KW,X(),[o,s],{orientation:_.tiling.orientation,flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1});return function(ie){return c(ge(ie))}}):re.attr("d",c),W.call(_6t,n,t,r,{styleOne:E6e,eventDataKeys:YW.eventDataKeys,transitionTime:YW.CLICK_TRANSITION_TIME,transitionEasing:YW.CLICK_TRANSITION_EASING}).call(z5.setSliceCursor,t,{isTransitioning:t._transitioning}),re.call(E6e,N,_,t,{hovered:!1}),N.x0===N.x1||N.y0===N.y1?N._text="":N._text=x6t(N,n,_,r,A)||"";var ae=UD.ensureSingle(W,"g","slicetext"),_e=UD.ensureSingle(ae,"text","",function(ke){ke.attr("data-notex",1)}),Me=UD.ensureUniformFontSize(t,z5.determineTextFont(_,N,A.font));_e.text(N._text||" ").classed("slicetext",!0).attr("text-anchor",M?"end":C?"start":"middle").call(M6e.font,Me).call(m6t.convertToTspans,t),N.textBB=M6e.bBox(_e.node()),N.transform=f(N,{fontSize:Me.size}),N.transform.fontSize=Me.size,d?_e.transition().attrTween("transform",function(ke){var ge=b(ke,KW,X(),[o,s]);return function(ie){return h(ge(ie))}}):_e.attr("transform",h(N))}),V}});var P6e=ye((Ddr,L6e)=>{"use strict";var b6t=UW(),w6t=C6e();L6e.exports=function(t,r,n,i){return b6t(t,r,n,i,{type:"icicle",drawDescendants:w6t})}});var R6e=ye((zdr,I6e)=>{"use strict";I6e.exports={moduleType:"trace",name:"icicle",basePlotModule:s6e(),categories:[],animatable:!0,attributes:GW(),layoutAttributes:jW(),supplyDefaults:v6e(),supplyLayoutDefaults:g6e(),calc:ZW().calc,crossTraceCalc:ZW().crossTraceCalc,plot:P6e(),style:XW().style,colorbar:Kd(),meta:{}}});var z6e=ye((Fdr,D6e)=>{"use strict";D6e.exports=R6e()});var q6e=ye(F5=>{"use strict";var F6e=Xu();F5.name="funnelarea";F5.plot=function(e,t,r,n){F6e.plotBasePlot(F5.name,e,t,r,n)};F5.clean=function(e,t,r,n){F6e.cleanBasePlot(F5.name,e,t,r,n)}});var JW=ye((Odr,O6e)=>{"use strict";var tv=A2(),T6t=vl(),A6t=Ju().attributes,S6t=Wo().hovertemplateAttrs,M6t=Wo().texttemplateAttrs,O2=no().extendFlat;O6e.exports={labels:tv.labels,label0:tv.label0,dlabel:tv.dlabel,values:tv.values,marker:{colors:tv.marker.colors,line:{color:O2({},tv.marker.line.color,{dflt:null}),width:O2({},tv.marker.line.width,{dflt:1}),editType:"calc"},pattern:tv.marker.pattern,editType:"calc"},text:tv.text,hovertext:tv.hovertext,scalegroup:O2({},tv.scalegroup,{}),textinfo:O2({},tv.textinfo,{flags:["label","text","value","percent"]}),texttemplate:M6t({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:O2({},T6t.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:S6t({},{keys:["label","color","value","text","percent"]}),textposition:O2({},tv.textposition,{values:["inside","none"],dflt:"inside"}),textfont:tv.textfont,insidetextfont:tv.insidetextfont,title:{text:tv.title.text,font:tv.title.font,position:O2({},tv.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:A6t({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}});var $W=ye((Bdr,B6e)=>{"use strict";var E6t=lD().hiddenlabels;B6e.exports={hiddenlabels:E6t,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var V6e=ye((Ndr,U6e)=>{"use strict";var N6e=Mr(),k6t=JW(),C6t=Ju().defaults,L6t=r0().handleText,P6t=S2().handleLabelsAndValues,I6t=S2().handleMarkerDefaults;U6e.exports=function(t,r,n,i){function a(x,b){return N6e.coerce(t,r,k6t,x,b)}var o=a("labels"),s=a("values"),l=P6t(o,s),u=l.len;if(r._hasLabels=l.hasLabels,r._hasValues=l.hasValues,!r._hasLabels&&r._hasValues&&(a("label0"),a("dlabel")),!u){r.visible=!1;return}r._length=u,I6t(t,r,i,a),a("scalegroup");var c=a("text"),f=a("texttemplate"),h;if(f||(h=a("textinfo",Array.isArray(c)?"text+percent":"percent")),a("hovertext"),a("hovertemplate"),f||h&&h!=="none"){var d=a("textposition");L6t(t,r,i,a,d,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}else h==="none"&&a("textposition","none");C6t(r,i,a);var v=a("title.text");v&&(a("title.position"),N6e.coerceFont(a,"title.font",i.font)),a("aspectratio"),a("baseratio")}});var G6e=ye((Udr,H6e)=>{"use strict";var R6t=Mr(),D6t=$W();H6e.exports=function(t,r){function n(i,a){return R6t.coerce(t,r,D6t,i,a)}n("hiddenlabels"),n("funnelareacolorway",r.colorway),n("extendfunnelareacolors")}});var QW=ye((Vdr,W6e)=>{"use strict";var j6e=y5();function z6t(e,t){return j6e.calc(e,t)}function F6t(e){j6e.crossTraceCalc(e,{type:"funnelarea"})}W6e.exports={calc:z6t,crossTraceCalc:F6t}});var J6e=ye((Hdr,K6e)=>{"use strict";var B2=xa(),eZ=ao(),K_=Mr(),q6t=K_.strScale,Z6e=K_.strTranslate,X6e=Ll(),O6t=i2(),B6t=O6t.toMoveInsideBar,Y6e=_v(),N6t=Y6e.recordMinTextSize,U6t=Y6e.clearMinTextSize,V6t=l_(),q5=hD(),H6t=q5.attachFxHandlers,G6t=q5.determineInsideTextFont,j6t=q5.layoutAreas,W6t=q5.prerenderTitles,Z6t=q5.positionTitleOutside,X6t=q5.formatSliceLabel;K6e.exports=function(t,r){var n=t._context.staticPlot,i=t._fullLayout;U6t("funnelarea",i),W6t(r,t),j6t(r,i._size),K_.makeTraceGroups(i._funnelarealayer,r,"trace").each(function(a){var o=B2.select(this),s=a[0],l=s.trace;K6t(a),o.each(function(){var u=B2.select(this).selectAll("g.slice").data(a);u.enter().append("g").classed("slice",!0),u.exit().remove(),u.each(function(f,h){if(f.hidden){B2.select(this).selectAll("path,g").remove();return}f.pointNumber=f.i,f.curveNumber=l.index;var d=s.cx,v=s.cy,x=B2.select(this),b=x.selectAll("path.surface").data([f]);b.enter().append("path").classed("surface",!0).style({"pointer-events":n?"none":"all"}),x.call(H6t,t,a);var g="M"+(d+f.TR[0])+","+(v+f.TR[1])+tZ(f.TR,f.BR)+tZ(f.BR,f.BL)+tZ(f.BL,f.TL)+"Z";b.attr("d",g),X6t(t,f,s);var E=V6t.castOption(l.textposition,f.pts),k=x.selectAll("g.slicetext").data(f.text&&E!=="none"?[0]:[]);k.enter().append("g").classed("slicetext",!0),k.exit().remove(),k.each(function(){var A=K_.ensureSingle(B2.select(this),"text","",function(F){F.attr("data-notex",1)}),L=K_.ensureUniformFontSize(t,G6t(l,f,i.font));A.text(f.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(eZ.font,L).call(X6e.convertToTspans,t);var _=eZ.bBox(A.node()),C,M,p,P=Math.min(f.BL[1],f.BR[1])+v,T=Math.max(f.TL[1],f.TR[1])+v;M=Math.max(f.TL[0],f.BL[0])+d,p=Math.min(f.TR[0],f.BR[0])+d,C=B6t(M,p,P,T,_,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"}),C.fontSize=L.size,N6t(l.type,C,i),a[h].transform=C,K_.setTransormAndDisplay(A,C)})});var c=B2.select(this).selectAll("g.titletext").data(l.title.text?[0]:[]);c.enter().append("g").classed("titletext",!0),c.exit().remove(),c.each(function(){var f=K_.ensureSingle(B2.select(this),"text","",function(v){v.attr("data-notex",1)}),h=l.title.text;l._meta&&(h=K_.templateString(h,l._meta)),f.text(h).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(eZ.font,l.title.font).call(X6e.convertToTspans,t);var d=Z6t(s,i._size);f.attr("transform",Z6e(d.x,d.y)+q6t(Math.min(1,d.scale))+Z6e(d.tx,d.ty))})})})};function tZ(e,t){var r=t[0]-e[0],n=t[1]-e[1];return"l"+r+","+n}function Y6t(e,t){return[.5*(e[0]+t[0]),.5*(e[1]+t[1])]}function K6t(e){if(!e.length)return;var t=e[0],r=t.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a=Math.pow(i,2),o=t.vTotal,s=o*a/(1-a),l=o,u=s/o;function c(){var q=Math.sqrt(u);return{x:q,y:-q}}function f(){var q=c();return[q.x,q.y]}var h,d=[];d.push(f());var v,x;for(v=e.length-1;v>-1;v--)if(x=e[v],!x.hidden){var b=x.v/l;u+=b,d.push(f())}var g=1/0,E=-1/0;for(v=0;v-1;v--)if(x=e[v],!x.hidden){P+=1;var T=d[P][0],F=d[P][1];x.TL=[-T,F],x.TR=[T,F],x.BL=M,x.BR=p,x.pxmid=Y6t(x.TR,x.BR),M=x.TL,p=x.TR}}});var eLe=ye((Gdr,Q6e)=>{"use strict";var $6e=xa(),J6t=z3(),$6t=_v().resizeText;Q6e.exports=function(t){var r=t._fullLayout._funnelarealayer.selectAll(".trace");$6t(t,r,"funnelarea"),r.each(function(n){var i=n[0],a=i.trace,o=$6e.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){$6e.select(this).call(J6t,s,a,t)})})}});var rLe=ye((jdr,tLe)=>{"use strict";tLe.exports={moduleType:"trace",name:"funnelarea",basePlotModule:q6e(),categories:["pie-like","funnelarea","showLegend"],attributes:JW(),layoutAttributes:$W(),supplyDefaults:V6e(),supplyLayoutDefaults:G6e(),calc:QW().calc,crossTraceCalc:QW().crossTraceCalc,plot:J6e(),style:eLe(),styleOne:z3(),meta:{}}});var nLe=ye((Wdr,iLe)=>{"use strict";iLe.exports=rLe()});var Rd=ye((Zdr,aLe)=>{(function(){var e={1964:function(i,a,o){i.exports={alpha_shape:o(3502),convex_hull:o(7352),delaunay_triangulate:o(7642),gl_cone3d:o(6405),gl_error3d:o(9165),gl_line3d:o(5714),gl_mesh3d:o(7201),gl_plot3d:o(4100),gl_scatter3d:o(8418),gl_streamtube3d:o(7815),gl_surface3d:o(9499),ndarray:o(9618),ndarray_linear_interpolate:o(4317)}},4793:function(i,a,o){"use strict";var s;function l(Le,xe){if(!(Le instanceof xe))throw new TypeError("Cannot call a class as a function")}function u(Le,xe){for(var Se=0;SeM)throw new RangeError('The value "'+Le+'" is invalid for option "size"');var xe=new Uint8Array(Le);return Object.setPrototypeOf(xe,T.prototype),xe}function T(Le,xe,Se){if(typeof Le=="number"){if(typeof xe=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return H(Le)}return F(Le,xe,Se)}T.poolSize=8192;function F(Le,xe,Se){if(typeof Le=="string")return X(Le,xe);if(ArrayBuffer.isView(Le))return N(Le);if(Le==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+A(Le));if(Ne(Le,ArrayBuffer)||Le&&Ne(Le.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(Ne(Le,SharedArrayBuffer)||Le&&Ne(Le.buffer,SharedArrayBuffer)))return W(Le,xe,Se);if(typeof Le=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var lt=Le.valueOf&&Le.valueOf();if(lt!=null&<!==Le)return T.from(lt,xe,Se);var Gt=re(Le);if(Gt)return Gt;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof Le[Symbol.toPrimitive]=="function")return T.from(Le[Symbol.toPrimitive]("string"),xe,Se);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+A(Le))}T.from=function(Le,xe,Se){return F(Le,xe,Se)},Object.setPrototypeOf(T.prototype,Uint8Array.prototype),Object.setPrototypeOf(T,Uint8Array);function q(Le){if(typeof Le!="number")throw new TypeError('"size" argument must be of type number');if(Le<0)throw new RangeError('The value "'+Le+'" is invalid for option "size"')}function V(Le,xe,Se){return q(Le),Le<=0?P(Le):xe!==void 0?typeof Se=="string"?P(Le).fill(xe,Se):P(Le).fill(xe):P(Le)}T.alloc=function(Le,xe,Se){return V(Le,xe,Se)};function H(Le){return q(Le),P(Le<0?0:ae(Le)|0)}T.allocUnsafe=function(Le){return H(Le)},T.allocUnsafeSlow=function(Le){return H(Le)};function X(Le,xe){if((typeof xe!="string"||xe==="")&&(xe="utf8"),!T.isEncoding(xe))throw new TypeError("Unknown encoding: "+xe);var Se=Me(Le,xe)|0,lt=P(Se),Gt=lt.write(Le,xe);return Gt!==Se&&(lt=lt.slice(0,Gt)),lt}function G(Le){for(var xe=Le.length<0?0:ae(Le.length)|0,Se=P(xe),lt=0;lt=M)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+M.toString(16)+" bytes");return Le|0}function _e(Le){return+Le!=Le&&(Le=0),T.alloc(+Le)}T.isBuffer=function(xe){return xe!=null&&xe._isBuffer===!0&&xe!==T.prototype},T.compare=function(xe,Se){if(Ne(xe,Uint8Array)&&(xe=T.from(xe,xe.offset,xe.byteLength)),Ne(Se,Uint8Array)&&(Se=T.from(Se,Se.offset,Se.byteLength)),!T.isBuffer(xe)||!T.isBuffer(Se))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(xe===Se)return 0;for(var lt=xe.length,Gt=Se.length,Vt=0,ar=Math.min(lt,Gt);VtGt.length?(T.isBuffer(ar)||(ar=T.from(ar)),ar.copy(Gt,Vt)):Uint8Array.prototype.set.call(Gt,ar,Vt);else if(T.isBuffer(ar))ar.copy(Gt,Vt);else throw new TypeError('"list" argument must be an Array of Buffers');Vt+=ar.length}return Gt};function Me(Le,xe){if(T.isBuffer(Le))return Le.length;if(ArrayBuffer.isView(Le)||Ne(Le,ArrayBuffer))return Le.byteLength;if(typeof Le!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+A(Le));var Se=Le.length,lt=arguments.length>2&&arguments[2]===!0;if(!lt&&Se===0)return 0;for(var Gt=!1;;)switch(xe){case"ascii":case"latin1":case"binary":return Se;case"utf8":case"utf-8":return _r(Le).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Se*2;case"hex":return Se>>>1;case"base64":return Nr(Le).length;default:if(Gt)return lt?-1:_r(Le).length;xe=(""+xe).toLowerCase(),Gt=!0}}T.byteLength=Me;function ke(Le,xe,Se){var lt=!1;if((xe===void 0||xe<0)&&(xe=0),xe>this.length||((Se===void 0||Se>this.length)&&(Se=this.length),Se<=0)||(Se>>>=0,xe>>>=0,Se<=xe))return"";for(Le||(Le="utf8");;)switch(Le){case"hex":return rt(this,xe,Se);case"utf8":case"utf-8":return ce(this,xe,Se);case"ascii":return ct(this,xe,Se);case"latin1":case"binary":return qt(this,xe,Se);case"base64":return Re(this,xe,Se);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ot(this,xe,Se);default:if(lt)throw new TypeError("Unknown encoding: "+Le);Le=(Le+"").toLowerCase(),lt=!0}}T.prototype._isBuffer=!0;function ge(Le,xe,Se){var lt=Le[xe];Le[xe]=Le[Se],Le[Se]=lt}T.prototype.swap16=function(){var xe=this.length;if(xe%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Se=0;SeSe&&(xe+=" ... "),""},C&&(T.prototype[C]=T.prototype.inspect),T.prototype.compare=function(xe,Se,lt,Gt,Vt){if(Ne(xe,Uint8Array)&&(xe=T.from(xe,xe.offset,xe.byteLength)),!T.isBuffer(xe))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+A(xe));if(Se===void 0&&(Se=0),lt===void 0&&(lt=xe?xe.length:0),Gt===void 0&&(Gt=0),Vt===void 0&&(Vt=this.length),Se<0||lt>xe.length||Gt<0||Vt>this.length)throw new RangeError("out of range index");if(Gt>=Vt&&Se>=lt)return 0;if(Gt>=Vt)return-1;if(Se>=lt)return 1;if(Se>>>=0,lt>>>=0,Gt>>>=0,Vt>>>=0,this===xe)return 0;for(var ar=Vt-Gt,Qr=lt-Se,ai=Math.min(ar,Qr),jr=this.slice(Gt,Vt),ri=xe.slice(Se,lt),bi=0;bi2147483647?Se=2147483647:Se<-2147483648&&(Se=-2147483648),Se=+Se,Ye(Se)&&(Se=Gt?0:Le.length-1),Se<0&&(Se=Le.length+Se),Se>=Le.length){if(Gt)return-1;Se=Le.length-1}else if(Se<0)if(Gt)Se=0;else return-1;if(typeof xe=="string"&&(xe=T.from(xe,lt)),T.isBuffer(xe))return xe.length===0?-1:Te(Le,xe,Se,lt,Gt);if(typeof xe=="number")return xe=xe&255,typeof Uint8Array.prototype.indexOf=="function"?Gt?Uint8Array.prototype.indexOf.call(Le,xe,Se):Uint8Array.prototype.lastIndexOf.call(Le,xe,Se):Te(Le,[xe],Se,lt,Gt);throw new TypeError("val must be string, number or Buffer")}function Te(Le,xe,Se,lt,Gt){var Vt=1,ar=Le.length,Qr=xe.length;if(lt!==void 0&&(lt=String(lt).toLowerCase(),lt==="ucs2"||lt==="ucs-2"||lt==="utf16le"||lt==="utf-16le")){if(Le.length<2||xe.length<2)return-1;Vt=2,ar/=2,Qr/=2,Se/=2}function ai(Wi,Ni){return Vt===1?Wi[Ni]:Wi.readUInt16BE(Ni*Vt)}var jr;if(Gt){var ri=-1;for(jr=Se;jrar&&(Se=ar-Qr),jr=Se;jr>=0;jr--){for(var bi=!0,nn=0;nnGt&&(lt=Gt)):lt=Gt;var Vt=xe.length;lt>Vt/2&&(lt=Vt/2);var ar;for(ar=0;ar>>0,isFinite(lt)?(lt=lt>>>0,Gt===void 0&&(Gt="utf8")):(Gt=lt,lt=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Vt=this.length-Se;if((lt===void 0||lt>Vt)&&(lt=Vt),xe.length>0&&(lt<0||Se<0)||Se>this.length)throw new RangeError("Attempt to write outside buffer bounds");Gt||(Gt="utf8");for(var ar=!1;;)switch(Gt){case"hex":return Ee(this,xe,Se,lt);case"utf8":case"utf-8":return Ae(this,xe,Se,lt);case"ascii":case"latin1":case"binary":return ze(this,xe,Se,lt);case"base64":return Ce(this,xe,Se,lt);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return me(this,xe,Se,lt);default:if(ar)throw new TypeError("Unknown encoding: "+Gt);Gt=(""+Gt).toLowerCase(),ar=!0}},T.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Re(Le,xe,Se){return xe===0&&Se===Le.length?L.fromByteArray(Le):L.fromByteArray(Le.slice(xe,Se))}function ce(Le,xe,Se){Se=Math.min(Le.length,Se);for(var lt=[],Gt=xe;Gt239?4:Vt>223?3:Vt>191?2:1;if(Gt+Qr<=Se){var ai=void 0,jr=void 0,ri=void 0,bi=void 0;switch(Qr){case 1:Vt<128&&(ar=Vt);break;case 2:ai=Le[Gt+1],(ai&192)===128&&(bi=(Vt&31)<<6|ai&63,bi>127&&(ar=bi));break;case 3:ai=Le[Gt+1],jr=Le[Gt+2],(ai&192)===128&&(jr&192)===128&&(bi=(Vt&15)<<12|(ai&63)<<6|jr&63,bi>2047&&(bi<55296||bi>57343)&&(ar=bi));break;case 4:ai=Le[Gt+1],jr=Le[Gt+2],ri=Le[Gt+3],(ai&192)===128&&(jr&192)===128&&(ri&192)===128&&(bi=(Vt&15)<<18|(ai&63)<<12|(jr&63)<<6|ri&63,bi>65535&&bi<1114112&&(ar=bi))}}ar===null?(ar=65533,Qr=1):ar>65535&&(ar-=65536,lt.push(ar>>>10&1023|55296),ar=56320|ar&1023),lt.push(ar),Gt+=Qr}return nt(lt)}var Ge=4096;function nt(Le){var xe=Le.length;if(xe<=Ge)return String.fromCharCode.apply(String,Le);for(var Se="",lt=0;ltlt)&&(Se=lt);for(var Gt="",Vt=xe;Vtlt&&(xe=lt),Se<0?(Se+=lt,Se<0&&(Se=0)):Se>lt&&(Se=lt),SeSe)throw new RangeError("Trying to access beyond buffer length")}T.prototype.readUintLE=T.prototype.readUIntLE=function(xe,Se,lt){xe=xe>>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe],Vt=1,ar=0;++ar>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe+--Se],Vt=1;Se>0&&(Vt*=256);)Gt+=this[xe+--Se]*Vt;return Gt},T.prototype.readUint8=T.prototype.readUInt8=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,1,this.length),this[xe]},T.prototype.readUint16LE=T.prototype.readUInt16LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,2,this.length),this[xe]|this[xe+1]<<8},T.prototype.readUint16BE=T.prototype.readUInt16BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,2,this.length),this[xe]<<8|this[xe+1]},T.prototype.readUint32LE=T.prototype.readUInt32LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),(this[xe]|this[xe+1]<<8|this[xe+2]<<16)+this[xe+3]*16777216},T.prototype.readUint32BE=T.prototype.readUInt32BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]*16777216+(this[xe+1]<<16|this[xe+2]<<8|this[xe+3])},T.prototype.readBigUInt64LE=Xe(function(xe){xe=xe>>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=Se+this[++xe]*Math.pow(2,8)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,24),Vt=this[++xe]+this[++xe]*Math.pow(2,8)+this[++xe]*Math.pow(2,16)+lt*Math.pow(2,24);return BigInt(Gt)+(BigInt(Vt)<>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=Se*Math.pow(2,24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+this[++xe],Vt=this[++xe]*Math.pow(2,24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+lt;return(BigInt(Gt)<>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe],Vt=1,ar=0;++ar=Vt&&(Gt-=Math.pow(2,8*Se)),Gt},T.prototype.readIntBE=function(xe,Se,lt){xe=xe>>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=Se,Vt=1,ar=this[xe+--Gt];Gt>0&&(Vt*=256);)ar+=this[xe+--Gt]*Vt;return Vt*=128,ar>=Vt&&(ar-=Math.pow(2,8*Se)),ar},T.prototype.readInt8=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,1,this.length),this[xe]&128?(255-this[xe]+1)*-1:this[xe]},T.prototype.readInt16LE=function(xe,Se){xe=xe>>>0,Se||Rt(xe,2,this.length);var lt=this[xe]|this[xe+1]<<8;return lt&32768?lt|4294901760:lt},T.prototype.readInt16BE=function(xe,Se){xe=xe>>>0,Se||Rt(xe,2,this.length);var lt=this[xe+1]|this[xe]<<8;return lt&32768?lt|4294901760:lt},T.prototype.readInt32LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]|this[xe+1]<<8|this[xe+2]<<16|this[xe+3]<<24},T.prototype.readInt32BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]<<24|this[xe+1]<<16|this[xe+2]<<8|this[xe+3]},T.prototype.readBigInt64LE=Xe(function(xe){xe=xe>>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=this[xe+4]+this[xe+5]*Math.pow(2,8)+this[xe+6]*Math.pow(2,16)+(lt<<24);return(BigInt(Gt)<>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=(Se<<24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+this[++xe];return(BigInt(Gt)<>>0,Se||Rt(xe,4,this.length),_.read(this,xe,!0,23,4)},T.prototype.readFloatBE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),_.read(this,xe,!1,23,4)},T.prototype.readDoubleLE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,8,this.length),_.read(this,xe,!0,52,8)},T.prototype.readDoubleBE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,8,this.length),_.read(this,xe,!1,52,8)};function kt(Le,xe,Se,lt,Gt,Vt){if(!T.isBuffer(Le))throw new TypeError('"buffer" argument must be a Buffer instance');if(xe>Gt||xeLe.length)throw new RangeError("Index out of range")}T.prototype.writeUintLE=T.prototype.writeUIntLE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,lt=lt>>>0,!Gt){var Vt=Math.pow(2,8*lt)-1;kt(this,xe,Se,lt,Vt,0)}var ar=1,Qr=0;for(this[Se]=xe&255;++Qr>>0,lt=lt>>>0,!Gt){var Vt=Math.pow(2,8*lt)-1;kt(this,xe,Se,lt,Vt,0)}var ar=lt-1,Qr=1;for(this[Se+ar]=xe&255;--ar>=0&&(Qr*=256);)this[Se+ar]=xe/Qr&255;return Se+lt},T.prototype.writeUint8=T.prototype.writeUInt8=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,1,255,0),this[Se]=xe&255,Se+1},T.prototype.writeUint16LE=T.prototype.writeUInt16LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,65535,0),this[Se]=xe&255,this[Se+1]=xe>>>8,Se+2},T.prototype.writeUint16BE=T.prototype.writeUInt16BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,65535,0),this[Se]=xe>>>8,this[Se+1]=xe&255,Se+2},T.prototype.writeUint32LE=T.prototype.writeUInt32LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,4294967295,0),this[Se+3]=xe>>>24,this[Se+2]=xe>>>16,this[Se+1]=xe>>>8,this[Se]=xe&255,Se+4},T.prototype.writeUint32BE=T.prototype.writeUInt32BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,4294967295,0),this[Se]=xe>>>24,this[Se+1]=xe>>>16,this[Se+2]=xe>>>8,this[Se+3]=xe&255,Se+4};function Ct(Le,xe,Se,lt,Gt){Et(xe,lt,Gt,Le,Se,7);var Vt=Number(xe&BigInt(4294967295));Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt;var ar=Number(xe>>BigInt(32)&BigInt(4294967295));return Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,Se}function Yt(Le,xe,Se,lt,Gt){Et(xe,lt,Gt,Le,Se,7);var Vt=Number(xe&BigInt(4294967295));Le[Se+7]=Vt,Vt=Vt>>8,Le[Se+6]=Vt,Vt=Vt>>8,Le[Se+5]=Vt,Vt=Vt>>8,Le[Se+4]=Vt;var ar=Number(xe>>BigInt(32)&BigInt(4294967295));return Le[Se+3]=ar,ar=ar>>8,Le[Se+2]=ar,ar=ar>>8,Le[Se+1]=ar,ar=ar>>8,Le[Se]=ar,Se+8}T.prototype.writeBigUInt64LE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Ct(this,xe,Se,BigInt(0),BigInt("0xffffffffffffffff"))}),T.prototype.writeBigUInt64BE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Yt(this,xe,Se,BigInt(0),BigInt("0xffffffffffffffff"))}),T.prototype.writeIntLE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,!Gt){var Vt=Math.pow(2,8*lt-1);kt(this,xe,Se,lt,Vt-1,-Vt)}var ar=0,Qr=1,ai=0;for(this[Se]=xe&255;++ar>0)-ai&255;return Se+lt},T.prototype.writeIntBE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,!Gt){var Vt=Math.pow(2,8*lt-1);kt(this,xe,Se,lt,Vt-1,-Vt)}var ar=lt-1,Qr=1,ai=0;for(this[Se+ar]=xe&255;--ar>=0&&(Qr*=256);)xe<0&&ai===0&&this[Se+ar+1]!==0&&(ai=1),this[Se+ar]=(xe/Qr>>0)-ai&255;return Se+lt},T.prototype.writeInt8=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,1,127,-128),xe<0&&(xe=255+xe+1),this[Se]=xe&255,Se+1},T.prototype.writeInt16LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,32767,-32768),this[Se]=xe&255,this[Se+1]=xe>>>8,Se+2},T.prototype.writeInt16BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,32767,-32768),this[Se]=xe>>>8,this[Se+1]=xe&255,Se+2},T.prototype.writeInt32LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,2147483647,-2147483648),this[Se]=xe&255,this[Se+1]=xe>>>8,this[Se+2]=xe>>>16,this[Se+3]=xe>>>24,Se+4},T.prototype.writeInt32BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,2147483647,-2147483648),xe<0&&(xe=4294967295+xe+1),this[Se]=xe>>>24,this[Se+1]=xe>>>16,this[Se+2]=xe>>>8,this[Se+3]=xe&255,Se+4},T.prototype.writeBigInt64LE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Ct(this,xe,Se,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),T.prototype.writeBigInt64BE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Yt(this,xe,Se,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function xr(Le,xe,Se,lt,Gt,Vt){if(Se+lt>Le.length)throw new RangeError("Index out of range");if(Se<0)throw new RangeError("Index out of range")}function er(Le,xe,Se,lt,Gt){return xe=+xe,Se=Se>>>0,Gt||xr(Le,xe,Se,4,34028234663852886e22,-34028234663852886e22),_.write(Le,xe,Se,lt,23,4),Se+4}T.prototype.writeFloatLE=function(xe,Se,lt){return er(this,xe,Se,!0,lt)},T.prototype.writeFloatBE=function(xe,Se,lt){return er(this,xe,Se,!1,lt)};function Ke(Le,xe,Se,lt,Gt){return xe=+xe,Se=Se>>>0,Gt||xr(Le,xe,Se,8,17976931348623157e292,-17976931348623157e292),_.write(Le,xe,Se,lt,52,8),Se+8}T.prototype.writeDoubleLE=function(xe,Se,lt){return Ke(this,xe,Se,!0,lt)},T.prototype.writeDoubleBE=function(xe,Se,lt){return Ke(this,xe,Se,!1,lt)},T.prototype.copy=function(xe,Se,lt,Gt){if(!T.isBuffer(xe))throw new TypeError("argument should be a Buffer");if(lt||(lt=0),!Gt&&Gt!==0&&(Gt=this.length),Se>=xe.length&&(Se=xe.length),Se||(Se=0),Gt>0&&Gt=this.length)throw new RangeError("Index out of range");if(Gt<0)throw new RangeError("sourceEnd out of bounds");Gt>this.length&&(Gt=this.length),xe.length-Se>>0,lt=lt===void 0?this.length:lt>>>0,xe||(xe=0);var ar;if(typeof xe=="number")for(ar=Se;arMath.pow(2,32)?Gt=Lt(String(Se)):typeof Se=="bigint"&&(Gt=String(Se),(Se>Math.pow(BigInt(2),BigInt(32))||Se<-Math.pow(BigInt(2),BigInt(32)))&&(Gt=Lt(Gt)),Gt+="n"),lt+=" It must be ".concat(xe,". Received ").concat(Gt),lt},RangeError);function Lt(Le){for(var xe="",Se=Le.length,lt=Le[0]==="-"?1:0;Se>=lt+4;Se-=3)xe="_".concat(Le.slice(Se-3,Se)).concat(xe);return"".concat(Le.slice(0,Se)).concat(xe)}function St(Le,xe,Se){dt(xe,"offset"),(Le[xe]===void 0||Le[xe+Se]===void 0)&&Ht(xe,Le.length-(Se+1))}function Et(Le,xe,Se,lt,Gt,Vt){if(Le>Se||Le3?xe===0||xe===BigInt(0)?Qr=">= 0".concat(ar," and < 2").concat(ar," ** ").concat((Vt+1)*8).concat(ar):Qr=">= -(2".concat(ar," ** ").concat((Vt+1)*8-1).concat(ar,") and < 2 ** ")+"".concat((Vt+1)*8-1).concat(ar):Qr=">= ".concat(xe).concat(ar," and <= ").concat(Se).concat(ar),new xt.ERR_OUT_OF_RANGE("value",Qr,Le)}St(lt,Gt,Vt)}function dt(Le,xe){if(typeof Le!="number")throw new xt.ERR_INVALID_ARG_TYPE(xe,"number",Le)}function Ht(Le,xe,Se){throw Math.floor(Le)!==Le?(dt(Le,Se),new xt.ERR_OUT_OF_RANGE(Se||"offset","an integer",Le)):xe<0?new xt.ERR_BUFFER_OUT_OF_BOUNDS:new xt.ERR_OUT_OF_RANGE(Se||"offset",">= ".concat(Se?1:0," and <= ").concat(xe),Le)}var $t=/[^+/0-9A-Za-z-_]/g;function fr(Le){if(Le=Le.split("=")[0],Le=Le.trim().replace($t,""),Le.length<2)return"";for(;Le.length%4!==0;)Le=Le+"=";return Le}function _r(Le,xe){xe=xe||1/0;for(var Se,lt=Le.length,Gt=null,Vt=[],ar=0;ar55295&&Se<57344){if(!Gt){if(Se>56319){(xe-=3)>-1&&Vt.push(239,191,189);continue}else if(ar+1===lt){(xe-=3)>-1&&Vt.push(239,191,189);continue}Gt=Se;continue}if(Se<56320){(xe-=3)>-1&&Vt.push(239,191,189),Gt=Se;continue}Se=(Gt-55296<<10|Se-56320)+65536}else Gt&&(xe-=3)>-1&&Vt.push(239,191,189);if(Gt=null,Se<128){if((xe-=1)<0)break;Vt.push(Se)}else if(Se<2048){if((xe-=2)<0)break;Vt.push(Se>>6|192,Se&63|128)}else if(Se<65536){if((xe-=3)<0)break;Vt.push(Se>>12|224,Se>>6&63|128,Se&63|128)}else if(Se<1114112){if((xe-=4)<0)break;Vt.push(Se>>18|240,Se>>12&63|128,Se>>6&63|128,Se&63|128)}else throw new Error("Invalid code point")}return Vt}function Br(Le){for(var xe=[],Se=0;Se>8,Gt=Se%256,Vt.push(Gt),Vt.push(lt);return Vt}function Nr(Le){return L.toByteArray(fr(Le))}function ut(Le,xe,Se,lt){var Gt;for(Gt=0;Gt=xe.length||Gt>=Le.length);++Gt)xe[Gt+Se]=Le[Gt];return Gt}function Ne(Le,xe){return Le instanceof xe||Le!=null&&Le.constructor!=null&&Le.constructor.name!=null&&Le.constructor.name===xe.name}function Ye(Le){return Le!==Le}var Ve=function(){for(var Le="0123456789abcdef",xe=new Array(256),Se=0;Se<16;++Se)for(var lt=Se*16,Gt=0;Gt<16;++Gt)xe[lt+Gt]=Le[Se]+Le[Gt];return xe}();function Xe(Le){return typeof BigInt=="undefined"?ht:Le}function ht(){throw new Error("BigInt not supported")}},9216:function(i){"use strict";i.exports=l,i.exports.isMobile=l,i.exports.default=l;var a=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,o=/CrOS/,s=/android|ipad|playbook|silk/i;function l(u){u||(u={});var c=u.ua;if(!c&&typeof navigator!="undefined"&&(c=navigator.userAgent),c&&c.headers&&typeof c.headers["user-agent"]=="string"&&(c=c.headers["user-agent"]),typeof c!="string")return!1;var f=a.test(c)&&!o.test(c)||!!u.tablet&&s.test(c);return!f&&u.tablet&&u.featureDetect&&navigator&&navigator.maxTouchPoints>1&&c.indexOf("Macintosh")!==-1&&c.indexOf("Safari")!==-1&&(f=!0),f}},6296:function(i,a,o){"use strict";i.exports=h;var s=o(7261),l=o(9977),u=o(1811);function c(d,v){this._controllerNames=Object.keys(d),this._controllerList=this._controllerNames.map(function(x){return d[x]}),this._mode=v,this._active=d[v],this._active||(this._mode="turntable",this._active=d.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var f=c.prototype;f.flush=function(d){for(var v=this._controllerList,x=0;x0)throw new Error("Invalid string. Length must be a multiple of 4");var L=k.indexOf("=");L===-1&&(L=A);var _=L===A?0:4-L%4;return[L,_]}function d(k){var A=h(k),L=A[0],_=A[1];return(L+_)*3/4-_}function v(k,A,L){return(A+L)*3/4-L}function x(k){var A,L=h(k),_=L[0],C=L[1],M=new l(v(k,_,C)),p=0,P=C>0?_-4:_,T;for(T=0;T>16&255,M[p++]=A>>8&255,M[p++]=A&255;return C===2&&(A=s[k.charCodeAt(T)]<<2|s[k.charCodeAt(T+1)]>>4,M[p++]=A&255),C===1&&(A=s[k.charCodeAt(T)]<<10|s[k.charCodeAt(T+1)]<<4|s[k.charCodeAt(T+2)]>>2,M[p++]=A>>8&255,M[p++]=A&255),M}function b(k){return o[k>>18&63]+o[k>>12&63]+o[k>>6&63]+o[k&63]}function g(k,A,L){for(var _,C=[],M=A;MP?P:p+M));return _===1?(A=k[L-1],C.push(o[A>>2]+o[A<<4&63]+"==")):_===2&&(A=(k[L-2]<<8)+k[L-1],C.push(o[A>>10]+o[A>>4&63]+o[A<<2&63]+"=")),C.join("")}},3865:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).add(c[0].mul(u[1])),u[1].mul(c[1]))}},1318:function(i){"use strict";i.exports=a;function a(o,s){return o[0].mul(s[1]).cmp(s[0].mul(o[1]))}},8697:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]),u[1].mul(c[0]))}},7842:function(i,a,o){"use strict";var s=o(6330),l=o(1533),u=o(2651),c=o(6768),f=o(869),h=o(8697);i.exports=d;function d(v,x){if(s(v))return x?h(v,d(x)):[v[0].clone(),v[1].clone()];var b=0,g,E;if(l(v))g=v.clone();else if(typeof v=="string")g=c(v);else{if(v===0)return[u(0),u(1)];if(v===Math.floor(v))g=u(v);else{for(;v!==Math.floor(v);)v=v*Math.pow(2,256),b-=256;g=u(v)}}if(s(x))g.mul(x[1]),E=x[0].clone();else if(l(x))E=x.clone();else if(typeof x=="string")E=c(x);else if(!x)E=u(1);else if(x===Math.floor(x))E=u(x);else{for(;x!==Math.floor(x);)x=x*Math.pow(2,256),b+=256;E=u(x)}return b>0?g=g.ushln(b):b<0&&(E=E.ushln(-b)),f(g,E)}},6330:function(i,a,o){"use strict";var s=o(1533);i.exports=l;function l(u){return Array.isArray(u)&&u.length===2&&s(u[0])&&s(u[1])}},5716:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u.cmp(new s(0))}},1369:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){var c=u.length,f=u.words,h=0;if(c===1)h=f[0];else if(c===2)h=f[0]+f[1]*67108864;else for(var d=0;d20?52:h+32}},1533:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u&&typeof u=="object"&&!!u.words}},2651:function(i,a,o){"use strict";var s=o(6859),l=o(2361);i.exports=u;function u(c){var f=l.exponent(c);return f<52?new s(c):new s(c*Math.pow(2,52-f)).ushln(f-52)}},869:function(i,a,o){"use strict";var s=o(2651),l=o(5716);i.exports=u;function u(c,f){var h=l(c),d=l(f);if(h===0)return[s(0),s(1)];if(d===0)return[s(0),s(0)];d<0&&(c=c.neg(),f=f.neg());var v=c.gcd(f);return v.cmpn(1)?[c.div(v),f.div(v)]:[c,f]}},6768:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return new s(u)}},6504:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[0]),u[1].mul(c[1]))}},7721:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){return s(u[0])*s(u[1])}},5572:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).sub(u[1].mul(c[0])),u[1].mul(c[1]))}},946:function(i,a,o){"use strict";var s=o(1369),l=o(4025);i.exports=u;function u(c){var f=c[0],h=c[1];if(f.cmpn(0)===0)return 0;var d=f.abs().divmod(h.abs()),v=d.div,x=s(v),b=d.mod,g=f.negative!==h.negative?-1:1;if(b.cmpn(0)===0)return g*x;if(x){var E=l(x)+4,k=s(b.ushln(E).divRound(h));return g*(x+k*Math.pow(2,-E))}else{var A=h.bitLength()-b.bitLength()+53,k=s(b.ushln(A).divRound(h));return A<1023?g*k*Math.pow(2,-A):(k*=Math.pow(2,-1023),g*k*Math.pow(2,1023-A))}}},2478:function(i){"use strict";function a(f,h,d,v,x){for(var b=x+1;v<=x;){var g=v+x>>>1,E=f[g],k=d!==void 0?d(E,h):E-h;k>=0?(b=g,x=g-1):v=g+1}return b}function o(f,h,d,v,x){for(var b=x+1;v<=x;){var g=v+x>>>1,E=f[g],k=d!==void 0?d(E,h):E-h;k>0?(b=g,x=g-1):v=g+1}return b}function s(f,h,d,v,x){for(var b=v-1;v<=x;){var g=v+x>>>1,E=f[g],k=d!==void 0?d(E,h):E-h;k<0?(b=g,v=g+1):x=g-1}return b}function l(f,h,d,v,x){for(var b=v-1;v<=x;){var g=v+x>>>1,E=f[g],k=d!==void 0?d(E,h):E-h;k<=0?(b=g,v=g+1):x=g-1}return b}function u(f,h,d,v,x){for(;v<=x;){var b=v+x>>>1,g=f[b],E=d!==void 0?d(g,h):g-h;if(E===0)return b;E<=0?v=b+1:x=b-1}return-1}function c(f,h,d,v,x,b){return typeof d=="function"?b(f,h,d,v===void 0?0:v|0,x===void 0?f.length-1:x|0):b(f,h,void 0,d===void 0?0:d|0,v===void 0?f.length-1:v|0)}i.exports={ge:function(f,h,d,v,x){return c(f,h,d,v,x,a)},gt:function(f,h,d,v,x){return c(f,h,d,v,x,o)},lt:function(f,h,d,v,x){return c(f,h,d,v,x,s)},le:function(f,h,d,v,x){return c(f,h,d,v,x,l)},eq:function(f,h,d,v,x){return c(f,h,d,v,x,u)}}},8828:function(i,a){"use strict";"use restrict";var o=32;a.INT_BITS=o,a.INT_MAX=2147483647,a.INT_MIN=-1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},6859:function(i,a,o){i=o.nmd(i),function(s,l){"use strict";function u(G,N){if(!G)throw new Error(N||"Assertion failed")}function c(G,N){G.super_=N;var W=function(){};W.prototype=N.prototype,G.prototype=new W,G.prototype.constructor=G}function f(G,N,W){if(f.isBN(G))return G;this.negative=0,this.words=null,this.length=0,this.red=null,G!==null&&((N==="le"||N==="be")&&(W=N,N=10),this._init(G||0,N||10,W||"be"))}typeof s=="object"?s.exports=f:l.BN=f,f.BN=f,f.wordSize=26;var h;try{typeof window!="undefined"&&typeof window.Buffer!="undefined"?h=window.Buffer:h=o(7790).Buffer}catch(G){}f.isBN=function(N){return N instanceof f?!0:N!==null&&typeof N=="object"&&N.constructor.wordSize===f.wordSize&&Array.isArray(N.words)},f.max=function(N,W){return N.cmp(W)>0?N:W},f.min=function(N,W){return N.cmp(W)<0?N:W},f.prototype._init=function(N,W,re){if(typeof N=="number")return this._initNumber(N,W,re);if(typeof N=="object")return this._initArray(N,W,re);W==="hex"&&(W=16),u(W===(W|0)&&W>=2&&W<=36),N=N.toString().replace(/\s+/g,"");var ae=0;N[0]==="-"&&(ae++,this.negative=1),ae=0;ae-=3)Me=N[ae]|N[ae-1]<<8|N[ae-2]<<16,this.words[_e]|=Me<>>26-ke&67108863,ke+=24,ke>=26&&(ke-=26,_e++);else if(re==="le")for(ae=0,_e=0;ae>>26-ke&67108863,ke+=24,ke>=26&&(ke-=26,_e++);return this.strip()};function d(G,N){var W=G.charCodeAt(N);return W>=65&&W<=70?W-55:W>=97&&W<=102?W-87:W-48&15}function v(G,N,W){var re=d(G,W);return W-1>=N&&(re|=d(G,W-1)<<4),re}f.prototype._parseHex=function(N,W,re){this.length=Math.ceil((N.length-W)/6),this.words=new Array(this.length);for(var ae=0;ae=W;ae-=2)ke=v(N,W,ae)<<_e,this.words[Me]|=ke&67108863,_e>=18?(_e-=18,Me+=1,this.words[Me]|=ke>>>26):_e+=8;else{var ge=N.length-W;for(ae=ge%2===0?W+1:W;ae=18?(_e-=18,Me+=1,this.words[Me]|=ke>>>26):_e+=8}this.strip()};function x(G,N,W,re){for(var ae=0,_e=Math.min(G.length,W),Me=N;Me<_e;Me++){var ke=G.charCodeAt(Me)-48;ae*=re,ke>=49?ae+=ke-49+10:ke>=17?ae+=ke-17+10:ae+=ke}return ae}f.prototype._parseBase=function(N,W,re){this.words=[0],this.length=1;for(var ae=0,_e=1;_e<=67108863;_e*=W)ae++;ae--,_e=_e/W|0;for(var Me=N.length-re,ke=Me%ae,ge=Math.min(Me,Me-ke)+re,ie=0,Te=re;Te1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},f.prototype.inspect=function(){return(this.red?""};var b=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],g=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(N,W){N=N||10,W=W|0||1;var re;if(N===16||N==="hex"){re="";for(var ae=0,_e=0,Me=0;Me>>24-ae&16777215,_e!==0||Me!==this.length-1?re=b[6-ge.length]+ge+re:re=ge+re,ae+=2,ae>=26&&(ae-=26,Me--)}for(_e!==0&&(re=_e.toString(16)+re);re.length%W!==0;)re="0"+re;return this.negative!==0&&(re="-"+re),re}if(N===(N|0)&&N>=2&&N<=36){var ie=g[N],Te=E[N];re="";var Ee=this.clone();for(Ee.negative=0;!Ee.isZero();){var Ae=Ee.modn(Te).toString(N);Ee=Ee.idivn(Te),Ee.isZero()?re=Ae+re:re=b[ie-Ae.length]+Ae+re}for(this.isZero()&&(re="0"+re);re.length%W!==0;)re="0"+re;return this.negative!==0&&(re="-"+re),re}u(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var N=this.words[0];return this.length===2?N+=this.words[1]*67108864:this.length===3&&this.words[2]===1?N+=4503599627370496+this.words[1]*67108864:this.length>2&&u(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-N:N},f.prototype.toJSON=function(){return this.toString(16)},f.prototype.toBuffer=function(N,W){return u(typeof h!="undefined"),this.toArrayLike(h,N,W)},f.prototype.toArray=function(N,W){return this.toArrayLike(Array,N,W)},f.prototype.toArrayLike=function(N,W,re){var ae=this.byteLength(),_e=re||Math.max(1,ae);u(ae<=_e,"byte array longer than desired length"),u(_e>0,"Requested array length <= 0"),this.strip();var Me=W==="le",ke=new N(_e),ge,ie,Te=this.clone();if(Me){for(ie=0;!Te.isZero();ie++)ge=Te.andln(255),Te.iushrn(8),ke[ie]=ge;for(;ie<_e;ie++)ke[ie]=0}else{for(ie=0;ie<_e-ae;ie++)ke[ie]=0;for(ie=0;!Te.isZero();ie++)ge=Te.andln(255),Te.iushrn(8),ke[_e-ie-1]=ge}return ke},Math.clz32?f.prototype._countBits=function(N){return 32-Math.clz32(N)}:f.prototype._countBits=function(N){var W=N,re=0;return W>=4096&&(re+=13,W>>>=13),W>=64&&(re+=7,W>>>=7),W>=8&&(re+=4,W>>>=4),W>=2&&(re+=2,W>>>=2),re+W},f.prototype._zeroBits=function(N){if(N===0)return 26;var W=N,re=0;return W&8191||(re+=13,W>>>=13),W&127||(re+=7,W>>>=7),W&15||(re+=4,W>>>=4),W&3||(re+=2,W>>>=2),W&1||re++,re},f.prototype.bitLength=function(){var N=this.words[this.length-1],W=this._countBits(N);return(this.length-1)*26+W};function k(G){for(var N=new Array(G.bitLength()),W=0;W>>ae}return N}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var N=0,W=0;WN.length?this.clone().ior(N):N.clone().ior(this)},f.prototype.uor=function(N){return this.length>N.length?this.clone().iuor(N):N.clone().iuor(this)},f.prototype.iuand=function(N){var W;this.length>N.length?W=N:W=this;for(var re=0;reN.length?this.clone().iand(N):N.clone().iand(this)},f.prototype.uand=function(N){return this.length>N.length?this.clone().iuand(N):N.clone().iuand(this)},f.prototype.iuxor=function(N){var W,re;this.length>N.length?(W=this,re=N):(W=N,re=this);for(var ae=0;aeN.length?this.clone().ixor(N):N.clone().ixor(this)},f.prototype.uxor=function(N){return this.length>N.length?this.clone().iuxor(N):N.clone().iuxor(this)},f.prototype.inotn=function(N){u(typeof N=="number"&&N>=0);var W=Math.ceil(N/26)|0,re=N%26;this._expand(W),re>0&&W--;for(var ae=0;ae0&&(this.words[ae]=~this.words[ae]&67108863>>26-re),this.strip()},f.prototype.notn=function(N){return this.clone().inotn(N)},f.prototype.setn=function(N,W){u(typeof N=="number"&&N>=0);var re=N/26|0,ae=N%26;return this._expand(re+1),W?this.words[re]=this.words[re]|1<N.length?(re=this,ae=N):(re=N,ae=this);for(var _e=0,Me=0;Me>>26;for(;_e!==0&&Me>>26;if(this.length=re.length,_e!==0)this.words[this.length]=_e,this.length++;else if(re!==this)for(;MeN.length?this.clone().iadd(N):N.clone().iadd(this)},f.prototype.isub=function(N){if(N.negative!==0){N.negative=0;var W=this.iadd(N);return N.negative=1,W._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(N),this.negative=1,this._normSign();var re=this.cmp(N);if(re===0)return this.negative=0,this.length=1,this.words[0]=0,this;var ae,_e;re>0?(ae=this,_e=N):(ae=N,_e=this);for(var Me=0,ke=0;ke<_e.length;ke++)W=(ae.words[ke]|0)-(_e.words[ke]|0)+Me,Me=W>>26,this.words[ke]=W&67108863;for(;Me!==0&&ke>26,this.words[ke]=W&67108863;if(Me===0&&ke>>26,Ee=ge&67108863,Ae=Math.min(ie,N.length-1),ze=Math.max(0,ie-G.length+1);ze<=Ae;ze++){var Ce=ie-ze|0;ae=G.words[Ce]|0,_e=N.words[ze]|0,Me=ae*_e+Ee,Te+=Me/67108864|0,Ee=Me&67108863}W.words[ie]=Ee|0,ge=Te|0}return ge!==0?W.words[ie]=ge|0:W.length--,W.strip()}var L=function(N,W,re){var ae=N.words,_e=W.words,Me=re.words,ke=0,ge,ie,Te,Ee=ae[0]|0,Ae=Ee&8191,ze=Ee>>>13,Ce=ae[1]|0,me=Ce&8191,Re=Ce>>>13,ce=ae[2]|0,Ge=ce&8191,nt=ce>>>13,ct=ae[3]|0,qt=ct&8191,rt=ct>>>13,ot=ae[4]|0,Rt=ot&8191,kt=ot>>>13,Ct=ae[5]|0,Yt=Ct&8191,xr=Ct>>>13,er=ae[6]|0,Ke=er&8191,xt=er>>>13,bt=ae[7]|0,Lt=bt&8191,St=bt>>>13,Et=ae[8]|0,dt=Et&8191,Ht=Et>>>13,$t=ae[9]|0,fr=$t&8191,_r=$t>>>13,Br=_e[0]|0,Or=Br&8191,Nr=Br>>>13,ut=_e[1]|0,Ne=ut&8191,Ye=ut>>>13,Ve=_e[2]|0,Xe=Ve&8191,ht=Ve>>>13,Le=_e[3]|0,xe=Le&8191,Se=Le>>>13,lt=_e[4]|0,Gt=lt&8191,Vt=lt>>>13,ar=_e[5]|0,Qr=ar&8191,ai=ar>>>13,jr=_e[6]|0,ri=jr&8191,bi=jr>>>13,nn=_e[7]|0,Wi=nn&8191,Ni=nn>>>13,_n=_e[8]|0,$i=_n&8191,zn=_n>>>13,Wn=_e[9]|0,It=Wn&8191,ft=Wn>>>13;re.negative=N.negative^W.negative,re.length=19,ge=Math.imul(Ae,Or),ie=Math.imul(Ae,Nr),ie=ie+Math.imul(ze,Or)|0,Te=Math.imul(ze,Nr);var jt=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jt>>>26)|0,jt&=67108863,ge=Math.imul(me,Or),ie=Math.imul(me,Nr),ie=ie+Math.imul(Re,Or)|0,Te=Math.imul(Re,Nr),ge=ge+Math.imul(Ae,Ne)|0,ie=ie+Math.imul(Ae,Ye)|0,ie=ie+Math.imul(ze,Ne)|0,Te=Te+Math.imul(ze,Ye)|0;var Zt=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,ge=Math.imul(Ge,Or),ie=Math.imul(Ge,Nr),ie=ie+Math.imul(nt,Or)|0,Te=Math.imul(nt,Nr),ge=ge+Math.imul(me,Ne)|0,ie=ie+Math.imul(me,Ye)|0,ie=ie+Math.imul(Re,Ne)|0,Te=Te+Math.imul(Re,Ye)|0,ge=ge+Math.imul(Ae,Xe)|0,ie=ie+Math.imul(Ae,ht)|0,ie=ie+Math.imul(ze,Xe)|0,Te=Te+Math.imul(ze,ht)|0;var yr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(yr>>>26)|0,yr&=67108863,ge=Math.imul(qt,Or),ie=Math.imul(qt,Nr),ie=ie+Math.imul(rt,Or)|0,Te=Math.imul(rt,Nr),ge=ge+Math.imul(Ge,Ne)|0,ie=ie+Math.imul(Ge,Ye)|0,ie=ie+Math.imul(nt,Ne)|0,Te=Te+Math.imul(nt,Ye)|0,ge=ge+Math.imul(me,Xe)|0,ie=ie+Math.imul(me,ht)|0,ie=ie+Math.imul(Re,Xe)|0,Te=Te+Math.imul(Re,ht)|0,ge=ge+Math.imul(Ae,xe)|0,ie=ie+Math.imul(Ae,Se)|0,ie=ie+Math.imul(ze,xe)|0,Te=Te+Math.imul(ze,Se)|0;var Fr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,ge=Math.imul(Rt,Or),ie=Math.imul(Rt,Nr),ie=ie+Math.imul(kt,Or)|0,Te=Math.imul(kt,Nr),ge=ge+Math.imul(qt,Ne)|0,ie=ie+Math.imul(qt,Ye)|0,ie=ie+Math.imul(rt,Ne)|0,Te=Te+Math.imul(rt,Ye)|0,ge=ge+Math.imul(Ge,Xe)|0,ie=ie+Math.imul(Ge,ht)|0,ie=ie+Math.imul(nt,Xe)|0,Te=Te+Math.imul(nt,ht)|0,ge=ge+Math.imul(me,xe)|0,ie=ie+Math.imul(me,Se)|0,ie=ie+Math.imul(Re,xe)|0,Te=Te+Math.imul(Re,Se)|0,ge=ge+Math.imul(Ae,Gt)|0,ie=ie+Math.imul(Ae,Vt)|0,ie=ie+Math.imul(ze,Gt)|0,Te=Te+Math.imul(ze,Vt)|0;var Zr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,ge=Math.imul(Yt,Or),ie=Math.imul(Yt,Nr),ie=ie+Math.imul(xr,Or)|0,Te=Math.imul(xr,Nr),ge=ge+Math.imul(Rt,Ne)|0,ie=ie+Math.imul(Rt,Ye)|0,ie=ie+Math.imul(kt,Ne)|0,Te=Te+Math.imul(kt,Ye)|0,ge=ge+Math.imul(qt,Xe)|0,ie=ie+Math.imul(qt,ht)|0,ie=ie+Math.imul(rt,Xe)|0,Te=Te+Math.imul(rt,ht)|0,ge=ge+Math.imul(Ge,xe)|0,ie=ie+Math.imul(Ge,Se)|0,ie=ie+Math.imul(nt,xe)|0,Te=Te+Math.imul(nt,Se)|0,ge=ge+Math.imul(me,Gt)|0,ie=ie+Math.imul(me,Vt)|0,ie=ie+Math.imul(Re,Gt)|0,Te=Te+Math.imul(Re,Vt)|0,ge=ge+Math.imul(Ae,Qr)|0,ie=ie+Math.imul(Ae,ai)|0,ie=ie+Math.imul(ze,Qr)|0,Te=Te+Math.imul(ze,ai)|0;var Vr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,ge=Math.imul(Ke,Or),ie=Math.imul(Ke,Nr),ie=ie+Math.imul(xt,Or)|0,Te=Math.imul(xt,Nr),ge=ge+Math.imul(Yt,Ne)|0,ie=ie+Math.imul(Yt,Ye)|0,ie=ie+Math.imul(xr,Ne)|0,Te=Te+Math.imul(xr,Ye)|0,ge=ge+Math.imul(Rt,Xe)|0,ie=ie+Math.imul(Rt,ht)|0,ie=ie+Math.imul(kt,Xe)|0,Te=Te+Math.imul(kt,ht)|0,ge=ge+Math.imul(qt,xe)|0,ie=ie+Math.imul(qt,Se)|0,ie=ie+Math.imul(rt,xe)|0,Te=Te+Math.imul(rt,Se)|0,ge=ge+Math.imul(Ge,Gt)|0,ie=ie+Math.imul(Ge,Vt)|0,ie=ie+Math.imul(nt,Gt)|0,Te=Te+Math.imul(nt,Vt)|0,ge=ge+Math.imul(me,Qr)|0,ie=ie+Math.imul(me,ai)|0,ie=ie+Math.imul(Re,Qr)|0,Te=Te+Math.imul(Re,ai)|0,ge=ge+Math.imul(Ae,ri)|0,ie=ie+Math.imul(Ae,bi)|0,ie=ie+Math.imul(ze,ri)|0,Te=Te+Math.imul(ze,bi)|0;var gi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(gi>>>26)|0,gi&=67108863,ge=Math.imul(Lt,Or),ie=Math.imul(Lt,Nr),ie=ie+Math.imul(St,Or)|0,Te=Math.imul(St,Nr),ge=ge+Math.imul(Ke,Ne)|0,ie=ie+Math.imul(Ke,Ye)|0,ie=ie+Math.imul(xt,Ne)|0,Te=Te+Math.imul(xt,Ye)|0,ge=ge+Math.imul(Yt,Xe)|0,ie=ie+Math.imul(Yt,ht)|0,ie=ie+Math.imul(xr,Xe)|0,Te=Te+Math.imul(xr,ht)|0,ge=ge+Math.imul(Rt,xe)|0,ie=ie+Math.imul(Rt,Se)|0,ie=ie+Math.imul(kt,xe)|0,Te=Te+Math.imul(kt,Se)|0,ge=ge+Math.imul(qt,Gt)|0,ie=ie+Math.imul(qt,Vt)|0,ie=ie+Math.imul(rt,Gt)|0,Te=Te+Math.imul(rt,Vt)|0,ge=ge+Math.imul(Ge,Qr)|0,ie=ie+Math.imul(Ge,ai)|0,ie=ie+Math.imul(nt,Qr)|0,Te=Te+Math.imul(nt,ai)|0,ge=ge+Math.imul(me,ri)|0,ie=ie+Math.imul(me,bi)|0,ie=ie+Math.imul(Re,ri)|0,Te=Te+Math.imul(Re,bi)|0,ge=ge+Math.imul(Ae,Wi)|0,ie=ie+Math.imul(Ae,Ni)|0,ie=ie+Math.imul(ze,Wi)|0,Te=Te+Math.imul(ze,Ni)|0;var Si=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Si>>>26)|0,Si&=67108863,ge=Math.imul(dt,Or),ie=Math.imul(dt,Nr),ie=ie+Math.imul(Ht,Or)|0,Te=Math.imul(Ht,Nr),ge=ge+Math.imul(Lt,Ne)|0,ie=ie+Math.imul(Lt,Ye)|0,ie=ie+Math.imul(St,Ne)|0,Te=Te+Math.imul(St,Ye)|0,ge=ge+Math.imul(Ke,Xe)|0,ie=ie+Math.imul(Ke,ht)|0,ie=ie+Math.imul(xt,Xe)|0,Te=Te+Math.imul(xt,ht)|0,ge=ge+Math.imul(Yt,xe)|0,ie=ie+Math.imul(Yt,Se)|0,ie=ie+Math.imul(xr,xe)|0,Te=Te+Math.imul(xr,Se)|0,ge=ge+Math.imul(Rt,Gt)|0,ie=ie+Math.imul(Rt,Vt)|0,ie=ie+Math.imul(kt,Gt)|0,Te=Te+Math.imul(kt,Vt)|0,ge=ge+Math.imul(qt,Qr)|0,ie=ie+Math.imul(qt,ai)|0,ie=ie+Math.imul(rt,Qr)|0,Te=Te+Math.imul(rt,ai)|0,ge=ge+Math.imul(Ge,ri)|0,ie=ie+Math.imul(Ge,bi)|0,ie=ie+Math.imul(nt,ri)|0,Te=Te+Math.imul(nt,bi)|0,ge=ge+Math.imul(me,Wi)|0,ie=ie+Math.imul(me,Ni)|0,ie=ie+Math.imul(Re,Wi)|0,Te=Te+Math.imul(Re,Ni)|0,ge=ge+Math.imul(Ae,$i)|0,ie=ie+Math.imul(Ae,zn)|0,ie=ie+Math.imul(ze,$i)|0,Te=Te+Math.imul(ze,zn)|0;var Mi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Mi>>>26)|0,Mi&=67108863,ge=Math.imul(fr,Or),ie=Math.imul(fr,Nr),ie=ie+Math.imul(_r,Or)|0,Te=Math.imul(_r,Nr),ge=ge+Math.imul(dt,Ne)|0,ie=ie+Math.imul(dt,Ye)|0,ie=ie+Math.imul(Ht,Ne)|0,Te=Te+Math.imul(Ht,Ye)|0,ge=ge+Math.imul(Lt,Xe)|0,ie=ie+Math.imul(Lt,ht)|0,ie=ie+Math.imul(St,Xe)|0,Te=Te+Math.imul(St,ht)|0,ge=ge+Math.imul(Ke,xe)|0,ie=ie+Math.imul(Ke,Se)|0,ie=ie+Math.imul(xt,xe)|0,Te=Te+Math.imul(xt,Se)|0,ge=ge+Math.imul(Yt,Gt)|0,ie=ie+Math.imul(Yt,Vt)|0,ie=ie+Math.imul(xr,Gt)|0,Te=Te+Math.imul(xr,Vt)|0,ge=ge+Math.imul(Rt,Qr)|0,ie=ie+Math.imul(Rt,ai)|0,ie=ie+Math.imul(kt,Qr)|0,Te=Te+Math.imul(kt,ai)|0,ge=ge+Math.imul(qt,ri)|0,ie=ie+Math.imul(qt,bi)|0,ie=ie+Math.imul(rt,ri)|0,Te=Te+Math.imul(rt,bi)|0,ge=ge+Math.imul(Ge,Wi)|0,ie=ie+Math.imul(Ge,Ni)|0,ie=ie+Math.imul(nt,Wi)|0,Te=Te+Math.imul(nt,Ni)|0,ge=ge+Math.imul(me,$i)|0,ie=ie+Math.imul(me,zn)|0,ie=ie+Math.imul(Re,$i)|0,Te=Te+Math.imul(Re,zn)|0,ge=ge+Math.imul(Ae,It)|0,ie=ie+Math.imul(Ae,ft)|0,ie=ie+Math.imul(ze,It)|0,Te=Te+Math.imul(ze,ft)|0;var Pi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,ge=Math.imul(fr,Ne),ie=Math.imul(fr,Ye),ie=ie+Math.imul(_r,Ne)|0,Te=Math.imul(_r,Ye),ge=ge+Math.imul(dt,Xe)|0,ie=ie+Math.imul(dt,ht)|0,ie=ie+Math.imul(Ht,Xe)|0,Te=Te+Math.imul(Ht,ht)|0,ge=ge+Math.imul(Lt,xe)|0,ie=ie+Math.imul(Lt,Se)|0,ie=ie+Math.imul(St,xe)|0,Te=Te+Math.imul(St,Se)|0,ge=ge+Math.imul(Ke,Gt)|0,ie=ie+Math.imul(Ke,Vt)|0,ie=ie+Math.imul(xt,Gt)|0,Te=Te+Math.imul(xt,Vt)|0,ge=ge+Math.imul(Yt,Qr)|0,ie=ie+Math.imul(Yt,ai)|0,ie=ie+Math.imul(xr,Qr)|0,Te=Te+Math.imul(xr,ai)|0,ge=ge+Math.imul(Rt,ri)|0,ie=ie+Math.imul(Rt,bi)|0,ie=ie+Math.imul(kt,ri)|0,Te=Te+Math.imul(kt,bi)|0,ge=ge+Math.imul(qt,Wi)|0,ie=ie+Math.imul(qt,Ni)|0,ie=ie+Math.imul(rt,Wi)|0,Te=Te+Math.imul(rt,Ni)|0,ge=ge+Math.imul(Ge,$i)|0,ie=ie+Math.imul(Ge,zn)|0,ie=ie+Math.imul(nt,$i)|0,Te=Te+Math.imul(nt,zn)|0,ge=ge+Math.imul(me,It)|0,ie=ie+Math.imul(me,ft)|0,ie=ie+Math.imul(Re,It)|0,Te=Te+Math.imul(Re,ft)|0;var Gi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,ge=Math.imul(fr,Xe),ie=Math.imul(fr,ht),ie=ie+Math.imul(_r,Xe)|0,Te=Math.imul(_r,ht),ge=ge+Math.imul(dt,xe)|0,ie=ie+Math.imul(dt,Se)|0,ie=ie+Math.imul(Ht,xe)|0,Te=Te+Math.imul(Ht,Se)|0,ge=ge+Math.imul(Lt,Gt)|0,ie=ie+Math.imul(Lt,Vt)|0,ie=ie+Math.imul(St,Gt)|0,Te=Te+Math.imul(St,Vt)|0,ge=ge+Math.imul(Ke,Qr)|0,ie=ie+Math.imul(Ke,ai)|0,ie=ie+Math.imul(xt,Qr)|0,Te=Te+Math.imul(xt,ai)|0,ge=ge+Math.imul(Yt,ri)|0,ie=ie+Math.imul(Yt,bi)|0,ie=ie+Math.imul(xr,ri)|0,Te=Te+Math.imul(xr,bi)|0,ge=ge+Math.imul(Rt,Wi)|0,ie=ie+Math.imul(Rt,Ni)|0,ie=ie+Math.imul(kt,Wi)|0,Te=Te+Math.imul(kt,Ni)|0,ge=ge+Math.imul(qt,$i)|0,ie=ie+Math.imul(qt,zn)|0,ie=ie+Math.imul(rt,$i)|0,Te=Te+Math.imul(rt,zn)|0,ge=ge+Math.imul(Ge,It)|0,ie=ie+Math.imul(Ge,ft)|0,ie=ie+Math.imul(nt,It)|0,Te=Te+Math.imul(nt,ft)|0;var Ki=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Ki>>>26)|0,Ki&=67108863,ge=Math.imul(fr,xe),ie=Math.imul(fr,Se),ie=ie+Math.imul(_r,xe)|0,Te=Math.imul(_r,Se),ge=ge+Math.imul(dt,Gt)|0,ie=ie+Math.imul(dt,Vt)|0,ie=ie+Math.imul(Ht,Gt)|0,Te=Te+Math.imul(Ht,Vt)|0,ge=ge+Math.imul(Lt,Qr)|0,ie=ie+Math.imul(Lt,ai)|0,ie=ie+Math.imul(St,Qr)|0,Te=Te+Math.imul(St,ai)|0,ge=ge+Math.imul(Ke,ri)|0,ie=ie+Math.imul(Ke,bi)|0,ie=ie+Math.imul(xt,ri)|0,Te=Te+Math.imul(xt,bi)|0,ge=ge+Math.imul(Yt,Wi)|0,ie=ie+Math.imul(Yt,Ni)|0,ie=ie+Math.imul(xr,Wi)|0,Te=Te+Math.imul(xr,Ni)|0,ge=ge+Math.imul(Rt,$i)|0,ie=ie+Math.imul(Rt,zn)|0,ie=ie+Math.imul(kt,$i)|0,Te=Te+Math.imul(kt,zn)|0,ge=ge+Math.imul(qt,It)|0,ie=ie+Math.imul(qt,ft)|0,ie=ie+Math.imul(rt,It)|0,Te=Te+Math.imul(rt,ft)|0;var ka=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(ka>>>26)|0,ka&=67108863,ge=Math.imul(fr,Gt),ie=Math.imul(fr,Vt),ie=ie+Math.imul(_r,Gt)|0,Te=Math.imul(_r,Vt),ge=ge+Math.imul(dt,Qr)|0,ie=ie+Math.imul(dt,ai)|0,ie=ie+Math.imul(Ht,Qr)|0,Te=Te+Math.imul(Ht,ai)|0,ge=ge+Math.imul(Lt,ri)|0,ie=ie+Math.imul(Lt,bi)|0,ie=ie+Math.imul(St,ri)|0,Te=Te+Math.imul(St,bi)|0,ge=ge+Math.imul(Ke,Wi)|0,ie=ie+Math.imul(Ke,Ni)|0,ie=ie+Math.imul(xt,Wi)|0,Te=Te+Math.imul(xt,Ni)|0,ge=ge+Math.imul(Yt,$i)|0,ie=ie+Math.imul(Yt,zn)|0,ie=ie+Math.imul(xr,$i)|0,Te=Te+Math.imul(xr,zn)|0,ge=ge+Math.imul(Rt,It)|0,ie=ie+Math.imul(Rt,ft)|0,ie=ie+Math.imul(kt,It)|0,Te=Te+Math.imul(kt,ft)|0;var jn=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jn>>>26)|0,jn&=67108863,ge=Math.imul(fr,Qr),ie=Math.imul(fr,ai),ie=ie+Math.imul(_r,Qr)|0,Te=Math.imul(_r,ai),ge=ge+Math.imul(dt,ri)|0,ie=ie+Math.imul(dt,bi)|0,ie=ie+Math.imul(Ht,ri)|0,Te=Te+Math.imul(Ht,bi)|0,ge=ge+Math.imul(Lt,Wi)|0,ie=ie+Math.imul(Lt,Ni)|0,ie=ie+Math.imul(St,Wi)|0,Te=Te+Math.imul(St,Ni)|0,ge=ge+Math.imul(Ke,$i)|0,ie=ie+Math.imul(Ke,zn)|0,ie=ie+Math.imul(xt,$i)|0,Te=Te+Math.imul(xt,zn)|0,ge=ge+Math.imul(Yt,It)|0,ie=ie+Math.imul(Yt,ft)|0,ie=ie+Math.imul(xr,It)|0,Te=Te+Math.imul(xr,ft)|0;var la=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(la>>>26)|0,la&=67108863,ge=Math.imul(fr,ri),ie=Math.imul(fr,bi),ie=ie+Math.imul(_r,ri)|0,Te=Math.imul(_r,bi),ge=ge+Math.imul(dt,Wi)|0,ie=ie+Math.imul(dt,Ni)|0,ie=ie+Math.imul(Ht,Wi)|0,Te=Te+Math.imul(Ht,Ni)|0,ge=ge+Math.imul(Lt,$i)|0,ie=ie+Math.imul(Lt,zn)|0,ie=ie+Math.imul(St,$i)|0,Te=Te+Math.imul(St,zn)|0,ge=ge+Math.imul(Ke,It)|0,ie=ie+Math.imul(Ke,ft)|0,ie=ie+Math.imul(xt,It)|0,Te=Te+Math.imul(xt,ft)|0;var Fa=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Fa>>>26)|0,Fa&=67108863,ge=Math.imul(fr,Wi),ie=Math.imul(fr,Ni),ie=ie+Math.imul(_r,Wi)|0,Te=Math.imul(_r,Ni),ge=ge+Math.imul(dt,$i)|0,ie=ie+Math.imul(dt,zn)|0,ie=ie+Math.imul(Ht,$i)|0,Te=Te+Math.imul(Ht,zn)|0,ge=ge+Math.imul(Lt,It)|0,ie=ie+Math.imul(Lt,ft)|0,ie=ie+Math.imul(St,It)|0,Te=Te+Math.imul(St,ft)|0;var Ra=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Ra>>>26)|0,Ra&=67108863,ge=Math.imul(fr,$i),ie=Math.imul(fr,zn),ie=ie+Math.imul(_r,$i)|0,Te=Math.imul(_r,zn),ge=ge+Math.imul(dt,It)|0,ie=ie+Math.imul(dt,ft)|0,ie=ie+Math.imul(Ht,It)|0,Te=Te+Math.imul(Ht,ft)|0;var jo=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jo>>>26)|0,jo&=67108863,ge=Math.imul(fr,It),ie=Math.imul(fr,ft),ie=ie+Math.imul(_r,It)|0,Te=Math.imul(_r,ft);var oa=(ke+ge|0)+((ie&8191)<<13)|0;return ke=(Te+(ie>>>13)|0)+(oa>>>26)|0,oa&=67108863,Me[0]=jt,Me[1]=Zt,Me[2]=yr,Me[3]=Fr,Me[4]=Zr,Me[5]=Vr,Me[6]=gi,Me[7]=Si,Me[8]=Mi,Me[9]=Pi,Me[10]=Gi,Me[11]=Ki,Me[12]=ka,Me[13]=jn,Me[14]=la,Me[15]=Fa,Me[16]=Ra,Me[17]=jo,Me[18]=oa,ke!==0&&(Me[19]=ke,re.length++),re};Math.imul||(L=A);function _(G,N,W){W.negative=N.negative^G.negative,W.length=G.length+N.length;for(var re=0,ae=0,_e=0;_e>>26)|0,ae+=Me>>>26,Me&=67108863}W.words[_e]=ke,re=Me,Me=ae}return re!==0?W.words[_e]=re:W.length--,W.strip()}function C(G,N,W){var re=new M;return re.mulp(G,N,W)}f.prototype.mulTo=function(N,W){var re,ae=this.length+N.length;return this.length===10&&N.length===10?re=L(this,N,W):ae<63?re=A(this,N,W):ae<1024?re=_(this,N,W):re=C(this,N,W),re};function M(G,N){this.x=G,this.y=N}M.prototype.makeRBT=function(N){for(var W=new Array(N),re=f.prototype._countBits(N)-1,ae=0;ae>=1;return ae},M.prototype.permute=function(N,W,re,ae,_e,Me){for(var ke=0;ke>>1)_e++;return 1<<_e+1+ae},M.prototype.conjugate=function(N,W,re){if(!(re<=1))for(var ae=0;ae>>13,re[2*Me+1]=_e&8191,_e=_e>>>13;for(Me=2*W;Me>=26,W+=ae/67108864|0,W+=_e>>>26,this.words[re]=_e&67108863}return W!==0&&(this.words[re]=W,this.length++),this},f.prototype.muln=function(N){return this.clone().imuln(N)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(N){var W=k(N);if(W.length===0)return new f(1);for(var re=this,ae=0;ae=0);var W=N%26,re=(N-W)/26,ae=67108863>>>26-W<<26-W,_e;if(W!==0){var Me=0;for(_e=0;_e>>26-W}Me&&(this.words[_e]=Me,this.length++)}if(re!==0){for(_e=this.length-1;_e>=0;_e--)this.words[_e+re]=this.words[_e];for(_e=0;_e=0);var ae;W?ae=(W-W%26)/26:ae=0;var _e=N%26,Me=Math.min((N-_e)/26,this.length),ke=67108863^67108863>>>_e<<_e,ge=re;if(ae-=Me,ae=Math.max(0,ae),ge){for(var ie=0;ieMe)for(this.length-=Me,ie=0;ie=0&&(Te!==0||ie>=ae);ie--){var Ee=this.words[ie]|0;this.words[ie]=Te<<26-_e|Ee>>>_e,Te=Ee&ke}return ge&&Te!==0&&(ge.words[ge.length++]=Te),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},f.prototype.ishrn=function(N,W,re){return u(this.negative===0),this.iushrn(N,W,re)},f.prototype.shln=function(N){return this.clone().ishln(N)},f.prototype.ushln=function(N){return this.clone().iushln(N)},f.prototype.shrn=function(N){return this.clone().ishrn(N)},f.prototype.ushrn=function(N){return this.clone().iushrn(N)},f.prototype.testn=function(N){u(typeof N=="number"&&N>=0);var W=N%26,re=(N-W)/26,ae=1<=0);var W=N%26,re=(N-W)/26;if(u(this.negative===0,"imaskn works only with positive numbers"),this.length<=re)return this;if(W!==0&&re++,this.length=Math.min(re,this.length),W!==0){var ae=67108863^67108863>>>W<=67108864;W++)this.words[W]-=67108864,W===this.length-1?this.words[W+1]=1:this.words[W+1]++;return this.length=Math.max(this.length,W+1),this},f.prototype.isubn=function(N){if(u(typeof N=="number"),u(N<67108864),N<0)return this.iaddn(-N);if(this.negative!==0)return this.negative=0,this.iaddn(N),this.negative=1,this;if(this.words[0]-=N,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var W=0;W>26)-(ge/67108864|0),this.words[_e+re]=Me&67108863}for(;_e>26,this.words[_e+re]=Me&67108863;if(ke===0)return this.strip();for(u(ke===-1),ke=0,_e=0;_e>26,this.words[_e]=Me&67108863;return this.negative=1,this.strip()},f.prototype._wordDiv=function(N,W){var re=this.length-N.length,ae=this.clone(),_e=N,Me=_e.words[_e.length-1]|0,ke=this._countBits(Me);re=26-ke,re!==0&&(_e=_e.ushln(re),ae.iushln(re),Me=_e.words[_e.length-1]|0);var ge=ae.length-_e.length,ie;if(W!=="mod"){ie=new f(null),ie.length=ge+1,ie.words=new Array(ie.length);for(var Te=0;Te=0;Ae--){var ze=(ae.words[_e.length+Ae]|0)*67108864+(ae.words[_e.length+Ae-1]|0);for(ze=Math.min(ze/Me|0,67108863),ae._ishlnsubmul(_e,ze,Ae);ae.negative!==0;)ze--,ae.negative=0,ae._ishlnsubmul(_e,1,Ae),ae.isZero()||(ae.negative^=1);ie&&(ie.words[Ae]=ze)}return ie&&ie.strip(),ae.strip(),W!=="div"&&re!==0&&ae.iushrn(re),{div:ie||null,mod:ae}},f.prototype.divmod=function(N,W,re){if(u(!N.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var ae,_e,Me;return this.negative!==0&&N.negative===0?(Me=this.neg().divmod(N,W),W!=="mod"&&(ae=Me.div.neg()),W!=="div"&&(_e=Me.mod.neg(),re&&_e.negative!==0&&_e.iadd(N)),{div:ae,mod:_e}):this.negative===0&&N.negative!==0?(Me=this.divmod(N.neg(),W),W!=="mod"&&(ae=Me.div.neg()),{div:ae,mod:Me.mod}):this.negative&N.negative?(Me=this.neg().divmod(N.neg(),W),W!=="div"&&(_e=Me.mod.neg(),re&&_e.negative!==0&&_e.isub(N)),{div:Me.div,mod:_e}):N.length>this.length||this.cmp(N)<0?{div:new f(0),mod:this}:N.length===1?W==="div"?{div:this.divn(N.words[0]),mod:null}:W==="mod"?{div:null,mod:new f(this.modn(N.words[0]))}:{div:this.divn(N.words[0]),mod:new f(this.modn(N.words[0]))}:this._wordDiv(N,W)},f.prototype.div=function(N){return this.divmod(N,"div",!1).div},f.prototype.mod=function(N){return this.divmod(N,"mod",!1).mod},f.prototype.umod=function(N){return this.divmod(N,"mod",!0).mod},f.prototype.divRound=function(N){var W=this.divmod(N);if(W.mod.isZero())return W.div;var re=W.div.negative!==0?W.mod.isub(N):W.mod,ae=N.ushrn(1),_e=N.andln(1),Me=re.cmp(ae);return Me<0||_e===1&&Me===0?W.div:W.div.negative!==0?W.div.isubn(1):W.div.iaddn(1)},f.prototype.modn=function(N){u(N<=67108863);for(var W=(1<<26)%N,re=0,ae=this.length-1;ae>=0;ae--)re=(W*re+(this.words[ae]|0))%N;return re},f.prototype.idivn=function(N){u(N<=67108863);for(var W=0,re=this.length-1;re>=0;re--){var ae=(this.words[re]|0)+W*67108864;this.words[re]=ae/N|0,W=ae%N}return this.strip()},f.prototype.divn=function(N){return this.clone().idivn(N)},f.prototype.egcd=function(N){u(N.negative===0),u(!N.isZero());var W=this,re=N.clone();W.negative!==0?W=W.umod(N):W=W.clone();for(var ae=new f(1),_e=new f(0),Me=new f(0),ke=new f(1),ge=0;W.isEven()&&re.isEven();)W.iushrn(1),re.iushrn(1),++ge;for(var ie=re.clone(),Te=W.clone();!W.isZero();){for(var Ee=0,Ae=1;!(W.words[0]&Ae)&&Ee<26;++Ee,Ae<<=1);if(Ee>0)for(W.iushrn(Ee);Ee-- >0;)(ae.isOdd()||_e.isOdd())&&(ae.iadd(ie),_e.isub(Te)),ae.iushrn(1),_e.iushrn(1);for(var ze=0,Ce=1;!(re.words[0]&Ce)&&ze<26;++ze,Ce<<=1);if(ze>0)for(re.iushrn(ze);ze-- >0;)(Me.isOdd()||ke.isOdd())&&(Me.iadd(ie),ke.isub(Te)),Me.iushrn(1),ke.iushrn(1);W.cmp(re)>=0?(W.isub(re),ae.isub(Me),_e.isub(ke)):(re.isub(W),Me.isub(ae),ke.isub(_e))}return{a:Me,b:ke,gcd:re.iushln(ge)}},f.prototype._invmp=function(N){u(N.negative===0),u(!N.isZero());var W=this,re=N.clone();W.negative!==0?W=W.umod(N):W=W.clone();for(var ae=new f(1),_e=new f(0),Me=re.clone();W.cmpn(1)>0&&re.cmpn(1)>0;){for(var ke=0,ge=1;!(W.words[0]&ge)&&ke<26;++ke,ge<<=1);if(ke>0)for(W.iushrn(ke);ke-- >0;)ae.isOdd()&&ae.iadd(Me),ae.iushrn(1);for(var ie=0,Te=1;!(re.words[0]&Te)&&ie<26;++ie,Te<<=1);if(ie>0)for(re.iushrn(ie);ie-- >0;)_e.isOdd()&&_e.iadd(Me),_e.iushrn(1);W.cmp(re)>=0?(W.isub(re),ae.isub(_e)):(re.isub(W),_e.isub(ae))}var Ee;return W.cmpn(1)===0?Ee=ae:Ee=_e,Ee.cmpn(0)<0&&Ee.iadd(N),Ee},f.prototype.gcd=function(N){if(this.isZero())return N.abs();if(N.isZero())return this.abs();var W=this.clone(),re=N.clone();W.negative=0,re.negative=0;for(var ae=0;W.isEven()&&re.isEven();ae++)W.iushrn(1),re.iushrn(1);do{for(;W.isEven();)W.iushrn(1);for(;re.isEven();)re.iushrn(1);var _e=W.cmp(re);if(_e<0){var Me=W;W=re,re=Me}else if(_e===0||re.cmpn(1)===0)break;W.isub(re)}while(!0);return re.iushln(ae)},f.prototype.invm=function(N){return this.egcd(N).a.umod(N)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(N){return this.words[0]&N},f.prototype.bincn=function(N){u(typeof N=="number");var W=N%26,re=(N-W)/26,ae=1<>>26,ke&=67108863,this.words[Me]=ke}return _e!==0&&(this.words[Me]=_e,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(N){var W=N<0;if(this.negative!==0&&!W)return-1;if(this.negative===0&&W)return 1;this.strip();var re;if(this.length>1)re=1;else{W&&(N=-N),u(N<=67108863,"Number is too big");var ae=this.words[0]|0;re=ae===N?0:aeN.length)return 1;if(this.length=0;re--){var ae=this.words[re]|0,_e=N.words[re]|0;if(ae!==_e){ae<_e?W=-1:ae>_e&&(W=1);break}}return W},f.prototype.gtn=function(N){return this.cmpn(N)===1},f.prototype.gt=function(N){return this.cmp(N)===1},f.prototype.gten=function(N){return this.cmpn(N)>=0},f.prototype.gte=function(N){return this.cmp(N)>=0},f.prototype.ltn=function(N){return this.cmpn(N)===-1},f.prototype.lt=function(N){return this.cmp(N)===-1},f.prototype.lten=function(N){return this.cmpn(N)<=0},f.prototype.lte=function(N){return this.cmp(N)<=0},f.prototype.eqn=function(N){return this.cmpn(N)===0},f.prototype.eq=function(N){return this.cmp(N)===0},f.red=function(N){return new H(N)},f.prototype.toRed=function(N){return u(!this.red,"Already a number in reduction context"),u(this.negative===0,"red works only with positives"),N.convertTo(this)._forceRed(N)},f.prototype.fromRed=function(){return u(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(N){return this.red=N,this},f.prototype.forceRed=function(N){return u(!this.red,"Already a number in reduction context"),this._forceRed(N)},f.prototype.redAdd=function(N){return u(this.red,"redAdd works only with red numbers"),this.red.add(this,N)},f.prototype.redIAdd=function(N){return u(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,N)},f.prototype.redSub=function(N){return u(this.red,"redSub works only with red numbers"),this.red.sub(this,N)},f.prototype.redISub=function(N){return u(this.red,"redISub works only with red numbers"),this.red.isub(this,N)},f.prototype.redShl=function(N){return u(this.red,"redShl works only with red numbers"),this.red.shl(this,N)},f.prototype.redMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.mul(this,N)},f.prototype.redIMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.imul(this,N)},f.prototype.redSqr=function(){return u(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return u(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return u(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return u(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return u(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(N){return u(this.red&&!N.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,N)};var p={k256:null,p224:null,p192:null,p25519:null};function P(G,N){this.name=G,this.p=new f(N,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}P.prototype._tmp=function(){var N=new f(null);return N.words=new Array(Math.ceil(this.n/13)),N},P.prototype.ireduce=function(N){var W=N,re;do this.split(W,this.tmp),W=this.imulK(W),W=W.iadd(this.tmp),re=W.bitLength();while(re>this.n);var ae=re0?W.isub(this.p):W.strip!==void 0?W.strip():W._strip(),W},P.prototype.split=function(N,W){N.iushrn(this.n,0,W)},P.prototype.imulK=function(N){return N.imul(this.k)};function T(){P.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}c(T,P),T.prototype.split=function(N,W){for(var re=4194303,ae=Math.min(N.length,9),_e=0;_e>>22,Me=ke}Me>>>=22,N.words[_e-10]=Me,Me===0&&N.length>10?N.length-=10:N.length-=9},T.prototype.imulK=function(N){N.words[N.length]=0,N.words[N.length+1]=0,N.length+=2;for(var W=0,re=0;re>>=26,N.words[re]=_e,W=ae}return W!==0&&(N.words[N.length++]=W),N},f._prime=function(N){if(p[N])return p[N];var W;if(N==="k256")W=new T;else if(N==="p224")W=new F;else if(N==="p192")W=new q;else if(N==="p25519")W=new V;else throw new Error("Unknown prime "+N);return p[N]=W,W};function H(G){if(typeof G=="string"){var N=f._prime(G);this.m=N.p,this.prime=N}else u(G.gtn(1),"modulus must be greater than 1"),this.m=G,this.prime=null}H.prototype._verify1=function(N){u(N.negative===0,"red works only with positives"),u(N.red,"red works only with red numbers")},H.prototype._verify2=function(N,W){u((N.negative|W.negative)===0,"red works only with positives"),u(N.red&&N.red===W.red,"red works only with red numbers")},H.prototype.imod=function(N){return this.prime?this.prime.ireduce(N)._forceRed(this):N.umod(this.m)._forceRed(this)},H.prototype.neg=function(N){return N.isZero()?N.clone():this.m.sub(N)._forceRed(this)},H.prototype.add=function(N,W){this._verify2(N,W);var re=N.add(W);return re.cmp(this.m)>=0&&re.isub(this.m),re._forceRed(this)},H.prototype.iadd=function(N,W){this._verify2(N,W);var re=N.iadd(W);return re.cmp(this.m)>=0&&re.isub(this.m),re},H.prototype.sub=function(N,W){this._verify2(N,W);var re=N.sub(W);return re.cmpn(0)<0&&re.iadd(this.m),re._forceRed(this)},H.prototype.isub=function(N,W){this._verify2(N,W);var re=N.isub(W);return re.cmpn(0)<0&&re.iadd(this.m),re},H.prototype.shl=function(N,W){return this._verify1(N),this.imod(N.ushln(W))},H.prototype.imul=function(N,W){return this._verify2(N,W),this.imod(N.imul(W))},H.prototype.mul=function(N,W){return this._verify2(N,W),this.imod(N.mul(W))},H.prototype.isqr=function(N){return this.imul(N,N.clone())},H.prototype.sqr=function(N){return this.mul(N,N)},H.prototype.sqrt=function(N){if(N.isZero())return N.clone();var W=this.m.andln(3);if(u(W%2===1),W===3){var re=this.m.add(new f(1)).iushrn(2);return this.pow(N,re)}for(var ae=this.m.subn(1),_e=0;!ae.isZero()&&ae.andln(1)===0;)_e++,ae.iushrn(1);u(!ae.isZero());var Me=new f(1).toRed(this),ke=Me.redNeg(),ge=this.m.subn(1).iushrn(1),ie=this.m.bitLength();for(ie=new f(2*ie*ie).toRed(this);this.pow(ie,ge).cmp(ke)!==0;)ie.redIAdd(ke);for(var Te=this.pow(ie,ae),Ee=this.pow(N,ae.addn(1).iushrn(1)),Ae=this.pow(N,ae),ze=_e;Ae.cmp(Me)!==0;){for(var Ce=Ae,me=0;Ce.cmp(Me)!==0;me++)Ce=Ce.redSqr();u(me=0;_e--){for(var Te=W.words[_e],Ee=ie-1;Ee>=0;Ee--){var Ae=Te>>Ee&1;if(Me!==ae[0]&&(Me=this.sqr(Me)),Ae===0&&ke===0){ge=0;continue}ke<<=1,ke|=Ae,ge++,!(ge!==re&&(_e!==0||Ee!==0))&&(Me=this.mul(Me,ae[ke]),ge=0,ke=0)}ie=26}return Me},H.prototype.convertTo=function(N){var W=N.umod(this.m);return W===N?W.clone():W},H.prototype.convertFrom=function(N){var W=N.clone();return W.red=null,W},f.mont=function(N){return new X(N)};function X(G){H.call(this,G),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}c(X,H),X.prototype.convertTo=function(N){return this.imod(N.ushln(this.shift))},X.prototype.convertFrom=function(N){var W=this.imod(N.mul(this.rinv));return W.red=null,W},X.prototype.imul=function(N,W){if(N.isZero()||W.isZero())return N.words[0]=0,N.length=1,N;var re=N.imul(W),ae=re.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=re.isub(ae).iushrn(this.shift),Me=_e;return _e.cmp(this.m)>=0?Me=_e.isub(this.m):_e.cmpn(0)<0&&(Me=_e.iadd(this.m)),Me._forceRed(this)},X.prototype.mul=function(N,W){if(N.isZero()||W.isZero())return new f(0)._forceRed(this);var re=N.mul(W),ae=re.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=re.isub(ae).iushrn(this.shift),Me=_e;return _e.cmp(this.m)>=0?Me=_e.isub(this.m):_e.cmpn(0)<0&&(Me=_e.iadd(this.m)),Me._forceRed(this)},X.prototype.invm=function(N){var W=this.imod(N._invmp(this.m).mul(this.r2));return W._forceRed(this)}}(i,this)},6204:function(i){"use strict";i.exports=a;function a(o){var s,l,u,c=o.length,f=0;for(s=0;s>>1;if(!(M<=0)){var p,P=s.mallocDouble(2*M*_),T=s.mallocInt32(_);if(_=f(E,M,P,T),_>0){if(M===1&&L)l.init(_),p=l.sweepComplete(M,A,0,_,P,T,0,_,P,T);else{var F=s.mallocDouble(2*M*C),q=s.mallocInt32(C);C=f(k,M,F,q),C>0&&(l.init(_+C),M===1?p=l.sweepBipartite(M,A,0,_,P,T,0,C,F,q):p=u(M,A,L,_,P,T,C,F,q),s.free(F),s.free(q))}s.free(P),s.free(T)}return p}}}var d;function v(E,k){d.push([E,k])}function x(E){return d=[],h(E,E,v,!0),d}function b(E,k){return d=[],h(E,k,v,!1),d}function g(E,k,A){switch(arguments.length){case 1:return x(E);case 2:return typeof k=="function"?h(E,E,k,!0):b(E,k);case 3:return h(E,k,A,!1);default:throw new Error("box-intersect: Invalid arguments")}}},2455:function(i,a){"use strict";function o(){function u(h,d,v,x,b,g,E,k,A,L,_){for(var C=2*h,M=x,p=C*x;MA-k?u(h,d,v,x,b,g,E,k,A,L,_):c(h,d,v,x,b,g,E,k,A,L,_)}return f}function s(){function u(v,x,b,g,E,k,A,L,_,C,M){for(var p=2*v,P=g,T=p*g;PC-_?g?u(v,x,b,E,k,A,L,_,C,M,p):c(v,x,b,E,k,A,L,_,C,M,p):g?f(v,x,b,E,k,A,L,_,C,M,p):h(v,x,b,E,k,A,L,_,C,M,p)}return d}function l(u){return u?o():s()}a.partial=l(!1),a.full=l(!0)},7150:function(i,a,o){"use strict";i.exports=G;var s=o(1888),l=o(8828),u=o(2455),c=u.partial,f=u.full,h=o(855),d=o(3545),v=o(8105),x=128,b=1<<22,g=1<<22,E=v("!(lo>=p0)&&!(p1>=hi)"),k=v("lo===p0"),A=v("lo0;){Te-=1;var ze=Te*M,Ce=T[ze],me=T[ze+1],Re=T[ze+2],ce=T[ze+3],Ge=T[ze+4],nt=T[ze+5],ct=Te*p,qt=F[ct],rt=F[ct+1],ot=nt&1,Rt=!!(nt&16),kt=_e,Ct=Me,Yt=ge,xr=ie;if(ot&&(kt=ge,Ct=ie,Yt=_e,xr=Me),!(nt&2&&(Re=A(N,Ce,me,Re,kt,Ct,rt),me>=Re))&&!(nt&4&&(me=L(N,Ce,me,Re,kt,Ct,qt),me>=Re))){var er=Re-me,Ke=Ge-ce;if(Rt){if(N*er*(er+Ke)v&&b[C+d]>L;--_,C-=E){for(var M=C,p=C+E,P=0;P>>1,L=2*h,_=A,C=b[L*A+d];E=F?(_=T,C=F):P>=V?(_=p,C=P):(_=q,C=V):F>=V?(_=T,C=F):V>=P?(_=p,C=P):(_=q,C=V);for(var G=L*(k-1),N=L*_,H=0;H=p0)&&!(p1>=hi)":d};function o(v){return a[v]}function s(v,x,b,g,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,p=x,P=v+x,T=b;g>T;++T,_+=L){var F=E[_+p];if(F===A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function l(v,x,b,g,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,p=x,P=v+x,T=b;g>T;++T,_+=L){var F=E[_+p];if(Fq;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function u(v,x,b,g,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,p=x,P=v+x,T=b;g>T;++T,_+=L){var F=E[_+P];if(F<=A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function c(v,x,b,g,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,p=x,P=v+x,T=b;g>T;++T,_+=L){var F=E[_+P];if(F<=A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function f(v,x,b,g,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,p=x,P=v+x,T=b;g>T;++T,_+=L){var F=E[_+p],q=E[_+P];if(F<=A&&A<=q)if(M===T)M+=1,C+=L;else{for(var V=0;L>V;++V){var H=E[_+V];E[_+V]=E[C],E[C++]=H}var X=k[T];k[T]=k[M],k[M++]=X}}return M}function h(v,x,b,g,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,p=x,P=v+x,T=b;g>T;++T,_+=L){var F=E[_+p],q=E[_+P];if(FV;++V){var H=E[_+V];E[_+V]=E[C],E[C++]=H}var X=k[T];k[T]=k[M],k[M++]=X}}return M}function d(v,x,b,g,E,k,A,L){for(var _=2*v,C=_*b,M=C,p=b,P=x,T=v+x,F=b;g>F;++F,C+=_){var q=E[C+P],V=E[C+T];if(!(q>=A)&&!(L>=V))if(p===F)p+=1,M+=_;else{for(var H=0;_>H;++H){var X=E[C+H];E[C+H]=E[M],E[M++]=X}var G=k[F];k[F]=k[p],k[p++]=G}}return p}},4192:function(i){"use strict";i.exports=o;var a=32;function o(x,b){b<=4*a?s(0,b-1,x):v(0,b-1,x)}function s(x,b,g){for(var E=2*(x+1),k=x+1;k<=b;++k){for(var A=g[E++],L=g[E++],_=k,C=E-2;_-- >x;){var M=g[C-2],p=g[C-1];if(Mg[b+1]:!0}function d(x,b,g,E){x*=2;var k=E[x];return k>1,_=L-E,C=L+E,M=k,p=_,P=L,T=C,F=A,q=x+1,V=b-1,H=0;h(M,p,g)&&(H=M,M=p,p=H),h(T,F,g)&&(H=T,T=F,F=H),h(M,P,g)&&(H=M,M=P,P=H),h(p,P,g)&&(H=p,p=P,P=H),h(M,T,g)&&(H=M,M=T,T=H),h(P,T,g)&&(H=P,P=T,T=H),h(p,F,g)&&(H=p,p=F,F=H),h(p,P,g)&&(H=p,p=P,P=H),h(T,F,g)&&(H=T,T=F,F=H);for(var X=g[2*p],G=g[2*p+1],N=g[2*T],W=g[2*T+1],re=2*M,ae=2*P,_e=2*F,Me=2*k,ke=2*L,ge=2*A,ie=0;ie<2;++ie){var Te=g[re+ie],Ee=g[ae+ie],Ae=g[_e+ie];g[Me+ie]=Te,g[ke+ie]=Ee,g[ge+ie]=Ae}u(_,x,g),u(C,b,g);for(var ze=q;ze<=V;++ze)if(d(ze,X,G,g))ze!==q&&l(ze,q,g),++q;else if(!d(ze,N,W,g))for(;;)if(d(V,N,W,g)){d(V,X,G,g)?(c(ze,q,V,g),++q,--V):(l(ze,V,g),--V);break}else{if(--V>>1;u(E,Ee);for(var Ae=0,ze=0,ke=0;ke=c)Ce=Ce-c|0,A(v,x,ze--,Ce);else if(Ce>=0)A(h,d,Ae--,Ce);else if(Ce<=-c){Ce=-Ce-c|0;for(var me=0;me>>1;u(E,Ee);for(var Ae=0,ze=0,Ce=0,ke=0;ke>1===E[2*ke+3]>>1&&(Re=2,ke+=1),me<0){for(var ce=-(me>>1)-1,Ge=0;Ge>1)-1;Re===0?A(h,d,Ae--,ce):Re===1?A(v,x,ze--,ce):Re===2&&A(b,g,Ce--,ce)}}}function M(P,T,F,q,V,H,X,G,N,W,re,ae){var _e=0,Me=2*P,ke=T,ge=T+P,ie=1,Te=1;q?Te=c:ie=c;for(var Ee=V;Ee>>1;u(E,me);for(var Re=0,Ee=0;Ee=c?(Ge=!q,Ae-=c):(Ge=!!q,Ae-=1),Ge)L(h,d,Re++,Ae);else{var nt=ae[Ae],ct=Me*Ae,qt=re[ct+T+1],rt=re[ct+T+1+P];e:for(var ot=0;ot>>1;u(E,Ae);for(var ze=0,ge=0;ge=c)h[ze++]=ie-c;else{ie-=1;var me=re[ie],Re=_e*ie,ce=W[Re+T+1],Ge=W[Re+T+1+P];e:for(var nt=0;nt=0;--nt)if(h[nt]===ie){for(var ot=nt+1;ot0;){for(var k=d.pop(),b=d.pop(),A=-1,L=-1,g=x[b],C=1;C=0||(h.flip(b,k),u(f,h,d,A,b,L),u(f,h,d,b,L,A),u(f,h,d,L,k,A),u(f,h,d,k,A,L))}}},5023:function(i,a,o){"use strict";var s=o(2478);i.exports=d;function l(v,x,b,g,E,k,A){this.cells=v,this.neighbor=x,this.flags=g,this.constraint=b,this.active=E,this.next=k,this.boundary=A}var u=l.prototype;function c(v,x){return v[0]-x[0]||v[1]-x[1]||v[2]-x[2]}u.locate=function(){var v=[0,0,0];return function(x,b,g){var E=x,k=b,A=g;return b0||A.length>0;){for(;k.length>0;){var p=k.pop();if(L[p]!==-E){L[p]=E;for(var P=_[p],T=0;T<3;++T){var F=M[3*p+T];F>=0&&L[F]===0&&(C[3*p+T]?A.push(F):(k.push(F),L[F]=E))}}}var q=A;A=k,k=q,A.length=0,E=-E}var V=h(_,L,x);return b?V.concat(g.boundary):V}},8902:function(i,a,o){"use strict";var s=o(2478),l=o(3250)[3],u=0,c=1,f=2;i.exports=A;function h(L,_,C,M,p){this.a=L,this.b=_,this.idx=C,this.lowerIds=M,this.upperIds=p}function d(L,_,C,M){this.a=L,this.b=_,this.type=C,this.idx=M}function v(L,_){var C=L.a[0]-_.a[0]||L.a[1]-_.a[1]||L.type-_.type;return C||L.type!==u&&(C=l(L.a,L.b,_.b),C)?C:L.idx-_.idx}function x(L,_){return l(L.a,L.b,_)}function b(L,_,C,M,p){for(var P=s.lt(_,M,x),T=s.gt(_,M,x),F=P;F1&&l(C[V[X-2]],C[V[X-1]],M)>0;)L.push([V[X-1],V[X-2],p]),X-=1;V.length=X,V.push(p);for(var H=q.upperIds,X=H.length;X>1&&l(C[H[X-2]],C[H[X-1]],M)<0;)L.push([H[X-2],H[X-1],p]),X-=1;H.length=X,H.push(p)}}function g(L,_){var C;return L.a[0]<_.a[0]?C=l(L.a,L.b,_.a):C=l(_.b,_.a,L.a),C||(_.b[0]q[0]&&p.push(new d(q,F,f,P),new d(F,q,c,P))}p.sort(v);for(var V=p[0].a[0]-(1+Math.abs(p[0].a[0]))*Math.pow(2,-52),H=[new h([V,1],[V,0],-1,[],[],[],[])],X=[],P=0,G=p.length;P=0}}(),u.removeTriangle=function(h,d,v){var x=this.stars;c(x[h],d,v),c(x[d],v,h),c(x[v],h,d)},u.addTriangle=function(h,d,v){var x=this.stars;x[h].push(d,v),x[d].push(v,h),x[v].push(h,d)},u.opposite=function(h,d){for(var v=this.stars[d],x=1,b=v.length;x=0;--N){var Te=X[N];W=Te[0];var Ee=V[W],Ae=Ee[0],ze=Ee[1],Ce=q[Ae],me=q[ze];if((Ce[0]-me[0]||Ce[1]-me[1])<0){var Re=Ae;Ae=ze,ze=Re}Ee[0]=Ae;var ce=Ee[1]=Te[1],Ge;for(G&&(Ge=Ee[2]);N>0&&X[N-1][0]===W;){var Te=X[--N],nt=Te[1];G?V.push([ce,nt,Ge]):V.push([ce,nt]),ce=nt}G?V.push([ce,ze,Ge]):V.push([ce,ze])}return re}function _(q,V,H){for(var X=V.length,G=new s(X),N=[],W=0;WV[2]?1:0)}function p(q,V,H){if(q.length!==0){if(V)for(var X=0;X0||W.length>0}function F(q,V,H){var X;if(H){X=V;for(var G=new Array(V.length),N=0;NL+1)throw new Error(k+" map requires nshades to be at least size "+E.length);Array.isArray(d.alpha)?d.alpha.length!==2?_=[1,1]:_=d.alpha.slice():typeof d.alpha=="number"?_=[d.alpha,d.alpha]:_=[1,1],v=E.map(function(F){return Math.round(F.index*L)}),_[0]=Math.min(Math.max(_[0],0),1),_[1]=Math.min(Math.max(_[1],0),1);var M=E.map(function(F,q){var V=E[q].index,H=E[q].rgb.slice();return H.length===4&&H[3]>=0&&H[3]<=1||(H[3]=_[0]+(_[1]-_[0])*V),H}),p=[];for(C=0;C=0}function d(v,x,b,g){var E=s(x,b,g);if(E===0){var k=l(s(v,x,b)),A=l(s(v,x,g));if(k===A){if(k===0){var L=h(v,x,b),_=h(v,x,g);return L===_?0:L?1:-1}return 0}else{if(A===0)return k>0||h(v,x,g)?-1:1;if(k===0)return A>0||h(v,x,b)?1:-1}return l(A-k)}var C=s(v,x,b);if(C>0)return E>0&&s(v,x,g)>0?1:-1;if(C<0)return E>0||s(v,x,g)>0?1:-1;var M=s(v,x,g);return M>0||h(v,x,b)?1:-1}},8572:function(i){"use strict";i.exports=function(o){return o<0?-1:o>0?1:0}},8507:function(i){i.exports=s;var a=Math.min;function o(l,u){return l-u}function s(l,u){var c=l.length,f=l.length-u.length;if(f)return f;switch(c){case 0:return 0;case 1:return l[0]-u[0];case 2:return l[0]+l[1]-u[0]-u[1]||a(l[0],l[1])-a(u[0],u[1]);case 3:var h=l[0]+l[1],d=u[0]+u[1];if(f=h+l[2]-(d+u[2]),f)return f;var v=a(l[0],l[1]),x=a(u[0],u[1]);return a(v,l[2])-a(x,u[2])||a(v+l[2],h)-a(x+u[2],d);case 4:var b=l[0],g=l[1],E=l[2],k=l[3],A=u[0],L=u[1],_=u[2],C=u[3];return b+g+E+k-(A+L+_+C)||a(b,g,E,k)-a(A,L,_,C,A)||a(b+g,b+E,b+k,g+E,g+k,E+k)-a(A+L,A+_,A+C,L+_,L+C,_+C)||a(b+g+E,b+g+k,b+E+k,g+E+k)-a(A+L+_,A+L+C,A+_+C,L+_+C);default:for(var M=l.slice().sort(o),p=u.slice().sort(o),P=0;Po[l][0]&&(l=u);return sl?[[l],[s]]:[[s]]}},4750:function(i,a,o){"use strict";i.exports=l;var s=o(3090);function l(u){var c=s(u),f=c.length;if(f<=2)return[];for(var h=new Array(f),d=c[f-1],v=0;v=d[A]&&(k+=1);g[E]=k}}return h}function f(h,d){try{return s(h,!0)}catch(g){var v=l(h);if(v.length<=d)return[];var x=u(h,v),b=s(x,!0);return c(b,v)}}},4769:function(i){"use strict";function a(s,l,u,c,f,h){var d=6*f*f-6*f,v=3*f*f-4*f+1,x=-6*f*f+6*f,b=3*f*f-2*f;if(s.length){h||(h=new Array(s.length));for(var g=s.length-1;g>=0;--g)h[g]=d*s[g]+v*l[g]+x*u[g]+b*c[g];return h}return d*s+v*l+x*u[g]+b*c}function o(s,l,u,c,f,h){var d=f-1,v=f*f,x=d*d,b=(1+2*f)*x,g=f*x,E=v*(3-2*f),k=v*d;if(s.length){h||(h=new Array(s.length));for(var A=s.length-1;A>=0;--A)h[A]=b*s[A]+g*l[A]+E*u[A]+k*c[A];return h}return b*s+g*l+E*u+k*c}i.exports=o,i.exports.derivative=a},7642:function(i,a,o){"use strict";var s=o(8954),l=o(1682);i.exports=h;function u(d,v){this.point=d,this.index=v}function c(d,v){for(var x=d.point,b=v.point,g=x.length,E=0;E=2)return!1;H[G]=N}return!0}):V=V.filter(function(H){for(var X=0;X<=b;++X){var G=P[H[X]];if(G<0)return!1;H[X]=G}return!0}),b&1)for(var k=0;k>>31},i.exports.exponent=function(E){var k=i.exports.hi(E);return(k<<1>>>21)-1023},i.exports.fraction=function(E){var k=i.exports.lo(E),A=i.exports.hi(E),L=A&(1<<20)-1;return A&2146435072&&(L+=1048576),[k,L]},i.exports.denormalized=function(E){var k=i.exports.hi(E);return!(k&2146435072)}},1338:function(i){"use strict";function a(l,u,c){var f=l[c]|0;if(f<=0)return[];var h=new Array(f),d;if(c===l.length-1)for(d=0;d0)return o(l|0,u);break;case"object":if(typeof l.length=="number")return a(l,u,0);break}return[]}i.exports=s},3134:function(i,a,o){"use strict";i.exports=l;var s=o(1682);function l(u,c){var f=u.length;if(typeof c!="number"){c=0;for(var h=0;h=b-1)for(var C=k.length-1,p=v-x[b-1],M=0;M=b-1)for(var _=k.length-1,C=v-x[b-1],M=0;M=0;--b)if(v[--x])return!1;return!0},f.jump=function(v){var x=this.lastT(),b=this.dimension;if(!(v0;--M)g.push(u(L[M-1],_[M-1],arguments[M])),E.push(0)}},f.push=function(v){var x=this.lastT(),b=this.dimension;if(!(v1e-6?1/A:0;this._time.push(v);for(var p=b;p>0;--p){var P=u(_[p-1],C[p-1],arguments[p]);g.push(P),E.push((P-g[k++])*M)}}},f.set=function(v){var x=this.dimension;if(!(v0;--L)b.push(u(k[L-1],A[L-1],arguments[L])),g.push(0)}},f.move=function(v){var x=this.lastT(),b=this.dimension;if(!(v<=x||arguments.length!==b+1)){var g=this._state,E=this._velocity,k=g.length-this.dimension,A=this.bounds,L=A[0],_=A[1],C=v-x,M=C>1e-6?1/C:0;this._time.push(v);for(var p=b;p>0;--p){var P=arguments[p];g.push(u(L[p-1],_[p-1],g[k++]+P)),E.push(P*M)}}},f.idle=function(v){var x=this.lastT();if(!(v=0;--M)g.push(u(L[M],_[M],g[k]+C*E[k])),E.push(0),k+=1}};function h(v){for(var x=new Array(v),b=0;b=0;--q){var p=P[q];T[q]<=0?P[q]=new s(p._color,p.key,p.value,P[q+1],p.right,p._count+1):P[q]=new s(p._color,p.key,p.value,p.left,P[q+1],p._count+1)}for(var q=P.length-1;q>1;--q){var V=P[q-1],p=P[q];if(V._color===o||p._color===o)break;var H=P[q-2];if(H.left===V)if(V.left===p){var X=H.right;if(X&&X._color===a)V._color=o,H.right=u(o,X),H._color=a,q-=1;else{if(H._color=a,H.left=V.right,V._color=o,V.right=H,P[q-2]=V,P[q-1]=p,c(H),c(V),q>=3){var G=P[q-3];G.left===H?G.left=V:G.right=V}break}}else{var X=H.right;if(X&&X._color===a)V._color=o,H.right=u(o,X),H._color=a,q-=1;else{if(V.right=p.left,H._color=a,H.left=p.right,p._color=o,p.left=V,p.right=H,P[q-2]=p,P[q-1]=V,c(H),c(V),c(p),q>=3){var G=P[q-3];G.left===H?G.left=p:G.right=p}break}}else if(V.right===p){var X=H.left;if(X&&X._color===a)V._color=o,H.left=u(o,X),H._color=a,q-=1;else{if(H._color=a,H.right=V.left,V._color=o,V.left=H,P[q-2]=V,P[q-1]=p,c(H),c(V),q>=3){var G=P[q-3];G.right===H?G.right=V:G.left=V}break}}else{var X=H.left;if(X&&X._color===a)V._color=o,H.left=u(o,X),H._color=a,q-=1;else{if(V.left=p.right,H._color=a,H.right=p.left,p._color=o,p.right=V,p.left=H,P[q-2]=p,P[q-1]=V,c(H),c(V),c(p),q>=3){var G=P[q-3];G.right===H?G.right=p:G.left=p}break}}}return P[0]._color=o,new f(M,P[0])};function d(_,C){if(C.left){var M=d(_,C.left);if(M)return M}var M=_(C.key,C.value);if(M)return M;if(C.right)return d(_,C.right)}function v(_,C,M,p){var P=C(_,p.key);if(P<=0){if(p.left){var T=v(_,C,M,p.left);if(T)return T}var T=M(p.key,p.value);if(T)return T}if(p.right)return v(_,C,M,p.right)}function x(_,C,M,p,P){var T=M(_,P.key),F=M(C,P.key),q;if(T<=0&&(P.left&&(q=x(_,C,M,p,P.left),q)||F>0&&(q=p(P.key,P.value),q)))return q;if(F>0&&P.right)return x(_,C,M,p,P.right)}h.forEach=function(C,M,p){if(this.root)switch(arguments.length){case 1:return d(C,this.root);case 2:return v(M,this._compare,C,this.root);case 3:return this._compare(M,p)>=0?void 0:x(M,p,this._compare,C,this.root)}},Object.defineProperty(h,"begin",{get:function(){for(var _=[],C=this.root;C;)_.push(C),C=C.left;return new b(this,_)}}),Object.defineProperty(h,"end",{get:function(){for(var _=[],C=this.root;C;)_.push(C),C=C.right;return new b(this,_)}}),h.at=function(_){if(_<0)return new b(this,[]);for(var C=this.root,M=[];;){if(M.push(C),C.left){if(_=C.right._count)break;C=C.right}else break}return new b(this,[])},h.ge=function(_){for(var C=this._compare,M=this.root,p=[],P=0;M;){var T=C(_,M.key);p.push(M),T<=0&&(P=p.length),T<=0?M=M.left:M=M.right}return p.length=P,new b(this,p)},h.gt=function(_){for(var C=this._compare,M=this.root,p=[],P=0;M;){var T=C(_,M.key);p.push(M),T<0&&(P=p.length),T<0?M=M.left:M=M.right}return p.length=P,new b(this,p)},h.lt=function(_){for(var C=this._compare,M=this.root,p=[],P=0;M;){var T=C(_,M.key);p.push(M),T>0&&(P=p.length),T<=0?M=M.left:M=M.right}return p.length=P,new b(this,p)},h.le=function(_){for(var C=this._compare,M=this.root,p=[],P=0;M;){var T=C(_,M.key);p.push(M),T>=0&&(P=p.length),T<0?M=M.left:M=M.right}return p.length=P,new b(this,p)},h.find=function(_){for(var C=this._compare,M=this.root,p=[];M;){var P=C(_,M.key);if(p.push(M),P===0)return new b(this,p);P<=0?M=M.left:M=M.right}return new b(this,[])},h.remove=function(_){var C=this.find(_);return C?C.remove():this},h.get=function(_){for(var C=this._compare,M=this.root;M;){var p=C(_,M.key);if(p===0)return M.value;p<=0?M=M.left:M=M.right}};function b(_,C){this.tree=_,this._stack=C}var g=b.prototype;Object.defineProperty(g,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(g,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),g.clone=function(){return new b(this.tree,this._stack.slice())};function E(_,C){_.key=C.key,_.value=C.value,_.left=C.left,_.right=C.right,_._color=C._color,_._count=C._count}function k(_){for(var C,M,p,P,T=_.length-1;T>=0;--T){if(C=_[T],T===0){C._color=o;return}if(M=_[T-1],M.left===C){if(p=M.right,p.right&&p.right._color===a){if(p=M.right=l(p),P=p.right=l(p.right),M.right=p.left,p.left=M,p.right=P,p._color=M._color,C._color=o,M._color=o,P._color=o,c(M),c(p),T>1){var F=_[T-2];F.left===M?F.left=p:F.right=p}_[T-1]=p;return}else if(p.left&&p.left._color===a){if(p=M.right=l(p),P=p.left=l(p.left),M.right=P.left,p.left=P.right,P.left=M,P.right=p,P._color=M._color,M._color=o,p._color=o,C._color=o,c(M),c(p),c(P),T>1){var F=_[T-2];F.left===M?F.left=P:F.right=P}_[T-1]=P;return}if(p._color===o)if(M._color===a){M._color=o,M.right=u(a,p);return}else{M.right=u(a,p);continue}else{if(p=l(p),M.right=p.left,p.left=M,p._color=M._color,M._color=a,c(M),c(p),T>1){var F=_[T-2];F.left===M?F.left=p:F.right=p}_[T-1]=p,_[T]=M,T+1<_.length?_[T+1]=C:_.push(C),T=T+2}}else{if(p=M.left,p.left&&p.left._color===a){if(p=M.left=l(p),P=p.left=l(p.left),M.left=p.right,p.right=M,p.left=P,p._color=M._color,C._color=o,M._color=o,P._color=o,c(M),c(p),T>1){var F=_[T-2];F.right===M?F.right=p:F.left=p}_[T-1]=p;return}else if(p.right&&p.right._color===a){if(p=M.left=l(p),P=p.right=l(p.right),M.left=P.right,p.right=P.left,P.right=M,P.left=p,P._color=M._color,M._color=o,p._color=o,C._color=o,c(M),c(p),c(P),T>1){var F=_[T-2];F.right===M?F.right=P:F.left=P}_[T-1]=P;return}if(p._color===o)if(M._color===a){M._color=o,M.left=u(a,p);return}else{M.left=u(a,p);continue}else{if(p=l(p),M.left=p.right,p.right=M,p._color=M._color,M._color=a,c(M),c(p),T>1){var F=_[T-2];F.right===M?F.right=p:F.left=p}_[T-1]=p,_[T]=M,T+1<_.length?_[T+1]=C:_.push(C),T=T+2}}}}g.remove=function(){var _=this._stack;if(_.length===0)return this.tree;var C=new Array(_.length),M=_[_.length-1];C[C.length-1]=new s(M._color,M.key,M.value,M.left,M.right,M._count);for(var p=_.length-2;p>=0;--p){var M=_[p];M.left===_[p+1]?C[p]=new s(M._color,M.key,M.value,C[p+1],M.right,M._count):C[p]=new s(M._color,M.key,M.value,M.left,C[p+1],M._count)}if(M=C[C.length-1],M.left&&M.right){var P=C.length;for(M=M.left;M.right;)C.push(M),M=M.right;var T=C[P-1];C.push(new s(M._color,T.key,T.value,M.left,M.right,M._count)),C[P-1].key=M.key,C[P-1].value=M.value;for(var p=C.length-2;p>=P;--p)M=C[p],C[p]=new s(M._color,M.key,M.value,M.left,C[p+1],M._count);C[P-1].left=C[P]}if(M=C[C.length-1],M._color===a){var F=C[C.length-2];F.left===M?F.left=null:F.right===M&&(F.right=null),C.pop();for(var p=0;p0)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(g,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(g,"index",{get:function(){var _=0,C=this._stack;if(C.length===0){var M=this.tree.root;return M?M._count:0}else C[C.length-1].left&&(_=C[C.length-1].left._count);for(var p=C.length-2;p>=0;--p)C[p+1]===C[p].right&&(++_,C[p].left&&(_+=C[p].left._count));return _},enumerable:!0}),g.next=function(){var _=this._stack;if(_.length!==0){var C=_[_.length-1];if(C.right)for(C=C.right;C;)_.push(C),C=C.left;else for(_.pop();_.length>0&&_[_.length-1].right===C;)C=_[_.length-1],_.pop()}},Object.defineProperty(g,"hasNext",{get:function(){var _=this._stack;if(_.length===0)return!1;if(_[_.length-1].right)return!0;for(var C=_.length-1;C>0;--C)if(_[C-1].left===_[C])return!0;return!1}}),g.update=function(_){var C=this._stack;if(C.length===0)throw new Error("Can't update empty node!");var M=new Array(C.length),p=C[C.length-1];M[M.length-1]=new s(p._color,p.key,_,p.left,p.right,p._count);for(var P=C.length-2;P>=0;--P)p=C[P],p.left===C[P+1]?M[P]=new s(p._color,p.key,p.value,M[P+1],p.right,p._count):M[P]=new s(p._color,p.key,p.value,p.left,M[P+1],p._count);return new f(this.tree._compare,M[0])},g.prev=function(){var _=this._stack;if(_.length!==0){var C=_[_.length-1];if(C.left)for(C=C.left;C;)_.push(C),C=C.right;else for(_.pop();_.length>0&&_[_.length-1].left===C;)C=_[_.length-1],_.pop()}},Object.defineProperty(g,"hasPrev",{get:function(){var _=this._stack;if(_.length===0)return!1;if(_[_.length-1].left)return!0;for(var C=_.length-1;C>0;--C)if(_[C-1].right===_[C])return!0;return!1}});function A(_,C){return _C?1:0}function L(_){return new f(_||A,null)}},3837:function(i,a,o){"use strict";i.exports=q;var s=o(4935),l=o(501),u=o(5304),c=o(6429),f=o(6444),h=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),d=ArrayBuffer,v=DataView;function x(V){return d.isView(V)&&!(V instanceof v)}function b(V){return Array.isArray(V)||x(V)}function g(V,H){return V[0]=H[0],V[1]=H[1],V[2]=H[2],V}function E(V){this.gl=V,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickFontStyle=["normal","normal","normal"],this.tickFontWeight=["normal","normal","normal"],this.tickFontVariant=["normal","normal","normal"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["sans-serif","sans-serif","sans-serif"],this.labelFontStyle=["normal","normal","normal"],this.labelFontWeight=["normal","normal","normal"],this.labelFontVariant=["normal","normal","normal"],this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=u(V)}var k=E.prototype;k.update=function(V){V=V||{};function H(Ae,ze,Ce){if(Ce in V){var me=V[Ce],Re=this[Ce],ce;(Ae?b(me)&&b(me[0]):b(me))?this[Ce]=ce=[ze(me[0]),ze(me[1]),ze(me[2])]:this[Ce]=ce=[ze(me),ze(me),ze(me)];for(var Ge=0;Ge<3;++Ge)if(ce[Ge]!==Re[Ge])return!0}return!1}var X=H.bind(this,!1,Number),G=H.bind(this,!1,Boolean),N=H.bind(this,!1,String),W=H.bind(this,!0,function(Ae){if(b(Ae)){if(Ae.length===3)return[+Ae[0],+Ae[1],+Ae[2],1];if(Ae.length===4)return[+Ae[0],+Ae[1],+Ae[2],+Ae[3]]}return[0,0,0,1]}),re,ae=!1,_e=!1;if("bounds"in V)for(var Me=V.bounds,ke=0;ke<2;++ke)for(var ge=0;ge<3;++ge)Me[ke][ge]!==this.bounds[ke][ge]&&(_e=!0),this.bounds[ke][ge]=Me[ke][ge];if("ticks"in V){re=V.ticks,ae=!0,this.autoTicks=!1;for(var ke=0;ke<3;++ke)this.tickSpacing[ke]=0}else X("tickSpacing")&&(this.autoTicks=!0,_e=!0);if(this._firstInit&&("ticks"in V||"tickSpacing"in V||(this.autoTicks=!0),_e=!0,ae=!0,this._firstInit=!1),_e&&this.autoTicks&&(re=f.create(this.bounds,this.tickSpacing),ae=!0),ae){for(var ke=0;ke<3;++ke)re[ke].sort(function(ze,Ce){return ze.x-Ce.x});f.equal(re,this.ticks)?ae=!1:this.ticks=re}G("tickEnable"),N("tickFont")&&(ae=!0),N("tickFontStyle")&&(ae=!0),N("tickFontWeight")&&(ae=!0),N("tickFontVariant")&&(ae=!0),X("tickSize"),X("tickAngle"),X("tickPad"),W("tickColor");var ie=N("labels");N("labelFont")&&(ie=!0),N("labelFontStyle")&&(ie=!0),N("labelFontWeight")&&(ie=!0),N("labelFontVariant")&&(ie=!0),G("labelEnable"),X("labelSize"),X("labelPad"),W("labelColor"),G("lineEnable"),G("lineMirror"),X("lineWidth"),W("lineColor"),G("lineTickEnable"),G("lineTickMirror"),X("lineTickLength"),X("lineTickWidth"),W("lineTickColor"),G("gridEnable"),X("gridWidth"),W("gridColor"),G("zeroEnable"),W("zeroLineColor"),X("zeroLineWidth"),G("backgroundEnable"),W("backgroundColor");var Te=[{family:this.labelFont[0],style:this.labelFontStyle[0],weight:this.labelFontWeight[0],variant:this.labelFontVariant[0]},{family:this.labelFont[1],style:this.labelFontStyle[1],weight:this.labelFontWeight[1],variant:this.labelFontVariant[1]},{family:this.labelFont[2],style:this.labelFontStyle[2],weight:this.labelFontWeight[2],variant:this.labelFontVariant[2]}],Ee=[{family:this.tickFont[0],style:this.tickFontStyle[0],weight:this.tickFontWeight[0],variant:this.tickFontVariant[0]},{family:this.tickFont[1],style:this.tickFontStyle[1],weight:this.tickFontWeight[1],variant:this.tickFontVariant[1]},{family:this.tickFont[2],style:this.tickFontStyle[2],weight:this.tickFontWeight[2],variant:this.tickFontVariant[2]}];this._text?this._text&&(ie||ae)&&this._text.update(this.bounds,this.labels,Te,this.ticks,Ee):this._text=s(this.gl,this.bounds,this.labels,Te,this.ticks,Ee),this._lines&&ae&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=l(this.gl,this.bounds,this.ticks))};function A(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}var L=[new A,new A,new A];function _(V,H,X,G,N){for(var W=V.primalOffset,re=V.primalMinor,ae=V.mirrorOffset,_e=V.mirrorMinor,Me=G[H],ke=0;ke<3;++ke)if(H!==ke){var ge=W,ie=ae,Te=re,Ee=_e;Me&1<0?(Te[ke]=-1,Ee[ke]=0):(Te[ke]=0,Ee[ke]=1)}}var C=[0,0,0],M={model:h,view:h,projection:h,_ortho:!1};k.isOpaque=function(){return!0},k.isTransparent=function(){return!1},k.drawTransparent=function(V){};var p=0,P=[0,0,0],T=[0,0,0],F=[0,0,0];k.draw=function(V){V=V||M;for(var Ce=this.gl,H=V.model||h,X=V.view||h,G=V.projection||h,N=this.bounds,W=V._ortho||!1,re=c(H,X,G,N,W),ae=re.cubeEdges,_e=re.axis,Me=X[12],ke=X[13],ge=X[14],ie=X[15],Te=W?2:1,Ee=Te*this.pixelRatio*(G[3]*Me+G[7]*ke+G[11]*ge+G[15]*ie)/Ce.drawingBufferHeight,Ae=0;Ae<3;++Ae)this.lastCubeProps.cubeEdges[Ae]=ae[Ae],this.lastCubeProps.axis[Ae]=_e[Ae];for(var ze=L,Ae=0;Ae<3;++Ae)_(L[Ae],Ae,this.bounds,ae,_e);for(var Ce=this.gl,me=C,Ae=0;Ae<3;++Ae)this.backgroundEnable[Ae]?me[Ae]=_e[Ae]:me[Ae]=0;this._background.draw(H,X,G,N,me,this.backgroundColor),this._lines.bind(H,X,G,this);for(var Ae=0;Ae<3;++Ae){var Re=[0,0,0];_e[Ae]>0?Re[Ae]=N[1][Ae]:Re[Ae]=N[0][Ae];for(var ce=0;ce<2;++ce){var Ge=(Ae+1+ce)%3,nt=(Ae+1+(ce^1))%3;this.gridEnable[Ge]&&this._lines.drawGrid(Ge,nt,this.bounds,Re,this.gridColor[Ge],this.gridWidth[Ge]*this.pixelRatio)}for(var ce=0;ce<2;++ce){var Ge=(Ae+1+ce)%3,nt=(Ae+1+(ce^1))%3;this.zeroEnable[nt]&&Math.min(N[0][nt],N[1][nt])<=0&&Math.max(N[0][nt],N[1][nt])>=0&&this._lines.drawZero(Ge,nt,this.bounds,Re,this.zeroLineColor[nt],this.zeroLineWidth[nt]*this.pixelRatio)}}for(var Ae=0;Ae<3;++Ae){this.lineEnable[Ae]&&this._lines.drawAxisLine(Ae,this.bounds,ze[Ae].primalOffset,this.lineColor[Ae],this.lineWidth[Ae]*this.pixelRatio),this.lineMirror[Ae]&&this._lines.drawAxisLine(Ae,this.bounds,ze[Ae].mirrorOffset,this.lineColor[Ae],this.lineWidth[Ae]*this.pixelRatio);for(var ct=g(P,ze[Ae].primalMinor),qt=g(T,ze[Ae].mirrorMinor),rt=this.lineTickLength,ce=0;ce<3;++ce){var ot=Ee/H[5*ce];ct[ce]*=rt[ce]*ot,qt[ce]*=rt[ce]*ot}this.lineTickEnable[Ae]&&this._lines.drawAxisTicks(Ae,ze[Ae].primalOffset,ct,this.lineTickColor[Ae],this.lineTickWidth[Ae]*this.pixelRatio),this.lineTickMirror[Ae]&&this._lines.drawAxisTicks(Ae,ze[Ae].mirrorOffset,qt,this.lineTickColor[Ae],this.lineTickWidth[Ae]*this.pixelRatio)}this._lines.unbind(),this._text.bind(H,X,G,this.pixelRatio);var Rt,kt=.5,Ct,Yt;function xr(St){Yt=[0,0,0],Yt[St]=1}function er(St,Et,dt){var Ht=(St+1)%3,$t=(St+2)%3,fr=Et[Ht],_r=Et[$t],Br=dt[Ht],Or=dt[$t];if(fr>0&&Or>0){xr(Ht);return}else if(fr>0&&Or<0){xr(Ht);return}else if(fr<0&&Or>0){xr(Ht);return}else if(fr<0&&Or<0){xr(Ht);return}else if(_r>0&&Br>0){xr($t);return}else if(_r>0&&Br<0){xr($t);return}else if(_r<0&&Br>0){xr($t);return}else if(_r<0&&Br<0){xr($t);return}}for(var Ae=0;Ae<3;++Ae){for(var Ke=ze[Ae].primalMinor,xt=ze[Ae].mirrorMinor,bt=g(F,ze[Ae].primalOffset),ce=0;ce<3;++ce)this.lineTickEnable[Ae]&&(bt[ce]+=Ee*Ke[ce]*Math.max(this.lineTickLength[ce],0)/H[5*ce]);var Lt=[0,0,0];if(Lt[Ae]=1,this.tickEnable[Ae]){this.tickAngle[Ae]===-3600?(this.tickAngle[Ae]=0,this.tickAlign[Ae]="auto"):this.tickAlign[Ae]=-1,Ct=1,Rt=[this.tickAlign[Ae],kt,Ct],Rt[0]==="auto"?Rt[0]=p:Rt[0]=parseInt(""+Rt[0]),Yt=[0,0,0],er(Ae,Ke,xt);for(var ce=0;ce<3;++ce)bt[ce]+=Ee*Ke[ce]*this.tickPad[ce]/H[5*ce];this._text.drawTicks(Ae,this.tickSize[Ae],this.tickAngle[Ae],bt,this.tickColor[Ae],Lt,Yt,Rt)}if(this.labelEnable[Ae]){Ct=0,Yt=[0,0,0],this.labels[Ae].length>4&&(xr(Ae),Ct=1),Rt=[this.labelAlign[Ae],kt,Ct],Rt[0]==="auto"?Rt[0]=p:Rt[0]=parseInt(""+Rt[0]);for(var ce=0;ce<3;++ce)bt[ce]+=Ee*Ke[ce]*this.labelPad[ce]/H[5*ce];bt[Ae]+=.5*(N[0][Ae]+N[1][Ae]),this._text.drawLabel(Ae,this.labelSize[Ae],this.labelAngle[Ae],bt,this.labelColor[Ae],[0,0,0],Yt,Rt)}}this._text.unbind()},k.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null};function q(V,H){var X=new E(V);return X.update(H),X}},5304:function(i,a,o){"use strict";i.exports=h;var s=o(2762),l=o(8116),u=o(1879).bg;function c(d,v,x,b){this.gl=d,this.buffer=v,this.vao=x,this.shader=b}var f=c.prototype;f.draw=function(d,v,x,b,g,E){for(var k=!1,A=0;A<3;++A)k=k||g[A];if(k){var L=this.gl;L.enable(L.POLYGON_OFFSET_FILL),L.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:d,view:v,projection:x,bounds:b,enable:g,colors:E},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),L.disable(L.POLYGON_OFFSET_FILL)}},f.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()};function h(d){for(var v=[],x=[],b=0,g=0;g<3;++g)for(var E=(g+1)%3,k=(g+2)%3,A=[0,0,0],L=[0,0,0],_=-1;_<=1;_+=2){x.push(b,b+2,b+1,b+1,b+2,b+3),A[g]=_,L[g]=_;for(var C=-1;C<=1;C+=2){A[E]=C;for(var M=-1;M<=1;M+=2)A[k]=M,v.push(A[0],A[1],A[2],L[0],L[1],L[2]),b+=1}var p=E;E=k,k=p}var P=s(d,new Float32Array(v)),T=s(d,new Uint16Array(x),d.ELEMENT_ARRAY_BUFFER),F=l(d,[{buffer:P,type:d.FLOAT,size:3,offset:0,stride:24},{buffer:P,type:d.FLOAT,size:3,offset:12,stride:24}],T),q=u(d);return q.attributes.position.location=0,q.attributes.normal.location=1,new c(d,P,F,q)}},6429:function(i,a,o){"use strict";i.exports=_;var s=o(8828),l=o(6760),u=o(5202),c=o(3250),f=new Array(16),h=new Array(8),d=new Array(8),v=new Array(3),x=[0,0,0];(function(){for(var C=0;C<8;++C)h[C]=[1,1,1,1],d[C]=[1,1,1]})();function b(C,M,p){for(var P=0;P<4;++P){C[P]=p[12+P];for(var T=0;T<3;++T)C[P]+=M[T]*p[4*T+P]}}var g=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function E(C){for(var M=0;M_e&&(X|=1<_e){X|=1<d[q][1])&&(ze=q);for(var Ce=-1,q=0;q<3;++q){var me=ze^1<d[Re][0]&&(Re=me)}}var ce=k;ce[0]=ce[1]=ce[2]=0,ce[s.log2(Ce^ze)]=ze&Ce,ce[s.log2(ze^Re)]=zeℜvar Ge=Re^7;Ge===X||Ge===Ae?(Ge=Ce^7,ce[s.log2(Re^Ge)]=Ge&Re):ce[s.log2(Ce^Ge)]=Ge&Ce;for(var nt=A,ct=X,W=0;W<3;++W)ct&1<{});function Vm(){}function KEe(){return this.rgb().formatHex()}function qkt(){return this.rgb().formatHex8()}function Okt(){return ike(this).formatHsl()}function JEe(){return this.rgb().formatRgb()}function W_(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Lkt.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?$Ee(t):r===3?new hd(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?gD(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?gD(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Pkt.exec(e))?new hd(t[1],t[2],t[3],1):(t=Ikt.exec(e))?new hd(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Rkt.exec(e))?gD(t[1],t[2],t[3],t[4]):(t=Dkt.exec(e))?gD(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=zkt.exec(e))?tke(t[1],t[2]/100,t[3]/100,1):(t=Fkt.exec(e))?tke(t[1],t[2]/100,t[3]/100,t[4]):YEe.hasOwnProperty(e)?$Ee(YEe[e]):e==="transparent"?new hd(NaN,NaN,NaN,0):null}function $Ee(e){return new hd(e>>16&255,e>>8&255,e&255,1)}function gD(e,t,r,n){return n<=0&&(e=t=r=NaN),new hd(e,t,r,n)}function CE(e){return e instanceof Vm||(e=W_(e)),e?(e=e.rgb(),new hd(e.r,e.g,e.b,e.opacity)):new hd}function T5(e,t,r,n){return arguments.length===1?CE(e):new hd(e,t,r,n==null?1:n)}function hd(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function QEe(){return`#${M2(this.r)}${M2(this.g)}${M2(this.b)}`}function Bkt(){return`#${M2(this.r)}${M2(this.g)}${M2(this.b)}${M2((isNaN(this.opacity)?1:this.opacity)*255)}`}function eke(){let e=yD(this.opacity);return`${e===1?"rgb(":"rgba("}${E2(this.r)}, ${E2(this.g)}, ${E2(this.b)}${e===1?")":`, ${e})`}`}function yD(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function E2(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function M2(e){return e=E2(e),(e<16?"0":"")+e.toString(16)}function tke(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Zg(e,t,r,n)}function ike(e){if(e instanceof Zg)return new Zg(e.h,e.s,e.l,e.opacity);if(e instanceof Vm||(e=W_(e)),!e)return new Zg;if(e instanceof Zg)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(t===a?o=(r-n)/s+(r0&&l<1?0:o,new Zg(o,s,l,e.opacity)}function LE(e,t,r,n){return arguments.length===1?ike(e):new Zg(e,t,r,n==null?1:n)}function Zg(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function rke(e){return e=(e||0)%360,e<0?e+360:e}function mD(e){return Math.max(0,Math.min(1,e||0))}function oW(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var j_,k2,w5,kE,Um,Lkt,Pkt,Ikt,Rkt,Dkt,zkt,Fkt,YEe,_D=Ll(()=>{pD();j_=.7,k2=1/j_,w5="\\s*([+-]?\\d+)\\s*",kE="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Um="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Lkt=/^#([0-9a-f]{3,8})$/,Pkt=new RegExp(`^rgb\\(${w5},${w5},${w5}\\)$`),Ikt=new RegExp(`^rgb\\(${Um},${Um},${Um}\\)$`),Rkt=new RegExp(`^rgba\\(${w5},${w5},${w5},${kE}\\)$`),Dkt=new RegExp(`^rgba\\(${Um},${Um},${Um},${kE}\\)$`),zkt=new RegExp(`^hsl\\(${kE},${Um},${Um}\\)$`),Fkt=new RegExp(`^hsla\\(${kE},${Um},${Um},${kE}\\)$`),YEe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Xy(Vm,W_,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:KEe,formatHex:KEe,formatHex8:qkt,formatHsl:Okt,formatRgb:JEe,toString:JEe});Xy(hd,T5,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new hd(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new hd(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new hd(E2(this.r),E2(this.g),E2(this.b),yD(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:QEe,formatHex:QEe,formatHex8:Bkt,formatRgb:eke,toString:eke}));Xy(Zg,LE,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new Zg(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new Zg(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new hd(oW(e>=240?e-240:e+120,i,n),oW(e,i,n),oW(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Zg(rke(this.h),mD(this.s),mD(this.l),yD(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=yD(this.opacity);return`${e===1?"hsl(":"hsla("}${rke(this.h)}, ${mD(this.s)*100}%, ${mD(this.l)*100}%${e===1?")":`, ${e})`}`}}))});var xD,bD,sW=Ll(()=>{xD=Math.PI/180,bD=180/Math.PI});function uke(e){if(e instanceof Hm)return new Hm(e.l,e.a,e.b,e.opacity);if(e instanceof Yy)return cke(e);e instanceof hd||(e=CE(e));var t=fW(e.r),r=fW(e.g),n=fW(e.b),i=lW((.2225045*t+.7168786*r+.0606169*n)/ake),a,o;return t===r&&r===n?a=o=i:(a=lW((.4360747*t+.3850649*r+.1430804*n)/nke),o=lW((.0139322*t+.0971045*r+.7141733*n)/oke)),new Hm(116*i-16,500*(a-i),200*(i-o),e.opacity)}function S5(e,t,r,n){return arguments.length===1?uke(e):new Hm(e,t,r,n==null?1:n)}function Hm(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function lW(e){return e>Nkt?Math.pow(e,1/3):e/lke+ske}function uW(e){return e>A5?e*e*e:lke*(e-ske)}function cW(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function fW(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Ukt(e){if(e instanceof Yy)return new Yy(e.h,e.c,e.l,e.opacity);if(e instanceof Hm||(e=uke(e)),e.a===0&&e.b===0)return new Yy(NaN,0{pD();_D();sW();wD=18,nke=.96422,ake=1,oke=.82521,ske=4/29,A5=6/29,lke=3*A5*A5,Nkt=A5*A5*A5;Xy(Hm,S5,G_(Vm,{brighter(e){return new Hm(this.l+wD*(e==null?1:e),this.a,this.b,this.opacity)},darker(e){return new Hm(this.l-wD*(e==null?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=nke*uW(t),e=ake*uW(e),r=oke*uW(r),new hd(cW(3.1338561*t-1.6168667*e-.4906146*r),cW(-.9787684*t+1.9161415*e+.033454*r),cW(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));Xy(Yy,PE,G_(Vm,{brighter(e){return new Yy(this.h,this.c,this.l+wD*(e==null?1:e),this.opacity)},darker(e){return new Yy(this.h,this.c,this.l-wD*(e==null?1:e),this.opacity)},rgb(){return cke(this).rgb()}}))});function Vkt(e){if(e instanceof C2)return new C2(e.h,e.s,e.l,e.opacity);e instanceof hd||(e=CE(e));var t=e.r/255,r=e.g/255,n=e.b/255,i=(vke*n+hke*t-dke*r)/(vke+hke-dke),a=n-i,o=(IE*(r-i)-dW*a)/TD,s=Math.sqrt(o*o+a*a)/(IE*i*(1-i)),l=s?Math.atan2(o,a)*bD-120:NaN;return new C2(l<0?l+360:l,s,i,e.opacity)}function M5(e,t,r,n){return arguments.length===1?Vkt(e):new C2(e,t,r,n==null?1:n)}function C2(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}var pke,hW,dW,TD,IE,hke,dke,vke,gke=Ll(()=>{pD();_D();sW();pke=-.14861,hW=1.78277,dW=-.29227,TD=-.90649,IE=1.97294,hke=IE*TD,dke=IE*hW,vke=hW*dW-TD*pke;Xy(C2,M5,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new C2(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new C2(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*xD,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),i=Math.sin(e);return new hd(255*(t+r*(pke*n+hW*i)),255*(t+r*(dW*n+TD*i)),255*(t+r*(IE*n)),this.opacity)}}))});var L2=Ll(()=>{_D();fke();gke()});function vW(e,t,r,n,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*r+(1+3*e+3*a-3*o)*n+o*i)/6}function AD(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],o=n>0?e[n-1]:2*i-a,s=n{});function MD(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],o=e[(n+1)%t],s=e[(n+2)%t];return vW((r-n/t)*t,i,a,o,s)}}var pW=Ll(()=>{SD()});var E5,gW=Ll(()=>{E5=e=>()=>e});function mke(e,t){return function(r){return e+r*t}}function Hkt(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function Z_(e,t){var r=t-e;return r?mke(e,r>180||r<-180?r-360*Math.round(r/360):r):E5(isNaN(e)?t:e)}function yke(e){return(e=+e)==1?qf:function(t,r){return r-t?Hkt(t,r,e):E5(isNaN(t)?r:t)}}function qf(e,t){var r=t-e;return r?mke(e,r):E5(isNaN(e)?t:e)}var P2=Ll(()=>{gW()});function _ke(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),o,s;for(o=0;o{L2();SD();pW();P2();RE=function e(t){var r=yke(t);function n(i,a){var o=r((i=T5(i)).r,(a=T5(a)).r),s=r(i.g,a.g),l=r(i.b,a.b),u=qf(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=s(c),i.b=l(c),i.opacity=u(c),i+""}}return n.gamma=e,n}(1);xke=_ke(AD),bke=_ke(MD)});function k5(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i{});function wke(e,t){return(ED(t)?k5:yW)(e,t)}function yW(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),o;for(o=0;o{DE();kD()});function CD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var xW=Ll(()=>{});function Fp(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var zE=Ll(()=>{});function LD(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=X_(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var bW=Ll(()=>{DE()});function Gkt(e){return function(){return e}}function jkt(e){return function(t){return e(t)+""}}function PD(e,t){var r=TW.lastIndex=wW.lastIndex=0,n,i,a,o=-1,s=[],l=[];for(e=e+"",t=t+"";(n=TW.exec(e))&&(i=wW.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),s[o]?s[o]+=a:s[++o]=a),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:Fp(n,i)})),r=wW.lastIndex;return r{zE();TW=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,wW=new RegExp(TW.source,"g")});function X_(e,t){var r=typeof t,n;return t==null||r==="boolean"?E5(t):(r==="number"?Fp:r==="string"?(n=W_(t))?(t=n,RE):PD:t instanceof W_?RE:t instanceof Date?CD:ED(t)?k5:Array.isArray(t)?yW:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?LD:Fp)(e,t)}var DE=Ll(()=>{L2();mW();_W();xW();zE();bW();AW();gW();kD()});function Tke(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var Ake=Ll(()=>{});function Ske(e,t){var r=Z_(+e,+t);return function(n){var i=r(n);return i-360*Math.floor(i/360)}}var Mke=Ll(()=>{P2()});function Eke(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var kke=Ll(()=>{});function SW(e,t,r,n,i,a){var o,s,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),e*n{Cke=180/Math.PI,ID={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function Pke(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?ID:SW(t.a,t.b,t.c,t.d,t.e,t.f)}function Ike(e){return e==null?ID:(RD||(RD=document.createElementNS("http://www.w3.org/2000/svg","g")),RD.setAttribute("transform",e),(e=RD.transform.baseVal.consolidate())?(e=e.matrix,SW(e.a,e.b,e.c,e.d,e.e,e.f)):ID)}var RD,Rke=Ll(()=>{Lke()});function Dke(e,t,r,n){function i(u){return u.length?u.pop()+" ":""}function a(u,c,f,h,d,v){if(u!==f||c!==h){var x=d.push("translate(",null,t,null,r);v.push({i:x-4,x:Fp(u,f)},{i:x-2,x:Fp(c,h)})}else(f||h)&&d.push("translate("+f+t+h+r)}function o(u,c,f,h){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),h.push({i:f.push(i(f)+"rotate(",null,n)-2,x:Fp(u,c)})):c&&f.push(i(f)+"rotate("+c+n)}function s(u,c,f,h){u!==c?h.push({i:f.push(i(f)+"skewX(",null,n)-2,x:Fp(u,c)}):c&&f.push(i(f)+"skewX("+c+n)}function l(u,c,f,h,d,v){if(u!==f||c!==h){var x=d.push(i(d)+"scale(",null,",",null,")");v.push({i:x-4,x:Fp(u,f)},{i:x-2,x:Fp(c,h)})}else(f!==1||h!==1)&&d.push(i(d)+"scale("+f+","+h+")")}return function(u,c){var f=[],h=[];return u=e(u),c=e(c),a(u.translateX,u.translateY,c.translateX,c.translateY,f,h),o(u.rotate,c.rotate,f,h),s(u.skewX,c.skewX,f,h),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,h),u=c=null,function(d){for(var v=-1,x=h.length,b;++v{zE();Rke();zke=Dke(Pke,"px, ","px)","deg)"),Fke=Dke(Ike,", ",")",")")});function Oke(e){return((e=Math.exp(e))+1/e)/2}function Zkt(e){return((e=Math.exp(e))-1/e)/2}function Xkt(e){return((e=Math.exp(2*e))-1)/(e+1)}var Wkt,Bke,Nke=Ll(()=>{Wkt=1e-12;Bke=function e(t,r,n){function i(a,o){var s=a[0],l=a[1],u=a[2],c=o[0],f=o[1],h=o[2],d=c-s,v=f-l,x=d*d+v*v,b,p;if(x{L2();P2();Vke=Uke(Z_),Hke=Uke(qf)});function MW(e,t){var r=qf((e=S5(e)).l,(t=S5(t)).l),n=qf(e.a,t.a),i=qf(e.b,t.b),a=qf(e.opacity,t.opacity);return function(o){return e.l=r(o),e.a=n(o),e.b=i(o),e.opacity=a(o),e+""}}var jke=Ll(()=>{L2();P2()});function Wke(e){return function(t,r){var n=e((t=PE(t)).h,(r=PE(r)).h),i=qf(t.c,r.c),a=qf(t.l,r.l),o=qf(t.opacity,r.opacity);return function(s){return t.h=n(s),t.c=i(s),t.l=a(s),t.opacity=o(s),t+""}}}var Zke,Xke,Yke=Ll(()=>{L2();P2();Zke=Wke(Z_),Xke=Wke(qf)});function Kke(e){return function t(r){r=+r;function n(i,a){var o=e((i=M5(i)).h,(a=M5(a)).h),s=qf(i.s,a.s),l=qf(i.l,a.l),u=qf(i.opacity,a.opacity);return function(c){return i.h=o(c),i.s=s(c),i.l=l(Math.pow(c,r)),i.opacity=u(c),i+""}}return n.gamma=t,n}(1)}var Jke,$ke,Qke=Ll(()=>{L2();P2();Jke=Kke(Z_),$ke=Kke(qf)});function EW(e,t){t===void 0&&(t=e,e=X_);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r{DE()});function tCe(e,t){for(var r=new Array(t),n=0;n{});var I2={};QQ(I2,{interpolate:()=>X_,interpolateArray:()=>wke,interpolateBasis:()=>AD,interpolateBasisClosed:()=>MD,interpolateCubehelix:()=>Jke,interpolateCubehelixLong:()=>$ke,interpolateDate:()=>CD,interpolateDiscrete:()=>Tke,interpolateHcl:()=>Zke,interpolateHclLong:()=>Xke,interpolateHsl:()=>Vke,interpolateHslLong:()=>Hke,interpolateHue:()=>Ske,interpolateLab:()=>MW,interpolateNumber:()=>Fp,interpolateNumberArray:()=>k5,interpolateObject:()=>LD,interpolateRgb:()=>RE,interpolateRgbBasis:()=>xke,interpolateRgbBasisClosed:()=>bke,interpolateRound:()=>Eke,interpolateString:()=>PD,interpolateTransformCss:()=>zke,interpolateTransformSvg:()=>Fke,interpolateZoom:()=>Bke,piecewise:()=>EW,quantize:()=>tCe});var R2=Ll(()=>{DE();_W();SD();pW();xW();Ake();Mke();zE();kD();bW();kke();AW();qke();Nke();mW();Gke();jke();Yke();Qke();eCe();rCe()});var DD=ye((cdr,iCe)=>{"use strict";var Ykt=ao(),Kkt=va();iCe.exports=function(t,r,n,i,a){var o=r.data.data,s=o.i,l=a||o.color;if(s>=0){r.i=o.i;var u=n.marker;u.pattern?(!u.colors||!u.pattern.shape)&&(u.color=l,r.color=l):(u.color=l,r.color=l),Ykt.pointStyle(t,n,i,r)}else Kkt.fill(t,l)}});var kW=ye((fdr,lCe)=>{"use strict";var nCe=xa(),aCe=va(),oCe=Mr(),Jkt=_v().resizeText,$kt=DD();function Qkt(e){var t=e._fullLayout._sunburstlayer.selectAll(".trace");Jkt(e,t,"sunburst"),t.each(function(r){var n=nCe.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){nCe.select(this).call(sCe,o,a,e)})})}function sCe(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=oCe.castOption(r,o,"marker.line.color")||aCe.defaultLine,l=oCe.castOption(r,o,"marker.line.width")||0;e.call($kt,t,r,n).style("stroke-width",l).call(aCe.stroke,s).style("opacity",a?r.leaf.opacity:null)}lCe.exports={style:Qkt,styleOne:sCe}});var Ky=ye(bs=>{"use strict";var D2=Mr(),eCt=va(),tCt=Tg(),uCe=u_();bs.findEntryWithLevel=function(e,t){var r;return t&&e.eachAfter(function(n){if(bs.getPtId(n)===t)return r=n.copy()}),r||e};bs.findEntryWithChild=function(e,t){var r;return e.eachAfter(function(n){for(var i=n.children||[],a=0;a0)};bs.getMaxDepth=function(e){return e.maxdepth>=0?e.maxdepth:1/0};bs.isHeader=function(e,t){return!(bs.isLeaf(e)||e.depth===t._maxDepth-1)};function cCe(e){return e.data.data.pid}bs.getParent=function(e,t){return bs.findEntryWithLevel(e,cCe(t))};bs.listPath=function(e,t){var r=e.parent;if(!r)return[];var n=t?[r.data[t]]:[r];return bs.listPath(r,t).concat(n)};bs.getPath=function(e){return bs.listPath(e,"label").join("/")+"/"};bs.formatValue=uCe.formatPieValue;bs.formatPercent=function(e,t){var r=D2.formatPercent(e,0);return r==="0%"&&(r=uCe.formatPiePercent(e,t)),r}});var OE=ye((ddr,dCe)=>{"use strict";var C5=xa(),fCe=ba(),nCt=rp().appendArrayPointValue,FE=Nc(),hCe=Mr(),aCt=g3(),Wh=Ky(),oCt=u_(),sCt=oCt.formatPieValue;dCe.exports=function(t,r,n,i,a){var o=i[0],s=o.trace,l=o.hierarchy,u=s.type==="sunburst",c=s.type==="treemap"||s.type==="icicle";"_hasHoverLabel"in s||(s._hasHoverLabel=!1),"_hasHoverEvent"in s||(s._hasHoverEvent=!1);var f=function(v){var x=n._fullLayout;if(!(n._dragging||x.hovermode===!1)){var b=n._fullData[s.index],p=v.data.data,E=p.i,k=Wh.isHierarchyRoot(v),A=Wh.getParent(l,v),L=Wh.getValue(v),_=function(Me){return hCe.castOption(b,E,Me)},C=_("hovertemplate"),M=FE.castHoverinfo(b,x,E),g=x.separators,P;if(C||M&&M!=="none"&&M!=="skip"){var T,F;u&&(T=o.cx+v.pxmid[0]*(1-v.rInscribed),F=o.cy+v.pxmid[1]*(1-v.rInscribed)),c&&(T=v._hoverX,F=v._hoverY);var q={},V=[],H=[],X=function(Me){return V.indexOf(Me)!==-1};M&&(V=M==="all"?b._module.attributes.hoverinfo.flags:M.split("+")),q.label=p.label,X("label")&&q.label&&H.push(q.label),p.hasOwnProperty("v")&&(q.value=p.v,q.valueLabel=sCt(q.value,g),X("value")&&H.push(q.valueLabel)),q.currentPath=v.currentPath=Wh.getPath(v.data),X("current path")&&!k&&H.push(q.currentPath);var G,N=[],W=function(){N.indexOf(G)===-1&&(H.push(G),N.push(G))};q.percentParent=v.percentParent=L/Wh.getValue(A),q.parent=v.parentString=Wh.getPtLabel(A),X("percent parent")&&(G=Wh.formatPercent(q.percentParent,g)+" of "+q.parent,W()),q.percentEntry=v.percentEntry=L/Wh.getValue(r),q.entry=v.entry=Wh.getPtLabel(r),X("percent entry")&&!k&&!v.onPathbar&&(G=Wh.formatPercent(q.percentEntry,g)+" of "+q.entry,W()),q.percentRoot=v.percentRoot=L/Wh.getValue(l),q.root=v.root=Wh.getPtLabel(l),X("percent root")&&!k&&(G=Wh.formatPercent(q.percentRoot,g)+" of "+q.root,W()),q.text=_("hovertext")||_("text"),X("text")&&(G=q.text,hCe.isValidTextValue(G)&&H.push(G)),P=[qE(v,b,a.eventDataKeys)];var re={trace:b,y:F,_x0:v._x0,_x1:v._x1,_y0:v._y0,_y1:v._y1,text:H.join("
"),name:C||X("name")?b.name:void 0,color:_("hoverlabel.bgcolor")||p.color,borderColor:_("hoverlabel.bordercolor"),fontFamily:_("hoverlabel.font.family"),fontSize:_("hoverlabel.font.size"),fontColor:_("hoverlabel.font.color"),fontWeight:_("hoverlabel.font.weight"),fontStyle:_("hoverlabel.font.style"),fontVariant:_("hoverlabel.font.variant"),nameLength:_("hoverlabel.namelength"),textAlign:_("hoverlabel.align"),hovertemplate:C,hovertemplateLabels:q,eventData:P};u&&(re.x0=T-v.rInscribed*v.rpx1,re.x1=T+v.rInscribed*v.rpx1,re.idealAlign=v.pxmid[0]<0?"left":"right"),c&&(re.x=T,re.idealAlign=T<0?"left":"right");var ae=[];FE.loneHover(re,{container:x._hoverlayer.node(),outerContainer:x._paper.node(),gd:n,inOut_bbox:ae}),P[0].bbox=ae[0],s._hasHoverLabel=!0}if(c){var _e=t.select("path.surface");a.styleOne(_e,v,b,n,{hovered:!0})}s._hasHoverEvent=!0,n.emit("plotly_hover",{points:P||[qE(v,b,a.eventDataKeys)],event:C5.event})}},h=function(v){var x=n._fullLayout,b=n._fullData[s.index],p=C5.select(this).datum();if(s._hasHoverEvent&&(v.originalEvent=C5.event,n.emit("plotly_unhover",{points:[qE(p,b,a.eventDataKeys)],event:C5.event}),s._hasHoverEvent=!1),s._hasHoverLabel&&(FE.loneUnhover(x._hoverlayer.node()),s._hasHoverLabel=!1),c){var E=t.select("path.surface");a.styleOne(E,p,b,n,{hovered:!1})}},d=function(v){var x=n._fullLayout,b=n._fullData[s.index],p=u&&(Wh.isHierarchyRoot(v)||Wh.isLeaf(v)),E=Wh.getPtId(v),k=Wh.isEntry(v)?Wh.findEntryWithChild(l,E):Wh.findEntryWithLevel(l,E),A=Wh.getPtId(k),L={points:[qE(v,b,a.eventDataKeys)],event:C5.event};p||(L.nextLevel=A);var _=aCt.triggerHandler(n,"plotly_"+s.type+"click",L);if(_!==!1&&x.hovermode&&(n._hoverdata=[qE(v,b,a.eventDataKeys)],FE.click(n,C5.event)),!p&&_!==!1&&!n._dragging&&!n._transitioning){fCe.call("_storeDirectGUIEdit",b,x._tracePreGUI[b.uid],{level:b.level});var C={data:[{level:A}],traces:[s.index]},M={frame:{redraw:!1,duration:a.transitionTime},transition:{duration:a.transitionTime,easing:a.transitionEasing},mode:"immediate",fromcurrent:!0};FE.loneUnhover(x._hoverlayer.node()),fCe.call("animate",n,C,M)}};t.on("mouseover",f),t.on("mouseout",h),t.on("click",d)};function qE(e,t,r){for(var n=e.data.data,i={curveNumber:t.index,pointNumber:n.i,data:t._input,fullData:t},a=0;a{"use strict";var BE=xa(),lCt=SE(),Xg=(R2(),B1(I2)).interpolate,vCe=ao(),bv=Mr(),uCt=Pl(),yCe=_v(),pCe=yCe.recordMinTextSize,cCt=yCe.clearMinTextSize,_Ce=dD(),fCt=u_().getRotationAngle,hCt=_Ce.computeTransform,dCt=_Ce.transformInsideText,vCt=kW().styleOne,pCt=N0().resizeText,gCt=OE(),CW=nW(),sl=Ky();zD.plot=function(e,t,r,n){var i=e._fullLayout,a=i._sunburstlayer,o,s,l=!r,u=!i.uniformtext.mode&&sl.hasTransition(r);if(cCt("sunburst",i),o=a.selectAll("g.trace.sunburst").data(t,function(f){return f[0].trace.uid}),o.enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),o.order(),u){n&&(s=n());var c=BE.transition().duration(r.duration).ease(r.easing).each("end",function(){s&&s()}).each("interrupt",function(){s&&s()});c.each(function(){a.selectAll("g.trace").each(function(f){gCe(e,f,this,r)})})}else o.each(function(f){gCe(e,f,this,r)}),i.uniformtext.mode&&pCt(e,i._sunburstlayer.selectAll(".trace"),"sunburst");l&&o.exit().remove()};function gCe(e,t,r,n){var i=e._context.staticPlot,a=e._fullLayout,o=!a.uniformtext.mode&&sl.hasTransition(n),s=BE.select(r),l=s.selectAll("g.slice"),u=t[0],c=u.trace,f=u.hierarchy,h=sl.findEntryWithLevel(f,c.level),d=sl.getMaxDepth(c),v=a._size,x=c.domain,b=v.w*(x.x[1]-x.x[0]),p=v.h*(x.y[1]-x.y[0]),E=.5*Math.min(b,p),k=u.cx=v.l+v.w*(x.x[1]+x.x[0])/2,A=u.cy=v.t+v.h*(1-x.y[0])-p/2;if(!h)return l.remove();var L=null,_={};o&&l.each(function(ge){_[sl.getPtId(ge)]={rpx0:ge.rpx0,rpx1:ge.rpx1,x0:ge.x0,x1:ge.x1,transform:ge.transform},!L&&sl.isEntry(ge)&&(L=ge)});var C=mCt(h).descendants(),M=h.height+1,g=0,P=d;u.hasMultipleRoots&&sl.isHierarchyRoot(h)&&(C=C.slice(1),M-=1,g=1,P+=1),C=C.filter(function(ge){return ge.y1<=P});var T=fCt(c.rotation);T&&C.forEach(function(ge){ge.x0+=T,ge.x1+=T});var F=Math.min(M,d),q=function(ge){return(ge-g)/F*E},V=function(ge,ie){return[ge*Math.cos(ie),-ge*Math.sin(ie)]},H=function(ge){return bv.pathAnnulus(ge.rpx0,ge.rpx1,ge.x0,ge.x1,k,A)},X=function(ge){return k+mCe(ge)[0]*(ge.transform.rCenter||0)+(ge.transform.x||0)},G=function(ge){return A+mCe(ge)[1]*(ge.transform.rCenter||0)+(ge.transform.y||0)};l=l.data(C,sl.getPtId),l.enter().append("g").classed("slice",!0),o?l.exit().transition().each(function(){var ge=BE.select(this),ie=ge.select("path.surface");ie.transition().attrTween("d",function(Ee){var Ae=ae(Ee);return function(ze){return H(Ae(ze))}});var Te=ge.select("g.slicetext");Te.attr("opacity",0)}).remove():l.exit().remove(),l.order();var N=null;if(o&&L){var W=sl.getPtId(L);l.each(function(ge){N===null&&sl.getPtId(ge)===W&&(N=ge.x1)})}var re=l;o&&(re=re.transition().each("end",function(){var ge=BE.select(this);sl.setSliceCursor(ge,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:!1})})),re.each(function(ge){var ie=BE.select(this),Te=bv.ensureSingle(ie,"path","surface",function(Re){Re.style("pointer-events",i?"none":"all")});ge.rpx0=q(ge.y0),ge.rpx1=q(ge.y1),ge.xmid=(ge.x0+ge.x1)/2,ge.pxmid=V(ge.rpx1,ge.xmid),ge.midangle=-(ge.xmid-Math.PI/2),ge.startangle=-(ge.x0-Math.PI/2),ge.stopangle=-(ge.x1-Math.PI/2),ge.halfangle=.5*Math.min(bv.angleDelta(ge.x0,ge.x1)||Math.PI,Math.PI),ge.ring=1-ge.rpx0/ge.rpx1,ge.rInscribed=yCt(ge,c),o?Te.transition().attrTween("d",function(Re){var ce=_e(Re);return function(Ge){return H(ce(Ge))}}):Te.attr("d",H),ie.call(gCt,h,e,t,{eventDataKeys:CW.eventDataKeys,transitionTime:CW.CLICK_TRANSITION_TIME,transitionEasing:CW.CLICK_TRANSITION_EASING}).call(sl.setSliceCursor,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:e._transitioning}),Te.call(vCt,ge,c,e);var Ee=bv.ensureSingle(ie,"g","slicetext"),Ae=bv.ensureSingle(Ee,"text","",function(Re){Re.attr("data-notex",1)}),ze=bv.ensureUniformFontSize(e,sl.determineTextFont(c,ge,a.font));Ae.text(zD.formatSliceLabel(ge,h,c,t,a)).classed("slicetext",!0).attr("text-anchor","middle").call(vCe.font,ze).call(uCt.convertToTspans,e);var Ce=vCe.bBox(Ae.node());ge.transform=dCt(Ce,ge,u),ge.transform.targetX=X(ge),ge.transform.targetY=G(ge);var me=function(Re,ce){var Ge=Re.transform;return hCt(Ge,ce),Ge.fontSize=ze.size,pCe(c.type,Ge,a),bv.getTextTransform(Ge)};o?Ae.transition().attrTween("transform",function(Re){var ce=Me(Re);return function(Ge){return me(ce(Ge),Ce)}}):Ae.attr("transform",me(ge,Ce))});function ae(ge){var ie=sl.getPtId(ge),Te=_[ie],Ee=_[sl.getPtId(h)],Ae;if(Ee){var ze=(ge.x1>Ee.x1?2*Math.PI:0)+T;Ae=ge.rpx1N?2*Math.PI:0)+T;Te={x0:Ae,x1:Ae}}else Te={rpx0:E,rpx1:E},bv.extendFlat(Te,ke(ge));else Te={rpx0:0,rpx1:0};else Te={x0:T,x1:T};return Xg(Te,Ee)}function Me(ge){var ie=_[sl.getPtId(ge)],Te,Ee=ge.transform;if(ie)Te=ie;else if(Te={rpx1:ge.rpx1,transform:{textPosAngle:Ee.textPosAngle,scale:0,rotate:Ee.rotate,rCenter:Ee.rCenter,x:Ee.x,y:Ee.y}},L)if(ge.parent)if(N){var Ae=ge.x1>N?2*Math.PI:0;Te.x0=Te.x1=Ae}else bv.extendFlat(Te,ke(ge));else Te.x0=Te.x1=T;else Te.x0=Te.x1=T;var ze=Xg(Te.transform.textPosAngle,ge.transform.textPosAngle),Ce=Xg(Te.rpx1,ge.rpx1),me=Xg(Te.x0,ge.x0),Re=Xg(Te.x1,ge.x1),ce=Xg(Te.transform.scale,Ee.scale),Ge=Xg(Te.transform.rotate,Ee.rotate),nt=Ee.rCenter===0?3:Te.transform.rCenter===0?1/3:1,ct=Xg(Te.transform.rCenter,Ee.rCenter),qt=function(rt){return ct(Math.pow(rt,nt))};return function(rt){var ot=Ce(rt),Rt=me(rt),kt=Re(rt),Ct=qt(rt),Yt=V(ot,(Rt+kt)/2),xr=ze(rt),er={pxmid:Yt,rpx1:ot,transform:{textPosAngle:xr,rCenter:Ct,x:Ee.x,y:Ee.y}};return pCe(c.type,Ee,a),{transform:{targetX:X(er),targetY:G(er),scale:ce(rt),rotate:Ge(rt),rCenter:Ct}}}}function ke(ge){var ie=ge.parent,Te=_[sl.getPtId(ie)],Ee={};if(Te){var Ae=ie.children,ze=Ae.indexOf(ge),Ce=Ae.length,me=Xg(Te.x0,Te.x1);Ee.x0=me(ze/Ce),Ee.x1=me(ze/Ce)}else Ee.x0=Ee.x1=0;return Ee}}function mCt(e){return lCt.partition().size([2*Math.PI,e.height+1])(e)}zD.formatSliceLabel=function(e,t,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!a&&(!o||o==="none"))return"";var s=i.separators,l=n[0],u=e.data.data,c=l.hierarchy,f=sl.isHierarchyRoot(e),h=sl.getParent(c,e),d=sl.getValue(e);if(!a){var v=o.split("+"),x=function(g){return v.indexOf(g)!==-1},b=[],p;if(x("label")&&u.label&&b.push(u.label),u.hasOwnProperty("v")&&x("value")&&b.push(sl.formatValue(u.v,s)),!f){x("current path")&&b.push(sl.getPath(e.data));var E=0;x("percent parent")&&E++,x("percent entry")&&E++,x("percent root")&&E++;var k=E>1;if(E){var A,L=function(g){p=sl.formatPercent(A,s),k&&(p+=" of "+g),b.push(p)};x("percent parent")&&!f&&(A=d/sl.getValue(h),L("parent")),x("percent entry")&&(A=d/sl.getValue(t),L("entry")),x("percent root")&&(A=d/sl.getValue(c),L("root"))}}return x("text")&&(p=bv.castOption(r,u.i,"text"),bv.isValidTextValue(p)&&b.push(p)),b.join("
")}var _=bv.castOption(r,u.i,"texttemplate");if(!_)return"";var C={};u.label&&(C.label=u.label),u.hasOwnProperty("v")&&(C.value=u.v,C.valueLabel=sl.formatValue(u.v,s)),C.currentPath=sl.getPath(e.data),f||(C.percentParent=d/sl.getValue(h),C.percentParentLabel=sl.formatPercent(C.percentParent,s),C.parent=sl.getPtLabel(h)),C.percentEntry=d/sl.getValue(t),C.percentEntryLabel=sl.formatPercent(C.percentEntry,s),C.entry=sl.getPtLabel(t),C.percentRoot=d/sl.getValue(c),C.percentRootLabel=sl.formatPercent(C.percentRoot,s),C.root=sl.getPtLabel(c),u.hasOwnProperty("color")&&(C.color=u.color);var M=bv.castOption(r,u.i,"text");return(bv.isValidTextValue(M)||M==="")&&(C.text=M),C.customdata=bv.castOption(r,u.i,"customdata"),bv.texttemplateString(_,C,i._d3locale,C,r._meta||{})};function yCt(e){return e.rpx0===0&&bv.isFullCircle([e.x0,e.x1])?1:Math.max(0,Math.min(1/(1+1/Math.sin(e.halfangle)),e.ring/2))}function mCe(e){return _Ct(e.rpx1,e.transform.textPosAngle)}function _Ct(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}});var bCe=ye((pdr,xCe)=>{"use strict";xCe.exports={moduleType:"trace",name:"sunburst",basePlotModule:zEe(),categories:[],animatable:!0,attributes:AE(),layoutAttributes:aW(),supplyDefaults:HEe(),supplyLayoutDefaults:jEe(),calc:EE().calc,crossTraceCalc:EE().crossTraceCalc,plot:FD().plot,style:kW().style,colorbar:Kd(),meta:{}}});var TCe=ye((gdr,wCe)=>{"use strict";wCe.exports=bCe()});var SCe=ye(L5=>{"use strict";var ACe=Xu();L5.name="treemap";L5.plot=function(e,t,r,n){ACe.plotBasePlot(L5.name,e,t,r,n)};L5.clean=function(e,t,r,n){ACe.cleanBasePlot(L5.name,e,t,r,n)}});var z2=ye((ydr,MCe)=>{"use strict";MCe.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}});var qD=ye((_dr,kCe)=>{"use strict";var xCt=Wo().hovertemplateAttrs,bCt=Wo().texttemplateAttrs,wCt=Jl(),TCt=Ju().attributes,F2=A2(),Q0=AE(),ECe=z2(),LW=no().extendFlat,ACt=Ed().pattern;kCe.exports={labels:Q0.labels,parents:Q0.parents,values:Q0.values,branchvalues:Q0.branchvalues,count:Q0.count,level:Q0.level,maxdepth:Q0.maxdepth,tiling:{packing:{valType:"enumerated",values:["squarify","binary","dice","slice","slice-dice","dice-slice"],dflt:"squarify",editType:"plot"},squarifyratio:{valType:"number",min:1,dflt:1,editType:"plot"},flip:{valType:"flaglist",flags:["x","y"],dflt:"",editType:"plot"},pad:{valType:"number",min:0,dflt:3,editType:"plot"},editType:"calc"},marker:LW({pad:{t:{valType:"number",min:0,editType:"plot"},l:{valType:"number",min:0,editType:"plot"},r:{valType:"number",min:0,editType:"plot"},b:{valType:"number",min:0,editType:"plot"},editType:"calc"},colors:Q0.marker.colors,pattern:ACt,depthfade:{valType:"enumerated",values:[!0,!1,"reversed"],editType:"style"},line:Q0.marker.line,cornerradius:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},wCt("marker",{colorAttr:"colors",anim:!1})),pathbar:{visible:{valType:"boolean",dflt:!0,editType:"plot"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},edgeshape:{valType:"enumerated",values:[">","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:LW({},F2.textfont,{}),editType:"calc"},text:F2.text,textinfo:Q0.textinfo,texttemplate:bCt({editType:"plot"},{keys:ECe.eventDataKeys.concat(["label","value"])}),hovertext:F2.hovertext,hoverinfo:Q0.hoverinfo,hovertemplate:xCt({},{keys:ECe.eventDataKeys}),textfont:F2.textfont,insidetextfont:F2.insidetextfont,outsidetextfont:LW({},F2.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:F2.sort,root:Q0.root,domain:TCt({name:"treemap",trace:!0,editType:"calc"})}});var PW=ye((xdr,CCe)=>{"use strict";CCe.exports={treemapcolorway:{valType:"colorlist",editType:"calc"},extendtreemapcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var RCe=ye((bdr,ICe)=>{"use strict";var LCe=Mr(),SCt=qD(),MCt=va(),ECt=Ju().defaults,kCt=r0().handleText,CCt=Qb().TEXTPAD,LCt=S2().handleMarkerDefaults,PCe=Mu(),PCt=PCe.hasColorscale,ICt=PCe.handleDefaults;ICe.exports=function(t,r,n,i){function a(b,p){return LCe.coerce(t,r,SCt,b,p)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth");var u=a("tiling.packing");u==="squarify"&&a("tiling.squarifyratio"),a("tiling.flip"),a("tiling.pad");var c=a("text");a("texttemplate"),r.texttemplate||a("textinfo",LCe.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate");var f=a("pathbar.visible"),h="auto";kCt(t,r,i,a,h,{hasPathbar:f,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition");var d=r.textposition.indexOf("bottom")!==-1;LCt(t,r,i,a);var v=r._hasColorscale=PCt(t,"marker","colors")||(t.marker||{}).coloraxis;v?ICt(t,r,i,a,{prefix:"marker.",cLetter:"c"}):a("marker.depthfade",!(r.marker.colors||[]).length);var x=r.textfont.size*2;a("marker.pad.t",d?x/4:x),a("marker.pad.l",x/4),a("marker.pad.r",x/4),a("marker.pad.b",d?x:x/4),a("marker.cornerradius"),r._hovered={marker:{line:{width:2,color:MCt.contrast(i.paper_bgcolor)}}},f&&(a("pathbar.thickness",r.pathbar.textfont.size+2*CCt),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),ECt(r,i,a),r._length=null}});var zCe=ye((wdr,DCe)=>{"use strict";var RCt=Mr(),DCt=PW();DCe.exports=function(t,r){function n(i,a){return RCt.coerce(t,r,DCt,i,a)}n("treemapcolorway",r.colorway),n("extendtreemapcolors")}});var RW=ye(IW=>{"use strict";var FCe=EE();IW.calc=function(e,t){return FCe.calc(e,t)};IW.crossTraceCalc=function(e){return FCe._runCrossTraceCalc("treemap",e)}});var DW=ye((Adr,qCe)=>{"use strict";qCe.exports=function e(t,r,n){var i;n.swapXY&&(i=t.x0,t.x0=t.y0,t.y0=i,i=t.x1,t.x1=t.y1,t.y1=i),n.flipX&&(i=t.x0,t.x0=r[0]-t.x1,t.x1=r[0]-i),n.flipY&&(i=t.y0,t.y0=r[1]-t.y1,t.y1=r[1]-i);var a=t.children;if(a)for(var o=0;o{"use strict";var P5=SE(),zCt=DW();OCe.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.packing==="dice-slice",s=n.pad[a?"bottom":"top"],l=n.pad[i?"right":"left"],u=n.pad[i?"left":"right"],c=n.pad[a?"top":"bottom"],f;o&&(f=l,l=s,s=f,f=u,u=c,c=f);var h=P5.treemap().tile(FCt(n.packing,n.squarifyratio)).paddingInner(n.pad.inner).paddingLeft(l).paddingRight(u).paddingTop(s).paddingBottom(c).size(o?[r[1],r[0]]:r)(t);return(o||i||a)&&zCt(h,r,{swapXY:o,flipX:i,flipY:a}),h};function FCt(e,t){switch(e){case"squarify":return P5.treemapSquarify.ratio(t);case"binary":return P5.treemapBinary;case"dice":return P5.treemapDice;case"slice":return P5.treemapSlice;default:return P5.treemapSliceDice}}});var OD=ye((Mdr,VCe)=>{"use strict";var BCe=xa(),I5=va(),NCe=Mr(),FW=Ky(),qCt=_v().resizeText,OCt=DD();function BCt(e){var t=e._fullLayout._treemaplayer.selectAll(".trace");qCt(e,t,"treemap"),t.each(function(r){var n=BCe.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){BCe.select(this).call(UCe,o,a,e,{hovered:!1})})})}function UCe(e,t,r,n,i){var a=(i||{}).hovered,o=t.data.data,s=o.i,l,u,c=o.color,f=FW.isHierarchyRoot(t),h=1;if(a)l=r._hovered.marker.line.color,u=r._hovered.marker.line.width;else if(f&&c===r.root.color)h=100,l="rgba(0,0,0,0)",u=0;else if(l=NCe.castOption(r,s,"marker.line.color")||I5.defaultLine,u=NCe.castOption(r,s,"marker.line.width")||0,!r._hasColorscale&&!t.onPathbar){var d=r.marker.depthfade;if(d){var v=I5.combine(I5.addOpacity(r._backgroundColor,.75),c),x;if(d===!0){var b=FW.getMaxDepth(r);isFinite(b)?FW.isLeaf(t)?x=0:x=r._maxVisibleLayers-(t.data.depth-r._entryDepth):x=t.data.height+1}else x=t.data.depth-r._entryDepth,r._atRootLevel||x++;if(x>0)for(var p=0;p{"use strict";var HCe=xa(),BD=Mr(),GCe=ao(),NCt=Pl(),UCt=zW(),jCe=OD().styleOne,qW=z2(),R5=Ky(),VCt=OE(),OW=!0;WCe.exports=function(t,r,n,i,a){var o=a.barDifY,s=a.width,l=a.height,u=a.viewX,c=a.viewY,f=a.pathSlice,h=a.toMoveInsideSlice,d=a.strTransform,v=a.hasTransition,x=a.handleSlicesExit,b=a.makeUpdateSliceInterpolator,p=a.makeUpdateTextInterpolator,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=L.hierarchy,M=s/_._entryDepth,g=R5.listPath(n.data,"id"),P=UCt(C.copy(),[s,l],{packing:"dice",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();P=P.filter(function(F){var q=g.indexOf(F.data.id);return q===-1?!1:(F.x0=M*q,F.x1=M*(q+1),F.y0=o,F.y1=o+l,F.onPathbar=!0,!0)}),P.reverse(),i=i.data(P,R5.getPtId),i.enter().append("g").classed("pathbar",!0),x(i,OW,E,[s,l],f),i.order();var T=i;v&&(T=T.transition().each("end",function(){var F=HCe.select(this);R5.setSliceCursor(F,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),T.each(function(F){F._x0=u(F.x0),F._x1=u(F.x1),F._y0=c(F.y0),F._y1=c(F.y1),F._hoverX=u(F.x1-Math.min(s,l)/2),F._hoverY=c(F.y1-l/2);var q=HCe.select(this),V=BD.ensureSingle(q,"path","surface",function(N){N.style("pointer-events",k?"none":"all")});v?V.transition().attrTween("d",function(N){var W=b(N,OW,E,[s,l]);return function(re){return f(W(re))}}):V.attr("d",f),q.call(VCt,n,t,r,{styleOne:jCe,eventDataKeys:qW.eventDataKeys,transitionTime:qW.CLICK_TRANSITION_TIME,transitionEasing:qW.CLICK_TRANSITION_EASING}).call(R5.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),V.call(jCe,F,_,t,{hovered:!1}),F._text=(R5.getPtLabel(F)||"").split("
").join(" ")||"";var H=BD.ensureSingle(q,"g","slicetext"),X=BD.ensureSingle(H,"text","",function(N){N.attr("data-notex",1)}),G=BD.ensureUniformFontSize(t,R5.determineTextFont(_,F,A.font,{onPathbar:!0}));X.text(F._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(GCe.font,G).call(NCt.convertToTspans,t),F.textBB=GCe.bBox(X.node()),F.transform=h(F,{fontSize:G.size,onPathbar:!0}),F.transform.fontSize=G.size,v?X.transition().attrTween("transform",function(N){var W=p(N,OW,E,[s,l]);return function(re){return d(W(re))}}):X.attr("transform",d(F))})}});var JCe=ye((kdr,KCe)=>{"use strict";var XCe=xa(),BW=(R2(),B1(I2)).interpolate,Y_=Ky(),NE=Mr(),YCe=Qb().TEXTPAD,HCt=i2(),GCt=HCt.toMoveInsideBar,jCt=_v(),NW=jCt.recordMinTextSize,WCt=z2(),ZCt=ZCe();function q2(e){return Y_.isHierarchyRoot(e)?"":Y_.getPtId(e)}KCe.exports=function(t,r,n,i,a){var o=t._fullLayout,s=r[0],l=s.trace,u=l.type,c=u==="icicle",f=s.hierarchy,h=Y_.findEntryWithLevel(f,l.level),d=XCe.select(n),v=d.selectAll("g.pathbar"),x=d.selectAll("g.slice");if(!h){v.remove(),x.remove();return}var b=Y_.isHierarchyRoot(h),p=!o.uniformtext.mode&&Y_.hasTransition(i),E=Y_.getMaxDepth(l),k=function(Ke){return Ke.data.depth-h.data.depth-1?C+P:-(g+P):0,F={x0:M,x1:M,y0:T,y1:T+g},q=function(Ke,xt,bt){var Lt=l.tiling.pad,St=function($t){return $t-Lt<=xt.x0},Et=function($t){return $t+Lt>=xt.x1},dt=function($t){return $t-Lt<=xt.y0},Ht=function($t){return $t+Lt>=xt.y1};return Ke.x0===xt.x0&&Ke.x1===xt.x1&&Ke.y0===xt.y0&&Ke.y1===xt.y1?{x0:Ke.x0,x1:Ke.x1,y0:Ke.y0,y1:Ke.y1}:{x0:St(Ke.x0-Lt)?0:Et(Ke.x0-Lt)?bt[0]:Ke.x0,x1:St(Ke.x1+Lt)?0:Et(Ke.x1+Lt)?bt[0]:Ke.x1,y0:dt(Ke.y0-Lt)?0:Ht(Ke.y0-Lt)?bt[1]:Ke.y0,y1:dt(Ke.y1+Lt)?0:Ht(Ke.y1+Lt)?bt[1]:Ke.y1}},V=null,H={},X={},G=null,N=function(Ke,xt){return xt?H[q2(Ke)]:X[q2(Ke)]},W=function(Ke,xt,bt,Lt){if(xt)return H[q2(f)]||F;var St=X[l.level]||bt;return k(Ke)?q(Ke,St,Lt):{}};s.hasMultipleRoots&&b&&E++,l._maxDepth=E,l._backgroundColor=o.paper_bgcolor,l._entryDepth=h.data.depth,l._atRootLevel=b;var re=-_/2+A.l+A.w*(L.x[1]+L.x[0])/2,ae=-C/2+A.t+A.h*(1-(L.y[1]+L.y[0])/2),_e=function(Ke){return re+Ke},Me=function(Ke){return ae+Ke},ke=Me(0),ge=_e(0),ie=function(Ke){return ge+Ke},Te=function(Ke){return ke+Ke};function Ee(Ke,xt){return Ke+","+xt}var Ae=ie(0),ze=function(Ke){Ke.x=Math.max(Ae,Ke.x)},Ce=l.pathbar.edgeshape,me=function(Ke){var xt=ie(Math.max(Math.min(Ke.x0,Ke.x0),0)),bt=ie(Math.min(Math.max(Ke.x1,Ke.x1),M)),Lt=Te(Ke.y0),St=Te(Ke.y1),Et=g/2,dt={},Ht={};dt.x=xt,Ht.x=bt,dt.y=Ht.y=(Lt+St)/2;var $t={x:xt,y:Lt},fr={x:bt,y:Lt},_r={x:bt,y:St},Br={x:xt,y:St};return Ce===">"?($t.x-=Et,fr.x-=Et,_r.x-=Et,Br.x-=Et):Ce==="/"?(_r.x-=Et,Br.x-=Et,dt.x-=Et/2,Ht.x-=Et/2):Ce==="\\"?($t.x-=Et,fr.x-=Et,dt.x-=Et/2,Ht.x-=Et/2):Ce==="<"&&(dt.x-=Et,Ht.x-=Et),ze($t),ze(Br),ze(dt),ze(fr),ze(_r),ze(Ht),"M"+Ee($t.x,$t.y)+"L"+Ee(fr.x,fr.y)+"L"+Ee(Ht.x,Ht.y)+"L"+Ee(_r.x,_r.y)+"L"+Ee(Br.x,Br.y)+"L"+Ee(dt.x,dt.y)+"Z"},Re=l[c?"tiling":"marker"].pad,ce=function(Ke){return l.textposition.indexOf(Ke)!==-1},Ge=ce("top"),nt=ce("left"),ct=ce("right"),qt=ce("bottom"),rt=function(Ke){var xt=_e(Ke.x0),bt=_e(Ke.x1),Lt=Me(Ke.y0),St=Me(Ke.y1),Et=bt-xt,dt=St-Lt;if(!Et||!dt)return"";var Ht=l.marker.cornerradius||0,$t=Math.min(Ht,Et/2,dt/2);$t&&Ke.data&&Ke.data.data&&Ke.data.data.label&&(Ge&&($t=Math.min($t,Re.t)),nt&&($t=Math.min($t,Re.l)),ct&&($t=Math.min($t,Re.r)),qt&&($t=Math.min($t,Re.b)));var fr=function(_r,Br){return $t?"a"+Ee($t,$t)+" 0 0 1 "+Ee(_r,Br):""};return"M"+Ee(xt,Lt+$t)+fr($t,-$t)+"L"+Ee(bt-$t,Lt)+fr($t,$t)+"L"+Ee(bt,St-$t)+fr(-$t,$t)+"L"+Ee(xt+$t,St)+fr(-$t,-$t)+"Z"},ot=function(Ke,xt){var bt=Ke.x0,Lt=Ke.x1,St=Ke.y0,Et=Ke.y1,dt=Ke.textBB,Ht=Ge||xt.isHeader&&!qt,$t=Ht?"start":qt?"end":"middle",fr=ce("right"),_r=ce("left")||xt.onPathbar,Br=_r?-1:fr?1:0;if(xt.isHeader){if(bt+=(c?Re:Re.l)-YCe,Lt-=(c?Re:Re.r)-YCe,bt>=Lt){var Or=(bt+Lt)/2;bt=Or,Lt=Or}var Nr;qt?(Nr=Et-(c?Re:Re.b),St{"use strict";var XCt=xa(),YCt=Ky(),KCt=_v(),JCt=KCt.clearMinTextSize,$Ct=N0().resizeText,$Ce=JCe();QCe.exports=function(t,r,n,i,a){var o=a.type,s=a.drawDescendants,l=t._fullLayout,u=l["_"+o+"layer"],c,f,h=!n;if(JCt(o,l),c=u.selectAll("g.trace."+o).data(r,function(v){return v[0].trace.uid}),c.enter().append("g").classed("trace",!0).classed(o,!0),c.order(),!l.uniformtext.mode&&YCt.hasTransition(n)){i&&(f=i());var d=XCt.transition().duration(n.duration).ease(n.easing).each("end",function(){f&&f()}).each("interrupt",function(){f&&f()});d.each(function(){u.selectAll("g.trace").each(function(v){$Ce(t,v,this,n,s)})})}else c.each(function(v){$Ce(t,v,this,n,s)}),l.uniformtext.mode&&$Ct(t,u.selectAll(".trace"),o);h&&c.exit().remove()}});var n6e=ye((Ldr,i6e)=>{"use strict";var e6e=xa(),ND=Mr(),t6e=ao(),QCt=Pl(),e6t=zW(),r6e=OD().styleOne,VW=z2(),K_=Ky(),t6t=OE(),r6t=FD().formatSliceLabel,HW=!1;i6e.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,x=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=_.textposition.indexOf("left")!==-1,M=_.textposition.indexOf("right")!==-1,g=_.textposition.indexOf("bottom")!==-1,P=!g&&!_.marker.pad.t||g&&!_.marker.pad.b,T=e6t(n,[o,s],{packing:_.tiling.packing,squarifyratio:_.tiling.squarifyratio,flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1,pad:{inner:_.tiling.pad,top:_.marker.pad.t,left:_.marker.pad.l,right:_.marker.pad.r,bottom:_.marker.pad.b}}),F=T.descendants(),q=1/0,V=-1/0;F.forEach(function(W){var re=W.depth;re>=_._maxDepth?(W.x0=W.x1=(W.x0+W.x1)/2,W.y0=W.y1=(W.y0+W.y1)/2):(q=Math.min(q,re),V=Math.max(V,re))}),i=i.data(F,K_.getPtId),_._maxVisibleLayers=isFinite(V)?V-q+1:0,i.enter().append("g").classed("slice",!0),v(i,HW,E,[o,s],c),i.order();var H=null;if(d&&p){var X=K_.getPtId(p);i.each(function(W){H===null&&K_.getPtId(W)===X&&(H={x0:W.x0,x1:W.x1,y0:W.y0,y1:W.y1})})}var G=function(){return H||{x0:0,x1:o,y0:0,y1:s}},N=i;return d&&(N=N.transition().each("end",function(){var W=e6e.select(this);K_.setSliceCursor(W,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),N.each(function(W){var re=K_.isHeader(W,_);W._x0=l(W.x0),W._x1=l(W.x1),W._y0=u(W.y0),W._y1=u(W.y1),W._hoverX=l(W.x1-_.marker.pad.r),W._hoverY=u(g?W.y1-_.marker.pad.b/2:W.y0+_.marker.pad.t/2);var ae=e6e.select(this),_e=ND.ensureSingle(ae,"path","surface",function(Ee){Ee.style("pointer-events",k?"none":"all")});d?_e.transition().attrTween("d",function(Ee){var Ae=x(Ee,HW,G(),[o,s]);return function(ze){return c(Ae(ze))}}):_e.attr("d",c),ae.call(t6t,n,t,r,{styleOne:r6e,eventDataKeys:VW.eventDataKeys,transitionTime:VW.CLICK_TRANSITION_TIME,transitionEasing:VW.CLICK_TRANSITION_EASING}).call(K_.setSliceCursor,t,{isTransitioning:t._transitioning}),_e.call(r6e,W,_,t,{hovered:!1}),W.x0===W.x1||W.y0===W.y1?W._text="":re?W._text=P?"":K_.getPtLabel(W)||"":W._text=r6t(W,n,_,r,A)||"";var Me=ND.ensureSingle(ae,"g","slicetext"),ke=ND.ensureSingle(Me,"text","",function(Ee){Ee.attr("data-notex",1)}),ge=ND.ensureUniformFontSize(t,K_.determineTextFont(_,W,A.font)),ie=W._text||" ",Te=re&&ie.indexOf("
")===-1;ke.text(ie).classed("slicetext",!0).attr("text-anchor",M?"end":C||Te?"start":"middle").call(t6e.font,ge).call(QCt.convertToTspans,t),W.textBB=t6e.bBox(ke.node()),W.transform=f(W,{fontSize:ge.size,isHeader:re}),W.transform.fontSize=ge.size,d?ke.transition().attrTween("transform",function(Ee){var Ae=b(Ee,HW,G(),[o,s]);return function(ze){return h(Ae(ze))}}):ke.attr("transform",h(W))}),H}});var o6e=ye((Pdr,a6e)=>{"use strict";var i6t=UW(),n6t=n6e();a6e.exports=function(t,r,n,i){return i6t(t,r,n,i,{type:"treemap",drawDescendants:n6t})}});var l6e=ye((Idr,s6e)=>{"use strict";s6e.exports={moduleType:"trace",name:"treemap",basePlotModule:SCe(),categories:[],animatable:!0,attributes:qD(),layoutAttributes:PW(),supplyDefaults:RCe(),supplyLayoutDefaults:zCe(),calc:RW().calc,crossTraceCalc:RW().crossTraceCalc,plot:o6e(),style:OD().style,colorbar:Kd(),meta:{}}});var c6e=ye((Rdr,u6e)=>{"use strict";u6e.exports=l6e()});var h6e=ye(D5=>{"use strict";var f6e=Xu();D5.name="icicle";D5.plot=function(e,t,r,n){f6e.plotBasePlot(D5.name,e,t,r,n)};D5.clean=function(e,t,r,n){f6e.cleanBasePlot(D5.name,e,t,r,n)}});var GW=ye((zdr,v6e)=>{"use strict";var a6t=Wo().hovertemplateAttrs,o6t=Wo().texttemplateAttrs,s6t=Jl(),l6t=Ju().attributes,UE=A2(),o0=AE(),UD=qD(),d6e=z2(),u6t=no().extendFlat,c6t=Ed().pattern;v6e.exports={labels:o0.labels,parents:o0.parents,values:o0.values,branchvalues:o0.branchvalues,count:o0.count,level:o0.level,maxdepth:o0.maxdepth,tiling:{orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"plot"},flip:UD.tiling.flip,pad:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},marker:u6t({colors:o0.marker.colors,line:o0.marker.line,pattern:c6t,editType:"calc"},s6t("marker",{colorAttr:"colors",anim:!1})),leaf:o0.leaf,pathbar:UD.pathbar,text:UE.text,textinfo:o0.textinfo,texttemplate:o6t({editType:"plot"},{keys:d6e.eventDataKeys.concat(["label","value"])}),hovertext:UE.hovertext,hoverinfo:o0.hoverinfo,hovertemplate:a6t({},{keys:d6e.eventDataKeys}),textfont:UE.textfont,insidetextfont:UE.insidetextfont,outsidetextfont:UD.outsidetextfont,textposition:UD.textposition,sort:UE.sort,root:o0.root,domain:l6t({name:"icicle",trace:!0,editType:"calc"})}});var jW=ye((Fdr,p6e)=>{"use strict";p6e.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var _6e=ye((qdr,y6e)=>{"use strict";var g6e=Mr(),f6t=GW(),h6t=va(),d6t=Ju().defaults,v6t=r0().handleText,p6t=Qb().TEXTPAD,g6t=S2().handleMarkerDefaults,m6e=Mu(),m6t=m6e.hasColorscale,y6t=m6e.handleDefaults;y6e.exports=function(t,r,n,i){function a(d,v){return g6e.coerce(t,r,f6t,d,v)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),a("tiling.orientation"),a("tiling.flip"),a("tiling.pad");var u=a("text");a("texttemplate"),r.texttemplate||a("textinfo",g6e.isArrayOrTypedArray(u)?"text+label":"label"),a("hovertext"),a("hovertemplate");var c=a("pathbar.visible"),f="auto";v6t(t,r,i,a,f,{hasPathbar:c,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition"),g6t(t,r,i,a);var h=r._hasColorscale=m6t(t,"marker","colors")||(t.marker||{}).coloraxis;h&&y6t(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",h?1:.7),r._hovered={marker:{line:{width:2,color:h6t.contrast(i.paper_bgcolor)}}},c&&(a("pathbar.thickness",r.pathbar.textfont.size+2*p6t),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),d6t(r,i,a),r._length=null}});var b6e=ye((Odr,x6e)=>{"use strict";var _6t=Mr(),x6t=jW();x6e.exports=function(t,r){function n(i,a){return _6t.coerce(t,r,x6t,i,a)}n("iciclecolorway",r.colorway),n("extendiciclecolors")}});var ZW=ye(WW=>{"use strict";var w6e=EE();WW.calc=function(e,t){return w6e.calc(e,t)};WW.crossTraceCalc=function(e){return w6e._runCrossTraceCalc("icicle",e)}});var A6e=ye((Ndr,T6e)=>{"use strict";var b6t=SE(),w6t=DW();T6e.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.orientation==="h",s=n.maxDepth,l=r[0],u=r[1];s&&(l=(t.height+1)*r[0]/Math.min(t.height+1,s),u=(t.height+1)*r[1]/Math.min(t.height+1,s));var c=b6t.partition().padding(n.pad.inner).size(o?[r[1],l]:[r[0],u])(t);return(o||i||a)&&w6t(c,r,{swapXY:o,flipX:i,flipY:a}),c}});var XW=ye((Udr,C6e)=>{"use strict";var S6e=xa(),M6e=va(),E6e=Mr(),T6t=_v().resizeText,A6t=DD();function S6t(e){var t=e._fullLayout._iciclelayer.selectAll(".trace");T6t(e,t,"icicle"),t.each(function(r){var n=S6e.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){S6e.select(this).call(k6e,o,a,e)})})}function k6e(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=E6e.castOption(r,o,"marker.line.color")||M6e.defaultLine,l=E6e.castOption(r,o,"marker.line.width")||0;e.call(A6t,t,r,n).style("stroke-width",l).call(M6e.stroke,s).style("opacity",a?r.leaf.opacity:null)}C6e.exports={style:S6t,styleOne:k6e}});var D6e=ye((Vdr,R6e)=>{"use strict";var L6e=xa(),VD=Mr(),P6e=ao(),M6t=Pl(),E6t=A6e(),I6e=XW().styleOne,YW=z2(),z5=Ky(),k6t=OE(),C6t=FD().formatSliceLabel,KW=!1;R6e.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,x=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=_.textposition.indexOf("left")!==-1,M=_.textposition.indexOf("right")!==-1,g=_.textposition.indexOf("bottom")!==-1,P=E6t(n,[o,s],{flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1,orientation:_.tiling.orientation,pad:{inner:_.tiling.pad},maxDepth:_._maxDepth}),T=P.descendants(),F=1/0,q=-1/0;T.forEach(function(N){var W=N.depth;W>=_._maxDepth?(N.x0=N.x1=(N.x0+N.x1)/2,N.y0=N.y1=(N.y0+N.y1)/2):(F=Math.min(F,W),q=Math.max(q,W))}),i=i.data(T,z5.getPtId),_._maxVisibleLayers=isFinite(q)?q-F+1:0,i.enter().append("g").classed("slice",!0),v(i,KW,E,[o,s],c),i.order();var V=null;if(d&&p){var H=z5.getPtId(p);i.each(function(N){V===null&&z5.getPtId(N)===H&&(V={x0:N.x0,x1:N.x1,y0:N.y0,y1:N.y1})})}var X=function(){return V||{x0:0,x1:o,y0:0,y1:s}},G=i;return d&&(G=G.transition().each("end",function(){var N=L6e.select(this);z5.setSliceCursor(N,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),G.each(function(N){N._x0=l(N.x0),N._x1=l(N.x1),N._y0=u(N.y0),N._y1=u(N.y1),N._hoverX=l(N.x1-_.tiling.pad),N._hoverY=u(g?N.y1-_.tiling.pad/2:N.y0+_.tiling.pad/2);var W=L6e.select(this),re=VD.ensureSingle(W,"path","surface",function(ke){ke.style("pointer-events",k?"none":"all")});d?re.transition().attrTween("d",function(ke){var ge=x(ke,KW,X(),[o,s],{orientation:_.tiling.orientation,flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1});return function(ie){return c(ge(ie))}}):re.attr("d",c),W.call(k6t,n,t,r,{styleOne:I6e,eventDataKeys:YW.eventDataKeys,transitionTime:YW.CLICK_TRANSITION_TIME,transitionEasing:YW.CLICK_TRANSITION_EASING}).call(z5.setSliceCursor,t,{isTransitioning:t._transitioning}),re.call(I6e,N,_,t,{hovered:!1}),N.x0===N.x1||N.y0===N.y1?N._text="":N._text=C6t(N,n,_,r,A)||"";var ae=VD.ensureSingle(W,"g","slicetext"),_e=VD.ensureSingle(ae,"text","",function(ke){ke.attr("data-notex",1)}),Me=VD.ensureUniformFontSize(t,z5.determineTextFont(_,N,A.font));_e.text(N._text||" ").classed("slicetext",!0).attr("text-anchor",M?"end":C?"start":"middle").call(P6e.font,Me).call(M6t.convertToTspans,t),N.textBB=P6e.bBox(_e.node()),N.transform=f(N,{fontSize:Me.size}),N.transform.fontSize=Me.size,d?_e.transition().attrTween("transform",function(ke){var ge=b(ke,KW,X(),[o,s]);return function(ie){return h(ge(ie))}}):_e.attr("transform",h(N))}),V}});var F6e=ye((Hdr,z6e)=>{"use strict";var L6t=UW(),P6t=D6e();z6e.exports=function(t,r,n,i){return L6t(t,r,n,i,{type:"icicle",drawDescendants:P6t})}});var O6e=ye((Gdr,q6e)=>{"use strict";q6e.exports={moduleType:"trace",name:"icicle",basePlotModule:h6e(),categories:[],animatable:!0,attributes:GW(),layoutAttributes:jW(),supplyDefaults:_6e(),supplyLayoutDefaults:b6e(),calc:ZW().calc,crossTraceCalc:ZW().crossTraceCalc,plot:F6e(),style:XW().style,colorbar:Kd(),meta:{}}});var N6e=ye((jdr,B6e)=>{"use strict";B6e.exports=O6e()});var V6e=ye(F5=>{"use strict";var U6e=Xu();F5.name="funnelarea";F5.plot=function(e,t,r,n){U6e.plotBasePlot(F5.name,e,t,r,n)};F5.clean=function(e,t,r,n){U6e.cleanBasePlot(F5.name,e,t,r,n)}});var JW=ye((Zdr,H6e)=>{"use strict";var tv=A2(),I6t=vl(),R6t=Ju().attributes,D6t=Wo().hovertemplateAttrs,z6t=Wo().texttemplateAttrs,O2=no().extendFlat;H6e.exports={labels:tv.labels,label0:tv.label0,dlabel:tv.dlabel,values:tv.values,marker:{colors:tv.marker.colors,line:{color:O2({},tv.marker.line.color,{dflt:null}),width:O2({},tv.marker.line.width,{dflt:1}),editType:"calc"},pattern:tv.marker.pattern,editType:"calc"},text:tv.text,hovertext:tv.hovertext,scalegroup:O2({},tv.scalegroup,{}),textinfo:O2({},tv.textinfo,{flags:["label","text","value","percent"]}),texttemplate:z6t({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:O2({},I6t.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:D6t({},{keys:["label","color","value","text","percent"]}),textposition:O2({},tv.textposition,{values:["inside","none"],dflt:"inside"}),textfont:tv.textfont,insidetextfont:tv.insidetextfont,title:{text:tv.title.text,font:tv.title.font,position:O2({},tv.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:R6t({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}});var $W=ye((Xdr,G6e)=>{"use strict";var F6t=uD().hiddenlabels;G6e.exports={hiddenlabels:F6t,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var Z6e=ye((Ydr,W6e)=>{"use strict";var j6e=Mr(),q6t=JW(),O6t=Ju().defaults,B6t=r0().handleText,N6t=S2().handleLabelsAndValues,U6t=S2().handleMarkerDefaults;W6e.exports=function(t,r,n,i){function a(x,b){return j6e.coerce(t,r,q6t,x,b)}var o=a("labels"),s=a("values"),l=N6t(o,s),u=l.len;if(r._hasLabels=l.hasLabels,r._hasValues=l.hasValues,!r._hasLabels&&r._hasValues&&(a("label0"),a("dlabel")),!u){r.visible=!1;return}r._length=u,U6t(t,r,i,a),a("scalegroup");var c=a("text"),f=a("texttemplate"),h;if(f||(h=a("textinfo",Array.isArray(c)?"text+percent":"percent")),a("hovertext"),a("hovertemplate"),f||h&&h!=="none"){var d=a("textposition");B6t(t,r,i,a,d,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}else h==="none"&&a("textposition","none");O6t(r,i,a);var v=a("title.text");v&&(a("title.position"),j6e.coerceFont(a,"title.font",i.font)),a("aspectratio"),a("baseratio")}});var Y6e=ye((Kdr,X6e)=>{"use strict";var V6t=Mr(),H6t=$W();X6e.exports=function(t,r){function n(i,a){return V6t.coerce(t,r,H6t,i,a)}n("hiddenlabels"),n("funnelareacolorway",r.colorway),n("extendfunnelareacolors")}});var QW=ye((Jdr,J6e)=>{"use strict";var K6e=y5();function G6t(e,t){return K6e.calc(e,t)}function j6t(e){K6e.crossTraceCalc(e,{type:"funnelarea"})}J6e.exports={calc:G6t,crossTraceCalc:j6t}});var rLe=ye(($dr,tLe)=>{"use strict";var B2=xa(),eZ=ao(),J_=Mr(),W6t=J_.strScale,$6e=J_.strTranslate,Q6e=Pl(),Z6t=i2(),X6t=Z6t.toMoveInsideBar,eLe=_v(),Y6t=eLe.recordMinTextSize,K6t=eLe.clearMinTextSize,J6t=u_(),q5=dD(),$6t=q5.attachFxHandlers,Q6t=q5.determineInsideTextFont,eLt=q5.layoutAreas,tLt=q5.prerenderTitles,rLt=q5.positionTitleOutside,iLt=q5.formatSliceLabel;tLe.exports=function(t,r){var n=t._context.staticPlot,i=t._fullLayout;K6t("funnelarea",i),tLt(r,t),eLt(r,i._size),J_.makeTraceGroups(i._funnelarealayer,r,"trace").each(function(a){var o=B2.select(this),s=a[0],l=s.trace;aLt(a),o.each(function(){var u=B2.select(this).selectAll("g.slice").data(a);u.enter().append("g").classed("slice",!0),u.exit().remove(),u.each(function(f,h){if(f.hidden){B2.select(this).selectAll("path,g").remove();return}f.pointNumber=f.i,f.curveNumber=l.index;var d=s.cx,v=s.cy,x=B2.select(this),b=x.selectAll("path.surface").data([f]);b.enter().append("path").classed("surface",!0).style({"pointer-events":n?"none":"all"}),x.call($6t,t,a);var p="M"+(d+f.TR[0])+","+(v+f.TR[1])+tZ(f.TR,f.BR)+tZ(f.BR,f.BL)+tZ(f.BL,f.TL)+"Z";b.attr("d",p),iLt(t,f,s);var E=J6t.castOption(l.textposition,f.pts),k=x.selectAll("g.slicetext").data(f.text&&E!=="none"?[0]:[]);k.enter().append("g").classed("slicetext",!0),k.exit().remove(),k.each(function(){var A=J_.ensureSingle(B2.select(this),"text","",function(F){F.attr("data-notex",1)}),L=J_.ensureUniformFontSize(t,Q6t(l,f,i.font));A.text(f.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(eZ.font,L).call(Q6e.convertToTspans,t);var _=eZ.bBox(A.node()),C,M,g,P=Math.min(f.BL[1],f.BR[1])+v,T=Math.max(f.TL[1],f.TR[1])+v;M=Math.max(f.TL[0],f.BL[0])+d,g=Math.min(f.TR[0],f.BR[0])+d,C=X6t(M,g,P,T,_,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"}),C.fontSize=L.size,Y6t(l.type,C,i),a[h].transform=C,J_.setTransormAndDisplay(A,C)})});var c=B2.select(this).selectAll("g.titletext").data(l.title.text?[0]:[]);c.enter().append("g").classed("titletext",!0),c.exit().remove(),c.each(function(){var f=J_.ensureSingle(B2.select(this),"text","",function(v){v.attr("data-notex",1)}),h=l.title.text;l._meta&&(h=J_.templateString(h,l._meta)),f.text(h).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(eZ.font,l.title.font).call(Q6e.convertToTspans,t);var d=rLt(s,i._size);f.attr("transform",$6e(d.x,d.y)+W6t(Math.min(1,d.scale))+$6e(d.tx,d.ty))})})})};function tZ(e,t){var r=t[0]-e[0],n=t[1]-e[1];return"l"+r+","+n}function nLt(e,t){return[.5*(e[0]+t[0]),.5*(e[1]+t[1])]}function aLt(e){if(!e.length)return;var t=e[0],r=t.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a=Math.pow(i,2),o=t.vTotal,s=o*a/(1-a),l=o,u=s/o;function c(){var q=Math.sqrt(u);return{x:q,y:-q}}function f(){var q=c();return[q.x,q.y]}var h,d=[];d.push(f());var v,x;for(v=e.length-1;v>-1;v--)if(x=e[v],!x.hidden){var b=x.v/l;u+=b,d.push(f())}var p=1/0,E=-1/0;for(v=0;v-1;v--)if(x=e[v],!x.hidden){P+=1;var T=d[P][0],F=d[P][1];x.TL=[-T,F],x.TR=[T,F],x.BL=M,x.BR=g,x.pxmid=nLt(x.TR,x.BR),M=x.TL,g=x.TR}}});var aLe=ye((Qdr,nLe)=>{"use strict";var iLe=xa(),oLt=z3(),sLt=_v().resizeText;nLe.exports=function(t){var r=t._fullLayout._funnelarealayer.selectAll(".trace");sLt(t,r,"funnelarea"),r.each(function(n){var i=n[0],a=i.trace,o=iLe.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){iLe.select(this).call(oLt,s,a,t)})})}});var sLe=ye((evr,oLe)=>{"use strict";oLe.exports={moduleType:"trace",name:"funnelarea",basePlotModule:V6e(),categories:["pie-like","funnelarea","showLegend"],attributes:JW(),layoutAttributes:$W(),supplyDefaults:Z6e(),supplyLayoutDefaults:Y6e(),calc:QW().calc,crossTraceCalc:QW().crossTraceCalc,plot:rLe(),style:aLe(),styleOne:z3(),meta:{}}});var uLe=ye((tvr,lLe)=>{"use strict";lLe.exports=sLe()});var Rd=ye((rvr,cLe)=>{(function(){var e={1964:function(i,a,o){i.exports={alpha_shape:o(3502),convex_hull:o(7352),delaunay_triangulate:o(7642),gl_cone3d:o(6405),gl_error3d:o(9165),gl_line3d:o(5714),gl_mesh3d:o(7201),gl_plot3d:o(4100),gl_scatter3d:o(8418),gl_streamtube3d:o(7815),gl_surface3d:o(9499),ndarray:o(9618),ndarray_linear_interpolate:o(4317)}},4793:function(i,a,o){"use strict";var s;function l(Le,xe){if(!(Le instanceof xe))throw new TypeError("Cannot call a class as a function")}function u(Le,xe){for(var Se=0;SeM)throw new RangeError('The value "'+Le+'" is invalid for option "size"');var xe=new Uint8Array(Le);return Object.setPrototypeOf(xe,T.prototype),xe}function T(Le,xe,Se){if(typeof Le=="number"){if(typeof xe=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return H(Le)}return F(Le,xe,Se)}T.poolSize=8192;function F(Le,xe,Se){if(typeof Le=="string")return X(Le,xe);if(ArrayBuffer.isView(Le))return N(Le);if(Le==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+A(Le));if(Ne(Le,ArrayBuffer)||Le&&Ne(Le.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(Ne(Le,SharedArrayBuffer)||Le&&Ne(Le.buffer,SharedArrayBuffer)))return W(Le,xe,Se);if(typeof Le=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var lt=Le.valueOf&&Le.valueOf();if(lt!=null&<!==Le)return T.from(lt,xe,Se);var Gt=re(Le);if(Gt)return Gt;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof Le[Symbol.toPrimitive]=="function")return T.from(Le[Symbol.toPrimitive]("string"),xe,Se);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+A(Le))}T.from=function(Le,xe,Se){return F(Le,xe,Se)},Object.setPrototypeOf(T.prototype,Uint8Array.prototype),Object.setPrototypeOf(T,Uint8Array);function q(Le){if(typeof Le!="number")throw new TypeError('"size" argument must be of type number');if(Le<0)throw new RangeError('The value "'+Le+'" is invalid for option "size"')}function V(Le,xe,Se){return q(Le),Le<=0?P(Le):xe!==void 0?typeof Se=="string"?P(Le).fill(xe,Se):P(Le).fill(xe):P(Le)}T.alloc=function(Le,xe,Se){return V(Le,xe,Se)};function H(Le){return q(Le),P(Le<0?0:ae(Le)|0)}T.allocUnsafe=function(Le){return H(Le)},T.allocUnsafeSlow=function(Le){return H(Le)};function X(Le,xe){if((typeof xe!="string"||xe==="")&&(xe="utf8"),!T.isEncoding(xe))throw new TypeError("Unknown encoding: "+xe);var Se=Me(Le,xe)|0,lt=P(Se),Gt=lt.write(Le,xe);return Gt!==Se&&(lt=lt.slice(0,Gt)),lt}function G(Le){for(var xe=Le.length<0?0:ae(Le.length)|0,Se=P(xe),lt=0;lt=M)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+M.toString(16)+" bytes");return Le|0}function _e(Le){return+Le!=Le&&(Le=0),T.alloc(+Le)}T.isBuffer=function(xe){return xe!=null&&xe._isBuffer===!0&&xe!==T.prototype},T.compare=function(xe,Se){if(Ne(xe,Uint8Array)&&(xe=T.from(xe,xe.offset,xe.byteLength)),Ne(Se,Uint8Array)&&(Se=T.from(Se,Se.offset,Se.byteLength)),!T.isBuffer(xe)||!T.isBuffer(Se))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(xe===Se)return 0;for(var lt=xe.length,Gt=Se.length,Vt=0,ar=Math.min(lt,Gt);VtGt.length?(T.isBuffer(ar)||(ar=T.from(ar)),ar.copy(Gt,Vt)):Uint8Array.prototype.set.call(Gt,ar,Vt);else if(T.isBuffer(ar))ar.copy(Gt,Vt);else throw new TypeError('"list" argument must be an Array of Buffers');Vt+=ar.length}return Gt};function Me(Le,xe){if(T.isBuffer(Le))return Le.length;if(ArrayBuffer.isView(Le)||Ne(Le,ArrayBuffer))return Le.byteLength;if(typeof Le!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+A(Le));var Se=Le.length,lt=arguments.length>2&&arguments[2]===!0;if(!lt&&Se===0)return 0;for(var Gt=!1;;)switch(xe){case"ascii":case"latin1":case"binary":return Se;case"utf8":case"utf-8":return _r(Le).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Se*2;case"hex":return Se>>>1;case"base64":return Nr(Le).length;default:if(Gt)return lt?-1:_r(Le).length;xe=(""+xe).toLowerCase(),Gt=!0}}T.byteLength=Me;function ke(Le,xe,Se){var lt=!1;if((xe===void 0||xe<0)&&(xe=0),xe>this.length||((Se===void 0||Se>this.length)&&(Se=this.length),Se<=0)||(Se>>>=0,xe>>>=0,Se<=xe))return"";for(Le||(Le="utf8");;)switch(Le){case"hex":return rt(this,xe,Se);case"utf8":case"utf-8":return ce(this,xe,Se);case"ascii":return ct(this,xe,Se);case"latin1":case"binary":return qt(this,xe,Se);case"base64":return Re(this,xe,Se);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ot(this,xe,Se);default:if(lt)throw new TypeError("Unknown encoding: "+Le);Le=(Le+"").toLowerCase(),lt=!0}}T.prototype._isBuffer=!0;function ge(Le,xe,Se){var lt=Le[xe];Le[xe]=Le[Se],Le[Se]=lt}T.prototype.swap16=function(){var xe=this.length;if(xe%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Se=0;SeSe&&(xe+=" ... "),""},C&&(T.prototype[C]=T.prototype.inspect),T.prototype.compare=function(xe,Se,lt,Gt,Vt){if(Ne(xe,Uint8Array)&&(xe=T.from(xe,xe.offset,xe.byteLength)),!T.isBuffer(xe))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+A(xe));if(Se===void 0&&(Se=0),lt===void 0&&(lt=xe?xe.length:0),Gt===void 0&&(Gt=0),Vt===void 0&&(Vt=this.length),Se<0||lt>xe.length||Gt<0||Vt>this.length)throw new RangeError("out of range index");if(Gt>=Vt&&Se>=lt)return 0;if(Gt>=Vt)return-1;if(Se>=lt)return 1;if(Se>>>=0,lt>>>=0,Gt>>>=0,Vt>>>=0,this===xe)return 0;for(var ar=Vt-Gt,Qr=lt-Se,ai=Math.min(ar,Qr),jr=this.slice(Gt,Vt),ri=xe.slice(Se,lt),bi=0;bi2147483647?Se=2147483647:Se<-2147483648&&(Se=-2147483648),Se=+Se,Ye(Se)&&(Se=Gt?0:Le.length-1),Se<0&&(Se=Le.length+Se),Se>=Le.length){if(Gt)return-1;Se=Le.length-1}else if(Se<0)if(Gt)Se=0;else return-1;if(typeof xe=="string"&&(xe=T.from(xe,lt)),T.isBuffer(xe))return xe.length===0?-1:Te(Le,xe,Se,lt,Gt);if(typeof xe=="number")return xe=xe&255,typeof Uint8Array.prototype.indexOf=="function"?Gt?Uint8Array.prototype.indexOf.call(Le,xe,Se):Uint8Array.prototype.lastIndexOf.call(Le,xe,Se):Te(Le,[xe],Se,lt,Gt);throw new TypeError("val must be string, number or Buffer")}function Te(Le,xe,Se,lt,Gt){var Vt=1,ar=Le.length,Qr=xe.length;if(lt!==void 0&&(lt=String(lt).toLowerCase(),lt==="ucs2"||lt==="ucs-2"||lt==="utf16le"||lt==="utf-16le")){if(Le.length<2||xe.length<2)return-1;Vt=2,ar/=2,Qr/=2,Se/=2}function ai(Wi,Ni){return Vt===1?Wi[Ni]:Wi.readUInt16BE(Ni*Vt)}var jr;if(Gt){var ri=-1;for(jr=Se;jrar&&(Se=ar-Qr),jr=Se;jr>=0;jr--){for(var bi=!0,nn=0;nnGt&&(lt=Gt)):lt=Gt;var Vt=xe.length;lt>Vt/2&&(lt=Vt/2);var ar;for(ar=0;ar>>0,isFinite(lt)?(lt=lt>>>0,Gt===void 0&&(Gt="utf8")):(Gt=lt,lt=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Vt=this.length-Se;if((lt===void 0||lt>Vt)&&(lt=Vt),xe.length>0&&(lt<0||Se<0)||Se>this.length)throw new RangeError("Attempt to write outside buffer bounds");Gt||(Gt="utf8");for(var ar=!1;;)switch(Gt){case"hex":return Ee(this,xe,Se,lt);case"utf8":case"utf-8":return Ae(this,xe,Se,lt);case"ascii":case"latin1":case"binary":return ze(this,xe,Se,lt);case"base64":return Ce(this,xe,Se,lt);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return me(this,xe,Se,lt);default:if(ar)throw new TypeError("Unknown encoding: "+Gt);Gt=(""+Gt).toLowerCase(),ar=!0}},T.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Re(Le,xe,Se){return xe===0&&Se===Le.length?L.fromByteArray(Le):L.fromByteArray(Le.slice(xe,Se))}function ce(Le,xe,Se){Se=Math.min(Le.length,Se);for(var lt=[],Gt=xe;Gt239?4:Vt>223?3:Vt>191?2:1;if(Gt+Qr<=Se){var ai=void 0,jr=void 0,ri=void 0,bi=void 0;switch(Qr){case 1:Vt<128&&(ar=Vt);break;case 2:ai=Le[Gt+1],(ai&192)===128&&(bi=(Vt&31)<<6|ai&63,bi>127&&(ar=bi));break;case 3:ai=Le[Gt+1],jr=Le[Gt+2],(ai&192)===128&&(jr&192)===128&&(bi=(Vt&15)<<12|(ai&63)<<6|jr&63,bi>2047&&(bi<55296||bi>57343)&&(ar=bi));break;case 4:ai=Le[Gt+1],jr=Le[Gt+2],ri=Le[Gt+3],(ai&192)===128&&(jr&192)===128&&(ri&192)===128&&(bi=(Vt&15)<<18|(ai&63)<<12|(jr&63)<<6|ri&63,bi>65535&&bi<1114112&&(ar=bi))}}ar===null?(ar=65533,Qr=1):ar>65535&&(ar-=65536,lt.push(ar>>>10&1023|55296),ar=56320|ar&1023),lt.push(ar),Gt+=Qr}return nt(lt)}var Ge=4096;function nt(Le){var xe=Le.length;if(xe<=Ge)return String.fromCharCode.apply(String,Le);for(var Se="",lt=0;ltlt)&&(Se=lt);for(var Gt="",Vt=xe;Vtlt&&(xe=lt),Se<0?(Se+=lt,Se<0&&(Se=0)):Se>lt&&(Se=lt),SeSe)throw new RangeError("Trying to access beyond buffer length")}T.prototype.readUintLE=T.prototype.readUIntLE=function(xe,Se,lt){xe=xe>>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe],Vt=1,ar=0;++ar>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe+--Se],Vt=1;Se>0&&(Vt*=256);)Gt+=this[xe+--Se]*Vt;return Gt},T.prototype.readUint8=T.prototype.readUInt8=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,1,this.length),this[xe]},T.prototype.readUint16LE=T.prototype.readUInt16LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,2,this.length),this[xe]|this[xe+1]<<8},T.prototype.readUint16BE=T.prototype.readUInt16BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,2,this.length),this[xe]<<8|this[xe+1]},T.prototype.readUint32LE=T.prototype.readUInt32LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),(this[xe]|this[xe+1]<<8|this[xe+2]<<16)+this[xe+3]*16777216},T.prototype.readUint32BE=T.prototype.readUInt32BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]*16777216+(this[xe+1]<<16|this[xe+2]<<8|this[xe+3])},T.prototype.readBigUInt64LE=Xe(function(xe){xe=xe>>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=Se+this[++xe]*Math.pow(2,8)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,24),Vt=this[++xe]+this[++xe]*Math.pow(2,8)+this[++xe]*Math.pow(2,16)+lt*Math.pow(2,24);return BigInt(Gt)+(BigInt(Vt)<>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=Se*Math.pow(2,24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+this[++xe],Vt=this[++xe]*Math.pow(2,24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+lt;return(BigInt(Gt)<>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe],Vt=1,ar=0;++ar=Vt&&(Gt-=Math.pow(2,8*Se)),Gt},T.prototype.readIntBE=function(xe,Se,lt){xe=xe>>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=Se,Vt=1,ar=this[xe+--Gt];Gt>0&&(Vt*=256);)ar+=this[xe+--Gt]*Vt;return Vt*=128,ar>=Vt&&(ar-=Math.pow(2,8*Se)),ar},T.prototype.readInt8=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,1,this.length),this[xe]&128?(255-this[xe]+1)*-1:this[xe]},T.prototype.readInt16LE=function(xe,Se){xe=xe>>>0,Se||Rt(xe,2,this.length);var lt=this[xe]|this[xe+1]<<8;return lt&32768?lt|4294901760:lt},T.prototype.readInt16BE=function(xe,Se){xe=xe>>>0,Se||Rt(xe,2,this.length);var lt=this[xe+1]|this[xe]<<8;return lt&32768?lt|4294901760:lt},T.prototype.readInt32LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]|this[xe+1]<<8|this[xe+2]<<16|this[xe+3]<<24},T.prototype.readInt32BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]<<24|this[xe+1]<<16|this[xe+2]<<8|this[xe+3]},T.prototype.readBigInt64LE=Xe(function(xe){xe=xe>>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=this[xe+4]+this[xe+5]*Math.pow(2,8)+this[xe+6]*Math.pow(2,16)+(lt<<24);return(BigInt(Gt)<>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=(Se<<24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+this[++xe];return(BigInt(Gt)<>>0,Se||Rt(xe,4,this.length),_.read(this,xe,!0,23,4)},T.prototype.readFloatBE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),_.read(this,xe,!1,23,4)},T.prototype.readDoubleLE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,8,this.length),_.read(this,xe,!0,52,8)},T.prototype.readDoubleBE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,8,this.length),_.read(this,xe,!1,52,8)};function kt(Le,xe,Se,lt,Gt,Vt){if(!T.isBuffer(Le))throw new TypeError('"buffer" argument must be a Buffer instance');if(xe>Gt||xeLe.length)throw new RangeError("Index out of range")}T.prototype.writeUintLE=T.prototype.writeUIntLE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,lt=lt>>>0,!Gt){var Vt=Math.pow(2,8*lt)-1;kt(this,xe,Se,lt,Vt,0)}var ar=1,Qr=0;for(this[Se]=xe&255;++Qr>>0,lt=lt>>>0,!Gt){var Vt=Math.pow(2,8*lt)-1;kt(this,xe,Se,lt,Vt,0)}var ar=lt-1,Qr=1;for(this[Se+ar]=xe&255;--ar>=0&&(Qr*=256);)this[Se+ar]=xe/Qr&255;return Se+lt},T.prototype.writeUint8=T.prototype.writeUInt8=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,1,255,0),this[Se]=xe&255,Se+1},T.prototype.writeUint16LE=T.prototype.writeUInt16LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,65535,0),this[Se]=xe&255,this[Se+1]=xe>>>8,Se+2},T.prototype.writeUint16BE=T.prototype.writeUInt16BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,65535,0),this[Se]=xe>>>8,this[Se+1]=xe&255,Se+2},T.prototype.writeUint32LE=T.prototype.writeUInt32LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,4294967295,0),this[Se+3]=xe>>>24,this[Se+2]=xe>>>16,this[Se+1]=xe>>>8,this[Se]=xe&255,Se+4},T.prototype.writeUint32BE=T.prototype.writeUInt32BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,4294967295,0),this[Se]=xe>>>24,this[Se+1]=xe>>>16,this[Se+2]=xe>>>8,this[Se+3]=xe&255,Se+4};function Ct(Le,xe,Se,lt,Gt){Et(xe,lt,Gt,Le,Se,7);var Vt=Number(xe&BigInt(4294967295));Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt;var ar=Number(xe>>BigInt(32)&BigInt(4294967295));return Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,Se}function Yt(Le,xe,Se,lt,Gt){Et(xe,lt,Gt,Le,Se,7);var Vt=Number(xe&BigInt(4294967295));Le[Se+7]=Vt,Vt=Vt>>8,Le[Se+6]=Vt,Vt=Vt>>8,Le[Se+5]=Vt,Vt=Vt>>8,Le[Se+4]=Vt;var ar=Number(xe>>BigInt(32)&BigInt(4294967295));return Le[Se+3]=ar,ar=ar>>8,Le[Se+2]=ar,ar=ar>>8,Le[Se+1]=ar,ar=ar>>8,Le[Se]=ar,Se+8}T.prototype.writeBigUInt64LE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Ct(this,xe,Se,BigInt(0),BigInt("0xffffffffffffffff"))}),T.prototype.writeBigUInt64BE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Yt(this,xe,Se,BigInt(0),BigInt("0xffffffffffffffff"))}),T.prototype.writeIntLE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,!Gt){var Vt=Math.pow(2,8*lt-1);kt(this,xe,Se,lt,Vt-1,-Vt)}var ar=0,Qr=1,ai=0;for(this[Se]=xe&255;++ar>0)-ai&255;return Se+lt},T.prototype.writeIntBE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,!Gt){var Vt=Math.pow(2,8*lt-1);kt(this,xe,Se,lt,Vt-1,-Vt)}var ar=lt-1,Qr=1,ai=0;for(this[Se+ar]=xe&255;--ar>=0&&(Qr*=256);)xe<0&&ai===0&&this[Se+ar+1]!==0&&(ai=1),this[Se+ar]=(xe/Qr>>0)-ai&255;return Se+lt},T.prototype.writeInt8=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,1,127,-128),xe<0&&(xe=255+xe+1),this[Se]=xe&255,Se+1},T.prototype.writeInt16LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,32767,-32768),this[Se]=xe&255,this[Se+1]=xe>>>8,Se+2},T.prototype.writeInt16BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,32767,-32768),this[Se]=xe>>>8,this[Se+1]=xe&255,Se+2},T.prototype.writeInt32LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,2147483647,-2147483648),this[Se]=xe&255,this[Se+1]=xe>>>8,this[Se+2]=xe>>>16,this[Se+3]=xe>>>24,Se+4},T.prototype.writeInt32BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,2147483647,-2147483648),xe<0&&(xe=4294967295+xe+1),this[Se]=xe>>>24,this[Se+1]=xe>>>16,this[Se+2]=xe>>>8,this[Se+3]=xe&255,Se+4},T.prototype.writeBigInt64LE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Ct(this,xe,Se,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),T.prototype.writeBigInt64BE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Yt(this,xe,Se,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function xr(Le,xe,Se,lt,Gt,Vt){if(Se+lt>Le.length)throw new RangeError("Index out of range");if(Se<0)throw new RangeError("Index out of range")}function er(Le,xe,Se,lt,Gt){return xe=+xe,Se=Se>>>0,Gt||xr(Le,xe,Se,4,34028234663852886e22,-34028234663852886e22),_.write(Le,xe,Se,lt,23,4),Se+4}T.prototype.writeFloatLE=function(xe,Se,lt){return er(this,xe,Se,!0,lt)},T.prototype.writeFloatBE=function(xe,Se,lt){return er(this,xe,Se,!1,lt)};function Ke(Le,xe,Se,lt,Gt){return xe=+xe,Se=Se>>>0,Gt||xr(Le,xe,Se,8,17976931348623157e292,-17976931348623157e292),_.write(Le,xe,Se,lt,52,8),Se+8}T.prototype.writeDoubleLE=function(xe,Se,lt){return Ke(this,xe,Se,!0,lt)},T.prototype.writeDoubleBE=function(xe,Se,lt){return Ke(this,xe,Se,!1,lt)},T.prototype.copy=function(xe,Se,lt,Gt){if(!T.isBuffer(xe))throw new TypeError("argument should be a Buffer");if(lt||(lt=0),!Gt&&Gt!==0&&(Gt=this.length),Se>=xe.length&&(Se=xe.length),Se||(Se=0),Gt>0&&Gt=this.length)throw new RangeError("Index out of range");if(Gt<0)throw new RangeError("sourceEnd out of bounds");Gt>this.length&&(Gt=this.length),xe.length-Se>>0,lt=lt===void 0?this.length:lt>>>0,xe||(xe=0);var ar;if(typeof xe=="number")for(ar=Se;arMath.pow(2,32)?Gt=Lt(String(Se)):typeof Se=="bigint"&&(Gt=String(Se),(Se>Math.pow(BigInt(2),BigInt(32))||Se<-Math.pow(BigInt(2),BigInt(32)))&&(Gt=Lt(Gt)),Gt+="n"),lt+=" It must be ".concat(xe,". Received ").concat(Gt),lt},RangeError);function Lt(Le){for(var xe="",Se=Le.length,lt=Le[0]==="-"?1:0;Se>=lt+4;Se-=3)xe="_".concat(Le.slice(Se-3,Se)).concat(xe);return"".concat(Le.slice(0,Se)).concat(xe)}function St(Le,xe,Se){dt(xe,"offset"),(Le[xe]===void 0||Le[xe+Se]===void 0)&&Ht(xe,Le.length-(Se+1))}function Et(Le,xe,Se,lt,Gt,Vt){if(Le>Se||Le3?xe===0||xe===BigInt(0)?Qr=">= 0".concat(ar," and < 2").concat(ar," ** ").concat((Vt+1)*8).concat(ar):Qr=">= -(2".concat(ar," ** ").concat((Vt+1)*8-1).concat(ar,") and < 2 ** ")+"".concat((Vt+1)*8-1).concat(ar):Qr=">= ".concat(xe).concat(ar," and <= ").concat(Se).concat(ar),new xt.ERR_OUT_OF_RANGE("value",Qr,Le)}St(lt,Gt,Vt)}function dt(Le,xe){if(typeof Le!="number")throw new xt.ERR_INVALID_ARG_TYPE(xe,"number",Le)}function Ht(Le,xe,Se){throw Math.floor(Le)!==Le?(dt(Le,Se),new xt.ERR_OUT_OF_RANGE(Se||"offset","an integer",Le)):xe<0?new xt.ERR_BUFFER_OUT_OF_BOUNDS:new xt.ERR_OUT_OF_RANGE(Se||"offset",">= ".concat(Se?1:0," and <= ").concat(xe),Le)}var $t=/[^+/0-9A-Za-z-_]/g;function fr(Le){if(Le=Le.split("=")[0],Le=Le.trim().replace($t,""),Le.length<2)return"";for(;Le.length%4!==0;)Le=Le+"=";return Le}function _r(Le,xe){xe=xe||1/0;for(var Se,lt=Le.length,Gt=null,Vt=[],ar=0;ar55295&&Se<57344){if(!Gt){if(Se>56319){(xe-=3)>-1&&Vt.push(239,191,189);continue}else if(ar+1===lt){(xe-=3)>-1&&Vt.push(239,191,189);continue}Gt=Se;continue}if(Se<56320){(xe-=3)>-1&&Vt.push(239,191,189),Gt=Se;continue}Se=(Gt-55296<<10|Se-56320)+65536}else Gt&&(xe-=3)>-1&&Vt.push(239,191,189);if(Gt=null,Se<128){if((xe-=1)<0)break;Vt.push(Se)}else if(Se<2048){if((xe-=2)<0)break;Vt.push(Se>>6|192,Se&63|128)}else if(Se<65536){if((xe-=3)<0)break;Vt.push(Se>>12|224,Se>>6&63|128,Se&63|128)}else if(Se<1114112){if((xe-=4)<0)break;Vt.push(Se>>18|240,Se>>12&63|128,Se>>6&63|128,Se&63|128)}else throw new Error("Invalid code point")}return Vt}function Br(Le){for(var xe=[],Se=0;Se>8,Gt=Se%256,Vt.push(Gt),Vt.push(lt);return Vt}function Nr(Le){return L.toByteArray(fr(Le))}function ut(Le,xe,Se,lt){var Gt;for(Gt=0;Gt=xe.length||Gt>=Le.length);++Gt)xe[Gt+Se]=Le[Gt];return Gt}function Ne(Le,xe){return Le instanceof xe||Le!=null&&Le.constructor!=null&&Le.constructor.name!=null&&Le.constructor.name===xe.name}function Ye(Le){return Le!==Le}var Ve=function(){for(var Le="0123456789abcdef",xe=new Array(256),Se=0;Se<16;++Se)for(var lt=Se*16,Gt=0;Gt<16;++Gt)xe[lt+Gt]=Le[Se]+Le[Gt];return xe}();function Xe(Le){return typeof BigInt=="undefined"?ht:Le}function ht(){throw new Error("BigInt not supported")}},9216:function(i){"use strict";i.exports=l,i.exports.isMobile=l,i.exports.default=l;var a=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,o=/CrOS/,s=/android|ipad|playbook|silk/i;function l(u){u||(u={});var c=u.ua;if(!c&&typeof navigator!="undefined"&&(c=navigator.userAgent),c&&c.headers&&typeof c.headers["user-agent"]=="string"&&(c=c.headers["user-agent"]),typeof c!="string")return!1;var f=a.test(c)&&!o.test(c)||!!u.tablet&&s.test(c);return!f&&u.tablet&&u.featureDetect&&navigator&&navigator.maxTouchPoints>1&&c.indexOf("Macintosh")!==-1&&c.indexOf("Safari")!==-1&&(f=!0),f}},6296:function(i,a,o){"use strict";i.exports=h;var s=o(7261),l=o(9977),u=o(1811);function c(d,v){this._controllerNames=Object.keys(d),this._controllerList=this._controllerNames.map(function(x){return d[x]}),this._mode=v,this._active=d[v],this._active||(this._mode="turntable",this._active=d.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var f=c.prototype;f.flush=function(d){for(var v=this._controllerList,x=0;x0)throw new Error("Invalid string. Length must be a multiple of 4");var L=k.indexOf("=");L===-1&&(L=A);var _=L===A?0:4-L%4;return[L,_]}function d(k){var A=h(k),L=A[0],_=A[1];return(L+_)*3/4-_}function v(k,A,L){return(A+L)*3/4-L}function x(k){var A,L=h(k),_=L[0],C=L[1],M=new l(v(k,_,C)),g=0,P=C>0?_-4:_,T;for(T=0;T>16&255,M[g++]=A>>8&255,M[g++]=A&255;return C===2&&(A=s[k.charCodeAt(T)]<<2|s[k.charCodeAt(T+1)]>>4,M[g++]=A&255),C===1&&(A=s[k.charCodeAt(T)]<<10|s[k.charCodeAt(T+1)]<<4|s[k.charCodeAt(T+2)]>>2,M[g++]=A>>8&255,M[g++]=A&255),M}function b(k){return o[k>>18&63]+o[k>>12&63]+o[k>>6&63]+o[k&63]}function p(k,A,L){for(var _,C=[],M=A;MP?P:g+M));return _===1?(A=k[L-1],C.push(o[A>>2]+o[A<<4&63]+"==")):_===2&&(A=(k[L-2]<<8)+k[L-1],C.push(o[A>>10]+o[A>>4&63]+o[A<<2&63]+"=")),C.join("")}},3865:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).add(c[0].mul(u[1])),u[1].mul(c[1]))}},1318:function(i){"use strict";i.exports=a;function a(o,s){return o[0].mul(s[1]).cmp(s[0].mul(o[1]))}},8697:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]),u[1].mul(c[0]))}},7842:function(i,a,o){"use strict";var s=o(6330),l=o(1533),u=o(2651),c=o(6768),f=o(869),h=o(8697);i.exports=d;function d(v,x){if(s(v))return x?h(v,d(x)):[v[0].clone(),v[1].clone()];var b=0,p,E;if(l(v))p=v.clone();else if(typeof v=="string")p=c(v);else{if(v===0)return[u(0),u(1)];if(v===Math.floor(v))p=u(v);else{for(;v!==Math.floor(v);)v=v*Math.pow(2,256),b-=256;p=u(v)}}if(s(x))p.mul(x[1]),E=x[0].clone();else if(l(x))E=x.clone();else if(typeof x=="string")E=c(x);else if(!x)E=u(1);else if(x===Math.floor(x))E=u(x);else{for(;x!==Math.floor(x);)x=x*Math.pow(2,256),b+=256;E=u(x)}return b>0?p=p.ushln(b):b<0&&(E=E.ushln(-b)),f(p,E)}},6330:function(i,a,o){"use strict";var s=o(1533);i.exports=l;function l(u){return Array.isArray(u)&&u.length===2&&s(u[0])&&s(u[1])}},5716:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u.cmp(new s(0))}},1369:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){var c=u.length,f=u.words,h=0;if(c===1)h=f[0];else if(c===2)h=f[0]+f[1]*67108864;else for(var d=0;d20?52:h+32}},1533:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u&&typeof u=="object"&&!!u.words}},2651:function(i,a,o){"use strict";var s=o(6859),l=o(2361);i.exports=u;function u(c){var f=l.exponent(c);return f<52?new s(c):new s(c*Math.pow(2,52-f)).ushln(f-52)}},869:function(i,a,o){"use strict";var s=o(2651),l=o(5716);i.exports=u;function u(c,f){var h=l(c),d=l(f);if(h===0)return[s(0),s(1)];if(d===0)return[s(0),s(0)];d<0&&(c=c.neg(),f=f.neg());var v=c.gcd(f);return v.cmpn(1)?[c.div(v),f.div(v)]:[c,f]}},6768:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return new s(u)}},6504:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[0]),u[1].mul(c[1]))}},7721:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){return s(u[0])*s(u[1])}},5572:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).sub(u[1].mul(c[0])),u[1].mul(c[1]))}},946:function(i,a,o){"use strict";var s=o(1369),l=o(4025);i.exports=u;function u(c){var f=c[0],h=c[1];if(f.cmpn(0)===0)return 0;var d=f.abs().divmod(h.abs()),v=d.div,x=s(v),b=d.mod,p=f.negative!==h.negative?-1:1;if(b.cmpn(0)===0)return p*x;if(x){var E=l(x)+4,k=s(b.ushln(E).divRound(h));return p*(x+k*Math.pow(2,-E))}else{var A=h.bitLength()-b.bitLength()+53,k=s(b.ushln(A).divRound(h));return A<1023?p*k*Math.pow(2,-A):(k*=Math.pow(2,-1023),p*k*Math.pow(2,1023-A))}}},2478:function(i){"use strict";function a(f,h,d,v,x){for(var b=x+1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k>=0?(b=p,x=p-1):v=p+1}return b}function o(f,h,d,v,x){for(var b=x+1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k>0?(b=p,x=p-1):v=p+1}return b}function s(f,h,d,v,x){for(var b=v-1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k<0?(b=p,v=p+1):x=p-1}return b}function l(f,h,d,v,x){for(var b=v-1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k<=0?(b=p,v=p+1):x=p-1}return b}function u(f,h,d,v,x){for(;v<=x;){var b=v+x>>>1,p=f[b],E=d!==void 0?d(p,h):p-h;if(E===0)return b;E<=0?v=b+1:x=b-1}return-1}function c(f,h,d,v,x,b){return typeof d=="function"?b(f,h,d,v===void 0?0:v|0,x===void 0?f.length-1:x|0):b(f,h,void 0,d===void 0?0:d|0,v===void 0?f.length-1:v|0)}i.exports={ge:function(f,h,d,v,x){return c(f,h,d,v,x,a)},gt:function(f,h,d,v,x){return c(f,h,d,v,x,o)},lt:function(f,h,d,v,x){return c(f,h,d,v,x,s)},le:function(f,h,d,v,x){return c(f,h,d,v,x,l)},eq:function(f,h,d,v,x){return c(f,h,d,v,x,u)}}},8828:function(i,a){"use strict";"use restrict";var o=32;a.INT_BITS=o,a.INT_MAX=2147483647,a.INT_MIN=-1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},6859:function(i,a,o){i=o.nmd(i),function(s,l){"use strict";function u(G,N){if(!G)throw new Error(N||"Assertion failed")}function c(G,N){G.super_=N;var W=function(){};W.prototype=N.prototype,G.prototype=new W,G.prototype.constructor=G}function f(G,N,W){if(f.isBN(G))return G;this.negative=0,this.words=null,this.length=0,this.red=null,G!==null&&((N==="le"||N==="be")&&(W=N,N=10),this._init(G||0,N||10,W||"be"))}typeof s=="object"?s.exports=f:l.BN=f,f.BN=f,f.wordSize=26;var h;try{typeof window!="undefined"&&typeof window.Buffer!="undefined"?h=window.Buffer:h=o(7790).Buffer}catch(G){}f.isBN=function(N){return N instanceof f?!0:N!==null&&typeof N=="object"&&N.constructor.wordSize===f.wordSize&&Array.isArray(N.words)},f.max=function(N,W){return N.cmp(W)>0?N:W},f.min=function(N,W){return N.cmp(W)<0?N:W},f.prototype._init=function(N,W,re){if(typeof N=="number")return this._initNumber(N,W,re);if(typeof N=="object")return this._initArray(N,W,re);W==="hex"&&(W=16),u(W===(W|0)&&W>=2&&W<=36),N=N.toString().replace(/\s+/g,"");var ae=0;N[0]==="-"&&(ae++,this.negative=1),ae=0;ae-=3)Me=N[ae]|N[ae-1]<<8|N[ae-2]<<16,this.words[_e]|=Me<>>26-ke&67108863,ke+=24,ke>=26&&(ke-=26,_e++);else if(re==="le")for(ae=0,_e=0;ae>>26-ke&67108863,ke+=24,ke>=26&&(ke-=26,_e++);return this.strip()};function d(G,N){var W=G.charCodeAt(N);return W>=65&&W<=70?W-55:W>=97&&W<=102?W-87:W-48&15}function v(G,N,W){var re=d(G,W);return W-1>=N&&(re|=d(G,W-1)<<4),re}f.prototype._parseHex=function(N,W,re){this.length=Math.ceil((N.length-W)/6),this.words=new Array(this.length);for(var ae=0;ae=W;ae-=2)ke=v(N,W,ae)<<_e,this.words[Me]|=ke&67108863,_e>=18?(_e-=18,Me+=1,this.words[Me]|=ke>>>26):_e+=8;else{var ge=N.length-W;for(ae=ge%2===0?W+1:W;ae=18?(_e-=18,Me+=1,this.words[Me]|=ke>>>26):_e+=8}this.strip()};function x(G,N,W,re){for(var ae=0,_e=Math.min(G.length,W),Me=N;Me<_e;Me++){var ke=G.charCodeAt(Me)-48;ae*=re,ke>=49?ae+=ke-49+10:ke>=17?ae+=ke-17+10:ae+=ke}return ae}f.prototype._parseBase=function(N,W,re){this.words=[0],this.length=1;for(var ae=0,_e=1;_e<=67108863;_e*=W)ae++;ae--,_e=_e/W|0;for(var Me=N.length-re,ke=Me%ae,ge=Math.min(Me,Me-ke)+re,ie=0,Te=re;Te1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},f.prototype.inspect=function(){return(this.red?""};var b=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(N,W){N=N||10,W=W|0||1;var re;if(N===16||N==="hex"){re="";for(var ae=0,_e=0,Me=0;Me>>24-ae&16777215,_e!==0||Me!==this.length-1?re=b[6-ge.length]+ge+re:re=ge+re,ae+=2,ae>=26&&(ae-=26,Me--)}for(_e!==0&&(re=_e.toString(16)+re);re.length%W!==0;)re="0"+re;return this.negative!==0&&(re="-"+re),re}if(N===(N|0)&&N>=2&&N<=36){var ie=p[N],Te=E[N];re="";var Ee=this.clone();for(Ee.negative=0;!Ee.isZero();){var Ae=Ee.modn(Te).toString(N);Ee=Ee.idivn(Te),Ee.isZero()?re=Ae+re:re=b[ie-Ae.length]+Ae+re}for(this.isZero()&&(re="0"+re);re.length%W!==0;)re="0"+re;return this.negative!==0&&(re="-"+re),re}u(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var N=this.words[0];return this.length===2?N+=this.words[1]*67108864:this.length===3&&this.words[2]===1?N+=4503599627370496+this.words[1]*67108864:this.length>2&&u(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-N:N},f.prototype.toJSON=function(){return this.toString(16)},f.prototype.toBuffer=function(N,W){return u(typeof h!="undefined"),this.toArrayLike(h,N,W)},f.prototype.toArray=function(N,W){return this.toArrayLike(Array,N,W)},f.prototype.toArrayLike=function(N,W,re){var ae=this.byteLength(),_e=re||Math.max(1,ae);u(ae<=_e,"byte array longer than desired length"),u(_e>0,"Requested array length <= 0"),this.strip();var Me=W==="le",ke=new N(_e),ge,ie,Te=this.clone();if(Me){for(ie=0;!Te.isZero();ie++)ge=Te.andln(255),Te.iushrn(8),ke[ie]=ge;for(;ie<_e;ie++)ke[ie]=0}else{for(ie=0;ie<_e-ae;ie++)ke[ie]=0;for(ie=0;!Te.isZero();ie++)ge=Te.andln(255),Te.iushrn(8),ke[_e-ie-1]=ge}return ke},Math.clz32?f.prototype._countBits=function(N){return 32-Math.clz32(N)}:f.prototype._countBits=function(N){var W=N,re=0;return W>=4096&&(re+=13,W>>>=13),W>=64&&(re+=7,W>>>=7),W>=8&&(re+=4,W>>>=4),W>=2&&(re+=2,W>>>=2),re+W},f.prototype._zeroBits=function(N){if(N===0)return 26;var W=N,re=0;return W&8191||(re+=13,W>>>=13),W&127||(re+=7,W>>>=7),W&15||(re+=4,W>>>=4),W&3||(re+=2,W>>>=2),W&1||re++,re},f.prototype.bitLength=function(){var N=this.words[this.length-1],W=this._countBits(N);return(this.length-1)*26+W};function k(G){for(var N=new Array(G.bitLength()),W=0;W>>ae}return N}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var N=0,W=0;WN.length?this.clone().ior(N):N.clone().ior(this)},f.prototype.uor=function(N){return this.length>N.length?this.clone().iuor(N):N.clone().iuor(this)},f.prototype.iuand=function(N){var W;this.length>N.length?W=N:W=this;for(var re=0;reN.length?this.clone().iand(N):N.clone().iand(this)},f.prototype.uand=function(N){return this.length>N.length?this.clone().iuand(N):N.clone().iuand(this)},f.prototype.iuxor=function(N){var W,re;this.length>N.length?(W=this,re=N):(W=N,re=this);for(var ae=0;aeN.length?this.clone().ixor(N):N.clone().ixor(this)},f.prototype.uxor=function(N){return this.length>N.length?this.clone().iuxor(N):N.clone().iuxor(this)},f.prototype.inotn=function(N){u(typeof N=="number"&&N>=0);var W=Math.ceil(N/26)|0,re=N%26;this._expand(W),re>0&&W--;for(var ae=0;ae0&&(this.words[ae]=~this.words[ae]&67108863>>26-re),this.strip()},f.prototype.notn=function(N){return this.clone().inotn(N)},f.prototype.setn=function(N,W){u(typeof N=="number"&&N>=0);var re=N/26|0,ae=N%26;return this._expand(re+1),W?this.words[re]=this.words[re]|1<N.length?(re=this,ae=N):(re=N,ae=this);for(var _e=0,Me=0;Me>>26;for(;_e!==0&&Me>>26;if(this.length=re.length,_e!==0)this.words[this.length]=_e,this.length++;else if(re!==this)for(;MeN.length?this.clone().iadd(N):N.clone().iadd(this)},f.prototype.isub=function(N){if(N.negative!==0){N.negative=0;var W=this.iadd(N);return N.negative=1,W._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(N),this.negative=1,this._normSign();var re=this.cmp(N);if(re===0)return this.negative=0,this.length=1,this.words[0]=0,this;var ae,_e;re>0?(ae=this,_e=N):(ae=N,_e=this);for(var Me=0,ke=0;ke<_e.length;ke++)W=(ae.words[ke]|0)-(_e.words[ke]|0)+Me,Me=W>>26,this.words[ke]=W&67108863;for(;Me!==0&&ke>26,this.words[ke]=W&67108863;if(Me===0&&ke>>26,Ee=ge&67108863,Ae=Math.min(ie,N.length-1),ze=Math.max(0,ie-G.length+1);ze<=Ae;ze++){var Ce=ie-ze|0;ae=G.words[Ce]|0,_e=N.words[ze]|0,Me=ae*_e+Ee,Te+=Me/67108864|0,Ee=Me&67108863}W.words[ie]=Ee|0,ge=Te|0}return ge!==0?W.words[ie]=ge|0:W.length--,W.strip()}var L=function(N,W,re){var ae=N.words,_e=W.words,Me=re.words,ke=0,ge,ie,Te,Ee=ae[0]|0,Ae=Ee&8191,ze=Ee>>>13,Ce=ae[1]|0,me=Ce&8191,Re=Ce>>>13,ce=ae[2]|0,Ge=ce&8191,nt=ce>>>13,ct=ae[3]|0,qt=ct&8191,rt=ct>>>13,ot=ae[4]|0,Rt=ot&8191,kt=ot>>>13,Ct=ae[5]|0,Yt=Ct&8191,xr=Ct>>>13,er=ae[6]|0,Ke=er&8191,xt=er>>>13,bt=ae[7]|0,Lt=bt&8191,St=bt>>>13,Et=ae[8]|0,dt=Et&8191,Ht=Et>>>13,$t=ae[9]|0,fr=$t&8191,_r=$t>>>13,Br=_e[0]|0,Or=Br&8191,Nr=Br>>>13,ut=_e[1]|0,Ne=ut&8191,Ye=ut>>>13,Ve=_e[2]|0,Xe=Ve&8191,ht=Ve>>>13,Le=_e[3]|0,xe=Le&8191,Se=Le>>>13,lt=_e[4]|0,Gt=lt&8191,Vt=lt>>>13,ar=_e[5]|0,Qr=ar&8191,ai=ar>>>13,jr=_e[6]|0,ri=jr&8191,bi=jr>>>13,nn=_e[7]|0,Wi=nn&8191,Ni=nn>>>13,_n=_e[8]|0,$i=_n&8191,zn=_n>>>13,Wn=_e[9]|0,It=Wn&8191,ft=Wn>>>13;re.negative=N.negative^W.negative,re.length=19,ge=Math.imul(Ae,Or),ie=Math.imul(Ae,Nr),ie=ie+Math.imul(ze,Or)|0,Te=Math.imul(ze,Nr);var jt=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jt>>>26)|0,jt&=67108863,ge=Math.imul(me,Or),ie=Math.imul(me,Nr),ie=ie+Math.imul(Re,Or)|0,Te=Math.imul(Re,Nr),ge=ge+Math.imul(Ae,Ne)|0,ie=ie+Math.imul(Ae,Ye)|0,ie=ie+Math.imul(ze,Ne)|0,Te=Te+Math.imul(ze,Ye)|0;var Zt=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,ge=Math.imul(Ge,Or),ie=Math.imul(Ge,Nr),ie=ie+Math.imul(nt,Or)|0,Te=Math.imul(nt,Nr),ge=ge+Math.imul(me,Ne)|0,ie=ie+Math.imul(me,Ye)|0,ie=ie+Math.imul(Re,Ne)|0,Te=Te+Math.imul(Re,Ye)|0,ge=ge+Math.imul(Ae,Xe)|0,ie=ie+Math.imul(Ae,ht)|0,ie=ie+Math.imul(ze,Xe)|0,Te=Te+Math.imul(ze,ht)|0;var yr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(yr>>>26)|0,yr&=67108863,ge=Math.imul(qt,Or),ie=Math.imul(qt,Nr),ie=ie+Math.imul(rt,Or)|0,Te=Math.imul(rt,Nr),ge=ge+Math.imul(Ge,Ne)|0,ie=ie+Math.imul(Ge,Ye)|0,ie=ie+Math.imul(nt,Ne)|0,Te=Te+Math.imul(nt,Ye)|0,ge=ge+Math.imul(me,Xe)|0,ie=ie+Math.imul(me,ht)|0,ie=ie+Math.imul(Re,Xe)|0,Te=Te+Math.imul(Re,ht)|0,ge=ge+Math.imul(Ae,xe)|0,ie=ie+Math.imul(Ae,Se)|0,ie=ie+Math.imul(ze,xe)|0,Te=Te+Math.imul(ze,Se)|0;var Fr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,ge=Math.imul(Rt,Or),ie=Math.imul(Rt,Nr),ie=ie+Math.imul(kt,Or)|0,Te=Math.imul(kt,Nr),ge=ge+Math.imul(qt,Ne)|0,ie=ie+Math.imul(qt,Ye)|0,ie=ie+Math.imul(rt,Ne)|0,Te=Te+Math.imul(rt,Ye)|0,ge=ge+Math.imul(Ge,Xe)|0,ie=ie+Math.imul(Ge,ht)|0,ie=ie+Math.imul(nt,Xe)|0,Te=Te+Math.imul(nt,ht)|0,ge=ge+Math.imul(me,xe)|0,ie=ie+Math.imul(me,Se)|0,ie=ie+Math.imul(Re,xe)|0,Te=Te+Math.imul(Re,Se)|0,ge=ge+Math.imul(Ae,Gt)|0,ie=ie+Math.imul(Ae,Vt)|0,ie=ie+Math.imul(ze,Gt)|0,Te=Te+Math.imul(ze,Vt)|0;var Zr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,ge=Math.imul(Yt,Or),ie=Math.imul(Yt,Nr),ie=ie+Math.imul(xr,Or)|0,Te=Math.imul(xr,Nr),ge=ge+Math.imul(Rt,Ne)|0,ie=ie+Math.imul(Rt,Ye)|0,ie=ie+Math.imul(kt,Ne)|0,Te=Te+Math.imul(kt,Ye)|0,ge=ge+Math.imul(qt,Xe)|0,ie=ie+Math.imul(qt,ht)|0,ie=ie+Math.imul(rt,Xe)|0,Te=Te+Math.imul(rt,ht)|0,ge=ge+Math.imul(Ge,xe)|0,ie=ie+Math.imul(Ge,Se)|0,ie=ie+Math.imul(nt,xe)|0,Te=Te+Math.imul(nt,Se)|0,ge=ge+Math.imul(me,Gt)|0,ie=ie+Math.imul(me,Vt)|0,ie=ie+Math.imul(Re,Gt)|0,Te=Te+Math.imul(Re,Vt)|0,ge=ge+Math.imul(Ae,Qr)|0,ie=ie+Math.imul(Ae,ai)|0,ie=ie+Math.imul(ze,Qr)|0,Te=Te+Math.imul(ze,ai)|0;var Vr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,ge=Math.imul(Ke,Or),ie=Math.imul(Ke,Nr),ie=ie+Math.imul(xt,Or)|0,Te=Math.imul(xt,Nr),ge=ge+Math.imul(Yt,Ne)|0,ie=ie+Math.imul(Yt,Ye)|0,ie=ie+Math.imul(xr,Ne)|0,Te=Te+Math.imul(xr,Ye)|0,ge=ge+Math.imul(Rt,Xe)|0,ie=ie+Math.imul(Rt,ht)|0,ie=ie+Math.imul(kt,Xe)|0,Te=Te+Math.imul(kt,ht)|0,ge=ge+Math.imul(qt,xe)|0,ie=ie+Math.imul(qt,Se)|0,ie=ie+Math.imul(rt,xe)|0,Te=Te+Math.imul(rt,Se)|0,ge=ge+Math.imul(Ge,Gt)|0,ie=ie+Math.imul(Ge,Vt)|0,ie=ie+Math.imul(nt,Gt)|0,Te=Te+Math.imul(nt,Vt)|0,ge=ge+Math.imul(me,Qr)|0,ie=ie+Math.imul(me,ai)|0,ie=ie+Math.imul(Re,Qr)|0,Te=Te+Math.imul(Re,ai)|0,ge=ge+Math.imul(Ae,ri)|0,ie=ie+Math.imul(Ae,bi)|0,ie=ie+Math.imul(ze,ri)|0,Te=Te+Math.imul(ze,bi)|0;var gi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(gi>>>26)|0,gi&=67108863,ge=Math.imul(Lt,Or),ie=Math.imul(Lt,Nr),ie=ie+Math.imul(St,Or)|0,Te=Math.imul(St,Nr),ge=ge+Math.imul(Ke,Ne)|0,ie=ie+Math.imul(Ke,Ye)|0,ie=ie+Math.imul(xt,Ne)|0,Te=Te+Math.imul(xt,Ye)|0,ge=ge+Math.imul(Yt,Xe)|0,ie=ie+Math.imul(Yt,ht)|0,ie=ie+Math.imul(xr,Xe)|0,Te=Te+Math.imul(xr,ht)|0,ge=ge+Math.imul(Rt,xe)|0,ie=ie+Math.imul(Rt,Se)|0,ie=ie+Math.imul(kt,xe)|0,Te=Te+Math.imul(kt,Se)|0,ge=ge+Math.imul(qt,Gt)|0,ie=ie+Math.imul(qt,Vt)|0,ie=ie+Math.imul(rt,Gt)|0,Te=Te+Math.imul(rt,Vt)|0,ge=ge+Math.imul(Ge,Qr)|0,ie=ie+Math.imul(Ge,ai)|0,ie=ie+Math.imul(nt,Qr)|0,Te=Te+Math.imul(nt,ai)|0,ge=ge+Math.imul(me,ri)|0,ie=ie+Math.imul(me,bi)|0,ie=ie+Math.imul(Re,ri)|0,Te=Te+Math.imul(Re,bi)|0,ge=ge+Math.imul(Ae,Wi)|0,ie=ie+Math.imul(Ae,Ni)|0,ie=ie+Math.imul(ze,Wi)|0,Te=Te+Math.imul(ze,Ni)|0;var Si=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Si>>>26)|0,Si&=67108863,ge=Math.imul(dt,Or),ie=Math.imul(dt,Nr),ie=ie+Math.imul(Ht,Or)|0,Te=Math.imul(Ht,Nr),ge=ge+Math.imul(Lt,Ne)|0,ie=ie+Math.imul(Lt,Ye)|0,ie=ie+Math.imul(St,Ne)|0,Te=Te+Math.imul(St,Ye)|0,ge=ge+Math.imul(Ke,Xe)|0,ie=ie+Math.imul(Ke,ht)|0,ie=ie+Math.imul(xt,Xe)|0,Te=Te+Math.imul(xt,ht)|0,ge=ge+Math.imul(Yt,xe)|0,ie=ie+Math.imul(Yt,Se)|0,ie=ie+Math.imul(xr,xe)|0,Te=Te+Math.imul(xr,Se)|0,ge=ge+Math.imul(Rt,Gt)|0,ie=ie+Math.imul(Rt,Vt)|0,ie=ie+Math.imul(kt,Gt)|0,Te=Te+Math.imul(kt,Vt)|0,ge=ge+Math.imul(qt,Qr)|0,ie=ie+Math.imul(qt,ai)|0,ie=ie+Math.imul(rt,Qr)|0,Te=Te+Math.imul(rt,ai)|0,ge=ge+Math.imul(Ge,ri)|0,ie=ie+Math.imul(Ge,bi)|0,ie=ie+Math.imul(nt,ri)|0,Te=Te+Math.imul(nt,bi)|0,ge=ge+Math.imul(me,Wi)|0,ie=ie+Math.imul(me,Ni)|0,ie=ie+Math.imul(Re,Wi)|0,Te=Te+Math.imul(Re,Ni)|0,ge=ge+Math.imul(Ae,$i)|0,ie=ie+Math.imul(Ae,zn)|0,ie=ie+Math.imul(ze,$i)|0,Te=Te+Math.imul(ze,zn)|0;var Mi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Mi>>>26)|0,Mi&=67108863,ge=Math.imul(fr,Or),ie=Math.imul(fr,Nr),ie=ie+Math.imul(_r,Or)|0,Te=Math.imul(_r,Nr),ge=ge+Math.imul(dt,Ne)|0,ie=ie+Math.imul(dt,Ye)|0,ie=ie+Math.imul(Ht,Ne)|0,Te=Te+Math.imul(Ht,Ye)|0,ge=ge+Math.imul(Lt,Xe)|0,ie=ie+Math.imul(Lt,ht)|0,ie=ie+Math.imul(St,Xe)|0,Te=Te+Math.imul(St,ht)|0,ge=ge+Math.imul(Ke,xe)|0,ie=ie+Math.imul(Ke,Se)|0,ie=ie+Math.imul(xt,xe)|0,Te=Te+Math.imul(xt,Se)|0,ge=ge+Math.imul(Yt,Gt)|0,ie=ie+Math.imul(Yt,Vt)|0,ie=ie+Math.imul(xr,Gt)|0,Te=Te+Math.imul(xr,Vt)|0,ge=ge+Math.imul(Rt,Qr)|0,ie=ie+Math.imul(Rt,ai)|0,ie=ie+Math.imul(kt,Qr)|0,Te=Te+Math.imul(kt,ai)|0,ge=ge+Math.imul(qt,ri)|0,ie=ie+Math.imul(qt,bi)|0,ie=ie+Math.imul(rt,ri)|0,Te=Te+Math.imul(rt,bi)|0,ge=ge+Math.imul(Ge,Wi)|0,ie=ie+Math.imul(Ge,Ni)|0,ie=ie+Math.imul(nt,Wi)|0,Te=Te+Math.imul(nt,Ni)|0,ge=ge+Math.imul(me,$i)|0,ie=ie+Math.imul(me,zn)|0,ie=ie+Math.imul(Re,$i)|0,Te=Te+Math.imul(Re,zn)|0,ge=ge+Math.imul(Ae,It)|0,ie=ie+Math.imul(Ae,ft)|0,ie=ie+Math.imul(ze,It)|0,Te=Te+Math.imul(ze,ft)|0;var Pi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,ge=Math.imul(fr,Ne),ie=Math.imul(fr,Ye),ie=ie+Math.imul(_r,Ne)|0,Te=Math.imul(_r,Ye),ge=ge+Math.imul(dt,Xe)|0,ie=ie+Math.imul(dt,ht)|0,ie=ie+Math.imul(Ht,Xe)|0,Te=Te+Math.imul(Ht,ht)|0,ge=ge+Math.imul(Lt,xe)|0,ie=ie+Math.imul(Lt,Se)|0,ie=ie+Math.imul(St,xe)|0,Te=Te+Math.imul(St,Se)|0,ge=ge+Math.imul(Ke,Gt)|0,ie=ie+Math.imul(Ke,Vt)|0,ie=ie+Math.imul(xt,Gt)|0,Te=Te+Math.imul(xt,Vt)|0,ge=ge+Math.imul(Yt,Qr)|0,ie=ie+Math.imul(Yt,ai)|0,ie=ie+Math.imul(xr,Qr)|0,Te=Te+Math.imul(xr,ai)|0,ge=ge+Math.imul(Rt,ri)|0,ie=ie+Math.imul(Rt,bi)|0,ie=ie+Math.imul(kt,ri)|0,Te=Te+Math.imul(kt,bi)|0,ge=ge+Math.imul(qt,Wi)|0,ie=ie+Math.imul(qt,Ni)|0,ie=ie+Math.imul(rt,Wi)|0,Te=Te+Math.imul(rt,Ni)|0,ge=ge+Math.imul(Ge,$i)|0,ie=ie+Math.imul(Ge,zn)|0,ie=ie+Math.imul(nt,$i)|0,Te=Te+Math.imul(nt,zn)|0,ge=ge+Math.imul(me,It)|0,ie=ie+Math.imul(me,ft)|0,ie=ie+Math.imul(Re,It)|0,Te=Te+Math.imul(Re,ft)|0;var Gi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,ge=Math.imul(fr,Xe),ie=Math.imul(fr,ht),ie=ie+Math.imul(_r,Xe)|0,Te=Math.imul(_r,ht),ge=ge+Math.imul(dt,xe)|0,ie=ie+Math.imul(dt,Se)|0,ie=ie+Math.imul(Ht,xe)|0,Te=Te+Math.imul(Ht,Se)|0,ge=ge+Math.imul(Lt,Gt)|0,ie=ie+Math.imul(Lt,Vt)|0,ie=ie+Math.imul(St,Gt)|0,Te=Te+Math.imul(St,Vt)|0,ge=ge+Math.imul(Ke,Qr)|0,ie=ie+Math.imul(Ke,ai)|0,ie=ie+Math.imul(xt,Qr)|0,Te=Te+Math.imul(xt,ai)|0,ge=ge+Math.imul(Yt,ri)|0,ie=ie+Math.imul(Yt,bi)|0,ie=ie+Math.imul(xr,ri)|0,Te=Te+Math.imul(xr,bi)|0,ge=ge+Math.imul(Rt,Wi)|0,ie=ie+Math.imul(Rt,Ni)|0,ie=ie+Math.imul(kt,Wi)|0,Te=Te+Math.imul(kt,Ni)|0,ge=ge+Math.imul(qt,$i)|0,ie=ie+Math.imul(qt,zn)|0,ie=ie+Math.imul(rt,$i)|0,Te=Te+Math.imul(rt,zn)|0,ge=ge+Math.imul(Ge,It)|0,ie=ie+Math.imul(Ge,ft)|0,ie=ie+Math.imul(nt,It)|0,Te=Te+Math.imul(nt,ft)|0;var Ki=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Ki>>>26)|0,Ki&=67108863,ge=Math.imul(fr,xe),ie=Math.imul(fr,Se),ie=ie+Math.imul(_r,xe)|0,Te=Math.imul(_r,Se),ge=ge+Math.imul(dt,Gt)|0,ie=ie+Math.imul(dt,Vt)|0,ie=ie+Math.imul(Ht,Gt)|0,Te=Te+Math.imul(Ht,Vt)|0,ge=ge+Math.imul(Lt,Qr)|0,ie=ie+Math.imul(Lt,ai)|0,ie=ie+Math.imul(St,Qr)|0,Te=Te+Math.imul(St,ai)|0,ge=ge+Math.imul(Ke,ri)|0,ie=ie+Math.imul(Ke,bi)|0,ie=ie+Math.imul(xt,ri)|0,Te=Te+Math.imul(xt,bi)|0,ge=ge+Math.imul(Yt,Wi)|0,ie=ie+Math.imul(Yt,Ni)|0,ie=ie+Math.imul(xr,Wi)|0,Te=Te+Math.imul(xr,Ni)|0,ge=ge+Math.imul(Rt,$i)|0,ie=ie+Math.imul(Rt,zn)|0,ie=ie+Math.imul(kt,$i)|0,Te=Te+Math.imul(kt,zn)|0,ge=ge+Math.imul(qt,It)|0,ie=ie+Math.imul(qt,ft)|0,ie=ie+Math.imul(rt,It)|0,Te=Te+Math.imul(rt,ft)|0;var ka=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(ka>>>26)|0,ka&=67108863,ge=Math.imul(fr,Gt),ie=Math.imul(fr,Vt),ie=ie+Math.imul(_r,Gt)|0,Te=Math.imul(_r,Vt),ge=ge+Math.imul(dt,Qr)|0,ie=ie+Math.imul(dt,ai)|0,ie=ie+Math.imul(Ht,Qr)|0,Te=Te+Math.imul(Ht,ai)|0,ge=ge+Math.imul(Lt,ri)|0,ie=ie+Math.imul(Lt,bi)|0,ie=ie+Math.imul(St,ri)|0,Te=Te+Math.imul(St,bi)|0,ge=ge+Math.imul(Ke,Wi)|0,ie=ie+Math.imul(Ke,Ni)|0,ie=ie+Math.imul(xt,Wi)|0,Te=Te+Math.imul(xt,Ni)|0,ge=ge+Math.imul(Yt,$i)|0,ie=ie+Math.imul(Yt,zn)|0,ie=ie+Math.imul(xr,$i)|0,Te=Te+Math.imul(xr,zn)|0,ge=ge+Math.imul(Rt,It)|0,ie=ie+Math.imul(Rt,ft)|0,ie=ie+Math.imul(kt,It)|0,Te=Te+Math.imul(kt,ft)|0;var jn=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jn>>>26)|0,jn&=67108863,ge=Math.imul(fr,Qr),ie=Math.imul(fr,ai),ie=ie+Math.imul(_r,Qr)|0,Te=Math.imul(_r,ai),ge=ge+Math.imul(dt,ri)|0,ie=ie+Math.imul(dt,bi)|0,ie=ie+Math.imul(Ht,ri)|0,Te=Te+Math.imul(Ht,bi)|0,ge=ge+Math.imul(Lt,Wi)|0,ie=ie+Math.imul(Lt,Ni)|0,ie=ie+Math.imul(St,Wi)|0,Te=Te+Math.imul(St,Ni)|0,ge=ge+Math.imul(Ke,$i)|0,ie=ie+Math.imul(Ke,zn)|0,ie=ie+Math.imul(xt,$i)|0,Te=Te+Math.imul(xt,zn)|0,ge=ge+Math.imul(Yt,It)|0,ie=ie+Math.imul(Yt,ft)|0,ie=ie+Math.imul(xr,It)|0,Te=Te+Math.imul(xr,ft)|0;var la=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(la>>>26)|0,la&=67108863,ge=Math.imul(fr,ri),ie=Math.imul(fr,bi),ie=ie+Math.imul(_r,ri)|0,Te=Math.imul(_r,bi),ge=ge+Math.imul(dt,Wi)|0,ie=ie+Math.imul(dt,Ni)|0,ie=ie+Math.imul(Ht,Wi)|0,Te=Te+Math.imul(Ht,Ni)|0,ge=ge+Math.imul(Lt,$i)|0,ie=ie+Math.imul(Lt,zn)|0,ie=ie+Math.imul(St,$i)|0,Te=Te+Math.imul(St,zn)|0,ge=ge+Math.imul(Ke,It)|0,ie=ie+Math.imul(Ke,ft)|0,ie=ie+Math.imul(xt,It)|0,Te=Te+Math.imul(xt,ft)|0;var Fa=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Fa>>>26)|0,Fa&=67108863,ge=Math.imul(fr,Wi),ie=Math.imul(fr,Ni),ie=ie+Math.imul(_r,Wi)|0,Te=Math.imul(_r,Ni),ge=ge+Math.imul(dt,$i)|0,ie=ie+Math.imul(dt,zn)|0,ie=ie+Math.imul(Ht,$i)|0,Te=Te+Math.imul(Ht,zn)|0,ge=ge+Math.imul(Lt,It)|0,ie=ie+Math.imul(Lt,ft)|0,ie=ie+Math.imul(St,It)|0,Te=Te+Math.imul(St,ft)|0;var Ra=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Ra>>>26)|0,Ra&=67108863,ge=Math.imul(fr,$i),ie=Math.imul(fr,zn),ie=ie+Math.imul(_r,$i)|0,Te=Math.imul(_r,zn),ge=ge+Math.imul(dt,It)|0,ie=ie+Math.imul(dt,ft)|0,ie=ie+Math.imul(Ht,It)|0,Te=Te+Math.imul(Ht,ft)|0;var jo=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jo>>>26)|0,jo&=67108863,ge=Math.imul(fr,It),ie=Math.imul(fr,ft),ie=ie+Math.imul(_r,It)|0,Te=Math.imul(_r,ft);var oa=(ke+ge|0)+((ie&8191)<<13)|0;return ke=(Te+(ie>>>13)|0)+(oa>>>26)|0,oa&=67108863,Me[0]=jt,Me[1]=Zt,Me[2]=yr,Me[3]=Fr,Me[4]=Zr,Me[5]=Vr,Me[6]=gi,Me[7]=Si,Me[8]=Mi,Me[9]=Pi,Me[10]=Gi,Me[11]=Ki,Me[12]=ka,Me[13]=jn,Me[14]=la,Me[15]=Fa,Me[16]=Ra,Me[17]=jo,Me[18]=oa,ke!==0&&(Me[19]=ke,re.length++),re};Math.imul||(L=A);function _(G,N,W){W.negative=N.negative^G.negative,W.length=G.length+N.length;for(var re=0,ae=0,_e=0;_e>>26)|0,ae+=Me>>>26,Me&=67108863}W.words[_e]=ke,re=Me,Me=ae}return re!==0?W.words[_e]=re:W.length--,W.strip()}function C(G,N,W){var re=new M;return re.mulp(G,N,W)}f.prototype.mulTo=function(N,W){var re,ae=this.length+N.length;return this.length===10&&N.length===10?re=L(this,N,W):ae<63?re=A(this,N,W):ae<1024?re=_(this,N,W):re=C(this,N,W),re};function M(G,N){this.x=G,this.y=N}M.prototype.makeRBT=function(N){for(var W=new Array(N),re=f.prototype._countBits(N)-1,ae=0;ae>=1;return ae},M.prototype.permute=function(N,W,re,ae,_e,Me){for(var ke=0;ke>>1)_e++;return 1<<_e+1+ae},M.prototype.conjugate=function(N,W,re){if(!(re<=1))for(var ae=0;ae>>13,re[2*Me+1]=_e&8191,_e=_e>>>13;for(Me=2*W;Me>=26,W+=ae/67108864|0,W+=_e>>>26,this.words[re]=_e&67108863}return W!==0&&(this.words[re]=W,this.length++),this},f.prototype.muln=function(N){return this.clone().imuln(N)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(N){var W=k(N);if(W.length===0)return new f(1);for(var re=this,ae=0;ae=0);var W=N%26,re=(N-W)/26,ae=67108863>>>26-W<<26-W,_e;if(W!==0){var Me=0;for(_e=0;_e>>26-W}Me&&(this.words[_e]=Me,this.length++)}if(re!==0){for(_e=this.length-1;_e>=0;_e--)this.words[_e+re]=this.words[_e];for(_e=0;_e=0);var ae;W?ae=(W-W%26)/26:ae=0;var _e=N%26,Me=Math.min((N-_e)/26,this.length),ke=67108863^67108863>>>_e<<_e,ge=re;if(ae-=Me,ae=Math.max(0,ae),ge){for(var ie=0;ieMe)for(this.length-=Me,ie=0;ie=0&&(Te!==0||ie>=ae);ie--){var Ee=this.words[ie]|0;this.words[ie]=Te<<26-_e|Ee>>>_e,Te=Ee&ke}return ge&&Te!==0&&(ge.words[ge.length++]=Te),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},f.prototype.ishrn=function(N,W,re){return u(this.negative===0),this.iushrn(N,W,re)},f.prototype.shln=function(N){return this.clone().ishln(N)},f.prototype.ushln=function(N){return this.clone().iushln(N)},f.prototype.shrn=function(N){return this.clone().ishrn(N)},f.prototype.ushrn=function(N){return this.clone().iushrn(N)},f.prototype.testn=function(N){u(typeof N=="number"&&N>=0);var W=N%26,re=(N-W)/26,ae=1<=0);var W=N%26,re=(N-W)/26;if(u(this.negative===0,"imaskn works only with positive numbers"),this.length<=re)return this;if(W!==0&&re++,this.length=Math.min(re,this.length),W!==0){var ae=67108863^67108863>>>W<=67108864;W++)this.words[W]-=67108864,W===this.length-1?this.words[W+1]=1:this.words[W+1]++;return this.length=Math.max(this.length,W+1),this},f.prototype.isubn=function(N){if(u(typeof N=="number"),u(N<67108864),N<0)return this.iaddn(-N);if(this.negative!==0)return this.negative=0,this.iaddn(N),this.negative=1,this;if(this.words[0]-=N,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var W=0;W>26)-(ge/67108864|0),this.words[_e+re]=Me&67108863}for(;_e>26,this.words[_e+re]=Me&67108863;if(ke===0)return this.strip();for(u(ke===-1),ke=0,_e=0;_e>26,this.words[_e]=Me&67108863;return this.negative=1,this.strip()},f.prototype._wordDiv=function(N,W){var re=this.length-N.length,ae=this.clone(),_e=N,Me=_e.words[_e.length-1]|0,ke=this._countBits(Me);re=26-ke,re!==0&&(_e=_e.ushln(re),ae.iushln(re),Me=_e.words[_e.length-1]|0);var ge=ae.length-_e.length,ie;if(W!=="mod"){ie=new f(null),ie.length=ge+1,ie.words=new Array(ie.length);for(var Te=0;Te=0;Ae--){var ze=(ae.words[_e.length+Ae]|0)*67108864+(ae.words[_e.length+Ae-1]|0);for(ze=Math.min(ze/Me|0,67108863),ae._ishlnsubmul(_e,ze,Ae);ae.negative!==0;)ze--,ae.negative=0,ae._ishlnsubmul(_e,1,Ae),ae.isZero()||(ae.negative^=1);ie&&(ie.words[Ae]=ze)}return ie&&ie.strip(),ae.strip(),W!=="div"&&re!==0&&ae.iushrn(re),{div:ie||null,mod:ae}},f.prototype.divmod=function(N,W,re){if(u(!N.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var ae,_e,Me;return this.negative!==0&&N.negative===0?(Me=this.neg().divmod(N,W),W!=="mod"&&(ae=Me.div.neg()),W!=="div"&&(_e=Me.mod.neg(),re&&_e.negative!==0&&_e.iadd(N)),{div:ae,mod:_e}):this.negative===0&&N.negative!==0?(Me=this.divmod(N.neg(),W),W!=="mod"&&(ae=Me.div.neg()),{div:ae,mod:Me.mod}):this.negative&N.negative?(Me=this.neg().divmod(N.neg(),W),W!=="div"&&(_e=Me.mod.neg(),re&&_e.negative!==0&&_e.isub(N)),{div:Me.div,mod:_e}):N.length>this.length||this.cmp(N)<0?{div:new f(0),mod:this}:N.length===1?W==="div"?{div:this.divn(N.words[0]),mod:null}:W==="mod"?{div:null,mod:new f(this.modn(N.words[0]))}:{div:this.divn(N.words[0]),mod:new f(this.modn(N.words[0]))}:this._wordDiv(N,W)},f.prototype.div=function(N){return this.divmod(N,"div",!1).div},f.prototype.mod=function(N){return this.divmod(N,"mod",!1).mod},f.prototype.umod=function(N){return this.divmod(N,"mod",!0).mod},f.prototype.divRound=function(N){var W=this.divmod(N);if(W.mod.isZero())return W.div;var re=W.div.negative!==0?W.mod.isub(N):W.mod,ae=N.ushrn(1),_e=N.andln(1),Me=re.cmp(ae);return Me<0||_e===1&&Me===0?W.div:W.div.negative!==0?W.div.isubn(1):W.div.iaddn(1)},f.prototype.modn=function(N){u(N<=67108863);for(var W=(1<<26)%N,re=0,ae=this.length-1;ae>=0;ae--)re=(W*re+(this.words[ae]|0))%N;return re},f.prototype.idivn=function(N){u(N<=67108863);for(var W=0,re=this.length-1;re>=0;re--){var ae=(this.words[re]|0)+W*67108864;this.words[re]=ae/N|0,W=ae%N}return this.strip()},f.prototype.divn=function(N){return this.clone().idivn(N)},f.prototype.egcd=function(N){u(N.negative===0),u(!N.isZero());var W=this,re=N.clone();W.negative!==0?W=W.umod(N):W=W.clone();for(var ae=new f(1),_e=new f(0),Me=new f(0),ke=new f(1),ge=0;W.isEven()&&re.isEven();)W.iushrn(1),re.iushrn(1),++ge;for(var ie=re.clone(),Te=W.clone();!W.isZero();){for(var Ee=0,Ae=1;!(W.words[0]&Ae)&&Ee<26;++Ee,Ae<<=1);if(Ee>0)for(W.iushrn(Ee);Ee-- >0;)(ae.isOdd()||_e.isOdd())&&(ae.iadd(ie),_e.isub(Te)),ae.iushrn(1),_e.iushrn(1);for(var ze=0,Ce=1;!(re.words[0]&Ce)&&ze<26;++ze,Ce<<=1);if(ze>0)for(re.iushrn(ze);ze-- >0;)(Me.isOdd()||ke.isOdd())&&(Me.iadd(ie),ke.isub(Te)),Me.iushrn(1),ke.iushrn(1);W.cmp(re)>=0?(W.isub(re),ae.isub(Me),_e.isub(ke)):(re.isub(W),Me.isub(ae),ke.isub(_e))}return{a:Me,b:ke,gcd:re.iushln(ge)}},f.prototype._invmp=function(N){u(N.negative===0),u(!N.isZero());var W=this,re=N.clone();W.negative!==0?W=W.umod(N):W=W.clone();for(var ae=new f(1),_e=new f(0),Me=re.clone();W.cmpn(1)>0&&re.cmpn(1)>0;){for(var ke=0,ge=1;!(W.words[0]&ge)&&ke<26;++ke,ge<<=1);if(ke>0)for(W.iushrn(ke);ke-- >0;)ae.isOdd()&&ae.iadd(Me),ae.iushrn(1);for(var ie=0,Te=1;!(re.words[0]&Te)&&ie<26;++ie,Te<<=1);if(ie>0)for(re.iushrn(ie);ie-- >0;)_e.isOdd()&&_e.iadd(Me),_e.iushrn(1);W.cmp(re)>=0?(W.isub(re),ae.isub(_e)):(re.isub(W),_e.isub(ae))}var Ee;return W.cmpn(1)===0?Ee=ae:Ee=_e,Ee.cmpn(0)<0&&Ee.iadd(N),Ee},f.prototype.gcd=function(N){if(this.isZero())return N.abs();if(N.isZero())return this.abs();var W=this.clone(),re=N.clone();W.negative=0,re.negative=0;for(var ae=0;W.isEven()&&re.isEven();ae++)W.iushrn(1),re.iushrn(1);do{for(;W.isEven();)W.iushrn(1);for(;re.isEven();)re.iushrn(1);var _e=W.cmp(re);if(_e<0){var Me=W;W=re,re=Me}else if(_e===0||re.cmpn(1)===0)break;W.isub(re)}while(!0);return re.iushln(ae)},f.prototype.invm=function(N){return this.egcd(N).a.umod(N)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(N){return this.words[0]&N},f.prototype.bincn=function(N){u(typeof N=="number");var W=N%26,re=(N-W)/26,ae=1<>>26,ke&=67108863,this.words[Me]=ke}return _e!==0&&(this.words[Me]=_e,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(N){var W=N<0;if(this.negative!==0&&!W)return-1;if(this.negative===0&&W)return 1;this.strip();var re;if(this.length>1)re=1;else{W&&(N=-N),u(N<=67108863,"Number is too big");var ae=this.words[0]|0;re=ae===N?0:aeN.length)return 1;if(this.length=0;re--){var ae=this.words[re]|0,_e=N.words[re]|0;if(ae!==_e){ae<_e?W=-1:ae>_e&&(W=1);break}}return W},f.prototype.gtn=function(N){return this.cmpn(N)===1},f.prototype.gt=function(N){return this.cmp(N)===1},f.prototype.gten=function(N){return this.cmpn(N)>=0},f.prototype.gte=function(N){return this.cmp(N)>=0},f.prototype.ltn=function(N){return this.cmpn(N)===-1},f.prototype.lt=function(N){return this.cmp(N)===-1},f.prototype.lten=function(N){return this.cmpn(N)<=0},f.prototype.lte=function(N){return this.cmp(N)<=0},f.prototype.eqn=function(N){return this.cmpn(N)===0},f.prototype.eq=function(N){return this.cmp(N)===0},f.red=function(N){return new H(N)},f.prototype.toRed=function(N){return u(!this.red,"Already a number in reduction context"),u(this.negative===0,"red works only with positives"),N.convertTo(this)._forceRed(N)},f.prototype.fromRed=function(){return u(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(N){return this.red=N,this},f.prototype.forceRed=function(N){return u(!this.red,"Already a number in reduction context"),this._forceRed(N)},f.prototype.redAdd=function(N){return u(this.red,"redAdd works only with red numbers"),this.red.add(this,N)},f.prototype.redIAdd=function(N){return u(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,N)},f.prototype.redSub=function(N){return u(this.red,"redSub works only with red numbers"),this.red.sub(this,N)},f.prototype.redISub=function(N){return u(this.red,"redISub works only with red numbers"),this.red.isub(this,N)},f.prototype.redShl=function(N){return u(this.red,"redShl works only with red numbers"),this.red.shl(this,N)},f.prototype.redMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.mul(this,N)},f.prototype.redIMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.imul(this,N)},f.prototype.redSqr=function(){return u(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return u(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return u(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return u(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return u(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(N){return u(this.red&&!N.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,N)};var g={k256:null,p224:null,p192:null,p25519:null};function P(G,N){this.name=G,this.p=new f(N,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}P.prototype._tmp=function(){var N=new f(null);return N.words=new Array(Math.ceil(this.n/13)),N},P.prototype.ireduce=function(N){var W=N,re;do this.split(W,this.tmp),W=this.imulK(W),W=W.iadd(this.tmp),re=W.bitLength();while(re>this.n);var ae=re0?W.isub(this.p):W.strip!==void 0?W.strip():W._strip(),W},P.prototype.split=function(N,W){N.iushrn(this.n,0,W)},P.prototype.imulK=function(N){return N.imul(this.k)};function T(){P.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}c(T,P),T.prototype.split=function(N,W){for(var re=4194303,ae=Math.min(N.length,9),_e=0;_e>>22,Me=ke}Me>>>=22,N.words[_e-10]=Me,Me===0&&N.length>10?N.length-=10:N.length-=9},T.prototype.imulK=function(N){N.words[N.length]=0,N.words[N.length+1]=0,N.length+=2;for(var W=0,re=0;re>>=26,N.words[re]=_e,W=ae}return W!==0&&(N.words[N.length++]=W),N},f._prime=function(N){if(g[N])return g[N];var W;if(N==="k256")W=new T;else if(N==="p224")W=new F;else if(N==="p192")W=new q;else if(N==="p25519")W=new V;else throw new Error("Unknown prime "+N);return g[N]=W,W};function H(G){if(typeof G=="string"){var N=f._prime(G);this.m=N.p,this.prime=N}else u(G.gtn(1),"modulus must be greater than 1"),this.m=G,this.prime=null}H.prototype._verify1=function(N){u(N.negative===0,"red works only with positives"),u(N.red,"red works only with red numbers")},H.prototype._verify2=function(N,W){u((N.negative|W.negative)===0,"red works only with positives"),u(N.red&&N.red===W.red,"red works only with red numbers")},H.prototype.imod=function(N){return this.prime?this.prime.ireduce(N)._forceRed(this):N.umod(this.m)._forceRed(this)},H.prototype.neg=function(N){return N.isZero()?N.clone():this.m.sub(N)._forceRed(this)},H.prototype.add=function(N,W){this._verify2(N,W);var re=N.add(W);return re.cmp(this.m)>=0&&re.isub(this.m),re._forceRed(this)},H.prototype.iadd=function(N,W){this._verify2(N,W);var re=N.iadd(W);return re.cmp(this.m)>=0&&re.isub(this.m),re},H.prototype.sub=function(N,W){this._verify2(N,W);var re=N.sub(W);return re.cmpn(0)<0&&re.iadd(this.m),re._forceRed(this)},H.prototype.isub=function(N,W){this._verify2(N,W);var re=N.isub(W);return re.cmpn(0)<0&&re.iadd(this.m),re},H.prototype.shl=function(N,W){return this._verify1(N),this.imod(N.ushln(W))},H.prototype.imul=function(N,W){return this._verify2(N,W),this.imod(N.imul(W))},H.prototype.mul=function(N,W){return this._verify2(N,W),this.imod(N.mul(W))},H.prototype.isqr=function(N){return this.imul(N,N.clone())},H.prototype.sqr=function(N){return this.mul(N,N)},H.prototype.sqrt=function(N){if(N.isZero())return N.clone();var W=this.m.andln(3);if(u(W%2===1),W===3){var re=this.m.add(new f(1)).iushrn(2);return this.pow(N,re)}for(var ae=this.m.subn(1),_e=0;!ae.isZero()&&ae.andln(1)===0;)_e++,ae.iushrn(1);u(!ae.isZero());var Me=new f(1).toRed(this),ke=Me.redNeg(),ge=this.m.subn(1).iushrn(1),ie=this.m.bitLength();for(ie=new f(2*ie*ie).toRed(this);this.pow(ie,ge).cmp(ke)!==0;)ie.redIAdd(ke);for(var Te=this.pow(ie,ae),Ee=this.pow(N,ae.addn(1).iushrn(1)),Ae=this.pow(N,ae),ze=_e;Ae.cmp(Me)!==0;){for(var Ce=Ae,me=0;Ce.cmp(Me)!==0;me++)Ce=Ce.redSqr();u(me=0;_e--){for(var Te=W.words[_e],Ee=ie-1;Ee>=0;Ee--){var Ae=Te>>Ee&1;if(Me!==ae[0]&&(Me=this.sqr(Me)),Ae===0&&ke===0){ge=0;continue}ke<<=1,ke|=Ae,ge++,!(ge!==re&&(_e!==0||Ee!==0))&&(Me=this.mul(Me,ae[ke]),ge=0,ke=0)}ie=26}return Me},H.prototype.convertTo=function(N){var W=N.umod(this.m);return W===N?W.clone():W},H.prototype.convertFrom=function(N){var W=N.clone();return W.red=null,W},f.mont=function(N){return new X(N)};function X(G){H.call(this,G),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}c(X,H),X.prototype.convertTo=function(N){return this.imod(N.ushln(this.shift))},X.prototype.convertFrom=function(N){var W=this.imod(N.mul(this.rinv));return W.red=null,W},X.prototype.imul=function(N,W){if(N.isZero()||W.isZero())return N.words[0]=0,N.length=1,N;var re=N.imul(W),ae=re.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=re.isub(ae).iushrn(this.shift),Me=_e;return _e.cmp(this.m)>=0?Me=_e.isub(this.m):_e.cmpn(0)<0&&(Me=_e.iadd(this.m)),Me._forceRed(this)},X.prototype.mul=function(N,W){if(N.isZero()||W.isZero())return new f(0)._forceRed(this);var re=N.mul(W),ae=re.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=re.isub(ae).iushrn(this.shift),Me=_e;return _e.cmp(this.m)>=0?Me=_e.isub(this.m):_e.cmpn(0)<0&&(Me=_e.iadd(this.m)),Me._forceRed(this)},X.prototype.invm=function(N){var W=this.imod(N._invmp(this.m).mul(this.r2));return W._forceRed(this)}}(i,this)},6204:function(i){"use strict";i.exports=a;function a(o){var s,l,u,c=o.length,f=0;for(s=0;s>>1;if(!(M<=0)){var g,P=s.mallocDouble(2*M*_),T=s.mallocInt32(_);if(_=f(E,M,P,T),_>0){if(M===1&&L)l.init(_),g=l.sweepComplete(M,A,0,_,P,T,0,_,P,T);else{var F=s.mallocDouble(2*M*C),q=s.mallocInt32(C);C=f(k,M,F,q),C>0&&(l.init(_+C),M===1?g=l.sweepBipartite(M,A,0,_,P,T,0,C,F,q):g=u(M,A,L,_,P,T,C,F,q),s.free(F),s.free(q))}s.free(P),s.free(T)}return g}}}var d;function v(E,k){d.push([E,k])}function x(E){return d=[],h(E,E,v,!0),d}function b(E,k){return d=[],h(E,k,v,!1),d}function p(E,k,A){switch(arguments.length){case 1:return x(E);case 2:return typeof k=="function"?h(E,E,k,!0):b(E,k);case 3:return h(E,k,A,!1);default:throw new Error("box-intersect: Invalid arguments")}}},2455:function(i,a){"use strict";function o(){function u(h,d,v,x,b,p,E,k,A,L,_){for(var C=2*h,M=x,g=C*x;MA-k?u(h,d,v,x,b,p,E,k,A,L,_):c(h,d,v,x,b,p,E,k,A,L,_)}return f}function s(){function u(v,x,b,p,E,k,A,L,_,C,M){for(var g=2*v,P=p,T=g*p;PC-_?p?u(v,x,b,E,k,A,L,_,C,M,g):c(v,x,b,E,k,A,L,_,C,M,g):p?f(v,x,b,E,k,A,L,_,C,M,g):h(v,x,b,E,k,A,L,_,C,M,g)}return d}function l(u){return u?o():s()}a.partial=l(!1),a.full=l(!0)},7150:function(i,a,o){"use strict";i.exports=G;var s=o(1888),l=o(8828),u=o(2455),c=u.partial,f=u.full,h=o(855),d=o(3545),v=o(8105),x=128,b=1<<22,p=1<<22,E=v("!(lo>=p0)&&!(p1>=hi)"),k=v("lo===p0"),A=v("lo0;){Te-=1;var ze=Te*M,Ce=T[ze],me=T[ze+1],Re=T[ze+2],ce=T[ze+3],Ge=T[ze+4],nt=T[ze+5],ct=Te*g,qt=F[ct],rt=F[ct+1],ot=nt&1,Rt=!!(nt&16),kt=_e,Ct=Me,Yt=ge,xr=ie;if(ot&&(kt=ge,Ct=ie,Yt=_e,xr=Me),!(nt&2&&(Re=A(N,Ce,me,Re,kt,Ct,rt),me>=Re))&&!(nt&4&&(me=L(N,Ce,me,Re,kt,Ct,qt),me>=Re))){var er=Re-me,Ke=Ge-ce;if(Rt){if(N*er*(er+Ke)v&&b[C+d]>L;--_,C-=E){for(var M=C,g=C+E,P=0;P>>1,L=2*h,_=A,C=b[L*A+d];E=F?(_=T,C=F):P>=V?(_=g,C=P):(_=q,C=V):F>=V?(_=T,C=F):V>=P?(_=g,C=P):(_=q,C=V);for(var G=L*(k-1),N=L*_,H=0;H=p0)&&!(p1>=hi)":d};function o(v){return a[v]}function s(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g];if(F===A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function l(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g];if(Fq;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function u(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+P];if(F<=A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function c(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+P];if(F<=A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function f(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g],q=E[_+P];if(F<=A&&A<=q)if(M===T)M+=1,C+=L;else{for(var V=0;L>V;++V){var H=E[_+V];E[_+V]=E[C],E[C++]=H}var X=k[T];k[T]=k[M],k[M++]=X}}return M}function h(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g],q=E[_+P];if(FV;++V){var H=E[_+V];E[_+V]=E[C],E[C++]=H}var X=k[T];k[T]=k[M],k[M++]=X}}return M}function d(v,x,b,p,E,k,A,L){for(var _=2*v,C=_*b,M=C,g=b,P=x,T=v+x,F=b;p>F;++F,C+=_){var q=E[C+P],V=E[C+T];if(!(q>=A)&&!(L>=V))if(g===F)g+=1,M+=_;else{for(var H=0;_>H;++H){var X=E[C+H];E[C+H]=E[M],E[M++]=X}var G=k[F];k[F]=k[g],k[g++]=G}}return g}},4192:function(i){"use strict";i.exports=o;var a=32;function o(x,b){b<=4*a?s(0,b-1,x):v(0,b-1,x)}function s(x,b,p){for(var E=2*(x+1),k=x+1;k<=b;++k){for(var A=p[E++],L=p[E++],_=k,C=E-2;_-- >x;){var M=p[C-2],g=p[C-1];if(Mp[b+1]:!0}function d(x,b,p,E){x*=2;var k=E[x];return k>1,_=L-E,C=L+E,M=k,g=_,P=L,T=C,F=A,q=x+1,V=b-1,H=0;h(M,g,p)&&(H=M,M=g,g=H),h(T,F,p)&&(H=T,T=F,F=H),h(M,P,p)&&(H=M,M=P,P=H),h(g,P,p)&&(H=g,g=P,P=H),h(M,T,p)&&(H=M,M=T,T=H),h(P,T,p)&&(H=P,P=T,T=H),h(g,F,p)&&(H=g,g=F,F=H),h(g,P,p)&&(H=g,g=P,P=H),h(T,F,p)&&(H=T,T=F,F=H);for(var X=p[2*g],G=p[2*g+1],N=p[2*T],W=p[2*T+1],re=2*M,ae=2*P,_e=2*F,Me=2*k,ke=2*L,ge=2*A,ie=0;ie<2;++ie){var Te=p[re+ie],Ee=p[ae+ie],Ae=p[_e+ie];p[Me+ie]=Te,p[ke+ie]=Ee,p[ge+ie]=Ae}u(_,x,p),u(C,b,p);for(var ze=q;ze<=V;++ze)if(d(ze,X,G,p))ze!==q&&l(ze,q,p),++q;else if(!d(ze,N,W,p))for(;;)if(d(V,N,W,p)){d(V,X,G,p)?(c(ze,q,V,p),++q,--V):(l(ze,V,p),--V);break}else{if(--V>>1;u(E,Ee);for(var Ae=0,ze=0,ke=0;ke=c)Ce=Ce-c|0,A(v,x,ze--,Ce);else if(Ce>=0)A(h,d,Ae--,Ce);else if(Ce<=-c){Ce=-Ce-c|0;for(var me=0;me>>1;u(E,Ee);for(var Ae=0,ze=0,Ce=0,ke=0;ke>1===E[2*ke+3]>>1&&(Re=2,ke+=1),me<0){for(var ce=-(me>>1)-1,Ge=0;Ge>1)-1;Re===0?A(h,d,Ae--,ce):Re===1?A(v,x,ze--,ce):Re===2&&A(b,p,Ce--,ce)}}}function M(P,T,F,q,V,H,X,G,N,W,re,ae){var _e=0,Me=2*P,ke=T,ge=T+P,ie=1,Te=1;q?Te=c:ie=c;for(var Ee=V;Ee>>1;u(E,me);for(var Re=0,Ee=0;Ee=c?(Ge=!q,Ae-=c):(Ge=!!q,Ae-=1),Ge)L(h,d,Re++,Ae);else{var nt=ae[Ae],ct=Me*Ae,qt=re[ct+T+1],rt=re[ct+T+1+P];e:for(var ot=0;ot>>1;u(E,Ae);for(var ze=0,ge=0;ge=c)h[ze++]=ie-c;else{ie-=1;var me=re[ie],Re=_e*ie,ce=W[Re+T+1],Ge=W[Re+T+1+P];e:for(var nt=0;nt=0;--nt)if(h[nt]===ie){for(var ot=nt+1;ot0;){for(var k=d.pop(),b=d.pop(),A=-1,L=-1,p=x[b],C=1;C=0||(h.flip(b,k),u(f,h,d,A,b,L),u(f,h,d,b,L,A),u(f,h,d,L,k,A),u(f,h,d,k,A,L))}}},5023:function(i,a,o){"use strict";var s=o(2478);i.exports=d;function l(v,x,b,p,E,k,A){this.cells=v,this.neighbor=x,this.flags=p,this.constraint=b,this.active=E,this.next=k,this.boundary=A}var u=l.prototype;function c(v,x){return v[0]-x[0]||v[1]-x[1]||v[2]-x[2]}u.locate=function(){var v=[0,0,0];return function(x,b,p){var E=x,k=b,A=p;return b0||A.length>0;){for(;k.length>0;){var g=k.pop();if(L[g]!==-E){L[g]=E;for(var P=_[g],T=0;T<3;++T){var F=M[3*g+T];F>=0&&L[F]===0&&(C[3*g+T]?A.push(F):(k.push(F),L[F]=E))}}}var q=A;A=k,k=q,A.length=0,E=-E}var V=h(_,L,x);return b?V.concat(p.boundary):V}},8902:function(i,a,o){"use strict";var s=o(2478),l=o(3250)[3],u=0,c=1,f=2;i.exports=A;function h(L,_,C,M,g){this.a=L,this.b=_,this.idx=C,this.lowerIds=M,this.upperIds=g}function d(L,_,C,M){this.a=L,this.b=_,this.type=C,this.idx=M}function v(L,_){var C=L.a[0]-_.a[0]||L.a[1]-_.a[1]||L.type-_.type;return C||L.type!==u&&(C=l(L.a,L.b,_.b),C)?C:L.idx-_.idx}function x(L,_){return l(L.a,L.b,_)}function b(L,_,C,M,g){for(var P=s.lt(_,M,x),T=s.gt(_,M,x),F=P;F1&&l(C[V[X-2]],C[V[X-1]],M)>0;)L.push([V[X-1],V[X-2],g]),X-=1;V.length=X,V.push(g);for(var H=q.upperIds,X=H.length;X>1&&l(C[H[X-2]],C[H[X-1]],M)<0;)L.push([H[X-2],H[X-1],g]),X-=1;H.length=X,H.push(g)}}function p(L,_){var C;return L.a[0]<_.a[0]?C=l(L.a,L.b,_.a):C=l(_.b,_.a,L.a),C||(_.b[0]q[0]&&g.push(new d(q,F,f,P),new d(F,q,c,P))}g.sort(v);for(var V=g[0].a[0]-(1+Math.abs(g[0].a[0]))*Math.pow(2,-52),H=[new h([V,1],[V,0],-1,[],[],[],[])],X=[],P=0,G=g.length;P=0}}(),u.removeTriangle=function(h,d,v){var x=this.stars;c(x[h],d,v),c(x[d],v,h),c(x[v],h,d)},u.addTriangle=function(h,d,v){var x=this.stars;x[h].push(d,v),x[d].push(v,h),x[v].push(h,d)},u.opposite=function(h,d){for(var v=this.stars[d],x=1,b=v.length;x=0;--N){var Te=X[N];W=Te[0];var Ee=V[W],Ae=Ee[0],ze=Ee[1],Ce=q[Ae],me=q[ze];if((Ce[0]-me[0]||Ce[1]-me[1])<0){var Re=Ae;Ae=ze,ze=Re}Ee[0]=Ae;var ce=Ee[1]=Te[1],Ge;for(G&&(Ge=Ee[2]);N>0&&X[N-1][0]===W;){var Te=X[--N],nt=Te[1];G?V.push([ce,nt,Ge]):V.push([ce,nt]),ce=nt}G?V.push([ce,ze,Ge]):V.push([ce,ze])}return re}function _(q,V,H){for(var X=V.length,G=new s(X),N=[],W=0;WV[2]?1:0)}function g(q,V,H){if(q.length!==0){if(V)for(var X=0;X0||W.length>0}function F(q,V,H){var X;if(H){X=V;for(var G=new Array(V.length),N=0;NL+1)throw new Error(k+" map requires nshades to be at least size "+E.length);Array.isArray(d.alpha)?d.alpha.length!==2?_=[1,1]:_=d.alpha.slice():typeof d.alpha=="number"?_=[d.alpha,d.alpha]:_=[1,1],v=E.map(function(F){return Math.round(F.index*L)}),_[0]=Math.min(Math.max(_[0],0),1),_[1]=Math.min(Math.max(_[1],0),1);var M=E.map(function(F,q){var V=E[q].index,H=E[q].rgb.slice();return H.length===4&&H[3]>=0&&H[3]<=1||(H[3]=_[0]+(_[1]-_[0])*V),H}),g=[];for(C=0;C=0}function d(v,x,b,p){var E=s(x,b,p);if(E===0){var k=l(s(v,x,b)),A=l(s(v,x,p));if(k===A){if(k===0){var L=h(v,x,b),_=h(v,x,p);return L===_?0:L?1:-1}return 0}else{if(A===0)return k>0||h(v,x,p)?-1:1;if(k===0)return A>0||h(v,x,b)?1:-1}return l(A-k)}var C=s(v,x,b);if(C>0)return E>0&&s(v,x,p)>0?1:-1;if(C<0)return E>0||s(v,x,p)>0?1:-1;var M=s(v,x,p);return M>0||h(v,x,b)?1:-1}},8572:function(i){"use strict";i.exports=function(o){return o<0?-1:o>0?1:0}},8507:function(i){i.exports=s;var a=Math.min;function o(l,u){return l-u}function s(l,u){var c=l.length,f=l.length-u.length;if(f)return f;switch(c){case 0:return 0;case 1:return l[0]-u[0];case 2:return l[0]+l[1]-u[0]-u[1]||a(l[0],l[1])-a(u[0],u[1]);case 3:var h=l[0]+l[1],d=u[0]+u[1];if(f=h+l[2]-(d+u[2]),f)return f;var v=a(l[0],l[1]),x=a(u[0],u[1]);return a(v,l[2])-a(x,u[2])||a(v+l[2],h)-a(x+u[2],d);case 4:var b=l[0],p=l[1],E=l[2],k=l[3],A=u[0],L=u[1],_=u[2],C=u[3];return b+p+E+k-(A+L+_+C)||a(b,p,E,k)-a(A,L,_,C,A)||a(b+p,b+E,b+k,p+E,p+k,E+k)-a(A+L,A+_,A+C,L+_,L+C,_+C)||a(b+p+E,b+p+k,b+E+k,p+E+k)-a(A+L+_,A+L+C,A+_+C,L+_+C);default:for(var M=l.slice().sort(o),g=u.slice().sort(o),P=0;Po[l][0]&&(l=u);return sl?[[l],[s]]:[[s]]}},4750:function(i,a,o){"use strict";i.exports=l;var s=o(3090);function l(u){var c=s(u),f=c.length;if(f<=2)return[];for(var h=new Array(f),d=c[f-1],v=0;v=d[A]&&(k+=1);p[E]=k}}return h}function f(h,d){try{return s(h,!0)}catch(p){var v=l(h);if(v.length<=d)return[];var x=u(h,v),b=s(x,!0);return c(b,v)}}},4769:function(i){"use strict";function a(s,l,u,c,f,h){var d=6*f*f-6*f,v=3*f*f-4*f+1,x=-6*f*f+6*f,b=3*f*f-2*f;if(s.length){h||(h=new Array(s.length));for(var p=s.length-1;p>=0;--p)h[p]=d*s[p]+v*l[p]+x*u[p]+b*c[p];return h}return d*s+v*l+x*u[p]+b*c}function o(s,l,u,c,f,h){var d=f-1,v=f*f,x=d*d,b=(1+2*f)*x,p=f*x,E=v*(3-2*f),k=v*d;if(s.length){h||(h=new Array(s.length));for(var A=s.length-1;A>=0;--A)h[A]=b*s[A]+p*l[A]+E*u[A]+k*c[A];return h}return b*s+p*l+E*u+k*c}i.exports=o,i.exports.derivative=a},7642:function(i,a,o){"use strict";var s=o(8954),l=o(1682);i.exports=h;function u(d,v){this.point=d,this.index=v}function c(d,v){for(var x=d.point,b=v.point,p=x.length,E=0;E=2)return!1;H[G]=N}return!0}):V=V.filter(function(H){for(var X=0;X<=b;++X){var G=P[H[X]];if(G<0)return!1;H[X]=G}return!0}),b&1)for(var k=0;k>>31},i.exports.exponent=function(E){var k=i.exports.hi(E);return(k<<1>>>21)-1023},i.exports.fraction=function(E){var k=i.exports.lo(E),A=i.exports.hi(E),L=A&(1<<20)-1;return A&2146435072&&(L+=1048576),[k,L]},i.exports.denormalized=function(E){var k=i.exports.hi(E);return!(k&2146435072)}},1338:function(i){"use strict";function a(l,u,c){var f=l[c]|0;if(f<=0)return[];var h=new Array(f),d;if(c===l.length-1)for(d=0;d0)return o(l|0,u);break;case"object":if(typeof l.length=="number")return a(l,u,0);break}return[]}i.exports=s},3134:function(i,a,o){"use strict";i.exports=l;var s=o(1682);function l(u,c){var f=u.length;if(typeof c!="number"){c=0;for(var h=0;h=b-1)for(var C=k.length-1,g=v-x[b-1],M=0;M=b-1)for(var _=k.length-1,C=v-x[b-1],M=0;M=0;--b)if(v[--x])return!1;return!0},f.jump=function(v){var x=this.lastT(),b=this.dimension;if(!(v0;--M)p.push(u(L[M-1],_[M-1],arguments[M])),E.push(0)}},f.push=function(v){var x=this.lastT(),b=this.dimension;if(!(v1e-6?1/A:0;this._time.push(v);for(var g=b;g>0;--g){var P=u(_[g-1],C[g-1],arguments[g]);p.push(P),E.push((P-p[k++])*M)}}},f.set=function(v){var x=this.dimension;if(!(v0;--L)b.push(u(k[L-1],A[L-1],arguments[L])),p.push(0)}},f.move=function(v){var x=this.lastT(),b=this.dimension;if(!(v<=x||arguments.length!==b+1)){var p=this._state,E=this._velocity,k=p.length-this.dimension,A=this.bounds,L=A[0],_=A[1],C=v-x,M=C>1e-6?1/C:0;this._time.push(v);for(var g=b;g>0;--g){var P=arguments[g];p.push(u(L[g-1],_[g-1],p[k++]+P)),E.push(P*M)}}},f.idle=function(v){var x=this.lastT();if(!(v=0;--M)p.push(u(L[M],_[M],p[k]+C*E[k])),E.push(0),k+=1}};function h(v){for(var x=new Array(v),b=0;b=0;--q){var g=P[q];T[q]<=0?P[q]=new s(g._color,g.key,g.value,P[q+1],g.right,g._count+1):P[q]=new s(g._color,g.key,g.value,g.left,P[q+1],g._count+1)}for(var q=P.length-1;q>1;--q){var V=P[q-1],g=P[q];if(V._color===o||g._color===o)break;var H=P[q-2];if(H.left===V)if(V.left===g){var X=H.right;if(X&&X._color===a)V._color=o,H.right=u(o,X),H._color=a,q-=1;else{if(H._color=a,H.left=V.right,V._color=o,V.right=H,P[q-2]=V,P[q-1]=g,c(H),c(V),q>=3){var G=P[q-3];G.left===H?G.left=V:G.right=V}break}}else{var X=H.right;if(X&&X._color===a)V._color=o,H.right=u(o,X),H._color=a,q-=1;else{if(V.right=g.left,H._color=a,H.left=g.right,g._color=o,g.left=V,g.right=H,P[q-2]=g,P[q-1]=V,c(H),c(V),c(g),q>=3){var G=P[q-3];G.left===H?G.left=g:G.right=g}break}}else if(V.right===g){var X=H.left;if(X&&X._color===a)V._color=o,H.left=u(o,X),H._color=a,q-=1;else{if(H._color=a,H.right=V.left,V._color=o,V.left=H,P[q-2]=V,P[q-1]=g,c(H),c(V),q>=3){var G=P[q-3];G.right===H?G.right=V:G.left=V}break}}else{var X=H.left;if(X&&X._color===a)V._color=o,H.left=u(o,X),H._color=a,q-=1;else{if(V.left=g.right,H._color=a,H.right=g.left,g._color=o,g.right=V,g.left=H,P[q-2]=g,P[q-1]=V,c(H),c(V),c(g),q>=3){var G=P[q-3];G.right===H?G.right=g:G.left=g}break}}}return P[0]._color=o,new f(M,P[0])};function d(_,C){if(C.left){var M=d(_,C.left);if(M)return M}var M=_(C.key,C.value);if(M)return M;if(C.right)return d(_,C.right)}function v(_,C,M,g){var P=C(_,g.key);if(P<=0){if(g.left){var T=v(_,C,M,g.left);if(T)return T}var T=M(g.key,g.value);if(T)return T}if(g.right)return v(_,C,M,g.right)}function x(_,C,M,g,P){var T=M(_,P.key),F=M(C,P.key),q;if(T<=0&&(P.left&&(q=x(_,C,M,g,P.left),q)||F>0&&(q=g(P.key,P.value),q)))return q;if(F>0&&P.right)return x(_,C,M,g,P.right)}h.forEach=function(C,M,g){if(this.root)switch(arguments.length){case 1:return d(C,this.root);case 2:return v(M,this._compare,C,this.root);case 3:return this._compare(M,g)>=0?void 0:x(M,g,this._compare,C,this.root)}},Object.defineProperty(h,"begin",{get:function(){for(var _=[],C=this.root;C;)_.push(C),C=C.left;return new b(this,_)}}),Object.defineProperty(h,"end",{get:function(){for(var _=[],C=this.root;C;)_.push(C),C=C.right;return new b(this,_)}}),h.at=function(_){if(_<0)return new b(this,[]);for(var C=this.root,M=[];;){if(M.push(C),C.left){if(_=C.right._count)break;C=C.right}else break}return new b(this,[])},h.ge=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T<=0&&(P=g.length),T<=0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.gt=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T<0&&(P=g.length),T<0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.lt=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T>0&&(P=g.length),T<=0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.le=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T>=0&&(P=g.length),T<0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.find=function(_){for(var C=this._compare,M=this.root,g=[];M;){var P=C(_,M.key);if(g.push(M),P===0)return new b(this,g);P<=0?M=M.left:M=M.right}return new b(this,[])},h.remove=function(_){var C=this.find(_);return C?C.remove():this},h.get=function(_){for(var C=this._compare,M=this.root;M;){var g=C(_,M.key);if(g===0)return M.value;g<=0?M=M.left:M=M.right}};function b(_,C){this.tree=_,this._stack=C}var p=b.prototype;Object.defineProperty(p,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(p,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),p.clone=function(){return new b(this.tree,this._stack.slice())};function E(_,C){_.key=C.key,_.value=C.value,_.left=C.left,_.right=C.right,_._color=C._color,_._count=C._count}function k(_){for(var C,M,g,P,T=_.length-1;T>=0;--T){if(C=_[T],T===0){C._color=o;return}if(M=_[T-1],M.left===C){if(g=M.right,g.right&&g.right._color===a){if(g=M.right=l(g),P=g.right=l(g.right),M.right=g.left,g.left=M,g.right=P,g._color=M._color,C._color=o,M._color=o,P._color=o,c(M),c(g),T>1){var F=_[T-2];F.left===M?F.left=g:F.right=g}_[T-1]=g;return}else if(g.left&&g.left._color===a){if(g=M.right=l(g),P=g.left=l(g.left),M.right=P.left,g.left=P.right,P.left=M,P.right=g,P._color=M._color,M._color=o,g._color=o,C._color=o,c(M),c(g),c(P),T>1){var F=_[T-2];F.left===M?F.left=P:F.right=P}_[T-1]=P;return}if(g._color===o)if(M._color===a){M._color=o,M.right=u(a,g);return}else{M.right=u(a,g);continue}else{if(g=l(g),M.right=g.left,g.left=M,g._color=M._color,M._color=a,c(M),c(g),T>1){var F=_[T-2];F.left===M?F.left=g:F.right=g}_[T-1]=g,_[T]=M,T+1<_.length?_[T+1]=C:_.push(C),T=T+2}}else{if(g=M.left,g.left&&g.left._color===a){if(g=M.left=l(g),P=g.left=l(g.left),M.left=g.right,g.right=M,g.left=P,g._color=M._color,C._color=o,M._color=o,P._color=o,c(M),c(g),T>1){var F=_[T-2];F.right===M?F.right=g:F.left=g}_[T-1]=g;return}else if(g.right&&g.right._color===a){if(g=M.left=l(g),P=g.right=l(g.right),M.left=P.right,g.right=P.left,P.right=M,P.left=g,P._color=M._color,M._color=o,g._color=o,C._color=o,c(M),c(g),c(P),T>1){var F=_[T-2];F.right===M?F.right=P:F.left=P}_[T-1]=P;return}if(g._color===o)if(M._color===a){M._color=o,M.left=u(a,g);return}else{M.left=u(a,g);continue}else{if(g=l(g),M.left=g.right,g.right=M,g._color=M._color,M._color=a,c(M),c(g),T>1){var F=_[T-2];F.right===M?F.right=g:F.left=g}_[T-1]=g,_[T]=M,T+1<_.length?_[T+1]=C:_.push(C),T=T+2}}}}p.remove=function(){var _=this._stack;if(_.length===0)return this.tree;var C=new Array(_.length),M=_[_.length-1];C[C.length-1]=new s(M._color,M.key,M.value,M.left,M.right,M._count);for(var g=_.length-2;g>=0;--g){var M=_[g];M.left===_[g+1]?C[g]=new s(M._color,M.key,M.value,C[g+1],M.right,M._count):C[g]=new s(M._color,M.key,M.value,M.left,C[g+1],M._count)}if(M=C[C.length-1],M.left&&M.right){var P=C.length;for(M=M.left;M.right;)C.push(M),M=M.right;var T=C[P-1];C.push(new s(M._color,T.key,T.value,M.left,M.right,M._count)),C[P-1].key=M.key,C[P-1].value=M.value;for(var g=C.length-2;g>=P;--g)M=C[g],C[g]=new s(M._color,M.key,M.value,M.left,C[g+1],M._count);C[P-1].left=C[P]}if(M=C[C.length-1],M._color===a){var F=C[C.length-2];F.left===M?F.left=null:F.right===M&&(F.right=null),C.pop();for(var g=0;g0)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(p,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(p,"index",{get:function(){var _=0,C=this._stack;if(C.length===0){var M=this.tree.root;return M?M._count:0}else C[C.length-1].left&&(_=C[C.length-1].left._count);for(var g=C.length-2;g>=0;--g)C[g+1]===C[g].right&&(++_,C[g].left&&(_+=C[g].left._count));return _},enumerable:!0}),p.next=function(){var _=this._stack;if(_.length!==0){var C=_[_.length-1];if(C.right)for(C=C.right;C;)_.push(C),C=C.left;else for(_.pop();_.length>0&&_[_.length-1].right===C;)C=_[_.length-1],_.pop()}},Object.defineProperty(p,"hasNext",{get:function(){var _=this._stack;if(_.length===0)return!1;if(_[_.length-1].right)return!0;for(var C=_.length-1;C>0;--C)if(_[C-1].left===_[C])return!0;return!1}}),p.update=function(_){var C=this._stack;if(C.length===0)throw new Error("Can't update empty node!");var M=new Array(C.length),g=C[C.length-1];M[M.length-1]=new s(g._color,g.key,_,g.left,g.right,g._count);for(var P=C.length-2;P>=0;--P)g=C[P],g.left===C[P+1]?M[P]=new s(g._color,g.key,g.value,M[P+1],g.right,g._count):M[P]=new s(g._color,g.key,g.value,g.left,M[P+1],g._count);return new f(this.tree._compare,M[0])},p.prev=function(){var _=this._stack;if(_.length!==0){var C=_[_.length-1];if(C.left)for(C=C.left;C;)_.push(C),C=C.right;else for(_.pop();_.length>0&&_[_.length-1].left===C;)C=_[_.length-1],_.pop()}},Object.defineProperty(p,"hasPrev",{get:function(){var _=this._stack;if(_.length===0)return!1;if(_[_.length-1].left)return!0;for(var C=_.length-1;C>0;--C)if(_[C-1].right===_[C])return!0;return!1}});function A(_,C){return _C?1:0}function L(_){return new f(_||A,null)}},3837:function(i,a,o){"use strict";i.exports=q;var s=o(4935),l=o(501),u=o(5304),c=o(6429),f=o(6444),h=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),d=ArrayBuffer,v=DataView;function x(V){return d.isView(V)&&!(V instanceof v)}function b(V){return Array.isArray(V)||x(V)}function p(V,H){return V[0]=H[0],V[1]=H[1],V[2]=H[2],V}function E(V){this.gl=V,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickFontStyle=["normal","normal","normal"],this.tickFontWeight=["normal","normal","normal"],this.tickFontVariant=["normal","normal","normal"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["sans-serif","sans-serif","sans-serif"],this.labelFontStyle=["normal","normal","normal"],this.labelFontWeight=["normal","normal","normal"],this.labelFontVariant=["normal","normal","normal"],this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=u(V)}var k=E.prototype;k.update=function(V){V=V||{};function H(Ae,ze,Ce){if(Ce in V){var me=V[Ce],Re=this[Ce],ce;(Ae?b(me)&&b(me[0]):b(me))?this[Ce]=ce=[ze(me[0]),ze(me[1]),ze(me[2])]:this[Ce]=ce=[ze(me),ze(me),ze(me)];for(var Ge=0;Ge<3;++Ge)if(ce[Ge]!==Re[Ge])return!0}return!1}var X=H.bind(this,!1,Number),G=H.bind(this,!1,Boolean),N=H.bind(this,!1,String),W=H.bind(this,!0,function(Ae){if(b(Ae)){if(Ae.length===3)return[+Ae[0],+Ae[1],+Ae[2],1];if(Ae.length===4)return[+Ae[0],+Ae[1],+Ae[2],+Ae[3]]}return[0,0,0,1]}),re,ae=!1,_e=!1;if("bounds"in V)for(var Me=V.bounds,ke=0;ke<2;++ke)for(var ge=0;ge<3;++ge)Me[ke][ge]!==this.bounds[ke][ge]&&(_e=!0),this.bounds[ke][ge]=Me[ke][ge];if("ticks"in V){re=V.ticks,ae=!0,this.autoTicks=!1;for(var ke=0;ke<3;++ke)this.tickSpacing[ke]=0}else X("tickSpacing")&&(this.autoTicks=!0,_e=!0);if(this._firstInit&&("ticks"in V||"tickSpacing"in V||(this.autoTicks=!0),_e=!0,ae=!0,this._firstInit=!1),_e&&this.autoTicks&&(re=f.create(this.bounds,this.tickSpacing),ae=!0),ae){for(var ke=0;ke<3;++ke)re[ke].sort(function(ze,Ce){return ze.x-Ce.x});f.equal(re,this.ticks)?ae=!1:this.ticks=re}G("tickEnable"),N("tickFont")&&(ae=!0),N("tickFontStyle")&&(ae=!0),N("tickFontWeight")&&(ae=!0),N("tickFontVariant")&&(ae=!0),X("tickSize"),X("tickAngle"),X("tickPad"),W("tickColor");var ie=N("labels");N("labelFont")&&(ie=!0),N("labelFontStyle")&&(ie=!0),N("labelFontWeight")&&(ie=!0),N("labelFontVariant")&&(ie=!0),G("labelEnable"),X("labelSize"),X("labelPad"),W("labelColor"),G("lineEnable"),G("lineMirror"),X("lineWidth"),W("lineColor"),G("lineTickEnable"),G("lineTickMirror"),X("lineTickLength"),X("lineTickWidth"),W("lineTickColor"),G("gridEnable"),X("gridWidth"),W("gridColor"),G("zeroEnable"),W("zeroLineColor"),X("zeroLineWidth"),G("backgroundEnable"),W("backgroundColor");var Te=[{family:this.labelFont[0],style:this.labelFontStyle[0],weight:this.labelFontWeight[0],variant:this.labelFontVariant[0]},{family:this.labelFont[1],style:this.labelFontStyle[1],weight:this.labelFontWeight[1],variant:this.labelFontVariant[1]},{family:this.labelFont[2],style:this.labelFontStyle[2],weight:this.labelFontWeight[2],variant:this.labelFontVariant[2]}],Ee=[{family:this.tickFont[0],style:this.tickFontStyle[0],weight:this.tickFontWeight[0],variant:this.tickFontVariant[0]},{family:this.tickFont[1],style:this.tickFontStyle[1],weight:this.tickFontWeight[1],variant:this.tickFontVariant[1]},{family:this.tickFont[2],style:this.tickFontStyle[2],weight:this.tickFontWeight[2],variant:this.tickFontVariant[2]}];this._text?this._text&&(ie||ae)&&this._text.update(this.bounds,this.labels,Te,this.ticks,Ee):this._text=s(this.gl,this.bounds,this.labels,Te,this.ticks,Ee),this._lines&&ae&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=l(this.gl,this.bounds,this.ticks))};function A(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}var L=[new A,new A,new A];function _(V,H,X,G,N){for(var W=V.primalOffset,re=V.primalMinor,ae=V.mirrorOffset,_e=V.mirrorMinor,Me=G[H],ke=0;ke<3;++ke)if(H!==ke){var ge=W,ie=ae,Te=re,Ee=_e;Me&1<0?(Te[ke]=-1,Ee[ke]=0):(Te[ke]=0,Ee[ke]=1)}}var C=[0,0,0],M={model:h,view:h,projection:h,_ortho:!1};k.isOpaque=function(){return!0},k.isTransparent=function(){return!1},k.drawTransparent=function(V){};var g=0,P=[0,0,0],T=[0,0,0],F=[0,0,0];k.draw=function(V){V=V||M;for(var Ce=this.gl,H=V.model||h,X=V.view||h,G=V.projection||h,N=this.bounds,W=V._ortho||!1,re=c(H,X,G,N,W),ae=re.cubeEdges,_e=re.axis,Me=X[12],ke=X[13],ge=X[14],ie=X[15],Te=W?2:1,Ee=Te*this.pixelRatio*(G[3]*Me+G[7]*ke+G[11]*ge+G[15]*ie)/Ce.drawingBufferHeight,Ae=0;Ae<3;++Ae)this.lastCubeProps.cubeEdges[Ae]=ae[Ae],this.lastCubeProps.axis[Ae]=_e[Ae];for(var ze=L,Ae=0;Ae<3;++Ae)_(L[Ae],Ae,this.bounds,ae,_e);for(var Ce=this.gl,me=C,Ae=0;Ae<3;++Ae)this.backgroundEnable[Ae]?me[Ae]=_e[Ae]:me[Ae]=0;this._background.draw(H,X,G,N,me,this.backgroundColor),this._lines.bind(H,X,G,this);for(var Ae=0;Ae<3;++Ae){var Re=[0,0,0];_e[Ae]>0?Re[Ae]=N[1][Ae]:Re[Ae]=N[0][Ae];for(var ce=0;ce<2;++ce){var Ge=(Ae+1+ce)%3,nt=(Ae+1+(ce^1))%3;this.gridEnable[Ge]&&this._lines.drawGrid(Ge,nt,this.bounds,Re,this.gridColor[Ge],this.gridWidth[Ge]*this.pixelRatio)}for(var ce=0;ce<2;++ce){var Ge=(Ae+1+ce)%3,nt=(Ae+1+(ce^1))%3;this.zeroEnable[nt]&&Math.min(N[0][nt],N[1][nt])<=0&&Math.max(N[0][nt],N[1][nt])>=0&&this._lines.drawZero(Ge,nt,this.bounds,Re,this.zeroLineColor[nt],this.zeroLineWidth[nt]*this.pixelRatio)}}for(var Ae=0;Ae<3;++Ae){this.lineEnable[Ae]&&this._lines.drawAxisLine(Ae,this.bounds,ze[Ae].primalOffset,this.lineColor[Ae],this.lineWidth[Ae]*this.pixelRatio),this.lineMirror[Ae]&&this._lines.drawAxisLine(Ae,this.bounds,ze[Ae].mirrorOffset,this.lineColor[Ae],this.lineWidth[Ae]*this.pixelRatio);for(var ct=p(P,ze[Ae].primalMinor),qt=p(T,ze[Ae].mirrorMinor),rt=this.lineTickLength,ce=0;ce<3;++ce){var ot=Ee/H[5*ce];ct[ce]*=rt[ce]*ot,qt[ce]*=rt[ce]*ot}this.lineTickEnable[Ae]&&this._lines.drawAxisTicks(Ae,ze[Ae].primalOffset,ct,this.lineTickColor[Ae],this.lineTickWidth[Ae]*this.pixelRatio),this.lineTickMirror[Ae]&&this._lines.drawAxisTicks(Ae,ze[Ae].mirrorOffset,qt,this.lineTickColor[Ae],this.lineTickWidth[Ae]*this.pixelRatio)}this._lines.unbind(),this._text.bind(H,X,G,this.pixelRatio);var Rt,kt=.5,Ct,Yt;function xr(St){Yt=[0,0,0],Yt[St]=1}function er(St,Et,dt){var Ht=(St+1)%3,$t=(St+2)%3,fr=Et[Ht],_r=Et[$t],Br=dt[Ht],Or=dt[$t];if(fr>0&&Or>0){xr(Ht);return}else if(fr>0&&Or<0){xr(Ht);return}else if(fr<0&&Or>0){xr(Ht);return}else if(fr<0&&Or<0){xr(Ht);return}else if(_r>0&&Br>0){xr($t);return}else if(_r>0&&Br<0){xr($t);return}else if(_r<0&&Br>0){xr($t);return}else if(_r<0&&Br<0){xr($t);return}}for(var Ae=0;Ae<3;++Ae){for(var Ke=ze[Ae].primalMinor,xt=ze[Ae].mirrorMinor,bt=p(F,ze[Ae].primalOffset),ce=0;ce<3;++ce)this.lineTickEnable[Ae]&&(bt[ce]+=Ee*Ke[ce]*Math.max(this.lineTickLength[ce],0)/H[5*ce]);var Lt=[0,0,0];if(Lt[Ae]=1,this.tickEnable[Ae]){this.tickAngle[Ae]===-3600?(this.tickAngle[Ae]=0,this.tickAlign[Ae]="auto"):this.tickAlign[Ae]=-1,Ct=1,Rt=[this.tickAlign[Ae],kt,Ct],Rt[0]==="auto"?Rt[0]=g:Rt[0]=parseInt(""+Rt[0]),Yt=[0,0,0],er(Ae,Ke,xt);for(var ce=0;ce<3;++ce)bt[ce]+=Ee*Ke[ce]*this.tickPad[ce]/H[5*ce];this._text.drawTicks(Ae,this.tickSize[Ae],this.tickAngle[Ae],bt,this.tickColor[Ae],Lt,Yt,Rt)}if(this.labelEnable[Ae]){Ct=0,Yt=[0,0,0],this.labels[Ae].length>4&&(xr(Ae),Ct=1),Rt=[this.labelAlign[Ae],kt,Ct],Rt[0]==="auto"?Rt[0]=g:Rt[0]=parseInt(""+Rt[0]);for(var ce=0;ce<3;++ce)bt[ce]+=Ee*Ke[ce]*this.labelPad[ce]/H[5*ce];bt[Ae]+=.5*(N[0][Ae]+N[1][Ae]),this._text.drawLabel(Ae,this.labelSize[Ae],this.labelAngle[Ae],bt,this.labelColor[Ae],[0,0,0],Yt,Rt)}}this._text.unbind()},k.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null};function q(V,H){var X=new E(V);return X.update(H),X}},5304:function(i,a,o){"use strict";i.exports=h;var s=o(2762),l=o(8116),u=o(1879).bg;function c(d,v,x,b){this.gl=d,this.buffer=v,this.vao=x,this.shader=b}var f=c.prototype;f.draw=function(d,v,x,b,p,E){for(var k=!1,A=0;A<3;++A)k=k||p[A];if(k){var L=this.gl;L.enable(L.POLYGON_OFFSET_FILL),L.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:d,view:v,projection:x,bounds:b,enable:p,colors:E},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),L.disable(L.POLYGON_OFFSET_FILL)}},f.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()};function h(d){for(var v=[],x=[],b=0,p=0;p<3;++p)for(var E=(p+1)%3,k=(p+2)%3,A=[0,0,0],L=[0,0,0],_=-1;_<=1;_+=2){x.push(b,b+2,b+1,b+1,b+2,b+3),A[p]=_,L[p]=_;for(var C=-1;C<=1;C+=2){A[E]=C;for(var M=-1;M<=1;M+=2)A[k]=M,v.push(A[0],A[1],A[2],L[0],L[1],L[2]),b+=1}var g=E;E=k,k=g}var P=s(d,new Float32Array(v)),T=s(d,new Uint16Array(x),d.ELEMENT_ARRAY_BUFFER),F=l(d,[{buffer:P,type:d.FLOAT,size:3,offset:0,stride:24},{buffer:P,type:d.FLOAT,size:3,offset:12,stride:24}],T),q=u(d);return q.attributes.position.location=0,q.attributes.normal.location=1,new c(d,P,F,q)}},6429:function(i,a,o){"use strict";i.exports=_;var s=o(8828),l=o(6760),u=o(5202),c=o(3250),f=new Array(16),h=new Array(8),d=new Array(8),v=new Array(3),x=[0,0,0];(function(){for(var C=0;C<8;++C)h[C]=[1,1,1,1],d[C]=[1,1,1]})();function b(C,M,g){for(var P=0;P<4;++P){C[P]=g[12+P];for(var T=0;T<3;++T)C[P]+=M[T]*g[4*T+P]}}var p=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function E(C){for(var M=0;M_e&&(X|=1<_e){X|=1<d[q][1])&&(ze=q);for(var Ce=-1,q=0;q<3;++q){var me=ze^1<d[Re][0]&&(Re=me)}}var ce=k;ce[0]=ce[1]=ce[2]=0,ce[s.log2(Ce^ze)]=ze&Ce,ce[s.log2(ze^Re)]=zeℜvar Ge=Re^7;Ge===X||Ge===Ae?(Ge=Ce^7,ce[s.log2(Re^Ge)]=Ge&Re):ce[s.log2(Ce^Ge)]=Ge&Ce;for(var nt=A,ct=X,W=0;W<3;++W)ct&1<=0;--ce){var Ge=Ae[Re[ce]];M.push(Ee*Ge[0],-Ee*Ge[1],W)}}for(var P=[0,0,0],T=[0,0,0],F=[0,0,0],q=[0,0,0],V=1.25,H={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},X=0;X<3;++X){F[X]=M.length/d|0,p(.5*(k[0][X]+k[1][X]),A[X],L[X],12,V,H),q[X]=(M.length/d|0)-F[X],P[X]=M.length/d|0;for(var G=0;G<_[X].length;++G)if(_[X][G].text){var N={family:_[X][G].font||C[X].family,style:C[X].fontStyle||C[X].style,weight:C[X].fontWeight||C[X].weight,variant:C[X].fontVariant||C[X].variant};p(_[X][G].x,_[X][G].text,N,_[X][G].fontSize||12,V,H)}T[X]=(M.length/d|0)-P[X]}this.buffer.update(M),this.tickOffset=P,this.tickCount=T,this.labelOffset=F,this.labelCount=q},x.drawTicks=function(k,A,L,_,C,M,p,P){this.tickCount[k]&&(this.shader.uniforms.axis=M,this.shader.uniforms.color=C,this.shader.uniforms.angle=L,this.shader.uniforms.scale=A,this.shader.uniforms.offset=_,this.shader.uniforms.alignDir=p,this.shader.uniforms.alignOpt=P,this.vao.draw(this.gl.TRIANGLES,this.tickCount[k],this.tickOffset[k]))},x.drawLabel=function(k,A,L,_,C,M,p,P){this.labelCount[k]&&(this.shader.uniforms.axis=M,this.shader.uniforms.color=C,this.shader.uniforms.angle=L,this.shader.uniforms.scale=A,this.shader.uniforms.offset=_,this.shader.uniforms.alignDir=p,this.shader.uniforms.alignOpt=P,this.vao.draw(this.gl.TRIANGLES,this.labelCount[k],this.labelOffset[k]))},x.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose()};function g(k,A){try{return u(k,A)}catch(L){return console.warn('error vectorizing text:"'+k+'" error:',L),{cells:[],positions:[]}}}function E(k,A,L,_,C,M){var p=s(k),P=l(k,[{buffer:p,size:3}]),T=c(k);T.attributes.position.location=0;var F=new v(k,T,p,P);return F.update(A,L,_,C,M),F}},6444:function(i,a){"use strict";a.create=s,a.equal=l;function o(u,c){var f=u+"",h=f.indexOf("."),d=0;h>=0&&(d=f.length-h-1);var v=Math.pow(10,d),x=Math.round(u*c*v),b=x+"";if(b.indexOf("e")>=0)return b;var g=x/v,E=x%v;x<0?(g=-Math.ceil(g)|0,E=-E|0):(g=Math.floor(g)|0,E=E|0);var k=""+g;if(x<0&&(k="-"+k),d){for(var A=""+E;A.length=u[0][h];--x)d.push({x:x*c[h],text:o(c[h],x)});f.push(d)}return f}function l(u,c){for(var f=0;f<3;++f){if(u[f].length!==c[f].length)return!1;for(var h=0;hk)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return g.bufferSubData(E,_,L),k}function v(g,E){for(var k=s.malloc(g.length,E),A=g.length,L=0;L=0;--A){if(E[A]!==k)return!1;k*=g[A]}return!0}h.update=function(g,E){if(typeof E!="number"&&(E=-1),this.bind(),typeof g=="object"&&typeof g.shape!="undefined"){var k=g.dtype;if(c.indexOf(k)<0&&(k="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER){var A=gl.getExtension("OES_element_index_uint");A&&k!=="uint16"?k="uint32":k="uint16"}if(k===g.dtype&&x(g.shape,g.stride))g.offset===0&&g.data.length===g.shape[0]?this.length=d(this.gl,this.type,this.length,this.usage,g.data,E):this.length=d(this.gl,this.type,this.length,this.usage,g.data.subarray(g.offset,g.shape[0]),E);else{var L=s.malloc(g.size,k),_=u(L,g.shape);l.assign(_,g),E<0?this.length=d(this.gl,this.type,this.length,this.usage,L,E):this.length=d(this.gl,this.type,this.length,this.usage,L.subarray(0,g.size),E),s.free(L)}}else if(Array.isArray(g)){var C;this.type===this.gl.ELEMENT_ARRAY_BUFFER?C=v(g,"uint16"):C=v(g,"float32"),E<0?this.length=d(this.gl,this.type,this.length,this.usage,C,E):this.length=d(this.gl,this.type,this.length,this.usage,C.subarray(0,g.length),E),s.free(C)}else if(typeof g=="object"&&typeof g.length=="number")this.length=d(this.gl,this.type,this.length,this.usage,g,E);else if(typeof g=="number"||g===void 0){if(E>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");g=g|0,g<=0&&(g=1),this.gl.bufferData(this.type,g|0,this.usage),this.length=g}else throw new Error("gl-buffer: Invalid data type")};function b(g,E,k,A){if(k=k||g.ARRAY_BUFFER,A=A||g.DYNAMIC_DRAW,k!==g.ARRAY_BUFFER&&k!==g.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(A!==g.DYNAMIC_DRAW&&A!==g.STATIC_DRAW&&A!==g.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var L=g.createBuffer(),_=new f(g,k,L,0,A);return _.update(E),_}i.exports=b},6405:function(i,a,o){"use strict";var s=o(2931);i.exports=function(u,c){var f=u.positions,h=u.vectors,d={positions:[],vertexIntensity:[],vertexIntensityBounds:u.vertexIntensityBounds,vectors:[],cells:[],coneOffset:u.coneOffset,colormap:u.colormap};if(u.positions.length===0)return c&&(c[0]=[0,0,0],c[1]=[0,0,0]),d;for(var v=0,x=1/0,b=-1/0,g=1/0,E=-1/0,k=1/0,A=-1/0,L=null,_=null,C=[],M=1/0,p=!1,P=u.coneSizemode==="raw",T=0;Tv&&(v=s.length(q)),T&&!P){var V=2*s.distance(L,F)/(s.length(_)+s.length(q));V?(M=Math.min(M,V),p=!1):p=!0}p||(L=F,_=q),C.push(q)}var H=[x,g,k],X=[b,E,A];c&&(c[0]=H,c[1]=X),v===0&&(v=1);var G=1/v;isFinite(M)||(M=1),d.vectorScale=M;var N=u.coneSize||(P?1:.5);u.absoluteConeSize&&(N=u.absoluteConeSize*G),d.coneScale=N;for(var T=0,W=0;T=1},g.isTransparent=function(){return this.opacity<1},g.pickSlots=1,g.setPickBase=function(C){this.pickId=C};function E(C){for(var M=v({colormap:C,nshades:256,format:"rgba"}),p=new Uint8Array(256*4),P=0;P<256;++P){for(var T=M[P],F=0;F<3;++F)p[4*P+F]=T[F];p[4*P+3]=T[3]*255}return d(p,[256,256,4],[4,0,1])}function k(C){for(var M=C.length,p=new Array(M),P=0;P0){var W=this.triShader;W.bind(),W.uniforms=V,this.triangleVAO.bind(),M.drawArrays(M.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}},g.drawPick=function(C){C=C||{};for(var M=this.gl,p=C.model||x,P=C.view||x,T=C.projection||x,F=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],q=0;q<3;++q)F[0][q]=Math.max(F[0][q],this.clipBounds[0][q]),F[1][q]=Math.min(F[1][q],this.clipBounds[1][q]);this._model=[].slice.call(p),this._view=[].slice.call(P),this._projection=[].slice.call(T),this._resolution=[M.drawingBufferWidth,M.drawingBufferHeight];var V={model:p,view:P,projection:T,clipBounds:F,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},H=this.pickShader;H.bind(),H.uniforms=V,this.triangleCount>0&&(this.triangleVAO.bind(),M.drawArrays(M.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind())},g.pick=function(C){if(!C||C.id!==this.pickId)return null;var M=C.value[0]+256*C.value[1]+65536*C.value[2],p=this.cells[M],P=this.positions[p[1]].slice(0,3),T={position:P,dataCoordinate:P,index:Math.floor(p[1]/48)};return this.traceType==="cone"?T.index=Math.floor(p[1]/48):this.traceType==="streamtube"&&(T.intensity=this.intensity[p[1]],T.velocity=this.vectors[p[1]].slice(0,3),T.divergence=this.vectors[p[1]][3],T.index=M),T},g.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()};function A(C,M){var p=s(C,M.meshShader.vertex,M.meshShader.fragment,null,M.meshShader.attributes);return p.attributes.position.location=0,p.attributes.color.location=2,p.attributes.uv.location=3,p.attributes.vector.location=4,p}function L(C,M){var p=s(C,M.pickShader.vertex,M.pickShader.fragment,null,M.pickShader.attributes);return p.attributes.position.location=0,p.attributes.id.location=1,p.attributes.vector.location=4,p}function _(C,M,p){var P=p.shaders;arguments.length===1&&(M=C,C=M.gl);var T=A(C,P),F=L(C,P),q=c(C,d(new Uint8Array([255,255,255,255]),[1,1,4]));q.generateMipmap(),q.minFilter=C.LINEAR_MIPMAP_LINEAR,q.magFilter=C.LINEAR;var V=l(C),H=l(C),X=l(C),G=l(C),N=l(C),W=u(C,[{buffer:V,type:C.FLOAT,size:4},{buffer:N,type:C.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:X,type:C.FLOAT,size:4},{buffer:G,type:C.FLOAT,size:2},{buffer:H,type:C.FLOAT,size:4}]),re=new b(C,q,T,F,V,H,N,X,G,W,p.traceType||"cone");return re.update(M),re}i.exports=_},614:function(i,a,o){var s=o(3236),l=s([`precision highp float; +}`]);a.bg=function(x){return l(x,d,v,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},4935:function(i,a,o){"use strict";i.exports=E;var s=o(2762),l=o(8116),u=o(4359),c=o(1879).Q,f=window||process.global||{},h=f.__TEXT_CACHE||{};f.__TEXT_CACHE={};var d=3;function v(k,A,L,_){this.gl=k,this.shader=A,this.buffer=L,this.vao=_,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}var x=v.prototype,b=[0,0];x.bind=function(k,A,L,_){this.vao.bind(),this.shader.bind();var C=this.shader.uniforms;C.model=k,C.view=A,C.projection=L,C.pixelScale=_,b[0]=this.gl.drawingBufferWidth,b[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=b},x.unbind=function(){this.vao.unbind()},x.update=function(k,A,L,_,C){var M=[];function g(W,re,ae,_e,Me,ke){var ge=[ae.style,ae.weight,ae.variant,ae.family].join("_"),ie=h[ge];ie||(ie=h[ge]={});var Te=ie[re];Te||(Te=ie[re]=p(re,{triangles:!0,font:ae.family,fontStyle:ae.style,fontWeight:ae.weight,fontVariant:ae.variant,textAlign:"center",textBaseline:"middle",lineSpacing:Me,styletags:ke}));for(var Ee=(_e||12)/12,Ae=Te.positions,ze=Te.cells,Ce=0,me=ze.length;Ce=0;--ce){var Ge=Ae[Re[ce]];M.push(Ee*Ge[0],-Ee*Ge[1],W)}}for(var P=[0,0,0],T=[0,0,0],F=[0,0,0],q=[0,0,0],V=1.25,H={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},X=0;X<3;++X){F[X]=M.length/d|0,g(.5*(k[0][X]+k[1][X]),A[X],L[X],12,V,H),q[X]=(M.length/d|0)-F[X],P[X]=M.length/d|0;for(var G=0;G<_[X].length;++G)if(_[X][G].text){var N={family:_[X][G].font||C[X].family,style:C[X].fontStyle||C[X].style,weight:C[X].fontWeight||C[X].weight,variant:C[X].fontVariant||C[X].variant};g(_[X][G].x,_[X][G].text,N,_[X][G].fontSize||12,V,H)}T[X]=(M.length/d|0)-P[X]}this.buffer.update(M),this.tickOffset=P,this.tickCount=T,this.labelOffset=F,this.labelCount=q},x.drawTicks=function(k,A,L,_,C,M,g,P){this.tickCount[k]&&(this.shader.uniforms.axis=M,this.shader.uniforms.color=C,this.shader.uniforms.angle=L,this.shader.uniforms.scale=A,this.shader.uniforms.offset=_,this.shader.uniforms.alignDir=g,this.shader.uniforms.alignOpt=P,this.vao.draw(this.gl.TRIANGLES,this.tickCount[k],this.tickOffset[k]))},x.drawLabel=function(k,A,L,_,C,M,g,P){this.labelCount[k]&&(this.shader.uniforms.axis=M,this.shader.uniforms.color=C,this.shader.uniforms.angle=L,this.shader.uniforms.scale=A,this.shader.uniforms.offset=_,this.shader.uniforms.alignDir=g,this.shader.uniforms.alignOpt=P,this.vao.draw(this.gl.TRIANGLES,this.labelCount[k],this.labelOffset[k]))},x.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose()};function p(k,A){try{return u(k,A)}catch(L){return console.warn('error vectorizing text:"'+k+'" error:',L),{cells:[],positions:[]}}}function E(k,A,L,_,C,M){var g=s(k),P=l(k,[{buffer:g,size:3}]),T=c(k);T.attributes.position.location=0;var F=new v(k,T,g,P);return F.update(A,L,_,C,M),F}},6444:function(i,a){"use strict";a.create=s,a.equal=l;function o(u,c){var f=u+"",h=f.indexOf("."),d=0;h>=0&&(d=f.length-h-1);var v=Math.pow(10,d),x=Math.round(u*c*v),b=x+"";if(b.indexOf("e")>=0)return b;var p=x/v,E=x%v;x<0?(p=-Math.ceil(p)|0,E=-E|0):(p=Math.floor(p)|0,E=E|0);var k=""+p;if(x<0&&(k="-"+k),d){for(var A=""+E;A.length=u[0][h];--x)d.push({x:x*c[h],text:o(c[h],x)});f.push(d)}return f}function l(u,c){for(var f=0;f<3;++f){if(u[f].length!==c[f].length)return!1;for(var h=0;hk)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return p.bufferSubData(E,_,L),k}function v(p,E){for(var k=s.malloc(p.length,E),A=p.length,L=0;L=0;--A){if(E[A]!==k)return!1;k*=p[A]}return!0}h.update=function(p,E){if(typeof E!="number"&&(E=-1),this.bind(),typeof p=="object"&&typeof p.shape!="undefined"){var k=p.dtype;if(c.indexOf(k)<0&&(k="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER){var A=gl.getExtension("OES_element_index_uint");A&&k!=="uint16"?k="uint32":k="uint16"}if(k===p.dtype&&x(p.shape,p.stride))p.offset===0&&p.data.length===p.shape[0]?this.length=d(this.gl,this.type,this.length,this.usage,p.data,E):this.length=d(this.gl,this.type,this.length,this.usage,p.data.subarray(p.offset,p.shape[0]),E);else{var L=s.malloc(p.size,k),_=u(L,p.shape);l.assign(_,p),E<0?this.length=d(this.gl,this.type,this.length,this.usage,L,E):this.length=d(this.gl,this.type,this.length,this.usage,L.subarray(0,p.size),E),s.free(L)}}else if(Array.isArray(p)){var C;this.type===this.gl.ELEMENT_ARRAY_BUFFER?C=v(p,"uint16"):C=v(p,"float32"),E<0?this.length=d(this.gl,this.type,this.length,this.usage,C,E):this.length=d(this.gl,this.type,this.length,this.usage,C.subarray(0,p.length),E),s.free(C)}else if(typeof p=="object"&&typeof p.length=="number")this.length=d(this.gl,this.type,this.length,this.usage,p,E);else if(typeof p=="number"||p===void 0){if(E>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");p=p|0,p<=0&&(p=1),this.gl.bufferData(this.type,p|0,this.usage),this.length=p}else throw new Error("gl-buffer: Invalid data type")};function b(p,E,k,A){if(k=k||p.ARRAY_BUFFER,A=A||p.DYNAMIC_DRAW,k!==p.ARRAY_BUFFER&&k!==p.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(A!==p.DYNAMIC_DRAW&&A!==p.STATIC_DRAW&&A!==p.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var L=p.createBuffer(),_=new f(p,k,L,0,A);return _.update(E),_}i.exports=b},6405:function(i,a,o){"use strict";var s=o(2931);i.exports=function(u,c){var f=u.positions,h=u.vectors,d={positions:[],vertexIntensity:[],vertexIntensityBounds:u.vertexIntensityBounds,vectors:[],cells:[],coneOffset:u.coneOffset,colormap:u.colormap};if(u.positions.length===0)return c&&(c[0]=[0,0,0],c[1]=[0,0,0]),d;for(var v=0,x=1/0,b=-1/0,p=1/0,E=-1/0,k=1/0,A=-1/0,L=null,_=null,C=[],M=1/0,g=!1,P=u.coneSizemode==="raw",T=0;Tv&&(v=s.length(q)),T&&!P){var V=2*s.distance(L,F)/(s.length(_)+s.length(q));V?(M=Math.min(M,V),g=!1):g=!0}g||(L=F,_=q),C.push(q)}var H=[x,p,k],X=[b,E,A];c&&(c[0]=H,c[1]=X),v===0&&(v=1);var G=1/v;isFinite(M)||(M=1),d.vectorScale=M;var N=u.coneSize||(P?1:.5);u.absoluteConeSize&&(N=u.absoluteConeSize*G),d.coneScale=N;for(var T=0,W=0;T=1},p.isTransparent=function(){return this.opacity<1},p.pickSlots=1,p.setPickBase=function(C){this.pickId=C};function E(C){for(var M=v({colormap:C,nshades:256,format:"rgba"}),g=new Uint8Array(256*4),P=0;P<256;++P){for(var T=M[P],F=0;F<3;++F)g[4*P+F]=T[F];g[4*P+3]=T[3]*255}return d(g,[256,256,4],[4,0,1])}function k(C){for(var M=C.length,g=new Array(M),P=0;P0){var W=this.triShader;W.bind(),W.uniforms=V,this.triangleVAO.bind(),M.drawArrays(M.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}},p.drawPick=function(C){C=C||{};for(var M=this.gl,g=C.model||x,P=C.view||x,T=C.projection||x,F=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],q=0;q<3;++q)F[0][q]=Math.max(F[0][q],this.clipBounds[0][q]),F[1][q]=Math.min(F[1][q],this.clipBounds[1][q]);this._model=[].slice.call(g),this._view=[].slice.call(P),this._projection=[].slice.call(T),this._resolution=[M.drawingBufferWidth,M.drawingBufferHeight];var V={model:g,view:P,projection:T,clipBounds:F,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},H=this.pickShader;H.bind(),H.uniforms=V,this.triangleCount>0&&(this.triangleVAO.bind(),M.drawArrays(M.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind())},p.pick=function(C){if(!C||C.id!==this.pickId)return null;var M=C.value[0]+256*C.value[1]+65536*C.value[2],g=this.cells[M],P=this.positions[g[1]].slice(0,3),T={position:P,dataCoordinate:P,index:Math.floor(g[1]/48)};return this.traceType==="cone"?T.index=Math.floor(g[1]/48):this.traceType==="streamtube"&&(T.intensity=this.intensity[g[1]],T.velocity=this.vectors[g[1]].slice(0,3),T.divergence=this.vectors[g[1]][3],T.index=M),T},p.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()};function A(C,M){var g=s(C,M.meshShader.vertex,M.meshShader.fragment,null,M.meshShader.attributes);return g.attributes.position.location=0,g.attributes.color.location=2,g.attributes.uv.location=3,g.attributes.vector.location=4,g}function L(C,M){var g=s(C,M.pickShader.vertex,M.pickShader.fragment,null,M.pickShader.attributes);return g.attributes.position.location=0,g.attributes.id.location=1,g.attributes.vector.location=4,g}function _(C,M,g){var P=g.shaders;arguments.length===1&&(M=C,C=M.gl);var T=A(C,P),F=L(C,P),q=c(C,d(new Uint8Array([255,255,255,255]),[1,1,4]));q.generateMipmap(),q.minFilter=C.LINEAR_MIPMAP_LINEAR,q.magFilter=C.LINEAR;var V=l(C),H=l(C),X=l(C),G=l(C),N=l(C),W=u(C,[{buffer:V,type:C.FLOAT,size:4},{buffer:N,type:C.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:X,type:C.FLOAT,size:4},{buffer:G,type:C.FLOAT,size:2},{buffer:H,type:C.FLOAT,size:4}]),re=new b(C,q,T,F,V,H,N,X,G,W,g.traceType||"cone");return re.update(M),re}i.exports=_},614:function(i,a,o){var s=o(3236),l=s([`precision highp float; precision highp float; #define GLSLIFY 1 @@ -653,7 +653,7 @@ void main() { if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; gl_FragColor = vec4(pickId, f_id.xyz); -}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},737:function(i){i.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},5171:function(i,a,o){var s=o(737);i.exports=function(u){return s[u]}},9165:function(i,a,o){"use strict";i.exports=b;var s=o(2762),l=o(8116),u=o(3436),c=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function f(g,E,k,A){this.gl=g,this.shader=A,this.buffer=E,this.vao=k,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var h=f.prototype;h.isOpaque=function(){return!this.hasAlpha},h.isTransparent=function(){return this.hasAlpha},h.drawTransparent=h.draw=function(g){var E=this.gl,k=this.shader.uniforms;this.shader.bind();var A=k.view=g.view||c,L=k.projection=g.projection||c;k.model=g.model||c,k.clipBounds=this.clipBounds,k.opacity=this.opacity;var _=A[12],C=A[13],M=A[14],p=A[15],P=g._ortho||!1,T=P?2:1,F=T*this.pixelRatio*(L[3]*_+L[7]*C+L[11]*M+L[15]*p)/E.drawingBufferHeight;this.vao.bind();for(var q=0;q<3;++q)E.lineWidth(this.lineWidth[q]*this.pixelRatio),k.capSize=this.capSize[q]*F,this.lineCount[q]&&E.drawArrays(E.LINES,this.lineOffset[q],this.lineCount[q]);this.vao.unbind()};function d(g,E){for(var k=0;k<3;++k)g[0][k]=Math.min(g[0][k],E[k]),g[1][k]=Math.max(g[1][k],E[k])}var v=function(){for(var g=new Array(3),E=0;E<3;++E){for(var k=[],A=1;A<=2;++A)for(var L=-1;L<=1;L+=2){var _=(A+E)%3,C=[0,0,0];C[_]=L,k.push(C)}g[E]=k}return g}();function x(g,E,k,A){for(var L=v[A],_=0;_0){var V=P.slice();V[M]+=F[1][M],L.push(P[0],P[1],P[2],q[0],q[1],q[2],q[3],0,0,0,V[0],V[1],V[2],q[0],q[1],q[2],q[3],0,0,0),d(this.bounds,V),C+=2+x(L,V,q,M)}}}this.lineCount[M]=C-this.lineOffset[M]}this.buffer.update(L)}},h.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()};function b(g){var E=g.gl,k=s(E),A=l(E,[{buffer:k,type:E.FLOAT,size:3,offset:0,stride:40},{buffer:k,type:E.FLOAT,size:4,offset:12,stride:40},{buffer:k,type:E.FLOAT,size:3,offset:28,stride:40}]),L=u(E);L.attributes.position.location=0,L.attributes.color.location=1,L.attributes.offset.location=2;var _=new f(E,k,A,L);return _.update(g),_}},3436:function(i,a,o){"use strict";var s=o(3236),l=o(9405),u=s([`precision highp float; +}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},737:function(i){i.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},5171:function(i,a,o){var s=o(737);i.exports=function(u){return s[u]}},9165:function(i,a,o){"use strict";i.exports=b;var s=o(2762),l=o(8116),u=o(3436),c=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function f(p,E,k,A){this.gl=p,this.shader=A,this.buffer=E,this.vao=k,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var h=f.prototype;h.isOpaque=function(){return!this.hasAlpha},h.isTransparent=function(){return this.hasAlpha},h.drawTransparent=h.draw=function(p){var E=this.gl,k=this.shader.uniforms;this.shader.bind();var A=k.view=p.view||c,L=k.projection=p.projection||c;k.model=p.model||c,k.clipBounds=this.clipBounds,k.opacity=this.opacity;var _=A[12],C=A[13],M=A[14],g=A[15],P=p._ortho||!1,T=P?2:1,F=T*this.pixelRatio*(L[3]*_+L[7]*C+L[11]*M+L[15]*g)/E.drawingBufferHeight;this.vao.bind();for(var q=0;q<3;++q)E.lineWidth(this.lineWidth[q]*this.pixelRatio),k.capSize=this.capSize[q]*F,this.lineCount[q]&&E.drawArrays(E.LINES,this.lineOffset[q],this.lineCount[q]);this.vao.unbind()};function d(p,E){for(var k=0;k<3;++k)p[0][k]=Math.min(p[0][k],E[k]),p[1][k]=Math.max(p[1][k],E[k])}var v=function(){for(var p=new Array(3),E=0;E<3;++E){for(var k=[],A=1;A<=2;++A)for(var L=-1;L<=1;L+=2){var _=(A+E)%3,C=[0,0,0];C[_]=L,k.push(C)}p[E]=k}return p}();function x(p,E,k,A){for(var L=v[A],_=0;_0){var V=P.slice();V[M]+=F[1][M],L.push(P[0],P[1],P[2],q[0],q[1],q[2],q[3],0,0,0,V[0],V[1],V[2],q[0],q[1],q[2],q[3],0,0,0),d(this.bounds,V),C+=2+x(L,V,q,M)}}}this.lineCount[M]=C-this.lineOffset[M]}this.buffer.update(L)}},h.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()};function b(p){var E=p.gl,k=s(E),A=l(E,[{buffer:k,type:E.FLOAT,size:3,offset:0,stride:40},{buffer:k,type:E.FLOAT,size:4,offset:12,stride:40},{buffer:k,type:E.FLOAT,size:3,offset:28,stride:40}]),L=u(E);L.attributes.position.location=0,L.attributes.color.location=1,L.attributes.offset.location=2;var _=new f(E,k,A,L);return _.update(p),_}},3436:function(i,a,o){"use strict";var s=o(3236),l=o(9405),u=s([`precision highp float; #define GLSLIFY 1 attribute vec3 position, offset; @@ -704,13 +704,13 @@ void main() { ) discard; gl_FragColor = opacity * fragColor; -}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},2260:function(i,a,o){"use strict";var s=o(7766);i.exports=C;var l=null,u,c,f,h;function d(M){var p=M.getParameter(M.FRAMEBUFFER_BINDING),P=M.getParameter(M.RENDERBUFFER_BINDING),T=M.getParameter(M.TEXTURE_BINDING_2D);return[p,P,T]}function v(M,p){M.bindFramebuffer(M.FRAMEBUFFER,p[0]),M.bindRenderbuffer(M.RENDERBUFFER,p[1]),M.bindTexture(M.TEXTURE_2D,p[2])}function x(M,p){var P=M.getParameter(p.MAX_COLOR_ATTACHMENTS_WEBGL);l=new Array(P+1);for(var T=0;T<=P;++T){for(var F=new Array(P),q=0;q1&&H.drawBuffersWEBGL(l[V]);var re=P.getExtension("WEBGL_depth_texture");re?X?M.depth=g(P,F,q,re.UNSIGNED_INT_24_8_WEBGL,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):G&&(M.depth=g(P,F,q,P.UNSIGNED_SHORT,P.DEPTH_COMPONENT,P.DEPTH_ATTACHMENT)):G&&X?M._depth_rb=E(P,F,q,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):G?M._depth_rb=E(P,F,q,P.DEPTH_COMPONENT16,P.DEPTH_ATTACHMENT):X&&(M._depth_rb=E(P,F,q,P.STENCIL_INDEX,P.STENCIL_ATTACHMENT));var ae=P.checkFramebufferStatus(P.FRAMEBUFFER);if(ae!==P.FRAMEBUFFER_COMPLETE){M._destroyed=!0,P.bindFramebuffer(P.FRAMEBUFFER,null),P.deleteFramebuffer(M.handle),M.handle=null,M.depth&&(M.depth.dispose(),M.depth=null),M._depth_rb&&(P.deleteRenderbuffer(M._depth_rb),M._depth_rb=null);for(var W=0;WF||P<0||P>F)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");M._shape[0]=p,M._shape[1]=P;for(var q=d(T),V=0;Vq||P<0||P>q)throw new Error("gl-fbo: Parameters are too large for FBO");T=T||{};var V=1;if("color"in T){if(V=Math.max(T.color|0,0),V<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(V>1)if(F){if(V>M.getParameter(F.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+V+" draw buffers")}else throw new Error("gl-fbo: Multiple draw buffer extension not supported")}var H=M.UNSIGNED_BYTE,X=M.getExtension("OES_texture_float");if(T.float&&V>0){if(!X)throw new Error("gl-fbo: Context does not support floating point textures");H=M.FLOAT}else T.preferFloat&&V>0&&X&&(H=M.FLOAT);var G=!0;"depth"in T&&(G=!!T.depth);var N=!1;return"stencil"in T&&(N=!!T.stencil),new A(M,p,P,H,V,G,N,F)}},2992:function(i,a,o){var s=o(3387).sprintf,l=o(5171),u=o(1848),c=o(1085);i.exports=f;function f(h,d,v){"use strict";var x=u(d)||"of unknown name (see npm glsl-shader-name)",b="unknown type";v!==void 0&&(b=v===l.FRAGMENT_SHADER?"fragment":"vertex");for(var g=s(`Error compiling %s shader %s: -`,b,x),E=s("%s%s",g,h),k=h.split(` +}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},2260:function(i,a,o){"use strict";var s=o(7766);i.exports=C;var l=null,u,c,f,h;function d(M){var g=M.getParameter(M.FRAMEBUFFER_BINDING),P=M.getParameter(M.RENDERBUFFER_BINDING),T=M.getParameter(M.TEXTURE_BINDING_2D);return[g,P,T]}function v(M,g){M.bindFramebuffer(M.FRAMEBUFFER,g[0]),M.bindRenderbuffer(M.RENDERBUFFER,g[1]),M.bindTexture(M.TEXTURE_2D,g[2])}function x(M,g){var P=M.getParameter(g.MAX_COLOR_ATTACHMENTS_WEBGL);l=new Array(P+1);for(var T=0;T<=P;++T){for(var F=new Array(P),q=0;q1&&H.drawBuffersWEBGL(l[V]);var re=P.getExtension("WEBGL_depth_texture");re?X?M.depth=p(P,F,q,re.UNSIGNED_INT_24_8_WEBGL,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):G&&(M.depth=p(P,F,q,P.UNSIGNED_SHORT,P.DEPTH_COMPONENT,P.DEPTH_ATTACHMENT)):G&&X?M._depth_rb=E(P,F,q,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):G?M._depth_rb=E(P,F,q,P.DEPTH_COMPONENT16,P.DEPTH_ATTACHMENT):X&&(M._depth_rb=E(P,F,q,P.STENCIL_INDEX,P.STENCIL_ATTACHMENT));var ae=P.checkFramebufferStatus(P.FRAMEBUFFER);if(ae!==P.FRAMEBUFFER_COMPLETE){M._destroyed=!0,P.bindFramebuffer(P.FRAMEBUFFER,null),P.deleteFramebuffer(M.handle),M.handle=null,M.depth&&(M.depth.dispose(),M.depth=null),M._depth_rb&&(P.deleteRenderbuffer(M._depth_rb),M._depth_rb=null);for(var W=0;WF||P<0||P>F)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");M._shape[0]=g,M._shape[1]=P;for(var q=d(T),V=0;Vq||P<0||P>q)throw new Error("gl-fbo: Parameters are too large for FBO");T=T||{};var V=1;if("color"in T){if(V=Math.max(T.color|0,0),V<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(V>1)if(F){if(V>M.getParameter(F.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+V+" draw buffers")}else throw new Error("gl-fbo: Multiple draw buffer extension not supported")}var H=M.UNSIGNED_BYTE,X=M.getExtension("OES_texture_float");if(T.float&&V>0){if(!X)throw new Error("gl-fbo: Context does not support floating point textures");H=M.FLOAT}else T.preferFloat&&V>0&&X&&(H=M.FLOAT);var G=!0;"depth"in T&&(G=!!T.depth);var N=!1;return"stencil"in T&&(N=!!T.stencil),new A(M,g,P,H,V,G,N,F)}},2992:function(i,a,o){var s=o(3387).sprintf,l=o(5171),u=o(1848),c=o(1085);i.exports=f;function f(h,d,v){"use strict";var x=u(d)||"of unknown name (see npm glsl-shader-name)",b="unknown type";v!==void 0&&(b=v===l.FRAGMENT_SHADER?"fragment":"vertex");for(var p=s(`Error compiling %s shader %s: +`,b,x),E=s("%s%s",p,h),k=h.split(` `),A={},L=0;L0){for(var ge=0;ge<24;++ge)q.push(q[q.length-12]);G+=2,_e=!0}continue e}N[0][T]=Math.min(N[0][T],Me[T],ke[T]),N[1][T]=Math.max(N[1][T],Me[T],ke[T])}var ie,Te;Array.isArray(re[0])?(ie=re.length>P-1?re[P-1]:re.length>0?re[re.length-1]:[0,0,0,1],Te=re.length>P?re[P]:re.length>0?re[re.length-1]:[0,0,0,1]):ie=Te=re,ie.length===3&&(ie=[ie[0],ie[1],ie[2],1]),Te.length===3&&(Te=[Te[0],Te[1],Te[2],1]),!this.hasAlpha&&ie[3]<1&&(this.hasAlpha=!0);var Ee;Array.isArray(ae)?Ee=ae.length>P-1?ae[P-1]:ae.length>0?ae[ae.length-1]:[0,0,0,1]:Ee=ae;var Ae=X;if(X+=k(Me,ke),_e){for(T=0;T<2;++T)q.push(Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,Ee,ie[0],ie[1],ie[2],ie[3]);G+=2,_e=!1}q.push(Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,Ee,ie[0],ie[1],ie[2],ie[3],Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,-Ee,ie[0],ie[1],ie[2],ie[3],ke[0],ke[1],ke[2],Me[0],Me[1],Me[2],X,-Ee,Te[0],Te[1],Te[2],Te[3],ke[0],ke[1],ke[2],Me[0],Me[1],Me[2],X,Ee,Te[0],Te[1],Te[2],Te[3]),G+=4}}if(this.buffer.update(q),V.push(X),H.push(W[W.length-1].slice()),this.bounds=N,this.vertexCount=G,this.points=H,this.arcLength=V,"dashes"in p){var ze=p.dashes,Ce=ze.slice();for(Ce.unshift(0),P=1;P1.0001)return null;T+=P[L]}return Math.abs(T-1)>.001?null:[_,h(v,P),P]}},840:function(i,a,o){var s=o(3236),l=s([`precision highp float; +}`]),h=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];a.createShader=function(d){return l(d,u,c,null,h)},a.createPickShader=function(d){return l(d,u,f,null,h)}},5714:function(i,a,o){"use strict";i.exports=M;var s=o(2762),l=o(8116),u=o(7766),c=new Uint8Array(4),f=new Float32Array(c.buffer);function h(g,P,T,F){return c[0]=F,c[1]=T,c[2]=P,c[3]=g,f[0]}var d=o(2478),v=o(9618),x=o(7319),b=x.createShader,p=x.createPickShader,E=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function k(g,P){for(var T=0,F=0;F<3;++F){var q=g[F]-P[F];T+=q*q}return Math.sqrt(T)}function A(g){for(var P=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],T=0;T<3;++T)P[0][T]=Math.max(g[0][T],P[0][T]),P[1][T]=Math.min(g[1][T],P[1][T]);return P}function L(g,P,T,F){this.arcLength=g,this.position=P,this.index=T,this.dataCoordinate=F}function _(g,P,T,F,q,V){this.gl=g,this.shader=P,this.pickShader=T,this.buffer=F,this.vao=q,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=V,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var C=_.prototype;C.isTransparent=function(){return this.hasAlpha},C.isOpaque=function(){return!this.hasAlpha},C.pickSlots=1,C.setPickBase=function(g){this.pickId=g},C.drawTransparent=C.draw=function(g){if(this.vertexCount){var P=this.gl,T=this.shader,F=this.vao;T.bind(),T.uniforms={model:g.model||E,view:g.view||E,projection:g.projection||E,clipBounds:A(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[P.drawingBufferWidth,P.drawingBufferHeight],pixelRatio:this.pixelRatio},F.bind(),F.draw(P.TRIANGLE_STRIP,this.vertexCount),F.unbind()}},C.drawPick=function(g){if(this.vertexCount){var P=this.gl,T=this.pickShader,F=this.vao;T.bind(),T.uniforms={model:g.model||E,view:g.view||E,projection:g.projection||E,pickId:this.pickId,clipBounds:A(this.clipBounds),screenShape:[P.drawingBufferWidth,P.drawingBufferHeight],pixelRatio:this.pixelRatio},F.bind(),F.draw(P.TRIANGLE_STRIP,this.vertexCount),F.unbind()}},C.update=function(g){var P,T;this.dirty=!0;var F=!!g.connectGaps;"dashScale"in g&&(this.dashScale=g.dashScale),this.hasAlpha=!1,"opacity"in g&&(this.opacity=+g.opacity,this.opacity<1&&(this.hasAlpha=!0));var q=[],V=[],H=[],X=0,G=0,N=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],W=g.position||g.positions;if(W){var re=g.color||g.colors||[0,0,0,1],ae=g.lineWidth||1,_e=!1;e:for(P=1;P0){for(var ge=0;ge<24;++ge)q.push(q[q.length-12]);G+=2,_e=!0}continue e}N[0][T]=Math.min(N[0][T],Me[T],ke[T]),N[1][T]=Math.max(N[1][T],Me[T],ke[T])}var ie,Te;Array.isArray(re[0])?(ie=re.length>P-1?re[P-1]:re.length>0?re[re.length-1]:[0,0,0,1],Te=re.length>P?re[P]:re.length>0?re[re.length-1]:[0,0,0,1]):ie=Te=re,ie.length===3&&(ie=[ie[0],ie[1],ie[2],1]),Te.length===3&&(Te=[Te[0],Te[1],Te[2],1]),!this.hasAlpha&&ie[3]<1&&(this.hasAlpha=!0);var Ee;Array.isArray(ae)?Ee=ae.length>P-1?ae[P-1]:ae.length>0?ae[ae.length-1]:[0,0,0,1]:Ee=ae;var Ae=X;if(X+=k(Me,ke),_e){for(T=0;T<2;++T)q.push(Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,Ee,ie[0],ie[1],ie[2],ie[3]);G+=2,_e=!1}q.push(Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,Ee,ie[0],ie[1],ie[2],ie[3],Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,-Ee,ie[0],ie[1],ie[2],ie[3],ke[0],ke[1],ke[2],Me[0],Me[1],Me[2],X,-Ee,Te[0],Te[1],Te[2],Te[3],ke[0],ke[1],ke[2],Me[0],Me[1],Me[2],X,Ee,Te[0],Te[1],Te[2],Te[3]),G+=4}}if(this.buffer.update(q),V.push(X),H.push(W[W.length-1].slice()),this.bounds=N,this.vertexCount=G,this.points=H,this.arcLength=V,"dashes"in g){var ze=g.dashes,Ce=ze.slice();for(Ce.unshift(0),P=1;P1.0001)return null;T+=P[L]}return Math.abs(T-1)>.001?null:[_,h(v,P),P]}},840:function(i,a,o){var s=o(3236),l=s([`precision highp float; #define GLSLIFY 1 attribute vec3 position, normal; @@ -1219,7 +1219,7 @@ void main() { } f_id = id; f_position = position; -}`]),g=s([`precision highp float; +}`]),p=s([`precision highp float; #define GLSLIFY 1 attribute vec3 position; @@ -1236,7 +1236,7 @@ uniform vec3 contourColor; void main() { gl_FragColor = vec4(contourColor, 1.0); } -`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.wireShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.pointShader={vertex:h,fragment:d,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},a.pickShader={vertex:v,fragment:x,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},a.pointPickShader={vertex:b,fragment:x,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},a.contourShader={vertex:g,fragment:E,attributes:[{name:"position",type:"vec3"}]}},7201:function(i,a,o){"use strict";var s=1e-6,l=1e-6,u=o(9405),c=o(2762),f=o(8116),h=o(7766),d=o(8406),v=o(6760),x=o(7608),b=o(9618),g=o(6729),E=o(7765),k=o(1888),A=o(840),L=o(7626),_=A.meshShader,C=A.wireShader,M=A.pointShader,p=A.pickShader,P=A.pointPickShader,T=A.contourShader,F=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function q(ge,ie,Te,Ee,Ae,ze,Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot,Rt,kt,Ct,Yt,xr,er,Ke,xt,bt,Lt,St){this.gl=ge,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=ie,this.dirty=!0,this.triShader=Te,this.lineShader=Ee,this.pointShader=Ae,this.pickShader=ze,this.pointPickShader=Ce,this.contourShader=me,this.trianglePositions=Re,this.triangleColors=Ge,this.triangleNormals=ct,this.triangleUVs=nt,this.triangleIds=ce,this.triangleVAO=qt,this.triangleCount=0,this.lineWidth=1,this.edgePositions=rt,this.edgeColors=Rt,this.edgeUVs=kt,this.edgeIds=ot,this.edgeVAO=Ct,this.edgeCount=0,this.pointPositions=Yt,this.pointColors=er,this.pointUVs=Ke,this.pointSizes=xt,this.pointIds=xr,this.pointVAO=bt,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=Lt,this.contourVAO=St,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=F,this._view=F,this._projection=F,this._resolution=[1,1]}var V=q.prototype;V.isOpaque=function(){return!this.hasAlpha},V.isTransparent=function(){return this.hasAlpha},V.pickSlots=1,V.setPickBase=function(ge){this.pickId=ge};function H(ge,ie){if(!ie||!ie.length)return 1;for(var Te=0;Tege&&Te>0){var Ee=(ie[Te][0]-ge)/(ie[Te][0]-ie[Te-1][0]);return ie[Te][1]*(1-Ee)+Ee*ie[Te-1][1]}}return 1}function X(ge,ie){for(var Te=g({colormap:ge,nshades:256,format:"rgba"}),Ee=new Uint8Array(256*4),Ae=0;Ae<256;++Ae){for(var ze=Te[Ae],Ce=0;Ce<3;++Ce)Ee[4*Ae+Ce]=ze[Ce];ie?Ee[4*Ae+3]=255*H(Ae/255,ie):Ee[4*Ae+3]=255*ze[3]}return b(Ee,[256,256,4],[4,0,1])}function G(ge){for(var ie=ge.length,Te=new Array(ie),Ee=0;Ee0){var ct=this.triShader;ct.bind(),ct.uniforms=me,this.triangleVAO.bind(),ie.drawArrays(ie.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}if(this.edgeCount>0&&this.lineWidth>0){var ct=this.lineShader;ct.bind(),ct.uniforms=me,this.edgeVAO.bind(),ie.lineWidth(this.lineWidth*this.pixelRatio),ie.drawArrays(ie.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()}if(this.pointCount>0){var ct=this.pointShader;ct.bind(),ct.uniforms=me,this.pointVAO.bind(),ie.drawArrays(ie.POINTS,0,this.pointCount),this.pointVAO.unbind()}if(this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0){var ct=this.contourShader;ct.bind(),ct.uniforms=me,this.contourVAO.bind(),ie.drawArrays(ie.LINES,0,this.contourCount),this.contourVAO.unbind()}},V.drawPick=function(ge){ge=ge||{};for(var ie=this.gl,Te=ge.model||F,Ee=ge.view||F,Ae=ge.projection||F,ze=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],Ce=0;Ce<3;++Ce)ze[0][Ce]=Math.max(ze[0][Ce],this.clipBounds[0][Ce]),ze[1][Ce]=Math.min(ze[1][Ce],this.clipBounds[1][Ce]);this._model=[].slice.call(Te),this._view=[].slice.call(Ee),this._projection=[].slice.call(Ae),this._resolution=[ie.drawingBufferWidth,ie.drawingBufferHeight];var me={model:Te,view:Ee,projection:Ae,clipBounds:ze,pickId:this.pickId/255},Re=this.pickShader;if(Re.bind(),Re.uniforms=me,this.triangleCount>0&&(this.triangleVAO.bind(),ie.drawArrays(ie.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),ie.lineWidth(this.lineWidth*this.pixelRatio),ie.drawArrays(ie.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()),this.pointCount>0){var Re=this.pointPickShader;Re.bind(),Re.uniforms=me,this.pointVAO.bind(),ie.drawArrays(ie.POINTS,0,this.pointCount),this.pointVAO.unbind()}},V.pick=function(ge){if(!ge||ge.id!==this.pickId)return null;for(var ie=ge.value[0]+256*ge.value[1]+65536*ge.value[2],Te=this.cells[ie],Ee=this.positions,Ae=new Array(Te.length),ze=0;zeMath.abs(p))g.rotate(F,0,0,-M*P*Math.PI*_.rotateSpeed/window.innerWidth);else if(!_._ortho){var q=-_.zoomSpeed*T*p/window.innerHeight*(F-g.lastT())/20;g.pan(F,0,0,k*(Math.exp(q)-1))}}},!0)},_.enableMouseListeners(),_}},799:function(i,a,o){var s=o(3236),l=o(9405),u=s([`precision mediump float; +`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.wireShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.pointShader={vertex:h,fragment:d,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},a.pickShader={vertex:v,fragment:x,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},a.pointPickShader={vertex:b,fragment:x,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},a.contourShader={vertex:p,fragment:E,attributes:[{name:"position",type:"vec3"}]}},7201:function(i,a,o){"use strict";var s=1e-6,l=1e-6,u=o(9405),c=o(2762),f=o(8116),h=o(7766),d=o(8406),v=o(6760),x=o(7608),b=o(9618),p=o(6729),E=o(7765),k=o(1888),A=o(840),L=o(7626),_=A.meshShader,C=A.wireShader,M=A.pointShader,g=A.pickShader,P=A.pointPickShader,T=A.contourShader,F=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function q(ge,ie,Te,Ee,Ae,ze,Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot,Rt,kt,Ct,Yt,xr,er,Ke,xt,bt,Lt,St){this.gl=ge,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=ie,this.dirty=!0,this.triShader=Te,this.lineShader=Ee,this.pointShader=Ae,this.pickShader=ze,this.pointPickShader=Ce,this.contourShader=me,this.trianglePositions=Re,this.triangleColors=Ge,this.triangleNormals=ct,this.triangleUVs=nt,this.triangleIds=ce,this.triangleVAO=qt,this.triangleCount=0,this.lineWidth=1,this.edgePositions=rt,this.edgeColors=Rt,this.edgeUVs=kt,this.edgeIds=ot,this.edgeVAO=Ct,this.edgeCount=0,this.pointPositions=Yt,this.pointColors=er,this.pointUVs=Ke,this.pointSizes=xt,this.pointIds=xr,this.pointVAO=bt,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=Lt,this.contourVAO=St,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=F,this._view=F,this._projection=F,this._resolution=[1,1]}var V=q.prototype;V.isOpaque=function(){return!this.hasAlpha},V.isTransparent=function(){return this.hasAlpha},V.pickSlots=1,V.setPickBase=function(ge){this.pickId=ge};function H(ge,ie){if(!ie||!ie.length)return 1;for(var Te=0;Tege&&Te>0){var Ee=(ie[Te][0]-ge)/(ie[Te][0]-ie[Te-1][0]);return ie[Te][1]*(1-Ee)+Ee*ie[Te-1][1]}}return 1}function X(ge,ie){for(var Te=p({colormap:ge,nshades:256,format:"rgba"}),Ee=new Uint8Array(256*4),Ae=0;Ae<256;++Ae){for(var ze=Te[Ae],Ce=0;Ce<3;++Ce)Ee[4*Ae+Ce]=ze[Ce];ie?Ee[4*Ae+3]=255*H(Ae/255,ie):Ee[4*Ae+3]=255*ze[3]}return b(Ee,[256,256,4],[4,0,1])}function G(ge){for(var ie=ge.length,Te=new Array(ie),Ee=0;Ee0){var ct=this.triShader;ct.bind(),ct.uniforms=me,this.triangleVAO.bind(),ie.drawArrays(ie.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}if(this.edgeCount>0&&this.lineWidth>0){var ct=this.lineShader;ct.bind(),ct.uniforms=me,this.edgeVAO.bind(),ie.lineWidth(this.lineWidth*this.pixelRatio),ie.drawArrays(ie.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()}if(this.pointCount>0){var ct=this.pointShader;ct.bind(),ct.uniforms=me,this.pointVAO.bind(),ie.drawArrays(ie.POINTS,0,this.pointCount),this.pointVAO.unbind()}if(this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0){var ct=this.contourShader;ct.bind(),ct.uniforms=me,this.contourVAO.bind(),ie.drawArrays(ie.LINES,0,this.contourCount),this.contourVAO.unbind()}},V.drawPick=function(ge){ge=ge||{};for(var ie=this.gl,Te=ge.model||F,Ee=ge.view||F,Ae=ge.projection||F,ze=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],Ce=0;Ce<3;++Ce)ze[0][Ce]=Math.max(ze[0][Ce],this.clipBounds[0][Ce]),ze[1][Ce]=Math.min(ze[1][Ce],this.clipBounds[1][Ce]);this._model=[].slice.call(Te),this._view=[].slice.call(Ee),this._projection=[].slice.call(Ae),this._resolution=[ie.drawingBufferWidth,ie.drawingBufferHeight];var me={model:Te,view:Ee,projection:Ae,clipBounds:ze,pickId:this.pickId/255},Re=this.pickShader;if(Re.bind(),Re.uniforms=me,this.triangleCount>0&&(this.triangleVAO.bind(),ie.drawArrays(ie.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),ie.lineWidth(this.lineWidth*this.pixelRatio),ie.drawArrays(ie.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()),this.pointCount>0){var Re=this.pointPickShader;Re.bind(),Re.uniforms=me,this.pointVAO.bind(),ie.drawArrays(ie.POINTS,0,this.pointCount),this.pointVAO.unbind()}},V.pick=function(ge){if(!ge||ge.id!==this.pickId)return null;for(var ie=ge.value[0]+256*ge.value[1]+65536*ge.value[2],Te=this.cells[ie],Ee=this.positions,Ae=new Array(Te.length),ze=0;zeMath.abs(g))p.rotate(F,0,0,-M*P*Math.PI*_.rotateSpeed/window.innerWidth);else if(!_._ortho){var q=-_.zoomSpeed*T*g/window.innerHeight*(F-p.lastT())/20;p.pan(F,0,0,k*(Math.exp(q)-1))}}},!0)},_.enableMouseListeners(),_}},799:function(i,a,o){var s=o(3236),l=o(9405),u=s([`precision mediump float; #define GLSLIFY 1 attribute vec2 position; varying vec2 uv; @@ -1252,7 +1252,7 @@ varying vec2 uv; void main() { vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0)); gl_FragColor = min(vec4(1,1,1,1), accum); -}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec2"}])}},4100:function(i,a,o){"use strict";var s=o(4437),l=o(3837),u=o(5445),c=o(4449),f=o(3589),h=o(2260),d=o(7169),v=o(351),x=o(4772),b=o(4040),g=o(799),E=o(9216)({tablet:!0,featureDetect:!0});i.exports={createScene:C,createCamera:s};function k(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function A(p,P){var T=null;try{T=p.getContext("webgl",P),T||(T=p.getContext("experimental-webgl",P))}catch(F){return null}return T}function L(p){var P=Math.round(Math.log(Math.abs(p))/Math.log(10));if(P<0){var T=Math.round(Math.pow(10,-P));return Math.ceil(p*T)/T}else if(P>0){var T=Math.round(Math.pow(10,P));return Math.ceil(p/T)*T}return Math.ceil(p)}function _(p){return typeof p=="boolean"?p:!0}function C(p){p=p||{},p.camera=p.camera||{};var P=p.canvas;if(!P)if(P=document.createElement("canvas"),p.container){var T=p.container;T.appendChild(P)}else document.body.appendChild(P);var F=p.gl;if(F||(p.glOptions&&(E=!!p.glOptions.preserveDrawingBuffer),F=A(P,p.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:E})),!F)throw new Error("webgl not supported");var q=p.bounds||[[-10,-10,-10],[10,10,10]],V=new k,H=h(F,F.drawingBufferWidth,F.drawingBufferHeight,{preferFloat:!E}),X=g(F),G=p.cameraObject&&p.cameraObject._ortho===!0||p.camera.projection&&p.camera.projection.type==="orthographic"||!1,N={eye:p.camera.eye||[2,0,0],center:p.camera.center||[0,0,0],up:p.camera.up||[0,1,0],zoomMin:p.camera.zoomMax||.1,zoomMax:p.camera.zoomMin||100,mode:p.camera.mode||"turntable",_ortho:G},W=p.axes||{},re=l(F,W);re.enable=!W.disable;var ae=p.spikes||{},_e=c(F,ae),Me=[],ke=[],ge=[],ie=[],Te=!0,Ce=!0,Ee=new Array(16),Ae=new Array(16),ze={view:null,projection:Ee,model:Ae,_ortho:!1},Ce=!0,me=[F.drawingBufferWidth,F.drawingBufferHeight],Re=p.cameraObject||s(P,N),ce={gl:F,contextLost:!1,pixelRatio:p.pixelRatio||1,canvas:P,selection:V,camera:Re,axes:re,axesPixels:null,spikes:_e,bounds:q,objects:Me,shape:me,aspect:p.aspectRatio||[1,1,1],pickRadius:p.pickRadius||10,zNear:p.zNear||.01,zFar:p.zFar||1e3,fovy:p.fovy||Math.PI/4,clearColor:p.clearColor||[0,0,0,0],autoResize:_(p.autoResize),autoBounds:_(p.autoBounds),autoScale:!!p.autoScale,autoCenter:_(p.autoCenter),clipToBounds:_(p.clipToBounds),snapToData:!!p.snapToData,onselect:p.onselect||null,onrender:p.onrender||null,onclick:p.onclick||null,cameraParams:ze,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(Yt){this.aspect[0]=Yt.x,this.aspect[1]=Yt.y,this.aspect[2]=Yt.z,Ce=!0},setBounds:function(Yt,xr){this.bounds[0][Yt]=xr.min,this.bounds[1][Yt]=xr.max},setClearColor:function(Yt){this.clearColor=Yt},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},Ge=[F.drawingBufferWidth/ce.pixelRatio|0,F.drawingBufferHeight/ce.pixelRatio|0];function nt(){if(!ce._stopped&&ce.autoResize){var Yt=P.parentNode,xr=1,er=1;Yt&&Yt!==document.body?(xr=Yt.clientWidth,er=Yt.clientHeight):(xr=window.innerWidth,er=window.innerHeight);var Ke=Math.ceil(xr*ce.pixelRatio)|0,xt=Math.ceil(er*ce.pixelRatio)|0;if(Ke!==P.width||xt!==P.height){P.width=Ke,P.height=xt;var bt=P.style;bt.position=bt.position||"absolute",bt.left="0px",bt.top="0px",bt.width=xr+"px",bt.height=er+"px",Te=!0}}}ce.autoResize&&nt(),window.addEventListener("resize",nt);function ct(){for(var Yt=Me.length,xr=ie.length,er=0;er0&&ge[xr-1]===0;)ge.pop(),ie.pop().dispose()}ce.update=function(Yt){ce._stopped||(Yt=Yt||{},Te=!0,Ce=!0)},ce.add=function(Yt){ce._stopped||(Yt.axes=re,Me.push(Yt),ke.push(-1),Te=!0,Ce=!0,ct())},ce.remove=function(Yt){if(!ce._stopped){var xr=Me.indexOf(Yt);xr<0||(Me.splice(xr,1),ke.pop(),Te=!0,Ce=!0,ct())}},ce.dispose=function(){if(!ce._stopped&&(ce._stopped=!0,window.removeEventListener("resize",nt),P.removeEventListener("webglcontextlost",qt),ce.mouseListener.enabled=!1,!ce.contextLost)){re.dispose(),_e.dispose();for(var Yt=0;YtV.distance)continue;for(var dt=0;dt1e-6?(E=Math.acos(k),A=Math.sin(E),L=Math.sin((1-u)*E)/A,_=Math.sin(u*E)/A):(L=1-u,_=u),o[0]=L*c+_*v,o[1]=L*f+_*x,o[2]=L*h+_*b,o[3]=L*d+_*g,o}},5964:function(i){"use strict";i.exports=function(a){return!a&&a!==0?"":a.toString()}},9366:function(i,a,o){"use strict";var s=o(4359);i.exports=u;var l={};function u(c,f,h){var d=[f.style,f.weight,f.variant,f.family].join("_"),v=l[d];if(v||(v=l[d]={}),c in v)return v[c];var x={textAlign:"center",textBaseline:"middle",lineHeight:1,font:f.family,fontStyle:f.style,fontWeight:f.weight,fontVariant:f.variant,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0}};x.triangles=!0;var b=s(c,x);x.triangles=!1;var g=s(c,x),E,k;if(h&&h!==1){for(E=0;E0){var T=Math.round(Math.pow(10,P));return Math.ceil(g/T)*T}return Math.ceil(g)}function _(g){return typeof g=="boolean"?g:!0}function C(g){g=g||{},g.camera=g.camera||{};var P=g.canvas;if(!P)if(P=document.createElement("canvas"),g.container){var T=g.container;T.appendChild(P)}else document.body.appendChild(P);var F=g.gl;if(F||(g.glOptions&&(E=!!g.glOptions.preserveDrawingBuffer),F=A(P,g.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:E})),!F)throw new Error("webgl not supported");var q=g.bounds||[[-10,-10,-10],[10,10,10]],V=new k,H=h(F,F.drawingBufferWidth,F.drawingBufferHeight,{preferFloat:!E}),X=p(F),G=g.cameraObject&&g.cameraObject._ortho===!0||g.camera.projection&&g.camera.projection.type==="orthographic"||!1,N={eye:g.camera.eye||[2,0,0],center:g.camera.center||[0,0,0],up:g.camera.up||[0,1,0],zoomMin:g.camera.zoomMax||.1,zoomMax:g.camera.zoomMin||100,mode:g.camera.mode||"turntable",_ortho:G},W=g.axes||{},re=l(F,W);re.enable=!W.disable;var ae=g.spikes||{},_e=c(F,ae),Me=[],ke=[],ge=[],ie=[],Te=!0,Ce=!0,Ee=new Array(16),Ae=new Array(16),ze={view:null,projection:Ee,model:Ae,_ortho:!1},Ce=!0,me=[F.drawingBufferWidth,F.drawingBufferHeight],Re=g.cameraObject||s(P,N),ce={gl:F,contextLost:!1,pixelRatio:g.pixelRatio||1,canvas:P,selection:V,camera:Re,axes:re,axesPixels:null,spikes:_e,bounds:q,objects:Me,shape:me,aspect:g.aspectRatio||[1,1,1],pickRadius:g.pickRadius||10,zNear:g.zNear||.01,zFar:g.zFar||1e3,fovy:g.fovy||Math.PI/4,clearColor:g.clearColor||[0,0,0,0],autoResize:_(g.autoResize),autoBounds:_(g.autoBounds),autoScale:!!g.autoScale,autoCenter:_(g.autoCenter),clipToBounds:_(g.clipToBounds),snapToData:!!g.snapToData,onselect:g.onselect||null,onrender:g.onrender||null,onclick:g.onclick||null,cameraParams:ze,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(Yt){this.aspect[0]=Yt.x,this.aspect[1]=Yt.y,this.aspect[2]=Yt.z,Ce=!0},setBounds:function(Yt,xr){this.bounds[0][Yt]=xr.min,this.bounds[1][Yt]=xr.max},setClearColor:function(Yt){this.clearColor=Yt},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},Ge=[F.drawingBufferWidth/ce.pixelRatio|0,F.drawingBufferHeight/ce.pixelRatio|0];function nt(){if(!ce._stopped&&ce.autoResize){var Yt=P.parentNode,xr=1,er=1;Yt&&Yt!==document.body?(xr=Yt.clientWidth,er=Yt.clientHeight):(xr=window.innerWidth,er=window.innerHeight);var Ke=Math.ceil(xr*ce.pixelRatio)|0,xt=Math.ceil(er*ce.pixelRatio)|0;if(Ke!==P.width||xt!==P.height){P.width=Ke,P.height=xt;var bt=P.style;bt.position=bt.position||"absolute",bt.left="0px",bt.top="0px",bt.width=xr+"px",bt.height=er+"px",Te=!0}}}ce.autoResize&&nt(),window.addEventListener("resize",nt);function ct(){for(var Yt=Me.length,xr=ie.length,er=0;er0&&ge[xr-1]===0;)ge.pop(),ie.pop().dispose()}ce.update=function(Yt){ce._stopped||(Yt=Yt||{},Te=!0,Ce=!0)},ce.add=function(Yt){ce._stopped||(Yt.axes=re,Me.push(Yt),ke.push(-1),Te=!0,Ce=!0,ct())},ce.remove=function(Yt){if(!ce._stopped){var xr=Me.indexOf(Yt);xr<0||(Me.splice(xr,1),ke.pop(),Te=!0,Ce=!0,ct())}},ce.dispose=function(){if(!ce._stopped&&(ce._stopped=!0,window.removeEventListener("resize",nt),P.removeEventListener("webglcontextlost",qt),ce.mouseListener.enabled=!1,!ce.contextLost)){re.dispose(),_e.dispose();for(var Yt=0;YtV.distance)continue;for(var dt=0;dt1e-6?(E=Math.acos(k),A=Math.sin(E),L=Math.sin((1-u)*E)/A,_=Math.sin(u*E)/A):(L=1-u,_=u),o[0]=L*c+_*v,o[1]=L*f+_*x,o[2]=L*h+_*b,o[3]=L*d+_*p,o}},5964:function(i){"use strict";i.exports=function(a){return!a&&a!==0?"":a.toString()}},9366:function(i,a,o){"use strict";var s=o(4359);i.exports=u;var l={};function u(c,f,h){var d=[f.style,f.weight,f.variant,f.family].join("_"),v=l[d];if(v||(v=l[d]={}),c in v)return v[c];var x={textAlign:"center",textBaseline:"middle",lineHeight:1,font:f.family,fontStyle:f.style,fontWeight:f.weight,fontVariant:f.variant,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0}};x.triangles=!0;var b=s(c,x);x.triangles=!1;var p=s(c,x),E,k;if(h&&h!==1){for(E=0;E1?1:Ae}function M(Ae,ze,Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot){this.gl=Ae,this.pixelRatio=1,this.shader=ze,this.orthoShader=Ce,this.projectShader=me,this.pointBuffer=Re,this.colorBuffer=ce,this.glyphBuffer=Ge,this.idBuffer=nt,this.vao=ct,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[.6666666666666666,.6666666666666666,.6666666666666666],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=qt,this.pickOrthoShader=rt,this.pickProjectShader=ot,this.points=[],this._selectResult=new _(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}var p=M.prototype;p.pickSlots=1,p.setPickBase=function(Ae){this.pickId=Ae},p.isTransparent=function(){if(this.hasAlpha)return!0;for(var Ae=0;Ae<3;++Ae)if(this.axesProject[Ae]&&this.projectHasAlpha)return!0;return!1},p.isOpaque=function(){if(!this.hasAlpha)return!0;for(var Ae=0;Ae<3;++Ae)if(this.axesProject[Ae]&&!this.projectHasAlpha)return!0;return!1};var P=[0,0],T=[0,0,0],F=[0,0,0],q=[0,0,0,1],V=[0,0,0,1],H=x.slice(),X=[0,0,0],G=[[0,0,0],[0,0,0]];function N(Ae){return Ae[0]=Ae[1]=Ae[2]=0,Ae}function W(Ae,ze){return Ae[0]=ze[0],Ae[1]=ze[1],Ae[2]=ze[2],Ae[3]=1,Ae}function re(Ae,ze,Ce,me){return Ae[0]=ze[0],Ae[1]=ze[1],Ae[2]=ze[2],Ae[Ce]=me,Ae}function ae(Ae){for(var ze=G,Ce=0;Ce<2;++Ce)for(var me=0;me<3;++me)ze[Ce][me]=Math.max(Math.min(Ae[Ce][me],1e8),-1e8);return ze}function _e(Ae,ze,Ce,me){var Re=ze.axesProject,ce=ze.gl,Ge=Ae.uniforms,nt=Ce.model||x,ct=Ce.view||x,qt=Ce.projection||x,rt=ze.axesBounds,ot=ae(ze.clipBounds),Rt;ze.axes&&ze.axes.lastCubeProps?Rt=ze.axes.lastCubeProps.axis:Rt=[1,1,1],P[0]=2/ce.drawingBufferWidth,P[1]=2/ce.drawingBufferHeight,Ae.bind(),Ge.view=ct,Ge.projection=qt,Ge.screenSize=P,Ge.highlightId=ze.highlightId,Ge.highlightScale=ze.highlightScale,Ge.clipBounds=ot,Ge.pickGroup=ze.pickId/255,Ge.pixelRatio=me;for(var kt=0;kt<3;++kt)if(Re[kt]){Ge.scale=ze.projectScale[kt],Ge.opacity=ze.projectOpacity[kt];for(var Ct=H,Yt=0;Yt<16;++Yt)Ct[Yt]=0;for(var Yt=0;Yt<4;++Yt)Ct[5*Yt]=1;Ct[5*kt]=0,Rt[kt]<0?Ct[12+kt]=rt[0][kt]:Ct[12+kt]=rt[1][kt],f(Ct,nt,Ct),Ge.model=Ct;var xr=(kt+1)%3,er=(kt+2)%3,Ke=N(T),xt=N(F);Ke[xr]=1,xt[er]=1;var bt=L(qt,ct,nt,W(q,Ke)),Lt=L(qt,ct,nt,W(V,xt));if(Math.abs(bt[1])>Math.abs(Lt[1])){var St=bt;bt=Lt,Lt=St,St=Ke,Ke=xt,xt=St;var Et=xr;xr=er,er=Et}bt[0]<0&&(Ke[xr]=-1),Lt[1]>0&&(xt[er]=-1);for(var dt=0,Ht=0,Yt=0;Yt<4;++Yt)dt+=Math.pow(nt[4*xr+Yt],2),Ht+=Math.pow(nt[4*er+Yt],2);Ke[xr]/=Math.sqrt(dt),xt[er]/=Math.sqrt(Ht),Ge.axes[0]=Ke,Ge.axes[1]=xt,Ge.fragClipBounds[0]=re(X,ot[0],kt,-1e8),Ge.fragClipBounds[1]=re(X,ot[1],kt,1e8),ze.vao.bind(),ze.vao.draw(ce.TRIANGLES,ze.vertexCount),ze.lineWidth>0&&(ce.lineWidth(ze.lineWidth*me),ze.vao.draw(ce.LINES,ze.lineVertexCount,ze.vertexCount)),ze.vao.unbind()}}var Me=[-1e8,-1e8,-1e8],ke=[1e8,1e8,1e8],ge=[Me,ke];function ie(Ae,ze,Ce,me,Re,ce,Ge){var nt=Ce.gl;if((ce===Ce.projectHasAlpha||Ge)&&_e(ze,Ce,me,Re),ce===Ce.hasAlpha||Ge){Ae.bind();var ct=Ae.uniforms;ct.model=me.model||x,ct.view=me.view||x,ct.projection=me.projection||x,P[0]=2/nt.drawingBufferWidth,P[1]=2/nt.drawingBufferHeight,ct.screenSize=P,ct.highlightId=Ce.highlightId,ct.highlightScale=Ce.highlightScale,ct.fragClipBounds=ge,ct.clipBounds=Ce.axes.bounds,ct.opacity=Ce.opacity,ct.pickGroup=Ce.pickId/255,ct.pixelRatio=Re,Ce.vao.bind(),Ce.vao.draw(nt.TRIANGLES,Ce.vertexCount),Ce.lineWidth>0&&(nt.lineWidth(Ce.lineWidth*Re),Ce.vao.draw(nt.LINES,Ce.lineVertexCount,Ce.vertexCount)),Ce.vao.unbind()}}p.draw=function(Ae){var ze=this.useOrtho?this.orthoShader:this.shader;ie(ze,this.projectShader,this,Ae,this.pixelRatio,!1,!1)},p.drawTransparent=function(Ae){var ze=this.useOrtho?this.orthoShader:this.shader;ie(ze,this.projectShader,this,Ae,this.pixelRatio,!0,!1)},p.drawPick=function(Ae){var ze=this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader;ie(ze,this.pickProjectShader,this,Ae,1,!0,!0)},p.pick=function(Ae){if(!Ae||Ae.id!==this.pickId)return null;var ze=Ae.value[2]+(Ae.value[1]<<8)+(Ae.value[0]<<16);if(ze>=this.pointCount||ze<0)return null;var Ce=this.points[ze],me=this._selectResult;me.index=ze;for(var Re=0;Re<3;++Re)me.position[Re]=me.dataCoordinate[Re]=Ce[Re];return me},p.highlight=function(Ae){if(!Ae)this.highlightId=[1,1,1,1];else{var ze=Ae.index,Ce=ze&255,me=ze>>8&255,Re=ze>>16&255;this.highlightId=[Ce/255,me/255,Re/255,0]}};function Te(Ae,ze,Ce,me){var Re;k(Ae)?ze0){var Nr=0,ut=er,Ne=[0,0,0,1],Ye=[0,0,0,1],Ve=k(Rt)&&k(Rt[0]),Xe=k(Yt)&&k(Yt[0]);e:for(var me=0;me0?1-Ht[0][0]:Vt<0?1+Ht[1][0]:1,ar*=ar>0?1-Ht[0][1]:ar<0?1+Ht[1][1]:1;for(var Qr=[Vt,ar],nn=Et.cells||[],Wi=Et.positions||[],Lt=0;Ltthis.buffer.length){l.free(this.buffer);for(var k=this.buffer=l.mallocUint8(c(E*g*4)),A=0;Ak)for(g=k;gE)for(g=E;g=0){for(var G=X.type.charAt(X.type.length-1)|0,N=new Array(G),W=0;W=0;)re+=1;V[H]=re}var ae=new Array(k.length);function _e(){_.program=c.program(C,_._vref,_._fref,q,V);for(var Me=0;Me=0){var p=C.charCodeAt(C.length-1)-48;if(p<2||p>4)throw new s("","Invalid data type for attribute "+_+": "+C);f(v,x,M[0],g,p,E,_)}else if(C.indexOf("mat")>=0){var p=C.charCodeAt(C.length-1)-48;if(p<2||p>4)throw new s("","Invalid data type for attribute "+_+": "+C);h(v,x,M,g,p,E,_)}else throw new s("","Unknown data type for attribute "+_+": "+C);break}}return E}},3327:function(i,a,o){"use strict";var s=o(216),l=o(8866);i.exports=f;function u(h){return function(){return h}}function c(h,d){for(var v=new Array(h),x=0;x4)throw new l("","Invalid data type");switch(re.charAt(0)){case"b":case"i":h["uniform"+ae+"iv"](x[V],H);break;case"v":h["uniform"+ae+"fv"](x[V],H);break;default:throw new l("","Unrecognized data type for vector "+name+": "+re)}}else if(re.indexOf("mat")===0&&re.length===4){if(ae=re.charCodeAt(re.length-1)-48,ae<2||ae>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+re);h["uniformMatrix"+ae+"fv"](x[V],!1,H);break}else throw new l("","Unknown uniform data type for "+name+": "+re)}}}}}function E(C,M){if(typeof M!="object")return[[C,M]];var p=[];for(var P in M){var T=M[P],F=C;parseInt(P)+""===P?F+="["+P+"]":F+="."+P,typeof T=="object"?p.push.apply(p,E(F,T)):p.push([F,T])}return p}function k(C){switch(C){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":return 0;case"float":return 0;default:var M=C.indexOf("vec");if(0<=M&&M<=1&&C.length===4+M){var p=C.charCodeAt(C.length-1)-48;if(p<2||p>4)throw new l("","Invalid data type");return C.charAt(0)==="b"?c(p,!1):c(p,0)}else if(C.indexOf("mat")===0&&C.length===4){var p=C.charCodeAt(C.length-1)-48;if(p<2||p>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+C);return c(p*p,0)}else throw new l("","Unknown uniform data type for "+name+": "+C)}}function A(C,M,p){if(typeof p=="object"){var P=L(p);Object.defineProperty(C,M,{get:u(P),set:g(p),enumerable:!0,configurable:!1})}else x[p]?Object.defineProperty(C,M,{get:b(p),set:g(p),enumerable:!0,configurable:!1}):C[M]=k(v[p].type)}function L(C){var M;if(Array.isArray(C)){M=new Array(C.length);for(var p=0;p1){v[0]in h||(h[v[0]]=[]),h=h[v[0]];for(var x=1;x1)for(var E=0;E1?1:Ae}function M(Ae,ze,Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot){this.gl=Ae,this.pixelRatio=1,this.shader=ze,this.orthoShader=Ce,this.projectShader=me,this.pointBuffer=Re,this.colorBuffer=ce,this.glyphBuffer=Ge,this.idBuffer=nt,this.vao=ct,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[.6666666666666666,.6666666666666666,.6666666666666666],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=qt,this.pickOrthoShader=rt,this.pickProjectShader=ot,this.points=[],this._selectResult=new _(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}var g=M.prototype;g.pickSlots=1,g.setPickBase=function(Ae){this.pickId=Ae},g.isTransparent=function(){if(this.hasAlpha)return!0;for(var Ae=0;Ae<3;++Ae)if(this.axesProject[Ae]&&this.projectHasAlpha)return!0;return!1},g.isOpaque=function(){if(!this.hasAlpha)return!0;for(var Ae=0;Ae<3;++Ae)if(this.axesProject[Ae]&&!this.projectHasAlpha)return!0;return!1};var P=[0,0],T=[0,0,0],F=[0,0,0],q=[0,0,0,1],V=[0,0,0,1],H=x.slice(),X=[0,0,0],G=[[0,0,0],[0,0,0]];function N(Ae){return Ae[0]=Ae[1]=Ae[2]=0,Ae}function W(Ae,ze){return Ae[0]=ze[0],Ae[1]=ze[1],Ae[2]=ze[2],Ae[3]=1,Ae}function re(Ae,ze,Ce,me){return Ae[0]=ze[0],Ae[1]=ze[1],Ae[2]=ze[2],Ae[Ce]=me,Ae}function ae(Ae){for(var ze=G,Ce=0;Ce<2;++Ce)for(var me=0;me<3;++me)ze[Ce][me]=Math.max(Math.min(Ae[Ce][me],1e8),-1e8);return ze}function _e(Ae,ze,Ce,me){var Re=ze.axesProject,ce=ze.gl,Ge=Ae.uniforms,nt=Ce.model||x,ct=Ce.view||x,qt=Ce.projection||x,rt=ze.axesBounds,ot=ae(ze.clipBounds),Rt;ze.axes&&ze.axes.lastCubeProps?Rt=ze.axes.lastCubeProps.axis:Rt=[1,1,1],P[0]=2/ce.drawingBufferWidth,P[1]=2/ce.drawingBufferHeight,Ae.bind(),Ge.view=ct,Ge.projection=qt,Ge.screenSize=P,Ge.highlightId=ze.highlightId,Ge.highlightScale=ze.highlightScale,Ge.clipBounds=ot,Ge.pickGroup=ze.pickId/255,Ge.pixelRatio=me;for(var kt=0;kt<3;++kt)if(Re[kt]){Ge.scale=ze.projectScale[kt],Ge.opacity=ze.projectOpacity[kt];for(var Ct=H,Yt=0;Yt<16;++Yt)Ct[Yt]=0;for(var Yt=0;Yt<4;++Yt)Ct[5*Yt]=1;Ct[5*kt]=0,Rt[kt]<0?Ct[12+kt]=rt[0][kt]:Ct[12+kt]=rt[1][kt],f(Ct,nt,Ct),Ge.model=Ct;var xr=(kt+1)%3,er=(kt+2)%3,Ke=N(T),xt=N(F);Ke[xr]=1,xt[er]=1;var bt=L(qt,ct,nt,W(q,Ke)),Lt=L(qt,ct,nt,W(V,xt));if(Math.abs(bt[1])>Math.abs(Lt[1])){var St=bt;bt=Lt,Lt=St,St=Ke,Ke=xt,xt=St;var Et=xr;xr=er,er=Et}bt[0]<0&&(Ke[xr]=-1),Lt[1]>0&&(xt[er]=-1);for(var dt=0,Ht=0,Yt=0;Yt<4;++Yt)dt+=Math.pow(nt[4*xr+Yt],2),Ht+=Math.pow(nt[4*er+Yt],2);Ke[xr]/=Math.sqrt(dt),xt[er]/=Math.sqrt(Ht),Ge.axes[0]=Ke,Ge.axes[1]=xt,Ge.fragClipBounds[0]=re(X,ot[0],kt,-1e8),Ge.fragClipBounds[1]=re(X,ot[1],kt,1e8),ze.vao.bind(),ze.vao.draw(ce.TRIANGLES,ze.vertexCount),ze.lineWidth>0&&(ce.lineWidth(ze.lineWidth*me),ze.vao.draw(ce.LINES,ze.lineVertexCount,ze.vertexCount)),ze.vao.unbind()}}var Me=[-1e8,-1e8,-1e8],ke=[1e8,1e8,1e8],ge=[Me,ke];function ie(Ae,ze,Ce,me,Re,ce,Ge){var nt=Ce.gl;if((ce===Ce.projectHasAlpha||Ge)&&_e(ze,Ce,me,Re),ce===Ce.hasAlpha||Ge){Ae.bind();var ct=Ae.uniforms;ct.model=me.model||x,ct.view=me.view||x,ct.projection=me.projection||x,P[0]=2/nt.drawingBufferWidth,P[1]=2/nt.drawingBufferHeight,ct.screenSize=P,ct.highlightId=Ce.highlightId,ct.highlightScale=Ce.highlightScale,ct.fragClipBounds=ge,ct.clipBounds=Ce.axes.bounds,ct.opacity=Ce.opacity,ct.pickGroup=Ce.pickId/255,ct.pixelRatio=Re,Ce.vao.bind(),Ce.vao.draw(nt.TRIANGLES,Ce.vertexCount),Ce.lineWidth>0&&(nt.lineWidth(Ce.lineWidth*Re),Ce.vao.draw(nt.LINES,Ce.lineVertexCount,Ce.vertexCount)),Ce.vao.unbind()}}g.draw=function(Ae){var ze=this.useOrtho?this.orthoShader:this.shader;ie(ze,this.projectShader,this,Ae,this.pixelRatio,!1,!1)},g.drawTransparent=function(Ae){var ze=this.useOrtho?this.orthoShader:this.shader;ie(ze,this.projectShader,this,Ae,this.pixelRatio,!0,!1)},g.drawPick=function(Ae){var ze=this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader;ie(ze,this.pickProjectShader,this,Ae,1,!0,!0)},g.pick=function(Ae){if(!Ae||Ae.id!==this.pickId)return null;var ze=Ae.value[2]+(Ae.value[1]<<8)+(Ae.value[0]<<16);if(ze>=this.pointCount||ze<0)return null;var Ce=this.points[ze],me=this._selectResult;me.index=ze;for(var Re=0;Re<3;++Re)me.position[Re]=me.dataCoordinate[Re]=Ce[Re];return me},g.highlight=function(Ae){if(!Ae)this.highlightId=[1,1,1,1];else{var ze=Ae.index,Ce=ze&255,me=ze>>8&255,Re=ze>>16&255;this.highlightId=[Ce/255,me/255,Re/255,0]}};function Te(Ae,ze,Ce,me){var Re;k(Ae)?ze0){var Nr=0,ut=er,Ne=[0,0,0,1],Ye=[0,0,0,1],Ve=k(Rt)&&k(Rt[0]),Xe=k(Yt)&&k(Yt[0]);e:for(var me=0;me0?1-Ht[0][0]:Vt<0?1+Ht[1][0]:1,ar*=ar>0?1-Ht[0][1]:ar<0?1+Ht[1][1]:1;for(var Qr=[Vt,ar],nn=Et.cells||[],Wi=Et.positions||[],Lt=0;Ltthis.buffer.length){l.free(this.buffer);for(var k=this.buffer=l.mallocUint8(c(E*p*4)),A=0;Ak)for(p=k;pE)for(p=E;p=0){for(var G=X.type.charAt(X.type.length-1)|0,N=new Array(G),W=0;W=0;)re+=1;V[H]=re}var ae=new Array(k.length);function _e(){_.program=c.program(C,_._vref,_._fref,q,V);for(var Me=0;Me=0){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new s("","Invalid data type for attribute "+_+": "+C);f(v,x,M[0],p,g,E,_)}else if(C.indexOf("mat")>=0){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new s("","Invalid data type for attribute "+_+": "+C);h(v,x,M,p,g,E,_)}else throw new s("","Unknown data type for attribute "+_+": "+C);break}}return E}},3327:function(i,a,o){"use strict";var s=o(216),l=o(8866);i.exports=f;function u(h){return function(){return h}}function c(h,d){for(var v=new Array(h),x=0;x4)throw new l("","Invalid data type");switch(re.charAt(0)){case"b":case"i":h["uniform"+ae+"iv"](x[V],H);break;case"v":h["uniform"+ae+"fv"](x[V],H);break;default:throw new l("","Unrecognized data type for vector "+name+": "+re)}}else if(re.indexOf("mat")===0&&re.length===4){if(ae=re.charCodeAt(re.length-1)-48,ae<2||ae>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+re);h["uniformMatrix"+ae+"fv"](x[V],!1,H);break}else throw new l("","Unknown uniform data type for "+name+": "+re)}}}}}function E(C,M){if(typeof M!="object")return[[C,M]];var g=[];for(var P in M){var T=M[P],F=C;parseInt(P)+""===P?F+="["+P+"]":F+="."+P,typeof T=="object"?g.push.apply(g,E(F,T)):g.push([F,T])}return g}function k(C){switch(C){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":return 0;case"float":return 0;default:var M=C.indexOf("vec");if(0<=M&&M<=1&&C.length===4+M){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new l("","Invalid data type");return C.charAt(0)==="b"?c(g,!1):c(g,0)}else if(C.indexOf("mat")===0&&C.length===4){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+C);return c(g*g,0)}else throw new l("","Unknown uniform data type for "+name+": "+C)}}function A(C,M,g){if(typeof g=="object"){var P=L(g);Object.defineProperty(C,M,{get:u(P),set:p(g),enumerable:!0,configurable:!1})}else x[g]?Object.defineProperty(C,M,{get:b(g),set:p(g),enumerable:!0,configurable:!1}):C[M]=k(v[g].type)}function L(C){var M;if(Array.isArray(C)){M=new Array(C.length);for(var g=0;g1){v[0]in h||(h[v[0]]=[]),h=h[v[0]];for(var x=1;x1)for(var E=0;E0)for(var ie=0;ieL)return C-1}return C},d=function(A,L,_){return A_?_:A},v=function(A,L,_){var C=L.vectors,M=L.meshgrid,p=A[0],P=A[1],T=A[2],F=M[0].length,q=M[1].length,V=M[2].length,H=h(M[0],p),X=h(M[1],P),G=h(M[2],T),N=H+1,W=X+1,re=G+1;if(H=d(H,0,F-1),N=d(N,0,F-1),X=d(X,0,q-1),W=d(W,0,q-1),G=d(G,0,V-1),re=d(re,0,V-1),H<0||X<0||G<0||N>F-1||W>q-1||re>V-1)return s.create();var ae=M[0][H],_e=M[0][N],Me=M[1][X],ke=M[1][W],ge=M[2][G],ie=M[2][re],Te=(p-ae)/(_e-ae),Ee=(P-Me)/(ke-Me),Ae=(T-ge)/(ie-ge);isFinite(Te)||(Te=.5),isFinite(Ee)||(Ee=.5),isFinite(Ae)||(Ae=.5);var ze,Ce,me,Re,ce,Ge;switch(_.reversedX&&(H=F-1-H,N=F-1-N),_.reversedY&&(X=q-1-X,W=q-1-W),_.reversedZ&&(G=V-1-G,re=V-1-re),_.filled){case 5:ce=G,Ge=re,me=X*V,Re=W*V,ze=H*V*q,Ce=N*V*q;break;case 4:ce=G,Ge=re,ze=H*V,Ce=N*V,me=X*V*F,Re=W*V*F;break;case 3:me=X,Re=W,ce=G*q,Ge=re*q,ze=H*q*V,Ce=N*q*V;break;case 2:me=X,Re=W,ze=H*q,Ce=N*q,ce=G*q*F,Ge=re*q*F;break;case 1:ze=H,Ce=N,ce=G*F,Ge=re*F,me=X*F*V,Re=W*F*V;break;default:ze=H,Ce=N,me=X*F,Re=W*F,ce=G*F*q,Ge=re*F*q;break}var nt=C[ze+me+ce],ct=C[ze+me+Ge],qt=C[ze+Re+ce],rt=C[ze+Re+Ge],ot=C[Ce+me+ce],Rt=C[Ce+me+Ge],kt=C[Ce+Re+ce],Ct=C[Ce+Re+Ge],Yt=s.create(),xr=s.create(),er=s.create(),Ke=s.create();s.lerp(Yt,nt,ot,Te),s.lerp(xr,ct,Rt,Te),s.lerp(er,qt,kt,Te),s.lerp(Ke,rt,Ct,Te);var xt=s.create(),bt=s.create();s.lerp(xt,Yt,er,Ee),s.lerp(bt,xr,Ke,Ee);var Lt=s.create();return s.lerp(Lt,xt,bt,Ae),Lt},x=function(A,L){var _=L[0],C=L[1],M=L[2];return A[0]=_<0?-_:_,A[1]=C<0?-C:C,A[2]=M<0?-M:M,A},b=function(A){var L=1/0;A.sort(function(p,P){return p-P});for(var _=A.length,C=1;C<_;C++){var M=Math.abs(A[C]-A[C-1]);MN||CtW||Ytre)},_e=s.distance(L[0],L[1]),Me=10*_e/C,ke=Me*Me,ge=1,ie=0,Te=_.length;Te>1&&(ge=g(_));for(var Ee=0;Eeie&&(ie=nt),ce.push(nt),V.push({points:ze,velocities:Ce,divergences:ce});for(var ct=0;ctke&&s.scale(qt,qt,Me/Math.sqrt(rt)),s.add(qt,qt,Ae),me=F(qt),s.squaredDistance(Re,qt)-ke>-1e-4*ke){ze.push(qt),Re=qt,Ce.push(me);var Ge=q(qt,me),nt=s.length(Ge);isFinite(nt)&&nt>ie&&(ie=nt),ce.push(nt)}Ae=qt}}var ot=f(V,A.colormap,ie,ge);return p?ot.tubeScale=p:(ie===0&&(ie=1),ot.tubeScale=M*.5*ge/ie),ot};var E=o(6740),k=o(6405).createMesh;i.exports.createTubeMesh=function(A,L){return k(A,L,{shaders:E,traceType:"streamtube"})}},990:function(i,a,o){var s=o(9405),l=o(3236),u=l([`precision highp float; +}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},7815:function(i,a,o){"use strict";var s=o(2931),l=o(9970),u=["xyz","xzy","yxz","yzx","zxy","zyx"],c=function(A,L,_,C){for(var M=A.points,g=A.velocities,P=A.divergences,T=[],F=[],q=[],V=[],H=[],X=[],G=0,N=0,W=l.create(),re=l.create(),ae=8,_e=0;_e0)for(var ie=0;ieL)return C-1}return C},d=function(A,L,_){return A_?_:A},v=function(A,L,_){var C=L.vectors,M=L.meshgrid,g=A[0],P=A[1],T=A[2],F=M[0].length,q=M[1].length,V=M[2].length,H=h(M[0],g),X=h(M[1],P),G=h(M[2],T),N=H+1,W=X+1,re=G+1;if(H=d(H,0,F-1),N=d(N,0,F-1),X=d(X,0,q-1),W=d(W,0,q-1),G=d(G,0,V-1),re=d(re,0,V-1),H<0||X<0||G<0||N>F-1||W>q-1||re>V-1)return s.create();var ae=M[0][H],_e=M[0][N],Me=M[1][X],ke=M[1][W],ge=M[2][G],ie=M[2][re],Te=(g-ae)/(_e-ae),Ee=(P-Me)/(ke-Me),Ae=(T-ge)/(ie-ge);isFinite(Te)||(Te=.5),isFinite(Ee)||(Ee=.5),isFinite(Ae)||(Ae=.5);var ze,Ce,me,Re,ce,Ge;switch(_.reversedX&&(H=F-1-H,N=F-1-N),_.reversedY&&(X=q-1-X,W=q-1-W),_.reversedZ&&(G=V-1-G,re=V-1-re),_.filled){case 5:ce=G,Ge=re,me=X*V,Re=W*V,ze=H*V*q,Ce=N*V*q;break;case 4:ce=G,Ge=re,ze=H*V,Ce=N*V,me=X*V*F,Re=W*V*F;break;case 3:me=X,Re=W,ce=G*q,Ge=re*q,ze=H*q*V,Ce=N*q*V;break;case 2:me=X,Re=W,ze=H*q,Ce=N*q,ce=G*q*F,Ge=re*q*F;break;case 1:ze=H,Ce=N,ce=G*F,Ge=re*F,me=X*F*V,Re=W*F*V;break;default:ze=H,Ce=N,me=X*F,Re=W*F,ce=G*F*q,Ge=re*F*q;break}var nt=C[ze+me+ce],ct=C[ze+me+Ge],qt=C[ze+Re+ce],rt=C[ze+Re+Ge],ot=C[Ce+me+ce],Rt=C[Ce+me+Ge],kt=C[Ce+Re+ce],Ct=C[Ce+Re+Ge],Yt=s.create(),xr=s.create(),er=s.create(),Ke=s.create();s.lerp(Yt,nt,ot,Te),s.lerp(xr,ct,Rt,Te),s.lerp(er,qt,kt,Te),s.lerp(Ke,rt,Ct,Te);var xt=s.create(),bt=s.create();s.lerp(xt,Yt,er,Ee),s.lerp(bt,xr,Ke,Ee);var Lt=s.create();return s.lerp(Lt,xt,bt,Ae),Lt},x=function(A,L){var _=L[0],C=L[1],M=L[2];return A[0]=_<0?-_:_,A[1]=C<0?-C:C,A[2]=M<0?-M:M,A},b=function(A){var L=1/0;A.sort(function(g,P){return g-P});for(var _=A.length,C=1;C<_;C++){var M=Math.abs(A[C]-A[C-1]);MN||CtW||Ytre)},_e=s.distance(L[0],L[1]),Me=10*_e/C,ke=Me*Me,ge=1,ie=0,Te=_.length;Te>1&&(ge=p(_));for(var Ee=0;Eeie&&(ie=nt),ce.push(nt),V.push({points:ze,velocities:Ce,divergences:ce});for(var ct=0;ctke&&s.scale(qt,qt,Me/Math.sqrt(rt)),s.add(qt,qt,Ae),me=F(qt),s.squaredDistance(Re,qt)-ke>-1e-4*ke){ze.push(qt),Re=qt,Ce.push(me);var Ge=q(qt,me),nt=s.length(Ge);isFinite(nt)&&nt>ie&&(ie=nt),ce.push(nt)}Ae=qt}}var ot=f(V,A.colormap,ie,ge);return g?ot.tubeScale=g:(ie===0&&(ie=1),ot.tubeScale=M*.5*ge/ie),ot};var E=o(6740),k=o(6405).createMesh;i.exports.createTubeMesh=function(A,L){return k(A,L,{shaders:E,traceType:"streamtube"})}},990:function(i,a,o){var s=o(9405),l=o(3236),u=l([`precision highp float; #define GLSLIFY 1 attribute vec4 uv; @@ -1999,15 +1999,15 @@ void main() { vec2 uy = splitFloat(planeCoordinate.y / shape.y); gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0)); } -`]);a.createShader=function(d){var v=s(d,u,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},a.createPickShader=function(d){var v=s(d,u,h,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},a.createContourShader=function(d){var v=s(d,f,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v},a.createPickContourShader=function(d){var v=s(d,f,h,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v}},9499:function(i,a,o){"use strict";i.exports=ze;var s=o(8828),l=o(2762),u=o(8116),c=o(7766),f=o(1888),h=o(6729),d=o(5298),v=o(9994),x=o(9618),b=o(3711),g=o(6760),E=o(7608),k=o(2478),A=o(6199),L=o(990),_=L.createShader,C=L.createContourShader,M=L.createPickShader,p=L.createPickContourShader,P=4*10,T=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],F=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],q=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];(function(){for(var Ce=0;Ce<3;++Ce){var me=q[Ce],Re=(Ce+1)%3,ce=(Ce+2)%3;me[Re+0]=1,me[ce+3]=1,me[Ce+6]=1}})();function V(Ce,me,Re,ce,Ge){this.position=Ce,this.index=me,this.uv=Re,this.level=ce,this.dataCoordinate=Ge}var H=256;function X(Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot,Rt,kt,Ct,Yt,xr){this.gl=Ce,this.shape=me,this.bounds=Re,this.objectOffset=xr,this.intensityBounds=[],this._shader=ce,this._pickShader=Ge,this._coordinateBuffer=nt,this._vao=ct,this._colorMap=qt,this._contourShader=rt,this._contourPickShader=ot,this._contourBuffer=Rt,this._contourVAO=kt,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new V([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=Ct,this._dynamicVAO=Yt,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[x(f.mallocFloat(1024),[0,0]),x(f.mallocFloat(1024),[0,0]),x(f.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var G=X.prototype;G.genColormap=function(Ce,me){var Re=!1,ce=v([h({colormap:Ce,nshades:H,format:"rgba"}).map(function(Ge,nt){var ct=me?N(nt/255,me):Ge[3];return ct<1&&(Re=!0),[Ge[0],Ge[1],Ge[2],255*ct]})]);return d.divseq(ce,255),this.hasAlphaScale=Re,ce},G.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},G.isOpaque=function(){return!this.isTransparent()},G.pickSlots=1,G.setPickBase=function(Ce){this.pickId=Ce};function N(Ce,me){if(!me||!me.length)return 1;for(var Re=0;ReCe&&Re>0){var ce=(me[Re][0]-Ce)/(me[Re][0]-me[Re-1][0]);return me[Re][1]*(1-ce)+ce*me[Re-1][1]}}return 1}var W=[0,0,0],re={showSurface:!1,showContour:!1,projections:[T.slice(),T.slice(),T.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function ae(Ce,me){var Re,ce,Ge,nt=me.axes&&me.axes.lastCubeProps.axis||W,ct=me.showSurface,qt=me.showContour;for(Re=0;Re<3;++Re)for(ct=ct||me.surfaceProject[Re],ce=0;ce<3;++ce)qt=qt||me.contourProject[Re][ce];for(Re=0;Re<3;++Re){var rt=re.projections[Re];for(ce=0;ce<16;++ce)rt[ce]=0;for(ce=0;ce<4;++ce)rt[5*ce]=1;rt[5*Re]=0,rt[12+Re]=me.axesBounds[+(nt[Re]>0)][Re],g(rt,Ce.model,rt);var ot=re.clipBounds[Re];for(Ge=0;Ge<2;++Ge)for(ce=0;ce<3;++ce)ot[Ge][ce]=Ce.clipBounds[Ge][ce];ot[0][Re]=-1e8,ot[1][Re]=1e8}return re.showSurface=ct,re.showContour=qt,re}var _e={model:T,view:T,projection:T,inverseModel:T.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},Me=T.slice(),ke=[1,0,0,0,1,0,0,0,1];function ge(Ce,me){Ce=Ce||{};var Re=this.gl;Re.disable(Re.CULL_FACE),this._colorMap.bind(0);var ce=_e;ce.model=Ce.model||T,ce.view=Ce.view||T,ce.projection=Ce.projection||T,ce.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],ce.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],ce.objectOffset=this.objectOffset,ce.contourColor=this.contourColor[0],ce.inverseModel=E(ce.inverseModel,ce.model);for(var Ge=0;Ge<2;++Ge)for(var nt=ce.clipBounds[Ge],ct=0;ct<3;++ct)nt[ct]=Math.min(Math.max(this.clipBounds[Ge][ct],-1e8),1e8);ce.kambient=this.ambientLight,ce.kdiffuse=this.diffuseLight,ce.kspecular=this.specularLight,ce.roughness=this.roughness,ce.fresnel=this.fresnel,ce.opacity=this.opacity,ce.height=0,ce.permutation=ke,ce.vertexColor=this.vertexColor;var qt=Me;for(g(qt,ce.view,ce.model),g(qt,ce.projection,qt),E(qt,qt),Ge=0;Ge<3;++Ge)ce.eyePosition[Ge]=qt[12+Ge]/qt[15];var rt=qt[15];for(Ge=0;Ge<3;++Ge)rt+=this.lightPosition[Ge]*qt[4*Ge+3];for(Ge=0;Ge<3;++Ge){var ot=qt[12+Ge];for(ct=0;ct<3;++ct)ot+=qt[4*ct+Ge]*this.lightPosition[ct];ce.lightPosition[Ge]=ot/rt}var Rt=ae(ce,this);if(Rt.showSurface){for(this._shader.bind(),this._shader.uniforms=ce,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(Re.TRIANGLES,this._vertexCount),Ge=0;Ge<3;++Ge)!this.surfaceProject[Ge]||!this.vertexCount||(this._shader.uniforms.model=Rt.projections[Ge],this._shader.uniforms.clipBounds=Rt.clipBounds[Ge],this._vao.draw(Re.TRIANGLES,this._vertexCount));this._vao.unbind()}if(Rt.showContour){var kt=this._contourShader;ce.kambient=1,ce.kdiffuse=0,ce.kspecular=0,ce.opacity=1,kt.bind(),kt.uniforms=ce;var Ct=this._contourVAO;for(Ct.bind(),Ge=0;Ge<3;++Ge)for(kt.uniforms.permutation=q[Ge],Re.lineWidth(this.contourWidth[Ge]*this.pixelRatio),ct=0;ct>4)/16)/255,Ge=Math.floor(ce),nt=ce-Ge,ct=me[1]*(Ce.value[1]+(Ce.value[2]&15)/16)/255,qt=Math.floor(ct),rt=ct-qt;Ge+=1,qt+=1;var ot=Re.position;ot[0]=ot[1]=ot[2]=0;for(var Rt=0;Rt<2;++Rt)for(var kt=Rt?nt:1-nt,Ct=0;Ct<2;++Ct)for(var Yt=Ct?rt:1-rt,xr=Ge+Rt,er=qt+Ct,Ke=kt*Yt,xt=0;xt<3;++xt)ot[xt]+=this._field[xt].get(xr,er)*Ke;for(var bt=this._pickResult.level,Lt=0;Lt<3;++Lt)if(bt[Lt]=k.le(this.contourLevels[Lt],ot[Lt]),bt[Lt]<0)this.contourLevels[Lt].length>0&&(bt[Lt]=0);else if(bt[Lt]Math.abs(Et-ot[Lt])&&(bt[Lt]+=1)}for(Re.index[0]=nt<.5?Ge:Ge+1,Re.index[1]=rt<.5?qt:qt+1,Re.uv[0]=ce/me[0],Re.uv[1]=ct/me[1],xt=0;xt<3;++xt)Re.dataCoordinate[xt]=this._field[xt].get(Re.index[0],Re.index[1]);return Re},G.padField=function(Ce,me){var Re=me.shape.slice(),ce=Ce.shape.slice();d.assign(Ce.lo(1,1).hi(Re[0],Re[1]),me),d.assign(Ce.lo(1).hi(Re[0],1),me.hi(Re[0],1)),d.assign(Ce.lo(1,ce[1]-1).hi(Re[0],1),me.lo(0,Re[1]-1).hi(Re[0],1)),d.assign(Ce.lo(0,1).hi(1,Re[1]),me.hi(1)),d.assign(Ce.lo(ce[0]-1,1).hi(1,Re[1]),me.lo(Re[0]-1)),Ce.set(0,0,me.get(0,0)),Ce.set(0,ce[1]-1,me.get(0,Re[1]-1)),Ce.set(ce[0]-1,0,me.get(Re[0]-1,0)),Ce.set(ce[0]-1,ce[1]-1,me.get(Re[0]-1,Re[1]-1))};function Te(Ce,me){return Array.isArray(Ce)?[me(Ce[0]),me(Ce[1]),me(Ce[2])]:[me(Ce),me(Ce),me(Ce)]}function Ee(Ce){return Array.isArray(Ce)?Ce.length===3?[Ce[0],Ce[1],Ce[2],1]:[Ce[0],Ce[1],Ce[2],Ce[3]]:[0,0,0,1]}function Ae(Ce){if(Array.isArray(Ce)){if(Array.isArray(Ce))return[Ee(Ce[0]),Ee(Ce[1]),Ee(Ce[2])];var me=Ee(Ce);return[me.slice(),me.slice(),me.slice()]}}G.update=function(Ce){Ce=Ce||{},this.objectOffset=Ce.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in Ce&&(this.contourWidth=Te(Ce.contourWidth,Number)),"showContour"in Ce&&(this.showContour=Te(Ce.showContour,Boolean)),"showSurface"in Ce&&(this.showSurface=!!Ce.showSurface),"contourTint"in Ce&&(this.contourTint=Te(Ce.contourTint,Boolean)),"contourColor"in Ce&&(this.contourColor=Ae(Ce.contourColor)),"contourProject"in Ce&&(this.contourProject=Te(Ce.contourProject,function(Gi){return Te(Gi,Boolean)})),"surfaceProject"in Ce&&(this.surfaceProject=Ce.surfaceProject),"dynamicColor"in Ce&&(this.dynamicColor=Ae(Ce.dynamicColor)),"dynamicTint"in Ce&&(this.dynamicTint=Te(Ce.dynamicTint,Number)),"dynamicWidth"in Ce&&(this.dynamicWidth=Te(Ce.dynamicWidth,Number)),"opacity"in Ce&&(this.opacity=Ce.opacity),"opacityscale"in Ce&&(this.opacityscale=Ce.opacityscale),"colorBounds"in Ce&&(this.colorBounds=Ce.colorBounds),"vertexColor"in Ce&&(this.vertexColor=Ce.vertexColor?1:0),"colormap"in Ce&&this._colorMap.setPixels(this.genColormap(Ce.colormap,this.opacityscale));var me=Ce.field||Ce.coords&&Ce.coords[2]||null,Re=!1;if(me||(this._field[2].shape[0]||this._field[2].shape[2]?me=this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):me=this._field[2].hi(0,0)),"field"in Ce||"coords"in Ce){var ce=(me.shape[0]+2)*(me.shape[1]+2);ce>this._field[2].data.length&&(f.freeFloat(this._field[2].data),this._field[2].data=f.mallocFloat(s.nextPow2(ce))),this._field[2]=x(this._field[2].data,[me.shape[0]+2,me.shape[1]+2]),this.padField(this._field[2],me),this.shape=me.shape.slice();for(var Ge=this.shape,nt=0;nt<2;++nt)this._field[2].size>this._field[nt].data.length&&(f.freeFloat(this._field[nt].data),this._field[nt].data=f.mallocFloat(this._field[2].size)),this._field[nt]=x(this._field[nt].data,[Ge[0]+2,Ge[1]+2]);if(Ce.coords){var ct=Ce.coords;if(!Array.isArray(ct)||ct.length!==3)throw new Error("gl-surface: invalid coordinates for x/y");for(nt=0;nt<2;++nt){var qt=ct[nt];for(Ct=0;Ct<2;++Ct)if(qt.shape[Ct]!==Ge[Ct])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[nt],qt)}}else if(Ce.ticks){var rt=Ce.ticks;if(!Array.isArray(rt)||rt.length!==2)throw new Error("gl-surface: invalid ticks");for(nt=0;nt<2;++nt){var ot=rt[nt];if((Array.isArray(ot)||ot.length)&&(ot=x(ot)),ot.shape[0]!==Ge[nt])throw new Error("gl-surface: invalid tick length");var Rt=x(ot.data,Ge);Rt.stride[nt]=ot.stride[0],Rt.stride[nt^1]=0,this.padField(this._field[nt],Rt)}}else{for(nt=0;nt<2;++nt){var kt=[0,0];kt[nt]=1,this._field[nt]=x(this._field[nt].data,[Ge[0]+2,Ge[1]+2],kt,0)}this._field[0].set(0,0,0);for(var Ct=0;Ct0){for(var Mi=0;Mi<5;++Mi)ai.pop();Ve-=1}continue e}}}nn.push(Ve)}this._contourOffsets[jr]=bi,this._contourCounts[jr]=nn}var Pi=f.mallocFloat(ai.length);for(nt=0;ntV||F<0||F>V)throw new Error("gl-texture2d: Invalid texture size");return P._shape=[T,F],P.bind(),q.texImage2D(q.TEXTURE_2D,0,P.format,T,F,0,P.format,P.type,null),P._mipLevels=[0],P}function g(P,T,F,q,V,H){this.gl=P,this.handle=T,this.format=V,this.type=H,this._shape=[F,q],this._mipLevels=[0],this._magFilter=P.NEAREST,this._minFilter=P.NEAREST,this._wrapS=P.CLAMP_TO_EDGE,this._wrapT=P.CLAMP_TO_EDGE,this._anisoSamples=1;var X=this,G=[this._wrapS,this._wrapT];Object.defineProperties(G,[{get:function(){return X._wrapS},set:function(W){return X.wrapS=W}},{get:function(){return X._wrapT},set:function(W){return X.wrapT=W}}]),this._wrapVector=G;var N=[this._shape[0],this._shape[1]];Object.defineProperties(N,[{get:function(){return X._shape[0]},set:function(W){return X.width=W}},{get:function(){return X._shape[1]},set:function(W){return X.height=W}}]),this._shapeVector=N}var E=g.prototype;Object.defineProperties(E,{minFilter:{get:function(){return this._minFilter},set:function(P){this.bind();var T=this.gl;if(this.type===T.FLOAT&&c.indexOf(P)>=0&&(T.getExtension("OES_texture_float_linear")||(P=T.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return T.texParameteri(T.TEXTURE_2D,T.TEXTURE_MIN_FILTER,P),this._minFilter=P}},magFilter:{get:function(){return this._magFilter},set:function(P){this.bind();var T=this.gl;if(this.type===T.FLOAT&&c.indexOf(P)>=0&&(T.getExtension("OES_texture_float_linear")||(P=T.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return T.texParameteri(T.TEXTURE_2D,T.TEXTURE_MAG_FILTER,P),this._magFilter=P}},mipSamples:{get:function(){return this._anisoSamples},set:function(P){var T=this._anisoSamples;if(this._anisoSamples=Math.max(P,1)|0,T!==this._anisoSamples){var F=this.gl.getExtension("EXT_texture_filter_anisotropic");F&&this.gl.texParameterf(this.gl.TEXTURE_2D,F.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,P),this._wrapS=P}},wrapT:{get:function(){return this._wrapT},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,P),this._wrapT=P}},wrap:{get:function(){return this._wrapVector},set:function(P){if(Array.isArray(P)||(P=[P,P]),P.length!==2)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var T=0;T<2;++T)if(h.indexOf(P[T])<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);this._wrapS=P[0],this._wrapT=P[1];var F=this.gl;return this.bind(),F.texParameteri(F.TEXTURE_2D,F.TEXTURE_WRAP_S,this._wrapS),F.texParameteri(F.TEXTURE_2D,F.TEXTURE_WRAP_T,this._wrapT),P}},shape:{get:function(){return this._shapeVector},set:function(P){if(!Array.isArray(P))P=[P|0,P|0];else if(P.length!==2)throw new Error("gl-texture2d: Invalid texture shape");return b(this,P[0]|0,P[1]|0),[P[0]|0,P[1]|0]}},width:{get:function(){return this._shape[0]},set:function(P){return P=P|0,b(this,P,this._shape[1]),P}},height:{get:function(){return this._shape[1]},set:function(P){return P=P|0,b(this,this._shape[0],P),P}}}),E.bind=function(P){var T=this.gl;return P!==void 0&&T.activeTexture(T.TEXTURE0+(P|0)),T.bindTexture(T.TEXTURE_2D,this.handle),P!==void 0?P|0:T.getParameter(T.ACTIVE_TEXTURE)-T.TEXTURE0},E.dispose=function(){this.gl.deleteTexture(this.handle)},E.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var P=Math.min(this._shape[0],this._shape[1]),T=0;P>0;++T,P>>>=1)this._mipLevels.indexOf(T)<0&&this._mipLevels.push(T)},E.setPixels=function(P,T,F,q){var V=this.gl;this.bind(),Array.isArray(T)?(q=F,F=T[1]|0,T=T[0]|0):(T=T||0,F=F||0),q=q||0;var H=v(P)?P:P.raw;if(H){var X=this._mipLevels.indexOf(q)<0;X?(V.texImage2D(V.TEXTURE_2D,0,this.format,this.format,this.type,H),this._mipLevels.push(q)):V.texSubImage2D(V.TEXTURE_2D,q,T,F,this.format,this.type,H)}else if(P.shape&&P.stride&&P.data){if(P.shape.length<2||T+P.shape[1]>this._shape[1]>>>q||F+P.shape[0]>this._shape[0]>>>q||T<0||F<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");A(V,T,F,q,this.format,this.type,this._mipLevels,P)}else throw new Error("gl-texture2d: Unsupported data type")};function k(P,T){return P.length===3?T[2]===1&&T[1]===P[0]*P[2]&&T[0]===P[2]:T[0]===1&&T[1]===P[0]}function A(P,T,F,q,V,H,X,G){var N=G.dtype,W=G.shape.slice();if(W.length<2||W.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var re=0,ae=0,_e=k(W,G.stride.slice());N==="float32"?re=P.FLOAT:N==="float64"?(re=P.FLOAT,_e=!1,N="float32"):N==="uint8"?re=P.UNSIGNED_BYTE:(re=P.UNSIGNED_BYTE,_e=!1,N="uint8");var Me=1;if(W.length===2)ae=P.LUMINANCE,W=[W[0],W[1],1],G=s(G.data,W,[G.stride[0],G.stride[1],1],G.offset);else if(W.length===3){if(W[2]===1)ae=P.ALPHA;else if(W[2]===2)ae=P.LUMINANCE_ALPHA;else if(W[2]===3)ae=P.RGB;else if(W[2]===4)ae=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");Me=W[2]}else throw new Error("gl-texture2d: Invalid shape for texture");if((ae===P.LUMINANCE||ae===P.ALPHA)&&(V===P.LUMINANCE||V===P.ALPHA)&&(ae=V),ae!==V)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var ke=G.size,ge=X.indexOf(q)<0;if(ge&&X.push(q),re===H&&_e)G.offset===0&&G.data.length===ke?ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,G.data):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,G.data):ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,G.data.subarray(G.offset,G.offset+ke)):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,G.data.subarray(G.offset,G.offset+ke));else{var ie;H===P.FLOAT?ie=u.mallocFloat32(ke):ie=u.mallocUint8(ke);var Te=s(ie,W,[W[2],W[2]*W[0],1]);re===P.FLOAT&&H===P.UNSIGNED_BYTE?x(Te,G):l.assign(Te,G),ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,ie.subarray(0,ke)):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,ie.subarray(0,ke)),H===P.FLOAT?u.freeFloat32(ie):u.freeUint8(ie)}}function L(P){var T=P.createTexture();return P.bindTexture(P.TEXTURE_2D,T),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MIN_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MAG_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_S,P.CLAMP_TO_EDGE),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_T,P.CLAMP_TO_EDGE),T}function _(P,T,F,q,V){var H=P.getParameter(P.MAX_TEXTURE_SIZE);if(T<0||T>H||F<0||F>H)throw new Error("gl-texture2d: Invalid texture shape");if(V===P.FLOAT&&!P.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var X=L(P);return P.texImage2D(P.TEXTURE_2D,0,q,T,F,0,q,V,null),new g(P,X,T,F,q,V)}function C(P,T,F,q,V,H){var X=L(P);return P.texImage2D(P.TEXTURE_2D,0,V,V,H,T),new g(P,X,F,q,V,H)}function M(P,T){var F=T.dtype,q=T.shape.slice(),V=P.getParameter(P.MAX_TEXTURE_SIZE);if(q[0]<0||q[0]>V||q[1]<0||q[1]>V)throw new Error("gl-texture2d: Invalid texture size");var H=k(q,T.stride.slice()),X=0;F==="float32"?X=P.FLOAT:F==="float64"?(X=P.FLOAT,H=!1,F="float32"):F==="uint8"?X=P.UNSIGNED_BYTE:(X=P.UNSIGNED_BYTE,H=!1,F="uint8");var G=0;if(q.length===2)G=P.LUMINANCE,q=[q[0],q[1],1],T=s(T.data,q,[T.stride[0],T.stride[1],1],T.offset);else if(q.length===3)if(q[2]===1)G=P.ALPHA;else if(q[2]===2)G=P.LUMINANCE_ALPHA;else if(q[2]===3)G=P.RGB;else if(q[2]===4)G=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");else throw new Error("gl-texture2d: Invalid shape for texture");X===P.FLOAT&&!P.getExtension("OES_texture_float")&&(X=P.UNSIGNED_BYTE,H=!1);var N,W,re=T.size;if(H)T.offset===0&&T.data.length===re?N=T.data:N=T.data.subarray(T.offset,T.offset+re);else{var ae=[q[2],q[2]*q[0],1];W=u.malloc(re,F);var _e=s(W,q,ae,0);(F==="float32"||F==="float64")&&X===P.UNSIGNED_BYTE?x(_e,T):l.assign(_e,T),N=W.subarray(0,re)}var Me=L(P);return P.texImage2D(P.TEXTURE_2D,0,G,q[0],q[1],0,G,X,N),H||u.free(W),new g(P,Me,q[0],q[1],G,X)}function p(P){if(arguments.length<=1)throw new Error("gl-texture2d: Missing arguments for texture2d constructor");if(c||d(P),typeof arguments[1]=="number")return _(P,arguments[1],arguments[2],arguments[3]||P.RGBA,arguments[4]||P.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return _(P,arguments[1][0]|0,arguments[1][1]|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(typeof arguments[1]=="object"){var T=arguments[1],F=v(T)?T:T.raw;if(F)return C(P,F,T.width|0,T.height|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(T.shape&&T.data&&T.stride)return M(P,T)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")}},1433:function(i){"use strict";function a(o,s,l){s?s.bind():o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,null);var u=o.getParameter(o.MAX_VERTEX_ATTRIBS)|0;if(l){if(l.length>u)throw new Error("gl-vao: Too many vertex attributes");for(var c=0;c1?0:Math.acos(x)}},9226:function(i){i.exports=a;function a(o,s){return o[0]=Math.ceil(s[0]),o[1]=Math.ceil(s[1]),o[2]=Math.ceil(s[2]),o}},3126:function(i){i.exports=a;function a(o){var s=new Float32Array(3);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s}},3990:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o}},1091:function(i){i.exports=a;function a(){var o=new Float32Array(3);return o[0]=0,o[1]=0,o[2]=0,o}},5911:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2];return o[0]=c*v-f*d,o[1]=f*h-u*v,o[2]=u*d-c*h,o}},5455:function(i,a,o){i.exports=o(7056)},7056:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return Math.sqrt(l*l+u*u+c*c)}},4008:function(i,a,o){i.exports=o(6690)},6690:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o}},244:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]}},2613:function(i){i.exports=1e-6},9922:function(i,a,o){i.exports=l;var s=o(2613);function l(u,c){var f=u[0],h=u[1],d=u[2],v=c[0],x=c[1],b=c[2];return Math.abs(f-v)<=s*Math.max(1,Math.abs(f),Math.abs(v))&&Math.abs(h-x)<=s*Math.max(1,Math.abs(h),Math.abs(x))&&Math.abs(d-b)<=s*Math.max(1,Math.abs(d),Math.abs(b))}},9265:function(i){i.exports=a;function a(o,s){return o[0]===s[0]&&o[1]===s[1]&&o[2]===s[2]}},2681:function(i){i.exports=a;function a(o,s){return o[0]=Math.floor(s[0]),o[1]=Math.floor(s[1]),o[2]=Math.floor(s[2]),o}},5137:function(i,a,o){i.exports=l;var s=o(1091)();function l(u,c,f,h,d,v){var x,b;for(c||(c=3),f||(f=0),h?b=Math.min(h*c+f,u.length):b=u.length,x=f;x0&&(f=1/Math.sqrt(f),o[0]=s[0]*f,o[1]=s[1]*f,o[2]=s[2]*f),o}},7636:function(i){i.exports=a;function a(o,s){s=s||1;var l=Math.random()*2*Math.PI,u=Math.random()*2-1,c=Math.sqrt(1-u*u)*s;return o[0]=Math.cos(l)*c,o[1]=Math.sin(l)*c,o[2]=u*s,o}},6894:function(i){i.exports=a;function a(o,s,l,u){var c=l[1],f=l[2],h=s[1]-c,d=s[2]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=s[0],o[1]=c+h*x-d*v,o[2]=f+h*v+d*x,o}},109:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[2],h=s[0]-c,d=s[2]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=c+d*v+h*x,o[1]=s[1],o[2]=f+d*x-h*v,o}},8692:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[1],h=s[0]-c,d=s[1]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=c+h*x-d*v,o[1]=f+h*v+d*x,o[2]=s[2],o}},2447:function(i){i.exports=a;function a(o,s){return o[0]=Math.round(s[0]),o[1]=Math.round(s[1]),o[2]=Math.round(s[2]),o}},6621:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o}},8489:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o}},1463:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s,o[1]=l,o[2]=u,o}},6141:function(i,a,o){i.exports=o(2953)},5486:function(i,a,o){i.exports=o(3066)},2953:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return l*l+u*u+c*c}},3066:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2];return s*s+l*l+u*u}},2229:function(i,a,o){i.exports=o(6843)},6843:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o}},492:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2];return o[0]=u*l[0]+c*l[3]+f*l[6],o[1]=u*l[1]+c*l[4]+f*l[7],o[2]=u*l[2]+c*l[5]+f*l[8],o}},5673:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[3]*u+l[7]*c+l[11]*f+l[15];return h=h||1,o[0]=(l[0]*u+l[4]*c+l[8]*f+l[12])/h,o[1]=(l[1]*u+l[5]*c+l[9]*f+l[13])/h,o[2]=(l[2]*u+l[6]*c+l[10]*f+l[14])/h,o}},264:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],x=l[3],b=x*u+d*f-v*c,g=x*c+v*u-h*f,E=x*f+h*c-d*u,k=-h*u-d*c-v*f;return o[0]=b*x+k*-h+g*-v-E*-d,o[1]=g*x+k*-d+E*-h-b*-v,o[2]=E*x+k*-v+b*-d-g*-h,o}},4361:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]+l[0],o[1]=s[1]+l[1],o[2]=s[2]+l[2],o[3]=s[3]+l[3],o}},2335:function(i){i.exports=a;function a(o){var s=new Float32Array(4);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s[3]=o[3],s}},2933:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o[3]=s[3],o}},7536:function(i){i.exports=a;function a(){var o=new Float32Array(4);return o[0]=0,o[1]=0,o[2]=0,o[3]=0,o}},4691:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return Math.sqrt(l*l+u*u+c*c+f*f)}},1373:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o[3]=s[3]/l[3],o}},3750:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]+o[3]*s[3]}},3390:function(i){i.exports=a;function a(o,s,l,u){var c=new Float32Array(4);return c[0]=o,c[1]=s,c[2]=l,c[3]=u,c}},9970:function(i,a,o){i.exports={create:o(7536),clone:o(2335),fromValues:o(3390),copy:o(2933),set:o(4578),add:o(4361),subtract:o(6860),multiply:o(3576),divide:o(1373),min:o(2334),max:o(160),scale:o(9288),scaleAndAdd:o(4844),distance:o(4691),squaredDistance:o(7960),length:o(6808),squaredLength:o(483),negate:o(1498),inverse:o(4494),normalize:o(5177),dot:o(3750),lerp:o(2573),random:o(9131),transformMat4:o(5352),transformQuat:o(4041)}},4494:function(i){i.exports=a;function a(o,s){return o[0]=1/s[0],o[1]=1/s[1],o[2]=1/s[2],o[3]=1/s[3],o}},6808:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return Math.sqrt(s*s+l*l+u*u+c*c)}},2573:function(i){i.exports=a;function a(o,s,l,u){var c=s[0],f=s[1],h=s[2],d=s[3];return o[0]=c+u*(l[0]-c),o[1]=f+u*(l[1]-f),o[2]=h+u*(l[2]-h),o[3]=d+u*(l[3]-d),o}},160:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.max(s[0],l[0]),o[1]=Math.max(s[1],l[1]),o[2]=Math.max(s[2],l[2]),o[3]=Math.max(s[3],l[3]),o}},2334:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.min(s[0],l[0]),o[1]=Math.min(s[1],l[1]),o[2]=Math.min(s[2],l[2]),o[3]=Math.min(s[3],l[3]),o}},3576:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l[0],o[1]=s[1]*l[1],o[2]=s[2]*l[2],o[3]=s[3]*l[3],o}},1498:function(i){i.exports=a;function a(o,s){return o[0]=-s[0],o[1]=-s[1],o[2]=-s[2],o[3]=-s[3],o}},5177:function(i){i.exports=a;function a(o,s){var l=s[0],u=s[1],c=s[2],f=s[3],h=l*l+u*u+c*c+f*f;return h>0&&(h=1/Math.sqrt(h),o[0]=l*h,o[1]=u*h,o[2]=c*h,o[3]=f*h),o}},9131:function(i,a,o){var s=o(5177),l=o(9288);i.exports=u;function u(c,f){return f=f||1,c[0]=Math.random(),c[1]=Math.random(),c[2]=Math.random(),c[3]=Math.random(),s(c,c),l(c,c,f),c}},9288:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o[3]=s[3]*l,o}},4844:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o[3]=s[3]+l[3]*u,o}},4578:function(i){i.exports=a;function a(o,s,l,u,c){return o[0]=s,o[1]=l,o[2]=u,o[3]=c,o}},7960:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return l*l+u*u+c*c+f*f}},483:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return s*s+l*l+u*u+c*c}},6860:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o[3]=s[3]-l[3],o}},5352:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=s[3];return o[0]=l[0]*u+l[4]*c+l[8]*f+l[12]*h,o[1]=l[1]*u+l[5]*c+l[9]*f+l[13]*h,o[2]=l[2]*u+l[6]*c+l[10]*f+l[14]*h,o[3]=l[3]*u+l[7]*c+l[11]*f+l[15]*h,o}},4041:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],x=l[3],b=x*u+d*f-v*c,g=x*c+v*u-h*f,E=x*f+h*c-d*u,k=-h*u-d*c-v*f;return o[0]=b*x+k*-h+g*-v-E*-d,o[1]=g*x+k*-d+E*-h-b*-v,o[2]=E*x+k*-v+b*-d-g*-h,o[3]=s[3],o}},1848:function(i,a,o){var s=o(4905),l=o(6468);i.exports=u;function u(c){for(var f=Array.isArray(c)?c:s(c),h=0;h0)continue;Lt=Ke.slice(0,1).join("")}return Re(Lt),ke+=Lt.length,N=N.slice(Lt.length),N.length}while(!0)}function Ct(){return/[^a-fA-F0-9]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function Yt(){return X==="."||/[eE]/.test(X)?(N.push(X),H=k,G=X,q+1):X==="x"&&N.length===1&&N[0]==="0"?(H=p,N.push(X),G=X,q+1):/[^\d]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function xr(){return X==="f"&&(N.push(X),G=X,q+=1),/[eE]/.test(X)||(X==="-"||X==="+")&&/[eE]/.test(G)?(N.push(X),G=X,q+1):/[^\d]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function er(){if(/[^\d\w_]/.test(X)){var Ke=N.join("");return me[Ke]?H=_:Ce[Ke]?H=L:H=A,Re(N.join("")),H=h,q}return N.push(X),G=X,q+1}}},3508:function(i,a,o){var s=o(6852);s=s.slice().filter(function(l){return!/^(gl\_|texture)/.test(l)}),i.exports=s.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},6852:function(i){i.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},7932:function(i,a,o){var s=o(620);i.exports=s.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},620:function(i){i.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},7827:function(i){i.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},4905:function(i,a,o){var s=o(5874);i.exports=l;function l(u,c){var f=s(c),h=[];return h=h.concat(f(u)),h=h.concat(f(null)),h}},3236:function(i){i.exports=function(a){typeof a=="string"&&(a=[a]);for(var o=[].slice.call(arguments,1),s=[],l=0;l>1,b=-7,g=l?c-1:0,E=l?-1:1,k=o[s+g];for(g+=E,f=k&(1<<-b)-1,k>>=-b,b+=d;b>0;f=f*256+o[s+g],g+=E,b-=8);for(h=f&(1<<-b)-1,f>>=-b,b+=u;b>0;h=h*256+o[s+g],g+=E,b-=8);if(f===0)f=1-x;else{if(f===v)return h?NaN:(k?-1:1)*(1/0);h=h+Math.pow(2,u),f=f-x}return(k?-1:1)*h*Math.pow(2,f-u)},a.write=function(o,s,l,u,c,f){var h,d,v,x=f*8-c-1,b=(1<>1,E=c===23?Math.pow(2,-24)-Math.pow(2,-77):0,k=u?0:f-1,A=u?1:-1,L=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(d=isNaN(s)?1:0,h=b):(h=Math.floor(Math.log(s)/Math.LN2),s*(v=Math.pow(2,-h))<1&&(h--,v*=2),h+g>=1?s+=E/v:s+=E*Math.pow(2,1-g),s*v>=2&&(h++,v/=2),h+g>=b?(d=0,h=b):h+g>=1?(d=(s*v-1)*Math.pow(2,c),h=h+g):(d=s*Math.pow(2,g-1)*Math.pow(2,c),h=0));c>=8;o[l+k]=d&255,k+=A,d/=256,c-=8);for(h=h<0;o[l+k]=h&255,k+=A,h/=256,x-=8);o[l+k-A]|=L*128}},8954:function(i,a,o){"use strict";i.exports=g;var s=o(3250),l=o(6803).Fw;function u(E,k,A){this.vertices=E,this.adjacent=k,this.boundary=A,this.lastVisited=-1}u.prototype.flip=function(){var E=this.vertices[0];this.vertices[0]=this.vertices[1],this.vertices[1]=E;var k=this.adjacent[0];this.adjacent[0]=this.adjacent[1],this.adjacent[1]=k};function c(E,k,A){this.vertices=E,this.cell=k,this.index=A}function f(E,k){return l(E.vertices,k.vertices)}function h(E){return function(){var k=this.tuple;return E.apply(this,k)}}function d(E){var k=s[E+1];return k||(k=s),h(k)}var v=[];function x(E,k,A){this.dimension=E,this.vertices=k,this.simplices=A,this.interior=A.filter(function(C){return!C.boundary}),this.tuple=new Array(E+1);for(var L=0;L<=E;++L)this.tuple[L]=this.vertices[L];var _=v[E];_||(_=v[E]=d(E)),this.orient=_}var b=x.prototype;b.handleBoundaryDegeneracy=function(E,k){var A=this.dimension,L=this.vertices.length-1,_=this.tuple,C=this.vertices,M=[E];for(E.lastVisited=-L;M.length>0;){E=M.pop();for(var p=E.adjacent,P=0;P<=A;++P){var T=p[P];if(!(!T.boundary||T.lastVisited<=-L)){for(var F=T.vertices,q=0;q<=A;++q){var V=F[q];V<0?_[q]=k:_[q]=C[V]}var H=this.orient();if(H>0)return T;T.lastVisited=-L,H===0&&M.push(T)}}}return null},b.walk=function(E,k){var A=this.vertices.length-1,L=this.dimension,_=this.vertices,C=this.tuple,M=k?this.interior.length*Math.random()|0:this.interior.length-1,p=this.interior[M];e:for(;!p.boundary;){for(var P=p.vertices,T=p.adjacent,F=0;F<=L;++F)C[F]=_[P[F]];p.lastVisited=A;for(var F=0;F<=L;++F){var q=T[F];if(!(q.lastVisited>=A)){var V=C[F];C[F]=E;var H=this.orient();if(C[F]=V,H<0){p=q;continue e}else q.boundary?q.lastVisited=-A:q.lastVisited=A}}return}return p},b.addPeaks=function(E,k){var A=this.vertices.length-1,L=this.dimension,_=this.vertices,C=this.tuple,M=this.interior,p=this.simplices,P=[k];k.lastVisited=A,k.vertices[k.vertices.indexOf(-1)]=A,k.boundary=!1,M.push(k);for(var T=[];P.length>0;){var k=P.pop(),F=k.vertices,q=k.adjacent,V=F.indexOf(A);if(!(V<0)){for(var H=0;H<=L;++H)if(H!==V){var X=q[H];if(!(!X.boundary||X.lastVisited>=A)){var G=X.vertices;if(X.lastVisited!==-A){for(var N=0,W=0;W<=L;++W)G[W]<0?(N=W,C[W]=E):C[W]=_[G[W]];var re=this.orient();if(re>0){G[N]=A,X.boundary=!1,M.push(X),P.push(X),X.lastVisited=A;continue}else X.lastVisited=-A}var ae=X.adjacent,_e=F.slice(),Me=q.slice(),ke=new u(_e,Me,!0);p.push(ke);var ge=ae.indexOf(k);if(!(ge<0)){ae[ge]=ke,Me[V]=X,_e[H]=-1,Me[H]=k,q[H]=ke,ke.flip();for(var W=0;W<=L;++W){var ie=_e[W];if(!(ie<0||ie===A)){for(var Te=new Array(L-1),Ee=0,Ae=0;Ae<=L;++Ae){var ze=_e[Ae];ze<0||Ae===W||(Te[Ee++]=ze)}T.push(new c(Te,ke,W))}}}}}}}T.sort(f);for(var H=0;H+1=0?M[P++]=p[F]:T=F&1;if(T===(E&1)){var q=M[0];M[0]=M[1],M[1]=q}k.push(M)}}return k};function g(E,k){var A=E.length;if(A===0)throw new Error("Must have at least d+1 points");var L=E[0].length;if(A<=L)throw new Error("Must input at least d+1 points");var _=E.slice(0,L+1),C=s.apply(void 0,_);if(C===0)throw new Error("Input not in general position");for(var M=new Array(L+1),p=0;p<=L;++p)M[p]=p;C<0&&(M[0]=1,M[1]=0);for(var P=new u(M,new Array(L+1),!1),T=P.adjacent,F=new Array(L+2),p=0;p<=L;++p){for(var q=M.slice(),V=0;V<=L;++V)V===p&&(q[V]=-1);var H=q[0];q[0]=q[1],q[1]=H;var X=new u(q,new Array(L+1),!0);T[p]=X,F[p]=X}F[L+1]=P;for(var p=0;p<=L;++p)for(var q=T[p].vertices,G=T[p].adjacent,V=0;V<=L;++V){var N=q[V];if(N<0){G[V]=P;continue}for(var W=0;W<=L;++W)T[W].vertices.indexOf(N)<0&&(G[V]=T[W])}for(var re=new x(L,_,F),ae=!!k,p=L+1;p3*(F+1)?x(this,T):this.left.insert(T):this.left=C([T]);else if(T[0]>this.mid)this.right?4*(this.right.count+1)>3*(F+1)?x(this,T):this.right.insert(T):this.right=C([T]);else{var q=s.ge(this.leftPoints,T,L),V=s.ge(this.rightPoints,T,_);this.leftPoints.splice(q,0,T),this.rightPoints.splice(V,0,T)}},h.remove=function(T){var F=this.count-this.leftPoints;if(T[1]3*(F-1))return b(this,T);var V=this.left.remove(T);return V===c?(this.left=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else if(T[0]>this.mid){if(!this.right)return l;var H=this.left?this.left.count:0;if(4*H>3*(F-1))return b(this,T);var V=this.right.remove(T);return V===c?(this.right=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else{if(this.count===1)return this.leftPoints[0]===T?c:l;if(this.leftPoints.length===1&&this.leftPoints[0]===T){if(this.left&&this.right){for(var X=this,G=this.left;G.right;)X=G,G=G.right;if(X===this)G.right=this.right;else{var N=this.left,V=this.right;X.count-=G.count,X.right=G.left,G.left=N,G.right=V}d(this,G),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?d(this,this.left):d(this,this.right);return u}for(var N=s.ge(this.leftPoints,T,L);N=0&&T[V][1]>=F;--V){var H=q(T[V]);if(H)return H}}function k(T,F){for(var q=0;qthis.mid){if(this.right){var q=this.right.queryPoint(T,F);if(q)return q}return E(this.rightPoints,T,F)}else return k(this.leftPoints,F)},h.queryInterval=function(T,F,q){if(Tthis.mid&&this.right){var V=this.right.queryInterval(T,F,q);if(V)return V}return Fthis.mid?E(this.rightPoints,T,q):k(this.leftPoints,q)};function A(T,F){return T-F}function L(T,F){var q=T[0]-F[0];return q||T[1]-F[1]}function _(T,F){var q=T[1]-F[1];return q||T[0]-F[0]}function C(T){if(T.length===0)return null;for(var F=[],q=0;q>1],H=[],X=[],G=[],q=0;q13)&&s!==32&&s!==133&&s!==160&&s!==5760&&s!==6158&&(s<8192||s>8205)&&s!==8232&&s!==8233&&s!==8239&&s!==8287&&s!==8288&&s!==12288&&s!==65279)return!1;return!0}},395:function(i){function a(o,s,l){return o*(1-l)+s*l}i.exports=a},2652:function(i,a,o){var s=o(4335),l=o(6864),u=o(1903),c=o(9921),f=o(7608),h=o(5665),d={length:o(1387),normalize:o(3536),dot:o(244),cross:o(5911)},v=l(),x=l(),b=[0,0,0,0],g=[[0,0,0],[0,0,0],[0,0,0]],E=[0,0,0];i.exports=function(C,M,p,P,T,F){if(M||(M=[0,0,0]),p||(p=[0,0,0]),P||(P=[0,0,0]),T||(T=[0,0,0,1]),F||(F=[0,0,0,1]),!s(v,C)||(u(x,v),x[3]=0,x[7]=0,x[11]=0,x[15]=1,Math.abs(c(x)<1e-8)))return!1;var q=v[3],V=v[7],H=v[11],X=v[12],G=v[13],N=v[14],W=v[15];if(q!==0||V!==0||H!==0){b[0]=q,b[1]=V,b[2]=H,b[3]=W;var re=f(x,x);if(!re)return!1;h(x,x),k(T,b,x)}else T[0]=T[1]=T[2]=0,T[3]=1;if(M[0]=X,M[1]=G,M[2]=N,A(g,v),p[0]=d.length(g[0]),d.normalize(g[0],g[0]),P[0]=d.dot(g[0],g[1]),L(g[1],g[1],g[0],1,-P[0]),p[1]=d.length(g[1]),d.normalize(g[1],g[1]),P[0]/=p[1],P[1]=d.dot(g[0],g[2]),L(g[2],g[2],g[0],1,-P[1]),P[2]=d.dot(g[1],g[2]),L(g[2],g[2],g[1],1,-P[2]),p[2]=d.length(g[2]),d.normalize(g[2],g[2]),P[1]/=p[2],P[2]/=p[2],d.cross(E,g[1],g[2]),d.dot(g[0],E)<0)for(var ae=0;ae<3;ae++)p[ae]*=-1,g[ae][0]*=-1,g[ae][1]*=-1,g[ae][2]*=-1;return F[0]=.5*Math.sqrt(Math.max(1+g[0][0]-g[1][1]-g[2][2],0)),F[1]=.5*Math.sqrt(Math.max(1-g[0][0]+g[1][1]-g[2][2],0)),F[2]=.5*Math.sqrt(Math.max(1-g[0][0]-g[1][1]+g[2][2],0)),F[3]=.5*Math.sqrt(Math.max(1+g[0][0]+g[1][1]+g[2][2],0)),g[2][1]>g[1][2]&&(F[0]=-F[0]),g[0][2]>g[2][0]&&(F[1]=-F[1]),g[1][0]>g[0][1]&&(F[2]=-F[2]),!0};function k(_,C,M){var p=C[0],P=C[1],T=C[2],F=C[3];return _[0]=M[0]*p+M[4]*P+M[8]*T+M[12]*F,_[1]=M[1]*p+M[5]*P+M[9]*T+M[13]*F,_[2]=M[2]*p+M[6]*P+M[10]*T+M[14]*F,_[3]=M[3]*p+M[7]*P+M[11]*T+M[15]*F,_}function A(_,C){_[0][0]=C[0],_[0][1]=C[1],_[0][2]=C[2],_[1][0]=C[4],_[1][1]=C[5],_[1][2]=C[6],_[2][0]=C[8],_[2][1]=C[9],_[2][2]=C[10]}function L(_,C,M,p,P){_[0]=C[0]*p+M[0]*P,_[1]=C[1]*p+M[1]*P,_[2]=C[2]*p+M[2]*P}},4335:function(i){i.exports=function(o,s){var l=s[15];if(l===0)return!1;for(var u=1/l,c=0;c<16;c++)o[c]=s[c]*u;return!0}},7442:function(i,a,o){var s=o(6658),l=o(7182),u=o(2652),c=o(9921),f=o(8648),h=b(),d=b(),v=b();i.exports=x;function x(k,A,L,_){if(c(A)===0||c(L)===0)return!1;var C=u(A,h.translate,h.scale,h.skew,h.perspective,h.quaternion),M=u(L,d.translate,d.scale,d.skew,d.perspective,d.quaternion);return!C||!M?!1:(s(v.translate,h.translate,d.translate,_),s(v.skew,h.skew,d.skew,_),s(v.scale,h.scale,d.scale,_),s(v.perspective,h.perspective,d.perspective,_),f(v.quaternion,h.quaternion,d.quaternion,_),l(k,v.translate,v.scale,v.skew,v.perspective,v.quaternion),!0)}function b(){return{translate:g(),scale:g(1),skew:g(),perspective:E(),quaternion:E()}}function g(k){return[k||0,k||0,k||0]}function E(){return[0,0,0,1]}},7182:function(i,a,o){var s={identity:o(7894),translate:o(7656),multiply:o(6760),create:o(6864),scale:o(2504),fromRotationTranslation:o(6743)},l=s.create(),u=s.create();i.exports=function(f,h,d,v,x,b){return s.identity(f),s.fromRotationTranslation(f,b,h),f[3]=x[0],f[7]=x[1],f[11]=x[2],f[15]=x[3],s.identity(u),v[2]!==0&&(u[9]=v[2],s.multiply(f,f,u)),v[1]!==0&&(u[9]=0,u[8]=v[1],s.multiply(f,f,u)),v[0]!==0&&(u[8]=0,u[4]=v[0],s.multiply(f,f,u)),s.scale(f,f,d),f}},1811:function(i,a,o){"use strict";var s=o(2478),l=o(7442),u=o(7608),c=o(5567),f=o(2408),h=o(7089),d=o(6582),v=o(7656),x=o(2504),b=o(3536),g=[0,0,0];i.exports=L;function E(_){this._components=_.slice(),this._time=[0],this.prevMatrix=_.slice(),this.nextMatrix=_.slice(),this.computedMatrix=_.slice(),this.computedInverse=_.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}var k=E.prototype;k.recalcMatrix=function(_){var C=this._time,M=s.le(C,_),p=this.computedMatrix;if(!(M<0)){var P=this._components;if(M===C.length-1)for(var T=16*M,F=0;F<16;++F)p[F]=P[T++];else{for(var q=C[M+1]-C[M],T=16*M,V=this.prevMatrix,H=!0,F=0;F<16;++F)V[F]=P[T++];for(var X=this.nextMatrix,F=0;F<16;++F)X[F]=P[T++],H=H&&V[F]===X[F];if(q<1e-6||H)for(var F=0;F<16;++F)p[F]=V[F];else l(p,V,X,(_-C[M])/q)}var G=this.computedUp;G[0]=p[1],G[1]=p[5],G[2]=p[9],b(G,G);var N=this.computedInverse;u(N,p);var W=this.computedEye,re=N[15];W[0]=N[12]/re,W[1]=N[13]/re,W[2]=N[14]/re;for(var ae=this.computedCenter,_e=Math.exp(this.computedRadius[0]),F=0;F<3;++F)ae[F]=W[F]-p[2+4*F]*_e}},k.idle=function(_){if(!(_1&&s(u[d[g-2]],u[d[g-1]],b)<=0;)g-=1,d.pop();for(d.push(x),g=v.length;g>1&&s(u[v[g-2]],u[v[g-1]],b)>=0;)g-=1,v.pop();v.push(x)}for(var E=new Array(v.length+d.length-2),k=0,f=0,A=d.length;f0;--L)E[k++]=v[L];return E}},351:function(i,a,o){"use strict";i.exports=l;var s=o(4687);function l(u,c){c||(c=u,u=window);var f=0,h=0,d=0,v={shift:!1,alt:!1,control:!1,meta:!1},x=!1;function b(T){var F=!1;return"altKey"in T&&(F=F||T.altKey!==v.alt,v.alt=!!T.altKey),"shiftKey"in T&&(F=F||T.shiftKey!==v.shift,v.shift=!!T.shiftKey),"ctrlKey"in T&&(F=F||T.ctrlKey!==v.control,v.control=!!T.ctrlKey),"metaKey"in T&&(F=F||T.metaKey!==v.meta,v.meta=!!T.metaKey),F}function g(T,F){var q=s.x(F),V=s.y(F);"buttons"in F&&(T=F.buttons|0),(T!==f||q!==h||V!==d||b(F))&&(f=T|0,h=q||0,d=V||0,c&&c(f,h,d,v))}function E(T){g(0,T)}function k(){(f||h||d||v.shift||v.alt||v.meta||v.control)&&(h=d=0,f=0,v.shift=v.alt=v.control=v.meta=!1,c&&c(0,0,0,v))}function A(T){b(T)&&c&&c(f,h,d,v)}function L(T){s.buttons(T)===0?g(0,T):g(f,T)}function _(T){g(f|s.buttons(T),T)}function C(T){g(f&~s.buttons(T),T)}function M(){x||(x=!0,u.addEventListener("mousemove",L),u.addEventListener("mousedown",_),u.addEventListener("mouseup",C),u.addEventListener("mouseleave",E),u.addEventListener("mouseenter",E),u.addEventListener("mouseout",E),u.addEventListener("mouseover",E),u.addEventListener("blur",k),u.addEventListener("keyup",A),u.addEventListener("keydown",A),u.addEventListener("keypress",A),u!==window&&(window.addEventListener("blur",k),window.addEventListener("keyup",A),window.addEventListener("keydown",A),window.addEventListener("keypress",A)))}function p(){x&&(x=!1,u.removeEventListener("mousemove",L),u.removeEventListener("mousedown",_),u.removeEventListener("mouseup",C),u.removeEventListener("mouseleave",E),u.removeEventListener("mouseenter",E),u.removeEventListener("mouseout",E),u.removeEventListener("mouseover",E),u.removeEventListener("blur",k),u.removeEventListener("keyup",A),u.removeEventListener("keydown",A),u.removeEventListener("keypress",A),u!==window&&(window.removeEventListener("blur",k),window.removeEventListener("keyup",A),window.removeEventListener("keydown",A),window.removeEventListener("keypress",A)))}M();var P={element:u};return Object.defineProperties(P,{enabled:{get:function(){return x},set:function(T){T?M():p()},enumerable:!0},buttons:{get:function(){return f},enumerable:!0},x:{get:function(){return h},enumerable:!0},y:{get:function(){return d},enumerable:!0},mods:{get:function(){return v},enumerable:!0}}),P}},24:function(i){var a={left:0,top:0};i.exports=o;function o(l,u,c){u=u||l.currentTarget||l.srcElement,Array.isArray(c)||(c=[0,0]);var f=l.clientX||0,h=l.clientY||0,d=s(u);return c[0]=f-d.left,c[1]=h-d.top,c}function s(l){return l===window||l===document||l===document.body?a:l.getBoundingClientRect()}},4687:function(i,a){"use strict";function o(c){if(typeof c=="object"){if("buttons"in c)return c.buttons;if("which"in c){var f=c.which;if(f===2)return 4;if(f===3)return 2;if(f>0)return 1<=0)return 1<0){if(Me=1,ie[Ee++]=v(M[F],k,A,L),F+=re,_>0)for(_e=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++),Ee+=1,F+=re,_e=2;_e<_;++_e)q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==me&&d(Te[Ee+ze],rt,W,H,qt,me,k,A,L)),Ee+=1,F+=re;for(F+=ae,Ee=0,ot=ze,ze=Ce,Ce=ot,ot=Re,Re=ce,ce=ot,ot=nt,nt=ct,ct=ot,Me=2;Me0)for(_e=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,G,W,Ge,qt,k,A,L)),Ee+=1,F+=re,_e=2;_e<_;++_e)q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,G,W,Ge,qt,k,A,L),qt!==me&&d(Te[Ee+ze],rt,W,H,qt,me,k,A,L)),Ee+=1,F+=re;Me&1&&(Ee=0),ot=ze,ze=Ce,Ce=ot,ot=Re,Re=ce,ce=ot,ot=nt,nt=ct,ct=ot,F+=ae}}b(Te),b(ie)}},"false,1,0":function(h,d,v,x,b){return function(E,k,A,L){var _=E.shape[0]|0,C=E.shape[1]|0,M=E.data,p=E.offset|0,P=E.stride[0]|0,T=E.stride[1]|0,F=p,q,V=-P|0,H=0,X=-T|0,G=0,N=-P-T|0,W=0,re=T|0,ae=P-T*C|0,_e=0,Me=0,ke=0,ge=2*C|0,ie=x(ge),Te=x(ge),Ee=0,Ae=0,ze=-1,Ce=-1,me=0,Re=-C|0,ce=C|0,Ge=0,nt=-C-1|0,ct=C-1|0,qt=0,rt=0,ot=0;for(Me=0;Me0){if(_e=1,ie[Ee++]=v(M[F],k,A,L),F+=re,C>0)for(Me=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),Ge=ie[Ee+Re],me=ie[Ee+ze],qt=ie[Ee+nt],(Ae!==Ge||Ae!==me||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,Ge,me,qt,k,A,L),rt=Te[Ee]=ke++),Ee+=1,F+=re,Me=2;Me0)for(Me=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),Ge=ie[Ee+Re],me=ie[Ee+ze],qt=ie[Ee+nt],(Ae!==Ge||Ae!==me||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,Ge,me,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,W,H,qt,Ge,k,A,L)),Ee+=1,F+=re,Me=2;Me 0"),typeof f.vertex!="function"&&h("Must specify vertex creation function"),typeof f.cell!="function"&&h("Must specify cell creation function"),typeof f.phase!="function"&&h("Must specify phase function");for(var b=f.getters||[],g=new Array(v),E=0;E=0?g[E]=!0:g[E]=!1;return u(f.vertex,f.cell,f.phase,x,d,g)}},6199:function(i,a,o){"use strict";var s=o(1338),l={zero:function(L,_,C,M){var p=L[0],P=C[0];M|=0;var T=0,F=P;for(T=0;T2&&T[1]>2&&M(P.pick(-1,-1).lo(1,1).hi(T[0]-2,T[1]-2),p.pick(-1,-1,0).lo(1,1).hi(T[0]-2,T[1]-2),p.pick(-1,-1,1).lo(1,1).hi(T[0]-2,T[1]-2)),T[1]>2&&(C(P.pick(0,-1).lo(1).hi(T[1]-2),p.pick(0,-1,1).lo(1).hi(T[1]-2)),_(p.pick(0,-1,0).lo(1).hi(T[1]-2))),T[1]>2&&(C(P.pick(T[0]-1,-1).lo(1).hi(T[1]-2),p.pick(T[0]-1,-1,1).lo(1).hi(T[1]-2)),_(p.pick(T[0]-1,-1,0).lo(1).hi(T[1]-2))),T[0]>2&&(C(P.pick(-1,0).lo(1).hi(T[0]-2),p.pick(-1,0,0).lo(1).hi(T[0]-2)),_(p.pick(-1,0,1).lo(1).hi(T[0]-2))),T[0]>2&&(C(P.pick(-1,T[1]-1).lo(1).hi(T[0]-2),p.pick(-1,T[1]-1,0).lo(1).hi(T[0]-2)),_(p.pick(-1,T[1]-1,1).lo(1).hi(T[0]-2))),p.set(0,0,0,0),p.set(0,0,1,0),p.set(T[0]-1,0,0,0),p.set(T[0]-1,0,1,0),p.set(0,T[1]-1,0,0),p.set(0,T[1]-1,1,0),p.set(T[0]-1,T[1]-1,0,0),p.set(T[0]-1,T[1]-1,1,0),p}}function A(L){var _=L.join(),T=v[_];if(T)return T;for(var C=L.length,M=[b,g],p=1;p<=C;++p)M.push(E(p));var P=k,T=P.apply(void 0,M);return v[_]=T,T}i.exports=function(_,C,M){if(Array.isArray(M)||(typeof M=="string"?M=s(C.dimension,M):M=s(C.dimension,"clamp")),C.size===0)return _;if(C.dimension===0)return _.set(0),_;var p=A(M);return p(_,C)}},4317:function(i){"use strict";function a(c,f){var h=Math.floor(f),d=f-h,v=0<=h&&h0;){G<64?(_=G,G=0):(_=64,G-=64);for(var N=v[1]|0;N>0;){N<64?(C=N,N=0):(C=64,N-=64),g=H+G*p+N*P,A=X+G*F+N*q;var W=0,re=0,ae=0,_e=T,Me=p-M*T,ke=P-_*p,ge=V,ie=F-M*V,Te=q-_*F;for(ae=0;ae0;){q<64?(_=q,q=0):(_=64,q-=64);for(var V=v[0]|0;V>0;){V<64?(L=V,V=0):(L=64,V-=64),g=T+q*M+V*C,A=F+q*P+V*p;var H=0,X=0,G=M,N=C-_*M,W=P,re=p-_*P;for(X=0;X0;){X<64?(C=X,X=0):(C=64,X-=64);for(var G=v[0]|0;G>0;){G<64?(L=G,G=0):(L=64,G-=64);for(var N=v[1]|0;N>0;){N<64?(_=N,N=0):(_=64,N-=64),g=V+X*P+G*M+N*p,A=H+X*q+G*T+N*F;var W=0,re=0,ae=0,_e=P,Me=M-C*P,ke=p-L*M,ge=q,ie=T-C*q,Te=F-L*T;for(ae=0;ae<_;++ae){for(re=0;reE;){W=0,re=H-_;t:for(G=0;G_e)break t;re+=T,W+=F}for(W=H,re=H-_,G=0;G>1,N=G-V,W=G+V,re=H,ae=N,_e=G,Me=W,ke=X,ge=k+1,ie=A-1,Te=!0,Ee,Ae,ze,Ce,me,Re,ce,Ge,nt,ct=0,qt=0,rt=0,ot,Rt,kt,Ct,Yt,xr,er,Ke,xt,bt,Lt,St,Et,dt,Ht,$t,fr=P,_r=b(fr),Br=b(fr);Rt=C*re,kt=C*ae,$t=_;e:for(ot=0;ot0){Ae=re,re=ae,ae=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*Me,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=Me,Me=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*re,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=re,re=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=ae,ae=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*re,kt=C*Me,$t=_;e:for(ot=0;ot0){Ae=re,re=Me,Me=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*_e,kt=C*Me,$t=_;e:for(ot=0;ot0){Ae=_e,_e=Me,Me=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=ae,ae=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=ae,ae=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*Me,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=Me,Me=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}for(Rt=C*re,kt=C*ae,Ct=C*_e,Yt=C*Me,xr=C*ke,er=C*H,Ke=C*G,xt=C*X,Ht=0,$t=_,ot=0;ot0)ie--;else if(rt<0){for(Rt=C*Re,kt=C*ge,Ct=C*ie,$t=_,ot=0;ot0)for(;;){ce=_+ie*C,Ht=0;e:for(ot=0;ot0){if(--ieX){e:for(;;){for(ce=_+ge*C,Ht=0,$t=_,ot=0;ot1&&E?A(g,E[0],E[1]):A(g)}var d={"uint32,1,0":function(x,b){return function(g){var E=g.data,k=g.offset|0,A=g.shape,L=g.stride,_=L[0]|0,C=A[0]|0,M=L[1]|0,p=A[1]|0,P=M,T=M,F=1;C<=32?x(0,C-1,E,k,_,M,C,p,P,T,F):b(0,C-1,E,k,_,M,C,p,P,T,F)}}};function v(x,b){var g=[b,x].join(","),E=d[g],k=c(x,b),A=h(x,b,k);return E(k,A)}i.exports=v},446:function(i,a,o){"use strict";var s=o(7640),l={};function u(c){var f=c.order,h=c.dtype,d=[f,h],v=d.join(":"),x=l[v];return x||(l[v]=x=s(f,h)),x(c),c}i.exports=u},9618:function(i,a,o){var s=o(7163),l=typeof Float64Array!="undefined";function u(b,g){return b[0]-g[0]}function c(){var b=this.stride,g=new Array(b.length),E;for(E=0;E=0&&(M=_|0,C+=P*M,p-=M),new k(this.data,p,P,C)},A.step=function(_){var C=this.shape[0],M=this.stride[0],p=this.offset,P=0,T=Math.ceil;return typeof _=="number"&&(P=_|0,P<0?(p+=M*(C-1),C=T(-C/P)):C=T(C/P),M*=P),new k(this.data,C,M,p)},A.transpose=function(_){_=_===void 0?0:_|0;var C=this.shape,M=this.stride;return new k(this.data,C[_],M[_],this.offset)},A.pick=function(_){var C=[],M=[],p=this.offset;typeof _=="number"&&_>=0?p=p+this.stride[0]*_|0:(C.push(this.shape[0]),M.push(this.stride[0]));var P=g[C.length+1];return P(this.data,C,M,p)},function(_,C,M,p){return new k(_,C[0],M[0],p)}},2:function(b,g,E){function k(L,_,C,M,p,P){this.data=L,this.shape=[_,C],this.stride=[M,p],this.offset=P|0}var A=k.prototype;return A.dtype=b,A.dimension=2,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(A,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),A.set=function(_,C,M){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C,M):this.data[this.offset+this.stride[0]*_+this.stride[1]*C]=M},A.get=function(_,C){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C):this.data[this.offset+this.stride[0]*_+this.stride[1]*C]},A.index=function(_,C){return this.offset+this.stride[0]*_+this.stride[1]*C},A.hi=function(_,C){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,this.stride[0],this.stride[1],this.offset)},A.lo=function(_,C){var M=this.offset,p=0,P=this.shape[0],T=this.shape[1],F=this.stride[0],q=this.stride[1];return typeof _=="number"&&_>=0&&(p=_|0,M+=F*p,P-=p),typeof C=="number"&&C>=0&&(p=C|0,M+=q*p,T-=p),new k(this.data,P,T,F,q,M)},A.step=function(_,C){var M=this.shape[0],p=this.shape[1],P=this.stride[0],T=this.stride[1],F=this.offset,q=0,V=Math.ceil;return typeof _=="number"&&(q=_|0,q<0?(F+=P*(M-1),M=V(-M/q)):M=V(M/q),P*=q),typeof C=="number"&&(q=C|0,q<0?(F+=T*(p-1),p=V(-p/q)):p=V(p/q),T*=q),new k(this.data,M,p,P,T,F)},A.transpose=function(_,C){_=_===void 0?0:_|0,C=C===void 0?1:C|0;var M=this.shape,p=this.stride;return new k(this.data,M[_],M[C],p[_],p[C],this.offset)},A.pick=function(_,C){var M=[],p=[],P=this.offset;typeof _=="number"&&_>=0?P=P+this.stride[0]*_|0:(M.push(this.shape[0]),p.push(this.stride[0])),typeof C=="number"&&C>=0?P=P+this.stride[1]*C|0:(M.push(this.shape[1]),p.push(this.stride[1]));var T=g[M.length+1];return T(this.data,M,p,P)},function(_,C,M,p){return new k(_,C[0],C[1],M[0],M[1],p)}},3:function(b,g,E){function k(L,_,C,M,p,P,T,F){this.data=L,this.shape=[_,C,M],this.stride=[p,P,T],this.offset=F|0}var A=k.prototype;return A.dtype=b,A.dimension=3,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(A,"order",{get:function(){var _=Math.abs(this.stride[0]),C=Math.abs(this.stride[1]),M=Math.abs(this.stride[2]);return _>C?C>M?[2,1,0]:_>M?[1,2,0]:[1,0,2]:_>M?[2,0,1]:M>C?[0,1,2]:[0,2,1]}}),A.set=function(_,C,M,p){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M,p):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M]=p},A.get=function(_,C,M){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M]},A.index=function(_,C,M){return this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M},A.hi=function(_,C,M){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof M!="number"||M<0?this.shape[2]:M|0,this.stride[0],this.stride[1],this.stride[2],this.offset)},A.lo=function(_,C,M){var p=this.offset,P=0,T=this.shape[0],F=this.shape[1],q=this.shape[2],V=this.stride[0],H=this.stride[1],X=this.stride[2];return typeof _=="number"&&_>=0&&(P=_|0,p+=V*P,T-=P),typeof C=="number"&&C>=0&&(P=C|0,p+=H*P,F-=P),typeof M=="number"&&M>=0&&(P=M|0,p+=X*P,q-=P),new k(this.data,T,F,q,V,H,X,p)},A.step=function(_,C,M){var p=this.shape[0],P=this.shape[1],T=this.shape[2],F=this.stride[0],q=this.stride[1],V=this.stride[2],H=this.offset,X=0,G=Math.ceil;return typeof _=="number"&&(X=_|0,X<0?(H+=F*(p-1),p=G(-p/X)):p=G(p/X),F*=X),typeof C=="number"&&(X=C|0,X<0?(H+=q*(P-1),P=G(-P/X)):P=G(P/X),q*=X),typeof M=="number"&&(X=M|0,X<0?(H+=V*(T-1),T=G(-T/X)):T=G(T/X),V*=X),new k(this.data,p,P,T,F,q,V,H)},A.transpose=function(_,C,M){_=_===void 0?0:_|0,C=C===void 0?1:C|0,M=M===void 0?2:M|0;var p=this.shape,P=this.stride;return new k(this.data,p[_],p[C],p[M],P[_],P[C],P[M],this.offset)},A.pick=function(_,C,M){var p=[],P=[],T=this.offset;typeof _=="number"&&_>=0?T=T+this.stride[0]*_|0:(p.push(this.shape[0]),P.push(this.stride[0])),typeof C=="number"&&C>=0?T=T+this.stride[1]*C|0:(p.push(this.shape[1]),P.push(this.stride[1])),typeof M=="number"&&M>=0?T=T+this.stride[2]*M|0:(p.push(this.shape[2]),P.push(this.stride[2]));var F=g[p.length+1];return F(this.data,p,P,T)},function(_,C,M,p){return new k(_,C[0],C[1],C[2],M[0],M[1],M[2],p)}},4:function(b,g,E){function k(L,_,C,M,p,P,T,F,q,V){this.data=L,this.shape=[_,C,M,p],this.stride=[P,T,F,q],this.offset=V|0}var A=k.prototype;return A.dtype=b,A.dimension=4,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(A,"order",{get:E}),A.set=function(_,C,M,p,P){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*p,P):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*p]=P},A.get=function(_,C,M,p){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*p):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*p]},A.index=function(_,C,M,p){return this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*p},A.hi=function(_,C,M,p){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof M!="number"||M<0?this.shape[2]:M|0,typeof p!="number"||p<0?this.shape[3]:p|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},A.lo=function(_,C,M,p){var P=this.offset,T=0,F=this.shape[0],q=this.shape[1],V=this.shape[2],H=this.shape[3],X=this.stride[0],G=this.stride[1],N=this.stride[2],W=this.stride[3];return typeof _=="number"&&_>=0&&(T=_|0,P+=X*T,F-=T),typeof C=="number"&&C>=0&&(T=C|0,P+=G*T,q-=T),typeof M=="number"&&M>=0&&(T=M|0,P+=N*T,V-=T),typeof p=="number"&&p>=0&&(T=p|0,P+=W*T,H-=T),new k(this.data,F,q,V,H,X,G,N,W,P)},A.step=function(_,C,M,p){var P=this.shape[0],T=this.shape[1],F=this.shape[2],q=this.shape[3],V=this.stride[0],H=this.stride[1],X=this.stride[2],G=this.stride[3],N=this.offset,W=0,re=Math.ceil;return typeof _=="number"&&(W=_|0,W<0?(N+=V*(P-1),P=re(-P/W)):P=re(P/W),V*=W),typeof C=="number"&&(W=C|0,W<0?(N+=H*(T-1),T=re(-T/W)):T=re(T/W),H*=W),typeof M=="number"&&(W=M|0,W<0?(N+=X*(F-1),F=re(-F/W)):F=re(F/W),X*=W),typeof p=="number"&&(W=p|0,W<0?(N+=G*(q-1),q=re(-q/W)):q=re(q/W),G*=W),new k(this.data,P,T,F,q,V,H,X,G,N)},A.transpose=function(_,C,M,p){_=_===void 0?0:_|0,C=C===void 0?1:C|0,M=M===void 0?2:M|0,p=p===void 0?3:p|0;var P=this.shape,T=this.stride;return new k(this.data,P[_],P[C],P[M],P[p],T[_],T[C],T[M],T[p],this.offset)},A.pick=function(_,C,M,p){var P=[],T=[],F=this.offset;typeof _=="number"&&_>=0?F=F+this.stride[0]*_|0:(P.push(this.shape[0]),T.push(this.stride[0])),typeof C=="number"&&C>=0?F=F+this.stride[1]*C|0:(P.push(this.shape[1]),T.push(this.stride[1])),typeof M=="number"&&M>=0?F=F+this.stride[2]*M|0:(P.push(this.shape[2]),T.push(this.stride[2])),typeof p=="number"&&p>=0?F=F+this.stride[3]*p|0:(P.push(this.shape[3]),T.push(this.stride[3]));var q=g[P.length+1];return q(this.data,P,T,F)},function(_,C,M,p){return new k(_,C[0],C[1],C[2],C[3],M[0],M[1],M[2],M[3],p)}},5:function(g,E,k){function A(_,C,M,p,P,T,F,q,V,H,X,G){this.data=_,this.shape=[C,M,p,P,T],this.stride=[F,q,V,H,X],this.offset=G|0}var L=A.prototype;return L.dtype=g,L.dimension=5,Object.defineProperty(L,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(L,"order",{get:k}),L.set=function(C,M,p,P,T,F){return g==="generic"?this.data.set(this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*p+this.stride[3]*P+this.stride[4]*T,F):this.data[this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*p+this.stride[3]*P+this.stride[4]*T]=F},L.get=function(C,M,p,P,T){return g==="generic"?this.data.get(this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*p+this.stride[3]*P+this.stride[4]*T):this.data[this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*p+this.stride[3]*P+this.stride[4]*T]},L.index=function(C,M,p,P,T){return this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*p+this.stride[3]*P+this.stride[4]*T},L.hi=function(C,M,p,P,T){return new A(this.data,typeof C!="number"||C<0?this.shape[0]:C|0,typeof M!="number"||M<0?this.shape[1]:M|0,typeof p!="number"||p<0?this.shape[2]:p|0,typeof P!="number"||P<0?this.shape[3]:P|0,typeof T!="number"||T<0?this.shape[4]:T|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},L.lo=function(C,M,p,P,T){var F=this.offset,q=0,V=this.shape[0],H=this.shape[1],X=this.shape[2],G=this.shape[3],N=this.shape[4],W=this.stride[0],re=this.stride[1],ae=this.stride[2],_e=this.stride[3],Me=this.stride[4];return typeof C=="number"&&C>=0&&(q=C|0,F+=W*q,V-=q),typeof M=="number"&&M>=0&&(q=M|0,F+=re*q,H-=q),typeof p=="number"&&p>=0&&(q=p|0,F+=ae*q,X-=q),typeof P=="number"&&P>=0&&(q=P|0,F+=_e*q,G-=q),typeof T=="number"&&T>=0&&(q=T|0,F+=Me*q,N-=q),new A(this.data,V,H,X,G,N,W,re,ae,_e,Me,F)},L.step=function(C,M,p,P,T){var F=this.shape[0],q=this.shape[1],V=this.shape[2],H=this.shape[3],X=this.shape[4],G=this.stride[0],N=this.stride[1],W=this.stride[2],re=this.stride[3],ae=this.stride[4],_e=this.offset,Me=0,ke=Math.ceil;return typeof C=="number"&&(Me=C|0,Me<0?(_e+=G*(F-1),F=ke(-F/Me)):F=ke(F/Me),G*=Me),typeof M=="number"&&(Me=M|0,Me<0?(_e+=N*(q-1),q=ke(-q/Me)):q=ke(q/Me),N*=Me),typeof p=="number"&&(Me=p|0,Me<0?(_e+=W*(V-1),V=ke(-V/Me)):V=ke(V/Me),W*=Me),typeof P=="number"&&(Me=P|0,Me<0?(_e+=re*(H-1),H=ke(-H/Me)):H=ke(H/Me),re*=Me),typeof T=="number"&&(Me=T|0,Me<0?(_e+=ae*(X-1),X=ke(-X/Me)):X=ke(X/Me),ae*=Me),new A(this.data,F,q,V,H,X,G,N,W,re,ae,_e)},L.transpose=function(C,M,p,P,T){C=C===void 0?0:C|0,M=M===void 0?1:M|0,p=p===void 0?2:p|0,P=P===void 0?3:P|0,T=T===void 0?4:T|0;var F=this.shape,q=this.stride;return new A(this.data,F[C],F[M],F[p],F[P],F[T],q[C],q[M],q[p],q[P],q[T],this.offset)},L.pick=function(C,M,p,P,T){var F=[],q=[],V=this.offset;typeof C=="number"&&C>=0?V=V+this.stride[0]*C|0:(F.push(this.shape[0]),q.push(this.stride[0])),typeof M=="number"&&M>=0?V=V+this.stride[1]*M|0:(F.push(this.shape[1]),q.push(this.stride[1])),typeof p=="number"&&p>=0?V=V+this.stride[2]*p|0:(F.push(this.shape[2]),q.push(this.stride[2])),typeof P=="number"&&P>=0?V=V+this.stride[3]*P|0:(F.push(this.shape[3]),q.push(this.stride[3])),typeof T=="number"&&T>=0?V=V+this.stride[4]*T|0:(F.push(this.shape[4]),q.push(this.stride[4]));var H=E[F.length+1];return H(this.data,F,q,V)},function(C,M,p,P){return new A(C,M[0],M[1],M[2],M[3],M[4],p[0],p[1],p[2],p[3],p[4],P)}}};function h(b,g){var E=g===-1?"T":String(g),k=f[E];return g===-1?k(b):g===0?k(b,v[b][0]):k(b,v[b],c)}function d(b){if(s(b))return"buffer";if(l)switch(Object.prototype.toString.call(b)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(b)?"array":"generic"}var v={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};function x(b,g,E,k){if(b===void 0){var p=v.array[0];return p([])}else typeof b=="number"&&(b=[b]);g===void 0&&(g=[b.length]);var A=g.length;if(E===void 0){E=new Array(A);for(var L=A-1,_=1;L>=0;--L)E[L]=_,_*=g[L]}if(k===void 0){k=0;for(var L=0;L>>0;i.exports=c;function c(f,h){if(isNaN(f)||isNaN(h))return NaN;if(f===h)return f;if(f===0)return h<0?-l:l;var d=s.hi(f),v=s.lo(f);return h>f==f>0?v===u?(d+=1,v=0):v+=1:v===0?(v=u,d-=1):v-=1,s.pack(v,d)}},8406:function(i,a){var o=1e-6,s=1e-6;a.vertexNormals=function(l,u,c){for(var f=u.length,h=new Array(f),d=c===void 0?o:c,v=0;vd)for(var F=h[g],q=1/Math.sqrt(M*P),T=0;T<3;++T){var V=(T+1)%3,H=(T+2)%3;F[T]+=q*(p[V]*C[H]-p[H]*C[V])}}for(var v=0;vd)for(var q=1/Math.sqrt(X),T=0;T<3;++T)F[T]*=q;else for(var T=0;T<3;++T)F[T]=0}return h},a.faceNormals=function(l,u,c){for(var f=l.length,h=new Array(f),d=c===void 0?s:c,v=0;vd?L=1/Math.sqrt(L):L=0;for(var g=0;g<3;++g)A[g]*=L;h[v]=A}return h}},4081:function(i){"use strict";i.exports=a;function a(o,s,l,u,c,f,h,d,v,x){var b=s+f+x;if(g>0){var g=Math.sqrt(b+1);o[0]=.5*(h-v)/g,o[1]=.5*(d-u)/g,o[2]=.5*(l-f)/g,o[3]=.5*g}else{var E=Math.max(s,f,x),g=Math.sqrt(2*E-b+1);s>=E?(o[0]=.5*g,o[1]=.5*(c+l)/g,o[2]=.5*(d+u)/g,o[3]=.5*(h-v)/g):f>=E?(o[0]=.5*(l+c)/g,o[1]=.5*g,o[2]=.5*(v+h)/g,o[3]=.5*(d-u)/g):(o[0]=.5*(u+d)/g,o[1]=.5*(h+v)/g,o[2]=.5*g,o[3]=.5*(l-c)/g)}return o}},9977:function(i,a,o){"use strict";i.exports=g;var s=o(9215),l=o(6582),u=o(7399),c=o(7608),f=o(4081);function h(E,k,A){return Math.sqrt(Math.pow(E,2)+Math.pow(k,2)+Math.pow(A,2))}function d(E,k,A,L){return Math.sqrt(Math.pow(E,2)+Math.pow(k,2)+Math.pow(A,2)+Math.pow(L,2))}function v(E,k){var A=k[0],L=k[1],_=k[2],C=k[3],M=d(A,L,_,C);M>1e-6?(E[0]=A/M,E[1]=L/M,E[2]=_/M,E[3]=C/M):(E[0]=E[1]=E[2]=0,E[3]=1)}function x(E,k,A){this.radius=s([A]),this.center=s(k),this.rotation=s(E),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var b=x.prototype;b.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},b.recalcMatrix=function(E){this.radius.curve(E),this.center.curve(E),this.rotation.curve(E);var k=this.computedRotation;v(k,k);var A=this.computedMatrix;u(A,k);var L=this.computedCenter,_=this.computedEye,C=this.computedUp,M=Math.exp(this.computedRadius[0]);_[0]=L[0]+M*A[2],_[1]=L[1]+M*A[6],_[2]=L[2]+M*A[10],C[0]=A[1],C[1]=A[5],C[2]=A[9];for(var p=0;p<3;++p){for(var P=0,T=0;T<3;++T)P+=A[p+4*T]*_[T];A[12+p]=-P}},b.getMatrix=function(E,k){this.recalcMatrix(E);var A=this.computedMatrix;if(k){for(var L=0;L<16;++L)k[L]=A[L];return k}return A},b.idle=function(E){this.center.idle(E),this.radius.idle(E),this.rotation.idle(E)},b.flush=function(E){this.center.flush(E),this.radius.flush(E),this.rotation.flush(E)},b.pan=function(E,k,A,L){k=k||0,A=A||0,L=L||0,this.recalcMatrix(E);var _=this.computedMatrix,C=_[1],M=_[5],p=_[9],P=h(C,M,p);C/=P,M/=P,p/=P;var T=_[0],F=_[4],q=_[8],V=T*C+F*M+q*p;T-=C*V,F-=M*V,q-=p*V;var H=h(T,F,q);T/=H,F/=H,q/=H;var X=_[2],G=_[6],N=_[10],W=X*C+G*M+N*p,re=X*T+G*F+N*q;X-=W*C+re*T,G-=W*M+re*F,N-=W*p+re*q;var ae=h(X,G,N);X/=ae,G/=ae,N/=ae;var _e=T*k+C*A,Me=F*k+M*A,ke=q*k+p*A;this.center.move(E,_e,Me,ke);var ge=Math.exp(this.computedRadius[0]);ge=Math.max(1e-4,ge+L),this.radius.set(E,Math.log(ge))},b.rotate=function(E,k,A,L){this.recalcMatrix(E),k=k||0,A=A||0;var _=this.computedMatrix,C=_[0],M=_[4],p=_[8],P=_[1],T=_[5],F=_[9],q=_[2],V=_[6],H=_[10],X=k*C+A*P,G=k*M+A*T,N=k*p+A*F,W=-(V*N-H*G),re=-(H*X-q*N),ae=-(q*G-V*X),_e=Math.sqrt(Math.max(0,1-Math.pow(W,2)-Math.pow(re,2)-Math.pow(ae,2))),Me=d(W,re,ae,_e);Me>1e-6?(W/=Me,re/=Me,ae/=Me,_e/=Me):(W=re=ae=0,_e=1);var ke=this.computedRotation,ge=ke[0],ie=ke[1],Te=ke[2],Ee=ke[3],Ae=ge*_e+Ee*W+ie*ae-Te*re,ze=ie*_e+Ee*re+Te*W-ge*ae,Ce=Te*_e+Ee*ae+ge*re-ie*W,me=Ee*_e-ge*W-ie*re-Te*ae;if(L){W=q,re=V,ae=H;var Re=Math.sin(L)/h(W,re,ae);W*=Re,re*=Re,ae*=Re,_e=Math.cos(k),Ae=Ae*_e+me*W+ze*ae-Ce*re,ze=ze*_e+me*re+Ce*W-Ae*ae,Ce=Ce*_e+me*ae+Ae*re-ze*W,me=me*_e-Ae*W-ze*re-Ce*ae}var ce=d(Ae,ze,Ce,me);ce>1e-6?(Ae/=ce,ze/=ce,Ce/=ce,me/=ce):(Ae=ze=Ce=0,me=1),this.rotation.set(E,Ae,ze,Ce,me)},b.lookAt=function(E,k,A,L){this.recalcMatrix(E),A=A||this.computedCenter,k=k||this.computedEye,L=L||this.computedUp;var _=this.computedMatrix;l(_,k,A,L);var C=this.computedRotation;f(C,_[0],_[1],_[2],_[4],_[5],_[6],_[8],_[9],_[10]),v(C,C),this.rotation.set(E,C[0],C[1],C[2],C[3]);for(var M=0,p=0;p<3;++p)M+=Math.pow(A[p]-k[p],2);this.radius.set(E,.5*Math.log(Math.max(M,1e-6))),this.center.set(E,A[0],A[1],A[2])},b.translate=function(E,k,A,L){this.center.move(E,k||0,A||0,L||0)},b.setMatrix=function(E,k){var A=this.computedRotation;f(A,k[0],k[1],k[2],k[4],k[5],k[6],k[8],k[9],k[10]),v(A,A),this.rotation.set(E,A[0],A[1],A[2],A[3]);var L=this.computedMatrix;c(L,k);var _=L[15];if(Math.abs(_)>1e-6){var C=L[12]/_,M=L[13]/_,p=L[14]/_;this.recalcMatrix(E);var P=Math.exp(this.computedRadius[0]);this.center.set(E,C-L[2]*P,M-L[6]*P,p-L[10]*P),this.radius.idle(E)}else this.center.idle(E),this.radius.idle(E)},b.setDistance=function(E,k){k>0&&this.radius.set(E,Math.log(k))},b.setDistanceLimits=function(E,k){E>0?E=Math.log(E):E=-1/0,k>0?k=Math.log(k):k=1/0,k=Math.max(k,E),this.radius.bounds[0][0]=E,this.radius.bounds[1][0]=k},b.getDistanceLimits=function(E){var k=this.radius.bounds;return E?(E[0]=Math.exp(k[0][0]),E[1]=Math.exp(k[1][0]),E):[Math.exp(k[0][0]),Math.exp(k[1][0])]},b.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},b.fromJSON=function(E){var k=this.lastT(),A=E.center;A&&this.center.set(k,A[0],A[1],A[2]);var L=E.rotation;L&&this.rotation.set(k,L[0],L[1],L[2],L[3]);var _=E.distance;_&&_>0&&this.radius.set(k,Math.log(_)),this.setDistanceLimits(E.zoomMin,E.zoomMax)};function g(E){E=E||{};var k=E.center||[0,0,0],A=E.rotation||[0,0,0,1],L=E.radius||1;k=[].slice.call(k,0,3),A=[].slice.call(A,0,4),v(A,A);var _=new x(A,k,Math.log(L));return _.setDistanceLimits(E.zoomMin,E.zoomMax),("eye"in E||"up"in E)&&_.lookAt(0,E.eye,E.center,E.up),_}},1371:function(i,a,o){"use strict";var s=o(3233);i.exports=function(u,c,f){return f=typeof f!="undefined"?f+"":" ",s(f,c)+u}},3202:function(i){i.exports=function(o,s){s||(s=[0,""]),o=String(o);var l=parseFloat(o,10);return s[0]=l,s[1]=o.match(/[\d.\-\+]*\s*(.*)/)[1]||"",s}},3088:function(i,a,o){"use strict";i.exports=l;var s=o(3140);function l(u,c){for(var f=c.length|0,h=u.length,d=[new Array(f),new Array(f)],v=0;v0){F=d[H][P][0],V=H;break}q=F[V^1];for(var X=0;X<2;++X)for(var G=d[X][P],N=0;N0&&(F=W,q=re,V=X)}return T||F&&g(F,V),q}function k(p,P){var T=d[P][p][0],F=[p];g(T,P);for(var q=T[P^1],V=P;;){for(;q!==p;)F.push(q),q=E(F[F.length-2],q,!1);if(d[0][p].length+d[1][p].length===0)break;var H=F[F.length-1],X=p,G=F[1],N=E(H,X,!0);if(s(c[H],c[X],c[G],c[N])<0)break;F.push(p),q=E(H,X)}return F}function A(p,P){return P[1]===P[P.length-1]}for(var v=0;v0;){var C=d[0][v].length,M=k(v,L);A(_,M)?_.push.apply(_,M):(_.length>0&&b.push(_),_=M)}_.length>0&&b.push(_)}return b}},5609:function(i,a,o){"use strict";i.exports=l;var s=o(3134);function l(u,c){for(var f=s(u,c.length),h=new Array(c.length),d=new Array(c.length),v=[],x=0;x0;){var g=v.pop();h[g]=!1;for(var E=f[g],x=0;x0}C=C.filter(M);for(var p=C.length,P=new Array(p),T=new Array(p),_=0;_0;){var ce=Ce.pop(),Ge=Me[ce];h(Ge,function(ot,Rt){return ot-Rt});var nt=Ge.length,ct=me[ce],qt;if(ct===0){var G=C[ce];qt=[G]}for(var _=0;_=0)&&(me[rt]=ct^1,Ce.push(rt),ct===0)){var G=C[rt];ze(G)||(G.reverse(),qt.push(G))}}ct===0&&Re.push(qt)}return Re}},5085:function(i,a,o){i.exports=E;var s=o(3250)[3],l=o(4209),u=o(3352),c=o(2478);function f(){return!0}function h(k){return function(A,L){var _=k[A];return _?!!_.queryPoint(L,f):!1}}function d(k){for(var A={},L=0;L0&&A[_]===L[0])C=k[_-1];else return 1;for(var M=1;C;){var p=C.key,P=s(L,p[0],p[1]);if(p[0][0]0)M=-1,C=C.right;else return 0;else if(P>0)C=C.left;else if(P<0)M=1,C=C.right;else return 0}return M}}function x(k){return 1}function b(k){return function(L){return k(L[0],L[1])?0:1}}function g(k,A){return function(_){return k(_[0],_[1])?0:A(_)}}function E(k){for(var A=k.length,L=[],_=[],C=0,M=0;M=x?(p=1,T=x+2*E+A):(p=-E/x,T=E*p+A)):(p=0,k>=0?(P=0,T=A):-k>=g?(P=1,T=g+2*k+A):(P=-k/g,T=k*P+A));else if(P<0)P=0,E>=0?(p=0,T=A):-E>=x?(p=1,T=x+2*E+A):(p=-E/x,T=E*p+A);else{var F=1/M;p*=F,P*=F,T=p*(x*p+b*P+2*E)+P*(b*p+g*P+2*k)+A}else{var q,V,H,X;p<0?(q=b+E,V=g+k,V>q?(H=V-q,X=x-2*b+g,H>=X?(p=1,P=0,T=x+2*E+A):(p=H/X,P=1-p,T=p*(x*p+b*P+2*E)+P*(b*p+g*P+2*k)+A)):(p=0,V<=0?(P=1,T=g+2*k+A):k>=0?(P=0,T=A):(P=-k/g,T=k*P+A))):P<0?(q=b+k,V=x+E,V>q?(H=V-q,X=x-2*b+g,H>=X?(P=1,p=0,T=g+2*k+A):(P=H/X,p=1-P,T=p*(x*p+b*P+2*E)+P*(b*p+g*P+2*k)+A)):(P=0,V<=0?(p=1,T=x+2*E+A):E>=0?(p=0,T=A):(p=-E/x,T=E*p+A))):(H=g+k-b-E,H<=0?(p=0,P=1,T=g+2*k+A):(X=x-2*b+g,H>=X?(p=1,P=0,T=x+2*E+A):(p=H/X,P=1-p,T=p*(x*p+b*P+2*E)+P*(b*p+g*P+2*k)+A)))}for(var G=1-p-P,v=0;v0){var g=f[d-1];if(s(x,g)===0&&u(g)!==b){d-=1;continue}}f[d++]=x}}return f.length=d,f}},3233:function(i){"use strict";var a="",o;i.exports=s;function s(l,u){if(typeof l!="string")throw new TypeError("expected a string");if(u===1)return l;if(u===2)return l+l;var c=l.length*u;if(o!==l||typeof o=="undefined")o=l,a="";else if(a.length>=c)return a.substr(0,c);for(;c>a.length&&u>1;)u&1&&(a+=l),u>>=1,l+=l;return a+=l,a=a.substr(0,c),a}},3025:function(i,a,o){i.exports=o.g.performance&&o.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},7004:function(i){"use strict";i.exports=a;function a(o){for(var s=o.length,l=o[o.length-1],u=s,c=s-2;c>=0;--c){var f=l,h=o[c];l=f+h;var d=l-f,v=h-d;v&&(o[--u]=l,l=v)}for(var x=0,c=u;c0){if(V<=0)return H;X=q+V}else if(q<0){if(V>=0)return H;X=-(q+V)}else return H;var G=d*X;return H>=G||H<=-G?H:k(P,T,F)},function(P,T,F,q){var V=P[0]-q[0],H=T[0]-q[0],X=F[0]-q[0],G=P[1]-q[1],N=T[1]-q[1],W=F[1]-q[1],re=P[2]-q[2],ae=T[2]-q[2],_e=F[2]-q[2],Me=H*W,ke=X*N,ge=X*G,ie=V*W,Te=V*N,Ee=H*G,Ae=re*(Me-ke)+ae*(ge-ie)+_e*(Te-Ee),ze=(Math.abs(Me)+Math.abs(ke))*Math.abs(re)+(Math.abs(ge)+Math.abs(ie))*Math.abs(ae)+(Math.abs(Te)+Math.abs(Ee))*Math.abs(_e),Ce=v*ze;return Ae>Ce||-Ae>Ce?Ae:A(P,T,F,q)}];function _(p){var P=L[p.length];return P||(P=L[p.length]=E(p.length)),P.apply(void 0,p)}function C(p,P,T,F,q,V,H){return function(G,N,W,re,ae){switch(arguments.length){case 0:case 1:return 0;case 2:return F(G,N);case 3:return q(G,N,W);case 4:return V(G,N,W,re);case 5:return H(G,N,W,re,ae)}for(var _e=new Array(arguments.length),Me=0;Me0&&x>0||v<0&&x<0)return!1;var b=s(h,c,f),g=s(d,c,f);return b>0&&g>0||b<0&&g<0?!1:v===0&&x===0&&b===0&&g===0?l(c,f,h,d):!0}},8545:function(i){"use strict";i.exports=o;function a(s,l){var u=s+l,c=u-s,f=u-c,h=l-c,d=s-f,v=d+h;return v?[v,u]:[u]}function o(s,l){var u=s.length|0,c=l.length|0;if(u===1&&c===1)return a(s[0],-l[0]);var f=u+c,h=new Array(f),d=0,v=0,x=0,b=Math.abs,g=s[v],E=b(g),k=-l[x],A=b(k),L,_;E=c?(L=g,v+=1,v=c?(L=g,v+=1,v>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,X=d(P[H],T);X<=0?(X===0&&(V=H),F=H+1):X>0&&(q=H-1)}return V}s=g;function E(P,T){for(var F=new Array(P.length),q=0,V=F.length;q=P.length||d(P[Me],H)!==0););}return F}s=E;function k(P,T){if(!T)return E(b(L(P,0)),P,0);for(var F=new Array(T),q=0;q>>W&1&&N.push(V[W]);T.push(N)}return x(T)}s=A;function L(P,T){if(T<0)return[];for(var F=[],q=(1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},2014:function(i,a,o){"use strict";"use restrict";var s=o(3105),l=o(4623);function u(p){for(var P=0,T=Math.max,F=0,q=p.length;F>1,H=h(p[V],P);H<=0?(H===0&&(q=V),T=V+1):H>0&&(F=V-1)}return q}a.findCell=b;function g(p,P){for(var T=new Array(p.length),F=0,q=T.length;F=p.length||h(p[_e],V)!==0););}return T}a.incidence=g;function E(p,P){if(!P)return g(x(A(p,0)),p,0);for(var T=new Array(P),F=0;F>>N&1&&G.push(q[N]);P.push(G)}return v(P)}a.explode=k;function A(p,P){if(P<0)return[];for(var T=[],F=(1<>1:(ie>>1)-1}function F(ie){for(var Te=P(ie);;){var Ee=Te,Ae=2*ie+1,ze=2*(ie+1),Ce=ie;if(Ae0;){var Ee=T(ie);if(Ee>=0){var Ae=P(Ee);if(Te0){var ie=G[0];return p(0,re-1),re-=1,F(0),ie}return-1}function H(ie,Te){var Ee=G[ie];return E[Ee]===Te?ie:(E[Ee]=-1/0,q(ie),V(),E[Ee]=Te,re+=1,q(re-1))}function X(ie){if(!k[ie]){k[ie]=!0;var Te=b[ie],Ee=g[ie];b[Ee]>=0&&(b[Ee]=Te),g[Te]>=0&&(g[Te]=Ee),N[Te]>=0&&H(N[Te],M(Te)),N[Ee]>=0&&H(N[Ee],M(Ee))}}for(var G=[],N=new Array(v),A=0;A>1;A>=0;--A)F(A);for(;;){var ae=V();if(ae<0||E[ae]>d)break;X(ae)}for(var _e=[],A=0;A=0&&Ee>=0&&Te!==Ee){var Ae=N[Te],ze=N[Ee];Ae!==ze&&ge.push([Ae,ze])}}),l.unique(l.normalize(ge)),{positions:_e,edges:ge}}},1303:function(i,a,o){"use strict";i.exports=u;var s=o(3250);function l(c,f){var h,d;if(f[0][0]f[1][0])h=f[1],d=f[0];else{var v=Math.min(c[0][1],c[1][1]),x=Math.max(c[0][1],c[1][1]),b=Math.min(f[0][1],f[1][1]),g=Math.max(f[0][1],f[1][1]);return xg?v-g:x-g}var E,k;c[0][1]f[1][0])h=f[1],d=f[0];else return l(f,c);var v,x;if(c[0][0]c[1][0])v=c[1],x=c[0];else return-l(c,f);var b=s(h,d,x),g=s(h,d,v);if(b<0){if(g<=0)return b}else if(b>0){if(g>=0)return b}else if(g)return g;if(b=s(x,v,d),g=s(x,v,h),b<0){if(g<=0)return b}else if(b>0){if(g>=0)return b}else if(g)return g;return d[0]-x[0]}},4209:function(i,a,o){"use strict";i.exports=g;var s=o(2478),l=o(3840),u=o(3250),c=o(1303);function f(E,k,A){this.slabs=E,this.coordinates=k,this.horizontal=A}var h=f.prototype;function d(E,k){return E.y-k}function v(E,k){for(var A=null;E;){var L=E.key,_,C;L[0][0]0)if(k[0]!==L[1][0])A=E,E=E.right;else{var p=v(E.right,k);if(p)return p;E=E.left}else{if(k[0]!==L[1][0])return E;var p=v(E.right,k);if(p)return p;E=E.left}}return A}h.castUp=function(E){var k=s.le(this.coordinates,E[0]);if(k<0)return-1;var A=this.slabs[k],L=v(this.slabs[k],E),_=-1;if(L&&(_=L.value),this.coordinates[k]===E[0]){var C=null;if(L&&(C=L.key),k>0){var M=v(this.slabs[k-1],E);M&&(C?c(M.key,C)>0&&(C=M.key,_=M.value):(_=M.value,C=M.key))}var p=this.horizontal[k];if(p.length>0){var P=s.ge(p,E[1],d);if(P=p.length)return _;T=p[P]}}if(T.start)if(C){var F=u(C[0],C[1],[E[0],T.y]);C[0][0]>C[1][0]&&(F=-F),F>0&&(_=T.index)}else _=T.index;else T.y!==E[1]&&(_=T.index)}}}return _};function x(E,k,A,L){this.y=E,this.index=k,this.start=A,this.closed=L}function b(E,k,A,L){this.x=E,this.segment=k,this.create=A,this.index=L}function g(E){for(var k=E.length,A=2*k,L=new Array(A),_=0;_1&&(k=1);for(var A=1-k,L=v.length,_=new Array(L),C=0;C0||E>0&&_<0){var C=c(k,_,A,E);b.push(C),g.push(C.slice())}_<0?g.push(A.slice()):_>0?b.push(A.slice()):(b.push(A.slice()),g.push(A.slice())),E=_}return{positive:b,negative:g}}function h(v,x){for(var b=[],g=u(v[v.length-1],x),E=v[v.length-1],k=v[0],A=0;A0||g>0&&L<0)&&b.push(c(E,L,k,g)),L>=0&&b.push(k.slice()),g=L}return b}function d(v,x){for(var b=[],g=u(v[v.length-1],x),E=v[v.length-1],k=v[0],A=0;A0||g>0&&L<0)&&b.push(c(E,L,k,g)),L<=0&&b.push(k.slice()),g=L}return b}},3387:function(i,a,o){var s;(function(){"use strict";var l={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function u(v){return f(d(v),arguments)}function c(v,x){return u.apply(null,[v].concat(x||[]))}function f(v,x){var b=1,g=v.length,E,k="",A,L,_,C,M,p,P,T;for(A=0;A=0),_.type){case"b":E=parseInt(E,10).toString(2);break;case"c":E=String.fromCharCode(parseInt(E,10));break;case"d":case"i":E=parseInt(E,10);break;case"j":E=JSON.stringify(E,null,_.width?parseInt(_.width):0);break;case"e":E=_.precision?parseFloat(E).toExponential(_.precision):parseFloat(E).toExponential();break;case"f":E=_.precision?parseFloat(E).toFixed(_.precision):parseFloat(E);break;case"g":E=_.precision?String(Number(E.toPrecision(_.precision))):parseFloat(E);break;case"o":E=(parseInt(E,10)>>>0).toString(8);break;case"s":E=String(E),E=_.precision?E.substring(0,_.precision):E;break;case"t":E=String(!!E),E=_.precision?E.substring(0,_.precision):E;break;case"T":E=Object.prototype.toString.call(E).slice(8,-1).toLowerCase(),E=_.precision?E.substring(0,_.precision):E;break;case"u":E=parseInt(E,10)>>>0;break;case"v":E=E.valueOf(),E=_.precision?E.substring(0,_.precision):E;break;case"x":E=(parseInt(E,10)>>>0).toString(16);break;case"X":E=(parseInt(E,10)>>>0).toString(16).toUpperCase();break}l.json.test(_.type)?k+=E:(l.number.test(_.type)&&(!P||_.sign)?(T=P?"+":"-",E=E.toString().replace(l.sign,"")):T="",M=_.pad_char?_.pad_char==="0"?"0":_.pad_char.charAt(1):" ",p=_.width-(T+E).length,C=_.width&&p>0?M.repeat(p):"",k+=_.align?T+E+C:M==="0"?T+C+E:C+T+E)}return k}var h=Object.create(null);function d(v){if(h[v])return h[v];for(var x=v,b,g=[],E=0;x;){if((b=l.text.exec(x))!==null)g.push(b[0]);else if((b=l.modulo.exec(x))!==null)g.push("%");else if((b=l.placeholder.exec(x))!==null){if(b[2]){E|=1;var k=[],A=b[2],L=[];if((L=l.key.exec(A))!==null)for(k.push(L[1]);(A=A.substring(L[0].length))!=="";)if((L=l.key_access.exec(A))!==null)k.push(L[1]);else if((L=l.index_access.exec(A))!==null)k.push(L[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");b[2]=k}else E|=2;if(E===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");g.push({placeholder:b[0],param_no:b[1],keys:b[2],sign:b[3],pad_char:b[4],align:b[5],width:b[6],precision:b[7],type:b[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");x=x.substring(b[0].length)}return h[v]=g}a.sprintf=u,a.vsprintf=c,typeof window!="undefined"&&(window.sprintf=u,window.vsprintf=c,s=function(){return{sprintf:u,vsprintf:c}}.call(a,o,a,i),s!==void 0&&(i.exports=s))})()},3711:function(i,a,o){"use strict";i.exports=d;var s=o(2640),l=o(781),u={"2d":function(v,x,b){var g=v({order:x,scalarArguments:3,getters:b==="generic"?[0]:void 0,phase:function(k,A,L,_){return k>_|0},vertex:function(k,A,L,_,C,M,p,P,T,F,q,V,H){var X=(p<<0)+(P<<1)+(T<<2)+(F<<3)|0;if(!(X===0||X===15))switch(X){case 0:q.push([k-.5,A-.5]);break;case 1:q.push([k-.25-.25*(_+L-2*H)/(L-_),A-.25-.25*(C+L-2*H)/(L-C)]);break;case 2:q.push([k-.75-.25*(-_-L+2*H)/(_-L),A-.25-.25*(M+_-2*H)/(_-M)]);break;case 3:q.push([k-.5,A-.5-.5*(C+L+M+_-4*H)/(L-C+_-M)]);break;case 4:q.push([k-.25-.25*(M+C-2*H)/(C-M),A-.75-.25*(-C-L+2*H)/(C-L)]);break;case 5:q.push([k-.5-.5*(_+L+M+C-4*H)/(L-_+C-M),A-.5]);break;case 6:q.push([k-.5-.25*(-_-L+M+C)/(_-L+C-M),A-.5-.25*(-C-L+M+_)/(C-L+_-M)]);break;case 7:q.push([k-.75-.25*(M+C-2*H)/(C-M),A-.75-.25*(M+_-2*H)/(_-M)]);break;case 8:q.push([k-.75-.25*(-M-C+2*H)/(M-C),A-.75-.25*(-M-_+2*H)/(M-_)]);break;case 9:q.push([k-.5-.25*(_+L+-M-C)/(L-_+M-C),A-.5-.25*(C+L+-M-_)/(L-C+M-_)]);break;case 10:q.push([k-.5-.5*(-_-L+-M-C+4*H)/(_-L+M-C),A-.5]);break;case 11:q.push([k-.25-.25*(-M-C+2*H)/(M-C),A-.75-.25*(C+L-2*H)/(L-C)]);break;case 12:q.push([k-.5,A-.5-.5*(-C-L+-M-_+4*H)/(C-L+M-_)]);break;case 13:q.push([k-.75-.25*(_+L-2*H)/(L-_),A-.25-.25*(-M-_+2*H)/(M-_)]);break;case 14:q.push([k-.25-.25*(-_-L+2*H)/(_-L),A-.25-.25*(-C-L+2*H)/(C-L)]);break;case 15:q.push([k-.5,A-.5]);break}},cell:function(k,A,L,_,C,M,p,P,T){C?P.push([k,A]):P.push([A,k])}});return function(E,k){var A=[],L=[];return g(E,A,L,k),{positions:A,cells:L}}}};function c(v,x){var b=v.length+"d",g=u[b];if(g)return g(s,v,x)}function f(v,x){for(var b=l(v,x),g=b.length,E=new Array(g),k=new Array(g),A=0;AMath.max(_,C)?M[2]=1:_>Math.max(L,C)?M[0]=1:M[1]=1;for(var p=0,P=0,T=0;T<3;++T)p+=A[T]*A[T],P+=M[T]*A[T];for(var T=0;T<3;++T)M[T]-=P/p*A[T];return f(M,M),M}function b(A,L,_,C,M,p,P,T){this.center=s(_),this.up=s(C),this.right=s(M),this.radius=s([p]),this.angle=s([P,T]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(A,L),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var F=0;F<16;++F)this.computedMatrix[F]=.5;this.recalcMatrix(0)}var g=b.prototype;g.setDistanceLimits=function(A,L){A>0?A=Math.log(A):A=-1/0,L>0?L=Math.log(L):L=1/0,L=Math.max(L,A),this.radius.bounds[0][0]=A,this.radius.bounds[1][0]=L},g.getDistanceLimits=function(A){var L=this.radius.bounds[0];return A?(A[0]=Math.exp(L[0][0]),A[1]=Math.exp(L[1][0]),A):[Math.exp(L[0][0]),Math.exp(L[1][0])]},g.recalcMatrix=function(A){this.center.curve(A),this.up.curve(A),this.right.curve(A),this.radius.curve(A),this.angle.curve(A);for(var L=this.computedUp,_=this.computedRight,C=0,M=0,p=0;p<3;++p)M+=L[p]*_[p],C+=L[p]*L[p];for(var P=Math.sqrt(C),T=0,p=0;p<3;++p)_[p]-=L[p]*M/C,T+=_[p]*_[p],L[p]/=P;for(var F=Math.sqrt(T),p=0;p<3;++p)_[p]/=F;var q=this.computedToward;c(q,L,_),f(q,q);for(var V=Math.exp(this.computedRadius[0]),H=this.computedAngle[0],X=this.computedAngle[1],G=Math.cos(H),N=Math.sin(H),W=Math.cos(X),re=Math.sin(X),ae=this.computedCenter,_e=G*W,Me=N*W,ke=re,ge=-G*re,ie=-N*re,Te=W,Ee=this.computedEye,Ae=this.computedMatrix,p=0;p<3;++p){var ze=_e*_[p]+Me*q[p]+ke*L[p];Ae[4*p+1]=ge*_[p]+ie*q[p]+Te*L[p],Ae[4*p+2]=ze,Ae[4*p+3]=0}var Ce=Ae[1],me=Ae[5],Re=Ae[9],ce=Ae[2],Ge=Ae[6],nt=Ae[10],ct=me*nt-Re*Ge,qt=Re*ce-Ce*nt,rt=Ce*Ge-me*ce,ot=d(ct,qt,rt);ct/=ot,qt/=ot,rt/=ot,Ae[0]=ct,Ae[4]=qt,Ae[8]=rt;for(var p=0;p<3;++p)Ee[p]=ae[p]+Ae[2+4*p]*V;for(var p=0;p<3;++p){for(var T=0,Rt=0;Rt<3;++Rt)T+=Ae[p+4*Rt]*Ee[Rt];Ae[12+p]=-T}Ae[15]=1},g.getMatrix=function(A,L){this.recalcMatrix(A);var _=this.computedMatrix;if(L){for(var C=0;C<16;++C)L[C]=_[C];return L}return _};var E=[0,0,0];g.rotate=function(A,L,_,C){if(this.angle.move(A,L,_),C){this.recalcMatrix(A);var M=this.computedMatrix;E[0]=M[2],E[1]=M[6],E[2]=M[10];for(var p=this.computedUp,P=this.computedRight,T=this.computedToward,F=0;F<3;++F)M[4*F]=p[F],M[4*F+1]=P[F],M[4*F+2]=T[F];u(M,M,C,E);for(var F=0;F<3;++F)p[F]=M[4*F],P[F]=M[4*F+1];this.up.set(A,p[0],p[1],p[2]),this.right.set(A,P[0],P[1],P[2])}},g.pan=function(A,L,_,C){L=L||0,_=_||0,C=C||0,this.recalcMatrix(A);var M=this.computedMatrix,p=Math.exp(this.computedRadius[0]),P=M[1],T=M[5],F=M[9],q=d(P,T,F);P/=q,T/=q,F/=q;var V=M[0],H=M[4],X=M[8],G=V*P+H*T+X*F;V-=P*G,H-=T*G,X-=F*G;var N=d(V,H,X);V/=N,H/=N,X/=N;var W=V*L+P*_,re=H*L+T*_,ae=X*L+F*_;this.center.move(A,W,re,ae);var _e=Math.exp(this.computedRadius[0]);_e=Math.max(1e-4,_e+C),this.radius.set(A,Math.log(_e))},g.translate=function(A,L,_,C){this.center.move(A,L||0,_||0,C||0)},g.setMatrix=function(A,L,_,C){var M=1;typeof _=="number"&&(M=_|0),(M<0||M>3)&&(M=1);var p=(M+2)%3,P=(M+1)%3;L||(this.recalcMatrix(A),L=this.computedMatrix);var T=L[M],F=L[M+4],q=L[M+8];if(C){var H=Math.abs(T),X=Math.abs(F),G=Math.abs(q),N=Math.max(H,X,G);H===N?(T=T<0?-1:1,F=q=0):G===N?(q=q<0?-1:1,T=F=0):(F=F<0?-1:1,T=q=0)}else{var V=d(T,F,q);T/=V,F/=V,q/=V}var W=L[p],re=L[p+4],ae=L[p+8],_e=W*T+re*F+ae*q;W-=T*_e,re-=F*_e,ae-=q*_e;var Me=d(W,re,ae);W/=Me,re/=Me,ae/=Me;var ke=F*ae-q*re,ge=q*W-T*ae,ie=T*re-F*W,Te=d(ke,ge,ie);ke/=Te,ge/=Te,ie/=Te,this.center.jump(A,er,Ke,xt),this.radius.idle(A),this.up.jump(A,T,F,q),this.right.jump(A,W,re,ae);var Ee,Ae;if(M===2){var ze=L[1],Ce=L[5],me=L[9],Re=ze*W+Ce*re+me*ae,ce=ze*ke+Ce*ge+me*ie;qt<0?Ee=-Math.PI/2:Ee=Math.PI/2,Ae=Math.atan2(ce,Re)}else{var Ge=L[2],nt=L[6],ct=L[10],qt=Ge*T+nt*F+ct*q,rt=Ge*W+nt*re+ct*ae,ot=Ge*ke+nt*ge+ct*ie;Ee=Math.asin(v(qt)),Ae=Math.atan2(ot,rt)}this.angle.jump(A,Ae,Ee),this.recalcMatrix(A);var Rt=L[2],kt=L[6],Ct=L[10],Yt=this.computedMatrix;l(Yt,L);var xr=Yt[15],er=Yt[12]/xr,Ke=Yt[13]/xr,xt=Yt[14]/xr,bt=Math.exp(this.computedRadius[0]);this.center.jump(A,er-Rt*bt,Ke-kt*bt,xt-Ct*bt)},g.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},g.idle=function(A){this.center.idle(A),this.up.idle(A),this.right.idle(A),this.radius.idle(A),this.angle.idle(A)},g.flush=function(A){this.center.flush(A),this.up.flush(A),this.right.flush(A),this.radius.flush(A),this.angle.flush(A)},g.setDistance=function(A,L){L>0&&this.radius.set(A,Math.log(L))},g.lookAt=function(A,L,_,C){this.recalcMatrix(A),L=L||this.computedEye,_=_||this.computedCenter,C=C||this.computedUp;var M=C[0],p=C[1],P=C[2],T=d(M,p,P);if(!(T<1e-6)){M/=T,p/=T,P/=T;var F=L[0]-_[0],q=L[1]-_[1],V=L[2]-_[2],H=d(F,q,V);if(!(H<1e-6)){F/=H,q/=H,V/=H;var X=this.computedRight,G=X[0],N=X[1],W=X[2],re=M*G+p*N+P*W;G-=re*M,N-=re*p,W-=re*P;var ae=d(G,N,W);if(!(ae<.01&&(G=p*V-P*q,N=P*F-M*V,W=M*q-p*F,ae=d(G,N,W),ae<1e-6))){G/=ae,N/=ae,W/=ae,this.up.set(A,M,p,P),this.right.set(A,G,N,W),this.center.set(A,_[0],_[1],_[2]),this.radius.set(A,Math.log(H));var _e=p*W-P*N,Me=P*G-M*W,ke=M*N-p*G,ge=d(_e,Me,ke);_e/=ge,Me/=ge,ke/=ge;var ie=M*F+p*q+P*V,Te=G*F+N*q+W*V,Ee=_e*F+Me*q+ke*V,Ae=Math.asin(v(ie)),ze=Math.atan2(Ee,Te),Ce=this.angle._state,me=Ce[Ce.length-1],Re=Ce[Ce.length-2];me=me%(2*Math.PI);var ce=Math.abs(me+2*Math.PI-ze),Ge=Math.abs(me-ze),nt=Math.abs(me-2*Math.PI-ze);ce0?W.pop():new ArrayBuffer(G)}a.mallocArrayBuffer=E;function k(X){return new Uint8Array(E(X),0,X)}a.mallocUint8=k;function A(X){return new Uint16Array(E(2*X),0,X)}a.mallocUint16=A;function L(X){return new Uint32Array(E(4*X),0,X)}a.mallocUint32=L;function _(X){return new Int8Array(E(X),0,X)}a.mallocInt8=_;function C(X){return new Int16Array(E(2*X),0,X)}a.mallocInt16=C;function M(X){return new Int32Array(E(4*X),0,X)}a.mallocInt32=M;function p(X){return new Float32Array(E(4*X),0,X)}a.mallocFloat32=a.mallocFloat=p;function P(X){return new Float64Array(E(8*X),0,X)}a.mallocFloat64=a.mallocDouble=P;function T(X){return c?new Uint8ClampedArray(E(X),0,X):k(X)}a.mallocUint8Clamped=T;function F(X){return f?new BigUint64Array(E(8*X),0,X):null}a.mallocBigUint64=F;function q(X){return h?new BigInt64Array(E(8*X),0,X):null}a.mallocBigInt64=q;function V(X){return new DataView(E(X),0,X)}a.mallocDataView=V;function H(X){X=s.nextPow2(X);var G=s.log2(X),N=x[G];return N.length>0?N.pop():new u(X)}a.mallocBuffer=H,a.clearCache=function(){for(var G=0;G<32;++G)d.UINT8[G].length=0,d.UINT16[G].length=0,d.UINT32[G].length=0,d.INT8[G].length=0,d.INT16[G].length=0,d.INT32[G].length=0,d.FLOAT[G].length=0,d.DOUBLE[G].length=0,d.BIGUINT64[G].length=0,d.BIGINT64[G].length=0,d.UINT8C[G].length=0,v[G].length=0,x[G].length=0}},1755:function(i){"use strict";"use restrict";i.exports=a;function a(s){this.roots=new Array(s),this.ranks=new Array(s);for(var l=0;l",W="",re=N.length,ae=W.length,_e=H[0]===E||H[0]===L,Me=0,ke=-ae;Me>-1&&(Me=X.indexOf(N,Me),!(Me===-1||(ke=X.indexOf(W,Me+re),ke===-1)||ke<=Me));){for(var ge=Me;ge=ke)G[ge]=null,X=X.substr(0,ge)+" "+X.substr(ge+1);else if(G[ge]!==null){var ie=G[ge].indexOf(H[0]);ie===-1?G[ge]+=H:_e&&(G[ge]=G[ge].substr(0,ie+1)+(1+parseInt(G[ge][ie+1]))+G[ge].substr(ie+2))}var Te=Me+re,Ee=X.substr(Te,ke-Te),Ae=Ee.indexOf(N);Ae!==-1?Me=Ae:Me=ke+ae}return G}function M(V,H,X){for(var G=H.textAlign||"start",N=H.textBaseline||"alphabetic",W=[1<<30,1<<30],re=[0,0],ae=V.length,_e=0;_e/g,` -`):X=X.replace(/\/g," ");var re="",ae=[];for(me=0;meCe&&Re>0){var ce=(me[Re][0]-Ce)/(me[Re][0]-me[Re-1][0]);return me[Re][1]*(1-ce)+ce*me[Re-1][1]}}return 1}var W=[0,0,0],re={showSurface:!1,showContour:!1,projections:[T.slice(),T.slice(),T.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function ae(Ce,me){var Re,ce,Ge,nt=me.axes&&me.axes.lastCubeProps.axis||W,ct=me.showSurface,qt=me.showContour;for(Re=0;Re<3;++Re)for(ct=ct||me.surfaceProject[Re],ce=0;ce<3;++ce)qt=qt||me.contourProject[Re][ce];for(Re=0;Re<3;++Re){var rt=re.projections[Re];for(ce=0;ce<16;++ce)rt[ce]=0;for(ce=0;ce<4;++ce)rt[5*ce]=1;rt[5*Re]=0,rt[12+Re]=me.axesBounds[+(nt[Re]>0)][Re],p(rt,Ce.model,rt);var ot=re.clipBounds[Re];for(Ge=0;Ge<2;++Ge)for(ce=0;ce<3;++ce)ot[Ge][ce]=Ce.clipBounds[Ge][ce];ot[0][Re]=-1e8,ot[1][Re]=1e8}return re.showSurface=ct,re.showContour=qt,re}var _e={model:T,view:T,projection:T,inverseModel:T.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},Me=T.slice(),ke=[1,0,0,0,1,0,0,0,1];function ge(Ce,me){Ce=Ce||{};var Re=this.gl;Re.disable(Re.CULL_FACE),this._colorMap.bind(0);var ce=_e;ce.model=Ce.model||T,ce.view=Ce.view||T,ce.projection=Ce.projection||T,ce.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],ce.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],ce.objectOffset=this.objectOffset,ce.contourColor=this.contourColor[0],ce.inverseModel=E(ce.inverseModel,ce.model);for(var Ge=0;Ge<2;++Ge)for(var nt=ce.clipBounds[Ge],ct=0;ct<3;++ct)nt[ct]=Math.min(Math.max(this.clipBounds[Ge][ct],-1e8),1e8);ce.kambient=this.ambientLight,ce.kdiffuse=this.diffuseLight,ce.kspecular=this.specularLight,ce.roughness=this.roughness,ce.fresnel=this.fresnel,ce.opacity=this.opacity,ce.height=0,ce.permutation=ke,ce.vertexColor=this.vertexColor;var qt=Me;for(p(qt,ce.view,ce.model),p(qt,ce.projection,qt),E(qt,qt),Ge=0;Ge<3;++Ge)ce.eyePosition[Ge]=qt[12+Ge]/qt[15];var rt=qt[15];for(Ge=0;Ge<3;++Ge)rt+=this.lightPosition[Ge]*qt[4*Ge+3];for(Ge=0;Ge<3;++Ge){var ot=qt[12+Ge];for(ct=0;ct<3;++ct)ot+=qt[4*ct+Ge]*this.lightPosition[ct];ce.lightPosition[Ge]=ot/rt}var Rt=ae(ce,this);if(Rt.showSurface){for(this._shader.bind(),this._shader.uniforms=ce,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(Re.TRIANGLES,this._vertexCount),Ge=0;Ge<3;++Ge)!this.surfaceProject[Ge]||!this.vertexCount||(this._shader.uniforms.model=Rt.projections[Ge],this._shader.uniforms.clipBounds=Rt.clipBounds[Ge],this._vao.draw(Re.TRIANGLES,this._vertexCount));this._vao.unbind()}if(Rt.showContour){var kt=this._contourShader;ce.kambient=1,ce.kdiffuse=0,ce.kspecular=0,ce.opacity=1,kt.bind(),kt.uniforms=ce;var Ct=this._contourVAO;for(Ct.bind(),Ge=0;Ge<3;++Ge)for(kt.uniforms.permutation=q[Ge],Re.lineWidth(this.contourWidth[Ge]*this.pixelRatio),ct=0;ct>4)/16)/255,Ge=Math.floor(ce),nt=ce-Ge,ct=me[1]*(Ce.value[1]+(Ce.value[2]&15)/16)/255,qt=Math.floor(ct),rt=ct-qt;Ge+=1,qt+=1;var ot=Re.position;ot[0]=ot[1]=ot[2]=0;for(var Rt=0;Rt<2;++Rt)for(var kt=Rt?nt:1-nt,Ct=0;Ct<2;++Ct)for(var Yt=Ct?rt:1-rt,xr=Ge+Rt,er=qt+Ct,Ke=kt*Yt,xt=0;xt<3;++xt)ot[xt]+=this._field[xt].get(xr,er)*Ke;for(var bt=this._pickResult.level,Lt=0;Lt<3;++Lt)if(bt[Lt]=k.le(this.contourLevels[Lt],ot[Lt]),bt[Lt]<0)this.contourLevels[Lt].length>0&&(bt[Lt]=0);else if(bt[Lt]Math.abs(Et-ot[Lt])&&(bt[Lt]+=1)}for(Re.index[0]=nt<.5?Ge:Ge+1,Re.index[1]=rt<.5?qt:qt+1,Re.uv[0]=ce/me[0],Re.uv[1]=ct/me[1],xt=0;xt<3;++xt)Re.dataCoordinate[xt]=this._field[xt].get(Re.index[0],Re.index[1]);return Re},G.padField=function(Ce,me){var Re=me.shape.slice(),ce=Ce.shape.slice();d.assign(Ce.lo(1,1).hi(Re[0],Re[1]),me),d.assign(Ce.lo(1).hi(Re[0],1),me.hi(Re[0],1)),d.assign(Ce.lo(1,ce[1]-1).hi(Re[0],1),me.lo(0,Re[1]-1).hi(Re[0],1)),d.assign(Ce.lo(0,1).hi(1,Re[1]),me.hi(1)),d.assign(Ce.lo(ce[0]-1,1).hi(1,Re[1]),me.lo(Re[0]-1)),Ce.set(0,0,me.get(0,0)),Ce.set(0,ce[1]-1,me.get(0,Re[1]-1)),Ce.set(ce[0]-1,0,me.get(Re[0]-1,0)),Ce.set(ce[0]-1,ce[1]-1,me.get(Re[0]-1,Re[1]-1))};function Te(Ce,me){return Array.isArray(Ce)?[me(Ce[0]),me(Ce[1]),me(Ce[2])]:[me(Ce),me(Ce),me(Ce)]}function Ee(Ce){return Array.isArray(Ce)?Ce.length===3?[Ce[0],Ce[1],Ce[2],1]:[Ce[0],Ce[1],Ce[2],Ce[3]]:[0,0,0,1]}function Ae(Ce){if(Array.isArray(Ce)){if(Array.isArray(Ce))return[Ee(Ce[0]),Ee(Ce[1]),Ee(Ce[2])];var me=Ee(Ce);return[me.slice(),me.slice(),me.slice()]}}G.update=function(Ce){Ce=Ce||{},this.objectOffset=Ce.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in Ce&&(this.contourWidth=Te(Ce.contourWidth,Number)),"showContour"in Ce&&(this.showContour=Te(Ce.showContour,Boolean)),"showSurface"in Ce&&(this.showSurface=!!Ce.showSurface),"contourTint"in Ce&&(this.contourTint=Te(Ce.contourTint,Boolean)),"contourColor"in Ce&&(this.contourColor=Ae(Ce.contourColor)),"contourProject"in Ce&&(this.contourProject=Te(Ce.contourProject,function(Gi){return Te(Gi,Boolean)})),"surfaceProject"in Ce&&(this.surfaceProject=Ce.surfaceProject),"dynamicColor"in Ce&&(this.dynamicColor=Ae(Ce.dynamicColor)),"dynamicTint"in Ce&&(this.dynamicTint=Te(Ce.dynamicTint,Number)),"dynamicWidth"in Ce&&(this.dynamicWidth=Te(Ce.dynamicWidth,Number)),"opacity"in Ce&&(this.opacity=Ce.opacity),"opacityscale"in Ce&&(this.opacityscale=Ce.opacityscale),"colorBounds"in Ce&&(this.colorBounds=Ce.colorBounds),"vertexColor"in Ce&&(this.vertexColor=Ce.vertexColor?1:0),"colormap"in Ce&&this._colorMap.setPixels(this.genColormap(Ce.colormap,this.opacityscale));var me=Ce.field||Ce.coords&&Ce.coords[2]||null,Re=!1;if(me||(this._field[2].shape[0]||this._field[2].shape[2]?me=this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):me=this._field[2].hi(0,0)),"field"in Ce||"coords"in Ce){var ce=(me.shape[0]+2)*(me.shape[1]+2);ce>this._field[2].data.length&&(f.freeFloat(this._field[2].data),this._field[2].data=f.mallocFloat(s.nextPow2(ce))),this._field[2]=x(this._field[2].data,[me.shape[0]+2,me.shape[1]+2]),this.padField(this._field[2],me),this.shape=me.shape.slice();for(var Ge=this.shape,nt=0;nt<2;++nt)this._field[2].size>this._field[nt].data.length&&(f.freeFloat(this._field[nt].data),this._field[nt].data=f.mallocFloat(this._field[2].size)),this._field[nt]=x(this._field[nt].data,[Ge[0]+2,Ge[1]+2]);if(Ce.coords){var ct=Ce.coords;if(!Array.isArray(ct)||ct.length!==3)throw new Error("gl-surface: invalid coordinates for x/y");for(nt=0;nt<2;++nt){var qt=ct[nt];for(Ct=0;Ct<2;++Ct)if(qt.shape[Ct]!==Ge[Ct])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[nt],qt)}}else if(Ce.ticks){var rt=Ce.ticks;if(!Array.isArray(rt)||rt.length!==2)throw new Error("gl-surface: invalid ticks");for(nt=0;nt<2;++nt){var ot=rt[nt];if((Array.isArray(ot)||ot.length)&&(ot=x(ot)),ot.shape[0]!==Ge[nt])throw new Error("gl-surface: invalid tick length");var Rt=x(ot.data,Ge);Rt.stride[nt]=ot.stride[0],Rt.stride[nt^1]=0,this.padField(this._field[nt],Rt)}}else{for(nt=0;nt<2;++nt){var kt=[0,0];kt[nt]=1,this._field[nt]=x(this._field[nt].data,[Ge[0]+2,Ge[1]+2],kt,0)}this._field[0].set(0,0,0);for(var Ct=0;Ct0){for(var Mi=0;Mi<5;++Mi)ai.pop();Ve-=1}continue e}}}nn.push(Ve)}this._contourOffsets[jr]=bi,this._contourCounts[jr]=nn}var Pi=f.mallocFloat(ai.length);for(nt=0;ntV||F<0||F>V)throw new Error("gl-texture2d: Invalid texture size");return P._shape=[T,F],P.bind(),q.texImage2D(q.TEXTURE_2D,0,P.format,T,F,0,P.format,P.type,null),P._mipLevels=[0],P}function p(P,T,F,q,V,H){this.gl=P,this.handle=T,this.format=V,this.type=H,this._shape=[F,q],this._mipLevels=[0],this._magFilter=P.NEAREST,this._minFilter=P.NEAREST,this._wrapS=P.CLAMP_TO_EDGE,this._wrapT=P.CLAMP_TO_EDGE,this._anisoSamples=1;var X=this,G=[this._wrapS,this._wrapT];Object.defineProperties(G,[{get:function(){return X._wrapS},set:function(W){return X.wrapS=W}},{get:function(){return X._wrapT},set:function(W){return X.wrapT=W}}]),this._wrapVector=G;var N=[this._shape[0],this._shape[1]];Object.defineProperties(N,[{get:function(){return X._shape[0]},set:function(W){return X.width=W}},{get:function(){return X._shape[1]},set:function(W){return X.height=W}}]),this._shapeVector=N}var E=p.prototype;Object.defineProperties(E,{minFilter:{get:function(){return this._minFilter},set:function(P){this.bind();var T=this.gl;if(this.type===T.FLOAT&&c.indexOf(P)>=0&&(T.getExtension("OES_texture_float_linear")||(P=T.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return T.texParameteri(T.TEXTURE_2D,T.TEXTURE_MIN_FILTER,P),this._minFilter=P}},magFilter:{get:function(){return this._magFilter},set:function(P){this.bind();var T=this.gl;if(this.type===T.FLOAT&&c.indexOf(P)>=0&&(T.getExtension("OES_texture_float_linear")||(P=T.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return T.texParameteri(T.TEXTURE_2D,T.TEXTURE_MAG_FILTER,P),this._magFilter=P}},mipSamples:{get:function(){return this._anisoSamples},set:function(P){var T=this._anisoSamples;if(this._anisoSamples=Math.max(P,1)|0,T!==this._anisoSamples){var F=this.gl.getExtension("EXT_texture_filter_anisotropic");F&&this.gl.texParameterf(this.gl.TEXTURE_2D,F.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,P),this._wrapS=P}},wrapT:{get:function(){return this._wrapT},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,P),this._wrapT=P}},wrap:{get:function(){return this._wrapVector},set:function(P){if(Array.isArray(P)||(P=[P,P]),P.length!==2)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var T=0;T<2;++T)if(h.indexOf(P[T])<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);this._wrapS=P[0],this._wrapT=P[1];var F=this.gl;return this.bind(),F.texParameteri(F.TEXTURE_2D,F.TEXTURE_WRAP_S,this._wrapS),F.texParameteri(F.TEXTURE_2D,F.TEXTURE_WRAP_T,this._wrapT),P}},shape:{get:function(){return this._shapeVector},set:function(P){if(!Array.isArray(P))P=[P|0,P|0];else if(P.length!==2)throw new Error("gl-texture2d: Invalid texture shape");return b(this,P[0]|0,P[1]|0),[P[0]|0,P[1]|0]}},width:{get:function(){return this._shape[0]},set:function(P){return P=P|0,b(this,P,this._shape[1]),P}},height:{get:function(){return this._shape[1]},set:function(P){return P=P|0,b(this,this._shape[0],P),P}}}),E.bind=function(P){var T=this.gl;return P!==void 0&&T.activeTexture(T.TEXTURE0+(P|0)),T.bindTexture(T.TEXTURE_2D,this.handle),P!==void 0?P|0:T.getParameter(T.ACTIVE_TEXTURE)-T.TEXTURE0},E.dispose=function(){this.gl.deleteTexture(this.handle)},E.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var P=Math.min(this._shape[0],this._shape[1]),T=0;P>0;++T,P>>>=1)this._mipLevels.indexOf(T)<0&&this._mipLevels.push(T)},E.setPixels=function(P,T,F,q){var V=this.gl;this.bind(),Array.isArray(T)?(q=F,F=T[1]|0,T=T[0]|0):(T=T||0,F=F||0),q=q||0;var H=v(P)?P:P.raw;if(H){var X=this._mipLevels.indexOf(q)<0;X?(V.texImage2D(V.TEXTURE_2D,0,this.format,this.format,this.type,H),this._mipLevels.push(q)):V.texSubImage2D(V.TEXTURE_2D,q,T,F,this.format,this.type,H)}else if(P.shape&&P.stride&&P.data){if(P.shape.length<2||T+P.shape[1]>this._shape[1]>>>q||F+P.shape[0]>this._shape[0]>>>q||T<0||F<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");A(V,T,F,q,this.format,this.type,this._mipLevels,P)}else throw new Error("gl-texture2d: Unsupported data type")};function k(P,T){return P.length===3?T[2]===1&&T[1]===P[0]*P[2]&&T[0]===P[2]:T[0]===1&&T[1]===P[0]}function A(P,T,F,q,V,H,X,G){var N=G.dtype,W=G.shape.slice();if(W.length<2||W.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var re=0,ae=0,_e=k(W,G.stride.slice());N==="float32"?re=P.FLOAT:N==="float64"?(re=P.FLOAT,_e=!1,N="float32"):N==="uint8"?re=P.UNSIGNED_BYTE:(re=P.UNSIGNED_BYTE,_e=!1,N="uint8");var Me=1;if(W.length===2)ae=P.LUMINANCE,W=[W[0],W[1],1],G=s(G.data,W,[G.stride[0],G.stride[1],1],G.offset);else if(W.length===3){if(W[2]===1)ae=P.ALPHA;else if(W[2]===2)ae=P.LUMINANCE_ALPHA;else if(W[2]===3)ae=P.RGB;else if(W[2]===4)ae=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");Me=W[2]}else throw new Error("gl-texture2d: Invalid shape for texture");if((ae===P.LUMINANCE||ae===P.ALPHA)&&(V===P.LUMINANCE||V===P.ALPHA)&&(ae=V),ae!==V)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var ke=G.size,ge=X.indexOf(q)<0;if(ge&&X.push(q),re===H&&_e)G.offset===0&&G.data.length===ke?ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,G.data):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,G.data):ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,G.data.subarray(G.offset,G.offset+ke)):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,G.data.subarray(G.offset,G.offset+ke));else{var ie;H===P.FLOAT?ie=u.mallocFloat32(ke):ie=u.mallocUint8(ke);var Te=s(ie,W,[W[2],W[2]*W[0],1]);re===P.FLOAT&&H===P.UNSIGNED_BYTE?x(Te,G):l.assign(Te,G),ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,ie.subarray(0,ke)):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,ie.subarray(0,ke)),H===P.FLOAT?u.freeFloat32(ie):u.freeUint8(ie)}}function L(P){var T=P.createTexture();return P.bindTexture(P.TEXTURE_2D,T),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MIN_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MAG_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_S,P.CLAMP_TO_EDGE),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_T,P.CLAMP_TO_EDGE),T}function _(P,T,F,q,V){var H=P.getParameter(P.MAX_TEXTURE_SIZE);if(T<0||T>H||F<0||F>H)throw new Error("gl-texture2d: Invalid texture shape");if(V===P.FLOAT&&!P.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var X=L(P);return P.texImage2D(P.TEXTURE_2D,0,q,T,F,0,q,V,null),new p(P,X,T,F,q,V)}function C(P,T,F,q,V,H){var X=L(P);return P.texImage2D(P.TEXTURE_2D,0,V,V,H,T),new p(P,X,F,q,V,H)}function M(P,T){var F=T.dtype,q=T.shape.slice(),V=P.getParameter(P.MAX_TEXTURE_SIZE);if(q[0]<0||q[0]>V||q[1]<0||q[1]>V)throw new Error("gl-texture2d: Invalid texture size");var H=k(q,T.stride.slice()),X=0;F==="float32"?X=P.FLOAT:F==="float64"?(X=P.FLOAT,H=!1,F="float32"):F==="uint8"?X=P.UNSIGNED_BYTE:(X=P.UNSIGNED_BYTE,H=!1,F="uint8");var G=0;if(q.length===2)G=P.LUMINANCE,q=[q[0],q[1],1],T=s(T.data,q,[T.stride[0],T.stride[1],1],T.offset);else if(q.length===3)if(q[2]===1)G=P.ALPHA;else if(q[2]===2)G=P.LUMINANCE_ALPHA;else if(q[2]===3)G=P.RGB;else if(q[2]===4)G=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");else throw new Error("gl-texture2d: Invalid shape for texture");X===P.FLOAT&&!P.getExtension("OES_texture_float")&&(X=P.UNSIGNED_BYTE,H=!1);var N,W,re=T.size;if(H)T.offset===0&&T.data.length===re?N=T.data:N=T.data.subarray(T.offset,T.offset+re);else{var ae=[q[2],q[2]*q[0],1];W=u.malloc(re,F);var _e=s(W,q,ae,0);(F==="float32"||F==="float64")&&X===P.UNSIGNED_BYTE?x(_e,T):l.assign(_e,T),N=W.subarray(0,re)}var Me=L(P);return P.texImage2D(P.TEXTURE_2D,0,G,q[0],q[1],0,G,X,N),H||u.free(W),new p(P,Me,q[0],q[1],G,X)}function g(P){if(arguments.length<=1)throw new Error("gl-texture2d: Missing arguments for texture2d constructor");if(c||d(P),typeof arguments[1]=="number")return _(P,arguments[1],arguments[2],arguments[3]||P.RGBA,arguments[4]||P.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return _(P,arguments[1][0]|0,arguments[1][1]|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(typeof arguments[1]=="object"){var T=arguments[1],F=v(T)?T:T.raw;if(F)return C(P,F,T.width|0,T.height|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(T.shape&&T.data&&T.stride)return M(P,T)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")}},1433:function(i){"use strict";function a(o,s,l){s?s.bind():o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,null);var u=o.getParameter(o.MAX_VERTEX_ATTRIBS)|0;if(l){if(l.length>u)throw new Error("gl-vao: Too many vertex attributes");for(var c=0;c1?0:Math.acos(x)}},9226:function(i){i.exports=a;function a(o,s){return o[0]=Math.ceil(s[0]),o[1]=Math.ceil(s[1]),o[2]=Math.ceil(s[2]),o}},3126:function(i){i.exports=a;function a(o){var s=new Float32Array(3);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s}},3990:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o}},1091:function(i){i.exports=a;function a(){var o=new Float32Array(3);return o[0]=0,o[1]=0,o[2]=0,o}},5911:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2];return o[0]=c*v-f*d,o[1]=f*h-u*v,o[2]=u*d-c*h,o}},5455:function(i,a,o){i.exports=o(7056)},7056:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return Math.sqrt(l*l+u*u+c*c)}},4008:function(i,a,o){i.exports=o(6690)},6690:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o}},244:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]}},2613:function(i){i.exports=1e-6},9922:function(i,a,o){i.exports=l;var s=o(2613);function l(u,c){var f=u[0],h=u[1],d=u[2],v=c[0],x=c[1],b=c[2];return Math.abs(f-v)<=s*Math.max(1,Math.abs(f),Math.abs(v))&&Math.abs(h-x)<=s*Math.max(1,Math.abs(h),Math.abs(x))&&Math.abs(d-b)<=s*Math.max(1,Math.abs(d),Math.abs(b))}},9265:function(i){i.exports=a;function a(o,s){return o[0]===s[0]&&o[1]===s[1]&&o[2]===s[2]}},2681:function(i){i.exports=a;function a(o,s){return o[0]=Math.floor(s[0]),o[1]=Math.floor(s[1]),o[2]=Math.floor(s[2]),o}},5137:function(i,a,o){i.exports=l;var s=o(1091)();function l(u,c,f,h,d,v){var x,b;for(c||(c=3),f||(f=0),h?b=Math.min(h*c+f,u.length):b=u.length,x=f;x0&&(f=1/Math.sqrt(f),o[0]=s[0]*f,o[1]=s[1]*f,o[2]=s[2]*f),o}},7636:function(i){i.exports=a;function a(o,s){s=s||1;var l=Math.random()*2*Math.PI,u=Math.random()*2-1,c=Math.sqrt(1-u*u)*s;return o[0]=Math.cos(l)*c,o[1]=Math.sin(l)*c,o[2]=u*s,o}},6894:function(i){i.exports=a;function a(o,s,l,u){var c=l[1],f=l[2],h=s[1]-c,d=s[2]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=s[0],o[1]=c+h*x-d*v,o[2]=f+h*v+d*x,o}},109:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[2],h=s[0]-c,d=s[2]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=c+d*v+h*x,o[1]=s[1],o[2]=f+d*x-h*v,o}},8692:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[1],h=s[0]-c,d=s[1]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=c+h*x-d*v,o[1]=f+h*v+d*x,o[2]=s[2],o}},2447:function(i){i.exports=a;function a(o,s){return o[0]=Math.round(s[0]),o[1]=Math.round(s[1]),o[2]=Math.round(s[2]),o}},6621:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o}},8489:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o}},1463:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s,o[1]=l,o[2]=u,o}},6141:function(i,a,o){i.exports=o(2953)},5486:function(i,a,o){i.exports=o(3066)},2953:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return l*l+u*u+c*c}},3066:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2];return s*s+l*l+u*u}},2229:function(i,a,o){i.exports=o(6843)},6843:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o}},492:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2];return o[0]=u*l[0]+c*l[3]+f*l[6],o[1]=u*l[1]+c*l[4]+f*l[7],o[2]=u*l[2]+c*l[5]+f*l[8],o}},5673:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[3]*u+l[7]*c+l[11]*f+l[15];return h=h||1,o[0]=(l[0]*u+l[4]*c+l[8]*f+l[12])/h,o[1]=(l[1]*u+l[5]*c+l[9]*f+l[13])/h,o[2]=(l[2]*u+l[6]*c+l[10]*f+l[14])/h,o}},264:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],x=l[3],b=x*u+d*f-v*c,p=x*c+v*u-h*f,E=x*f+h*c-d*u,k=-h*u-d*c-v*f;return o[0]=b*x+k*-h+p*-v-E*-d,o[1]=p*x+k*-d+E*-h-b*-v,o[2]=E*x+k*-v+b*-d-p*-h,o}},4361:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]+l[0],o[1]=s[1]+l[1],o[2]=s[2]+l[2],o[3]=s[3]+l[3],o}},2335:function(i){i.exports=a;function a(o){var s=new Float32Array(4);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s[3]=o[3],s}},2933:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o[3]=s[3],o}},7536:function(i){i.exports=a;function a(){var o=new Float32Array(4);return o[0]=0,o[1]=0,o[2]=0,o[3]=0,o}},4691:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return Math.sqrt(l*l+u*u+c*c+f*f)}},1373:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o[3]=s[3]/l[3],o}},3750:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]+o[3]*s[3]}},3390:function(i){i.exports=a;function a(o,s,l,u){var c=new Float32Array(4);return c[0]=o,c[1]=s,c[2]=l,c[3]=u,c}},9970:function(i,a,o){i.exports={create:o(7536),clone:o(2335),fromValues:o(3390),copy:o(2933),set:o(4578),add:o(4361),subtract:o(6860),multiply:o(3576),divide:o(1373),min:o(2334),max:o(160),scale:o(9288),scaleAndAdd:o(4844),distance:o(4691),squaredDistance:o(7960),length:o(6808),squaredLength:o(483),negate:o(1498),inverse:o(4494),normalize:o(5177),dot:o(3750),lerp:o(2573),random:o(9131),transformMat4:o(5352),transformQuat:o(4041)}},4494:function(i){i.exports=a;function a(o,s){return o[0]=1/s[0],o[1]=1/s[1],o[2]=1/s[2],o[3]=1/s[3],o}},6808:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return Math.sqrt(s*s+l*l+u*u+c*c)}},2573:function(i){i.exports=a;function a(o,s,l,u){var c=s[0],f=s[1],h=s[2],d=s[3];return o[0]=c+u*(l[0]-c),o[1]=f+u*(l[1]-f),o[2]=h+u*(l[2]-h),o[3]=d+u*(l[3]-d),o}},160:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.max(s[0],l[0]),o[1]=Math.max(s[1],l[1]),o[2]=Math.max(s[2],l[2]),o[3]=Math.max(s[3],l[3]),o}},2334:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.min(s[0],l[0]),o[1]=Math.min(s[1],l[1]),o[2]=Math.min(s[2],l[2]),o[3]=Math.min(s[3],l[3]),o}},3576:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l[0],o[1]=s[1]*l[1],o[2]=s[2]*l[2],o[3]=s[3]*l[3],o}},1498:function(i){i.exports=a;function a(o,s){return o[0]=-s[0],o[1]=-s[1],o[2]=-s[2],o[3]=-s[3],o}},5177:function(i){i.exports=a;function a(o,s){var l=s[0],u=s[1],c=s[2],f=s[3],h=l*l+u*u+c*c+f*f;return h>0&&(h=1/Math.sqrt(h),o[0]=l*h,o[1]=u*h,o[2]=c*h,o[3]=f*h),o}},9131:function(i,a,o){var s=o(5177),l=o(9288);i.exports=u;function u(c,f){return f=f||1,c[0]=Math.random(),c[1]=Math.random(),c[2]=Math.random(),c[3]=Math.random(),s(c,c),l(c,c,f),c}},9288:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o[3]=s[3]*l,o}},4844:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o[3]=s[3]+l[3]*u,o}},4578:function(i){i.exports=a;function a(o,s,l,u,c){return o[0]=s,o[1]=l,o[2]=u,o[3]=c,o}},7960:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return l*l+u*u+c*c+f*f}},483:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return s*s+l*l+u*u+c*c}},6860:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o[3]=s[3]-l[3],o}},5352:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=s[3];return o[0]=l[0]*u+l[4]*c+l[8]*f+l[12]*h,o[1]=l[1]*u+l[5]*c+l[9]*f+l[13]*h,o[2]=l[2]*u+l[6]*c+l[10]*f+l[14]*h,o[3]=l[3]*u+l[7]*c+l[11]*f+l[15]*h,o}},4041:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],x=l[3],b=x*u+d*f-v*c,p=x*c+v*u-h*f,E=x*f+h*c-d*u,k=-h*u-d*c-v*f;return o[0]=b*x+k*-h+p*-v-E*-d,o[1]=p*x+k*-d+E*-h-b*-v,o[2]=E*x+k*-v+b*-d-p*-h,o[3]=s[3],o}},1848:function(i,a,o){var s=o(4905),l=o(6468);i.exports=u;function u(c){for(var f=Array.isArray(c)?c:s(c),h=0;h0)continue;Lt=Ke.slice(0,1).join("")}return Re(Lt),ke+=Lt.length,N=N.slice(Lt.length),N.length}while(!0)}function Ct(){return/[^a-fA-F0-9]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function Yt(){return X==="."||/[eE]/.test(X)?(N.push(X),H=k,G=X,q+1):X==="x"&&N.length===1&&N[0]==="0"?(H=g,N.push(X),G=X,q+1):/[^\d]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function xr(){return X==="f"&&(N.push(X),G=X,q+=1),/[eE]/.test(X)||(X==="-"||X==="+")&&/[eE]/.test(G)?(N.push(X),G=X,q+1):/[^\d]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function er(){if(/[^\d\w_]/.test(X)){var Ke=N.join("");return me[Ke]?H=_:Ce[Ke]?H=L:H=A,Re(N.join("")),H=h,q}return N.push(X),G=X,q+1}}},3508:function(i,a,o){var s=o(6852);s=s.slice().filter(function(l){return!/^(gl\_|texture)/.test(l)}),i.exports=s.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},6852:function(i){i.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},7932:function(i,a,o){var s=o(620);i.exports=s.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},620:function(i){i.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},7827:function(i){i.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},4905:function(i,a,o){var s=o(5874);i.exports=l;function l(u,c){var f=s(c),h=[];return h=h.concat(f(u)),h=h.concat(f(null)),h}},3236:function(i){i.exports=function(a){typeof a=="string"&&(a=[a]);for(var o=[].slice.call(arguments,1),s=[],l=0;l>1,b=-7,p=l?c-1:0,E=l?-1:1,k=o[s+p];for(p+=E,f=k&(1<<-b)-1,k>>=-b,b+=d;b>0;f=f*256+o[s+p],p+=E,b-=8);for(h=f&(1<<-b)-1,f>>=-b,b+=u;b>0;h=h*256+o[s+p],p+=E,b-=8);if(f===0)f=1-x;else{if(f===v)return h?NaN:(k?-1:1)*(1/0);h=h+Math.pow(2,u),f=f-x}return(k?-1:1)*h*Math.pow(2,f-u)},a.write=function(o,s,l,u,c,f){var h,d,v,x=f*8-c-1,b=(1<>1,E=c===23?Math.pow(2,-24)-Math.pow(2,-77):0,k=u?0:f-1,A=u?1:-1,L=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(d=isNaN(s)?1:0,h=b):(h=Math.floor(Math.log(s)/Math.LN2),s*(v=Math.pow(2,-h))<1&&(h--,v*=2),h+p>=1?s+=E/v:s+=E*Math.pow(2,1-p),s*v>=2&&(h++,v/=2),h+p>=b?(d=0,h=b):h+p>=1?(d=(s*v-1)*Math.pow(2,c),h=h+p):(d=s*Math.pow(2,p-1)*Math.pow(2,c),h=0));c>=8;o[l+k]=d&255,k+=A,d/=256,c-=8);for(h=h<0;o[l+k]=h&255,k+=A,h/=256,x-=8);o[l+k-A]|=L*128}},8954:function(i,a,o){"use strict";i.exports=p;var s=o(3250),l=o(6803).Fw;function u(E,k,A){this.vertices=E,this.adjacent=k,this.boundary=A,this.lastVisited=-1}u.prototype.flip=function(){var E=this.vertices[0];this.vertices[0]=this.vertices[1],this.vertices[1]=E;var k=this.adjacent[0];this.adjacent[0]=this.adjacent[1],this.adjacent[1]=k};function c(E,k,A){this.vertices=E,this.cell=k,this.index=A}function f(E,k){return l(E.vertices,k.vertices)}function h(E){return function(){var k=this.tuple;return E.apply(this,k)}}function d(E){var k=s[E+1];return k||(k=s),h(k)}var v=[];function x(E,k,A){this.dimension=E,this.vertices=k,this.simplices=A,this.interior=A.filter(function(C){return!C.boundary}),this.tuple=new Array(E+1);for(var L=0;L<=E;++L)this.tuple[L]=this.vertices[L];var _=v[E];_||(_=v[E]=d(E)),this.orient=_}var b=x.prototype;b.handleBoundaryDegeneracy=function(E,k){var A=this.dimension,L=this.vertices.length-1,_=this.tuple,C=this.vertices,M=[E];for(E.lastVisited=-L;M.length>0;){E=M.pop();for(var g=E.adjacent,P=0;P<=A;++P){var T=g[P];if(!(!T.boundary||T.lastVisited<=-L)){for(var F=T.vertices,q=0;q<=A;++q){var V=F[q];V<0?_[q]=k:_[q]=C[V]}var H=this.orient();if(H>0)return T;T.lastVisited=-L,H===0&&M.push(T)}}}return null},b.walk=function(E,k){var A=this.vertices.length-1,L=this.dimension,_=this.vertices,C=this.tuple,M=k?this.interior.length*Math.random()|0:this.interior.length-1,g=this.interior[M];e:for(;!g.boundary;){for(var P=g.vertices,T=g.adjacent,F=0;F<=L;++F)C[F]=_[P[F]];g.lastVisited=A;for(var F=0;F<=L;++F){var q=T[F];if(!(q.lastVisited>=A)){var V=C[F];C[F]=E;var H=this.orient();if(C[F]=V,H<0){g=q;continue e}else q.boundary?q.lastVisited=-A:q.lastVisited=A}}return}return g},b.addPeaks=function(E,k){var A=this.vertices.length-1,L=this.dimension,_=this.vertices,C=this.tuple,M=this.interior,g=this.simplices,P=[k];k.lastVisited=A,k.vertices[k.vertices.indexOf(-1)]=A,k.boundary=!1,M.push(k);for(var T=[];P.length>0;){var k=P.pop(),F=k.vertices,q=k.adjacent,V=F.indexOf(A);if(!(V<0)){for(var H=0;H<=L;++H)if(H!==V){var X=q[H];if(!(!X.boundary||X.lastVisited>=A)){var G=X.vertices;if(X.lastVisited!==-A){for(var N=0,W=0;W<=L;++W)G[W]<0?(N=W,C[W]=E):C[W]=_[G[W]];var re=this.orient();if(re>0){G[N]=A,X.boundary=!1,M.push(X),P.push(X),X.lastVisited=A;continue}else X.lastVisited=-A}var ae=X.adjacent,_e=F.slice(),Me=q.slice(),ke=new u(_e,Me,!0);g.push(ke);var ge=ae.indexOf(k);if(!(ge<0)){ae[ge]=ke,Me[V]=X,_e[H]=-1,Me[H]=k,q[H]=ke,ke.flip();for(var W=0;W<=L;++W){var ie=_e[W];if(!(ie<0||ie===A)){for(var Te=new Array(L-1),Ee=0,Ae=0;Ae<=L;++Ae){var ze=_e[Ae];ze<0||Ae===W||(Te[Ee++]=ze)}T.push(new c(Te,ke,W))}}}}}}}T.sort(f);for(var H=0;H+1=0?M[P++]=g[F]:T=F&1;if(T===(E&1)){var q=M[0];M[0]=M[1],M[1]=q}k.push(M)}}return k};function p(E,k){var A=E.length;if(A===0)throw new Error("Must have at least d+1 points");var L=E[0].length;if(A<=L)throw new Error("Must input at least d+1 points");var _=E.slice(0,L+1),C=s.apply(void 0,_);if(C===0)throw new Error("Input not in general position");for(var M=new Array(L+1),g=0;g<=L;++g)M[g]=g;C<0&&(M[0]=1,M[1]=0);for(var P=new u(M,new Array(L+1),!1),T=P.adjacent,F=new Array(L+2),g=0;g<=L;++g){for(var q=M.slice(),V=0;V<=L;++V)V===g&&(q[V]=-1);var H=q[0];q[0]=q[1],q[1]=H;var X=new u(q,new Array(L+1),!0);T[g]=X,F[g]=X}F[L+1]=P;for(var g=0;g<=L;++g)for(var q=T[g].vertices,G=T[g].adjacent,V=0;V<=L;++V){var N=q[V];if(N<0){G[V]=P;continue}for(var W=0;W<=L;++W)T[W].vertices.indexOf(N)<0&&(G[V]=T[W])}for(var re=new x(L,_,F),ae=!!k,g=L+1;g3*(F+1)?x(this,T):this.left.insert(T):this.left=C([T]);else if(T[0]>this.mid)this.right?4*(this.right.count+1)>3*(F+1)?x(this,T):this.right.insert(T):this.right=C([T]);else{var q=s.ge(this.leftPoints,T,L),V=s.ge(this.rightPoints,T,_);this.leftPoints.splice(q,0,T),this.rightPoints.splice(V,0,T)}},h.remove=function(T){var F=this.count-this.leftPoints;if(T[1]3*(F-1))return b(this,T);var V=this.left.remove(T);return V===c?(this.left=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else if(T[0]>this.mid){if(!this.right)return l;var H=this.left?this.left.count:0;if(4*H>3*(F-1))return b(this,T);var V=this.right.remove(T);return V===c?(this.right=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else{if(this.count===1)return this.leftPoints[0]===T?c:l;if(this.leftPoints.length===1&&this.leftPoints[0]===T){if(this.left&&this.right){for(var X=this,G=this.left;G.right;)X=G,G=G.right;if(X===this)G.right=this.right;else{var N=this.left,V=this.right;X.count-=G.count,X.right=G.left,G.left=N,G.right=V}d(this,G),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?d(this,this.left):d(this,this.right);return u}for(var N=s.ge(this.leftPoints,T,L);N=0&&T[V][1]>=F;--V){var H=q(T[V]);if(H)return H}}function k(T,F){for(var q=0;qthis.mid){if(this.right){var q=this.right.queryPoint(T,F);if(q)return q}return E(this.rightPoints,T,F)}else return k(this.leftPoints,F)},h.queryInterval=function(T,F,q){if(Tthis.mid&&this.right){var V=this.right.queryInterval(T,F,q);if(V)return V}return Fthis.mid?E(this.rightPoints,T,q):k(this.leftPoints,q)};function A(T,F){return T-F}function L(T,F){var q=T[0]-F[0];return q||T[1]-F[1]}function _(T,F){var q=T[1]-F[1];return q||T[0]-F[0]}function C(T){if(T.length===0)return null;for(var F=[],q=0;q>1],H=[],X=[],G=[],q=0;q13)&&s!==32&&s!==133&&s!==160&&s!==5760&&s!==6158&&(s<8192||s>8205)&&s!==8232&&s!==8233&&s!==8239&&s!==8287&&s!==8288&&s!==12288&&s!==65279)return!1;return!0}},395:function(i){function a(o,s,l){return o*(1-l)+s*l}i.exports=a},2652:function(i,a,o){var s=o(4335),l=o(6864),u=o(1903),c=o(9921),f=o(7608),h=o(5665),d={length:o(1387),normalize:o(3536),dot:o(244),cross:o(5911)},v=l(),x=l(),b=[0,0,0,0],p=[[0,0,0],[0,0,0],[0,0,0]],E=[0,0,0];i.exports=function(C,M,g,P,T,F){if(M||(M=[0,0,0]),g||(g=[0,0,0]),P||(P=[0,0,0]),T||(T=[0,0,0,1]),F||(F=[0,0,0,1]),!s(v,C)||(u(x,v),x[3]=0,x[7]=0,x[11]=0,x[15]=1,Math.abs(c(x)<1e-8)))return!1;var q=v[3],V=v[7],H=v[11],X=v[12],G=v[13],N=v[14],W=v[15];if(q!==0||V!==0||H!==0){b[0]=q,b[1]=V,b[2]=H,b[3]=W;var re=f(x,x);if(!re)return!1;h(x,x),k(T,b,x)}else T[0]=T[1]=T[2]=0,T[3]=1;if(M[0]=X,M[1]=G,M[2]=N,A(p,v),g[0]=d.length(p[0]),d.normalize(p[0],p[0]),P[0]=d.dot(p[0],p[1]),L(p[1],p[1],p[0],1,-P[0]),g[1]=d.length(p[1]),d.normalize(p[1],p[1]),P[0]/=g[1],P[1]=d.dot(p[0],p[2]),L(p[2],p[2],p[0],1,-P[1]),P[2]=d.dot(p[1],p[2]),L(p[2],p[2],p[1],1,-P[2]),g[2]=d.length(p[2]),d.normalize(p[2],p[2]),P[1]/=g[2],P[2]/=g[2],d.cross(E,p[1],p[2]),d.dot(p[0],E)<0)for(var ae=0;ae<3;ae++)g[ae]*=-1,p[ae][0]*=-1,p[ae][1]*=-1,p[ae][2]*=-1;return F[0]=.5*Math.sqrt(Math.max(1+p[0][0]-p[1][1]-p[2][2],0)),F[1]=.5*Math.sqrt(Math.max(1-p[0][0]+p[1][1]-p[2][2],0)),F[2]=.5*Math.sqrt(Math.max(1-p[0][0]-p[1][1]+p[2][2],0)),F[3]=.5*Math.sqrt(Math.max(1+p[0][0]+p[1][1]+p[2][2],0)),p[2][1]>p[1][2]&&(F[0]=-F[0]),p[0][2]>p[2][0]&&(F[1]=-F[1]),p[1][0]>p[0][1]&&(F[2]=-F[2]),!0};function k(_,C,M){var g=C[0],P=C[1],T=C[2],F=C[3];return _[0]=M[0]*g+M[4]*P+M[8]*T+M[12]*F,_[1]=M[1]*g+M[5]*P+M[9]*T+M[13]*F,_[2]=M[2]*g+M[6]*P+M[10]*T+M[14]*F,_[3]=M[3]*g+M[7]*P+M[11]*T+M[15]*F,_}function A(_,C){_[0][0]=C[0],_[0][1]=C[1],_[0][2]=C[2],_[1][0]=C[4],_[1][1]=C[5],_[1][2]=C[6],_[2][0]=C[8],_[2][1]=C[9],_[2][2]=C[10]}function L(_,C,M,g,P){_[0]=C[0]*g+M[0]*P,_[1]=C[1]*g+M[1]*P,_[2]=C[2]*g+M[2]*P}},4335:function(i){i.exports=function(o,s){var l=s[15];if(l===0)return!1;for(var u=1/l,c=0;c<16;c++)o[c]=s[c]*u;return!0}},7442:function(i,a,o){var s=o(6658),l=o(7182),u=o(2652),c=o(9921),f=o(8648),h=b(),d=b(),v=b();i.exports=x;function x(k,A,L,_){if(c(A)===0||c(L)===0)return!1;var C=u(A,h.translate,h.scale,h.skew,h.perspective,h.quaternion),M=u(L,d.translate,d.scale,d.skew,d.perspective,d.quaternion);return!C||!M?!1:(s(v.translate,h.translate,d.translate,_),s(v.skew,h.skew,d.skew,_),s(v.scale,h.scale,d.scale,_),s(v.perspective,h.perspective,d.perspective,_),f(v.quaternion,h.quaternion,d.quaternion,_),l(k,v.translate,v.scale,v.skew,v.perspective,v.quaternion),!0)}function b(){return{translate:p(),scale:p(1),skew:p(),perspective:E(),quaternion:E()}}function p(k){return[k||0,k||0,k||0]}function E(){return[0,0,0,1]}},7182:function(i,a,o){var s={identity:o(7894),translate:o(7656),multiply:o(6760),create:o(6864),scale:o(2504),fromRotationTranslation:o(6743)},l=s.create(),u=s.create();i.exports=function(f,h,d,v,x,b){return s.identity(f),s.fromRotationTranslation(f,b,h),f[3]=x[0],f[7]=x[1],f[11]=x[2],f[15]=x[3],s.identity(u),v[2]!==0&&(u[9]=v[2],s.multiply(f,f,u)),v[1]!==0&&(u[9]=0,u[8]=v[1],s.multiply(f,f,u)),v[0]!==0&&(u[8]=0,u[4]=v[0],s.multiply(f,f,u)),s.scale(f,f,d),f}},1811:function(i,a,o){"use strict";var s=o(2478),l=o(7442),u=o(7608),c=o(5567),f=o(2408),h=o(7089),d=o(6582),v=o(7656),x=o(2504),b=o(3536),p=[0,0,0];i.exports=L;function E(_){this._components=_.slice(),this._time=[0],this.prevMatrix=_.slice(),this.nextMatrix=_.slice(),this.computedMatrix=_.slice(),this.computedInverse=_.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}var k=E.prototype;k.recalcMatrix=function(_){var C=this._time,M=s.le(C,_),g=this.computedMatrix;if(!(M<0)){var P=this._components;if(M===C.length-1)for(var T=16*M,F=0;F<16;++F)g[F]=P[T++];else{for(var q=C[M+1]-C[M],T=16*M,V=this.prevMatrix,H=!0,F=0;F<16;++F)V[F]=P[T++];for(var X=this.nextMatrix,F=0;F<16;++F)X[F]=P[T++],H=H&&V[F]===X[F];if(q<1e-6||H)for(var F=0;F<16;++F)g[F]=V[F];else l(g,V,X,(_-C[M])/q)}var G=this.computedUp;G[0]=g[1],G[1]=g[5],G[2]=g[9],b(G,G);var N=this.computedInverse;u(N,g);var W=this.computedEye,re=N[15];W[0]=N[12]/re,W[1]=N[13]/re,W[2]=N[14]/re;for(var ae=this.computedCenter,_e=Math.exp(this.computedRadius[0]),F=0;F<3;++F)ae[F]=W[F]-g[2+4*F]*_e}},k.idle=function(_){if(!(_1&&s(u[d[p-2]],u[d[p-1]],b)<=0;)p-=1,d.pop();for(d.push(x),p=v.length;p>1&&s(u[v[p-2]],u[v[p-1]],b)>=0;)p-=1,v.pop();v.push(x)}for(var E=new Array(v.length+d.length-2),k=0,f=0,A=d.length;f0;--L)E[k++]=v[L];return E}},351:function(i,a,o){"use strict";i.exports=l;var s=o(4687);function l(u,c){c||(c=u,u=window);var f=0,h=0,d=0,v={shift:!1,alt:!1,control:!1,meta:!1},x=!1;function b(T){var F=!1;return"altKey"in T&&(F=F||T.altKey!==v.alt,v.alt=!!T.altKey),"shiftKey"in T&&(F=F||T.shiftKey!==v.shift,v.shift=!!T.shiftKey),"ctrlKey"in T&&(F=F||T.ctrlKey!==v.control,v.control=!!T.ctrlKey),"metaKey"in T&&(F=F||T.metaKey!==v.meta,v.meta=!!T.metaKey),F}function p(T,F){var q=s.x(F),V=s.y(F);"buttons"in F&&(T=F.buttons|0),(T!==f||q!==h||V!==d||b(F))&&(f=T|0,h=q||0,d=V||0,c&&c(f,h,d,v))}function E(T){p(0,T)}function k(){(f||h||d||v.shift||v.alt||v.meta||v.control)&&(h=d=0,f=0,v.shift=v.alt=v.control=v.meta=!1,c&&c(0,0,0,v))}function A(T){b(T)&&c&&c(f,h,d,v)}function L(T){s.buttons(T)===0?p(0,T):p(f,T)}function _(T){p(f|s.buttons(T),T)}function C(T){p(f&~s.buttons(T),T)}function M(){x||(x=!0,u.addEventListener("mousemove",L),u.addEventListener("mousedown",_),u.addEventListener("mouseup",C),u.addEventListener("mouseleave",E),u.addEventListener("mouseenter",E),u.addEventListener("mouseout",E),u.addEventListener("mouseover",E),u.addEventListener("blur",k),u.addEventListener("keyup",A),u.addEventListener("keydown",A),u.addEventListener("keypress",A),u!==window&&(window.addEventListener("blur",k),window.addEventListener("keyup",A),window.addEventListener("keydown",A),window.addEventListener("keypress",A)))}function g(){x&&(x=!1,u.removeEventListener("mousemove",L),u.removeEventListener("mousedown",_),u.removeEventListener("mouseup",C),u.removeEventListener("mouseleave",E),u.removeEventListener("mouseenter",E),u.removeEventListener("mouseout",E),u.removeEventListener("mouseover",E),u.removeEventListener("blur",k),u.removeEventListener("keyup",A),u.removeEventListener("keydown",A),u.removeEventListener("keypress",A),u!==window&&(window.removeEventListener("blur",k),window.removeEventListener("keyup",A),window.removeEventListener("keydown",A),window.removeEventListener("keypress",A)))}M();var P={element:u};return Object.defineProperties(P,{enabled:{get:function(){return x},set:function(T){T?M():g()},enumerable:!0},buttons:{get:function(){return f},enumerable:!0},x:{get:function(){return h},enumerable:!0},y:{get:function(){return d},enumerable:!0},mods:{get:function(){return v},enumerable:!0}}),P}},24:function(i){var a={left:0,top:0};i.exports=o;function o(l,u,c){u=u||l.currentTarget||l.srcElement,Array.isArray(c)||(c=[0,0]);var f=l.clientX||0,h=l.clientY||0,d=s(u);return c[0]=f-d.left,c[1]=h-d.top,c}function s(l){return l===window||l===document||l===document.body?a:l.getBoundingClientRect()}},4687:function(i,a){"use strict";function o(c){if(typeof c=="object"){if("buttons"in c)return c.buttons;if("which"in c){var f=c.which;if(f===2)return 4;if(f===3)return 2;if(f>0)return 1<=0)return 1<0){if(Me=1,ie[Ee++]=v(M[F],k,A,L),F+=re,_>0)for(_e=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++),Ee+=1,F+=re,_e=2;_e<_;++_e)q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==me&&d(Te[Ee+ze],rt,W,H,qt,me,k,A,L)),Ee+=1,F+=re;for(F+=ae,Ee=0,ot=ze,ze=Ce,Ce=ot,ot=Re,Re=ce,ce=ot,ot=nt,nt=ct,ct=ot,Me=2;Me0)for(_e=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,G,W,Ge,qt,k,A,L)),Ee+=1,F+=re,_e=2;_e<_;++_e)q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,G,W,Ge,qt,k,A,L),qt!==me&&d(Te[Ee+ze],rt,W,H,qt,me,k,A,L)),Ee+=1,F+=re;Me&1&&(Ee=0),ot=ze,ze=Ce,Ce=ot,ot=Re,Re=ce,ce=ot,ot=nt,nt=ct,ct=ot,F+=ae}}b(Te),b(ie)}},"false,1,0":function(h,d,v,x,b){return function(E,k,A,L){var _=E.shape[0]|0,C=E.shape[1]|0,M=E.data,g=E.offset|0,P=E.stride[0]|0,T=E.stride[1]|0,F=g,q,V=-P|0,H=0,X=-T|0,G=0,N=-P-T|0,W=0,re=T|0,ae=P-T*C|0,_e=0,Me=0,ke=0,ge=2*C|0,ie=x(ge),Te=x(ge),Ee=0,Ae=0,ze=-1,Ce=-1,me=0,Re=-C|0,ce=C|0,Ge=0,nt=-C-1|0,ct=C-1|0,qt=0,rt=0,ot=0;for(Me=0;Me0){if(_e=1,ie[Ee++]=v(M[F],k,A,L),F+=re,C>0)for(Me=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),Ge=ie[Ee+Re],me=ie[Ee+ze],qt=ie[Ee+nt],(Ae!==Ge||Ae!==me||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,Ge,me,qt,k,A,L),rt=Te[Ee]=ke++),Ee+=1,F+=re,Me=2;Me0)for(Me=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),Ge=ie[Ee+Re],me=ie[Ee+ze],qt=ie[Ee+nt],(Ae!==Ge||Ae!==me||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,Ge,me,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,W,H,qt,Ge,k,A,L)),Ee+=1,F+=re,Me=2;Me 0"),typeof f.vertex!="function"&&h("Must specify vertex creation function"),typeof f.cell!="function"&&h("Must specify cell creation function"),typeof f.phase!="function"&&h("Must specify phase function");for(var b=f.getters||[],p=new Array(v),E=0;E=0?p[E]=!0:p[E]=!1;return u(f.vertex,f.cell,f.phase,x,d,p)}},6199:function(i,a,o){"use strict";var s=o(1338),l={zero:function(L,_,C,M){var g=L[0],P=C[0];M|=0;var T=0,F=P;for(T=0;T2&&T[1]>2&&M(P.pick(-1,-1).lo(1,1).hi(T[0]-2,T[1]-2),g.pick(-1,-1,0).lo(1,1).hi(T[0]-2,T[1]-2),g.pick(-1,-1,1).lo(1,1).hi(T[0]-2,T[1]-2)),T[1]>2&&(C(P.pick(0,-1).lo(1).hi(T[1]-2),g.pick(0,-1,1).lo(1).hi(T[1]-2)),_(g.pick(0,-1,0).lo(1).hi(T[1]-2))),T[1]>2&&(C(P.pick(T[0]-1,-1).lo(1).hi(T[1]-2),g.pick(T[0]-1,-1,1).lo(1).hi(T[1]-2)),_(g.pick(T[0]-1,-1,0).lo(1).hi(T[1]-2))),T[0]>2&&(C(P.pick(-1,0).lo(1).hi(T[0]-2),g.pick(-1,0,0).lo(1).hi(T[0]-2)),_(g.pick(-1,0,1).lo(1).hi(T[0]-2))),T[0]>2&&(C(P.pick(-1,T[1]-1).lo(1).hi(T[0]-2),g.pick(-1,T[1]-1,0).lo(1).hi(T[0]-2)),_(g.pick(-1,T[1]-1,1).lo(1).hi(T[0]-2))),g.set(0,0,0,0),g.set(0,0,1,0),g.set(T[0]-1,0,0,0),g.set(T[0]-1,0,1,0),g.set(0,T[1]-1,0,0),g.set(0,T[1]-1,1,0),g.set(T[0]-1,T[1]-1,0,0),g.set(T[0]-1,T[1]-1,1,0),g}}function A(L){var _=L.join(),T=v[_];if(T)return T;for(var C=L.length,M=[b,p],g=1;g<=C;++g)M.push(E(g));var P=k,T=P.apply(void 0,M);return v[_]=T,T}i.exports=function(_,C,M){if(Array.isArray(M)||(typeof M=="string"?M=s(C.dimension,M):M=s(C.dimension,"clamp")),C.size===0)return _;if(C.dimension===0)return _.set(0),_;var g=A(M);return g(_,C)}},4317:function(i){"use strict";function a(c,f){var h=Math.floor(f),d=f-h,v=0<=h&&h0;){G<64?(_=G,G=0):(_=64,G-=64);for(var N=v[1]|0;N>0;){N<64?(C=N,N=0):(C=64,N-=64),p=H+G*g+N*P,A=X+G*F+N*q;var W=0,re=0,ae=0,_e=T,Me=g-M*T,ke=P-_*g,ge=V,ie=F-M*V,Te=q-_*F;for(ae=0;ae0;){q<64?(_=q,q=0):(_=64,q-=64);for(var V=v[0]|0;V>0;){V<64?(L=V,V=0):(L=64,V-=64),p=T+q*M+V*C,A=F+q*P+V*g;var H=0,X=0,G=M,N=C-_*M,W=P,re=g-_*P;for(X=0;X0;){X<64?(C=X,X=0):(C=64,X-=64);for(var G=v[0]|0;G>0;){G<64?(L=G,G=0):(L=64,G-=64);for(var N=v[1]|0;N>0;){N<64?(_=N,N=0):(_=64,N-=64),p=V+X*P+G*M+N*g,A=H+X*q+G*T+N*F;var W=0,re=0,ae=0,_e=P,Me=M-C*P,ke=g-L*M,ge=q,ie=T-C*q,Te=F-L*T;for(ae=0;ae<_;++ae){for(re=0;reE;){W=0,re=H-_;t:for(G=0;G_e)break t;re+=T,W+=F}for(W=H,re=H-_,G=0;G>1,N=G-V,W=G+V,re=H,ae=N,_e=G,Me=W,ke=X,ge=k+1,ie=A-1,Te=!0,Ee,Ae,ze,Ce,me,Re,ce,Ge,nt,ct=0,qt=0,rt=0,ot,Rt,kt,Ct,Yt,xr,er,Ke,xt,bt,Lt,St,Et,dt,Ht,$t,fr=P,_r=b(fr),Br=b(fr);Rt=C*re,kt=C*ae,$t=_;e:for(ot=0;ot0){Ae=re,re=ae,ae=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*Me,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=Me,Me=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*re,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=re,re=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=ae,ae=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*re,kt=C*Me,$t=_;e:for(ot=0;ot0){Ae=re,re=Me,Me=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*_e,kt=C*Me,$t=_;e:for(ot=0;ot0){Ae=_e,_e=Me,Me=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=ae,ae=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=ae,ae=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*Me,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=Me,Me=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}for(Rt=C*re,kt=C*ae,Ct=C*_e,Yt=C*Me,xr=C*ke,er=C*H,Ke=C*G,xt=C*X,Ht=0,$t=_,ot=0;ot0)ie--;else if(rt<0){for(Rt=C*Re,kt=C*ge,Ct=C*ie,$t=_,ot=0;ot0)for(;;){ce=_+ie*C,Ht=0;e:for(ot=0;ot0){if(--ieX){e:for(;;){for(ce=_+ge*C,Ht=0,$t=_,ot=0;ot1&&E?A(p,E[0],E[1]):A(p)}var d={"uint32,1,0":function(x,b){return function(p){var E=p.data,k=p.offset|0,A=p.shape,L=p.stride,_=L[0]|0,C=A[0]|0,M=L[1]|0,g=A[1]|0,P=M,T=M,F=1;C<=32?x(0,C-1,E,k,_,M,C,g,P,T,F):b(0,C-1,E,k,_,M,C,g,P,T,F)}}};function v(x,b){var p=[b,x].join(","),E=d[p],k=c(x,b),A=h(x,b,k);return E(k,A)}i.exports=v},446:function(i,a,o){"use strict";var s=o(7640),l={};function u(c){var f=c.order,h=c.dtype,d=[f,h],v=d.join(":"),x=l[v];return x||(l[v]=x=s(f,h)),x(c),c}i.exports=u},9618:function(i,a,o){var s=o(7163),l=typeof Float64Array!="undefined";function u(b,p){return b[0]-p[0]}function c(){var b=this.stride,p=new Array(b.length),E;for(E=0;E=0&&(M=_|0,C+=P*M,g-=M),new k(this.data,g,P,C)},A.step=function(_){var C=this.shape[0],M=this.stride[0],g=this.offset,P=0,T=Math.ceil;return typeof _=="number"&&(P=_|0,P<0?(g+=M*(C-1),C=T(-C/P)):C=T(C/P),M*=P),new k(this.data,C,M,g)},A.transpose=function(_){_=_===void 0?0:_|0;var C=this.shape,M=this.stride;return new k(this.data,C[_],M[_],this.offset)},A.pick=function(_){var C=[],M=[],g=this.offset;typeof _=="number"&&_>=0?g=g+this.stride[0]*_|0:(C.push(this.shape[0]),M.push(this.stride[0]));var P=p[C.length+1];return P(this.data,C,M,g)},function(_,C,M,g){return new k(_,C[0],M[0],g)}},2:function(b,p,E){function k(L,_,C,M,g,P){this.data=L,this.shape=[_,C],this.stride=[M,g],this.offset=P|0}var A=k.prototype;return A.dtype=b,A.dimension=2,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(A,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),A.set=function(_,C,M){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C,M):this.data[this.offset+this.stride[0]*_+this.stride[1]*C]=M},A.get=function(_,C){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C):this.data[this.offset+this.stride[0]*_+this.stride[1]*C]},A.index=function(_,C){return this.offset+this.stride[0]*_+this.stride[1]*C},A.hi=function(_,C){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,this.stride[0],this.stride[1],this.offset)},A.lo=function(_,C){var M=this.offset,g=0,P=this.shape[0],T=this.shape[1],F=this.stride[0],q=this.stride[1];return typeof _=="number"&&_>=0&&(g=_|0,M+=F*g,P-=g),typeof C=="number"&&C>=0&&(g=C|0,M+=q*g,T-=g),new k(this.data,P,T,F,q,M)},A.step=function(_,C){var M=this.shape[0],g=this.shape[1],P=this.stride[0],T=this.stride[1],F=this.offset,q=0,V=Math.ceil;return typeof _=="number"&&(q=_|0,q<0?(F+=P*(M-1),M=V(-M/q)):M=V(M/q),P*=q),typeof C=="number"&&(q=C|0,q<0?(F+=T*(g-1),g=V(-g/q)):g=V(g/q),T*=q),new k(this.data,M,g,P,T,F)},A.transpose=function(_,C){_=_===void 0?0:_|0,C=C===void 0?1:C|0;var M=this.shape,g=this.stride;return new k(this.data,M[_],M[C],g[_],g[C],this.offset)},A.pick=function(_,C){var M=[],g=[],P=this.offset;typeof _=="number"&&_>=0?P=P+this.stride[0]*_|0:(M.push(this.shape[0]),g.push(this.stride[0])),typeof C=="number"&&C>=0?P=P+this.stride[1]*C|0:(M.push(this.shape[1]),g.push(this.stride[1]));var T=p[M.length+1];return T(this.data,M,g,P)},function(_,C,M,g){return new k(_,C[0],C[1],M[0],M[1],g)}},3:function(b,p,E){function k(L,_,C,M,g,P,T,F){this.data=L,this.shape=[_,C,M],this.stride=[g,P,T],this.offset=F|0}var A=k.prototype;return A.dtype=b,A.dimension=3,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(A,"order",{get:function(){var _=Math.abs(this.stride[0]),C=Math.abs(this.stride[1]),M=Math.abs(this.stride[2]);return _>C?C>M?[2,1,0]:_>M?[1,2,0]:[1,0,2]:_>M?[2,0,1]:M>C?[0,1,2]:[0,2,1]}}),A.set=function(_,C,M,g){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M,g):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M]=g},A.get=function(_,C,M){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M]},A.index=function(_,C,M){return this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M},A.hi=function(_,C,M){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof M!="number"||M<0?this.shape[2]:M|0,this.stride[0],this.stride[1],this.stride[2],this.offset)},A.lo=function(_,C,M){var g=this.offset,P=0,T=this.shape[0],F=this.shape[1],q=this.shape[2],V=this.stride[0],H=this.stride[1],X=this.stride[2];return typeof _=="number"&&_>=0&&(P=_|0,g+=V*P,T-=P),typeof C=="number"&&C>=0&&(P=C|0,g+=H*P,F-=P),typeof M=="number"&&M>=0&&(P=M|0,g+=X*P,q-=P),new k(this.data,T,F,q,V,H,X,g)},A.step=function(_,C,M){var g=this.shape[0],P=this.shape[1],T=this.shape[2],F=this.stride[0],q=this.stride[1],V=this.stride[2],H=this.offset,X=0,G=Math.ceil;return typeof _=="number"&&(X=_|0,X<0?(H+=F*(g-1),g=G(-g/X)):g=G(g/X),F*=X),typeof C=="number"&&(X=C|0,X<0?(H+=q*(P-1),P=G(-P/X)):P=G(P/X),q*=X),typeof M=="number"&&(X=M|0,X<0?(H+=V*(T-1),T=G(-T/X)):T=G(T/X),V*=X),new k(this.data,g,P,T,F,q,V,H)},A.transpose=function(_,C,M){_=_===void 0?0:_|0,C=C===void 0?1:C|0,M=M===void 0?2:M|0;var g=this.shape,P=this.stride;return new k(this.data,g[_],g[C],g[M],P[_],P[C],P[M],this.offset)},A.pick=function(_,C,M){var g=[],P=[],T=this.offset;typeof _=="number"&&_>=0?T=T+this.stride[0]*_|0:(g.push(this.shape[0]),P.push(this.stride[0])),typeof C=="number"&&C>=0?T=T+this.stride[1]*C|0:(g.push(this.shape[1]),P.push(this.stride[1])),typeof M=="number"&&M>=0?T=T+this.stride[2]*M|0:(g.push(this.shape[2]),P.push(this.stride[2]));var F=p[g.length+1];return F(this.data,g,P,T)},function(_,C,M,g){return new k(_,C[0],C[1],C[2],M[0],M[1],M[2],g)}},4:function(b,p,E){function k(L,_,C,M,g,P,T,F,q,V){this.data=L,this.shape=[_,C,M,g],this.stride=[P,T,F,q],this.offset=V|0}var A=k.prototype;return A.dtype=b,A.dimension=4,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(A,"order",{get:E}),A.set=function(_,C,M,g,P){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g,P):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g]=P},A.get=function(_,C,M,g){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g]},A.index=function(_,C,M,g){return this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g},A.hi=function(_,C,M,g){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof M!="number"||M<0?this.shape[2]:M|0,typeof g!="number"||g<0?this.shape[3]:g|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},A.lo=function(_,C,M,g){var P=this.offset,T=0,F=this.shape[0],q=this.shape[1],V=this.shape[2],H=this.shape[3],X=this.stride[0],G=this.stride[1],N=this.stride[2],W=this.stride[3];return typeof _=="number"&&_>=0&&(T=_|0,P+=X*T,F-=T),typeof C=="number"&&C>=0&&(T=C|0,P+=G*T,q-=T),typeof M=="number"&&M>=0&&(T=M|0,P+=N*T,V-=T),typeof g=="number"&&g>=0&&(T=g|0,P+=W*T,H-=T),new k(this.data,F,q,V,H,X,G,N,W,P)},A.step=function(_,C,M,g){var P=this.shape[0],T=this.shape[1],F=this.shape[2],q=this.shape[3],V=this.stride[0],H=this.stride[1],X=this.stride[2],G=this.stride[3],N=this.offset,W=0,re=Math.ceil;return typeof _=="number"&&(W=_|0,W<0?(N+=V*(P-1),P=re(-P/W)):P=re(P/W),V*=W),typeof C=="number"&&(W=C|0,W<0?(N+=H*(T-1),T=re(-T/W)):T=re(T/W),H*=W),typeof M=="number"&&(W=M|0,W<0?(N+=X*(F-1),F=re(-F/W)):F=re(F/W),X*=W),typeof g=="number"&&(W=g|0,W<0?(N+=G*(q-1),q=re(-q/W)):q=re(q/W),G*=W),new k(this.data,P,T,F,q,V,H,X,G,N)},A.transpose=function(_,C,M,g){_=_===void 0?0:_|0,C=C===void 0?1:C|0,M=M===void 0?2:M|0,g=g===void 0?3:g|0;var P=this.shape,T=this.stride;return new k(this.data,P[_],P[C],P[M],P[g],T[_],T[C],T[M],T[g],this.offset)},A.pick=function(_,C,M,g){var P=[],T=[],F=this.offset;typeof _=="number"&&_>=0?F=F+this.stride[0]*_|0:(P.push(this.shape[0]),T.push(this.stride[0])),typeof C=="number"&&C>=0?F=F+this.stride[1]*C|0:(P.push(this.shape[1]),T.push(this.stride[1])),typeof M=="number"&&M>=0?F=F+this.stride[2]*M|0:(P.push(this.shape[2]),T.push(this.stride[2])),typeof g=="number"&&g>=0?F=F+this.stride[3]*g|0:(P.push(this.shape[3]),T.push(this.stride[3]));var q=p[P.length+1];return q(this.data,P,T,F)},function(_,C,M,g){return new k(_,C[0],C[1],C[2],C[3],M[0],M[1],M[2],M[3],g)}},5:function(p,E,k){function A(_,C,M,g,P,T,F,q,V,H,X,G){this.data=_,this.shape=[C,M,g,P,T],this.stride=[F,q,V,H,X],this.offset=G|0}var L=A.prototype;return L.dtype=p,L.dimension=5,Object.defineProperty(L,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(L,"order",{get:k}),L.set=function(C,M,g,P,T,F){return p==="generic"?this.data.set(this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T,F):this.data[this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T]=F},L.get=function(C,M,g,P,T){return p==="generic"?this.data.get(this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T):this.data[this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T]},L.index=function(C,M,g,P,T){return this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T},L.hi=function(C,M,g,P,T){return new A(this.data,typeof C!="number"||C<0?this.shape[0]:C|0,typeof M!="number"||M<0?this.shape[1]:M|0,typeof g!="number"||g<0?this.shape[2]:g|0,typeof P!="number"||P<0?this.shape[3]:P|0,typeof T!="number"||T<0?this.shape[4]:T|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},L.lo=function(C,M,g,P,T){var F=this.offset,q=0,V=this.shape[0],H=this.shape[1],X=this.shape[2],G=this.shape[3],N=this.shape[4],W=this.stride[0],re=this.stride[1],ae=this.stride[2],_e=this.stride[3],Me=this.stride[4];return typeof C=="number"&&C>=0&&(q=C|0,F+=W*q,V-=q),typeof M=="number"&&M>=0&&(q=M|0,F+=re*q,H-=q),typeof g=="number"&&g>=0&&(q=g|0,F+=ae*q,X-=q),typeof P=="number"&&P>=0&&(q=P|0,F+=_e*q,G-=q),typeof T=="number"&&T>=0&&(q=T|0,F+=Me*q,N-=q),new A(this.data,V,H,X,G,N,W,re,ae,_e,Me,F)},L.step=function(C,M,g,P,T){var F=this.shape[0],q=this.shape[1],V=this.shape[2],H=this.shape[3],X=this.shape[4],G=this.stride[0],N=this.stride[1],W=this.stride[2],re=this.stride[3],ae=this.stride[4],_e=this.offset,Me=0,ke=Math.ceil;return typeof C=="number"&&(Me=C|0,Me<0?(_e+=G*(F-1),F=ke(-F/Me)):F=ke(F/Me),G*=Me),typeof M=="number"&&(Me=M|0,Me<0?(_e+=N*(q-1),q=ke(-q/Me)):q=ke(q/Me),N*=Me),typeof g=="number"&&(Me=g|0,Me<0?(_e+=W*(V-1),V=ke(-V/Me)):V=ke(V/Me),W*=Me),typeof P=="number"&&(Me=P|0,Me<0?(_e+=re*(H-1),H=ke(-H/Me)):H=ke(H/Me),re*=Me),typeof T=="number"&&(Me=T|0,Me<0?(_e+=ae*(X-1),X=ke(-X/Me)):X=ke(X/Me),ae*=Me),new A(this.data,F,q,V,H,X,G,N,W,re,ae,_e)},L.transpose=function(C,M,g,P,T){C=C===void 0?0:C|0,M=M===void 0?1:M|0,g=g===void 0?2:g|0,P=P===void 0?3:P|0,T=T===void 0?4:T|0;var F=this.shape,q=this.stride;return new A(this.data,F[C],F[M],F[g],F[P],F[T],q[C],q[M],q[g],q[P],q[T],this.offset)},L.pick=function(C,M,g,P,T){var F=[],q=[],V=this.offset;typeof C=="number"&&C>=0?V=V+this.stride[0]*C|0:(F.push(this.shape[0]),q.push(this.stride[0])),typeof M=="number"&&M>=0?V=V+this.stride[1]*M|0:(F.push(this.shape[1]),q.push(this.stride[1])),typeof g=="number"&&g>=0?V=V+this.stride[2]*g|0:(F.push(this.shape[2]),q.push(this.stride[2])),typeof P=="number"&&P>=0?V=V+this.stride[3]*P|0:(F.push(this.shape[3]),q.push(this.stride[3])),typeof T=="number"&&T>=0?V=V+this.stride[4]*T|0:(F.push(this.shape[4]),q.push(this.stride[4]));var H=E[F.length+1];return H(this.data,F,q,V)},function(C,M,g,P){return new A(C,M[0],M[1],M[2],M[3],M[4],g[0],g[1],g[2],g[3],g[4],P)}}};function h(b,p){var E=p===-1?"T":String(p),k=f[E];return p===-1?k(b):p===0?k(b,v[b][0]):k(b,v[b],c)}function d(b){if(s(b))return"buffer";if(l)switch(Object.prototype.toString.call(b)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(b)?"array":"generic"}var v={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};function x(b,p,E,k){if(b===void 0){var g=v.array[0];return g([])}else typeof b=="number"&&(b=[b]);p===void 0&&(p=[b.length]);var A=p.length;if(E===void 0){E=new Array(A);for(var L=A-1,_=1;L>=0;--L)E[L]=_,_*=p[L]}if(k===void 0){k=0;for(var L=0;L>>0;i.exports=c;function c(f,h){if(isNaN(f)||isNaN(h))return NaN;if(f===h)return f;if(f===0)return h<0?-l:l;var d=s.hi(f),v=s.lo(f);return h>f==f>0?v===u?(d+=1,v=0):v+=1:v===0?(v=u,d-=1):v-=1,s.pack(v,d)}},8406:function(i,a){var o=1e-6,s=1e-6;a.vertexNormals=function(l,u,c){for(var f=u.length,h=new Array(f),d=c===void 0?o:c,v=0;vd)for(var F=h[p],q=1/Math.sqrt(M*P),T=0;T<3;++T){var V=(T+1)%3,H=(T+2)%3;F[T]+=q*(g[V]*C[H]-g[H]*C[V])}}for(var v=0;vd)for(var q=1/Math.sqrt(X),T=0;T<3;++T)F[T]*=q;else for(var T=0;T<3;++T)F[T]=0}return h},a.faceNormals=function(l,u,c){for(var f=l.length,h=new Array(f),d=c===void 0?s:c,v=0;vd?L=1/Math.sqrt(L):L=0;for(var p=0;p<3;++p)A[p]*=L;h[v]=A}return h}},4081:function(i){"use strict";i.exports=a;function a(o,s,l,u,c,f,h,d,v,x){var b=s+f+x;if(p>0){var p=Math.sqrt(b+1);o[0]=.5*(h-v)/p,o[1]=.5*(d-u)/p,o[2]=.5*(l-f)/p,o[3]=.5*p}else{var E=Math.max(s,f,x),p=Math.sqrt(2*E-b+1);s>=E?(o[0]=.5*p,o[1]=.5*(c+l)/p,o[2]=.5*(d+u)/p,o[3]=.5*(h-v)/p):f>=E?(o[0]=.5*(l+c)/p,o[1]=.5*p,o[2]=.5*(v+h)/p,o[3]=.5*(d-u)/p):(o[0]=.5*(u+d)/p,o[1]=.5*(h+v)/p,o[2]=.5*p,o[3]=.5*(l-c)/p)}return o}},9977:function(i,a,o){"use strict";i.exports=p;var s=o(9215),l=o(6582),u=o(7399),c=o(7608),f=o(4081);function h(E,k,A){return Math.sqrt(Math.pow(E,2)+Math.pow(k,2)+Math.pow(A,2))}function d(E,k,A,L){return Math.sqrt(Math.pow(E,2)+Math.pow(k,2)+Math.pow(A,2)+Math.pow(L,2))}function v(E,k){var A=k[0],L=k[1],_=k[2],C=k[3],M=d(A,L,_,C);M>1e-6?(E[0]=A/M,E[1]=L/M,E[2]=_/M,E[3]=C/M):(E[0]=E[1]=E[2]=0,E[3]=1)}function x(E,k,A){this.radius=s([A]),this.center=s(k),this.rotation=s(E),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var b=x.prototype;b.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},b.recalcMatrix=function(E){this.radius.curve(E),this.center.curve(E),this.rotation.curve(E);var k=this.computedRotation;v(k,k);var A=this.computedMatrix;u(A,k);var L=this.computedCenter,_=this.computedEye,C=this.computedUp,M=Math.exp(this.computedRadius[0]);_[0]=L[0]+M*A[2],_[1]=L[1]+M*A[6],_[2]=L[2]+M*A[10],C[0]=A[1],C[1]=A[5],C[2]=A[9];for(var g=0;g<3;++g){for(var P=0,T=0;T<3;++T)P+=A[g+4*T]*_[T];A[12+g]=-P}},b.getMatrix=function(E,k){this.recalcMatrix(E);var A=this.computedMatrix;if(k){for(var L=0;L<16;++L)k[L]=A[L];return k}return A},b.idle=function(E){this.center.idle(E),this.radius.idle(E),this.rotation.idle(E)},b.flush=function(E){this.center.flush(E),this.radius.flush(E),this.rotation.flush(E)},b.pan=function(E,k,A,L){k=k||0,A=A||0,L=L||0,this.recalcMatrix(E);var _=this.computedMatrix,C=_[1],M=_[5],g=_[9],P=h(C,M,g);C/=P,M/=P,g/=P;var T=_[0],F=_[4],q=_[8],V=T*C+F*M+q*g;T-=C*V,F-=M*V,q-=g*V;var H=h(T,F,q);T/=H,F/=H,q/=H;var X=_[2],G=_[6],N=_[10],W=X*C+G*M+N*g,re=X*T+G*F+N*q;X-=W*C+re*T,G-=W*M+re*F,N-=W*g+re*q;var ae=h(X,G,N);X/=ae,G/=ae,N/=ae;var _e=T*k+C*A,Me=F*k+M*A,ke=q*k+g*A;this.center.move(E,_e,Me,ke);var ge=Math.exp(this.computedRadius[0]);ge=Math.max(1e-4,ge+L),this.radius.set(E,Math.log(ge))},b.rotate=function(E,k,A,L){this.recalcMatrix(E),k=k||0,A=A||0;var _=this.computedMatrix,C=_[0],M=_[4],g=_[8],P=_[1],T=_[5],F=_[9],q=_[2],V=_[6],H=_[10],X=k*C+A*P,G=k*M+A*T,N=k*g+A*F,W=-(V*N-H*G),re=-(H*X-q*N),ae=-(q*G-V*X),_e=Math.sqrt(Math.max(0,1-Math.pow(W,2)-Math.pow(re,2)-Math.pow(ae,2))),Me=d(W,re,ae,_e);Me>1e-6?(W/=Me,re/=Me,ae/=Me,_e/=Me):(W=re=ae=0,_e=1);var ke=this.computedRotation,ge=ke[0],ie=ke[1],Te=ke[2],Ee=ke[3],Ae=ge*_e+Ee*W+ie*ae-Te*re,ze=ie*_e+Ee*re+Te*W-ge*ae,Ce=Te*_e+Ee*ae+ge*re-ie*W,me=Ee*_e-ge*W-ie*re-Te*ae;if(L){W=q,re=V,ae=H;var Re=Math.sin(L)/h(W,re,ae);W*=Re,re*=Re,ae*=Re,_e=Math.cos(k),Ae=Ae*_e+me*W+ze*ae-Ce*re,ze=ze*_e+me*re+Ce*W-Ae*ae,Ce=Ce*_e+me*ae+Ae*re-ze*W,me=me*_e-Ae*W-ze*re-Ce*ae}var ce=d(Ae,ze,Ce,me);ce>1e-6?(Ae/=ce,ze/=ce,Ce/=ce,me/=ce):(Ae=ze=Ce=0,me=1),this.rotation.set(E,Ae,ze,Ce,me)},b.lookAt=function(E,k,A,L){this.recalcMatrix(E),A=A||this.computedCenter,k=k||this.computedEye,L=L||this.computedUp;var _=this.computedMatrix;l(_,k,A,L);var C=this.computedRotation;f(C,_[0],_[1],_[2],_[4],_[5],_[6],_[8],_[9],_[10]),v(C,C),this.rotation.set(E,C[0],C[1],C[2],C[3]);for(var M=0,g=0;g<3;++g)M+=Math.pow(A[g]-k[g],2);this.radius.set(E,.5*Math.log(Math.max(M,1e-6))),this.center.set(E,A[0],A[1],A[2])},b.translate=function(E,k,A,L){this.center.move(E,k||0,A||0,L||0)},b.setMatrix=function(E,k){var A=this.computedRotation;f(A,k[0],k[1],k[2],k[4],k[5],k[6],k[8],k[9],k[10]),v(A,A),this.rotation.set(E,A[0],A[1],A[2],A[3]);var L=this.computedMatrix;c(L,k);var _=L[15];if(Math.abs(_)>1e-6){var C=L[12]/_,M=L[13]/_,g=L[14]/_;this.recalcMatrix(E);var P=Math.exp(this.computedRadius[0]);this.center.set(E,C-L[2]*P,M-L[6]*P,g-L[10]*P),this.radius.idle(E)}else this.center.idle(E),this.radius.idle(E)},b.setDistance=function(E,k){k>0&&this.radius.set(E,Math.log(k))},b.setDistanceLimits=function(E,k){E>0?E=Math.log(E):E=-1/0,k>0?k=Math.log(k):k=1/0,k=Math.max(k,E),this.radius.bounds[0][0]=E,this.radius.bounds[1][0]=k},b.getDistanceLimits=function(E){var k=this.radius.bounds;return E?(E[0]=Math.exp(k[0][0]),E[1]=Math.exp(k[1][0]),E):[Math.exp(k[0][0]),Math.exp(k[1][0])]},b.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},b.fromJSON=function(E){var k=this.lastT(),A=E.center;A&&this.center.set(k,A[0],A[1],A[2]);var L=E.rotation;L&&this.rotation.set(k,L[0],L[1],L[2],L[3]);var _=E.distance;_&&_>0&&this.radius.set(k,Math.log(_)),this.setDistanceLimits(E.zoomMin,E.zoomMax)};function p(E){E=E||{};var k=E.center||[0,0,0],A=E.rotation||[0,0,0,1],L=E.radius||1;k=[].slice.call(k,0,3),A=[].slice.call(A,0,4),v(A,A);var _=new x(A,k,Math.log(L));return _.setDistanceLimits(E.zoomMin,E.zoomMax),("eye"in E||"up"in E)&&_.lookAt(0,E.eye,E.center,E.up),_}},1371:function(i,a,o){"use strict";var s=o(3233);i.exports=function(u,c,f){return f=typeof f!="undefined"?f+"":" ",s(f,c)+u}},3202:function(i){i.exports=function(o,s){s||(s=[0,""]),o=String(o);var l=parseFloat(o,10);return s[0]=l,s[1]=o.match(/[\d.\-\+]*\s*(.*)/)[1]||"",s}},3088:function(i,a,o){"use strict";i.exports=l;var s=o(3140);function l(u,c){for(var f=c.length|0,h=u.length,d=[new Array(f),new Array(f)],v=0;v0){F=d[H][P][0],V=H;break}q=F[V^1];for(var X=0;X<2;++X)for(var G=d[X][P],N=0;N0&&(F=W,q=re,V=X)}return T||F&&p(F,V),q}function k(g,P){var T=d[P][g][0],F=[g];p(T,P);for(var q=T[P^1],V=P;;){for(;q!==g;)F.push(q),q=E(F[F.length-2],q,!1);if(d[0][g].length+d[1][g].length===0)break;var H=F[F.length-1],X=g,G=F[1],N=E(H,X,!0);if(s(c[H],c[X],c[G],c[N])<0)break;F.push(g),q=E(H,X)}return F}function A(g,P){return P[1]===P[P.length-1]}for(var v=0;v0;){var C=d[0][v].length,M=k(v,L);A(_,M)?_.push.apply(_,M):(_.length>0&&b.push(_),_=M)}_.length>0&&b.push(_)}return b}},5609:function(i,a,o){"use strict";i.exports=l;var s=o(3134);function l(u,c){for(var f=s(u,c.length),h=new Array(c.length),d=new Array(c.length),v=[],x=0;x0;){var p=v.pop();h[p]=!1;for(var E=f[p],x=0;x0}C=C.filter(M);for(var g=C.length,P=new Array(g),T=new Array(g),_=0;_0;){var ce=Ce.pop(),Ge=Me[ce];h(Ge,function(ot,Rt){return ot-Rt});var nt=Ge.length,ct=me[ce],qt;if(ct===0){var G=C[ce];qt=[G]}for(var _=0;_=0)&&(me[rt]=ct^1,Ce.push(rt),ct===0)){var G=C[rt];ze(G)||(G.reverse(),qt.push(G))}}ct===0&&Re.push(qt)}return Re}},5085:function(i,a,o){i.exports=E;var s=o(3250)[3],l=o(4209),u=o(3352),c=o(2478);function f(){return!0}function h(k){return function(A,L){var _=k[A];return _?!!_.queryPoint(L,f):!1}}function d(k){for(var A={},L=0;L0&&A[_]===L[0])C=k[_-1];else return 1;for(var M=1;C;){var g=C.key,P=s(L,g[0],g[1]);if(g[0][0]0)M=-1,C=C.right;else return 0;else if(P>0)C=C.left;else if(P<0)M=1,C=C.right;else return 0}return M}}function x(k){return 1}function b(k){return function(L){return k(L[0],L[1])?0:1}}function p(k,A){return function(_){return k(_[0],_[1])?0:A(_)}}function E(k){for(var A=k.length,L=[],_=[],C=0,M=0;M=x?(g=1,T=x+2*E+A):(g=-E/x,T=E*g+A)):(g=0,k>=0?(P=0,T=A):-k>=p?(P=1,T=p+2*k+A):(P=-k/p,T=k*P+A));else if(P<0)P=0,E>=0?(g=0,T=A):-E>=x?(g=1,T=x+2*E+A):(g=-E/x,T=E*g+A);else{var F=1/M;g*=F,P*=F,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A}else{var q,V,H,X;g<0?(q=b+E,V=p+k,V>q?(H=V-q,X=x-2*b+p,H>=X?(g=1,P=0,T=x+2*E+A):(g=H/X,P=1-g,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)):(g=0,V<=0?(P=1,T=p+2*k+A):k>=0?(P=0,T=A):(P=-k/p,T=k*P+A))):P<0?(q=b+k,V=x+E,V>q?(H=V-q,X=x-2*b+p,H>=X?(P=1,g=0,T=p+2*k+A):(P=H/X,g=1-P,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)):(P=0,V<=0?(g=1,T=x+2*E+A):E>=0?(g=0,T=A):(g=-E/x,T=E*g+A))):(H=p+k-b-E,H<=0?(g=0,P=1,T=p+2*k+A):(X=x-2*b+p,H>=X?(g=1,P=0,T=x+2*E+A):(g=H/X,P=1-g,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)))}for(var G=1-g-P,v=0;v0){var p=f[d-1];if(s(x,p)===0&&u(p)!==b){d-=1;continue}}f[d++]=x}}return f.length=d,f}},3233:function(i){"use strict";var a="",o;i.exports=s;function s(l,u){if(typeof l!="string")throw new TypeError("expected a string");if(u===1)return l;if(u===2)return l+l;var c=l.length*u;if(o!==l||typeof o=="undefined")o=l,a="";else if(a.length>=c)return a.substr(0,c);for(;c>a.length&&u>1;)u&1&&(a+=l),u>>=1,l+=l;return a+=l,a=a.substr(0,c),a}},3025:function(i,a,o){i.exports=o.g.performance&&o.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},7004:function(i){"use strict";i.exports=a;function a(o){for(var s=o.length,l=o[o.length-1],u=s,c=s-2;c>=0;--c){var f=l,h=o[c];l=f+h;var d=l-f,v=h-d;v&&(o[--u]=l,l=v)}for(var x=0,c=u;c0){if(V<=0)return H;X=q+V}else if(q<0){if(V>=0)return H;X=-(q+V)}else return H;var G=d*X;return H>=G||H<=-G?H:k(P,T,F)},function(P,T,F,q){var V=P[0]-q[0],H=T[0]-q[0],X=F[0]-q[0],G=P[1]-q[1],N=T[1]-q[1],W=F[1]-q[1],re=P[2]-q[2],ae=T[2]-q[2],_e=F[2]-q[2],Me=H*W,ke=X*N,ge=X*G,ie=V*W,Te=V*N,Ee=H*G,Ae=re*(Me-ke)+ae*(ge-ie)+_e*(Te-Ee),ze=(Math.abs(Me)+Math.abs(ke))*Math.abs(re)+(Math.abs(ge)+Math.abs(ie))*Math.abs(ae)+(Math.abs(Te)+Math.abs(Ee))*Math.abs(_e),Ce=v*ze;return Ae>Ce||-Ae>Ce?Ae:A(P,T,F,q)}];function _(g){var P=L[g.length];return P||(P=L[g.length]=E(g.length)),P.apply(void 0,g)}function C(g,P,T,F,q,V,H){return function(G,N,W,re,ae){switch(arguments.length){case 0:case 1:return 0;case 2:return F(G,N);case 3:return q(G,N,W);case 4:return V(G,N,W,re);case 5:return H(G,N,W,re,ae)}for(var _e=new Array(arguments.length),Me=0;Me0&&x>0||v<0&&x<0)return!1;var b=s(h,c,f),p=s(d,c,f);return b>0&&p>0||b<0&&p<0?!1:v===0&&x===0&&b===0&&p===0?l(c,f,h,d):!0}},8545:function(i){"use strict";i.exports=o;function a(s,l){var u=s+l,c=u-s,f=u-c,h=l-c,d=s-f,v=d+h;return v?[v,u]:[u]}function o(s,l){var u=s.length|0,c=l.length|0;if(u===1&&c===1)return a(s[0],-l[0]);var f=u+c,h=new Array(f),d=0,v=0,x=0,b=Math.abs,p=s[v],E=b(p),k=-l[x],A=b(k),L,_;E=c?(L=p,v+=1,v=c?(L=p,v+=1,v>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,X=d(P[H],T);X<=0?(X===0&&(V=H),F=H+1):X>0&&(q=H-1)}return V}s=p;function E(P,T){for(var F=new Array(P.length),q=0,V=F.length;q=P.length||d(P[Me],H)!==0););}return F}s=E;function k(P,T){if(!T)return E(b(L(P,0)),P,0);for(var F=new Array(T),q=0;q>>W&1&&N.push(V[W]);T.push(N)}return x(T)}s=A;function L(P,T){if(T<0)return[];for(var F=[],q=(1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},2014:function(i,a,o){"use strict";"use restrict";var s=o(3105),l=o(4623);function u(g){for(var P=0,T=Math.max,F=0,q=g.length;F>1,H=h(g[V],P);H<=0?(H===0&&(q=V),T=V+1):H>0&&(F=V-1)}return q}a.findCell=b;function p(g,P){for(var T=new Array(g.length),F=0,q=T.length;F=g.length||h(g[_e],V)!==0););}return T}a.incidence=p;function E(g,P){if(!P)return p(x(A(g,0)),g,0);for(var T=new Array(P),F=0;F>>N&1&&G.push(q[N]);P.push(G)}return v(P)}a.explode=k;function A(g,P){if(P<0)return[];for(var T=[],F=(1<>1:(ie>>1)-1}function F(ie){for(var Te=P(ie);;){var Ee=Te,Ae=2*ie+1,ze=2*(ie+1),Ce=ie;if(Ae0;){var Ee=T(ie);if(Ee>=0){var Ae=P(Ee);if(Te0){var ie=G[0];return g(0,re-1),re-=1,F(0),ie}return-1}function H(ie,Te){var Ee=G[ie];return E[Ee]===Te?ie:(E[Ee]=-1/0,q(ie),V(),E[Ee]=Te,re+=1,q(re-1))}function X(ie){if(!k[ie]){k[ie]=!0;var Te=b[ie],Ee=p[ie];b[Ee]>=0&&(b[Ee]=Te),p[Te]>=0&&(p[Te]=Ee),N[Te]>=0&&H(N[Te],M(Te)),N[Ee]>=0&&H(N[Ee],M(Ee))}}for(var G=[],N=new Array(v),A=0;A>1;A>=0;--A)F(A);for(;;){var ae=V();if(ae<0||E[ae]>d)break;X(ae)}for(var _e=[],A=0;A=0&&Ee>=0&&Te!==Ee){var Ae=N[Te],ze=N[Ee];Ae!==ze&&ge.push([Ae,ze])}}),l.unique(l.normalize(ge)),{positions:_e,edges:ge}}},1303:function(i,a,o){"use strict";i.exports=u;var s=o(3250);function l(c,f){var h,d;if(f[0][0]f[1][0])h=f[1],d=f[0];else{var v=Math.min(c[0][1],c[1][1]),x=Math.max(c[0][1],c[1][1]),b=Math.min(f[0][1],f[1][1]),p=Math.max(f[0][1],f[1][1]);return xp?v-p:x-p}var E,k;c[0][1]f[1][0])h=f[1],d=f[0];else return l(f,c);var v,x;if(c[0][0]c[1][0])v=c[1],x=c[0];else return-l(c,f);var b=s(h,d,x),p=s(h,d,v);if(b<0){if(p<=0)return b}else if(b>0){if(p>=0)return b}else if(p)return p;if(b=s(x,v,d),p=s(x,v,h),b<0){if(p<=0)return b}else if(b>0){if(p>=0)return b}else if(p)return p;return d[0]-x[0]}},4209:function(i,a,o){"use strict";i.exports=p;var s=o(2478),l=o(3840),u=o(3250),c=o(1303);function f(E,k,A){this.slabs=E,this.coordinates=k,this.horizontal=A}var h=f.prototype;function d(E,k){return E.y-k}function v(E,k){for(var A=null;E;){var L=E.key,_,C;L[0][0]0)if(k[0]!==L[1][0])A=E,E=E.right;else{var g=v(E.right,k);if(g)return g;E=E.left}else{if(k[0]!==L[1][0])return E;var g=v(E.right,k);if(g)return g;E=E.left}}return A}h.castUp=function(E){var k=s.le(this.coordinates,E[0]);if(k<0)return-1;var A=this.slabs[k],L=v(this.slabs[k],E),_=-1;if(L&&(_=L.value),this.coordinates[k]===E[0]){var C=null;if(L&&(C=L.key),k>0){var M=v(this.slabs[k-1],E);M&&(C?c(M.key,C)>0&&(C=M.key,_=M.value):(_=M.value,C=M.key))}var g=this.horizontal[k];if(g.length>0){var P=s.ge(g,E[1],d);if(P=g.length)return _;T=g[P]}}if(T.start)if(C){var F=u(C[0],C[1],[E[0],T.y]);C[0][0]>C[1][0]&&(F=-F),F>0&&(_=T.index)}else _=T.index;else T.y!==E[1]&&(_=T.index)}}}return _};function x(E,k,A,L){this.y=E,this.index=k,this.start=A,this.closed=L}function b(E,k,A,L){this.x=E,this.segment=k,this.create=A,this.index=L}function p(E){for(var k=E.length,A=2*k,L=new Array(A),_=0;_1&&(k=1);for(var A=1-k,L=v.length,_=new Array(L),C=0;C0||E>0&&_<0){var C=c(k,_,A,E);b.push(C),p.push(C.slice())}_<0?p.push(A.slice()):_>0?b.push(A.slice()):(b.push(A.slice()),p.push(A.slice())),E=_}return{positive:b,negative:p}}function h(v,x){for(var b=[],p=u(v[v.length-1],x),E=v[v.length-1],k=v[0],A=0;A0||p>0&&L<0)&&b.push(c(E,L,k,p)),L>=0&&b.push(k.slice()),p=L}return b}function d(v,x){for(var b=[],p=u(v[v.length-1],x),E=v[v.length-1],k=v[0],A=0;A0||p>0&&L<0)&&b.push(c(E,L,k,p)),L<=0&&b.push(k.slice()),p=L}return b}},3387:function(i,a,o){var s;(function(){"use strict";var l={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function u(v){return f(d(v),arguments)}function c(v,x){return u.apply(null,[v].concat(x||[]))}function f(v,x){var b=1,p=v.length,E,k="",A,L,_,C,M,g,P,T;for(A=0;A=0),_.type){case"b":E=parseInt(E,10).toString(2);break;case"c":E=String.fromCharCode(parseInt(E,10));break;case"d":case"i":E=parseInt(E,10);break;case"j":E=JSON.stringify(E,null,_.width?parseInt(_.width):0);break;case"e":E=_.precision?parseFloat(E).toExponential(_.precision):parseFloat(E).toExponential();break;case"f":E=_.precision?parseFloat(E).toFixed(_.precision):parseFloat(E);break;case"g":E=_.precision?String(Number(E.toPrecision(_.precision))):parseFloat(E);break;case"o":E=(parseInt(E,10)>>>0).toString(8);break;case"s":E=String(E),E=_.precision?E.substring(0,_.precision):E;break;case"t":E=String(!!E),E=_.precision?E.substring(0,_.precision):E;break;case"T":E=Object.prototype.toString.call(E).slice(8,-1).toLowerCase(),E=_.precision?E.substring(0,_.precision):E;break;case"u":E=parseInt(E,10)>>>0;break;case"v":E=E.valueOf(),E=_.precision?E.substring(0,_.precision):E;break;case"x":E=(parseInt(E,10)>>>0).toString(16);break;case"X":E=(parseInt(E,10)>>>0).toString(16).toUpperCase();break}l.json.test(_.type)?k+=E:(l.number.test(_.type)&&(!P||_.sign)?(T=P?"+":"-",E=E.toString().replace(l.sign,"")):T="",M=_.pad_char?_.pad_char==="0"?"0":_.pad_char.charAt(1):" ",g=_.width-(T+E).length,C=_.width&&g>0?M.repeat(g):"",k+=_.align?T+E+C:M==="0"?T+C+E:C+T+E)}return k}var h=Object.create(null);function d(v){if(h[v])return h[v];for(var x=v,b,p=[],E=0;x;){if((b=l.text.exec(x))!==null)p.push(b[0]);else if((b=l.modulo.exec(x))!==null)p.push("%");else if((b=l.placeholder.exec(x))!==null){if(b[2]){E|=1;var k=[],A=b[2],L=[];if((L=l.key.exec(A))!==null)for(k.push(L[1]);(A=A.substring(L[0].length))!=="";)if((L=l.key_access.exec(A))!==null)k.push(L[1]);else if((L=l.index_access.exec(A))!==null)k.push(L[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");b[2]=k}else E|=2;if(E===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");p.push({placeholder:b[0],param_no:b[1],keys:b[2],sign:b[3],pad_char:b[4],align:b[5],width:b[6],precision:b[7],type:b[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");x=x.substring(b[0].length)}return h[v]=p}a.sprintf=u,a.vsprintf=c,typeof window!="undefined"&&(window.sprintf=u,window.vsprintf=c,s=function(){return{sprintf:u,vsprintf:c}}.call(a,o,a,i),s!==void 0&&(i.exports=s))})()},3711:function(i,a,o){"use strict";i.exports=d;var s=o(2640),l=o(781),u={"2d":function(v,x,b){var p=v({order:x,scalarArguments:3,getters:b==="generic"?[0]:void 0,phase:function(k,A,L,_){return k>_|0},vertex:function(k,A,L,_,C,M,g,P,T,F,q,V,H){var X=(g<<0)+(P<<1)+(T<<2)+(F<<3)|0;if(!(X===0||X===15))switch(X){case 0:q.push([k-.5,A-.5]);break;case 1:q.push([k-.25-.25*(_+L-2*H)/(L-_),A-.25-.25*(C+L-2*H)/(L-C)]);break;case 2:q.push([k-.75-.25*(-_-L+2*H)/(_-L),A-.25-.25*(M+_-2*H)/(_-M)]);break;case 3:q.push([k-.5,A-.5-.5*(C+L+M+_-4*H)/(L-C+_-M)]);break;case 4:q.push([k-.25-.25*(M+C-2*H)/(C-M),A-.75-.25*(-C-L+2*H)/(C-L)]);break;case 5:q.push([k-.5-.5*(_+L+M+C-4*H)/(L-_+C-M),A-.5]);break;case 6:q.push([k-.5-.25*(-_-L+M+C)/(_-L+C-M),A-.5-.25*(-C-L+M+_)/(C-L+_-M)]);break;case 7:q.push([k-.75-.25*(M+C-2*H)/(C-M),A-.75-.25*(M+_-2*H)/(_-M)]);break;case 8:q.push([k-.75-.25*(-M-C+2*H)/(M-C),A-.75-.25*(-M-_+2*H)/(M-_)]);break;case 9:q.push([k-.5-.25*(_+L+-M-C)/(L-_+M-C),A-.5-.25*(C+L+-M-_)/(L-C+M-_)]);break;case 10:q.push([k-.5-.5*(-_-L+-M-C+4*H)/(_-L+M-C),A-.5]);break;case 11:q.push([k-.25-.25*(-M-C+2*H)/(M-C),A-.75-.25*(C+L-2*H)/(L-C)]);break;case 12:q.push([k-.5,A-.5-.5*(-C-L+-M-_+4*H)/(C-L+M-_)]);break;case 13:q.push([k-.75-.25*(_+L-2*H)/(L-_),A-.25-.25*(-M-_+2*H)/(M-_)]);break;case 14:q.push([k-.25-.25*(-_-L+2*H)/(_-L),A-.25-.25*(-C-L+2*H)/(C-L)]);break;case 15:q.push([k-.5,A-.5]);break}},cell:function(k,A,L,_,C,M,g,P,T){C?P.push([k,A]):P.push([A,k])}});return function(E,k){var A=[],L=[];return p(E,A,L,k),{positions:A,cells:L}}}};function c(v,x){var b=v.length+"d",p=u[b];if(p)return p(s,v,x)}function f(v,x){for(var b=l(v,x),p=b.length,E=new Array(p),k=new Array(p),A=0;AMath.max(_,C)?M[2]=1:_>Math.max(L,C)?M[0]=1:M[1]=1;for(var g=0,P=0,T=0;T<3;++T)g+=A[T]*A[T],P+=M[T]*A[T];for(var T=0;T<3;++T)M[T]-=P/g*A[T];return f(M,M),M}function b(A,L,_,C,M,g,P,T){this.center=s(_),this.up=s(C),this.right=s(M),this.radius=s([g]),this.angle=s([P,T]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(A,L),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var F=0;F<16;++F)this.computedMatrix[F]=.5;this.recalcMatrix(0)}var p=b.prototype;p.setDistanceLimits=function(A,L){A>0?A=Math.log(A):A=-1/0,L>0?L=Math.log(L):L=1/0,L=Math.max(L,A),this.radius.bounds[0][0]=A,this.radius.bounds[1][0]=L},p.getDistanceLimits=function(A){var L=this.radius.bounds[0];return A?(A[0]=Math.exp(L[0][0]),A[1]=Math.exp(L[1][0]),A):[Math.exp(L[0][0]),Math.exp(L[1][0])]},p.recalcMatrix=function(A){this.center.curve(A),this.up.curve(A),this.right.curve(A),this.radius.curve(A),this.angle.curve(A);for(var L=this.computedUp,_=this.computedRight,C=0,M=0,g=0;g<3;++g)M+=L[g]*_[g],C+=L[g]*L[g];for(var P=Math.sqrt(C),T=0,g=0;g<3;++g)_[g]-=L[g]*M/C,T+=_[g]*_[g],L[g]/=P;for(var F=Math.sqrt(T),g=0;g<3;++g)_[g]/=F;var q=this.computedToward;c(q,L,_),f(q,q);for(var V=Math.exp(this.computedRadius[0]),H=this.computedAngle[0],X=this.computedAngle[1],G=Math.cos(H),N=Math.sin(H),W=Math.cos(X),re=Math.sin(X),ae=this.computedCenter,_e=G*W,Me=N*W,ke=re,ge=-G*re,ie=-N*re,Te=W,Ee=this.computedEye,Ae=this.computedMatrix,g=0;g<3;++g){var ze=_e*_[g]+Me*q[g]+ke*L[g];Ae[4*g+1]=ge*_[g]+ie*q[g]+Te*L[g],Ae[4*g+2]=ze,Ae[4*g+3]=0}var Ce=Ae[1],me=Ae[5],Re=Ae[9],ce=Ae[2],Ge=Ae[6],nt=Ae[10],ct=me*nt-Re*Ge,qt=Re*ce-Ce*nt,rt=Ce*Ge-me*ce,ot=d(ct,qt,rt);ct/=ot,qt/=ot,rt/=ot,Ae[0]=ct,Ae[4]=qt,Ae[8]=rt;for(var g=0;g<3;++g)Ee[g]=ae[g]+Ae[2+4*g]*V;for(var g=0;g<3;++g){for(var T=0,Rt=0;Rt<3;++Rt)T+=Ae[g+4*Rt]*Ee[Rt];Ae[12+g]=-T}Ae[15]=1},p.getMatrix=function(A,L){this.recalcMatrix(A);var _=this.computedMatrix;if(L){for(var C=0;C<16;++C)L[C]=_[C];return L}return _};var E=[0,0,0];p.rotate=function(A,L,_,C){if(this.angle.move(A,L,_),C){this.recalcMatrix(A);var M=this.computedMatrix;E[0]=M[2],E[1]=M[6],E[2]=M[10];for(var g=this.computedUp,P=this.computedRight,T=this.computedToward,F=0;F<3;++F)M[4*F]=g[F],M[4*F+1]=P[F],M[4*F+2]=T[F];u(M,M,C,E);for(var F=0;F<3;++F)g[F]=M[4*F],P[F]=M[4*F+1];this.up.set(A,g[0],g[1],g[2]),this.right.set(A,P[0],P[1],P[2])}},p.pan=function(A,L,_,C){L=L||0,_=_||0,C=C||0,this.recalcMatrix(A);var M=this.computedMatrix,g=Math.exp(this.computedRadius[0]),P=M[1],T=M[5],F=M[9],q=d(P,T,F);P/=q,T/=q,F/=q;var V=M[0],H=M[4],X=M[8],G=V*P+H*T+X*F;V-=P*G,H-=T*G,X-=F*G;var N=d(V,H,X);V/=N,H/=N,X/=N;var W=V*L+P*_,re=H*L+T*_,ae=X*L+F*_;this.center.move(A,W,re,ae);var _e=Math.exp(this.computedRadius[0]);_e=Math.max(1e-4,_e+C),this.radius.set(A,Math.log(_e))},p.translate=function(A,L,_,C){this.center.move(A,L||0,_||0,C||0)},p.setMatrix=function(A,L,_,C){var M=1;typeof _=="number"&&(M=_|0),(M<0||M>3)&&(M=1);var g=(M+2)%3,P=(M+1)%3;L||(this.recalcMatrix(A),L=this.computedMatrix);var T=L[M],F=L[M+4],q=L[M+8];if(C){var H=Math.abs(T),X=Math.abs(F),G=Math.abs(q),N=Math.max(H,X,G);H===N?(T=T<0?-1:1,F=q=0):G===N?(q=q<0?-1:1,T=F=0):(F=F<0?-1:1,T=q=0)}else{var V=d(T,F,q);T/=V,F/=V,q/=V}var W=L[g],re=L[g+4],ae=L[g+8],_e=W*T+re*F+ae*q;W-=T*_e,re-=F*_e,ae-=q*_e;var Me=d(W,re,ae);W/=Me,re/=Me,ae/=Me;var ke=F*ae-q*re,ge=q*W-T*ae,ie=T*re-F*W,Te=d(ke,ge,ie);ke/=Te,ge/=Te,ie/=Te,this.center.jump(A,er,Ke,xt),this.radius.idle(A),this.up.jump(A,T,F,q),this.right.jump(A,W,re,ae);var Ee,Ae;if(M===2){var ze=L[1],Ce=L[5],me=L[9],Re=ze*W+Ce*re+me*ae,ce=ze*ke+Ce*ge+me*ie;qt<0?Ee=-Math.PI/2:Ee=Math.PI/2,Ae=Math.atan2(ce,Re)}else{var Ge=L[2],nt=L[6],ct=L[10],qt=Ge*T+nt*F+ct*q,rt=Ge*W+nt*re+ct*ae,ot=Ge*ke+nt*ge+ct*ie;Ee=Math.asin(v(qt)),Ae=Math.atan2(ot,rt)}this.angle.jump(A,Ae,Ee),this.recalcMatrix(A);var Rt=L[2],kt=L[6],Ct=L[10],Yt=this.computedMatrix;l(Yt,L);var xr=Yt[15],er=Yt[12]/xr,Ke=Yt[13]/xr,xt=Yt[14]/xr,bt=Math.exp(this.computedRadius[0]);this.center.jump(A,er-Rt*bt,Ke-kt*bt,xt-Ct*bt)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(A){this.center.idle(A),this.up.idle(A),this.right.idle(A),this.radius.idle(A),this.angle.idle(A)},p.flush=function(A){this.center.flush(A),this.up.flush(A),this.right.flush(A),this.radius.flush(A),this.angle.flush(A)},p.setDistance=function(A,L){L>0&&this.radius.set(A,Math.log(L))},p.lookAt=function(A,L,_,C){this.recalcMatrix(A),L=L||this.computedEye,_=_||this.computedCenter,C=C||this.computedUp;var M=C[0],g=C[1],P=C[2],T=d(M,g,P);if(!(T<1e-6)){M/=T,g/=T,P/=T;var F=L[0]-_[0],q=L[1]-_[1],V=L[2]-_[2],H=d(F,q,V);if(!(H<1e-6)){F/=H,q/=H,V/=H;var X=this.computedRight,G=X[0],N=X[1],W=X[2],re=M*G+g*N+P*W;G-=re*M,N-=re*g,W-=re*P;var ae=d(G,N,W);if(!(ae<.01&&(G=g*V-P*q,N=P*F-M*V,W=M*q-g*F,ae=d(G,N,W),ae<1e-6))){G/=ae,N/=ae,W/=ae,this.up.set(A,M,g,P),this.right.set(A,G,N,W),this.center.set(A,_[0],_[1],_[2]),this.radius.set(A,Math.log(H));var _e=g*W-P*N,Me=P*G-M*W,ke=M*N-g*G,ge=d(_e,Me,ke);_e/=ge,Me/=ge,ke/=ge;var ie=M*F+g*q+P*V,Te=G*F+N*q+W*V,Ee=_e*F+Me*q+ke*V,Ae=Math.asin(v(ie)),ze=Math.atan2(Ee,Te),Ce=this.angle._state,me=Ce[Ce.length-1],Re=Ce[Ce.length-2];me=me%(2*Math.PI);var ce=Math.abs(me+2*Math.PI-ze),Ge=Math.abs(me-ze),nt=Math.abs(me-2*Math.PI-ze);ce0?W.pop():new ArrayBuffer(G)}a.mallocArrayBuffer=E;function k(X){return new Uint8Array(E(X),0,X)}a.mallocUint8=k;function A(X){return new Uint16Array(E(2*X),0,X)}a.mallocUint16=A;function L(X){return new Uint32Array(E(4*X),0,X)}a.mallocUint32=L;function _(X){return new Int8Array(E(X),0,X)}a.mallocInt8=_;function C(X){return new Int16Array(E(2*X),0,X)}a.mallocInt16=C;function M(X){return new Int32Array(E(4*X),0,X)}a.mallocInt32=M;function g(X){return new Float32Array(E(4*X),0,X)}a.mallocFloat32=a.mallocFloat=g;function P(X){return new Float64Array(E(8*X),0,X)}a.mallocFloat64=a.mallocDouble=P;function T(X){return c?new Uint8ClampedArray(E(X),0,X):k(X)}a.mallocUint8Clamped=T;function F(X){return f?new BigUint64Array(E(8*X),0,X):null}a.mallocBigUint64=F;function q(X){return h?new BigInt64Array(E(8*X),0,X):null}a.mallocBigInt64=q;function V(X){return new DataView(E(X),0,X)}a.mallocDataView=V;function H(X){X=s.nextPow2(X);var G=s.log2(X),N=x[G];return N.length>0?N.pop():new u(X)}a.mallocBuffer=H,a.clearCache=function(){for(var G=0;G<32;++G)d.UINT8[G].length=0,d.UINT16[G].length=0,d.UINT32[G].length=0,d.INT8[G].length=0,d.INT16[G].length=0,d.INT32[G].length=0,d.FLOAT[G].length=0,d.DOUBLE[G].length=0,d.BIGUINT64[G].length=0,d.BIGINT64[G].length=0,d.UINT8C[G].length=0,v[G].length=0,x[G].length=0}},1755:function(i){"use strict";"use restrict";i.exports=a;function a(s){this.roots=new Array(s),this.ranks=new Array(s);for(var l=0;l",W="",re=N.length,ae=W.length,_e=H[0]===E||H[0]===L,Me=0,ke=-ae;Me>-1&&(Me=X.indexOf(N,Me),!(Me===-1||(ke=X.indexOf(W,Me+re),ke===-1)||ke<=Me));){for(var ge=Me;ge=ke)G[ge]=null,X=X.substr(0,ge)+" "+X.substr(ge+1);else if(G[ge]!==null){var ie=G[ge].indexOf(H[0]);ie===-1?G[ge]+=H:_e&&(G[ge]=G[ge].substr(0,ie+1)+(1+parseInt(G[ge][ie+1]))+G[ge].substr(ie+2))}var Te=Me+re,Ee=X.substr(Te,ke-Te),Ae=Ee.indexOf(N);Ae!==-1?Me=Ae:Me=ke+ae}return G}function M(V,H,X){for(var G=H.textAlign||"start",N=H.textBaseline||"alphabetic",W=[1<<30,1<<30],re=[0,0],ae=V.length,_e=0;_e/g,` +`):X=X.replace(/\/g," ");var re="",ae=[];for(me=0;me-1?parseInt(Ke[1+Lt]):0,dt=St>-1?parseInt(xt[1+St]):0;Et!==dt&&(bt=bt.replace(rt(),"?px "),Ge*=Math.pow(.75,dt-Et),bt=bt.replace("?px ",rt())),ce+=.25*ie*(dt-Et)}if(W.superscripts===!0){var Ht=Ke.indexOf(E),$t=xt.indexOf(E),fr=Ht>-1?parseInt(Ke[1+Ht]):0,_r=$t>-1?parseInt(xt[1+$t]):0;fr!==_r&&(bt=bt.replace(rt(),"?px "),Ge*=Math.pow(.75,_r-fr),bt=bt.replace("?px ",rt())),ce-=.25*ie*(_r-fr)}if(W.bolds===!0){var Br=Ke.indexOf(v)>-1,Or=xt.indexOf(v)>-1;!Br&&Or&&(Nr?bt=bt.replace("italic ","italic bold "):bt="bold "+bt),Br&&!Or&&(bt=bt.replace("bold ",""))}if(W.italics===!0){var Nr=Ke.indexOf(b)>-1,ut=xt.indexOf(b)>-1;!Nr&&ut&&(bt="italic "+bt),Nr&&!ut&&(bt=bt.replace("italic ",""))}H.font=bt}for(Ce=0;Ce0&&(N=G.size),G.lineSpacing&&G.lineSpacing>0&&(W=G.lineSpacing),G.styletags&&G.styletags.breaklines&&(re.breaklines=!!G.styletags.breaklines),G.styletags&&G.styletags.bolds&&(re.bolds=!!G.styletags.bolds),G.styletags&&G.styletags.italics&&(re.italics=!!G.styletags.italics),G.styletags&&G.styletags.subscripts&&(re.subscripts=!!G.styletags.subscripts),G.styletags&&G.styletags.superscripts&&(re.superscripts=!!G.styletags.superscripts)),X.font=[G.fontStyle,G.fontVariant,G.fontWeight,N+"px",G.font].filter(function(_e){return _e}).join(" "),X.textAlign="start",X.textBaseline="alphabetic",X.direction="ltr";var ae=p(H,X,V,N,W,re);return F(ae,G,N)}},1538:function(i){(function(){"use strict";if(typeof ses!="undefined"&&ses.ok&&!ses.ok())return;function o(T){T.permitHostObjects___&&T.permitHostObjects___(o)}typeof ses!="undefined"&&(ses.weakMapPermitHostObjects=o);var s=!1;if(typeof WeakMap=="function"){var l=WeakMap;if(!(typeof navigator!="undefined"&&/Firefox/.test(navigator.userAgent))){var u=new l,c=Object.freeze({});if(u.set(c,1),u.get(c)!==1)s=!0;else{i.exports=WeakMap;return}}}var f=Object.prototype.hasOwnProperty,h=Object.getOwnPropertyNames,d=Object.defineProperty,v=Object.isExtensible,x="weakmap:",b=x+"ident:"+Math.random()+"___";if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"&&typeof ArrayBuffer=="function"&&typeof Uint8Array=="function"){var g=new ArrayBuffer(25),E=new Uint8Array(g);crypto.getRandomValues(E),b=x+"rand:"+Array.prototype.map.call(E,function(T){return(T%36).toString(36)}).join("")+"___"}function k(T){return!(T.substr(0,x.length)==x&&T.substr(T.length-3)==="___")}if(d(Object,"getOwnPropertyNames",{value:function(F){return h(F).filter(k)}}),"getPropertyNames"in Object){var A=Object.getPropertyNames;d(Object,"getPropertyNames",{value:function(F){return A(F).filter(k)}})}function L(T){if(T!==Object(T))throw new TypeError("Not an object: "+T);var F=T[b];if(F&&F.key===T)return F;if(v(T)){F={key:T};try{return d(T,b,{value:F,writable:!1,enumerable:!1,configurable:!1}),F}catch(q){return}}}(function(){var T=Object.freeze;d(Object,"freeze",{value:function(H){return L(H),T(H)}});var F=Object.seal;d(Object,"seal",{value:function(H){return L(H),F(H)}});var q=Object.preventExtensions;d(Object,"preventExtensions",{value:function(H){return L(H),q(H)}})})();function _(T){return T.prototype=null,Object.freeze(T)}var C=!1;function M(){!C&&typeof console!="undefined"&&(C=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}var p=0,P=function(){this instanceof P||M();var T=[],F=[],q=p++;function V(N,W){var re,ae=L(N);return ae?q in ae?ae[q]:W:(re=T.indexOf(N),re>=0?F[re]:W)}function H(N){var W=L(N);return W?q in W:T.indexOf(N)>=0}function X(N,W){var re,ae=L(N);return ae?ae[q]=W:(re=T.indexOf(N),re>=0?F[re]=W:(re=T.length,F[re]=W,T[re]=N)),this}function G(N){var W=L(N),re,ae;return W?q in W&&delete W[q]:(re=T.indexOf(N),re<0?!1:(ae=T.length-1,T[re]=void 0,F[re]=F[ae],T[re]=T[ae],T.length=ae,F.length=ae,!0))}return Object.create(P.prototype,{get___:{value:_(V)},has___:{value:_(H)},set___:{value:_(X)},delete___:{value:_(G)}})};P.prototype=Object.create(Object.prototype,{get:{value:function(F,q){return this.get___(F,q)},writable:!0,configurable:!0},has:{value:function(F){return this.has___(F)},writable:!0,configurable:!0},set:{value:function(F,q){return this.set___(F,q)},writable:!0,configurable:!0},delete:{value:function(F){return this.delete___(F)},writable:!0,configurable:!0}}),typeof l=="function"?function(){s&&typeof Proxy!="undefined"&&(Proxy=void 0);function T(){this instanceof P||M();var F=new l,q=void 0,V=!1;function H(W,re){return q?F.has(W)?F.get(W):q.get___(W,re):F.get(W,re)}function X(W){return F.has(W)||(q?q.has___(W):!1)}var G;s?G=function(W,re){return F.set(W,re),F.has(W)||(q||(q=new P),q.set(W,re)),this}:G=function(W,re){if(V)try{F.set(W,re)}catch(ae){q||(q=new P),q.set___(W,re)}else F.set(W,re);return this};function N(W){var re=!!F.delete(W);return q&&q.delete___(W)||re}return Object.create(P.prototype,{get___:{value:_(H)},has___:{value:_(X)},set___:{value:_(G)},delete___:{value:_(N)},permitHostObjects___:{value:_(function(W){if(W===o)V=!0;else throw new Error("bogus call to permitHostObjects___")})}})}T.prototype=P.prototype,i.exports=T,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy!="undefined"&&(Proxy=void 0),i.exports=P)})()},236:function(i,a,o){var s=o(8284);i.exports=l;function l(){var u={};return function(c){if((typeof c!="object"||c===null)&&typeof c!="function")throw new Error("Weakmap-shim: Key must be object");var f=c.valueOf(u);return f&&f.identity===u?f:s(c,u)}}},8284:function(i){i.exports=a;function a(o,s){var l={identity:s},u=o.valueOf;return Object.defineProperty(o,"valueOf",{value:function(c){return c!==s?u.apply(this,arguments):l},writable:!0}),l}},606:function(i,a,o){var s=o(236);i.exports=l;function l(){var u=s();return{get:function(c,f){var h=u(c);return h.hasOwnProperty("value")?h.value:f},set:function(c,f){return u(c).value=f,this},has:function(c){return"value"in u(c)},delete:function(c){return delete u(c).value}}}},3349:function(i){"use strict";function a(){return function(f,h,d,v,x,b){var g=f[0],E=d[0],k=[0],A=E;v|=0;var L=0,_=E;for(L=0;L=0!=M>=0&&x.push(k[0]+.5+.5*(C+M)/(C-M))}v+=_,++k[0]}}}function o(){return a()}var s=o;function l(f){var h={};return function(v,x,b){var g=v.dtype,E=v.order,k=[g,E.join()].join(),A=h[k];return A||(h[k]=A=f([g,E])),A(v.shape.slice(0),v.data,v.stride,v.offset|0,x,b)}}function u(f){return l(s.bind(void 0,f))}function c(f){return u({funcName:f.funcName})}i.exports=c({funcName:"zeroCrossings"})},781:function(i,a,o){"use strict";i.exports=l;var s=o(3349);function l(u,c){var f=[];return c=+c||0,s(u.hi(u.shape[0]-1),f,c),f}},7790:function(){}},t={};function r(i){var a=t[i];if(a!==void 0)return a.exports;var o=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}(function(){r.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(i){if(typeof window=="object")return window}}()})(),function(){r.nmd=function(i){return i.paths=[],i.children||(i.children=[]),i}}();var n=r(1964);aLe.exports=n})()});var sLe=ye((Xdr,oLe)=>{"use strict";oLe.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var fLe=ye((Ydr,cLe)=>{"use strict";var lLe=sLe();cLe.exports=Q6t;var uLe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function Q6t(e){var t,r=[],n=1,i;if(typeof e=="string")if(e=e.toLowerCase(),lLe[e])r=lLe[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(e)){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(e)){var l=t[1],u=l==="rgb",a=l.replace(/a$/,"");i=a;var o=a==="cmyk"?4:a==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(h,d){if(/%$/.test(h))return d===o?parseFloat(h)/100:a==="rgb"?parseFloat(h)*255/100:parseFloat(h);if(a[d]==="h"){if(/deg$/.test(h))return parseFloat(h);if(uLe[h]!==void 0)return uLe[h]}return parseFloat(h)}),l===a&&r.push(1),n=u||r[o]===void 0?1:r[o],r=r.slice(0,o)}else e.length>10&&/[0-9](?:\s|\/)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(c){return parseFloat(c)}),i=e.match(/([a-z])/ig).join("").toLowerCase());else isNaN(e)?Array.isArray(e)||e.length?(r=[e[0],e[1],e[2]],i="rgb",n=e.length===4?e[3]:1):e instanceof Object&&(e.r!=null||e.red!=null||e.R!=null?(i="rgb",r=[e.r||e.red||e.R||0,e.g||e.green||e.G||0,e.b||e.blue||e.B||0]):(i="hsl",r=[e.h||e.hue||e.H||0,e.s||e.saturation||e.S||0,e.l||e.lightness||e.L||e.b||e.brightness]),n=e.a||e.alpha||e.opacity||1,e.opacity!=null&&(n/=100)):(i="rgb",r=[e>>>16,(e&65280)>>>8,e&255]);return{space:i,values:r,alpha:n}}});var dLe=ye((Kdr,hLe)=>{"use strict";hLe.exports={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}});var pLe=ye((Jdr,vLe)=>{"use strict";var eLt=dLe();vLe.exports={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l;if(r===0)return l=n*255,[l,l,l];n<.5?a=n*(1+r):a=n+r-n*r,i=2*n-a,s=[0,0,0];for(var u=0;u<3;u++)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,6*o<1?l=i+(a-i)*6*o:2*o<1?l=a:3*o<2?l=i+(a-i)*(2/3-o)*6:l=i,s[u]=l*255;return s}};eLt.hsl=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=a-i,s,l,u;return a===i?s=0:t===a?s=(r-n)/o:r===a?s=2+(n-t)/o:n===a&&(s=4+(t-r)/o),s=Math.min(s*60,360),s<0&&(s+=360),u=(i+a)/2,a===i?l=0:u<=.5?l=o/(a+i):l=o/(2-a-i),[s,l*100,u*100]}});var O5=ye(($dr,gLe)=>{gLe.exports=tLt;function tLt(e,t,r){return tr?r:e:et?t:e}});var rZ=ye((Qdr,mLe)=>{"use strict";var rLt=fLe(),iLt=pLe(),VD=O5();mLe.exports=function(t){var r,n,i,a=rLt(t);return a.space?(r=Array(3),r[0]=VD(a.values[0],0,255),r[1]=VD(a.values[1],0,255),r[2]=VD(a.values[2],0,255),a.space[0]==="h"&&(r=iLt.rgb(r)),r.push(VD(a.alpha,0,1)),r):[]}});var HD=ye((evr,yLe)=>{yLe.exports=function(e){switch(e){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}});var J_=ye((tvr,_Le)=>{"use strict";var nLt=rZ(),GD=O5(),aLt=HD();_Le.exports=function(t,r){(r==="float"||!r)&&(r="array"),r==="uint"&&(r="uint8"),r==="uint_clamped"&&(r="uint8_clamped");var n=aLt(r),i=new n(4),a=r!=="uint8"&&r!=="uint8_clamped";return(!t.length||typeof t=="string")&&(t=nLt(t),t[0]/=255,t[1]/=255,t[2]/=255),oLt(t)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:255,a&&(i[0]/=255,i[1]/=255,i[2]/=255,i[3]/=255),i):(a?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:1):(i[0]=GD(Math.floor(t[0]*255),0,255),i[1]=GD(Math.floor(t[1]*255),0,255),i[2]=GD(Math.floor(t[2]*255),0,255),i[3]=t[3]==null?255:GD(Math.floor(t[3]*255),0,255)),i)};function oLt(e){return!!(e instanceof Uint8Array||e instanceof Uint8ClampedArray||Array.isArray(e)&&(e[0]>1||e[0]===0)&&(e[1]>1||e[1]===0)&&(e[2]>1||e[2]===0)&&(!e[3]||e[3]>1))}});var Jy=ye((rvr,xLe)=>{"use strict";var sLt=J_();function lLt(e){return e?sLt(e):[0,0,0,1]}xLe.exports=lLt});var $y=ye((ivr,ELe)=>{"use strict";var SLe=uo(),uLt=id(),jD=J_(),WD=Mu(),cLt=dh().defaultLine,bLe=vv().isArrayOrTypedArray,iZ=jD(cLt),MLe=1;function wLe(e,t){var r=e;return r[3]*=t,r}function TLe(e){if(SLe(e))return iZ;var t=jD(e);return t.length?t:iZ}function ALe(e){return SLe(e)?e:MLe}function fLt(e,t,r){var n=e.color;n&&n._inputArray&&(n=n._inputArray);var i=bLe(n),a=bLe(t),o=WD.extractOpts(e),s=[],l,u,c,f,h;if(o.colorscale!==void 0?l=WD.makeColorScaleFuncFromTrace(e):l=TLe,i?u=function(v,x){return v[x]===void 0?iZ:jD(l(v[x]))}:u=TLe,a?c=function(v,x){return v[x]===void 0?MLe:ALe(v[x])}:c=ALe,i||a)for(var d=0;d{"use strict";kLe.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}});var ZD=ye((avr,CLe)=>{"use strict";CLe.exports={circle:"\u25CF","circle-open":"\u25CB",square:"\u25A0","square-open":"\u25A1",diamond:"\u25C6","diamond-open":"\u25C7",cross:"+",x:"\u274C"}});var PLe=ye((ovr,LLe)=>{"use strict";var dLt=ba();function aZ(e,t,r,n){if(!t||!t.visible)return null;for(var i=dLt.getComponentMethod("errorbars","makeComputeError")(t),a=new Array(e.length),o=0;o0){var f=n.c2l(u);n._lowerLogErrorBound||(n._lowerLogErrorBound=f),n._lowerErrorBound=Math.min(n._lowerLogErrorBound,f)}}else a[o]=[-s[0]*r,s[1]*r]}return a}function vLt(e){for(var t=0;t{"use strict";var gLt=Rd().gl_line3d,ILe=Rd().gl_scatter3d,mLt=Rd().gl_error3d,yLt=Rd().gl_mesh3d,_Lt=Rd().delaunay_triangulate,Qy=Mr(),qLe=Jy(),XD=$y().formatColor,xLt=S3(),oZ=nZ(),bLt=ZD(),wLt=Qa(),TLt=rp().appendArrayPointValue,ALt=PLe();function OLe(e,t){this.scene=e,this.uid=t,this.linePlot=null,this.scatterPlot=null,this.errorBars=null,this.textMarkers=null,this.delaunayMesh=null,this.color=null,this.mode="",this.dataPoints=[],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.textLabels=null,this.data=null}var lZ=OLe.prototype;lZ.handlePick=function(e){if(e.object&&(e.object===this.linePlot||e.object===this.delaunayMesh||e.object===this.textMarkers||e.object===this.scatterPlot)){var t=e.index=e.data.index;return e.object.highlight&&e.object.highlight(null),this.scatterPlot&&(e.object=this.scatterPlot,this.scatterPlot.highlight(e.data)),e.textLabel="",this.textLabels&&(Qy.isArrayOrTypedArray(this.textLabels)?(this.textLabels[t]||this.textLabels[t]===0)&&(e.textLabel=this.textLabels[t]):e.textLabel=this.textLabels),e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]],!0}};function SLt(e,t,r){var n=(r+1)%3,i=(r+2)%3,a=[],o=[],s;for(s=0;s-1?-1:e.indexOf("right")>-1?1:0}function DLe(e){return e==null?0:e.indexOf("top")>-1?-1:e.indexOf("bottom")>-1?1:0}function ELt(e){var t=0,r=0,n=[t,r];if(Array.isArray(e))for(var i=0;i=0){var u=SLt(s.position,s.delaunayColor,s.delaunayAxis);u.opacity=e.opacity,this.delaunayMesh?this.delaunayMesh.update(u):(u.gl=t,this.delaunayMesh=yLt(u),this.delaunayMesh._trace=this,this.scene.glplot.add(this.delaunayMesh))}else this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose(),this.delaunayMesh=null)};lZ.dispose=function(){this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose()),this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose()),this.errorBars&&(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose()),this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose()),this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose())};function PLt(e,t){var r=new OLe(e,t.uid);return r.update(t),r}BLe.exports=PLt});var dZ=ye((lvr,HLe)=>{"use strict";var e1=Uc(),ILt=Su(),hZ=Kl(),uZ=Oc().axisHoverFormat,RLt=Wo().hovertemplateAttrs,DLt=Wo().texttemplateAttrs,ULe=vl(),zLt=nZ(),FLt=ZD(),Yg=no().extendFlat,qLt=Bu().overrideAll,VLe=X1(),OLt=e1.line,N2=e1.marker,BLt=N2.line,NLt=Yg({width:OLt.width,dash:{valType:"enumerated",values:VLe(zLt),dflt:"solid"}},hZ("line"));function cZ(e){return{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}}}var fZ=HLe.exports=qLt({x:e1.x,y:e1.y,z:{valType:"data_array"},text:Yg({},e1.text,{}),texttemplate:DLt({},{}),hovertext:Yg({},e1.hovertext,{}),hovertemplate:RLt(),xhoverformat:uZ("x"),yhoverformat:uZ("y"),zhoverformat:uZ("z"),mode:Yg({},e1.mode,{dflt:"lines+markers"}),surfaceaxis:{valType:"enumerated",values:[-1,0,1,2],dflt:-1},surfacecolor:{valType:"color"},projection:{x:cZ("x"),y:cZ("y"),z:cZ("z")},connectgaps:e1.connectgaps,line:NLt,marker:Yg({symbol:{valType:"enumerated",values:VLe(FLt),dflt:"circle",arrayOk:!0},size:Yg({},N2.size,{dflt:8}),sizeref:N2.sizeref,sizemin:N2.sizemin,sizemode:N2.sizemode,opacity:Yg({},N2.opacity,{arrayOk:!1}),colorbar:N2.colorbar,line:Yg({width:Yg({},BLt.width,{arrayOk:!1})},hZ("marker.line"))},hZ("marker")),textposition:Yg({},e1.textposition,{dflt:"top center"}),textfont:ILt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,variantValues:["normal","small-caps"]}),opacity:ULe.opacity,hoverinfo:Yg({},ULe.hoverinfo)},"calc","nested");fZ.x.editType=fZ.y.editType=fZ.z.editType="calc+clearAxisTypes"});var WLe=ye((uvr,jLe)=>{"use strict";var GLe=ba(),ULt=Mr(),vZ=lu(),VLt=$p(),HLt=R0(),GLt=D0(),jLt=dZ();jLe.exports=function(t,r,n,i){function a(d,v){return ULt.coerce(t,r,jLt,d,v)}var o=WLt(t,r,a,i);if(!o){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),a("mode"),vZ.hasMarkers(r)&&VLt(t,r,n,i,a,{noSelect:!0,noAngle:!0}),vZ.hasLines(r)&&(a("connectgaps"),HLt(t,r,n,i,a)),vZ.hasText(r)&&(a("texttemplate"),GLt(t,r,i,a,{noSelect:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var s=(r.line||{}).color,l=(r.marker||{}).color;a("surfaceaxis")>=0&&a("surfacecolor",s||l);for(var u=["x","y","z"],c=0;c<3;++c){var f="projection."+u[c];a(f+".show")&&(a(f+".opacity"),a(f+".scale"))}var h=GLe.getComponentMethod("errorbars","supplyDefaults");h(t,r,s||l||n,{axis:"z"}),h(t,r,s||l||n,{axis:"y",inherit:"z"}),h(t,r,s||l||n,{axis:"x",inherit:"z"})};function WLt(e,t,r,n){var i=0,a=r("x"),o=r("y"),s=r("z"),l=GLe.getComponentMethod("calendars","handleTraceDefaults");return l(e,t,["x","y","z"],n),a&&o&&s&&(i=Math.min(a.length,o.length,s.length),t._length=t._xlength=t._ylength=t._zlength=i),i}});var XLe=ye((cvr,ZLe)=>{"use strict";var ZLt=km(),XLt=z0();ZLe.exports=function(t,r){var n=[{x:!1,y:!1,trace:r,t:{}}];return ZLt(n,r),XLt(t,r),n}});var KLe=ye((fvr,YLe)=>{YLe.exports=YLt;function YLt(e,t){if(typeof e!="string")throw new TypeError("must specify type string");if(t=t||{},typeof document=="undefined"&&!t.canvas)return null;var r=t.canvas||document.createElement("canvas");typeof t.width=="number"&&(r.width=t.width),typeof t.height=="number"&&(r.height=t.height);var n=t,i;try{var a=[e];e.indexOf("webgl")===0&&a.push("experimental-"+e);for(var o=0;o{var KLt=KLe();JLe.exports=function(t){return KLt("webgl",t)}});var pZ=ye((dvr,ePe)=>{"use strict";var QLe=va(),JLt=function(){};ePe.exports=function(t){for(var r in t)typeof t[r]=="function"&&(t[r]=JLt);t.destroy=function(){t.container.parentNode.removeChild(t.container)};var n=document.createElement("div");n.className="no-webgl",n.style.cursor="pointer",n.style.fontSize="24px",n.style.color=QLe.defaults[0],n.style.position="absolute",n.style.left=n.style.top="0px",n.style.width=n.style.height="100%",n.style["background-color"]=QLe.lightLine,n.style["z-index"]=30;var i=document.createElement("p");return i.textContent="WebGL is not supported by your browser - visit https://get.webgl.org for more info",i.style.position="relative",i.style.top="50%",i.style.left="50%",i.style.height="30%",i.style.width="50%",i.style.margin="-15% 0 0 -25%",n.appendChild(i),t.container.appendChild(n),t.container.style.background="#FFFFFF",t.container.onclick=function(){window.open("https://get.webgl.org")},!1}});var iPe=ye((vvr,rPe)=>{"use strict";var U2=Jy(),$Lt=Mr(),QLt=["xaxis","yaxis","zaxis"];function tPe(){this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickFontWeight=["normal","normal","normal","normal"],this.tickFontStyle=["normal","normal","normal","normal"],this.tickFontVariant=["normal","normal","normal","normal"],this.tickAngle=[0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[18,18,18],this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["Open Sans","Open Sans","Open Sans"],this.labelSize=[20,20,20],this.labelFontWeight=["normal","normal","normal","normal"],this.labelFontStyle=["normal","normal","normal","normal"],this.labelFontVariant=["normal","normal","normal","normal"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[30,30,30],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[10,10,10],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!0,!0,!0],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._defaultTickPad=this.tickPad.slice(),this._defaultLabelPad=this.labelPad.slice(),this._defaultLineTickLength=this.lineTickLength.slice()}var ePt=tPe.prototype;ePt.merge=function(e,t){for(var r=this,n=0;n<3;++n){var i=t[QLt[n]];if(!i.visible){r.tickEnable[n]=!1,r.labelEnable[n]=!1,r.lineEnable[n]=!1,r.lineTickEnable[n]=!1,r.gridEnable[n]=!1,r.zeroEnable[n]=!1,r.backgroundEnable[n]=!1;continue}r.labels[n]=e._meta?$Lt.templateString(i.title.text,e._meta):i.title.text,"font"in i.title&&(i.title.font.color&&(r.labelColor[n]=U2(i.title.font.color)),i.title.font.family&&(r.labelFont[n]=i.title.font.family),i.title.font.size&&(r.labelSize[n]=i.title.font.size),i.title.font.weight&&(r.labelFontWeight[n]=i.title.font.weight),i.title.font.style&&(r.labelFontStyle[n]=i.title.font.style),i.title.font.variant&&(r.labelFontVariant[n]=i.title.font.variant)),"showline"in i&&(r.lineEnable[n]=i.showline),"linecolor"in i&&(r.lineColor[n]=U2(i.linecolor)),"linewidth"in i&&(r.lineWidth[n]=i.linewidth),"showgrid"in i&&(r.gridEnable[n]=i.showgrid),"gridcolor"in i&&(r.gridColor[n]=U2(i.gridcolor)),"gridwidth"in i&&(r.gridWidth[n]=i.gridwidth),i.type==="log"?r.zeroEnable[n]=!1:"zeroline"in i&&(r.zeroEnable[n]=i.zeroline),"zerolinecolor"in i&&(r.zeroLineColor[n]=U2(i.zerolinecolor)),"zerolinewidth"in i&&(r.zeroLineWidth[n]=i.zerolinewidth),"ticks"in i&&i.ticks?r.lineTickEnable[n]=!0:r.lineTickEnable[n]=!1,"ticklen"in i&&(r.lineTickLength[n]=r._defaultLineTickLength[n]=i.ticklen),"tickcolor"in i&&(r.lineTickColor[n]=U2(i.tickcolor)),"tickwidth"in i&&(r.lineTickWidth[n]=i.tickwidth),"tickangle"in i&&(r.tickAngle[n]=i.tickangle==="auto"?-3600:Math.PI*-i.tickangle/180),"showticklabels"in i&&(r.tickEnable[n]=i.showticklabels),"tickfont"in i&&(i.tickfont.color&&(r.tickColor[n]=U2(i.tickfont.color)),i.tickfont.family&&(r.tickFont[n]=i.tickfont.family),i.tickfont.size&&(r.tickSize[n]=i.tickfont.size),i.tickfont.weight&&(r.tickFontWeight[n]=i.tickfont.weight),i.tickfont.style&&(r.tickFontStyle[n]=i.tickfont.style),i.tickfont.variant&&(r.tickFontVariant[n]=i.tickfont.variant)),"mirror"in i?["ticks","all","allticks"].indexOf(i.mirror)!==-1?(r.lineTickMirror[n]=!0,r.lineMirror[n]=!0):i.mirror===!0?(r.lineTickMirror[n]=!1,r.lineMirror[n]=!0):(r.lineTickMirror[n]=!1,r.lineMirror[n]=!1):r.lineMirror[n]=!1,"showbackground"in i&&i.showbackground!==!1?(r.backgroundEnable[n]=!0,r.backgroundColor[n]=U2(i.backgroundcolor)):r.backgroundEnable[n]=!1}};function tPt(e,t){var r=new tPe;return r.merge(e,t),r}rPe.exports=tPt});var oPe=ye((pvr,aPe)=>{"use strict";var rPt=Jy(),iPt=["xaxis","yaxis","zaxis"];function nPe(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}var nPt=nPe.prototype;nPt.merge=function(e){for(var t=0;t<3;++t){var r=e[iPt[t]];if(!r.visible){this.enabled[t]=!1,this.drawSides[t]=!1;continue}this.enabled[t]=r.showspikes,this.colors[t]=rPt(r.spikecolor),this.drawSides[t]=r.spikesides,this.lineWidth[t]=r.spikethickness}};function aPt(e){var t=new nPe;return t.merge(e),t}aPe.exports=aPt});var uPe=ye((gvr,lPe)=>{"use strict";lPe.exports=cPt;var sPe=Qa(),oPt=Mr(),sPt=["xaxis","yaxis","zaxis"],lPt=[0,0,0];function uPt(e){for(var t=new Array(3),r=0;r<3;++r){for(var n=e[r],i=new Array(n.length),a=0;a/g," "));i[a]=u,o.tickmode=s}}t.ticks=i;for(var a=0;a<3;++a){lPt[a]=.5*(e.glplot.bounds[0][a]+e.glplot.bounds[1][a]);for(var c=0;c<2;++c)t.bounds[c][a]=e.glplot.bounds[c][a]}e.contourLevels=uPt(i)}});var gPe=ye((mvr,pPe)=>{"use strict";var hPe=Rd().gl_plot3d,fPt=hPe.createCamera,cPe=hPe.createScene,hPt=$Le(),dPt=EL(),JD=ba(),up=Mr(),KD=up.preserveDrawingBuffer(),$D=Qa(),Kg=Nc(),vPt=Jy(),pPt=pZ(),gPt=DU(),mPt=iPe(),yPt=oPe(),_Pt=uPe(),xPt=wg().applyAutorangeOptions,VE,YD,dPe=!1;function vPe(e,t){var r=document.createElement("div"),n=e.container;this.graphDiv=e.graphDiv;var i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.style.position="absolute",i.style.top=i.style.left="0px",i.style.width=i.style.height="100%",i.style["z-index"]=20,i.style["pointer-events"]="none",r.appendChild(i),this.svgContainer=i,r.id=e.id,r.style.position="absolute",r.style.top=r.style.left="0px",r.style.width=r.style.height="100%",n.appendChild(r),this.fullLayout=t,this.id=e.id||"scene",this.fullSceneLayout=t[this.id],this.plotArgs=[[],{},{}],this.axesOptions=mPt(t,t[this.id]),this.spikeOptions=yPt(t[this.id]),this.container=r,this.staticMode=!!e.staticPlot,this.pixelRatio=this.pixelRatio||e.plotGlPixelRatio||2,this.dataScale=[1,1,1],this.contourLevels=[[],[],[]],this.convertAnnotations=JD.getComponentMethod("annotations3d","convert"),this.drawAnnotations=JD.getComponentMethod("annotations3d","draw"),this.initializeGLPlot()}var wv=vPe.prototype;wv.prepareOptions=function(){var e=this,t={canvas:e.canvas,gl:e.gl,glOptions:{preserveDrawingBuffer:KD,premultipliedAlpha:!0,antialias:!0},container:e.container,axes:e.axesOptions,spikes:e.spikeOptions,pickRadius:10,snapToData:!0,autoScale:!0,autoBounds:!1,cameraObject:e.camera,pixelRatio:e.pixelRatio};if(e.staticMode){if(!YD&&(VE=document.createElement("canvas"),YD=hPt({canvas:VE,preserveDrawingBuffer:!0,premultipliedAlpha:!0,antialias:!0}),!YD))throw new Error("error creating static canvas/context for image server");t.gl=YD,t.canvas=VE}return t};var fPe=!0;wv.tryCreatePlot=function(){var e=this,t=e.prepareOptions(),r=!0;try{e.glplot=cPe(t)}catch(n){if(e.staticMode||!fPe||KD)r=!1;else{up.warn(["webgl setup failed possibly due to","false preserveDrawingBuffer config.","The mobile/tablet device may not be detected by is-mobile module.","Enabling preserveDrawingBuffer in second attempt to create webgl scene..."].join(" "));try{KD=t.glOptions.preserveDrawingBuffer=!0,e.glplot=cPe(t)}catch(i){KD=t.glOptions.preserveDrawingBuffer=!1,r=!1}}}return fPe=!1,r};wv.initializeGLCamera=function(){var e=this,t=e.fullSceneLayout.camera,r=t.projection.type==="orthographic";e.camera=fPt(e.container,{center:[t.center.x,t.center.y,t.center.z],eye:[t.eye.x,t.eye.y,t.eye.z],up:[t.up.x,t.up.y,t.up.z],_ortho:r,zoomMin:.01,zoomMax:100,mode:"orbit"})};wv.initializeGLPlot=function(){var e=this;e.initializeGLCamera();var t=e.tryCreatePlot();if(!t)return pPt(e);e.traces={},e.make4thDimension();var r=e.graphDiv,n=r.layout,i=function(){var o={};return e.isCameraChanged(n)&&(o[e.id+".camera"]=e.getCamera()),e.isAspectChanged(n)&&(o[e.id+".aspectratio"]=e.glplot.getAspectratio(),n[e.id].aspectmode!=="manual"&&(e.fullSceneLayout.aspectmode=n[e.id].aspectmode=o[e.id+".aspectmode"]="manual")),o},a=function(o){if(o.fullSceneLayout.dragmode!==!1){var s=i();o.saveLayout(n),o.graphDiv.emit("plotly_relayout",s)}};return e.glplot.canvas&&(e.glplot.canvas.addEventListener("mouseup",function(){a(e)}),e.glplot.canvas.addEventListener("touchstart",function(){dPe=!0}),e.glplot.canvas.addEventListener("wheel",function(o){if(r._context._scrollZoom.gl3d){if(e.camera._ortho){var s=o.deltaX>o.deltaY?1.1:.9090909090909091,l=e.glplot.getAspectratio();e.glplot.setAspectratio({x:s*l.x,y:s*l.y,z:s*l.z})}a(e)}},dPt?{passive:!1}:!1),e.glplot.canvas.addEventListener("mousemove",function(){if(e.fullSceneLayout.dragmode!==!1&&e.camera.mouseListener.buttons!==0){var o=i();e.graphDiv.emit("plotly_relayouting",o)}}),e.staticMode||e.glplot.canvas.addEventListener("webglcontextlost",function(o){r&&r.emit&&r.emit("plotly_webglcontextlost",{event:o,layer:e.id})},!1)),e.glplot.oncontextloss=function(){e.recoverContext()},e.glplot.onrender=function(){e.render()},!0};wv.render=function(){var e=this,t=e.graphDiv,r,n=e.svgContainer,i=e.container.getBoundingClientRect();t._fullLayout._calcInverseTransform(t);var a=t._fullLayout._invScaleX,o=t._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,"viewBox","0 0 "+s+" "+l),n.setAttributeNS(null,"width",s),n.setAttributeNS(null,"height",l),_Pt(e),e.glplot.axes.update(e.axesOptions);for(var u=Object.keys(e.traces),c=null,f=e.glplot.selection,h=0;h")):r.type==="isosurface"||r.type==="volume"?(g.valueLabel=$D.hoverLabelText(e._mockAxis,e._mockAxis.d2l(f.traceCoordinate[3]),r.valuehoverformat),_.push("value: "+g.valueLabel),f.textLabel&&_.push(f.textLabel),L=_.join("
")):L=f.textLabel;var C={x:f.traceCoordinate[0],y:f.traceCoordinate[1],z:f.traceCoordinate[2],data:x._input,fullData:x,curveNumber:x.index,pointNumber:b};Kg.appendArrayPointValue(C,x,b),r._module.eventData&&(C=x._module.eventData(C,f,x,{},b));var M={points:[C]};if(e.fullSceneLayout.hovermode){var p=[];Kg.loneHover({trace:x,x:(.5+.5*v[0]/v[3])*s,y:(.5-.5*v[1]/v[3])*l,xLabel:g.xLabel,yLabel:g.yLabel,zLabel:g.zLabel,text:L,name:c.name,color:Kg.castHoverOption(x,b,"bgcolor")||c.color,borderColor:Kg.castHoverOption(x,b,"bordercolor"),fontFamily:Kg.castHoverOption(x,b,"font.family"),fontSize:Kg.castHoverOption(x,b,"font.size"),fontColor:Kg.castHoverOption(x,b,"font.color"),nameLength:Kg.castHoverOption(x,b,"namelength"),textAlign:Kg.castHoverOption(x,b,"align"),hovertemplate:up.castOption(x,b,"hovertemplate"),hovertemplateLabels:up.extendFlat({},C,g),eventData:[C]},{container:n,gd:t,inOut_bbox:p}),C.bbox=p[0]}f.distance<5&&(f.buttons||dPe)?t.emit("plotly_click",M):t.emit("plotly_hover",M),this.oldEventData=M}else Kg.loneUnhover(n),this.oldEventData&&t.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)};wv.recoverContext=function(){var e=this;e.glplot.dispose();var t=function(){if(e.glplot.gl.isContextLost()){requestAnimationFrame(t);return}if(!e.initializeGLPlot()){up.error("Catastrophic and unrecoverable WebGL error. Context lost.");return}e.plot.apply(e,e.plotArgs)};requestAnimationFrame(t)};var HE=["xaxis","yaxis","zaxis"];function bPt(e,t,r){for(var n=e.fullSceneLayout,i=0;i<3;i++){var a=HE[i],o=a.charAt(0),s=n[a],l=t[o],u=t[o+"calendar"],c=t["_"+o+"length"];if(!up.isArrayOrTypedArray(l))r[0][i]=Math.min(r[0][i],0),r[1][i]=Math.max(r[1][i],c-1);else for(var f,h=0;h<(c||l.length);h++)if(up.isArrayOrTypedArray(l[h]))for(var d=0;dx[1][o])x[0][o]=-1,x[1][o]=1;else{var T=x[1][o]-x[0][o];x[0][o]-=T/32,x[1][o]+=T/32}if(E=[x[0][o],x[1][o]],E=xPt(E,l),x[0][o]=E[0],x[1][o]=E[1],l.isReversed()){var F=x[0][o];x[0][o]=x[1][o],x[1][o]=F}}else E=l.range,x[0][o]=l.r2l(E[0]),x[1][o]=l.r2l(E[1]);x[0][o]===x[1][o]&&(x[0][o]-=1,x[1][o]+=1),b[o]=x[1][o]-x[0][o],l.range=[x[0][o],x[1][o]],l.limitRange(),n.glplot.setBounds(o,{min:l.range[0]*d[o],max:l.range[1]*d[o]})}var q,V=c.aspectmode;if(V==="cube")q=[1,1,1];else if(V==="manual"){var H=c.aspectratio;q=[H.x,H.y,H.z]}else if(V==="auto"||V==="data"){var X=[1,1,1];for(o=0;o<3;++o){l=c[HE[o]],u=l.type;var G=g[u];X[o]=Math.pow(G.acc,1/G.count)/d[o]}V==="data"||Math.max.apply(null,X)/Math.min.apply(null,X)<=4?q=X:q=[1,1,1]}else throw new Error("scene.js aspectRatio was not one of the enumerated types");c.aspectratio.x=f.aspectratio.x=q[0],c.aspectratio.y=f.aspectratio.y=q[1],c.aspectratio.z=f.aspectratio.z=q[2],n.glplot.setAspectratio(c.aspectratio),n.viewInitial.aspectratio||(n.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),n.viewInitial.aspectmode||(n.viewInitial.aspectmode=c.aspectmode);var N=c.domain||null,W=t._size||null;if(N&&W){var re=n.container.style;re.position="absolute",re.left=W.l+N.x[0]*W.w+"px",re.top=W.t+(1-N.y[1])*W.h+"px",re.width=W.w*(N.x[1]-N.x[0])+"px",re.height=W.h*(N.y[1]-N.y[0])+"px"}n.glplot.redraw()}};wv.destroy=function(){var e=this;e.glplot&&(e.camera.mouseListener.enabled=!1,e.container.removeEventListener("wheel",e.camera.wheelListener),e.camera=null,e.glplot.dispose(),e.container.parentNode.removeChild(e.container),e.glplot=null)};function TPt(e){return[[e.eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]}function APt(e){return{up:{x:e.up[0],y:e.up[1],z:e.up[2]},center:{x:e.center[0],y:e.center[1],z:e.center[2]},eye:{x:e.eye[0],y:e.eye[1],z:e.eye[2]},projection:{type:e._ortho===!0?"orthographic":"perspective"}}}wv.getCamera=function(){var e=this;return e.camera.view.recalcMatrix(e.camera.view.lastT()),APt(e.camera)};wv.setViewport=function(e){var t=this,r=e.camera;t.camera.lookAt.apply(this,TPt(r)),t.glplot.setAspectratio(e.aspectratio);var n=r.projection.type==="orthographic",i=t.camera._ortho;n!==i&&(t.glplot.redraw(),t.glplot.clearRGBA(),t.glplot.dispose(),t.initializeGLPlot())};wv.isCameraChanged=function(e){var t=this,r=t.getCamera(),n=up.nestedProperty(e,t.id+".camera"),i=n.get();function a(u,c,f,h){var d=["up","center","eye"],v=["x","y","z"];return c[d[f]]&&u[d[f]][v[h]]===c[d[f]][v[h]]}var o=!1;if(i===void 0)o=!0;else{for(var s=0;s<3;s++)for(var l=0;l<3;l++)if(!a(r,i,s,l)){o=!0;break}(!i.projection||r.projection&&r.projection.type!==i.projection.type)&&(o=!0)}return o};wv.isAspectChanged=function(e){var t=this,r=t.glplot.getAspectratio(),n=up.nestedProperty(e,t.id+".aspectratio"),i=n.get();return i===void 0||i.x!==r.x||i.y!==r.y||i.z!==r.z};wv.saveLayout=function(e){var t=this,r=t.fullLayout,n,i,a,o,s,l,u=t.isCameraChanged(e),c=t.isAspectChanged(e),f=u||c;if(f){var h={};if(u&&(n=t.getCamera(),i=up.nestedProperty(e,t.id+".camera"),a=i.get(),h[t.id+".camera"]=a),c&&(o=t.glplot.getAspectratio(),s=up.nestedProperty(e,t.id+".aspectratio"),l=s.get(),h[t.id+".aspectratio"]=l),JD.call("_storeDirectGUIEdit",e,r._preGUI,h),u){i.set(n);var d=up.nestedProperty(r,t.id+".camera");d.set(n)}if(c){s.set(o);var v=up.nestedProperty(r,t.id+".aspectratio");v.set(o),t.glplot.redraw()}}return f};wv.updateFx=function(e,t){var r=this,n=r.camera;if(n)if(e==="orbit")n.mode="orbit",n.keyBindingMode="rotate";else if(e==="turntable"){n.up=[0,0,1],n.mode="turntable",n.keyBindingMode="rotate";var i=r.graphDiv,a=i._fullLayout,o=r.fullSceneLayout.camera,s=o.up.x,l=o.up.y,u=o.up.z;if(u/Math.sqrt(s*s+l*l+u*u)<.999){var c=r.id+".camera.up",f={x:0,y:0,z:1},h={};h[c]=f;var d=i.layout;JD.call("_storeDirectGUIEdit",d,a._preGUI,h),o.up=f,up.nestedProperty(d,c).set(f)}}else n.keyBindingMode=e;r.fullSceneLayout.hovermode=t};function SPt(e,t,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)e[a+l]=Math.min(s*e[a+l],255)}}wv.toImage=function(e){var t=this;e||(e="png"),t.staticMode&&t.container.appendChild(VE),t.glplot.redraw();var r=t.glplot.gl,n=r.drawingBufferWidth,i=r.drawingBufferHeight;r.bindFramebuffer(r.FRAMEBUFFER,null);var a=new Uint8Array(n*i*4);r.readPixels(0,0,n,i,r.RGBA,r.UNSIGNED_BYTE,a),SPt(a,n,i),MPt(a,n,i);var o=document.createElement("canvas");o.width=n,o.height=i;var s=o.getContext("2d",{willReadFrequently:!0}),l=s.createImageData(n,i);l.data.set(a),s.putImageData(l,0,0);var u;switch(e){case"jpeg":u=o.toDataURL("image/jpeg");break;case"webp":u=o.toDataURL("image/webp");break;default:u=o.toDataURL("image/png")}return t.staticMode&&t.container.removeChild(VE),u};wv.setConvert=function(){for(var e=this,t=0;t<3;t++){var r=e.fullSceneLayout[HE[t]];$D.setConvert(r,e.fullLayout),r.setScale=up.noop}};wv.make4thDimension=function(){var e=this,t=e.graphDiv,r=t._fullLayout;e._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},$D.setConvert(e._mockAxis,r)};pPe.exports=vPe});var yPe=ye((yvr,mPe)=>{"use strict";mPe.exports={scene:{valType:"subplotid",dflt:"scene",editType:"calc+clearAxisTypes"}}});var mZ=ye((_vr,_Pe)=>{"use strict";var EPt=va(),cs=Cd(),gZ=no().extendFlat,kPt=Bu().overrideAll;_Pe.exports=kPt({visible:cs.visible,showspikes:{valType:"boolean",dflt:!0},spikesides:{valType:"boolean",dflt:!0},spikethickness:{valType:"number",min:0,dflt:2},spikecolor:{valType:"color",dflt:EPt.defaultLine},showbackground:{valType:"boolean",dflt:!1},backgroundcolor:{valType:"color",dflt:"rgba(204, 204, 204, 0.5)"},showaxeslabels:{valType:"boolean",dflt:!0},color:cs.color,categoryorder:cs.categoryorder,categoryarray:cs.categoryarray,title:{text:cs.title.text,font:cs.title.font},type:gZ({},cs.type,{values:["-","linear","log","date","category"]}),autotypenumbers:cs.autotypenumbers,autorange:cs.autorange,autorangeoptions:{minallowed:cs.autorangeoptions.minallowed,maxallowed:cs.autorangeoptions.maxallowed,clipmin:cs.autorangeoptions.clipmin,clipmax:cs.autorangeoptions.clipmax,include:cs.autorangeoptions.include,editType:"plot"},rangemode:cs.rangemode,minallowed:cs.minallowed,maxallowed:cs.maxallowed,range:gZ({},cs.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],anim:!1}),tickmode:cs.minor.tickmode,nticks:cs.nticks,tick0:cs.tick0,dtick:cs.dtick,tickvals:cs.tickvals,ticktext:cs.ticktext,ticks:cs.ticks,mirror:cs.mirror,ticklen:cs.ticklen,tickwidth:cs.tickwidth,tickcolor:cs.tickcolor,showticklabels:cs.showticklabels,labelalias:cs.labelalias,tickfont:cs.tickfont,tickangle:cs.tickangle,tickprefix:cs.tickprefix,showtickprefix:cs.showtickprefix,ticksuffix:cs.ticksuffix,showticksuffix:cs.showticksuffix,showexponent:cs.showexponent,exponentformat:cs.exponentformat,minexponent:cs.minexponent,separatethousands:cs.separatethousands,tickformat:cs.tickformat,tickformatstops:cs.tickformatstops,hoverformat:cs.hoverformat,showline:cs.showline,linecolor:cs.linecolor,linewidth:cs.linewidth,showgrid:cs.showgrid,gridcolor:gZ({},cs.gridcolor,{dflt:"rgb(204, 204, 204)"}),gridwidth:cs.gridwidth,zeroline:cs.zeroline,zerolinecolor:cs.zerolinecolor,zerolinewidth:cs.zerolinewidth},"plot","from-root")});var bZ=ye((xvr,xPe)=>{"use strict";var yZ=mZ(),CPt=Ju().attributes,_Z=no().extendFlat,LPt=Mr().counterRegex;function xZ(e,t,r){return{x:{valType:"number",dflt:e,editType:"camera"},y:{valType:"number",dflt:t,editType:"camera"},z:{valType:"number",dflt:r,editType:"camera"},editType:"camera"}}xPe.exports={_arrayAttrRegexps:[LPt("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:_Z(xZ(0,0,1),{}),center:_Z(xZ(0,0,0),{}),eye:_Z(xZ(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:CPt({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:yZ,yaxis:yZ,zaxis:yZ,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot"}});var APe=ye((bvr,TPe)=>{"use strict";var PPt=id().mix,bPe=Mr(),IPt=Vs(),RPt=mZ(),DPt=yU(),zPt=JM(),wPe=["xaxis","yaxis","zaxis"],FPt=100*136/187;TPe.exports=function(t,r,n){var i,a;function o(u,c){return bPe.coerce(i,a,RPt,u,c)}for(var s=0;s{"use strict";var qPt=Mr(),OPt=va(),BPt=ba(),NPt=k_(),UPt=APe(),SPe=bZ(),VPt=kd().getSubplotData,MPe="gl3d";EPe.exports=function(t,r,n){var i=r._basePlotModules.length>1;function a(o){if(!i){var s=qPt.validate(t[o],SPe[o]);if(s)return t[o]}}NPt(t,r,n,{type:MPe,attributes:SPe,handleDefaults:HPt,fullLayout:r,font:r.font,fullData:n,getDfltFromLayout:a,autotypenumbersDflt:r.autotypenumbers,paper_bgcolor:r.paper_bgcolor,calendar:r.calendar})};function HPt(e,t,r,n){for(var i=r("bgcolor"),a=OPt.combine(i,n.paper_bgcolor),o=["up","center","eye"],s=0;s.999)&&(h="turntable")}else h="turntable";r("dragmode",h),r("hovermode",n.getDfltFromLayout("hovermode"))}});var $_=ye(cp=>{"use strict";var GPt=Bu().overrideAll,jPt=B1(),WPt=gPe(),ZPt=kd().getSubplotData,XPt=Mr(),YPt=Zp(),B5="gl3d",wZ="scene";cp.name=B5;cp.attr=wZ;cp.idRoot=wZ;cp.idRegex=cp.attrRegex=XPt.counterRegex("scene");cp.attributes=yPe();cp.layoutAttributes=bZ();cp.baseLayoutAttrOverrides=GPt({hoverlabel:jPt.hoverlabel},"plot","nested");cp.supplyLayoutDefaults=kPe();cp.plot=function(t){for(var r=t._fullLayout,n=t._fullData,i=r._subplots[B5],a=0;a{"use strict";CPe.exports={plot:NLe(),attributes:dZ(),markerSymbols:ZD(),supplyDefaults:WLe(),colorbar:[{container:"marker",min:"cmin",max:"cmax"},{container:"line",min:"cmin",max:"cmax"}],calc:XLe(),moduleType:"trace",name:"scatter3d",basePlotModule:$_(),categories:["gl3d","symbols","showLegend","scatter-like"],meta:{}}});var IPe=ye((Svr,PPe)=>{"use strict";PPe.exports=LPe()});var GE=ye((Mvr,zPe)=>{"use strict";var RPe=va(),KPt=Kl(),TZ=Oc().axisHoverFormat,JPt=Wo().hovertemplateAttrs,DPe=vl(),AZ=no().extendFlat,$Pt=Bu().overrideAll;function SZ(e){return{valType:"boolean",dflt:!1}}function MZ(e){return{show:{valType:"boolean",dflt:!1},start:{valType:"number",dflt:null,editType:"plot"},end:{valType:"number",dflt:null,editType:"plot"},size:{valType:"number",dflt:null,min:0,editType:"plot"},project:{x:SZ("x"),y:SZ("y"),z:SZ("z")},color:{valType:"color",dflt:RPe.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:RPe.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var EZ=zPe.exports=$Pt(AZ({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:JPt(),xhoverformat:TZ("x"),yhoverformat:TZ("y"),zhoverformat:TZ("z"),connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},surfacecolor:{valType:"data_array"}},KPt("",{colorAttr:"z or surfacecolor",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:"calc"}),{contours:{x:MZ("x"),y:MZ("y"),z:MZ("z")},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05},roughness:{valType:"number",min:0,max:1,dflt:.5},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},opacityscale:{valType:"any",editType:"calc"},hoverinfo:AZ({},DPe.hoverinfo),showlegend:AZ({},DPe.showlegend,{dflt:!1})}),"calc","nested");EZ.x.editType=EZ.y.editType=EZ.z.editType="calc+clearAxisTypes"});var CZ=ye((Evr,OPe)=>{"use strict";var QPt=ba(),FPe=Mr(),eIt=Uh(),tIt=GE(),kZ=.1;function rIt(e,t){for(var r=[],n=32,i=0;i{"use strict";var BPe=zv();NPe.exports=function(t,r){r.surfacecolor?BPe(t,r,{vals:r.surfacecolor,containerStr:"",cLetter:"c"}):BPe(t,r,{vals:r.z,containerStr:"",cLetter:"c"})}});var ZPe=ye((Cvr,WPe)=>{"use strict";var aIt=Rd().gl_surface3d,N5=Rd().ndarray,oIt=Rd().ndarray_linear_interpolate.d2,sIt=QI(),lIt=e8(),jE=Mr().isArrayOrTypedArray,uIt=$y().parseColorScale,VPe=Jy(),cIt=Mu().extractOpts;function GPe(e,t,r){this.scene=e,this.uid=r,this.surface=t,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var Jg=GPe.prototype;Jg.getXat=function(e,t,r,n){var i=jE(this.data.x)?jE(this.data.x[0])?this.data.x[t][e]:this.data.x[e]:e;return r===void 0?i:n.d2l(i,0,r)};Jg.getYat=function(e,t,r,n){var i=jE(this.data.y)?jE(this.data.y[0])?this.data.y[t][e]:this.data.y[t]:t;return r===void 0?i:n.d2l(i,0,r)};Jg.getZat=function(e,t,r,n){var i=this.data.z[t][e];return i===null&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[t][e]),r===void 0?i:n.d2l(i,0,r)};Jg.handlePick=function(e){if(e.object===this.surface){var t=(e.data.index[0]-1)/this.dataScaleX-1,r=(e.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(t),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);e.index=[n,i],e.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],e.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=e.dataCoordinate[a];o!=null&&(e.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return jE(s)&&s[i]&&s[i][n]!==void 0?e.textLabel=s[i][n]:s?e.textLabel=s:e.textLabel="",e.data.dataCoordinate=e.dataCoordinate.slice(),this.surface.highlight(e.data),this.scene.glplot.spikes.position=e.dataCoordinate,!0}};function fIt(e){var t=e[0].rgb,r=e[e.length-1].rgb;return t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]}var U5=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function hIt(e,t){if(e0){r=U5[n];break}return r}function vIt(e,t){if(!(e<1||t<1)){for(var r=LZ(e),n=LZ(t),i=1,a=0;aQD;)n--,n/=dIt(n),n++,n1?i:1};function gIt(e,t,r){var n=r[8]+r[2]*t[0]+r[5]*t[1];return e[0]=(r[6]+r[0]*t[0]+r[3]*t[1])/n,e[1]=(r[7]+r[1]*t[0]+r[4]*t[1])/n,e}function mIt(e,t,r){return yIt(e,t,gIt,r),e}function yIt(e,t,r,n){for(var i=[0,0],a=e.shape[0],o=e.shape[1],s=0;s0&&this.contourStart[n]!==null&&this.contourEnd[n]!==null&&this.contourEnd[n]>this.contourStart[n]))for(t[n]=!0,i=this.contourStart[n];ih&&(this.minValues[u]=h),this.maxValues[u]{"use strict";XPe.exports={attributes:GE(),supplyDefaults:CZ().supplyDefaults,colorbar:{min:"cmin",max:"cmax"},calc:UPe(),plot:ZPe(),moduleType:"trace",name:"surface",basePlotModule:$_(),categories:["gl3d","2dMap","showLegend"],meta:{}}});var JPe=ye((Pvr,KPe)=>{"use strict";KPe.exports=YPe()});var V5=ye((Ivr,QPe)=>{"use strict";var bIt=Kl(),PZ=Oc().axisHoverFormat,wIt=Wo().hovertemplateAttrs,Q_=GE(),$Pe=vl(),ex=no().extendFlat;QPe.exports=ex({x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},i:{valType:"data_array",editType:"calc"},j:{valType:"data_array",editType:"calc"},k:{valType:"data_array",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:wIt({editType:"calc"}),xhoverformat:PZ("x"),yhoverformat:PZ("y"),zhoverformat:PZ("z"),delaunayaxis:{valType:"enumerated",values:["x","y","z"],dflt:"z",editType:"calc"},alphahull:{valType:"number",dflt:-1,editType:"calc"},intensity:{valType:"data_array",editType:"calc"},intensitymode:{valType:"enumerated",values:["vertex","cell"],dflt:"vertex",editType:"calc"},color:{valType:"color",editType:"calc"},vertexcolor:{valType:"data_array",editType:"calc"},facecolor:{valType:"data_array",editType:"calc"}},bIt("",{colorAttr:"`intensity`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:Q_.opacity,flatshading:{valType:"boolean",dflt:!1,editType:"calc"},contour:{show:ex({},Q_.contours.x.show,{}),color:Q_.contours.x.color,width:Q_.contours.x.width,editType:"calc"},lightposition:{x:ex({},Q_.lightposition.x,{dflt:1e5}),y:ex({},Q_.lightposition.y,{dflt:1e5}),z:ex({},Q_.lightposition.z,{dflt:0}),editType:"calc"},lighting:ex({vertexnormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-12,editType:"calc"},facenormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-6,editType:"calc"},editType:"calc"},Q_.lighting),hoverinfo:ex({},$Pe.hoverinfo,{editType:"calc"}),showlegend:ex({},$Pe.showlegend,{dflt:!1})})});var tz=ye((Rvr,tIe)=>{"use strict";var TIt=Kl(),ez=Oc().axisHoverFormat,AIt=Wo().hovertemplateAttrs,WE=V5(),eIe=vl(),IZ=no().extendFlat,SIt=Bu().overrideAll;function RZ(e){return{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}}}function DZ(e){return{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}}}var H5=tIe.exports=SIt(IZ({x:{valType:"data_array"},y:{valType:"data_array"},z:{valType:"data_array"},value:{valType:"data_array"},isomin:{valType:"number"},isomax:{valType:"number"},surface:{show:{valType:"boolean",dflt:!0},count:{valType:"integer",dflt:2,min:1},fill:{valType:"number",min:0,max:1,dflt:1},pattern:{valType:"flaglist",flags:["A","B","C","D","E"],extras:["all","odd","even"],dflt:"all"}},spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:.15}},slices:{x:RZ("x"),y:RZ("y"),z:RZ("z")},caps:{x:DZ("x"),y:DZ("y"),z:DZ("z")},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:AIt(),xhoverformat:ez("x"),yhoverformat:ez("y"),zhoverformat:ez("z"),valuehoverformat:ez("value",1),showlegend:IZ({},eIe.showlegend,{dflt:!1})},TIt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:WE.opacity,lightposition:WE.lightposition,lighting:WE.lighting,flatshading:WE.flatshading,contour:WE.contour,hoverinfo:IZ({},eIe.hoverinfo)}),"calc","nested");H5.flatshading.dflt=!0;H5.lighting.facenormalsepsilon.dflt=0;H5.x.editType=H5.y.editType=H5.z.editType=H5.value.editType="calc+clearAxisTypes"});var zZ=ye((Dvr,iIe)=>{"use strict";var MIt=Mr(),EIt=ba(),kIt=tz(),CIt=Uh();function LIt(e,t,r,n){function i(a,o){return MIt.coerce(e,t,kIt,a,o)}rIe(e,t,r,n,i)}function rIe(e,t,r,n,i){var a=i("isomin"),o=i("isomax");o!=null&&a!==void 0&&a!==null&&a>o&&(t.isomin=null,t.isomax=null);var s=i("x"),l=i("y"),u=i("z"),c=i("value");if(!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length){t.visible=!1;return}var f=EIt.getComponentMethod("calendars","handleTraceDefaults");f(e,t,["x","y","z"],n),i("valuehoverformat"),["x","y","z"].forEach(function(x){i(x+"hoverformat");var b="caps."+x,g=i(b+".show");g&&i(b+".fill");var E="slices."+x,k=i(E+".show");k&&(i(E+".fill"),i(E+".locations"))});var h=i("spaceframe.show");h&&i("spaceframe.fill");var d=i("surface.show");d&&(i("surface.count"),i("surface.fill"),i("surface.pattern"));var v=i("contour.show");v&&(i("contour.color"),i("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(x){i(x)}),CIt(e,t,n,i,{prefix:"",cLetter:"c"}),t._length=null}iIe.exports={supplyDefaults:LIt,supplyIsoDefaults:rIe}});var rz=ye((zvr,aIe)=>{"use strict";var qZ=Mr(),PIt=zv();function IIt(e,t){t._len=Math.min(t.u.length,t.v.length,t.w.length,t.x.length,t.y.length,t.z.length),t._u=Gm(t.u,t._len),t._v=Gm(t.v,t._len),t._w=Gm(t.w,t._len),t._x=Gm(t.x,t._len),t._y=Gm(t.y,t._len),t._z=Gm(t.z,t._len);var r=nIe(t);t._gridFill=r.fill,t._Xs=r.Xs,t._Ys=r.Ys,t._Zs=r.Zs,t._len=r.len;var n=0,i,a,o;t.starts&&(i=Gm(t.starts.x||[]),a=Gm(t.starts.y||[]),o=Gm(t.starts.z||[]),n=Math.min(i.length,a.length,o.length)),t._startsX=i||[],t._startsY=a||[],t._startsZ=o||[];var s=0,l=1/0,u;for(u=0;u1&&(k=t[i-1],L=r[i-1],C=n[i-1]),a=0;ak?"-":"+")+"x"),v=v.replace("y",(A>L?"-":"+")+"y"),v=v.replace("z",(_>C?"-":"+")+"z");var T=function(){i=0,M=[],p=[],P=[]};(!i||i{"use strict";var RIt=zv(),DIt=rz().processGrid,iz=rz().filter;oIe.exports=function(t,r){r._len=Math.min(r.x.length,r.y.length,r.z.length,r.value.length),r._x=iz(r.x,r._len),r._y=iz(r.y,r._len),r._z=iz(r.z,r._len),r._value=iz(r.value,r._len);var n=DIt(r);r._gridFill=n.fill,r._Xs=n.Xs,r._Ys=n.Ys,r._Zs=n.Zs,r._len=n.len;for(var i=1/0,a=-1/0,o=0;o{"use strict";sIe.exports=function(t,r,n,i){i=i||t.length;for(var a=new Array(i),o=0;o{"use strict";var zIt=Rd().gl_mesh3d,FIt=$y().parseColorScale,qIt=Mr().isArrayOrTypedArray,OIt=Jy(),BIt=Mu().extractOpts,lIe=G5(),ZE=function(e,t){for(var r=t.length-1;r>0;r--){var n=Math.min(t[r],t[r-1]),i=Math.max(t[r],t[r-1]);if(i>n&&n-1}function ae(bt,Lt){return bt===null?Lt:bt}function _e(bt,Lt,St){T();var Et=[Lt],dt=[St];if(G>=1)Et=[Lt],dt=[St];else if(G>0){var Ht=W(Lt,St);Et=Ht.xyzv,dt=Ht.abc}for(var $t=0;$t-1?St[_r]:P(Br,Or,Nr);Ne>-1?fr[_r]=Ne:fr[_r]=q(Br,Or,Nr,ae(bt,ut))}V(fr[0],fr[1],fr[2])}}function Me(bt,Lt,St){var Et=function(dt,Ht,$t){_e(bt,[Lt[dt],Lt[Ht],Lt[$t]],[St[dt],St[Ht],St[$t]])};Et(0,1,2),Et(2,3,0)}function ke(bt,Lt,St){var Et=function(dt,Ht,$t){_e(bt,[Lt[dt],Lt[Ht],Lt[$t]],[St[dt],St[Ht],St[$t]])};Et(0,1,2),Et(3,0,1),Et(2,3,0),Et(1,2,3)}function ge(bt,Lt,St,Et){var dt=bt[3];dtEt&&(dt=Et);for(var Ht=(bt[3]-dt)/(bt[3]-Lt[3]+1e-9),$t=[],fr=0;fr<4;fr++)$t[fr]=(1-Ht)*bt[fr]+Ht*Lt[fr];return $t}function ie(bt,Lt,St){return bt>=Lt&&bt<=St}function Te(bt){var Lt=.001*(L-A);return bt>=A-Lt&&bt<=L+Lt}function Ee(bt){for(var Lt=[],St=0;St<4;St++){var Et=bt[St];Lt.push([e._x[Et],e._y[Et],e._z[Et],e._value[Et]])}return Lt}var Ae=3;function ze(bt,Lt,St,Et,dt,Ht){Ht||(Ht=1),St=[-1,-1,-1];var $t=!1,fr=[ie(Lt[0][3],Et,dt),ie(Lt[1][3],Et,dt),ie(Lt[2][3],Et,dt)];if(!fr[0]&&!fr[1]&&!fr[2])return!1;var _r=function(Or,Nr,ut){return Te(Nr[0][3])&&Te(Nr[1][3])&&Te(Nr[2][3])?(_e(Or,Nr,ut),!0):Htfr?[E,Ht]:[Ht,k];kt(Lt,_r[0],_r[1])}}var Br=[[Math.min(A,k),Math.max(A,k)],[Math.min(E,L),Math.max(E,L)]];["x","y","z"].forEach(function(Or){for(var Nr=[],ut=0;ut0&&(Le.push(lt.id),Or==="x"?xe.push([lt.distRatio,0,0]):Or==="y"?xe.push([0,lt.distRatio,0]):xe.push([0,0,lt.distRatio]))}else Or==="x"?ht=er(1,d-1):Or==="y"?ht=er(1,v-1):ht=er(1,x-1);Le.length>0&&(Or==="x"?Nr[Ne]=Ct(bt,Le,Ye,Ve,xe,Nr[Ne]):Or==="y"?Nr[Ne]=Yt(bt,Le,Ye,Ve,xe,Nr[Ne]):Nr[Ne]=xr(bt,Le,Ye,Ve,xe,Nr[Ne]),Ne++),ht.length>0&&(Or==="x"?Nr[Ne]=ct(bt,ht,Ye,Ve,Nr[Ne]):Or==="y"?Nr[Ne]=qt(bt,ht,Ye,Ve,Nr[Ne]):Nr[Ne]=rt(bt,ht,Ye,Ve,Nr[Ne]),Ne++)}var Gt=e.caps[Or];Gt.show&&Gt.fill&&(N(Gt.fill),Or==="x"?Nr[Ne]=ct(bt,[0,d-1],Ye,Ve,Nr[Ne]):Or==="y"?Nr[Ne]=qt(bt,[0,v-1],Ye,Ve,Nr[Ne]):Nr[Ne]=rt(bt,[0,x-1],Ye,Ve,Nr[Ne]),Ne++)}}),s===0&&F(),e._meshX=_,e._meshY=C,e._meshZ=M,e._meshIntensity=p,e._Xs=c,e._Ys=f,e._Zs=h}return xt(),e}function UIt(e,t){var r=e.glplot.gl,n=zIt({gl:r}),i=new uIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}fIe.exports={findNearestOnAxis:ZE,generateIsoMeshes:cIe,createIsosurfaceTrace:UIt}});var dIe=ye((Bvr,hIe)=>{"use strict";hIe.exports={attributes:tz(),supplyDefaults:zZ().supplyDefaults,calc:OZ(),colorbar:{min:"cmin",max:"cmax"},plot:nz().createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:$_(),categories:["gl3d","showLegend"],meta:{}}});var pIe=ye((Nvr,vIe)=>{"use strict";vIe.exports=dIe()});var UZ=ye((Uvr,mIe)=>{"use strict";var VIt=Kl(),xh=tz(),HIt=GE(),gIe=vl(),NZ=no().extendFlat,GIt=Bu().overrideAll,az=mIe.exports=GIt(NZ({x:xh.x,y:xh.y,z:xh.z,value:xh.value,isomin:xh.isomin,isomax:xh.isomax,surface:xh.surface,spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:1}},slices:xh.slices,caps:xh.caps,text:xh.text,hovertext:xh.hovertext,xhoverformat:xh.xhoverformat,yhoverformat:xh.yhoverformat,zhoverformat:xh.zhoverformat,valuehoverformat:xh.valuehoverformat,hovertemplate:xh.hovertemplate},VIt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{colorbar:xh.colorbar,opacity:xh.opacity,opacityscale:HIt.opacityscale,lightposition:xh.lightposition,lighting:xh.lighting,flatshading:xh.flatshading,contour:xh.contour,hoverinfo:NZ({},gIe.hoverinfo),showlegend:NZ({},gIe.showlegend,{dflt:!1})}),"calc","nested");az.x.editType=az.y.editType=az.z.editType=az.value.editType="calc+clearAxisTypes"});var _Ie=ye((Vvr,yIe)=>{"use strict";var jIt=Mr(),WIt=UZ(),ZIt=zZ().supplyIsoDefaults,XIt=CZ().opacityscaleDefaults;yIe.exports=function(t,r,n,i){function a(o,s){return jIt.coerce(t,r,WIt,o,s)}ZIt(t,r,n,i,a),XIt(t,r,i,a)}});var TIe=ye((Hvr,wIe)=>{"use strict";var YIt=Rd().gl_mesh3d,KIt=$y().parseColorScale,JIt=Mr().isArrayOrTypedArray,$It=Jy(),QIt=Mu().extractOpts,xIe=G5(),VZ=nz().findNearestOnAxis,e8t=nz().generateIsoMeshes;function bIe(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.data=null,this.showContour=!1}var HZ=bIe.prototype;HZ.handlePick=function(e){if(e.object===this.mesh){var t=e.data.index,r=this.data._meshX[t],n=this.data._meshY[t],i=this.data._meshZ[t],a=this.data._Ys.length,o=this.data._Zs.length,s=VZ(r,this.data._Xs).id,l=VZ(n,this.data._Ys).id,u=VZ(i,this.data._Zs).id,c=e.index=u+o*l+o*a*s;e.traceCoordinate=[this.data._meshX[c],this.data._meshY[c],this.data._meshZ[c],this.data._value[c]];var f=this.data.hovertext||this.data.text;return JIt(f)&&f[c]!==void 0?e.textLabel=f[c]:f&&(e.textLabel=f),!0}};HZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=e8t(e);function n(l,u,c,f){return u.map(function(h){return l.d2l(h,0,f)*c})}var i=xIe(n(r.xaxis,e._meshX,t.dataScale[0],e.xcalendar),n(r.yaxis,e._meshY,t.dataScale[1],e.ycalendar),n(r.zaxis,e._meshZ,t.dataScale[2],e.zcalendar)),a=xIe(e._meshI,e._meshJ,e._meshK),o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,opacityscale:e.opacityscale,contourEnable:e.contour.show,contourColor:$It(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading},s=QIt(e);o.vertexIntensity=e._meshIntensity,o.vertexIntensityBounds=[s.min,s.max],o.colormap=KIt(e),this.mesh.update(o)};HZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function t8t(e,t){var r=e.glplot.gl,n=YIt({gl:r}),i=new bIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}wIe.exports=t8t});var SIe=ye((Gvr,AIe)=>{"use strict";AIe.exports={attributes:UZ(),supplyDefaults:_Ie(),calc:OZ(),colorbar:{min:"cmin",max:"cmax"},plot:TIe(),moduleType:"trace",name:"volume",basePlotModule:$_(),categories:["gl3d","showLegend"],meta:{}}});var EIe=ye((jvr,MIe)=>{"use strict";MIe.exports=SIe()});var LIe=ye((Wvr,CIe)=>{"use strict";var r8t=ba(),kIe=Mr(),i8t=Uh(),n8t=V5();CIe.exports=function(t,r,n,i){function a(c,f){return kIe.coerce(t,r,n8t,c,f)}function o(c){var f=c.map(function(h){var d=a(h);return d&&kIe.isArrayOrTypedArray(d)?d:null});return f.every(function(h){return h&&h.length===f[0].length})&&f}var s=o(["x","y","z"]);if(!s){r.visible=!1;return}if(o(["i","j","k"]),r.i&&(!r.j||!r.k)||r.j&&(!r.k||!r.i)||r.k&&(!r.i||!r.j)){r.visible=!1;return}var l=r8t.getComponentMethod("calendars","handleTraceDefaults");l(t,r,["x","y","z"],i),["lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","alphahull","delaunayaxis","opacity"].forEach(function(c){a(c)});var u=a("contour.show");u&&(a("contour.color"),a("contour.width")),"intensity"in t?(a("intensity"),a("intensitymode"),i8t(t,r,i,a,{prefix:"",cLetter:"c"})):(r.showscale=!1,"facecolor"in t?a("facecolor"):"vertexcolor"in t?a("vertexcolor"):a("color",n)),a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var IIe=ye((Zvr,PIe)=>{"use strict";var a8t=zv();PIe.exports=function(t,r){r.intensity&&a8t(t,r,{vals:r.intensity,containerStr:"",cLetter:"c"})}});var qIe=ye((Xvr,FIe)=>{"use strict";var o8t=Rd().gl_mesh3d,s8t=Rd().delaunay_triangulate,l8t=Rd().alpha_shape,u8t=Rd().convex_hull,c8t=$y().parseColorScale,f8t=Mr().isArrayOrTypedArray,ZZ=Jy(),h8t=Mu().extractOpts,RIe=G5();function zIe(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var XZ=zIe.prototype;XZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index;e.data._cellCenter?e.traceCoordinate=e.data.dataCoordinate:e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]];var r=this.data.hovertext||this.data.text;return f8t(r)&&r[t]!==void 0?e.textLabel=r[t]:r&&(e.textLabel=r),!0}};function DIe(e){for(var t=[],r=e.length,n=0;n=t-.5)return!1;return!0}XZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=e;var n=e.x.length,i=RIe(GZ(r.xaxis,e.x,t.dataScale[0],e.xcalendar),GZ(r.yaxis,e.y,t.dataScale[1],e.ycalendar),GZ(r.zaxis,e.z,t.dataScale[2],e.zcalendar)),a;if(e.i&&e.j&&e.k){if(e.i.length!==e.j.length||e.j.length!==e.k.length||!WZ(e.i,n)||!WZ(e.j,n)||!WZ(e.k,n))return;a=RIe(jZ(e.i),jZ(e.j),jZ(e.k))}else e.alphahull===0?a=u8t(i):e.alphahull>0?a=l8t(e.alphahull,i):a=d8t(e.delaunayaxis,i);var o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,contourEnable:e.contour.show,contourColor:ZZ(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading};if(e.intensity){var s=h8t(e);this.color="#fff";var l=e.intensitymode;o[l+"Intensity"]=e.intensity,o[l+"IntensityBounds"]=[s.min,s.max],o.colormap=c8t(e)}else e.vertexcolor?(this.color=e.vertexcolor[0],o.vertexColors=DIe(e.vertexcolor)):e.facecolor?(this.color=e.facecolor[0],o.cellColors=DIe(e.facecolor)):(this.color=e.color,o.meshColor=ZZ(e.color));this.mesh.update(o)};XZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function v8t(e,t){var r=e.glplot.gl,n=o8t({gl:r}),i=new zIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}FIe.exports=v8t});var BIe=ye((Yvr,OIe)=>{"use strict";OIe.exports={attributes:V5(),supplyDefaults:LIe(),calc:IIe(),colorbar:{min:"cmin",max:"cmax"},plot:qIe(),moduleType:"trace",name:"mesh3d",basePlotModule:$_(),categories:["gl3d","showLegend"],meta:{}}});var UIe=ye((Kvr,NIe)=>{"use strict";NIe.exports=BIe()});var KZ=ye((Jvr,HIe)=>{"use strict";var p8t=Kl(),j5=Oc().axisHoverFormat,g8t=Wo().hovertemplateAttrs,m8t=V5(),VIe=vl(),YZ=no().extendFlat,oz={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute","raw"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:g8t({editType:"calc"},{keys:["norm"]}),uhoverformat:j5("u",1),vhoverformat:j5("v",1),whoverformat:j5("w",1),xhoverformat:j5("x"),yhoverformat:j5("y"),zhoverformat:j5("z"),showlegend:YZ({},VIe.showlegend,{dflt:!1})};YZ(oz,p8t("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var y8t=["opacity","lightposition","lighting"];y8t.forEach(function(e){oz[e]=m8t[e]});oz.hoverinfo=YZ({},VIe.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"});HIe.exports=oz});var jIe=ye(($vr,GIe)=>{"use strict";var _8t=Mr(),x8t=Uh(),b8t=KZ();GIe.exports=function(t,r,n,i){function a(d,v){return _8t.coerce(t,r,b8t,d,v)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}var h=a("sizemode");a("sizeref",h==="raw"?1:.5),a("anchor"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),x8t(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var ZIe=ye((Qvr,WIe)=>{"use strict";var w8t=zv();WIe.exports=function(t,r){for(var n=r.u,i=r.v,a=r.w,o=Math.min(r.x.length,r.y.length,r.z.length,n.length,i.length,a.length),s=-1/0,l=1/0,u=0;u{"use strict";var T8t=Rd().gl_cone3d,A8t=Rd().gl_cone3d.createConeMesh,S8t=Mr().simpleMap,M8t=$y().parseColorScale,E8t=Mu().extractOpts,k8t=Mr().isArrayOrTypedArray,XIe=G5();function YIe(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var JZ=YIe.prototype;JZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index,r=this.data.x[t],n=this.data.y[t],i=this.data.z[t],a=this.data.u[t],o=this.data.v[t],s=this.data.w[t];e.traceCoordinate=[r,n,i,a,o,s,Math.sqrt(a*a+o*o+s*s)];var l=this.data.hovertext||this.data.text;return k8t(l)&&l[t]!==void 0?e.textLabel=l[t]:l&&(e.textLabel=l),!0}};var C8t={xaxis:0,yaxis:1,zaxis:2},L8t={tip:1,tail:0,cm:.25,center:.5},P8t={tip:1,tail:1,cm:.75,center:.5};function KIe(e,t){var r=e.fullSceneLayout,n=e.dataScale,i={};function a(c,f){var h=r[f],d=n[C8t[f]];return S8t(c,function(v){return h.d2l(v)*d})}i.vectors=XIe(a(t.u,"xaxis"),a(t.v,"yaxis"),a(t.w,"zaxis"),t._len),i.positions=XIe(a(t.x,"xaxis"),a(t.y,"yaxis"),a(t.z,"zaxis"),t._len);var o=E8t(t);i.colormap=M8t(t),i.vertexIntensityBounds=[o.min/t._normMax,o.max/t._normMax],i.coneOffset=L8t[t.anchor];var s=t.sizemode;s==="scaled"?i.coneSize=t.sizeref||.5:s==="absolute"?i.coneSize=t.sizeref&&t._normMax?t.sizeref/t._normMax:.5:s==="raw"&&(i.coneSize=t.sizeref),i.coneSizemode=s;var l=T8t(i),u=t.lightposition;return l.lightPosition=[u.x,u.y,u.z],l.ambient=t.lighting.ambient,l.diffuse=t.lighting.diffuse,l.specular=t.lighting.specular,l.roughness=t.lighting.roughness,l.fresnel=t.lighting.fresnel,l.opacity=t.opacity,t._pad=P8t[t.anchor]*l.vectorScale*l.coneScale*t._normMax,l}JZ.update=function(e){this.data=e;var t=KIe(this.scene,e);this.mesh.update(t)};JZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function I8t(e,t){var r=e.glplot.gl,n=KIe(e,t),i=A8t(r,n),a=new YIe(e,t.uid);return a.mesh=i,a.data=t,i._trace=a,e.glplot.add(i),a}JIe.exports=I8t});var e8e=ye((tpr,QIe)=>{"use strict";QIe.exports={moduleType:"trace",name:"cone",basePlotModule:$_(),categories:["gl3d","showLegend"],attributes:KZ(),supplyDefaults:jIe(),colorbar:{min:"cmin",max:"cmax"},calc:ZIe(),plot:$Ie(),eventData:function(e,t){return e.norm=t.traceCoordinate[6],e},meta:{}}});var r8e=ye((rpr,t8e)=>{"use strict";t8e.exports=e8e()});var QZ=ye((ipr,n8e)=>{"use strict";var R8t=Kl(),W5=Oc().axisHoverFormat,D8t=Wo().hovertemplateAttrs,z8t=V5(),i8e=vl(),$Z=no().extendFlat,sz={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},starts:{x:{valType:"data_array",editType:"calc"},y:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},editType:"calc"},maxdisplayed:{valType:"integer",min:0,dflt:1e3,editType:"calc"},sizeref:{valType:"number",editType:"calc",min:0,dflt:1},text:{valType:"string",dflt:"",editType:"calc"},hovertext:{valType:"string",dflt:"",editType:"calc"},hovertemplate:D8t({editType:"calc"},{keys:["tubex","tubey","tubez","tubeu","tubev","tubew","norm","divergence"]}),uhoverformat:W5("u",1),vhoverformat:W5("v",1),whoverformat:W5("w",1),xhoverformat:W5("x"),yhoverformat:W5("y"),zhoverformat:W5("z"),showlegend:$Z({},i8e.showlegend,{dflt:!1})};$Z(sz,R8t("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var F8t=["opacity","lightposition","lighting"];F8t.forEach(function(e){sz[e]=z8t[e]});sz.hoverinfo=$Z({},i8e.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","divergence","text","name"],dflt:"x+y+z+norm+text+name"});n8e.exports=sz});var o8e=ye((npr,a8e)=>{"use strict";var q8t=Mr(),O8t=Uh(),B8t=QZ();a8e.exports=function(t,r,n,i){function a(h,d){return q8t.coerce(t,r,B8t,h,d)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}a("starts.x"),a("starts.y"),a("starts.z"),a("maxdisplayed"),a("sizeref"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),O8t(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var v8e=ye((apr,d8e)=>{"use strict";var u8e=Rd().gl_streamtube3d,N8t=u8e.createTubeMesh,U8t=Mr(),V8t=$y().parseColorScale,H8t=Mu().extractOpts,s8e=G5(),c8e={xaxis:0,yaxis:1,zaxis:2};function f8e(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var tX=f8e.prototype;tX.handlePick=function(e){var t=this.scene.fullSceneLayout,r=this.scene.dataScale;function n(o,s){var l=t[s],u=r[c8e[s]];return l.l2c(o)/u}if(e.object===this.mesh){var i=e.data.position,a=e.data.velocity;return e.traceCoordinate=[n(i[0],"xaxis"),n(i[1],"yaxis"),n(i[2],"zaxis"),n(a[0],"xaxis"),n(a[1],"yaxis"),n(a[2],"zaxis"),e.data.intensity*this.data._normMax,e.data.divergence],e.textLabel=this.data.hovertext||this.data.text,!0}};function l8e(e){var t=e.length,r;return t>2?r=e.slice(1,t-1):t===2?r=[(e[0]+e[1])/2]:r=e,r}function eX(e){var t=e.length;return t===1?[.5,.5]:[e[1]-e[0],e[t-1]-e[t-2]]}function h8e(e,t){var r=e.fullSceneLayout,n=e.dataScale,i=t._len,a={};function o(F,q){var V=r[q],H=n[c8e[q]];return U8t.simpleMap(F,function(X){return V.d2l(X)*H})}if(a.vectors=s8e(o(t._u,"xaxis"),o(t._v,"yaxis"),o(t._w,"zaxis"),i),!i)return{positions:[],cells:[]};var s=o(t._Xs,"xaxis"),l=o(t._Ys,"yaxis"),u=o(t._Zs,"zaxis");a.meshgrid=[s,l,u],a.gridFill=t._gridFill;var c=t._slen;if(c)a.startingPositions=s8e(o(t._startsX,"xaxis"),o(t._startsY,"yaxis"),o(t._startsZ,"zaxis"));else{for(var f=l[0],h=l8e(s),d=l8e(u),v=new Array(h.length*d.length),x=0,b=0;b{"use strict";p8e.exports={moduleType:"trace",name:"streamtube",basePlotModule:$_(),categories:["gl3d","showLegend"],attributes:QZ(),supplyDefaults:o8e(),colorbar:{min:"cmin",max:"cmax"},calc:rz().calc,plot:v8e(),eventData:function(e,t){return e.tubex=e.x,e.tubey=e.y,e.tubez=e.z,e.tubeu=t.traceCoordinate[3],e.tubev=t.traceCoordinate[4],e.tubew=t.traceCoordinate[5],e.norm=t.traceCoordinate[6],e.divergence=t.traceCoordinate[7],delete e.x,delete e.y,delete e.z,e},meta:{}}});var y8e=ye((spr,m8e)=>{"use strict";m8e.exports=g8e()});var H2=ye((lpr,b8e)=>{"use strict";var j8t=Wo().hovertemplateAttrs,W8t=Wo().texttemplateAttrs,Z8t=Eg(),jm=Uc(),X8t=vl(),_8e=Kl(),Y8t=Ed().dash,V2=no().extendFlat,K8t=Bu().overrideAll,eg=jm.marker,x8e=jm.line,J8t=eg.line;b8e.exports=K8t({lon:{valType:"data_array"},lat:{valType:"data_array"},locations:{valType:"data_array"},locationmode:{valType:"enumerated",values:["ISO-3","USA-states","country names","geojson-id"],dflt:"ISO-3"},geojson:{valType:"any",editType:"calc"},featureidkey:{valType:"string",editType:"calc",dflt:"id"},mode:V2({},jm.mode,{dflt:"markers"}),text:V2({},jm.text,{}),texttemplate:W8t({editType:"plot"},{keys:["lat","lon","location","text"]}),hovertext:V2({},jm.hovertext,{}),textfont:jm.textfont,textposition:jm.textposition,line:{color:x8e.color,width:x8e.width,dash:Y8t},connectgaps:jm.connectgaps,marker:V2({symbol:eg.symbol,opacity:eg.opacity,angle:eg.angle,angleref:V2({},eg.angleref,{values:["previous","up","north"]}),standoff:eg.standoff,size:eg.size,sizeref:eg.sizeref,sizemin:eg.sizemin,sizemode:eg.sizemode,colorbar:eg.colorbar,line:V2({width:J8t.width},_8e("marker.line")),gradient:eg.gradient},_8e("marker")),fill:{valType:"enumerated",values:["none","toself"],dflt:"none"},fillcolor:Z8t(),selected:jm.selected,unselected:jm.unselected,hoverinfo:V2({},X8t.hoverinfo,{flags:["lon","lat","location","text","name"]}),hovertemplate:j8t()},"calc","nested")});var T8e=ye((upr,w8e)=>{"use strict";var rX=Mr(),iX=lu(),$8t=$p(),Q8t=R0(),eRt=D0(),tRt=Ig(),rRt=H2();w8e.exports=function(t,r,n,i){function a(d,v){return rX.coerce(t,r,rRt,d,v)}var o=a("locations"),s;if(o&&o.length){var l=a("geojson"),u;(typeof l=="string"&&l!==""||rX.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="geojson-id"&&a("featureidkey"),s=o.length}else{var f=a("lon")||[],h=a("lat")||[];s=Math.min(f.length,h.length)}if(!s){r.visible=!1;return}r._length=s,a("text"),a("hovertext"),a("hovertemplate"),a("mode"),iX.hasMarkers(r)&&$8t(t,r,n,i,a,{gradient:!0}),iX.hasLines(r)&&(Q8t(t,r,n,i,a),a("connectgaps")),iX.hasText(r)&&(a("texttemplate"),eRt(t,r,i,a)),a("fill"),r.fill!=="none"&&tRt(t,r,n,a),rX.coerceSelectionMarkerOpacity(r,a)}});var M8e=ye((cpr,S8e)=>{"use strict";var A8e=Qa();S8e.exports=function(t,r,n){var i={},a=n[r.geo]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=A8e.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=A8e.tickText(o,o.c2l(s[1]),!0).text,i}});var lz=ye((fpr,L8e)=>{"use strict";var nX=uo(),E8e=es().BADNUM,iRt=z0(),nRt=km(),aRt=F0(),oRt=Mr().isArrayOrTypedArray,k8e=Mr()._;function C8e(e){return e&&typeof e=="string"}L8e.exports=function(t,r){var n=oRt(r.locations),i=n?r.locations.length:r._length,a=new Array(i),o;r.geojson?o=function(h){return C8e(h)||nX(h)}:o=C8e;for(var s=0;s{"use strict";Tv.projNames={airy:"airy",aitoff:"aitoff","albers usa":"albersUsa",albers:"albers",august:"august","azimuthal equal area":"azimuthalEqualArea","azimuthal equidistant":"azimuthalEquidistant",baker:"baker",bertin1953:"bertin1953",boggs:"boggs",bonne:"bonne",bottomley:"bottomley",bromley:"bromley",collignon:"collignon","conic conformal":"conicConformal","conic equal area":"conicEqualArea","conic equidistant":"conicEquidistant",craig:"craig",craster:"craster","cylindrical equal area":"cylindricalEqualArea","cylindrical stereographic":"cylindricalStereographic",eckert1:"eckert1",eckert2:"eckert2",eckert3:"eckert3",eckert4:"eckert4",eckert5:"eckert5",eckert6:"eckert6",eisenlohr:"eisenlohr","equal earth":"equalEarth",equirectangular:"equirectangular",fahey:"fahey","foucaut sinusoidal":"foucautSinusoidal",foucaut:"foucaut",ginzburg4:"ginzburg4",ginzburg5:"ginzburg5",ginzburg6:"ginzburg6",ginzburg8:"ginzburg8",ginzburg9:"ginzburg9",gnomonic:"gnomonic","gringorten quincuncial":"gringortenQuincuncial",gringorten:"gringorten",guyou:"guyou",hammer:"hammer",hill:"hill",homolosine:"homolosine",hufnagel:"hufnagel",hyperelliptical:"hyperelliptical",kavrayskiy7:"kavrayskiy7",lagrange:"lagrange",larrivee:"larrivee",laskowski:"laskowski",loximuthal:"loximuthal",mercator:"mercator",miller:"miller",mollweide:"mollweide","mt flat polar parabolic":"mtFlatPolarParabolic","mt flat polar quartic":"mtFlatPolarQuartic","mt flat polar sinusoidal":"mtFlatPolarSinusoidal","natural earth":"naturalEarth","natural earth1":"naturalEarth1","natural earth2":"naturalEarth2","nell hammer":"nellHammer",nicolosi:"nicolosi",orthographic:"orthographic",patterson:"patterson","peirce quincuncial":"peirceQuincuncial",polyconic:"polyconic","rectangular polyconic":"rectangularPolyconic",robinson:"robinson",satellite:"satellite","sinu mollweide":"sinuMollweide",sinusoidal:"sinusoidal",stereographic:"stereographic",times:"times","transverse mercator":"transverseMercator","van der grinten":"vanDerGrinten","van der grinten2":"vanDerGrinten2","van der grinten3":"vanDerGrinten3","van der grinten4":"vanDerGrinten4",wagner4:"wagner4",wagner6:"wagner6",wiechel:"wiechel","winkel tripel":"winkel3",winkel3:"winkel3"};Tv.axesNames=["lonaxis","lataxis"];Tv.lonaxisSpan={orthographic:180,"azimuthal equal area":360,"azimuthal equidistant":360,"conic conformal":180,gnomonic:160,stereographic:180,"transverse mercator":180,"*":360};Tv.lataxisSpan={"conic conformal":150,stereographic:179.5,"*":180};Tv.scopeDefaults={world:{lonaxisRange:[-180,180],lataxisRange:[-90,90],projType:"equirectangular",projRotate:[0,0,0]},usa:{lonaxisRange:[-180,-50],lataxisRange:[15,80],projType:"albers usa"},europe:{lonaxisRange:[-30,60],lataxisRange:[30,85],projType:"conic conformal",projRotate:[15,0,0],projParallels:[0,60]},asia:{lonaxisRange:[22,160],lataxisRange:[-15,55],projType:"mercator",projRotate:[0,0,0]},africa:{lonaxisRange:[-30,60],lataxisRange:[-40,40],projType:"mercator",projRotate:[0,0,0]},"north america":{lonaxisRange:[-180,-45],lataxisRange:[5,85],projType:"conic conformal",projRotate:[-100,0,0],projParallels:[29.5,45.5]},"south america":{lonaxisRange:[-100,-30],lataxisRange:[-60,15],projType:"mercator",projRotate:[0,0,0]}};Tv.clipPad=.001;Tv.precision=.1;Tv.landColor="#F0DC82";Tv.waterColor="#3399FF";Tv.locationmodeToLayer={"ISO-3":"countries","USA-states":"subunits","country names":"countries"};Tv.sphereSVG={type:"Sphere"};Tv.fillLayers={ocean:1,land:1,lakes:1};Tv.lineLayers={subunits:1,countries:1,coastlines:1,rivers:1,frame:1};Tv.layers=["bg","ocean","land","lakes","subunits","countries","coastlines","rivers","lataxis","lonaxis","frame","backplot","frontplot"];Tv.layersForChoropleth=["bg","ocean","land","subunits","countries","coastlines","lataxis","lonaxis","frame","backplot","rivers","lakes","frontplot"];Tv.layerNameToAdjective={ocean:"ocean",land:"land",lakes:"lake",subunits:"subunit",countries:"country",coastlines:"coastline",rivers:"river",frame:"frame"}});var aX=ye((uz,P8e)=>{(function(e,t){typeof uz=="object"&&typeof P8e!="undefined"?t(uz):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.topojson=e.topojson||{}))})(uz,function(e){"use strict";function t(k){return k}function r(k){if(k==null)return t;var A,L,_=k.scale[0],C=k.scale[1],M=k.translate[0],p=k.translate[1];return function(P,T){T||(A=L=0);var F=2,q=P.length,V=new Array(q);for(V[0]=(A+=P[0])*_+M,V[1]=(L+=P[1])*C+p;FM&&(M=F[0]),F[1]p&&(p=F[1])}function T(F){switch(F.type){case"GeometryCollection":F.geometries.forEach(T);break;case"Point":P(F.coordinates);break;case"MultiPoint":F.coordinates.forEach(P);break}}k.arcs.forEach(function(F){for(var q=-1,V=F.length,H;++qM&&(M=H[0]),H[1]p&&(p=H[1])});for(L in k.objects)T(k.objects[L]);return[_,C,M,p]}function i(k,A){for(var L,_=k.length,C=_-A;C<--_;)L=k[C],k[C++]=k[_],k[_]=L}function a(k,A){return typeof A=="string"&&(A=k.objects[A]),A.type==="GeometryCollection"?{type:"FeatureCollection",features:A.geometries.map(function(L){return o(k,L)})}:o(k,A)}function o(k,A){var L=A.id,_=A.bbox,C=A.properties==null?{}:A.properties,M=s(k,A);return L==null&&_==null?{type:"Feature",properties:C,geometry:M}:_==null?{type:"Feature",id:L,properties:C,geometry:M}:{type:"Feature",id:L,bbox:_,properties:C,geometry:M}}function s(k,A){var L=r(k.transform),_=k.arcs;function C(q,V){V.length&&V.pop();for(var H=_[q<0?~q:q],X=0,G=H.length;X1)_=f(k,A,L);else for(C=0,_=new Array(M=k.arcs.length);C1)for(var V=1,H=P(F[0]),X,G;VH&&(G=F[0],F[0]=F[V],F[V]=G,H=X);return F}).filter(function(T){return T.length>0})}}function x(k,A){for(var L=0,_=k.length;L<_;){var C=L+_>>>1;k[C]=2))throw new Error("n must be \u22652");T=k.bbox||n(k);var L=T[0],_=T[1],C=T[2],M=T[3],p;A={scale:[C-L?(C-L)/(p-1):1,M-_?(M-_)/(p-1):1],translate:[L,_]}}else T=k.bbox;var P=g(A),T,F,q=k.objects,V={};function H(N){return P(N)}function X(N){var W;switch(N.type){case"GeometryCollection":W={type:"GeometryCollection",geometries:N.geometries.map(X)};break;case"Point":W={type:"Point",coordinates:H(N.coordinates)};break;case"MultiPoint":W={type:"MultiPoint",coordinates:N.coordinates.map(H)};break;default:return N}return N.id!=null&&(W.id=N.id),N.bbox!=null&&(W.bbox=N.bbox),N.properties!=null&&(W.properties=N.properties),W}function G(N){var W=0,re=1,ae=N.length,_e,Me=new Array(ae);for(Me[0]=P(N[0],0);++W{"use strict";var oX=I8e.exports={},sRt=XE().locationmodeToLayer,lRt=aX().feature;oX.getTopojsonName=function(e){return[e.scope.replace(/ /g,"-"),"_",e.resolution.toString(),"m"].join("")};oX.getTopojsonPath=function(e,t){return e+t+".json"};oX.getTopojsonFeatures=function(e,t){var r=sRt[e.locationmode],n=t.objects[r];return lRt(t,n).features}});var tx=ye(YE=>{"use strict";var uRt=es().BADNUM;YE.calcTraceToLineCoords=function(e){for(var t=e[0].trace,r=t.connectgaps,n=[],i=[],a=0;a0&&(n.push(i),i=[])}return i.length>0&&n.push(i),n};YE.makeLine=function(e){return e.length===1?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e}};YE.makePolygon=function(e){if(e.length===1)return{type:"Polygon",coordinates:e};for(var t=new Array(e.length),r=0;r{R8e.exports={AFG:"afghan",ALA:"\\b\\wland",ALB:"albania",DZA:"algeria",ASM:"^(?=.*americ).*samoa",AND:"andorra",AGO:"angola",AIA:"anguill?a",ATA:"antarctica",ATG:"antigua",ARG:"argentin",ARM:"armenia",ABW:"^(?!.*bonaire).*\\baruba",AUS:"australia",AUT:"^(?!.*hungary).*austria|\\baustri.*\\bemp",AZE:"azerbaijan",BHS:"bahamas",BHR:"bahrain",BGD:"bangladesh|^(?=.*east).*paki?stan",BRB:"barbados",BLR:"belarus|byelo",BEL:"^(?!.*luxem).*belgium",BLZ:"belize|^(?=.*british).*honduras",BEN:"benin|dahome",BMU:"bermuda",BTN:"bhutan",BOL:"bolivia",BES:"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",BIH:"herzegovina|bosnia",BWA:"botswana|bechuana",BVT:"bouvet",BRA:"brazil",IOT:"british.?indian.?ocean",BRN:"brunei",BGR:"bulgaria",BFA:"burkina|\\bfaso|upper.?volta",BDI:"burundi",CPV:"verde",KHM:"cambodia|kampuchea|khmer",CMR:"cameroon",CAN:"canada",CYM:"cayman",CAF:"\\bcentral.african.republic",TCD:"\\bchad",CHL:"\\bchile",CHN:"^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",CXR:"christmas",CCK:"\\bcocos|keeling",COL:"colombia",COM:"comoro",COG:"^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",COK:"\\bcook",CRI:"costa.?rica",CIV:"ivoire|ivory",HRV:"croatia",CUB:"\\bcuba",CUW:"^(?!.*bonaire).*\\bcura(c|\xE7)ao",CYP:"cyprus",CSK:"czechoslovakia",CZE:"^(?=.*rep).*czech|czechia|bohemia",COD:"\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",DNK:"denmark",DJI:"djibouti",DMA:"dominica(?!n)",DOM:"dominican.rep",ECU:"ecuador",EGY:"egypt",SLV:"el.?salvador",GNQ:"guine.*eq|eq.*guine|^(?=.*span).*guinea",ERI:"eritrea",EST:"estonia",ETH:"ethiopia|abyssinia",FLK:"falkland|malvinas",FRO:"faroe|faeroe",FJI:"fiji",FIN:"finland",FRA:"^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",GUF:"^(?=.*french).*guiana",PYF:"french.?polynesia|tahiti",ATF:"french.?southern",GAB:"gabon",GMB:"gambia",GEO:"^(?!.*south).*georgia",DDR:"german.?democratic.?republic|democratic.?republic.*germany|east.germany",DEU:"^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",GHA:"ghana|gold.?coast",GIB:"gibraltar",GRC:"greece|hellenic|hellas",GRL:"greenland",GRD:"grenada",GLP:"guadeloupe",GUM:"\\bguam",GTM:"guatemala",GGY:"guernsey",GIN:"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",GNB:"bissau|^(?=.*portu).*guinea",GUY:"guyana|british.?guiana",HTI:"haiti",HMD:"heard.*mcdonald",VAT:"holy.?see|vatican|papal.?st",HND:"^(?!.*brit).*honduras",HKG:"hong.?kong",HUN:"^(?!.*austr).*hungary",ISL:"iceland",IND:"india(?!.*ocea)",IDN:"indonesia",IRN:"\\biran|persia",IRQ:"\\biraq|mesopotamia",IRL:"(^ireland)|(^republic.*ireland)",IMN:"^(?=.*isle).*\\bman",ISR:"israel",ITA:"italy",JAM:"jamaica",JPN:"japan",JEY:"jersey",JOR:"jordan",KAZ:"kazak",KEN:"kenya|british.?east.?africa|east.?africa.?prot",KIR:"kiribati",PRK:"^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",KWT:"kuwait",KGZ:"kyrgyz|kirghiz",LAO:"\\blaos?\\b",LVA:"latvia",LBN:"lebanon",LSO:"lesotho|basuto",LBR:"liberia",LBY:"libya",LIE:"liechtenstein",LTU:"lithuania",LUX:"^(?!.*belg).*luxem",MAC:"maca(o|u)",MDG:"madagascar|malagasy",MWI:"malawi|nyasa",MYS:"malaysia",MDV:"maldive",MLI:"\\bmali\\b",MLT:"\\bmalta",MHL:"marshall",MTQ:"martinique",MRT:"mauritania",MUS:"mauritius",MYT:"\\bmayotte",MEX:"\\bmexic",FSM:"fed.*micronesia|micronesia.*fed",MCO:"monaco",MNG:"mongolia",MNE:"^(?!.*serbia).*montenegro",MSR:"montserrat",MAR:"morocco|\\bmaroc",MOZ:"mozambique",MMR:"myanmar|burma",NAM:"namibia",NRU:"nauru",NPL:"nepal",NLD:"^(?!.*\\bant)(?!.*\\bcarib).*netherlands",ANT:"^(?=.*\\bant).*(nether|dutch)",NCL:"new.?caledonia",NZL:"new.?zealand",NIC:"nicaragua",NER:"\\bniger(?!ia)",NGA:"nigeria",NIU:"niue",NFK:"norfolk",MNP:"mariana",NOR:"norway",OMN:"\\boman|trucial",PAK:"^(?!.*east).*paki?stan",PLW:"palau",PSE:"palestin|\\bgaza|west.?bank",PAN:"panama",PNG:"papua|new.?guinea",PRY:"paraguay",PER:"peru",PHL:"philippines",PCN:"pitcairn",POL:"poland",PRT:"portugal",PRI:"puerto.?rico",QAT:"qatar",KOR:"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",MDA:"moldov|b(a|e)ssarabia",REU:"r(e|\xE9)union",ROU:"r(o|u|ou)mania",RUS:"\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",RWA:"rwanda",BLM:"barth(e|\xE9)lemy",SHN:"helena",KNA:"kitts|\\bnevis",LCA:"\\blucia",MAF:"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",SPM:"miquelon",VCT:"vincent",WSM:"^(?!.*amer).*samoa",SMR:"san.?marino",STP:"\\bs(a|\xE3)o.?tom(e|\xE9)",SAU:"\\bsa\\w*.?arabia",SEN:"senegal",SRB:"^(?!.*monte).*serbia",SYC:"seychell",SLE:"sierra",SGP:"singapore",SXM:"^(?!.*martin)(?!.*saba).*maarten",SVK:"^(?!.*cze).*slovak",SVN:"slovenia",SLB:"solomon",SOM:"somali",ZAF:"south.africa|s\\\\..?africa",SGS:"south.?georgia|sandwich",SSD:"\\bs\\w*.?sudan",ESP:"spain",LKA:"sri.?lanka|ceylon",SDN:"^(?!.*\\bs(?!u)).*sudan",SUR:"surinam|dutch.?guiana",SJM:"svalbard",SWZ:"swaziland",SWE:"sweden",CHE:"switz|swiss",SYR:"syria",TWN:"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",TJK:"tajik",THA:"thailand|\\bsiam",MKD:"macedonia|fyrom",TLS:"^(?=.*leste).*timor|^(?=.*east).*timor",TGO:"togo",TKL:"tokelau",TON:"tonga",TTO:"trinidad|tobago",TUN:"tunisia",TUR:"turkey",TKM:"turkmen",TCA:"turks",TUV:"tuvalu",UGA:"uganda",UKR:"ukrain",ARE:"emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",GBR:"united.?kingdom|britain|^u\\.?k\\.?$",TZA:"tanzania",USA:"united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",UMI:"minor.?outlying.?is",URY:"uruguay",UZB:"uzbek",VUT:"vanuatu|new.?hebrides",VEN:"venezuela",VNM:"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",VGB:"^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",VIR:"^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",WLF:"futuna|wallis",ESH:"western.sahara",YEM:"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",YMD:"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",YUG:"yugoslavia",ZMB:"zambia|northern.?rhodesia",EAZ:"zanzibar",ZWE:"zimbabwe|^(?!.*northern).*rhodesia"}});var dz=ye(ku=>{"use strict";Object.defineProperty(ku,"__esModule",{value:!0});var qp=63710088e-1,lX={centimeters:qp*100,centimetres:qp*100,degrees:360/(2*Math.PI),feet:qp*3.28084,inches:qp*39.37,kilometers:qp/1e3,kilometres:qp/1e3,meters:qp,metres:qp,miles:qp/1609.344,millimeters:qp*1e3,millimetres:qp*1e3,nauticalmiles:qp/1852,radians:1,yards:qp*1.0936},sX={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,nauticalmiles:29155334959812285e-23,millimeters:1e6,millimetres:1e6,yards:1.195990046};function rx(e,t,r={}){let n={type:"Feature"};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function cRt(e,t,r={}){switch(e){case"Point":return uX(t).geometry;case"LineString":return fX(t).geometry;case"Polygon":return cX(t).geometry;case"MultiPoint":return F8e(t).geometry;case"MultiLineString":return z8e(t).geometry;case"MultiPolygon":return q8e(t).geometry;default:throw new Error(e+" is invalid")}}function uX(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!fz(e[0])||!fz(e[1]))throw new Error("coordinates must contain numbers");return rx({type:"Point",coordinates:e},t,r)}function fRt(e,t,r={}){return hz(e.map(n=>uX(n,t)),r)}function cX(e,t,r={}){for(let i of e){if(i.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(i[i.length-1].length!==i[0].length)throw new Error("First and last Position are not equivalent.");for(let a=0;acX(n,t)),r)}function fX(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return rx({type:"LineString",coordinates:e},t,r)}function dRt(e,t,r={}){return hz(e.map(n=>fX(n,t)),r)}function hz(e,t={}){let r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function z8e(e,t,r={}){return rx({type:"MultiLineString",coordinates:e},t,r)}function F8e(e,t,r={}){return rx({type:"MultiPoint",coordinates:e},t,r)}function q8e(e,t,r={}){return rx({type:"MultiPolygon",coordinates:e},t,r)}function vRt(e,t,r={}){return rx({type:"GeometryCollection",geometries:e},t,r)}function pRt(e,t=0){if(t&&!(t>=0))throw new Error("precision must be a positive number");let r=Math.pow(10,t||0);return Math.round(e*r)/r}function O8e(e,t="kilometers"){let r=lX[t];if(!r)throw new Error(t+" units is invalid");return e*r}function hX(e,t="kilometers"){let r=lX[t];if(!r)throw new Error(t+" units is invalid");return e/r}function gRt(e,t){return B8e(hX(e,t))}function mRt(e){let t=e%360;return t<0&&(t+=360),t}function yRt(e){return e=e%360,e>0?e>180?e-360:e:e<-180?e+360:e}function B8e(e){return e%(2*Math.PI)*180/Math.PI}function _Rt(e){return e%360*Math.PI/180}function xRt(e,t="kilometers",r="kilometers"){if(!(e>=0))throw new Error("length must be a positive number");return O8e(hX(e,t),r)}function bRt(e,t="meters",r="kilometers"){if(!(e>=0))throw new Error("area must be a positive number");let n=sX[t];if(!n)throw new Error("invalid original units");let i=sX[r];if(!i)throw new Error("invalid final units");return e/n*i}function fz(e){return!isNaN(e)&&e!==null&&!Array.isArray(e)}function wRt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function TRt(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(e.length!==4&&e.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach(t=>{if(!fz(t))throw new Error("bbox must only contain numbers")})}function ARt(e){if(!e)throw new Error("id is required");if(["string","number"].indexOf(typeof e)===-1)throw new Error("id must be a number or a string")}ku.areaFactors=sX;ku.azimuthToBearing=yRt;ku.bearingToAzimuth=mRt;ku.convertArea=bRt;ku.convertLength=xRt;ku.degreesToRadians=_Rt;ku.earthRadius=qp;ku.factors=lX;ku.feature=rx;ku.featureCollection=hz;ku.geometry=cRt;ku.geometryCollection=vRt;ku.isNumber=fz;ku.isObject=wRt;ku.lengthToDegrees=gRt;ku.lengthToRadians=hX;ku.lineString=fX;ku.lineStrings=dRt;ku.multiLineString=z8e;ku.multiPoint=F8e;ku.multiPolygon=q8e;ku.point=uX;ku.points=fRt;ku.polygon=cX;ku.polygons=hRt;ku.radiansToDegrees=B8e;ku.radiansToLength=O8e;ku.round=pRt;ku.validateBBox=TRt;ku.validateId=ARt});var pz=ye(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var jv=dz();function KE(e,t,r){if(e!==null)for(var n,i,a,o,s,l,u,c=0,f=0,h,d=e.type,v=d==="FeatureCollection",x=d==="Feature",b=v?e.features.length:1,g=0;gl||v>u||x>c){s=f,l=n,u=v,c=x,a=0;return}var b=jv.lineString.call(void 0,[s,f],r.properties);if(t(b,n,i,x,a)===!1)return!1;a++,s=f})===!1)return!1}}})}function PRt(e,t,r){var n=r,i=!1;return V8e(e,function(a,o,s,l,u){i===!1&&r===void 0?n=a:n=t(n,a,o,s,l,u),i=!0}),n}function H8e(e,t){if(!e)throw new Error("geojson is required");vz(e,function(r,n,i){if(r.geometry!==null){var a=r.geometry.type,o=r.geometry.coordinates;switch(a){case"LineString":if(t(r,n,i,0,0)===!1)return!1;break;case"Polygon":for(var s=0;s{"use strict";Object.defineProperty(gz,"__esModule",{value:!0});var G8e=dz(),zRt=pz();function Z8e(e){return zRt.geomReduce.call(void 0,e,(t,r)=>t+FRt(r),0)}function FRt(e){let t=0,r;switch(e.type){case"Polygon":return j8e(e.coordinates);case"MultiPolygon":for(r=0;r0){t+=Math.abs(W8e(e[0]));for(let r=1;r=t?(n+2)%t:n+2],s=i[0]*vX,l=a[1]*vX,u=o[0]*vX;r+=(u-s)*Math.sin(l),n++}return r*qRt}var ORt=Z8e;gz.area=Z8e;gz.default=ORt});var K8e=ye(mz=>{"use strict";Object.defineProperty(mz,"__esModule",{value:!0});var BRt=dz(),NRt=pz();function Y8e(e,t={}){let r=0,n=0,i=0;return NRt.coordEach.call(void 0,e,function(a){r+=a[0],n+=a[1],i++},!0),BRt.point.call(void 0,[r/i,n/i],t.properties)}var URt=Y8e;mz.centroid=Y8e;mz.default=URt});var $8e=ye(yz=>{"use strict";Object.defineProperty(yz,"__esModule",{value:!0});var VRt=pz();function J8e(e,t={}){if(e.bbox!=null&&t.recompute!==!0)return e.bbox;let r=[1/0,1/0,-1/0,-1/0];return VRt.coordEach.call(void 0,e,n=>{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]{"use strict";var GRt=xa(),tRe=D8e(),{area:jRt}=X8e(),{centroid:WRt}=K8e(),{bbox:ZRt}=$8e(),Q8e=OS(),Z5=H1(),XRt=gy(),YRt=ES(),_z=wM(),eRe=Object.keys(tRe),KRt={"ISO-3":Q8e,"USA-states":Q8e,"country names":JRt};function JRt(e){for(var t=0;t0&&c[f+1][0]<0)return f;return null}switch(n==="RUS"||n==="FJI"?a=function(c){var f;if(u(c)===null)f=c;else for(f=new Array(c.length),l=0;lf?h[d++]=[c[l][0]+360,c[l][1]]:l===f?(h[d++]=c[l],h[d++]=[c[l][0],-90]):h[d++]=c[l];var v=_z.tester(h);v.pts.pop(),i.push(v)}:a=function(c){i.push(_z.tester(c))},t.type){case"MultiPolygon":for(o=0;o0?v.properties.ct=tDt(v):v.properties.ct=[NaN,NaN],h.fIn=c,h.fOut=v,i.push(v)}else Z5.log(["Location",h.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete n[f]}switch(r.type){case"FeatureCollection":var l=r.features;for(a=0;ai&&(i=s,r=o)}else r=t;return WRt(r).geometry.coordinates}function rDt(e){var t=window.PlotlyGeoAssets||{},r=[];function n(l){return new Promise(function(u,c){GRt.json(l,function(f,h){if(f){delete t[l];var d=f.status===404?'GeoJSON at URL "'+l+'" does not exist.':"Unexpected error while fetching from "+l;return c(new Error(d))}return t[l]=h,u(h)})})}function i(l){return new Promise(function(u,c){var f=0,h=setInterval(function(){if(t[l]&&t[l]!=="pending")return clearInterval(h),u(t[l]);if(f>100)return clearInterval(h),c("Unexpected error while fetching from "+l);f++},50)})}for(var a=0;a{"use strict";var nDt=xa(),aDt=ao(),nRe=va(),aRe=op(),oDt=aRe.stylePoints,sDt=aRe.styleText;oRe.exports=function(t,r){r&&lDt(t,r)};function lDt(e,t){var r=t[0].trace,n=t[0].node3;n.style("opacity",t[0].trace.opacity),oDt(n,r,e),sDt(n,r,e),n.selectAll("path.js-line").style("fill","none").each(function(i){var a=nDt.select(this),o=i.trace,s=o.line||{};a.call(nRe.stroke,s.color).call(aDt.dashLine,s.dash||"",s.width||0),o.fill!=="none"&&a.call(nRe.fill,o.fillcolor)})}});var _X=ye((Tpr,uRe)=>{"use strict";var sRe=xa(),bz=Mr(),uDt=cz().getTopojsonFeatures,gX=tx(),xz=ix(),lRe=wg().findExtremes,yX=es().BADNUM,cDt=q0().calcMarkerSize,mX=lu(),fDt=pX();function hDt(e,t,r){var n=t.layers.frontplot.select(".scatterlayer"),i=bz.makeTraceGroups(n,r,"trace scattergeo");function a(o,s){o.lonlat[0]===yX&&sRe.select(s).remove()}i.selectAll("*").remove(),i.each(function(o){var s=sRe.select(this),l=o[0].trace;if(mX.hasLines(l)||l.fill!=="none"){var u=gX.calcTraceToLineCoords(o),c=l.fill!=="none"?gX.makePolygon(u):gX.makeLine(u);s.selectAll("path.js-line").data([{geojson:c,trace:l}]).enter().append("path").classed("js-line",!0).style("stroke-miterlimit",2)}mX.hasMarkers(l)&&s.selectAll("path.point").data(bz.identity).enter().append("path").classed("point",!0).each(function(f){a(f,this)}),mX.hasText(l)&&s.selectAll("g").data(bz.identity).enter().append("g").append("text").each(function(f){a(f,this)}),fDt(e,o)})}function dDt(e,t){var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r._length,o,s;if(bz.isArrayOrTypedArray(r.locations)){var l=r.locationmode,u=l==="geojson-id"?xz.extractTraceFeature(e):uDt(r,i.topojson);for(o=0;o{"use strict";var vDt=Nc(),pDt=es().BADNUM,gDt=oT(),mDt=Mr().fillText,yDt=H2();cRe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.xa,s=t.ya,l=t.subplot,u=l.projection.isLonLatOverEdges,c=l.project;function f(E){var k=E.lonlat;if(k[0]===pDt||u(k))return 1/0;var A=c(k),L=c([r,n]),_=Math.abs(A[0]-L[0]),C=Math.abs(A[1]-L[1]),M=Math.max(3,E.mrc||0);return Math.max(Math.sqrt(_*_+C*C)-M,1-3/M)}if(vDt.getClosest(i,f,t),t.index!==!1){var h=i[t.index],d=h.lonlat,v=[o.c2p(d),s.c2p(d)],x=h.mrc||1;t.x0=v[0]-x,t.x1=v[0]+x,t.y0=v[1]-x,t.y1=v[1]+x,t.loc=h.loc,t.lon=d[0],t.lat=d[1];var b={};b[a.geo]={_subplot:l};var g=a._module.formatLabels(h,a,b);return t.lonLabel=g.lonLabel,t.latLabel=g.latLabel,t.color=gDt(a,h),t.extraText=_Dt(a,h,t,i[0].t.labels),t.hovertemplate=a.hovertemplate,[t]}};function _Dt(e,t,r,n){if(e.hovertemplate)return;var i=t.hi||e.hoverinfo,a=i==="all"?yDt.hoverinfo.flags:i.split("+"),o=a.indexOf("location")!==-1&&Array.isArray(e.locations),s=a.indexOf("lon")!==-1,l=a.indexOf("lat")!==-1,u=a.indexOf("text")!==-1,c=[];function f(h){return h+"\xB0"}return o?c.push(t.loc):s&&l?c.push("("+f(r.latLabel)+", "+f(r.lonLabel)+")"):s?c.push(n.lon+f(r.lonLabel)):l&&c.push(n.lat+f(r.latLabel)),u&&mDt(t,e,c),c.join("
")}});var dRe=ye((Spr,hRe)=>{"use strict";hRe.exports=function(t,r,n,i,a){t.lon=r.lon,t.lat=r.lat,t.location=r.loc?r.loc:null;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t}});var gRe=ye((Mpr,pRe)=>{"use strict";var vRe=lu(),xDt=es().BADNUM;pRe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h,d=!vRe.hasMarkers(s)&&!vRe.hasText(s);if(d)return[];if(r===!1)for(h=0;h{(function(e,t){typeof wz=="object"&&typeof mRe!="undefined"?t(wz):typeof define=="function"&&define.amd?define(["exports"],t):t(e.d3=e.d3||{})})(wz,function(e){"use strict";function t(Ee,Ae){return EeAe?1:Ee>=Ae?0:NaN}function r(Ee){return Ee.length===1&&(Ee=n(Ee)),{left:function(Ae,ze,Ce,me){for(Ce==null&&(Ce=0),me==null&&(me=Ae.length);Ce>>1;Ee(Ae[Re],ze)<0?Ce=Re+1:me=Re}return Ce},right:function(Ae,ze,Ce,me){for(Ce==null&&(Ce=0),me==null&&(me=Ae.length);Ce>>1;Ee(Ae[Re],ze)>0?me=Re:Ce=Re+1}return Ce}}}function n(Ee){return function(Ae,ze){return t(Ee(Ae),ze)}}var i=r(t),a=i.right,o=i.left;function s(Ee,Ae){Ae==null&&(Ae=l);for(var ze=0,Ce=Ee.length-1,me=Ee[0],Re=new Array(Ce<0?0:Ce);zeEe?1:Ae>=Ee?0:NaN}function f(Ee){return Ee===null?NaN:+Ee}function h(Ee,Ae){var ze=Ee.length,Ce=0,me=-1,Re=0,ce,Ge,nt=0;if(Ae==null)for(;++me1)return nt/(Ce-1)}function d(Ee,Ae){var ze=h(Ee,Ae);return ze&&Math.sqrt(ze)}function v(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re,ce;if(Ae==null){for(;++Ce=me)for(Re=ce=me;++Ceme&&(Re=me),ce=me)for(Re=ce=me;++Ceme&&(Re=me),ce0)return[Ee];if((Ce=Ae0)for(Ee=Math.ceil(Ee/Ge),Ae=Math.floor(Ae/Ge),ce=new Array(Re=Math.ceil(Ae-Ee+1));++me=0?(Re>=L?10:Re>=_?5:Re>=C?2:1)*Math.pow(10,me):-Math.pow(10,-me)/(Re>=L?10:Re>=_?5:Re>=C?2:1)}function P(Ee,Ae,ze){var Ce=Math.abs(Ae-Ee)/Math.max(0,ze),me=Math.pow(10,Math.floor(Math.log(Ce)/Math.LN10)),Re=Ce/me;return Re>=L?me*=10:Re>=_?me*=5:Re>=C&&(me*=2),Aert;)ot.pop(),--Rt;var kt=new Array(Rt+1),Ct;for(Re=0;Re<=Rt;++Re)Ct=kt[Re]=[],Ct.x0=Re>0?ot[Re-1]:qt,Ct.x1=Re=1)return+ze(Ee[Ce-1],Ce-1,Ee);var Ce,me=(Ce-1)*Ae,Re=Math.floor(me),ce=+ze(Ee[Re],Re,Ee),Ge=+ze(Ee[Re+1],Re+1,Ee);return ce+(Ge-ce)*(me-Re)}}function V(Ee,Ae,ze){return Ee=g.call(Ee,f).sort(t),Math.ceil((ze-Ae)/(2*(q(Ee,.75)-q(Ee,.25))*Math.pow(Ee.length,-1/3)))}function H(Ee,Ae,ze){return Math.ceil((ze-Ae)/(3.5*d(Ee)*Math.pow(Ee.length,-1/3)))}function X(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re;if(Ae==null){for(;++Ce=me)for(Re=me;++CeRe&&(Re=me)}else for(;++Ce=me)for(Re=me;++CeRe&&(Re=me);return Re}function G(Ee,Ae){var ze=Ee.length,Ce=ze,me=-1,Re,ce=0;if(Ae==null)for(;++me=0;)for(ce=Ee[Ae],ze=ce.length;--ze>=0;)Re[--me]=ce[ze];return Re}function re(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re;if(Ae==null){for(;++Ce=me)for(Re=me;++Ceme&&(Re=me)}else for(;++Ce=me)for(Re=me;++Ceme&&(Re=me);return Re}function ae(Ee,Ae){for(var ze=Ae.length,Ce=new Array(ze);ze--;)Ce[ze]=Ee[Ae[ze]];return Ce}function _e(Ee,Ae){if(ze=Ee.length){var ze,Ce=0,me=0,Re,ce=Ee[me];for(Ae==null&&(Ae=t);++Ce{(function(e,t){typeof Tz=="object"&&typeof yRe!="undefined"?t(Tz,JE()):typeof define=="function"&&define.amd?define(["exports","d3-array"],t):(e=e||self,t(e.d3=e.d3||{},e.d3))})(Tz,function(e,t){"use strict";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(gt){a(i,gt,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(gt,Bt,wr){var vr=gt.s=Bt+wr,Ur=vr-Bt,fi=vr-Ur;gt.t=Bt-fi+(wr-Ur)}var o=1e-6,s=1e-12,l=Math.PI,u=l/2,c=l/4,f=l*2,h=180/l,d=l/180,v=Math.abs,x=Math.atan,b=Math.atan2,g=Math.cos,E=Math.ceil,k=Math.exp,A=Math.log,L=Math.pow,_=Math.sin,C=Math.sign||function(gt){return gt>0?1:gt<0?-1:0},M=Math.sqrt,p=Math.tan;function P(gt){return gt>1?0:gt<-1?l:Math.acos(gt)}function T(gt){return gt>1?u:gt<-1?-u:Math.asin(gt)}function F(gt){return(gt=_(gt/2))*gt}function q(){}function V(gt,Bt){gt&&X.hasOwnProperty(gt.type)&&X[gt.type](gt,Bt)}var H={Feature:function(gt,Bt){V(gt.geometry,Bt)},FeatureCollection:function(gt,Bt){for(var wr=gt.features,vr=-1,Ur=wr.length;++vr=0?1:-1,Ur=vr*wr,fi=g(Bt),xi=_(Bt),Fi=ie*xi,Xi=ge*fi+Fi*g(Ur),hn=Fi*vr*_(Ur);re.add(b(hn,Xi)),ke=gt,ge=fi,ie=xi}function me(gt){return ae.reset(),W(gt,Te),ae*2}function Re(gt){return[b(gt[1],gt[0]),T(gt[2])]}function ce(gt){var Bt=gt[0],wr=gt[1],vr=g(wr);return[vr*g(Bt),vr*_(Bt),_(wr)]}function Ge(gt,Bt){return gt[0]*Bt[0]+gt[1]*Bt[1]+gt[2]*Bt[2]}function nt(gt,Bt){return[gt[1]*Bt[2]-gt[2]*Bt[1],gt[2]*Bt[0]-gt[0]*Bt[2],gt[0]*Bt[1]-gt[1]*Bt[0]]}function ct(gt,Bt){gt[0]+=Bt[0],gt[1]+=Bt[1],gt[2]+=Bt[2]}function qt(gt,Bt){return[gt[0]*Bt,gt[1]*Bt,gt[2]*Bt]}function rt(gt){var Bt=M(gt[0]*gt[0]+gt[1]*gt[1]+gt[2]*gt[2]);gt[0]/=Bt,gt[1]/=Bt,gt[2]/=Bt}var ot,Rt,kt,Ct,Yt,xr,er,Ke,xt=r(),bt,Lt,St={point:Et,lineStart:Ht,lineEnd:$t,polygonStart:function(){St.point=fr,St.lineStart=_r,St.lineEnd=Br,xt.reset(),Te.polygonStart()},polygonEnd:function(){Te.polygonEnd(),St.point=Et,St.lineStart=Ht,St.lineEnd=$t,re<0?(ot=-(kt=180),Rt=-(Ct=90)):xt>o?Ct=90:xt<-o&&(Rt=-90),Lt[0]=ot,Lt[1]=kt},sphere:function(){ot=-(kt=180),Rt=-(Ct=90)}};function Et(gt,Bt){bt.push(Lt=[ot=gt,kt=gt]),BtCt&&(Ct=Bt)}function dt(gt,Bt){var wr=ce([gt*d,Bt*d]);if(Ke){var vr=nt(Ke,wr),Ur=[vr[1],-vr[0],0],fi=nt(Ur,vr);rt(fi),fi=Re(fi);var xi=gt-Yt,Fi=xi>0?1:-1,Xi=fi[0]*h*Fi,hn,Ti=v(xi)>180;Ti^(Fi*YtCt&&(Ct=hn)):(Xi=(Xi+360)%360-180,Ti^(Fi*YtCt&&(Ct=Bt))),Ti?gtOr(ot,kt)&&(kt=gt):Or(gt,kt)>Or(ot,kt)&&(ot=gt):kt>=ot?(gtkt&&(kt=gt)):gt>Yt?Or(ot,gt)>Or(ot,kt)&&(kt=gt):Or(gt,kt)>Or(ot,kt)&&(ot=gt)}else bt.push(Lt=[ot=gt,kt=gt]);BtCt&&(Ct=Bt),Ke=wr,Yt=gt}function Ht(){St.point=dt}function $t(){Lt[0]=ot,Lt[1]=kt,St.point=Et,Ke=null}function fr(gt,Bt){if(Ke){var wr=gt-Yt;xt.add(v(wr)>180?wr+(wr>0?360:-360):wr)}else xr=gt,er=Bt;Te.point(gt,Bt),dt(gt,Bt)}function _r(){Te.lineStart()}function Br(){fr(xr,er),Te.lineEnd(),v(xt)>o&&(ot=-(kt=180)),Lt[0]=ot,Lt[1]=kt,Ke=null}function Or(gt,Bt){return(Bt-=gt)<0?Bt+360:Bt}function Nr(gt,Bt){return gt[0]-Bt[0]}function ut(gt,Bt){return gt[0]<=gt[1]?gt[0]<=Bt&&Bt<=gt[1]:BtOr(vr[0],vr[1])&&(vr[1]=Ur[1]),Or(Ur[0],vr[1])>Or(vr[0],vr[1])&&(vr[0]=Ur[0])):fi.push(vr=Ur);for(xi=-1/0,wr=fi.length-1,Bt=0,vr=fi[wr];Bt<=wr;vr=Ur,++Bt)Ur=fi[Bt],(Fi=Or(vr[1],Ur[0]))>xi&&(xi=Fi,ot=Ur[0],kt=vr[1])}return bt=Lt=null,ot===1/0||Rt===1/0?[[NaN,NaN],[NaN,NaN]]:[[ot,Rt],[kt,Ct]]}var Ye,Ve,Xe,ht,Le,xe,Se,lt,Gt,Vt,ar,Qr,ai,jr,ri,bi,nn={sphere:q,point:Wi,lineStart:_n,lineEnd:Wn,polygonStart:function(){nn.lineStart=It,nn.lineEnd=ft},polygonEnd:function(){nn.lineStart=_n,nn.lineEnd=Wn}};function Wi(gt,Bt){gt*=d,Bt*=d;var wr=g(Bt);Ni(wr*g(gt),wr*_(gt),_(Bt))}function Ni(gt,Bt,wr){++Ye,Xe+=(gt-Xe)/Ye,ht+=(Bt-ht)/Ye,Le+=(wr-Le)/Ye}function _n(){nn.point=$i}function $i(gt,Bt){gt*=d,Bt*=d;var wr=g(Bt);jr=wr*g(gt),ri=wr*_(gt),bi=_(Bt),nn.point=zn,Ni(jr,ri,bi)}function zn(gt,Bt){gt*=d,Bt*=d;var wr=g(Bt),vr=wr*g(gt),Ur=wr*_(gt),fi=_(Bt),xi=b(M((xi=ri*fi-bi*Ur)*xi+(xi=bi*vr-jr*fi)*xi+(xi=jr*Ur-ri*vr)*xi),jr*vr+ri*Ur+bi*fi);Ve+=xi,xe+=xi*(jr+(jr=vr)),Se+=xi*(ri+(ri=Ur)),lt+=xi*(bi+(bi=fi)),Ni(jr,ri,bi)}function Wn(){nn.point=Wi}function It(){nn.point=jt}function ft(){Zt(Qr,ai),nn.point=Wi}function jt(gt,Bt){Qr=gt,ai=Bt,gt*=d,Bt*=d,nn.point=Zt;var wr=g(Bt);jr=wr*g(gt),ri=wr*_(gt),bi=_(Bt),Ni(jr,ri,bi)}function Zt(gt,Bt){gt*=d,Bt*=d;var wr=g(Bt),vr=wr*g(gt),Ur=wr*_(gt),fi=_(Bt),xi=ri*fi-bi*Ur,Fi=bi*vr-jr*fi,Xi=jr*Ur-ri*vr,hn=M(xi*xi+Fi*Fi+Xi*Xi),Ti=T(hn),qi=hn&&-Ti/hn;Gt+=qi*xi,Vt+=qi*Fi,ar+=qi*Xi,Ve+=Ti,xe+=Ti*(jr+(jr=vr)),Se+=Ti*(ri+(ri=Ur)),lt+=Ti*(bi+(bi=fi)),Ni(jr,ri,bi)}function yr(gt){Ye=Ve=Xe=ht=Le=xe=Se=lt=Gt=Vt=ar=0,W(gt,nn);var Bt=Gt,wr=Vt,vr=ar,Ur=Bt*Bt+wr*wr+vr*vr;return Url?gt+Math.round(-gt/f)*f:gt,Bt]}Vr.invert=Vr;function gi(gt,Bt,wr){return(gt%=f)?Bt||wr?Zr(Mi(gt),Pi(Bt,wr)):Mi(gt):Bt||wr?Pi(Bt,wr):Vr}function Si(gt){return function(Bt,wr){return Bt+=gt,[Bt>l?Bt-f:Bt<-l?Bt+f:Bt,wr]}}function Mi(gt){var Bt=Si(gt);return Bt.invert=Si(-gt),Bt}function Pi(gt,Bt){var wr=g(gt),vr=_(gt),Ur=g(Bt),fi=_(Bt);function xi(Fi,Xi){var hn=g(Xi),Ti=g(Fi)*hn,qi=_(Fi)*hn,Ii=_(Xi),mi=Ii*wr+Ti*vr;return[b(qi*Ur-mi*fi,Ti*wr-Ii*vr),T(mi*Ur+qi*fi)]}return xi.invert=function(Fi,Xi){var hn=g(Xi),Ti=g(Fi)*hn,qi=_(Fi)*hn,Ii=_(Xi),mi=Ii*Ur-qi*fi;return[b(qi*Ur+Ii*fi,Ti*wr+mi*vr),T(mi*wr-Ti*vr)]},xi}function Gi(gt){gt=gi(gt[0]*d,gt[1]*d,gt.length>2?gt[2]*d:0);function Bt(wr){return wr=gt(wr[0]*d,wr[1]*d),wr[0]*=h,wr[1]*=h,wr}return Bt.invert=function(wr){return wr=gt.invert(wr[0]*d,wr[1]*d),wr[0]*=h,wr[1]*=h,wr},Bt}function Ki(gt,Bt,wr,vr,Ur,fi){if(wr){var xi=g(Bt),Fi=_(Bt),Xi=vr*wr;Ur==null?(Ur=Bt+vr*f,fi=Bt-Xi/2):(Ur=ka(xi,Ur),fi=ka(xi,fi),(vr>0?Urfi)&&(Ur+=vr*f));for(var hn,Ti=Ur;vr>0?Ti>fi:Ti1&>.push(gt.pop().concat(gt.shift()))},result:function(){var wr=gt;return gt=[],Bt=null,wr}}}function Fa(gt,Bt){return v(gt[0]-Bt[0])=0;--Fi)Ur.point((qi=Ti[Fi])[0],qi[1]);else vr(Ii.x,Ii.p.x,-1,Ur);Ii=Ii.p}Ii=Ii.o,Ti=Ii.z,mi=!mi}while(!Ii.v);Ur.lineEnd()}}}function oa(gt){if(Bt=gt.length){for(var Bt,wr=0,vr=gt[0],Ur;++wr=0?1:-1,Qo=Ts*Xo,ys=Qo>l,Bo=Ma*Ua;if(Sn.add(b(Bo*Ts*_(Qo),Ta*mo+Bo*g(Qo))),xi+=ys?Xo+Ts*f:Xo,ys^mi>=wr^Cn>=wr){var yl=nt(ce(Ii),ce(qa));rt(yl);var Gs=nt(fi,yl);rt(Gs);var Rs=(ys^Xo>=0?-1:1)*T(Gs[2]);(vr>Rs||vr===Rs&&(yl[0]||yl[1]))&&(Fi+=ys^Xo>=0?1:-1)}}return(xi<-o||xi0){for(Xi||(Ur.polygonStart(),Xi=!0),Ur.lineStart(),mo=0;mo1&&sn&2&&Ua.push(Ua.pop().concat(Ua.shift())),Ti.push(Ua.filter(_t))}}return Ii}}function _t(gt){return gt.length>1}function br(gt,Bt){return((gt=gt.x)[0]<0?gt[1]-u-o:u-gt[1])-((Bt=Bt.x)[0]<0?Bt[1]-u-o:u-Bt[1])}var Hr=xn(function(){return!0},ti,Yi,[-l,-u]);function ti(gt){var Bt=NaN,wr=NaN,vr=NaN,Ur;return{lineStart:function(){gt.lineStart(),Ur=1},point:function(fi,xi){var Fi=fi>0?l:-l,Xi=v(fi-Bt);v(Xi-l)0?u:-u),gt.point(vr,wr),gt.lineEnd(),gt.lineStart(),gt.point(Fi,wr),gt.point(fi,wr),Ur=0):vr!==Fi&&Xi>=l&&(v(Bt-vr)o?x((_(Bt)*(fi=g(vr))*_(wr)-_(vr)*(Ur=g(Bt))*_(gt))/(Ur*fi*xi)):(Bt+vr)/2}function Yi(gt,Bt,wr,vr){var Ur;if(gt==null)Ur=wr*u,vr.point(-l,Ur),vr.point(0,Ur),vr.point(l,Ur),vr.point(l,0),vr.point(l,-Ur),vr.point(0,-Ur),vr.point(-l,-Ur),vr.point(-l,0),vr.point(-l,Ur);else if(v(gt[0]-Bt[0])>o){var fi=gt[0]0,Ur=v(Bt)>o;function fi(Ti,qi,Ii,mi){Ki(mi,gt,wr,Ii,Ti,qi)}function xi(Ti,qi){return g(Ti)*g(qi)>Bt}function Fi(Ti){var qi,Ii,mi,Pn,Ma;return{lineStart:function(){Pn=mi=!1,Ma=1},point:function(Ta,Ea){var qa=[Ta,Ea],Cn,sn=xi(Ta,Ea),Ua=vr?sn?0:hn(Ta,Ea):sn?hn(Ta+(Ta<0?l:-l),Ea):0;if(!qi&&(Pn=mi=sn)&&Ti.lineStart(),sn!==mi&&(Cn=Xi(qi,qa),(!Cn||Fa(qi,Cn)||Fa(qa,Cn))&&(qa[2]=1)),sn!==mi)Ma=0,sn?(Ti.lineStart(),Cn=Xi(qa,qi),Ti.point(Cn[0],Cn[1])):(Cn=Xi(qi,qa),Ti.point(Cn[0],Cn[1],2),Ti.lineEnd()),qi=Cn;else if(Ur&&qi&&vr^sn){var mo;!(Ua&Ii)&&(mo=Xi(qa,qi,!0))&&(Ma=0,vr?(Ti.lineStart(),Ti.point(mo[0][0],mo[0][1]),Ti.point(mo[1][0],mo[1][1]),Ti.lineEnd()):(Ti.point(mo[1][0],mo[1][1]),Ti.lineEnd(),Ti.lineStart(),Ti.point(mo[0][0],mo[0][1],3)))}sn&&(!qi||!Fa(qi,qa))&&Ti.point(qa[0],qa[1]),qi=qa,mi=sn,Ii=Ua},lineEnd:function(){mi&&Ti.lineEnd(),qi=null},clean:function(){return Ma|(Pn&&mi)<<1}}}function Xi(Ti,qi,Ii){var mi=ce(Ti),Pn=ce(qi),Ma=[1,0,0],Ta=nt(mi,Pn),Ea=Ge(Ta,Ta),qa=Ta[0],Cn=Ea-qa*qa;if(!Cn)return!Ii&&Ti;var sn=Bt*Ea/Cn,Ua=-Bt*qa/Cn,mo=nt(Ma,Ta),Xo=qt(Ma,sn),Ts=qt(Ta,Ua);ct(Xo,Ts);var Qo=mo,ys=Ge(Xo,Qo),Bo=Ge(Qo,Qo),yl=ys*ys-Bo*(Ge(Xo,Xo)-1);if(!(yl<0)){var Gs=M(yl),Rs=qt(Qo,(-ys-Gs)/Bo);if(ct(Rs,Xo),Rs=Re(Rs),!Ii)return Rs;var ia=Ti[0],Ka=qi[0],vs=Ti[1],Ko=qi[1],iu;Ka0^Rs[1]<(v(Rs[0]-ia)l^(ia<=Rs[0]&&Rs[0]<=Ka)){var bu=qt(Qo,(-ys+Gs)/Bo);return ct(bu,Xo),[Rs,Re(bu)]}}}function hn(Ti,qi){var Ii=vr?gt:l-gt,mi=0;return Ti<-Ii?mi|=1:Ti>Ii&&(mi|=2),qi<-Ii?mi|=4:qi>Ii&&(mi|=8),mi}return xn(xi,Fi,fi,vr?[0,-gt]:[-l,gt-l])}function hi(gt,Bt,wr,vr,Ur,fi){var xi=gt[0],Fi=gt[1],Xi=Bt[0],hn=Bt[1],Ti=0,qi=1,Ii=Xi-xi,mi=hn-Fi,Pn;if(Pn=wr-xi,!(!Ii&&Pn>0)){if(Pn/=Ii,Ii<0){if(Pn0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}if(Pn=Ur-xi,!(!Ii&&Pn<0)){if(Pn/=Ii,Ii<0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}else if(Ii>0){if(Pn0)){if(Pn/=mi,mi<0){if(Pn0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}if(Pn=fi-Fi,!(!mi&&Pn<0)){if(Pn/=mi,mi<0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}else if(mi>0){if(Pn0&&(gt[0]=xi+Ti*Ii,gt[1]=Fi+Ti*mi),qi<1&&(Bt[0]=xi+qi*Ii,Bt[1]=Fi+qi*mi),!0}}}}}var Ji=1e9,ua=-Ji;function Fn(gt,Bt,wr,vr){function Ur(hn,Ti){return gt<=hn&&hn<=wr&&Bt<=Ti&&Ti<=vr}function fi(hn,Ti,qi,Ii){var mi=0,Pn=0;if(hn==null||(mi=xi(hn,qi))!==(Pn=xi(Ti,qi))||Xi(hn,Ti)<0^qi>0)do Ii.point(mi===0||mi===3?gt:wr,mi>1?vr:Bt);while((mi=(mi+qi+4)%4)!==Pn);else Ii.point(Ti[0],Ti[1])}function xi(hn,Ti){return v(hn[0]-gt)0?0:3:v(hn[0]-wr)0?2:1:v(hn[1]-Bt)0?1:0:Ti>0?3:2}function Fi(hn,Ti){return Xi(hn.x,Ti.x)}function Xi(hn,Ti){var qi=xi(hn,1),Ii=xi(Ti,1);return qi!==Ii?qi-Ii:qi===0?Ti[1]-hn[1]:qi===1?hn[0]-Ti[0]:qi===2?hn[1]-Ti[1]:Ti[0]-hn[0]}return function(hn){var Ti=hn,qi=la(),Ii,mi,Pn,Ma,Ta,Ea,qa,Cn,sn,Ua,mo,Xo={point:Ts,lineStart:yl,lineEnd:Gs,polygonStart:ys,polygonEnd:Bo};function Ts(ia,Ka){Ur(ia,Ka)&&Ti.point(ia,Ka)}function Qo(){for(var ia=0,Ka=0,vs=mi.length;Kavr&&(Kc-mf)*(vr-bu)>(Du-bu)*(gt-mf)&&++ia:Du<=vr&&(Kc-mf)*(vr-bu)<(Du-bu)*(gt-mf)&&--ia;return ia}function ys(){Ti=qi,Ii=[],mi=[],mo=!0}function Bo(){var ia=Qo(),Ka=mo&&ia,vs=(Ii=t.merge(Ii)).length;(Ka||vs)&&(hn.polygonStart(),Ka&&(hn.lineStart(),fi(null,null,1,hn),hn.lineEnd()),vs&&jo(Ii,Fi,ia,fi,hn),hn.polygonEnd()),Ti=hn,Ii=mi=Pn=null}function yl(){Xo.point=Rs,mi&&mi.push(Pn=[]),Ua=!0,sn=!1,qa=Cn=NaN}function Gs(){Ii&&(Rs(Ma,Ta),Ea&&sn&&qi.rejoin(),Ii.push(qi.result())),Xo.point=Ts,sn&&Ti.lineEnd()}function Rs(ia,Ka){var vs=Ur(ia,Ka);if(mi&&Pn.push([ia,Ka]),Ua)Ma=ia,Ta=Ka,Ea=vs,Ua=!1,vs&&(Ti.lineStart(),Ti.point(ia,Ka));else if(vs&&sn)Ti.point(ia,Ka);else{var Ko=[qa=Math.max(ua,Math.min(Ji,qa)),Cn=Math.max(ua,Math.min(Ji,Cn))],iu=[ia=Math.max(ua,Math.min(Ji,ia)),Ka=Math.max(ua,Math.min(Ji,Ka))];hi(Ko,iu,gt,Bt,wr,vr)?(sn||(Ti.lineStart(),Ti.point(Ko[0],Ko[1])),Ti.point(iu[0],iu[1]),vs||Ti.lineEnd(),mo=!1):vs&&(Ti.lineStart(),Ti.point(ia,Ka),mo=!1)}qa=ia,Cn=Ka,sn=vs}return Xo}}function Sa(){var gt=0,Bt=0,wr=960,vr=500,Ur,fi,xi;return xi={stream:function(Fi){return Ur&&fi===Fi?Ur:Ur=Fn(gt,Bt,wr,vr)(fi=Fi)},extent:function(Fi){return arguments.length?(gt=+Fi[0][0],Bt=+Fi[0][1],wr=+Fi[1][0],vr=+Fi[1][1],Ur=fi=null,xi):[[gt,Bt],[wr,vr]]}}}var go=r(),Oo,ho,Mo,xo={sphere:q,point:q,lineStart:zs,lineEnd:q,polygonStart:q,polygonEnd:q};function zs(){xo.point=Zs,xo.lineEnd=ks}function ks(){xo.point=xo.lineEnd=q}function Zs(gt,Bt){gt*=d,Bt*=d,Oo=gt,ho=_(Bt),Mo=g(Bt),xo.point=Xs}function Xs(gt,Bt){gt*=d,Bt*=d;var wr=_(Bt),vr=g(Bt),Ur=v(gt-Oo),fi=g(Ur),xi=_(Ur),Fi=vr*xi,Xi=Mo*wr-ho*vr*fi,hn=ho*wr+Mo*vr*fi;go.add(b(M(Fi*Fi+Xi*Xi),hn)),Oo=gt,ho=wr,Mo=vr}function wl(gt){return go.reset(),W(gt,xo),+go}var os=[null,null],cl={type:"LineString",coordinates:os};function Cs(gt,Bt){return os[0]=gt,os[1]=Bt,wl(cl)}var ml={Feature:function(gt,Bt){return Hs(gt.geometry,Bt)},FeatureCollection:function(gt,Bt){for(var wr=gt.features,vr=-1,Ur=wr.length;++vr0&&(Ur=Cs(gt[fi],gt[fi-1]),Ur>0&&wr<=Ur&&vr<=Ur&&(wr+vr-Ur)*(1-Math.pow((wr-vr)/Ur,2))o}).map(Ii)).concat(t.range(E(fi/hn)*hn,Ur,hn).filter(function(Cn){return v(Cn%qi)>o}).map(mi))}return Ea.lines=function(){return qa().map(function(Cn){return{type:"LineString",coordinates:Cn}})},Ea.outline=function(){return{type:"Polygon",coordinates:[Pn(vr).concat(Ma(xi).slice(1),Pn(wr).reverse().slice(1),Ma(Fi).reverse().slice(1))]}},Ea.extent=function(Cn){return arguments.length?Ea.extentMajor(Cn).extentMinor(Cn):Ea.extentMinor()},Ea.extentMajor=function(Cn){return arguments.length?(vr=+Cn[0][0],wr=+Cn[1][0],Fi=+Cn[0][1],xi=+Cn[1][1],vr>wr&&(Cn=vr,vr=wr,wr=Cn),Fi>xi&&(Cn=Fi,Fi=xi,xi=Cn),Ea.precision(Ta)):[[vr,Fi],[wr,xi]]},Ea.extentMinor=function(Cn){return arguments.length?(Bt=+Cn[0][0],gt=+Cn[1][0],fi=+Cn[0][1],Ur=+Cn[1][1],Bt>gt&&(Cn=Bt,Bt=gt,gt=Cn),fi>Ur&&(Cn=fi,fi=Ur,Ur=Cn),Ea.precision(Ta)):[[Bt,fi],[gt,Ur]]},Ea.step=function(Cn){return arguments.length?Ea.stepMajor(Cn).stepMinor(Cn):Ea.stepMinor()},Ea.stepMajor=function(Cn){return arguments.length?(Ti=+Cn[0],qi=+Cn[1],Ea):[Ti,qi]},Ea.stepMinor=function(Cn){return arguments.length?(Xi=+Cn[0],hn=+Cn[1],Ea):[Xi,hn]},Ea.precision=function(Cn){return arguments.length?(Ta=+Cn,Ii=on(fi,Ur,90),mi=fa(Bt,gt,Ta),Pn=on(Fi,xi,90),Ma=fa(vr,wr,Ta),Ea):Ta},Ea.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Il(){return Qu()()}function vo(gt,Bt){var wr=gt[0]*d,vr=gt[1]*d,Ur=Bt[0]*d,fi=Bt[1]*d,xi=g(vr),Fi=_(vr),Xi=g(fi),hn=_(fi),Ti=xi*g(wr),qi=xi*_(wr),Ii=Xi*g(Ur),mi=Xi*_(Ur),Pn=2*T(M(F(fi-vr)+xi*Xi*F(Ur-wr))),Ma=_(Pn),Ta=Pn?function(Ea){var qa=_(Ea*=Pn)/Ma,Cn=_(Pn-Ea)/Ma,sn=Cn*Ti+qa*Ii,Ua=Cn*qi+qa*mi,mo=Cn*Fi+qa*hn;return[b(Ua,sn)*h,b(mo,M(sn*sn+Ua*Ua))*h]}:function(){return[wr*h,vr*h]};return Ta.distance=Pn,Ta}function Wl(gt){return gt}var Ks=r(),Zl=r(),Ec,Zn,ko,Co,Tl={point:q,lineStart:q,lineEnd:q,polygonStart:function(){Tl.lineStart=uf,Tl.lineEnd=rh},polygonEnd:function(){Tl.lineStart=Tl.lineEnd=Tl.point=q,Ks.add(v(Zl)),Zl.reset()},result:function(){var gt=Ks/2;return Ks.reset(),gt}};function uf(){Tl.point=So}function So(gt,Bt){Tl.point=cf,Ec=ko=gt,Zn=Co=Bt}function cf(gt,Bt){Zl.add(Co*gt-ko*Bt),ko=gt,Co=Bt}function rh(){cf(Ec,Zn)}var Al=1/0,Hc=Al,Ql=-Al,Ls=Ql,mu={point:kc,lineStart:q,lineEnd:q,polygonStart:q,polygonEnd:q,result:function(){var gt=[[Al,Hc],[Ql,Ls]];return Ql=Ls=-(Hc=Al=1/0),gt}};function kc(gt,Bt){gtQl&&(Ql=gt),BtLs&&(Ls=Bt)}var Of=0,Gc=0,vd=0,Bf=0,ss=0,ff=0,ih=0,Ul=0,Js=0,hc,Cc,ws,$s,hs={point:Ms,lineStart:dc,lineEnd:Ps,polygonStart:function(){hs.lineStart=ov,hs.lineEnd=wo},polygonEnd:function(){hs.point=Ms,hs.lineStart=dc,hs.lineEnd=Ps},result:function(){var gt=Js?[ih/Js,Ul/Js]:ff?[Bf/ff,ss/ff]:vd?[Of/vd,Gc/vd]:[NaN,NaN];return Of=Gc=vd=Bf=ss=ff=ih=Ul=Js=0,gt}};function Ms(gt,Bt){Of+=gt,Gc+=Bt,++vd}function dc(){hs.point=Sl}function Sl(gt,Bt){hs.point=ec,Ms(ws=gt,$s=Bt)}function ec(gt,Bt){var wr=gt-ws,vr=Bt-$s,Ur=M(wr*wr+vr*vr);Bf+=Ur*(ws+gt)/2,ss+=Ur*($s+Bt)/2,ff+=Ur,Ms(ws=gt,$s=Bt)}function Ps(){hs.point=Ms}function ov(){hs.point=Od}function wo(){$o(hc,Cc)}function Od(gt,Bt){hs.point=$o,Ms(hc=ws=gt,Cc=$s=Bt)}function $o(gt,Bt){var wr=gt-ws,vr=Bt-$s,Ur=M(wr*wr+vr*vr);Bf+=Ur*(ws+gt)/2,ss+=Ur*($s+Bt)/2,ff+=Ur,Ur=$s*gt-ws*Bt,ih+=Ur*(ws+gt),Ul+=Ur*($s+Bt),Js+=Ur*3,Ms(ws=gt,$s=Bt)}function Ja(gt){this._context=gt}Ja.prototype={_radius:4.5,pointRadius:function(gt){return this._radius=gt,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(gt,Bt){switch(this._point){case 0:{this._context.moveTo(gt,Bt),this._point=1;break}case 1:{this._context.lineTo(gt,Bt);break}default:{this._context.moveTo(gt+this._radius,Bt),this._context.arc(gt,Bt,this._radius,0,f);break}}},result:q};var Ef=r(),tc,uu,Mh,jc,kf,Ml={point:q,lineStart:function(){Ml.point=Yh},lineEnd:function(){tc&&Eh(uu,Mh),Ml.point=q},polygonStart:function(){tc=!0},polygonEnd:function(){tc=null},result:function(){var gt=+Ef;return Ef.reset(),gt}};function Yh(gt,Bt){Ml.point=Eh,uu=jc=gt,Mh=kf=Bt}function Eh(gt,Bt){jc-=gt,kf-=Bt,Ef.add(M(jc*jc+kf*kf)),jc=gt,kf=Bt}function nh(){this._string=[]}nh.prototype={_radius:4.5,_circle:hf(4.5),pointRadius:function(gt){return(gt=+gt)!==this._radius&&(this._radius=gt,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(gt,Bt){switch(this._point){case 0:{this._string.push("M",gt,",",Bt),this._point=1;break}case 1:{this._string.push("L",gt,",",Bt);break}default:{this._circle==null&&(this._circle=hf(this._radius)),this._string.push("M",gt,",",Bt,this._circle);break}}},result:function(){if(this._string.length){var gt=this._string.join("");return this._string=[],gt}else return null}};function hf(gt){return"m0,"+gt+"a"+gt+","+gt+" 0 1,1 0,"+-2*gt+"a"+gt+","+gt+" 0 1,1 0,"+2*gt+"z"}function kh(gt,Bt){var wr=4.5,vr,Ur;function fi(xi){return xi&&(typeof wr=="function"&&Ur.pointRadius(+wr.apply(this,arguments)),W(xi,vr(Ur))),Ur.result()}return fi.area=function(xi){return W(xi,vr(Tl)),Tl.result()},fi.measure=function(xi){return W(xi,vr(Ml)),Ml.result()},fi.bounds=function(xi){return W(xi,vr(mu)),mu.result()},fi.centroid=function(xi){return W(xi,vr(hs)),hs.result()},fi.projection=function(xi){return arguments.length?(vr=xi==null?(gt=null,Wl):(gt=xi).stream,fi):gt},fi.context=function(xi){return arguments.length?(Ur=xi==null?(Bt=null,new nh):new Ja(Bt=xi),typeof wr!="function"&&Ur.pointRadius(wr),fi):Bt},fi.pointRadius=function(xi){return arguments.length?(wr=typeof xi=="function"?xi:(Ur.pointRadius(+xi),+xi),fi):wr},fi.projection(gt).context(Bt)}function Kh(gt){return{stream:rc(gt)}}function rc(gt){return function(Bt){var wr=new ah;for(var vr in gt)wr[vr]=gt[vr];return wr.stream=Bt,wr}}function ah(){}ah.prototype={constructor:ah,point:function(gt,Bt){this.stream.point(gt,Bt)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Wc(gt,Bt,wr){var vr=gt.clipExtent&>.clipExtent();return gt.scale(150).translate([0,0]),vr!=null&>.clipExtent(null),W(wr,gt.stream(mu)),Bt(mu.result()),vr!=null&>.clipExtent(vr),gt}function df(gt,Bt,wr){return Wc(gt,function(vr){var Ur=Bt[1][0]-Bt[0][0],fi=Bt[1][1]-Bt[0][1],xi=Math.min(Ur/(vr[1][0]-vr[0][0]),fi/(vr[1][1]-vr[0][1])),Fi=+Bt[0][0]+(Ur-xi*(vr[1][0]+vr[0][0]))/2,Xi=+Bt[0][1]+(fi-xi*(vr[1][1]+vr[0][1]))/2;gt.scale(150*xi).translate([Fi,Xi])},wr)}function Cu(gt,Bt,wr){return df(gt,[[0,0],Bt],wr)}function Nf(gt,Bt,wr){return Wc(gt,function(vr){var Ur=+Bt,fi=Ur/(vr[1][0]-vr[0][0]),xi=(Ur-fi*(vr[1][0]+vr[0][0]))/2,Fi=-fi*vr[0][1];gt.scale(150*fi).translate([xi,Fi])},wr)}function Zc(gt,Bt,wr){return Wc(gt,function(vr){var Ur=+Bt,fi=Ur/(vr[1][1]-vr[0][1]),xi=-fi*vr[0][0],Fi=(Ur-fi*(vr[1][1]+vr[0][1]))/2;gt.scale(150*fi).translate([xi,Fi])},wr)}var ds=16,Ch=g(30*d);function Bd(gt,Bt){return+Bt?Cf(gt,Bt):Jh(gt)}function Jh(gt){return rc({point:function(Bt,wr){Bt=gt(Bt,wr),this.stream.point(Bt[0],Bt[1])}})}function Cf(gt,Bt){function wr(vr,Ur,fi,xi,Fi,Xi,hn,Ti,qi,Ii,mi,Pn,Ma,Ta){var Ea=hn-vr,qa=Ti-Ur,Cn=Ea*Ea+qa*qa;if(Cn>4*Bt&&Ma--){var sn=xi+Ii,Ua=Fi+mi,mo=Xi+Pn,Xo=M(sn*sn+Ua*Ua+mo*mo),Ts=T(mo/=Xo),Qo=v(v(mo)-1)Bt||v((Ea*Gs+qa*Rs)/Cn-.5)>.3||xi*Ii+Fi*mi+Xi*Pn2?ia[2]%360*d:0,Gs()):[Fi*h,Xi*h,hn*h]},Bo.angle=function(ia){return arguments.length?(qi=ia%360*d,Gs()):qi*h},Bo.reflectX=function(ia){return arguments.length?(Ii=ia?-1:1,Gs()):Ii<0},Bo.reflectY=function(ia){return arguments.length?(mi=ia?-1:1,Gs()):mi<0},Bo.precision=function(ia){return arguments.length?(mo=Bd(Xo,Ua=ia*ia),Rs()):M(Ua)},Bo.fitExtent=function(ia,Ka){return df(Bo,ia,Ka)},Bo.fitSize=function(ia,Ka){return Cu(Bo,ia,Ka)},Bo.fitWidth=function(ia,Ka){return Nf(Bo,ia,Ka)},Bo.fitHeight=function(ia,Ka){return Zc(Bo,ia,Ka)};function Gs(){var ia=eu(wr,0,0,Ii,mi,qi).apply(null,Bt(fi,xi)),Ka=(qi?eu:$h)(wr,vr-ia[0],Ur-ia[1],Ii,mi,qi);return Ti=gi(Fi,Xi,hn),Xo=Zr(Bt,Ka),Ts=Zr(Ti,Xo),mo=Bd(Xo,Ua),Rs()}function Rs(){return Qo=ys=null,Bo}return function(){return Bt=gt.apply(this,arguments),Bo.invert=Bt.invert&&yl,Gs()}}function fl(gt){var Bt=0,wr=l/3,vr=Lc(gt),Ur=vr(Bt,wr);return Ur.parallels=function(fi){return arguments.length?vr(Bt=fi[0]*d,wr=fi[1]*d):[Bt*h,wr*h]},Ur}function Xc(gt){var Bt=g(gt);function wr(vr,Ur){return[vr*Bt,_(Ur)/Bt]}return wr.invert=function(vr,Ur){return[vr/Bt,T(Ur*Bt)]},wr}function ic(gt,Bt){var wr=_(gt),vr=(wr+_(Bt))/2;if(v(vr)=.12&&Ta<.234&&Ma>=-.425&&Ma<-.214?Ur:Ta>=.166&&Ta<.234&&Ma>=-.214&&Ma<-.115?xi:wr).invert(Ii)},Ti.stream=function(Ii){return gt&&Bt===Ii?gt:gt=Qh([wr.stream(Bt=Ii),Ur.stream(Ii),xi.stream(Ii)])},Ti.precision=function(Ii){return arguments.length?(wr.precision(Ii),Ur.precision(Ii),xi.precision(Ii),qi()):wr.precision()},Ti.scale=function(Ii){return arguments.length?(wr.scale(Ii),Ur.scale(Ii*.35),xi.scale(Ii),Ti.translate(wr.translate())):wr.scale()},Ti.translate=function(Ii){if(!arguments.length)return wr.translate();var mi=wr.scale(),Pn=+Ii[0],Ma=+Ii[1];return vr=wr.translate(Ii).clipExtent([[Pn-.455*mi,Ma-.238*mi],[Pn+.455*mi,Ma+.238*mi]]).stream(hn),fi=Ur.translate([Pn-.307*mi,Ma+.201*mi]).clipExtent([[Pn-.425*mi+o,Ma+.12*mi+o],[Pn-.214*mi-o,Ma+.234*mi-o]]).stream(hn),Fi=xi.translate([Pn-.205*mi,Ma+.212*mi]).clipExtent([[Pn-.214*mi+o,Ma+.166*mi+o],[Pn-.115*mi-o,Ma+.234*mi-o]]).stream(hn),qi()},Ti.fitExtent=function(Ii,mi){return df(Ti,Ii,mi)},Ti.fitSize=function(Ii,mi){return Cu(Ti,Ii,mi)},Ti.fitWidth=function(Ii,mi){return Nf(Ti,Ii,mi)},Ti.fitHeight=function(Ii,mi){return Zc(Ti,Ii,mi)};function qi(){return gt=Bt=null,Ti}return Ti.scale(1070)}function Gu(gt){return function(Bt,wr){var vr=g(Bt),Ur=g(wr),fi=gt(vr*Ur);return[fi*Ur*_(Bt),fi*_(wr)]}}function Pc(gt){return function(Bt,wr){var vr=M(Bt*Bt+wr*wr),Ur=gt(vr),fi=_(Ur),xi=g(Ur);return[b(Bt*fi,vr*xi),T(vr&&wr*fi/vr)]}}var vc=Gu(function(gt){return M(2/(1+gt))});vc.invert=Pc(function(gt){return 2*T(gt/2)});function sv(){return Pu(vc).scale(124.75).clipAngle(180-.001)}var Lf=Gu(function(gt){return(gt=P(gt))&>/_(gt)});Lf.invert=Pc(function(gt){return gt});function Uf(){return Pu(Lf).scale(79.4188).clipAngle(180-.001)}function Iu(gt,Bt){return[gt,A(p((u+Bt)/2))]}Iu.invert=function(gt,Bt){return[gt,2*x(k(Bt))-u]};function oh(){return tu(Iu).scale(961/f)}function tu(gt){var Bt=Pu(gt),wr=Bt.center,vr=Bt.scale,Ur=Bt.translate,fi=Bt.clipExtent,xi=null,Fi,Xi,hn;Bt.scale=function(qi){return arguments.length?(vr(qi),Ti()):vr()},Bt.translate=function(qi){return arguments.length?(Ur(qi),Ti()):Ur()},Bt.center=function(qi){return arguments.length?(wr(qi),Ti()):wr()},Bt.clipExtent=function(qi){return arguments.length?(qi==null?xi=Fi=Xi=hn=null:(xi=+qi[0][0],Fi=+qi[0][1],Xi=+qi[1][0],hn=+qi[1][1]),Ti()):xi==null?null:[[xi,Fi],[Xi,hn]]};function Ti(){var qi=l*vr(),Ii=Bt(Gi(Bt.rotate()).invert([0,0]));return fi(xi==null?[[Ii[0]-qi,Ii[1]-qi],[Ii[0]+qi,Ii[1]+qi]]:gt===Iu?[[Math.max(Ii[0]-qi,xi),Fi],[Math.min(Ii[0]+qi,Xi),hn]]:[[xi,Math.max(Ii[1]-qi,Fi)],[Xi,Math.min(Ii[1]+qi,hn)]])}return Ti()}function vf(gt){return p((u+gt)/2)}function md(gt,Bt){var wr=g(gt),vr=gt===Bt?_(gt):A(wr/g(Bt))/A(vf(Bt)/vf(gt)),Ur=wr*L(vf(gt),vr)/vr;if(!vr)return Iu;function fi(xi,Fi){Ur>0?Fi<-u+o&&(Fi=-u+o):Fi>u-o&&(Fi=u-o);var Xi=Ur/L(vf(Fi),vr);return[Xi*_(vr*xi),Ur-Xi*g(vr*xi)]}return fi.invert=function(xi,Fi){var Xi=Ur-Fi,hn=C(vr)*M(xi*xi+Xi*Xi),Ti=b(xi,v(Xi))*C(Xi);return Xi*vr<0&&(Ti-=l*C(xi)*C(Xi)),[Ti/vr,2*x(L(Ur/hn,1/vr))-u]},fi}function sh(){return fl(md).scale(109.5).parallels([30,30])}function Fs(gt,Bt){return[gt,Bt]}Fs.invert=Fs;function _u(){return Pu(Fs).scale(152.63)}function xu(gt,Bt){var wr=g(gt),vr=gt===Bt?_(gt):(wr-g(Bt))/(Bt-gt),Ur=wr/vr+gt;if(v(vr)o&&--vr>0);return[gt/(.8707+(fi=wr*wr)*(-.131979+fi*(-.013791+fi*fi*fi*(.003971-.001529*fi)))),wr]};function gc(){return Pu(Rc).scale(175.295)}function hl(gt,Bt){return[g(Bt)*_(gt),_(Bt)]}hl.invert=Pc(T);function ru(){return Pu(hl).scale(249.5).clipAngle(90+o)}function mc(gt,Bt){var wr=g(Bt),vr=1+g(gt)*wr;return[wr*_(gt)/vr,_(Bt)/vr]}mc.invert=Pc(function(gt){return 2*x(gt)});function Yc(){return Pu(mc).scale(250).clipAngle(142)}function nc(gt,Bt){return[A(p((u+Bt)/2)),-gt]}nc.invert=function(gt,Bt){return[-Bt,2*x(k(gt))-u]};function gf(){var gt=tu(nc),Bt=gt.center,wr=gt.rotate;return gt.center=function(vr){return arguments.length?Bt([-vr[1],vr[0]]):(vr=Bt(),[vr[1],-vr[0]])},gt.rotate=function(vr){return arguments.length?wr([vr[0],vr[1],vr.length>2?vr[2]+90:90]):(vr=wr(),[vr[0],vr[1],vr[2]-90])},wr([0,0,90]).scale(159.155)}e.geoAlbers=Qs,e.geoAlbersUsa=gd,e.geoArea=me,e.geoAzimuthalEqualArea=sv,e.geoAzimuthalEqualAreaRaw=vc,e.geoAzimuthalEquidistant=Uf,e.geoAzimuthalEquidistantRaw=Lf,e.geoBounds=Ne,e.geoCentroid=yr,e.geoCircle=jn,e.geoClipAntimeridian=Hr,e.geoClipCircle=an,e.geoClipExtent=Sa,e.geoClipRectangle=Fn,e.geoConicConformal=sh,e.geoConicConformalRaw=md,e.geoConicEqualArea=yu,e.geoConicEqualAreaRaw=ic,e.geoConicEquidistant=Lh,e.geoConicEquidistantRaw=xu,e.geoContains=ms,e.geoDistance=Cs,e.geoEqualEarth=Ph,e.geoEqualEarthRaw=pf,e.geoEquirectangular=_u,e.geoEquirectangularRaw=Fs,e.geoGnomonic=Ih,e.geoGnomonicRaw=Rl,e.geoGraticule=Qu,e.geoGraticule10=Il,e.geoIdentity=Wu,e.geoInterpolate=vo,e.geoLength=wl,e.geoMercator=oh,e.geoMercatorRaw=Iu,e.geoNaturalEarth1=gc,e.geoNaturalEarth1Raw=Rc,e.geoOrthographic=ru,e.geoOrthographicRaw=hl,e.geoPath=kh,e.geoProjection=Pu,e.geoProjectionMutator=Lc,e.geoRotation=Gi,e.geoStereographic=Yc,e.geoStereographicRaw=mc,e.geoStream=W,e.geoTransform=Kh,e.geoTransverseMercator=gf,e.geoTransverseMercatorRaw=nc,Object.defineProperty(e,"__esModule",{value:!0})})});var xRe=ye((Az,_Re)=>{(function(e,t){typeof Az=="object"&&typeof _Re!="undefined"?t(Az,xX(),JE()):typeof define=="function"&&define.amd?define(["exports","d3-geo","d3-array"],t):t(e.d3=e.d3||{},e.d3,e.d3)})(Az,function(e,t,r){"use strict";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,u=Math.log,c=Math.max,f=Math.min,h=Math.pow,d=Math.round,v=Math.sign||function(he){return he>0?1:he<0?-1:0},x=Math.sin,b=Math.tan,g=1e-6,E=1e-12,k=Math.PI,A=k/2,L=k/4,_=Math.SQRT1_2,C=H(2),M=H(k),p=k*2,P=180/k,T=k/180;function F(he){return he?he/Math.sin(he):1}function q(he){return he>1?A:he<-1?-A:Math.asin(he)}function V(he){return he>1?0:he<-1?k:Math.acos(he)}function H(he){return he>0?Math.sqrt(he):0}function X(he){return he=s(2*he),(he-1)/(he+1)}function G(he){return(s(he)-s(-he))/2}function N(he){return(s(he)+s(-he))/2}function W(he){return u(he+H(he*he+1))}function re(he){return u(he+H(he*he-1))}function ae(he){var be=b(he/2),Pe=2*u(o(he/2))/(be*be);function Oe(Je,He){var et=o(Je),Mt=o(He),Dt=x(He),Ut=Mt*et,tr=-((1-Ut?u((1+Ut)/2)/(1-Ut):-.5)+Pe/(1+Ut));return[tr*Mt*x(Je),tr*Dt]}return Oe.invert=function(Je,He){var et=H(Je*Je+He*He),Mt=-he/2,Dt=50,Ut;if(!et)return[0,0];do{var tr=Mt/2,mr=o(tr),Rr=x(tr),zr=Rr/mr,Xr=-u(n(mr));Mt-=Ut=(2/zr*Xr-Pe*zr-et)/(-Xr/(Rr*Rr)+1-Pe/(2*mr*mr))*(mr<0?.7:1)}while(n(Ut)>g&&--Dt>0);var di=x(Mt);return[a(Je*di,et*o(Mt)),q(He*di/et)]},Oe}function _e(){var he=A,be=t.geoProjectionMutator(ae),Pe=be(he);return Pe.radius=function(Oe){return arguments.length?be(he=Oe*T):he*P},Pe.scale(179.976).clipAngle(147)}function Me(he,be){var Pe=o(be),Oe=F(V(Pe*o(he/=2)));return[2*Pe*x(he)*Oe,x(be)*Oe]}Me.invert=function(he,be){if(!(he*he+4*be*be>k*k+g)){var Pe=he,Oe=be,Je=25;do{var He=x(Pe),et=x(Pe/2),Mt=o(Pe/2),Dt=x(Oe),Ut=o(Oe),tr=x(2*Oe),mr=Dt*Dt,Rr=Ut*Ut,zr=et*et,Xr=1-Rr*Mt*Mt,di=Xr?V(Ut*Mt)*H(Li=1/Xr):Li=0,Li,Ci=2*di*Ut*et-he,Qi=di*Dt-be,Mn=Li*(Rr*zr+di*Ut*Mt*mr),pa=Li*(.5*He*tr-di*2*Dt*et),ea=Li*.25*(tr*et-di*Dt*Rr*He),Ga=Li*(mr*Mt+di*zr*Ut),To=pa*ea-Ga*Mn;if(!To)break;var Wa=(Qi*pa-Ci*Ga)/To,co=(Ci*ea-Qi*Mn)/To;Pe-=Wa,Oe-=co}while((n(Wa)>g||n(co)>g)&&--Je>0);return[Pe,Oe]}};function ke(){return t.geoProjection(Me).scale(152.63)}function ge(he){var be=x(he),Pe=o(he),Oe=he>=0?1:-1,Je=b(Oe*he),He=(1+be-Pe)/2;function et(Mt,Dt){var Ut=o(Dt),tr=o(Mt/=2);return[(1+Ut)*x(Mt),(Oe*Dt>-a(tr,Je)-.001?0:-Oe*10)+He+x(Dt)*Pe-(1+Ut)*be*tr]}return et.invert=function(Mt,Dt){var Ut=0,tr=0,mr=50;do{var Rr=o(Ut),zr=x(Ut),Xr=o(tr),di=x(tr),Li=1+Xr,Ci=Li*zr-Mt,Qi=He+di*Pe-Li*be*Rr-Dt,Mn=Li*Rr/2,pa=-zr*di,ea=be*Li*zr/2,Ga=Pe*Xr+be*Rr*di,To=pa*ea-Ga*Mn,Wa=(Qi*pa-Ci*Ga)/To/2,co=(Ci*ea-Qi*Mn)/To;n(co)>2&&(co/=2),Ut-=Wa,tr-=co}while((n(Wa)>g||n(co)>g)&&--mr>0);return Oe*tr>-a(o(Ut),Je)-.001?[Ut*2,tr]:null},et}function ie(){var he=20*T,be=he>=0?1:-1,Pe=b(be*he),Oe=t.geoProjectionMutator(ge),Je=Oe(he),He=Je.stream;return Je.parallel=function(et){return arguments.length?(Pe=b((be=(he=et*T)>=0?1:-1)*he),Oe(he)):he*P},Je.stream=function(et){var Mt=Je.rotate(),Dt=He(et),Ut=(Je.rotate([0,0]),He(et)),tr=Je.precision();return Je.rotate(Mt),Dt.sphere=function(){Ut.polygonStart(),Ut.lineStart();for(var mr=be*-180;be*mr<180;mr+=be*90)Ut.point(mr,be*90);if(he)for(;be*(mr-=3*be*tr)>=-180;)Ut.point(mr,be*-a(o(mr*T/2),Pe)*P);Ut.lineEnd(),Ut.polygonEnd()},Dt},Je.scale(218.695).center([0,28.0974])}function Te(he,be){var Pe=b(be/2),Oe=H(1-Pe*Pe),Je=1+Oe*o(he/=2),He=x(he)*Oe/Je,et=Pe/Je,Mt=He*He,Dt=et*et;return[4/3*He*(3+Mt-3*Dt),4/3*et*(3+3*Mt-Dt)]}Te.invert=function(he,be){if(he*=3/8,be*=3/8,!he&&n(be)>1)return null;var Pe=he*he,Oe=be*be,Je=1+Pe+Oe,He=H((Je-H(Je*Je-4*be*be))/2),et=q(He)/3,Mt=He?re(n(be/He))/3:W(n(he))/3,Dt=o(et),Ut=N(Mt),tr=Ut*Ut-Dt*Dt;return[v(he)*2*a(G(Mt)*Dt,.25-tr),v(be)*2*a(Ut*x(et),.25+tr)]};function Ee(){return t.geoProjection(Te).scale(66.1603)}var Ae=H(8),ze=u(1+C);function Ce(he,be){var Pe=n(be);return PeE&&--Oe>0);return[he/(o(Pe)*(Ae-1/x(Pe))),v(be)*Pe]};function me(){return t.geoProjection(Ce).scale(112.314)}function Re(he){var be=2*k/he;function Pe(Oe,Je){var He=t.geoAzimuthalEquidistantRaw(Oe,Je);if(n(Oe)>A){var et=a(He[1],He[0]),Mt=H(He[0]*He[0]+He[1]*He[1]),Dt=be*d((et-A)/be)+A,Ut=a(x(et-=Dt),2-o(et));et=Dt+q(k/Mt*x(Ut))-Ut,He[0]=Mt*o(et),He[1]=Mt*x(et)}return He}return Pe.invert=function(Oe,Je){var He=H(Oe*Oe+Je*Je);if(He>A){var et=a(Je,Oe),Mt=be*d((et-A)/be)+A,Dt=et>Mt?-1:1,Ut=He*o(Mt-et),tr=1/b(Dt*V((Ut-k)/H(k*(k-2*Ut)+He*He)));et=Mt+2*i((tr+Dt*H(tr*tr-3))/3),Oe=He*o(et),Je=He*x(et)}return t.geoAzimuthalEquidistantRaw.invert(Oe,Je)},Pe}function ce(){var he=5,be=t.geoProjectionMutator(Re),Pe=be(he),Oe=Pe.stream,Je=.01,He=-o(Je*T),et=x(Je*T);return Pe.lobes=function(Mt){return arguments.length?be(he=+Mt):he},Pe.stream=function(Mt){var Dt=Pe.rotate(),Ut=Oe(Mt),tr=(Pe.rotate([0,0]),Oe(Mt));return Pe.rotate(Dt),Ut.sphere=function(){tr.polygonStart(),tr.lineStart();for(var mr=0,Rr=360/he,zr=2*k/he,Xr=90-180/he,di=A;mr0&&n(Je)>g);return Oe<0?NaN:Pe}function rt(he,be,Pe){return be===void 0&&(be=40),Pe===void 0&&(Pe=E),function(Oe,Je,He,et){var Mt,Dt,Ut;He=He===void 0?0:+He,et=et===void 0?0:+et;for(var tr=0;trMt){He-=Dt/=2,et-=Ut/=2;continue}Mt=Xr;var di=(He>0?-1:1)*Pe,Li=(et>0?-1:1)*Pe,Ci=he(He+di,et),Qi=he(He,et+Li),Mn=(Ci[0]-mr[0])/di,pa=(Ci[1]-mr[1])/di,ea=(Qi[0]-mr[0])/Li,Ga=(Qi[1]-mr[1])/Li,To=Ga*Mn-pa*ea,Wa=(n(To)<.5?.5:1)/To;if(Dt=(zr*ea-Rr*Ga)*Wa,Ut=(Rr*pa-zr*Mn)*Wa,He+=Dt,et+=Ut,n(Dt)0&&(Mt[1]*=1+Dt/1.5*Mt[0]*Mt[0]),Mt}return Oe.invert=rt(Oe),Oe}function Rt(){return t.geoProjection(ot()).rotate([-16.5,-42]).scale(176.57).center([7.93,.09])}function kt(he,be){var Pe=he*x(be),Oe=30,Je;do be-=Je=(be+x(be)-Pe)/(1+o(be));while(n(Je)>g&&--Oe>0);return be/2}function Ct(he,be,Pe){function Oe(Je,He){return[he*Je*o(He=kt(Pe,He)),be*x(He)]}return Oe.invert=function(Je,He){return He=q(He/be),[Je/(he*o(He)),q((2*He+x(2*He))/Pe)]},Oe}var Yt=Ct(C/A,C,k);function xr(){return t.geoProjection(Yt).scale(169.529)}var er=2.00276,Ke=1.11072;function xt(he,be){var Pe=kt(k,be);return[er*he/(1/o(be)+Ke/o(Pe)),(be+C*x(Pe))/er]}xt.invert=function(he,be){var Pe=er*be,Oe=be<0?-L:L,Je=25,He,et;do et=Pe-C*x(Oe),Oe-=He=(x(2*Oe)+2*Oe-k*x(et))/(2*o(2*Oe)+2+k*o(et)*C*o(Oe));while(n(He)>g&&--Je>0);return et=Pe-C*x(Oe),[he*(1/o(et)+Ke/o(Oe))/er,et]};function bt(){return t.geoProjection(xt).scale(160.857)}function Lt(he){var be=0,Pe=t.geoProjectionMutator(he),Oe=Pe(be);return Oe.parallel=function(Je){return arguments.length?Pe(be=Je*T):be*P},Oe}function St(he,be){return[he*o(be),be]}St.invert=function(he,be){return[he/o(be),be]};function Et(){return t.geoProjection(St).scale(152.63)}function dt(he){if(!he)return St;var be=1/b(he);function Pe(Oe,Je){var He=be+he-Je,et=He&&Oe*o(Je)/He;return[He*x(et),be-He*o(et)]}return Pe.invert=function(Oe,Je){var He=H(Oe*Oe+(Je=be-Je)*Je),et=be+he-He;return[He/o(et)*a(Oe,Je),et]},Pe}function Ht(){return Lt(dt).scale(123.082).center([0,26.1441]).parallel(45)}function $t(he){function be(Pe,Oe){var Je=A-Oe,He=Je&&Pe*he*x(Je)/Je;return[Je*x(He)/he,A-Je*o(He)]}return be.invert=function(Pe,Oe){var Je=Pe*he,He=A-Oe,et=H(Je*Je+He*He),Mt=a(Je,He);return[(et?et/x(et):1)*Mt/he,A-et]},be}function fr(){var he=.5,be=t.geoProjectionMutator($t),Pe=be(he);return Pe.fraction=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(158.837)}var _r=Ct(1,4/k,k);function Br(){return t.geoProjection(_r).scale(152.63)}function Or(he,be,Pe,Oe,Je,He){var et=o(He),Mt;if(n(he)>1||n(He)>1)Mt=V(Pe*Je+be*Oe*et);else{var Dt=x(he/2),Ut=x(He/2);Mt=2*q(H(Dt*Dt+be*Oe*Ut*Ut))}return n(Mt)>g?[Mt,a(Oe*x(He),be*Je-Pe*Oe*et)]:[0,0]}function Nr(he,be,Pe){return V((he*he+be*be-Pe*Pe)/(2*he*be))}function ut(he){return he-2*k*l((he+k)/(2*k))}function Ne(he,be,Pe){for(var Oe=[[he[0],he[1],x(he[1]),o(he[1])],[be[0],be[1],x(be[1]),o(be[1])],[Pe[0],Pe[1],x(Pe[1]),o(Pe[1])]],Je=Oe[2],He,et=0;et<3;++et,Je=He)He=Oe[et],Je.v=Or(He[1]-Je[1],Je[3],Je[2],He[3],He[2],He[0]-Je[0]),Je.point=[0,0];var Mt=Nr(Oe[0].v[0],Oe[2].v[0],Oe[1].v[0]),Dt=Nr(Oe[0].v[0],Oe[1].v[0],Oe[2].v[0]),Ut=k-Mt;Oe[2].point[1]=0,Oe[0].point[0]=-(Oe[1].point[0]=Oe[0].v[0]/2);var tr=[Oe[2].point[0]=Oe[0].point[0]+Oe[2].v[0]*o(Mt),2*(Oe[0].point[1]=Oe[1].point[1]=Oe[2].v[0]*x(Mt))];function mr(Rr,zr){var Xr=x(zr),di=o(zr),Li=new Array(3),Ci;for(Ci=0;Ci<3;++Ci){var Qi=Oe[Ci];if(Li[Ci]=Or(zr-Qi[1],Qi[3],Qi[2],di,Xr,Rr-Qi[0]),!Li[Ci][0])return Qi.point;Li[Ci][1]=ut(Li[Ci][1]-Qi.v[1])}var Mn=tr.slice();for(Ci=0;Ci<3;++Ci){var pa=Ci==2?0:Ci+1,ea=Nr(Oe[Ci].v[0],Li[Ci][0],Li[pa][0]);Li[Ci][1]<0&&(ea=-ea),Ci?Ci==1?(ea=Dt-ea,Mn[0]-=Li[Ci][0]*o(ea),Mn[1]-=Li[Ci][0]*x(ea)):(ea=Ut-ea,Mn[0]+=Li[Ci][0]*o(ea),Mn[1]+=Li[Ci][0]*x(ea)):(Mn[0]+=Li[Ci][0]*o(ea),Mn[1]-=Li[Ci][0]*x(ea))}return Mn[0]/=3,Mn[1]/=3,Mn}return mr}function Ye(he){return he[0]*=T,he[1]*=T,he}function Ve(){return Xe([0,22],[45,22],[22.5,-22]).scale(380).center([22.5,2])}function Xe(he,be,Pe){var Oe=t.geoCentroid({type:"MultiPoint",coordinates:[he,be,Pe]}),Je=[-Oe[0],-Oe[1]],He=t.geoRotation(Je),et=Ne(Ye(He(he)),Ye(He(be)),Ye(He(Pe)));et.invert=rt(et);var Mt=t.geoProjection(et).rotate(Je),Dt=Mt.center;return delete Mt.rotate,Mt.center=function(Ut){return arguments.length?Dt(He(Ut)):He.invert(Dt())},Mt.clipAngle(90)}function ht(he,be){var Pe=H(1-x(be));return[2/M*he*Pe,M*(1-Pe)]}ht.invert=function(he,be){var Pe=(Pe=be/M-1)*Pe;return[Pe>0?he*H(k/Pe)/2:0,q(1-Pe)]};function Le(){return t.geoProjection(ht).scale(95.6464).center([0,30])}function xe(he){var be=b(he);function Pe(Oe,Je){return[Oe,(Oe?Oe/x(Oe):1)*(x(Je)*o(Oe)-be*o(Je))]}return Pe.invert=be?function(Oe,Je){Oe&&(Je*=x(Oe)/Oe);var He=o(Oe);return[Oe,2*a(H(He*He+be*be-Je*Je)-He,be-Je)]}:function(Oe,Je){return[Oe,q(Oe?Je*b(Oe)/Oe:Je)]},Pe}function Se(){return Lt(xe).scale(249.828).clipAngle(90)}var lt=H(3);function Gt(he,be){return[lt*he*(2*o(2*be/3)-1)/M,lt*M*x(be/3)]}Gt.invert=function(he,be){var Pe=3*q(be/(lt*M));return[M*he/(lt*(2*o(2*Pe/3)-1)),Pe]};function Vt(){return t.geoProjection(Gt).scale(156.19)}function ar(he){var be=o(he);function Pe(Oe,Je){return[Oe*be,x(Je)/be]}return Pe.invert=function(Oe,Je){return[Oe/be,q(Je*be)]},Pe}function Qr(){return Lt(ar).parallel(38.58).scale(195.044)}function ai(he){var be=o(he);function Pe(Oe,Je){return[Oe*be,(1+be)*b(Je/2)]}return Pe.invert=function(Oe,Je){return[Oe/be,i(Je/(1+be))*2]},Pe}function jr(){return Lt(ai).scale(124.75)}function ri(he,be){var Pe=H(8/(3*k));return[Pe*he*(1-n(be)/k),Pe*be]}ri.invert=function(he,be){var Pe=H(8/(3*k)),Oe=be/Pe;return[he/(Pe*(1-n(Oe)/k)),Oe]};function bi(){return t.geoProjection(ri).scale(165.664)}function nn(he,be){var Pe=H(4-3*x(n(be)));return[2/H(6*k)*he*Pe,v(be)*H(2*k/3)*(2-Pe)]}nn.invert=function(he,be){var Pe=2-n(be)/H(2*k/3);return[he*H(6*k)/(2*Pe),v(be)*q((4-Pe*Pe)/3)]};function Wi(){return t.geoProjection(nn).scale(165.664)}function Ni(he,be){var Pe=H(k*(4+k));return[2/Pe*he*(1+H(1-4*be*be/(k*k))),4/Pe*be]}Ni.invert=function(he,be){var Pe=H(k*(4+k))/2;return[he*Pe/(1+H(1-be*be*(4+k)/(4*k))),be*Pe/2]};function _n(){return t.geoProjection(Ni).scale(180.739)}function $i(he,be){var Pe=(2+A)*x(be);be/=2;for(var Oe=0,Je=1/0;Oe<10&&n(Je)>g;Oe++){var He=o(be);be-=Je=(be+x(be)*(He+2)-Pe)/(2*He*(1+He))}return[2/H(k*(4+k))*he*(1+o(be)),2*H(k/(4+k))*x(be)]}$i.invert=function(he,be){var Pe=be*H((4+k)/k)/2,Oe=q(Pe),Je=o(Oe);return[he/(2/H(k*(4+k))*(1+Je)),q((Oe+Pe*(Je+2))/(2+A))]};function zn(){return t.geoProjection($i).scale(180.739)}function Wn(he,be){return[he*(1+o(be))/H(2+k),2*be/H(2+k)]}Wn.invert=function(he,be){var Pe=H(2+k),Oe=be*Pe/2;return[Pe*he/(1+o(Oe)),Oe]};function It(){return t.geoProjection(Wn).scale(173.044)}function ft(he,be){for(var Pe=(1+A)*x(be),Oe=0,Je=1/0;Oe<10&&n(Je)>g;Oe++)be-=Je=(be+x(be)-Pe)/(1+o(be));return Pe=H(2+k),[he*(1+o(be))/Pe,2*be/Pe]}ft.invert=function(he,be){var Pe=1+A,Oe=H(Pe/2);return[he*2*Oe/(1+o(be*=Oe)),q((be+x(be))/Pe)]};function jt(){return t.geoProjection(ft).scale(173.044)}var Zt=3+2*C;function yr(he,be){var Pe=x(he/=2),Oe=o(he),Je=H(o(be)),He=o(be/=2),et=x(be)/(He+C*Oe*Je),Mt=H(2/(1+et*et)),Dt=H((C*He+(Oe+Pe)*Je)/(C*He+(Oe-Pe)*Je));return[Zt*(Mt*(Dt-1/Dt)-2*u(Dt)),Zt*(Mt*et*(Dt+1/Dt)-2*i(et))]}yr.invert=function(he,be){if(!(He=Te.invert(he/1.2,be*1.065)))return null;var Pe=He[0],Oe=He[1],Je=20,He;he/=Zt,be/=Zt;do{var et=Pe/2,Mt=Oe/2,Dt=x(et),Ut=o(et),tr=x(Mt),mr=o(Mt),Rr=o(Oe),zr=H(Rr),Xr=tr/(mr+C*Ut*zr),di=Xr*Xr,Li=H(2/(1+di)),Ci=C*mr+(Ut+Dt)*zr,Qi=C*mr+(Ut-Dt)*zr,Mn=Ci/Qi,pa=H(Mn),ea=pa-1/pa,Ga=pa+1/pa,To=Li*ea-2*u(pa)-he,Wa=Li*Xr*Ga-2*i(Xr)-be,co=tr&&_*zr*Dt*di/tr,Ro=(C*Ut*mr+zr)/(2*(mr+C*Ut*zr)*(mr+C*Ut*zr)*zr),Ds=-.5*Xr*Li*Li*Li,As=Ds*co,yo=Ds*Ro,po=(po=2*mr+C*zr*(Ut-Dt))*po*pa,_l=(C*Ut*mr*zr+Rr)/po,Vl=-(C*Dt*tr)/(zr*po),Zu=ea*As-2*_l/pa+Li*(_l+_l/Mn),cu=ea*yo-2*Vl/pa+Li*(Vl+Vl/Mn),el=Xr*Ga*As-2*co/(1+di)+Li*Ga*co+Li*Xr*(_l-_l/Mn),nu=Xr*Ga*yo-2*Ro/(1+di)+Li*Ga*Ro+Li*Xr*(Vl-Vl/Mn),zc=cu*el-nu*Zu;if(!zc)break;var Dl=(Wa*cu-To*nu)/zc,zl=(To*el-Wa*Zu)/zc;Pe-=Dl,Oe=c(-A,f(A,Oe-zl))}while((n(Dl)>g||n(zl)>g)&&--Je>0);return n(n(Oe)-A)Oe){var mr=H(tr),Rr=a(Ut,Dt),zr=Pe*d(Rr/Pe),Xr=Rr-zr,di=he*o(Xr),Li=(he*x(Xr)-Xr*x(di))/(A-di),Ci=Fa(Xr,Li),Qi=(k-he)/Ra(Ci,di,k);Dt=mr;var Mn=50,pa;do Dt-=pa=(he+Ra(Ci,di,Dt)*Qi-mr)/(Ci(Dt)*Qi);while(n(pa)>g&&--Mn>0);Ut=Xr*x(Dt),DtOe){var Dt=H(Mt),Ut=a(et,He),tr=Pe*d(Ut/Pe),mr=Ut-tr;He=Dt*o(mr),et=Dt*x(mr);for(var Rr=He-A,zr=x(He),Xr=et/zr,di=Heg||n(Xr)>g)&&--di>0);return[mr,Rr]},Dt}var Sn=oa(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);function Ha(){return t.geoProjection(Sn).scale(149.995)}var oo=oa(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function xn(){return t.geoProjection(oo).scale(153.93)}var _t=oa(5/6*k,-.62636,-.0344,0,1.3493,-.05524,0,.045);function br(){return t.geoProjection(_t).scale(130.945)}function Hr(he,be){var Pe=he*he,Oe=be*be;return[he*(1-.162388*Oe)*(.87-952426e-9*Pe*Pe),be*(1+Oe/12)]}Hr.invert=function(he,be){var Pe=he,Oe=be,Je=50,He;do{var et=Oe*Oe;Oe-=He=(Oe*(1+et/12)-be)/(1+et/4)}while(n(He)>g&&--Je>0);Je=50,he/=1-.162388*et;do{var Mt=(Mt=Pe*Pe)*Mt;Pe-=He=(Pe*(.87-952426e-9*Mt)-he)/(.87-.00476213*Mt)}while(n(He)>g&&--Je>0);return[Pe,Oe]};function ti(){return t.geoProjection(Hr).scale(131.747)}var zi=oa(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Yi(){return t.geoProjection(zi).scale(131.087)}function an(he){var be=he(A,0)[0]-he(-A,0)[0];function Pe(Oe,Je){var He=Oe>0?-.5:.5,et=he(Oe+He*k,Je);return et[0]-=He*be,et}return he.invert&&(Pe.invert=function(Oe,Je){var He=Oe>0?-.5:.5,et=he.invert(Oe+He*be,Je),Mt=et[0]-He*k;return Mt<-k?Mt+=2*k:Mt>k&&(Mt-=2*k),et[0]=Mt,et}),Pe}function hi(he,be){var Pe=v(he),Oe=v(be),Je=o(be),He=o(he)*Je,et=x(he)*Je,Mt=x(Oe*be);he=n(a(et,Mt)),be=q(He),n(he-A)>g&&(he%=A);var Dt=Ji(he>k/4?A-he:he,be);return he>k/4&&(Mt=Dt[0],Dt[0]=-Dt[1],Dt[1]=-Mt),Dt[0]*=Pe,Dt[1]*=-Oe,Dt}hi.invert=function(he,be){n(he)>1&&(he=v(he)*2-he),n(be)>1&&(be=v(be)*2-be);var Pe=v(he),Oe=v(be),Je=-Pe*he,He=-Oe*be,et=He/Je<1,Mt=ua(et?He:Je,et?Je:He),Dt=Mt[0],Ut=Mt[1],tr=o(Ut);return et&&(Dt=-A-Dt),[Pe*(a(x(Dt)*tr,-x(Ut))+k),Oe*q(o(Dt)*tr)]};function Ji(he,be){if(be===A)return[0,0];var Pe=x(be),Oe=Pe*Pe,Je=Oe*Oe,He=1+Je,et=1+3*Je,Mt=1-Je,Dt=q(1/H(He)),Ut=Mt+Oe*He*Dt,tr=(1-Pe)/Ut,mr=H(tr),Rr=tr*He,zr=H(Rr),Xr=mr*Mt,di,Li;if(he===0)return[0,-(Xr+Oe*zr)];var Ci=o(be),Qi=1/Ci,Mn=2*Pe*Ci,pa=(-3*Oe+Dt*et)*Mn,ea=(-Ut*Ci-(1-Pe)*pa)/(Ut*Ut),Ga=.5*ea/mr,To=Mt*Ga-2*Oe*mr*Mn,Wa=Oe*He*ea+tr*et*Mn,co=-Qi*Mn,Ro=-Qi*Wa,Ds=-2*Qi*To,As=4*he/k,yo;if(he>.222*k||be.175*k){if(di=(Xr+Oe*H(Rr*(1+Je)-Xr*Xr))/(1+Je),he>k/4)return[di,di];var po=di,_l=.5*di;di=.5*(_l+po),Li=50;do{var Vl=H(Rr-di*di),Zu=di*(Ds+co*Vl)+Ro*q(di/zr)-As;if(!Zu)break;Zu<0?_l=di:po=di,di=.5*(_l+po)}while(n(po-_l)>g&&--Li>0)}else{di=g,Li=25;do{var cu=di*di,el=H(Rr-cu),nu=Ds+co*el,zc=di*nu+Ro*q(di/zr)-As,Dl=nu+(Ro-co*cu)/el;di-=yo=el?zc/Dl:0}while(n(yo)>g&&--Li>0)}return[di,-Xr-Oe*H(Rr-di*di)]}function ua(he,be){for(var Pe=0,Oe=1,Je=.5,He=50;;){var et=Je*Je,Mt=H(Je),Dt=q(1/H(1+et)),Ut=1-et+Je*(1+et)*Dt,tr=(1-Mt)/Ut,mr=H(tr),Rr=tr*(1+et),zr=mr*(1-et),Xr=Rr-he*he,di=H(Xr),Li=be+zr+Je*di;if(n(Oe-Pe)0?Pe=Je:Oe=Je,Je=.5*(Pe+Oe)}if(!He)return null;var Ci=q(Mt),Qi=o(Ci),Mn=1/Qi,pa=2*Mt*Qi,ea=(-3*Je+Dt*(1+3*et))*pa,Ga=(-Ut*Qi-(1-Mt)*ea)/(Ut*Ut),To=.5*Ga/mr,Wa=(1-et)*To-2*Je*mr*pa,co=-2*Mn*Wa,Ro=-Mn*pa,Ds=-Mn*(Je*(1+et)*Ga+tr*(1+3*et)*pa);return[k/4*(he*(co+Ro*di)+Ds*q(he/H(Rr))),Ci]}function Fn(){return t.geoProjection(an(hi)).scale(239.75)}function Sa(he,be,Pe){var Oe,Je,He;return he?(Oe=go(he,Pe),be?(Je=go(be,1-Pe),He=Je[1]*Je[1]+Pe*Oe[0]*Oe[0]*Je[0]*Je[0],[[Oe[0]*Je[2]/He,Oe[1]*Oe[2]*Je[0]*Je[1]/He],[Oe[1]*Je[1]/He,-Oe[0]*Oe[2]*Je[0]*Je[2]/He],[Oe[2]*Je[1]*Je[2]/He,-Pe*Oe[0]*Oe[1]*Je[0]/He]]):[[Oe[0],0],[Oe[1],0],[Oe[2],0]]):(Je=go(be,1-Pe),[[0,Je[0]/Je[1]],[1/Je[1],0],[Je[2]/Je[1],0]])}function go(he,be){var Pe,Oe,Je,He,et;if(be=1-g)return Pe=(1-be)/4,Oe=N(he),He=X(he),Je=1/Oe,et=Oe*G(he),[He+Pe*(et-he)/(Oe*Oe),Je-Pe*He*Je*(et-he),Je+Pe*He*Je*(et+he),2*i(s(he))-A+Pe*(et-he)/Oe];var Mt=[1,0,0,0,0,0,0,0,0],Dt=[H(be),0,0,0,0,0,0,0,0],Ut=0;for(Oe=H(1-be),et=1;n(Dt[Ut]/Mt[Ut])>g&&Ut<8;)Pe=Mt[Ut++],Dt[Ut]=(Pe-Oe)/2,Mt[Ut]=(Pe+Oe)/2,Oe=H(Pe*Oe),et*=2;Je=et*Mt[Ut]*he;do He=Dt[Ut]*x(Oe=Je)/Mt[Ut],Je=(q(He)+Je)/2;while(--Ut);return[x(Je),He=o(Je),He/o(Je-Oe),Je]}function Oo(he,be,Pe){var Oe=n(he),Je=n(be),He=G(Je);if(Oe){var et=1/x(Oe),Mt=1/(b(Oe)*b(Oe)),Dt=-(Mt+Pe*(He*He*et*et)-1+Pe),Ut=(Pe-1)*Mt,tr=(-Dt+H(Dt*Dt-4*Ut))/2;return[ho(i(1/H(tr)),Pe)*v(he),ho(i(H((tr/Mt-1)/Pe)),1-Pe)*v(be)]}return[0,ho(i(He),1-Pe)*v(be)]}function ho(he,be){if(!be)return he;if(be===1)return u(b(he/2+L));for(var Pe=1,Oe=H(1-be),Je=H(be),He=0;n(Je)>g;He++){if(he%k){var et=i(Oe*b(he)/Pe);et<0&&(et+=k),he+=et+~~(he/k)*k}else he+=he;Je=(Pe+Oe)/2,Oe=H(Pe*Oe),Je=((Pe=Je)-Oe)/2}return he/(h(2,He)*Pe)}function Mo(he,be){var Pe=(C-1)/(C+1),Oe=H(1-Pe*Pe),Je=ho(A,Oe*Oe),He=-1,et=u(b(k/4+n(be)/2)),Mt=s(He*et)/H(Pe),Dt=xo(Mt*o(He*he),Mt*x(He*he)),Ut=Oo(Dt[0],Dt[1],Oe*Oe);return[-Ut[1],(be>=0?1:-1)*(.5*Je-Ut[0])]}function xo(he,be){var Pe=he*he,Oe=be+1,Je=1-Pe-be*be;return[.5*((he>=0?A:-A)-a(Je,2*he)),-.25*u(Je*Je+4*Pe)+.5*u(Oe*Oe+Pe)]}function zs(he,be){var Pe=be[0]*be[0]+be[1]*be[1];return[(he[0]*be[0]+he[1]*be[1])/Pe,(he[1]*be[0]-he[0]*be[1])/Pe]}Mo.invert=function(he,be){var Pe=(C-1)/(C+1),Oe=H(1-Pe*Pe),Je=ho(A,Oe*Oe),He=-1,et=Sa(.5*Je-be,-he,Oe*Oe),Mt=zs(et[0],et[1]),Dt=a(Mt[1],Mt[0])/He;return[Dt,2*i(s(.5/He*u(Pe*Mt[0]*Mt[0]+Pe*Mt[1]*Mt[1])))-A]};function ks(){return t.geoProjection(an(Mo)).scale(151.496)}function Zs(he){var be=x(he),Pe=o(he),Oe=Xs(he);Oe.invert=Xs(-he);function Je(He,et){var Mt=Oe(He,et);He=Mt[0],et=Mt[1];var Dt=x(et),Ut=o(et),tr=o(He),mr=V(be*Dt+Pe*Ut*tr),Rr=x(mr),zr=n(Rr)>g?mr/Rr:1;return[zr*Pe*x(He),(n(He)>A?zr:-zr)*(be*Ut-Pe*Dt*tr)]}return Je.invert=function(He,et){var Mt=H(He*He+et*et),Dt=-x(Mt),Ut=o(Mt),tr=Mt*Ut,mr=-et*Dt,Rr=Mt*be,zr=H(tr*tr+mr*mr-Rr*Rr),Xr=a(tr*Rr+mr*zr,mr*Rr-tr*zr),di=(Mt>A?-1:1)*a(He*Dt,Mt*o(Xr)*Ut+et*x(Xr)*Dt);return Oe.invert(di,Xr)},Je}function Xs(he){var be=x(he),Pe=o(he);return function(Oe,Je){var He=o(Je),et=o(Oe)*He,Mt=x(Oe)*He,Dt=x(Je);return[a(Mt,et*Pe-Dt*be),q(Dt*Pe+et*be)]}}function wl(){var he=0,be=t.geoProjectionMutator(Zs),Pe=be(he),Oe=Pe.rotate,Je=Pe.stream,He=t.geoCircle();return Pe.parallel=function(et){if(!arguments.length)return he*P;var Mt=Pe.rotate();return be(he=et*T).rotate(Mt)},Pe.rotate=function(et){return arguments.length?(Oe.call(Pe,[et[0],et[1]-he*P]),He.center([-et[0],-et[1]]),Pe):(et=Oe.call(Pe),et[1]+=he*P,et)},Pe.stream=function(et){return et=Je(et),et.sphere=function(){et.polygonStart();var Mt=.01,Dt=He.radius(90-Mt)().coordinates[0],Ut=Dt.length-1,tr=-1,mr;for(et.lineStart();++tr=0;)et.point((mr=Dt[tr])[0],mr[1]);et.lineEnd(),et.polygonEnd()},et},Pe.scale(79.4187).parallel(45).clipAngle(180-.001)}var os=3,cl=q(1-1/os)*P,Cs=ar(0);function ml(he){var be=cl*T,Pe=ht(k,be)[0]-ht(-k,be)[0],Oe=Cs(0,be)[1],Je=ht(0,be)[1],He=M-Je,et=p/he,Mt=4/p,Dt=Oe+He*He*4/p;function Ut(tr,mr){var Rr,zr=n(mr);if(zr>be){var Xr=f(he-1,c(0,l((tr+k)/et)));tr+=k*(he-1)/he-Xr*et,Rr=ht(tr,zr),Rr[0]=Rr[0]*p/Pe-p*(he-1)/(2*he)+Xr*p/he,Rr[1]=Oe+(Rr[1]-Je)*4*He/p,mr<0&&(Rr[1]=-Rr[1])}else Rr=Cs(tr,mr);return Rr[0]*=Mt,Rr[1]/=Dt,Rr}return Ut.invert=function(tr,mr){tr/=Mt,mr*=Dt;var Rr=n(mr);if(Rr>Oe){var zr=f(he-1,c(0,l((tr+k)/et)));tr=(tr+k*(he-1)/he-zr*et)*Pe/p;var Xr=ht.invert(tr,.25*(Rr-Oe)*p/He+Je);return Xr[0]-=k*(he-1)/he-zr*et,mr<0&&(Xr[1]=-Xr[1]),Xr}return Cs.invert(tr,mr)},Ut}function Ys(he,be){return[he,be&1?90-g:cl]}function Hs(he,be){return[he,be&1?-90+g:-cl]}function Eo(he){return[he[0]*(1-g),he[1]]}function fs(he){var be=[].concat(r.range(-180,180+he/2,he).map(Ys),r.range(180,-180-he/2,-he).map(Hs));return{type:"Polygon",coordinates:[he===180?be.map(Eo):be]}}function $l(){var he=4,be=t.geoProjectionMutator(ml),Pe=be(he),Oe=Pe.stream;return Pe.lobes=function(Je){return arguments.length?be(he=+Je):he},Pe.stream=function(Je){var He=Pe.rotate(),et=Oe(Je),Mt=(Pe.rotate([0,0]),Oe(Je));return Pe.rotate(He),et.sphere=function(){t.geoStream(fs(180/he),Mt)},et},Pe.scale(239.75)}function Hu(he){var be=1+he,Pe=x(1/be),Oe=q(Pe),Je=2*H(k/(He=k+4*Oe*be)),He,et=.5*Je*(be+H(he*(2+he))),Mt=he*he,Dt=be*be;function Ut(tr,mr){var Rr=1-x(mr),zr,Xr;if(Rr&&Rr<2){var di=A-mr,Li=25,Ci;do{var Qi=x(di),Mn=o(di),pa=Oe+a(Qi,be-Mn),ea=1+Dt-2*be*Mn;di-=Ci=(di-Mt*Oe-be*Qi+ea*pa-.5*Rr*He)/(2*be*Qi*pa)}while(n(Ci)>E&&--Li>0);zr=Je*H(ea),Xr=tr*pa/k}else zr=Je*(he+Rr),Xr=tr*Oe/k;return[zr*x(Xr),et-zr*o(Xr)]}return Ut.invert=function(tr,mr){var Rr=tr*tr+(mr-=et)*mr,zr=(1+Dt-Rr/(Je*Je))/(2*be),Xr=V(zr),di=x(Xr),Li=Oe+a(di,be-zr);return[q(tr/H(Rr))*k/Li,q(1-2*(Xr-Mt*Oe-be*di+(1+Dt-2*be*zr)*Li)/He)]},Ut}function fc(){var he=1,be=t.geoProjectionMutator(Hu),Pe=be(he);return Pe.ratio=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(167.774).center([0,18.67])}var ms=.7109889596207567,on=.0528035274542;function fa(he,be){return be>-ms?(he=Yt(he,be),he[1]+=on,he):St(he,be)}fa.invert=function(he,be){return be>-ms?Yt.invert(he,be-on):St.invert(he,be)};function Qu(){return t.geoProjection(fa).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}function Il(he,be){return n(be)>ms?(he=Yt(he,be),he[1]-=be>0?on:-on,he):St(he,be)}Il.invert=function(he,be){return n(be)>ms?Yt.invert(he,be+(be>0?on:-on)):St.invert(he,be)};function vo(){return t.geoProjection(Il).scale(152.63)}function Wl(he,be,Pe,Oe){var Je=H(4*k/(2*Pe+(1+he-be/2)*x(2*Pe)+(he+be)/2*x(4*Pe)+be/2*x(6*Pe))),He=H(Oe*x(Pe)*H((1+he*o(2*Pe)+be*o(4*Pe))/(1+he+be))),et=Pe*Dt(1);function Mt(mr){return H(1+he*o(2*mr)+be*o(4*mr))}function Dt(mr){var Rr=mr*Pe;return(2*Rr+(1+he-be/2)*x(2*Rr)+(he+be)/2*x(4*Rr)+be/2*x(6*Rr))/Pe}function Ut(mr){return Mt(mr)*x(mr)}var tr=function(mr,Rr){var zr=Pe*qt(Dt,et*x(Rr)/Pe,Rr/k);isNaN(zr)&&(zr=Pe*v(Rr));var Xr=Je*Mt(zr);return[Xr*He*mr/k*o(zr),Xr/He*x(zr)]};return tr.invert=function(mr,Rr){var zr=qt(Ut,Rr*He/Je);return[mr*k/(o(zr)*Je*He*Mt(zr)),q(Pe*Dt(zr/Pe)/et)]},Pe===0&&(Je=H(Oe/k),tr=function(mr,Rr){return[mr*Je,x(Rr)/Je]},tr.invert=function(mr,Rr){return[mr/Je,q(Rr*Je)]}),tr}function Ks(){var he=1,be=0,Pe=45*T,Oe=2,Je=t.geoProjectionMutator(Wl),He=Je(he,be,Pe,Oe);return He.a=function(et){return arguments.length?Je(he=+et,be,Pe,Oe):he},He.b=function(et){return arguments.length?Je(he,be=+et,Pe,Oe):be},He.psiMax=function(et){return arguments.length?Je(he,be,Pe=+et*T,Oe):Pe*P},He.ratio=function(et){return arguments.length?Je(he,be,Pe,Oe=+et):Oe},He.scale(180.739)}function Zl(he,be,Pe,Oe,Je,He,et,Mt,Dt,Ut,tr){if(tr.nanEncountered)return NaN;var mr,Rr,zr,Xr,di,Li,Ci,Qi,Mn,pa;if(mr=Pe-be,Rr=he(be+mr*.25),zr=he(Pe-mr*.25),isNaN(Rr)){tr.nanEncountered=!0;return}if(isNaN(zr)){tr.nanEncountered=!0;return}return Xr=mr*(Oe+4*Rr+Je)/12,di=mr*(Je+4*zr+He)/12,Li=Xr+di,pa=(Li-et)/15,Ut>Dt?(tr.maxDepthCount++,Li+pa):Math.abs(pa)>1;do Dt[Li]>zr?di=Li:Xr=Li,Li=Xr+di>>1;while(Li>Xr);var Ci=Dt[Li+1]-Dt[Li];return Ci&&(Ci=(zr-Dt[Li+1])/Ci),(Li+1+Ci)/et}var mr=2*tr(1)/k*He/Pe,Rr=function(zr,Xr){var di=tr(n(x(Xr))),Li=Oe(di)*zr;return di/=mr,[Li,Xr>=0?di:-di]};return Rr.invert=function(zr,Xr){var di;return Xr*=mr,n(Xr)<1&&(di=v(Xr)*q(Je(n(Xr))*He)),[zr/Oe(n(Xr)),di]},Rr}function ko(){var he=0,be=2.5,Pe=1.183136,Oe=t.geoProjectionMutator(Zn),Je=Oe(he,be,Pe);return Je.alpha=function(He){return arguments.length?Oe(he=+He,be,Pe):he},Je.k=function(He){return arguments.length?Oe(he,be=+He,Pe):be},Je.gamma=function(He){return arguments.length?Oe(he,be,Pe=+He):Pe},Je.scale(152.63)}function Co(he,be){return n(he[0]-be[0])=0;--Dt)Pe=he[1][Dt],Oe=Pe[0][0],Je=Pe[0][1],He=Pe[1][1],et=Pe[2][0],Mt=Pe[2][1],be.push(Tl([[et-g,Mt-g],[et-g,He+g],[Oe+g,He+g],[Oe+g,Je-g]],30));return{type:"Polygon",coordinates:[r.merge(be)]}}function So(he,be,Pe){var Oe,Je;function He(Dt,Ut){for(var tr=Ut<0?-1:1,mr=be[+(Ut<0)],Rr=0,zr=mr.length-1;Rrmr[Rr][2][0];++Rr);var Xr=he(Dt-mr[Rr][1][0],Ut);return Xr[0]+=he(mr[Rr][1][0],tr*Ut>tr*mr[Rr][0][1]?mr[Rr][0][1]:Ut)[0],Xr}Pe?He.invert=Pe(He):he.invert&&(He.invert=function(Dt,Ut){for(var tr=Je[+(Ut<0)],mr=be[+(Ut<0)],Rr=0,zr=tr.length;RrXr&&(di=zr,zr=Xr,Xr=di),[[mr,zr],[Rr,Xr]]})}),et):be.map(function(Ut){return Ut.map(function(tr){return[[tr[0][0]*P,tr[0][1]*P],[tr[1][0]*P,tr[1][1]*P],[tr[2][0]*P,tr[2][1]*P]]})})},be!=null&&et.lobes(be),et}var cf=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function rh(){return So(xt,cf).scale(160.857)}var Al=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Hc(){return So(Il,Al).scale(152.63)}var Ql=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Ls(){return So(Yt,Ql).scale(169.529)}var mu=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function kc(){return So(Yt,mu).scale(169.529).rotate([20,0])}var Of=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];function Gc(){return So(fa,Of,rt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var vd=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function Bf(){return So(St,vd).scale(152.63).rotate([-20,0])}function ss(he,be){return[3/p*he*H(k*k/3-be*be),be]}ss.invert=function(he,be){return[p/3*he/H(k*k/3-be*be),be]};function ff(){return t.geoProjection(ss).scale(158.837)}function ih(he){function be(Pe,Oe){if(n(n(Oe)-A)2)return null;Pe/=2,Oe/=2;var He=Pe*Pe,et=Oe*Oe,Mt=2*Oe/(1+He+et);return Mt=h((1+Mt)/(1-Mt),1/he),[a(2*Pe,1-He-et)/he,q((Mt-1)/(Mt+1))]},be}function Ul(){var he=.5,be=t.geoProjectionMutator(ih),Pe=be(he);return Pe.spacing=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(124.75)}var Js=k/C;function hc(he,be){return[he*(1+H(o(be)))/2,be/(o(be/2)*o(he/6))]}hc.invert=function(he,be){var Pe=n(he),Oe=n(be),Je=g,He=A;Oeg||n(Li)>g)&&--Je>0);return Je&&[Pe,Oe]};function $s(){return t.geoProjection(ws).scale(139.98)}function hs(he,be){return[x(he)/o(be),b(be)*o(he)]}hs.invert=function(he,be){var Pe=he*he,Oe=be*be,Je=Oe+1,He=Pe+Je,et=he?_*H((He-H(He*He-4*Pe))/Pe):1/H(Je);return[q(he*et),v(be)*V(et)]};function Ms(){return t.geoProjection(hs).scale(144.049).clipAngle(90-.001)}function dc(he){var be=o(he),Pe=b(L+he/2);function Oe(Je,He){var et=He-he,Mt=n(et)=0;)tr=he[Ut],mr=tr[0]+Mt*(zr=mr)-Dt*Rr,Rr=tr[1]+Mt*Rr+Dt*zr;return mr=Mt*(zr=mr)-Dt*Rr,Rr=Mt*Rr+Dt*zr,[mr,Rr]}return Pe.invert=function(Oe,Je){var He=20,et=Oe,Mt=Je;do{for(var Dt=be,Ut=he[Dt],tr=Ut[0],mr=Ut[1],Rr=0,zr=0,Xr;--Dt>=0;)Ut=he[Dt],Rr=tr+et*(Xr=Rr)-Mt*zr,zr=mr+et*zr+Mt*Xr,tr=Ut[0]+et*(Xr=tr)-Mt*mr,mr=Ut[1]+et*mr+Mt*Xr;Rr=tr+et*(Xr=Rr)-Mt*zr,zr=mr+et*zr+Mt*Xr,tr=et*(Xr=tr)-Mt*mr-Oe,mr=et*mr+Mt*Xr-Je;var di=Rr*Rr+zr*zr,Li,Ci;et-=Li=(tr*Rr+mr*zr)/di,Mt-=Ci=(mr*Rr-tr*zr)/di}while(n(Li)+n(Ci)>g*g&&--He>0);if(He){var Qi=H(et*et+Mt*Mt),Mn=2*i(Qi*.5),pa=x(Mn);return[a(et*pa,Qi*o(Mn)),Qi?q(Mt*pa/Qi):0]}},Pe}var wo=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],Od=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],$o=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Ja=[[.9245,0],[0,0],[.01943,0]],Ef=[[.721316,0],[0,0],[-.00881625,-.00617325]];function tc(){return Ml(wo,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function uu(){return Ml(Od,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Mh(){return Ml($o,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function jc(){return Ml(Ja,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function kf(){return Ml(Ef,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Ml(he,be){var Pe=t.geoProjection(ov(he)).rotate(be).clipAngle(90),Oe=t.geoRotation(be),Je=Pe.center;return delete Pe.rotate,Pe.center=function(He){return arguments.length?Je(Oe(He)):Oe.invert(Je())},Pe}var Yh=H(6),Eh=H(7);function nh(he,be){var Pe=q(7*x(be)/(3*Yh));return[Yh*he*(2*o(2*Pe/3)-1)/Eh,9*x(Pe/3)/Eh]}nh.invert=function(he,be){var Pe=3*q(be*Eh/9);return[he*Eh/(Yh*(2*o(2*Pe/3)-1)),q(x(Pe)*3*Yh/7)]};function hf(){return t.geoProjection(nh).scale(164.859)}function kh(he,be){for(var Pe=(1+_)*x(be),Oe=be,Je=0,He;Je<25&&(Oe-=He=(x(Oe/2)+x(Oe)-Pe)/(.5*o(Oe/2)+o(Oe)),!(n(He)E&&--Oe>0);return He=Pe*Pe,et=He*He,Mt=He*et,[he/(.84719-.13063*He+Mt*Mt*(-.04515+.05494*He-.02326*et+.00331*Mt)),Pe]};function df(){return t.geoProjection(Wc).scale(175.295)}function Cu(he,be){return[he*(1+o(be))/2,2*(be-b(be/2))]}Cu.invert=function(he,be){for(var Pe=be/2,Oe=0,Je=1/0;Oe<10&&n(Je)>g;++Oe){var He=o(be/2);be-=Je=(be-b(be/2)-Pe)/(1-.5/(He*He))}return[2*he/(1+o(be)),be]};function Nf(){return t.geoProjection(Cu).scale(152.63)}var Zc=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function ds(){return So(Ge(1/0),Zc).rotate([20,0]).scale(152.63)}function Ch(he,be){var Pe=x(be),Oe=o(be),Je=v(he);if(he===0||n(be)===A)return[0,be];if(be===0)return[he,0];if(n(he)===A)return[he*Oe,A*Pe];var He=k/(2*he)-2*he/k,et=2*be/k,Mt=(1-et*et)/(Pe-et),Dt=He*He,Ut=Mt*Mt,tr=1+Dt/Ut,mr=1+Ut/Dt,Rr=(He*Pe/Mt-He/2)/tr,zr=(Ut*Pe/Dt+Mt/2)/mr,Xr=Rr*Rr+Oe*Oe/tr,di=zr*zr-(Ut*Pe*Pe/Dt+Mt*Pe-1)/mr;return[A*(Rr+H(Xr)*Je),A*(zr+H(di<0?0:di)*v(-be*He)*Je)]}Ch.invert=function(he,be){he/=A,be/=A;var Pe=he*he,Oe=be*be,Je=Pe+Oe,He=k*k;return[he?(Je-1+H((1-Je)*(1-Je)+4*Pe))/(2*he)*A:0,qt(function(et){return Je*(k*x(et)-2*et)*k+4*et*et*(be-x(et))+2*k*et-He*be},0)]};function Bd(){return t.geoProjection(Ch).scale(127.267)}var Jh=1.0148,Cf=.23185,pd=-.14499,Lu=.02406,$h=Jh,eu=5*Cf,Pu=7*pd,Lc=9*Lu,fl=1.790857183;function Xc(he,be){var Pe=be*be;return[he,be*(Jh+Pe*Pe*(Cf+Pe*(pd+Lu*Pe)))]}Xc.invert=function(he,be){be>fl?be=fl:be<-fl&&(be=-fl);var Pe=be,Oe;do{var Je=Pe*Pe;Pe-=Oe=(Pe*(Jh+Je*Je*(Cf+Je*(pd+Lu*Je)))-be)/($h+Je*Je*(eu+Je*(Pu+Lc*Je)))}while(n(Oe)>g);return[he,Pe]};function ic(){return t.geoProjection(Xc).scale(139.319)}function yu(he,be){if(n(be)g&&--Je>0);return et=b(Oe),[(n(be)=0;)if(Oe=be[Mt],Pe[0]===Oe[0]&&Pe[1]===Oe[1]){if(He)return[He,Pe];He=Pe}}}function tu(he){for(var be=he.length,Pe=[],Oe=he[be-1],Je=0;Je0?[-Oe[0],0]:[180-Oe[0],180])};var be=sh.map(function(Pe){return{face:Pe,project:he(Pe)}});return[-1,0,0,1,0,1,4,5].forEach(function(Pe,Oe){var Je=be[Pe];Je&&(Je.children||(Je.children=[])).push(be[Oe])}),Lf(be[0],function(Pe,Oe){return be[Pe<-k/2?Oe<0?6:4:Pe<0?Oe<0?2:0:PeOe^zr>Oe&&Pe<(Rr-Ut)*(Oe-tr)/(zr-tr)+Ut&&(Je=!Je)}return Je}function Rl(he,be){var Pe=be.stream,Oe;if(!Pe)throw new Error("invalid projection");switch(he&&he.type){case"Feature":Oe=Wu;break;case"FeatureCollection":Oe=Ih;break;default:Oe=gc;break}return Oe(he,Pe)}function Ih(he,be){return{type:"FeatureCollection",features:he.features.map(function(Pe){return Wu(Pe,be)})}}function Wu(he,be){return{type:"Feature",id:he.id,properties:he.properties,geometry:gc(he.geometry,be)}}function Rc(he,be){return{type:"GeometryCollection",geometries:he.geometries.map(function(Pe){return gc(Pe,be)})}}function gc(he,be){if(!he)return null;if(he.type==="GeometryCollection")return Rc(he,be);var Pe;switch(he.type){case"Point":Pe=mc;break;case"MultiPoint":Pe=mc;break;case"LineString":Pe=Yc;break;case"MultiLineString":Pe=Yc;break;case"Polygon":Pe=nc;break;case"MultiPolygon":Pe=nc;break;case"Sphere":Pe=nc;break;default:return null}return t.geoStream(he,be(Pe)),Pe.result()}var hl=[],ru=[],mc={point:function(he,be){hl.push([he,be])},result:function(){var he=hl.length?hl.length<2?{type:"Point",coordinates:hl[0]}:{type:"MultiPoint",coordinates:hl}:null;return hl=[],he}},Yc={lineStart:pc,point:function(he,be){hl.push([he,be])},lineEnd:function(){hl.length&&(ru.push(hl),hl=[])},result:function(){var he=ru.length?ru.length<2?{type:"LineString",coordinates:ru[0]}:{type:"MultiLineString",coordinates:ru}:null;return ru=[],he}},nc={polygonStart:pc,lineStart:pc,point:function(he,be){hl.push([he,be])},lineEnd:function(){var he=hl.length;if(he){do hl.push(hl[0].slice());while(++he<4);ru.push(hl),hl=[]}},polygonEnd:pc,result:function(){if(!ru.length)return null;var he=[],be=[];return ru.forEach(function(Pe){pf(Pe)?he.push([Pe]):be.push(Pe)}),be.forEach(function(Pe){var Oe=Pe[0];he.some(function(Je){if(Ph(Je[0],Oe))return Je.push(Pe),!0})||he.push([Pe])}),ru=[],he.length?he.length>1?{type:"MultiPolygon",coordinates:he}:{type:"Polygon",coordinates:he[0]}:null}};function gf(he){var be=he(A,0)[0]-he(-A,0)[0];function Pe(Oe,Je){var He=n(Oe)0?Oe-k:Oe+k,Je),Mt=(et[0]-et[1])*_,Dt=(et[0]+et[1])*_;if(He)return[Mt,Dt];var Ut=be*_,tr=Mt>0^Dt>0?-1:1;return[tr*Mt-v(Dt)*Ut,tr*Dt-v(Mt)*Ut]}return he.invert&&(Pe.invert=function(Oe,Je){var He=(Oe+Je)*_,et=(Je-Oe)*_,Mt=n(He)<.5*be&&n(et)<.5*be;if(!Mt){var Dt=be*_,Ut=He>0^et>0?-1:1,tr=-Ut*Oe+(et>0?1:-1)*Dt,mr=-Ut*Je+(He>0?1:-1)*Dt;He=(-tr-mr)*_,et=(tr-mr)*_}var Rr=he.invert(He,et);return Mt||(Rr[0]+=He>0?k:-k),Rr}),t.geoProjection(Pe).rotate([-90,-90,45]).clipAngle(180-.001)}function gt(){return gf(hi).scale(176.423)}function Bt(){return gf(Mo).scale(111.48)}function wr(he,be){if(!(0<=(be=+be)&&be<=20))throw new Error("invalid digits");function Pe(Ut){var tr=Ut.length,mr=2,Rr=new Array(tr);for(Rr[0]=+Ut[0].toFixed(be),Rr[1]=+Ut[1].toFixed(be);mr2||zr[0]!=tr[0]||zr[1]!=tr[1])&&(mr.push(zr),tr=zr)}return mr.length===1&&Ut.length>1&&mr.push(Pe(Ut[Ut.length-1])),mr}function He(Ut){return Ut.map(Je)}function et(Ut){if(Ut==null)return Ut;var tr;switch(Ut.type){case"GeometryCollection":tr={type:"GeometryCollection",geometries:Ut.geometries.map(et)};break;case"Point":tr={type:"Point",coordinates:Pe(Ut.coordinates)};break;case"MultiPoint":tr={type:Ut.type,coordinates:Oe(Ut.coordinates)};break;case"LineString":tr={type:Ut.type,coordinates:Je(Ut.coordinates)};break;case"MultiLineString":case"Polygon":tr={type:Ut.type,coordinates:He(Ut.coordinates)};break;case"MultiPolygon":tr={type:"MultiPolygon",coordinates:Ut.coordinates.map(He)};break;default:return Ut}return Ut.bbox!=null&&(tr.bbox=Ut.bbox),tr}function Mt(Ut){var tr={type:"Feature",properties:Ut.properties,geometry:et(Ut.geometry)};return Ut.id!=null&&(tr.id=Ut.id),Ut.bbox!=null&&(tr.bbox=Ut.bbox),tr}if(he!=null)switch(he.type){case"Feature":return Mt(he);case"FeatureCollection":{var Dt={type:"FeatureCollection",features:he.features.map(Mt)};return he.bbox!=null&&(Dt.bbox=he.bbox),Dt}default:return et(he)}return he}function vr(he){var be=x(he);function Pe(Oe,Je){var He=be?b(Oe*be/2)/be:Oe/2;if(!Je)return[2*He,-he];var et=2*i(He*x(Je)),Mt=1/b(Je);return[x(et)*Mt,Je+(1-o(et))*Mt-he]}return Pe.invert=function(Oe,Je){if(n(Je+=he)g&&--Mt>0);var Rr=Oe*(Ut=b(et)),zr=b(n(Je)0?A:-A)*(Dt+Je*(tr-et)/2+Je*Je*(tr-2*Dt+et)/2)]}xi.invert=function(he,be){var Pe=be/A,Oe=Pe*90,Je=f(18,n(Oe/5)),He=c(0,l(Je));do{var et=fi[He][1],Mt=fi[He+1][1],Dt=fi[f(19,He+2)][1],Ut=Dt-et,tr=Dt-2*Mt+et,mr=2*(n(Pe)-Mt)/Ut,Rr=tr/Ut,zr=mr*(1-Rr*mr*(1-2*Rr*mr));if(zr>=0||He===1){Oe=(be>=0?5:-5)*(zr+Je);var Xr=50,di;do Je=f(18,n(Oe)/5),He=l(Je),zr=Je-He,et=fi[He][1],Mt=fi[He+1][1],Dt=fi[f(19,He+2)][1],Oe-=(di=(be>=0?A:-A)*(Mt+zr*(Dt-et)/2+zr*zr*(Dt-2*Mt+et)/2)-be)*P;while(n(di)>E&&--Xr>0);break}}while(--He>=0);var Li=fi[He][0],Ci=fi[He+1][0],Qi=fi[f(19,He+2)][0];return[he/(Ci+zr*(Qi-Li)/2+zr*zr*(Qi-2*Ci+Li)/2),Oe*T]};function Fi(){return t.geoProjection(xi).scale(152.63)}function Xi(he){function be(Pe,Oe){var Je=o(Oe),He=(he-1)/(he-Je*o(Pe));return[He*Je*x(Pe),He*x(Oe)]}return be.invert=function(Pe,Oe){var Je=Pe*Pe+Oe*Oe,He=H(Je),et=(he-H(1-Je*(he+1)/(he-1)))/((he-1)/He+He/(he-1));return[a(Pe*et,He*H(1-et*et)),He?q(Oe*et/He):0]},be}function hn(he,be){var Pe=Xi(he);if(!be)return Pe;var Oe=o(be),Je=x(be);function He(et,Mt){var Dt=Pe(et,Mt),Ut=Dt[1],tr=Ut*Je/(he-1)+Oe;return[Dt[0]*Oe/tr,Ut/tr]}return He.invert=function(et,Mt){var Dt=(he-1)/(he-1-Mt*Je);return Pe.invert(Dt*et,Dt*Mt*Oe)},He}function Ti(){var he=2,be=0,Pe=t.geoProjectionMutator(hn),Oe=Pe(he,be);return Oe.distance=function(Je){return arguments.length?Pe(he=+Je,be):he},Oe.tilt=function(Je){return arguments.length?Pe(he,be=Je*T):be*P},Oe.scale(432.147).clipAngle(V(1/he)*P-1e-6)}var qi=1e-4,Ii=1e4,mi=-180,Pn=mi+qi,Ma=180,Ta=Ma-qi,Ea=-90,qa=Ea+qi,Cn=90,sn=Cn-qi;function Ua(he){return he.length>0}function mo(he){return Math.floor(he*Ii)/Ii}function Xo(he){return he===Ea||he===Cn?[0,he]:[mi,mo(he)]}function Ts(he){var be=he[0],Pe=he[1],Oe=!1;return be<=Pn?(be=mi,Oe=!0):be>=Ta&&(be=Ma,Oe=!0),Pe<=qa?(Pe=Ea,Oe=!0):Pe>=sn&&(Pe=Cn,Oe=!0),Oe?[be,Pe]:he}function Qo(he){return he.map(Ts)}function ys(he,be,Pe){for(var Oe=0,Je=he.length;Oe=Ta||tr<=qa||tr>=sn){He[et]=Ts(Dt);for(var mr=et+1;mrPn&&zrqa&&Xr=Mt)break;Pe.push({index:-1,polygon:be,ring:He=He.slice(mr-1)}),He[0]=Xo(He[0][1]),et=-1,Mt=He.length}}}}function Bo(he){var be,Pe=he.length,Oe={},Je={},He,et,Mt,Dt,Ut;for(be=0;be0?k-Mt:Mt)*P],Ut=t.geoProjection(he(et)).rotate(Dt),tr=t.geoRotation(Dt),mr=Ut.center;return delete Ut.rotate,Ut.center=function(Rr){return arguments.length?mr(tr(Rr)):tr.invert(mr())},Ut.clipAngle(90)}function Ko(he){var be=o(he);function Pe(Oe,Je){var He=t.geoGnomonicRaw(Oe,Je);return He[0]*=be,He}return Pe.invert=function(Oe,Je){return t.geoGnomonicRaw.invert(Oe/be,Je)},Pe}function iu(){return Ru([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function Ru(he,be){return vs(Ko,he,be)}function ac(he){if(!(he*=2))return t.geoAzimuthalEquidistantRaw;var be=-he/2,Pe=-be,Oe=he*he,Je=b(Pe),He=.5/x(Pe);function et(Mt,Dt){var Ut=V(o(Dt)*o(Mt-be)),tr=V(o(Dt)*o(Mt-Pe)),mr=Dt<0?-1:1;return Ut*=Ut,tr*=tr,[(Ut-tr)/(2*he),mr*H(4*Oe*tr-(Oe-Ut+tr)*(Oe-Ut+tr))/(2*he)]}return et.invert=function(Mt,Dt){var Ut=Dt*Dt,tr=o(H(Ut+(Rr=Mt+be)*Rr)),mr=o(H(Ut+(Rr=Mt+Pe)*Rr)),Rr,zr;return[a(zr=tr-mr,Rr=(tr+mr)*Je),(Dt<0?-1:1)*V(H(Rr*Rr+zr*zr)*He)]},et}function mf(){return bu([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function bu(he,be){return vs(ac,he,be)}function Kc(he,be){if(n(be)g&&--Mt>0);return[v(he)*(H(Je*Je+4)+Je)*k/4,A*et]};function _c(){return t.geoProjection(yc).scale(127.16)}function le(he,be,Pe,Oe,Je){function He(et,Mt){var Dt=Pe*x(Oe*Mt),Ut=H(1-Dt*Dt),tr=H(2/(1+Ut*o(et*=Je)));return[he*Ut*tr*x(et),be*Dt*tr]}return He.invert=function(et,Mt){var Dt=et/he,Ut=Mt/be,tr=H(Dt*Dt+Ut*Ut),mr=2*q(tr/2);return[a(et*b(mr),he*tr)/Je,tr&&q(Mt*x(mr)/(be*Pe*tr))/Oe]},He}function w(he,be,Pe,Oe){var Je=k/3;he=c(he,g),be=c(be,g),he=f(he,A),be=f(be,k-g),Pe=c(Pe,0),Pe=f(Pe,100-g),Oe=c(Oe,g);var He=Pe/100+1,et=Oe/100,Mt=V(He*o(Je))/Je,Dt=x(he)/x(Mt*A),Ut=be/k,tr=H(et*x(he/2)/x(be/2)),mr=tr/H(Ut*Dt*Mt),Rr=1/(tr*H(Ut*Dt*Mt));return le(mr,Rr,Dt,Mt,Ut)}function B(){var he=65*T,be=60*T,Pe=20,Oe=200,Je=t.geoProjectionMutator(w),He=Je(he,be,Pe,Oe);return He.poleline=function(et){return arguments.length?Je(he=+et*T,be,Pe,Oe):he*P},He.parallels=function(et){return arguments.length?Je(he,be=+et*T,Pe,Oe):be*P},He.inflation=function(et){return arguments.length?Je(he,be,Pe=+et,Oe):Pe},He.ratio=function(et){return arguments.length?Je(he,be,Pe,Oe=+et):Oe},He.scale(163.775)}function Q(){return B().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)}var ee=4*k+3*H(3),se=2*H(2*k*H(3)/ee),qe=Ct(se*H(3)/k,se,ee/6);function je(){return t.geoProjection(qe).scale(176.84)}function it(he,be){return[he*H(1-3*be*be/(k*k)),be]}it.invert=function(he,be){return[he/H(1-3*be*be/(k*k)),be]};function yt(){return t.geoProjection(it).scale(152.63)}function Ot(he,be){var Pe=o(be),Oe=o(he)*Pe,Je=1-Oe,He=o(he=a(x(he)*Pe,-x(be))),et=x(he);return Pe=H(1-Oe*Oe),[et*Pe-He*Je,-He*Pe-et*Je]}Ot.invert=function(he,be){var Pe=(he*he+be*be)/-2,Oe=H(-Pe*(2+Pe)),Je=be*Pe+he*Oe,He=he*Pe-be*Oe,et=H(He*He+Je*Je);return[a(Oe*Je,et*(1+Pe)),et?-q(Oe*He/et):0]};function Nt(){return t.geoProjection(Ot).rotate([0,-90,45]).scale(124.75).clipAngle(180-.001)}function hr(he,be){var Pe=Me(he,be);return[(Pe[0]+he/A)/2,(Pe[1]+be)/2]}hr.invert=function(he,be){var Pe=he,Oe=be,Je=25;do{var He=o(Oe),et=x(Oe),Mt=x(2*Oe),Dt=et*et,Ut=He*He,tr=x(Pe),mr=o(Pe/2),Rr=x(Pe/2),zr=Rr*Rr,Xr=1-Ut*mr*mr,di=Xr?V(He*mr)*H(Li=1/Xr):Li=0,Li,Ci=.5*(2*di*He*Rr+Pe/A)-he,Qi=.5*(di*et+Oe)-be,Mn=.5*Li*(Ut*zr+di*He*mr*Dt)+.5/A,pa=Li*(tr*Mt/4-di*et*Rr),ea=.125*Li*(Mt*Rr-di*et*Ut*tr),Ga=.5*Li*(Dt*mr+di*zr*He)+.5,To=pa*ea-Ga*Mn,Wa=(Qi*pa-Ci*Ga)/To,co=(Ci*ea-Qi*Mn)/To;Pe-=Wa,Oe-=co}while((n(Wa)>g||n(co)>g)&&--Je>0);return[Pe,Oe]};function Sr(){return t.geoProjection(hr).scale(158.837)}e.geoNaturalEarth=t.geoNaturalEarth1,e.geoNaturalEarthRaw=t.geoNaturalEarth1Raw,e.geoAiry=_e,e.geoAiryRaw=ae,e.geoAitoff=ke,e.geoAitoffRaw=Me,e.geoArmadillo=ie,e.geoArmadilloRaw=ge,e.geoAugust=Ee,e.geoAugustRaw=Te,e.geoBaker=me,e.geoBakerRaw=Ce,e.geoBerghaus=ce,e.geoBerghausRaw=Re,e.geoBertin1953=Rt,e.geoBertin1953Raw=ot,e.geoBoggs=bt,e.geoBoggsRaw=xt,e.geoBonne=Ht,e.geoBonneRaw=dt,e.geoBottomley=fr,e.geoBottomleyRaw=$t,e.geoBromley=Br,e.geoBromleyRaw=_r,e.geoChamberlin=Xe,e.geoChamberlinRaw=Ne,e.geoChamberlinAfrica=Ve,e.geoCollignon=Le,e.geoCollignonRaw=ht,e.geoCraig=Se,e.geoCraigRaw=xe,e.geoCraster=Vt,e.geoCrasterRaw=Gt,e.geoCylindricalEqualArea=Qr,e.geoCylindricalEqualAreaRaw=ar,e.geoCylindricalStereographic=jr,e.geoCylindricalStereographicRaw=ai,e.geoEckert1=bi,e.geoEckert1Raw=ri,e.geoEckert2=Wi,e.geoEckert2Raw=nn,e.geoEckert3=_n,e.geoEckert3Raw=Ni,e.geoEckert4=zn,e.geoEckert4Raw=$i,e.geoEckert5=It,e.geoEckert5Raw=Wn,e.geoEckert6=jt,e.geoEckert6Raw=ft,e.geoEisenlohr=Fr,e.geoEisenlohrRaw=yr,e.geoFahey=gi,e.geoFaheyRaw=Vr,e.geoFoucaut=Mi,e.geoFoucautRaw=Si,e.geoFoucautSinusoidal=Gi,e.geoFoucautSinusoidalRaw=Pi,e.geoGilbert=jn,e.geoGingery=jo,e.geoGingeryRaw=la,e.geoGinzburg4=Ha,e.geoGinzburg4Raw=Sn,e.geoGinzburg5=xn,e.geoGinzburg5Raw=oo,e.geoGinzburg6=br,e.geoGinzburg6Raw=_t,e.geoGinzburg8=ti,e.geoGinzburg8Raw=Hr,e.geoGinzburg9=Yi,e.geoGinzburg9Raw=zi,e.geoGringorten=Fn,e.geoGringortenRaw=hi,e.geoGuyou=ks,e.geoGuyouRaw=Mo,e.geoHammer=ct,e.geoHammerRaw=Ge,e.geoHammerRetroazimuthal=wl,e.geoHammerRetroazimuthalRaw=Zs,e.geoHealpix=$l,e.geoHealpixRaw=ml,e.geoHill=fc,e.geoHillRaw=Hu,e.geoHomolosine=vo,e.geoHomolosineRaw=Il,e.geoHufnagel=Ks,e.geoHufnagelRaw=Wl,e.geoHyperelliptical=ko,e.geoHyperellipticalRaw=Zn,e.geoInterrupt=So,e.geoInterruptedBoggs=rh,e.geoInterruptedHomolosine=Hc,e.geoInterruptedMollweide=Ls,e.geoInterruptedMollweideHemispheres=kc,e.geoInterruptedSinuMollweide=Gc,e.geoInterruptedSinusoidal=Bf,e.geoKavrayskiy7=ff,e.geoKavrayskiy7Raw=ss,e.geoLagrange=Ul,e.geoLagrangeRaw=ih,e.geoLarrivee=Cc,e.geoLarriveeRaw=hc,e.geoLaskowski=$s,e.geoLaskowskiRaw=ws,e.geoLittrow=Ms,e.geoLittrowRaw=hs,e.geoLoximuthal=Sl,e.geoLoximuthalRaw=dc,e.geoMiller=Ps,e.geoMillerRaw=ec,e.geoModifiedStereographic=Ml,e.geoModifiedStereographicRaw=ov,e.geoModifiedStereographicAlaska=tc,e.geoModifiedStereographicGs48=uu,e.geoModifiedStereographicGs50=Mh,e.geoModifiedStereographicMiller=jc,e.geoModifiedStereographicLee=kf,e.geoMollweide=xr,e.geoMollweideRaw=Yt,e.geoMtFlatPolarParabolic=hf,e.geoMtFlatPolarParabolicRaw=nh,e.geoMtFlatPolarQuartic=Kh,e.geoMtFlatPolarQuarticRaw=kh,e.geoMtFlatPolarSinusoidal=ah,e.geoMtFlatPolarSinusoidalRaw=rc,e.geoNaturalEarth2=df,e.geoNaturalEarth2Raw=Wc,e.geoNellHammer=Nf,e.geoNellHammerRaw=Cu,e.geoInterruptedQuarticAuthalic=ds,e.geoNicolosi=Bd,e.geoNicolosiRaw=Ch,e.geoPatterson=ic,e.geoPattersonRaw=Xc,e.geoPolyconic=Qs,e.geoPolyconicRaw=yu,e.geoPolyhedral=Lf,e.geoPolyhedralButterfly=Fs,e.geoPolyhedralCollignon=Lh,e.geoPolyhedralWaterman=Is,e.geoProject=Rl,e.geoGringortenQuincuncial=gt,e.geoPeirceQuincuncial=Bt,e.geoPierceQuincuncial=Bt,e.geoQuantize=wr,e.geoQuincuncial=gf,e.geoRectangularPolyconic=Ur,e.geoRectangularPolyconicRaw=vr,e.geoRobinson=Fi,e.geoRobinsonRaw=xi,e.geoSatellite=Ti,e.geoSatelliteRaw=hn,e.geoSinuMollweide=Qu,e.geoSinuMollweideRaw=fa,e.geoSinusoidal=Et,e.geoSinusoidalRaw=St,e.geoStitch=Rs,e.geoTimes=Ka,e.geoTimesRaw=ia,e.geoTwoPointAzimuthal=Ru,e.geoTwoPointAzimuthalRaw=Ko,e.geoTwoPointAzimuthalUsa=iu,e.geoTwoPointEquidistant=bu,e.geoTwoPointEquidistantRaw=ac,e.geoTwoPointEquidistantUsa=mf,e.geoVanDerGrinten=Du,e.geoVanDerGrintenRaw=Kc,e.geoVanDerGrinten2=Da,e.geoVanDerGrinten2Raw=Dc,e.geoVanDerGrinten3=Jc,e.geoVanDerGrinten3Raw=eo,e.geoVanDerGrinten4=_c,e.geoVanDerGrinten4Raw=yc,e.geoWagner=B,e.geoWagner7=Q,e.geoWagnerRaw=w,e.geoWagner4=je,e.geoWagner4Raw=qe,e.geoWagner6=yt,e.geoWagner6Raw=it,e.geoWiechel=Nt,e.geoWiechelRaw=Ot,e.geoWinkel3=Sr,e.geoWinkel3Raw=hr,Object.defineProperty(e,"__esModule",{value:!0})})});var SRe=ye((Epr,ARe)=>{"use strict";var Zh=xa(),bX=Mr(),bDt=ba(),X5=Math.PI/180,G2=180/Math.PI,TX={cursor:"pointer"},AX={cursor:"auto"};function wDt(e,t){var r=e.projection,n;return t._isScoped?n=TDt:t._isClipped?n=SDt:n=ADt,n(e,r)}ARe.exports=wDt;function SX(e,t){return Zh.behavior.zoom().translate(t.translate()).scale(t.scale())}function MX(e,t,r){var n=e.id,i=e.graphDiv,a=i.layout,o=a[n],s=i._fullLayout,l=s[n],u={},c={};function f(h,d){u[n+"."+h]=bX.nestedProperty(o,h).get(),bDt.call("_storeDirectGUIEdit",a,s._preGUI,u);var v=bX.nestedProperty(l,h);v.get()!==d&&(v.set(d),bX.nestedProperty(o,h).set(d),c[n+"."+h]=d)}r(f),f("projection.scale",t.scale()/e.fitScale),f("fitbounds",!1),i.emit("plotly_relayout",c)}function TDt(e,t){var r=SX(e,t);function n(){Zh.select(this).style(TX)}function i(){t.scale(Zh.event.scale).translate(Zh.event.translate),e.render(!0);var s=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":s[0],"geo.center.lat":s[1]})}function a(s){var l=t.invert(e.midPt);s("center.lon",l[0]),s("center.lat",l[1])}function o(){Zh.select(this).style(AX),MX(e,t,a)}return r.on("zoomstart",n).on("zoom",i).on("zoomend",o),r}function ADt(e,t){var r=SX(e,t),n=2,i,a,o,s,l,u,c,f,h;function d(k){return t.invert(k)}function v(k){var A=d(k);if(!A)return!0;var L=t(A);return Math.abs(L[0]-k[0])>n||Math.abs(L[1]-k[1])>n}function x(){Zh.select(this).style(TX),i=Zh.mouse(this),a=t.rotate(),o=t.translate(),s=a,l=d(i)}function b(){if(u=Zh.mouse(this),v(i)){r.scale(t.scale()),r.translate(t.translate());return}t.scale(Zh.event.scale),t.translate([o[0],Zh.event.translate[1]]),l?d(u)&&(f=d(u),c=[s[0]+(f[0]-l[0]),a[1],a[2]],t.rotate(c),s=c):(i=u,l=d(i)),h=!0,e.render(!0);var k=t.rotate(),A=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":A[0],"geo.center.lat":A[1],"geo.projection.rotation.lon":-k[0]})}function g(){Zh.select(this).style(AX),h&&MX(e,t,E)}function E(k){var A=t.rotate(),L=t.invert(e.midPt);k("projection.rotation.lon",-A[0]),k("center.lon",L[0]),k("center.lat",L[1])}return r.on("zoomstart",x).on("zoom",b).on("zoomend",g),r}function SDt(e,t){var r={r:t.rotate(),k:t.scale()},n=SX(e,t),i=RDt(n,"zoomstart","zoom","zoomend"),a=0,o=n.on,s;n.on("zoomstart",function(){Zh.select(this).style(TX);var h=Zh.mouse(this),d=t.rotate(),v=d,x=t.translate(),b=MDt(d);s=Sz(t,h),o.call(n,"zoom",function(){var g=Zh.mouse(this);if(t.scale(r.k=Zh.event.scale),!s)h=g,s=Sz(t,h);else if(Sz(t,g)){t.rotate(d).translate(x);var E=Sz(t,g),k=kDt(s,E),A=LDt(EDt(b,k)),L=r.r=CDt(A,s,v);(!isFinite(L[0])||!isFinite(L[1])||!isFinite(L[2]))&&(L=v),t.rotate(L),v=L}u(i.of(this,arguments))}),l(i.of(this,arguments))}).on("zoomend",function(){Zh.select(this).style(AX),o.call(n,"zoom",null),c(i.of(this,arguments)),MX(e,t,f)}).on("zoom.redraw",function(){e.render(!0);var h=t.rotate();e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.projection.rotation.lon":-h[0],"geo.projection.rotation.lat":-h[1]})});function l(h){a++||h({type:"zoomstart"})}function u(h){h({type:"zoom"})}function c(h){--a||h({type:"zoomend"})}function f(h){var d=t.rotate();h("projection.rotation.lon",-d[0]),h("projection.rotation.lat",-d[1])}return Zh.rebind(n,i,"on")}function Sz(e,t){var r=e.invert(t);return r&&isFinite(r[0])&&isFinite(r[1])&&PDt(r)}function MDt(e){var t=.5*e[0]*X5,r=.5*e[1]*X5,n=.5*e[2]*X5,i=Math.sin(t),a=Math.cos(t),o=Math.sin(r),s=Math.cos(r),l=Math.sin(n),u=Math.cos(n);return[a*s*u+i*o*l,i*s*u-a*o*l,a*o*u+i*s*l,a*s*l-i*o*u]}function EDt(e,t){var r=e[0],n=e[1],i=e[2],a=e[3],o=t[0],s=t[1],l=t[2],u=t[3];return[r*o-n*s-i*l-a*u,r*s+n*o+i*u-a*l,r*l-n*u+i*o+a*s,r*u+n*l-i*s+a*o]}function kDt(e,t){if(!(!e||!t)){var r=IDt(e,t),n=Math.sqrt(TRe(r,r)),i=.5*Math.acos(Math.max(-1,Math.min(1,TRe(e,t)))),a=Math.sin(i)/n;return n&&[Math.cos(i),r[2]*a,-r[1]*a,r[0]*a]}}function CDt(e,t,r){var n=wX(t,2,e[0]);n=wX(n,1,e[1]),n=wX(n,0,e[2]-r[2]);var i=t[0],a=t[1],o=t[2],s=n[0],l=n[1],u=n[2],c=Math.atan2(a,i)*G2,f=Math.sqrt(i*i+a*a),h,d;Math.abs(l)>f?(d=(l>0?90:-90)-c,h=0):(d=Math.asin(l/f)*G2-c,h=Math.sqrt(f*f-l*l));var v=180-d-2*c,x=(Math.atan2(u,s)-Math.atan2(o,h))*G2,b=(Math.atan2(u,s)-Math.atan2(o,-h))*G2,g=bRe(r[0],r[1],d,x),E=bRe(r[0],r[1],v,b);return g<=E?[d,x,r[2]]:[v,b,r[2]]}function bRe(e,t,r,n){var i=wRe(r-e),a=wRe(n-t);return Math.sqrt(i*i+a*a)}function wRe(e){return(e%360+540)%360-180}function wX(e,t,r){var n=r*X5,i=e.slice(),a=t===0?1:0,o=t===2?1:2,s=Math.cos(n),l=Math.sin(n);return i[a]=e[a]*s-e[o]*l,i[o]=e[o]*s+e[a]*l,i}function LDt(e){return[Math.atan2(2*(e[0]*e[1]+e[2]*e[3]),1-2*(e[1]*e[1]+e[2]*e[2]))*G2,Math.asin(Math.max(-1,Math.min(1,2*(e[0]*e[2]-e[3]*e[1]))))*G2,Math.atan2(2*(e[0]*e[3]+e[1]*e[2]),1-2*(e[2]*e[2]+e[3]*e[3]))*G2]}function PDt(e){var t=e[0]*X5,r=e[1]*X5,n=Math.cos(r);return[n*Math.cos(t),n*Math.sin(t),Math.sin(r)]}function TRe(e,t){for(var r=0,n=0,i=e.length;n{"use strict";var t1=xa(),CX=xX(),DDt=CX.geoPath,zDt=CX.geoDistance,FDt=xRe(),qDt=ba(),QE=Mr(),ODt=QE.strTranslate,Mz=va(),$E=ao(),MRe=Nc(),BDt=Xu(),kX=Qa(),ERe=wg().getAutoRange,EX=gv(),NDt=wf().prepSelect,UDt=wf().clearOutline,VDt=wf().selectOnClick,HDt=SRe(),fp=XE(),GDt=ix(),CRe=cz(),jDt=aX().feature;function LRe(e){this.id=e.id,this.graphDiv=e.graphDiv,this.container=e.container,this.topojsonURL=e.topojsonURL,this.isStatic=e.staticPlot,this.topojsonName=null,this.topojson=null,this.projection=null,this.scope=null,this.viewInitial=null,this.fitScale=null,this.bounds=null,this.midPt=null,this.hasChoropleth=!1,this.traceHash={},this.layers={},this.basePaths={},this.dataPaths={},this.dataPoints={},this.clipDef=null,this.clipRect=null,this.bgRect=null,this.makeFramework()}var $g=LRe.prototype;PRe.exports=function(t){return new LRe(t)};$g.plot=function(e,t,r,n){var i=this;if(n)return i.update(e,t,!0);i._geoCalcData=e,i._fullLayout=t;var a=t[this.id],o=[],s=!1;for(var l in fp.layerNameToAdjective)if(l!=="frame"&&a["show"+l]){s=!0;break}for(var u=!1,c=0;c0&&o._module.calcGeoJSON(a,t)}if(!r){var s=this.updateProjection(e,t);if(s)return;(!this.viewInitial||this.scope!==n.scope)&&this.saveViewInitial(n)}this.scope=n.scope,this.updateBaseLayers(t,n),this.updateDims(t,n),this.updateFx(t,n),BDt.generalUpdatePerTraceModule(this.graphDiv,this,e,n);var l=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=l.selectAll(".point"),this.dataPoints.text=l.selectAll("text"),this.dataPaths.line=l.selectAll(".js-line");var u=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=u.selectAll("path"),this._render()};$g.updateProjection=function(e,t){var r=this.graphDiv,n=t[this.id],i=t._size,a=n.domain,o=n.projection,s=n.lonaxis,l=n.lataxis,u=s._ax,c=l._ax,f=this.projection=WDt(n),h=[[i.l+i.w*a.x[0],i.t+i.h*(1-a.y[1])],[i.l+i.w*a.x[1],i.t+i.h*(1-a.y[0])]],d=n.center||{},v=o.rotation||{},x=s.range||[],b=l.range||[];if(n.fitbounds){u._length=h[1][0]-h[0][0],c._length=h[1][1]-h[0][1],u.range=ERe(r,u),c.range=ERe(r,c);var g=(u.range[0]+u.range[1])/2,E=(c.range[0]+c.range[1])/2;if(n._isScoped)d={lon:g,lat:E};else if(n._isClipped){d={lon:g,lat:E},v={lon:g,lat:E,roll:v.roll};var k=o.type,A=fp.lonaxisSpan[k]/2||180,L=fp.lataxisSpan[k]/2||90;x=[g-A,g+A],b=[E-L,E+L]}else d={lon:g,lat:E},v={lon:g,lat:v.lat,roll:v.roll}}f.center([d.lon-v.lon,d.lat-v.lat]).rotate([-v.lon,-v.lat,v.roll]).parallels(o.parallels);var _=kRe(x,b);f.fitExtent(h,_);var C=this.bounds=f.getBounds(_),M=this.fitScale=f.scale(),p=f.translate();if(n.fitbounds){var P=f.getBounds(kRe(u.range,c.range)),T=Math.min((C[1][0]-C[0][0])/(P[1][0]-P[0][0]),(C[1][1]-C[0][1])/(P[1][1]-P[0][1]));isFinite(T)?f.scale(T*M):QE.warn("Something went wrong during"+this.id+"fitbounds computations.")}else f.scale(o.scale*M);var F=this.midPt=[(C[0][0]+C[1][0])/2,(C[0][1]+C[1][1])/2];if(f.translate([p[0]+(F[0]-p[0]),p[1]+(F[1]-p[1])]).clipExtent(C),n._isAlbersUsa){var q=f([d.lon,d.lat]),V=f.translate();f.translate([V[0]-(q[0]-V[0]),V[1]-(q[1]-V[1])])}};$g.updateBaseLayers=function(e,t){var r=this,n=r.topojson,i=r.layers,a=r.basePaths;function o(h){return h==="lonaxis"||h==="lataxis"}function s(h){return!!fp.lineLayers[h]}function l(h){return!!fp.fillLayers[h]}var u=this.hasChoropleth?fp.layersForChoropleth:fp.layers,c=u.filter(function(h){return s(h)||l(h)?t["show"+h]:o(h)?t[h].showgrid:!0}),f=r.framework.selectAll(".layer").data(c,String);f.exit().each(function(h){delete i[h],delete a[h],t1.select(this).remove()}),f.enter().append("g").attr("class",function(h){return"layer "+h}).each(function(h){var d=i[h]=t1.select(this);h==="bg"?r.bgRect=d.append("rect").style("pointer-events","all"):o(h)?a[h]=d.append("path").style("fill","none"):h==="backplot"?d.append("g").classed("choroplethlayer",!0):h==="frontplot"?d.append("g").classed("scatterlayer",!0):s(h)?a[h]=d.append("path").style("fill","none").style("stroke-miterlimit",2):l(h)&&(a[h]=d.append("path").style("stroke","none"))}),f.order(),f.each(function(h){var d=a[h],v=fp.layerNameToAdjective[h];h==="frame"?d.datum(fp.sphereSVG):s(h)||l(h)?d.datum(jDt(n,n.objects[h])):o(h)&&d.datum(ZDt(h,t,e)).call(Mz.stroke,t[h].gridcolor).call($E.dashLine,t[h].griddash,t[h].gridwidth),s(h)?d.call(Mz.stroke,t[v+"color"]).call($E.dashLine,"",t[v+"width"]):l(h)&&d.call(Mz.fill,t[v+"color"])})};$g.updateDims=function(e,t){var r=this.bounds,n=(t.framewidth||0)/2,i=r[0][0]-n,a=r[0][1]-n,o=r[1][0]-i+n,s=r[1][1]-a+n;$E.setRect(this.clipRect,i,a,o,s),this.bgRect.call($E.setRect,i,a,o,s).call(Mz.fill,t.bgcolor),this.xaxis._offset=i,this.xaxis._length=o,this.yaxis._offset=a,this.yaxis._length=s};$g.updateFx=function(e,t){var r=this,n=r.graphDiv,i=r.bgRect,a=e.dragmode,o=e.clickmode;if(r.isStatic)return;function s(){var f=r.viewInitial,h={};for(var d in f)h[r.id+"."+d]=f[d];qDt.call("_guiRelayout",n,h),n.emit("plotly_doubleclick",null)}function l(f){return r.projection.invert([f[0]+r.xaxis._offset,f[1]+r.yaxis._offset])}var u=function(f,h){if(h.isRect){var d=f.range={};d[r.id]=[l([h.xmin,h.ymin]),l([h.xmax,h.ymax])]}else{var v=f.lassoPoints={};v[r.id]=h.map(l)}},c={element:r.bgRect.node(),gd:n,plotinfo:{id:r.id,xaxis:r.xaxis,yaxis:r.yaxis,fillRangeItems:u},xaxes:[r.xaxis],yaxes:[r.yaxis],subplot:r.id,clickFn:function(f){f===2&&UDt(n)}};a==="pan"?(i.node().onmousedown=null,i.call(HDt(r,t)),i.on("dblclick.zoom",s),n._context._scrollZoom.geo||i.on("wheel.zoom",null)):(a==="select"||a==="lasso")&&(i.on(".zoom",null),c.prepFn=function(f,h,d){NDt(f,h,d,c,a)},EX.init(c)),i.on("mousemove",function(){var f=r.projection.invert(QE.getPositionFromD3Event());if(!f)return EX.unhover(n,t1.event);r.xaxis.p2c=function(){return f[0]},r.yaxis.p2c=function(){return f[1]},MRe.hover(n,t1.event,r.id)}),i.on("mouseout",function(){n._dragging||EX.unhover(n,t1.event)}),i.on("click",function(){a!=="select"&&a!=="lasso"&&(o.indexOf("select")>-1&&VDt(t1.event,n,[r.xaxis],[r.yaxis],r.id,c),o.indexOf("event")>-1&&MRe.click(n,t1.event))})};$g.makeFramework=function(){var e=this,t=e.graphDiv,r=t._fullLayout,n="clip"+r._uid+e.id;e.clipDef=r._clips.append("clipPath").attr("id",n),e.clipRect=e.clipDef.append("rect"),e.framework=t1.select(e.container).append("g").attr("class","geo "+e.id).call($E.setClipUrl,n,t),e.project=function(i){var a=e.projection(i);return a?[a[0]-e.xaxis._offset,a[1]-e.yaxis._offset]:[null,null]},e.xaxis={_id:"x",c2p:function(i){return e.project(i)[0]}},e.yaxis={_id:"y",c2p:function(i){return e.project(i)[1]}},e.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},kX.setConvert(e.mockAxis,r)};$g.saveViewInitial=function(e){var t=e.center||{},r=e.projection,n=r.rotation||{};this.viewInitial={fitbounds:e.fitbounds,"projection.scale":r.scale};var i;e._isScoped?i={"center.lon":t.lon,"center.lat":t.lat}:e._isClipped?i={"projection.rotation.lon":n.lon,"projection.rotation.lat":n.lat}:i={"center.lon":t.lon,"center.lat":t.lat,"projection.rotation.lon":n.lon},QE.extendFlat(this.viewInitial,i)};$g.render=function(e){this._hasMarkerAngles&&e?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()};$g._render=function(){var e=this.projection,t=e.getPath(),r;function n(a){var o=e(a.lonlat);return o?ODt(o[0],o[1]):null}function i(a){return e.isLonLatOverEdges(a.lonlat)?"none":null}for(r in this.basePaths)this.basePaths[r].attr("d",t);for(r in this.dataPaths)this.dataPaths[r].attr("d",function(a){return t(a.geojson)});for(r in this.dataPoints)this.dataPoints[r].attr("display",i).attr("transform",n)};function WDt(e){var t=e.projection,r=t.type,n=fp.projNames[r];n="geo"+QE.titleCase(n);for(var i=CX[n]||FDt[n],a=i(),o=e._isSatellite?Math.acos(1/t.distance)*180/Math.PI:e._isClipped?fp.lonaxisSpan[r]/2:null,s=["center","rotate","parallels","clipExtent"],l=function(f){return f?a:[]},u=0;uv}else return!1},a.getPath=function(){return DDt().projection(a)},a.getBounds=function(f){return a.getPath().bounds(f)},a.precision(fp.precision),e._isSatellite&&a.tilt(t.tilt).distance(t.distance),o&&a.clipAngle(o-fp.clipPad),a}function ZDt(e,t,r){var n=1e-6,i=2.5,a=t[e],o=fp.scopeDefaults[t.scope],s,l,u;e==="lonaxis"?(s=o.lonaxisRange,l=o.lataxisRange,u=function(E,k){return[E,k]}):e==="lataxis"&&(s=o.lataxisRange,l=o.lonaxisRange,u=function(E,k){return[k,E]});var c={type:"linear",range:[s[0],s[1]-n],tick0:a.tick0,dtick:a.dtick};kX.setConvert(c,r);var f=kX.calcTicks(c);!t.isScoped&&e==="lonaxis"&&f.pop();for(var h=f.length,d=new Array(h),v=0;v0&&i<0&&(i+=360);var s=(i-n)/4;return{type:"Polygon",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}});var LX=ye((Cpr,zRe)=>{"use strict";var K5=dh(),XDt=Ju().attributes,YDt=Ed().dash,Y5=XE(),KDt=Bu().overrideAll,RRe=X1(),DRe={range:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},showgrid:{valType:"boolean",dflt:!1},tick0:{valType:"number",dflt:0},dtick:{valType:"number"},gridcolor:{valType:"color",dflt:K5.lightLine},gridwidth:{valType:"number",min:0,dflt:1},griddash:YDt},JDt=zRe.exports=KDt({domain:XDt({name:"geo"},{}),fitbounds:{valType:"enumerated",values:[!1,"locations","geojson"],dflt:!1,editType:"plot"},resolution:{valType:"enumerated",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:"enumerated",values:RRe(Y5.scopeDefaults),dflt:"world"},projection:{type:{valType:"enumerated",values:RRe(Y5.projNames)},rotation:{lon:{valType:"number"},lat:{valType:"number"},roll:{valType:"number"}},tilt:{valType:"number",dflt:0},distance:{valType:"number",min:1.001,dflt:2},parallels:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},scale:{valType:"number",min:0,dflt:1}},center:{lon:{valType:"number"},lat:{valType:"number"}},visible:{valType:"boolean",dflt:!0},showcoastlines:{valType:"boolean"},coastlinecolor:{valType:"color",dflt:K5.defaultLine},coastlinewidth:{valType:"number",min:0,dflt:1},showland:{valType:"boolean",dflt:!1},landcolor:{valType:"color",dflt:Y5.landColor},showocean:{valType:"boolean",dflt:!1},oceancolor:{valType:"color",dflt:Y5.waterColor},showlakes:{valType:"boolean",dflt:!1},lakecolor:{valType:"color",dflt:Y5.waterColor},showrivers:{valType:"boolean",dflt:!1},rivercolor:{valType:"color",dflt:Y5.waterColor},riverwidth:{valType:"number",min:0,dflt:1},showcountries:{valType:"boolean"},countrycolor:{valType:"color",dflt:K5.defaultLine},countrywidth:{valType:"number",min:0,dflt:1},showsubunits:{valType:"boolean"},subunitcolor:{valType:"color",dflt:K5.defaultLine},subunitwidth:{valType:"number",min:0,dflt:1},showframe:{valType:"boolean"},framecolor:{valType:"color",dflt:K5.defaultLine},framewidth:{valType:"number",min:0,dflt:1},bgcolor:{valType:"color",dflt:K5.background},lonaxis:DRe,lataxis:DRe},"plot","from-root");JDt.uirevision={valType:"any",editType:"none"}});var ORe=ye((Lpr,qRe)=>{"use strict";var Ez=Mr(),$Dt=k_(),QDt=kd().getSubplotData,kz=XE(),ezt=LX(),FRe=kz.axesNames;qRe.exports=function(t,r,n){$Dt(t,r,n,{type:"geo",attributes:ezt,handleDefaults:tzt,fullData:n,partition:"y"})};function tzt(e,t,r,n){var i=QDt(n.fullData,"geo",n.id),a=i.map(function(ae){return ae.index}),o=r("resolution"),s=r("scope"),l=kz.scopeDefaults[s],u=r("projection.type",l.projType),c=t._isAlbersUsa=u==="albers usa";c&&(s=t.scope="usa");var f=t._isScoped=s!=="world",h=t._isSatellite=u==="satellite",d=t._isConic=u.indexOf("conic")!==-1||u==="albers",v=t._isClipped=!!kz.lonaxisSpan[u];if(e.visible===!1){var x=Ez.extendDeep({},t._template);x.showcoastlines=!1,x.showcountries=!1,x.showframe=!1,x.showlakes=!1,x.showland=!1,x.showocean=!1,x.showrivers=!1,x.showsubunits=!1,x.lonaxis&&(x.lonaxis.showgrid=!1),x.lataxis&&(x.lataxis.showgrid=!1),t._template=x}for(var b=r("visible"),g,E=0;E0&&q<0&&(q+=360);var V=(F+q)/2,H;if(!c){var X=f?l.projRotate:[V,0,0];H=r("projection.rotation.lon",X[0]),r("projection.rotation.lat",X[1]),r("projection.rotation.roll",X[2]),g=r("showcoastlines",!f&&b),g&&(r("coastlinecolor"),r("coastlinewidth")),g=r("showocean",b?void 0:!1),g&&r("oceancolor")}var G,N;if(c?(G=-96.6,N=38.7):(G=f?V:H,N=(T[0]+T[1])/2),r("center.lon",G),r("center.lat",N),h&&(r("projection.tilt"),r("projection.distance")),d){var W=l.projParallels||[0,60];r("projection.parallels",W)}r("projection.scale"),g=r("showland",b?void 0:!1),g&&r("landcolor"),g=r("showlakes",b?void 0:!1),g&&r("lakecolor"),g=r("showrivers",b?void 0:!1),g&&(r("rivercolor"),r("riverwidth")),g=r("showcountries",f&&s!=="usa"&&b),g&&(r("countrycolor"),r("countrywidth")),(s==="usa"||s==="north america"&&o===50)&&(r("showsubunits",b),r("subunitcolor"),r("subunitwidth")),f||(g=r("showframe",b),g&&(r("framecolor"),r("framewidth"))),r("bgcolor");var re=r("fitbounds");re&&(delete t.projection.scale,f?(delete t.center.lon,delete t.center.lat):v?(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon,delete t.projection.rotation.lat,delete t.lonaxis.range,delete t.lataxis.range):(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon))}});var PX=ye((Ppr,URe)=>{"use strict";var rzt=kd().getSubplotCalcData,izt=Mr().counterRegex,nzt=IRe(),Wm="geo",BRe=izt(Wm),NRe={};NRe[Wm]={valType:"subplotid",dflt:Wm,editType:"calc"};function azt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[Wm],i=0;i{"use strict";VRe.exports={attributes:H2(),supplyDefaults:T8e(),colorbar:Kd(),formatLabels:M8e(),calc:lz(),calcGeoJSON:_X().calcGeoJSON,plot:_X().plot,style:pX(),styleOnSelect:op().styleOnSelect,hoverPoints:fRe(),eventData:dRe(),selectPoints:gRe(),moduleType:"trace",name:"scattergeo",basePlotModule:PX(),categories:["geo","symbols","showLegend","scatter-like"],meta:{}}});var jRe=ye((Rpr,GRe)=>{"use strict";GRe.exports=HRe()});var J5=ye((Dpr,XRe)=>{"use strict";var lzt=Wo().hovertemplateAttrs,ax=H2(),uzt=Kl(),WRe=vl(),czt=dh().defaultLine,nx=no().extendFlat,ZRe=ax.marker.line;XRe.exports=nx({locations:{valType:"data_array",editType:"calc"},locationmode:ax.locationmode,z:{valType:"data_array",editType:"calc"},geojson:nx({},ax.geojson,{}),featureidkey:ax.featureidkey,text:nx({},ax.text,{}),hovertext:nx({},ax.hovertext,{}),marker:{line:{color:nx({},ZRe.color,{dflt:czt}),width:nx({},ZRe.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:ax.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:ax.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:nx({},WRe.hoverinfo,{editType:"calc",flags:["location","z","text","name"]}),hovertemplate:lzt(),showlegend:nx({},WRe.showlegend,{dflt:!1})},uzt("",{cLetter:"z",editTypeOverride:"calc"}))});var KRe=ye((zpr,YRe)=>{"use strict";var Cz=Mr(),fzt=Uh(),hzt=J5();YRe.exports=function(t,r,n,i){function a(h,d){return Cz.coerce(t,r,hzt,h,d)}var o=a("locations"),s=a("z");if(!(o&&o.length&&Cz.isArrayOrTypedArray(s)&&s.length)){r.visible=!1;return}r._length=Math.min(o.length,s.length);var l=a("geojson"),u;(typeof l=="string"&&l!==""||Cz.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="geojson-id"&&a("featureidkey"),a("text"),a("hovertext"),a("hovertemplate");var f=a("marker.line.width");f&&a("marker.line.color"),a("marker.opacity"),fzt(t,r,i,a,{prefix:"",cLetter:"z"}),Cz.coerceSelectionMarkerOpacity(r,a)}});var Lz=ye((Fpr,QRe)=>{"use strict";var JRe=uo(),dzt=es().BADNUM,vzt=zv(),pzt=km(),gzt=F0();function $Re(e){return e&&typeof e=="string"}QRe.exports=function(t,r){var n=r._length,i=new Array(n),a;r.geojson?a=function(c){return $Re(c)||JRe(c)}:a=$Re;for(var o=0;o{"use strict";var mzt=xa(),yzt=va(),IX=ao(),_zt=Mu();function xzt(e,t){t&&eDe(e,t)}function eDe(e,t){var r=t[0].trace,n=t[0].node3,i=n.selectAll(".choroplethlocation"),a=r.marker||{},o=a.line||{},s=_zt.makeColorScaleFuncFromTrace(r);i.each(function(l){mzt.select(this).attr("fill",s(l.z)).call(yzt.stroke,l.mlc||o.color).call(IX.dashLine,"",l.mlw||o.width||0).style("opacity",a.opacity)}),IX.selectedPointStyle(i,r)}function bzt(e,t){var r=t[0].node3,n=t[0].trace;n.selectedpoints?IX.selectedPointStyle(r.selectAll(".choroplethlocation"),n):eDe(e,t)}tDe.exports={style:xzt,styleOnSelect:bzt}});var RX=ye((Opr,nDe)=>{"use strict";var wzt=xa(),rDe=Mr(),$5=ix(),Tzt=cz().getTopojsonFeatures,iDe=wg().findExtremes,Azt=Pz().style;function Szt(e,t,r){var n=t.layers.backplot.select(".choroplethlayer");rDe.makeTraceGroups(n,r,"trace choropleth").each(function(i){var a=wzt.select(this),o=a.selectAll("path.choroplethlocation").data(rDe.identity);o.enter().append("path").classed("choroplethlocation",!0),o.exit().remove(),Azt(e,i)})}function Mzt(e,t){for(var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r.locationmode,o=r._length,s=a==="geojson-id"?$5.extractTraceFeature(e):Tzt(r,i.topojson),l=[],u=[],c=0;c{"use strict";var Ezt=Qa(),kzt=J5(),Czt=Mr().fillText;aDe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s,l,u,c,f=[r,n],h=[r+360,n];for(l=0;l")}}});var Rz=ye((Npr,oDe)=>{"use strict";oDe.exports=function(t,r,n,i,a){t.location=r.location,t.z=r.z;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t.ct=o.ct,t}});var Dz=ye((Upr,sDe)=>{"use strict";sDe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l,u,c,f;if(r===!1)for(s=0;s{"use strict";lDe.exports={attributes:J5(),supplyDefaults:KRe(),colorbar:S_(),calc:Lz(),calcGeoJSON:RX().calcGeoJSON,plot:RX().plot,style:Pz().style,styleOnSelect:Pz().styleOnSelect,hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),moduleType:"trace",name:"choropleth",basePlotModule:PX(),categories:["geo","noOpacity","showLegend"],meta:{}}});var fDe=ye((Hpr,cDe)=>{"use strict";cDe.exports=uDe()});var zz=ye((Gpr,dDe)=>{"use strict";var Pzt=ba(),s0=Mr(),Izt=oT();function Rzt(e,t,r,n){var i=e.cd,a=i[0].t,o=i[0].trace,s=e.xa,l=e.ya,u=a.x,c=a.y,f=s.c2p(t),h=l.c2p(r),d=e.distance,v;if(a.tree){var x=s.p2c(f-d),b=s.p2c(f+d),g=l.p2c(h-d),E=l.p2c(h+d);n==="x"?v=a.tree.range(Math.min(x,b),Math.min(l._rl[0],l._rl[1]),Math.max(x,b),Math.max(l._rl[0],l._rl[1])):v=a.tree.range(Math.min(x,b),Math.min(g,E),Math.max(x,b),Math.max(g,E))}else v=a.ids;var k,A,L,_,C,M,p,P,T,F=d;if(n==="x"){var q=!!o.xperiodalignment,V=!!o.yperiodalignment;for(C=0;C=Math.min(H,X)&&f<=Math.max(H,X)?0:1/0}if(M=Math.min(G,N)&&h<=Math.max(G,N)?0:1/0}T=Math.sqrt(M*M+p*p),A=v[C]}}}else for(C=v.length-1;C>-1;C--)k=v[C],L=u[k],_=c[k],M=s.c2p(L)-f,p=l.c2p(_)-h,P=Math.sqrt(M*M+p*p),P{"use strict";var vDe=20;pDe.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:vDe,SYMBOL_STROKE:vDe/20,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}});var ek=ye((Wpr,_De)=>{"use strict";var Dzt=vl(),zzt=Su(),Fzt=Eg(),Af=Uc(),gDe=Oc().axisHoverFormat,mDe=Kl(),qzt=X1(),DX=no().extendFlat,Ozt=Bu().overrideAll,Bzt=ox().DASHES,yDe=Af.line,r1=Af.marker,Nzt=r1.line,Q5=_De.exports=Ozt({x:Af.x,x0:Af.x0,dx:Af.dx,y:Af.y,y0:Af.y0,dy:Af.dy,xperiod:Af.xperiod,yperiod:Af.yperiod,xperiod0:Af.xperiod0,yperiod0:Af.yperiod0,xperiodalignment:Af.xperiodalignment,yperiodalignment:Af.yperiodalignment,xhoverformat:gDe("x"),yhoverformat:gDe("y"),text:Af.text,hovertext:Af.hovertext,textposition:Af.textposition,textfont:zzt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,noNumericWeightValues:!0,variantValues:["normal","small-caps"]}),mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"]},line:{color:yDe.color,width:yDe.width,shape:{valType:"enumerated",values:["linear","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},dash:{valType:"enumerated",values:qzt(Bzt),dflt:"solid"}},marker:DX({},mDe("marker"),{symbol:r1.symbol,angle:r1.angle,size:r1.size,sizeref:r1.sizeref,sizemin:r1.sizemin,sizemode:r1.sizemode,opacity:r1.opacity,colorbar:r1.colorbar,line:DX({},mDe("marker.line"),{width:Nzt.width})}),connectgaps:Af.connectgaps,fill:DX({},Af.fill,{dflt:"none"}),fillcolor:Fzt(),selected:{marker:Af.selected.marker,textfont:Af.selected.textfont},unselected:{marker:Af.unselected.marker,textfont:Af.unselected.textfont},opacity:Dzt.opacity},"calc","nested");Q5.x.editType=Q5.y.editType=Q5.x0.editType=Q5.y0.editType="calc+clearAxisTypes";Q5.hovertemplate=Af.hovertemplate;Q5.texttemplate=Af.texttemplate});var Fz=ye(zX=>{"use strict";var xDe=ox();zX.isOpenSymbol=function(e){return typeof e=="string"?xDe.OPEN_RE.test(e):e%200>100};zX.isDotSymbol=function(e){return typeof e=="string"?xDe.DOT_RE.test(e):e>200}});var TDe=ye((Xpr,wDe)=>{"use strict";var bDe=Mr(),Uzt=ba(),Vzt=Fz(),Hzt=ek(),Gzt=Sm(),qz=lu(),jzt=K3(),Wzt=Pg(),Zzt=$p(),Xzt=R0(),Yzt=Ig(),Kzt=D0();wDe.exports=function(t,r,n,i){function a(d,v){return bDe.coerce(t,r,Hzt,d,v)}var o=t.marker?Vzt.isOpenSymbol(t.marker.symbol):!1,s=qz.isBubble(t),l=jzt(t,r,i,a);if(!l){r.visible=!1;return}Wzt(t,r,i,a),a("xhoverformat"),a("yhoverformat");var u=l{"use strict";var Jzt=JP();ADe.exports=function(t,r,n){var i=t.i;return"x"in t||(t.x=r._x[i]),"y"in t||(t.y=r._y[i]),Jzt(t,r,n)}});var EDe=ye((Kpr,MDe)=>{"use strict";function $zt(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>=0?(a=o,i=o-1):n=o+1}return a}function Qzt(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>0?(a=o,i=o-1):n=o+1}return a}function eFt(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<0?(a=o,n=o+1):i=o-1}return a}function tFt(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<=0?(a=o,n=o+1):i=o-1}return a}function rFt(e,t,r,n,i){for(;n<=i;){var a=n+i>>>1,o=e[a],s=r!==void 0?r(o,t):o-t;if(s===0)return a;s<=0?n=a+1:i=a-1}return-1}function tk(e,t,r,n,i,a){return typeof r=="function"?a(e,t,r,n===void 0?0:n|0,i===void 0?e.length-1:i|0):a(e,t,void 0,r===void 0?0:r|0,n===void 0?e.length-1:n|0)}MDe.exports={ge:function(e,t,r,n,i){return tk(e,t,r,n,i,$zt)},gt:function(e,t,r,n,i){return tk(e,t,r,n,i,Qzt)},lt:function(e,t,r,n,i){return tk(e,t,r,n,i,eFt)},le:function(e,t,r,n,i){return tk(e,t,r,n,i,tFt)},eq:function(e,t,r,n,i){return tk(e,t,r,n,i,rFt)}}});var Zm=ye((Jpr,CDe)=>{"use strict";CDe.exports=function(t,r,n){var i={},a,o;if(typeof r=="string"&&(r=kDe(r)),Array.isArray(r)){var s={};for(o=0;o{"use strict";var iFt=Zm();LDe.exports=nFt;function nFt(e){var t;return arguments.length>1&&(e=arguments),typeof e=="string"?e=e.split(/\s/).map(parseFloat):typeof e=="number"&&(e=[e]),e.length&&typeof e[0]=="number"?e.length===1?t={width:e[0],height:e[0],x:0,y:0}:e.length===2?t={width:e[0],height:e[1],x:0,y:0}:t={x:e[0],y:e[1],width:e[2]-e[0]||0,height:e[3]-e[1]||0}:e&&(e=iFt(e,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"}),t={x:e.left||0,y:e.top||0},e.width==null?e.right?t.width=e.right-t.x:t.width=0:t.width=e.width,e.height==null?e.bottom?t.height=e.bottom-t.y:t.height=0:t.height=e.height),t}});var j2=ye((Qpr,PDe)=>{"use strict";PDe.exports=aFt;function aFt(e,t){if(!e||e.length==null)throw Error("Argument should be an array");t==null?t=1:t=Math.floor(t);for(var r=Array(t*2),n=0;ni&&(i=e[o]),e[o]{IDe.exports=function(){for(var e=0;e{var DDe=HD();zDe.exports=oFt;function oFt(e,t,r){if(!e)throw new TypeError("must specify data as first parameter");if(r=+(r||0)|0,Array.isArray(e)&&e[0]&&typeof e[0][0]=="number"){var n=e[0].length,i=e.length*n,a,o,s,l;(!t||typeof t=="string")&&(t=new(DDe(t||"float32"))(i+r));var u=t.length-r;if(i!==u)throw new Error("source length "+i+" ("+n+"x"+e.length+") does not match destination length "+u);for(a=0,s=r;a{"use strict";FDe.exports=function(e){var t=typeof e;return e!==null&&(t==="object"||t==="function")}});var BDe=ye((i0r,ODe)=>{"use strict";ODe.exports=Math.log2||function(e){return Math.log(e)*Math.LOG2E}});var WDe=ye((n0r,jDe)=>{"use strict";var NDe=EDe(),UDe=O5(),sFt=eA(),lFt=j2(),VDe=Zm(),qX=RDe(),uFt=W2(),cFt=qDe(),fFt=HD(),HDe=BDe(),hFt=1073741824;jDe.exports=function(t,r){r||(r={}),t=uFt(t,"float64"),r=VDe(r,{bounds:"range bounds dataBox databox",maxDepth:"depth maxDepth maxdepth level maxLevel maxlevel levels",dtype:"type dtype format out dst output destination"});let n=qX(r.maxDepth,255),i=qX(r.bounds,lFt(t,2));i[0]===i[2]&&i[2]++,i[1]===i[3]&&i[3]++;let a=GDe(t,i),o=t.length>>>1,s;r.dtype||(r.dtype="array"),typeof r.dtype=="string"?s=new(fFt(r.dtype))(o):r.dtype&&(s=r.dtype,Array.isArray(s)&&(s.length=o));for(let g=0;gn||_>hFt){for(let N=0;N_e||p>Me||P=F||re===ae)return;let ke=l[W];ae===void 0&&(ae=ke.length);for(let Re=re;Re=A&&Ge<=_&&nt>=L&&nt<=C&&q.push(ce)}let ge=u[W],ie=ge[re*4+0],Te=ge[re*4+1],Ee=ge[re*4+2],Ae=ge[re*4+3],ze=H(ge,re+1),Ce=N*.5,me=W+1;V(X,G,Ce,me,ie,Te||Ee||Ae||ze),V(X,G+Ce,Ce,me,Te,Ee||Ae||ze),V(X+Ce,G,Ce,me,Ee,Ae||ze),V(X+Ce,G+Ce,Ce,me,Ae,ze)}function H(X,G){let N=null,W=0;for(;N===null;)if(N=X[G*4+W],W++,W>X.length)return null;return N}return q}function x(g,E,k,A,L){let _=[];for(let C=0;C{"use strict";ZDe.exports=WDe()});var OX=ye((o0r,XDe)=>{XDe.exports=dFt;function dFt(e){var t=0,r=0,n=0,i=0;return e.map(function(a){a=a.slice();var o=a[0],s=o.toUpperCase();if(o!=s)switch(a[0]=s,o){case"a":a[6]+=n,a[7]+=i;break;case"v":a[1]+=i;break;case"h":a[1]+=n;break;default:for(var l=1;l{"use strict";Object.defineProperty(Bz,"__esModule",{value:!0});var vFt=function(){function e(t,r){var n=[],i=!0,a=!1,o=void 0;try{for(var s=t[Symbol.iterator](),l;!(i=(l=s.next()).done)&&(n.push(l.value),!(r&&n.length===r));i=!0);}catch(u){a=!0,o=u}finally{try{!i&&s.return&&s.return()}finally{if(a)throw o}}return n}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),rk=Math.PI*2,BX=function(t,r,n,i,a,o,s){var l=t.x,u=t.y;l*=r,u*=n;var c=i*l-a*u,f=a*l+i*u;return{x:c+o,y:f+s}},pFt=function(t,r){var n=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),i=Math.cos(t),a=Math.sin(t),o=Math.cos(t+r),s=Math.sin(t+r);return[{x:i-a*n,y:a+i*n},{x:o+s*n,y:s-o*n},{x:o,y:s}]},YDe=function(t,r,n,i){var a=t*i-r*n<0?-1:1,o=t*n+r*i;return o>1&&(o=1),o<-1&&(o=-1),a*Math.acos(o)},gFt=function(t,r,n,i,a,o,s,l,u,c,f,h){var d=Math.pow(a,2),v=Math.pow(o,2),x=Math.pow(f,2),b=Math.pow(h,2),g=d*v-d*b-v*x;g<0&&(g=0),g/=d*b+v*x,g=Math.sqrt(g)*(s===l?-1:1);var E=g*a/o*h,k=g*-o/a*f,A=c*E-u*k+(t+n)/2,L=u*E+c*k+(r+i)/2,_=(f-E)/a,C=(h-k)/o,M=(-f-E)/a,p=(-h-k)/o,P=YDe(1,0,_,C),T=YDe(_,C,M,p);return l===0&&T>0&&(T-=rk),l===1&&T<0&&(T+=rk),[A,L,P,T]},mFt=function(t){var r=t.px,n=t.py,i=t.cx,a=t.cy,o=t.rx,s=t.ry,l=t.xAxisRotation,u=l===void 0?0:l,c=t.largeArcFlag,f=c===void 0?0:c,h=t.sweepFlag,d=h===void 0?0:h,v=[];if(o===0||s===0)return[];var x=Math.sin(u*rk/360),b=Math.cos(u*rk/360),g=b*(r-i)/2+x*(n-a)/2,E=-x*(r-i)/2+b*(n-a)/2;if(g===0&&E===0)return[];o=Math.abs(o),s=Math.abs(s);var k=Math.pow(g,2)/Math.pow(o,2)+Math.pow(E,2)/Math.pow(s,2);k>1&&(o*=Math.sqrt(k),s*=Math.sqrt(k));var A=gFt(r,n,i,a,o,s,f,d,x,b,g,E),L=vFt(A,4),_=L[0],C=L[1],M=L[2],p=L[3],P=Math.abs(p)/(rk/4);Math.abs(1-P)<1e-7&&(P=1);var T=Math.max(Math.ceil(P),1);p/=T;for(var F=0;F{"use strict";QDe.exports=_Ft;var yFt=JDe();function _Ft(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function Nz(e,t,r,n){return["C",e,t,r,n,r,n]}function $De(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}});var NX=ye((l0r,tze)=>{"use strict";tze.exports=function(t){return typeof t!="string"?!1:(t=t.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4))}});var nze=ye((u0r,ize)=>{"use strict";var xFt=XS(),bFt=OX(),wFt=eze(),TFt=NX(),rze=tE();ize.exports=AFt;function AFt(e){if(Array.isArray(e)&&e.length===1&&typeof e[0]=="string"&&(e=e[0]),typeof e=="string"&&(rze(TFt(e),"String is not an SVG path."),e=xFt(e)),rze(Array.isArray(e),"Argument should be a string or an array of path segments."),e=bFt(e),e=wFt(e),!e.length)return[0,0,0,0];for(var t=[1/0,1/0,-1/0,-1/0],r=0,n=e.length;rt[2]&&(t[2]=i[a+0]),i[a+1]>t[3]&&(t[3]=i[a+1]);return t}});var cze=ye((c0r,uze)=>{var Z2=Math.PI,aze=lze(120);uze.exports=SFt;function SFt(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f7&&(r.push(d.splice(0,7)),d.unshift("C"));break;case"S":var x=u,b=c;(t=="C"||t=="S")&&(x+=x-n,b+=b-i),d=["C",x,b,d[1],d[2],d[3],d[4]];break;case"T":t=="Q"||t=="T"?(s=u*2-s,l=c*2-l):(s=u,l=c),d=oze(u,c,s,l,d[1],d[2]);break;case"Q":s=d[1],l=d[2],d=oze(u,c,d[1],d[2],d[3],d[4]);break;case"L":d=Uz(u,c,d[1],d[2]);break;case"H":d=Uz(u,c,d[1],c);break;case"V":d=Uz(u,c,u,d[1]);break;case"Z":d=Uz(u,c,a,o);break}t=v,u=d[d.length-2],c=d[d.length-1],d.length>4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function Uz(e,t,r,n){return["C",e,t,r,n,r,n]}function oze(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}function sze(e,t,r,n,i,a,o,s,l,u){if(u)k=u[0],A=u[1],g=u[2],E=u[3];else{var c=UX(e,t,-i);e=c.x,t=c.y,c=UX(s,l,-i),s=c.x,l=c.y;var f=(e-s)/2,h=(t-l)/2,d=f*f/(r*r)+h*h/(n*n);d>1&&(d=Math.sqrt(d),r=d*r,n=d*n);var v=r*r,x=n*n,b=(a==o?-1:1)*Math.sqrt(Math.abs((v*x-v*h*h-x*f*f)/(v*h*h+x*f*f)));b==1/0&&(b=1);var g=b*r*h/n+(e+s)/2,E=b*-n*f/r+(t+l)/2,k=Math.asin(((t-E)/n).toFixed(9)),A=Math.asin(((l-E)/n).toFixed(9));k=eA&&(k=k-Z2*2),!o&&A>k&&(A=A-Z2*2)}if(Math.abs(A-k)>aze){var L=A,_=s,C=l;A=k+aze*(o&&A>k?1:-1),s=g+r*Math.cos(A),l=E+n*Math.sin(A);var M=sze(s,l,r,n,i,0,o,_,C,[A,L,g,E])}var p=Math.tan((A-k)/4),P=4/3*r*p,T=4/3*n*p,F=[2*e-(e+P*Math.sin(k)),2*t-(t-T*Math.cos(k)),s+P*Math.sin(A),l-T*Math.cos(A),s,l];if(u)return F;M&&(F=F.concat(M));for(var q=0;q{var MFt=OX(),EFt=cze(),kFt={M:"moveTo",C:"bezierCurveTo"};fze.exports=function(e,t){e.beginPath(),EFt(MFt(t)).forEach(function(r){var n=r[0],i=r.slice(1);e[kFt[n]].apply(e,i)}),e.closePath()}});var gze=ye((h0r,pze)=>{"use strict";var CFt=O5();pze.exports=LFt;var ik=1e20;function LFt(e,t){t||(t={});var r=t.cutoff==null?.25:t.cutoff,n=t.radius==null?8:t.radius,i=t.channel||0,a,o,s,l,u,c,f,h,d,v,x;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");a=t.width,o=t.height,l=e,t.stride?c=t.stride:c=Math.floor(e.length/a/o)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(h=e,f=h.getContext("2d"),a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(h=e.canvas,f=e,a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.ImageData&&e instanceof window.ImageData&&(d=e,a=e.width,o=e.height,l=d.data,c=4);if(s=Math.max(a,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(u=l,l=Array(a*o),v=0,x=u.length;v{"use strict";var PFt=nze(),IFt=XS(),RFt=hze(),DFt=NX(),zFt=gze(),VX=document.createElement("canvas"),hp=VX.getContext("2d");mze.exports=FFt;function FFt(e,t){if(!DFt(e))throw Error("Argument should be valid svg path string");t||(t={});var r,n;t.shape?(r=t.shape[0],n=t.shape[1]):(r=VX.width=t.w||t.width||200,n=VX.height=t.h||t.height||200);var i=Math.min(r,n),a=t.stroke||0,o=t.viewbox||t.viewBox||PFt(e),s=[r/(o[2]-o[0]),n/(o[3]-o[1])],l=Math.min(s[0]||0,s[1]||0)/2;if(hp.fillStyle="black",hp.fillRect(0,0,r,n),hp.fillStyle="white",a&&(typeof a!="number"&&(a=1),a>0?hp.strokeStyle="white":hp.strokeStyle="black",hp.lineWidth=Math.abs(a)),hp.translate(r*.5,n*.5),hp.scale(l,l),qFt()){var u=new Path2D(e);hp.fill(u),a&&hp.stroke(u)}else{var c=IFt(e);RFt(hp,c),hp.fill(),a&&hp.stroke()}hp.setTransform(1,0,0,1,0,0);var f=zFt(hp,{cutoff:t.cutoff!=null?t.cutoff:.5,radius:t.radius!=null?t.radius:i*.5});return f}var Vz;function qFt(){if(Vz!=null)return Vz;var e=document.createElement("canvas").getContext("2d");if(e.canvas.width=e.canvas.height=1,!window.Path2D)return Vz=!1;var t=new Path2D("M0,0h1v1h-1v-1Z");e.fillStyle="black",e.fill(t);var r=e.getImageData(0,0,1,1);return Vz=r&&r.data&&r.data[3]===255}});var Y2=ye((v0r,Cze)=>{"use strict";var Gz=uo(),OFt=yze(),Hz=J_(),BFt=ba(),iA=Mr(),Qf=iA.isArrayOrTypedArray,tA=ao(),_ze=af(),xze=$y().formatColor,rA=lu(),NFt=S3(),GX=Fz(),nk=ox(),UFt=N1().DESELECTDIM,bze={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},VFt=rp().appendArrayPointValue;function HFt(e,t){var r,n={marker:void 0,markerSel:void 0,markerUnsel:void 0,line:void 0,fill:void 0,errorX:void 0,errorY:void 0,text:void 0,textSel:void 0,textUnsel:void 0},i=e._context.plotGlPixelRatio;if(t.visible!==!0)return n;if(rA.hasText(t)&&(n.text=kze(e,t),n.textSel=Tze(e,t,t.selected),n.textUnsel=Tze(e,t,t.unselected)),rA.hasMarkers(t)&&(n.marker=WX(e,t),n.markerSel=jX(e,t,t.selected),n.markerUnsel=jX(e,t,t.unselected),!t.unselected&&Qf(t.marker.opacity))){var a=t.marker.opacity;for(n.markerUnsel.opacity=new Array(a.length),r=0;r500?"bold":"normal":e}function WX(e,t){var r=t._length,n=t.marker,i={},a,o=Qf(n.symbol),s=Qf(n.angle),l=Qf(n.color),u=Qf(n.line.color),c=Qf(n.opacity),f=Qf(n.size),h=Qf(n.line.width),d;if(o||(d=GX.isOpenSymbol(n.symbol)),o||l||u||c||s){i.symbols=new Array(r),i.angles=new Array(r),i.colors=new Array(r),i.borderColors=new Array(r);var v=n.symbol,x=n.angle,b=xze(n,n.opacity,r),g=xze(n.line,n.opacity,r);if(!Qf(g[0])){var E=g;for(g=Array(r),a=0;ank.TOO_MANY_POINTS||rA.hasMarkers(t)?"rect":"round";if(u&&t.connectgaps){var f=a[0],h=a[1];for(o=0;o1?l[o]:l[0]:l,d=Qf(u)?u.length>1?u[o]:u[0]:u,v=bze[h],x=bze[d],b=c?c/.8+1:0,g=-x*b-x*.5;a.offset[o]=[v*b/f,g/f]}}return a}Cze.exports={style:HFt,markerStyle:WX,markerSelection:jX,linePositions:jFt,errorBarPositions:WFt,textPosition:ZFt}});var ZX=ye((p0r,Lze)=>{"use strict";var jz=Mr();Lze.exports=function(t,r){var n=r._scene,i={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[],selectBatch:[],unselectBatch:[]},a={fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:!1};return r._scene||(n=r._scene={},n.init=function(){jz.extendFlat(n,a,i)},n.init(),n.update=function(s){var l=jz.repeat(s,n.count);if(n.fill2d&&n.fill2d.update(l),n.scatter2d&&n.scatter2d.update(l),n.line2d&&n.line2d.update(l),n.error2d&&n.error2d.update(l.concat(l)),n.select2d&&n.select2d.update(l),n.glText)for(var u=0;u{"use strict";var XFt=Oz(),nA=Mr(),Pze=af(),YFt=wg().findExtremes,Ize=Rg(),XX=q0(),KFt=XX.calcMarkerSize,JFt=XX.calcAxisExpansion,$Ft=XX.setFirstScatter,QFt=z0(),aA=Y2(),e7t=ZX(),Rze=es().BADNUM,t7t=ox().TOO_MANY_POINTS;zze.exports=function(t,r){var n=t._fullLayout,i=r._xA=Pze.getFromId(t,r.xaxis,"x"),a=r._yA=Pze.getFromId(t,r.yaxis,"y"),o=n._plots[r.xaxis+r.yaxis],s=r._length,l=s>=t7t,u=s*2,c={},f,h=i.makeCalcdata(r,"x"),d=a.makeCalcdata(r,"y"),v=Ize(r,i,"x",h),x=Ize(r,a,"y",d),b=v.vals,g=x.vals;r._x=b,r._y=g,r.xperiodalignment&&(r._origX=h,r._xStarts=v.starts,r._xEnds=v.ends),r.yperiodalignment&&(r._origY=d,r._yStarts=x.starts,r._yEnds=x.ends);var E=new Array(u),k=new Array(s);for(f=0;f1&&nA.extendFlat(o.line,aA.linePositions(e,r,n)),o.errorX||o.errorY){var s=aA.errorBarPositions(e,r,n,i,a);o.errorX&&nA.extendFlat(o.errorX,s.x),o.errorY&&nA.extendFlat(o.errorY,s.y)}return o.text&&(nA.extendFlat(o.text,{positions:n},aA.textPosition(e,r,o.text,o.marker)),nA.extendFlat(o.textSel,{positions:n},aA.textPosition(e,r,o.text,o.markerSel)),nA.extendFlat(o.textUnsel,{positions:n},aA.textPosition(e,r,o.text,o.markerUnsel))),o}});var YX=ye((m0r,Oze)=>{"use strict";var qze=Mr(),i7t=va(),n7t=N1().DESELECTDIM;function a7t(e){var t=e[0],r=t.trace,n=t.t,i=n._scene,a=n.index,o=i.selectBatch[a],s=i.unselectBatch[a],l=i.textOptions[a],u=i.textSelectedOptions[a]||{},c=i.textUnselectedOptions[a]||{},f=qze.extendFlat({},l),h,d;if(o.length||s.length){var v=u.color,x=c.color,b=l.color,g=qze.isArrayOrTypedArray(b);for(f.color=new Array(r._length),h=0;h{"use strict";var Bze=lu(),o7t=YX().styleTextSelection;Nze.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l=n[0].t,u=s._length,c=l.x,f=l.y,h=l._scene,d=l.index;if(!h)return o;var v=Bze.hasText(s),x=Bze.hasMarkers(s),b=!x&&!v;if(s.visible!==!0||b)return o;var g=[],E=[];if(r!==!1&&!r.degenerate)for(var k=0;k{"use strict";var s7t=zz();Uze.exports={moduleType:"trace",name:"scattergl",basePlotModule:Jf(),categories:["gl","regl","cartesian","symbols","errorBarsOK","showLegend","scatter-like"],attributes:ek(),supplyDefaults:TDe(),crossTraceDefaults:$N(),colorbar:Kd(),formatLabels:SDe(),calc:Fze(),hoverPoints:s7t.hoverPoints,selectPoints:KX(),meta:{}}});var Gze=ye((x0r,Zz)=>{"use strict";var Wz=O5();Zz.exports=Hze;Zz.exports.to=Hze;Zz.exports.from=l7t;function Hze(e,t){t==null&&(t=!0);var r=e[0],n=e[1],i=e[2],a=e[3];a==null&&(a=t?1:255),t&&(r*=255,n*=255,i*=255,a*=255),r=Wz(r,0,255)&255,n=Wz(n,0,255)&255,i=Wz(i,0,255)&255,a=Wz(a,0,255)&255;var o=r*16777216+(n<<16)+(i<<8)+a;return o}function l7t(e,t){e=+e;var r=e>>>24,n=(e&16711680)>>>16,i=(e&65280)>>>8,a=e&255;return t===!1?[r,n,i,a]:[r/255,n/255,i/255,a/255]}});var bh=ye((b0r,Wze)=>{"use strict";var jze=Object.getOwnPropertySymbols,u7t=Object.prototype.hasOwnProperty,c7t=Object.prototype.propertyIsEnumerable;function f7t(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function h7t(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(t).map(function(a){return t[a]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(a){i[a]=a}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(a){return!1}}Wze.exports=h7t()?Object.assign:function(e,t){for(var r,n=f7t(e),i,a=1;a{Zze.exports=function(e){typeof e=="string"&&(e=[e]);for(var t=[].slice.call(arguments,1),r=[],n=0;n{"use strict";Yze.exports=function(t,r,n){Array.isArray(n)||(n=[].slice.call(arguments,2));for(var i=0,a=n.length;i{"use strict";Kze.exports=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion))});var Xz=ye((S0r,oA)=>{"use strict";oA.exports=ak;oA.exports.float32=oA.exports.float=ak;oA.exports.fract32=oA.exports.fract=d7t;var $ze=new Float32Array(1);function d7t(e,t){if(e.length){if(e instanceof Float32Array)return new Float32Array(e.length);t instanceof Float32Array||(t=ak(e));for(var r=0,n=t.length;r{"use strict";function v7t(e,t){var r=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&r.return!=null&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function p7t(e,t){return y7t(e)||v7t(e,t)||eFe(e,t)||b7t()}function g7t(e){return m7t(e)||_7t(e)||eFe(e)||x7t()}function m7t(e){if(Array.isArray(e))return $X(e)}function y7t(e){if(Array.isArray(e))return e}function _7t(e){if(typeof Symbol!="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function eFe(e,t){if(e){if(typeof e=="string")return $X(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $X(e,t)}}function $X(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(N=G.size),G.lineSpacing&&G.lineSpacing>0&&(W=G.lineSpacing),G.styletags&&G.styletags.breaklines&&(re.breaklines=!!G.styletags.breaklines),G.styletags&&G.styletags.bolds&&(re.bolds=!!G.styletags.bolds),G.styletags&&G.styletags.italics&&(re.italics=!!G.styletags.italics),G.styletags&&G.styletags.subscripts&&(re.subscripts=!!G.styletags.subscripts),G.styletags&&G.styletags.superscripts&&(re.superscripts=!!G.styletags.superscripts)),X.font=[G.fontStyle,G.fontVariant,G.fontWeight,N+"px",G.font].filter(function(_e){return _e}).join(" "),X.textAlign="start",X.textBaseline="alphabetic",X.direction="ltr";var ae=g(H,X,V,N,W,re);return F(ae,G,N)}},1538:function(i){(function(){"use strict";if(typeof ses!="undefined"&&ses.ok&&!ses.ok())return;function o(T){T.permitHostObjects___&&T.permitHostObjects___(o)}typeof ses!="undefined"&&(ses.weakMapPermitHostObjects=o);var s=!1;if(typeof WeakMap=="function"){var l=WeakMap;if(!(typeof navigator!="undefined"&&/Firefox/.test(navigator.userAgent))){var u=new l,c=Object.freeze({});if(u.set(c,1),u.get(c)!==1)s=!0;else{i.exports=WeakMap;return}}}var f=Object.prototype.hasOwnProperty,h=Object.getOwnPropertyNames,d=Object.defineProperty,v=Object.isExtensible,x="weakmap:",b=x+"ident:"+Math.random()+"___";if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"&&typeof ArrayBuffer=="function"&&typeof Uint8Array=="function"){var p=new ArrayBuffer(25),E=new Uint8Array(p);crypto.getRandomValues(E),b=x+"rand:"+Array.prototype.map.call(E,function(T){return(T%36).toString(36)}).join("")+"___"}function k(T){return!(T.substr(0,x.length)==x&&T.substr(T.length-3)==="___")}if(d(Object,"getOwnPropertyNames",{value:function(F){return h(F).filter(k)}}),"getPropertyNames"in Object){var A=Object.getPropertyNames;d(Object,"getPropertyNames",{value:function(F){return A(F).filter(k)}})}function L(T){if(T!==Object(T))throw new TypeError("Not an object: "+T);var F=T[b];if(F&&F.key===T)return F;if(v(T)){F={key:T};try{return d(T,b,{value:F,writable:!1,enumerable:!1,configurable:!1}),F}catch(q){return}}}(function(){var T=Object.freeze;d(Object,"freeze",{value:function(H){return L(H),T(H)}});var F=Object.seal;d(Object,"seal",{value:function(H){return L(H),F(H)}});var q=Object.preventExtensions;d(Object,"preventExtensions",{value:function(H){return L(H),q(H)}})})();function _(T){return T.prototype=null,Object.freeze(T)}var C=!1;function M(){!C&&typeof console!="undefined"&&(C=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}var g=0,P=function(){this instanceof P||M();var T=[],F=[],q=g++;function V(N,W){var re,ae=L(N);return ae?q in ae?ae[q]:W:(re=T.indexOf(N),re>=0?F[re]:W)}function H(N){var W=L(N);return W?q in W:T.indexOf(N)>=0}function X(N,W){var re,ae=L(N);return ae?ae[q]=W:(re=T.indexOf(N),re>=0?F[re]=W:(re=T.length,F[re]=W,T[re]=N)),this}function G(N){var W=L(N),re,ae;return W?q in W&&delete W[q]:(re=T.indexOf(N),re<0?!1:(ae=T.length-1,T[re]=void 0,F[re]=F[ae],T[re]=T[ae],T.length=ae,F.length=ae,!0))}return Object.create(P.prototype,{get___:{value:_(V)},has___:{value:_(H)},set___:{value:_(X)},delete___:{value:_(G)}})};P.prototype=Object.create(Object.prototype,{get:{value:function(F,q){return this.get___(F,q)},writable:!0,configurable:!0},has:{value:function(F){return this.has___(F)},writable:!0,configurable:!0},set:{value:function(F,q){return this.set___(F,q)},writable:!0,configurable:!0},delete:{value:function(F){return this.delete___(F)},writable:!0,configurable:!0}}),typeof l=="function"?function(){s&&typeof Proxy!="undefined"&&(Proxy=void 0);function T(){this instanceof P||M();var F=new l,q=void 0,V=!1;function H(W,re){return q?F.has(W)?F.get(W):q.get___(W,re):F.get(W,re)}function X(W){return F.has(W)||(q?q.has___(W):!1)}var G;s?G=function(W,re){return F.set(W,re),F.has(W)||(q||(q=new P),q.set(W,re)),this}:G=function(W,re){if(V)try{F.set(W,re)}catch(ae){q||(q=new P),q.set___(W,re)}else F.set(W,re);return this};function N(W){var re=!!F.delete(W);return q&&q.delete___(W)||re}return Object.create(P.prototype,{get___:{value:_(H)},has___:{value:_(X)},set___:{value:_(G)},delete___:{value:_(N)},permitHostObjects___:{value:_(function(W){if(W===o)V=!0;else throw new Error("bogus call to permitHostObjects___")})}})}T.prototype=P.prototype,i.exports=T,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy!="undefined"&&(Proxy=void 0),i.exports=P)})()},236:function(i,a,o){var s=o(8284);i.exports=l;function l(){var u={};return function(c){if((typeof c!="object"||c===null)&&typeof c!="function")throw new Error("Weakmap-shim: Key must be object");var f=c.valueOf(u);return f&&f.identity===u?f:s(c,u)}}},8284:function(i){i.exports=a;function a(o,s){var l={identity:s},u=o.valueOf;return Object.defineProperty(o,"valueOf",{value:function(c){return c!==s?u.apply(this,arguments):l},writable:!0}),l}},606:function(i,a,o){var s=o(236);i.exports=l;function l(){var u=s();return{get:function(c,f){var h=u(c);return h.hasOwnProperty("value")?h.value:f},set:function(c,f){return u(c).value=f,this},has:function(c){return"value"in u(c)},delete:function(c){return delete u(c).value}}}},3349:function(i){"use strict";function a(){return function(f,h,d,v,x,b){var p=f[0],E=d[0],k=[0],A=E;v|=0;var L=0,_=E;for(L=0;L=0!=M>=0&&x.push(k[0]+.5+.5*(C+M)/(C-M))}v+=_,++k[0]}}}function o(){return a()}var s=o;function l(f){var h={};return function(v,x,b){var p=v.dtype,E=v.order,k=[p,E.join()].join(),A=h[k];return A||(h[k]=A=f([p,E])),A(v.shape.slice(0),v.data,v.stride,v.offset|0,x,b)}}function u(f){return l(s.bind(void 0,f))}function c(f){return u({funcName:f.funcName})}i.exports=c({funcName:"zeroCrossings"})},781:function(i,a,o){"use strict";i.exports=l;var s=o(3349);function l(u,c){var f=[];return c=+c||0,s(u.hi(u.shape[0]-1),f,c),f}},7790:function(){}},t={};function r(i){var a=t[i];if(a!==void 0)return a.exports;var o=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}(function(){r.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(i){if(typeof window=="object")return window}}()})(),function(){r.nmd=function(i){return i.paths=[],i.children||(i.children=[]),i}}();var n=r(1964);cLe.exports=n})()});var rZ=ye((ivr,fLe)=>{"use strict";fLe.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var pLe=ye((nvr,vLe)=>{"use strict";var hLe=rZ();vLe.exports=lLt;var dLe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function lLt(e){var t,r=[],n=1,i;if(typeof e=="string")if(e=e.toLowerCase(),hLe[e])r=hLe[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(e)){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(e)){var l=t[1],u=l==="rgb",a=l.replace(/a$/,"");i=a;var o=a==="cmyk"?4:a==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(h,d){if(/%$/.test(h))return d===o?parseFloat(h)/100:a==="rgb"?parseFloat(h)*255/100:parseFloat(h);if(a[d]==="h"){if(/deg$/.test(h))return parseFloat(h);if(dLe[h]!==void 0)return dLe[h]}return parseFloat(h)}),l===a&&r.push(1),n=u||r[o]===void 0?1:r[o],r=r.slice(0,o)}else e.length>10&&/[0-9](?:\s|\/)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(c){return parseFloat(c)}),i=e.match(/([a-z])/ig).join("").toLowerCase());else isNaN(e)?Array.isArray(e)||e.length?(r=[e[0],e[1],e[2]],i="rgb",n=e.length===4?e[3]:1):e instanceof Object&&(e.r!=null||e.red!=null||e.R!=null?(i="rgb",r=[e.r||e.red||e.R||0,e.g||e.green||e.G||0,e.b||e.blue||e.B||0]):(i="hsl",r=[e.h||e.hue||e.H||0,e.s||e.saturation||e.S||0,e.l||e.lightness||e.L||e.b||e.brightness]),n=e.a||e.alpha||e.opacity||1,e.opacity!=null&&(n/=100)):(i="rgb",r=[e>>>16,(e&65280)>>>8,e&255]);return{space:i,values:r,alpha:n}}});var mLe=ye((avr,gLe)=>{"use strict";var uLt=pLe();gLe.exports=function(t){Array.isArray(t)&&t.raw&&(t=String.raw.apply(null,arguments));var r,n,i,a=uLt(t);if(!a.space)return[];var o=[0,0,0],s=a.space[0]==="h"?[360,100,100]:[255,255,255];return r=Array(3),r[0]=Math.min(Math.max(a.values[0],o[0]),s[0]),r[1]=Math.min(Math.max(a.values[1],o[1]),s[1]),r[2]=Math.min(Math.max(a.values[2],o[2]),s[2]),a.space[0]==="h"&&(r=cLt(r)),r.push(Math.min(Math.max(a.alpha,0),1)),r};function cLt(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l,u=0;if(r===0)return l=n*255,[l,l,l];for(a=n<.5?n*(1+r):n+r-n*r,i=2*n-a,s=[0,0,0];u<3;)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,l=6*o<1?i+(a-i)*6*o:2*o<1?a:3*o<2?i+(a-i)*(2/3-o)*6:i,s[u++]=l*255;return s}});var VE=ye((ovr,yLe)=>{yLe.exports=fLt;function fLt(e,t,r){return tr?r:e:et?t:e}});var HD=ye((svr,_Le)=>{_Le.exports=function(e){switch(e){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}});var $_=ye((lvr,xLe)=>{"use strict";var hLt=mLe(),GD=VE(),dLt=HD();xLe.exports=function(t,r){(r==="float"||!r)&&(r="array"),r==="uint"&&(r="uint8"),r==="uint_clamped"&&(r="uint8_clamped");var n=dLt(r),i=new n(4),a=r!=="uint8"&&r!=="uint8_clamped";return(!t.length||typeof t=="string")&&(t=hLt(t),t[0]/=255,t[1]/=255,t[2]/=255),vLt(t)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:255,a&&(i[0]/=255,i[1]/=255,i[2]/=255,i[3]/=255),i):(a?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:1):(i[0]=GD(Math.floor(t[0]*255),0,255),i[1]=GD(Math.floor(t[1]*255),0,255),i[2]=GD(Math.floor(t[2]*255),0,255),i[3]=t[3]==null?255:GD(Math.floor(t[3]*255),0,255)),i)};function vLt(e){return!!(e instanceof Uint8Array||e instanceof Uint8ClampedArray||Array.isArray(e)&&(e[0]>1||e[0]===0)&&(e[1]>1||e[1]===0)&&(e[2]>1||e[2]===0)&&(!e[3]||e[3]>1))}});var Jy=ye((uvr,bLe)=>{"use strict";var pLt=$_();function gLt(e){return e?pLt(e):[0,0,0,1]}bLe.exports=gLt});var $y=ye((cvr,kLe)=>{"use strict";var MLe=uo(),mLt=id(),jD=$_(),WD=Mu(),yLt=dh().defaultLine,wLe=vv().isArrayOrTypedArray,iZ=jD(yLt),ELe=1;function TLe(e,t){var r=e;return r[3]*=t,r}function ALe(e){if(MLe(e))return iZ;var t=jD(e);return t.length?t:iZ}function SLe(e){return MLe(e)?e:ELe}function _Lt(e,t,r){var n=e.color;n&&n._inputArray&&(n=n._inputArray);var i=wLe(n),a=wLe(t),o=WD.extractOpts(e),s=[],l,u,c,f,h;if(o.colorscale!==void 0?l=WD.makeColorScaleFuncFromTrace(e):l=ALe,i?u=function(v,x){return v[x]===void 0?iZ:jD(l(v[x]))}:u=ALe,a?c=function(v,x){return v[x]===void 0?ELe:SLe(v[x])}:c=SLe,i||a)for(var d=0;d{"use strict";CLe.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}});var ZD=ye((hvr,LLe)=>{"use strict";LLe.exports={circle:"\u25CF","circle-open":"\u25CB",square:"\u25A0","square-open":"\u25A1",diamond:"\u25C6","diamond-open":"\u25C7",cross:"+",x:"\u274C"}});var ILe=ye((dvr,PLe)=>{"use strict";var bLt=ba();function aZ(e,t,r,n){if(!t||!t.visible)return null;for(var i=bLt.getComponentMethod("errorbars","makeComputeError")(t),a=new Array(e.length),o=0;o0){var f=n.c2l(u);n._lowerLogErrorBound||(n._lowerLogErrorBound=f),n._lowerErrorBound=Math.min(n._lowerLogErrorBound,f)}}else a[o]=[-s[0]*r,s[1]*r]}return a}function wLt(e){for(var t=0;t{"use strict";var ALt=Rd().gl_line3d,RLe=Rd().gl_scatter3d,SLt=Rd().gl_error3d,MLt=Rd().gl_mesh3d,ELt=Rd().delaunay_triangulate,Qy=Mr(),OLe=Jy(),XD=$y().formatColor,kLt=S3(),oZ=nZ(),CLt=ZD(),LLt=Qa(),PLt=rp().appendArrayPointValue,ILt=ILe();function BLe(e,t){this.scene=e,this.uid=t,this.linePlot=null,this.scatterPlot=null,this.errorBars=null,this.textMarkers=null,this.delaunayMesh=null,this.color=null,this.mode="",this.dataPoints=[],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.textLabels=null,this.data=null}var lZ=BLe.prototype;lZ.handlePick=function(e){if(e.object&&(e.object===this.linePlot||e.object===this.delaunayMesh||e.object===this.textMarkers||e.object===this.scatterPlot)){var t=e.index=e.data.index;return e.object.highlight&&e.object.highlight(null),this.scatterPlot&&(e.object=this.scatterPlot,this.scatterPlot.highlight(e.data)),e.textLabel="",this.textLabels&&(Qy.isArrayOrTypedArray(this.textLabels)?(this.textLabels[t]||this.textLabels[t]===0)&&(e.textLabel=this.textLabels[t]):e.textLabel=this.textLabels),e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]],!0}};function RLt(e,t,r){var n=(r+1)%3,i=(r+2)%3,a=[],o=[],s;for(s=0;s-1?-1:e.indexOf("right")>-1?1:0}function zLe(e){return e==null?0:e.indexOf("top")>-1?-1:e.indexOf("bottom")>-1?1:0}function zLt(e){var t=0,r=0,n=[t,r];if(Array.isArray(e))for(var i=0;i=0){var u=RLt(s.position,s.delaunayColor,s.delaunayAxis);u.opacity=e.opacity,this.delaunayMesh?this.delaunayMesh.update(u):(u.gl=t,this.delaunayMesh=MLt(u),this.delaunayMesh._trace=this,this.scene.glplot.add(this.delaunayMesh))}else this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose(),this.delaunayMesh=null)};lZ.dispose=function(){this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose()),this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose()),this.errorBars&&(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose()),this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose()),this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose())};function BLt(e,t){var r=new BLe(e,t.uid);return r.update(t),r}NLe.exports=BLt});var dZ=ye((pvr,GLe)=>{"use strict";var e1=Uc(),NLt=Su(),hZ=Jl(),uZ=Oc().axisHoverFormat,ULt=Wo().hovertemplateAttrs,VLt=Wo().texttemplateAttrs,VLe=vl(),HLt=nZ(),GLt=ZD(),Yg=no().extendFlat,jLt=Bu().overrideAll,HLe=Y1(),WLt=e1.line,N2=e1.marker,ZLt=N2.line,XLt=Yg({width:WLt.width,dash:{valType:"enumerated",values:HLe(HLt),dflt:"solid"}},hZ("line"));function cZ(e){return{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}}}var fZ=GLe.exports=jLt({x:e1.x,y:e1.y,z:{valType:"data_array"},text:Yg({},e1.text,{}),texttemplate:VLt({},{}),hovertext:Yg({},e1.hovertext,{}),hovertemplate:ULt(),xhoverformat:uZ("x"),yhoverformat:uZ("y"),zhoverformat:uZ("z"),mode:Yg({},e1.mode,{dflt:"lines+markers"}),surfaceaxis:{valType:"enumerated",values:[-1,0,1,2],dflt:-1},surfacecolor:{valType:"color"},projection:{x:cZ("x"),y:cZ("y"),z:cZ("z")},connectgaps:e1.connectgaps,line:XLt,marker:Yg({symbol:{valType:"enumerated",values:HLe(GLt),dflt:"circle",arrayOk:!0},size:Yg({},N2.size,{dflt:8}),sizeref:N2.sizeref,sizemin:N2.sizemin,sizemode:N2.sizemode,opacity:Yg({},N2.opacity,{arrayOk:!1}),colorbar:N2.colorbar,line:Yg({width:Yg({},ZLt.width,{arrayOk:!1})},hZ("marker.line"))},hZ("marker")),textposition:Yg({},e1.textposition,{dflt:"top center"}),textfont:NLt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,variantValues:["normal","small-caps"]}),opacity:VLe.opacity,hoverinfo:Yg({},VLe.hoverinfo)},"calc","nested");fZ.x.editType=fZ.y.editType=fZ.z.editType="calc+clearAxisTypes"});var ZLe=ye((gvr,WLe)=>{"use strict";var jLe=ba(),YLt=Mr(),vZ=lu(),KLt=$p(),JLt=R0(),$Lt=D0(),QLt=dZ();WLe.exports=function(t,r,n,i){function a(d,v){return YLt.coerce(t,r,QLt,d,v)}var o=ePt(t,r,a,i);if(!o){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),a("mode"),vZ.hasMarkers(r)&&KLt(t,r,n,i,a,{noSelect:!0,noAngle:!0}),vZ.hasLines(r)&&(a("connectgaps"),JLt(t,r,n,i,a)),vZ.hasText(r)&&(a("texttemplate"),$Lt(t,r,i,a,{noSelect:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var s=(r.line||{}).color,l=(r.marker||{}).color;a("surfaceaxis")>=0&&a("surfacecolor",s||l);for(var u=["x","y","z"],c=0;c<3;++c){var f="projection."+u[c];a(f+".show")&&(a(f+".opacity"),a(f+".scale"))}var h=jLe.getComponentMethod("errorbars","supplyDefaults");h(t,r,s||l||n,{axis:"z"}),h(t,r,s||l||n,{axis:"y",inherit:"z"}),h(t,r,s||l||n,{axis:"x",inherit:"z"})};function ePt(e,t,r,n){var i=0,a=r("x"),o=r("y"),s=r("z"),l=jLe.getComponentMethod("calendars","handleTraceDefaults");return l(e,t,["x","y","z"],n),a&&o&&s&&(i=Math.min(a.length,o.length,s.length),t._length=t._xlength=t._ylength=t._zlength=i),i}});var YLe=ye((mvr,XLe)=>{"use strict";var tPt=km(),rPt=z0();XLe.exports=function(t,r){var n=[{x:!1,y:!1,trace:r,t:{}}];return tPt(n,r),rPt(t,r),n}});var JLe=ye((yvr,KLe)=>{KLe.exports=iPt;function iPt(e,t){if(typeof e!="string")throw new TypeError("must specify type string");if(t=t||{},typeof document=="undefined"&&!t.canvas)return null;var r=t.canvas||document.createElement("canvas");typeof t.width=="number"&&(r.width=t.width),typeof t.height=="number"&&(r.height=t.height);var n=t,i;try{var a=[e];e.indexOf("webgl")===0&&a.push("experimental-"+e);for(var o=0;o{var nPt=JLe();$Le.exports=function(t){return nPt("webgl",t)}});var pZ=ye((xvr,tPe)=>{"use strict";var ePe=va(),aPt=function(){};tPe.exports=function(t){for(var r in t)typeof t[r]=="function"&&(t[r]=aPt);t.destroy=function(){t.container.parentNode.removeChild(t.container)};var n=document.createElement("div");n.className="no-webgl",n.style.cursor="pointer",n.style.fontSize="24px",n.style.color=ePe.defaults[0],n.style.position="absolute",n.style.left=n.style.top="0px",n.style.width=n.style.height="100%",n.style["background-color"]=ePe.lightLine,n.style["z-index"]=30;var i=document.createElement("p");return i.textContent="WebGL is not supported by your browser - visit https://get.webgl.org for more info",i.style.position="relative",i.style.top="50%",i.style.left="50%",i.style.height="30%",i.style.width="50%",i.style.margin="-15% 0 0 -25%",n.appendChild(i),t.container.appendChild(n),t.container.style.background="#FFFFFF",t.container.onclick=function(){window.open("https://get.webgl.org")},!1}});var nPe=ye((bvr,iPe)=>{"use strict";var U2=Jy(),oPt=Mr(),sPt=["xaxis","yaxis","zaxis"];function rPe(){this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickFontWeight=["normal","normal","normal","normal"],this.tickFontStyle=["normal","normal","normal","normal"],this.tickFontVariant=["normal","normal","normal","normal"],this.tickAngle=[0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[18,18,18],this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["Open Sans","Open Sans","Open Sans"],this.labelSize=[20,20,20],this.labelFontWeight=["normal","normal","normal","normal"],this.labelFontStyle=["normal","normal","normal","normal"],this.labelFontVariant=["normal","normal","normal","normal"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[30,30,30],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[10,10,10],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!0,!0,!0],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._defaultTickPad=this.tickPad.slice(),this._defaultLabelPad=this.labelPad.slice(),this._defaultLineTickLength=this.lineTickLength.slice()}var lPt=rPe.prototype;lPt.merge=function(e,t){for(var r=this,n=0;n<3;++n){var i=t[sPt[n]];if(!i.visible){r.tickEnable[n]=!1,r.labelEnable[n]=!1,r.lineEnable[n]=!1,r.lineTickEnable[n]=!1,r.gridEnable[n]=!1,r.zeroEnable[n]=!1,r.backgroundEnable[n]=!1;continue}r.labels[n]=e._meta?oPt.templateString(i.title.text,e._meta):i.title.text,"font"in i.title&&(i.title.font.color&&(r.labelColor[n]=U2(i.title.font.color)),i.title.font.family&&(r.labelFont[n]=i.title.font.family),i.title.font.size&&(r.labelSize[n]=i.title.font.size),i.title.font.weight&&(r.labelFontWeight[n]=i.title.font.weight),i.title.font.style&&(r.labelFontStyle[n]=i.title.font.style),i.title.font.variant&&(r.labelFontVariant[n]=i.title.font.variant)),"showline"in i&&(r.lineEnable[n]=i.showline),"linecolor"in i&&(r.lineColor[n]=U2(i.linecolor)),"linewidth"in i&&(r.lineWidth[n]=i.linewidth),"showgrid"in i&&(r.gridEnable[n]=i.showgrid),"gridcolor"in i&&(r.gridColor[n]=U2(i.gridcolor)),"gridwidth"in i&&(r.gridWidth[n]=i.gridwidth),i.type==="log"?r.zeroEnable[n]=!1:"zeroline"in i&&(r.zeroEnable[n]=i.zeroline),"zerolinecolor"in i&&(r.zeroLineColor[n]=U2(i.zerolinecolor)),"zerolinewidth"in i&&(r.zeroLineWidth[n]=i.zerolinewidth),"ticks"in i&&i.ticks?r.lineTickEnable[n]=!0:r.lineTickEnable[n]=!1,"ticklen"in i&&(r.lineTickLength[n]=r._defaultLineTickLength[n]=i.ticklen),"tickcolor"in i&&(r.lineTickColor[n]=U2(i.tickcolor)),"tickwidth"in i&&(r.lineTickWidth[n]=i.tickwidth),"tickangle"in i&&(r.tickAngle[n]=i.tickangle==="auto"?-3600:Math.PI*-i.tickangle/180),"showticklabels"in i&&(r.tickEnable[n]=i.showticklabels),"tickfont"in i&&(i.tickfont.color&&(r.tickColor[n]=U2(i.tickfont.color)),i.tickfont.family&&(r.tickFont[n]=i.tickfont.family),i.tickfont.size&&(r.tickSize[n]=i.tickfont.size),i.tickfont.weight&&(r.tickFontWeight[n]=i.tickfont.weight),i.tickfont.style&&(r.tickFontStyle[n]=i.tickfont.style),i.tickfont.variant&&(r.tickFontVariant[n]=i.tickfont.variant)),"mirror"in i?["ticks","all","allticks"].indexOf(i.mirror)!==-1?(r.lineTickMirror[n]=!0,r.lineMirror[n]=!0):i.mirror===!0?(r.lineTickMirror[n]=!1,r.lineMirror[n]=!0):(r.lineTickMirror[n]=!1,r.lineMirror[n]=!1):r.lineMirror[n]=!1,"showbackground"in i&&i.showbackground!==!1?(r.backgroundEnable[n]=!0,r.backgroundColor[n]=U2(i.backgroundcolor)):r.backgroundEnable[n]=!1}};function uPt(e,t){var r=new rPe;return r.merge(e,t),r}iPe.exports=uPt});var sPe=ye((wvr,oPe)=>{"use strict";var cPt=Jy(),fPt=["xaxis","yaxis","zaxis"];function aPe(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}var hPt=aPe.prototype;hPt.merge=function(e){for(var t=0;t<3;++t){var r=e[fPt[t]];if(!r.visible){this.enabled[t]=!1,this.drawSides[t]=!1;continue}this.enabled[t]=r.showspikes,this.colors[t]=cPt(r.spikecolor),this.drawSides[t]=r.spikesides,this.lineWidth[t]=r.spikethickness}};function dPt(e){var t=new aPe;return t.merge(e),t}oPe.exports=dPt});var cPe=ye((Tvr,uPe)=>{"use strict";uPe.exports=yPt;var lPe=Qa(),vPt=Mr(),pPt=["xaxis","yaxis","zaxis"],gPt=[0,0,0];function mPt(e){for(var t=new Array(3),r=0;r<3;++r){for(var n=e[r],i=new Array(n.length),a=0;a/g," "));i[a]=u,o.tickmode=s}}t.ticks=i;for(var a=0;a<3;++a){gPt[a]=.5*(e.glplot.bounds[0][a]+e.glplot.bounds[1][a]);for(var c=0;c<2;++c)t.bounds[c][a]=e.glplot.bounds[c][a]}e.contourLevels=mPt(i)}});var mPe=ye((Avr,gPe)=>{"use strict";var dPe=Rd().gl_plot3d,_Pt=dPe.createCamera,fPe=dPe.createScene,xPt=QLe(),bPt=kL(),JD=ba(),up=Mr(),KD=up.preserveDrawingBuffer(),$D=Qa(),Kg=Nc(),wPt=Jy(),TPt=pZ(),APt=DU(),SPt=nPe(),MPt=sPe(),EPt=cPe(),kPt=wg().applyAutorangeOptions,HE,YD,vPe=!1;function pPe(e,t){var r=document.createElement("div"),n=e.container;this.graphDiv=e.graphDiv;var i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.style.position="absolute",i.style.top=i.style.left="0px",i.style.width=i.style.height="100%",i.style["z-index"]=20,i.style["pointer-events"]="none",r.appendChild(i),this.svgContainer=i,r.id=e.id,r.style.position="absolute",r.style.top=r.style.left="0px",r.style.width=r.style.height="100%",n.appendChild(r),this.fullLayout=t,this.id=e.id||"scene",this.fullSceneLayout=t[this.id],this.plotArgs=[[],{},{}],this.axesOptions=SPt(t,t[this.id]),this.spikeOptions=MPt(t[this.id]),this.container=r,this.staticMode=!!e.staticPlot,this.pixelRatio=this.pixelRatio||e.plotGlPixelRatio||2,this.dataScale=[1,1,1],this.contourLevels=[[],[],[]],this.convertAnnotations=JD.getComponentMethod("annotations3d","convert"),this.drawAnnotations=JD.getComponentMethod("annotations3d","draw"),this.initializeGLPlot()}var wv=pPe.prototype;wv.prepareOptions=function(){var e=this,t={canvas:e.canvas,gl:e.gl,glOptions:{preserveDrawingBuffer:KD,premultipliedAlpha:!0,antialias:!0},container:e.container,axes:e.axesOptions,spikes:e.spikeOptions,pickRadius:10,snapToData:!0,autoScale:!0,autoBounds:!1,cameraObject:e.camera,pixelRatio:e.pixelRatio};if(e.staticMode){if(!YD&&(HE=document.createElement("canvas"),YD=xPt({canvas:HE,preserveDrawingBuffer:!0,premultipliedAlpha:!0,antialias:!0}),!YD))throw new Error("error creating static canvas/context for image server");t.gl=YD,t.canvas=HE}return t};var hPe=!0;wv.tryCreatePlot=function(){var e=this,t=e.prepareOptions(),r=!0;try{e.glplot=fPe(t)}catch(n){if(e.staticMode||!hPe||KD)r=!1;else{up.warn(["webgl setup failed possibly due to","false preserveDrawingBuffer config.","The mobile/tablet device may not be detected by is-mobile module.","Enabling preserveDrawingBuffer in second attempt to create webgl scene..."].join(" "));try{KD=t.glOptions.preserveDrawingBuffer=!0,e.glplot=fPe(t)}catch(i){KD=t.glOptions.preserveDrawingBuffer=!1,r=!1}}}return hPe=!1,r};wv.initializeGLCamera=function(){var e=this,t=e.fullSceneLayout.camera,r=t.projection.type==="orthographic";e.camera=_Pt(e.container,{center:[t.center.x,t.center.y,t.center.z],eye:[t.eye.x,t.eye.y,t.eye.z],up:[t.up.x,t.up.y,t.up.z],_ortho:r,zoomMin:.01,zoomMax:100,mode:"orbit"})};wv.initializeGLPlot=function(){var e=this;e.initializeGLCamera();var t=e.tryCreatePlot();if(!t)return TPt(e);e.traces={},e.make4thDimension();var r=e.graphDiv,n=r.layout,i=function(){var o={};return e.isCameraChanged(n)&&(o[e.id+".camera"]=e.getCamera()),e.isAspectChanged(n)&&(o[e.id+".aspectratio"]=e.glplot.getAspectratio(),n[e.id].aspectmode!=="manual"&&(e.fullSceneLayout.aspectmode=n[e.id].aspectmode=o[e.id+".aspectmode"]="manual")),o},a=function(o){if(o.fullSceneLayout.dragmode!==!1){var s=i();o.saveLayout(n),o.graphDiv.emit("plotly_relayout",s)}};return e.glplot.canvas&&(e.glplot.canvas.addEventListener("mouseup",function(){a(e)}),e.glplot.canvas.addEventListener("touchstart",function(){vPe=!0}),e.glplot.canvas.addEventListener("wheel",function(o){if(r._context._scrollZoom.gl3d){if(e.camera._ortho){var s=o.deltaX>o.deltaY?1.1:.9090909090909091,l=e.glplot.getAspectratio();e.glplot.setAspectratio({x:s*l.x,y:s*l.y,z:s*l.z})}a(e)}},bPt?{passive:!1}:!1),e.glplot.canvas.addEventListener("mousemove",function(){if(e.fullSceneLayout.dragmode!==!1&&e.camera.mouseListener.buttons!==0){var o=i();e.graphDiv.emit("plotly_relayouting",o)}}),e.staticMode||e.glplot.canvas.addEventListener("webglcontextlost",function(o){r&&r.emit&&r.emit("plotly_webglcontextlost",{event:o,layer:e.id})},!1)),e.glplot.oncontextloss=function(){e.recoverContext()},e.glplot.onrender=function(){e.render()},!0};wv.render=function(){var e=this,t=e.graphDiv,r,n=e.svgContainer,i=e.container.getBoundingClientRect();t._fullLayout._calcInverseTransform(t);var a=t._fullLayout._invScaleX,o=t._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,"viewBox","0 0 "+s+" "+l),n.setAttributeNS(null,"width",s),n.setAttributeNS(null,"height",l),EPt(e),e.glplot.axes.update(e.axesOptions);for(var u=Object.keys(e.traces),c=null,f=e.glplot.selection,h=0;h")):r.type==="isosurface"||r.type==="volume"?(p.valueLabel=$D.hoverLabelText(e._mockAxis,e._mockAxis.d2l(f.traceCoordinate[3]),r.valuehoverformat),_.push("value: "+p.valueLabel),f.textLabel&&_.push(f.textLabel),L=_.join("
")):L=f.textLabel;var C={x:f.traceCoordinate[0],y:f.traceCoordinate[1],z:f.traceCoordinate[2],data:x._input,fullData:x,curveNumber:x.index,pointNumber:b};Kg.appendArrayPointValue(C,x,b),r._module.eventData&&(C=x._module.eventData(C,f,x,{},b));var M={points:[C]};if(e.fullSceneLayout.hovermode){var g=[];Kg.loneHover({trace:x,x:(.5+.5*v[0]/v[3])*s,y:(.5-.5*v[1]/v[3])*l,xLabel:p.xLabel,yLabel:p.yLabel,zLabel:p.zLabel,text:L,name:c.name,color:Kg.castHoverOption(x,b,"bgcolor")||c.color,borderColor:Kg.castHoverOption(x,b,"bordercolor"),fontFamily:Kg.castHoverOption(x,b,"font.family"),fontSize:Kg.castHoverOption(x,b,"font.size"),fontColor:Kg.castHoverOption(x,b,"font.color"),nameLength:Kg.castHoverOption(x,b,"namelength"),textAlign:Kg.castHoverOption(x,b,"align"),hovertemplate:up.castOption(x,b,"hovertemplate"),hovertemplateLabels:up.extendFlat({},C,p),eventData:[C]},{container:n,gd:t,inOut_bbox:g}),C.bbox=g[0]}f.distance<5&&(f.buttons||vPe)?t.emit("plotly_click",M):t.emit("plotly_hover",M),this.oldEventData=M}else Kg.loneUnhover(n),this.oldEventData&&t.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)};wv.recoverContext=function(){var e=this;e.glplot.dispose();var t=function(){if(e.glplot.gl.isContextLost()){requestAnimationFrame(t);return}if(!e.initializeGLPlot()){up.error("Catastrophic and unrecoverable WebGL error. Context lost.");return}e.plot.apply(e,e.plotArgs)};requestAnimationFrame(t)};var GE=["xaxis","yaxis","zaxis"];function CPt(e,t,r){for(var n=e.fullSceneLayout,i=0;i<3;i++){var a=GE[i],o=a.charAt(0),s=n[a],l=t[o],u=t[o+"calendar"],c=t["_"+o+"length"];if(!up.isArrayOrTypedArray(l))r[0][i]=Math.min(r[0][i],0),r[1][i]=Math.max(r[1][i],c-1);else for(var f,h=0;h<(c||l.length);h++)if(up.isArrayOrTypedArray(l[h]))for(var d=0;dx[1][o])x[0][o]=-1,x[1][o]=1;else{var T=x[1][o]-x[0][o];x[0][o]-=T/32,x[1][o]+=T/32}if(E=[x[0][o],x[1][o]],E=kPt(E,l),x[0][o]=E[0],x[1][o]=E[1],l.isReversed()){var F=x[0][o];x[0][o]=x[1][o],x[1][o]=F}}else E=l.range,x[0][o]=l.r2l(E[0]),x[1][o]=l.r2l(E[1]);x[0][o]===x[1][o]&&(x[0][o]-=1,x[1][o]+=1),b[o]=x[1][o]-x[0][o],l.range=[x[0][o],x[1][o]],l.limitRange(),n.glplot.setBounds(o,{min:l.range[0]*d[o],max:l.range[1]*d[o]})}var q,V=c.aspectmode;if(V==="cube")q=[1,1,1];else if(V==="manual"){var H=c.aspectratio;q=[H.x,H.y,H.z]}else if(V==="auto"||V==="data"){var X=[1,1,1];for(o=0;o<3;++o){l=c[GE[o]],u=l.type;var G=p[u];X[o]=Math.pow(G.acc,1/G.count)/d[o]}V==="data"||Math.max.apply(null,X)/Math.min.apply(null,X)<=4?q=X:q=[1,1,1]}else throw new Error("scene.js aspectRatio was not one of the enumerated types");c.aspectratio.x=f.aspectratio.x=q[0],c.aspectratio.y=f.aspectratio.y=q[1],c.aspectratio.z=f.aspectratio.z=q[2],n.glplot.setAspectratio(c.aspectratio),n.viewInitial.aspectratio||(n.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),n.viewInitial.aspectmode||(n.viewInitial.aspectmode=c.aspectmode);var N=c.domain||null,W=t._size||null;if(N&&W){var re=n.container.style;re.position="absolute",re.left=W.l+N.x[0]*W.w+"px",re.top=W.t+(1-N.y[1])*W.h+"px",re.width=W.w*(N.x[1]-N.x[0])+"px",re.height=W.h*(N.y[1]-N.y[0])+"px"}n.glplot.redraw()}};wv.destroy=function(){var e=this;e.glplot&&(e.camera.mouseListener.enabled=!1,e.container.removeEventListener("wheel",e.camera.wheelListener),e.camera=null,e.glplot.dispose(),e.container.parentNode.removeChild(e.container),e.glplot=null)};function PPt(e){return[[e.eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]}function IPt(e){return{up:{x:e.up[0],y:e.up[1],z:e.up[2]},center:{x:e.center[0],y:e.center[1],z:e.center[2]},eye:{x:e.eye[0],y:e.eye[1],z:e.eye[2]},projection:{type:e._ortho===!0?"orthographic":"perspective"}}}wv.getCamera=function(){var e=this;return e.camera.view.recalcMatrix(e.camera.view.lastT()),IPt(e.camera)};wv.setViewport=function(e){var t=this,r=e.camera;t.camera.lookAt.apply(this,PPt(r)),t.glplot.setAspectratio(e.aspectratio);var n=r.projection.type==="orthographic",i=t.camera._ortho;n!==i&&(t.glplot.redraw(),t.glplot.clearRGBA(),t.glplot.dispose(),t.initializeGLPlot())};wv.isCameraChanged=function(e){var t=this,r=t.getCamera(),n=up.nestedProperty(e,t.id+".camera"),i=n.get();function a(u,c,f,h){var d=["up","center","eye"],v=["x","y","z"];return c[d[f]]&&u[d[f]][v[h]]===c[d[f]][v[h]]}var o=!1;if(i===void 0)o=!0;else{for(var s=0;s<3;s++)for(var l=0;l<3;l++)if(!a(r,i,s,l)){o=!0;break}(!i.projection||r.projection&&r.projection.type!==i.projection.type)&&(o=!0)}return o};wv.isAspectChanged=function(e){var t=this,r=t.glplot.getAspectratio(),n=up.nestedProperty(e,t.id+".aspectratio"),i=n.get();return i===void 0||i.x!==r.x||i.y!==r.y||i.z!==r.z};wv.saveLayout=function(e){var t=this,r=t.fullLayout,n,i,a,o,s,l,u=t.isCameraChanged(e),c=t.isAspectChanged(e),f=u||c;if(f){var h={};if(u&&(n=t.getCamera(),i=up.nestedProperty(e,t.id+".camera"),a=i.get(),h[t.id+".camera"]=a),c&&(o=t.glplot.getAspectratio(),s=up.nestedProperty(e,t.id+".aspectratio"),l=s.get(),h[t.id+".aspectratio"]=l),JD.call("_storeDirectGUIEdit",e,r._preGUI,h),u){i.set(n);var d=up.nestedProperty(r,t.id+".camera");d.set(n)}if(c){s.set(o);var v=up.nestedProperty(r,t.id+".aspectratio");v.set(o),t.glplot.redraw()}}return f};wv.updateFx=function(e,t){var r=this,n=r.camera;if(n)if(e==="orbit")n.mode="orbit",n.keyBindingMode="rotate";else if(e==="turntable"){n.up=[0,0,1],n.mode="turntable",n.keyBindingMode="rotate";var i=r.graphDiv,a=i._fullLayout,o=r.fullSceneLayout.camera,s=o.up.x,l=o.up.y,u=o.up.z;if(u/Math.sqrt(s*s+l*l+u*u)<.999){var c=r.id+".camera.up",f={x:0,y:0,z:1},h={};h[c]=f;var d=i.layout;JD.call("_storeDirectGUIEdit",d,a._preGUI,h),o.up=f,up.nestedProperty(d,c).set(f)}}else n.keyBindingMode=e;r.fullSceneLayout.hovermode=t};function RPt(e,t,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)e[a+l]=Math.min(s*e[a+l],255)}}wv.toImage=function(e){var t=this;e||(e="png"),t.staticMode&&t.container.appendChild(HE),t.glplot.redraw();var r=t.glplot.gl,n=r.drawingBufferWidth,i=r.drawingBufferHeight;r.bindFramebuffer(r.FRAMEBUFFER,null);var a=new Uint8Array(n*i*4);r.readPixels(0,0,n,i,r.RGBA,r.UNSIGNED_BYTE,a),RPt(a,n,i),DPt(a,n,i);var o=document.createElement("canvas");o.width=n,o.height=i;var s=o.getContext("2d",{willReadFrequently:!0}),l=s.createImageData(n,i);l.data.set(a),s.putImageData(l,0,0);var u;switch(e){case"jpeg":u=o.toDataURL("image/jpeg");break;case"webp":u=o.toDataURL("image/webp");break;default:u=o.toDataURL("image/png")}return t.staticMode&&t.container.removeChild(HE),u};wv.setConvert=function(){for(var e=this,t=0;t<3;t++){var r=e.fullSceneLayout[GE[t]];$D.setConvert(r,e.fullLayout),r.setScale=up.noop}};wv.make4thDimension=function(){var e=this,t=e.graphDiv,r=t._fullLayout;e._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},$D.setConvert(e._mockAxis,r)};gPe.exports=pPe});var _Pe=ye((Svr,yPe)=>{"use strict";yPe.exports={scene:{valType:"subplotid",dflt:"scene",editType:"calc+clearAxisTypes"}}});var mZ=ye((Mvr,xPe)=>{"use strict";var zPt=va(),cs=Cd(),gZ=no().extendFlat,FPt=Bu().overrideAll;xPe.exports=FPt({visible:cs.visible,showspikes:{valType:"boolean",dflt:!0},spikesides:{valType:"boolean",dflt:!0},spikethickness:{valType:"number",min:0,dflt:2},spikecolor:{valType:"color",dflt:zPt.defaultLine},showbackground:{valType:"boolean",dflt:!1},backgroundcolor:{valType:"color",dflt:"rgba(204, 204, 204, 0.5)"},showaxeslabels:{valType:"boolean",dflt:!0},color:cs.color,categoryorder:cs.categoryorder,categoryarray:cs.categoryarray,title:{text:cs.title.text,font:cs.title.font},type:gZ({},cs.type,{values:["-","linear","log","date","category"]}),autotypenumbers:cs.autotypenumbers,autorange:cs.autorange,autorangeoptions:{minallowed:cs.autorangeoptions.minallowed,maxallowed:cs.autorangeoptions.maxallowed,clipmin:cs.autorangeoptions.clipmin,clipmax:cs.autorangeoptions.clipmax,include:cs.autorangeoptions.include,editType:"plot"},rangemode:cs.rangemode,minallowed:cs.minallowed,maxallowed:cs.maxallowed,range:gZ({},cs.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],anim:!1}),tickmode:cs.minor.tickmode,nticks:cs.nticks,tick0:cs.tick0,dtick:cs.dtick,tickvals:cs.tickvals,ticktext:cs.ticktext,ticks:cs.ticks,mirror:cs.mirror,ticklen:cs.ticklen,tickwidth:cs.tickwidth,tickcolor:cs.tickcolor,showticklabels:cs.showticklabels,labelalias:cs.labelalias,tickfont:cs.tickfont,tickangle:cs.tickangle,tickprefix:cs.tickprefix,showtickprefix:cs.showtickprefix,ticksuffix:cs.ticksuffix,showticksuffix:cs.showticksuffix,showexponent:cs.showexponent,exponentformat:cs.exponentformat,minexponent:cs.minexponent,separatethousands:cs.separatethousands,tickformat:cs.tickformat,tickformatstops:cs.tickformatstops,hoverformat:cs.hoverformat,showline:cs.showline,linecolor:cs.linecolor,linewidth:cs.linewidth,showgrid:cs.showgrid,gridcolor:gZ({},cs.gridcolor,{dflt:"rgb(204, 204, 204)"}),gridwidth:cs.gridwidth,zeroline:cs.zeroline,zerolinecolor:cs.zerolinecolor,zerolinewidth:cs.zerolinewidth},"plot","from-root")});var bZ=ye((Evr,bPe)=>{"use strict";var yZ=mZ(),qPt=Ju().attributes,_Z=no().extendFlat,OPt=Mr().counterRegex;function xZ(e,t,r){return{x:{valType:"number",dflt:e,editType:"camera"},y:{valType:"number",dflt:t,editType:"camera"},z:{valType:"number",dflt:r,editType:"camera"},editType:"camera"}}bPe.exports={_arrayAttrRegexps:[OPt("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:_Z(xZ(0,0,1),{}),center:_Z(xZ(0,0,0),{}),eye:_Z(xZ(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:qPt({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:yZ,yaxis:yZ,zaxis:yZ,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot"}});var SPe=ye((kvr,APe)=>{"use strict";var BPt=id().mix,wPe=Mr(),NPt=Vs(),UPt=mZ(),VPt=yU(),HPt=JM(),TPe=["xaxis","yaxis","zaxis"],GPt=100*136/187;APe.exports=function(t,r,n){var i,a;function o(u,c){return wPe.coerce(i,a,UPt,u,c)}for(var s=0;s{"use strict";var jPt=Mr(),WPt=va(),ZPt=ba(),XPt=C_(),YPt=SPe(),MPe=bZ(),KPt=kd().getSubplotData,EPe="gl3d";kPe.exports=function(t,r,n){var i=r._basePlotModules.length>1;function a(o){if(!i){var s=jPt.validate(t[o],MPe[o]);if(s)return t[o]}}XPt(t,r,n,{type:EPe,attributes:MPe,handleDefaults:JPt,fullLayout:r,font:r.font,fullData:n,getDfltFromLayout:a,autotypenumbersDflt:r.autotypenumbers,paper_bgcolor:r.paper_bgcolor,calendar:r.calendar})};function JPt(e,t,r,n){for(var i=r("bgcolor"),a=WPt.combine(i,n.paper_bgcolor),o=["up","center","eye"],s=0;s.999)&&(h="turntable")}else h="turntable";r("dragmode",h),r("hovermode",n.getDfltFromLayout("hovermode"))}});var Q_=ye(cp=>{"use strict";var $Pt=Bu().overrideAll,QPt=N1(),eIt=mPe(),tIt=kd().getSubplotData,rIt=Mr(),iIt=Zp(),O5="gl3d",wZ="scene";cp.name=O5;cp.attr=wZ;cp.idRoot=wZ;cp.idRegex=cp.attrRegex=rIt.counterRegex("scene");cp.attributes=_Pe();cp.layoutAttributes=bZ();cp.baseLayoutAttrOverrides=$Pt({hoverlabel:QPt.hoverlabel},"plot","nested");cp.supplyLayoutDefaults=CPe();cp.plot=function(t){for(var r=t._fullLayout,n=t._fullData,i=r._subplots[O5],a=0;a{"use strict";LPe.exports={plot:ULe(),attributes:dZ(),markerSymbols:ZD(),supplyDefaults:ZLe(),colorbar:[{container:"marker",min:"cmin",max:"cmax"},{container:"line",min:"cmin",max:"cmax"}],calc:YLe(),moduleType:"trace",name:"scatter3d",basePlotModule:Q_(),categories:["gl3d","symbols","showLegend","scatter-like"],meta:{}}});var RPe=ye((Ivr,IPe)=>{"use strict";IPe.exports=PPe()});var jE=ye((Rvr,FPe)=>{"use strict";var DPe=va(),nIt=Jl(),TZ=Oc().axisHoverFormat,aIt=Wo().hovertemplateAttrs,zPe=vl(),AZ=no().extendFlat,oIt=Bu().overrideAll;function SZ(e){return{valType:"boolean",dflt:!1}}function MZ(e){return{show:{valType:"boolean",dflt:!1},start:{valType:"number",dflt:null,editType:"plot"},end:{valType:"number",dflt:null,editType:"plot"},size:{valType:"number",dflt:null,min:0,editType:"plot"},project:{x:SZ("x"),y:SZ("y"),z:SZ("z")},color:{valType:"color",dflt:DPe.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:DPe.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var EZ=FPe.exports=oIt(AZ({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:aIt(),xhoverformat:TZ("x"),yhoverformat:TZ("y"),zhoverformat:TZ("z"),connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},surfacecolor:{valType:"data_array"}},nIt("",{colorAttr:"z or surfacecolor",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:"calc"}),{contours:{x:MZ("x"),y:MZ("y"),z:MZ("z")},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05},roughness:{valType:"number",min:0,max:1,dflt:.5},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},opacityscale:{valType:"any",editType:"calc"},hoverinfo:AZ({},zPe.hoverinfo),showlegend:AZ({},zPe.showlegend,{dflt:!1})}),"calc","nested");EZ.x.editType=EZ.y.editType=EZ.z.editType="calc+clearAxisTypes"});var CZ=ye((Dvr,BPe)=>{"use strict";var sIt=ba(),qPe=Mr(),lIt=Uh(),uIt=jE(),kZ=.1;function cIt(e,t){for(var r=[],n=32,i=0;i{"use strict";var NPe=zv();UPe.exports=function(t,r){r.surfacecolor?NPe(t,r,{vals:r.surfacecolor,containerStr:"",cLetter:"c"}):NPe(t,r,{vals:r.z,containerStr:"",cLetter:"c"})}});var XPe=ye((Fvr,ZPe)=>{"use strict";var dIt=Rd().gl_surface3d,B5=Rd().ndarray,vIt=Rd().ndarray_linear_interpolate.d2,pIt=e8(),gIt=t8(),WE=Mr().isArrayOrTypedArray,mIt=$y().parseColorScale,HPe=Jy(),yIt=Mu().extractOpts;function jPe(e,t,r){this.scene=e,this.uid=r,this.surface=t,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var Jg=jPe.prototype;Jg.getXat=function(e,t,r,n){var i=WE(this.data.x)?WE(this.data.x[0])?this.data.x[t][e]:this.data.x[e]:e;return r===void 0?i:n.d2l(i,0,r)};Jg.getYat=function(e,t,r,n){var i=WE(this.data.y)?WE(this.data.y[0])?this.data.y[t][e]:this.data.y[t]:t;return r===void 0?i:n.d2l(i,0,r)};Jg.getZat=function(e,t,r,n){var i=this.data.z[t][e];return i===null&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[t][e]),r===void 0?i:n.d2l(i,0,r)};Jg.handlePick=function(e){if(e.object===this.surface){var t=(e.data.index[0]-1)/this.dataScaleX-1,r=(e.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(t),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);e.index=[n,i],e.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],e.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=e.dataCoordinate[a];o!=null&&(e.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return WE(s)&&s[i]&&s[i][n]!==void 0?e.textLabel=s[i][n]:s?e.textLabel=s:e.textLabel="",e.data.dataCoordinate=e.dataCoordinate.slice(),this.surface.highlight(e.data),this.scene.glplot.spikes.position=e.dataCoordinate,!0}};function _It(e){var t=e[0].rgb,r=e[e.length-1].rgb;return t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]}var N5=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function xIt(e,t){if(e0){r=N5[n];break}return r}function wIt(e,t){if(!(e<1||t<1)){for(var r=LZ(e),n=LZ(t),i=1,a=0;aQD;)n--,n/=bIt(n),n++,n1?i:1};function AIt(e,t,r){var n=r[8]+r[2]*t[0]+r[5]*t[1];return e[0]=(r[6]+r[0]*t[0]+r[3]*t[1])/n,e[1]=(r[7]+r[1]*t[0]+r[4]*t[1])/n,e}function SIt(e,t,r){return MIt(e,t,AIt,r),e}function MIt(e,t,r,n){for(var i=[0,0],a=e.shape[0],o=e.shape[1],s=0;s0&&this.contourStart[n]!==null&&this.contourEnd[n]!==null&&this.contourEnd[n]>this.contourStart[n]))for(t[n]=!0,i=this.contourStart[n];ih&&(this.minValues[u]=h),this.maxValues[u]{"use strict";YPe.exports={attributes:jE(),supplyDefaults:CZ().supplyDefaults,colorbar:{min:"cmin",max:"cmax"},calc:VPe(),plot:XPe(),moduleType:"trace",name:"surface",basePlotModule:Q_(),categories:["gl3d","2dMap","showLegend"],meta:{}}});var $Pe=ye((Ovr,JPe)=>{"use strict";JPe.exports=KPe()});var U5=ye((Bvr,eIe)=>{"use strict";var CIt=Jl(),PZ=Oc().axisHoverFormat,LIt=Wo().hovertemplateAttrs,ex=jE(),QPe=vl(),tx=no().extendFlat;eIe.exports=tx({x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},i:{valType:"data_array",editType:"calc"},j:{valType:"data_array",editType:"calc"},k:{valType:"data_array",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:LIt({editType:"calc"}),xhoverformat:PZ("x"),yhoverformat:PZ("y"),zhoverformat:PZ("z"),delaunayaxis:{valType:"enumerated",values:["x","y","z"],dflt:"z",editType:"calc"},alphahull:{valType:"number",dflt:-1,editType:"calc"},intensity:{valType:"data_array",editType:"calc"},intensitymode:{valType:"enumerated",values:["vertex","cell"],dflt:"vertex",editType:"calc"},color:{valType:"color",editType:"calc"},vertexcolor:{valType:"data_array",editType:"calc"},facecolor:{valType:"data_array",editType:"calc"}},CIt("",{colorAttr:"`intensity`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:ex.opacity,flatshading:{valType:"boolean",dflt:!1,editType:"calc"},contour:{show:tx({},ex.contours.x.show,{}),color:ex.contours.x.color,width:ex.contours.x.width,editType:"calc"},lightposition:{x:tx({},ex.lightposition.x,{dflt:1e5}),y:tx({},ex.lightposition.y,{dflt:1e5}),z:tx({},ex.lightposition.z,{dflt:0}),editType:"calc"},lighting:tx({vertexnormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-12,editType:"calc"},facenormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-6,editType:"calc"},editType:"calc"},ex.lighting),hoverinfo:tx({},QPe.hoverinfo,{editType:"calc"}),showlegend:tx({},QPe.showlegend,{dflt:!1})})});var tz=ye((Nvr,rIe)=>{"use strict";var PIt=Jl(),ez=Oc().axisHoverFormat,IIt=Wo().hovertemplateAttrs,ZE=U5(),tIe=vl(),IZ=no().extendFlat,RIt=Bu().overrideAll;function RZ(e){return{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}}}function DZ(e){return{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}}}var V5=rIe.exports=RIt(IZ({x:{valType:"data_array"},y:{valType:"data_array"},z:{valType:"data_array"},value:{valType:"data_array"},isomin:{valType:"number"},isomax:{valType:"number"},surface:{show:{valType:"boolean",dflt:!0},count:{valType:"integer",dflt:2,min:1},fill:{valType:"number",min:0,max:1,dflt:1},pattern:{valType:"flaglist",flags:["A","B","C","D","E"],extras:["all","odd","even"],dflt:"all"}},spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:.15}},slices:{x:RZ("x"),y:RZ("y"),z:RZ("z")},caps:{x:DZ("x"),y:DZ("y"),z:DZ("z")},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:IIt(),xhoverformat:ez("x"),yhoverformat:ez("y"),zhoverformat:ez("z"),valuehoverformat:ez("value",1),showlegend:IZ({},tIe.showlegend,{dflt:!1})},PIt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:ZE.opacity,lightposition:ZE.lightposition,lighting:ZE.lighting,flatshading:ZE.flatshading,contour:ZE.contour,hoverinfo:IZ({},tIe.hoverinfo)}),"calc","nested");V5.flatshading.dflt=!0;V5.lighting.facenormalsepsilon.dflt=0;V5.x.editType=V5.y.editType=V5.z.editType=V5.value.editType="calc+clearAxisTypes"});var zZ=ye((Uvr,nIe)=>{"use strict";var DIt=Mr(),zIt=ba(),FIt=tz(),qIt=Uh();function OIt(e,t,r,n){function i(a,o){return DIt.coerce(e,t,FIt,a,o)}iIe(e,t,r,n,i)}function iIe(e,t,r,n,i){var a=i("isomin"),o=i("isomax");o!=null&&a!==void 0&&a!==null&&a>o&&(t.isomin=null,t.isomax=null);var s=i("x"),l=i("y"),u=i("z"),c=i("value");if(!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length){t.visible=!1;return}var f=zIt.getComponentMethod("calendars","handleTraceDefaults");f(e,t,["x","y","z"],n),i("valuehoverformat"),["x","y","z"].forEach(function(x){i(x+"hoverformat");var b="caps."+x,p=i(b+".show");p&&i(b+".fill");var E="slices."+x,k=i(E+".show");k&&(i(E+".fill"),i(E+".locations"))});var h=i("spaceframe.show");h&&i("spaceframe.fill");var d=i("surface.show");d&&(i("surface.count"),i("surface.fill"),i("surface.pattern"));var v=i("contour.show");v&&(i("contour.color"),i("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(x){i(x)}),qIt(e,t,n,i,{prefix:"",cLetter:"c"}),t._length=null}nIe.exports={supplyDefaults:OIt,supplyIsoDefaults:iIe}});var rz=ye((Vvr,oIe)=>{"use strict";var qZ=Mr(),BIt=zv();function NIt(e,t){t._len=Math.min(t.u.length,t.v.length,t.w.length,t.x.length,t.y.length,t.z.length),t._u=Gm(t.u,t._len),t._v=Gm(t.v,t._len),t._w=Gm(t.w,t._len),t._x=Gm(t.x,t._len),t._y=Gm(t.y,t._len),t._z=Gm(t.z,t._len);var r=aIe(t);t._gridFill=r.fill,t._Xs=r.Xs,t._Ys=r.Ys,t._Zs=r.Zs,t._len=r.len;var n=0,i,a,o;t.starts&&(i=Gm(t.starts.x||[]),a=Gm(t.starts.y||[]),o=Gm(t.starts.z||[]),n=Math.min(i.length,a.length,o.length)),t._startsX=i||[],t._startsY=a||[],t._startsZ=o||[];var s=0,l=1/0,u;for(u=0;u1&&(k=t[i-1],L=r[i-1],C=n[i-1]),a=0;ak?"-":"+")+"x"),v=v.replace("y",(A>L?"-":"+")+"y"),v=v.replace("z",(_>C?"-":"+")+"z");var T=function(){i=0,M=[],g=[],P=[]};(!i||i{"use strict";var UIt=zv(),VIt=rz().processGrid,iz=rz().filter;sIe.exports=function(t,r){r._len=Math.min(r.x.length,r.y.length,r.z.length,r.value.length),r._x=iz(r.x,r._len),r._y=iz(r.y,r._len),r._z=iz(r.z,r._len),r._value=iz(r.value,r._len);var n=VIt(r);r._gridFill=n.fill,r._Xs=n.Xs,r._Ys=n.Ys,r._Zs=n.Zs,r._len=n.len;for(var i=1/0,a=-1/0,o=0;o{"use strict";lIe.exports=function(t,r,n,i){i=i||t.length;for(var a=new Array(i),o=0;o{"use strict";var HIt=Rd().gl_mesh3d,GIt=$y().parseColorScale,jIt=Mr().isArrayOrTypedArray,WIt=Jy(),ZIt=Mu().extractOpts,uIe=H5(),XE=function(e,t){for(var r=t.length-1;r>0;r--){var n=Math.min(t[r],t[r-1]),i=Math.max(t[r],t[r-1]);if(i>n&&n-1}function ae(bt,Lt){return bt===null?Lt:bt}function _e(bt,Lt,St){T();var Et=[Lt],dt=[St];if(G>=1)Et=[Lt],dt=[St];else if(G>0){var Ht=W(Lt,St);Et=Ht.xyzv,dt=Ht.abc}for(var $t=0;$t-1?St[_r]:P(Br,Or,Nr);Ne>-1?fr[_r]=Ne:fr[_r]=q(Br,Or,Nr,ae(bt,ut))}V(fr[0],fr[1],fr[2])}}function Me(bt,Lt,St){var Et=function(dt,Ht,$t){_e(bt,[Lt[dt],Lt[Ht],Lt[$t]],[St[dt],St[Ht],St[$t]])};Et(0,1,2),Et(2,3,0)}function ke(bt,Lt,St){var Et=function(dt,Ht,$t){_e(bt,[Lt[dt],Lt[Ht],Lt[$t]],[St[dt],St[Ht],St[$t]])};Et(0,1,2),Et(3,0,1),Et(2,3,0),Et(1,2,3)}function ge(bt,Lt,St,Et){var dt=bt[3];dtEt&&(dt=Et);for(var Ht=(bt[3]-dt)/(bt[3]-Lt[3]+1e-9),$t=[],fr=0;fr<4;fr++)$t[fr]=(1-Ht)*bt[fr]+Ht*Lt[fr];return $t}function ie(bt,Lt,St){return bt>=Lt&&bt<=St}function Te(bt){var Lt=.001*(L-A);return bt>=A-Lt&&bt<=L+Lt}function Ee(bt){for(var Lt=[],St=0;St<4;St++){var Et=bt[St];Lt.push([e._x[Et],e._y[Et],e._z[Et],e._value[Et]])}return Lt}var Ae=3;function ze(bt,Lt,St,Et,dt,Ht){Ht||(Ht=1),St=[-1,-1,-1];var $t=!1,fr=[ie(Lt[0][3],Et,dt),ie(Lt[1][3],Et,dt),ie(Lt[2][3],Et,dt)];if(!fr[0]&&!fr[1]&&!fr[2])return!1;var _r=function(Or,Nr,ut){return Te(Nr[0][3])&&Te(Nr[1][3])&&Te(Nr[2][3])?(_e(Or,Nr,ut),!0):Htfr?[E,Ht]:[Ht,k];kt(Lt,_r[0],_r[1])}}var Br=[[Math.min(A,k),Math.max(A,k)],[Math.min(E,L),Math.max(E,L)]];["x","y","z"].forEach(function(Or){for(var Nr=[],ut=0;ut0&&(Le.push(lt.id),Or==="x"?xe.push([lt.distRatio,0,0]):Or==="y"?xe.push([0,lt.distRatio,0]):xe.push([0,0,lt.distRatio]))}else Or==="x"?ht=er(1,d-1):Or==="y"?ht=er(1,v-1):ht=er(1,x-1);Le.length>0&&(Or==="x"?Nr[Ne]=Ct(bt,Le,Ye,Ve,xe,Nr[Ne]):Or==="y"?Nr[Ne]=Yt(bt,Le,Ye,Ve,xe,Nr[Ne]):Nr[Ne]=xr(bt,Le,Ye,Ve,xe,Nr[Ne]),Ne++),ht.length>0&&(Or==="x"?Nr[Ne]=ct(bt,ht,Ye,Ve,Nr[Ne]):Or==="y"?Nr[Ne]=qt(bt,ht,Ye,Ve,Nr[Ne]):Nr[Ne]=rt(bt,ht,Ye,Ve,Nr[Ne]),Ne++)}var Gt=e.caps[Or];Gt.show&&Gt.fill&&(N(Gt.fill),Or==="x"?Nr[Ne]=ct(bt,[0,d-1],Ye,Ve,Nr[Ne]):Or==="y"?Nr[Ne]=qt(bt,[0,v-1],Ye,Ve,Nr[Ne]):Nr[Ne]=rt(bt,[0,x-1],Ye,Ve,Nr[Ne]),Ne++)}}),s===0&&F(),e._meshX=_,e._meshY=C,e._meshZ=M,e._meshIntensity=g,e._Xs=c,e._Ys=f,e._Zs=h}return xt(),e}function YIt(e,t){var r=e.glplot.gl,n=HIt({gl:r}),i=new cIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}hIe.exports={findNearestOnAxis:XE,generateIsoMeshes:fIe,createIsosurfaceTrace:YIt}});var vIe=ye((Wvr,dIe)=>{"use strict";dIe.exports={attributes:tz(),supplyDefaults:zZ().supplyDefaults,calc:OZ(),colorbar:{min:"cmin",max:"cmax"},plot:nz().createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var gIe=ye((Zvr,pIe)=>{"use strict";pIe.exports=vIe()});var UZ=ye((Xvr,yIe)=>{"use strict";var KIt=Jl(),xh=tz(),JIt=jE(),mIe=vl(),NZ=no().extendFlat,$It=Bu().overrideAll,az=yIe.exports=$It(NZ({x:xh.x,y:xh.y,z:xh.z,value:xh.value,isomin:xh.isomin,isomax:xh.isomax,surface:xh.surface,spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:1}},slices:xh.slices,caps:xh.caps,text:xh.text,hovertext:xh.hovertext,xhoverformat:xh.xhoverformat,yhoverformat:xh.yhoverformat,zhoverformat:xh.zhoverformat,valuehoverformat:xh.valuehoverformat,hovertemplate:xh.hovertemplate},KIt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{colorbar:xh.colorbar,opacity:xh.opacity,opacityscale:JIt.opacityscale,lightposition:xh.lightposition,lighting:xh.lighting,flatshading:xh.flatshading,contour:xh.contour,hoverinfo:NZ({},mIe.hoverinfo),showlegend:NZ({},mIe.showlegend,{dflt:!1})}),"calc","nested");az.x.editType=az.y.editType=az.z.editType=az.value.editType="calc+clearAxisTypes"});var xIe=ye((Yvr,_Ie)=>{"use strict";var QIt=Mr(),e8t=UZ(),t8t=zZ().supplyIsoDefaults,r8t=CZ().opacityscaleDefaults;_Ie.exports=function(t,r,n,i){function a(o,s){return QIt.coerce(t,r,e8t,o,s)}t8t(t,r,n,i,a),r8t(t,r,i,a)}});var AIe=ye((Kvr,TIe)=>{"use strict";var i8t=Rd().gl_mesh3d,n8t=$y().parseColorScale,a8t=Mr().isArrayOrTypedArray,o8t=Jy(),s8t=Mu().extractOpts,bIe=H5(),VZ=nz().findNearestOnAxis,l8t=nz().generateIsoMeshes;function wIe(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.data=null,this.showContour=!1}var HZ=wIe.prototype;HZ.handlePick=function(e){if(e.object===this.mesh){var t=e.data.index,r=this.data._meshX[t],n=this.data._meshY[t],i=this.data._meshZ[t],a=this.data._Ys.length,o=this.data._Zs.length,s=VZ(r,this.data._Xs).id,l=VZ(n,this.data._Ys).id,u=VZ(i,this.data._Zs).id,c=e.index=u+o*l+o*a*s;e.traceCoordinate=[this.data._meshX[c],this.data._meshY[c],this.data._meshZ[c],this.data._value[c]];var f=this.data.hovertext||this.data.text;return a8t(f)&&f[c]!==void 0?e.textLabel=f[c]:f&&(e.textLabel=f),!0}};HZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=l8t(e);function n(l,u,c,f){return u.map(function(h){return l.d2l(h,0,f)*c})}var i=bIe(n(r.xaxis,e._meshX,t.dataScale[0],e.xcalendar),n(r.yaxis,e._meshY,t.dataScale[1],e.ycalendar),n(r.zaxis,e._meshZ,t.dataScale[2],e.zcalendar)),a=bIe(e._meshI,e._meshJ,e._meshK),o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,opacityscale:e.opacityscale,contourEnable:e.contour.show,contourColor:o8t(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading},s=s8t(e);o.vertexIntensity=e._meshIntensity,o.vertexIntensityBounds=[s.min,s.max],o.colormap=n8t(e),this.mesh.update(o)};HZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function u8t(e,t){var r=e.glplot.gl,n=i8t({gl:r}),i=new wIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}TIe.exports=u8t});var MIe=ye((Jvr,SIe)=>{"use strict";SIe.exports={attributes:UZ(),supplyDefaults:xIe(),calc:OZ(),colorbar:{min:"cmin",max:"cmax"},plot:AIe(),moduleType:"trace",name:"volume",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var kIe=ye(($vr,EIe)=>{"use strict";EIe.exports=MIe()});var PIe=ye((Qvr,LIe)=>{"use strict";var c8t=ba(),CIe=Mr(),f8t=Uh(),h8t=U5();LIe.exports=function(t,r,n,i){function a(c,f){return CIe.coerce(t,r,h8t,c,f)}function o(c){var f=c.map(function(h){var d=a(h);return d&&CIe.isArrayOrTypedArray(d)?d:null});return f.every(function(h){return h&&h.length===f[0].length})&&f}var s=o(["x","y","z"]);if(!s){r.visible=!1;return}if(o(["i","j","k"]),r.i&&(!r.j||!r.k)||r.j&&(!r.k||!r.i)||r.k&&(!r.i||!r.j)){r.visible=!1;return}var l=c8t.getComponentMethod("calendars","handleTraceDefaults");l(t,r,["x","y","z"],i),["lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","alphahull","delaunayaxis","opacity"].forEach(function(c){a(c)});var u=a("contour.show");u&&(a("contour.color"),a("contour.width")),"intensity"in t?(a("intensity"),a("intensitymode"),f8t(t,r,i,a,{prefix:"",cLetter:"c"})):(r.showscale=!1,"facecolor"in t?a("facecolor"):"vertexcolor"in t?a("vertexcolor"):a("color",n)),a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var RIe=ye((epr,IIe)=>{"use strict";var d8t=zv();IIe.exports=function(t,r){r.intensity&&d8t(t,r,{vals:r.intensity,containerStr:"",cLetter:"c"})}});var OIe=ye((tpr,qIe)=>{"use strict";var v8t=Rd().gl_mesh3d,p8t=Rd().delaunay_triangulate,g8t=Rd().alpha_shape,m8t=Rd().convex_hull,y8t=$y().parseColorScale,_8t=Mr().isArrayOrTypedArray,ZZ=Jy(),x8t=Mu().extractOpts,DIe=H5();function FIe(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var XZ=FIe.prototype;XZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index;e.data._cellCenter?e.traceCoordinate=e.data.dataCoordinate:e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]];var r=this.data.hovertext||this.data.text;return _8t(r)&&r[t]!==void 0?e.textLabel=r[t]:r&&(e.textLabel=r),!0}};function zIe(e){for(var t=[],r=e.length,n=0;n=t-.5)return!1;return!0}XZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=e;var n=e.x.length,i=DIe(GZ(r.xaxis,e.x,t.dataScale[0],e.xcalendar),GZ(r.yaxis,e.y,t.dataScale[1],e.ycalendar),GZ(r.zaxis,e.z,t.dataScale[2],e.zcalendar)),a;if(e.i&&e.j&&e.k){if(e.i.length!==e.j.length||e.j.length!==e.k.length||!WZ(e.i,n)||!WZ(e.j,n)||!WZ(e.k,n))return;a=DIe(jZ(e.i),jZ(e.j),jZ(e.k))}else e.alphahull===0?a=m8t(i):e.alphahull>0?a=g8t(e.alphahull,i):a=b8t(e.delaunayaxis,i);var o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,contourEnable:e.contour.show,contourColor:ZZ(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading};if(e.intensity){var s=x8t(e);this.color="#fff";var l=e.intensitymode;o[l+"Intensity"]=e.intensity,o[l+"IntensityBounds"]=[s.min,s.max],o.colormap=y8t(e)}else e.vertexcolor?(this.color=e.vertexcolor[0],o.vertexColors=zIe(e.vertexcolor)):e.facecolor?(this.color=e.facecolor[0],o.cellColors=zIe(e.facecolor)):(this.color=e.color,o.meshColor=ZZ(e.color));this.mesh.update(o)};XZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function w8t(e,t){var r=e.glplot.gl,n=v8t({gl:r}),i=new FIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}qIe.exports=w8t});var NIe=ye((rpr,BIe)=>{"use strict";BIe.exports={attributes:U5(),supplyDefaults:PIe(),calc:RIe(),colorbar:{min:"cmin",max:"cmax"},plot:OIe(),moduleType:"trace",name:"mesh3d",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var VIe=ye((ipr,UIe)=>{"use strict";UIe.exports=NIe()});var KZ=ye((npr,GIe)=>{"use strict";var T8t=Jl(),G5=Oc().axisHoverFormat,A8t=Wo().hovertemplateAttrs,S8t=U5(),HIe=vl(),YZ=no().extendFlat,oz={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute","raw"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:A8t({editType:"calc"},{keys:["norm"]}),uhoverformat:G5("u",1),vhoverformat:G5("v",1),whoverformat:G5("w",1),xhoverformat:G5("x"),yhoverformat:G5("y"),zhoverformat:G5("z"),showlegend:YZ({},HIe.showlegend,{dflt:!1})};YZ(oz,T8t("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var M8t=["opacity","lightposition","lighting"];M8t.forEach(function(e){oz[e]=S8t[e]});oz.hoverinfo=YZ({},HIe.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"});GIe.exports=oz});var WIe=ye((apr,jIe)=>{"use strict";var E8t=Mr(),k8t=Uh(),C8t=KZ();jIe.exports=function(t,r,n,i){function a(d,v){return E8t.coerce(t,r,C8t,d,v)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}var h=a("sizemode");a("sizeref",h==="raw"?1:.5),a("anchor"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),k8t(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var XIe=ye((opr,ZIe)=>{"use strict";var L8t=zv();ZIe.exports=function(t,r){for(var n=r.u,i=r.v,a=r.w,o=Math.min(r.x.length,r.y.length,r.z.length,n.length,i.length,a.length),s=-1/0,l=1/0,u=0;u{"use strict";var P8t=Rd().gl_cone3d,I8t=Rd().gl_cone3d.createConeMesh,R8t=Mr().simpleMap,D8t=$y().parseColorScale,z8t=Mu().extractOpts,F8t=Mr().isArrayOrTypedArray,YIe=H5();function KIe(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var JZ=KIe.prototype;JZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index,r=this.data.x[t],n=this.data.y[t],i=this.data.z[t],a=this.data.u[t],o=this.data.v[t],s=this.data.w[t];e.traceCoordinate=[r,n,i,a,o,s,Math.sqrt(a*a+o*o+s*s)];var l=this.data.hovertext||this.data.text;return F8t(l)&&l[t]!==void 0?e.textLabel=l[t]:l&&(e.textLabel=l),!0}};var q8t={xaxis:0,yaxis:1,zaxis:2},O8t={tip:1,tail:0,cm:.25,center:.5},B8t={tip:1,tail:1,cm:.75,center:.5};function JIe(e,t){var r=e.fullSceneLayout,n=e.dataScale,i={};function a(c,f){var h=r[f],d=n[q8t[f]];return R8t(c,function(v){return h.d2l(v)*d})}i.vectors=YIe(a(t.u,"xaxis"),a(t.v,"yaxis"),a(t.w,"zaxis"),t._len),i.positions=YIe(a(t.x,"xaxis"),a(t.y,"yaxis"),a(t.z,"zaxis"),t._len);var o=z8t(t);i.colormap=D8t(t),i.vertexIntensityBounds=[o.min/t._normMax,o.max/t._normMax],i.coneOffset=O8t[t.anchor];var s=t.sizemode;s==="scaled"?i.coneSize=t.sizeref||.5:s==="absolute"?i.coneSize=t.sizeref&&t._normMax?t.sizeref/t._normMax:.5:s==="raw"&&(i.coneSize=t.sizeref),i.coneSizemode=s;var l=P8t(i),u=t.lightposition;return l.lightPosition=[u.x,u.y,u.z],l.ambient=t.lighting.ambient,l.diffuse=t.lighting.diffuse,l.specular=t.lighting.specular,l.roughness=t.lighting.roughness,l.fresnel=t.lighting.fresnel,l.opacity=t.opacity,t._pad=B8t[t.anchor]*l.vectorScale*l.coneScale*t._normMax,l}JZ.update=function(e){this.data=e;var t=JIe(this.scene,e);this.mesh.update(t)};JZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function N8t(e,t){var r=e.glplot.gl,n=JIe(e,t),i=I8t(r,n),a=new KIe(e,t.uid);return a.mesh=i,a.data=t,i._trace=a,e.glplot.add(i),a}$Ie.exports=N8t});var t8e=ye((lpr,e8e)=>{"use strict";e8e.exports={moduleType:"trace",name:"cone",basePlotModule:Q_(),categories:["gl3d","showLegend"],attributes:KZ(),supplyDefaults:WIe(),colorbar:{min:"cmin",max:"cmax"},calc:XIe(),plot:QIe(),eventData:function(e,t){return e.norm=t.traceCoordinate[6],e},meta:{}}});var i8e=ye((upr,r8e)=>{"use strict";r8e.exports=t8e()});var QZ=ye((cpr,a8e)=>{"use strict";var U8t=Jl(),j5=Oc().axisHoverFormat,V8t=Wo().hovertemplateAttrs,H8t=U5(),n8e=vl(),$Z=no().extendFlat,sz={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},starts:{x:{valType:"data_array",editType:"calc"},y:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},editType:"calc"},maxdisplayed:{valType:"integer",min:0,dflt:1e3,editType:"calc"},sizeref:{valType:"number",editType:"calc",min:0,dflt:1},text:{valType:"string",dflt:"",editType:"calc"},hovertext:{valType:"string",dflt:"",editType:"calc"},hovertemplate:V8t({editType:"calc"},{keys:["tubex","tubey","tubez","tubeu","tubev","tubew","norm","divergence"]}),uhoverformat:j5("u",1),vhoverformat:j5("v",1),whoverformat:j5("w",1),xhoverformat:j5("x"),yhoverformat:j5("y"),zhoverformat:j5("z"),showlegend:$Z({},n8e.showlegend,{dflt:!1})};$Z(sz,U8t("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var G8t=["opacity","lightposition","lighting"];G8t.forEach(function(e){sz[e]=H8t[e]});sz.hoverinfo=$Z({},n8e.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","divergence","text","name"],dflt:"x+y+z+norm+text+name"});a8e.exports=sz});var s8e=ye((fpr,o8e)=>{"use strict";var j8t=Mr(),W8t=Uh(),Z8t=QZ();o8e.exports=function(t,r,n,i){function a(h,d){return j8t.coerce(t,r,Z8t,h,d)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}a("starts.x"),a("starts.y"),a("starts.z"),a("maxdisplayed"),a("sizeref"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),W8t(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var p8e=ye((hpr,v8e)=>{"use strict";var c8e=Rd().gl_streamtube3d,X8t=c8e.createTubeMesh,Y8t=Mr(),K8t=$y().parseColorScale,J8t=Mu().extractOpts,l8e=H5(),f8e={xaxis:0,yaxis:1,zaxis:2};function h8e(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var tX=h8e.prototype;tX.handlePick=function(e){var t=this.scene.fullSceneLayout,r=this.scene.dataScale;function n(o,s){var l=t[s],u=r[f8e[s]];return l.l2c(o)/u}if(e.object===this.mesh){var i=e.data.position,a=e.data.velocity;return e.traceCoordinate=[n(i[0],"xaxis"),n(i[1],"yaxis"),n(i[2],"zaxis"),n(a[0],"xaxis"),n(a[1],"yaxis"),n(a[2],"zaxis"),e.data.intensity*this.data._normMax,e.data.divergence],e.textLabel=this.data.hovertext||this.data.text,!0}};function u8e(e){var t=e.length,r;return t>2?r=e.slice(1,t-1):t===2?r=[(e[0]+e[1])/2]:r=e,r}function eX(e){var t=e.length;return t===1?[.5,.5]:[e[1]-e[0],e[t-1]-e[t-2]]}function d8e(e,t){var r=e.fullSceneLayout,n=e.dataScale,i=t._len,a={};function o(F,q){var V=r[q],H=n[f8e[q]];return Y8t.simpleMap(F,function(X){return V.d2l(X)*H})}if(a.vectors=l8e(o(t._u,"xaxis"),o(t._v,"yaxis"),o(t._w,"zaxis"),i),!i)return{positions:[],cells:[]};var s=o(t._Xs,"xaxis"),l=o(t._Ys,"yaxis"),u=o(t._Zs,"zaxis");a.meshgrid=[s,l,u],a.gridFill=t._gridFill;var c=t._slen;if(c)a.startingPositions=l8e(o(t._startsX,"xaxis"),o(t._startsY,"yaxis"),o(t._startsZ,"zaxis"));else{for(var f=l[0],h=u8e(s),d=u8e(u),v=new Array(h.length*d.length),x=0,b=0;b{"use strict";g8e.exports={moduleType:"trace",name:"streamtube",basePlotModule:Q_(),categories:["gl3d","showLegend"],attributes:QZ(),supplyDefaults:s8e(),colorbar:{min:"cmin",max:"cmax"},calc:rz().calc,plot:p8e(),eventData:function(e,t){return e.tubex=e.x,e.tubey=e.y,e.tubez=e.z,e.tubeu=t.traceCoordinate[3],e.tubev=t.traceCoordinate[4],e.tubew=t.traceCoordinate[5],e.norm=t.traceCoordinate[6],e.divergence=t.traceCoordinate[7],delete e.x,delete e.y,delete e.z,e},meta:{}}});var _8e=ye((vpr,y8e)=>{"use strict";y8e.exports=m8e()});var H2=ye((ppr,w8e)=>{"use strict";var Q8t=Wo().hovertemplateAttrs,eRt=Wo().texttemplateAttrs,tRt=Eg(),jm=Uc(),rRt=vl(),x8e=Jl(),iRt=Ed().dash,V2=no().extendFlat,nRt=Bu().overrideAll,eg=jm.marker,b8e=jm.line,aRt=eg.line;w8e.exports=nRt({lon:{valType:"data_array"},lat:{valType:"data_array"},locations:{valType:"data_array"},locationmode:{valType:"enumerated",values:["ISO-3","USA-states","country names","geojson-id"],dflt:"ISO-3"},geojson:{valType:"any",editType:"calc"},featureidkey:{valType:"string",editType:"calc",dflt:"id"},mode:V2({},jm.mode,{dflt:"markers"}),text:V2({},jm.text,{}),texttemplate:eRt({editType:"plot"},{keys:["lat","lon","location","text"]}),hovertext:V2({},jm.hovertext,{}),textfont:jm.textfont,textposition:jm.textposition,line:{color:b8e.color,width:b8e.width,dash:iRt},connectgaps:jm.connectgaps,marker:V2({symbol:eg.symbol,opacity:eg.opacity,angle:eg.angle,angleref:V2({},eg.angleref,{values:["previous","up","north"]}),standoff:eg.standoff,size:eg.size,sizeref:eg.sizeref,sizemin:eg.sizemin,sizemode:eg.sizemode,colorbar:eg.colorbar,line:V2({width:aRt.width},x8e("marker.line")),gradient:eg.gradient},x8e("marker")),fill:{valType:"enumerated",values:["none","toself"],dflt:"none"},fillcolor:tRt(),selected:jm.selected,unselected:jm.unselected,hoverinfo:V2({},rRt.hoverinfo,{flags:["lon","lat","location","text","name"]}),hovertemplate:Q8t()},"calc","nested")});var A8e=ye((gpr,T8e)=>{"use strict";var rX=Mr(),iX=lu(),oRt=$p(),sRt=R0(),lRt=D0(),uRt=Ig(),cRt=H2();T8e.exports=function(t,r,n,i){function a(d,v){return rX.coerce(t,r,cRt,d,v)}var o=a("locations"),s;if(o&&o.length){var l=a("geojson"),u;(typeof l=="string"&&l!==""||rX.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="geojson-id"&&a("featureidkey"),s=o.length}else{var f=a("lon")||[],h=a("lat")||[];s=Math.min(f.length,h.length)}if(!s){r.visible=!1;return}r._length=s,a("text"),a("hovertext"),a("hovertemplate"),a("mode"),iX.hasMarkers(r)&&oRt(t,r,n,i,a,{gradient:!0}),iX.hasLines(r)&&(sRt(t,r,n,i,a),a("connectgaps")),iX.hasText(r)&&(a("texttemplate"),lRt(t,r,i,a)),a("fill"),r.fill!=="none"&&uRt(t,r,n,a),rX.coerceSelectionMarkerOpacity(r,a)}});var E8e=ye((mpr,M8e)=>{"use strict";var S8e=Qa();M8e.exports=function(t,r,n){var i={},a=n[r.geo]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=S8e.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=S8e.tickText(o,o.c2l(s[1]),!0).text,i}});var lz=ye((ypr,P8e)=>{"use strict";var nX=uo(),k8e=es().BADNUM,fRt=z0(),hRt=km(),dRt=F0(),vRt=Mr().isArrayOrTypedArray,C8e=Mr()._;function L8e(e){return e&&typeof e=="string"}P8e.exports=function(t,r){var n=vRt(r.locations),i=n?r.locations.length:r._length,a=new Array(i),o;r.geojson?o=function(h){return L8e(h)||nX(h)}:o=L8e;for(var s=0;s{"use strict";Tv.projNames={airy:"airy",aitoff:"aitoff","albers usa":"albersUsa",albers:"albers",august:"august","azimuthal equal area":"azimuthalEqualArea","azimuthal equidistant":"azimuthalEquidistant",baker:"baker",bertin1953:"bertin1953",boggs:"boggs",bonne:"bonne",bottomley:"bottomley",bromley:"bromley",collignon:"collignon","conic conformal":"conicConformal","conic equal area":"conicEqualArea","conic equidistant":"conicEquidistant",craig:"craig",craster:"craster","cylindrical equal area":"cylindricalEqualArea","cylindrical stereographic":"cylindricalStereographic",eckert1:"eckert1",eckert2:"eckert2",eckert3:"eckert3",eckert4:"eckert4",eckert5:"eckert5",eckert6:"eckert6",eisenlohr:"eisenlohr","equal earth":"equalEarth",equirectangular:"equirectangular",fahey:"fahey","foucaut sinusoidal":"foucautSinusoidal",foucaut:"foucaut",ginzburg4:"ginzburg4",ginzburg5:"ginzburg5",ginzburg6:"ginzburg6",ginzburg8:"ginzburg8",ginzburg9:"ginzburg9",gnomonic:"gnomonic","gringorten quincuncial":"gringortenQuincuncial",gringorten:"gringorten",guyou:"guyou",hammer:"hammer",hill:"hill",homolosine:"homolosine",hufnagel:"hufnagel",hyperelliptical:"hyperelliptical",kavrayskiy7:"kavrayskiy7",lagrange:"lagrange",larrivee:"larrivee",laskowski:"laskowski",loximuthal:"loximuthal",mercator:"mercator",miller:"miller",mollweide:"mollweide","mt flat polar parabolic":"mtFlatPolarParabolic","mt flat polar quartic":"mtFlatPolarQuartic","mt flat polar sinusoidal":"mtFlatPolarSinusoidal","natural earth":"naturalEarth","natural earth1":"naturalEarth1","natural earth2":"naturalEarth2","nell hammer":"nellHammer",nicolosi:"nicolosi",orthographic:"orthographic",patterson:"patterson","peirce quincuncial":"peirceQuincuncial",polyconic:"polyconic","rectangular polyconic":"rectangularPolyconic",robinson:"robinson",satellite:"satellite","sinu mollweide":"sinuMollweide",sinusoidal:"sinusoidal",stereographic:"stereographic",times:"times","transverse mercator":"transverseMercator","van der grinten":"vanDerGrinten","van der grinten2":"vanDerGrinten2","van der grinten3":"vanDerGrinten3","van der grinten4":"vanDerGrinten4",wagner4:"wagner4",wagner6:"wagner6",wiechel:"wiechel","winkel tripel":"winkel3",winkel3:"winkel3"};Tv.axesNames=["lonaxis","lataxis"];Tv.lonaxisSpan={orthographic:180,"azimuthal equal area":360,"azimuthal equidistant":360,"conic conformal":180,gnomonic:160,stereographic:180,"transverse mercator":180,"*":360};Tv.lataxisSpan={"conic conformal":150,stereographic:179.5,"*":180};Tv.scopeDefaults={world:{lonaxisRange:[-180,180],lataxisRange:[-90,90],projType:"equirectangular",projRotate:[0,0,0]},usa:{lonaxisRange:[-180,-50],lataxisRange:[15,80],projType:"albers usa"},europe:{lonaxisRange:[-30,60],lataxisRange:[30,85],projType:"conic conformal",projRotate:[15,0,0],projParallels:[0,60]},asia:{lonaxisRange:[22,160],lataxisRange:[-15,55],projType:"mercator",projRotate:[0,0,0]},africa:{lonaxisRange:[-30,60],lataxisRange:[-40,40],projType:"mercator",projRotate:[0,0,0]},"north america":{lonaxisRange:[-180,-45],lataxisRange:[5,85],projType:"conic conformal",projRotate:[-100,0,0],projParallels:[29.5,45.5]},"south america":{lonaxisRange:[-100,-30],lataxisRange:[-60,15],projType:"mercator",projRotate:[0,0,0]}};Tv.clipPad=.001;Tv.precision=.1;Tv.landColor="#F0DC82";Tv.waterColor="#3399FF";Tv.locationmodeToLayer={"ISO-3":"countries","USA-states":"subunits","country names":"countries"};Tv.sphereSVG={type:"Sphere"};Tv.fillLayers={ocean:1,land:1,lakes:1};Tv.lineLayers={subunits:1,countries:1,coastlines:1,rivers:1,frame:1};Tv.layers=["bg","ocean","land","lakes","subunits","countries","coastlines","rivers","lataxis","lonaxis","frame","backplot","frontplot"];Tv.layersForChoropleth=["bg","ocean","land","subunits","countries","coastlines","lataxis","lonaxis","frame","backplot","rivers","lakes","frontplot"];Tv.layerNameToAdjective={ocean:"ocean",land:"land",lakes:"lake",subunits:"subunit",countries:"country",coastlines:"coastline",rivers:"river",frame:"frame"}});var aX=ye((uz,I8e)=>{(function(e,t){typeof uz=="object"&&typeof I8e!="undefined"?t(uz):(e=e||self,t(e.topojson=e.topojson||{}))})(uz,function(e){"use strict";function t(k){return k}function r(k){if(k==null)return t;var A,L,_=k.scale[0],C=k.scale[1],M=k.translate[0],g=k.translate[1];return function(P,T){T||(A=L=0);var F=2,q=P.length,V=new Array(q);for(V[0]=(A+=P[0])*_+M,V[1]=(L+=P[1])*C+g;FM&&(M=F[0]),F[1]g&&(g=F[1])}function T(F){switch(F.type){case"GeometryCollection":F.geometries.forEach(T);break;case"Point":P(F.coordinates);break;case"MultiPoint":F.coordinates.forEach(P);break}}k.arcs.forEach(function(F){for(var q=-1,V=F.length,H;++qM&&(M=H[0]),H[1]g&&(g=H[1])});for(L in k.objects)T(k.objects[L]);return[_,C,M,g]}function i(k,A){for(var L,_=k.length,C=_-A;C<--_;)L=k[C],k[C++]=k[_],k[_]=L}function a(k,A){return typeof A=="string"&&(A=k.objects[A]),A.type==="GeometryCollection"?{type:"FeatureCollection",features:A.geometries.map(function(L){return o(k,L)})}:o(k,A)}function o(k,A){var L=A.id,_=A.bbox,C=A.properties==null?{}:A.properties,M=s(k,A);return L==null&&_==null?{type:"Feature",properties:C,geometry:M}:_==null?{type:"Feature",id:L,properties:C,geometry:M}:{type:"Feature",id:L,bbox:_,properties:C,geometry:M}}function s(k,A){var L=r(k.transform),_=k.arcs;function C(q,V){V.length&&V.pop();for(var H=_[q<0?~q:q],X=0,G=H.length;X1)_=f(k,A,L);else for(C=0,_=new Array(M=k.arcs.length);C1)for(var V=1,H=P(F[0]),X,G;VH&&(G=F[0],F[0]=F[V],F[V]=G,H=X);return F}).filter(function(T){return T.length>0})}}function x(k,A){for(var L=0,_=k.length;L<_;){var C=L+_>>>1;k[C]=2))throw new Error("n must be \u22652");T=k.bbox||n(k);var L=T[0],_=T[1],C=T[2],M=T[3],g;A={scale:[C-L?(C-L)/(g-1):1,M-_?(M-_)/(g-1):1],translate:[L,_]}}else T=k.bbox;var P=p(A),T,F,q=k.objects,V={};function H(N){return P(N)}function X(N){var W;switch(N.type){case"GeometryCollection":W={type:"GeometryCollection",geometries:N.geometries.map(X)};break;case"Point":W={type:"Point",coordinates:H(N.coordinates)};break;case"MultiPoint":W={type:"MultiPoint",coordinates:N.coordinates.map(H)};break;default:return N}return N.id!=null&&(W.id=N.id),N.bbox!=null&&(W.bbox=N.bbox),N.properties!=null&&(W.properties=N.properties),W}function G(N){var W=0,re=1,ae=N.length,_e,Me=new Array(ae);for(Me[0]=P(N[0],0);++W{"use strict";var oX=R8e.exports={},pRt=YE().locationmodeToLayer,gRt=aX().feature;oX.getTopojsonName=function(e){return[e.scope.replace(/ /g,"-"),"_",e.resolution.toString(),"m"].join("")};oX.getTopojsonPath=function(e,t){return e+t+".json"};oX.getTopojsonFeatures=function(e,t){var r=pRt[e.locationmode],n=t.objects[r];return gRt(t,n).features}});var rx=ye(KE=>{"use strict";var mRt=es().BADNUM;KE.calcTraceToLineCoords=function(e){for(var t=e[0].trace,r=t.connectgaps,n=[],i=[],a=0;a0&&(n.push(i),i=[])}return i.length>0&&n.push(i),n};KE.makeLine=function(e){return e.length===1?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e}};KE.makePolygon=function(e){if(e.length===1)return{type:"Polygon",coordinates:e};for(var t=new Array(e.length),r=0;r{D8e.exports={AFG:"afghan",ALA:"\\b\\wland",ALB:"albania",DZA:"algeria",ASM:"^(?=.*americ).*samoa",AND:"andorra",AGO:"angola",AIA:"anguill?a",ATA:"antarctica",ATG:"antigua",ARG:"argentin",ARM:"armenia",ABW:"^(?!.*bonaire).*\\baruba",AUS:"australia",AUT:"^(?!.*hungary).*austria|\\baustri.*\\bemp",AZE:"azerbaijan",BHS:"bahamas",BHR:"bahrain",BGD:"bangladesh|^(?=.*east).*paki?stan",BRB:"barbados",BLR:"belarus|byelo",BEL:"^(?!.*luxem).*belgium",BLZ:"belize|^(?=.*british).*honduras",BEN:"benin|dahome",BMU:"bermuda",BTN:"bhutan",BOL:"bolivia",BES:"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",BIH:"herzegovina|bosnia",BWA:"botswana|bechuana",BVT:"bouvet",BRA:"brazil",IOT:"british.?indian.?ocean",BRN:"brunei",BGR:"bulgaria",BFA:"burkina|\\bfaso|upper.?volta",BDI:"burundi",CPV:"verde",KHM:"cambodia|kampuchea|khmer",CMR:"cameroon",CAN:"canada",CYM:"cayman",CAF:"\\bcentral.african.republic",TCD:"\\bchad",CHL:"\\bchile",CHN:"^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",CXR:"christmas",CCK:"\\bcocos|keeling",COL:"colombia",COM:"comoro",COG:"^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",COK:"\\bcook",CRI:"costa.?rica",CIV:"ivoire|ivory",HRV:"croatia",CUB:"\\bcuba",CUW:"^(?!.*bonaire).*\\bcura(c|\xE7)ao",CYP:"cyprus",CSK:"czechoslovakia",CZE:"^(?=.*rep).*czech|czechia|bohemia",COD:"\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",DNK:"denmark",DJI:"djibouti",DMA:"dominica(?!n)",DOM:"dominican.rep",ECU:"ecuador",EGY:"egypt",SLV:"el.?salvador",GNQ:"guine.*eq|eq.*guine|^(?=.*span).*guinea",ERI:"eritrea",EST:"estonia",ETH:"ethiopia|abyssinia",FLK:"falkland|malvinas",FRO:"faroe|faeroe",FJI:"fiji",FIN:"finland",FRA:"^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",GUF:"^(?=.*french).*guiana",PYF:"french.?polynesia|tahiti",ATF:"french.?southern",GAB:"gabon",GMB:"gambia",GEO:"^(?!.*south).*georgia",DDR:"german.?democratic.?republic|democratic.?republic.*germany|east.germany",DEU:"^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",GHA:"ghana|gold.?coast",GIB:"gibraltar",GRC:"greece|hellenic|hellas",GRL:"greenland",GRD:"grenada",GLP:"guadeloupe",GUM:"\\bguam",GTM:"guatemala",GGY:"guernsey",GIN:"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",GNB:"bissau|^(?=.*portu).*guinea",GUY:"guyana|british.?guiana",HTI:"haiti",HMD:"heard.*mcdonald",VAT:"holy.?see|vatican|papal.?st",HND:"^(?!.*brit).*honduras",HKG:"hong.?kong",HUN:"^(?!.*austr).*hungary",ISL:"iceland",IND:"india(?!.*ocea)",IDN:"indonesia",IRN:"\\biran|persia",IRQ:"\\biraq|mesopotamia",IRL:"(^ireland)|(^republic.*ireland)",IMN:"^(?=.*isle).*\\bman",ISR:"israel",ITA:"italy",JAM:"jamaica",JPN:"japan",JEY:"jersey",JOR:"jordan",KAZ:"kazak",KEN:"kenya|british.?east.?africa|east.?africa.?prot",KIR:"kiribati",PRK:"^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",KWT:"kuwait",KGZ:"kyrgyz|kirghiz",LAO:"\\blaos?\\b",LVA:"latvia",LBN:"lebanon",LSO:"lesotho|basuto",LBR:"liberia",LBY:"libya",LIE:"liechtenstein",LTU:"lithuania",LUX:"^(?!.*belg).*luxem",MAC:"maca(o|u)",MDG:"madagascar|malagasy",MWI:"malawi|nyasa",MYS:"malaysia",MDV:"maldive",MLI:"\\bmali\\b",MLT:"\\bmalta",MHL:"marshall",MTQ:"martinique",MRT:"mauritania",MUS:"mauritius",MYT:"\\bmayotte",MEX:"\\bmexic",FSM:"fed.*micronesia|micronesia.*fed",MCO:"monaco",MNG:"mongolia",MNE:"^(?!.*serbia).*montenegro",MSR:"montserrat",MAR:"morocco|\\bmaroc",MOZ:"mozambique",MMR:"myanmar|burma",NAM:"namibia",NRU:"nauru",NPL:"nepal",NLD:"^(?!.*\\bant)(?!.*\\bcarib).*netherlands",ANT:"^(?=.*\\bant).*(nether|dutch)",NCL:"new.?caledonia",NZL:"new.?zealand",NIC:"nicaragua",NER:"\\bniger(?!ia)",NGA:"nigeria",NIU:"niue",NFK:"norfolk",MNP:"mariana",NOR:"norway",OMN:"\\boman|trucial",PAK:"^(?!.*east).*paki?stan",PLW:"palau",PSE:"palestin|\\bgaza|west.?bank",PAN:"panama",PNG:"papua|new.?guinea",PRY:"paraguay",PER:"peru",PHL:"philippines",PCN:"pitcairn",POL:"poland",PRT:"portugal",PRI:"puerto.?rico",QAT:"qatar",KOR:"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",MDA:"moldov|b(a|e)ssarabia",REU:"r(e|\xE9)union",ROU:"r(o|u|ou)mania",RUS:"\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",RWA:"rwanda",BLM:"barth(e|\xE9)lemy",SHN:"helena",KNA:"kitts|\\bnevis",LCA:"\\blucia",MAF:"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",SPM:"miquelon",VCT:"vincent",WSM:"^(?!.*amer).*samoa",SMR:"san.?marino",STP:"\\bs(a|\xE3)o.?tom(e|\xE9)",SAU:"\\bsa\\w*.?arabia",SEN:"senegal",SRB:"^(?!.*monte).*serbia",SYC:"seychell",SLE:"sierra",SGP:"singapore",SXM:"^(?!.*martin)(?!.*saba).*maarten",SVK:"^(?!.*cze).*slovak",SVN:"slovenia",SLB:"solomon",SOM:"somali",ZAF:"south.africa|s\\\\..?africa",SGS:"south.?georgia|sandwich",SSD:"\\bs\\w*.?sudan",ESP:"spain",LKA:"sri.?lanka|ceylon",SDN:"^(?!.*\\bs(?!u)).*sudan",SUR:"surinam|dutch.?guiana",SJM:"svalbard",SWZ:"swaziland",SWE:"sweden",CHE:"switz|swiss",SYR:"syria",TWN:"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",TJK:"tajik",THA:"thailand|\\bsiam",MKD:"macedonia|fyrom",TLS:"^(?=.*leste).*timor|^(?=.*east).*timor",TGO:"togo",TKL:"tokelau",TON:"tonga",TTO:"trinidad|tobago",TUN:"tunisia",TUR:"turkey",TKM:"turkmen",TCA:"turks",TUV:"tuvalu",UGA:"uganda",UKR:"ukrain",ARE:"emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",GBR:"united.?kingdom|britain|^u\\.?k\\.?$",TZA:"tanzania",USA:"united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",UMI:"minor.?outlying.?is",URY:"uruguay",UZB:"uzbek",VUT:"vanuatu|new.?hebrides",VEN:"venezuela",VNM:"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",VGB:"^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",VIR:"^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",WLF:"futuna|wallis",ESH:"western.sahara",YEM:"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",YMD:"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",YUG:"yugoslavia",ZMB:"zambia|northern.?rhodesia",EAZ:"zanzibar",ZWE:"zimbabwe|^(?!.*northern).*rhodesia"}});var dz=ye(ku=>{"use strict";Object.defineProperty(ku,"__esModule",{value:!0});var qp=63710088e-1,lX={centimeters:qp*100,centimetres:qp*100,degrees:360/(2*Math.PI),feet:qp*3.28084,inches:qp*39.37,kilometers:qp/1e3,kilometres:qp/1e3,meters:qp,metres:qp,miles:qp/1609.344,millimeters:qp*1e3,millimetres:qp*1e3,nauticalmiles:qp/1852,radians:1,yards:qp*1.0936},sX={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,nauticalmiles:29155334959812285e-23,millimeters:1e6,millimetres:1e6,yards:1.195990046};function ix(e,t,r={}){let n={type:"Feature"};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function yRt(e,t,r={}){switch(e){case"Point":return uX(t).geometry;case"LineString":return fX(t).geometry;case"Polygon":return cX(t).geometry;case"MultiPoint":return q8e(t).geometry;case"MultiLineString":return F8e(t).geometry;case"MultiPolygon":return O8e(t).geometry;default:throw new Error(e+" is invalid")}}function uX(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!fz(e[0])||!fz(e[1]))throw new Error("coordinates must contain numbers");return ix({type:"Point",coordinates:e},t,r)}function _Rt(e,t,r={}){return hz(e.map(n=>uX(n,t)),r)}function cX(e,t,r={}){for(let i of e){if(i.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(i[i.length-1].length!==i[0].length)throw new Error("First and last Position are not equivalent.");for(let a=0;acX(n,t)),r)}function fX(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return ix({type:"LineString",coordinates:e},t,r)}function bRt(e,t,r={}){return hz(e.map(n=>fX(n,t)),r)}function hz(e,t={}){let r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function F8e(e,t,r={}){return ix({type:"MultiLineString",coordinates:e},t,r)}function q8e(e,t,r={}){return ix({type:"MultiPoint",coordinates:e},t,r)}function O8e(e,t,r={}){return ix({type:"MultiPolygon",coordinates:e},t,r)}function wRt(e,t,r={}){return ix({type:"GeometryCollection",geometries:e},t,r)}function TRt(e,t=0){if(t&&!(t>=0))throw new Error("precision must be a positive number");let r=Math.pow(10,t||0);return Math.round(e*r)/r}function B8e(e,t="kilometers"){let r=lX[t];if(!r)throw new Error(t+" units is invalid");return e*r}function hX(e,t="kilometers"){let r=lX[t];if(!r)throw new Error(t+" units is invalid");return e/r}function ARt(e,t){return N8e(hX(e,t))}function SRt(e){let t=e%360;return t<0&&(t+=360),t}function MRt(e){return e=e%360,e>0?e>180?e-360:e:e<-180?e+360:e}function N8e(e){return e%(2*Math.PI)*180/Math.PI}function ERt(e){return e%360*Math.PI/180}function kRt(e,t="kilometers",r="kilometers"){if(!(e>=0))throw new Error("length must be a positive number");return B8e(hX(e,t),r)}function CRt(e,t="meters",r="kilometers"){if(!(e>=0))throw new Error("area must be a positive number");let n=sX[t];if(!n)throw new Error("invalid original units");let i=sX[r];if(!i)throw new Error("invalid final units");return e/n*i}function fz(e){return!isNaN(e)&&e!==null&&!Array.isArray(e)}function LRt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function PRt(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(e.length!==4&&e.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach(t=>{if(!fz(t))throw new Error("bbox must only contain numbers")})}function IRt(e){if(!e)throw new Error("id is required");if(["string","number"].indexOf(typeof e)===-1)throw new Error("id must be a number or a string")}ku.areaFactors=sX;ku.azimuthToBearing=MRt;ku.bearingToAzimuth=SRt;ku.convertArea=CRt;ku.convertLength=kRt;ku.degreesToRadians=ERt;ku.earthRadius=qp;ku.factors=lX;ku.feature=ix;ku.featureCollection=hz;ku.geometry=yRt;ku.geometryCollection=wRt;ku.isNumber=fz;ku.isObject=LRt;ku.lengthToDegrees=ARt;ku.lengthToRadians=hX;ku.lineString=fX;ku.lineStrings=bRt;ku.multiLineString=F8e;ku.multiPoint=q8e;ku.multiPolygon=O8e;ku.point=uX;ku.points=_Rt;ku.polygon=cX;ku.polygons=xRt;ku.radiansToDegrees=N8e;ku.radiansToLength=B8e;ku.round=TRt;ku.validateBBox=PRt;ku.validateId=IRt});var pz=ye(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var jv=dz();function JE(e,t,r){if(e!==null)for(var n,i,a,o,s,l,u,c=0,f=0,h,d=e.type,v=d==="FeatureCollection",x=d==="Feature",b=v?e.features.length:1,p=0;pl||v>u||x>c){s=f,l=n,u=v,c=x,a=0;return}var b=jv.lineString.call(void 0,[s,f],r.properties);if(t(b,n,i,x,a)===!1)return!1;a++,s=f})===!1)return!1}}})}function BRt(e,t,r){var n=r,i=!1;return H8e(e,function(a,o,s,l,u){i===!1&&r===void 0?n=a:n=t(n,a,o,s,l,u),i=!0}),n}function G8e(e,t){if(!e)throw new Error("geojson is required");vz(e,function(r,n,i){if(r.geometry!==null){var a=r.geometry.type,o=r.geometry.coordinates;switch(a){case"LineString":if(t(r,n,i,0,0)===!1)return!1;break;case"Polygon":for(var s=0;s{"use strict";Object.defineProperty(gz,"__esModule",{value:!0});var j8e=dz(),HRt=pz();function X8e(e){return HRt.geomReduce.call(void 0,e,(t,r)=>t+GRt(r),0)}function GRt(e){let t=0,r;switch(e.type){case"Polygon":return W8e(e.coordinates);case"MultiPolygon":for(r=0;r0){t+=Math.abs(Z8e(e[0]));for(let r=1;r=t?(n+2)%t:n+2],s=i[0]*vX,l=a[1]*vX,u=o[0]*vX;r+=(u-s)*Math.sin(l),n++}return r*jRt}var WRt=X8e;gz.area=X8e;gz.default=WRt});var J8e=ye(mz=>{"use strict";Object.defineProperty(mz,"__esModule",{value:!0});var ZRt=dz(),XRt=pz();function K8e(e,t={}){let r=0,n=0,i=0;return XRt.coordEach.call(void 0,e,function(a){r+=a[0],n+=a[1],i++},!0),ZRt.point.call(void 0,[r/i,n/i],t.properties)}var YRt=K8e;mz.centroid=K8e;mz.default=YRt});var Q8e=ye(yz=>{"use strict";Object.defineProperty(yz,"__esModule",{value:!0});var KRt=pz();function $8e(e,t={}){if(e.bbox!=null&&t.recompute!==!0)return e.bbox;let r=[1/0,1/0,-1/0,-1/0];return KRt.coordEach.call(void 0,e,n=>{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]{"use strict";var $Rt=xa(),rRe=z8e(),{area:QRt}=Y8e(),{centroid:eDt}=J8e(),{bbox:tDt}=Q8e(),eRe=OS(),W5=G1(),rDt=gy(),iDt=ES(),_z=wM(),tRe=Object.keys(rRe),nDt={"ISO-3":eRe,"USA-states":eRe,"country names":aDt};function aDt(e){for(var t=0;t0&&c[f+1][0]<0)return f;return null}switch(n==="RUS"||n==="FJI"?a=function(c){var f;if(u(c)===null)f=c;else for(f=new Array(c.length),l=0;lf?h[d++]=[c[l][0]+360,c[l][1]]:l===f?(h[d++]=c[l],h[d++]=[c[l][0],-90]):h[d++]=c[l];var v=_z.tester(h);v.pts.pop(),i.push(v)}:a=function(c){i.push(_z.tester(c))},t.type){case"MultiPolygon":for(o=0;o0?v.properties.ct=uDt(v):v.properties.ct=[NaN,NaN],h.fIn=c,h.fOut=v,i.push(v)}else W5.log(["Location",h.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete n[f]}switch(r.type){case"FeatureCollection":var l=r.features;for(a=0;ai&&(i=s,r=o)}else r=t;return eDt(r).geometry.coordinates}function cDt(e){var t=window.PlotlyGeoAssets||{},r=[];function n(l){return new Promise(function(u,c){$Rt.json(l,function(f,h){if(f){delete t[l];var d=f.status===404?'GeoJSON at URL "'+l+'" does not exist.':"Unexpected error while fetching from "+l;return c(new Error(d))}return t[l]=h,u(h)})})}function i(l){return new Promise(function(u,c){var f=0,h=setInterval(function(){if(t[l]&&t[l]!=="pending")return clearInterval(h),u(t[l]);if(f>100)return clearInterval(h),c("Unexpected error while fetching from "+l);f++},50)})}for(var a=0;a{"use strict";var hDt=xa(),dDt=ao(),aRe=va(),oRe=op(),vDt=oRe.stylePoints,pDt=oRe.styleText;sRe.exports=function(t,r){r&&gDt(t,r)};function gDt(e,t){var r=t[0].trace,n=t[0].node3;n.style("opacity",t[0].trace.opacity),vDt(n,r,e),pDt(n,r,e),n.selectAll("path.js-line").style("fill","none").each(function(i){var a=hDt.select(this),o=i.trace,s=o.line||{};a.call(aRe.stroke,s.color).call(dDt.dashLine,s.dash||"",s.width||0),o.fill!=="none"&&a.call(aRe.fill,o.fillcolor)})}});var _X=ye((Lpr,cRe)=>{"use strict";var lRe=xa(),bz=Mr(),mDt=cz().getTopojsonFeatures,gX=rx(),xz=nx(),uRe=wg().findExtremes,yX=es().BADNUM,yDt=q0().calcMarkerSize,mX=lu(),_Dt=pX();function xDt(e,t,r){var n=t.layers.frontplot.select(".scatterlayer"),i=bz.makeTraceGroups(n,r,"trace scattergeo");function a(o,s){o.lonlat[0]===yX&&lRe.select(s).remove()}i.selectAll("*").remove(),i.each(function(o){var s=lRe.select(this),l=o[0].trace;if(mX.hasLines(l)||l.fill!=="none"){var u=gX.calcTraceToLineCoords(o),c=l.fill!=="none"?gX.makePolygon(u):gX.makeLine(u);s.selectAll("path.js-line").data([{geojson:c,trace:l}]).enter().append("path").classed("js-line",!0).style("stroke-miterlimit",2)}mX.hasMarkers(l)&&s.selectAll("path.point").data(bz.identity).enter().append("path").classed("point",!0).each(function(f){a(f,this)}),mX.hasText(l)&&s.selectAll("g").data(bz.identity).enter().append("g").append("text").each(function(f){a(f,this)}),_Dt(e,o)})}function bDt(e,t){var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r._length,o,s;if(bz.isArrayOrTypedArray(r.locations)){var l=r.locationmode,u=l==="geojson-id"?xz.extractTraceFeature(e):mDt(r,i.topojson);for(o=0;o{"use strict";var wDt=Nc(),TDt=es().BADNUM,ADt=oT(),SDt=Mr().fillText,MDt=H2();fRe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.xa,s=t.ya,l=t.subplot,u=l.projection.isLonLatOverEdges,c=l.project;function f(E){var k=E.lonlat;if(k[0]===TDt||u(k))return 1/0;var A=c(k),L=c([r,n]),_=Math.abs(A[0]-L[0]),C=Math.abs(A[1]-L[1]),M=Math.max(3,E.mrc||0);return Math.max(Math.sqrt(_*_+C*C)-M,1-3/M)}if(wDt.getClosest(i,f,t),t.index!==!1){var h=i[t.index],d=h.lonlat,v=[o.c2p(d),s.c2p(d)],x=h.mrc||1;t.x0=v[0]-x,t.x1=v[0]+x,t.y0=v[1]-x,t.y1=v[1]+x,t.loc=h.loc,t.lon=d[0],t.lat=d[1];var b={};b[a.geo]={_subplot:l};var p=a._module.formatLabels(h,a,b);return t.lonLabel=p.lonLabel,t.latLabel=p.latLabel,t.color=ADt(a,h),t.extraText=EDt(a,h,t,i[0].t.labels),t.hovertemplate=a.hovertemplate,[t]}};function EDt(e,t,r,n){if(e.hovertemplate)return;var i=t.hi||e.hoverinfo,a=i==="all"?MDt.hoverinfo.flags:i.split("+"),o=a.indexOf("location")!==-1&&Array.isArray(e.locations),s=a.indexOf("lon")!==-1,l=a.indexOf("lat")!==-1,u=a.indexOf("text")!==-1,c=[];function f(h){return h+"\xB0"}return o?c.push(t.loc):s&&l?c.push("("+f(r.latLabel)+", "+f(r.lonLabel)+")"):s?c.push(n.lon+f(r.lonLabel)):l&&c.push(n.lat+f(r.latLabel)),u&&SDt(t,e,c),c.join("
")}});var vRe=ye((Ipr,dRe)=>{"use strict";dRe.exports=function(t,r,n,i,a){t.lon=r.lon,t.lat=r.lat,t.location=r.loc?r.loc:null;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t}});var mRe=ye((Rpr,gRe)=>{"use strict";var pRe=lu(),kDt=es().BADNUM;gRe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h,d=!pRe.hasMarkers(s)&&!pRe.hasText(s);if(d)return[];if(r===!1)for(h=0;h{(function(e,t){t(typeof wz=="object"&&typeof yRe!="undefined"?wz:e.d3=e.d3||{})})(wz,function(e){"use strict";function t(Ee,Ae){return EeAe?1:Ee>=Ae?0:NaN}function r(Ee){return Ee.length===1&&(Ee=n(Ee)),{left:function(Ae,ze,Ce,me){for(Ce==null&&(Ce=0),me==null&&(me=Ae.length);Ce>>1;Ee(Ae[Re],ze)<0?Ce=Re+1:me=Re}return Ce},right:function(Ae,ze,Ce,me){for(Ce==null&&(Ce=0),me==null&&(me=Ae.length);Ce>>1;Ee(Ae[Re],ze)>0?me=Re:Ce=Re+1}return Ce}}}function n(Ee){return function(Ae,ze){return t(Ee(Ae),ze)}}var i=r(t),a=i.right,o=i.left;function s(Ee,Ae){Ae==null&&(Ae=l);for(var ze=0,Ce=Ee.length-1,me=Ee[0],Re=new Array(Ce<0?0:Ce);zeEe?1:Ae>=Ee?0:NaN}function f(Ee){return Ee===null?NaN:+Ee}function h(Ee,Ae){var ze=Ee.length,Ce=0,me=-1,Re=0,ce,Ge,nt=0;if(Ae==null)for(;++me1)return nt/(Ce-1)}function d(Ee,Ae){var ze=h(Ee,Ae);return ze&&Math.sqrt(ze)}function v(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re,ce;if(Ae==null){for(;++Ce=me)for(Re=ce=me;++Ceme&&(Re=me),ce=me)for(Re=ce=me;++Ceme&&(Re=me),ce0)return[Ee];if((Ce=Ae0)for(Ee=Math.ceil(Ee/Ge),Ae=Math.floor(Ae/Ge),ce=new Array(Re=Math.ceil(Ae-Ee+1));++me=0?(Re>=L?10:Re>=_?5:Re>=C?2:1)*Math.pow(10,me):-Math.pow(10,-me)/(Re>=L?10:Re>=_?5:Re>=C?2:1)}function P(Ee,Ae,ze){var Ce=Math.abs(Ae-Ee)/Math.max(0,ze),me=Math.pow(10,Math.floor(Math.log(Ce)/Math.LN10)),Re=Ce/me;return Re>=L?me*=10:Re>=_?me*=5:Re>=C&&(me*=2),Aert;)ot.pop(),--Rt;var kt=new Array(Rt+1),Ct;for(Re=0;Re<=Rt;++Re)Ct=kt[Re]=[],Ct.x0=Re>0?ot[Re-1]:qt,Ct.x1=Re=1)return+ze(Ee[Ce-1],Ce-1,Ee);var Ce,me=(Ce-1)*Ae,Re=Math.floor(me),ce=+ze(Ee[Re],Re,Ee),Ge=+ze(Ee[Re+1],Re+1,Ee);return ce+(Ge-ce)*(me-Re)}}function V(Ee,Ae,ze){return Ee=p.call(Ee,f).sort(t),Math.ceil((ze-Ae)/(2*(q(Ee,.75)-q(Ee,.25))*Math.pow(Ee.length,-1/3)))}function H(Ee,Ae,ze){return Math.ceil((ze-Ae)/(3.5*d(Ee)*Math.pow(Ee.length,-1/3)))}function X(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re;if(Ae==null){for(;++Ce=me)for(Re=me;++CeRe&&(Re=me)}else for(;++Ce=me)for(Re=me;++CeRe&&(Re=me);return Re}function G(Ee,Ae){var ze=Ee.length,Ce=ze,me=-1,Re,ce=0;if(Ae==null)for(;++me=0;)for(ce=Ee[Ae],ze=ce.length;--ze>=0;)Re[--me]=ce[ze];return Re}function re(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re;if(Ae==null){for(;++Ce=me)for(Re=me;++Ceme&&(Re=me)}else for(;++Ce=me)for(Re=me;++Ceme&&(Re=me);return Re}function ae(Ee,Ae){for(var ze=Ae.length,Ce=new Array(ze);ze--;)Ce[ze]=Ee[Ae[ze]];return Ce}function _e(Ee,Ae){if(ze=Ee.length){var ze,Ce=0,me=0,Re,ce=Ee[me];for(Ae==null&&(Ae=t);++Ce{(function(e,t){typeof Tz=="object"&&typeof _Re!="undefined"?t(Tz,$E()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(Tz,function(e,t){"use strict";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(gt){a(i,gt,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(gt,Bt,wr){var vr=gt.s=Bt+wr,Ur=vr-Bt,fi=vr-Ur;gt.t=Bt-fi+(wr-Ur)}var o=1e-6,s=1e-12,l=Math.PI,u=l/2,c=l/4,f=l*2,h=180/l,d=l/180,v=Math.abs,x=Math.atan,b=Math.atan2,p=Math.cos,E=Math.ceil,k=Math.exp,A=Math.log,L=Math.pow,_=Math.sin,C=Math.sign||function(gt){return gt>0?1:gt<0?-1:0},M=Math.sqrt,g=Math.tan;function P(gt){return gt>1?0:gt<-1?l:Math.acos(gt)}function T(gt){return gt>1?u:gt<-1?-u:Math.asin(gt)}function F(gt){return(gt=_(gt/2))*gt}function q(){}function V(gt,Bt){gt&&X.hasOwnProperty(gt.type)&&X[gt.type](gt,Bt)}var H={Feature:function(gt,Bt){V(gt.geometry,Bt)},FeatureCollection:function(gt,Bt){for(var wr=gt.features,vr=-1,Ur=wr.length;++vr=0?1:-1,Ur=vr*wr,fi=p(Bt),xi=_(Bt),Fi=ie*xi,Xi=ge*fi+Fi*p(Ur),hn=Fi*vr*_(Ur);re.add(b(hn,Xi)),ke=gt,ge=fi,ie=xi}function me(gt){return ae.reset(),W(gt,Te),ae*2}function Re(gt){return[b(gt[1],gt[0]),T(gt[2])]}function ce(gt){var Bt=gt[0],wr=gt[1],vr=p(wr);return[vr*p(Bt),vr*_(Bt),_(wr)]}function Ge(gt,Bt){return gt[0]*Bt[0]+gt[1]*Bt[1]+gt[2]*Bt[2]}function nt(gt,Bt){return[gt[1]*Bt[2]-gt[2]*Bt[1],gt[2]*Bt[0]-gt[0]*Bt[2],gt[0]*Bt[1]-gt[1]*Bt[0]]}function ct(gt,Bt){gt[0]+=Bt[0],gt[1]+=Bt[1],gt[2]+=Bt[2]}function qt(gt,Bt){return[gt[0]*Bt,gt[1]*Bt,gt[2]*Bt]}function rt(gt){var Bt=M(gt[0]*gt[0]+gt[1]*gt[1]+gt[2]*gt[2]);gt[0]/=Bt,gt[1]/=Bt,gt[2]/=Bt}var ot,Rt,kt,Ct,Yt,xr,er,Ke,xt=r(),bt,Lt,St={point:Et,lineStart:Ht,lineEnd:$t,polygonStart:function(){St.point=fr,St.lineStart=_r,St.lineEnd=Br,xt.reset(),Te.polygonStart()},polygonEnd:function(){Te.polygonEnd(),St.point=Et,St.lineStart=Ht,St.lineEnd=$t,re<0?(ot=-(kt=180),Rt=-(Ct=90)):xt>o?Ct=90:xt<-o&&(Rt=-90),Lt[0]=ot,Lt[1]=kt},sphere:function(){ot=-(kt=180),Rt=-(Ct=90)}};function Et(gt,Bt){bt.push(Lt=[ot=gt,kt=gt]),BtCt&&(Ct=Bt)}function dt(gt,Bt){var wr=ce([gt*d,Bt*d]);if(Ke){var vr=nt(Ke,wr),Ur=[vr[1],-vr[0],0],fi=nt(Ur,vr);rt(fi),fi=Re(fi);var xi=gt-Yt,Fi=xi>0?1:-1,Xi=fi[0]*h*Fi,hn,Ti=v(xi)>180;Ti^(Fi*YtCt&&(Ct=hn)):(Xi=(Xi+360)%360-180,Ti^(Fi*YtCt&&(Ct=Bt))),Ti?gtOr(ot,kt)&&(kt=gt):Or(gt,kt)>Or(ot,kt)&&(ot=gt):kt>=ot?(gtkt&&(kt=gt)):gt>Yt?Or(ot,gt)>Or(ot,kt)&&(kt=gt):Or(gt,kt)>Or(ot,kt)&&(ot=gt)}else bt.push(Lt=[ot=gt,kt=gt]);BtCt&&(Ct=Bt),Ke=wr,Yt=gt}function Ht(){St.point=dt}function $t(){Lt[0]=ot,Lt[1]=kt,St.point=Et,Ke=null}function fr(gt,Bt){if(Ke){var wr=gt-Yt;xt.add(v(wr)>180?wr+(wr>0?360:-360):wr)}else xr=gt,er=Bt;Te.point(gt,Bt),dt(gt,Bt)}function _r(){Te.lineStart()}function Br(){fr(xr,er),Te.lineEnd(),v(xt)>o&&(ot=-(kt=180)),Lt[0]=ot,Lt[1]=kt,Ke=null}function Or(gt,Bt){return(Bt-=gt)<0?Bt+360:Bt}function Nr(gt,Bt){return gt[0]-Bt[0]}function ut(gt,Bt){return gt[0]<=gt[1]?gt[0]<=Bt&&Bt<=gt[1]:BtOr(vr[0],vr[1])&&(vr[1]=Ur[1]),Or(Ur[0],vr[1])>Or(vr[0],vr[1])&&(vr[0]=Ur[0])):fi.push(vr=Ur);for(xi=-1/0,wr=fi.length-1,Bt=0,vr=fi[wr];Bt<=wr;vr=Ur,++Bt)Ur=fi[Bt],(Fi=Or(vr[1],Ur[0]))>xi&&(xi=Fi,ot=Ur[0],kt=vr[1])}return bt=Lt=null,ot===1/0||Rt===1/0?[[NaN,NaN],[NaN,NaN]]:[[ot,Rt],[kt,Ct]]}var Ye,Ve,Xe,ht,Le,xe,Se,lt,Gt,Vt,ar,Qr,ai,jr,ri,bi,nn={sphere:q,point:Wi,lineStart:_n,lineEnd:Wn,polygonStart:function(){nn.lineStart=It,nn.lineEnd=ft},polygonEnd:function(){nn.lineStart=_n,nn.lineEnd=Wn}};function Wi(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt);Ni(wr*p(gt),wr*_(gt),_(Bt))}function Ni(gt,Bt,wr){++Ye,Xe+=(gt-Xe)/Ye,ht+=(Bt-ht)/Ye,Le+=(wr-Le)/Ye}function _n(){nn.point=$i}function $i(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt);jr=wr*p(gt),ri=wr*_(gt),bi=_(Bt),nn.point=zn,Ni(jr,ri,bi)}function zn(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt),vr=wr*p(gt),Ur=wr*_(gt),fi=_(Bt),xi=b(M((xi=ri*fi-bi*Ur)*xi+(xi=bi*vr-jr*fi)*xi+(xi=jr*Ur-ri*vr)*xi),jr*vr+ri*Ur+bi*fi);Ve+=xi,xe+=xi*(jr+(jr=vr)),Se+=xi*(ri+(ri=Ur)),lt+=xi*(bi+(bi=fi)),Ni(jr,ri,bi)}function Wn(){nn.point=Wi}function It(){nn.point=jt}function ft(){Zt(Qr,ai),nn.point=Wi}function jt(gt,Bt){Qr=gt,ai=Bt,gt*=d,Bt*=d,nn.point=Zt;var wr=p(Bt);jr=wr*p(gt),ri=wr*_(gt),bi=_(Bt),Ni(jr,ri,bi)}function Zt(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt),vr=wr*p(gt),Ur=wr*_(gt),fi=_(Bt),xi=ri*fi-bi*Ur,Fi=bi*vr-jr*fi,Xi=jr*Ur-ri*vr,hn=M(xi*xi+Fi*Fi+Xi*Xi),Ti=T(hn),qi=hn&&-Ti/hn;Gt+=qi*xi,Vt+=qi*Fi,ar+=qi*Xi,Ve+=Ti,xe+=Ti*(jr+(jr=vr)),Se+=Ti*(ri+(ri=Ur)),lt+=Ti*(bi+(bi=fi)),Ni(jr,ri,bi)}function yr(gt){Ye=Ve=Xe=ht=Le=xe=Se=lt=Gt=Vt=ar=0,W(gt,nn);var Bt=Gt,wr=Vt,vr=ar,Ur=Bt*Bt+wr*wr+vr*vr;return Url?gt+Math.round(-gt/f)*f:gt,Bt]}Vr.invert=Vr;function gi(gt,Bt,wr){return(gt%=f)?Bt||wr?Zr(Mi(gt),Pi(Bt,wr)):Mi(gt):Bt||wr?Pi(Bt,wr):Vr}function Si(gt){return function(Bt,wr){return Bt+=gt,[Bt>l?Bt-f:Bt<-l?Bt+f:Bt,wr]}}function Mi(gt){var Bt=Si(gt);return Bt.invert=Si(-gt),Bt}function Pi(gt,Bt){var wr=p(gt),vr=_(gt),Ur=p(Bt),fi=_(Bt);function xi(Fi,Xi){var hn=p(Xi),Ti=p(Fi)*hn,qi=_(Fi)*hn,Ii=_(Xi),mi=Ii*wr+Ti*vr;return[b(qi*Ur-mi*fi,Ti*wr-Ii*vr),T(mi*Ur+qi*fi)]}return xi.invert=function(Fi,Xi){var hn=p(Xi),Ti=p(Fi)*hn,qi=_(Fi)*hn,Ii=_(Xi),mi=Ii*Ur-qi*fi;return[b(qi*Ur+Ii*fi,Ti*wr+mi*vr),T(mi*wr-Ti*vr)]},xi}function Gi(gt){gt=gi(gt[0]*d,gt[1]*d,gt.length>2?gt[2]*d:0);function Bt(wr){return wr=gt(wr[0]*d,wr[1]*d),wr[0]*=h,wr[1]*=h,wr}return Bt.invert=function(wr){return wr=gt.invert(wr[0]*d,wr[1]*d),wr[0]*=h,wr[1]*=h,wr},Bt}function Ki(gt,Bt,wr,vr,Ur,fi){if(wr){var xi=p(Bt),Fi=_(Bt),Xi=vr*wr;Ur==null?(Ur=Bt+vr*f,fi=Bt-Xi/2):(Ur=ka(xi,Ur),fi=ka(xi,fi),(vr>0?Urfi)&&(Ur+=vr*f));for(var hn,Ti=Ur;vr>0?Ti>fi:Ti1&>.push(gt.pop().concat(gt.shift()))},result:function(){var wr=gt;return gt=[],Bt=null,wr}}}function Fa(gt,Bt){return v(gt[0]-Bt[0])=0;--Fi)Ur.point((qi=Ti[Fi])[0],qi[1]);else vr(Ii.x,Ii.p.x,-1,Ur);Ii=Ii.p}Ii=Ii.o,Ti=Ii.z,mi=!mi}while(!Ii.v);Ur.lineEnd()}}}function oa(gt){if(Bt=gt.length){for(var Bt,wr=0,vr=gt[0],Ur;++wr=0?1:-1,Qo=Ts*Xo,ys=Qo>l,Bo=Ma*Ua;if(Sn.add(b(Bo*Ts*_(Qo),Ta*mo+Bo*p(Qo))),xi+=ys?Xo+Ts*f:Xo,ys^mi>=wr^Cn>=wr){var yl=nt(ce(Ii),ce(qa));rt(yl);var Gs=nt(fi,yl);rt(Gs);var Rs=(ys^Xo>=0?-1:1)*T(Gs[2]);(vr>Rs||vr===Rs&&(yl[0]||yl[1]))&&(Fi+=ys^Xo>=0?1:-1)}}return(xi<-o||xi0){for(Xi||(Ur.polygonStart(),Xi=!0),Ur.lineStart(),mo=0;mo1&&sn&2&&Ua.push(Ua.pop().concat(Ua.shift())),Ti.push(Ua.filter(_t))}}return Ii}}function _t(gt){return gt.length>1}function br(gt,Bt){return((gt=gt.x)[0]<0?gt[1]-u-o:u-gt[1])-((Bt=Bt.x)[0]<0?Bt[1]-u-o:u-Bt[1])}var Hr=xn(function(){return!0},ti,Yi,[-l,-u]);function ti(gt){var Bt=NaN,wr=NaN,vr=NaN,Ur;return{lineStart:function(){gt.lineStart(),Ur=1},point:function(fi,xi){var Fi=fi>0?l:-l,Xi=v(fi-Bt);v(Xi-l)0?u:-u),gt.point(vr,wr),gt.lineEnd(),gt.lineStart(),gt.point(Fi,wr),gt.point(fi,wr),Ur=0):vr!==Fi&&Xi>=l&&(v(Bt-vr)o?x((_(Bt)*(fi=p(vr))*_(wr)-_(vr)*(Ur=p(Bt))*_(gt))/(Ur*fi*xi)):(Bt+vr)/2}function Yi(gt,Bt,wr,vr){var Ur;if(gt==null)Ur=wr*u,vr.point(-l,Ur),vr.point(0,Ur),vr.point(l,Ur),vr.point(l,0),vr.point(l,-Ur),vr.point(0,-Ur),vr.point(-l,-Ur),vr.point(-l,0),vr.point(-l,Ur);else if(v(gt[0]-Bt[0])>o){var fi=gt[0]0,Ur=v(Bt)>o;function fi(Ti,qi,Ii,mi){Ki(mi,gt,wr,Ii,Ti,qi)}function xi(Ti,qi){return p(Ti)*p(qi)>Bt}function Fi(Ti){var qi,Ii,mi,Pn,Ma;return{lineStart:function(){Pn=mi=!1,Ma=1},point:function(Ta,Ea){var qa=[Ta,Ea],Cn,sn=xi(Ta,Ea),Ua=vr?sn?0:hn(Ta,Ea):sn?hn(Ta+(Ta<0?l:-l),Ea):0;if(!qi&&(Pn=mi=sn)&&Ti.lineStart(),sn!==mi&&(Cn=Xi(qi,qa),(!Cn||Fa(qi,Cn)||Fa(qa,Cn))&&(qa[2]=1)),sn!==mi)Ma=0,sn?(Ti.lineStart(),Cn=Xi(qa,qi),Ti.point(Cn[0],Cn[1])):(Cn=Xi(qi,qa),Ti.point(Cn[0],Cn[1],2),Ti.lineEnd()),qi=Cn;else if(Ur&&qi&&vr^sn){var mo;!(Ua&Ii)&&(mo=Xi(qa,qi,!0))&&(Ma=0,vr?(Ti.lineStart(),Ti.point(mo[0][0],mo[0][1]),Ti.point(mo[1][0],mo[1][1]),Ti.lineEnd()):(Ti.point(mo[1][0],mo[1][1]),Ti.lineEnd(),Ti.lineStart(),Ti.point(mo[0][0],mo[0][1],3)))}sn&&(!qi||!Fa(qi,qa))&&Ti.point(qa[0],qa[1]),qi=qa,mi=sn,Ii=Ua},lineEnd:function(){mi&&Ti.lineEnd(),qi=null},clean:function(){return Ma|(Pn&&mi)<<1}}}function Xi(Ti,qi,Ii){var mi=ce(Ti),Pn=ce(qi),Ma=[1,0,0],Ta=nt(mi,Pn),Ea=Ge(Ta,Ta),qa=Ta[0],Cn=Ea-qa*qa;if(!Cn)return!Ii&&Ti;var sn=Bt*Ea/Cn,Ua=-Bt*qa/Cn,mo=nt(Ma,Ta),Xo=qt(Ma,sn),Ts=qt(Ta,Ua);ct(Xo,Ts);var Qo=mo,ys=Ge(Xo,Qo),Bo=Ge(Qo,Qo),yl=ys*ys-Bo*(Ge(Xo,Xo)-1);if(!(yl<0)){var Gs=M(yl),Rs=qt(Qo,(-ys-Gs)/Bo);if(ct(Rs,Xo),Rs=Re(Rs),!Ii)return Rs;var ia=Ti[0],Ka=qi[0],vs=Ti[1],Ko=qi[1],nu;Ka0^Rs[1]<(v(Rs[0]-ia)l^(ia<=Rs[0]&&Rs[0]<=Ka)){var bu=qt(Qo,(-ys+Gs)/Bo);return ct(bu,Xo),[Rs,Re(bu)]}}}function hn(Ti,qi){var Ii=vr?gt:l-gt,mi=0;return Ti<-Ii?mi|=1:Ti>Ii&&(mi|=2),qi<-Ii?mi|=4:qi>Ii&&(mi|=8),mi}return xn(xi,Fi,fi,vr?[0,-gt]:[-l,gt-l])}function hi(gt,Bt,wr,vr,Ur,fi){var xi=gt[0],Fi=gt[1],Xi=Bt[0],hn=Bt[1],Ti=0,qi=1,Ii=Xi-xi,mi=hn-Fi,Pn;if(Pn=wr-xi,!(!Ii&&Pn>0)){if(Pn/=Ii,Ii<0){if(Pn0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}if(Pn=Ur-xi,!(!Ii&&Pn<0)){if(Pn/=Ii,Ii<0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}else if(Ii>0){if(Pn0)){if(Pn/=mi,mi<0){if(Pn0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}if(Pn=fi-Fi,!(!mi&&Pn<0)){if(Pn/=mi,mi<0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}else if(mi>0){if(Pn0&&(gt[0]=xi+Ti*Ii,gt[1]=Fi+Ti*mi),qi<1&&(Bt[0]=xi+qi*Ii,Bt[1]=Fi+qi*mi),!0}}}}}var Ji=1e9,ua=-Ji;function Fn(gt,Bt,wr,vr){function Ur(hn,Ti){return gt<=hn&&hn<=wr&&Bt<=Ti&&Ti<=vr}function fi(hn,Ti,qi,Ii){var mi=0,Pn=0;if(hn==null||(mi=xi(hn,qi))!==(Pn=xi(Ti,qi))||Xi(hn,Ti)<0^qi>0)do Ii.point(mi===0||mi===3?gt:wr,mi>1?vr:Bt);while((mi=(mi+qi+4)%4)!==Pn);else Ii.point(Ti[0],Ti[1])}function xi(hn,Ti){return v(hn[0]-gt)0?0:3:v(hn[0]-wr)0?2:1:v(hn[1]-Bt)0?1:0:Ti>0?3:2}function Fi(hn,Ti){return Xi(hn.x,Ti.x)}function Xi(hn,Ti){var qi=xi(hn,1),Ii=xi(Ti,1);return qi!==Ii?qi-Ii:qi===0?Ti[1]-hn[1]:qi===1?hn[0]-Ti[0]:qi===2?hn[1]-Ti[1]:Ti[0]-hn[0]}return function(hn){var Ti=hn,qi=la(),Ii,mi,Pn,Ma,Ta,Ea,qa,Cn,sn,Ua,mo,Xo={point:Ts,lineStart:yl,lineEnd:Gs,polygonStart:ys,polygonEnd:Bo};function Ts(ia,Ka){Ur(ia,Ka)&&Ti.point(ia,Ka)}function Qo(){for(var ia=0,Ka=0,vs=mi.length;Kavr&&(Kc-mf)*(vr-bu)>(Du-bu)*(gt-mf)&&++ia:Du<=vr&&(Kc-mf)*(vr-bu)<(Du-bu)*(gt-mf)&&--ia;return ia}function ys(){Ti=qi,Ii=[],mi=[],mo=!0}function Bo(){var ia=Qo(),Ka=mo&&ia,vs=(Ii=t.merge(Ii)).length;(Ka||vs)&&(hn.polygonStart(),Ka&&(hn.lineStart(),fi(null,null,1,hn),hn.lineEnd()),vs&&jo(Ii,Fi,ia,fi,hn),hn.polygonEnd()),Ti=hn,Ii=mi=Pn=null}function yl(){Xo.point=Rs,mi&&mi.push(Pn=[]),Ua=!0,sn=!1,qa=Cn=NaN}function Gs(){Ii&&(Rs(Ma,Ta),Ea&&sn&&qi.rejoin(),Ii.push(qi.result())),Xo.point=Ts,sn&&Ti.lineEnd()}function Rs(ia,Ka){var vs=Ur(ia,Ka);if(mi&&Pn.push([ia,Ka]),Ua)Ma=ia,Ta=Ka,Ea=vs,Ua=!1,vs&&(Ti.lineStart(),Ti.point(ia,Ka));else if(vs&&sn)Ti.point(ia,Ka);else{var Ko=[qa=Math.max(ua,Math.min(Ji,qa)),Cn=Math.max(ua,Math.min(Ji,Cn))],nu=[ia=Math.max(ua,Math.min(Ji,ia)),Ka=Math.max(ua,Math.min(Ji,Ka))];hi(Ko,nu,gt,Bt,wr,vr)?(sn||(Ti.lineStart(),Ti.point(Ko[0],Ko[1])),Ti.point(nu[0],nu[1]),vs||Ti.lineEnd(),mo=!1):vs&&(Ti.lineStart(),Ti.point(ia,Ka),mo=!1)}qa=ia,Cn=Ka,sn=vs}return Xo}}function Sa(){var gt=0,Bt=0,wr=960,vr=500,Ur,fi,xi;return xi={stream:function(Fi){return Ur&&fi===Fi?Ur:Ur=Fn(gt,Bt,wr,vr)(fi=Fi)},extent:function(Fi){return arguments.length?(gt=+Fi[0][0],Bt=+Fi[0][1],wr=+Fi[1][0],vr=+Fi[1][1],Ur=fi=null,xi):[[gt,Bt],[wr,vr]]}}}var go=r(),Oo,ho,Mo,xo={sphere:q,point:q,lineStart:zs,lineEnd:q,polygonStart:q,polygonEnd:q};function zs(){xo.point=Zs,xo.lineEnd=ks}function ks(){xo.point=xo.lineEnd=q}function Zs(gt,Bt){gt*=d,Bt*=d,Oo=gt,ho=_(Bt),Mo=p(Bt),xo.point=Xs}function Xs(gt,Bt){gt*=d,Bt*=d;var wr=_(Bt),vr=p(Bt),Ur=v(gt-Oo),fi=p(Ur),xi=_(Ur),Fi=vr*xi,Xi=Mo*wr-ho*vr*fi,hn=ho*wr+Mo*vr*fi;go.add(b(M(Fi*Fi+Xi*Xi),hn)),Oo=gt,ho=wr,Mo=vr}function wl(gt){return go.reset(),W(gt,xo),+go}var os=[null,null],cl={type:"LineString",coordinates:os};function Cs(gt,Bt){return os[0]=gt,os[1]=Bt,wl(cl)}var ml={Feature:function(gt,Bt){return Hs(gt.geometry,Bt)},FeatureCollection:function(gt,Bt){for(var wr=gt.features,vr=-1,Ur=wr.length;++vr0&&(Ur=Cs(gt[fi],gt[fi-1]),Ur>0&&wr<=Ur&&vr<=Ur&&(wr+vr-Ur)*(1-Math.pow((wr-vr)/Ur,2))o}).map(Ii)).concat(t.range(E(fi/hn)*hn,Ur,hn).filter(function(Cn){return v(Cn%qi)>o}).map(mi))}return Ea.lines=function(){return qa().map(function(Cn){return{type:"LineString",coordinates:Cn}})},Ea.outline=function(){return{type:"Polygon",coordinates:[Pn(vr).concat(Ma(xi).slice(1),Pn(wr).reverse().slice(1),Ma(Fi).reverse().slice(1))]}},Ea.extent=function(Cn){return arguments.length?Ea.extentMajor(Cn).extentMinor(Cn):Ea.extentMinor()},Ea.extentMajor=function(Cn){return arguments.length?(vr=+Cn[0][0],wr=+Cn[1][0],Fi=+Cn[0][1],xi=+Cn[1][1],vr>wr&&(Cn=vr,vr=wr,wr=Cn),Fi>xi&&(Cn=Fi,Fi=xi,xi=Cn),Ea.precision(Ta)):[[vr,Fi],[wr,xi]]},Ea.extentMinor=function(Cn){return arguments.length?(Bt=+Cn[0][0],gt=+Cn[1][0],fi=+Cn[0][1],Ur=+Cn[1][1],Bt>gt&&(Cn=Bt,Bt=gt,gt=Cn),fi>Ur&&(Cn=fi,fi=Ur,Ur=Cn),Ea.precision(Ta)):[[Bt,fi],[gt,Ur]]},Ea.step=function(Cn){return arguments.length?Ea.stepMajor(Cn).stepMinor(Cn):Ea.stepMinor()},Ea.stepMajor=function(Cn){return arguments.length?(Ti=+Cn[0],qi=+Cn[1],Ea):[Ti,qi]},Ea.stepMinor=function(Cn){return arguments.length?(Xi=+Cn[0],hn=+Cn[1],Ea):[Xi,hn]},Ea.precision=function(Cn){return arguments.length?(Ta=+Cn,Ii=on(fi,Ur,90),mi=fa(Bt,gt,Ta),Pn=on(Fi,xi,90),Ma=fa(vr,wr,Ta),Ea):Ta},Ea.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Rl(){return Qu()()}function vo(gt,Bt){var wr=gt[0]*d,vr=gt[1]*d,Ur=Bt[0]*d,fi=Bt[1]*d,xi=p(vr),Fi=_(vr),Xi=p(fi),hn=_(fi),Ti=xi*p(wr),qi=xi*_(wr),Ii=Xi*p(Ur),mi=Xi*_(Ur),Pn=2*T(M(F(fi-vr)+xi*Xi*F(Ur-wr))),Ma=_(Pn),Ta=Pn?function(Ea){var qa=_(Ea*=Pn)/Ma,Cn=_(Pn-Ea)/Ma,sn=Cn*Ti+qa*Ii,Ua=Cn*qi+qa*mi,mo=Cn*Fi+qa*hn;return[b(Ua,sn)*h,b(mo,M(sn*sn+Ua*Ua))*h]}:function(){return[wr*h,vr*h]};return Ta.distance=Pn,Ta}function Zl(gt){return gt}var Ks=r(),Xl=r(),Ec,Zn,ko,Co,Tl={point:q,lineStart:q,lineEnd:q,polygonStart:function(){Tl.lineStart=uf,Tl.lineEnd=rh},polygonEnd:function(){Tl.lineStart=Tl.lineEnd=Tl.point=q,Ks.add(v(Xl)),Xl.reset()},result:function(){var gt=Ks/2;return Ks.reset(),gt}};function uf(){Tl.point=So}function So(gt,Bt){Tl.point=cf,Ec=ko=gt,Zn=Co=Bt}function cf(gt,Bt){Xl.add(Co*gt-ko*Bt),ko=gt,Co=Bt}function rh(){cf(Ec,Zn)}var Al=1/0,Hc=Al,eu=-Al,Ls=eu,mu={point:kc,lineStart:q,lineEnd:q,polygonStart:q,polygonEnd:q,result:function(){var gt=[[Al,Hc],[eu,Ls]];return eu=Ls=-(Hc=Al=1/0),gt}};function kc(gt,Bt){gteu&&(eu=gt),BtLs&&(Ls=Bt)}var Of=0,Gc=0,vd=0,Bf=0,ss=0,ff=0,ih=0,Vl=0,Js=0,hc,Cc,ws,$s,hs={point:Ms,lineStart:dc,lineEnd:Ps,polygonStart:function(){hs.lineStart=ov,hs.lineEnd=wo},polygonEnd:function(){hs.point=Ms,hs.lineStart=dc,hs.lineEnd=Ps},result:function(){var gt=Js?[ih/Js,Vl/Js]:ff?[Bf/ff,ss/ff]:vd?[Of/vd,Gc/vd]:[NaN,NaN];return Of=Gc=vd=Bf=ss=ff=ih=Vl=Js=0,gt}};function Ms(gt,Bt){Of+=gt,Gc+=Bt,++vd}function dc(){hs.point=Sl}function Sl(gt,Bt){hs.point=ec,Ms(ws=gt,$s=Bt)}function ec(gt,Bt){var wr=gt-ws,vr=Bt-$s,Ur=M(wr*wr+vr*vr);Bf+=Ur*(ws+gt)/2,ss+=Ur*($s+Bt)/2,ff+=Ur,Ms(ws=gt,$s=Bt)}function Ps(){hs.point=Ms}function ov(){hs.point=Od}function wo(){$o(hc,Cc)}function Od(gt,Bt){hs.point=$o,Ms(hc=ws=gt,Cc=$s=Bt)}function $o(gt,Bt){var wr=gt-ws,vr=Bt-$s,Ur=M(wr*wr+vr*vr);Bf+=Ur*(ws+gt)/2,ss+=Ur*($s+Bt)/2,ff+=Ur,Ur=$s*gt-ws*Bt,ih+=Ur*(ws+gt),Vl+=Ur*($s+Bt),Js+=Ur*3,Ms(ws=gt,$s=Bt)}function Ja(gt){this._context=gt}Ja.prototype={_radius:4.5,pointRadius:function(gt){return this._radius=gt,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(gt,Bt){switch(this._point){case 0:{this._context.moveTo(gt,Bt),this._point=1;break}case 1:{this._context.lineTo(gt,Bt);break}default:{this._context.moveTo(gt+this._radius,Bt),this._context.arc(gt,Bt,this._radius,0,f);break}}},result:q};var Ef=r(),tc,uu,Mh,jc,kf,Ml={point:q,lineStart:function(){Ml.point=Yh},lineEnd:function(){tc&&Eh(uu,Mh),Ml.point=q},polygonStart:function(){tc=!0},polygonEnd:function(){tc=null},result:function(){var gt=+Ef;return Ef.reset(),gt}};function Yh(gt,Bt){Ml.point=Eh,uu=jc=gt,Mh=kf=Bt}function Eh(gt,Bt){jc-=gt,kf-=Bt,Ef.add(M(jc*jc+kf*kf)),jc=gt,kf=Bt}function nh(){this._string=[]}nh.prototype={_radius:4.5,_circle:hf(4.5),pointRadius:function(gt){return(gt=+gt)!==this._radius&&(this._radius=gt,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(gt,Bt){switch(this._point){case 0:{this._string.push("M",gt,",",Bt),this._point=1;break}case 1:{this._string.push("L",gt,",",Bt);break}default:{this._circle==null&&(this._circle=hf(this._radius)),this._string.push("M",gt,",",Bt,this._circle);break}}},result:function(){if(this._string.length){var gt=this._string.join("");return this._string=[],gt}else return null}};function hf(gt){return"m0,"+gt+"a"+gt+","+gt+" 0 1,1 0,"+-2*gt+"a"+gt+","+gt+" 0 1,1 0,"+2*gt+"z"}function kh(gt,Bt){var wr=4.5,vr,Ur;function fi(xi){return xi&&(typeof wr=="function"&&Ur.pointRadius(+wr.apply(this,arguments)),W(xi,vr(Ur))),Ur.result()}return fi.area=function(xi){return W(xi,vr(Tl)),Tl.result()},fi.measure=function(xi){return W(xi,vr(Ml)),Ml.result()},fi.bounds=function(xi){return W(xi,vr(mu)),mu.result()},fi.centroid=function(xi){return W(xi,vr(hs)),hs.result()},fi.projection=function(xi){return arguments.length?(vr=xi==null?(gt=null,Zl):(gt=xi).stream,fi):gt},fi.context=function(xi){return arguments.length?(Ur=xi==null?(Bt=null,new nh):new Ja(Bt=xi),typeof wr!="function"&&Ur.pointRadius(wr),fi):Bt},fi.pointRadius=function(xi){return arguments.length?(wr=typeof xi=="function"?xi:(Ur.pointRadius(+xi),+xi),fi):wr},fi.projection(gt).context(Bt)}function Kh(gt){return{stream:rc(gt)}}function rc(gt){return function(Bt){var wr=new ah;for(var vr in gt)wr[vr]=gt[vr];return wr.stream=Bt,wr}}function ah(){}ah.prototype={constructor:ah,point:function(gt,Bt){this.stream.point(gt,Bt)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Wc(gt,Bt,wr){var vr=gt.clipExtent&>.clipExtent();return gt.scale(150).translate([0,0]),vr!=null&>.clipExtent(null),W(wr,gt.stream(mu)),Bt(mu.result()),vr!=null&>.clipExtent(vr),gt}function df(gt,Bt,wr){return Wc(gt,function(vr){var Ur=Bt[1][0]-Bt[0][0],fi=Bt[1][1]-Bt[0][1],xi=Math.min(Ur/(vr[1][0]-vr[0][0]),fi/(vr[1][1]-vr[0][1])),Fi=+Bt[0][0]+(Ur-xi*(vr[1][0]+vr[0][0]))/2,Xi=+Bt[0][1]+(fi-xi*(vr[1][1]+vr[0][1]))/2;gt.scale(150*xi).translate([Fi,Xi])},wr)}function Cu(gt,Bt,wr){return df(gt,[[0,0],Bt],wr)}function Nf(gt,Bt,wr){return Wc(gt,function(vr){var Ur=+Bt,fi=Ur/(vr[1][0]-vr[0][0]),xi=(Ur-fi*(vr[1][0]+vr[0][0]))/2,Fi=-fi*vr[0][1];gt.scale(150*fi).translate([xi,Fi])},wr)}function Zc(gt,Bt,wr){return Wc(gt,function(vr){var Ur=+Bt,fi=Ur/(vr[1][1]-vr[0][1]),xi=-fi*vr[0][0],Fi=(Ur-fi*(vr[1][1]+vr[0][1]))/2;gt.scale(150*fi).translate([xi,Fi])},wr)}var ds=16,Ch=p(30*d);function Bd(gt,Bt){return+Bt?Cf(gt,Bt):Jh(gt)}function Jh(gt){return rc({point:function(Bt,wr){Bt=gt(Bt,wr),this.stream.point(Bt[0],Bt[1])}})}function Cf(gt,Bt){function wr(vr,Ur,fi,xi,Fi,Xi,hn,Ti,qi,Ii,mi,Pn,Ma,Ta){var Ea=hn-vr,qa=Ti-Ur,Cn=Ea*Ea+qa*qa;if(Cn>4*Bt&&Ma--){var sn=xi+Ii,Ua=Fi+mi,mo=Xi+Pn,Xo=M(sn*sn+Ua*Ua+mo*mo),Ts=T(mo/=Xo),Qo=v(v(mo)-1)Bt||v((Ea*Gs+qa*Rs)/Cn-.5)>.3||xi*Ii+Fi*mi+Xi*Pn2?ia[2]%360*d:0,Gs()):[Fi*h,Xi*h,hn*h]},Bo.angle=function(ia){return arguments.length?(qi=ia%360*d,Gs()):qi*h},Bo.reflectX=function(ia){return arguments.length?(Ii=ia?-1:1,Gs()):Ii<0},Bo.reflectY=function(ia){return arguments.length?(mi=ia?-1:1,Gs()):mi<0},Bo.precision=function(ia){return arguments.length?(mo=Bd(Xo,Ua=ia*ia),Rs()):M(Ua)},Bo.fitExtent=function(ia,Ka){return df(Bo,ia,Ka)},Bo.fitSize=function(ia,Ka){return Cu(Bo,ia,Ka)},Bo.fitWidth=function(ia,Ka){return Nf(Bo,ia,Ka)},Bo.fitHeight=function(ia,Ka){return Zc(Bo,ia,Ka)};function Gs(){var ia=tu(wr,0,0,Ii,mi,qi).apply(null,Bt(fi,xi)),Ka=(qi?tu:$h)(wr,vr-ia[0],Ur-ia[1],Ii,mi,qi);return Ti=gi(Fi,Xi,hn),Xo=Zr(Bt,Ka),Ts=Zr(Ti,Xo),mo=Bd(Xo,Ua),Rs()}function Rs(){return Qo=ys=null,Bo}return function(){return Bt=gt.apply(this,arguments),Bo.invert=Bt.invert&&yl,Gs()}}function fl(gt){var Bt=0,wr=l/3,vr=Lc(gt),Ur=vr(Bt,wr);return Ur.parallels=function(fi){return arguments.length?vr(Bt=fi[0]*d,wr=fi[1]*d):[Bt*h,wr*h]},Ur}function Xc(gt){var Bt=p(gt);function wr(vr,Ur){return[vr*Bt,_(Ur)/Bt]}return wr.invert=function(vr,Ur){return[vr/Bt,T(Ur*Bt)]},wr}function ic(gt,Bt){var wr=_(gt),vr=(wr+_(Bt))/2;if(v(vr)=.12&&Ta<.234&&Ma>=-.425&&Ma<-.214?Ur:Ta>=.166&&Ta<.234&&Ma>=-.214&&Ma<-.115?xi:wr).invert(Ii)},Ti.stream=function(Ii){return gt&&Bt===Ii?gt:gt=Qh([wr.stream(Bt=Ii),Ur.stream(Ii),xi.stream(Ii)])},Ti.precision=function(Ii){return arguments.length?(wr.precision(Ii),Ur.precision(Ii),xi.precision(Ii),qi()):wr.precision()},Ti.scale=function(Ii){return arguments.length?(wr.scale(Ii),Ur.scale(Ii*.35),xi.scale(Ii),Ti.translate(wr.translate())):wr.scale()},Ti.translate=function(Ii){if(!arguments.length)return wr.translate();var mi=wr.scale(),Pn=+Ii[0],Ma=+Ii[1];return vr=wr.translate(Ii).clipExtent([[Pn-.455*mi,Ma-.238*mi],[Pn+.455*mi,Ma+.238*mi]]).stream(hn),fi=Ur.translate([Pn-.307*mi,Ma+.201*mi]).clipExtent([[Pn-.425*mi+o,Ma+.12*mi+o],[Pn-.214*mi-o,Ma+.234*mi-o]]).stream(hn),Fi=xi.translate([Pn-.205*mi,Ma+.212*mi]).clipExtent([[Pn-.214*mi+o,Ma+.166*mi+o],[Pn-.115*mi-o,Ma+.234*mi-o]]).stream(hn),qi()},Ti.fitExtent=function(Ii,mi){return df(Ti,Ii,mi)},Ti.fitSize=function(Ii,mi){return Cu(Ti,Ii,mi)},Ti.fitWidth=function(Ii,mi){return Nf(Ti,Ii,mi)},Ti.fitHeight=function(Ii,mi){return Zc(Ti,Ii,mi)};function qi(){return gt=Bt=null,Ti}return Ti.scale(1070)}function Gu(gt){return function(Bt,wr){var vr=p(Bt),Ur=p(wr),fi=gt(vr*Ur);return[fi*Ur*_(Bt),fi*_(wr)]}}function Pc(gt){return function(Bt,wr){var vr=M(Bt*Bt+wr*wr),Ur=gt(vr),fi=_(Ur),xi=p(Ur);return[b(Bt*fi,vr*xi),T(vr&&wr*fi/vr)]}}var vc=Gu(function(gt){return M(2/(1+gt))});vc.invert=Pc(function(gt){return 2*T(gt/2)});function sv(){return Pu(vc).scale(124.75).clipAngle(180-.001)}var Lf=Gu(function(gt){return(gt=P(gt))&>/_(gt)});Lf.invert=Pc(function(gt){return gt});function Uf(){return Pu(Lf).scale(79.4188).clipAngle(180-.001)}function Iu(gt,Bt){return[gt,A(g((u+Bt)/2))]}Iu.invert=function(gt,Bt){return[gt,2*x(k(Bt))-u]};function oh(){return ru(Iu).scale(961/f)}function ru(gt){var Bt=Pu(gt),wr=Bt.center,vr=Bt.scale,Ur=Bt.translate,fi=Bt.clipExtent,xi=null,Fi,Xi,hn;Bt.scale=function(qi){return arguments.length?(vr(qi),Ti()):vr()},Bt.translate=function(qi){return arguments.length?(Ur(qi),Ti()):Ur()},Bt.center=function(qi){return arguments.length?(wr(qi),Ti()):wr()},Bt.clipExtent=function(qi){return arguments.length?(qi==null?xi=Fi=Xi=hn=null:(xi=+qi[0][0],Fi=+qi[0][1],Xi=+qi[1][0],hn=+qi[1][1]),Ti()):xi==null?null:[[xi,Fi],[Xi,hn]]};function Ti(){var qi=l*vr(),Ii=Bt(Gi(Bt.rotate()).invert([0,0]));return fi(xi==null?[[Ii[0]-qi,Ii[1]-qi],[Ii[0]+qi,Ii[1]+qi]]:gt===Iu?[[Math.max(Ii[0]-qi,xi),Fi],[Math.min(Ii[0]+qi,Xi),hn]]:[[xi,Math.max(Ii[1]-qi,Fi)],[Xi,Math.min(Ii[1]+qi,hn)]])}return Ti()}function vf(gt){return g((u+gt)/2)}function md(gt,Bt){var wr=p(gt),vr=gt===Bt?_(gt):A(wr/p(Bt))/A(vf(Bt)/vf(gt)),Ur=wr*L(vf(gt),vr)/vr;if(!vr)return Iu;function fi(xi,Fi){Ur>0?Fi<-u+o&&(Fi=-u+o):Fi>u-o&&(Fi=u-o);var Xi=Ur/L(vf(Fi),vr);return[Xi*_(vr*xi),Ur-Xi*p(vr*xi)]}return fi.invert=function(xi,Fi){var Xi=Ur-Fi,hn=C(vr)*M(xi*xi+Xi*Xi),Ti=b(xi,v(Xi))*C(Xi);return Xi*vr<0&&(Ti-=l*C(xi)*C(Xi)),[Ti/vr,2*x(L(Ur/hn,1/vr))-u]},fi}function sh(){return fl(md).scale(109.5).parallels([30,30])}function Fs(gt,Bt){return[gt,Bt]}Fs.invert=Fs;function _u(){return Pu(Fs).scale(152.63)}function xu(gt,Bt){var wr=p(gt),vr=gt===Bt?_(gt):(wr-p(Bt))/(Bt-gt),Ur=wr/vr+gt;if(v(vr)o&&--vr>0);return[gt/(.8707+(fi=wr*wr)*(-.131979+fi*(-.013791+fi*fi*fi*(.003971-.001529*fi)))),wr]};function gc(){return Pu(Rc).scale(175.295)}function hl(gt,Bt){return[p(Bt)*_(gt),_(Bt)]}hl.invert=Pc(T);function iu(){return Pu(hl).scale(249.5).clipAngle(90+o)}function mc(gt,Bt){var wr=p(Bt),vr=1+p(gt)*wr;return[wr*_(gt)/vr,_(Bt)/vr]}mc.invert=Pc(function(gt){return 2*x(gt)});function Yc(){return Pu(mc).scale(250).clipAngle(142)}function nc(gt,Bt){return[A(g((u+Bt)/2)),-gt]}nc.invert=function(gt,Bt){return[-Bt,2*x(k(gt))-u]};function gf(){var gt=ru(nc),Bt=gt.center,wr=gt.rotate;return gt.center=function(vr){return arguments.length?Bt([-vr[1],vr[0]]):(vr=Bt(),[vr[1],-vr[0]])},gt.rotate=function(vr){return arguments.length?wr([vr[0],vr[1],vr.length>2?vr[2]+90:90]):(vr=wr(),[vr[0],vr[1],vr[2]-90])},wr([0,0,90]).scale(159.155)}e.geoAlbers=Qs,e.geoAlbersUsa=gd,e.geoArea=me,e.geoAzimuthalEqualArea=sv,e.geoAzimuthalEqualAreaRaw=vc,e.geoAzimuthalEquidistant=Uf,e.geoAzimuthalEquidistantRaw=Lf,e.geoBounds=Ne,e.geoCentroid=yr,e.geoCircle=jn,e.geoClipAntimeridian=Hr,e.geoClipCircle=an,e.geoClipExtent=Sa,e.geoClipRectangle=Fn,e.geoConicConformal=sh,e.geoConicConformalRaw=md,e.geoConicEqualArea=yu,e.geoConicEqualAreaRaw=ic,e.geoConicEquidistant=Lh,e.geoConicEquidistantRaw=xu,e.geoContains=ms,e.geoDistance=Cs,e.geoEqualEarth=Ph,e.geoEqualEarthRaw=pf,e.geoEquirectangular=_u,e.geoEquirectangularRaw=Fs,e.geoGnomonic=Ih,e.geoGnomonicRaw=Dl,e.geoGraticule=Qu,e.geoGraticule10=Rl,e.geoIdentity=Wu,e.geoInterpolate=vo,e.geoLength=wl,e.geoMercator=oh,e.geoMercatorRaw=Iu,e.geoNaturalEarth1=gc,e.geoNaturalEarth1Raw=Rc,e.geoOrthographic=iu,e.geoOrthographicRaw=hl,e.geoPath=kh,e.geoProjection=Pu,e.geoProjectionMutator=Lc,e.geoRotation=Gi,e.geoStereographic=Yc,e.geoStereographicRaw=mc,e.geoStream=W,e.geoTransform=Kh,e.geoTransverseMercator=gf,e.geoTransverseMercatorRaw=nc,Object.defineProperty(e,"__esModule",{value:!0})})});var bRe=ye((Az,xRe)=>{(function(e,t){typeof Az=="object"&&typeof xRe!="undefined"?t(Az,xX(),$E()):t(e.d3=e.d3||{},e.d3,e.d3)})(Az,function(e,t,r){"use strict";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,u=Math.log,c=Math.max,f=Math.min,h=Math.pow,d=Math.round,v=Math.sign||function(he){return he>0?1:he<0?-1:0},x=Math.sin,b=Math.tan,p=1e-6,E=1e-12,k=Math.PI,A=k/2,L=k/4,_=Math.SQRT1_2,C=H(2),M=H(k),g=k*2,P=180/k,T=k/180;function F(he){return he?he/Math.sin(he):1}function q(he){return he>1?A:he<-1?-A:Math.asin(he)}function V(he){return he>1?0:he<-1?k:Math.acos(he)}function H(he){return he>0?Math.sqrt(he):0}function X(he){return he=s(2*he),(he-1)/(he+1)}function G(he){return(s(he)-s(-he))/2}function N(he){return(s(he)+s(-he))/2}function W(he){return u(he+H(he*he+1))}function re(he){return u(he+H(he*he-1))}function ae(he){var be=b(he/2),Pe=2*u(o(he/2))/(be*be);function Oe(Je,He){var et=o(Je),Mt=o(He),Dt=x(He),Ut=Mt*et,tr=-((1-Ut?u((1+Ut)/2)/(1-Ut):-.5)+Pe/(1+Ut));return[tr*Mt*x(Je),tr*Dt]}return Oe.invert=function(Je,He){var et=H(Je*Je+He*He),Mt=-he/2,Dt=50,Ut;if(!et)return[0,0];do{var tr=Mt/2,mr=o(tr),Rr=x(tr),zr=Rr/mr,Xr=-u(n(mr));Mt-=Ut=(2/zr*Xr-Pe*zr-et)/(-Xr/(Rr*Rr)+1-Pe/(2*mr*mr))*(mr<0?.7:1)}while(n(Ut)>p&&--Dt>0);var di=x(Mt);return[a(Je*di,et*o(Mt)),q(He*di/et)]},Oe}function _e(){var he=A,be=t.geoProjectionMutator(ae),Pe=be(he);return Pe.radius=function(Oe){return arguments.length?be(he=Oe*T):he*P},Pe.scale(179.976).clipAngle(147)}function Me(he,be){var Pe=o(be),Oe=F(V(Pe*o(he/=2)));return[2*Pe*x(he)*Oe,x(be)*Oe]}Me.invert=function(he,be){if(!(he*he+4*be*be>k*k+p)){var Pe=he,Oe=be,Je=25;do{var He=x(Pe),et=x(Pe/2),Mt=o(Pe/2),Dt=x(Oe),Ut=o(Oe),tr=x(2*Oe),mr=Dt*Dt,Rr=Ut*Ut,zr=et*et,Xr=1-Rr*Mt*Mt,di=Xr?V(Ut*Mt)*H(Li=1/Xr):Li=0,Li,Ci=2*di*Ut*et-he,Qi=di*Dt-be,Mn=Li*(Rr*zr+di*Ut*Mt*mr),pa=Li*(.5*He*tr-di*2*Dt*et),ea=Li*.25*(tr*et-di*Dt*Rr*He),Ga=Li*(mr*Mt+di*zr*Ut),To=pa*ea-Ga*Mn;if(!To)break;var Wa=(Qi*pa-Ci*Ga)/To,co=(Ci*ea-Qi*Mn)/To;Pe-=Wa,Oe-=co}while((n(Wa)>p||n(co)>p)&&--Je>0);return[Pe,Oe]}};function ke(){return t.geoProjection(Me).scale(152.63)}function ge(he){var be=x(he),Pe=o(he),Oe=he>=0?1:-1,Je=b(Oe*he),He=(1+be-Pe)/2;function et(Mt,Dt){var Ut=o(Dt),tr=o(Mt/=2);return[(1+Ut)*x(Mt),(Oe*Dt>-a(tr,Je)-.001?0:-Oe*10)+He+x(Dt)*Pe-(1+Ut)*be*tr]}return et.invert=function(Mt,Dt){var Ut=0,tr=0,mr=50;do{var Rr=o(Ut),zr=x(Ut),Xr=o(tr),di=x(tr),Li=1+Xr,Ci=Li*zr-Mt,Qi=He+di*Pe-Li*be*Rr-Dt,Mn=Li*Rr/2,pa=-zr*di,ea=be*Li*zr/2,Ga=Pe*Xr+be*Rr*di,To=pa*ea-Ga*Mn,Wa=(Qi*pa-Ci*Ga)/To/2,co=(Ci*ea-Qi*Mn)/To;n(co)>2&&(co/=2),Ut-=Wa,tr-=co}while((n(Wa)>p||n(co)>p)&&--mr>0);return Oe*tr>-a(o(Ut),Je)-.001?[Ut*2,tr]:null},et}function ie(){var he=20*T,be=he>=0?1:-1,Pe=b(be*he),Oe=t.geoProjectionMutator(ge),Je=Oe(he),He=Je.stream;return Je.parallel=function(et){return arguments.length?(Pe=b((be=(he=et*T)>=0?1:-1)*he),Oe(he)):he*P},Je.stream=function(et){var Mt=Je.rotate(),Dt=He(et),Ut=(Je.rotate([0,0]),He(et)),tr=Je.precision();return Je.rotate(Mt),Dt.sphere=function(){Ut.polygonStart(),Ut.lineStart();for(var mr=be*-180;be*mr<180;mr+=be*90)Ut.point(mr,be*90);if(he)for(;be*(mr-=3*be*tr)>=-180;)Ut.point(mr,be*-a(o(mr*T/2),Pe)*P);Ut.lineEnd(),Ut.polygonEnd()},Dt},Je.scale(218.695).center([0,28.0974])}function Te(he,be){var Pe=b(be/2),Oe=H(1-Pe*Pe),Je=1+Oe*o(he/=2),He=x(he)*Oe/Je,et=Pe/Je,Mt=He*He,Dt=et*et;return[4/3*He*(3+Mt-3*Dt),4/3*et*(3+3*Mt-Dt)]}Te.invert=function(he,be){if(he*=3/8,be*=3/8,!he&&n(be)>1)return null;var Pe=he*he,Oe=be*be,Je=1+Pe+Oe,He=H((Je-H(Je*Je-4*be*be))/2),et=q(He)/3,Mt=He?re(n(be/He))/3:W(n(he))/3,Dt=o(et),Ut=N(Mt),tr=Ut*Ut-Dt*Dt;return[v(he)*2*a(G(Mt)*Dt,.25-tr),v(be)*2*a(Ut*x(et),.25+tr)]};function Ee(){return t.geoProjection(Te).scale(66.1603)}var Ae=H(8),ze=u(1+C);function Ce(he,be){var Pe=n(be);return PeE&&--Oe>0);return[he/(o(Pe)*(Ae-1/x(Pe))),v(be)*Pe]};function me(){return t.geoProjection(Ce).scale(112.314)}function Re(he){var be=2*k/he;function Pe(Oe,Je){var He=t.geoAzimuthalEquidistantRaw(Oe,Je);if(n(Oe)>A){var et=a(He[1],He[0]),Mt=H(He[0]*He[0]+He[1]*He[1]),Dt=be*d((et-A)/be)+A,Ut=a(x(et-=Dt),2-o(et));et=Dt+q(k/Mt*x(Ut))-Ut,He[0]=Mt*o(et),He[1]=Mt*x(et)}return He}return Pe.invert=function(Oe,Je){var He=H(Oe*Oe+Je*Je);if(He>A){var et=a(Je,Oe),Mt=be*d((et-A)/be)+A,Dt=et>Mt?-1:1,Ut=He*o(Mt-et),tr=1/b(Dt*V((Ut-k)/H(k*(k-2*Ut)+He*He)));et=Mt+2*i((tr+Dt*H(tr*tr-3))/3),Oe=He*o(et),Je=He*x(et)}return t.geoAzimuthalEquidistantRaw.invert(Oe,Je)},Pe}function ce(){var he=5,be=t.geoProjectionMutator(Re),Pe=be(he),Oe=Pe.stream,Je=.01,He=-o(Je*T),et=x(Je*T);return Pe.lobes=function(Mt){return arguments.length?be(he=+Mt):he},Pe.stream=function(Mt){var Dt=Pe.rotate(),Ut=Oe(Mt),tr=(Pe.rotate([0,0]),Oe(Mt));return Pe.rotate(Dt),Ut.sphere=function(){tr.polygonStart(),tr.lineStart();for(var mr=0,Rr=360/he,zr=2*k/he,Xr=90-180/he,di=A;mr0&&n(Je)>p);return Oe<0?NaN:Pe}function rt(he,be,Pe){return be===void 0&&(be=40),Pe===void 0&&(Pe=E),function(Oe,Je,He,et){var Mt,Dt,Ut;He=He===void 0?0:+He,et=et===void 0?0:+et;for(var tr=0;trMt){He-=Dt/=2,et-=Ut/=2;continue}Mt=Xr;var di=(He>0?-1:1)*Pe,Li=(et>0?-1:1)*Pe,Ci=he(He+di,et),Qi=he(He,et+Li),Mn=(Ci[0]-mr[0])/di,pa=(Ci[1]-mr[1])/di,ea=(Qi[0]-mr[0])/Li,Ga=(Qi[1]-mr[1])/Li,To=Ga*Mn-pa*ea,Wa=(n(To)<.5?.5:1)/To;if(Dt=(zr*ea-Rr*Ga)*Wa,Ut=(Rr*pa-zr*Mn)*Wa,He+=Dt,et+=Ut,n(Dt)0&&(Mt[1]*=1+Dt/1.5*Mt[0]*Mt[0]),Mt}return Oe.invert=rt(Oe),Oe}function Rt(){return t.geoProjection(ot()).rotate([-16.5,-42]).scale(176.57).center([7.93,.09])}function kt(he,be){var Pe=he*x(be),Oe=30,Je;do be-=Je=(be+x(be)-Pe)/(1+o(be));while(n(Je)>p&&--Oe>0);return be/2}function Ct(he,be,Pe){function Oe(Je,He){return[he*Je*o(He=kt(Pe,He)),be*x(He)]}return Oe.invert=function(Je,He){return He=q(He/be),[Je/(he*o(He)),q((2*He+x(2*He))/Pe)]},Oe}var Yt=Ct(C/A,C,k);function xr(){return t.geoProjection(Yt).scale(169.529)}var er=2.00276,Ke=1.11072;function xt(he,be){var Pe=kt(k,be);return[er*he/(1/o(be)+Ke/o(Pe)),(be+C*x(Pe))/er]}xt.invert=function(he,be){var Pe=er*be,Oe=be<0?-L:L,Je=25,He,et;do et=Pe-C*x(Oe),Oe-=He=(x(2*Oe)+2*Oe-k*x(et))/(2*o(2*Oe)+2+k*o(et)*C*o(Oe));while(n(He)>p&&--Je>0);return et=Pe-C*x(Oe),[he*(1/o(et)+Ke/o(Oe))/er,et]};function bt(){return t.geoProjection(xt).scale(160.857)}function Lt(he){var be=0,Pe=t.geoProjectionMutator(he),Oe=Pe(be);return Oe.parallel=function(Je){return arguments.length?Pe(be=Je*T):be*P},Oe}function St(he,be){return[he*o(be),be]}St.invert=function(he,be){return[he/o(be),be]};function Et(){return t.geoProjection(St).scale(152.63)}function dt(he){if(!he)return St;var be=1/b(he);function Pe(Oe,Je){var He=be+he-Je,et=He&&Oe*o(Je)/He;return[He*x(et),be-He*o(et)]}return Pe.invert=function(Oe,Je){var He=H(Oe*Oe+(Je=be-Je)*Je),et=be+he-He;return[He/o(et)*a(Oe,Je),et]},Pe}function Ht(){return Lt(dt).scale(123.082).center([0,26.1441]).parallel(45)}function $t(he){function be(Pe,Oe){var Je=A-Oe,He=Je&&Pe*he*x(Je)/Je;return[Je*x(He)/he,A-Je*o(He)]}return be.invert=function(Pe,Oe){var Je=Pe*he,He=A-Oe,et=H(Je*Je+He*He),Mt=a(Je,He);return[(et?et/x(et):1)*Mt/he,A-et]},be}function fr(){var he=.5,be=t.geoProjectionMutator($t),Pe=be(he);return Pe.fraction=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(158.837)}var _r=Ct(1,4/k,k);function Br(){return t.geoProjection(_r).scale(152.63)}function Or(he,be,Pe,Oe,Je,He){var et=o(He),Mt;if(n(he)>1||n(He)>1)Mt=V(Pe*Je+be*Oe*et);else{var Dt=x(he/2),Ut=x(He/2);Mt=2*q(H(Dt*Dt+be*Oe*Ut*Ut))}return n(Mt)>p?[Mt,a(Oe*x(He),be*Je-Pe*Oe*et)]:[0,0]}function Nr(he,be,Pe){return V((he*he+be*be-Pe*Pe)/(2*he*be))}function ut(he){return he-2*k*l((he+k)/(2*k))}function Ne(he,be,Pe){for(var Oe=[[he[0],he[1],x(he[1]),o(he[1])],[be[0],be[1],x(be[1]),o(be[1])],[Pe[0],Pe[1],x(Pe[1]),o(Pe[1])]],Je=Oe[2],He,et=0;et<3;++et,Je=He)He=Oe[et],Je.v=Or(He[1]-Je[1],Je[3],Je[2],He[3],He[2],He[0]-Je[0]),Je.point=[0,0];var Mt=Nr(Oe[0].v[0],Oe[2].v[0],Oe[1].v[0]),Dt=Nr(Oe[0].v[0],Oe[1].v[0],Oe[2].v[0]),Ut=k-Mt;Oe[2].point[1]=0,Oe[0].point[0]=-(Oe[1].point[0]=Oe[0].v[0]/2);var tr=[Oe[2].point[0]=Oe[0].point[0]+Oe[2].v[0]*o(Mt),2*(Oe[0].point[1]=Oe[1].point[1]=Oe[2].v[0]*x(Mt))];function mr(Rr,zr){var Xr=x(zr),di=o(zr),Li=new Array(3),Ci;for(Ci=0;Ci<3;++Ci){var Qi=Oe[Ci];if(Li[Ci]=Or(zr-Qi[1],Qi[3],Qi[2],di,Xr,Rr-Qi[0]),!Li[Ci][0])return Qi.point;Li[Ci][1]=ut(Li[Ci][1]-Qi.v[1])}var Mn=tr.slice();for(Ci=0;Ci<3;++Ci){var pa=Ci==2?0:Ci+1,ea=Nr(Oe[Ci].v[0],Li[Ci][0],Li[pa][0]);Li[Ci][1]<0&&(ea=-ea),Ci?Ci==1?(ea=Dt-ea,Mn[0]-=Li[Ci][0]*o(ea),Mn[1]-=Li[Ci][0]*x(ea)):(ea=Ut-ea,Mn[0]+=Li[Ci][0]*o(ea),Mn[1]+=Li[Ci][0]*x(ea)):(Mn[0]+=Li[Ci][0]*o(ea),Mn[1]-=Li[Ci][0]*x(ea))}return Mn[0]/=3,Mn[1]/=3,Mn}return mr}function Ye(he){return he[0]*=T,he[1]*=T,he}function Ve(){return Xe([0,22],[45,22],[22.5,-22]).scale(380).center([22.5,2])}function Xe(he,be,Pe){var Oe=t.geoCentroid({type:"MultiPoint",coordinates:[he,be,Pe]}),Je=[-Oe[0],-Oe[1]],He=t.geoRotation(Je),et=Ne(Ye(He(he)),Ye(He(be)),Ye(He(Pe)));et.invert=rt(et);var Mt=t.geoProjection(et).rotate(Je),Dt=Mt.center;return delete Mt.rotate,Mt.center=function(Ut){return arguments.length?Dt(He(Ut)):He.invert(Dt())},Mt.clipAngle(90)}function ht(he,be){var Pe=H(1-x(be));return[2/M*he*Pe,M*(1-Pe)]}ht.invert=function(he,be){var Pe=(Pe=be/M-1)*Pe;return[Pe>0?he*H(k/Pe)/2:0,q(1-Pe)]};function Le(){return t.geoProjection(ht).scale(95.6464).center([0,30])}function xe(he){var be=b(he);function Pe(Oe,Je){return[Oe,(Oe?Oe/x(Oe):1)*(x(Je)*o(Oe)-be*o(Je))]}return Pe.invert=be?function(Oe,Je){Oe&&(Je*=x(Oe)/Oe);var He=o(Oe);return[Oe,2*a(H(He*He+be*be-Je*Je)-He,be-Je)]}:function(Oe,Je){return[Oe,q(Oe?Je*b(Oe)/Oe:Je)]},Pe}function Se(){return Lt(xe).scale(249.828).clipAngle(90)}var lt=H(3);function Gt(he,be){return[lt*he*(2*o(2*be/3)-1)/M,lt*M*x(be/3)]}Gt.invert=function(he,be){var Pe=3*q(be/(lt*M));return[M*he/(lt*(2*o(2*Pe/3)-1)),Pe]};function Vt(){return t.geoProjection(Gt).scale(156.19)}function ar(he){var be=o(he);function Pe(Oe,Je){return[Oe*be,x(Je)/be]}return Pe.invert=function(Oe,Je){return[Oe/be,q(Je*be)]},Pe}function Qr(){return Lt(ar).parallel(38.58).scale(195.044)}function ai(he){var be=o(he);function Pe(Oe,Je){return[Oe*be,(1+be)*b(Je/2)]}return Pe.invert=function(Oe,Je){return[Oe/be,i(Je/(1+be))*2]},Pe}function jr(){return Lt(ai).scale(124.75)}function ri(he,be){var Pe=H(8/(3*k));return[Pe*he*(1-n(be)/k),Pe*be]}ri.invert=function(he,be){var Pe=H(8/(3*k)),Oe=be/Pe;return[he/(Pe*(1-n(Oe)/k)),Oe]};function bi(){return t.geoProjection(ri).scale(165.664)}function nn(he,be){var Pe=H(4-3*x(n(be)));return[2/H(6*k)*he*Pe,v(be)*H(2*k/3)*(2-Pe)]}nn.invert=function(he,be){var Pe=2-n(be)/H(2*k/3);return[he*H(6*k)/(2*Pe),v(be)*q((4-Pe*Pe)/3)]};function Wi(){return t.geoProjection(nn).scale(165.664)}function Ni(he,be){var Pe=H(k*(4+k));return[2/Pe*he*(1+H(1-4*be*be/(k*k))),4/Pe*be]}Ni.invert=function(he,be){var Pe=H(k*(4+k))/2;return[he*Pe/(1+H(1-be*be*(4+k)/(4*k))),be*Pe/2]};function _n(){return t.geoProjection(Ni).scale(180.739)}function $i(he,be){var Pe=(2+A)*x(be);be/=2;for(var Oe=0,Je=1/0;Oe<10&&n(Je)>p;Oe++){var He=o(be);be-=Je=(be+x(be)*(He+2)-Pe)/(2*He*(1+He))}return[2/H(k*(4+k))*he*(1+o(be)),2*H(k/(4+k))*x(be)]}$i.invert=function(he,be){var Pe=be*H((4+k)/k)/2,Oe=q(Pe),Je=o(Oe);return[he/(2/H(k*(4+k))*(1+Je)),q((Oe+Pe*(Je+2))/(2+A))]};function zn(){return t.geoProjection($i).scale(180.739)}function Wn(he,be){return[he*(1+o(be))/H(2+k),2*be/H(2+k)]}Wn.invert=function(he,be){var Pe=H(2+k),Oe=be*Pe/2;return[Pe*he/(1+o(Oe)),Oe]};function It(){return t.geoProjection(Wn).scale(173.044)}function ft(he,be){for(var Pe=(1+A)*x(be),Oe=0,Je=1/0;Oe<10&&n(Je)>p;Oe++)be-=Je=(be+x(be)-Pe)/(1+o(be));return Pe=H(2+k),[he*(1+o(be))/Pe,2*be/Pe]}ft.invert=function(he,be){var Pe=1+A,Oe=H(Pe/2);return[he*2*Oe/(1+o(be*=Oe)),q((be+x(be))/Pe)]};function jt(){return t.geoProjection(ft).scale(173.044)}var Zt=3+2*C;function yr(he,be){var Pe=x(he/=2),Oe=o(he),Je=H(o(be)),He=o(be/=2),et=x(be)/(He+C*Oe*Je),Mt=H(2/(1+et*et)),Dt=H((C*He+(Oe+Pe)*Je)/(C*He+(Oe-Pe)*Je));return[Zt*(Mt*(Dt-1/Dt)-2*u(Dt)),Zt*(Mt*et*(Dt+1/Dt)-2*i(et))]}yr.invert=function(he,be){if(!(He=Te.invert(he/1.2,be*1.065)))return null;var Pe=He[0],Oe=He[1],Je=20,He;he/=Zt,be/=Zt;do{var et=Pe/2,Mt=Oe/2,Dt=x(et),Ut=o(et),tr=x(Mt),mr=o(Mt),Rr=o(Oe),zr=H(Rr),Xr=tr/(mr+C*Ut*zr),di=Xr*Xr,Li=H(2/(1+di)),Ci=C*mr+(Ut+Dt)*zr,Qi=C*mr+(Ut-Dt)*zr,Mn=Ci/Qi,pa=H(Mn),ea=pa-1/pa,Ga=pa+1/pa,To=Li*ea-2*u(pa)-he,Wa=Li*Xr*Ga-2*i(Xr)-be,co=tr&&_*zr*Dt*di/tr,Ro=(C*Ut*mr+zr)/(2*(mr+C*Ut*zr)*(mr+C*Ut*zr)*zr),Ds=-.5*Xr*Li*Li*Li,As=Ds*co,yo=Ds*Ro,po=(po=2*mr+C*zr*(Ut-Dt))*po*pa,_l=(C*Ut*mr*zr+Rr)/po,Hl=-(C*Dt*tr)/(zr*po),Zu=ea*As-2*_l/pa+Li*(_l+_l/Mn),cu=ea*yo-2*Hl/pa+Li*(Hl+Hl/Mn),el=Xr*Ga*As-2*co/(1+di)+Li*Ga*co+Li*Xr*(_l-_l/Mn),au=Xr*Ga*yo-2*Ro/(1+di)+Li*Ga*Ro+Li*Xr*(Hl-Hl/Mn),zc=cu*el-au*Zu;if(!zc)break;var zl=(Wa*cu-To*au)/zc,Fl=(To*el-Wa*Zu)/zc;Pe-=zl,Oe=c(-A,f(A,Oe-Fl))}while((n(zl)>p||n(Fl)>p)&&--Je>0);return n(n(Oe)-A)Oe){var mr=H(tr),Rr=a(Ut,Dt),zr=Pe*d(Rr/Pe),Xr=Rr-zr,di=he*o(Xr),Li=(he*x(Xr)-Xr*x(di))/(A-di),Ci=Fa(Xr,Li),Qi=(k-he)/Ra(Ci,di,k);Dt=mr;var Mn=50,pa;do Dt-=pa=(he+Ra(Ci,di,Dt)*Qi-mr)/(Ci(Dt)*Qi);while(n(pa)>p&&--Mn>0);Ut=Xr*x(Dt),DtOe){var Dt=H(Mt),Ut=a(et,He),tr=Pe*d(Ut/Pe),mr=Ut-tr;He=Dt*o(mr),et=Dt*x(mr);for(var Rr=He-A,zr=x(He),Xr=et/zr,di=Hep||n(Xr)>p)&&--di>0);return[mr,Rr]},Dt}var Sn=oa(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);function Ha(){return t.geoProjection(Sn).scale(149.995)}var oo=oa(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function xn(){return t.geoProjection(oo).scale(153.93)}var _t=oa(5/6*k,-.62636,-.0344,0,1.3493,-.05524,0,.045);function br(){return t.geoProjection(_t).scale(130.945)}function Hr(he,be){var Pe=he*he,Oe=be*be;return[he*(1-.162388*Oe)*(.87-952426e-9*Pe*Pe),be*(1+Oe/12)]}Hr.invert=function(he,be){var Pe=he,Oe=be,Je=50,He;do{var et=Oe*Oe;Oe-=He=(Oe*(1+et/12)-be)/(1+et/4)}while(n(He)>p&&--Je>0);Je=50,he/=1-.162388*et;do{var Mt=(Mt=Pe*Pe)*Mt;Pe-=He=(Pe*(.87-952426e-9*Mt)-he)/(.87-.00476213*Mt)}while(n(He)>p&&--Je>0);return[Pe,Oe]};function ti(){return t.geoProjection(Hr).scale(131.747)}var zi=oa(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Yi(){return t.geoProjection(zi).scale(131.087)}function an(he){var be=he(A,0)[0]-he(-A,0)[0];function Pe(Oe,Je){var He=Oe>0?-.5:.5,et=he(Oe+He*k,Je);return et[0]-=He*be,et}return he.invert&&(Pe.invert=function(Oe,Je){var He=Oe>0?-.5:.5,et=he.invert(Oe+He*be,Je),Mt=et[0]-He*k;return Mt<-k?Mt+=2*k:Mt>k&&(Mt-=2*k),et[0]=Mt,et}),Pe}function hi(he,be){var Pe=v(he),Oe=v(be),Je=o(be),He=o(he)*Je,et=x(he)*Je,Mt=x(Oe*be);he=n(a(et,Mt)),be=q(He),n(he-A)>p&&(he%=A);var Dt=Ji(he>k/4?A-he:he,be);return he>k/4&&(Mt=Dt[0],Dt[0]=-Dt[1],Dt[1]=-Mt),Dt[0]*=Pe,Dt[1]*=-Oe,Dt}hi.invert=function(he,be){n(he)>1&&(he=v(he)*2-he),n(be)>1&&(be=v(be)*2-be);var Pe=v(he),Oe=v(be),Je=-Pe*he,He=-Oe*be,et=He/Je<1,Mt=ua(et?He:Je,et?Je:He),Dt=Mt[0],Ut=Mt[1],tr=o(Ut);return et&&(Dt=-A-Dt),[Pe*(a(x(Dt)*tr,-x(Ut))+k),Oe*q(o(Dt)*tr)]};function Ji(he,be){if(be===A)return[0,0];var Pe=x(be),Oe=Pe*Pe,Je=Oe*Oe,He=1+Je,et=1+3*Je,Mt=1-Je,Dt=q(1/H(He)),Ut=Mt+Oe*He*Dt,tr=(1-Pe)/Ut,mr=H(tr),Rr=tr*He,zr=H(Rr),Xr=mr*Mt,di,Li;if(he===0)return[0,-(Xr+Oe*zr)];var Ci=o(be),Qi=1/Ci,Mn=2*Pe*Ci,pa=(-3*Oe+Dt*et)*Mn,ea=(-Ut*Ci-(1-Pe)*pa)/(Ut*Ut),Ga=.5*ea/mr,To=Mt*Ga-2*Oe*mr*Mn,Wa=Oe*He*ea+tr*et*Mn,co=-Qi*Mn,Ro=-Qi*Wa,Ds=-2*Qi*To,As=4*he/k,yo;if(he>.222*k||be.175*k){if(di=(Xr+Oe*H(Rr*(1+Je)-Xr*Xr))/(1+Je),he>k/4)return[di,di];var po=di,_l=.5*di;di=.5*(_l+po),Li=50;do{var Hl=H(Rr-di*di),Zu=di*(Ds+co*Hl)+Ro*q(di/zr)-As;if(!Zu)break;Zu<0?_l=di:po=di,di=.5*(_l+po)}while(n(po-_l)>p&&--Li>0)}else{di=p,Li=25;do{var cu=di*di,el=H(Rr-cu),au=Ds+co*el,zc=di*au+Ro*q(di/zr)-As,zl=au+(Ro-co*cu)/el;di-=yo=el?zc/zl:0}while(n(yo)>p&&--Li>0)}return[di,-Xr-Oe*H(Rr-di*di)]}function ua(he,be){for(var Pe=0,Oe=1,Je=.5,He=50;;){var et=Je*Je,Mt=H(Je),Dt=q(1/H(1+et)),Ut=1-et+Je*(1+et)*Dt,tr=(1-Mt)/Ut,mr=H(tr),Rr=tr*(1+et),zr=mr*(1-et),Xr=Rr-he*he,di=H(Xr),Li=be+zr+Je*di;if(n(Oe-Pe)0?Pe=Je:Oe=Je,Je=.5*(Pe+Oe)}if(!He)return null;var Ci=q(Mt),Qi=o(Ci),Mn=1/Qi,pa=2*Mt*Qi,ea=(-3*Je+Dt*(1+3*et))*pa,Ga=(-Ut*Qi-(1-Mt)*ea)/(Ut*Ut),To=.5*Ga/mr,Wa=(1-et)*To-2*Je*mr*pa,co=-2*Mn*Wa,Ro=-Mn*pa,Ds=-Mn*(Je*(1+et)*Ga+tr*(1+3*et)*pa);return[k/4*(he*(co+Ro*di)+Ds*q(he/H(Rr))),Ci]}function Fn(){return t.geoProjection(an(hi)).scale(239.75)}function Sa(he,be,Pe){var Oe,Je,He;return he?(Oe=go(he,Pe),be?(Je=go(be,1-Pe),He=Je[1]*Je[1]+Pe*Oe[0]*Oe[0]*Je[0]*Je[0],[[Oe[0]*Je[2]/He,Oe[1]*Oe[2]*Je[0]*Je[1]/He],[Oe[1]*Je[1]/He,-Oe[0]*Oe[2]*Je[0]*Je[2]/He],[Oe[2]*Je[1]*Je[2]/He,-Pe*Oe[0]*Oe[1]*Je[0]/He]]):[[Oe[0],0],[Oe[1],0],[Oe[2],0]]):(Je=go(be,1-Pe),[[0,Je[0]/Je[1]],[1/Je[1],0],[Je[2]/Je[1],0]])}function go(he,be){var Pe,Oe,Je,He,et;if(be=1-p)return Pe=(1-be)/4,Oe=N(he),He=X(he),Je=1/Oe,et=Oe*G(he),[He+Pe*(et-he)/(Oe*Oe),Je-Pe*He*Je*(et-he),Je+Pe*He*Je*(et+he),2*i(s(he))-A+Pe*(et-he)/Oe];var Mt=[1,0,0,0,0,0,0,0,0],Dt=[H(be),0,0,0,0,0,0,0,0],Ut=0;for(Oe=H(1-be),et=1;n(Dt[Ut]/Mt[Ut])>p&&Ut<8;)Pe=Mt[Ut++],Dt[Ut]=(Pe-Oe)/2,Mt[Ut]=(Pe+Oe)/2,Oe=H(Pe*Oe),et*=2;Je=et*Mt[Ut]*he;do He=Dt[Ut]*x(Oe=Je)/Mt[Ut],Je=(q(He)+Je)/2;while(--Ut);return[x(Je),He=o(Je),He/o(Je-Oe),Je]}function Oo(he,be,Pe){var Oe=n(he),Je=n(be),He=G(Je);if(Oe){var et=1/x(Oe),Mt=1/(b(Oe)*b(Oe)),Dt=-(Mt+Pe*(He*He*et*et)-1+Pe),Ut=(Pe-1)*Mt,tr=(-Dt+H(Dt*Dt-4*Ut))/2;return[ho(i(1/H(tr)),Pe)*v(he),ho(i(H((tr/Mt-1)/Pe)),1-Pe)*v(be)]}return[0,ho(i(He),1-Pe)*v(be)]}function ho(he,be){if(!be)return he;if(be===1)return u(b(he/2+L));for(var Pe=1,Oe=H(1-be),Je=H(be),He=0;n(Je)>p;He++){if(he%k){var et=i(Oe*b(he)/Pe);et<0&&(et+=k),he+=et+~~(he/k)*k}else he+=he;Je=(Pe+Oe)/2,Oe=H(Pe*Oe),Je=((Pe=Je)-Oe)/2}return he/(h(2,He)*Pe)}function Mo(he,be){var Pe=(C-1)/(C+1),Oe=H(1-Pe*Pe),Je=ho(A,Oe*Oe),He=-1,et=u(b(k/4+n(be)/2)),Mt=s(He*et)/H(Pe),Dt=xo(Mt*o(He*he),Mt*x(He*he)),Ut=Oo(Dt[0],Dt[1],Oe*Oe);return[-Ut[1],(be>=0?1:-1)*(.5*Je-Ut[0])]}function xo(he,be){var Pe=he*he,Oe=be+1,Je=1-Pe-be*be;return[.5*((he>=0?A:-A)-a(Je,2*he)),-.25*u(Je*Je+4*Pe)+.5*u(Oe*Oe+Pe)]}function zs(he,be){var Pe=be[0]*be[0]+be[1]*be[1];return[(he[0]*be[0]+he[1]*be[1])/Pe,(he[1]*be[0]-he[0]*be[1])/Pe]}Mo.invert=function(he,be){var Pe=(C-1)/(C+1),Oe=H(1-Pe*Pe),Je=ho(A,Oe*Oe),He=-1,et=Sa(.5*Je-be,-he,Oe*Oe),Mt=zs(et[0],et[1]),Dt=a(Mt[1],Mt[0])/He;return[Dt,2*i(s(.5/He*u(Pe*Mt[0]*Mt[0]+Pe*Mt[1]*Mt[1])))-A]};function ks(){return t.geoProjection(an(Mo)).scale(151.496)}function Zs(he){var be=x(he),Pe=o(he),Oe=Xs(he);Oe.invert=Xs(-he);function Je(He,et){var Mt=Oe(He,et);He=Mt[0],et=Mt[1];var Dt=x(et),Ut=o(et),tr=o(He),mr=V(be*Dt+Pe*Ut*tr),Rr=x(mr),zr=n(Rr)>p?mr/Rr:1;return[zr*Pe*x(He),(n(He)>A?zr:-zr)*(be*Ut-Pe*Dt*tr)]}return Je.invert=function(He,et){var Mt=H(He*He+et*et),Dt=-x(Mt),Ut=o(Mt),tr=Mt*Ut,mr=-et*Dt,Rr=Mt*be,zr=H(tr*tr+mr*mr-Rr*Rr),Xr=a(tr*Rr+mr*zr,mr*Rr-tr*zr),di=(Mt>A?-1:1)*a(He*Dt,Mt*o(Xr)*Ut+et*x(Xr)*Dt);return Oe.invert(di,Xr)},Je}function Xs(he){var be=x(he),Pe=o(he);return function(Oe,Je){var He=o(Je),et=o(Oe)*He,Mt=x(Oe)*He,Dt=x(Je);return[a(Mt,et*Pe-Dt*be),q(Dt*Pe+et*be)]}}function wl(){var he=0,be=t.geoProjectionMutator(Zs),Pe=be(he),Oe=Pe.rotate,Je=Pe.stream,He=t.geoCircle();return Pe.parallel=function(et){if(!arguments.length)return he*P;var Mt=Pe.rotate();return be(he=et*T).rotate(Mt)},Pe.rotate=function(et){return arguments.length?(Oe.call(Pe,[et[0],et[1]-he*P]),He.center([-et[0],-et[1]]),Pe):(et=Oe.call(Pe),et[1]+=he*P,et)},Pe.stream=function(et){return et=Je(et),et.sphere=function(){et.polygonStart();var Mt=.01,Dt=He.radius(90-Mt)().coordinates[0],Ut=Dt.length-1,tr=-1,mr;for(et.lineStart();++tr=0;)et.point((mr=Dt[tr])[0],mr[1]);et.lineEnd(),et.polygonEnd()},et},Pe.scale(79.4187).parallel(45).clipAngle(180-.001)}var os=3,cl=q(1-1/os)*P,Cs=ar(0);function ml(he){var be=cl*T,Pe=ht(k,be)[0]-ht(-k,be)[0],Oe=Cs(0,be)[1],Je=ht(0,be)[1],He=M-Je,et=g/he,Mt=4/g,Dt=Oe+He*He*4/g;function Ut(tr,mr){var Rr,zr=n(mr);if(zr>be){var Xr=f(he-1,c(0,l((tr+k)/et)));tr+=k*(he-1)/he-Xr*et,Rr=ht(tr,zr),Rr[0]=Rr[0]*g/Pe-g*(he-1)/(2*he)+Xr*g/he,Rr[1]=Oe+(Rr[1]-Je)*4*He/g,mr<0&&(Rr[1]=-Rr[1])}else Rr=Cs(tr,mr);return Rr[0]*=Mt,Rr[1]/=Dt,Rr}return Ut.invert=function(tr,mr){tr/=Mt,mr*=Dt;var Rr=n(mr);if(Rr>Oe){var zr=f(he-1,c(0,l((tr+k)/et)));tr=(tr+k*(he-1)/he-zr*et)*Pe/g;var Xr=ht.invert(tr,.25*(Rr-Oe)*g/He+Je);return Xr[0]-=k*(he-1)/he-zr*et,mr<0&&(Xr[1]=-Xr[1]),Xr}return Cs.invert(tr,mr)},Ut}function Ys(he,be){return[he,be&1?90-p:cl]}function Hs(he,be){return[he,be&1?-90+p:-cl]}function Eo(he){return[he[0]*(1-p),he[1]]}function fs(he){var be=[].concat(r.range(-180,180+he/2,he).map(Ys),r.range(180,-180-he/2,-he).map(Hs));return{type:"Polygon",coordinates:[he===180?be.map(Eo):be]}}function Ql(){var he=4,be=t.geoProjectionMutator(ml),Pe=be(he),Oe=Pe.stream;return Pe.lobes=function(Je){return arguments.length?be(he=+Je):he},Pe.stream=function(Je){var He=Pe.rotate(),et=Oe(Je),Mt=(Pe.rotate([0,0]),Oe(Je));return Pe.rotate(He),et.sphere=function(){t.geoStream(fs(180/he),Mt)},et},Pe.scale(239.75)}function Hu(he){var be=1+he,Pe=x(1/be),Oe=q(Pe),Je=2*H(k/(He=k+4*Oe*be)),He,et=.5*Je*(be+H(he*(2+he))),Mt=he*he,Dt=be*be;function Ut(tr,mr){var Rr=1-x(mr),zr,Xr;if(Rr&&Rr<2){var di=A-mr,Li=25,Ci;do{var Qi=x(di),Mn=o(di),pa=Oe+a(Qi,be-Mn),ea=1+Dt-2*be*Mn;di-=Ci=(di-Mt*Oe-be*Qi+ea*pa-.5*Rr*He)/(2*be*Qi*pa)}while(n(Ci)>E&&--Li>0);zr=Je*H(ea),Xr=tr*pa/k}else zr=Je*(he+Rr),Xr=tr*Oe/k;return[zr*x(Xr),et-zr*o(Xr)]}return Ut.invert=function(tr,mr){var Rr=tr*tr+(mr-=et)*mr,zr=(1+Dt-Rr/(Je*Je))/(2*be),Xr=V(zr),di=x(Xr),Li=Oe+a(di,be-zr);return[q(tr/H(Rr))*k/Li,q(1-2*(Xr-Mt*Oe-be*di+(1+Dt-2*be*zr)*Li)/He)]},Ut}function fc(){var he=1,be=t.geoProjectionMutator(Hu),Pe=be(he);return Pe.ratio=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(167.774).center([0,18.67])}var ms=.7109889596207567,on=.0528035274542;function fa(he,be){return be>-ms?(he=Yt(he,be),he[1]+=on,he):St(he,be)}fa.invert=function(he,be){return be>-ms?Yt.invert(he,be-on):St.invert(he,be)};function Qu(){return t.geoProjection(fa).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}function Rl(he,be){return n(be)>ms?(he=Yt(he,be),he[1]-=be>0?on:-on,he):St(he,be)}Rl.invert=function(he,be){return n(be)>ms?Yt.invert(he,be+(be>0?on:-on)):St.invert(he,be)};function vo(){return t.geoProjection(Rl).scale(152.63)}function Zl(he,be,Pe,Oe){var Je=H(4*k/(2*Pe+(1+he-be/2)*x(2*Pe)+(he+be)/2*x(4*Pe)+be/2*x(6*Pe))),He=H(Oe*x(Pe)*H((1+he*o(2*Pe)+be*o(4*Pe))/(1+he+be))),et=Pe*Dt(1);function Mt(mr){return H(1+he*o(2*mr)+be*o(4*mr))}function Dt(mr){var Rr=mr*Pe;return(2*Rr+(1+he-be/2)*x(2*Rr)+(he+be)/2*x(4*Rr)+be/2*x(6*Rr))/Pe}function Ut(mr){return Mt(mr)*x(mr)}var tr=function(mr,Rr){var zr=Pe*qt(Dt,et*x(Rr)/Pe,Rr/k);isNaN(zr)&&(zr=Pe*v(Rr));var Xr=Je*Mt(zr);return[Xr*He*mr/k*o(zr),Xr/He*x(zr)]};return tr.invert=function(mr,Rr){var zr=qt(Ut,Rr*He/Je);return[mr*k/(o(zr)*Je*He*Mt(zr)),q(Pe*Dt(zr/Pe)/et)]},Pe===0&&(Je=H(Oe/k),tr=function(mr,Rr){return[mr*Je,x(Rr)/Je]},tr.invert=function(mr,Rr){return[mr/Je,q(Rr*Je)]}),tr}function Ks(){var he=1,be=0,Pe=45*T,Oe=2,Je=t.geoProjectionMutator(Zl),He=Je(he,be,Pe,Oe);return He.a=function(et){return arguments.length?Je(he=+et,be,Pe,Oe):he},He.b=function(et){return arguments.length?Je(he,be=+et,Pe,Oe):be},He.psiMax=function(et){return arguments.length?Je(he,be,Pe=+et*T,Oe):Pe*P},He.ratio=function(et){return arguments.length?Je(he,be,Pe,Oe=+et):Oe},He.scale(180.739)}function Xl(he,be,Pe,Oe,Je,He,et,Mt,Dt,Ut,tr){if(tr.nanEncountered)return NaN;var mr,Rr,zr,Xr,di,Li,Ci,Qi,Mn,pa;if(mr=Pe-be,Rr=he(be+mr*.25),zr=he(Pe-mr*.25),isNaN(Rr)){tr.nanEncountered=!0;return}if(isNaN(zr)){tr.nanEncountered=!0;return}return Xr=mr*(Oe+4*Rr+Je)/12,di=mr*(Je+4*zr+He)/12,Li=Xr+di,pa=(Li-et)/15,Ut>Dt?(tr.maxDepthCount++,Li+pa):Math.abs(pa)>1;do Dt[Li]>zr?di=Li:Xr=Li,Li=Xr+di>>1;while(Li>Xr);var Ci=Dt[Li+1]-Dt[Li];return Ci&&(Ci=(zr-Dt[Li+1])/Ci),(Li+1+Ci)/et}var mr=2*tr(1)/k*He/Pe,Rr=function(zr,Xr){var di=tr(n(x(Xr))),Li=Oe(di)*zr;return di/=mr,[Li,Xr>=0?di:-di]};return Rr.invert=function(zr,Xr){var di;return Xr*=mr,n(Xr)<1&&(di=v(Xr)*q(Je(n(Xr))*He)),[zr/Oe(n(Xr)),di]},Rr}function ko(){var he=0,be=2.5,Pe=1.183136,Oe=t.geoProjectionMutator(Zn),Je=Oe(he,be,Pe);return Je.alpha=function(He){return arguments.length?Oe(he=+He,be,Pe):he},Je.k=function(He){return arguments.length?Oe(he,be=+He,Pe):be},Je.gamma=function(He){return arguments.length?Oe(he,be,Pe=+He):Pe},Je.scale(152.63)}function Co(he,be){return n(he[0]-be[0])=0;--Dt)Pe=he[1][Dt],Oe=Pe[0][0],Je=Pe[0][1],He=Pe[1][1],et=Pe[2][0],Mt=Pe[2][1],be.push(Tl([[et-p,Mt-p],[et-p,He+p],[Oe+p,He+p],[Oe+p,Je-p]],30));return{type:"Polygon",coordinates:[r.merge(be)]}}function So(he,be,Pe){var Oe,Je;function He(Dt,Ut){for(var tr=Ut<0?-1:1,mr=be[+(Ut<0)],Rr=0,zr=mr.length-1;Rrmr[Rr][2][0];++Rr);var Xr=he(Dt-mr[Rr][1][0],Ut);return Xr[0]+=he(mr[Rr][1][0],tr*Ut>tr*mr[Rr][0][1]?mr[Rr][0][1]:Ut)[0],Xr}Pe?He.invert=Pe(He):he.invert&&(He.invert=function(Dt,Ut){for(var tr=Je[+(Ut<0)],mr=be[+(Ut<0)],Rr=0,zr=tr.length;RrXr&&(di=zr,zr=Xr,Xr=di),[[mr,zr],[Rr,Xr]]})}),et):be.map(function(Ut){return Ut.map(function(tr){return[[tr[0][0]*P,tr[0][1]*P],[tr[1][0]*P,tr[1][1]*P],[tr[2][0]*P,tr[2][1]*P]]})})},be!=null&&et.lobes(be),et}var cf=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function rh(){return So(xt,cf).scale(160.857)}var Al=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Hc(){return So(Rl,Al).scale(152.63)}var eu=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Ls(){return So(Yt,eu).scale(169.529)}var mu=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function kc(){return So(Yt,mu).scale(169.529).rotate([20,0])}var Of=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];function Gc(){return So(fa,Of,rt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var vd=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function Bf(){return So(St,vd).scale(152.63).rotate([-20,0])}function ss(he,be){return[3/g*he*H(k*k/3-be*be),be]}ss.invert=function(he,be){return[g/3*he/H(k*k/3-be*be),be]};function ff(){return t.geoProjection(ss).scale(158.837)}function ih(he){function be(Pe,Oe){if(n(n(Oe)-A)2)return null;Pe/=2,Oe/=2;var He=Pe*Pe,et=Oe*Oe,Mt=2*Oe/(1+He+et);return Mt=h((1+Mt)/(1-Mt),1/he),[a(2*Pe,1-He-et)/he,q((Mt-1)/(Mt+1))]},be}function Vl(){var he=.5,be=t.geoProjectionMutator(ih),Pe=be(he);return Pe.spacing=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(124.75)}var Js=k/C;function hc(he,be){return[he*(1+H(o(be)))/2,be/(o(be/2)*o(he/6))]}hc.invert=function(he,be){var Pe=n(he),Oe=n(be),Je=p,He=A;Oep||n(Li)>p)&&--Je>0);return Je&&[Pe,Oe]};function $s(){return t.geoProjection(ws).scale(139.98)}function hs(he,be){return[x(he)/o(be),b(be)*o(he)]}hs.invert=function(he,be){var Pe=he*he,Oe=be*be,Je=Oe+1,He=Pe+Je,et=he?_*H((He-H(He*He-4*Pe))/Pe):1/H(Je);return[q(he*et),v(be)*V(et)]};function Ms(){return t.geoProjection(hs).scale(144.049).clipAngle(90-.001)}function dc(he){var be=o(he),Pe=b(L+he/2);function Oe(Je,He){var et=He-he,Mt=n(et)=0;)tr=he[Ut],mr=tr[0]+Mt*(zr=mr)-Dt*Rr,Rr=tr[1]+Mt*Rr+Dt*zr;return mr=Mt*(zr=mr)-Dt*Rr,Rr=Mt*Rr+Dt*zr,[mr,Rr]}return Pe.invert=function(Oe,Je){var He=20,et=Oe,Mt=Je;do{for(var Dt=be,Ut=he[Dt],tr=Ut[0],mr=Ut[1],Rr=0,zr=0,Xr;--Dt>=0;)Ut=he[Dt],Rr=tr+et*(Xr=Rr)-Mt*zr,zr=mr+et*zr+Mt*Xr,tr=Ut[0]+et*(Xr=tr)-Mt*mr,mr=Ut[1]+et*mr+Mt*Xr;Rr=tr+et*(Xr=Rr)-Mt*zr,zr=mr+et*zr+Mt*Xr,tr=et*(Xr=tr)-Mt*mr-Oe,mr=et*mr+Mt*Xr-Je;var di=Rr*Rr+zr*zr,Li,Ci;et-=Li=(tr*Rr+mr*zr)/di,Mt-=Ci=(mr*Rr-tr*zr)/di}while(n(Li)+n(Ci)>p*p&&--He>0);if(He){var Qi=H(et*et+Mt*Mt),Mn=2*i(Qi*.5),pa=x(Mn);return[a(et*pa,Qi*o(Mn)),Qi?q(Mt*pa/Qi):0]}},Pe}var wo=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],Od=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],$o=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Ja=[[.9245,0],[0,0],[.01943,0]],Ef=[[.721316,0],[0,0],[-.00881625,-.00617325]];function tc(){return Ml(wo,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function uu(){return Ml(Od,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Mh(){return Ml($o,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function jc(){return Ml(Ja,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function kf(){return Ml(Ef,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Ml(he,be){var Pe=t.geoProjection(ov(he)).rotate(be).clipAngle(90),Oe=t.geoRotation(be),Je=Pe.center;return delete Pe.rotate,Pe.center=function(He){return arguments.length?Je(Oe(He)):Oe.invert(Je())},Pe}var Yh=H(6),Eh=H(7);function nh(he,be){var Pe=q(7*x(be)/(3*Yh));return[Yh*he*(2*o(2*Pe/3)-1)/Eh,9*x(Pe/3)/Eh]}nh.invert=function(he,be){var Pe=3*q(be*Eh/9);return[he*Eh/(Yh*(2*o(2*Pe/3)-1)),q(x(Pe)*3*Yh/7)]};function hf(){return t.geoProjection(nh).scale(164.859)}function kh(he,be){for(var Pe=(1+_)*x(be),Oe=be,Je=0,He;Je<25&&(Oe-=He=(x(Oe/2)+x(Oe)-Pe)/(.5*o(Oe/2)+o(Oe)),!(n(He)E&&--Oe>0);return He=Pe*Pe,et=He*He,Mt=He*et,[he/(.84719-.13063*He+Mt*Mt*(-.04515+.05494*He-.02326*et+.00331*Mt)),Pe]};function df(){return t.geoProjection(Wc).scale(175.295)}function Cu(he,be){return[he*(1+o(be))/2,2*(be-b(be/2))]}Cu.invert=function(he,be){for(var Pe=be/2,Oe=0,Je=1/0;Oe<10&&n(Je)>p;++Oe){var He=o(be/2);be-=Je=(be-b(be/2)-Pe)/(1-.5/(He*He))}return[2*he/(1+o(be)),be]};function Nf(){return t.geoProjection(Cu).scale(152.63)}var Zc=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function ds(){return So(Ge(1/0),Zc).rotate([20,0]).scale(152.63)}function Ch(he,be){var Pe=x(be),Oe=o(be),Je=v(he);if(he===0||n(be)===A)return[0,be];if(be===0)return[he,0];if(n(he)===A)return[he*Oe,A*Pe];var He=k/(2*he)-2*he/k,et=2*be/k,Mt=(1-et*et)/(Pe-et),Dt=He*He,Ut=Mt*Mt,tr=1+Dt/Ut,mr=1+Ut/Dt,Rr=(He*Pe/Mt-He/2)/tr,zr=(Ut*Pe/Dt+Mt/2)/mr,Xr=Rr*Rr+Oe*Oe/tr,di=zr*zr-(Ut*Pe*Pe/Dt+Mt*Pe-1)/mr;return[A*(Rr+H(Xr)*Je),A*(zr+H(di<0?0:di)*v(-be*He)*Je)]}Ch.invert=function(he,be){he/=A,be/=A;var Pe=he*he,Oe=be*be,Je=Pe+Oe,He=k*k;return[he?(Je-1+H((1-Je)*(1-Je)+4*Pe))/(2*he)*A:0,qt(function(et){return Je*(k*x(et)-2*et)*k+4*et*et*(be-x(et))+2*k*et-He*be},0)]};function Bd(){return t.geoProjection(Ch).scale(127.267)}var Jh=1.0148,Cf=.23185,pd=-.14499,Lu=.02406,$h=Jh,tu=5*Cf,Pu=7*pd,Lc=9*Lu,fl=1.790857183;function Xc(he,be){var Pe=be*be;return[he,be*(Jh+Pe*Pe*(Cf+Pe*(pd+Lu*Pe)))]}Xc.invert=function(he,be){be>fl?be=fl:be<-fl&&(be=-fl);var Pe=be,Oe;do{var Je=Pe*Pe;Pe-=Oe=(Pe*(Jh+Je*Je*(Cf+Je*(pd+Lu*Je)))-be)/($h+Je*Je*(tu+Je*(Pu+Lc*Je)))}while(n(Oe)>p);return[he,Pe]};function ic(){return t.geoProjection(Xc).scale(139.319)}function yu(he,be){if(n(be)p&&--Je>0);return et=b(Oe),[(n(be)=0;)if(Oe=be[Mt],Pe[0]===Oe[0]&&Pe[1]===Oe[1]){if(He)return[He,Pe];He=Pe}}}function ru(he){for(var be=he.length,Pe=[],Oe=he[be-1],Je=0;Je0?[-Oe[0],0]:[180-Oe[0],180])};var be=sh.map(function(Pe){return{face:Pe,project:he(Pe)}});return[-1,0,0,1,0,1,4,5].forEach(function(Pe,Oe){var Je=be[Pe];Je&&(Je.children||(Je.children=[])).push(be[Oe])}),Lf(be[0],function(Pe,Oe){return be[Pe<-k/2?Oe<0?6:4:Pe<0?Oe<0?2:0:PeOe^zr>Oe&&Pe<(Rr-Ut)*(Oe-tr)/(zr-tr)+Ut&&(Je=!Je)}return Je}function Dl(he,be){var Pe=be.stream,Oe;if(!Pe)throw new Error("invalid projection");switch(he&&he.type){case"Feature":Oe=Wu;break;case"FeatureCollection":Oe=Ih;break;default:Oe=gc;break}return Oe(he,Pe)}function Ih(he,be){return{type:"FeatureCollection",features:he.features.map(function(Pe){return Wu(Pe,be)})}}function Wu(he,be){return{type:"Feature",id:he.id,properties:he.properties,geometry:gc(he.geometry,be)}}function Rc(he,be){return{type:"GeometryCollection",geometries:he.geometries.map(function(Pe){return gc(Pe,be)})}}function gc(he,be){if(!he)return null;if(he.type==="GeometryCollection")return Rc(he,be);var Pe;switch(he.type){case"Point":Pe=mc;break;case"MultiPoint":Pe=mc;break;case"LineString":Pe=Yc;break;case"MultiLineString":Pe=Yc;break;case"Polygon":Pe=nc;break;case"MultiPolygon":Pe=nc;break;case"Sphere":Pe=nc;break;default:return null}return t.geoStream(he,be(Pe)),Pe.result()}var hl=[],iu=[],mc={point:function(he,be){hl.push([he,be])},result:function(){var he=hl.length?hl.length<2?{type:"Point",coordinates:hl[0]}:{type:"MultiPoint",coordinates:hl}:null;return hl=[],he}},Yc={lineStart:pc,point:function(he,be){hl.push([he,be])},lineEnd:function(){hl.length&&(iu.push(hl),hl=[])},result:function(){var he=iu.length?iu.length<2?{type:"LineString",coordinates:iu[0]}:{type:"MultiLineString",coordinates:iu}:null;return iu=[],he}},nc={polygonStart:pc,lineStart:pc,point:function(he,be){hl.push([he,be])},lineEnd:function(){var he=hl.length;if(he){do hl.push(hl[0].slice());while(++he<4);iu.push(hl),hl=[]}},polygonEnd:pc,result:function(){if(!iu.length)return null;var he=[],be=[];return iu.forEach(function(Pe){pf(Pe)?he.push([Pe]):be.push(Pe)}),be.forEach(function(Pe){var Oe=Pe[0];he.some(function(Je){if(Ph(Je[0],Oe))return Je.push(Pe),!0})||he.push([Pe])}),iu=[],he.length?he.length>1?{type:"MultiPolygon",coordinates:he}:{type:"Polygon",coordinates:he[0]}:null}};function gf(he){var be=he(A,0)[0]-he(-A,0)[0];function Pe(Oe,Je){var He=n(Oe)0?Oe-k:Oe+k,Je),Mt=(et[0]-et[1])*_,Dt=(et[0]+et[1])*_;if(He)return[Mt,Dt];var Ut=be*_,tr=Mt>0^Dt>0?-1:1;return[tr*Mt-v(Dt)*Ut,tr*Dt-v(Mt)*Ut]}return he.invert&&(Pe.invert=function(Oe,Je){var He=(Oe+Je)*_,et=(Je-Oe)*_,Mt=n(He)<.5*be&&n(et)<.5*be;if(!Mt){var Dt=be*_,Ut=He>0^et>0?-1:1,tr=-Ut*Oe+(et>0?1:-1)*Dt,mr=-Ut*Je+(He>0?1:-1)*Dt;He=(-tr-mr)*_,et=(tr-mr)*_}var Rr=he.invert(He,et);return Mt||(Rr[0]+=He>0?k:-k),Rr}),t.geoProjection(Pe).rotate([-90,-90,45]).clipAngle(180-.001)}function gt(){return gf(hi).scale(176.423)}function Bt(){return gf(Mo).scale(111.48)}function wr(he,be){if(!(0<=(be=+be)&&be<=20))throw new Error("invalid digits");function Pe(Ut){var tr=Ut.length,mr=2,Rr=new Array(tr);for(Rr[0]=+Ut[0].toFixed(be),Rr[1]=+Ut[1].toFixed(be);mr2||zr[0]!=tr[0]||zr[1]!=tr[1])&&(mr.push(zr),tr=zr)}return mr.length===1&&Ut.length>1&&mr.push(Pe(Ut[Ut.length-1])),mr}function He(Ut){return Ut.map(Je)}function et(Ut){if(Ut==null)return Ut;var tr;switch(Ut.type){case"GeometryCollection":tr={type:"GeometryCollection",geometries:Ut.geometries.map(et)};break;case"Point":tr={type:"Point",coordinates:Pe(Ut.coordinates)};break;case"MultiPoint":tr={type:Ut.type,coordinates:Oe(Ut.coordinates)};break;case"LineString":tr={type:Ut.type,coordinates:Je(Ut.coordinates)};break;case"MultiLineString":case"Polygon":tr={type:Ut.type,coordinates:He(Ut.coordinates)};break;case"MultiPolygon":tr={type:"MultiPolygon",coordinates:Ut.coordinates.map(He)};break;default:return Ut}return Ut.bbox!=null&&(tr.bbox=Ut.bbox),tr}function Mt(Ut){var tr={type:"Feature",properties:Ut.properties,geometry:et(Ut.geometry)};return Ut.id!=null&&(tr.id=Ut.id),Ut.bbox!=null&&(tr.bbox=Ut.bbox),tr}if(he!=null)switch(he.type){case"Feature":return Mt(he);case"FeatureCollection":{var Dt={type:"FeatureCollection",features:he.features.map(Mt)};return he.bbox!=null&&(Dt.bbox=he.bbox),Dt}default:return et(he)}return he}function vr(he){var be=x(he);function Pe(Oe,Je){var He=be?b(Oe*be/2)/be:Oe/2;if(!Je)return[2*He,-he];var et=2*i(He*x(Je)),Mt=1/b(Je);return[x(et)*Mt,Je+(1-o(et))*Mt-he]}return Pe.invert=function(Oe,Je){if(n(Je+=he)p&&--Mt>0);var Rr=Oe*(Ut=b(et)),zr=b(n(Je)0?A:-A)*(Dt+Je*(tr-et)/2+Je*Je*(tr-2*Dt+et)/2)]}xi.invert=function(he,be){var Pe=be/A,Oe=Pe*90,Je=f(18,n(Oe/5)),He=c(0,l(Je));do{var et=fi[He][1],Mt=fi[He+1][1],Dt=fi[f(19,He+2)][1],Ut=Dt-et,tr=Dt-2*Mt+et,mr=2*(n(Pe)-Mt)/Ut,Rr=tr/Ut,zr=mr*(1-Rr*mr*(1-2*Rr*mr));if(zr>=0||He===1){Oe=(be>=0?5:-5)*(zr+Je);var Xr=50,di;do Je=f(18,n(Oe)/5),He=l(Je),zr=Je-He,et=fi[He][1],Mt=fi[He+1][1],Dt=fi[f(19,He+2)][1],Oe-=(di=(be>=0?A:-A)*(Mt+zr*(Dt-et)/2+zr*zr*(Dt-2*Mt+et)/2)-be)*P;while(n(di)>E&&--Xr>0);break}}while(--He>=0);var Li=fi[He][0],Ci=fi[He+1][0],Qi=fi[f(19,He+2)][0];return[he/(Ci+zr*(Qi-Li)/2+zr*zr*(Qi-2*Ci+Li)/2),Oe*T]};function Fi(){return t.geoProjection(xi).scale(152.63)}function Xi(he){function be(Pe,Oe){var Je=o(Oe),He=(he-1)/(he-Je*o(Pe));return[He*Je*x(Pe),He*x(Oe)]}return be.invert=function(Pe,Oe){var Je=Pe*Pe+Oe*Oe,He=H(Je),et=(he-H(1-Je*(he+1)/(he-1)))/((he-1)/He+He/(he-1));return[a(Pe*et,He*H(1-et*et)),He?q(Oe*et/He):0]},be}function hn(he,be){var Pe=Xi(he);if(!be)return Pe;var Oe=o(be),Je=x(be);function He(et,Mt){var Dt=Pe(et,Mt),Ut=Dt[1],tr=Ut*Je/(he-1)+Oe;return[Dt[0]*Oe/tr,Ut/tr]}return He.invert=function(et,Mt){var Dt=(he-1)/(he-1-Mt*Je);return Pe.invert(Dt*et,Dt*Mt*Oe)},He}function Ti(){var he=2,be=0,Pe=t.geoProjectionMutator(hn),Oe=Pe(he,be);return Oe.distance=function(Je){return arguments.length?Pe(he=+Je,be):he},Oe.tilt=function(Je){return arguments.length?Pe(he,be=Je*T):be*P},Oe.scale(432.147).clipAngle(V(1/he)*P-1e-6)}var qi=1e-4,Ii=1e4,mi=-180,Pn=mi+qi,Ma=180,Ta=Ma-qi,Ea=-90,qa=Ea+qi,Cn=90,sn=Cn-qi;function Ua(he){return he.length>0}function mo(he){return Math.floor(he*Ii)/Ii}function Xo(he){return he===Ea||he===Cn?[0,he]:[mi,mo(he)]}function Ts(he){var be=he[0],Pe=he[1],Oe=!1;return be<=Pn?(be=mi,Oe=!0):be>=Ta&&(be=Ma,Oe=!0),Pe<=qa?(Pe=Ea,Oe=!0):Pe>=sn&&(Pe=Cn,Oe=!0),Oe?[be,Pe]:he}function Qo(he){return he.map(Ts)}function ys(he,be,Pe){for(var Oe=0,Je=he.length;Oe=Ta||tr<=qa||tr>=sn){He[et]=Ts(Dt);for(var mr=et+1;mrPn&&zrqa&&Xr=Mt)break;Pe.push({index:-1,polygon:be,ring:He=He.slice(mr-1)}),He[0]=Xo(He[0][1]),et=-1,Mt=He.length}}}}function Bo(he){var be,Pe=he.length,Oe={},Je={},He,et,Mt,Dt,Ut;for(be=0;be0?k-Mt:Mt)*P],Ut=t.geoProjection(he(et)).rotate(Dt),tr=t.geoRotation(Dt),mr=Ut.center;return delete Ut.rotate,Ut.center=function(Rr){return arguments.length?mr(tr(Rr)):tr.invert(mr())},Ut.clipAngle(90)}function Ko(he){var be=o(he);function Pe(Oe,Je){var He=t.geoGnomonicRaw(Oe,Je);return He[0]*=be,He}return Pe.invert=function(Oe,Je){return t.geoGnomonicRaw.invert(Oe/be,Je)},Pe}function nu(){return Ru([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function Ru(he,be){return vs(Ko,he,be)}function ac(he){if(!(he*=2))return t.geoAzimuthalEquidistantRaw;var be=-he/2,Pe=-be,Oe=he*he,Je=b(Pe),He=.5/x(Pe);function et(Mt,Dt){var Ut=V(o(Dt)*o(Mt-be)),tr=V(o(Dt)*o(Mt-Pe)),mr=Dt<0?-1:1;return Ut*=Ut,tr*=tr,[(Ut-tr)/(2*he),mr*H(4*Oe*tr-(Oe-Ut+tr)*(Oe-Ut+tr))/(2*he)]}return et.invert=function(Mt,Dt){var Ut=Dt*Dt,tr=o(H(Ut+(Rr=Mt+be)*Rr)),mr=o(H(Ut+(Rr=Mt+Pe)*Rr)),Rr,zr;return[a(zr=tr-mr,Rr=(tr+mr)*Je),(Dt<0?-1:1)*V(H(Rr*Rr+zr*zr)*He)]},et}function mf(){return bu([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function bu(he,be){return vs(ac,he,be)}function Kc(he,be){if(n(be)p&&--Mt>0);return[v(he)*(H(Je*Je+4)+Je)*k/4,A*et]};function _c(){return t.geoProjection(yc).scale(127.16)}function le(he,be,Pe,Oe,Je){function He(et,Mt){var Dt=Pe*x(Oe*Mt),Ut=H(1-Dt*Dt),tr=H(2/(1+Ut*o(et*=Je)));return[he*Ut*tr*x(et),be*Dt*tr]}return He.invert=function(et,Mt){var Dt=et/he,Ut=Mt/be,tr=H(Dt*Dt+Ut*Ut),mr=2*q(tr/2);return[a(et*b(mr),he*tr)/Je,tr&&q(Mt*x(mr)/(be*Pe*tr))/Oe]},He}function w(he,be,Pe,Oe){var Je=k/3;he=c(he,p),be=c(be,p),he=f(he,A),be=f(be,k-p),Pe=c(Pe,0),Pe=f(Pe,100-p),Oe=c(Oe,p);var He=Pe/100+1,et=Oe/100,Mt=V(He*o(Je))/Je,Dt=x(he)/x(Mt*A),Ut=be/k,tr=H(et*x(he/2)/x(be/2)),mr=tr/H(Ut*Dt*Mt),Rr=1/(tr*H(Ut*Dt*Mt));return le(mr,Rr,Dt,Mt,Ut)}function B(){var he=65*T,be=60*T,Pe=20,Oe=200,Je=t.geoProjectionMutator(w),He=Je(he,be,Pe,Oe);return He.poleline=function(et){return arguments.length?Je(he=+et*T,be,Pe,Oe):he*P},He.parallels=function(et){return arguments.length?Je(he,be=+et*T,Pe,Oe):be*P},He.inflation=function(et){return arguments.length?Je(he,be,Pe=+et,Oe):Pe},He.ratio=function(et){return arguments.length?Je(he,be,Pe,Oe=+et):Oe},He.scale(163.775)}function Q(){return B().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)}var ee=4*k+3*H(3),se=2*H(2*k*H(3)/ee),qe=Ct(se*H(3)/k,se,ee/6);function je(){return t.geoProjection(qe).scale(176.84)}function it(he,be){return[he*H(1-3*be*be/(k*k)),be]}it.invert=function(he,be){return[he/H(1-3*be*be/(k*k)),be]};function yt(){return t.geoProjection(it).scale(152.63)}function Ot(he,be){var Pe=o(be),Oe=o(he)*Pe,Je=1-Oe,He=o(he=a(x(he)*Pe,-x(be))),et=x(he);return Pe=H(1-Oe*Oe),[et*Pe-He*Je,-He*Pe-et*Je]}Ot.invert=function(he,be){var Pe=(he*he+be*be)/-2,Oe=H(-Pe*(2+Pe)),Je=be*Pe+he*Oe,He=he*Pe-be*Oe,et=H(He*He+Je*Je);return[a(Oe*Je,et*(1+Pe)),et?-q(Oe*He/et):0]};function Nt(){return t.geoProjection(Ot).rotate([0,-90,45]).scale(124.75).clipAngle(180-.001)}function hr(he,be){var Pe=Me(he,be);return[(Pe[0]+he/A)/2,(Pe[1]+be)/2]}hr.invert=function(he,be){var Pe=he,Oe=be,Je=25;do{var He=o(Oe),et=x(Oe),Mt=x(2*Oe),Dt=et*et,Ut=He*He,tr=x(Pe),mr=o(Pe/2),Rr=x(Pe/2),zr=Rr*Rr,Xr=1-Ut*mr*mr,di=Xr?V(He*mr)*H(Li=1/Xr):Li=0,Li,Ci=.5*(2*di*He*Rr+Pe/A)-he,Qi=.5*(di*et+Oe)-be,Mn=.5*Li*(Ut*zr+di*He*mr*Dt)+.5/A,pa=Li*(tr*Mt/4-di*et*Rr),ea=.125*Li*(Mt*Rr-di*et*Ut*tr),Ga=.5*Li*(Dt*mr+di*zr*He)+.5,To=pa*ea-Ga*Mn,Wa=(Qi*pa-Ci*Ga)/To,co=(Ci*ea-Qi*Mn)/To;Pe-=Wa,Oe-=co}while((n(Wa)>p||n(co)>p)&&--Je>0);return[Pe,Oe]};function Sr(){return t.geoProjection(hr).scale(158.837)}e.geoNaturalEarth=t.geoNaturalEarth1,e.geoNaturalEarthRaw=t.geoNaturalEarth1Raw,e.geoAiry=_e,e.geoAiryRaw=ae,e.geoAitoff=ke,e.geoAitoffRaw=Me,e.geoArmadillo=ie,e.geoArmadilloRaw=ge,e.geoAugust=Ee,e.geoAugustRaw=Te,e.geoBaker=me,e.geoBakerRaw=Ce,e.geoBerghaus=ce,e.geoBerghausRaw=Re,e.geoBertin1953=Rt,e.geoBertin1953Raw=ot,e.geoBoggs=bt,e.geoBoggsRaw=xt,e.geoBonne=Ht,e.geoBonneRaw=dt,e.geoBottomley=fr,e.geoBottomleyRaw=$t,e.geoBromley=Br,e.geoBromleyRaw=_r,e.geoChamberlin=Xe,e.geoChamberlinRaw=Ne,e.geoChamberlinAfrica=Ve,e.geoCollignon=Le,e.geoCollignonRaw=ht,e.geoCraig=Se,e.geoCraigRaw=xe,e.geoCraster=Vt,e.geoCrasterRaw=Gt,e.geoCylindricalEqualArea=Qr,e.geoCylindricalEqualAreaRaw=ar,e.geoCylindricalStereographic=jr,e.geoCylindricalStereographicRaw=ai,e.geoEckert1=bi,e.geoEckert1Raw=ri,e.geoEckert2=Wi,e.geoEckert2Raw=nn,e.geoEckert3=_n,e.geoEckert3Raw=Ni,e.geoEckert4=zn,e.geoEckert4Raw=$i,e.geoEckert5=It,e.geoEckert5Raw=Wn,e.geoEckert6=jt,e.geoEckert6Raw=ft,e.geoEisenlohr=Fr,e.geoEisenlohrRaw=yr,e.geoFahey=gi,e.geoFaheyRaw=Vr,e.geoFoucaut=Mi,e.geoFoucautRaw=Si,e.geoFoucautSinusoidal=Gi,e.geoFoucautSinusoidalRaw=Pi,e.geoGilbert=jn,e.geoGingery=jo,e.geoGingeryRaw=la,e.geoGinzburg4=Ha,e.geoGinzburg4Raw=Sn,e.geoGinzburg5=xn,e.geoGinzburg5Raw=oo,e.geoGinzburg6=br,e.geoGinzburg6Raw=_t,e.geoGinzburg8=ti,e.geoGinzburg8Raw=Hr,e.geoGinzburg9=Yi,e.geoGinzburg9Raw=zi,e.geoGringorten=Fn,e.geoGringortenRaw=hi,e.geoGuyou=ks,e.geoGuyouRaw=Mo,e.geoHammer=ct,e.geoHammerRaw=Ge,e.geoHammerRetroazimuthal=wl,e.geoHammerRetroazimuthalRaw=Zs,e.geoHealpix=Ql,e.geoHealpixRaw=ml,e.geoHill=fc,e.geoHillRaw=Hu,e.geoHomolosine=vo,e.geoHomolosineRaw=Rl,e.geoHufnagel=Ks,e.geoHufnagelRaw=Zl,e.geoHyperelliptical=ko,e.geoHyperellipticalRaw=Zn,e.geoInterrupt=So,e.geoInterruptedBoggs=rh,e.geoInterruptedHomolosine=Hc,e.geoInterruptedMollweide=Ls,e.geoInterruptedMollweideHemispheres=kc,e.geoInterruptedSinuMollweide=Gc,e.geoInterruptedSinusoidal=Bf,e.geoKavrayskiy7=ff,e.geoKavrayskiy7Raw=ss,e.geoLagrange=Vl,e.geoLagrangeRaw=ih,e.geoLarrivee=Cc,e.geoLarriveeRaw=hc,e.geoLaskowski=$s,e.geoLaskowskiRaw=ws,e.geoLittrow=Ms,e.geoLittrowRaw=hs,e.geoLoximuthal=Sl,e.geoLoximuthalRaw=dc,e.geoMiller=Ps,e.geoMillerRaw=ec,e.geoModifiedStereographic=Ml,e.geoModifiedStereographicRaw=ov,e.geoModifiedStereographicAlaska=tc,e.geoModifiedStereographicGs48=uu,e.geoModifiedStereographicGs50=Mh,e.geoModifiedStereographicMiller=jc,e.geoModifiedStereographicLee=kf,e.geoMollweide=xr,e.geoMollweideRaw=Yt,e.geoMtFlatPolarParabolic=hf,e.geoMtFlatPolarParabolicRaw=nh,e.geoMtFlatPolarQuartic=Kh,e.geoMtFlatPolarQuarticRaw=kh,e.geoMtFlatPolarSinusoidal=ah,e.geoMtFlatPolarSinusoidalRaw=rc,e.geoNaturalEarth2=df,e.geoNaturalEarth2Raw=Wc,e.geoNellHammer=Nf,e.geoNellHammerRaw=Cu,e.geoInterruptedQuarticAuthalic=ds,e.geoNicolosi=Bd,e.geoNicolosiRaw=Ch,e.geoPatterson=ic,e.geoPattersonRaw=Xc,e.geoPolyconic=Qs,e.geoPolyconicRaw=yu,e.geoPolyhedral=Lf,e.geoPolyhedralButterfly=Fs,e.geoPolyhedralCollignon=Lh,e.geoPolyhedralWaterman=Is,e.geoProject=Dl,e.geoGringortenQuincuncial=gt,e.geoPeirceQuincuncial=Bt,e.geoPierceQuincuncial=Bt,e.geoQuantize=wr,e.geoQuincuncial=gf,e.geoRectangularPolyconic=Ur,e.geoRectangularPolyconicRaw=vr,e.geoRobinson=Fi,e.geoRobinsonRaw=xi,e.geoSatellite=Ti,e.geoSatelliteRaw=hn,e.geoSinuMollweide=Qu,e.geoSinuMollweideRaw=fa,e.geoSinusoidal=Et,e.geoSinusoidalRaw=St,e.geoStitch=Rs,e.geoTimes=Ka,e.geoTimesRaw=ia,e.geoTwoPointAzimuthal=Ru,e.geoTwoPointAzimuthalRaw=Ko,e.geoTwoPointAzimuthalUsa=nu,e.geoTwoPointEquidistant=bu,e.geoTwoPointEquidistantRaw=ac,e.geoTwoPointEquidistantUsa=mf,e.geoVanDerGrinten=Du,e.geoVanDerGrintenRaw=Kc,e.geoVanDerGrinten2=Da,e.geoVanDerGrinten2Raw=Dc,e.geoVanDerGrinten3=Jc,e.geoVanDerGrinten3Raw=eo,e.geoVanDerGrinten4=_c,e.geoVanDerGrinten4Raw=yc,e.geoWagner=B,e.geoWagner7=Q,e.geoWagnerRaw=w,e.geoWagner4=je,e.geoWagner4Raw=qe,e.geoWagner6=yt,e.geoWagner6Raw=it,e.geoWiechel=Nt,e.geoWiechelRaw=Ot,e.geoWinkel3=Sr,e.geoWinkel3Raw=hr,Object.defineProperty(e,"__esModule",{value:!0})})});var MRe=ye((Dpr,SRe)=>{"use strict";var Zh=xa(),bX=Mr(),CDt=ba(),Z5=Math.PI/180,G2=180/Math.PI,TX={cursor:"pointer"},AX={cursor:"auto"};function LDt(e,t){var r=e.projection,n;return t._isScoped?n=PDt:t._isClipped?n=RDt:n=IDt,n(e,r)}SRe.exports=LDt;function SX(e,t){return Zh.behavior.zoom().translate(t.translate()).scale(t.scale())}function MX(e,t,r){var n=e.id,i=e.graphDiv,a=i.layout,o=a[n],s=i._fullLayout,l=s[n],u={},c={};function f(h,d){u[n+"."+h]=bX.nestedProperty(o,h).get(),CDt.call("_storeDirectGUIEdit",a,s._preGUI,u);var v=bX.nestedProperty(l,h);v.get()!==d&&(v.set(d),bX.nestedProperty(o,h).set(d),c[n+"."+h]=d)}r(f),f("projection.scale",t.scale()/e.fitScale),f("fitbounds",!1),i.emit("plotly_relayout",c)}function PDt(e,t){var r=SX(e,t);function n(){Zh.select(this).style(TX)}function i(){t.scale(Zh.event.scale).translate(Zh.event.translate),e.render(!0);var s=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":s[0],"geo.center.lat":s[1]})}function a(s){var l=t.invert(e.midPt);s("center.lon",l[0]),s("center.lat",l[1])}function o(){Zh.select(this).style(AX),MX(e,t,a)}return r.on("zoomstart",n).on("zoom",i).on("zoomend",o),r}function IDt(e,t){var r=SX(e,t),n=2,i,a,o,s,l,u,c,f,h;function d(k){return t.invert(k)}function v(k){var A=d(k);if(!A)return!0;var L=t(A);return Math.abs(L[0]-k[0])>n||Math.abs(L[1]-k[1])>n}function x(){Zh.select(this).style(TX),i=Zh.mouse(this),a=t.rotate(),o=t.translate(),s=a,l=d(i)}function b(){if(u=Zh.mouse(this),v(i)){r.scale(t.scale()),r.translate(t.translate());return}t.scale(Zh.event.scale),t.translate([o[0],Zh.event.translate[1]]),l?d(u)&&(f=d(u),c=[s[0]+(f[0]-l[0]),a[1],a[2]],t.rotate(c),s=c):(i=u,l=d(i)),h=!0,e.render(!0);var k=t.rotate(),A=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":A[0],"geo.center.lat":A[1],"geo.projection.rotation.lon":-k[0]})}function p(){Zh.select(this).style(AX),h&&MX(e,t,E)}function E(k){var A=t.rotate(),L=t.invert(e.midPt);k("projection.rotation.lon",-A[0]),k("center.lon",L[0]),k("center.lat",L[1])}return r.on("zoomstart",x).on("zoom",b).on("zoomend",p),r}function RDt(e,t){var r={r:t.rotate(),k:t.scale()},n=SX(e,t),i=UDt(n,"zoomstart","zoom","zoomend"),a=0,o=n.on,s;n.on("zoomstart",function(){Zh.select(this).style(TX);var h=Zh.mouse(this),d=t.rotate(),v=d,x=t.translate(),b=DDt(d);s=Sz(t,h),o.call(n,"zoom",function(){var p=Zh.mouse(this);if(t.scale(r.k=Zh.event.scale),!s)h=p,s=Sz(t,h);else if(Sz(t,p)){t.rotate(d).translate(x);var E=Sz(t,p),k=FDt(s,E),A=ODt(zDt(b,k)),L=r.r=qDt(A,s,v);(!isFinite(L[0])||!isFinite(L[1])||!isFinite(L[2]))&&(L=v),t.rotate(L),v=L}u(i.of(this,arguments))}),l(i.of(this,arguments))}).on("zoomend",function(){Zh.select(this).style(AX),o.call(n,"zoom",null),c(i.of(this,arguments)),MX(e,t,f)}).on("zoom.redraw",function(){e.render(!0);var h=t.rotate();e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.projection.rotation.lon":-h[0],"geo.projection.rotation.lat":-h[1]})});function l(h){a++||h({type:"zoomstart"})}function u(h){h({type:"zoom"})}function c(h){--a||h({type:"zoomend"})}function f(h){var d=t.rotate();h("projection.rotation.lon",-d[0]),h("projection.rotation.lat",-d[1])}return Zh.rebind(n,i,"on")}function Sz(e,t){var r=e.invert(t);return r&&isFinite(r[0])&&isFinite(r[1])&&BDt(r)}function DDt(e){var t=.5*e[0]*Z5,r=.5*e[1]*Z5,n=.5*e[2]*Z5,i=Math.sin(t),a=Math.cos(t),o=Math.sin(r),s=Math.cos(r),l=Math.sin(n),u=Math.cos(n);return[a*s*u+i*o*l,i*s*u-a*o*l,a*o*u+i*s*l,a*s*l-i*o*u]}function zDt(e,t){var r=e[0],n=e[1],i=e[2],a=e[3],o=t[0],s=t[1],l=t[2],u=t[3];return[r*o-n*s-i*l-a*u,r*s+n*o+i*u-a*l,r*l-n*u+i*o+a*s,r*u+n*l-i*s+a*o]}function FDt(e,t){if(!(!e||!t)){var r=NDt(e,t),n=Math.sqrt(ARe(r,r)),i=.5*Math.acos(Math.max(-1,Math.min(1,ARe(e,t)))),a=Math.sin(i)/n;return n&&[Math.cos(i),r[2]*a,-r[1]*a,r[0]*a]}}function qDt(e,t,r){var n=wX(t,2,e[0]);n=wX(n,1,e[1]),n=wX(n,0,e[2]-r[2]);var i=t[0],a=t[1],o=t[2],s=n[0],l=n[1],u=n[2],c=Math.atan2(a,i)*G2,f=Math.sqrt(i*i+a*a),h,d;Math.abs(l)>f?(d=(l>0?90:-90)-c,h=0):(d=Math.asin(l/f)*G2-c,h=Math.sqrt(f*f-l*l));var v=180-d-2*c,x=(Math.atan2(u,s)-Math.atan2(o,h))*G2,b=(Math.atan2(u,s)-Math.atan2(o,-h))*G2,p=wRe(r[0],r[1],d,x),E=wRe(r[0],r[1],v,b);return p<=E?[d,x,r[2]]:[v,b,r[2]]}function wRe(e,t,r,n){var i=TRe(r-e),a=TRe(n-t);return Math.sqrt(i*i+a*a)}function TRe(e){return(e%360+540)%360-180}function wX(e,t,r){var n=r*Z5,i=e.slice(),a=t===0?1:0,o=t===2?1:2,s=Math.cos(n),l=Math.sin(n);return i[a]=e[a]*s-e[o]*l,i[o]=e[o]*s+e[a]*l,i}function ODt(e){return[Math.atan2(2*(e[0]*e[1]+e[2]*e[3]),1-2*(e[1]*e[1]+e[2]*e[2]))*G2,Math.asin(Math.max(-1,Math.min(1,2*(e[0]*e[2]-e[3]*e[1]))))*G2,Math.atan2(2*(e[0]*e[3]+e[1]*e[2]),1-2*(e[2]*e[2]+e[3]*e[3]))*G2]}function BDt(e){var t=e[0]*Z5,r=e[1]*Z5,n=Math.cos(r);return[n*Math.cos(t),n*Math.sin(t),Math.sin(r)]}function ARe(e,t){for(var r=0,n=0,i=e.length;n{"use strict";var t1=xa(),CX=xX(),VDt=CX.geoPath,HDt=CX.geoDistance,GDt=bRe(),jDt=ba(),ek=Mr(),WDt=ek.strTranslate,Mz=va(),QE=ao(),ERe=Nc(),ZDt=Xu(),kX=Qa(),kRe=wg().getAutoRange,EX=gv(),XDt=wf().prepSelect,YDt=wf().clearOutline,KDt=wf().selectOnClick,JDt=MRe(),fp=YE(),$Dt=nx(),LRe=cz(),QDt=aX().feature;function PRe(e){this.id=e.id,this.graphDiv=e.graphDiv,this.container=e.container,this.topojsonURL=e.topojsonURL,this.isStatic=e.staticPlot,this.topojsonName=null,this.topojson=null,this.projection=null,this.scope=null,this.viewInitial=null,this.fitScale=null,this.bounds=null,this.midPt=null,this.hasChoropleth=!1,this.traceHash={},this.layers={},this.basePaths={},this.dataPaths={},this.dataPoints={},this.clipDef=null,this.clipRect=null,this.bgRect=null,this.makeFramework()}var $g=PRe.prototype;IRe.exports=function(t){return new PRe(t)};$g.plot=function(e,t,r,n){var i=this;if(n)return i.update(e,t,!0);i._geoCalcData=e,i._fullLayout=t;var a=t[this.id],o=[],s=!1;for(var l in fp.layerNameToAdjective)if(l!=="frame"&&a["show"+l]){s=!0;break}for(var u=!1,c=0;c0&&o._module.calcGeoJSON(a,t)}if(!r){var s=this.updateProjection(e,t);if(s)return;(!this.viewInitial||this.scope!==n.scope)&&this.saveViewInitial(n)}this.scope=n.scope,this.updateBaseLayers(t,n),this.updateDims(t,n),this.updateFx(t,n),ZDt.generalUpdatePerTraceModule(this.graphDiv,this,e,n);var l=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=l.selectAll(".point"),this.dataPoints.text=l.selectAll("text"),this.dataPaths.line=l.selectAll(".js-line");var u=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=u.selectAll("path"),this._render()};$g.updateProjection=function(e,t){var r=this.graphDiv,n=t[this.id],i=t._size,a=n.domain,o=n.projection,s=n.lonaxis,l=n.lataxis,u=s._ax,c=l._ax,f=this.projection=ezt(n),h=[[i.l+i.w*a.x[0],i.t+i.h*(1-a.y[1])],[i.l+i.w*a.x[1],i.t+i.h*(1-a.y[0])]],d=n.center||{},v=o.rotation||{},x=s.range||[],b=l.range||[];if(n.fitbounds){u._length=h[1][0]-h[0][0],c._length=h[1][1]-h[0][1],u.range=kRe(r,u),c.range=kRe(r,c);var p=(u.range[0]+u.range[1])/2,E=(c.range[0]+c.range[1])/2;if(n._isScoped)d={lon:p,lat:E};else if(n._isClipped){d={lon:p,lat:E},v={lon:p,lat:E,roll:v.roll};var k=o.type,A=fp.lonaxisSpan[k]/2||180,L=fp.lataxisSpan[k]/2||90;x=[p-A,p+A],b=[E-L,E+L]}else d={lon:p,lat:E},v={lon:p,lat:v.lat,roll:v.roll}}f.center([d.lon-v.lon,d.lat-v.lat]).rotate([-v.lon,-v.lat,v.roll]).parallels(o.parallels);var _=CRe(x,b);f.fitExtent(h,_);var C=this.bounds=f.getBounds(_),M=this.fitScale=f.scale(),g=f.translate();if(n.fitbounds){var P=f.getBounds(CRe(u.range,c.range)),T=Math.min((C[1][0]-C[0][0])/(P[1][0]-P[0][0]),(C[1][1]-C[0][1])/(P[1][1]-P[0][1]));isFinite(T)?f.scale(T*M):ek.warn("Something went wrong during"+this.id+"fitbounds computations.")}else f.scale(o.scale*M);var F=this.midPt=[(C[0][0]+C[1][0])/2,(C[0][1]+C[1][1])/2];if(f.translate([g[0]+(F[0]-g[0]),g[1]+(F[1]-g[1])]).clipExtent(C),n._isAlbersUsa){var q=f([d.lon,d.lat]),V=f.translate();f.translate([V[0]-(q[0]-V[0]),V[1]-(q[1]-V[1])])}};$g.updateBaseLayers=function(e,t){var r=this,n=r.topojson,i=r.layers,a=r.basePaths;function o(h){return h==="lonaxis"||h==="lataxis"}function s(h){return!!fp.lineLayers[h]}function l(h){return!!fp.fillLayers[h]}var u=this.hasChoropleth?fp.layersForChoropleth:fp.layers,c=u.filter(function(h){return s(h)||l(h)?t["show"+h]:o(h)?t[h].showgrid:!0}),f=r.framework.selectAll(".layer").data(c,String);f.exit().each(function(h){delete i[h],delete a[h],t1.select(this).remove()}),f.enter().append("g").attr("class",function(h){return"layer "+h}).each(function(h){var d=i[h]=t1.select(this);h==="bg"?r.bgRect=d.append("rect").style("pointer-events","all"):o(h)?a[h]=d.append("path").style("fill","none"):h==="backplot"?d.append("g").classed("choroplethlayer",!0):h==="frontplot"?d.append("g").classed("scatterlayer",!0):s(h)?a[h]=d.append("path").style("fill","none").style("stroke-miterlimit",2):l(h)&&(a[h]=d.append("path").style("stroke","none"))}),f.order(),f.each(function(h){var d=a[h],v=fp.layerNameToAdjective[h];h==="frame"?d.datum(fp.sphereSVG):s(h)||l(h)?d.datum(QDt(n,n.objects[h])):o(h)&&d.datum(tzt(h,t,e)).call(Mz.stroke,t[h].gridcolor).call(QE.dashLine,t[h].griddash,t[h].gridwidth),s(h)?d.call(Mz.stroke,t[v+"color"]).call(QE.dashLine,"",t[v+"width"]):l(h)&&d.call(Mz.fill,t[v+"color"])})};$g.updateDims=function(e,t){var r=this.bounds,n=(t.framewidth||0)/2,i=r[0][0]-n,a=r[0][1]-n,o=r[1][0]-i+n,s=r[1][1]-a+n;QE.setRect(this.clipRect,i,a,o,s),this.bgRect.call(QE.setRect,i,a,o,s).call(Mz.fill,t.bgcolor),this.xaxis._offset=i,this.xaxis._length=o,this.yaxis._offset=a,this.yaxis._length=s};$g.updateFx=function(e,t){var r=this,n=r.graphDiv,i=r.bgRect,a=e.dragmode,o=e.clickmode;if(r.isStatic)return;function s(){var f=r.viewInitial,h={};for(var d in f)h[r.id+"."+d]=f[d];jDt.call("_guiRelayout",n,h),n.emit("plotly_doubleclick",null)}function l(f){return r.projection.invert([f[0]+r.xaxis._offset,f[1]+r.yaxis._offset])}var u=function(f,h){if(h.isRect){var d=f.range={};d[r.id]=[l([h.xmin,h.ymin]),l([h.xmax,h.ymax])]}else{var v=f.lassoPoints={};v[r.id]=h.map(l)}},c={element:r.bgRect.node(),gd:n,plotinfo:{id:r.id,xaxis:r.xaxis,yaxis:r.yaxis,fillRangeItems:u},xaxes:[r.xaxis],yaxes:[r.yaxis],subplot:r.id,clickFn:function(f){f===2&&YDt(n)}};a==="pan"?(i.node().onmousedown=null,i.call(JDt(r,t)),i.on("dblclick.zoom",s),n._context._scrollZoom.geo||i.on("wheel.zoom",null)):(a==="select"||a==="lasso")&&(i.on(".zoom",null),c.prepFn=function(f,h,d){XDt(f,h,d,c,a)},EX.init(c)),i.on("mousemove",function(){var f=r.projection.invert(ek.getPositionFromD3Event());if(!f)return EX.unhover(n,t1.event);r.xaxis.p2c=function(){return f[0]},r.yaxis.p2c=function(){return f[1]},ERe.hover(n,t1.event,r.id)}),i.on("mouseout",function(){n._dragging||EX.unhover(n,t1.event)}),i.on("click",function(){a!=="select"&&a!=="lasso"&&(o.indexOf("select")>-1&&KDt(t1.event,n,[r.xaxis],[r.yaxis],r.id,c),o.indexOf("event")>-1&&ERe.click(n,t1.event))})};$g.makeFramework=function(){var e=this,t=e.graphDiv,r=t._fullLayout,n="clip"+r._uid+e.id;e.clipDef=r._clips.append("clipPath").attr("id",n),e.clipRect=e.clipDef.append("rect"),e.framework=t1.select(e.container).append("g").attr("class","geo "+e.id).call(QE.setClipUrl,n,t),e.project=function(i){var a=e.projection(i);return a?[a[0]-e.xaxis._offset,a[1]-e.yaxis._offset]:[null,null]},e.xaxis={_id:"x",c2p:function(i){return e.project(i)[0]}},e.yaxis={_id:"y",c2p:function(i){return e.project(i)[1]}},e.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},kX.setConvert(e.mockAxis,r)};$g.saveViewInitial=function(e){var t=e.center||{},r=e.projection,n=r.rotation||{};this.viewInitial={fitbounds:e.fitbounds,"projection.scale":r.scale};var i;e._isScoped?i={"center.lon":t.lon,"center.lat":t.lat}:e._isClipped?i={"projection.rotation.lon":n.lon,"projection.rotation.lat":n.lat}:i={"center.lon":t.lon,"center.lat":t.lat,"projection.rotation.lon":n.lon},ek.extendFlat(this.viewInitial,i)};$g.render=function(e){this._hasMarkerAngles&&e?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()};$g._render=function(){var e=this.projection,t=e.getPath(),r;function n(a){var o=e(a.lonlat);return o?WDt(o[0],o[1]):null}function i(a){return e.isLonLatOverEdges(a.lonlat)?"none":null}for(r in this.basePaths)this.basePaths[r].attr("d",t);for(r in this.dataPaths)this.dataPaths[r].attr("d",function(a){return t(a.geojson)});for(r in this.dataPoints)this.dataPoints[r].attr("display",i).attr("transform",n)};function ezt(e){var t=e.projection,r=t.type,n=fp.projNames[r];n="geo"+ek.titleCase(n);for(var i=CX[n]||GDt[n],a=i(),o=e._isSatellite?Math.acos(1/t.distance)*180/Math.PI:e._isClipped?fp.lonaxisSpan[r]/2:null,s=["center","rotate","parallels","clipExtent"],l=function(f){return f?a:[]},u=0;uv}else return!1},a.getPath=function(){return VDt().projection(a)},a.getBounds=function(f){return a.getPath().bounds(f)},a.precision(fp.precision),e._isSatellite&&a.tilt(t.tilt).distance(t.distance),o&&a.clipAngle(o-fp.clipPad),a}function tzt(e,t,r){var n=1e-6,i=2.5,a=t[e],o=fp.scopeDefaults[t.scope],s,l,u;e==="lonaxis"?(s=o.lonaxisRange,l=o.lataxisRange,u=function(E,k){return[E,k]}):e==="lataxis"&&(s=o.lataxisRange,l=o.lonaxisRange,u=function(E,k){return[k,E]});var c={type:"linear",range:[s[0],s[1]-n],tick0:a.tick0,dtick:a.dtick};kX.setConvert(c,r);var f=kX.calcTicks(c);!t.isScoped&&e==="lonaxis"&&f.pop();for(var h=f.length,d=new Array(h),v=0;v0&&i<0&&(i+=360);var s=(i-n)/4;return{type:"Polygon",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}});var LX=ye((Fpr,FRe)=>{"use strict";var Y5=dh(),rzt=Ju().attributes,izt=Ed().dash,X5=YE(),nzt=Bu().overrideAll,DRe=Y1(),zRe={range:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},showgrid:{valType:"boolean",dflt:!1},tick0:{valType:"number",dflt:0},dtick:{valType:"number"},gridcolor:{valType:"color",dflt:Y5.lightLine},gridwidth:{valType:"number",min:0,dflt:1},griddash:izt},azt=FRe.exports=nzt({domain:rzt({name:"geo"},{}),fitbounds:{valType:"enumerated",values:[!1,"locations","geojson"],dflt:!1,editType:"plot"},resolution:{valType:"enumerated",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:"enumerated",values:DRe(X5.scopeDefaults),dflt:"world"},projection:{type:{valType:"enumerated",values:DRe(X5.projNames)},rotation:{lon:{valType:"number"},lat:{valType:"number"},roll:{valType:"number"}},tilt:{valType:"number",dflt:0},distance:{valType:"number",min:1.001,dflt:2},parallels:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},scale:{valType:"number",min:0,dflt:1}},center:{lon:{valType:"number"},lat:{valType:"number"}},visible:{valType:"boolean",dflt:!0},showcoastlines:{valType:"boolean"},coastlinecolor:{valType:"color",dflt:Y5.defaultLine},coastlinewidth:{valType:"number",min:0,dflt:1},showland:{valType:"boolean",dflt:!1},landcolor:{valType:"color",dflt:X5.landColor},showocean:{valType:"boolean",dflt:!1},oceancolor:{valType:"color",dflt:X5.waterColor},showlakes:{valType:"boolean",dflt:!1},lakecolor:{valType:"color",dflt:X5.waterColor},showrivers:{valType:"boolean",dflt:!1},rivercolor:{valType:"color",dflt:X5.waterColor},riverwidth:{valType:"number",min:0,dflt:1},showcountries:{valType:"boolean"},countrycolor:{valType:"color",dflt:Y5.defaultLine},countrywidth:{valType:"number",min:0,dflt:1},showsubunits:{valType:"boolean"},subunitcolor:{valType:"color",dflt:Y5.defaultLine},subunitwidth:{valType:"number",min:0,dflt:1},showframe:{valType:"boolean"},framecolor:{valType:"color",dflt:Y5.defaultLine},framewidth:{valType:"number",min:0,dflt:1},bgcolor:{valType:"color",dflt:Y5.background},lonaxis:zRe,lataxis:zRe},"plot","from-root");azt.uirevision={valType:"any",editType:"none"}});var BRe=ye((qpr,ORe)=>{"use strict";var Ez=Mr(),ozt=C_(),szt=kd().getSubplotData,kz=YE(),lzt=LX(),qRe=kz.axesNames;ORe.exports=function(t,r,n){ozt(t,r,n,{type:"geo",attributes:lzt,handleDefaults:uzt,fullData:n,partition:"y"})};function uzt(e,t,r,n){var i=szt(n.fullData,"geo",n.id),a=i.map(function(ae){return ae.index}),o=r("resolution"),s=r("scope"),l=kz.scopeDefaults[s],u=r("projection.type",l.projType),c=t._isAlbersUsa=u==="albers usa";c&&(s=t.scope="usa");var f=t._isScoped=s!=="world",h=t._isSatellite=u==="satellite",d=t._isConic=u.indexOf("conic")!==-1||u==="albers",v=t._isClipped=!!kz.lonaxisSpan[u];if(e.visible===!1){var x=Ez.extendDeep({},t._template);x.showcoastlines=!1,x.showcountries=!1,x.showframe=!1,x.showlakes=!1,x.showland=!1,x.showocean=!1,x.showrivers=!1,x.showsubunits=!1,x.lonaxis&&(x.lonaxis.showgrid=!1),x.lataxis&&(x.lataxis.showgrid=!1),t._template=x}for(var b=r("visible"),p,E=0;E0&&q<0&&(q+=360);var V=(F+q)/2,H;if(!c){var X=f?l.projRotate:[V,0,0];H=r("projection.rotation.lon",X[0]),r("projection.rotation.lat",X[1]),r("projection.rotation.roll",X[2]),p=r("showcoastlines",!f&&b),p&&(r("coastlinecolor"),r("coastlinewidth")),p=r("showocean",b?void 0:!1),p&&r("oceancolor")}var G,N;if(c?(G=-96.6,N=38.7):(G=f?V:H,N=(T[0]+T[1])/2),r("center.lon",G),r("center.lat",N),h&&(r("projection.tilt"),r("projection.distance")),d){var W=l.projParallels||[0,60];r("projection.parallels",W)}r("projection.scale"),p=r("showland",b?void 0:!1),p&&r("landcolor"),p=r("showlakes",b?void 0:!1),p&&r("lakecolor"),p=r("showrivers",b?void 0:!1),p&&(r("rivercolor"),r("riverwidth")),p=r("showcountries",f&&s!=="usa"&&b),p&&(r("countrycolor"),r("countrywidth")),(s==="usa"||s==="north america"&&o===50)&&(r("showsubunits",b),r("subunitcolor"),r("subunitwidth")),f||(p=r("showframe",b),p&&(r("framecolor"),r("framewidth"))),r("bgcolor");var re=r("fitbounds");re&&(delete t.projection.scale,f?(delete t.center.lon,delete t.center.lat):v?(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon,delete t.projection.rotation.lat,delete t.lonaxis.range,delete t.lataxis.range):(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon))}});var PX=ye((Opr,VRe)=>{"use strict";var czt=kd().getSubplotCalcData,fzt=Mr().counterRegex,hzt=RRe(),Wm="geo",NRe=fzt(Wm),URe={};URe[Wm]={valType:"subplotid",dflt:Wm,editType:"calc"};function dzt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[Wm],i=0;i{"use strict";HRe.exports={attributes:H2(),supplyDefaults:A8e(),colorbar:Kd(),formatLabels:E8e(),calc:lz(),calcGeoJSON:_X().calcGeoJSON,plot:_X().plot,style:pX(),styleOnSelect:op().styleOnSelect,hoverPoints:hRe(),eventData:vRe(),selectPoints:mRe(),moduleType:"trace",name:"scattergeo",basePlotModule:PX(),categories:["geo","symbols","showLegend","scatter-like"],meta:{}}});var WRe=ye((Npr,jRe)=>{"use strict";jRe.exports=GRe()});var K5=ye((Upr,YRe)=>{"use strict";var gzt=Wo().hovertemplateAttrs,ox=H2(),mzt=Jl(),ZRe=vl(),yzt=dh().defaultLine,ax=no().extendFlat,XRe=ox.marker.line;YRe.exports=ax({locations:{valType:"data_array",editType:"calc"},locationmode:ox.locationmode,z:{valType:"data_array",editType:"calc"},geojson:ax({},ox.geojson,{}),featureidkey:ox.featureidkey,text:ax({},ox.text,{}),hovertext:ax({},ox.hovertext,{}),marker:{line:{color:ax({},XRe.color,{dflt:yzt}),width:ax({},XRe.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:ox.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:ox.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:ax({},ZRe.hoverinfo,{editType:"calc",flags:["location","z","text","name"]}),hovertemplate:gzt(),showlegend:ax({},ZRe.showlegend,{dflt:!1})},mzt("",{cLetter:"z",editTypeOverride:"calc"}))});var JRe=ye((Vpr,KRe)=>{"use strict";var Cz=Mr(),_zt=Uh(),xzt=K5();KRe.exports=function(t,r,n,i){function a(h,d){return Cz.coerce(t,r,xzt,h,d)}var o=a("locations"),s=a("z");if(!(o&&o.length&&Cz.isArrayOrTypedArray(s)&&s.length)){r.visible=!1;return}r._length=Math.min(o.length,s.length);var l=a("geojson"),u;(typeof l=="string"&&l!==""||Cz.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="geojson-id"&&a("featureidkey"),a("text"),a("hovertext"),a("hovertemplate");var f=a("marker.line.width");f&&a("marker.line.color"),a("marker.opacity"),_zt(t,r,i,a,{prefix:"",cLetter:"z"}),Cz.coerceSelectionMarkerOpacity(r,a)}});var Lz=ye((Hpr,eDe)=>{"use strict";var $Re=uo(),bzt=es().BADNUM,wzt=zv(),Tzt=km(),Azt=F0();function QRe(e){return e&&typeof e=="string"}eDe.exports=function(t,r){var n=r._length,i=new Array(n),a;r.geojson?a=function(c){return QRe(c)||$Re(c)}:a=QRe;for(var o=0;o{"use strict";var Szt=xa(),Mzt=va(),IX=ao(),Ezt=Mu();function kzt(e,t){t&&tDe(e,t)}function tDe(e,t){var r=t[0].trace,n=t[0].node3,i=n.selectAll(".choroplethlocation"),a=r.marker||{},o=a.line||{},s=Ezt.makeColorScaleFuncFromTrace(r);i.each(function(l){Szt.select(this).attr("fill",s(l.z)).call(Mzt.stroke,l.mlc||o.color).call(IX.dashLine,"",l.mlw||o.width||0).style("opacity",a.opacity)}),IX.selectedPointStyle(i,r)}function Czt(e,t){var r=t[0].node3,n=t[0].trace;n.selectedpoints?IX.selectedPointStyle(r.selectAll(".choroplethlocation"),n):tDe(e,t)}rDe.exports={style:kzt,styleOnSelect:Czt}});var RX=ye((jpr,aDe)=>{"use strict";var Lzt=xa(),iDe=Mr(),J5=nx(),Pzt=cz().getTopojsonFeatures,nDe=wg().findExtremes,Izt=Pz().style;function Rzt(e,t,r){var n=t.layers.backplot.select(".choroplethlayer");iDe.makeTraceGroups(n,r,"trace choropleth").each(function(i){var a=Lzt.select(this),o=a.selectAll("path.choroplethlocation").data(iDe.identity);o.enter().append("path").classed("choroplethlocation",!0),o.exit().remove(),Izt(e,i)})}function Dzt(e,t){for(var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r.locationmode,o=r._length,s=a==="geojson-id"?J5.extractTraceFeature(e):Pzt(r,i.topojson),l=[],u=[],c=0;c{"use strict";var zzt=Qa(),Fzt=K5(),qzt=Mr().fillText;oDe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s,l,u,c,f=[r,n],h=[r+360,n];for(l=0;l")}}});var Rz=ye((Zpr,sDe)=>{"use strict";sDe.exports=function(t,r,n,i,a){t.location=r.location,t.z=r.z;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t.ct=o.ct,t}});var Dz=ye((Xpr,lDe)=>{"use strict";lDe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l,u,c,f;if(r===!1)for(s=0;s{"use strict";uDe.exports={attributes:K5(),supplyDefaults:JRe(),colorbar:M_(),calc:Lz(),calcGeoJSON:RX().calcGeoJSON,plot:RX().plot,style:Pz().style,styleOnSelect:Pz().styleOnSelect,hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),moduleType:"trace",name:"choropleth",basePlotModule:PX(),categories:["geo","noOpacity","showLegend"],meta:{}}});var hDe=ye((Kpr,fDe)=>{"use strict";fDe.exports=cDe()});var zz=ye((Jpr,vDe)=>{"use strict";var Bzt=ba(),s0=Mr(),Nzt=oT();function Uzt(e,t,r,n){var i=e.cd,a=i[0].t,o=i[0].trace,s=e.xa,l=e.ya,u=a.x,c=a.y,f=s.c2p(t),h=l.c2p(r),d=e.distance,v;if(a.tree){var x=s.p2c(f-d),b=s.p2c(f+d),p=l.p2c(h-d),E=l.p2c(h+d);n==="x"?v=a.tree.range(Math.min(x,b),Math.min(l._rl[0],l._rl[1]),Math.max(x,b),Math.max(l._rl[0],l._rl[1])):v=a.tree.range(Math.min(x,b),Math.min(p,E),Math.max(x,b),Math.max(p,E))}else v=a.ids;var k,A,L,_,C,M,g,P,T,F=d;if(n==="x"){var q=!!o.xperiodalignment,V=!!o.yperiodalignment;for(C=0;C=Math.min(H,X)&&f<=Math.max(H,X)?0:1/0}if(M=Math.min(G,N)&&h<=Math.max(G,N)?0:1/0}T=Math.sqrt(M*M+g*g),A=v[C]}}}else for(C=v.length-1;C>-1;C--)k=v[C],L=u[k],_=c[k],M=s.c2p(L)-f,g=l.c2p(_)-h,P=Math.sqrt(M*M+g*g),P{"use strict";var pDe=20;gDe.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:pDe,SYMBOL_STROKE:pDe/20,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}});var tk=ye((Qpr,xDe)=>{"use strict";var Vzt=vl(),Hzt=Su(),Gzt=Eg(),Af=Uc(),mDe=Oc().axisHoverFormat,yDe=Jl(),jzt=Y1(),DX=no().extendFlat,Wzt=Bu().overrideAll,Zzt=sx().DASHES,_De=Af.line,r1=Af.marker,Xzt=r1.line,$5=xDe.exports=Wzt({x:Af.x,x0:Af.x0,dx:Af.dx,y:Af.y,y0:Af.y0,dy:Af.dy,xperiod:Af.xperiod,yperiod:Af.yperiod,xperiod0:Af.xperiod0,yperiod0:Af.yperiod0,xperiodalignment:Af.xperiodalignment,yperiodalignment:Af.yperiodalignment,xhoverformat:mDe("x"),yhoverformat:mDe("y"),text:Af.text,hovertext:Af.hovertext,textposition:Af.textposition,textfont:Hzt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,noNumericWeightValues:!0,variantValues:["normal","small-caps"]}),mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"]},line:{color:_De.color,width:_De.width,shape:{valType:"enumerated",values:["linear","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},dash:{valType:"enumerated",values:jzt(Zzt),dflt:"solid"}},marker:DX({},yDe("marker"),{symbol:r1.symbol,angle:r1.angle,size:r1.size,sizeref:r1.sizeref,sizemin:r1.sizemin,sizemode:r1.sizemode,opacity:r1.opacity,colorbar:r1.colorbar,line:DX({},yDe("marker.line"),{width:Xzt.width})}),connectgaps:Af.connectgaps,fill:DX({},Af.fill,{dflt:"none"}),fillcolor:Gzt(),selected:{marker:Af.selected.marker,textfont:Af.selected.textfont},unselected:{marker:Af.unselected.marker,textfont:Af.unselected.textfont},opacity:Vzt.opacity},"calc","nested");$5.x.editType=$5.y.editType=$5.x0.editType=$5.y0.editType="calc+clearAxisTypes";$5.hovertemplate=Af.hovertemplate;$5.texttemplate=Af.texttemplate});var Fz=ye(zX=>{"use strict";var bDe=sx();zX.isOpenSymbol=function(e){return typeof e=="string"?bDe.OPEN_RE.test(e):e%200>100};zX.isDotSymbol=function(e){return typeof e=="string"?bDe.DOT_RE.test(e):e>200}});var ADe=ye((t0r,TDe)=>{"use strict";var wDe=Mr(),Yzt=ba(),Kzt=Fz(),Jzt=tk(),$zt=Sm(),qz=lu(),Qzt=K3(),eFt=Pg(),tFt=$p(),rFt=R0(),iFt=Ig(),nFt=D0();TDe.exports=function(t,r,n,i){function a(d,v){return wDe.coerce(t,r,Jzt,d,v)}var o=t.marker?Kzt.isOpenSymbol(t.marker.symbol):!1,s=qz.isBubble(t),l=Qzt(t,r,i,a);if(!l){r.visible=!1;return}eFt(t,r,i,a),a("xhoverformat"),a("yhoverformat");var u=l<$zt.PTS_LINESONLY?"lines+markers":"lines";a("text"),a("hovertext"),a("hovertemplate"),a("mode",u),qz.hasMarkers(r)&&(tFt(t,r,n,i,a,{noAngleRef:!0,noStandOff:!0}),a("marker.line.width",o||s?1:0)),qz.hasLines(r)&&(a("connectgaps"),rFt(t,r,n,i,a),a("line.shape")),qz.hasText(r)&&(a("texttemplate"),nFt(t,r,i,a,{noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var c=(r.line||{}).color,f=(r.marker||{}).color;a("fill"),r.fill!=="none"&&iFt(t,r,n,a);var h=Yzt.getComponentMethod("errorbars","supplyDefaults");h(t,r,c||f||n,{axis:"y"}),h(t,r,c||f||n,{axis:"x",inherit:"y"}),wDe.coerceSelectionMarkerOpacity(r,a)}});var MDe=ye((r0r,SDe)=>{"use strict";var aFt=$P();SDe.exports=function(t,r,n){var i=t.i;return"x"in t||(t.x=r._x[i]),"y"in t||(t.y=r._y[i]),aFt(t,r,n)}});var kDe=ye((i0r,EDe)=>{"use strict";function oFt(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>=0?(a=o,i=o-1):n=o+1}return a}function sFt(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>0?(a=o,i=o-1):n=o+1}return a}function lFt(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<0?(a=o,n=o+1):i=o-1}return a}function uFt(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<=0?(a=o,n=o+1):i=o-1}return a}function cFt(e,t,r,n,i){for(;n<=i;){var a=n+i>>>1,o=e[a],s=r!==void 0?r(o,t):o-t;if(s===0)return a;s<=0?n=a+1:i=a-1}return-1}function rk(e,t,r,n,i,a){return typeof r=="function"?a(e,t,r,n===void 0?0:n|0,i===void 0?e.length-1:i|0):a(e,t,void 0,r===void 0?0:r|0,n===void 0?e.length-1:n|0)}EDe.exports={ge:function(e,t,r,n,i){return rk(e,t,r,n,i,oFt)},gt:function(e,t,r,n,i){return rk(e,t,r,n,i,sFt)},lt:function(e,t,r,n,i){return rk(e,t,r,n,i,lFt)},le:function(e,t,r,n,i){return rk(e,t,r,n,i,uFt)},eq:function(e,t,r,n,i){return rk(e,t,r,n,i,cFt)}}});var Zm=ye((n0r,LDe)=>{"use strict";LDe.exports=function(t,r,n){var i={},a,o;if(typeof r=="string"&&(r=CDe(r)),Array.isArray(r)){var s={};for(o=0;o{"use strict";var fFt=Zm();PDe.exports=hFt;function hFt(e){var t;return arguments.length>1&&(e=arguments),typeof e=="string"?e=e.split(/\s/).map(parseFloat):typeof e=="number"&&(e=[e]),e.length&&typeof e[0]=="number"?e.length===1?t={width:e[0],height:e[0],x:0,y:0}:e.length===2?t={width:e[0],height:e[1],x:0,y:0}:t={x:e[0],y:e[1],width:e[2]-e[0]||0,height:e[3]-e[1]||0}:e&&(e=fFt(e,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"}),t={x:e.left||0,y:e.top||0},e.width==null?e.right?t.width=e.right-t.x:t.width=0:t.width=e.width,e.height==null?e.bottom?t.height=e.bottom-t.y:t.height=0:t.height=e.height),t}});var j2=ye((o0r,IDe)=>{"use strict";IDe.exports=dFt;function dFt(e,t){if(!e||e.length==null)throw Error("Argument should be an array");t==null?t=1:t=Math.floor(t);for(var r=Array(t*2),n=0;ni&&(i=e[o]),e[o]{RDe.exports=function(){for(var e=0;e{var zDe=HD();FDe.exports=vFt;function vFt(e,t,r){if(!e)throw new TypeError("must specify data as first parameter");if(r=+(r||0)|0,Array.isArray(e)&&e[0]&&typeof e[0][0]=="number"){var n=e[0].length,i=e.length*n,a,o,s,l;(!t||typeof t=="string")&&(t=new(zDe(t||"float32"))(i+r));var u=t.length-r;if(i!==u)throw new Error("source length "+i+" ("+n+"x"+e.length+") does not match destination length "+u);for(a=0,s=r;a{"use strict";qDe.exports=function(e){var t=typeof e;return e!==null&&(t==="object"||t==="function")}});var NDe=ye((c0r,BDe)=>{"use strict";BDe.exports=Math.log2||function(e){return Math.log(e)*Math.LOG2E}});var ZDe=ye((f0r,WDe)=>{"use strict";var UDe=kDe(),VDe=VE(),pFt=Q5(),gFt=j2(),HDe=Zm(),qX=DDe(),mFt=W2(),yFt=ODe(),_Ft=HD(),GDe=NDe(),xFt=1073741824;WDe.exports=function(t,r){r||(r={}),t=mFt(t,"float64"),r=HDe(r,{bounds:"range bounds dataBox databox",maxDepth:"depth maxDepth maxdepth level maxLevel maxlevel levels",dtype:"type dtype format out dst output destination"});let n=qX(r.maxDepth,255),i=qX(r.bounds,gFt(t,2));i[0]===i[2]&&i[2]++,i[1]===i[3]&&i[3]++;let a=jDe(t,i),o=t.length>>>1,s;r.dtype||(r.dtype="array"),typeof r.dtype=="string"?s=new(_Ft(r.dtype))(o):r.dtype&&(s=r.dtype,Array.isArray(s)&&(s.length=o));for(let p=0;pn||_>xFt){for(let N=0;N_e||g>Me||P=F||re===ae)return;let ke=l[W];ae===void 0&&(ae=ke.length);for(let Re=re;Re=A&&Ge<=_&&nt>=L&&nt<=C&&q.push(ce)}let ge=u[W],ie=ge[re*4+0],Te=ge[re*4+1],Ee=ge[re*4+2],Ae=ge[re*4+3],ze=H(ge,re+1),Ce=N*.5,me=W+1;V(X,G,Ce,me,ie,Te||Ee||Ae||ze),V(X,G+Ce,Ce,me,Te,Ee||Ae||ze),V(X+Ce,G,Ce,me,Ee,Ae||ze),V(X+Ce,G+Ce,Ce,me,Ae,ze)}function H(X,G){let N=null,W=0;for(;N===null;)if(N=X[G*4+W],W++,W>X.length)return null;return N}return q}function x(p,E,k,A,L){let _=[];for(let C=0;C{"use strict";XDe.exports=ZDe()});var OX=ye((d0r,YDe)=>{YDe.exports=bFt;function bFt(e){var t=0,r=0,n=0,i=0;return e.map(function(a){a=a.slice();var o=a[0],s=o.toUpperCase();if(o!=s)switch(a[0]=s,o){case"a":a[6]+=n,a[7]+=i;break;case"v":a[1]+=i;break;case"h":a[1]+=n;break;default:for(var l=1;l{"use strict";Object.defineProperty(Bz,"__esModule",{value:!0});var wFt=function(){function e(t,r){var n=[],i=!0,a=!1,o=void 0;try{for(var s=t[Symbol.iterator](),l;!(i=(l=s.next()).done)&&(n.push(l.value),!(r&&n.length===r));i=!0);}catch(u){a=!0,o=u}finally{try{!i&&s.return&&s.return()}finally{if(a)throw o}}return n}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),ik=Math.PI*2,BX=function(t,r,n,i,a,o,s){var l=t.x,u=t.y;l*=r,u*=n;var c=i*l-a*u,f=a*l+i*u;return{x:c+o,y:f+s}},TFt=function(t,r){var n=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),i=Math.cos(t),a=Math.sin(t),o=Math.cos(t+r),s=Math.sin(t+r);return[{x:i-a*n,y:a+i*n},{x:o+s*n,y:s-o*n},{x:o,y:s}]},KDe=function(t,r,n,i){var a=t*i-r*n<0?-1:1,o=t*n+r*i;return o>1&&(o=1),o<-1&&(o=-1),a*Math.acos(o)},AFt=function(t,r,n,i,a,o,s,l,u,c,f,h){var d=Math.pow(a,2),v=Math.pow(o,2),x=Math.pow(f,2),b=Math.pow(h,2),p=d*v-d*b-v*x;p<0&&(p=0),p/=d*b+v*x,p=Math.sqrt(p)*(s===l?-1:1);var E=p*a/o*h,k=p*-o/a*f,A=c*E-u*k+(t+n)/2,L=u*E+c*k+(r+i)/2,_=(f-E)/a,C=(h-k)/o,M=(-f-E)/a,g=(-h-k)/o,P=KDe(1,0,_,C),T=KDe(_,C,M,g);return l===0&&T>0&&(T-=ik),l===1&&T<0&&(T+=ik),[A,L,P,T]},SFt=function(t){var r=t.px,n=t.py,i=t.cx,a=t.cy,o=t.rx,s=t.ry,l=t.xAxisRotation,u=l===void 0?0:l,c=t.largeArcFlag,f=c===void 0?0:c,h=t.sweepFlag,d=h===void 0?0:h,v=[];if(o===0||s===0)return[];var x=Math.sin(u*ik/360),b=Math.cos(u*ik/360),p=b*(r-i)/2+x*(n-a)/2,E=-x*(r-i)/2+b*(n-a)/2;if(p===0&&E===0)return[];o=Math.abs(o),s=Math.abs(s);var k=Math.pow(p,2)/Math.pow(o,2)+Math.pow(E,2)/Math.pow(s,2);k>1&&(o*=Math.sqrt(k),s*=Math.sqrt(k));var A=AFt(r,n,i,a,o,s,f,d,x,b,p,E),L=wFt(A,4),_=L[0],C=L[1],M=L[2],g=L[3],P=Math.abs(g)/(ik/4);Math.abs(1-P)<1e-7&&(P=1);var T=Math.max(Math.ceil(P),1);g/=T;for(var F=0;F{"use strict";eze.exports=EFt;var MFt=$De();function EFt(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function Nz(e,t,r,n){return["C",e,t,r,n,r,n]}function QDe(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}});var NX=ye((p0r,rze)=>{"use strict";rze.exports=function(t){return typeof t!="string"?!1:(t=t.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4))}});var aze=ye((g0r,nze)=>{"use strict";var kFt=XS(),CFt=OX(),LFt=tze(),PFt=NX(),ize=tE();nze.exports=IFt;function IFt(e){if(Array.isArray(e)&&e.length===1&&typeof e[0]=="string"&&(e=e[0]),typeof e=="string"&&(ize(PFt(e),"String is not an SVG path."),e=kFt(e)),ize(Array.isArray(e),"Argument should be a string or an array of path segments."),e=CFt(e),e=LFt(e),!e.length)return[0,0,0,0];for(var t=[1/0,1/0,-1/0,-1/0],r=0,n=e.length;rt[2]&&(t[2]=i[a+0]),i[a+1]>t[3]&&(t[3]=i[a+1]);return t}});var fze=ye((m0r,cze)=>{var Z2=Math.PI,oze=uze(120);cze.exports=RFt;function RFt(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f7&&(r.push(d.splice(0,7)),d.unshift("C"));break;case"S":var x=u,b=c;(t=="C"||t=="S")&&(x+=x-n,b+=b-i),d=["C",x,b,d[1],d[2],d[3],d[4]];break;case"T":t=="Q"||t=="T"?(s=u*2-s,l=c*2-l):(s=u,l=c),d=sze(u,c,s,l,d[1],d[2]);break;case"Q":s=d[1],l=d[2],d=sze(u,c,d[1],d[2],d[3],d[4]);break;case"L":d=Uz(u,c,d[1],d[2]);break;case"H":d=Uz(u,c,d[1],c);break;case"V":d=Uz(u,c,u,d[1]);break;case"Z":d=Uz(u,c,a,o);break}t=v,u=d[d.length-2],c=d[d.length-1],d.length>4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function Uz(e,t,r,n){return["C",e,t,r,n,r,n]}function sze(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}function lze(e,t,r,n,i,a,o,s,l,u){if(u)k=u[0],A=u[1],p=u[2],E=u[3];else{var c=UX(e,t,-i);e=c.x,t=c.y,c=UX(s,l,-i),s=c.x,l=c.y;var f=(e-s)/2,h=(t-l)/2,d=f*f/(r*r)+h*h/(n*n);d>1&&(d=Math.sqrt(d),r=d*r,n=d*n);var v=r*r,x=n*n,b=(a==o?-1:1)*Math.sqrt(Math.abs((v*x-v*h*h-x*f*f)/(v*h*h+x*f*f)));b==1/0&&(b=1);var p=b*r*h/n+(e+s)/2,E=b*-n*f/r+(t+l)/2,k=Math.asin(((t-E)/n).toFixed(9)),A=Math.asin(((l-E)/n).toFixed(9));k=eA&&(k=k-Z2*2),!o&&A>k&&(A=A-Z2*2)}if(Math.abs(A-k)>oze){var L=A,_=s,C=l;A=k+oze*(o&&A>k?1:-1),s=p+r*Math.cos(A),l=E+n*Math.sin(A);var M=lze(s,l,r,n,i,0,o,_,C,[A,L,p,E])}var g=Math.tan((A-k)/4),P=4/3*r*g,T=4/3*n*g,F=[2*e-(e+P*Math.sin(k)),2*t-(t-T*Math.cos(k)),s+P*Math.sin(A),l-T*Math.cos(A),s,l];if(u)return F;M&&(F=F.concat(M));for(var q=0;q{var DFt=OX(),zFt=fze(),FFt={M:"moveTo",C:"bezierCurveTo"};hze.exports=function(e,t){e.beginPath(),zFt(DFt(t)).forEach(function(r){var n=r[0],i=r.slice(1);e[FFt[n]].apply(e,i)}),e.closePath()}});var mze=ye((_0r,gze)=>{"use strict";var qFt=VE();gze.exports=OFt;var nk=1e20;function OFt(e,t){t||(t={});var r=t.cutoff==null?.25:t.cutoff,n=t.radius==null?8:t.radius,i=t.channel||0,a,o,s,l,u,c,f,h,d,v,x;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");a=t.width,o=t.height,l=e,t.stride?c=t.stride:c=Math.floor(e.length/a/o)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(h=e,f=h.getContext("2d"),a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(h=e.canvas,f=e,a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.ImageData&&e instanceof window.ImageData&&(d=e,a=e.width,o=e.height,l=d.data,c=4);if(s=Math.max(a,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(u=l,l=Array(a*o),v=0,x=u.length;v{"use strict";var BFt=aze(),NFt=XS(),UFt=dze(),VFt=NX(),HFt=mze(),VX=document.createElement("canvas"),hp=VX.getContext("2d");yze.exports=GFt;function GFt(e,t){if(!VFt(e))throw Error("Argument should be valid svg path string");t||(t={});var r,n;t.shape?(r=t.shape[0],n=t.shape[1]):(r=VX.width=t.w||t.width||200,n=VX.height=t.h||t.height||200);var i=Math.min(r,n),a=t.stroke||0,o=t.viewbox||t.viewBox||BFt(e),s=[r/(o[2]-o[0]),n/(o[3]-o[1])],l=Math.min(s[0]||0,s[1]||0)/2;if(hp.fillStyle="black",hp.fillRect(0,0,r,n),hp.fillStyle="white",a&&(typeof a!="number"&&(a=1),a>0?hp.strokeStyle="white":hp.strokeStyle="black",hp.lineWidth=Math.abs(a)),hp.translate(r*.5,n*.5),hp.scale(l,l),jFt()){var u=new Path2D(e);hp.fill(u),a&&hp.stroke(u)}else{var c=NFt(e);UFt(hp,c),hp.fill(),a&&hp.stroke()}hp.setTransform(1,0,0,1,0,0);var f=HFt(hp,{cutoff:t.cutoff!=null?t.cutoff:.5,radius:t.radius!=null?t.radius:i*.5});return f}var Vz;function jFt(){if(Vz!=null)return Vz;var e=document.createElement("canvas").getContext("2d");if(e.canvas.width=e.canvas.height=1,!window.Path2D)return Vz=!1;var t=new Path2D("M0,0h1v1h-1v-1Z");e.fillStyle="black",e.fill(t);var r=e.getImageData(0,0,1,1);return Vz=r&&r.data&&r.data[3]===255}});var Y2=ye((b0r,Lze)=>{"use strict";var Gz=uo(),WFt=_ze(),Hz=$_(),ZFt=ba(),rA=Mr(),Qf=rA.isArrayOrTypedArray,eA=ao(),xze=af(),bze=$y().formatColor,tA=lu(),XFt=S3(),GX=Fz(),ak=sx(),YFt=U1().DESELECTDIM,wze={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},KFt=rp().appendArrayPointValue;function JFt(e,t){var r,n={marker:void 0,markerSel:void 0,markerUnsel:void 0,line:void 0,fill:void 0,errorX:void 0,errorY:void 0,text:void 0,textSel:void 0,textUnsel:void 0},i=e._context.plotGlPixelRatio;if(t.visible!==!0)return n;if(tA.hasText(t)&&(n.text=Cze(e,t),n.textSel=Aze(e,t,t.selected),n.textUnsel=Aze(e,t,t.unselected)),tA.hasMarkers(t)&&(n.marker=WX(e,t),n.markerSel=jX(e,t,t.selected),n.markerUnsel=jX(e,t,t.unselected),!t.unselected&&Qf(t.marker.opacity))){var a=t.marker.opacity;for(n.markerUnsel.opacity=new Array(a.length),r=0;r500?"bold":"normal":e}function WX(e,t){var r=t._length,n=t.marker,i={},a,o=Qf(n.symbol),s=Qf(n.angle),l=Qf(n.color),u=Qf(n.line.color),c=Qf(n.opacity),f=Qf(n.size),h=Qf(n.line.width),d;if(o||(d=GX.isOpenSymbol(n.symbol)),o||l||u||c||s){i.symbols=new Array(r),i.angles=new Array(r),i.colors=new Array(r),i.borderColors=new Array(r);var v=n.symbol,x=n.angle,b=bze(n,n.opacity,r),p=bze(n.line,n.opacity,r);if(!Qf(p[0])){var E=p;for(p=Array(r),a=0;aak.TOO_MANY_POINTS||tA.hasMarkers(t)?"rect":"round";if(u&&t.connectgaps){var f=a[0],h=a[1];for(o=0;o1?l[o]:l[0]:l,d=Qf(u)?u.length>1?u[o]:u[0]:u,v=wze[h],x=wze[d],b=c?c/.8+1:0,p=-x*b-x*.5;a.offset[o]=[v*b/f,p/f]}}return a}Lze.exports={style:JFt,markerStyle:WX,markerSelection:jX,linePositions:QFt,errorBarPositions:e7t,textPosition:t7t}});var ZX=ye((w0r,Pze)=>{"use strict";var jz=Mr();Pze.exports=function(t,r){var n=r._scene,i={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[],selectBatch:[],unselectBatch:[]},a={fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:!1};return r._scene||(n=r._scene={},n.init=function(){jz.extendFlat(n,a,i)},n.init(),n.update=function(s){var l=jz.repeat(s,n.count);if(n.fill2d&&n.fill2d.update(l),n.scatter2d&&n.scatter2d.update(l),n.line2d&&n.line2d.update(l),n.error2d&&n.error2d.update(l.concat(l)),n.select2d&&n.select2d.update(l),n.glText)for(var u=0;u{"use strict";var r7t=Oz(),iA=Mr(),Ize=af(),i7t=wg().findExtremes,Rze=Rg(),XX=q0(),n7t=XX.calcMarkerSize,a7t=XX.calcAxisExpansion,o7t=XX.setFirstScatter,s7t=z0(),nA=Y2(),l7t=ZX(),Dze=es().BADNUM,u7t=sx().TOO_MANY_POINTS;Fze.exports=function(t,r){var n=t._fullLayout,i=r._xA=Ize.getFromId(t,r.xaxis,"x"),a=r._yA=Ize.getFromId(t,r.yaxis,"y"),o=n._plots[r.xaxis+r.yaxis],s=r._length,l=s>=u7t,u=s*2,c={},f,h=i.makeCalcdata(r,"x"),d=a.makeCalcdata(r,"y"),v=Rze(r,i,"x",h),x=Rze(r,a,"y",d),b=v.vals,p=x.vals;r._x=b,r._y=p,r.xperiodalignment&&(r._origX=h,r._xStarts=v.starts,r._xEnds=v.ends),r.yperiodalignment&&(r._origY=d,r._yStarts=x.starts,r._yEnds=x.ends);var E=new Array(u),k=new Array(s);for(f=0;f1&&iA.extendFlat(o.line,nA.linePositions(e,r,n)),o.errorX||o.errorY){var s=nA.errorBarPositions(e,r,n,i,a);o.errorX&&iA.extendFlat(o.errorX,s.x),o.errorY&&iA.extendFlat(o.errorY,s.y)}return o.text&&(iA.extendFlat(o.text,{positions:n},nA.textPosition(e,r,o.text,o.marker)),iA.extendFlat(o.textSel,{positions:n},nA.textPosition(e,r,o.text,o.markerSel)),iA.extendFlat(o.textUnsel,{positions:n},nA.textPosition(e,r,o.text,o.markerUnsel))),o}});var YX=ye((A0r,Bze)=>{"use strict";var Oze=Mr(),f7t=va(),h7t=U1().DESELECTDIM;function d7t(e){var t=e[0],r=t.trace,n=t.t,i=n._scene,a=n.index,o=i.selectBatch[a],s=i.unselectBatch[a],l=i.textOptions[a],u=i.textSelectedOptions[a]||{},c=i.textUnselectedOptions[a]||{},f=Oze.extendFlat({},l),h,d;if(o.length||s.length){var v=u.color,x=c.color,b=l.color,p=Oze.isArrayOrTypedArray(b);for(f.color=new Array(r._length),h=0;h{"use strict";var Nze=lu(),v7t=YX().styleTextSelection;Uze.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l=n[0].t,u=s._length,c=l.x,f=l.y,h=l._scene,d=l.index;if(!h)return o;var v=Nze.hasText(s),x=Nze.hasMarkers(s),b=!x&&!v;if(s.visible!==!0||b)return o;var p=[],E=[];if(r!==!1&&!r.degenerate)for(var k=0;k{"use strict";var p7t=zz();Vze.exports={moduleType:"trace",name:"scattergl",basePlotModule:Jf(),categories:["gl","regl","cartesian","symbols","errorBarsOK","showLegend","scatter-like"],attributes:tk(),supplyDefaults:ADe(),crossTraceDefaults:$N(),colorbar:Kd(),formatLabels:MDe(),calc:qze(),hoverPoints:p7t.hoverPoints,selectPoints:KX(),meta:{}}});var jze=ye((E0r,Zz)=>{"use strict";var Wz=VE();Zz.exports=Gze;Zz.exports.to=Gze;Zz.exports.from=g7t;function Gze(e,t){t==null&&(t=!0);var r=e[0],n=e[1],i=e[2],a=e[3];a==null&&(a=t?1:255),t&&(r*=255,n*=255,i*=255,a*=255),r=Wz(r,0,255)&255,n=Wz(n,0,255)&255,i=Wz(i,0,255)&255,a=Wz(a,0,255)&255;var o=r*16777216+(n<<16)+(i<<8)+a;return o}function g7t(e,t){e=+e;var r=e>>>24,n=(e&16711680)>>>16,i=(e&65280)>>>8,a=e&255;return t===!1?[r,n,i,a]:[r/255,n/255,i/255,a/255]}});var bh=ye((k0r,Zze)=>{"use strict";var Wze=Object.getOwnPropertySymbols,m7t=Object.prototype.hasOwnProperty,y7t=Object.prototype.propertyIsEnumerable;function _7t(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function x7t(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(t).map(function(a){return t[a]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(a){i[a]=a}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(a){return!1}}Zze.exports=x7t()?Object.assign:function(e,t){for(var r,n=_7t(e),i,a=1;a{Xze.exports=function(e){typeof e=="string"&&(e=[e]);for(var t=[].slice.call(arguments,1),r=[],n=0;n{"use strict";Kze.exports=function(t,r,n){Array.isArray(n)||(n=[].slice.call(arguments,2));for(var i=0,a=n.length;i{"use strict";Jze.exports=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion))});var Xz=ye((I0r,aA)=>{"use strict";aA.exports=ok;aA.exports.float32=aA.exports.float=ok;aA.exports.fract32=aA.exports.fract=b7t;var Qze=new Float32Array(1);function b7t(e,t){if(e.length){if(e instanceof Float32Array)return new Float32Array(e.length);t instanceof Float32Array||(t=ok(e));for(var r=0,n=t.length;r{"use strict";function w7t(e,t){var r=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&r.return!=null&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function T7t(e,t){return M7t(e)||w7t(e,t)||tFe(e,t)||C7t()}function A7t(e){return S7t(e)||E7t(e)||tFe(e)||k7t()}function S7t(e){if(Array.isArray(e))return $X(e)}function M7t(e){if(Array.isArray(e))return e}function E7t(e){if(typeof Symbol!="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function tFe(e,t){if(e){if(typeof e=="string")return $X(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $X(e,t)}}function $X(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);rre)?N.tree=S7t(G,{bounds:ge}):re&&re.length&&(N.tree=re),N.tree){var ie={primitive:"points",usage:"static",data:N.tree,type:"uint32"};N.elements?N.elements(ie):N.elements=o.elements(ie)}var Te=Kz.float32(G);ae({data:Te,usage:"dynamic"});var Ee=Kz.fract32(G,Te);return _e({data:Ee,usage:"dynamic"}),Me({data:new Uint8Array(ke),type:"uint8",usage:"stream"}),G}},{marker:function(G,N,W){var re=N.activation;if(re.forEach(function(Ee){return Ee&&Ee.destroy&&Ee.destroy()}),re.length=0,!G||typeof G[0]=="number"){var ae=e.addMarker(G);re[ae]=!0}else{for(var _e=[],Me=0,ke=Math.min(G.length,N.count);Me=0)return i;var a;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)a=e;else{a=new Uint8Array(e.length);for(var o=0,s=e.length;on*4&&(this.tooManyColors=!0),this.updatePalette(r),i.length===1?i[0]:i};rv.prototype.updatePalette=function(e){if(!this.tooManyColors){var t=this.maxColors,r=this.paletteTexture,n=Math.ceil(e.length*.25/t);if(n>1){e=e.slice();for(var i=e.length*.25%t;i{"use strict";iY.exports=Qz;iY.exports.default=Qz;function Qz(e,t,r){r=r||2;var n=t&&t.length,i=n?t[0]*r:e.length,a=iFe(e,0,i,r,!0),o=[];if(!a||a.next===a.prev)return o;var s,l,u,c,f,h,d;if(n&&(a=q7t(e,t,a,r)),e.length>80*r){s=u=e[0],l=c=e[1];for(var v=r;vu&&(u=f),h>c&&(c=h);d=Math.max(u-s,c-l),d=d!==0?32767/d:0}return ok(a,o,r,s,l,d,0),o}function iFe(e,t,r,n,i){var a,o;if(i===rY(e,t,r,n)>0)for(a=t;a=t;a-=n)o=rFe(a,e[a],e[a+1],o);return o&&eF(o,o.next)&&(lk(o),o=o.next),o}function J2(e,t){if(!e)return e;t||(t=e);var r=e,n;do if(n=!1,!r.steiner&&(eF(r,r.next)||eh(r.prev,r,r.next)===0)){if(lk(r),r=t=r.prev,r===r.next)break;n=!0}else r=r.next;while(n||r!==t);return t}function ok(e,t,r,n,i,a,o){if(e){!o&&a&&V7t(e,n,i,a);for(var s=e,l,u;e.prev!==e.next;){if(l=e.prev,u=e.next,a?D7t(e,n,i,a):R7t(e)){t.push(l.i/r|0),t.push(e.i/r|0),t.push(u.i/r|0),lk(e),e=u.next,s=u.next;continue}if(e=u,e===s){o?o===1?(e=z7t(J2(e),t,r),ok(e,t,r,n,i,a,2)):o===2&&F7t(e,t,r,n,i,a):ok(J2(e),t,r,n,i,a,1);break}}}}function R7t(e){var t=e.prev,r=e,n=e.next;if(eh(t,r,n)>=0)return!1;for(var i=t.x,a=r.x,o=n.x,s=t.y,l=r.y,u=n.y,c=ia?i>o?i:o:a>o?a:o,d=s>l?s>u?s:u:l>u?l:u,v=n.next;v!==t;){if(v.x>=c&&v.x<=h&&v.y>=f&&v.y<=d&&sA(i,s,a,l,o,u,v.x,v.y)&&eh(v.prev,v,v.next)>=0)return!1;v=v.next}return!0}function D7t(e,t,r,n){var i=e.prev,a=e,o=e.next;if(eh(i,a,o)>=0)return!1;for(var s=i.x,l=a.x,u=o.x,c=i.y,f=a.y,h=o.y,d=sl?s>u?s:u:l>u?l:u,b=c>f?c>h?c:h:f>h?f:h,g=eY(d,v,t,r,n),E=eY(x,b,t,r,n),k=e.prevZ,A=e.nextZ;k&&k.z>=g&&A&&A.z<=E;){if(k.x>=d&&k.x<=x&&k.y>=v&&k.y<=b&&k!==i&&k!==o&&sA(s,c,l,f,u,h,k.x,k.y)&&eh(k.prev,k,k.next)>=0||(k=k.prevZ,A.x>=d&&A.x<=x&&A.y>=v&&A.y<=b&&A!==i&&A!==o&&sA(s,c,l,f,u,h,A.x,A.y)&&eh(A.prev,A,A.next)>=0))return!1;A=A.nextZ}for(;k&&k.z>=g;){if(k.x>=d&&k.x<=x&&k.y>=v&&k.y<=b&&k!==i&&k!==o&&sA(s,c,l,f,u,h,k.x,k.y)&&eh(k.prev,k,k.next)>=0)return!1;k=k.prevZ}for(;A&&A.z<=E;){if(A.x>=d&&A.x<=x&&A.y>=v&&A.y<=b&&A!==i&&A!==o&&sA(s,c,l,f,u,h,A.x,A.y)&&eh(A.prev,A,A.next)>=0)return!1;A=A.nextZ}return!0}function z7t(e,t,r){var n=e;do{var i=n.prev,a=n.next.next;!eF(i,a)&&nFe(i,n,n.next,a)&&sk(i,a)&&sk(a,i)&&(t.push(i.i/r|0),t.push(n.i/r|0),t.push(a.i/r|0),lk(n),lk(n.next),n=e=a),n=n.next}while(n!==e);return J2(n)}function F7t(e,t,r,n,i,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&j7t(o,s)){var l=aFe(o,s);o=J2(o,o.next),l=J2(l,l.next),ok(o,t,r,n,i,a,0),ok(l,t,r,n,i,a,0);return}s=s.next}o=o.next}while(o!==e)}function q7t(e,t,r,n){var i=[],a,o,s,l,u;for(a=0,o=t.length;a=r.next.y&&r.next.y!==r.y){var s=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(s<=n&&s>a&&(a=s,o=r.x=r.x&&r.x>=u&&n!==r.x&&sA(io.x||r.x===o.x&&U7t(o,r)))&&(o=r,f=h)),r=r.next;while(r!==l);return o}function U7t(e,t){return eh(e.prev,e,t.prev)<0&&eh(t.next,e,e.next)<0}function V7t(e,t,r,n){var i=e;do i.z===0&&(i.z=eY(i.x,i.y,t,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,H7t(i)}function H7t(e){var t,r,n,i,a,o,s,l,u=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,n=r,s=0,t=0;t0||l>0&&n;)s!==0&&(l===0||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;r=n}a.nextZ=null,u*=2}while(o>1);return e}function eY(e,t,r,n,i){return e=(e-r)*i|0,t=(t-n)*i|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function G7t(e){var t=e,r=e;do(t.x=(e-o)*(a-s)&&(e-o)*(n-s)>=(r-o)*(t-s)&&(r-o)*(a-s)>=(i-o)*(n-s)}function j7t(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!W7t(e,t)&&(sk(e,t)&&sk(t,e)&&Z7t(e,t)&&(eh(e.prev,e,t.prev)||eh(e,t.prev,t))||eF(e,t)&&eh(e.prev,e,e.next)>0&&eh(t.prev,t,t.next)>0)}function eh(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function eF(e,t){return e.x===t.x&&e.y===t.y}function nFe(e,t,r,n){var i=$z(eh(e,t,r)),a=$z(eh(e,t,n)),o=$z(eh(r,n,e)),s=$z(eh(r,n,t));return!!(i!==a&&o!==s||i===0&&Jz(e,r,t)||a===0&&Jz(e,n,t)||o===0&&Jz(r,e,n)||s===0&&Jz(r,t,n))}function Jz(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function $z(e){return e>0?1:e<0?-1:0}function W7t(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&nFe(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function sk(e,t){return eh(e.prev,e,e.next)<0?eh(e,t,e.next)>=0&&eh(e,e.prev,t)>=0:eh(e,t,e.prev)<0||eh(e,e.next,t)<0}function Z7t(e,t){var r=e,n=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;while(r!==e);return n}function aFe(e,t){var r=new tY(e.i,e.x,e.y),n=new tY(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function rFe(e,t,r,n){var i=new tY(e,t,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function lk(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function tY(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}Qz.deviation=function(e,t,r,n){var i=t&&t.length,a=i?t[0]*r:e.length,o=Math.abs(rY(e,0,a,r));if(i)for(var s=0,l=t.length;s0&&(n+=e[i-1].length,r.holes.push(n))}return r}});var lFe=ye((k0r,sFe)=>{"use strict";var X7t=j2();sFe.exports=Y7t;function Y7t(e,t,r){if(!e||e.length==null)throw Error("Argument should be an array");t==null&&(t=1),r==null&&(r=X7t(e,t));for(var n=0;n{"use strict";uFe.exports=function(){var e,t;if(typeof WeakMap!="function")return!1;try{e=new WeakMap([[t={},"one"],[{},"two"],[{},"three"]])}catch(r){return!1}return!(String(e)!=="[object WeakMap]"||typeof e.set!="function"||e.set({},1)!==e||typeof e.delete!="function"||typeof e.has!="function"||e.get(t)!=="one")}});var hFe=ye((L0r,fFe)=>{"use strict";fFe.exports=function(){}});var sx=ye((P0r,dFe)=>{"use strict";var K7t=hFe()();dFe.exports=function(e){return e!==K7t&&e!==null}});var nY=ye((I0r,pFe)=>{"use strict";var J7t=Object.create,$7t=Object.getPrototypeOf,vFe={};pFe.exports=function(){var e=Object.setPrototypeOf,t=arguments[0]||J7t;return typeof e!="function"?!1:$7t(e(t(null),vFe))===vFe}});var aY=ye((R0r,gFe)=>{"use strict";var Q7t=sx(),e9t={function:!0,object:!0};gFe.exports=function(e){return Q7t(e)&&e9t[typeof e]||!1}});var i1=ye((D0r,mFe)=>{"use strict";var t9t=sx();mFe.exports=function(e){if(!t9t(e))throw new TypeError("Cannot use null or undefined");return e}});var _Fe=ye((z0r,yFe)=>{"use strict";var oY=Object.create,tF;nY()()||(tF=sY());yFe.exports=function(){var e,t,r;return!tF||tF.level!==1?oY:(e={},t={},r={configurable:!1,enumerable:!1,writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(n){if(n==="__proto__"){t[n]={configurable:!0,enumerable:!1,writable:!0,value:void 0};return}t[n]=r}),Object.defineProperties(e,t),Object.defineProperty(tF,"nullPolyfill",{configurable:!1,enumerable:!1,writable:!1,value:e}),function(n,i){return oY(n===null?e:n,i)})}()});var sY=ye((F0r,xFe)=>{"use strict";var r9t=aY(),i9t=i1(),n9t=Object.prototype.isPrototypeOf,a9t=Object.defineProperty,o9t={configurable:!0,enumerable:!1,writable:!0,value:void 0},rF;rF=function(e,t){if(i9t(e),t===null||r9t(t))return e;throw new TypeError("Prototype must be null or an object")};xFe.exports=function(e){var t,r;return e?(e.level===2?e.set?(r=e.set,t=function(n,i){return r.call(rF(n,i),i),n}):t=function(n,i){return rF(n,i).__proto__=i,n}:t=function n(i,a){var o;return rF(i,a),o=n9t.call(n.nullPolyfill,i),o&&delete n.nullPolyfill.__proto__,a===null&&(a=n.nullPolyfill),i.__proto__=a,o&&a9t(n.nullPolyfill,"__proto__",o9t),i},Object.defineProperty(t,"level",{configurable:!1,enumerable:!1,writable:!1,value:e.level})):null}(function(){var e=Object.create(null),t={},r,n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");if(n){try{r=n.set,r.call(e,t)}catch(i){}if(Object.getPrototypeOf(e)===t)return{set:r,level:2}}return e.__proto__=t,Object.getPrototypeOf(e)===t?{level:2}:(e={},e.__proto__=t,Object.getPrototypeOf(e)===t?{level:1}:!1)}());_Fe()});var iF=ye((q0r,bFe)=>{"use strict";bFe.exports=nY()()?Object.setPrototypeOf:sY()});var TFe=ye((O0r,wFe)=>{"use strict";var s9t=aY();wFe.exports=function(e){if(!s9t(e))throw new TypeError(e+" is not an Object");return e}});var SFe=ye((B0r,AFe)=>{"use strict";var l9t=Object.create(null),u9t=Math.random;AFe.exports=function(){var e;do e=u9t().toString(36).slice(2);while(l9t[e]);return e}});var $2=ye((N0r,MFe)=>{"use strict";var c9t=void 0;MFe.exports=function(e){return e!==c9t&&e!==null}});var nF=ye((U0r,EFe)=>{"use strict";var f9t=$2(),h9t={object:!0,function:!0,undefined:!0};EFe.exports=function(e){return f9t(e)?hasOwnProperty.call(h9t,typeof e):!1}});var CFe=ye((V0r,kFe)=>{"use strict";var d9t=nF();kFe.exports=function(e){if(!d9t(e))return!1;try{return e.constructor?e.constructor.prototype===e:!1}catch(t){return!1}}});var PFe=ye((H0r,LFe)=>{"use strict";var v9t=CFe();LFe.exports=function(e){if(typeof e!="function"||!hasOwnProperty.call(e,"length"))return!1;try{if(typeof e.length!="number"||typeof e.call!="function"||typeof e.apply!="function")return!1}catch(t){return!1}return!v9t(e)}});var lY=ye((G0r,IFe)=>{"use strict";var p9t=PFe(),g9t=/^\s*class[\s{/}]/,m9t=Function.prototype.toString;IFe.exports=function(e){return!(!p9t(e)||g9t.test(m9t.call(e)))}});var DFe=ye((j0r,RFe)=>{"use strict";RFe.exports=function(){var e=Object.assign,t;return typeof e!="function"?!1:(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}});var FFe=ye((W0r,zFe)=>{"use strict";zFe.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}});var OFe=ye((Z0r,qFe)=>{"use strict";var y9t=sx(),_9t=Object.keys;qFe.exports=function(e){return _9t(y9t(e)?Object(e):e)}});var NFe=ye((X0r,BFe)=>{"use strict";BFe.exports=FFe()()?Object.keys:OFe()});var VFe=ye((Y0r,UFe)=>{"use strict";var x9t=NFe(),b9t=i1(),w9t=Math.max;UFe.exports=function(e,t){var r,n,i=w9t(arguments.length,2),a;for(e=Object(b9t(e)),a=function(o){try{e[o]=t[o]}catch(s){r||(r=s)}},n=1;n{"use strict";HFe.exports=DFe()()?Object.assign:VFe()});var uY=ye((J0r,GFe)=>{"use strict";var T9t=sx(),A9t=Array.prototype.forEach,S9t=Object.create,M9t=function(e,t){var r;for(r in e)t[r]=e[r]};GFe.exports=function(e){var t=S9t(null);return A9t.call(arguments,function(r){T9t(r)&&M9t(Object(r),t)}),t}});var WFe=ye(($0r,jFe)=>{"use strict";var cY="razdwatrzy";jFe.exports=function(){return typeof cY.contains!="function"?!1:cY.contains("dwa")===!0&&cY.contains("foo")===!1}});var XFe=ye((Q0r,ZFe)=>{"use strict";var E9t=String.prototype.indexOf;ZFe.exports=function(e){return E9t.call(this,e,arguments[1])>-1}});var fY=ye((egr,YFe)=>{"use strict";YFe.exports=WFe()()?String.prototype.contains:XFe()});var n1=ye((tgr,QFe)=>{"use strict";var oF=$2(),KFe=lY(),JFe=aF(),$Fe=uY(),uk=fY(),k9t=QFe.exports=function(e,t){var r,n,i,a,o;return arguments.length<2||typeof e!="string"?(a=t,t=e,e=null):a=arguments[2],oF(e)?(r=uk.call(e,"c"),n=uk.call(e,"e"),i=uk.call(e,"w")):(r=i=!0,n=!1),o={value:t,configurable:r,enumerable:n,writable:i},a?JFe($Fe(a),o):o};k9t.gs=function(e,t,r){var n,i,a,o;return typeof e!="string"?(a=r,r=t,t=e,e=null):a=arguments[3],oF(t)?KFe(t)?oF(r)?KFe(r)||(a=r,r=void 0):r=void 0:(a=t,t=r=void 0):t=void 0,oF(e)?(n=uk.call(e,"c"),i=uk.call(e,"e")):(n=!0,i=!1),o={get:t,set:r,configurable:n,enumerable:i},a?JFe($Fe(a),o):o}});var ck=ye((rgr,t7e)=>{"use strict";var e7e=Object.prototype.toString,C9t=e7e.call(function(){return arguments}());t7e.exports=function(e){return e7e.call(e)===C9t}});var fk=ye((igr,i7e)=>{"use strict";var r7e=Object.prototype.toString,L9t=r7e.call("");i7e.exports=function(e){return typeof e=="string"||e&&typeof e=="object"&&(e instanceof String||r7e.call(e)===L9t)||!1}});var a7e=ye((ngr,n7e)=>{"use strict";n7e.exports=function(){return typeof globalThis!="object"||!globalThis?!1:globalThis.Array===Array}});var l7e=ye((agr,s7e)=>{var o7e=function(){if(typeof self=="object"&&self)return self;if(typeof window=="object"&&window)return window;throw new Error("Unable to resolve global `this`")};s7e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return o7e()}try{return __global__||o7e()}finally{delete Object.prototype.__global__}}()});var hk=ye((ogr,u7e)=>{"use strict";u7e.exports=a7e()()?globalThis:l7e()});var f7e=ye((sgr,c7e)=>{"use strict";var P9t=hk(),hY={object:!0,symbol:!0};c7e.exports=function(){var e=P9t.Symbol,t;if(typeof e!="function")return!1;t=e("test symbol");try{String(t)}catch(r){return!1}return!(!hY[typeof e.iterator]||!hY[typeof e.toPrimitive]||!hY[typeof e.toStringTag])}});var d7e=ye((lgr,h7e)=>{"use strict";h7e.exports=function(e){return e?typeof e=="symbol"?!0:!e.constructor||e.constructor.name!=="Symbol"?!1:e[e.constructor.toStringTag]==="Symbol":!1}});var dY=ye((ugr,v7e)=>{"use strict";var I9t=d7e();v7e.exports=function(e){if(!I9t(e))throw new TypeError(e+" is not a symbol");return e}});var _7e=ye((cgr,y7e)=>{"use strict";var p7e=n1(),R9t=Object.create,g7e=Object.defineProperty,D9t=Object.prototype,m7e=R9t(null);y7e.exports=function(e){for(var t=0,r,n;m7e[e+(t||"")];)++t;return e+=t||"",m7e[e]=!0,r="@@"+e,g7e(D9t,r,p7e.gs(null,function(i){n||(n=!0,g7e(this,r,p7e(i)),n=!1)})),r}});var b7e=ye((fgr,x7e)=>{"use strict";var Qg=n1(),wh=hk().Symbol;x7e.exports=function(e){return Object.defineProperties(e,{hasInstance:Qg("",wh&&wh.hasInstance||e("hasInstance")),isConcatSpreadable:Qg("",wh&&wh.isConcatSpreadable||e("isConcatSpreadable")),iterator:Qg("",wh&&wh.iterator||e("iterator")),match:Qg("",wh&&wh.match||e("match")),replace:Qg("",wh&&wh.replace||e("replace")),search:Qg("",wh&&wh.search||e("search")),species:Qg("",wh&&wh.species||e("species")),split:Qg("",wh&&wh.split||e("split")),toPrimitive:Qg("",wh&&wh.toPrimitive||e("toPrimitive")),toStringTag:Qg("",wh&&wh.toStringTag||e("toStringTag")),unscopables:Qg("",wh&&wh.unscopables||e("unscopables"))})}});var A7e=ye((hgr,T7e)=>{"use strict";var w7e=n1(),z9t=dY(),dk=Object.create(null);T7e.exports=function(e){return Object.defineProperties(e,{for:w7e(function(t){return dk[t]?dk[t]:dk[t]=e(String(t))}),keyFor:w7e(function(t){var r;z9t(t);for(r in dk)if(dk[r]===t)return r})})}});var E7e=ye((dgr,M7e)=>{"use strict";var Xm=n1(),vY=dY(),sF=hk().Symbol,F9t=_7e(),q9t=b7e(),O9t=A7e(),B9t=Object.create,pY=Object.defineProperties,lF=Object.defineProperty,Wv,lA,S7e;if(typeof sF=="function")try{String(sF()),S7e=!0}catch(e){}else sF=null;lA=function(t){if(this instanceof lA)throw new TypeError("Symbol is not a constructor");return Wv(t)};M7e.exports=Wv=function e(t){var r;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return S7e?sF(t):(r=B9t(lA.prototype),t=t===void 0?"":String(t),pY(r,{__description__:Xm("",t),__name__:Xm("",F9t(t))}))};q9t(Wv);O9t(Wv);pY(lA.prototype,{constructor:Xm(Wv),toString:Xm("",function(){return this.__name__})});pY(Wv.prototype,{toString:Xm(function(){return"Symbol ("+vY(this).__description__+")"}),valueOf:Xm(function(){return vY(this)})});lF(Wv.prototype,Wv.toPrimitive,Xm("",function(){var e=vY(this);return typeof e=="symbol"?e:e.toString()}));lF(Wv.prototype,Wv.toStringTag,Xm("c","Symbol"));lF(lA.prototype,Wv.toStringTag,Xm("c",Wv.prototype[Wv.toStringTag]));lF(lA.prototype,Wv.toPrimitive,Xm("c",Wv.prototype[Wv.toPrimitive]))});var lx=ye((vgr,k7e)=>{"use strict";k7e.exports=f7e()()?hk().Symbol:E7e()});var L7e=ye((pgr,C7e)=>{"use strict";var N9t=i1();C7e.exports=function(){return N9t(this).length=0,this}});var uA=ye((ggr,P7e)=>{"use strict";P7e.exports=function(e){if(typeof e!="function")throw new TypeError(e+" is not a function");return e}});var R7e=ye((mgr,I7e)=>{"use strict";var U9t=$2(),V9t=nF(),H9t=Object.prototype.toString;I7e.exports=function(e){if(!U9t(e))return null;if(V9t(e)){var t=e.toString;if(typeof t!="function"||t===H9t)return null}try{return""+e}catch(r){return null}}});var z7e=ye((ygr,D7e)=>{"use strict";D7e.exports=function(e){try{return e.toString()}catch(t){try{return String(e)}catch(r){return null}}}});var q7e=ye((_gr,F7e)=>{"use strict";var G9t=z7e(),j9t=/[\n\r\u2028\u2029]/g;F7e.exports=function(e){var t=G9t(e);return t===null?"":(t.length>100&&(t=t.slice(0,99)+"\u2026"),t=t.replace(j9t,function(r){switch(r){case` -`:return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}}),t)}});var gY=ye((xgr,N7e)=>{"use strict";var O7e=$2(),W9t=nF(),Z9t=R7e(),X9t=q7e(),B7e=function(e,t){return e.replace("%v",X9t(t))};N7e.exports=function(e,t,r){if(!W9t(r))throw new TypeError(B7e(t,e));if(!O7e(e)){if("default"in r)return r.default;if(r.isOptional)return null}var n=Z9t(r.errorMessage);throw O7e(n)||(n=t),new TypeError(B7e(n,e))}});var V7e=ye((bgr,U7e)=>{"use strict";var Y9t=gY(),K9t=$2();U7e.exports=function(e){return K9t(e)?e:Y9t(e,"Cannot use %v",arguments[1])}});var G7e=ye((wgr,H7e)=>{"use strict";var J9t=gY(),$9t=lY();H7e.exports=function(e){return $9t(e)?e:J9t(e,"%v is not a plain function",arguments[1])}});var W7e=ye((Tgr,j7e)=>{"use strict";j7e.exports=function(){var e=Array.from,t,r;return typeof e!="function"?!1:(t=["raz","dwa"],r=e(t),!!(r&&r!==t&&r[1]==="dwa"))}});var X7e=ye((Agr,Z7e)=>{"use strict";var Q9t=Object.prototype.toString,eqt=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);Z7e.exports=function(e){return typeof e=="function"&&eqt(Q9t.call(e))}});var K7e=ye((Sgr,Y7e)=>{"use strict";Y7e.exports=function(){var e=Math.sign;return typeof e!="function"?!1:e(10)===1&&e(-20)===-1}});var $7e=ye((Mgr,J7e)=>{"use strict";J7e.exports=function(e){return e=Number(e),isNaN(e)||e===0?e:e>0?1:-1}});var e9e=ye((Egr,Q7e)=>{"use strict";Q7e.exports=K7e()()?Math.sign:$7e()});var r9e=ye((kgr,t9e)=>{"use strict";var tqt=e9e(),rqt=Math.abs,iqt=Math.floor;t9e.exports=function(e){return isNaN(e)?0:(e=Number(e),e===0||!isFinite(e)?e:tqt(e)*iqt(rqt(e)))}});var n9e=ye((Cgr,i9e)=>{"use strict";var nqt=r9e(),aqt=Math.max;i9e.exports=function(e){return aqt(0,nqt(e))}});var l9e=ye((Lgr,s9e)=>{"use strict";var oqt=lx().iterator,sqt=ck(),lqt=X7e(),uqt=n9e(),a9e=uA(),cqt=i1(),fqt=sx(),hqt=fk(),o9e=Array.isArray,mY=Function.prototype.call,Q2={configurable:!0,enumerable:!0,writable:!0,value:null},yY=Object.defineProperty;s9e.exports=function(e){var t=arguments[1],r=arguments[2],n,i,a,o,s,l,u,c,f,h;if(e=Object(cqt(e)),fqt(t)&&a9e(t),!this||this===Array||!lqt(this)){if(!t){if(sqt(e))return s=e.length,s!==1?Array.apply(null,e):(o=new Array(1),o[0]=e[0],o);if(o9e(e)){for(o=new Array(s=e.length),i=0;i=55296&&l<=56319&&(h+=e[++i])),h=t?mY.call(t,r,h,a):h,n?(Q2.value=h,yY(o,a,Q2)):o[a]=h,++a;s=a}}if(s===void 0)for(s=uqt(e.length),n&&(o=new n(s)),i=0;i{"use strict";u9e.exports=W7e()()?Array.from:l9e()});var h9e=ye((Igr,f9e)=>{"use strict";var dqt=c9e(),vqt=aF(),pqt=i1();f9e.exports=function(e){var t=Object(pqt(e)),r=arguments[1],n=Object(arguments[2]);if(t!==e&&!r)return t;var i={};return r?dqt(r,function(a){(n.ensure||a in e)&&(i[a]=e[a])}):vqt(i,e),i}});var p9e=ye((Rgr,v9e)=>{"use strict";var gqt=uA(),mqt=i1(),yqt=Function.prototype.bind,d9e=Function.prototype.call,_qt=Object.keys,xqt=Object.prototype.propertyIsEnumerable;v9e.exports=function(e,t){return function(r,n){var i,a=arguments[2],o=arguments[3];return r=Object(mqt(r)),gqt(n),i=_qt(r),o&&i.sort(typeof o=="function"?yqt.call(o,r):void 0),typeof e!="function"&&(e=i[e]),d9e.call(e,i,function(s,l){return xqt.call(r,s)?d9e.call(n,a,r[s],s,r,l):t})}}});var m9e=ye((Dgr,g9e)=>{"use strict";g9e.exports=p9e()("forEach")});var _9e=ye((zgr,y9e)=>{"use strict";var bqt=uA(),wqt=m9e(),Tqt=Function.prototype.call;y9e.exports=function(e,t){var r={},n=arguments[2];return bqt(t),wqt(e,function(i,a,o,s){r[a]=Tqt.call(t,n,i,a,o,s)}),r}});var T9e=ye((Fgr,w9e)=>{"use strict";var Aqt=$2(),Sqt=V7e(),x9e=G7e(),Mqt=h9e(),Eqt=uY(),kqt=_9e(),Cqt=Function.prototype.bind,Lqt=Object.defineProperty,Pqt=Object.prototype.hasOwnProperty,b9e;b9e=function(e,t,r){var n=Sqt(t)&&x9e(t.value),i;return i=Mqt(t),delete i.writable,delete i.value,i.get=function(){return!r.overwriteDefinition&&Pqt.call(this,e)?n:(t.value=Cqt.call(n,r.resolveContext?r.resolveContext(this):this),Lqt(this,e,t),this[e])},i};w9e.exports=function(e){var t=Eqt(arguments[1]);return Aqt(t.resolveContext)&&x9e(t.resolveContext),kqt(e,function(r,n){return b9e(n,r,t)})}});var _Y=ye((qgr,E9e)=>{"use strict";var Iqt=L7e(),Rqt=aF(),Dqt=uA(),zqt=i1(),Op=n1(),Fqt=T9e(),A9e=lx(),S9e=Object.defineProperty,M9e=Object.defineProperties,vk;E9e.exports=vk=function(e,t){if(!(this instanceof vk))throw new TypeError("Constructor requires 'new'");M9e(this,{__list__:Op("w",zqt(e)),__context__:Op("w",t),__nextIndex__:Op("w",0)}),t&&(Dqt(t.on),t.on("_add",this._onAdd),t.on("_delete",this._onDelete),t.on("_clear",this._onClear))};delete vk.prototype.constructor;M9e(vk.prototype,Rqt({_next:Op(function(){var e;if(this.__list__){if(this.__redo__&&(e=this.__redo__.shift(),e!==void 0))return e;if(this.__nextIndex__=this.__nextIndex__)){if(++this.__nextIndex__,!this.__redo__){S9e(this,"__redo__",Op("c",[e]));return}this.__redo__.forEach(function(t,r){t>=e&&(this.__redo__[r]=++t)},this),this.__redo__.push(e)}}),_onDelete:Op(function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(t=this.__redo__.indexOf(e),t!==-1&&this.__redo__.splice(t,1),this.__redo__.forEach(function(r,n){r>e&&(this.__redo__[n]=--r)},this)))}),_onClear:Op(function(){this.__redo__&&Iqt.call(this.__redo__),this.__nextIndex__=0})})));S9e(vk.prototype,A9e.iterator,Op(function(){return this}))});var I9e=ye((Ogr,P9e)=>{"use strict";var k9e=iF(),C9e=fY(),xY=n1(),qqt=lx(),bY=_Y(),L9e=Object.defineProperty,cA;cA=P9e.exports=function(e,t){if(!(this instanceof cA))throw new TypeError("Constructor requires 'new'");bY.call(this,e),t?C9e.call(t,"key+value")?t="key+value":C9e.call(t,"key")?t="key":t="value":t="value",L9e(this,"__kind__",xY("",t))};k9e&&k9e(cA,bY);delete cA.prototype.constructor;cA.prototype=Object.create(bY.prototype,{_resolve:xY(function(e){return this.__kind__==="value"?this.__list__[e]:this.__kind__==="key+value"?[e,this.__list__[e]]:e})});L9e(cA.prototype,qqt.toStringTag,xY("c","Array Iterator"))});var F9e=ye((Bgr,z9e)=>{"use strict";var R9e=iF(),uF=n1(),Oqt=lx(),wY=_Y(),D9e=Object.defineProperty,fA;fA=z9e.exports=function(e){if(!(this instanceof fA))throw new TypeError("Constructor requires 'new'");e=String(e),wY.call(this,e),D9e(this,"__length__",uF("",e.length))};R9e&&R9e(fA,wY);delete fA.prototype.constructor;fA.prototype=Object.create(wY.prototype,{_next:uF(function(){if(this.__list__){if(this.__nextIndex__=55296&&r<=56319?t+this.__list__[this.__nextIndex__++]:t)})});D9e(fA.prototype,Oqt.toStringTag,uF("c","String Iterator"))});var O9e=ye((Ngr,q9e)=>{"use strict";var Bqt=ck(),Nqt=sx(),Uqt=fk(),Vqt=lx().iterator,Hqt=Array.isArray;q9e.exports=function(e){return Nqt(e)?Hqt(e)||Uqt(e)||Bqt(e)?!0:typeof e[Vqt]=="function":!1}});var N9e=ye((Ugr,B9e)=>{"use strict";var Gqt=O9e();B9e.exports=function(e){if(!Gqt(e))throw new TypeError(e+" is not iterable");return e}});var TY=ye((Vgr,H9e)=>{"use strict";var jqt=ck(),Wqt=fk(),U9e=I9e(),Zqt=F9e(),Xqt=N9e(),V9e=lx().iterator;H9e.exports=function(e){return typeof Xqt(e)[V9e]=="function"?e[V9e]():jqt(e)?new U9e(e):Wqt(e)?new Zqt(e):new U9e(e)}});var j9e=ye((Hgr,G9e)=>{"use strict";var Yqt=ck(),Kqt=uA(),Jqt=fk(),$qt=TY(),Qqt=Array.isArray,AY=Function.prototype.call,eOt=Array.prototype.some;G9e.exports=function(e,t){var r,n=arguments[2],i,a,o,s,l,u,c;if(Qqt(e)||Yqt(e)?r="array":Jqt(e)?r="string":e=$qt(e),Kqt(t),a=function(){o=!0},r==="array"){eOt.call(e,function(f){return AY.call(t,n,f,a),o});return}if(r==="string"){for(l=e.length,s=0;s=55296&&c<=56319&&(u+=e[++s])),AY.call(t,n,u,a),!o);++s);return}for(i=e.next();!i.done;){if(AY.call(t,n,i.value,a),o)return;i=e.next()}}});var Z9e=ye((Ggr,W9e)=>{"use strict";W9e.exports=function(){return typeof WeakMap!="function"?!1:Object.prototype.toString.call(new WeakMap)==="[object WeakMap]"}()});var K9e=ye((jgr,Y9e)=>{"use strict";var tOt=sx(),fF=iF(),cF=TFe(),rOt=i1(),iOt=SFe(),a1=n1(),nOt=TY(),aOt=j9e(),oOt=lx().toStringTag,X9e=Z9e(),sOt=Array.isArray,MY=Object.defineProperty,SY=Object.prototype.hasOwnProperty,lOt=Object.getPrototypeOf,ux;Y9e.exports=ux=function(){var e=arguments[0],t;if(!(this instanceof ux))throw new TypeError("Constructor requires 'new'");return t=X9e&&fF&&WeakMap!==ux?fF(new WeakMap,lOt(this)):this,tOt(e)&&(sOt(e)||(e=nOt(e))),MY(t,"__weakMapData__",a1("c","$weakMap$"+iOt())),e&&aOt(e,function(r){rOt(r),t.set(r[0],r[1])}),t};X9e&&(fF&&fF(ux,WeakMap),ux.prototype=Object.create(WeakMap.prototype,{constructor:a1(ux)}));Object.defineProperties(ux.prototype,{delete:a1(function(e){return SY.call(cF(e),this.__weakMapData__)?(delete e[this.__weakMapData__],!0):!1}),get:a1(function(e){if(SY.call(cF(e),this.__weakMapData__))return e[this.__weakMapData__]}),has:a1(function(e){return SY.call(cF(e),this.__weakMapData__)}),set:a1(function(e,t){return MY(cF(e),this.__weakMapData__,a1("c",t)),this}),toString:a1(function(){return"[object WeakMap]"})});MY(ux.prototype,oOt,a1("c","WeakMap"))});var EY=ye((Wgr,J9e)=>{"use strict";J9e.exports=cFe()()?WeakMap:K9e()});var Q9e=ye((Zgr,$9e)=>{"use strict";$9e.exports=function(e,t,r){if(typeof Array.prototype.findIndex=="function")return e.findIndex(t,r);if(typeof t!="function")throw new TypeError("predicate must be a function");var n=Object(e),i=n.length;if(i===0)return-1;for(var a=0;a{"use strict";var hF=J_(),uOt=j2(),CY=bh(),cOt=Zm(),fOt=W2(),eqe=oFe(),hOt=lFe(),{float32:dOt,fract32:kY}=Xz(),vOt=EY(),tqe=eA(),pOt=Q9e(),gOt=` +`]),eFe&&(v.frag=v.frag.replace("smoothstep","smoothStep"),d.frag=d.frag.replace("smoothstep","smoothStep")),this.drawCircle=e(v)}rv.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4};rv.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this};rv.prototype.draw=function(){for(var e=this,t=arguments.length,r=new Array(t),n=0;nre)?N.tree=R7t(G,{bounds:ge}):re&&re.length&&(N.tree=re),N.tree){var ie={primitive:"points",usage:"static",data:N.tree,type:"uint32"};N.elements?N.elements(ie):N.elements=o.elements(ie)}var Te=Kz.float32(G);ae({data:Te,usage:"dynamic"});var Ee=Kz.fract32(G,Te);return _e({data:Ee,usage:"dynamic"}),Me({data:new Uint8Array(ke),type:"uint8",usage:"stream"}),G}},{marker:function(G,N,W){var re=N.activation;if(re.forEach(function(Ee){return Ee&&Ee.destroy&&Ee.destroy()}),re.length=0,!G||typeof G[0]=="number"){var ae=e.addMarker(G);re[ae]=!0}else{for(var _e=[],Me=0,ke=Math.min(G.length,N.count);Me=0)return i;var a;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)a=e;else{a=new Uint8Array(e.length);for(var o=0,s=e.length;on*4&&(this.tooManyColors=!0),this.updatePalette(r),i.length===1?i[0]:i};rv.prototype.updatePalette=function(e){if(!this.tooManyColors){var t=this.maxColors,r=this.paletteTexture,n=Math.ceil(e.length*.25/t);if(n>1){e=e.slice();for(var i=e.length*.25%t;i{"use strict";iY.exports=Qz;iY.exports.default=Qz;function Qz(e,t,r){r=r||2;var n=t&&t.length,i=n?t[0]*r:e.length,a=nFe(e,0,i,r,!0),o=[];if(!a||a.next===a.prev)return o;var s,l,u,c,f,h,d;if(n&&(a=j7t(e,t,a,r)),e.length>80*r){s=u=e[0],l=c=e[1];for(var v=r;vu&&(u=f),h>c&&(c=h);d=Math.max(u-s,c-l),d=d!==0?32767/d:0}return sk(a,o,r,s,l,d,0),o}function nFe(e,t,r,n,i){var a,o;if(i===rY(e,t,r,n)>0)for(a=t;a=t;a-=n)o=iFe(a,e[a],e[a+1],o);return o&&eF(o,o.next)&&(uk(o),o=o.next),o}function J2(e,t){if(!e)return e;t||(t=e);var r=e,n;do if(n=!1,!r.steiner&&(eF(r,r.next)||eh(r.prev,r,r.next)===0)){if(uk(r),r=t=r.prev,r===r.next)break;n=!0}else r=r.next;while(n||r!==t);return t}function sk(e,t,r,n,i,a,o){if(e){!o&&a&&K7t(e,n,i,a);for(var s=e,l,u;e.prev!==e.next;){if(l=e.prev,u=e.next,a?V7t(e,n,i,a):U7t(e)){t.push(l.i/r|0),t.push(e.i/r|0),t.push(u.i/r|0),uk(e),e=u.next,s=u.next;continue}if(e=u,e===s){o?o===1?(e=H7t(J2(e),t,r),sk(e,t,r,n,i,a,2)):o===2&&G7t(e,t,r,n,i,a):sk(J2(e),t,r,n,i,a,1);break}}}}function U7t(e){var t=e.prev,r=e,n=e.next;if(eh(t,r,n)>=0)return!1;for(var i=t.x,a=r.x,o=n.x,s=t.y,l=r.y,u=n.y,c=ia?i>o?i:o:a>o?a:o,d=s>l?s>u?s:u:l>u?l:u,v=n.next;v!==t;){if(v.x>=c&&v.x<=h&&v.y>=f&&v.y<=d&&oA(i,s,a,l,o,u,v.x,v.y)&&eh(v.prev,v,v.next)>=0)return!1;v=v.next}return!0}function V7t(e,t,r,n){var i=e.prev,a=e,o=e.next;if(eh(i,a,o)>=0)return!1;for(var s=i.x,l=a.x,u=o.x,c=i.y,f=a.y,h=o.y,d=sl?s>u?s:u:l>u?l:u,b=c>f?c>h?c:h:f>h?f:h,p=eY(d,v,t,r,n),E=eY(x,b,t,r,n),k=e.prevZ,A=e.nextZ;k&&k.z>=p&&A&&A.z<=E;){if(k.x>=d&&k.x<=x&&k.y>=v&&k.y<=b&&k!==i&&k!==o&&oA(s,c,l,f,u,h,k.x,k.y)&&eh(k.prev,k,k.next)>=0||(k=k.prevZ,A.x>=d&&A.x<=x&&A.y>=v&&A.y<=b&&A!==i&&A!==o&&oA(s,c,l,f,u,h,A.x,A.y)&&eh(A.prev,A,A.next)>=0))return!1;A=A.nextZ}for(;k&&k.z>=p;){if(k.x>=d&&k.x<=x&&k.y>=v&&k.y<=b&&k!==i&&k!==o&&oA(s,c,l,f,u,h,k.x,k.y)&&eh(k.prev,k,k.next)>=0)return!1;k=k.prevZ}for(;A&&A.z<=E;){if(A.x>=d&&A.x<=x&&A.y>=v&&A.y<=b&&A!==i&&A!==o&&oA(s,c,l,f,u,h,A.x,A.y)&&eh(A.prev,A,A.next)>=0)return!1;A=A.nextZ}return!0}function H7t(e,t,r){var n=e;do{var i=n.prev,a=n.next.next;!eF(i,a)&&aFe(i,n,n.next,a)&&lk(i,a)&&lk(a,i)&&(t.push(i.i/r|0),t.push(n.i/r|0),t.push(a.i/r|0),uk(n),uk(n.next),n=e=a),n=n.next}while(n!==e);return J2(n)}function G7t(e,t,r,n,i,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Q7t(o,s)){var l=oFe(o,s);o=J2(o,o.next),l=J2(l,l.next),sk(o,t,r,n,i,a,0),sk(l,t,r,n,i,a,0);return}s=s.next}o=o.next}while(o!==e)}function j7t(e,t,r,n){var i=[],a,o,s,l,u;for(a=0,o=t.length;a=r.next.y&&r.next.y!==r.y){var s=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(s<=n&&s>a&&(a=s,o=r.x=r.x&&r.x>=u&&n!==r.x&&oA(io.x||r.x===o.x&&Y7t(o,r)))&&(o=r,f=h)),r=r.next;while(r!==l);return o}function Y7t(e,t){return eh(e.prev,e,t.prev)<0&&eh(t.next,e,e.next)<0}function K7t(e,t,r,n){var i=e;do i.z===0&&(i.z=eY(i.x,i.y,t,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,J7t(i)}function J7t(e){var t,r,n,i,a,o,s,l,u=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,n=r,s=0,t=0;t0||l>0&&n;)s!==0&&(l===0||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;r=n}a.nextZ=null,u*=2}while(o>1);return e}function eY(e,t,r,n,i){return e=(e-r)*i|0,t=(t-n)*i|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function $7t(e){var t=e,r=e;do(t.x=(e-o)*(a-s)&&(e-o)*(n-s)>=(r-o)*(t-s)&&(r-o)*(a-s)>=(i-o)*(n-s)}function Q7t(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!e9t(e,t)&&(lk(e,t)&&lk(t,e)&&t9t(e,t)&&(eh(e.prev,e,t.prev)||eh(e,t.prev,t))||eF(e,t)&&eh(e.prev,e,e.next)>0&&eh(t.prev,t,t.next)>0)}function eh(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function eF(e,t){return e.x===t.x&&e.y===t.y}function aFe(e,t,r,n){var i=$z(eh(e,t,r)),a=$z(eh(e,t,n)),o=$z(eh(r,n,e)),s=$z(eh(r,n,t));return!!(i!==a&&o!==s||i===0&&Jz(e,r,t)||a===0&&Jz(e,n,t)||o===0&&Jz(r,e,n)||s===0&&Jz(r,t,n))}function Jz(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function $z(e){return e>0?1:e<0?-1:0}function e9t(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&aFe(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function lk(e,t){return eh(e.prev,e,e.next)<0?eh(e,t,e.next)>=0&&eh(e,e.prev,t)>=0:eh(e,t,e.prev)<0||eh(e,e.next,t)<0}function t9t(e,t){var r=e,n=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;while(r!==e);return n}function oFe(e,t){var r=new tY(e.i,e.x,e.y),n=new tY(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function iFe(e,t,r,n){var i=new tY(e,t,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function uk(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function tY(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}Qz.deviation=function(e,t,r,n){var i=t&&t.length,a=i?t[0]*r:e.length,o=Math.abs(rY(e,0,a,r));if(i)for(var s=0,l=t.length;s0&&(n+=e[i-1].length,r.holes.push(n))}return r}});var uFe=ye((z0r,lFe)=>{"use strict";var r9t=j2();lFe.exports=i9t;function i9t(e,t,r){if(!e||e.length==null)throw Error("Argument should be an array");t==null&&(t=1),r==null&&(r=r9t(e,t));for(var n=0;n{"use strict";cFe.exports=function(){var e,t;if(typeof WeakMap!="function")return!1;try{e=new WeakMap([[t={},"one"],[{},"two"],[{},"three"]])}catch(r){return!1}return!(String(e)!=="[object WeakMap]"||typeof e.set!="function"||e.set({},1)!==e||typeof e.delete!="function"||typeof e.has!="function"||e.get(t)!=="one")}});var dFe=ye((q0r,hFe)=>{"use strict";hFe.exports=function(){}});var lx=ye((O0r,vFe)=>{"use strict";var n9t=dFe()();vFe.exports=function(e){return e!==n9t&&e!==null}});var nY=ye((B0r,gFe)=>{"use strict";var a9t=Object.create,o9t=Object.getPrototypeOf,pFe={};gFe.exports=function(){var e=Object.setPrototypeOf,t=arguments[0]||a9t;return typeof e!="function"?!1:o9t(e(t(null),pFe))===pFe}});var aY=ye((N0r,mFe)=>{"use strict";var s9t=lx(),l9t={function:!0,object:!0};mFe.exports=function(e){return s9t(e)&&l9t[typeof e]||!1}});var i1=ye((U0r,yFe)=>{"use strict";var u9t=lx();yFe.exports=function(e){if(!u9t(e))throw new TypeError("Cannot use null or undefined");return e}});var xFe=ye((V0r,_Fe)=>{"use strict";var oY=Object.create,tF;nY()()||(tF=sY());_Fe.exports=function(){var e,t,r;return!tF||tF.level!==1?oY:(e={},t={},r={configurable:!1,enumerable:!1,writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(n){if(n==="__proto__"){t[n]={configurable:!0,enumerable:!1,writable:!0,value:void 0};return}t[n]=r}),Object.defineProperties(e,t),Object.defineProperty(tF,"nullPolyfill",{configurable:!1,enumerable:!1,writable:!1,value:e}),function(n,i){return oY(n===null?e:n,i)})}()});var sY=ye((H0r,bFe)=>{"use strict";var c9t=aY(),f9t=i1(),h9t=Object.prototype.isPrototypeOf,d9t=Object.defineProperty,v9t={configurable:!0,enumerable:!1,writable:!0,value:void 0},rF;rF=function(e,t){if(f9t(e),t===null||c9t(t))return e;throw new TypeError("Prototype must be null or an object")};bFe.exports=function(e){var t,r;return e?(e.level===2?e.set?(r=e.set,t=function(n,i){return r.call(rF(n,i),i),n}):t=function(n,i){return rF(n,i).__proto__=i,n}:t=function n(i,a){var o;return rF(i,a),o=h9t.call(n.nullPolyfill,i),o&&delete n.nullPolyfill.__proto__,a===null&&(a=n.nullPolyfill),i.__proto__=a,o&&d9t(n.nullPolyfill,"__proto__",v9t),i},Object.defineProperty(t,"level",{configurable:!1,enumerable:!1,writable:!1,value:e.level})):null}(function(){var e=Object.create(null),t={},r,n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");if(n){try{r=n.set,r.call(e,t)}catch(i){}if(Object.getPrototypeOf(e)===t)return{set:r,level:2}}return e.__proto__=t,Object.getPrototypeOf(e)===t?{level:2}:(e={},e.__proto__=t,Object.getPrototypeOf(e)===t?{level:1}:!1)}());xFe()});var iF=ye((G0r,wFe)=>{"use strict";wFe.exports=nY()()?Object.setPrototypeOf:sY()});var AFe=ye((j0r,TFe)=>{"use strict";var p9t=aY();TFe.exports=function(e){if(!p9t(e))throw new TypeError(e+" is not an Object");return e}});var MFe=ye((W0r,SFe)=>{"use strict";var g9t=Object.create(null),m9t=Math.random;SFe.exports=function(){var e;do e=m9t().toString(36).slice(2);while(g9t[e]);return e}});var $2=ye((Z0r,EFe)=>{"use strict";var y9t=void 0;EFe.exports=function(e){return e!==y9t&&e!==null}});var nF=ye((X0r,kFe)=>{"use strict";var _9t=$2(),x9t={object:!0,function:!0,undefined:!0};kFe.exports=function(e){return _9t(e)?hasOwnProperty.call(x9t,typeof e):!1}});var LFe=ye((Y0r,CFe)=>{"use strict";var b9t=nF();CFe.exports=function(e){if(!b9t(e))return!1;try{return e.constructor?e.constructor.prototype===e:!1}catch(t){return!1}}});var IFe=ye((K0r,PFe)=>{"use strict";var w9t=LFe();PFe.exports=function(e){if(typeof e!="function"||!hasOwnProperty.call(e,"length"))return!1;try{if(typeof e.length!="number"||typeof e.call!="function"||typeof e.apply!="function")return!1}catch(t){return!1}return!w9t(e)}});var lY=ye((J0r,RFe)=>{"use strict";var T9t=IFe(),A9t=/^\s*class[\s{/}]/,S9t=Function.prototype.toString;RFe.exports=function(e){return!(!T9t(e)||A9t.test(S9t.call(e)))}});var zFe=ye(($0r,DFe)=>{"use strict";DFe.exports=function(){var e=Object.assign,t;return typeof e!="function"?!1:(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}});var qFe=ye((Q0r,FFe)=>{"use strict";FFe.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}});var BFe=ye((egr,OFe)=>{"use strict";var M9t=lx(),E9t=Object.keys;OFe.exports=function(e){return E9t(M9t(e)?Object(e):e)}});var UFe=ye((tgr,NFe)=>{"use strict";NFe.exports=qFe()()?Object.keys:BFe()});var HFe=ye((rgr,VFe)=>{"use strict";var k9t=UFe(),C9t=i1(),L9t=Math.max;VFe.exports=function(e,t){var r,n,i=L9t(arguments.length,2),a;for(e=Object(C9t(e)),a=function(o){try{e[o]=t[o]}catch(s){r||(r=s)}},n=1;n{"use strict";GFe.exports=zFe()()?Object.assign:HFe()});var uY=ye((ngr,jFe)=>{"use strict";var P9t=lx(),I9t=Array.prototype.forEach,R9t=Object.create,D9t=function(e,t){var r;for(r in e)t[r]=e[r]};jFe.exports=function(e){var t=R9t(null);return I9t.call(arguments,function(r){P9t(r)&&D9t(Object(r),t)}),t}});var ZFe=ye((agr,WFe)=>{"use strict";var cY="razdwatrzy";WFe.exports=function(){return typeof cY.contains!="function"?!1:cY.contains("dwa")===!0&&cY.contains("foo")===!1}});var YFe=ye((ogr,XFe)=>{"use strict";var z9t=String.prototype.indexOf;XFe.exports=function(e){return z9t.call(this,e,arguments[1])>-1}});var fY=ye((sgr,KFe)=>{"use strict";KFe.exports=ZFe()()?String.prototype.contains:YFe()});var n1=ye((lgr,e7e)=>{"use strict";var oF=$2(),JFe=lY(),$Fe=aF(),QFe=uY(),ck=fY(),F9t=e7e.exports=function(e,t){var r,n,i,a,o;return arguments.length<2||typeof e!="string"?(a=t,t=e,e=null):a=arguments[2],oF(e)?(r=ck.call(e,"c"),n=ck.call(e,"e"),i=ck.call(e,"w")):(r=i=!0,n=!1),o={value:t,configurable:r,enumerable:n,writable:i},a?$Fe(QFe(a),o):o};F9t.gs=function(e,t,r){var n,i,a,o;return typeof e!="string"?(a=r,r=t,t=e,e=null):a=arguments[3],oF(t)?JFe(t)?oF(r)?JFe(r)||(a=r,r=void 0):r=void 0:(a=t,t=r=void 0):t=void 0,oF(e)?(n=ck.call(e,"c"),i=ck.call(e,"e")):(n=!0,i=!1),o={get:t,set:r,configurable:n,enumerable:i},a?$Fe(QFe(a),o):o}});var fk=ye((ugr,r7e)=>{"use strict";var t7e=Object.prototype.toString,q9t=t7e.call(function(){return arguments}());r7e.exports=function(e){return t7e.call(e)===q9t}});var hk=ye((cgr,n7e)=>{"use strict";var i7e=Object.prototype.toString,O9t=i7e.call("");n7e.exports=function(e){return typeof e=="string"||e&&typeof e=="object"&&(e instanceof String||i7e.call(e)===O9t)||!1}});var o7e=ye((fgr,a7e)=>{"use strict";a7e.exports=function(){return typeof globalThis!="object"||!globalThis?!1:globalThis.Array===Array}});var u7e=ye((hgr,l7e)=>{var s7e=function(){if(typeof self=="object"&&self)return self;if(typeof window=="object"&&window)return window;throw new Error("Unable to resolve global `this`")};l7e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return s7e()}try{return __global__||s7e()}finally{delete Object.prototype.__global__}}()});var dk=ye((dgr,c7e)=>{"use strict";c7e.exports=o7e()()?globalThis:u7e()});var h7e=ye((vgr,f7e)=>{"use strict";var B9t=dk(),hY={object:!0,symbol:!0};f7e.exports=function(){var e=B9t.Symbol,t;if(typeof e!="function")return!1;t=e("test symbol");try{String(t)}catch(r){return!1}return!(!hY[typeof e.iterator]||!hY[typeof e.toPrimitive]||!hY[typeof e.toStringTag])}});var v7e=ye((pgr,d7e)=>{"use strict";d7e.exports=function(e){return e?typeof e=="symbol"?!0:!e.constructor||e.constructor.name!=="Symbol"?!1:e[e.constructor.toStringTag]==="Symbol":!1}});var dY=ye((ggr,p7e)=>{"use strict";var N9t=v7e();p7e.exports=function(e){if(!N9t(e))throw new TypeError(e+" is not a symbol");return e}});var x7e=ye((mgr,_7e)=>{"use strict";var g7e=n1(),U9t=Object.create,m7e=Object.defineProperty,V9t=Object.prototype,y7e=U9t(null);_7e.exports=function(e){for(var t=0,r,n;y7e[e+(t||"")];)++t;return e+=t||"",y7e[e]=!0,r="@@"+e,m7e(V9t,r,g7e.gs(null,function(i){n||(n=!0,m7e(this,r,g7e(i)),n=!1)})),r}});var w7e=ye((ygr,b7e)=>{"use strict";var Qg=n1(),wh=dk().Symbol;b7e.exports=function(e){return Object.defineProperties(e,{hasInstance:Qg("",wh&&wh.hasInstance||e("hasInstance")),isConcatSpreadable:Qg("",wh&&wh.isConcatSpreadable||e("isConcatSpreadable")),iterator:Qg("",wh&&wh.iterator||e("iterator")),match:Qg("",wh&&wh.match||e("match")),replace:Qg("",wh&&wh.replace||e("replace")),search:Qg("",wh&&wh.search||e("search")),species:Qg("",wh&&wh.species||e("species")),split:Qg("",wh&&wh.split||e("split")),toPrimitive:Qg("",wh&&wh.toPrimitive||e("toPrimitive")),toStringTag:Qg("",wh&&wh.toStringTag||e("toStringTag")),unscopables:Qg("",wh&&wh.unscopables||e("unscopables"))})}});var S7e=ye((_gr,A7e)=>{"use strict";var T7e=n1(),H9t=dY(),vk=Object.create(null);A7e.exports=function(e){return Object.defineProperties(e,{for:T7e(function(t){return vk[t]?vk[t]:vk[t]=e(String(t))}),keyFor:T7e(function(t){var r;H9t(t);for(r in vk)if(vk[r]===t)return r})})}});var k7e=ye((xgr,E7e)=>{"use strict";var Xm=n1(),vY=dY(),sF=dk().Symbol,G9t=x7e(),j9t=w7e(),W9t=S7e(),Z9t=Object.create,pY=Object.defineProperties,lF=Object.defineProperty,Wv,sA,M7e;if(typeof sF=="function")try{String(sF()),M7e=!0}catch(e){}else sF=null;sA=function(t){if(this instanceof sA)throw new TypeError("Symbol is not a constructor");return Wv(t)};E7e.exports=Wv=function e(t){var r;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return M7e?sF(t):(r=Z9t(sA.prototype),t=t===void 0?"":String(t),pY(r,{__description__:Xm("",t),__name__:Xm("",G9t(t))}))};j9t(Wv);W9t(Wv);pY(sA.prototype,{constructor:Xm(Wv),toString:Xm("",function(){return this.__name__})});pY(Wv.prototype,{toString:Xm(function(){return"Symbol ("+vY(this).__description__+")"}),valueOf:Xm(function(){return vY(this)})});lF(Wv.prototype,Wv.toPrimitive,Xm("",function(){var e=vY(this);return typeof e=="symbol"?e:e.toString()}));lF(Wv.prototype,Wv.toStringTag,Xm("c","Symbol"));lF(sA.prototype,Wv.toStringTag,Xm("c",Wv.prototype[Wv.toStringTag]));lF(sA.prototype,Wv.toPrimitive,Xm("c",Wv.prototype[Wv.toPrimitive]))});var ux=ye((bgr,C7e)=>{"use strict";C7e.exports=h7e()()?dk().Symbol:k7e()});var P7e=ye((wgr,L7e)=>{"use strict";var X9t=i1();L7e.exports=function(){return X9t(this).length=0,this}});var lA=ye((Tgr,I7e)=>{"use strict";I7e.exports=function(e){if(typeof e!="function")throw new TypeError(e+" is not a function");return e}});var D7e=ye((Agr,R7e)=>{"use strict";var Y9t=$2(),K9t=nF(),J9t=Object.prototype.toString;R7e.exports=function(e){if(!Y9t(e))return null;if(K9t(e)){var t=e.toString;if(typeof t!="function"||t===J9t)return null}try{return""+e}catch(r){return null}}});var F7e=ye((Sgr,z7e)=>{"use strict";z7e.exports=function(e){try{return e.toString()}catch(t){try{return String(e)}catch(r){return null}}}});var O7e=ye((Mgr,q7e)=>{"use strict";var $9t=F7e(),Q9t=/[\n\r\u2028\u2029]/g;q7e.exports=function(e){var t=$9t(e);return t===null?"":(t.length>100&&(t=t.slice(0,99)+"\u2026"),t=t.replace(Q9t,function(r){switch(r){case` +`:return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}}),t)}});var gY=ye((Egr,U7e)=>{"use strict";var B7e=$2(),eqt=nF(),tqt=D7e(),rqt=O7e(),N7e=function(e,t){return e.replace("%v",rqt(t))};U7e.exports=function(e,t,r){if(!eqt(r))throw new TypeError(N7e(t,e));if(!B7e(e)){if("default"in r)return r.default;if(r.isOptional)return null}var n=tqt(r.errorMessage);throw B7e(n)||(n=t),new TypeError(N7e(n,e))}});var H7e=ye((kgr,V7e)=>{"use strict";var iqt=gY(),nqt=$2();V7e.exports=function(e){return nqt(e)?e:iqt(e,"Cannot use %v",arguments[1])}});var j7e=ye((Cgr,G7e)=>{"use strict";var aqt=gY(),oqt=lY();G7e.exports=function(e){return oqt(e)?e:aqt(e,"%v is not a plain function",arguments[1])}});var Z7e=ye((Lgr,W7e)=>{"use strict";W7e.exports=function(){var e=Array.from,t,r;return typeof e!="function"?!1:(t=["raz","dwa"],r=e(t),!!(r&&r!==t&&r[1]==="dwa"))}});var Y7e=ye((Pgr,X7e)=>{"use strict";var sqt=Object.prototype.toString,lqt=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);X7e.exports=function(e){return typeof e=="function"&&lqt(sqt.call(e))}});var J7e=ye((Igr,K7e)=>{"use strict";K7e.exports=function(){var e=Math.sign;return typeof e!="function"?!1:e(10)===1&&e(-20)===-1}});var Q7e=ye((Rgr,$7e)=>{"use strict";$7e.exports=function(e){return e=Number(e),isNaN(e)||e===0?e:e>0?1:-1}});var t9e=ye((Dgr,e9e)=>{"use strict";e9e.exports=J7e()()?Math.sign:Q7e()});var i9e=ye((zgr,r9e)=>{"use strict";var uqt=t9e(),cqt=Math.abs,fqt=Math.floor;r9e.exports=function(e){return isNaN(e)?0:(e=Number(e),e===0||!isFinite(e)?e:uqt(e)*fqt(cqt(e)))}});var a9e=ye((Fgr,n9e)=>{"use strict";var hqt=i9e(),dqt=Math.max;n9e.exports=function(e){return dqt(0,hqt(e))}});var u9e=ye((qgr,l9e)=>{"use strict";var vqt=ux().iterator,pqt=fk(),gqt=Y7e(),mqt=a9e(),o9e=lA(),yqt=i1(),_qt=lx(),xqt=hk(),s9e=Array.isArray,mY=Function.prototype.call,Q2={configurable:!0,enumerable:!0,writable:!0,value:null},yY=Object.defineProperty;l9e.exports=function(e){var t=arguments[1],r=arguments[2],n,i,a,o,s,l,u,c,f,h;if(e=Object(yqt(e)),_qt(t)&&o9e(t),!this||this===Array||!gqt(this)){if(!t){if(pqt(e))return s=e.length,s!==1?Array.apply(null,e):(o=new Array(1),o[0]=e[0],o);if(s9e(e)){for(o=new Array(s=e.length),i=0;i=55296&&l<=56319&&(h+=e[++i])),h=t?mY.call(t,r,h,a):h,n?(Q2.value=h,yY(o,a,Q2)):o[a]=h,++a;s=a}}if(s===void 0)for(s=mqt(e.length),n&&(o=new n(s)),i=0;i{"use strict";c9e.exports=Z7e()()?Array.from:u9e()});var d9e=ye((Bgr,h9e)=>{"use strict";var bqt=f9e(),wqt=aF(),Tqt=i1();h9e.exports=function(e){var t=Object(Tqt(e)),r=arguments[1],n=Object(arguments[2]);if(t!==e&&!r)return t;var i={};return r?bqt(r,function(a){(n.ensure||a in e)&&(i[a]=e[a])}):wqt(i,e),i}});var g9e=ye((Ngr,p9e)=>{"use strict";var Aqt=lA(),Sqt=i1(),Mqt=Function.prototype.bind,v9e=Function.prototype.call,Eqt=Object.keys,kqt=Object.prototype.propertyIsEnumerable;p9e.exports=function(e,t){return function(r,n){var i,a=arguments[2],o=arguments[3];return r=Object(Sqt(r)),Aqt(n),i=Eqt(r),o&&i.sort(typeof o=="function"?Mqt.call(o,r):void 0),typeof e!="function"&&(e=i[e]),v9e.call(e,i,function(s,l){return kqt.call(r,s)?v9e.call(n,a,r[s],s,r,l):t})}}});var y9e=ye((Ugr,m9e)=>{"use strict";m9e.exports=g9e()("forEach")});var x9e=ye((Vgr,_9e)=>{"use strict";var Cqt=lA(),Lqt=y9e(),Pqt=Function.prototype.call;_9e.exports=function(e,t){var r={},n=arguments[2];return Cqt(t),Lqt(e,function(i,a,o,s){r[a]=Pqt.call(t,n,i,a,o,s)}),r}});var A9e=ye((Hgr,T9e)=>{"use strict";var Iqt=$2(),Rqt=H7e(),b9e=j7e(),Dqt=d9e(),zqt=uY(),Fqt=x9e(),qqt=Function.prototype.bind,Oqt=Object.defineProperty,Bqt=Object.prototype.hasOwnProperty,w9e;w9e=function(e,t,r){var n=Rqt(t)&&b9e(t.value),i;return i=Dqt(t),delete i.writable,delete i.value,i.get=function(){return!r.overwriteDefinition&&Bqt.call(this,e)?n:(t.value=qqt.call(n,r.resolveContext?r.resolveContext(this):this),Oqt(this,e,t),this[e])},i};T9e.exports=function(e){var t=zqt(arguments[1]);return Iqt(t.resolveContext)&&b9e(t.resolveContext),Fqt(e,function(r,n){return w9e(n,r,t)})}});var _Y=ye((Ggr,k9e)=>{"use strict";var Nqt=P7e(),Uqt=aF(),Vqt=lA(),Hqt=i1(),Op=n1(),Gqt=A9e(),S9e=ux(),M9e=Object.defineProperty,E9e=Object.defineProperties,pk;k9e.exports=pk=function(e,t){if(!(this instanceof pk))throw new TypeError("Constructor requires 'new'");E9e(this,{__list__:Op("w",Hqt(e)),__context__:Op("w",t),__nextIndex__:Op("w",0)}),t&&(Vqt(t.on),t.on("_add",this._onAdd),t.on("_delete",this._onDelete),t.on("_clear",this._onClear))};delete pk.prototype.constructor;E9e(pk.prototype,Uqt({_next:Op(function(){var e;if(this.__list__){if(this.__redo__&&(e=this.__redo__.shift(),e!==void 0))return e;if(this.__nextIndex__=this.__nextIndex__)){if(++this.__nextIndex__,!this.__redo__){M9e(this,"__redo__",Op("c",[e]));return}this.__redo__.forEach(function(t,r){t>=e&&(this.__redo__[r]=++t)},this),this.__redo__.push(e)}}),_onDelete:Op(function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(t=this.__redo__.indexOf(e),t!==-1&&this.__redo__.splice(t,1),this.__redo__.forEach(function(r,n){r>e&&(this.__redo__[n]=--r)},this)))}),_onClear:Op(function(){this.__redo__&&Nqt.call(this.__redo__),this.__nextIndex__=0})})));M9e(pk.prototype,S9e.iterator,Op(function(){return this}))});var R9e=ye((jgr,I9e)=>{"use strict";var C9e=iF(),L9e=fY(),xY=n1(),jqt=ux(),bY=_Y(),P9e=Object.defineProperty,uA;uA=I9e.exports=function(e,t){if(!(this instanceof uA))throw new TypeError("Constructor requires 'new'");bY.call(this,e),t?L9e.call(t,"key+value")?t="key+value":L9e.call(t,"key")?t="key":t="value":t="value",P9e(this,"__kind__",xY("",t))};C9e&&C9e(uA,bY);delete uA.prototype.constructor;uA.prototype=Object.create(bY.prototype,{_resolve:xY(function(e){return this.__kind__==="value"?this.__list__[e]:this.__kind__==="key+value"?[e,this.__list__[e]]:e})});P9e(uA.prototype,jqt.toStringTag,xY("c","Array Iterator"))});var q9e=ye((Wgr,F9e)=>{"use strict";var D9e=iF(),uF=n1(),Wqt=ux(),wY=_Y(),z9e=Object.defineProperty,cA;cA=F9e.exports=function(e){if(!(this instanceof cA))throw new TypeError("Constructor requires 'new'");e=String(e),wY.call(this,e),z9e(this,"__length__",uF("",e.length))};D9e&&D9e(cA,wY);delete cA.prototype.constructor;cA.prototype=Object.create(wY.prototype,{_next:uF(function(){if(this.__list__){if(this.__nextIndex__=55296&&r<=56319?t+this.__list__[this.__nextIndex__++]:t)})});z9e(cA.prototype,Wqt.toStringTag,uF("c","String Iterator"))});var B9e=ye((Zgr,O9e)=>{"use strict";var Zqt=fk(),Xqt=lx(),Yqt=hk(),Kqt=ux().iterator,Jqt=Array.isArray;O9e.exports=function(e){return Xqt(e)?Jqt(e)||Yqt(e)||Zqt(e)?!0:typeof e[Kqt]=="function":!1}});var U9e=ye((Xgr,N9e)=>{"use strict";var $qt=B9e();N9e.exports=function(e){if(!$qt(e))throw new TypeError(e+" is not iterable");return e}});var TY=ye((Ygr,G9e)=>{"use strict";var Qqt=fk(),eOt=hk(),V9e=R9e(),tOt=q9e(),rOt=U9e(),H9e=ux().iterator;G9e.exports=function(e){return typeof rOt(e)[H9e]=="function"?e[H9e]():Qqt(e)?new V9e(e):eOt(e)?new tOt(e):new V9e(e)}});var W9e=ye((Kgr,j9e)=>{"use strict";var iOt=fk(),nOt=lA(),aOt=hk(),oOt=TY(),sOt=Array.isArray,AY=Function.prototype.call,lOt=Array.prototype.some;j9e.exports=function(e,t){var r,n=arguments[2],i,a,o,s,l,u,c;if(sOt(e)||iOt(e)?r="array":aOt(e)?r="string":e=oOt(e),nOt(t),a=function(){o=!0},r==="array"){lOt.call(e,function(f){return AY.call(t,n,f,a),o});return}if(r==="string"){for(l=e.length,s=0;s=55296&&c<=56319&&(u+=e[++s])),AY.call(t,n,u,a),!o);++s);return}for(i=e.next();!i.done;){if(AY.call(t,n,i.value,a),o)return;i=e.next()}}});var X9e=ye((Jgr,Z9e)=>{"use strict";Z9e.exports=function(){return typeof WeakMap!="function"?!1:Object.prototype.toString.call(new WeakMap)==="[object WeakMap]"}()});var J9e=ye(($gr,K9e)=>{"use strict";var uOt=lx(),fF=iF(),cF=AFe(),cOt=i1(),fOt=MFe(),a1=n1(),hOt=TY(),dOt=W9e(),vOt=ux().toStringTag,Y9e=X9e(),pOt=Array.isArray,MY=Object.defineProperty,SY=Object.prototype.hasOwnProperty,gOt=Object.getPrototypeOf,cx;K9e.exports=cx=function(){var e=arguments[0],t;if(!(this instanceof cx))throw new TypeError("Constructor requires 'new'");return t=Y9e&&fF&&WeakMap!==cx?fF(new WeakMap,gOt(this)):this,uOt(e)&&(pOt(e)||(e=hOt(e))),MY(t,"__weakMapData__",a1("c","$weakMap$"+fOt())),e&&dOt(e,function(r){cOt(r),t.set(r[0],r[1])}),t};Y9e&&(fF&&fF(cx,WeakMap),cx.prototype=Object.create(WeakMap.prototype,{constructor:a1(cx)}));Object.defineProperties(cx.prototype,{delete:a1(function(e){return SY.call(cF(e),this.__weakMapData__)?(delete e[this.__weakMapData__],!0):!1}),get:a1(function(e){if(SY.call(cF(e),this.__weakMapData__))return e[this.__weakMapData__]}),has:a1(function(e){return SY.call(cF(e),this.__weakMapData__)}),set:a1(function(e,t){return MY(cF(e),this.__weakMapData__,a1("c",t)),this}),toString:a1(function(){return"[object WeakMap]"})});MY(cx.prototype,vOt,a1("c","WeakMap"))});var EY=ye((Qgr,$9e)=>{"use strict";$9e.exports=fFe()()?WeakMap:J9e()});var eqe=ye((emr,Q9e)=>{"use strict";Q9e.exports=function(e,t,r){if(typeof Array.prototype.findIndex=="function")return e.findIndex(t,r);if(typeof t!="function")throw new TypeError("predicate must be a function");var n=Object(e),i=n.length;if(i===0)return-1;for(var a=0;a{"use strict";var hF=$_(),mOt=j2(),CY=bh(),yOt=Zm(),_Ot=W2(),tqe=sFe(),xOt=uFe(),{float32:bOt,fract32:kY}=Xz(),wOt=EY(),rqe=Q5(),TOt=eqe(),AOt=` precision highp float; attribute vec2 aCoord, bCoord, aCoordFract, bCoordFract; @@ -2247,7 +2247,7 @@ void main() { fragColor = color / 255.; } -`,mOt=` +`,SOt=` precision highp float; uniform float dashLength, pixelRatio, thickness, opacity, id; @@ -2265,7 +2265,7 @@ void main() { gl_FragColor = fragColor; gl_FragColor.a *= alpha * opacity * dash; } -`,yOt=` +`,MOt=` precision highp float; attribute vec2 position, positionFract; @@ -2293,14 +2293,14 @@ void main() { fragColor = color / 255.; fragColor.a *= opacity; } -`,_Ot=` +`,EOt=` precision highp float; varying vec4 fragColor; void main() { gl_FragColor = fragColor; } -`,xOt=` +`,kOt=` precision highp float; attribute vec2 aCoord, bCoord, nextCoord, prevCoord; @@ -2504,7 +2504,7 @@ void main() { } } } -`,bOt=` +`,COt=` precision highp float; uniform float dashLength, pixelRatio, thickness, opacity, id, miterMode; @@ -2584,7 +2584,7 @@ void main() { gl_FragColor = fragColor; gl_FragColor.a *= alpha * opacity * dash; } -`;rqe.exports=uc;function uc(e,t){if(!(this instanceof uc))return new uc(e,t);if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");this.gl=e._gl,this.regl=e,this.passes=[],this.shaders=uc.shaders.has(e)?uc.shaders.get(e):uc.shaders.set(e,uc.createShaders(e)).get(e),this.update(t)}uc.dashMult=2;uc.maxPatternLength=256;uc.precisionThreshold=3e6;uc.maxPoints=1e4;uc.maxLines=2048;uc.shaders=new vOt;uc.createShaders=function(e){let t=e.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]}),r={primitive:"triangle strip",instances:e.prop("count"),count:4,offset:0,uniforms:{miterMode:(o,s)=>s.join==="round"?2:1,miterLimit:e.prop("miterLimit"),scale:e.prop("scale"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),thickness:e.prop("thickness"),dashTexture:e.prop("dashTexture"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),dashLength:e.prop("dashLength"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight],depth:e.prop("depth")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:(o,s)=>!s.overlay},stencil:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport")},n=e(CY({vert:gOt,frag:mOt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:16,divisor:1},color:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1}}},r)),i;try{i=e(CY({cull:{enable:!0,face:"back"},vert:xOt,frag:bOt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aColor:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:e.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},r))}catch(o){i=n}return{fill:e({primitive:"triangle",elements:(o,s)=>s.triangles,offset:0,vert:yOt,frag:_Ot,uniforms:{scale:e.prop("scale"),color:e.prop("fill"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight]},attributes:{position:{buffer:e.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8}},blend:r.blend,depth:{enable:!1},scissor:r.scissor,stencil:r.stencil,viewport:r.viewport}),rect:n,miter:i}};uc.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null};uc.prototype.render=function(...e){e.length&&this.update(...e),this.draw()};uc.prototype.draw=function(...e){return(e.length?e:this.passes).forEach((t,r)=>{if(t&&Array.isArray(t))return this.draw(...t);typeof t=="number"&&(t=this.passes[t]),t&&t.count>1&&t.opacity&&(this.regl._refresh(),t.fill&&t.triangles&&t.triangles.length>2&&this.shaders.fill(t),t.thickness&&(t.scale[0]*t.viewport.width>uc.precisionThreshold||t.scale[1]*t.viewport.height>uc.precisionThreshold?this.shaders.rect(t):t.join==="rect"||!t.join&&(t.thickness<=2||t.count>=uc.maxPoints)?this.shaders.rect(t):this.shaders.miter(t)))}),this};uc.prototype.update=function(e){if(!e)return;e.length!=null?typeof e[0]=="number"&&(e=[{positions:e}]):Array.isArray(e)||(e=[e]);let{regl:t,gl:r}=this;if(e.forEach((i,a)=>{let o=this.passes[a];if(i!==void 0){if(i===null){this.passes[a]=null;return}if(typeof i[0]=="number"&&(i={positions:i}),i=cOt(i,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),o||(this.passes[a]=o={id:a,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:t.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:t.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},i=CY({},uc.defaults,i)),i.thickness!=null&&(o.thickness=parseFloat(i.thickness)),i.opacity!=null&&(o.opacity=parseFloat(i.opacity)),i.miterLimit!=null&&(o.miterLimit=parseFloat(i.miterLimit)),i.overlay!=null&&(o.overlay=!!i.overlay,aL-_),E=[],k=0,A=o.hole!=null?o.hole[0]:null;if(A!=null){let L=pOt(g,_=>_>=A);g=g.slice(0,L),g.push(A)}for(let L=0;Lp-A+(g[L]-k)),M=eqe(_,C);M=M.map(p=>p+k+(p+k{e.colorBuffer.destroy(),e.positionBuffer.destroy(),e.dashTexture.destroy()}),this.passes.length=0,this}});var sqe=ye((Ygr,oqe)=>{"use strict";var wOt=j2(),TOt=J_(),AOt=JX(),SOt=Zm(),iqe=bh(),nqe=W2(),{float32:MOt,fract32:PY}=Xz();oqe.exports=EOt;var aqe=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]];function EOt(e,t){if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");let r=e._gl,n,i,a,o,s,l,u={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},c=[];return o=e.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array(0)}),i=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),a=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),s=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),l=e.buffer({usage:"static",type:"float",data:aqe}),v(t),n=e({vert:` +`;iqe.exports=uc;function uc(e,t){if(!(this instanceof uc))return new uc(e,t);if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");this.gl=e._gl,this.regl=e,this.passes=[],this.shaders=uc.shaders.has(e)?uc.shaders.get(e):uc.shaders.set(e,uc.createShaders(e)).get(e),this.update(t)}uc.dashMult=2;uc.maxPatternLength=256;uc.precisionThreshold=3e6;uc.maxPoints=1e4;uc.maxLines=2048;uc.shaders=new wOt;uc.createShaders=function(e){let t=e.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]}),r={primitive:"triangle strip",instances:e.prop("count"),count:4,offset:0,uniforms:{miterMode:(o,s)=>s.join==="round"?2:1,miterLimit:e.prop("miterLimit"),scale:e.prop("scale"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),thickness:e.prop("thickness"),dashTexture:e.prop("dashTexture"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),dashLength:e.prop("dashLength"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight],depth:e.prop("depth")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:(o,s)=>!s.overlay},stencil:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport")},n=e(CY({vert:AOt,frag:SOt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:16,divisor:1},color:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1}}},r)),i;try{i=e(CY({cull:{enable:!0,face:"back"},vert:kOt,frag:COt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aColor:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:e.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},r))}catch(o){i=n}return{fill:e({primitive:"triangle",elements:(o,s)=>s.triangles,offset:0,vert:MOt,frag:EOt,uniforms:{scale:e.prop("scale"),color:e.prop("fill"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight]},attributes:{position:{buffer:e.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8}},blend:r.blend,depth:{enable:!1},scissor:r.scissor,stencil:r.stencil,viewport:r.viewport}),rect:n,miter:i}};uc.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null};uc.prototype.render=function(...e){e.length&&this.update(...e),this.draw()};uc.prototype.draw=function(...e){return(e.length?e:this.passes).forEach((t,r)=>{if(t&&Array.isArray(t))return this.draw(...t);typeof t=="number"&&(t=this.passes[t]),t&&t.count>1&&t.opacity&&(this.regl._refresh(),t.fill&&t.triangles&&t.triangles.length>2&&this.shaders.fill(t),t.thickness&&(t.scale[0]*t.viewport.width>uc.precisionThreshold||t.scale[1]*t.viewport.height>uc.precisionThreshold?this.shaders.rect(t):t.join==="rect"||!t.join&&(t.thickness<=2||t.count>=uc.maxPoints)?this.shaders.rect(t):this.shaders.miter(t)))}),this};uc.prototype.update=function(e){if(!e)return;e.length!=null?typeof e[0]=="number"&&(e=[{positions:e}]):Array.isArray(e)||(e=[e]);let{regl:t,gl:r}=this;if(e.forEach((i,a)=>{let o=this.passes[a];if(i!==void 0){if(i===null){this.passes[a]=null;return}if(typeof i[0]=="number"&&(i={positions:i}),i=yOt(i,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),o||(this.passes[a]=o={id:a,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:t.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:t.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},i=CY({},uc.defaults,i)),i.thickness!=null&&(o.thickness=parseFloat(i.thickness)),i.opacity!=null&&(o.opacity=parseFloat(i.opacity)),i.miterLimit!=null&&(o.miterLimit=parseFloat(i.miterLimit)),i.overlay!=null&&(o.overlay=!!i.overlay,aL-_),E=[],k=0,A=o.hole!=null?o.hole[0]:null;if(A!=null){let L=TOt(p,_=>_>=A);p=p.slice(0,L),p.push(A)}for(let L=0;Lg-A+(p[L]-k)),M=tqe(_,C);M=M.map(g=>g+k+(g+k{e.colorBuffer.destroy(),e.positionBuffer.destroy(),e.dashTexture.destroy()}),this.passes.length=0,this}});var lqe=ye((rmr,sqe)=>{"use strict";var LOt=j2(),POt=$_(),IOt=JX(),ROt=Zm(),nqe=bh(),aqe=W2(),{float32:DOt,fract32:PY}=Xz();sqe.exports=zOt;var oqe=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]];function zOt(e,t){if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");let r=e._gl,n,i,a,o,s,l,u={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},c=[];return o=e.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array(0)}),i=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),a=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),s=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),l=e.buffer({usage:"static",type:"float",data:oqe}),v(t),n=e({vert:` precision highp float; attribute vec2 position, positionFract; @@ -2628,10 +2628,10 @@ void main() { gl_FragColor = fragColor; gl_FragColor.a *= opacity; } - `,uniforms:{range:e.prop("range"),lineWidth:e.prop("lineWidth"),capSize:e.prop("capSize"),opacity:e.prop("opacity"),scale:e.prop("scale"),translate:e.prop("translate"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),viewport:(b,g)=>[g.viewport.x,g.viewport.y,b.viewportWidth,b.viewportHeight]},attributes:{color:{buffer:o,offset:(b,g)=>g.offset*4,divisor:1},position:{buffer:i,offset:(b,g)=>g.offset*8,divisor:1},positionFract:{buffer:a,offset:(b,g)=>g.offset*8,divisor:1},error:{buffer:s,offset:(b,g)=>g.offset*16,divisor:1},direction:{buffer:l,stride:24,offset:0},lineOffset:{buffer:l,stride:24,offset:8},capOffset:{buffer:l,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport"),stencil:!1,instances:e.prop("count"),count:aqe.length}),iqe(f,{update:v,draw:h,destroy:x,regl:e,gl:r,canvas:r.canvas,groups:c}),f;function f(b){b?v(b):b===null&&x(),h()}function h(b){if(typeof b=="number")return d(b);b&&!Array.isArray(b)&&(b=[b]),e._refresh(),c.forEach((g,E)=>{if(g){if(b&&(b[E]?g.draw=!0:g.draw=!1),!g.draw){g.draw=!0;return}d(E)}})}function d(b){typeof b=="number"&&(b=c[b]),b!=null&&b&&b.count&&b.color&&b.opacity&&b.positions&&b.positions.length>1&&(b.scaleRatio=[b.scale[0]*b.viewport.width,b.scale[1]*b.viewport.height],n(b),b.after&&b.after(b))}function v(b){if(!b)return;b.length!=null?typeof b[0]=="number"&&(b=[{positions:b}]):Array.isArray(b)||(b=[b]);let g=0,E=0;if(f.groups=c=b.map((L,_)=>{let C=c[_];if(L)typeof L=="function"?L={after:L}:typeof L[0]=="number"&&(L={positions:L});else return C;return L=SOt(L,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),C||(c[_]=C={id:_,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},L=iqe({},u,L)),AOt(C,L,[{lineWidth:M=>+M*.5,capSize:M=>+M*.5,opacity:parseFloat,errors:M=>(M=nqe(M),E+=M.length,M),positions:(M,p)=>(M=nqe(M,"float64"),p.count=Math.floor(M.length/2),p.bounds=wOt(M,2),p.offset=g,g+=p.count,M)},{color:(M,p)=>{let P=p.count;if(M||(M="transparent"),!Array.isArray(M)||typeof M[0]=="number"){let F=M;M=Array(P);for(let q=0;q{let T=p.bounds;return M||(M=T),p.scale=[1/(M[2]-M[0]),1/(M[3]-M[1])],p.translate=[-M[0],-M[1]],p.scaleFract=PY(p.scale),p.translateFract=PY(p.translate),M},viewport:M=>{let p;return Array.isArray(M)?p={x:M[0],y:M[1],width:M[2]-M[0],height:M[3]-M[1]}:M?(p={x:M.x||M.left||0,y:M.y||M.top||0},M.right?p.width=M.right-p.x:p.width=M.w||M.width||0,M.bottom?p.height=M.bottom-p.y:p.height=M.h||M.height||0):p={x:0,y:0,width:r.drawingBufferWidth,height:r.drawingBufferHeight},p}}]),C}),g||E){let L=c.reduce((p,P,T)=>p+(P?P.count:0),0),_=new Float64Array(L*2),C=new Uint8Array(L*4),M=new Float32Array(L*4);c.forEach((p,P)=>{if(!p)return;let{positions:T,count:F,offset:q,color:V,errors:H}=p;F&&(C.set(V,q*4),M.set(H,q*4),_.set(T,q*2))});var k=MOt(_);i(k);var A=PY(_,k);a(A),o(C),s(M)}}function x(){i.destroy(),a.destroy(),o.destroy(),s.destroy(),l.destroy()}}});var cqe=ye((Kgr,uqe)=>{var lqe=/[\'\"]/;uqe.exports=function(t){return t?(lqe.test(t.charAt(0))&&(t=t.substr(1)),lqe.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):""}});var IY=ye(()=>{});var RY=ye(()=>{});var DY=ye(()=>{});var zY=ye(()=>{});var FY=ye(()=>{});var vqe=ye((smr,dqe)=>{"use strict";function fqe(e,t){if(typeof e!="string")return[e];var r=[e];typeof t=="string"||Array.isArray(t)?t={brackets:t}:t||(t={});var n=t.brackets?Array.isArray(t.brackets)?t.brackets:[t.brackets]:["{}","[]","()"],i=t.escape||"___",a=!!t.flat;n.forEach(function(l){var u=new RegExp(["\\",l[0],"[^\\",l[0],"\\",l[1],"]*\\",l[1]].join("")),c=[];function f(h,d,v){var x=r.push(h.slice(l[0].length,-l[1].length))-1;return c.push(x),i+x+i}r.forEach(function(h,d){for(var v,x=0;h!=v;)if(v=h,h=h.replace(u,f),x++>1e4)throw Error("References have circular dependency. Please, check them.");r[d]=h}),c=c.reverse(),r=r.map(function(h){return c.forEach(function(d){h=h.replace(new RegExp("(\\"+i+d+"\\"+i+")","g"),l[0]+"$1"+l[1])}),h})});var o=new RegExp("\\"+i+"([0-9]+)\\"+i);function s(l,u,c){for(var f=[],h,d=0;h=o.exec(l);){if(d++>1e4)throw Error("Circular references in parenthesis");f.push(l.slice(0,h.index)),f.push(s(u[h[1]],u)),l=l.slice(h.index+h[0].length)}return f.push(l),f}return a?r:s(r[0],r)}function hqe(e,t){if(t&&t.flat){var r=t&&t.escape||"___",n=e[0],i;if(!n)return"";for(var a=new RegExp("\\"+r+"([0-9]+)\\"+r),o=0;n!=i;){if(o++>1e4)throw Error("Circular references in "+e);i=n,n=n.replace(a,s)}return n}return e.reduce(function l(u,c){return Array.isArray(c)&&(c=c.reduce(l,"")),u+c},"");function s(l,u){if(e[u]==null)throw Error("Reference "+u+"is undefined");return e[u]}}function qY(e,t){return Array.isArray(e)?hqe(e,t):fqe(e,t)}qY.parse=fqe;qY.stringify=hqe;dqe.exports=qY});var mqe=ye((lmr,gqe)=>{"use strict";var pqe=vqe();gqe.exports=function(t,r,n){if(t==null)throw Error("First argument should be a string");if(r==null)throw Error("Separator should be a string or a RegExp");n?(typeof n=="string"||Array.isArray(n))&&(n={ignore:n}):n={},n.escape==null&&(n.escape=!0),n.ignore==null?n.ignore=["[]","()","{}","<>",'""',"''","``","\u201C\u201D","\xAB\xBB"]:(typeof n.ignore=="string"&&(n.ignore=[n.ignore]),n.ignore=n.ignore.map(function(f){return f.length===1&&(f=f+f),f}));var i=pqe.parse(t,{flat:!0,brackets:n.ignore}),a=i[0],o=a.split(r);if(n.escape){for(var s=[],l=0;l{});var OY=ye((fmr,_qe)=>{"use strict";var kOt=yqe();_qe.exports={isSize:function(t){return/^[\d\.]/.test(t)||t.indexOf("/")!==-1||kOt.indexOf(t)!==-1}}});var Tqe=ye((hmr,wqe)=>{"use strict";var COt=cqe(),LOt=IY(),POt=RY(),IOt=DY(),ROt=zY(),DOt=FY(),BY=mqe(),zOt=OY().isSize;wqe.exports=bqe;var pk=bqe.cache={};function bqe(e){if(typeof e!="string")throw new Error("Font argument must be a string.");if(pk[e])return pk[e];if(e==="")throw new Error("Cannot parse an empty string.");if(POt.indexOf(e)!==-1)return pk[e]={system:e};for(var t={style:"normal",variant:"normal",weight:"normal",stretch:"normal",lineHeight:"normal",size:"1rem",family:["serif"]},r=BY(e,/\s+/),n;n=r.shift();){if(LOt.indexOf(n)!==-1)return["style","variant","weight","stretch"].forEach(function(a){t[a]=n}),pk[e]=t;if(ROt.indexOf(n)!==-1){t.style=n;continue}if(n==="normal"||n==="small-caps"){t.variant=n;continue}if(DOt.indexOf(n)!==-1){t.stretch=n;continue}if(IOt.indexOf(n)!==-1){t.weight=n;continue}if(zOt(n)){var i=BY(n,"/");if(t.size=i[0],i[1]!=null?t.lineHeight=xqe(i[1]):r[0]==="/"&&(r.shift(),t.lineHeight=xqe(r.shift())),!r.length)throw new Error("Missing required font-family.");return t.family=BY(r.join(" "),/\s*,\s*/).map(COt),pk[e]=t}throw new Error("Unknown or unsupported font token: "+n)}throw new Error("Missing required font-size.")}function xqe(e){var t=parseFloat(e);return t.toString()===e?t:e}});var UY=ye((dmr,Aqe)=>{"use strict";var FOt=Zm(),qOt=OY().isSize,OOt=mk(IY()),BOt=mk(RY()),NOt=mk(DY()),UOt=mk(zY()),VOt=mk(FY()),HOt={normal:1,"small-caps":1},GOt={serif:1,"sans-serif":1,monospace:1,cursive:1,fantasy:1,"system-ui":1},NY={style:"normal",variant:"normal",weight:"normal",stretch:"normal",size:"1rem",lineHeight:"normal",family:"serif"};Aqe.exports=function(t){if(t=FOt(t,{style:"style fontstyle fontStyle font-style slope distinction",variant:"variant font-variant fontVariant fontvariant var capitalization",weight:"weight w font-weight fontWeight fontweight",stretch:"stretch font-stretch fontStretch fontstretch width",size:"size s font-size fontSize fontsize height em emSize",lineHeight:"lh line-height lineHeight lineheight leading",family:"font family fontFamily font-family fontfamily type typeface face",system:"system reserved default global"}),t.system)return t.system&&gk(t.system,BOt),t.system;if(gk(t.style,UOt),gk(t.variant,HOt),gk(t.weight,NOt),gk(t.stretch,VOt),t.size==null&&(t.size=NY.size),typeof t.size=="number"&&(t.size+="px"),!qOt)throw Error("Bad size value `"+t.size+"`");t.family||(t.family=NY.family),Array.isArray(t.family)&&(t.family.length||(t.family=[NY.family]),t.family=t.family.map(function(n){return GOt[n]?n:'"'+n+'"'}).join(", "));var r=[];return r.push(t.style),t.variant!==t.style&&r.push(t.variant),t.weight!==t.variant&&t.weight!==t.style&&r.push(t.weight),t.stretch!==t.weight&&t.stretch!==t.variant&&t.stretch!==t.style&&r.push(t.stretch),r.push(t.size+(t.lineHeight==null||t.lineHeight==="normal"||t.lineHeight+""=="1"?"":"/"+t.lineHeight)),r.push(t.family),r.filter(Boolean).join(" ")};function gk(e,t){if(e&&!t[e]&&!OOt[e])throw Error("Unknown keyword `"+e+"`");return e}function mk(e){for(var t={},r=0;r{"use strict";Sqe.exports={parse:Tqe(),stringify:UY()}});var GY=ye((VY,HY)=>{(function(e,t){typeof VY=="object"&&typeof HY!="undefined"?HY.exports=t():typeof define=="function"&&define.amd?define(t):e.createREGL=t()})(VY,function(){"use strict";var e=function(At,Er){for(var Wr=Object.keys(Er),wi=0;wi1&&Er===Wr&&(Er==='"'||Er==="'"))return['"'+o(At.substr(1,At.length-2))+'"'];var wi=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(At);if(wi)return s(At.substr(0,wi.index)).concat(s(wi[1])).concat(s(At.substr(wi.index+wi[0].length)));var Ui=At.split(".");if(Ui.length===1)return['"'+o(At)+'"'];for(var Oi=[],Bi=0;Bi65535)<<4,At>>>=Er,Wr=(At>255)<<3,At>>>=Wr,Er|=Wr,Wr=(At>15)<<2,At>>>=Wr,Er|=Wr,Wr=(At>3)<<1,At>>>=Wr,Er|=Wr,Er|At>>1}function N(){var At=M(8,function(){return[]});function Er(Oi){var Bi=X(Oi),cn=At[G(Bi)>>2];return cn.length>0?cn.pop():new ArrayBuffer(Bi)}function Wr(Oi){At[G(Oi.byteLength)>>2].push(Oi)}function wi(Oi,Bi){var cn=null;switch(Oi){case p:cn=new Int8Array(Er(Bi),0,Bi);break;case P:cn=new Uint8Array(Er(Bi),0,Bi);break;case T:cn=new Int16Array(Er(2*Bi),0,Bi);break;case F:cn=new Uint16Array(Er(2*Bi),0,Bi);break;case q:cn=new Int32Array(Er(4*Bi),0,Bi);break;case V:cn=new Uint32Array(Er(4*Bi),0,Bi);break;case H:cn=new Float32Array(Er(4*Bi),0,Bi);break;default:return null}return cn.length!==Bi?cn.subarray(0,Bi):cn}function Ui(Oi){Wr(Oi.buffer)}return{alloc:Er,free:Wr,allocType:wi,freeType:Ui}}var W=N();W.zero=N();var re=3408,ae=3410,_e=3411,Me=3412,ke=3413,ge=3414,ie=3415,Te=33901,Ee=33902,Ae=3379,ze=3386,Ce=34921,me=36347,Re=36348,ce=35661,Ge=35660,nt=34930,ct=36349,qt=34076,rt=34024,ot=7936,Rt=7937,kt=7938,Ct=35724,Yt=34047,xr=36063,er=34852,Ke=3553,xt=34067,bt=34069,Lt=33984,St=6408,Et=5126,dt=5121,Ht=36160,$t=36053,fr=36064,_r=16384,Br=function(At,Er){var Wr=1;Er.ext_texture_filter_anisotropic&&(Wr=At.getParameter(Yt));var wi=1,Ui=1;Er.webgl_draw_buffers&&(wi=At.getParameter(er),Ui=At.getParameter(xr));var Oi=!!Er.oes_texture_float;if(Oi){var Bi=At.createTexture();At.bindTexture(Ke,Bi),At.texImage2D(Ke,0,St,1,1,0,St,Et,null);var cn=At.createFramebuffer();if(At.bindFramebuffer(Ht,cn),At.framebufferTexture2D(Ht,fr,Ke,Bi,0),At.bindTexture(Ke,null),At.checkFramebufferStatus(Ht)!==$t)Oi=!1;else{At.viewport(0,0,1,1),At.clearColor(1,0,0,1),At.clear(_r);var On=W.allocType(Et,4);At.readPixels(0,0,1,1,St,Et,On),At.getError()?Oi=!1:(At.deleteFramebuffer(cn),At.deleteTexture(Bi),Oi=On[0]===1),W.freeType(On)}}var Bn=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),yn=!0;if(!Bn){var to=At.createTexture(),Rn=W.allocType(dt,36);At.activeTexture(Lt),At.bindTexture(xt,to),At.texImage2D(bt,0,St,3,3,0,St,dt,Rn),W.freeType(Rn),At.bindTexture(xt,null),At.deleteTexture(to),yn=!At.getError()}return{colorBits:[At.getParameter(ae),At.getParameter(_e),At.getParameter(Me),At.getParameter(ke)],depthBits:At.getParameter(ge),stencilBits:At.getParameter(ie),subpixelBits:At.getParameter(re),extensions:Object.keys(Er).filter(function(Dn){return!!Er[Dn]}),maxAnisotropic:Wr,maxDrawbuffers:wi,maxColorAttachments:Ui,pointSizeDims:At.getParameter(Te),lineWidthDims:At.getParameter(Ee),maxViewportDims:At.getParameter(ze),maxCombinedTextureUnits:At.getParameter(ce),maxCubeMapSize:At.getParameter(qt),maxRenderbufferSize:At.getParameter(rt),maxTextureUnits:At.getParameter(nt),maxTextureSize:At.getParameter(Ae),maxAttributes:At.getParameter(Ce),maxVertexUniforms:At.getParameter(me),maxVertexTextureUnits:At.getParameter(Ge),maxVaryingVectors:At.getParameter(Re),maxFragmentUniforms:At.getParameter(ct),glsl:At.getParameter(Ct),renderer:At.getParameter(Rt),vendor:At.getParameter(ot),version:At.getParameter(kt),readFloat:Oi,npotTextureCube:yn}},Or=function(At){return At instanceof Uint8Array||At instanceof Uint16Array||At instanceof Uint32Array||At instanceof Int8Array||At instanceof Int16Array||At instanceof Int32Array||At instanceof Float32Array||At instanceof Float64Array||At instanceof Uint8ClampedArray};function Nr(At){return!!At&&typeof At=="object"&&Array.isArray(At.shape)&&Array.isArray(At.stride)&&typeof At.offset=="number"&&At.shape.length===At.stride.length&&(Array.isArray(At.data)||Or(At.data))}var ut=function(At){return Object.keys(At).map(function(Er){return At[Er]})},Ne={shape:xe,flatten:Le};function Ye(At,Er,Wr){for(var wi=0;wi0){var Za;if(Array.isArray(ji[0])){Kn=$i(ji);for(var wn=1,vn=1;vn0){if(typeof wn[0]=="number"){var Xn=W.allocType(gn.dtype,wn.length);yr(Xn,wn),Kn(Xn,Aa),W.freeType(Xn)}else if(Array.isArray(wn[0])||Or(wn[0])){aa=$i(wn);var Vn=_n(wn,aa,gn.dtype);Kn(Vn,Aa),W.freeType(Vn)}}}else if(Nr(wn)){aa=wn.shape;var ma=wn.stride,ro=0,Ao=0,Jn=0,Oa=0;aa.length===1?(ro=aa[0],Ao=1,Jn=ma[0],Oa=0):aa.length===2&&(ro=aa[0],Ao=aa[1],Jn=ma[0],Oa=ma[1]);var _o=Array.isArray(wn.data)?gn.dtype:Zt(wn.data),Po=W.allocType(_o,ro*Ao);Fr(Po,wn.data,ro,Ao,Jn,Oa,wn.offset),Kn(Po,Aa),W.freeType(Po)}return ca}return Ln||ca(Ai),ca._reglType="buffer",ca._buffer=gn,ca.subdata=Za,Wr.profile&&(ca.stats=gn.stats),ca.destroy=function(){Rn(gn)},ca}function fn(){ut(Oi).forEach(function(Ai){Ai.buffer=At.createBuffer(),At.bindBuffer(Ai.type,Ai.buffer),At.bufferData(Ai.type,Ai.persistentData||Ai.byteLength,Ai.usage)})}return Wr.profile&&(Er.getTotalBufferSize=function(){var Ai=0;return Object.keys(Oi).forEach(function(ji){Ai+=Oi[ji].stats.size}),Ai}),{create:Dn,createStream:On,destroyStream:Bn,clear:function(){ut(Oi).forEach(Rn),cn.forEach(Rn)},getBuffer:function(Ai){return Ai&&Ai._buffer instanceof Bi?Ai._buffer:null},restore:fn,_initBuffer:to}}var Vr=0,gi=0,Si=1,Mi=1,Pi=4,Gi=4,Ki={points:Vr,point:gi,lines:Si,line:Mi,triangles:Pi,triangle:Gi,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},ka=0,jn=1,la=4,Fa=5120,Ra=5121,jo=5122,oa=5123,Sn=5124,Ha=5125,oo=34963,xn=35040,_t=35044;function br(At,Er,Wr,wi){var Ui={},Oi=0,Bi={uint8:Ra,uint16:oa};Er.oes_element_index_uint&&(Bi.uint32=Ha);function cn(fn){this.id=Oi++,Ui[this.id]=this,this.buffer=fn,this.primType=la,this.vertCount=0,this.type=0}cn.prototype.bind=function(){this.buffer.bind()};var On=[];function Bn(fn){var Ai=On.pop();return Ai||(Ai=new cn(Wr.create(null,oo,!0,!1)._buffer)),to(Ai,fn,xn,-1,-1,0,0),Ai}function yn(fn){On.push(fn)}function to(fn,Ai,ji,Ln,Un,gn,ca){fn.buffer.bind();var Kn;if(Ai){var Za=ca;!ca&&(!Or(Ai)||Nr(Ai)&&!Or(Ai.data))&&(Za=Er.oes_element_index_uint?Ha:oa),Wr._initBuffer(fn.buffer,Ai,ji,Za,3)}else At.bufferData(oo,gn,ji),fn.buffer.dtype=Kn||Ra,fn.buffer.usage=ji,fn.buffer.dimension=3,fn.buffer.byteLength=gn;if(Kn=ca,!ca){switch(fn.buffer.dtype){case Ra:case Fa:Kn=Ra;break;case oa:case jo:Kn=oa;break;case Ha:case Sn:Kn=Ha;break;default:}fn.buffer.dtype=Kn}fn.type=Kn;var wn=Un;wn<0&&(wn=fn.buffer.byteLength,Kn===oa?wn>>=1:Kn===Ha&&(wn>>=2)),fn.vertCount=wn;var vn=Ln;if(Ln<0){vn=la;var Aa=fn.buffer.dimension;Aa===1&&(vn=ka),Aa===2&&(vn=jn),Aa===3&&(vn=la)}fn.primType=vn}function Rn(fn){wi.elementsCount--,delete Ui[fn.id],fn.buffer.destroy(),fn.buffer=null}function Dn(fn,Ai){var ji=Wr.create(null,oo,!0),Ln=new cn(ji._buffer);wi.elementsCount++;function Un(gn){if(!gn)ji(),Ln.primType=la,Ln.vertCount=0,Ln.type=Ra;else if(typeof gn=="number")ji(gn),Ln.primType=la,Ln.vertCount=gn|0,Ln.type=Ra;else{var ca=null,Kn=_t,Za=-1,wn=-1,vn=0,Aa=0;Array.isArray(gn)||Or(gn)||Nr(gn)?ca=gn:("data"in gn&&(ca=gn.data),"usage"in gn&&(Kn=Ni[gn.usage]),"primitive"in gn&&(Za=Ki[gn.primitive]),"count"in gn&&(wn=gn.count|0),"type"in gn&&(Aa=Bi[gn.type]),"length"in gn?vn=gn.length|0:(vn=wn,Aa===oa||Aa===jo?vn*=2:(Aa===Ha||Aa===Sn)&&(vn*=4))),to(Ln,ca,Kn,Za,wn,vn,Aa)}return Un}return Un(fn),Un._reglType="elements",Un._elements=Ln,Un.subdata=function(gn,ca){return ji.subdata(gn,ca),Un},Un.destroy=function(){Rn(Ln)},Un}return{create:Dn,createStream:Bn,destroyStream:yn,getElements:function(fn){return typeof fn=="function"&&fn._elements instanceof cn?fn._elements:null},clear:function(){ut(Ui).forEach(Rn)}}}var Hr=new Float32Array(1),ti=new Uint32Array(Hr.buffer),zi=5123;function Yi(At){for(var Er=W.allocType(zi,At.length),Wr=0;Wr>>31<<15,Oi=(wi<<1>>>24)-127,Bi=wi>>13&1023;if(Oi<-24)Er[Wr]=Ui;else if(Oi<-14){var cn=-14-Oi;Er[Wr]=Ui+(Bi+1024>>cn)}else Oi>15?Er[Wr]=Ui+31744:Er[Wr]=Ui+(Oi+15<<10)+Bi}return Er}function an(At){return Array.isArray(At)||Or(At)}var hi=34467,Ji=3553,ua=34067,Fn=34069,Sa=6408,go=6406,Oo=6407,ho=6409,Mo=6410,xo=32854,zs=32855,ks=36194,Zs=32819,Xs=32820,wl=33635,os=34042,cl=6402,Cs=34041,ml=35904,Ys=35906,Hs=36193,Eo=33776,fs=33777,$l=33778,Hu=33779,fc=35986,ms=35987,on=34798,fa=35840,Qu=35841,Il=35842,vo=35843,Wl=36196,Ks=5121,Zl=5123,Ec=5125,Zn=5126,ko=10242,Co=10243,Tl=10497,uf=33071,So=33648,cf=10240,rh=10241,Al=9728,Hc=9729,Ql=9984,Ls=9985,mu=9986,kc=9987,Of=33170,Gc=4352,vd=4353,Bf=4354,ss=34046,ff=3317,ih=37440,Ul=37441,Js=37443,hc=37444,Cc=33984,ws=[Ql,mu,Ls,kc],$s=[0,ho,Mo,Oo,Sa],hs={};hs[ho]=hs[go]=hs[cl]=1,hs[Cs]=hs[Mo]=2,hs[Oo]=hs[ml]=3,hs[Sa]=hs[Ys]=4;function Ms(At){return"[object "+At+"]"}var dc=Ms("HTMLCanvasElement"),Sl=Ms("OffscreenCanvas"),ec=Ms("CanvasRenderingContext2D"),Ps=Ms("ImageBitmap"),ov=Ms("HTMLImageElement"),wo=Ms("HTMLVideoElement"),Od=Object.keys(Se).concat([dc,Sl,ec,Ps,ov,wo]),$o=[];$o[Ks]=1,$o[Zn]=4,$o[Hs]=2,$o[Zl]=2,$o[Ec]=4;var Ja=[];Ja[xo]=2,Ja[zs]=2,Ja[ks]=2,Ja[Cs]=4,Ja[Eo]=.5,Ja[fs]=.5,Ja[$l]=1,Ja[Hu]=1,Ja[fc]=.5,Ja[ms]=1,Ja[on]=1,Ja[fa]=.5,Ja[Qu]=.25,Ja[Il]=.5,Ja[vo]=.25,Ja[Wl]=.5;function Ef(At){return Array.isArray(At)&&(At.length===0||typeof At[0]=="number")}function tc(At){if(!Array.isArray(At))return!1;var Er=At.length;return!(Er===0||!an(At[0]))}function uu(At){return Object.prototype.toString.call(At)}function Mh(At){return uu(At)===dc}function jc(At){return uu(At)===Sl}function kf(At){return uu(At)===ec}function Ml(At){return uu(At)===Ps}function Yh(At){return uu(At)===ov}function Eh(At){return uu(At)===wo}function nh(At){if(!At)return!1;var Er=uu(At);return Od.indexOf(Er)>=0?!0:Ef(At)||tc(At)||Nr(At)}function hf(At){return Se[Object.prototype.toString.call(At)]|0}function kh(At,Er){var Wr=Er.length;switch(At.type){case Ks:case Zl:case Ec:case Zn:var wi=W.allocType(At.type,Wr);wi.set(Er),At.data=wi;break;case Hs:At.data=Yi(Er);break;default:}}function Kh(At,Er){return W.allocType(At.type===Hs?Zn:At.type,Er)}function rc(At,Er){At.type===Hs?(At.data=Yi(Er),W.freeType(Er)):At.data=Er}function ah(At,Er,Wr,wi,Ui,Oi){for(var Bi=At.width,cn=At.height,On=At.channels,Bn=Bi*cn*On,yn=Kh(At,Bn),to=0,Rn=0;Rn=1;)cn+=Bi*On*On,On/=2;return cn}else return Bi*Wr*wi}function df(At,Er,Wr,wi,Ui,Oi,Bi){var cn={"don't care":Gc,"dont care":Gc,nice:Bf,fast:vd},On={repeat:Tl,clamp:uf,mirror:So},Bn={nearest:Al,linear:Hc},yn=e({mipmap:kc,"nearest mipmap nearest":Ql,"linear mipmap nearest":Ls,"nearest mipmap linear":mu,"linear mipmap linear":kc},Bn),to={none:0,browser:hc},Rn={uint8:Ks,rgba4:Zs,rgb565:wl,"rgb5 a1":Xs},Dn={alpha:go,luminance:ho,"luminance alpha":Mo,rgb:Oo,rgba:Sa,rgba4:xo,"rgb5 a1":zs,rgb565:ks},fn={};Er.ext_srgb&&(Dn.srgb=ml,Dn.srgba=Ys),Er.oes_texture_float&&(Rn.float32=Rn.float=Zn),Er.oes_texture_half_float&&(Rn.float16=Rn["half float"]=Hs),Er.webgl_depth_texture&&(e(Dn,{depth:cl,"depth stencil":Cs}),e(Rn,{uint16:Zl,uint32:Ec,"depth stencil":os})),Er.webgl_compressed_texture_s3tc&&e(fn,{"rgb s3tc dxt1":Eo,"rgba s3tc dxt1":fs,"rgba s3tc dxt3":$l,"rgba s3tc dxt5":Hu}),Er.webgl_compressed_texture_atc&&e(fn,{"rgb atc":fc,"rgba atc explicit alpha":ms,"rgba atc interpolated alpha":on}),Er.webgl_compressed_texture_pvrtc&&e(fn,{"rgb pvrtc 4bppv1":fa,"rgb pvrtc 2bppv1":Qu,"rgba pvrtc 4bppv1":Il,"rgba pvrtc 2bppv1":vo}),Er.webgl_compressed_texture_etc1&&(fn["rgb etc1"]=Wl);var Ai=Array.prototype.slice.call(At.getParameter(hi));Object.keys(fn).forEach(function(de){var Ie=fn[de];Ai.indexOf(Ie)>=0&&(Dn[de]=Ie)});var ji=Object.keys(Dn);Wr.textureFormats=ji;var Ln=[];Object.keys(Dn).forEach(function(de){var Ie=Dn[de];Ln[Ie]=de});var Un=[];Object.keys(Rn).forEach(function(de){var Ie=Rn[de];Un[Ie]=de});var gn=[];Object.keys(Bn).forEach(function(de){var Ie=Bn[de];gn[Ie]=de});var ca=[];Object.keys(yn).forEach(function(de){var Ie=yn[de];ca[Ie]=de});var Kn=[];Object.keys(On).forEach(function(de){var Ie=On[de];Kn[Ie]=de});var Za=ji.reduce(function(de,Ie){var $e=Dn[Ie];return $e===ho||$e===go||$e===ho||$e===Mo||$e===cl||$e===Cs||Er.ext_srgb&&($e===ml||$e===Ys)?de[$e]=$e:$e===zs||Ie.indexOf("rgba")>=0?de[$e]=Sa:de[$e]=Oo,de},{});function wn(){this.internalformat=Sa,this.format=Sa,this.type=Ks,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=hc,this.width=0,this.height=0,this.channels=0}function vn(de,Ie){de.internalformat=Ie.internalformat,de.format=Ie.format,de.type=Ie.type,de.compressed=Ie.compressed,de.premultiplyAlpha=Ie.premultiplyAlpha,de.flipY=Ie.flipY,de.unpackAlignment=Ie.unpackAlignment,de.colorSpace=Ie.colorSpace,de.width=Ie.width,de.height=Ie.height,de.channels=Ie.channels}function Aa(de,Ie){if(!(typeof Ie!="object"||!Ie)){if("premultiplyAlpha"in Ie&&(de.premultiplyAlpha=Ie.premultiplyAlpha),"flipY"in Ie&&(de.flipY=Ie.flipY),"alignment"in Ie&&(de.unpackAlignment=Ie.alignment),"colorSpace"in Ie&&(de.colorSpace=to[Ie.colorSpace]),"type"in Ie){var $e=Ie.type;de.type=Rn[$e]}var pt=de.width,Kt=de.height,ir=de.channels,Jt=!1;"shape"in Ie?(pt=Ie.shape[0],Kt=Ie.shape[1],Ie.shape.length===3&&(ir=Ie.shape[2],Jt=!0)):("radius"in Ie&&(pt=Kt=Ie.radius),"width"in Ie&&(pt=Ie.width),"height"in Ie&&(Kt=Ie.height),"channels"in Ie&&(ir=Ie.channels,Jt=!0)),de.width=pt|0,de.height=Kt|0,de.channels=ir|0;var vt=!1;if("format"in Ie){var Pt=Ie.format,Wt=de.internalformat=Dn[Pt];de.format=Za[Wt],Pt in Rn&&("type"in Ie||(de.type=Rn[Pt])),Pt in fn&&(de.compressed=!0),vt=!0}!Jt&&vt?de.channels=hs[de.format]:Jt&&!vt&&de.channels!==$s[de.format]&&(de.format=de.internalformat=$s[de.channels])}}function aa(de){At.pixelStorei(ih,de.flipY),At.pixelStorei(Ul,de.premultiplyAlpha),At.pixelStorei(Js,de.colorSpace),At.pixelStorei(ff,de.unpackAlignment)}function Xn(){wn.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function Vn(de,Ie){var $e=null;if(nh(Ie)?$e=Ie:Ie&&(Aa(de,Ie),"x"in Ie&&(de.xOffset=Ie.x|0),"y"in Ie&&(de.yOffset=Ie.y|0),nh(Ie.data)&&($e=Ie.data)),Ie.copy){var pt=Ui.viewportWidth,Kt=Ui.viewportHeight;de.width=de.width||pt-de.xOffset,de.height=de.height||Kt-de.yOffset,de.needsCopy=!0}else if(!$e)de.width=de.width||1,de.height=de.height||1,de.channels=de.channels||4;else if(Or($e))de.channels=de.channels||4,de.data=$e,!("type"in Ie)&&de.type===Ks&&(de.type=hf($e));else if(Ef($e))de.channels=de.channels||4,kh(de,$e),de.alignment=1,de.needsFree=!0;else if(Nr($e)){var ir=$e.data;!Array.isArray(ir)&&de.type===Ks&&(de.type=hf(ir));var Jt=$e.shape,vt=$e.stride,Pt,Wt,rr,dr,pr,kr;Jt.length===3?(rr=Jt[2],kr=vt[2]):(rr=1,kr=1),Pt=Jt[0],Wt=Jt[1],dr=vt[0],pr=vt[1],de.alignment=1,de.width=Pt,de.height=Wt,de.channels=rr,de.format=de.internalformat=$s[rr],de.needsFree=!0,ah(de,ir,dr,pr,kr,$e.offset)}else if(Mh($e)||jc($e)||kf($e))Mh($e)||jc($e)?de.element=$e:de.element=$e.canvas,de.width=de.element.width,de.height=de.element.height,de.channels=4;else if(Ml($e))de.element=$e,de.width=$e.width,de.height=$e.height,de.channels=4;else if(Yh($e))de.element=$e,de.width=$e.naturalWidth,de.height=$e.naturalHeight,de.channels=4;else if(Eh($e))de.element=$e,de.width=$e.videoWidth,de.height=$e.videoHeight,de.channels=4;else if(tc($e)){var Ar=de.width||$e[0].length,gr=de.height||$e.length,Cr=de.channels;an($e[0][0])?Cr=Cr||$e[0][0].length:Cr=Cr||1;for(var cr=Ne.shape($e),Gr=1,ei=0;ei>=Kt,$e.height>>=Kt,Vn($e,pt[Kt]),de.mipmask|=1<=0&&!("faces"in Ie)&&(de.genMipmaps=!0)}if("mag"in Ie){var pt=Ie.mag;de.magFilter=Bn[pt]}var Kt=de.wrapS,ir=de.wrapT;if("wrap"in Ie){var Jt=Ie.wrap;typeof Jt=="string"?Kt=ir=On[Jt]:Array.isArray(Jt)&&(Kt=On[Jt[0]],ir=On[Jt[1]])}else{if("wrapS"in Ie){var vt=Ie.wrapS;Kt=On[vt]}if("wrapT"in Ie){var Pt=Ie.wrapT;ir=On[Pt]}}if(de.wrapS=Kt,de.wrapT=ir,"anisotropic"in Ie){var Wt=Ie.anisotropic;de.anisotropic=Ie.anisotropic}if("mipmap"in Ie){var rr=!1;switch(typeof Ie.mipmap){case"string":de.mipmapHint=cn[Ie.mipmap],de.genMipmaps=!0,rr=!0;break;case"boolean":rr=de.genMipmaps=Ie.mipmap;break;case"object":de.genMipmaps=!1,rr=!0;break;default:}rr&&!("min"in Ie)&&(de.minFilter=Ql)}}function wc(de,Ie){At.texParameteri(Ie,rh,de.minFilter),At.texParameteri(Ie,cf,de.magFilter),At.texParameteri(Ie,ko,de.wrapS),At.texParameteri(Ie,Co,de.wrapT),Er.ext_texture_filter_anisotropic&&At.texParameteri(Ie,ss,de.anisotropic),de.genMipmaps&&(At.hint(Of,de.mipmapHint),At.generateMipmap(Ie))}var yf=0,Hl={},Fc=Wr.maxTextureUnits,ef=Array(Fc).map(function(){return null});function ls(de){wn.call(this),this.mipmask=0,this.internalformat=Sa,this.id=yf++,this.refCount=1,this.target=de,this.texture=At.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new El,Bi.profile&&(this.stats={size:0})}function _f(de){At.activeTexture(Cc),At.bindTexture(de.target,de.texture)}function ns(){var de=ef[0];de?At.bindTexture(de.target,de.texture):At.bindTexture(Ji,null)}function Y(de){var Ie=de.texture,$e=de.unit,pt=de.target;$e>=0&&(At.activeTexture(Cc+$e),At.bindTexture(pt,null),ef[$e]=null),At.deleteTexture(Ie),de.texture=null,de.params=null,de.pixels=null,de.refCount=0,delete Hl[de.id],Oi.textureCount--}e(ls.prototype,{bind:function(){var de=this;de.bindCount+=1;var Ie=de.unit;if(Ie<0){for(var $e=0;$e0)continue;pt.unit=-1}ef[$e]=de,Ie=$e;break}Ie>=Fc,Bi.profile&&Oi.maxTextureUnits>pr)-rr,kr.height=kr.height||($e.height>>pr)-dr,_f($e),ro(kr,Ji,rr,dr,pr),ns(),Oa(kr),pt}function ir(Jt,vt){var Pt=Jt|0,Wt=vt|0||Pt;if(Pt===$e.width&&Wt===$e.height)return pt;pt.width=$e.width=Pt,pt.height=$e.height=Wt,_f($e);for(var rr=0;$e.mipmask>>rr;++rr){var dr=Pt>>rr,pr=Wt>>rr;if(!dr||!pr)break;At.texImage2D(Ji,rr,$e.format,dr,pr,0,$e.format,$e.type,null)}return ns(),Bi.profile&&($e.stats.size=Wc($e.internalformat,$e.type,Pt,Wt,!1,!1)),pt}return pt(de,Ie),pt.subimage=Kt,pt.resize=ir,pt._reglType="texture2d",pt._texture=$e,Bi.profile&&(pt.stats=$e.stats),pt.destroy=function(){$e.decRef()},pt}function K(de,Ie,$e,pt,Kt,ir){var Jt=new ls(ua);Hl[Jt.id]=Jt,Oi.cubeCount++;var vt=new Array(6);function Pt(dr,pr,kr,Ar,gr,Cr){var cr,Gr=Jt.texInfo;for(El.call(Gr),cr=0;cr<6;++cr)vt[cr]=xs();if(typeof dr=="number"||!dr){var ei=dr|0||1;for(cr=0;cr<6;++cr)Po(vt[cr],ei,ei)}else if(typeof dr=="object")if(pr)Jo(vt[0],dr),Jo(vt[1],pr),Jo(vt[2],kr),Jo(vt[3],Ar),Jo(vt[4],gr),Jo(vt[5],Cr);else if(bc(Gr,dr),Aa(Jt,dr),"faces"in dr){var yi=dr.faces;for(cr=0;cr<6;++cr)vn(vt[cr],Jt),Jo(vt[cr],yi[cr])}else for(cr=0;cr<6;++cr)Jo(vt[cr],dr);for(vn(Jt,vt[0]),Gr.genMipmaps?Jt.mipmask=(vt[0].width<<1)-1:Jt.mipmask=vt[0].mipmask,Jt.internalformat=vt[0].internalformat,Pt.width=vt[0].width,Pt.height=vt[0].height,_f(Jt),cr=0;cr<6;++cr)Xl(vt[cr],Fn+cr);for(wc(Gr,ua),ns(),Bi.profile&&(Jt.stats.size=Wc(Jt.internalformat,Jt.type,Pt.width,Pt.height,Gr.genMipmaps,!0)),Pt.format=Ln[Jt.internalformat],Pt.type=Un[Jt.type],Pt.mag=gn[Gr.magFilter],Pt.min=ca[Gr.minFilter],Pt.wrapS=Kn[Gr.wrapS],Pt.wrapT=Kn[Gr.wrapT],cr=0;cr<6;++cr)Qc(vt[cr]);return Pt}function Wt(dr,pr,kr,Ar,gr){var Cr=kr|0,cr=Ar|0,Gr=gr|0,ei=Jn();return vn(ei,Jt),ei.width=0,ei.height=0,Vn(ei,pr),ei.width=ei.width||(Jt.width>>Gr)-Cr,ei.height=ei.height||(Jt.height>>Gr)-cr,_f(Jt),ro(ei,Fn+dr,Cr,cr,Gr),ns(),Oa(ei),Pt}function rr(dr){var pr=dr|0;if(pr!==Jt.width){Pt.width=Jt.width=pr,Pt.height=Jt.height=pr,_f(Jt);for(var kr=0;kr<6;++kr)for(var Ar=0;Jt.mipmask>>Ar;++Ar)At.texImage2D(Fn+kr,Ar,Jt.format,pr>>Ar,pr>>Ar,0,Jt.format,Jt.type,null);return ns(),Bi.profile&&(Jt.stats.size=Wc(Jt.internalformat,Jt.type,Pt.width,Pt.height,!1,!0)),Pt}}return Pt(de,Ie,$e,pt,Kt,ir),Pt.subimage=Wt,Pt.resize=rr,Pt._reglType="textureCube",Pt._texture=Jt,Bi.profile&&(Pt.stats=Jt.stats),Pt.destroy=function(){Jt.decRef()},Pt}function O(){for(var de=0;de>pt,$e.height>>pt,0,$e.internalformat,$e.type,null);else for(var Kt=0;Kt<6;++Kt)At.texImage2D(Fn+Kt,pt,$e.internalformat,$e.width>>pt,$e.height>>pt,0,$e.internalformat,$e.type,null);wc($e.texInfo,$e.target)})}function pe(){for(var de=0;de=0?Qc=!0:On.indexOf(El)>=0&&(Qc=!1))),("depthTexture"in ls||"depthStencilTexture"in ls)&&(ef=!!(ls.depthTexture||ls.depthStencilTexture)),"depth"in ls&&(typeof ls.depth=="boolean"?Xl=ls.depth:(yf=ls.depth,$c=!1)),"stencil"in ls&&(typeof ls.stencil=="boolean"?$c=ls.stencil:(Hl=ls.stencil,Xl=!1)),"depthStencil"in ls&&(typeof ls.depthStencil=="boolean"?Xl=$c=ls.depthStencil:(Fc=ls.depthStencil,Xl=!1,$c=!1))}var ns=null,Y=null,z=null,K=null;if(Array.isArray(xs))ns=xs.map(fn);else if(xs)ns=[fn(xs)];else for(ns=new Array(wc),_o=0;_o0&&(Oa.depth=Vn[0].depth,Oa.stencil=Vn[0].stencil,Oa.depthStencil=Vn[0].depthStencil),Vn[Jn]?Vn[Jn](Oa):Vn[Jn]=vn(Oa)}return e(ma,{width:_o,height:_o,color:El})}function ro(Ao){var Jn,Oa=Ao|0;if(Oa===ma.width)return ma;var _o=ma.color;for(Jn=0;Jn<_o.length;++Jn)_o[Jn].resize(Oa);for(Jn=0;Jn<6;++Jn)Vn[Jn].resize(Oa);return ma.width=ma.height=Oa,ma}return ma(Xn),e(ma,{faces:Vn,resize:ro,_reglType:"framebufferCube",destroy:function(){Vn.forEach(function(Ao){Ao.destroy()})}})}function aa(){Bi.cur=null,Bi.next=null,Bi.dirty=!0,ut(gn).forEach(function(Xn){Xn.framebuffer=At.createFramebuffer(),wn(Xn)})}return e(Bi,{getFramebuffer:function(Xn){if(typeof Xn=="function"&&Xn._reglType==="framebuffer"){var Vn=Xn._framebuffer;if(Vn instanceof ca)return Vn}return null},create:vn,createCube:Aa,clear:function(){ut(gn).forEach(Za)},restore:aa})}var md=5126,sh=34962,Fs=34963;function _u(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=md,this.offset=0,this.stride=0,this.divisor=0}function xu(At,Er,Wr,wi,Ui,Oi,Bi){for(var cn=Wr.maxAttributes,On=new Array(cn),Bn=0;Bn=_o.byteLength?Po.subdata(_o):(Po.destroy(),vn.buffers[Ao]=null)),vn.buffers[Ao]||(Po=vn.buffers[Ao]=Ui.create(Jn,sh,!1,!0)),Oa.buffer=Ui.getBuffer(Po),Oa.size=Oa.buffer.dimension|0,Oa.normalized=!1,Oa.type=Oa.buffer.dtype,Oa.offset=0,Oa.stride=0,Oa.divisor=0,Oa.state=1,ma[Ao]=1}else Ui.getBuffer(Jn)?(Oa.buffer=Ui.getBuffer(Jn),Oa.size=Oa.buffer.dimension|0,Oa.normalized=!1,Oa.type=Oa.buffer.dtype,Oa.offset=0,Oa.stride=0,Oa.divisor=0,Oa.state=1):Ui.getBuffer(Jn.buffer)?(Oa.buffer=Ui.getBuffer(Jn.buffer),Oa.size=(+Jn.size||Oa.buffer.dimension)|0,Oa.normalized=!!Jn.normalized||!1,"type"in Jn?Oa.type=bi[Jn.type]:Oa.type=Oa.buffer.dtype,Oa.offset=(Jn.offset||0)|0,Oa.stride=(Jn.stride||0)|0,Oa.divisor=(Jn.divisor||0)|0,Oa.state=1):"x"in Jn&&(Oa.x=+Jn.x||0,Oa.y=+Jn.y||0,Oa.z=+Jn.z||0,Oa.w=+Jn.w||0,Oa.state=2)}for(var Jo=0;Jo1)for(var aa=0;aaAi&&(Ai=ji.stats.uniformsCount)}),Ai},Wr.getMaxAttributesCount=function(){var Ai=0;return yn.forEach(function(ji){ji.stats.attributesCount>Ai&&(Ai=ji.stats.attributesCount)}),Ai});function fn(){Ui={},Oi={};for(var Ai=0;Ai16&&(Wr=Ti(Wr,At.length*8));for(var wi=Array(16),Ui=Array(16),Oi=0;Oi<16;Oi++)wi[Oi]=Wr[Oi]^909522486,Ui[Oi]=Wr[Oi]^1549556828;var Bi=Ti(wi.concat(gf(Er)),512+Er.length*8);return gt(Ti(Ui.concat(Bi),768))}function ru(At){for(var Er=Ih?"0123456789ABCDEF":"0123456789abcdef",Wr="",wi,Ui=0;Ui>>4&15)+Er.charAt(wi&15);return Wr}function mc(At){for(var Er="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Wr="",wi=At.length,Ui=0;UiAt.length*8?Wr+=Wu:Wr+=Er.charAt(Oi>>>6*(3-Bi)&63);return Wr}function Yc(At,Er){var Wr=Er.length,wi=Array(),Ui,Oi,Bi,cn,On=Array(Math.ceil(At.length/2));for(Ui=0;Ui0;){for(cn=Array(),Bi=0,Ui=0;Ui0||Oi>0)&&(cn[cn.length]=Oi);wi[wi.length]=Bi,On=cn}var Bn="";for(Ui=wi.length-1;Ui>=0;Ui--)Bn+=Er.charAt(wi[Ui]);var yn=Math.ceil(At.length*8/(Math.log(Er.length)/Math.log(2)));for(Ui=Bn.length;Ui>>6&31,128|wi&63):wi<=65535?Er+=String.fromCharCode(224|wi>>>12&15,128|wi>>>6&63,128|wi&63):wi<=2097151&&(Er+=String.fromCharCode(240|wi>>>18&7,128|wi>>>12&63,128|wi>>>6&63,128|wi&63));return Er}function gf(At){for(var Er=Array(At.length>>2),Wr=0;Wr>5]|=(At.charCodeAt(Wr/8)&255)<<24-Wr%32;return Er}function gt(At){for(var Er="",Wr=0;Wr>5]>>>24-Wr%32&255);return Er}function Bt(At,Er){return At>>>Er|At<<32-Er}function wr(At,Er){return At>>>Er}function vr(At,Er,Wr){return At&Er^~At&Wr}function Ur(At,Er,Wr){return At&Er^At&Wr^Er&Wr}function fi(At){return Bt(At,2)^Bt(At,13)^Bt(At,22)}function xi(At){return Bt(At,6)^Bt(At,11)^Bt(At,25)}function Fi(At){return Bt(At,7)^Bt(At,18)^wr(At,3)}function Xi(At){return Bt(At,17)^Bt(At,19)^wr(At,10)}var hn=new Array(1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998);function Ti(At,Er){var Wr=new Array(1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225),wi=new Array(64),Ui,Oi,Bi,cn,On,Bn,yn,to,Rn,Dn,fn,Ai;for(At[Er>>5]|=128<<24-Er%32,At[(Er+64>>9<<4)+15]=Er,Rn=0;Rn>16)+(Er>>16)+(Wr>>16);return wi<<16|Wr&65535}function Ii(At){return Array.prototype.slice.call(At)}function mi(At){return Ii(At).join("")}function Pn(At){var Er=At&&At.cache,Wr=0,wi=[],Ui=[],Oi=[];function Bi(fn,Ai){var ji=Ai&&Ai.stable;if(!ji){for(var Ln=0;Ln0&&(fn.push(Un,"="),fn.push.apply(fn,Ii(arguments)),fn.push(";")),Un}return e(Ai,{def:Ln,toString:function(){return mi([ji.length>0?"var "+ji.join(",")+";":"",mi(fn)])}})}function On(){var fn=cn(),Ai=cn(),ji=fn.toString,Ln=Ai.toString;function Un(gn,ca){Ai(gn,ca,"=",fn.def(gn,ca),";")}return e(function(){fn.apply(fn,Ii(arguments))},{def:fn.def,entry:fn,exit:Ai,save:Un,set:function(gn,ca,Kn){Un(gn,ca),fn(gn,ca,"=",Kn,";")},toString:function(){return ji()+Ln()}})}function Bn(){var fn=mi(arguments),Ai=On(),ji=On(),Ln=Ai.toString,Un=ji.toString;return e(Ai,{then:function(){return Ai.apply(Ai,Ii(arguments)),this},else:function(){return ji.apply(ji,Ii(arguments)),this},toString:function(){var gn=Un();return gn&&(gn="else{"+gn+"}"),mi(["if(",fn,"){",Ln(),"}",gn])}})}var yn=cn(),to={};function Rn(fn,Ai){var ji=[];function Ln(){var Za="a"+ji.length;return ji.push(Za),Za}Ai=Ai||0;for(var Un=0;Un[p.viewport.x,p.viewport.y,b.viewportWidth,b.viewportHeight]},attributes:{color:{buffer:o,offset:(b,p)=>p.offset*4,divisor:1},position:{buffer:i,offset:(b,p)=>p.offset*8,divisor:1},positionFract:{buffer:a,offset:(b,p)=>p.offset*8,divisor:1},error:{buffer:s,offset:(b,p)=>p.offset*16,divisor:1},direction:{buffer:l,stride:24,offset:0},lineOffset:{buffer:l,stride:24,offset:8},capOffset:{buffer:l,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport"),stencil:!1,instances:e.prop("count"),count:oqe.length}),nqe(f,{update:v,draw:h,destroy:x,regl:e,gl:r,canvas:r.canvas,groups:c}),f;function f(b){b?v(b):b===null&&x(),h()}function h(b){if(typeof b=="number")return d(b);b&&!Array.isArray(b)&&(b=[b]),e._refresh(),c.forEach((p,E)=>{if(p){if(b&&(b[E]?p.draw=!0:p.draw=!1),!p.draw){p.draw=!0;return}d(E)}})}function d(b){typeof b=="number"&&(b=c[b]),b!=null&&b&&b.count&&b.color&&b.opacity&&b.positions&&b.positions.length>1&&(b.scaleRatio=[b.scale[0]*b.viewport.width,b.scale[1]*b.viewport.height],n(b),b.after&&b.after(b))}function v(b){if(!b)return;b.length!=null?typeof b[0]=="number"&&(b=[{positions:b}]):Array.isArray(b)||(b=[b]);let p=0,E=0;if(f.groups=c=b.map((L,_)=>{let C=c[_];if(L)typeof L=="function"?L={after:L}:typeof L[0]=="number"&&(L={positions:L});else return C;return L=ROt(L,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),C||(c[_]=C={id:_,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},L=nqe({},u,L)),IOt(C,L,[{lineWidth:M=>+M*.5,capSize:M=>+M*.5,opacity:parseFloat,errors:M=>(M=aqe(M),E+=M.length,M),positions:(M,g)=>(M=aqe(M,"float64"),g.count=Math.floor(M.length/2),g.bounds=LOt(M,2),g.offset=p,p+=g.count,M)},{color:(M,g)=>{let P=g.count;if(M||(M="transparent"),!Array.isArray(M)||typeof M[0]=="number"){let F=M;M=Array(P);for(let q=0;q{let T=g.bounds;return M||(M=T),g.scale=[1/(M[2]-M[0]),1/(M[3]-M[1])],g.translate=[-M[0],-M[1]],g.scaleFract=PY(g.scale),g.translateFract=PY(g.translate),M},viewport:M=>{let g;return Array.isArray(M)?g={x:M[0],y:M[1],width:M[2]-M[0],height:M[3]-M[1]}:M?(g={x:M.x||M.left||0,y:M.y||M.top||0},M.right?g.width=M.right-g.x:g.width=M.w||M.width||0,M.bottom?g.height=M.bottom-g.y:g.height=M.h||M.height||0):g={x:0,y:0,width:r.drawingBufferWidth,height:r.drawingBufferHeight},g}}]),C}),p||E){let L=c.reduce((g,P,T)=>g+(P?P.count:0),0),_=new Float64Array(L*2),C=new Uint8Array(L*4),M=new Float32Array(L*4);c.forEach((g,P)=>{if(!g)return;let{positions:T,count:F,offset:q,color:V,errors:H}=g;F&&(C.set(V,q*4),M.set(H,q*4),_.set(T,q*2))});var k=DOt(_);i(k);var A=PY(_,k);a(A),o(C),s(M)}}function x(){i.destroy(),a.destroy(),o.destroy(),s.destroy(),l.destroy()}}});var fqe=ye((imr,cqe)=>{var uqe=/[\'\"]/;cqe.exports=function(t){return t?(uqe.test(t.charAt(0))&&(t=t.substr(1)),uqe.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):""}});var IY=ye(()=>{});var RY=ye(()=>{});var DY=ye(()=>{});var zY=ye(()=>{});var FY=ye(()=>{});var pqe=ye((vmr,vqe)=>{"use strict";function hqe(e,t){if(typeof e!="string")return[e];var r=[e];typeof t=="string"||Array.isArray(t)?t={brackets:t}:t||(t={});var n=t.brackets?Array.isArray(t.brackets)?t.brackets:[t.brackets]:["{}","[]","()"],i=t.escape||"___",a=!!t.flat;n.forEach(function(l){var u=new RegExp(["\\",l[0],"[^\\",l[0],"\\",l[1],"]*\\",l[1]].join("")),c=[];function f(h,d,v){var x=r.push(h.slice(l[0].length,-l[1].length))-1;return c.push(x),i+x+i}r.forEach(function(h,d){for(var v,x=0;h!=v;)if(v=h,h=h.replace(u,f),x++>1e4)throw Error("References have circular dependency. Please, check them.");r[d]=h}),c=c.reverse(),r=r.map(function(h){return c.forEach(function(d){h=h.replace(new RegExp("(\\"+i+d+"\\"+i+")","g"),l[0]+"$1"+l[1])}),h})});var o=new RegExp("\\"+i+"([0-9]+)\\"+i);function s(l,u,c){for(var f=[],h,d=0;h=o.exec(l);){if(d++>1e4)throw Error("Circular references in parenthesis");f.push(l.slice(0,h.index)),f.push(s(u[h[1]],u)),l=l.slice(h.index+h[0].length)}return f.push(l),f}return a?r:s(r[0],r)}function dqe(e,t){if(t&&t.flat){var r=t&&t.escape||"___",n=e[0],i;if(!n)return"";for(var a=new RegExp("\\"+r+"([0-9]+)\\"+r),o=0;n!=i;){if(o++>1e4)throw Error("Circular references in "+e);i=n,n=n.replace(a,s)}return n}return e.reduce(function l(u,c){return Array.isArray(c)&&(c=c.reduce(l,"")),u+c},"");function s(l,u){if(e[u]==null)throw Error("Reference "+u+"is undefined");return e[u]}}function qY(e,t){return Array.isArray(e)?dqe(e,t):hqe(e,t)}qY.parse=hqe;qY.stringify=dqe;vqe.exports=qY});var yqe=ye((pmr,mqe)=>{"use strict";var gqe=pqe();mqe.exports=function(t,r,n){if(t==null)throw Error("First argument should be a string");if(r==null)throw Error("Separator should be a string or a RegExp");n?(typeof n=="string"||Array.isArray(n))&&(n={ignore:n}):n={},n.escape==null&&(n.escape=!0),n.ignore==null?n.ignore=["[]","()","{}","<>",'""',"''","``","\u201C\u201D","\xAB\xBB"]:(typeof n.ignore=="string"&&(n.ignore=[n.ignore]),n.ignore=n.ignore.map(function(f){return f.length===1&&(f=f+f),f}));var i=gqe.parse(t,{flat:!0,brackets:n.ignore}),a=i[0],o=a.split(r);if(n.escape){for(var s=[],l=0;l{});var OY=ye((ymr,xqe)=>{"use strict";var FOt=_qe();xqe.exports={isSize:function(t){return/^[\d\.]/.test(t)||t.indexOf("/")!==-1||FOt.indexOf(t)!==-1}}});var Aqe=ye((_mr,Tqe)=>{"use strict";var qOt=fqe(),OOt=IY(),BOt=RY(),NOt=DY(),UOt=zY(),VOt=FY(),BY=yqe(),HOt=OY().isSize;Tqe.exports=wqe;var gk=wqe.cache={};function wqe(e){if(typeof e!="string")throw new Error("Font argument must be a string.");if(gk[e])return gk[e];if(e==="")throw new Error("Cannot parse an empty string.");if(BOt.indexOf(e)!==-1)return gk[e]={system:e};for(var t={style:"normal",variant:"normal",weight:"normal",stretch:"normal",lineHeight:"normal",size:"1rem",family:["serif"]},r=BY(e,/\s+/),n;n=r.shift();){if(OOt.indexOf(n)!==-1)return["style","variant","weight","stretch"].forEach(function(a){t[a]=n}),gk[e]=t;if(UOt.indexOf(n)!==-1){t.style=n;continue}if(n==="normal"||n==="small-caps"){t.variant=n;continue}if(VOt.indexOf(n)!==-1){t.stretch=n;continue}if(NOt.indexOf(n)!==-1){t.weight=n;continue}if(HOt(n)){var i=BY(n,"/");if(t.size=i[0],i[1]!=null?t.lineHeight=bqe(i[1]):r[0]==="/"&&(r.shift(),t.lineHeight=bqe(r.shift())),!r.length)throw new Error("Missing required font-family.");return t.family=BY(r.join(" "),/\s*,\s*/).map(qOt),gk[e]=t}throw new Error("Unknown or unsupported font token: "+n)}throw new Error("Missing required font-size.")}function bqe(e){var t=parseFloat(e);return t.toString()===e?t:e}});var UY=ye((xmr,Sqe)=>{"use strict";var GOt=Zm(),jOt=OY().isSize,WOt=yk(IY()),ZOt=yk(RY()),XOt=yk(DY()),YOt=yk(zY()),KOt=yk(FY()),JOt={normal:1,"small-caps":1},$Ot={serif:1,"sans-serif":1,monospace:1,cursive:1,fantasy:1,"system-ui":1},NY={style:"normal",variant:"normal",weight:"normal",stretch:"normal",size:"1rem",lineHeight:"normal",family:"serif"};Sqe.exports=function(t){if(t=GOt(t,{style:"style fontstyle fontStyle font-style slope distinction",variant:"variant font-variant fontVariant fontvariant var capitalization",weight:"weight w font-weight fontWeight fontweight",stretch:"stretch font-stretch fontStretch fontstretch width",size:"size s font-size fontSize fontsize height em emSize",lineHeight:"lh line-height lineHeight lineheight leading",family:"font family fontFamily font-family fontfamily type typeface face",system:"system reserved default global"}),t.system)return t.system&&mk(t.system,ZOt),t.system;if(mk(t.style,YOt),mk(t.variant,JOt),mk(t.weight,XOt),mk(t.stretch,KOt),t.size==null&&(t.size=NY.size),typeof t.size=="number"&&(t.size+="px"),!jOt)throw Error("Bad size value `"+t.size+"`");t.family||(t.family=NY.family),Array.isArray(t.family)&&(t.family.length||(t.family=[NY.family]),t.family=t.family.map(function(n){return $Ot[n]?n:'"'+n+'"'}).join(", "));var r=[];return r.push(t.style),t.variant!==t.style&&r.push(t.variant),t.weight!==t.variant&&t.weight!==t.style&&r.push(t.weight),t.stretch!==t.weight&&t.stretch!==t.variant&&t.stretch!==t.style&&r.push(t.stretch),r.push(t.size+(t.lineHeight==null||t.lineHeight==="normal"||t.lineHeight+""=="1"?"":"/"+t.lineHeight)),r.push(t.family),r.filter(Boolean).join(" ")};function mk(e,t){if(e&&!t[e]&&!WOt[e])throw Error("Unknown keyword `"+e+"`");return e}function yk(e){for(var t={},r=0;r{"use strict";Mqe.exports={parse:Aqe(),stringify:UY()}});var GY=ye((VY,HY)=>{(function(e,t){typeof VY=="object"&&typeof HY!="undefined"?HY.exports=t():e.createREGL=t()})(VY,function(){"use strict";var e=function(At,Er){for(var Wr=Object.keys(Er),wi=0;wi1&&Er===Wr&&(Er==='"'||Er==="'"))return['"'+o(At.substr(1,At.length-2))+'"'];var wi=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(At);if(wi)return s(At.substr(0,wi.index)).concat(s(wi[1])).concat(s(At.substr(wi.index+wi[0].length)));var Ui=At.split(".");if(Ui.length===1)return['"'+o(At)+'"'];for(var Oi=[],Bi=0;Bi65535)<<4,At>>>=Er,Wr=(At>255)<<3,At>>>=Wr,Er|=Wr,Wr=(At>15)<<2,At>>>=Wr,Er|=Wr,Wr=(At>3)<<1,At>>>=Wr,Er|=Wr,Er|At>>1}function N(){var At=M(8,function(){return[]});function Er(Oi){var Bi=X(Oi),cn=At[G(Bi)>>2];return cn.length>0?cn.pop():new ArrayBuffer(Bi)}function Wr(Oi){At[G(Oi.byteLength)>>2].push(Oi)}function wi(Oi,Bi){var cn=null;switch(Oi){case g:cn=new Int8Array(Er(Bi),0,Bi);break;case P:cn=new Uint8Array(Er(Bi),0,Bi);break;case T:cn=new Int16Array(Er(2*Bi),0,Bi);break;case F:cn=new Uint16Array(Er(2*Bi),0,Bi);break;case q:cn=new Int32Array(Er(4*Bi),0,Bi);break;case V:cn=new Uint32Array(Er(4*Bi),0,Bi);break;case H:cn=new Float32Array(Er(4*Bi),0,Bi);break;default:return null}return cn.length!==Bi?cn.subarray(0,Bi):cn}function Ui(Oi){Wr(Oi.buffer)}return{alloc:Er,free:Wr,allocType:wi,freeType:Ui}}var W=N();W.zero=N();var re=3408,ae=3410,_e=3411,Me=3412,ke=3413,ge=3414,ie=3415,Te=33901,Ee=33902,Ae=3379,ze=3386,Ce=34921,me=36347,Re=36348,ce=35661,Ge=35660,nt=34930,ct=36349,qt=34076,rt=34024,ot=7936,Rt=7937,kt=7938,Ct=35724,Yt=34047,xr=36063,er=34852,Ke=3553,xt=34067,bt=34069,Lt=33984,St=6408,Et=5126,dt=5121,Ht=36160,$t=36053,fr=36064,_r=16384,Br=function(At,Er){var Wr=1;Er.ext_texture_filter_anisotropic&&(Wr=At.getParameter(Yt));var wi=1,Ui=1;Er.webgl_draw_buffers&&(wi=At.getParameter(er),Ui=At.getParameter(xr));var Oi=!!Er.oes_texture_float;if(Oi){var Bi=At.createTexture();At.bindTexture(Ke,Bi),At.texImage2D(Ke,0,St,1,1,0,St,Et,null);var cn=At.createFramebuffer();if(At.bindFramebuffer(Ht,cn),At.framebufferTexture2D(Ht,fr,Ke,Bi,0),At.bindTexture(Ke,null),At.checkFramebufferStatus(Ht)!==$t)Oi=!1;else{At.viewport(0,0,1,1),At.clearColor(1,0,0,1),At.clear(_r);var On=W.allocType(Et,4);At.readPixels(0,0,1,1,St,Et,On),At.getError()?Oi=!1:(At.deleteFramebuffer(cn),At.deleteTexture(Bi),Oi=On[0]===1),W.freeType(On)}}var Bn=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),yn=!0;if(!Bn){var to=At.createTexture(),Rn=W.allocType(dt,36);At.activeTexture(Lt),At.bindTexture(xt,to),At.texImage2D(bt,0,St,3,3,0,St,dt,Rn),W.freeType(Rn),At.bindTexture(xt,null),At.deleteTexture(to),yn=!At.getError()}return{colorBits:[At.getParameter(ae),At.getParameter(_e),At.getParameter(Me),At.getParameter(ke)],depthBits:At.getParameter(ge),stencilBits:At.getParameter(ie),subpixelBits:At.getParameter(re),extensions:Object.keys(Er).filter(function(Dn){return!!Er[Dn]}),maxAnisotropic:Wr,maxDrawbuffers:wi,maxColorAttachments:Ui,pointSizeDims:At.getParameter(Te),lineWidthDims:At.getParameter(Ee),maxViewportDims:At.getParameter(ze),maxCombinedTextureUnits:At.getParameter(ce),maxCubeMapSize:At.getParameter(qt),maxRenderbufferSize:At.getParameter(rt),maxTextureUnits:At.getParameter(nt),maxTextureSize:At.getParameter(Ae),maxAttributes:At.getParameter(Ce),maxVertexUniforms:At.getParameter(me),maxVertexTextureUnits:At.getParameter(Ge),maxVaryingVectors:At.getParameter(Re),maxFragmentUniforms:At.getParameter(ct),glsl:At.getParameter(Ct),renderer:At.getParameter(Rt),vendor:At.getParameter(ot),version:At.getParameter(kt),readFloat:Oi,npotTextureCube:yn}},Or=function(At){return At instanceof Uint8Array||At instanceof Uint16Array||At instanceof Uint32Array||At instanceof Int8Array||At instanceof Int16Array||At instanceof Int32Array||At instanceof Float32Array||At instanceof Float64Array||At instanceof Uint8ClampedArray};function Nr(At){return!!At&&typeof At=="object"&&Array.isArray(At.shape)&&Array.isArray(At.stride)&&typeof At.offset=="number"&&At.shape.length===At.stride.length&&(Array.isArray(At.data)||Or(At.data))}var ut=function(At){return Object.keys(At).map(function(Er){return At[Er]})},Ne={shape:xe,flatten:Le};function Ye(At,Er,Wr){for(var wi=0;wi0){var Za;if(Array.isArray(ji[0])){Kn=$i(ji);for(var wn=1,vn=1;vn0){if(typeof wn[0]=="number"){var Xn=W.allocType(gn.dtype,wn.length);yr(Xn,wn),Kn(Xn,Aa),W.freeType(Xn)}else if(Array.isArray(wn[0])||Or(wn[0])){aa=$i(wn);var Vn=_n(wn,aa,gn.dtype);Kn(Vn,Aa),W.freeType(Vn)}}}else if(Nr(wn)){aa=wn.shape;var ma=wn.stride,ro=0,Ao=0,Jn=0,Oa=0;aa.length===1?(ro=aa[0],Ao=1,Jn=ma[0],Oa=0):aa.length===2&&(ro=aa[0],Ao=aa[1],Jn=ma[0],Oa=ma[1]);var _o=Array.isArray(wn.data)?gn.dtype:Zt(wn.data),Po=W.allocType(_o,ro*Ao);Fr(Po,wn.data,ro,Ao,Jn,Oa,wn.offset),Kn(Po,Aa),W.freeType(Po)}return ca}return Ln||ca(Ai),ca._reglType="buffer",ca._buffer=gn,ca.subdata=Za,Wr.profile&&(ca.stats=gn.stats),ca.destroy=function(){Rn(gn)},ca}function fn(){ut(Oi).forEach(function(Ai){Ai.buffer=At.createBuffer(),At.bindBuffer(Ai.type,Ai.buffer),At.bufferData(Ai.type,Ai.persistentData||Ai.byteLength,Ai.usage)})}return Wr.profile&&(Er.getTotalBufferSize=function(){var Ai=0;return Object.keys(Oi).forEach(function(ji){Ai+=Oi[ji].stats.size}),Ai}),{create:Dn,createStream:On,destroyStream:Bn,clear:function(){ut(Oi).forEach(Rn),cn.forEach(Rn)},getBuffer:function(Ai){return Ai&&Ai._buffer instanceof Bi?Ai._buffer:null},restore:fn,_initBuffer:to}}var Vr=0,gi=0,Si=1,Mi=1,Pi=4,Gi=4,Ki={points:Vr,point:gi,lines:Si,line:Mi,triangles:Pi,triangle:Gi,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},ka=0,jn=1,la=4,Fa=5120,Ra=5121,jo=5122,oa=5123,Sn=5124,Ha=5125,oo=34963,xn=35040,_t=35044;function br(At,Er,Wr,wi){var Ui={},Oi=0,Bi={uint8:Ra,uint16:oa};Er.oes_element_index_uint&&(Bi.uint32=Ha);function cn(fn){this.id=Oi++,Ui[this.id]=this,this.buffer=fn,this.primType=la,this.vertCount=0,this.type=0}cn.prototype.bind=function(){this.buffer.bind()};var On=[];function Bn(fn){var Ai=On.pop();return Ai||(Ai=new cn(Wr.create(null,oo,!0,!1)._buffer)),to(Ai,fn,xn,-1,-1,0,0),Ai}function yn(fn){On.push(fn)}function to(fn,Ai,ji,Ln,Un,gn,ca){fn.buffer.bind();var Kn;if(Ai){var Za=ca;!ca&&(!Or(Ai)||Nr(Ai)&&!Or(Ai.data))&&(Za=Er.oes_element_index_uint?Ha:oa),Wr._initBuffer(fn.buffer,Ai,ji,Za,3)}else At.bufferData(oo,gn,ji),fn.buffer.dtype=Kn||Ra,fn.buffer.usage=ji,fn.buffer.dimension=3,fn.buffer.byteLength=gn;if(Kn=ca,!ca){switch(fn.buffer.dtype){case Ra:case Fa:Kn=Ra;break;case oa:case jo:Kn=oa;break;case Ha:case Sn:Kn=Ha;break;default:}fn.buffer.dtype=Kn}fn.type=Kn;var wn=Un;wn<0&&(wn=fn.buffer.byteLength,Kn===oa?wn>>=1:Kn===Ha&&(wn>>=2)),fn.vertCount=wn;var vn=Ln;if(Ln<0){vn=la;var Aa=fn.buffer.dimension;Aa===1&&(vn=ka),Aa===2&&(vn=jn),Aa===3&&(vn=la)}fn.primType=vn}function Rn(fn){wi.elementsCount--,delete Ui[fn.id],fn.buffer.destroy(),fn.buffer=null}function Dn(fn,Ai){var ji=Wr.create(null,oo,!0),Ln=new cn(ji._buffer);wi.elementsCount++;function Un(gn){if(!gn)ji(),Ln.primType=la,Ln.vertCount=0,Ln.type=Ra;else if(typeof gn=="number")ji(gn),Ln.primType=la,Ln.vertCount=gn|0,Ln.type=Ra;else{var ca=null,Kn=_t,Za=-1,wn=-1,vn=0,Aa=0;Array.isArray(gn)||Or(gn)||Nr(gn)?ca=gn:("data"in gn&&(ca=gn.data),"usage"in gn&&(Kn=Ni[gn.usage]),"primitive"in gn&&(Za=Ki[gn.primitive]),"count"in gn&&(wn=gn.count|0),"type"in gn&&(Aa=Bi[gn.type]),"length"in gn?vn=gn.length|0:(vn=wn,Aa===oa||Aa===jo?vn*=2:(Aa===Ha||Aa===Sn)&&(vn*=4))),to(Ln,ca,Kn,Za,wn,vn,Aa)}return Un}return Un(fn),Un._reglType="elements",Un._elements=Ln,Un.subdata=function(gn,ca){return ji.subdata(gn,ca),Un},Un.destroy=function(){Rn(Ln)},Un}return{create:Dn,createStream:Bn,destroyStream:yn,getElements:function(fn){return typeof fn=="function"&&fn._elements instanceof cn?fn._elements:null},clear:function(){ut(Ui).forEach(Rn)}}}var Hr=new Float32Array(1),ti=new Uint32Array(Hr.buffer),zi=5123;function Yi(At){for(var Er=W.allocType(zi,At.length),Wr=0;Wr>>31<<15,Oi=(wi<<1>>>24)-127,Bi=wi>>13&1023;if(Oi<-24)Er[Wr]=Ui;else if(Oi<-14){var cn=-14-Oi;Er[Wr]=Ui+(Bi+1024>>cn)}else Oi>15?Er[Wr]=Ui+31744:Er[Wr]=Ui+(Oi+15<<10)+Bi}return Er}function an(At){return Array.isArray(At)||Or(At)}var hi=34467,Ji=3553,ua=34067,Fn=34069,Sa=6408,go=6406,Oo=6407,ho=6409,Mo=6410,xo=32854,zs=32855,ks=36194,Zs=32819,Xs=32820,wl=33635,os=34042,cl=6402,Cs=34041,ml=35904,Ys=35906,Hs=36193,Eo=33776,fs=33777,Ql=33778,Hu=33779,fc=35986,ms=35987,on=34798,fa=35840,Qu=35841,Rl=35842,vo=35843,Zl=36196,Ks=5121,Xl=5123,Ec=5125,Zn=5126,ko=10242,Co=10243,Tl=10497,uf=33071,So=33648,cf=10240,rh=10241,Al=9728,Hc=9729,eu=9984,Ls=9985,mu=9986,kc=9987,Of=33170,Gc=4352,vd=4353,Bf=4354,ss=34046,ff=3317,ih=37440,Vl=37441,Js=37443,hc=37444,Cc=33984,ws=[eu,mu,Ls,kc],$s=[0,ho,Mo,Oo,Sa],hs={};hs[ho]=hs[go]=hs[cl]=1,hs[Cs]=hs[Mo]=2,hs[Oo]=hs[ml]=3,hs[Sa]=hs[Ys]=4;function Ms(At){return"[object "+At+"]"}var dc=Ms("HTMLCanvasElement"),Sl=Ms("OffscreenCanvas"),ec=Ms("CanvasRenderingContext2D"),Ps=Ms("ImageBitmap"),ov=Ms("HTMLImageElement"),wo=Ms("HTMLVideoElement"),Od=Object.keys(Se).concat([dc,Sl,ec,Ps,ov,wo]),$o=[];$o[Ks]=1,$o[Zn]=4,$o[Hs]=2,$o[Xl]=2,$o[Ec]=4;var Ja=[];Ja[xo]=2,Ja[zs]=2,Ja[ks]=2,Ja[Cs]=4,Ja[Eo]=.5,Ja[fs]=.5,Ja[Ql]=1,Ja[Hu]=1,Ja[fc]=.5,Ja[ms]=1,Ja[on]=1,Ja[fa]=.5,Ja[Qu]=.25,Ja[Rl]=.5,Ja[vo]=.25,Ja[Zl]=.5;function Ef(At){return Array.isArray(At)&&(At.length===0||typeof At[0]=="number")}function tc(At){if(!Array.isArray(At))return!1;var Er=At.length;return!(Er===0||!an(At[0]))}function uu(At){return Object.prototype.toString.call(At)}function Mh(At){return uu(At)===dc}function jc(At){return uu(At)===Sl}function kf(At){return uu(At)===ec}function Ml(At){return uu(At)===Ps}function Yh(At){return uu(At)===ov}function Eh(At){return uu(At)===wo}function nh(At){if(!At)return!1;var Er=uu(At);return Od.indexOf(Er)>=0?!0:Ef(At)||tc(At)||Nr(At)}function hf(At){return Se[Object.prototype.toString.call(At)]|0}function kh(At,Er){var Wr=Er.length;switch(At.type){case Ks:case Xl:case Ec:case Zn:var wi=W.allocType(At.type,Wr);wi.set(Er),At.data=wi;break;case Hs:At.data=Yi(Er);break;default:}}function Kh(At,Er){return W.allocType(At.type===Hs?Zn:At.type,Er)}function rc(At,Er){At.type===Hs?(At.data=Yi(Er),W.freeType(Er)):At.data=Er}function ah(At,Er,Wr,wi,Ui,Oi){for(var Bi=At.width,cn=At.height,On=At.channels,Bn=Bi*cn*On,yn=Kh(At,Bn),to=0,Rn=0;Rn=1;)cn+=Bi*On*On,On/=2;return cn}else return Bi*Wr*wi}function df(At,Er,Wr,wi,Ui,Oi,Bi){var cn={"don't care":Gc,"dont care":Gc,nice:Bf,fast:vd},On={repeat:Tl,clamp:uf,mirror:So},Bn={nearest:Al,linear:Hc},yn=e({mipmap:kc,"nearest mipmap nearest":eu,"linear mipmap nearest":Ls,"nearest mipmap linear":mu,"linear mipmap linear":kc},Bn),to={none:0,browser:hc},Rn={uint8:Ks,rgba4:Zs,rgb565:wl,"rgb5 a1":Xs},Dn={alpha:go,luminance:ho,"luminance alpha":Mo,rgb:Oo,rgba:Sa,rgba4:xo,"rgb5 a1":zs,rgb565:ks},fn={};Er.ext_srgb&&(Dn.srgb=ml,Dn.srgba=Ys),Er.oes_texture_float&&(Rn.float32=Rn.float=Zn),Er.oes_texture_half_float&&(Rn.float16=Rn["half float"]=Hs),Er.webgl_depth_texture&&(e(Dn,{depth:cl,"depth stencil":Cs}),e(Rn,{uint16:Xl,uint32:Ec,"depth stencil":os})),Er.webgl_compressed_texture_s3tc&&e(fn,{"rgb s3tc dxt1":Eo,"rgba s3tc dxt1":fs,"rgba s3tc dxt3":Ql,"rgba s3tc dxt5":Hu}),Er.webgl_compressed_texture_atc&&e(fn,{"rgb atc":fc,"rgba atc explicit alpha":ms,"rgba atc interpolated alpha":on}),Er.webgl_compressed_texture_pvrtc&&e(fn,{"rgb pvrtc 4bppv1":fa,"rgb pvrtc 2bppv1":Qu,"rgba pvrtc 4bppv1":Rl,"rgba pvrtc 2bppv1":vo}),Er.webgl_compressed_texture_etc1&&(fn["rgb etc1"]=Zl);var Ai=Array.prototype.slice.call(At.getParameter(hi));Object.keys(fn).forEach(function(de){var Ie=fn[de];Ai.indexOf(Ie)>=0&&(Dn[de]=Ie)});var ji=Object.keys(Dn);Wr.textureFormats=ji;var Ln=[];Object.keys(Dn).forEach(function(de){var Ie=Dn[de];Ln[Ie]=de});var Un=[];Object.keys(Rn).forEach(function(de){var Ie=Rn[de];Un[Ie]=de});var gn=[];Object.keys(Bn).forEach(function(de){var Ie=Bn[de];gn[Ie]=de});var ca=[];Object.keys(yn).forEach(function(de){var Ie=yn[de];ca[Ie]=de});var Kn=[];Object.keys(On).forEach(function(de){var Ie=On[de];Kn[Ie]=de});var Za=ji.reduce(function(de,Ie){var $e=Dn[Ie];return $e===ho||$e===go||$e===ho||$e===Mo||$e===cl||$e===Cs||Er.ext_srgb&&($e===ml||$e===Ys)?de[$e]=$e:$e===zs||Ie.indexOf("rgba")>=0?de[$e]=Sa:de[$e]=Oo,de},{});function wn(){this.internalformat=Sa,this.format=Sa,this.type=Ks,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=hc,this.width=0,this.height=0,this.channels=0}function vn(de,Ie){de.internalformat=Ie.internalformat,de.format=Ie.format,de.type=Ie.type,de.compressed=Ie.compressed,de.premultiplyAlpha=Ie.premultiplyAlpha,de.flipY=Ie.flipY,de.unpackAlignment=Ie.unpackAlignment,de.colorSpace=Ie.colorSpace,de.width=Ie.width,de.height=Ie.height,de.channels=Ie.channels}function Aa(de,Ie){if(!(typeof Ie!="object"||!Ie)){if("premultiplyAlpha"in Ie&&(de.premultiplyAlpha=Ie.premultiplyAlpha),"flipY"in Ie&&(de.flipY=Ie.flipY),"alignment"in Ie&&(de.unpackAlignment=Ie.alignment),"colorSpace"in Ie&&(de.colorSpace=to[Ie.colorSpace]),"type"in Ie){var $e=Ie.type;de.type=Rn[$e]}var pt=de.width,Kt=de.height,ir=de.channels,Jt=!1;"shape"in Ie?(pt=Ie.shape[0],Kt=Ie.shape[1],Ie.shape.length===3&&(ir=Ie.shape[2],Jt=!0)):("radius"in Ie&&(pt=Kt=Ie.radius),"width"in Ie&&(pt=Ie.width),"height"in Ie&&(Kt=Ie.height),"channels"in Ie&&(ir=Ie.channels,Jt=!0)),de.width=pt|0,de.height=Kt|0,de.channels=ir|0;var vt=!1;if("format"in Ie){var Pt=Ie.format,Wt=de.internalformat=Dn[Pt];de.format=Za[Wt],Pt in Rn&&("type"in Ie||(de.type=Rn[Pt])),Pt in fn&&(de.compressed=!0),vt=!0}!Jt&&vt?de.channels=hs[de.format]:Jt&&!vt&&de.channels!==$s[de.format]&&(de.format=de.internalformat=$s[de.channels])}}function aa(de){At.pixelStorei(ih,de.flipY),At.pixelStorei(Vl,de.premultiplyAlpha),At.pixelStorei(Js,de.colorSpace),At.pixelStorei(ff,de.unpackAlignment)}function Xn(){wn.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function Vn(de,Ie){var $e=null;if(nh(Ie)?$e=Ie:Ie&&(Aa(de,Ie),"x"in Ie&&(de.xOffset=Ie.x|0),"y"in Ie&&(de.yOffset=Ie.y|0),nh(Ie.data)&&($e=Ie.data)),Ie.copy){var pt=Ui.viewportWidth,Kt=Ui.viewportHeight;de.width=de.width||pt-de.xOffset,de.height=de.height||Kt-de.yOffset,de.needsCopy=!0}else if(!$e)de.width=de.width||1,de.height=de.height||1,de.channels=de.channels||4;else if(Or($e))de.channels=de.channels||4,de.data=$e,!("type"in Ie)&&de.type===Ks&&(de.type=hf($e));else if(Ef($e))de.channels=de.channels||4,kh(de,$e),de.alignment=1,de.needsFree=!0;else if(Nr($e)){var ir=$e.data;!Array.isArray(ir)&&de.type===Ks&&(de.type=hf(ir));var Jt=$e.shape,vt=$e.stride,Pt,Wt,rr,dr,pr,kr;Jt.length===3?(rr=Jt[2],kr=vt[2]):(rr=1,kr=1),Pt=Jt[0],Wt=Jt[1],dr=vt[0],pr=vt[1],de.alignment=1,de.width=Pt,de.height=Wt,de.channels=rr,de.format=de.internalformat=$s[rr],de.needsFree=!0,ah(de,ir,dr,pr,kr,$e.offset)}else if(Mh($e)||jc($e)||kf($e))Mh($e)||jc($e)?de.element=$e:de.element=$e.canvas,de.width=de.element.width,de.height=de.element.height,de.channels=4;else if(Ml($e))de.element=$e,de.width=$e.width,de.height=$e.height,de.channels=4;else if(Yh($e))de.element=$e,de.width=$e.naturalWidth,de.height=$e.naturalHeight,de.channels=4;else if(Eh($e))de.element=$e,de.width=$e.videoWidth,de.height=$e.videoHeight,de.channels=4;else if(tc($e)){var Ar=de.width||$e[0].length,gr=de.height||$e.length,Cr=de.channels;an($e[0][0])?Cr=Cr||$e[0][0].length:Cr=Cr||1;for(var cr=Ne.shape($e),Gr=1,ei=0;ei>=Kt,$e.height>>=Kt,Vn($e,pt[Kt]),de.mipmask|=1<=0&&!("faces"in Ie)&&(de.genMipmaps=!0)}if("mag"in Ie){var pt=Ie.mag;de.magFilter=Bn[pt]}var Kt=de.wrapS,ir=de.wrapT;if("wrap"in Ie){var Jt=Ie.wrap;typeof Jt=="string"?Kt=ir=On[Jt]:Array.isArray(Jt)&&(Kt=On[Jt[0]],ir=On[Jt[1]])}else{if("wrapS"in Ie){var vt=Ie.wrapS;Kt=On[vt]}if("wrapT"in Ie){var Pt=Ie.wrapT;ir=On[Pt]}}if(de.wrapS=Kt,de.wrapT=ir,"anisotropic"in Ie){var Wt=Ie.anisotropic;de.anisotropic=Ie.anisotropic}if("mipmap"in Ie){var rr=!1;switch(typeof Ie.mipmap){case"string":de.mipmapHint=cn[Ie.mipmap],de.genMipmaps=!0,rr=!0;break;case"boolean":rr=de.genMipmaps=Ie.mipmap;break;case"object":de.genMipmaps=!1,rr=!0;break;default:}rr&&!("min"in Ie)&&(de.minFilter=eu)}}function wc(de,Ie){At.texParameteri(Ie,rh,de.minFilter),At.texParameteri(Ie,cf,de.magFilter),At.texParameteri(Ie,ko,de.wrapS),At.texParameteri(Ie,Co,de.wrapT),Er.ext_texture_filter_anisotropic&&At.texParameteri(Ie,ss,de.anisotropic),de.genMipmaps&&(At.hint(Of,de.mipmapHint),At.generateMipmap(Ie))}var yf=0,Gl={},Fc=Wr.maxTextureUnits,ef=Array(Fc).map(function(){return null});function ls(de){wn.call(this),this.mipmask=0,this.internalformat=Sa,this.id=yf++,this.refCount=1,this.target=de,this.texture=At.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new El,Bi.profile&&(this.stats={size:0})}function _f(de){At.activeTexture(Cc),At.bindTexture(de.target,de.texture)}function ns(){var de=ef[0];de?At.bindTexture(de.target,de.texture):At.bindTexture(Ji,null)}function Y(de){var Ie=de.texture,$e=de.unit,pt=de.target;$e>=0&&(At.activeTexture(Cc+$e),At.bindTexture(pt,null),ef[$e]=null),At.deleteTexture(Ie),de.texture=null,de.params=null,de.pixels=null,de.refCount=0,delete Gl[de.id],Oi.textureCount--}e(ls.prototype,{bind:function(){var de=this;de.bindCount+=1;var Ie=de.unit;if(Ie<0){for(var $e=0;$e0)continue;pt.unit=-1}ef[$e]=de,Ie=$e;break}Ie>=Fc,Bi.profile&&Oi.maxTextureUnits>pr)-rr,kr.height=kr.height||($e.height>>pr)-dr,_f($e),ro(kr,Ji,rr,dr,pr),ns(),Oa(kr),pt}function ir(Jt,vt){var Pt=Jt|0,Wt=vt|0||Pt;if(Pt===$e.width&&Wt===$e.height)return pt;pt.width=$e.width=Pt,pt.height=$e.height=Wt,_f($e);for(var rr=0;$e.mipmask>>rr;++rr){var dr=Pt>>rr,pr=Wt>>rr;if(!dr||!pr)break;At.texImage2D(Ji,rr,$e.format,dr,pr,0,$e.format,$e.type,null)}return ns(),Bi.profile&&($e.stats.size=Wc($e.internalformat,$e.type,Pt,Wt,!1,!1)),pt}return pt(de,Ie),pt.subimage=Kt,pt.resize=ir,pt._reglType="texture2d",pt._texture=$e,Bi.profile&&(pt.stats=$e.stats),pt.destroy=function(){$e.decRef()},pt}function K(de,Ie,$e,pt,Kt,ir){var Jt=new ls(ua);Gl[Jt.id]=Jt,Oi.cubeCount++;var vt=new Array(6);function Pt(dr,pr,kr,Ar,gr,Cr){var cr,Gr=Jt.texInfo;for(El.call(Gr),cr=0;cr<6;++cr)vt[cr]=xs();if(typeof dr=="number"||!dr){var ei=dr|0||1;for(cr=0;cr<6;++cr)Po(vt[cr],ei,ei)}else if(typeof dr=="object")if(pr)Jo(vt[0],dr),Jo(vt[1],pr),Jo(vt[2],kr),Jo(vt[3],Ar),Jo(vt[4],gr),Jo(vt[5],Cr);else if(bc(Gr,dr),Aa(Jt,dr),"faces"in dr){var yi=dr.faces;for(cr=0;cr<6;++cr)vn(vt[cr],Jt),Jo(vt[cr],yi[cr])}else for(cr=0;cr<6;++cr)Jo(vt[cr],dr);for(vn(Jt,vt[0]),Gr.genMipmaps?Jt.mipmask=(vt[0].width<<1)-1:Jt.mipmask=vt[0].mipmask,Jt.internalformat=vt[0].internalformat,Pt.width=vt[0].width,Pt.height=vt[0].height,_f(Jt),cr=0;cr<6;++cr)Yl(vt[cr],Fn+cr);for(wc(Gr,ua),ns(),Bi.profile&&(Jt.stats.size=Wc(Jt.internalformat,Jt.type,Pt.width,Pt.height,Gr.genMipmaps,!0)),Pt.format=Ln[Jt.internalformat],Pt.type=Un[Jt.type],Pt.mag=gn[Gr.magFilter],Pt.min=ca[Gr.minFilter],Pt.wrapS=Kn[Gr.wrapS],Pt.wrapT=Kn[Gr.wrapT],cr=0;cr<6;++cr)Qc(vt[cr]);return Pt}function Wt(dr,pr,kr,Ar,gr){var Cr=kr|0,cr=Ar|0,Gr=gr|0,ei=Jn();return vn(ei,Jt),ei.width=0,ei.height=0,Vn(ei,pr),ei.width=ei.width||(Jt.width>>Gr)-Cr,ei.height=ei.height||(Jt.height>>Gr)-cr,_f(Jt),ro(ei,Fn+dr,Cr,cr,Gr),ns(),Oa(ei),Pt}function rr(dr){var pr=dr|0;if(pr!==Jt.width){Pt.width=Jt.width=pr,Pt.height=Jt.height=pr,_f(Jt);for(var kr=0;kr<6;++kr)for(var Ar=0;Jt.mipmask>>Ar;++Ar)At.texImage2D(Fn+kr,Ar,Jt.format,pr>>Ar,pr>>Ar,0,Jt.format,Jt.type,null);return ns(),Bi.profile&&(Jt.stats.size=Wc(Jt.internalformat,Jt.type,Pt.width,Pt.height,!1,!0)),Pt}}return Pt(de,Ie,$e,pt,Kt,ir),Pt.subimage=Wt,Pt.resize=rr,Pt._reglType="textureCube",Pt._texture=Jt,Bi.profile&&(Pt.stats=Jt.stats),Pt.destroy=function(){Jt.decRef()},Pt}function O(){for(var de=0;de>pt,$e.height>>pt,0,$e.internalformat,$e.type,null);else for(var Kt=0;Kt<6;++Kt)At.texImage2D(Fn+Kt,pt,$e.internalformat,$e.width>>pt,$e.height>>pt,0,$e.internalformat,$e.type,null);wc($e.texInfo,$e.target)})}function pe(){for(var de=0;de=0?Qc=!0:On.indexOf(El)>=0&&(Qc=!1))),("depthTexture"in ls||"depthStencilTexture"in ls)&&(ef=!!(ls.depthTexture||ls.depthStencilTexture)),"depth"in ls&&(typeof ls.depth=="boolean"?Yl=ls.depth:(yf=ls.depth,$c=!1)),"stencil"in ls&&(typeof ls.stencil=="boolean"?$c=ls.stencil:(Gl=ls.stencil,Yl=!1)),"depthStencil"in ls&&(typeof ls.depthStencil=="boolean"?Yl=$c=ls.depthStencil:(Fc=ls.depthStencil,Yl=!1,$c=!1))}var ns=null,Y=null,z=null,K=null;if(Array.isArray(xs))ns=xs.map(fn);else if(xs)ns=[fn(xs)];else for(ns=new Array(wc),_o=0;_o0&&(Oa.depth=Vn[0].depth,Oa.stencil=Vn[0].stencil,Oa.depthStencil=Vn[0].depthStencil),Vn[Jn]?Vn[Jn](Oa):Vn[Jn]=vn(Oa)}return e(ma,{width:_o,height:_o,color:El})}function ro(Ao){var Jn,Oa=Ao|0;if(Oa===ma.width)return ma;var _o=ma.color;for(Jn=0;Jn<_o.length;++Jn)_o[Jn].resize(Oa);for(Jn=0;Jn<6;++Jn)Vn[Jn].resize(Oa);return ma.width=ma.height=Oa,ma}return ma(Xn),e(ma,{faces:Vn,resize:ro,_reglType:"framebufferCube",destroy:function(){Vn.forEach(function(Ao){Ao.destroy()})}})}function aa(){Bi.cur=null,Bi.next=null,Bi.dirty=!0,ut(gn).forEach(function(Xn){Xn.framebuffer=At.createFramebuffer(),wn(Xn)})}return e(Bi,{getFramebuffer:function(Xn){if(typeof Xn=="function"&&Xn._reglType==="framebuffer"){var Vn=Xn._framebuffer;if(Vn instanceof ca)return Vn}return null},create:vn,createCube:Aa,clear:function(){ut(gn).forEach(Za)},restore:aa})}var md=5126,sh=34962,Fs=34963;function _u(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=md,this.offset=0,this.stride=0,this.divisor=0}function xu(At,Er,Wr,wi,Ui,Oi,Bi){for(var cn=Wr.maxAttributes,On=new Array(cn),Bn=0;Bn=_o.byteLength?Po.subdata(_o):(Po.destroy(),vn.buffers[Ao]=null)),vn.buffers[Ao]||(Po=vn.buffers[Ao]=Ui.create(Jn,sh,!1,!0)),Oa.buffer=Ui.getBuffer(Po),Oa.size=Oa.buffer.dimension|0,Oa.normalized=!1,Oa.type=Oa.buffer.dtype,Oa.offset=0,Oa.stride=0,Oa.divisor=0,Oa.state=1,ma[Ao]=1}else Ui.getBuffer(Jn)?(Oa.buffer=Ui.getBuffer(Jn),Oa.size=Oa.buffer.dimension|0,Oa.normalized=!1,Oa.type=Oa.buffer.dtype,Oa.offset=0,Oa.stride=0,Oa.divisor=0,Oa.state=1):Ui.getBuffer(Jn.buffer)?(Oa.buffer=Ui.getBuffer(Jn.buffer),Oa.size=(+Jn.size||Oa.buffer.dimension)|0,Oa.normalized=!!Jn.normalized||!1,"type"in Jn?Oa.type=bi[Jn.type]:Oa.type=Oa.buffer.dtype,Oa.offset=(Jn.offset||0)|0,Oa.stride=(Jn.stride||0)|0,Oa.divisor=(Jn.divisor||0)|0,Oa.state=1):"x"in Jn&&(Oa.x=+Jn.x||0,Oa.y=+Jn.y||0,Oa.z=+Jn.z||0,Oa.w=+Jn.w||0,Oa.state=2)}for(var Jo=0;Jo1)for(var aa=0;aaAi&&(Ai=ji.stats.uniformsCount)}),Ai},Wr.getMaxAttributesCount=function(){var Ai=0;return yn.forEach(function(ji){ji.stats.attributesCount>Ai&&(Ai=ji.stats.attributesCount)}),Ai});function fn(){Ui={},Oi={};for(var Ai=0;Ai16&&(Wr=Ti(Wr,At.length*8));for(var wi=Array(16),Ui=Array(16),Oi=0;Oi<16;Oi++)wi[Oi]=Wr[Oi]^909522486,Ui[Oi]=Wr[Oi]^1549556828;var Bi=Ti(wi.concat(gf(Er)),512+Er.length*8);return gt(Ti(Ui.concat(Bi),768))}function iu(At){for(var Er=Ih?"0123456789ABCDEF":"0123456789abcdef",Wr="",wi,Ui=0;Ui>>4&15)+Er.charAt(wi&15);return Wr}function mc(At){for(var Er="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Wr="",wi=At.length,Ui=0;UiAt.length*8?Wr+=Wu:Wr+=Er.charAt(Oi>>>6*(3-Bi)&63);return Wr}function Yc(At,Er){var Wr=Er.length,wi=Array(),Ui,Oi,Bi,cn,On=Array(Math.ceil(At.length/2));for(Ui=0;Ui0;){for(cn=Array(),Bi=0,Ui=0;Ui0||Oi>0)&&(cn[cn.length]=Oi);wi[wi.length]=Bi,On=cn}var Bn="";for(Ui=wi.length-1;Ui>=0;Ui--)Bn+=Er.charAt(wi[Ui]);var yn=Math.ceil(At.length*8/(Math.log(Er.length)/Math.log(2)));for(Ui=Bn.length;Ui>>6&31,128|wi&63):wi<=65535?Er+=String.fromCharCode(224|wi>>>12&15,128|wi>>>6&63,128|wi&63):wi<=2097151&&(Er+=String.fromCharCode(240|wi>>>18&7,128|wi>>>12&63,128|wi>>>6&63,128|wi&63));return Er}function gf(At){for(var Er=Array(At.length>>2),Wr=0;Wr>5]|=(At.charCodeAt(Wr/8)&255)<<24-Wr%32;return Er}function gt(At){for(var Er="",Wr=0;Wr>5]>>>24-Wr%32&255);return Er}function Bt(At,Er){return At>>>Er|At<<32-Er}function wr(At,Er){return At>>>Er}function vr(At,Er,Wr){return At&Er^~At&Wr}function Ur(At,Er,Wr){return At&Er^At&Wr^Er&Wr}function fi(At){return Bt(At,2)^Bt(At,13)^Bt(At,22)}function xi(At){return Bt(At,6)^Bt(At,11)^Bt(At,25)}function Fi(At){return Bt(At,7)^Bt(At,18)^wr(At,3)}function Xi(At){return Bt(At,17)^Bt(At,19)^wr(At,10)}var hn=new Array(1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998);function Ti(At,Er){var Wr=new Array(1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225),wi=new Array(64),Ui,Oi,Bi,cn,On,Bn,yn,to,Rn,Dn,fn,Ai;for(At[Er>>5]|=128<<24-Er%32,At[(Er+64>>9<<4)+15]=Er,Rn=0;Rn>16)+(Er>>16)+(Wr>>16);return wi<<16|Wr&65535}function Ii(At){return Array.prototype.slice.call(At)}function mi(At){return Ii(At).join("")}function Pn(At){var Er=At&&At.cache,Wr=0,wi=[],Ui=[],Oi=[];function Bi(fn,Ai){var ji=Ai&&Ai.stable;if(!ji){for(var Ln=0;Ln0&&(fn.push(Un,"="),fn.push.apply(fn,Ii(arguments)),fn.push(";")),Un}return e(Ai,{def:Ln,toString:function(){return mi([ji.length>0?"var "+ji.join(",")+";":"",mi(fn)])}})}function On(){var fn=cn(),Ai=cn(),ji=fn.toString,Ln=Ai.toString;function Un(gn,ca){Ai(gn,ca,"=",fn.def(gn,ca),";")}return e(function(){fn.apply(fn,Ii(arguments))},{def:fn.def,entry:fn,exit:Ai,save:Un,set:function(gn,ca,Kn){Un(gn,ca),fn(gn,ca,"=",Kn,";")},toString:function(){return ji()+Ln()}})}function Bn(){var fn=mi(arguments),Ai=On(),ji=On(),Ln=Ai.toString,Un=ji.toString;return e(Ai,{then:function(){return Ai.apply(Ai,Ii(arguments)),this},else:function(){return ji.apply(ji,Ii(arguments)),this},toString:function(){var gn=Un();return gn&&(gn="else{"+gn+"}"),mi(["if(",fn,"){",Ln(),"}",gn])}})}var yn=cn(),to={};function Rn(fn,Ai){var ji=[];function Ln(){var Za="a"+ji.length;return ji.push(Za),Za}Ai=Ai||0;for(var Un=0;Un":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Kr={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},ii={cw:we,ccw:Be};function vi(At){return Array.isArray(At)||Or(At)||Nr(At)}function ci(At){return At.sort(function(Er,Wr){return Er===ee?-1:Wr===ee?1:Er=1,wi>=2,Er)}else if(Wr===Xo){var Ui=At.data;return new Jr(Ui.thisDep,Ui.contextDep,Ui.propDep,Er)}else{if(Wr===Ts)return new Jr(!1,!1,!1,Er);if(Wr===Qo){for(var Oi=!1,Bi=!1,cn=!1,On=0;On=1&&(Bi=!0),yn>=2&&(cn=!0)}else Bn.type===Xo&&(Oi=Oi||Bn.data.thisDep,Bi=Bi||Bn.data.contextDep,cn=cn||Bn.data.propDep)}return new Jr(Oi,Bi,cn,Er)}else return new Jr(Wr===mo,Wr===Ua,Wr===sn,Er)}}var Nn=new Jr(!1,!1,!1,function(){});function ga(At,Er,Wr,wi,Ui,Oi,Bi,cn,On,Bn,yn,to,Rn,Dn,fn,Ai){var ji=Bn.Record,Ln={add:32774,subtract:32778,"reverse subtract":32779};Wr.ext_blend_minmax&&(Ln.min=Ue,Ln.max=We);var Un=Wr.angle_instanced_arrays,gn=Wr.webgl_draw_buffers,ca=Wr.oes_vertex_array_object,Kn={dirty:!0,profile:Ai.profile},Za={},wn=[],vn={},Aa={};function aa(vt){return vt.replace(".","_")}function Xn(vt,Pt,Wt){var rr=aa(vt);wn.push(vt),Za[rr]=Kn[rr]=!!Wt,vn[rr]=Pt}function Vn(vt,Pt,Wt){var rr=aa(vt);wn.push(vt),Array.isArray(Wt)?(Kn[rr]=Wt.slice(),Za[rr]=Wt.slice()):Kn[rr]=Za[rr]=Wt,Aa[rr]=Pt}function ma(vt){return!!isNaN(vt)}Xn(ys,di),Xn(Bo,Xr),Vn(yl,"blendColor",[0,0,0,0]),Vn(Gs,"blendEquationSeparate",[lr,lr]),Vn(Rs,"blendFuncSeparate",[or,zt,or,zt]),Xn(ia,Ci,!0),Vn(Ka,"depthFunc",Dr),Vn(vs,"depthRange",[0,1]),Vn(Ko,"depthMask",!0),Vn(iu,iu,[!0,!0,!0,!0]),Xn(Ru,zr),Vn(ac,"cullFace",oe),Vn(mf,mf,Be),Vn(bu,bu,1),Xn(Kc,Mn),Vn(Du,"polygonOffset",[0,0]),Xn(Dc,pa),Xn(Da,ea),Vn(eo,"sampleCoverage",[1,!1]),Xn(Jc,Li),Vn(yc,"stencilMask",-1),Vn(_c,"stencilFunc",[wt,0,-1]),Vn(le,"stencilOpSeparate",[Z,tt,tt,tt]),Vn(w,"stencilOpSeparate",[oe,tt,tt,tt]),Xn(B,Qi),Vn(Q,"scissor",[0,0,At.drawingBufferWidth,At.drawingBufferHeight]),Vn(ee,ee,[0,0,At.drawingBufferWidth,At.drawingBufferHeight]);var ro={gl:At,context:Rn,strings:Er,next:Za,current:Kn,draw:to,elements:Oi,buffer:Ui,shader:yn,attributes:Bn.state,vao:Bn,uniforms:On,framebuffer:cn,extensions:Wr,timer:Dn,isBufferArgs:vi},Ao={primTypes:Ki,compareFuncs:qr,blendFuncs:ui,blendEquations:Ln,stencilOps:Kr,glTypes:bi,orientationType:ii};gn&&(Ao.backBuffer=[oe],Ao.drawBuffer=M(wi.maxDrawbuffers,function(vt){return vt===0?[0]:M(vt,function(Pt){return oi+Pt})}));var Jn=0;function Oa(){var vt=Pn({cache:fn}),Pt=vt.link,Wt=vt.global;vt.id=Jn++,vt.batchId="0";var rr=Pt(ro),dr=vt.shared={props:"a0"};Object.keys(ro).forEach(function(Cr){dr[Cr]=Wt.def(rr,".",Cr)});var pr=vt.next={},kr=vt.current={};Object.keys(Aa).forEach(function(Cr){Array.isArray(Kn[Cr])&&(pr[Cr]=Wt.def(dr.next,".",Cr),kr[Cr]=Wt.def(dr.current,".",Cr))});var Ar=vt.constants={};Object.keys(Ao).forEach(function(Cr){Ar[Cr]=Wt.def(JSON.stringify(Ao[Cr]))}),vt.invoke=function(Cr,cr){switch(cr.type){case Cn:var Gr=["this",dr.context,dr.props,vt.batchId];return Cr.def(Pt(cr.data),".call(",Gr.slice(0,Math.max(cr.data.length+1,4)),")");case sn:return Cr.def(dr.props,cr.data);case Ua:return Cr.def(dr.context,cr.data);case mo:return Cr.def("this",cr.data);case Xo:return cr.data.append(vt,Cr),cr.data.ref;case Ts:return cr.data.toString();case Qo:return cr.data.map(function(ei){return vt.invoke(Cr,ei)})}},vt.attribCache={};var gr={};return vt.scopeAttrib=function(Cr){var cr=Er.id(Cr);if(cr in gr)return gr[cr];var Gr=Bn.scope[cr];Gr||(Gr=Bn.scope[cr]=new ji);var ei=gr[cr]=Pt(Gr);return ei},vt}function _o(vt){var Pt=vt.static,Wt=vt.dynamic,rr;if(se in Pt){var dr=!!Pt[se];rr=dn(function(kr,Ar){return dr}),rr.enable=dr}else if(se in Wt){var pr=Wt[se];rr=En(pr,function(kr,Ar){return kr.invoke(Ar,pr)})}return rr}function Po(vt,Pt){var Wt=vt.static,rr=vt.dynamic;if(qe in Wt){var dr=Wt[qe];return dr?(dr=cn.getFramebuffer(dr),dn(function(kr,Ar){var gr=kr.link(dr),Cr=kr.shared;Ar.set(Cr.framebuffer,".next",gr);var cr=Cr.context;return Ar.set(cr,"."+Oe,gr+".width"),Ar.set(cr,"."+Je,gr+".height"),gr})):dn(function(kr,Ar){var gr=kr.shared;Ar.set(gr.framebuffer,".next","null");var Cr=gr.context;return Ar.set(Cr,"."+Oe,Cr+"."+Dt),Ar.set(Cr,"."+Je,Cr+"."+Ut),"null"})}else if(qe in rr){var pr=rr[qe];return En(pr,function(kr,Ar){var gr=kr.invoke(Ar,pr),Cr=kr.shared,cr=Cr.framebuffer,Gr=Ar.def(cr,".getFramebuffer(",gr,")");Ar.set(cr,".next",Gr);var ei=Cr.context;return Ar.set(ei,"."+Oe,Gr+"?"+Gr+".width:"+ei+"."+Dt),Ar.set(ei,"."+Je,Gr+"?"+Gr+".height:"+ei+"."+Ut),Gr})}else return null}function Jo(vt,Pt,Wt){var rr=vt.static,dr=vt.dynamic;function pr(gr){if(gr in rr){var Cr=rr[gr],cr=!0,Gr=Cr.x|0,ei=Cr.y|0,yi,tn;return"width"in Cr?yi=Cr.width|0:cr=!1,"height"in Cr?tn=Cr.height|0:cr=!1,new Jr(!cr&&Pt&&Pt.thisDep,!cr&&Pt&&Pt.contextDep,!cr&&Pt&&Pt.propDep,function(Qn,qn){var rn=Qn.shared.context,bn=yi;"width"in Cr||(bn=qn.def(rn,".",Oe,"-",Gr));var mn=tn;return"height"in Cr||(mn=qn.def(rn,".",Je,"-",ei)),[Gr,ei,bn,mn]})}else if(gr in dr){var Ri=dr[gr],ln=En(Ri,function(Qn,qn){var rn=Qn.invoke(qn,Ri),bn=Qn.shared.context,mn=qn.def(rn,".x|0"),Gn=qn.def(rn,".y|0"),da=qn.def('"width" in ',rn,"?",rn,".width|0:","(",bn,".",Oe,"-",mn,")"),No=qn.def('"height" in ',rn,"?",rn,".height|0:","(",bn,".",Je,"-",Gn,")");return[mn,Gn,da,No]});return Pt&&(ln.thisDep=ln.thisDep||Pt.thisDep,ln.contextDep=ln.contextDep||Pt.contextDep,ln.propDep=ln.propDep||Pt.propDep),ln}else return Pt?new Jr(Pt.thisDep,Pt.contextDep,Pt.propDep,function(Qn,qn){var rn=Qn.shared.context;return[0,0,qn.def(rn,".",Oe),qn.def(rn,".",Je)]}):null}var kr=pr(ee);if(kr){var Ar=kr;kr=new Jr(kr.thisDep,kr.contextDep,kr.propDep,function(gr,Cr){var cr=Ar.append(gr,Cr),Gr=gr.shared.context;return Cr.set(Gr,"."+He,cr[2]),Cr.set(Gr,"."+et,cr[3]),cr})}return{viewport:kr,scissor_box:pr(Q)}}function Xl(vt,Pt){var Wt=vt.static,rr=typeof Wt[it]=="string"&&typeof Wt[je]=="string";if(rr){if(Object.keys(Pt.dynamic).length>0)return null;var dr=Pt.static,pr=Object.keys(dr);if(pr.length>0&&typeof dr[pr[0]]=="number"){for(var kr=[],Ar=0;Ar"+mn+"?"+cr+".constant["+mn+"]:0;"}).join(""),"}}else{","if(",yi,"(",cr,".buffer)){",Qn,"=",tn,".createStream(",mr,",",cr,".buffer);","}else{",Qn,"=",tn,".getBuffer(",cr,".buffer);","}",qn,'="type" in ',cr,"?",ei.glTypes,"[",cr,".type]:",Qn,".dtype;",Ri.normalized,"=!!",cr,".normalized;");function rn(bn){Cr(Ri[bn],"=",cr,".",bn,"|0;")}return rn("size"),rn("offset"),rn("stride"),rn("divisor"),Cr("}}"),Cr.exit("if(",Ri.isStream,"){",tn,".destroyStream(",Qn,");","}"),Ri}dr[pr]=En(kr,Ar)}),dr}function wc(vt){var Pt=vt.static,Wt=vt.dynamic,rr={};return Object.keys(Pt).forEach(function(dr){var pr=Pt[dr];rr[dr]=dn(function(kr,Ar){return typeof pr=="number"||typeof pr=="boolean"?""+pr:kr.link(pr)})}),Object.keys(Wt).forEach(function(dr){var pr=Wt[dr];rr[dr]=En(pr,function(kr,Ar){return kr.invoke(Ar,pr)})}),rr}function yf(vt,Pt,Wt,rr,dr){var pr=vt.static,kr=vt.dynamic,Ar=Xl(vt,Pt),gr=Po(vt,dr),Cr=Jo(vt,gr,dr),cr=xs(vt,dr),Gr=Qc(vt,dr),ei=$c(vt,dr,Ar);function yi(rn){var bn=Cr[rn];bn&&(Gr[rn]=bn)}yi(ee),yi(aa(Q));var tn=Object.keys(Gr).length>0,Ri={framebuffer:gr,draw:cr,shader:ei,state:Gr,dirty:tn,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(Ri.profile=_o(vt,dr),Ri.uniforms=El(Wt,dr),Ri.drawVAO=Ri.scopeVAO=cr.vao,!Ri.drawVAO&&ei.program&&!Ar&&Wr.angle_instanced_arrays&&cr.static.elements){var ln=!0,Qn=ei.program.attributes.map(function(rn){var bn=Pt.static[rn];return ln=ln&&!!bn,bn});if(ln&&Qn.length>0){var qn=Bn.getVAO(Bn.createVAO({attributes:Qn,elements:cr.static.elements}));Ri.drawVAO=new Jr(null,null,null,function(rn,bn){return rn.link(qn)}),Ri.useVAO=!0}}return Ar?Ri.useVAO=!0:Ri.attributes=bc(Pt,dr),Ri.context=wc(rr,dr),Ri}function Hl(vt,Pt,Wt){var rr=vt.shared,dr=rr.context,pr=vt.scope();Object.keys(Wt).forEach(function(kr){Pt.save(dr,"."+kr);var Ar=Wt[kr],gr=Ar.append(vt,Pt);Array.isArray(gr)?pr(dr,".",kr,"=[",gr.join(),"];"):pr(dr,".",kr,"=",gr,";")}),Pt(pr)}function Fc(vt,Pt,Wt,rr){var dr=vt.shared,pr=dr.gl,kr=dr.framebuffer,Ar;gn&&(Ar=Pt.def(dr.extensions,".webgl_draw_buffers"));var gr=vt.constants,Cr=gr.drawBuffer,cr=gr.backBuffer,Gr;Wt?Gr=Wt.append(vt,Pt):Gr=Pt.def(kr,".next"),rr||Pt("if(",Gr,"!==",kr,".cur){"),Pt("if(",Gr,"){",pr,".bindFramebuffer(",Ir,",",Gr,".framebuffer);"),gn&&Pt(Ar,".drawBuffersWEBGL(",Cr,"[",Gr,".colorAttachments.length]);"),Pt("}else{",pr,".bindFramebuffer(",Ir,",null);"),gn&&Pt(Ar,".drawBuffersWEBGL(",cr,");"),Pt("}",kr,".cur=",Gr,";"),rr||Pt("}")}function ef(vt,Pt,Wt){var rr=vt.shared,dr=rr.gl,pr=vt.current,kr=vt.next,Ar=rr.current,gr=rr.next,Cr=vt.cond(Ar,".dirty");wn.forEach(function(cr){var Gr=aa(cr);if(!(Gr in Wt.state)){var ei,yi;if(Gr in kr){ei=kr[Gr],yi=pr[Gr];var tn=M(Kn[Gr].length,function(ln){return Cr.def(ei,"[",ln,"]")});Cr(vt.cond(tn.map(function(ln,Qn){return ln+"!=="+yi+"["+Qn+"]"}).join("||")).then(dr,".",Aa[Gr],"(",tn,");",tn.map(function(ln,Qn){return yi+"["+Qn+"]="+ln}).join(";"),";"))}else{ei=Cr.def(gr,".",Gr);var Ri=vt.cond(ei,"!==",Ar,".",Gr);Cr(Ri),Gr in vn?Ri(vt.cond(ei).then(dr,".enable(",vn[Gr],");").else(dr,".disable(",vn[Gr],");"),Ar,".",Gr,"=",ei,";"):Ri(dr,".",Aa[Gr],"(",ei,");",Ar,".",Gr,"=",ei,";")}}}),Object.keys(Wt.state).length===0&&Cr(Ar,".dirty=false;"),Pt(Cr)}function ls(vt,Pt,Wt,rr){var dr=vt.shared,pr=vt.current,kr=dr.current,Ar=dr.gl,gr;ci(Object.keys(Wt)).forEach(function(Cr){var cr=Wt[Cr];if(!(rr&&!rr(cr))){var Gr=cr.append(vt,Pt);if(vn[Cr]){var ei=vn[Cr];un(cr)?(gr=vt.link(Gr,{stable:!0}),Pt(vt.cond(gr).then(Ar,".enable(",ei,");").else(Ar,".disable(",ei,");")),Pt(kr,".",Cr,"=",gr,";")):(Pt(vt.cond(Gr).then(Ar,".enable(",ei,");").else(Ar,".disable(",ei,");")),Pt(kr,".",Cr,"=",Gr,";"))}else if(an(Gr)){var yi=pr[Cr];Pt(Ar,".",Aa[Cr],"(",Gr,");",Gr.map(function(tn,Ri){return yi+"["+Ri+"]="+tn}).join(";"),";")}else un(cr)?(gr=vt.link(Gr,{stable:!0}),Pt(Ar,".",Aa[Cr],"(",gr,");",kr,".",Cr,"=",gr,";")):Pt(Ar,".",Aa[Cr],"(",Gr,");",kr,".",Cr,"=",Gr,";")}})}function _f(vt,Pt){Un&&(vt.instancing=Pt.def(vt.shared.extensions,".angle_instanced_arrays"))}function ns(vt,Pt,Wt,rr,dr){var pr=vt.shared,kr=vt.stats,Ar=pr.current,gr=pr.timer,Cr=Wt.profile;function cr(){return typeof performance=="undefined"?"Date.now()":"performance.now()"}var Gr,ei;function yi(rn){Gr=Pt.def(),rn(Gr,"=",cr(),";"),typeof dr=="string"?rn(kr,".count+=",dr,";"):rn(kr,".count++;"),Dn&&(rr?(ei=Pt.def(),rn(ei,"=",gr,".getNumPendingQueries();")):rn(gr,".beginQuery(",kr,");"))}function tn(rn){rn(kr,".cpuTime+=",cr(),"-",Gr,";"),Dn&&(rr?rn(gr,".pushScopeStats(",ei,",",gr,".getNumPendingQueries(),",kr,");"):rn(gr,".endQuery();"))}function Ri(rn){var bn=Pt.def(Ar,".profile");Pt(Ar,".profile=",rn,";"),Pt.exit(Ar,".profile=",bn,";")}var ln;if(Cr){if(un(Cr)){Cr.enable?(yi(Pt),tn(Pt.exit),Ri("true")):Ri("false");return}ln=Cr.append(vt,Pt),Ri(ln)}else ln=Pt.def(Ar,".profile");var Qn=vt.block();yi(Qn),Pt("if(",ln,"){",Qn,"}");var qn=vt.block();tn(qn),Pt.exit("if(",ln,"){",qn,"}")}function Y(vt,Pt,Wt,rr,dr){var pr=vt.shared;function kr(gr){switch(gr){case To:case Ds:case _l:return 2;case Wa:case As:case Vl:return 3;case co:case yo:case Zu:return 4;default:return 1}}function Ar(gr,Cr,cr){var Gr=pr.gl,ei=Pt.def(gr,".location"),yi=Pt.def(pr.attributes,"[",ei,"]"),tn=cr.state,Ri=cr.buffer,ln=[cr.x,cr.y,cr.z,cr.w],Qn=["buffer","normalized","offset","stride"];function qn(){Pt("if(!",yi,".buffer){",Gr,".enableVertexAttribArray(",ei,");}");var bn=cr.type,mn;if(cr.size?mn=Pt.def(cr.size,"||",Cr):mn=Cr,Pt("if(",yi,".type!==",bn,"||",yi,".size!==",mn,"||",Qn.map(function(da){return yi+"."+da+"!=="+cr[da]}).join("||"),"){",Gr,".bindBuffer(",mr,",",Ri,".buffer);",Gr,".vertexAttribPointer(",[ei,mn,bn,cr.normalized,cr.stride,cr.offset],");",yi,".type=",bn,";",yi,".size=",mn,";",Qn.map(function(da){return yi+"."+da+"="+cr[da]+";"}).join(""),"}"),Un){var Gn=cr.divisor;Pt("if(",yi,".divisor!==",Gn,"){",vt.instancing,".vertexAttribDivisorANGLE(",[ei,Gn],");",yi,".divisor=",Gn,";}")}}function rn(){Pt("if(",yi,".buffer){",Gr,".disableVertexAttribArray(",ei,");",yi,".buffer=null;","}if(",Ma.map(function(bn,mn){return yi+"."+bn+"!=="+ln[mn]}).join("||"),"){",Gr,".vertexAttrib4f(",ei,",",ln,");",Ma.map(function(bn,mn){return yi+"."+bn+"="+ln[mn]+";"}).join(""),"}")}tn===Ea?qn():tn===qa?rn():(Pt("if(",tn,"===",Ea,"){"),qn(),Pt("}else{"),rn(),Pt("}"))}rr.forEach(function(gr){var Cr=gr.name,cr=Wt.attributes[Cr],Gr;if(cr){if(!dr(cr))return;Gr=cr.append(vt,Pt)}else{if(!dr(Nn))return;var ei=vt.scopeAttrib(Cr);Gr={},Object.keys(new ji).forEach(function(yi){Gr[yi]=Pt.def(ei,".",yi)})}Ar(vt.link(gr),kr(gr.info.type),Gr)})}function z(vt,Pt,Wt,rr,dr,pr){for(var kr=vt.shared,Ar=kr.gl,gr,Cr=0;Cr1){for(var Do=[],ps=[],fo=0;fo>1)",Ri],");")}function Gn(){Wt(ln,".drawArraysInstancedANGLE(",[ei,yi,tn,Ri],");")}cr&&cr!=="null"?qn?mn():(Wt("if(",cr,"){"),mn(),Wt("}else{"),Gn(),Wt("}")):Gn()}function bn(){function mn(){Wt(pr+".drawElements("+[ei,tn,Qn,yi+"<<(("+Qn+"-"+Ta+")>>1)"]+");")}function Gn(){Wt(pr+".drawArrays("+[ei,yi,tn]+");")}cr&&cr!=="null"?qn?mn():(Wt("if(",cr,"){"),mn(),Wt("}else{"),Gn(),Wt("}")):Gn()}Un&&(typeof Ri!="number"||Ri>=0)?typeof Ri=="string"?(Wt("if(",Ri,">0){"),rn(),Wt("}else if(",Ri,"<0){"),bn(),Wt("}")):rn():bn()}function O(vt,Pt,Wt,rr,dr){var pr=Oa(),kr=pr.proc("body",dr);return Un&&(pr.instancing=kr.def(pr.shared.extensions,".angle_instanced_arrays")),vt(pr,kr,Wt,rr),pr.compile().body}function $(vt,Pt,Wt,rr){_f(vt,Pt),Wt.useVAO?Wt.drawVAO?Pt(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,Pt),");"):Pt(vt.shared.vao,".setVAO(",vt.shared.vao,".targetVAO);"):(Pt(vt.shared.vao,".setVAO(null);"),Y(vt,Pt,Wt,rr.attributes,function(){return!0})),z(vt,Pt,Wt,rr.uniforms,function(){return!0},!1),K(vt,Pt,Pt,Wt)}function pe(vt,Pt){var Wt=vt.proc("draw",1);_f(vt,Wt),Hl(vt,Wt,Pt.context),Fc(vt,Wt,Pt.framebuffer),ef(vt,Wt,Pt),ls(vt,Wt,Pt.state),ns(vt,Wt,Pt,!1,!0);var rr=Pt.shader.progVar.append(vt,Wt);if(Wt(vt.shared.gl,".useProgram(",rr,".program);"),Pt.shader.program)$(vt,Wt,Pt,Pt.shader.program);else{Wt(vt.shared.vao,".setVAO(null);");var dr=vt.global.def("{}"),pr=Wt.def(rr,".id"),kr=Wt.def(dr,"[",pr,"]");Wt(vt.cond(kr).then(kr,".call(this,a0);").else(kr,"=",dr,"[",pr,"]=",vt.link(function(Ar){return O($,vt,Pt,Ar,1)}),"(",rr,");",kr,".call(this,a0);"))}Object.keys(Pt.state).length>0&&Wt(vt.shared.current,".dirty=true;"),vt.shared.vao&&Wt(vt.shared.vao,".setVAO(null);")}function de(vt,Pt,Wt,rr){vt.batchId="a1",_f(vt,Pt);function dr(){return!0}Y(vt,Pt,Wt,rr.attributes,dr),z(vt,Pt,Wt,rr.uniforms,dr,!1),K(vt,Pt,Pt,Wt)}function Ie(vt,Pt,Wt,rr){_f(vt,Pt);var dr=Wt.contextDep,pr=Pt.def(),kr="a0",Ar="a1",gr=Pt.def();vt.shared.props=gr,vt.batchId=pr;var Cr=vt.scope(),cr=vt.scope();Pt(Cr.entry,"for(",pr,"=0;",pr,"<",Ar,";++",pr,"){",gr,"=",kr,"[",pr,"];",cr,"}",Cr.exit);function Gr(Qn){return Qn.contextDep&&dr||Qn.propDep}function ei(Qn){return!Gr(Qn)}if(Wt.needsContext&&Hl(vt,cr,Wt.context),Wt.needsFramebuffer&&Fc(vt,cr,Wt.framebuffer),ls(vt,cr,Wt.state,Gr),Wt.profile&&Gr(Wt.profile)&&ns(vt,cr,Wt,!1,!0),rr)Wt.useVAO?Wt.drawVAO?Gr(Wt.drawVAO)?cr(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,cr),");"):Cr(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,Cr),");"):Cr(vt.shared.vao,".setVAO(",vt.shared.vao,".targetVAO);"):(Cr(vt.shared.vao,".setVAO(null);"),Y(vt,Cr,Wt,rr.attributes,ei),Y(vt,cr,Wt,rr.attributes,Gr)),z(vt,Cr,Wt,rr.uniforms,ei,!1),z(vt,cr,Wt,rr.uniforms,Gr,!0),K(vt,Cr,cr,Wt);else{var yi=vt.global.def("{}"),tn=Wt.shader.progVar.append(vt,cr),Ri=cr.def(tn,".id"),ln=cr.def(yi,"[",Ri,"]");cr(vt.shared.gl,".useProgram(",tn,".program);","if(!",ln,"){",ln,"=",yi,"[",Ri,"]=",vt.link(function(Qn){return O(de,vt,Wt,Qn,2)}),"(",tn,");}",ln,".call(this,a0[",pr,"],",pr,");")}}function $e(vt,Pt){var Wt=vt.proc("batch",2);vt.batchId="0",_f(vt,Wt);var rr=!1,dr=!0;Object.keys(Pt.context).forEach(function(yi){rr=rr||Pt.context[yi].propDep}),rr||(Hl(vt,Wt,Pt.context),dr=!1);var pr=Pt.framebuffer,kr=!1;pr?(pr.propDep?rr=kr=!0:pr.contextDep&&rr&&(kr=!0),kr||Fc(vt,Wt,pr)):Fc(vt,Wt,null),Pt.state.viewport&&Pt.state.viewport.propDep&&(rr=!0);function Ar(yi){return yi.contextDep&&rr||yi.propDep}ef(vt,Wt,Pt),ls(vt,Wt,Pt.state,function(yi){return!Ar(yi)}),(!Pt.profile||!Ar(Pt.profile))&&ns(vt,Wt,Pt,!1,"a1"),Pt.contextDep=rr,Pt.needsContext=dr,Pt.needsFramebuffer=kr;var gr=Pt.shader.progVar;if(gr.contextDep&&rr||gr.propDep)Ie(vt,Wt,Pt,null);else{var Cr=gr.append(vt,Wt);if(Wt(vt.shared.gl,".useProgram(",Cr,".program);"),Pt.shader.program)Ie(vt,Wt,Pt,Pt.shader.program);else{Wt(vt.shared.vao,".setVAO(null);");var cr=vt.global.def("{}"),Gr=Wt.def(Cr,".id"),ei=Wt.def(cr,"[",Gr,"]");Wt(vt.cond(ei).then(ei,".call(this,a0,a1);").else(ei,"=",cr,"[",Gr,"]=",vt.link(function(yi){return O(Ie,vt,Pt,yi,2)}),"(",Cr,");",ei,".call(this,a0,a1);"))}}Object.keys(Pt.state).length>0&&Wt(vt.shared.current,".dirty=true;"),vt.shared.vao&&Wt(vt.shared.vao,".setVAO(null);")}function pt(vt,Pt){var Wt=vt.proc("scope",3);vt.batchId="a2";var rr=vt.shared,dr=rr.current;if(Hl(vt,Wt,Pt.context),Pt.framebuffer&&Pt.framebuffer.append(vt,Wt),ci(Object.keys(Pt.state)).forEach(function(Ar){var gr=Pt.state[Ar],Cr=gr.append(vt,Wt);an(Cr)?Cr.forEach(function(cr,Gr){ma(cr)?Wt.set(vt.next[Ar],"["+Gr+"]",cr):Wt.set(vt.next[Ar],"["+Gr+"]",vt.link(cr,{stable:!0}))}):un(gr)?Wt.set(rr.next,"."+Ar,vt.link(Cr,{stable:!0})):Wt.set(rr.next,"."+Ar,Cr)}),ns(vt,Wt,Pt,!0,!0),[yt,hr,Nt,Sr,Ot].forEach(function(Ar){var gr=Pt.draw[Ar];if(gr){var Cr=gr.append(vt,Wt);ma(Cr)?Wt.set(rr.draw,"."+Ar,Cr):Wt.set(rr.draw,"."+Ar,vt.link(Cr),{stable:!0})}}),Object.keys(Pt.uniforms).forEach(function(Ar){var gr=Pt.uniforms[Ar].append(vt,Wt);Array.isArray(gr)&&(gr="["+gr.map(function(Cr){return ma(Cr)?Cr:vt.link(Cr,{stable:!0})})+"]"),Wt.set(rr.uniforms,"["+vt.link(Er.id(Ar),{stable:!0})+"]",gr)}),Object.keys(Pt.attributes).forEach(function(Ar){var gr=Pt.attributes[Ar].append(vt,Wt),Cr=vt.scopeAttrib(Ar);Object.keys(new ji).forEach(function(cr){Wt.set(Cr,"."+cr,gr[cr])})}),Pt.scopeVAO){var pr=Pt.scopeVAO.append(vt,Wt);ma(pr)?Wt.set(rr.vao,".targetVAO",pr):Wt.set(rr.vao,".targetVAO",vt.link(pr,{stable:!0}))}function kr(Ar){var gr=Pt.shader[Ar];if(gr){var Cr=gr.append(vt,Wt);ma(Cr)?Wt.set(rr.shader,"."+Ar,Cr):Wt.set(rr.shader,"."+Ar,vt.link(Cr,{stable:!0}))}}kr(je),kr(it),Object.keys(Pt.state).length>0&&(Wt(dr,".dirty=true;"),Wt.exit(dr,".dirty=true;")),Wt("a1(",vt.shared.context,",a0,",vt.batchId,");")}function Kt(vt){if(!(typeof vt!="object"||an(vt))){for(var Pt=Object.keys(vt),Wt=0;Wt=0;--O){var $=ro[O];$&&$(fn,null,0)}Wr.flush(),yn&&yn.update()}function Jo(){!_o&&ro.length>0&&(_o=d.next(Po))}function Xl(){_o&&(d.cancel(Po),_o=null)}function $c(O){O.preventDefault(),Ui=!0,Xl(),Ao.forEach(function($){$()})}function xs(O){Wr.getError(),Ui=!1,Oi.restore(),Za.restore(),Un.restore(),wn.restore(),vn.restore(),Aa.restore(),ca.restore(),yn&&yn.restore(),aa.procs.refresh(),Jo(),Jn.forEach(function($){$()})}ma&&(ma.addEventListener(Lo,$c,!1),ma.addEventListener(Fo,xs,!1));function Qc(){ro.length=0,Xl(),ma&&(ma.removeEventListener(Lo,$c),ma.removeEventListener(Fo,xs)),Za.clear(),Aa.clear(),vn.clear(),ca.clear(),wn.clear(),gn.clear(),Un.clear(),yn&&yn.clear(),Oa.forEach(function(O){O()})}function El(O){function $(pr){var kr=e({},pr);delete kr.uniforms,delete kr.attributes,delete kr.context,delete kr.vao,"stencil"in kr&&kr.stencil.op&&(kr.stencil.opBack=kr.stencil.opFront=kr.stencil.op,delete kr.stencil.op);function Ar(gr){if(gr in kr){var Cr=kr[gr];delete kr[gr],Object.keys(Cr).forEach(function(cr){kr[gr+"."+cr]=Cr[cr]})}}return Ar("blend"),Ar("depth"),Ar("cull"),Ar("stencil"),Ar("polygonOffset"),Ar("scissor"),Ar("sample"),"vao"in pr&&(kr.vao=pr.vao),kr}function pe(pr,kr){var Ar={},gr={};return Object.keys(pr).forEach(function(Cr){var cr=pr[Cr];if(h.isDynamic(cr)){gr[Cr]=h.unbox(cr,Cr);return}else if(kr&&Array.isArray(cr)){for(var Gr=0;Gr0)return vt.call(this,rr(pr|0),pr|0)}else if(Array.isArray(pr)){if(pr.length)return vt.call(this,pr,pr.length)}else return Jt.call(this,pr)}return e(dr,{stats:Kt,destroy:function(){ir.destroy()}})}var bc=Aa.setFBO=El({framebuffer:h.define.call(null,js,"framebuffer")});function wc(O,$){var pe=0;aa.procs.poll();var de=$.color;de&&(Wr.clearColor(+de[0]||0,+de[1]||0,+de[2]||0,+de[3]||0),pe|=_s),"depth"in $&&(Wr.clearDepth(+$.depth),pe|=Ns),"stencil"in $&&(Wr.clearStencil($.stencil|0),pe|=pn),Wr.clear(pe)}function yf(O){if("framebuffer"in O)if(O.framebuffer&&O.framebuffer_reglType==="framebufferCube")for(var $=0;$<6;++$)bc(e({framebuffer:O.framebuffer.faces[$]},O),wc);else bc(O,wc);else wc(null,O)}function Hl(O){ro.push(O);function $(){var pe=dl(ro,O);function de(){var Ie=dl(ro,de);ro[Ie]=ro[ro.length-1],ro.length-=1,ro.length<=0&&Xl()}ro[pe]=de}return Jo(),{cancel:$}}function Fc(){var O=Vn.viewport,$=Vn.scissor_box;O[0]=O[1]=$[0]=$[1]=0,fn.viewportWidth=fn.framebufferWidth=fn.drawingBufferWidth=O[2]=$[2]=Wr.drawingBufferWidth,fn.viewportHeight=fn.framebufferHeight=fn.drawingBufferHeight=O[3]=$[3]=Wr.drawingBufferHeight}function ef(){fn.tick+=1,fn.time=_f(),Fc(),aa.procs.poll()}function ls(){wn.refresh(),Fc(),aa.procs.refresh(),yn&&yn.update()}function _f(){return(v()-to)/1e3}ls();function ns(O,$){var pe;switch(O){case"frame":return Hl($);case"lost":pe=Ao;break;case"restore":pe=Jn;break;case"destroy":pe=Oa;break;default:}return pe.push($),{cancel:function(){for(var de=0;de=0},read:Xn,destroy:Qc,_gl:Wr,_refresh:ls,poll:function(){ef(),yn&&yn.update()},now:_f,stats:cn,getCachedCode:Y,preloadCachedCode:z});return Er.onDone(null,K),K}return xc})});var Pqe=ye((pmr,Lqe)=>{"use strict";var jOt=Zm();Lqe.exports=function(t){if(t?typeof t=="string"&&(t={container:t}):t={},kqe(t)?t={container:t}:WOt(t)?t={container:t}:ZOt(t)?t={gl:t}:t=jOt(t,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0),t.pixelRatio||(t.pixelRatio=window.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(typeof t.container=="string"){var r=document.querySelector(t.container);if(!r)throw Error("Element "+t.container+" is not found");t.container=r}kqe(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=Cqe(),t.container.appendChild(t.canvas),Eqe(t))}else if(!t.canvas)if(typeof document!="undefined")t.container=document.body||document.documentElement,t.canvas=Cqe(),t.container.appendChild(t.canvas),Eqe(t);else throw Error("Not DOM environment. Use headless-gl.");return t.gl||["webgl","experimental-webgl","webgl-experimental"].some(function(n){try{t.gl=t.canvas.getContext(n,t.attrs)}catch(i){}return t.gl}),t.gl};function Eqe(e){if(e.container)if(e.container==document.body)document.body.style.width||(e.canvas.width=e.width||e.pixelRatio*window.innerWidth),document.body.style.height||(e.canvas.height=e.height||e.pixelRatio*window.innerHeight);else{var t=e.container.getBoundingClientRect();e.canvas.width=e.width||t.right-t.left,e.canvas.height=e.height||t.bottom-t.top}}function kqe(e){return typeof e.getContext=="function"&&"width"in e&&"height"in e}function WOt(e){return typeof e.nodeName=="string"&&typeof e.appendChild=="function"&&typeof e.getBoundingClientRect=="function"}function ZOt(e){return typeof e.drawArrays=="function"||typeof e.drawElements=="function"}function Cqe(){var e=document.createElement("canvas");return e.style.position="absolute",e.style.top=0,e.style.left=0,e}});var Rqe=ye((gmr,Iqe)=>{"use strict";var XOt=UY(),YOt=[32,126];Iqe.exports=KOt;function KOt(e){e=e||{};var t=e.shape?e.shape:e.canvas?[e.canvas.width,e.canvas.height]:[512,512],r=e.canvas||document.createElement("canvas"),n=e.font,i=typeof e.step=="number"?[e.step,e.step]:e.step||[32,32],a=e.chars||YOt;if(n&&typeof n!="string"&&(n=XOt(n)),!Array.isArray(a))a=String(a).split("");else if(a.length===2&&typeof a[0]=="number"&&typeof a[1]=="number"){for(var o=[],s=a[0],l=0;s<=a[1];s++)o[l++]=String.fromCharCode(s);a=o}t=t.slice(),r.width=t[0],r.height=t[1];var u=r.getContext("2d");u.fillStyle="#000",u.fillRect(0,0,r.width,r.height),u.font=n,u.textAlign="center",u.textBaseline="middle",u.fillStyle="#fff";for(var c=i[0]/2,f=i[1]/2,s=0;st[0]-i[0]/2&&(c=i[0]/2,f+=i[1]);return r}});var WY=ye(Th=>{"use strict";"use restrict";var jY=32;Th.INT_BITS=jY;Th.INT_MAX=2147483647;Th.INT_MIN=-1<0)-(e<0)};Th.abs=function(e){var t=e>>jY-1;return(e^t)-t};Th.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};Th.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};Th.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function Dqe(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}Th.countTrailingZeros=Dqe;Th.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};Th.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};Th.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var yk=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|yk[e>>>16&255]<<8|yk[e>>>24&255]};Th.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};Th.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};Th.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};Th.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};Th.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>Dqe(e)+1}});var qqe=ye((ymr,Fqe)=>{"use strict";function zqe(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return JOt(e|0,t);break;case"object":if(typeof e.length=="number")return zqe(e,t,0);break}return[]}Fqe.exports=$Ot});var $qe=ye(jl=>{"use strict";var cx=WY(),Av=qqe(),Oqe=u2().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:Av([32,0]),UINT16:Av([32,0]),UINT32:Av([32,0]),BIGUINT64:Av([32,0]),INT8:Av([32,0]),INT16:Av([32,0]),INT32:Av([32,0]),BIGINT64:Av([32,0]),FLOAT:Av([32,0]),DOUBLE:Av([32,0]),DATA:Av([32,0]),UINT8C:Av([32,0]),BUFFER:Av([32,0])});var QOt=typeof Uint8ClampedArray!="undefined",eBt=typeof BigUint64Array!="undefined",tBt=typeof BigInt64Array!="undefined",Xh=window.__TYPEDARRAY_POOL;Xh.UINT8C||(Xh.UINT8C=Av([32,0]));Xh.BIGUINT64||(Xh.BIGUINT64=Av([32,0]));Xh.BIGINT64||(Xh.BIGINT64=Av([32,0]));Xh.BUFFER||(Xh.BUFFER=Av([32,0]));var dF=Xh.DATA,vF=Xh.BUFFER;jl.free=function(t){if(Oqe.isBuffer(t))vF[cx.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=cx.log2(r)|0;dF[n].push(t)}};function Bqe(e){if(e){var t=e.length||e.byteLength,r=cx.log2(t);dF[r].push(e)}}function rBt(e){Bqe(e.buffer)}jl.freeUint8=jl.freeUint16=jl.freeUint32=jl.freeBigUint64=jl.freeInt8=jl.freeInt16=jl.freeInt32=jl.freeBigInt64=jl.freeFloat32=jl.freeFloat=jl.freeFloat64=jl.freeDouble=jl.freeUint8Clamped=jl.freeDataView=rBt;jl.freeArrayBuffer=Bqe;jl.freeBuffer=function(t){vF[cx.log2(t.length)].push(t)};jl.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return Bp(t);switch(r){case"uint8":return ZY(t);case"uint16":return Nqe(t);case"uint32":return Uqe(t);case"int8":return Vqe(t);case"int16":return Hqe(t);case"int32":return Gqe(t);case"float":case"float32":return jqe(t);case"double":case"float64":return Wqe(t);case"uint8_clamped":return Zqe(t);case"bigint64":return Yqe(t);case"biguint64":return Xqe(t);case"buffer":return Jqe(t);case"data":case"dataview":return Kqe(t);default:return null}return null};function Bp(t){var t=cx.nextPow2(t),r=cx.log2(t),n=dF[r];return n.length>0?n.pop():new ArrayBuffer(t)}jl.mallocArrayBuffer=Bp;function ZY(e){return new Uint8Array(Bp(e),0,e)}jl.mallocUint8=ZY;function Nqe(e){return new Uint16Array(Bp(2*e),0,e)}jl.mallocUint16=Nqe;function Uqe(e){return new Uint32Array(Bp(4*e),0,e)}jl.mallocUint32=Uqe;function Vqe(e){return new Int8Array(Bp(e),0,e)}jl.mallocInt8=Vqe;function Hqe(e){return new Int16Array(Bp(2*e),0,e)}jl.mallocInt16=Hqe;function Gqe(e){return new Int32Array(Bp(4*e),0,e)}jl.mallocInt32=Gqe;function jqe(e){return new Float32Array(Bp(4*e),0,e)}jl.mallocFloat32=jl.mallocFloat=jqe;function Wqe(e){return new Float64Array(Bp(8*e),0,e)}jl.mallocFloat64=jl.mallocDouble=Wqe;function Zqe(e){return QOt?new Uint8ClampedArray(Bp(e),0,e):ZY(e)}jl.mallocUint8Clamped=Zqe;function Xqe(e){return eBt?new BigUint64Array(Bp(8*e),0,e):null}jl.mallocBigUint64=Xqe;function Yqe(e){return tBt?new BigInt64Array(Bp(8*e),0,e):null}jl.mallocBigInt64=Yqe;function Kqe(e){return new DataView(Bp(e),0,e)}jl.mallocDataView=Kqe;function Jqe(e){e=cx.nextPow2(e);var t=cx.log2(e),r=vF[t];return r.length>0?r.pop():new Oqe(e)}jl.mallocBuffer=Jqe;jl.clearCache=function(){for(var t=0;t<32;++t)Xh.UINT8[t].length=0,Xh.UINT16[t].length=0,Xh.UINT32[t].length=0,Xh.INT8[t].length=0,Xh.INT16[t].length=0,Xh.INT32[t].length=0,Xh.FLOAT[t].length=0,Xh.DOUBLE[t].length=0,Xh.BIGUINT64[t].length=0,Xh.BIGINT64[t].length=0,Xh.UINT8C[t].length=0,dF[t].length=0,vF[t].length=0}});var eOe=ye((xmr,Qqe)=>{"use strict";var iBt=Object.prototype.toString;Qqe.exports=function(e){var t;return iBt.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}});var XY=ye((bmr,tOe)=>{tOe.exports=function(t,r){r||(r=[0,""]),t=String(t);var n=parseFloat(t,10);return r[0]=n,r[1]=t.match(/[\d.\-\+]*\s*(.*)/)[1]||"",r}});var nOe=ye((wmr,iOe)=>{"use strict";var nBt=XY();iOe.exports=rOe;var _k=96;function YY(e,t){var r=nBt(getComputedStyle(e).getPropertyValue(t));return r[0]*rOe(r[1],e)}function aBt(e,t){var r=document.createElement("div");r.style["font-size"]="128"+e,t.appendChild(r);var n=YY(r,"font-size")/128;return t.removeChild(r),n}function rOe(e,t){switch(t=t||document.body,e=(e||"px").trim().toLowerCase(),(t===window||t===document)&&(t=document.body),e){case"%":return t.clientHeight/100;case"ch":case"ex":return aBt(e,t);case"em":return YY(t,"font-size");case"rem":return YY(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return _k;case"cm":return _k/2.54;case"mm":return _k/25.4;case"pt":return _k/72;case"pc":return _k/6}return 1}});var sOe=ye((Tmr,oOe)=>{"use strict";oOe.exports=mF;var oBt=mF.canvas=document.createElement("canvas"),pF=oBt.getContext("2d"),aOe=gF([32,126]);mF.createPairs=gF;mF.ascii=aOe;function mF(e,t){Array.isArray(e)&&(e=e.join(", "));var r={},n,i=16,a=.05;t&&(t.length===2&&typeof t[0]=="number"?n=gF(t):Array.isArray(t)?n=t:(t.o?n=gF(t.o):t.pairs&&(n=t.pairs),t.fontSize&&(i=t.fontSize),t.threshold!=null&&(a=t.threshold))),n||(n=aOe),pF.font=i+"px "+e;for(var o=0;oi*a){var c=(u-l)/i;r[s]=c*1e3}}return r}function gF(e){for(var t=[],r=e[0];r<=e[1];r++)for(var n=String.fromCharCode(r),i=e[0];i{"use strict";cOe.exports=fx;fx.canvas=document.createElement("canvas");fx.cache={};function fx(o,t){t||(t={}),(typeof o=="string"||Array.isArray(o))&&(t.family=o);var r=Array.isArray(t.family)?t.family.join(", "):t.family;if(!r)throw Error("`family` must be defined");var n=t.size||t.fontSize||t.em||48,i=t.weight||t.fontWeight||"",a=t.style||t.fontStyle||"",o=[a,i,n].join(" ")+"px "+r,s=t.origin||"top";if(fx.cache[r]&&n<=fx.cache[r].em)return lOe(fx.cache[r],s);var l=t.canvas||fx.canvas,u=l.getContext("2d"),c={upper:t.upper!==void 0?t.upper:"H",lower:t.lower!==void 0?t.lower:"x",descent:t.descent!==void 0?t.descent:"p",ascent:t.ascent!==void 0?t.ascent:"h",tittle:t.tittle!==void 0?t.tittle:"i",overshoot:t.overshoot!==void 0?t.overshoot:"O"},f=Math.ceil(n*1.5);l.height=f,l.width=f*.5,u.font=o;var h="H",d={top:0};u.clearRect(0,0,f,f),u.textBaseline="top",u.fillStyle="black",u.fillText(h,0,0);var v=Ym(u.getImageData(0,0,f,f));u.clearRect(0,0,f,f),u.textBaseline="bottom",u.fillText(h,0,f);var x=Ym(u.getImageData(0,0,f,f));d.lineHeight=d.bottom=f-x+v,u.clearRect(0,0,f,f),u.textBaseline="alphabetic",u.fillText(h,0,f);var b=Ym(u.getImageData(0,0,f,f)),g=f-b-1+v;d.baseline=d.alphabetic=g,u.clearRect(0,0,f,f),u.textBaseline="middle",u.fillText(h,0,f*.5);var E=Ym(u.getImageData(0,0,f,f));d.median=d.middle=f-E-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="hanging",u.fillText(h,0,f*.5);var k=Ym(u.getImageData(0,0,f,f));d.hanging=f-k-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="ideographic",u.fillText(h,0,f);var A=Ym(u.getImageData(0,0,f,f));if(d.ideographic=f-A-1+v,c.upper&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.upper,0,0),d.upper=Ym(u.getImageData(0,0,f,f)),d.capHeight=d.baseline-d.upper),c.lower&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.lower,0,0),d.lower=Ym(u.getImageData(0,0,f,f)),d.xHeight=d.baseline-d.lower),c.tittle&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.tittle,0,0),d.tittle=Ym(u.getImageData(0,0,f,f))),c.ascent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.ascent,0,0),d.ascent=Ym(u.getImageData(0,0,f,f))),c.descent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.descent,0,0),d.descent=uOe(u.getImageData(0,0,f,f))),c.overshoot){u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.overshoot,0,0);var L=uOe(u.getImageData(0,0,f,f));d.overshoot=L-g}for(var _ in d)d[_]/=n;return d.em=n,fx.cache[r]=d,lOe(d,s)}function lOe(e,t){var r={};typeof t=="string"&&(t=e[t]);for(var n in e)n!=="em"&&(r[n]=e[n]-t);return r}function Ym(e){for(var t=e.height,r=e.data,n=3;n0;n-=4)if(r[n]!==0)return Math.floor((n-3)*.25/t)}});var pOe=ye((Smr,vOe)=>{"use strict";var hA=Mqe(),sBt=Zm(),lBt=GY(),uBt=Pqe(),cBt=EY(),KY=J_(),fBt=Rqe(),hx=$qe(),hBt=eA(),dBt=eOe(),vBt=XY(),pBt=nOe(),gBt=sOe(),mBt=bh(),yBt=fOe(),_Bt=W2(),xBt=WY(),hOe=xBt.nextPow2,dOe=new cBt,_F=!1;document.body&&(yF=document.body.appendChild(document.createElement("div")),yF.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(yF).fontStretch&&(_F=!0),document.body.removeChild(yF));var yF,Vu=function(t){bBt(t)?(t={regl:t},this.gl=t.regl._gl):this.gl=uBt(t),this.shader=dOe.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=t.regl||lBt({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),dOe.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(dBt(t)?t:{})};Vu.prototype.createShader=function(){var t=this.regl,r=t({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:t.prop("count"),offset:t.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:t.this("sizeBuffer")},width:{offset:0,stride:8,buffer:t.this("sizeBuffer")},char:t.this("charBuffer"),position:t.this("position")},uniforms:{atlasSize:function(i,a){return[a.atlas.width,a.atlas.height]},atlasDim:function(i,a){return[a.atlas.cols,a.atlas.rows]},atlas:function(i,a){return a.atlas.texture},charStep:function(i,a){return a.atlas.step},em:function(i,a){return a.atlas.em},color:t.prop("color"),opacity:t.prop("opacity"),viewport:t.this("viewportArray"),scale:t.this("scale"),align:t.prop("align"),baseline:t.prop("baseline"),translate:t.this("translate"),positionOffset:t.prop("positionOffset")},primitive:"points",viewport:t.this("viewport"),vert:` +`),ji;if(Er&&(ji=Rc(Ai),Er[ji]))return Er[ji].apply(null,Ui);var Ln=Function.apply(null,wi.concat(Ai));return Er&&(Er[ji]=Ln),Ln.apply(null,Ui)}return{global:yn,link:Bi,block:cn,proc:Rn,scope:On,cond:Bn,compile:Dn}}var Ma="xyzw".split(""),Ta=5121,Ea=1,qa=2,Cn=0,sn=1,Ua=2,mo=3,Xo=4,Ts=5,Qo=6,ys="dither",Bo="blend.enable",yl="blend.color",Gs="blend.equation",Rs="blend.func",ia="depth.enable",Ka="depth.func",vs="depth.range",Ko="depth.mask",nu="colorMask",Ru="cull.enable",ac="cull.face",mf="frontFace",bu="lineWidth",Kc="polygonOffset.enable",Du="polygonOffset.offset",Dc="sample.alpha",Da="sample.enable",eo="sample.coverage",Jc="stencil.enable",yc="stencil.mask",_c="stencil.func",le="stencil.opFront",w="stencil.opBack",B="scissor.enable",Q="scissor.box",ee="viewport",se="profile",qe="framebuffer",je="vert",it="frag",yt="elements",Ot="primitive",Nt="count",hr="offset",Sr="instances",he="vao",be="Width",Pe="Height",Oe=qe+be,Je=qe+Pe,He=ee+be,et=ee+Pe,Mt="drawingBuffer",Dt=Mt+be,Ut=Mt+Pe,tr=[Rs,Gs,_c,le,w,eo,ee,Q,Du],mr=34962,Rr=34963,zr=2884,Xr=3042,di=3024,Li=2960,Ci=2929,Qi=3089,Mn=32823,pa=32926,ea=32928,Ga=5126,To=35664,Wa=35665,co=35666,Ro=5124,Ds=35667,As=35668,yo=35669,po=35670,_l=35671,Hl=35672,Zu=35673,cu=35674,el=35675,au=35676,zc=35678,zl=35680,Fl=4,Z=1028,oe=1029,we=2304,Be=2305,Ue=32775,We=32776,wt=519,tt=7680,zt=0,or=1,lr=32774,Dr=513,Ir=36160,oi=36064,ui={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},qr={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Kr={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},ii={cw:we,ccw:Be};function vi(At){return Array.isArray(At)||Or(At)||Nr(At)}function ci(At){return At.sort(function(Er,Wr){return Er===ee?-1:Wr===ee?1:Er=1,wi>=2,Er)}else if(Wr===Xo){var Ui=At.data;return new Jr(Ui.thisDep,Ui.contextDep,Ui.propDep,Er)}else{if(Wr===Ts)return new Jr(!1,!1,!1,Er);if(Wr===Qo){for(var Oi=!1,Bi=!1,cn=!1,On=0;On=1&&(Bi=!0),yn>=2&&(cn=!0)}else Bn.type===Xo&&(Oi=Oi||Bn.data.thisDep,Bi=Bi||Bn.data.contextDep,cn=cn||Bn.data.propDep)}return new Jr(Oi,Bi,cn,Er)}else return new Jr(Wr===mo,Wr===Ua,Wr===sn,Er)}}var Nn=new Jr(!1,!1,!1,function(){});function ga(At,Er,Wr,wi,Ui,Oi,Bi,cn,On,Bn,yn,to,Rn,Dn,fn,Ai){var ji=Bn.Record,Ln={add:32774,subtract:32778,"reverse subtract":32779};Wr.ext_blend_minmax&&(Ln.min=Ue,Ln.max=We);var Un=Wr.angle_instanced_arrays,gn=Wr.webgl_draw_buffers,ca=Wr.oes_vertex_array_object,Kn={dirty:!0,profile:Ai.profile},Za={},wn=[],vn={},Aa={};function aa(vt){return vt.replace(".","_")}function Xn(vt,Pt,Wt){var rr=aa(vt);wn.push(vt),Za[rr]=Kn[rr]=!!Wt,vn[rr]=Pt}function Vn(vt,Pt,Wt){var rr=aa(vt);wn.push(vt),Array.isArray(Wt)?(Kn[rr]=Wt.slice(),Za[rr]=Wt.slice()):Kn[rr]=Za[rr]=Wt,Aa[rr]=Pt}function ma(vt){return!!isNaN(vt)}Xn(ys,di),Xn(Bo,Xr),Vn(yl,"blendColor",[0,0,0,0]),Vn(Gs,"blendEquationSeparate",[lr,lr]),Vn(Rs,"blendFuncSeparate",[or,zt,or,zt]),Xn(ia,Ci,!0),Vn(Ka,"depthFunc",Dr),Vn(vs,"depthRange",[0,1]),Vn(Ko,"depthMask",!0),Vn(nu,nu,[!0,!0,!0,!0]),Xn(Ru,zr),Vn(ac,"cullFace",oe),Vn(mf,mf,Be),Vn(bu,bu,1),Xn(Kc,Mn),Vn(Du,"polygonOffset",[0,0]),Xn(Dc,pa),Xn(Da,ea),Vn(eo,"sampleCoverage",[1,!1]),Xn(Jc,Li),Vn(yc,"stencilMask",-1),Vn(_c,"stencilFunc",[wt,0,-1]),Vn(le,"stencilOpSeparate",[Z,tt,tt,tt]),Vn(w,"stencilOpSeparate",[oe,tt,tt,tt]),Xn(B,Qi),Vn(Q,"scissor",[0,0,At.drawingBufferWidth,At.drawingBufferHeight]),Vn(ee,ee,[0,0,At.drawingBufferWidth,At.drawingBufferHeight]);var ro={gl:At,context:Rn,strings:Er,next:Za,current:Kn,draw:to,elements:Oi,buffer:Ui,shader:yn,attributes:Bn.state,vao:Bn,uniforms:On,framebuffer:cn,extensions:Wr,timer:Dn,isBufferArgs:vi},Ao={primTypes:Ki,compareFuncs:qr,blendFuncs:ui,blendEquations:Ln,stencilOps:Kr,glTypes:bi,orientationType:ii};gn&&(Ao.backBuffer=[oe],Ao.drawBuffer=M(wi.maxDrawbuffers,function(vt){return vt===0?[0]:M(vt,function(Pt){return oi+Pt})}));var Jn=0;function Oa(){var vt=Pn({cache:fn}),Pt=vt.link,Wt=vt.global;vt.id=Jn++,vt.batchId="0";var rr=Pt(ro),dr=vt.shared={props:"a0"};Object.keys(ro).forEach(function(Cr){dr[Cr]=Wt.def(rr,".",Cr)});var pr=vt.next={},kr=vt.current={};Object.keys(Aa).forEach(function(Cr){Array.isArray(Kn[Cr])&&(pr[Cr]=Wt.def(dr.next,".",Cr),kr[Cr]=Wt.def(dr.current,".",Cr))});var Ar=vt.constants={};Object.keys(Ao).forEach(function(Cr){Ar[Cr]=Wt.def(JSON.stringify(Ao[Cr]))}),vt.invoke=function(Cr,cr){switch(cr.type){case Cn:var Gr=["this",dr.context,dr.props,vt.batchId];return Cr.def(Pt(cr.data),".call(",Gr.slice(0,Math.max(cr.data.length+1,4)),")");case sn:return Cr.def(dr.props,cr.data);case Ua:return Cr.def(dr.context,cr.data);case mo:return Cr.def("this",cr.data);case Xo:return cr.data.append(vt,Cr),cr.data.ref;case Ts:return cr.data.toString();case Qo:return cr.data.map(function(ei){return vt.invoke(Cr,ei)})}},vt.attribCache={};var gr={};return vt.scopeAttrib=function(Cr){var cr=Er.id(Cr);if(cr in gr)return gr[cr];var Gr=Bn.scope[cr];Gr||(Gr=Bn.scope[cr]=new ji);var ei=gr[cr]=Pt(Gr);return ei},vt}function _o(vt){var Pt=vt.static,Wt=vt.dynamic,rr;if(se in Pt){var dr=!!Pt[se];rr=dn(function(kr,Ar){return dr}),rr.enable=dr}else if(se in Wt){var pr=Wt[se];rr=En(pr,function(kr,Ar){return kr.invoke(Ar,pr)})}return rr}function Po(vt,Pt){var Wt=vt.static,rr=vt.dynamic;if(qe in Wt){var dr=Wt[qe];return dr?(dr=cn.getFramebuffer(dr),dn(function(kr,Ar){var gr=kr.link(dr),Cr=kr.shared;Ar.set(Cr.framebuffer,".next",gr);var cr=Cr.context;return Ar.set(cr,"."+Oe,gr+".width"),Ar.set(cr,"."+Je,gr+".height"),gr})):dn(function(kr,Ar){var gr=kr.shared;Ar.set(gr.framebuffer,".next","null");var Cr=gr.context;return Ar.set(Cr,"."+Oe,Cr+"."+Dt),Ar.set(Cr,"."+Je,Cr+"."+Ut),"null"})}else if(qe in rr){var pr=rr[qe];return En(pr,function(kr,Ar){var gr=kr.invoke(Ar,pr),Cr=kr.shared,cr=Cr.framebuffer,Gr=Ar.def(cr,".getFramebuffer(",gr,")");Ar.set(cr,".next",Gr);var ei=Cr.context;return Ar.set(ei,"."+Oe,Gr+"?"+Gr+".width:"+ei+"."+Dt),Ar.set(ei,"."+Je,Gr+"?"+Gr+".height:"+ei+"."+Ut),Gr})}else return null}function Jo(vt,Pt,Wt){var rr=vt.static,dr=vt.dynamic;function pr(gr){if(gr in rr){var Cr=rr[gr],cr=!0,Gr=Cr.x|0,ei=Cr.y|0,yi,tn;return"width"in Cr?yi=Cr.width|0:cr=!1,"height"in Cr?tn=Cr.height|0:cr=!1,new Jr(!cr&&Pt&&Pt.thisDep,!cr&&Pt&&Pt.contextDep,!cr&&Pt&&Pt.propDep,function(Qn,qn){var rn=Qn.shared.context,bn=yi;"width"in Cr||(bn=qn.def(rn,".",Oe,"-",Gr));var mn=tn;return"height"in Cr||(mn=qn.def(rn,".",Je,"-",ei)),[Gr,ei,bn,mn]})}else if(gr in dr){var Ri=dr[gr],ln=En(Ri,function(Qn,qn){var rn=Qn.invoke(qn,Ri),bn=Qn.shared.context,mn=qn.def(rn,".x|0"),Gn=qn.def(rn,".y|0"),da=qn.def('"width" in ',rn,"?",rn,".width|0:","(",bn,".",Oe,"-",mn,")"),No=qn.def('"height" in ',rn,"?",rn,".height|0:","(",bn,".",Je,"-",Gn,")");return[mn,Gn,da,No]});return Pt&&(ln.thisDep=ln.thisDep||Pt.thisDep,ln.contextDep=ln.contextDep||Pt.contextDep,ln.propDep=ln.propDep||Pt.propDep),ln}else return Pt?new Jr(Pt.thisDep,Pt.contextDep,Pt.propDep,function(Qn,qn){var rn=Qn.shared.context;return[0,0,qn.def(rn,".",Oe),qn.def(rn,".",Je)]}):null}var kr=pr(ee);if(kr){var Ar=kr;kr=new Jr(kr.thisDep,kr.contextDep,kr.propDep,function(gr,Cr){var cr=Ar.append(gr,Cr),Gr=gr.shared.context;return Cr.set(Gr,"."+He,cr[2]),Cr.set(Gr,"."+et,cr[3]),cr})}return{viewport:kr,scissor_box:pr(Q)}}function Yl(vt,Pt){var Wt=vt.static,rr=typeof Wt[it]=="string"&&typeof Wt[je]=="string";if(rr){if(Object.keys(Pt.dynamic).length>0)return null;var dr=Pt.static,pr=Object.keys(dr);if(pr.length>0&&typeof dr[pr[0]]=="number"){for(var kr=[],Ar=0;Ar"+mn+"?"+cr+".constant["+mn+"]:0;"}).join(""),"}}else{","if(",yi,"(",cr,".buffer)){",Qn,"=",tn,".createStream(",mr,",",cr,".buffer);","}else{",Qn,"=",tn,".getBuffer(",cr,".buffer);","}",qn,'="type" in ',cr,"?",ei.glTypes,"[",cr,".type]:",Qn,".dtype;",Ri.normalized,"=!!",cr,".normalized;");function rn(bn){Cr(Ri[bn],"=",cr,".",bn,"|0;")}return rn("size"),rn("offset"),rn("stride"),rn("divisor"),Cr("}}"),Cr.exit("if(",Ri.isStream,"){",tn,".destroyStream(",Qn,");","}"),Ri}dr[pr]=En(kr,Ar)}),dr}function wc(vt){var Pt=vt.static,Wt=vt.dynamic,rr={};return Object.keys(Pt).forEach(function(dr){var pr=Pt[dr];rr[dr]=dn(function(kr,Ar){return typeof pr=="number"||typeof pr=="boolean"?""+pr:kr.link(pr)})}),Object.keys(Wt).forEach(function(dr){var pr=Wt[dr];rr[dr]=En(pr,function(kr,Ar){return kr.invoke(Ar,pr)})}),rr}function yf(vt,Pt,Wt,rr,dr){var pr=vt.static,kr=vt.dynamic,Ar=Yl(vt,Pt),gr=Po(vt,dr),Cr=Jo(vt,gr,dr),cr=xs(vt,dr),Gr=Qc(vt,dr),ei=$c(vt,dr,Ar);function yi(rn){var bn=Cr[rn];bn&&(Gr[rn]=bn)}yi(ee),yi(aa(Q));var tn=Object.keys(Gr).length>0,Ri={framebuffer:gr,draw:cr,shader:ei,state:Gr,dirty:tn,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(Ri.profile=_o(vt,dr),Ri.uniforms=El(Wt,dr),Ri.drawVAO=Ri.scopeVAO=cr.vao,!Ri.drawVAO&&ei.program&&!Ar&&Wr.angle_instanced_arrays&&cr.static.elements){var ln=!0,Qn=ei.program.attributes.map(function(rn){var bn=Pt.static[rn];return ln=ln&&!!bn,bn});if(ln&&Qn.length>0){var qn=Bn.getVAO(Bn.createVAO({attributes:Qn,elements:cr.static.elements}));Ri.drawVAO=new Jr(null,null,null,function(rn,bn){return rn.link(qn)}),Ri.useVAO=!0}}return Ar?Ri.useVAO=!0:Ri.attributes=bc(Pt,dr),Ri.context=wc(rr,dr),Ri}function Gl(vt,Pt,Wt){var rr=vt.shared,dr=rr.context,pr=vt.scope();Object.keys(Wt).forEach(function(kr){Pt.save(dr,"."+kr);var Ar=Wt[kr],gr=Ar.append(vt,Pt);Array.isArray(gr)?pr(dr,".",kr,"=[",gr.join(),"];"):pr(dr,".",kr,"=",gr,";")}),Pt(pr)}function Fc(vt,Pt,Wt,rr){var dr=vt.shared,pr=dr.gl,kr=dr.framebuffer,Ar;gn&&(Ar=Pt.def(dr.extensions,".webgl_draw_buffers"));var gr=vt.constants,Cr=gr.drawBuffer,cr=gr.backBuffer,Gr;Wt?Gr=Wt.append(vt,Pt):Gr=Pt.def(kr,".next"),rr||Pt("if(",Gr,"!==",kr,".cur){"),Pt("if(",Gr,"){",pr,".bindFramebuffer(",Ir,",",Gr,".framebuffer);"),gn&&Pt(Ar,".drawBuffersWEBGL(",Cr,"[",Gr,".colorAttachments.length]);"),Pt("}else{",pr,".bindFramebuffer(",Ir,",null);"),gn&&Pt(Ar,".drawBuffersWEBGL(",cr,");"),Pt("}",kr,".cur=",Gr,";"),rr||Pt("}")}function ef(vt,Pt,Wt){var rr=vt.shared,dr=rr.gl,pr=vt.current,kr=vt.next,Ar=rr.current,gr=rr.next,Cr=vt.cond(Ar,".dirty");wn.forEach(function(cr){var Gr=aa(cr);if(!(Gr in Wt.state)){var ei,yi;if(Gr in kr){ei=kr[Gr],yi=pr[Gr];var tn=M(Kn[Gr].length,function(ln){return Cr.def(ei,"[",ln,"]")});Cr(vt.cond(tn.map(function(ln,Qn){return ln+"!=="+yi+"["+Qn+"]"}).join("||")).then(dr,".",Aa[Gr],"(",tn,");",tn.map(function(ln,Qn){return yi+"["+Qn+"]="+ln}).join(";"),";"))}else{ei=Cr.def(gr,".",Gr);var Ri=vt.cond(ei,"!==",Ar,".",Gr);Cr(Ri),Gr in vn?Ri(vt.cond(ei).then(dr,".enable(",vn[Gr],");").else(dr,".disable(",vn[Gr],");"),Ar,".",Gr,"=",ei,";"):Ri(dr,".",Aa[Gr],"(",ei,");",Ar,".",Gr,"=",ei,";")}}}),Object.keys(Wt.state).length===0&&Cr(Ar,".dirty=false;"),Pt(Cr)}function ls(vt,Pt,Wt,rr){var dr=vt.shared,pr=vt.current,kr=dr.current,Ar=dr.gl,gr;ci(Object.keys(Wt)).forEach(function(Cr){var cr=Wt[Cr];if(!(rr&&!rr(cr))){var Gr=cr.append(vt,Pt);if(vn[Cr]){var ei=vn[Cr];un(cr)?(gr=vt.link(Gr,{stable:!0}),Pt(vt.cond(gr).then(Ar,".enable(",ei,");").else(Ar,".disable(",ei,");")),Pt(kr,".",Cr,"=",gr,";")):(Pt(vt.cond(Gr).then(Ar,".enable(",ei,");").else(Ar,".disable(",ei,");")),Pt(kr,".",Cr,"=",Gr,";"))}else if(an(Gr)){var yi=pr[Cr];Pt(Ar,".",Aa[Cr],"(",Gr,");",Gr.map(function(tn,Ri){return yi+"["+Ri+"]="+tn}).join(";"),";")}else un(cr)?(gr=vt.link(Gr,{stable:!0}),Pt(Ar,".",Aa[Cr],"(",gr,");",kr,".",Cr,"=",gr,";")):Pt(Ar,".",Aa[Cr],"(",Gr,");",kr,".",Cr,"=",Gr,";")}})}function _f(vt,Pt){Un&&(vt.instancing=Pt.def(vt.shared.extensions,".angle_instanced_arrays"))}function ns(vt,Pt,Wt,rr,dr){var pr=vt.shared,kr=vt.stats,Ar=pr.current,gr=pr.timer,Cr=Wt.profile;function cr(){return typeof performance=="undefined"?"Date.now()":"performance.now()"}var Gr,ei;function yi(rn){Gr=Pt.def(),rn(Gr,"=",cr(),";"),typeof dr=="string"?rn(kr,".count+=",dr,";"):rn(kr,".count++;"),Dn&&(rr?(ei=Pt.def(),rn(ei,"=",gr,".getNumPendingQueries();")):rn(gr,".beginQuery(",kr,");"))}function tn(rn){rn(kr,".cpuTime+=",cr(),"-",Gr,";"),Dn&&(rr?rn(gr,".pushScopeStats(",ei,",",gr,".getNumPendingQueries(),",kr,");"):rn(gr,".endQuery();"))}function Ri(rn){var bn=Pt.def(Ar,".profile");Pt(Ar,".profile=",rn,";"),Pt.exit(Ar,".profile=",bn,";")}var ln;if(Cr){if(un(Cr)){Cr.enable?(yi(Pt),tn(Pt.exit),Ri("true")):Ri("false");return}ln=Cr.append(vt,Pt),Ri(ln)}else ln=Pt.def(Ar,".profile");var Qn=vt.block();yi(Qn),Pt("if(",ln,"){",Qn,"}");var qn=vt.block();tn(qn),Pt.exit("if(",ln,"){",qn,"}")}function Y(vt,Pt,Wt,rr,dr){var pr=vt.shared;function kr(gr){switch(gr){case To:case Ds:case _l:return 2;case Wa:case As:case Hl:return 3;case co:case yo:case Zu:return 4;default:return 1}}function Ar(gr,Cr,cr){var Gr=pr.gl,ei=Pt.def(gr,".location"),yi=Pt.def(pr.attributes,"[",ei,"]"),tn=cr.state,Ri=cr.buffer,ln=[cr.x,cr.y,cr.z,cr.w],Qn=["buffer","normalized","offset","stride"];function qn(){Pt("if(!",yi,".buffer){",Gr,".enableVertexAttribArray(",ei,");}");var bn=cr.type,mn;if(cr.size?mn=Pt.def(cr.size,"||",Cr):mn=Cr,Pt("if(",yi,".type!==",bn,"||",yi,".size!==",mn,"||",Qn.map(function(da){return yi+"."+da+"!=="+cr[da]}).join("||"),"){",Gr,".bindBuffer(",mr,",",Ri,".buffer);",Gr,".vertexAttribPointer(",[ei,mn,bn,cr.normalized,cr.stride,cr.offset],");",yi,".type=",bn,";",yi,".size=",mn,";",Qn.map(function(da){return yi+"."+da+"="+cr[da]+";"}).join(""),"}"),Un){var Gn=cr.divisor;Pt("if(",yi,".divisor!==",Gn,"){",vt.instancing,".vertexAttribDivisorANGLE(",[ei,Gn],");",yi,".divisor=",Gn,";}")}}function rn(){Pt("if(",yi,".buffer){",Gr,".disableVertexAttribArray(",ei,");",yi,".buffer=null;","}if(",Ma.map(function(bn,mn){return yi+"."+bn+"!=="+ln[mn]}).join("||"),"){",Gr,".vertexAttrib4f(",ei,",",ln,");",Ma.map(function(bn,mn){return yi+"."+bn+"="+ln[mn]+";"}).join(""),"}")}tn===Ea?qn():tn===qa?rn():(Pt("if(",tn,"===",Ea,"){"),qn(),Pt("}else{"),rn(),Pt("}"))}rr.forEach(function(gr){var Cr=gr.name,cr=Wt.attributes[Cr],Gr;if(cr){if(!dr(cr))return;Gr=cr.append(vt,Pt)}else{if(!dr(Nn))return;var ei=vt.scopeAttrib(Cr);Gr={},Object.keys(new ji).forEach(function(yi){Gr[yi]=Pt.def(ei,".",yi)})}Ar(vt.link(gr),kr(gr.info.type),Gr)})}function z(vt,Pt,Wt,rr,dr,pr){for(var kr=vt.shared,Ar=kr.gl,gr,Cr=0;Cr1){for(var Do=[],ps=[],fo=0;fo>1)",Ri],");")}function Gn(){Wt(ln,".drawArraysInstancedANGLE(",[ei,yi,tn,Ri],");")}cr&&cr!=="null"?qn?mn():(Wt("if(",cr,"){"),mn(),Wt("}else{"),Gn(),Wt("}")):Gn()}function bn(){function mn(){Wt(pr+".drawElements("+[ei,tn,Qn,yi+"<<(("+Qn+"-"+Ta+")>>1)"]+");")}function Gn(){Wt(pr+".drawArrays("+[ei,yi,tn]+");")}cr&&cr!=="null"?qn?mn():(Wt("if(",cr,"){"),mn(),Wt("}else{"),Gn(),Wt("}")):Gn()}Un&&(typeof Ri!="number"||Ri>=0)?typeof Ri=="string"?(Wt("if(",Ri,">0){"),rn(),Wt("}else if(",Ri,"<0){"),bn(),Wt("}")):rn():bn()}function O(vt,Pt,Wt,rr,dr){var pr=Oa(),kr=pr.proc("body",dr);return Un&&(pr.instancing=kr.def(pr.shared.extensions,".angle_instanced_arrays")),vt(pr,kr,Wt,rr),pr.compile().body}function $(vt,Pt,Wt,rr){_f(vt,Pt),Wt.useVAO?Wt.drawVAO?Pt(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,Pt),");"):Pt(vt.shared.vao,".setVAO(",vt.shared.vao,".targetVAO);"):(Pt(vt.shared.vao,".setVAO(null);"),Y(vt,Pt,Wt,rr.attributes,function(){return!0})),z(vt,Pt,Wt,rr.uniforms,function(){return!0},!1),K(vt,Pt,Pt,Wt)}function pe(vt,Pt){var Wt=vt.proc("draw",1);_f(vt,Wt),Gl(vt,Wt,Pt.context),Fc(vt,Wt,Pt.framebuffer),ef(vt,Wt,Pt),ls(vt,Wt,Pt.state),ns(vt,Wt,Pt,!1,!0);var rr=Pt.shader.progVar.append(vt,Wt);if(Wt(vt.shared.gl,".useProgram(",rr,".program);"),Pt.shader.program)$(vt,Wt,Pt,Pt.shader.program);else{Wt(vt.shared.vao,".setVAO(null);");var dr=vt.global.def("{}"),pr=Wt.def(rr,".id"),kr=Wt.def(dr,"[",pr,"]");Wt(vt.cond(kr).then(kr,".call(this,a0);").else(kr,"=",dr,"[",pr,"]=",vt.link(function(Ar){return O($,vt,Pt,Ar,1)}),"(",rr,");",kr,".call(this,a0);"))}Object.keys(Pt.state).length>0&&Wt(vt.shared.current,".dirty=true;"),vt.shared.vao&&Wt(vt.shared.vao,".setVAO(null);")}function de(vt,Pt,Wt,rr){vt.batchId="a1",_f(vt,Pt);function dr(){return!0}Y(vt,Pt,Wt,rr.attributes,dr),z(vt,Pt,Wt,rr.uniforms,dr,!1),K(vt,Pt,Pt,Wt)}function Ie(vt,Pt,Wt,rr){_f(vt,Pt);var dr=Wt.contextDep,pr=Pt.def(),kr="a0",Ar="a1",gr=Pt.def();vt.shared.props=gr,vt.batchId=pr;var Cr=vt.scope(),cr=vt.scope();Pt(Cr.entry,"for(",pr,"=0;",pr,"<",Ar,";++",pr,"){",gr,"=",kr,"[",pr,"];",cr,"}",Cr.exit);function Gr(Qn){return Qn.contextDep&&dr||Qn.propDep}function ei(Qn){return!Gr(Qn)}if(Wt.needsContext&&Gl(vt,cr,Wt.context),Wt.needsFramebuffer&&Fc(vt,cr,Wt.framebuffer),ls(vt,cr,Wt.state,Gr),Wt.profile&&Gr(Wt.profile)&&ns(vt,cr,Wt,!1,!0),rr)Wt.useVAO?Wt.drawVAO?Gr(Wt.drawVAO)?cr(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,cr),");"):Cr(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,Cr),");"):Cr(vt.shared.vao,".setVAO(",vt.shared.vao,".targetVAO);"):(Cr(vt.shared.vao,".setVAO(null);"),Y(vt,Cr,Wt,rr.attributes,ei),Y(vt,cr,Wt,rr.attributes,Gr)),z(vt,Cr,Wt,rr.uniforms,ei,!1),z(vt,cr,Wt,rr.uniforms,Gr,!0),K(vt,Cr,cr,Wt);else{var yi=vt.global.def("{}"),tn=Wt.shader.progVar.append(vt,cr),Ri=cr.def(tn,".id"),ln=cr.def(yi,"[",Ri,"]");cr(vt.shared.gl,".useProgram(",tn,".program);","if(!",ln,"){",ln,"=",yi,"[",Ri,"]=",vt.link(function(Qn){return O(de,vt,Wt,Qn,2)}),"(",tn,");}",ln,".call(this,a0[",pr,"],",pr,");")}}function $e(vt,Pt){var Wt=vt.proc("batch",2);vt.batchId="0",_f(vt,Wt);var rr=!1,dr=!0;Object.keys(Pt.context).forEach(function(yi){rr=rr||Pt.context[yi].propDep}),rr||(Gl(vt,Wt,Pt.context),dr=!1);var pr=Pt.framebuffer,kr=!1;pr?(pr.propDep?rr=kr=!0:pr.contextDep&&rr&&(kr=!0),kr||Fc(vt,Wt,pr)):Fc(vt,Wt,null),Pt.state.viewport&&Pt.state.viewport.propDep&&(rr=!0);function Ar(yi){return yi.contextDep&&rr||yi.propDep}ef(vt,Wt,Pt),ls(vt,Wt,Pt.state,function(yi){return!Ar(yi)}),(!Pt.profile||!Ar(Pt.profile))&&ns(vt,Wt,Pt,!1,"a1"),Pt.contextDep=rr,Pt.needsContext=dr,Pt.needsFramebuffer=kr;var gr=Pt.shader.progVar;if(gr.contextDep&&rr||gr.propDep)Ie(vt,Wt,Pt,null);else{var Cr=gr.append(vt,Wt);if(Wt(vt.shared.gl,".useProgram(",Cr,".program);"),Pt.shader.program)Ie(vt,Wt,Pt,Pt.shader.program);else{Wt(vt.shared.vao,".setVAO(null);");var cr=vt.global.def("{}"),Gr=Wt.def(Cr,".id"),ei=Wt.def(cr,"[",Gr,"]");Wt(vt.cond(ei).then(ei,".call(this,a0,a1);").else(ei,"=",cr,"[",Gr,"]=",vt.link(function(yi){return O(Ie,vt,Pt,yi,2)}),"(",Cr,");",ei,".call(this,a0,a1);"))}}Object.keys(Pt.state).length>0&&Wt(vt.shared.current,".dirty=true;"),vt.shared.vao&&Wt(vt.shared.vao,".setVAO(null);")}function pt(vt,Pt){var Wt=vt.proc("scope",3);vt.batchId="a2";var rr=vt.shared,dr=rr.current;if(Gl(vt,Wt,Pt.context),Pt.framebuffer&&Pt.framebuffer.append(vt,Wt),ci(Object.keys(Pt.state)).forEach(function(Ar){var gr=Pt.state[Ar],Cr=gr.append(vt,Wt);an(Cr)?Cr.forEach(function(cr,Gr){ma(cr)?Wt.set(vt.next[Ar],"["+Gr+"]",cr):Wt.set(vt.next[Ar],"["+Gr+"]",vt.link(cr,{stable:!0}))}):un(gr)?Wt.set(rr.next,"."+Ar,vt.link(Cr,{stable:!0})):Wt.set(rr.next,"."+Ar,Cr)}),ns(vt,Wt,Pt,!0,!0),[yt,hr,Nt,Sr,Ot].forEach(function(Ar){var gr=Pt.draw[Ar];if(gr){var Cr=gr.append(vt,Wt);ma(Cr)?Wt.set(rr.draw,"."+Ar,Cr):Wt.set(rr.draw,"."+Ar,vt.link(Cr),{stable:!0})}}),Object.keys(Pt.uniforms).forEach(function(Ar){var gr=Pt.uniforms[Ar].append(vt,Wt);Array.isArray(gr)&&(gr="["+gr.map(function(Cr){return ma(Cr)?Cr:vt.link(Cr,{stable:!0})})+"]"),Wt.set(rr.uniforms,"["+vt.link(Er.id(Ar),{stable:!0})+"]",gr)}),Object.keys(Pt.attributes).forEach(function(Ar){var gr=Pt.attributes[Ar].append(vt,Wt),Cr=vt.scopeAttrib(Ar);Object.keys(new ji).forEach(function(cr){Wt.set(Cr,"."+cr,gr[cr])})}),Pt.scopeVAO){var pr=Pt.scopeVAO.append(vt,Wt);ma(pr)?Wt.set(rr.vao,".targetVAO",pr):Wt.set(rr.vao,".targetVAO",vt.link(pr,{stable:!0}))}function kr(Ar){var gr=Pt.shader[Ar];if(gr){var Cr=gr.append(vt,Wt);ma(Cr)?Wt.set(rr.shader,"."+Ar,Cr):Wt.set(rr.shader,"."+Ar,vt.link(Cr,{stable:!0}))}}kr(je),kr(it),Object.keys(Pt.state).length>0&&(Wt(dr,".dirty=true;"),Wt.exit(dr,".dirty=true;")),Wt("a1(",vt.shared.context,",a0,",vt.batchId,");")}function Kt(vt){if(!(typeof vt!="object"||an(vt))){for(var Pt=Object.keys(vt),Wt=0;Wt=0;--O){var $=ro[O];$&&$(fn,null,0)}Wr.flush(),yn&&yn.update()}function Jo(){!_o&&ro.length>0&&(_o=d.next(Po))}function Yl(){_o&&(d.cancel(Po),_o=null)}function $c(O){O.preventDefault(),Ui=!0,Yl(),Ao.forEach(function($){$()})}function xs(O){Wr.getError(),Ui=!1,Oi.restore(),Za.restore(),Un.restore(),wn.restore(),vn.restore(),Aa.restore(),ca.restore(),yn&&yn.restore(),aa.procs.refresh(),Jo(),Jn.forEach(function($){$()})}ma&&(ma.addEventListener(Lo,$c,!1),ma.addEventListener(Fo,xs,!1));function Qc(){ro.length=0,Yl(),ma&&(ma.removeEventListener(Lo,$c),ma.removeEventListener(Fo,xs)),Za.clear(),Aa.clear(),vn.clear(),ca.clear(),wn.clear(),gn.clear(),Un.clear(),yn&&yn.clear(),Oa.forEach(function(O){O()})}function El(O){function $(pr){var kr=e({},pr);delete kr.uniforms,delete kr.attributes,delete kr.context,delete kr.vao,"stencil"in kr&&kr.stencil.op&&(kr.stencil.opBack=kr.stencil.opFront=kr.stencil.op,delete kr.stencil.op);function Ar(gr){if(gr in kr){var Cr=kr[gr];delete kr[gr],Object.keys(Cr).forEach(function(cr){kr[gr+"."+cr]=Cr[cr]})}}return Ar("blend"),Ar("depth"),Ar("cull"),Ar("stencil"),Ar("polygonOffset"),Ar("scissor"),Ar("sample"),"vao"in pr&&(kr.vao=pr.vao),kr}function pe(pr,kr){var Ar={},gr={};return Object.keys(pr).forEach(function(Cr){var cr=pr[Cr];if(h.isDynamic(cr)){gr[Cr]=h.unbox(cr,Cr);return}else if(kr&&Array.isArray(cr)){for(var Gr=0;Gr0)return vt.call(this,rr(pr|0),pr|0)}else if(Array.isArray(pr)){if(pr.length)return vt.call(this,pr,pr.length)}else return Jt.call(this,pr)}return e(dr,{stats:Kt,destroy:function(){ir.destroy()}})}var bc=Aa.setFBO=El({framebuffer:h.define.call(null,js,"framebuffer")});function wc(O,$){var pe=0;aa.procs.poll();var de=$.color;de&&(Wr.clearColor(+de[0]||0,+de[1]||0,+de[2]||0,+de[3]||0),pe|=_s),"depth"in $&&(Wr.clearDepth(+$.depth),pe|=Ns),"stencil"in $&&(Wr.clearStencil($.stencil|0),pe|=pn),Wr.clear(pe)}function yf(O){if("framebuffer"in O)if(O.framebuffer&&O.framebuffer_reglType==="framebufferCube")for(var $=0;$<6;++$)bc(e({framebuffer:O.framebuffer.faces[$]},O),wc);else bc(O,wc);else wc(null,O)}function Gl(O){ro.push(O);function $(){var pe=dl(ro,O);function de(){var Ie=dl(ro,de);ro[Ie]=ro[ro.length-1],ro.length-=1,ro.length<=0&&Yl()}ro[pe]=de}return Jo(),{cancel:$}}function Fc(){var O=Vn.viewport,$=Vn.scissor_box;O[0]=O[1]=$[0]=$[1]=0,fn.viewportWidth=fn.framebufferWidth=fn.drawingBufferWidth=O[2]=$[2]=Wr.drawingBufferWidth,fn.viewportHeight=fn.framebufferHeight=fn.drawingBufferHeight=O[3]=$[3]=Wr.drawingBufferHeight}function ef(){fn.tick+=1,fn.time=_f(),Fc(),aa.procs.poll()}function ls(){wn.refresh(),Fc(),aa.procs.refresh(),yn&&yn.update()}function _f(){return(v()-to)/1e3}ls();function ns(O,$){var pe;switch(O){case"frame":return Gl($);case"lost":pe=Ao;break;case"restore":pe=Jn;break;case"destroy":pe=Oa;break;default:}return pe.push($),{cancel:function(){for(var de=0;de=0},read:Xn,destroy:Qc,_gl:Wr,_refresh:ls,poll:function(){ef(),yn&&yn.update()},now:_f,stats:cn,getCachedCode:Y,preloadCachedCode:z});return Er.onDone(null,K),K}return xc})});var Iqe=ye((wmr,Pqe)=>{"use strict";var QOt=Zm();Pqe.exports=function(t){if(t?typeof t=="string"&&(t={container:t}):t={},Cqe(t)?t={container:t}:eBt(t)?t={container:t}:tBt(t)?t={gl:t}:t=QOt(t,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0),t.pixelRatio||(t.pixelRatio=window.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(typeof t.container=="string"){var r=document.querySelector(t.container);if(!r)throw Error("Element "+t.container+" is not found");t.container=r}Cqe(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=Lqe(),t.container.appendChild(t.canvas),kqe(t))}else if(!t.canvas)if(typeof document!="undefined")t.container=document.body||document.documentElement,t.canvas=Lqe(),t.container.appendChild(t.canvas),kqe(t);else throw Error("Not DOM environment. Use headless-gl.");return t.gl||["webgl","experimental-webgl","webgl-experimental"].some(function(n){try{t.gl=t.canvas.getContext(n,t.attrs)}catch(i){}return t.gl}),t.gl};function kqe(e){if(e.container)if(e.container==document.body)document.body.style.width||(e.canvas.width=e.width||e.pixelRatio*window.innerWidth),document.body.style.height||(e.canvas.height=e.height||e.pixelRatio*window.innerHeight);else{var t=e.container.getBoundingClientRect();e.canvas.width=e.width||t.right-t.left,e.canvas.height=e.height||t.bottom-t.top}}function Cqe(e){return typeof e.getContext=="function"&&"width"in e&&"height"in e}function eBt(e){return typeof e.nodeName=="string"&&typeof e.appendChild=="function"&&typeof e.getBoundingClientRect=="function"}function tBt(e){return typeof e.drawArrays=="function"||typeof e.drawElements=="function"}function Lqe(){var e=document.createElement("canvas");return e.style.position="absolute",e.style.top=0,e.style.left=0,e}});var Dqe=ye((Tmr,Rqe)=>{"use strict";var rBt=UY(),iBt=[32,126];Rqe.exports=nBt;function nBt(e){e=e||{};var t=e.shape?e.shape:e.canvas?[e.canvas.width,e.canvas.height]:[512,512],r=e.canvas||document.createElement("canvas"),n=e.font,i=typeof e.step=="number"?[e.step,e.step]:e.step||[32,32],a=e.chars||iBt;if(n&&typeof n!="string"&&(n=rBt(n)),!Array.isArray(a))a=String(a).split("");else if(a.length===2&&typeof a[0]=="number"&&typeof a[1]=="number"){for(var o=[],s=a[0],l=0;s<=a[1];s++)o[l++]=String.fromCharCode(s);a=o}t=t.slice(),r.width=t[0],r.height=t[1];var u=r.getContext("2d");u.fillStyle="#000",u.fillRect(0,0,r.width,r.height),u.font=n,u.textAlign="center",u.textBaseline="middle",u.fillStyle="#fff";for(var c=i[0]/2,f=i[1]/2,s=0;st[0]-i[0]/2&&(c=i[0]/2,f+=i[1]);return r}});var WY=ye(Th=>{"use strict";"use restrict";var jY=32;Th.INT_BITS=jY;Th.INT_MAX=2147483647;Th.INT_MIN=-1<0)-(e<0)};Th.abs=function(e){var t=e>>jY-1;return(e^t)-t};Th.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};Th.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};Th.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function zqe(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}Th.countTrailingZeros=zqe;Th.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};Th.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};Th.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var _k=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|_k[e>>>16&255]<<8|_k[e>>>24&255]};Th.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};Th.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};Th.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};Th.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};Th.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>zqe(e)+1}});var Oqe=ye((Smr,qqe)=>{"use strict";function Fqe(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return aBt(e|0,t);break;case"object":if(typeof e.length=="number")return Fqe(e,t,0);break}return[]}qqe.exports=oBt});var Qqe=ye(Wl=>{"use strict";var fx=WY(),Av=Oqe(),Bqe=u2().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:Av([32,0]),UINT16:Av([32,0]),UINT32:Av([32,0]),BIGUINT64:Av([32,0]),INT8:Av([32,0]),INT16:Av([32,0]),INT32:Av([32,0]),BIGINT64:Av([32,0]),FLOAT:Av([32,0]),DOUBLE:Av([32,0]),DATA:Av([32,0]),UINT8C:Av([32,0]),BUFFER:Av([32,0])});var sBt=typeof Uint8ClampedArray!="undefined",lBt=typeof BigUint64Array!="undefined",uBt=typeof BigInt64Array!="undefined",Xh=window.__TYPEDARRAY_POOL;Xh.UINT8C||(Xh.UINT8C=Av([32,0]));Xh.BIGUINT64||(Xh.BIGUINT64=Av([32,0]));Xh.BIGINT64||(Xh.BIGINT64=Av([32,0]));Xh.BUFFER||(Xh.BUFFER=Av([32,0]));var dF=Xh.DATA,vF=Xh.BUFFER;Wl.free=function(t){if(Bqe.isBuffer(t))vF[fx.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=fx.log2(r)|0;dF[n].push(t)}};function Nqe(e){if(e){var t=e.length||e.byteLength,r=fx.log2(t);dF[r].push(e)}}function cBt(e){Nqe(e.buffer)}Wl.freeUint8=Wl.freeUint16=Wl.freeUint32=Wl.freeBigUint64=Wl.freeInt8=Wl.freeInt16=Wl.freeInt32=Wl.freeBigInt64=Wl.freeFloat32=Wl.freeFloat=Wl.freeFloat64=Wl.freeDouble=Wl.freeUint8Clamped=Wl.freeDataView=cBt;Wl.freeArrayBuffer=Nqe;Wl.freeBuffer=function(t){vF[fx.log2(t.length)].push(t)};Wl.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return Bp(t);switch(r){case"uint8":return ZY(t);case"uint16":return Uqe(t);case"uint32":return Vqe(t);case"int8":return Hqe(t);case"int16":return Gqe(t);case"int32":return jqe(t);case"float":case"float32":return Wqe(t);case"double":case"float64":return Zqe(t);case"uint8_clamped":return Xqe(t);case"bigint64":return Kqe(t);case"biguint64":return Yqe(t);case"buffer":return $qe(t);case"data":case"dataview":return Jqe(t);default:return null}return null};function Bp(t){var t=fx.nextPow2(t),r=fx.log2(t),n=dF[r];return n.length>0?n.pop():new ArrayBuffer(t)}Wl.mallocArrayBuffer=Bp;function ZY(e){return new Uint8Array(Bp(e),0,e)}Wl.mallocUint8=ZY;function Uqe(e){return new Uint16Array(Bp(2*e),0,e)}Wl.mallocUint16=Uqe;function Vqe(e){return new Uint32Array(Bp(4*e),0,e)}Wl.mallocUint32=Vqe;function Hqe(e){return new Int8Array(Bp(e),0,e)}Wl.mallocInt8=Hqe;function Gqe(e){return new Int16Array(Bp(2*e),0,e)}Wl.mallocInt16=Gqe;function jqe(e){return new Int32Array(Bp(4*e),0,e)}Wl.mallocInt32=jqe;function Wqe(e){return new Float32Array(Bp(4*e),0,e)}Wl.mallocFloat32=Wl.mallocFloat=Wqe;function Zqe(e){return new Float64Array(Bp(8*e),0,e)}Wl.mallocFloat64=Wl.mallocDouble=Zqe;function Xqe(e){return sBt?new Uint8ClampedArray(Bp(e),0,e):ZY(e)}Wl.mallocUint8Clamped=Xqe;function Yqe(e){return lBt?new BigUint64Array(Bp(8*e),0,e):null}Wl.mallocBigUint64=Yqe;function Kqe(e){return uBt?new BigInt64Array(Bp(8*e),0,e):null}Wl.mallocBigInt64=Kqe;function Jqe(e){return new DataView(Bp(e),0,e)}Wl.mallocDataView=Jqe;function $qe(e){e=fx.nextPow2(e);var t=fx.log2(e),r=vF[t];return r.length>0?r.pop():new Bqe(e)}Wl.mallocBuffer=$qe;Wl.clearCache=function(){for(var t=0;t<32;++t)Xh.UINT8[t].length=0,Xh.UINT16[t].length=0,Xh.UINT32[t].length=0,Xh.INT8[t].length=0,Xh.INT16[t].length=0,Xh.INT32[t].length=0,Xh.FLOAT[t].length=0,Xh.DOUBLE[t].length=0,Xh.BIGUINT64[t].length=0,Xh.BIGINT64[t].length=0,Xh.UINT8C[t].length=0,dF[t].length=0,vF[t].length=0}});var tOe=ye((Emr,eOe)=>{"use strict";var fBt=Object.prototype.toString;eOe.exports=function(e){var t;return fBt.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}});var XY=ye((kmr,rOe)=>{rOe.exports=function(t,r){r||(r=[0,""]),t=String(t);var n=parseFloat(t,10);return r[0]=n,r[1]=t.match(/[\d.\-\+]*\s*(.*)/)[1]||"",r}});var aOe=ye((Cmr,nOe)=>{"use strict";var hBt=XY();nOe.exports=iOe;var xk=96;function YY(e,t){var r=hBt(getComputedStyle(e).getPropertyValue(t));return r[0]*iOe(r[1],e)}function dBt(e,t){var r=document.createElement("div");r.style["font-size"]="128"+e,t.appendChild(r);var n=YY(r,"font-size")/128;return t.removeChild(r),n}function iOe(e,t){switch(t=t||document.body,e=(e||"px").trim().toLowerCase(),(t===window||t===document)&&(t=document.body),e){case"%":return t.clientHeight/100;case"ch":case"ex":return dBt(e,t);case"em":return YY(t,"font-size");case"rem":return YY(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return xk;case"cm":return xk/2.54;case"mm":return xk/25.4;case"pt":return xk/72;case"pc":return xk/6}return 1}});var lOe=ye((Lmr,sOe)=>{"use strict";sOe.exports=mF;var vBt=mF.canvas=document.createElement("canvas"),pF=vBt.getContext("2d"),oOe=gF([32,126]);mF.createPairs=gF;mF.ascii=oOe;function mF(e,t){Array.isArray(e)&&(e=e.join(", "));var r={},n,i=16,a=.05;t&&(t.length===2&&typeof t[0]=="number"?n=gF(t):Array.isArray(t)?n=t:(t.o?n=gF(t.o):t.pairs&&(n=t.pairs),t.fontSize&&(i=t.fontSize),t.threshold!=null&&(a=t.threshold))),n||(n=oOe),pF.font=i+"px "+e;for(var o=0;oi*a){var c=(u-l)/i;r[s]=c*1e3}}return r}function gF(e){for(var t=[],r=e[0];r<=e[1];r++)for(var n=String.fromCharCode(r),i=e[0];i{"use strict";fOe.exports=hx;hx.canvas=document.createElement("canvas");hx.cache={};function hx(o,t){t||(t={}),(typeof o=="string"||Array.isArray(o))&&(t.family=o);var r=Array.isArray(t.family)?t.family.join(", "):t.family;if(!r)throw Error("`family` must be defined");var n=t.size||t.fontSize||t.em||48,i=t.weight||t.fontWeight||"",a=t.style||t.fontStyle||"",o=[a,i,n].join(" ")+"px "+r,s=t.origin||"top";if(hx.cache[r]&&n<=hx.cache[r].em)return uOe(hx.cache[r],s);var l=t.canvas||hx.canvas,u=l.getContext("2d"),c={upper:t.upper!==void 0?t.upper:"H",lower:t.lower!==void 0?t.lower:"x",descent:t.descent!==void 0?t.descent:"p",ascent:t.ascent!==void 0?t.ascent:"h",tittle:t.tittle!==void 0?t.tittle:"i",overshoot:t.overshoot!==void 0?t.overshoot:"O"},f=Math.ceil(n*1.5);l.height=f,l.width=f*.5,u.font=o;var h="H",d={top:0};u.clearRect(0,0,f,f),u.textBaseline="top",u.fillStyle="black",u.fillText(h,0,0);var v=Ym(u.getImageData(0,0,f,f));u.clearRect(0,0,f,f),u.textBaseline="bottom",u.fillText(h,0,f);var x=Ym(u.getImageData(0,0,f,f));d.lineHeight=d.bottom=f-x+v,u.clearRect(0,0,f,f),u.textBaseline="alphabetic",u.fillText(h,0,f);var b=Ym(u.getImageData(0,0,f,f)),p=f-b-1+v;d.baseline=d.alphabetic=p,u.clearRect(0,0,f,f),u.textBaseline="middle",u.fillText(h,0,f*.5);var E=Ym(u.getImageData(0,0,f,f));d.median=d.middle=f-E-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="hanging",u.fillText(h,0,f*.5);var k=Ym(u.getImageData(0,0,f,f));d.hanging=f-k-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="ideographic",u.fillText(h,0,f);var A=Ym(u.getImageData(0,0,f,f));if(d.ideographic=f-A-1+v,c.upper&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.upper,0,0),d.upper=Ym(u.getImageData(0,0,f,f)),d.capHeight=d.baseline-d.upper),c.lower&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.lower,0,0),d.lower=Ym(u.getImageData(0,0,f,f)),d.xHeight=d.baseline-d.lower),c.tittle&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.tittle,0,0),d.tittle=Ym(u.getImageData(0,0,f,f))),c.ascent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.ascent,0,0),d.ascent=Ym(u.getImageData(0,0,f,f))),c.descent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.descent,0,0),d.descent=cOe(u.getImageData(0,0,f,f))),c.overshoot){u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.overshoot,0,0);var L=cOe(u.getImageData(0,0,f,f));d.overshoot=L-p}for(var _ in d)d[_]/=n;return d.em=n,hx.cache[r]=d,uOe(d,s)}function uOe(e,t){var r={};typeof t=="string"&&(t=e[t]);for(var n in e)n!=="em"&&(r[n]=e[n]-t);return r}function Ym(e){for(var t=e.height,r=e.data,n=3;n0;n-=4)if(r[n]!==0)return Math.floor((n-3)*.25/t)}});var gOe=ye((Imr,pOe)=>{"use strict";var fA=Eqe(),pBt=Zm(),gBt=GY(),mBt=Iqe(),yBt=EY(),KY=$_(),_Bt=Dqe(),dx=Qqe(),xBt=Q5(),bBt=tOe(),wBt=XY(),TBt=aOe(),ABt=lOe(),SBt=bh(),MBt=hOe(),EBt=W2(),kBt=WY(),dOe=kBt.nextPow2,vOe=new yBt,_F=!1;document.body&&(yF=document.body.appendChild(document.createElement("div")),yF.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(yF).fontStretch&&(_F=!0),document.body.removeChild(yF));var yF,Vu=function(t){CBt(t)?(t={regl:t},this.gl=t.regl._gl):this.gl=mBt(t),this.shader=vOe.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=t.regl||gBt({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),vOe.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(bBt(t)?t:{})};Vu.prototype.createShader=function(){var t=this.regl,r=t({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:t.prop("count"),offset:t.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:t.this("sizeBuffer")},width:{offset:0,stride:8,buffer:t.this("sizeBuffer")},char:t.this("charBuffer"),position:t.this("position")},uniforms:{atlasSize:function(i,a){return[a.atlas.width,a.atlas.height]},atlasDim:function(i,a){return[a.atlas.cols,a.atlas.rows]},atlas:function(i,a){return a.atlas.texture},charStep:function(i,a){return a.atlas.step},em:function(i,a){return a.atlas.em},color:t.prop("color"),opacity:t.prop("opacity"),viewport:t.this("viewportArray"),scale:t.this("scale"),align:t.prop("align"),baseline:t.prop("baseline"),translate:t.this("translate"),positionOffset:t.prop("positionOffset")},primitive:"points",viewport:t.this("viewport"),vert:` precision highp float; attribute float width, charOffset, char; attribute vec2 position; @@ -2705,14 +2705,14 @@ void main() { // color.rgb += (1. - color.rgb) * (1. - mask.rgb); gl_FragColor = color; - }`}),n={};return{regl:t,draw:r,atlas:n}};Vu.prototype.update=function(t){var r=this;if(typeof t=="string")t={text:t};else if(!t)return;t=sBt(t,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0),t.opacity!=null&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map(function(ke){return parseFloat(ke)}):this.opacity=parseFloat(t.opacity)),t.viewport!=null&&(this.viewport=hBt(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),this.viewport==null&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),t.kerning!=null&&(this.kerning=t.kerning),t.offset!=null&&(typeof t.offset=="number"&&(t.offset=[t.offset,0]),this.positionOffset=_Bt(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),!this.font.length&&!t.font&&(t.font=Vu.baseFontSize+"px sans-serif");var n=!1,i=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach(function(ke,ge){if(typeof ke=="string")try{ke=hA.parse(ke)}catch(Ge){ke=hA.parse(Vu.baseFontSize+"px "+ke)}else{var ie=ke.style,Te=ke.weight,Ee=ke.stretch,Ae=ke.variant;ke=hA.parse(hA.stringify(ke)),ie&&(ke.style=ie),Te&&(ke.weight=Te),Ee&&(ke.stretch=Ee),Ae&&(ke.variant=Ae)}var ze=hA.stringify({size:Vu.baseFontSize,family:ke.family,stretch:_F?ke.stretch:void 0,variant:ke.variant,weight:ke.weight,style:ke.style}),Ce=vBt(ke.size),me=Math.round(Ce[0]*pBt(Ce[1]));if(me!==r.fontSize[ge]&&(i=!0,r.fontSize[ge]=me),(!r.font[ge]||ze!=r.font[ge].baseString)&&(n=!0,r.font[ge]=Vu.fonts[ze],!r.font[ge])){var Re=ke.family.join(", "),ce=[ke.style];ke.style!=ke.variant&&ce.push(ke.variant),ke.variant!=ke.weight&&ce.push(ke.weight),_F&&ke.weight!=ke.stretch&&ce.push(ke.stretch),r.font[ge]={baseString:ze,family:Re,weight:ke.weight,stretch:ke.stretch,style:ke.style,variant:ke.variant,width:{},kerning:{},metrics:yBt(Re,{origin:"top",fontSize:Vu.baseFontSize,fontStyle:ce.join(" ")})},Vu.fonts[ze]=r.font[ge]}}),(n||i)&&this.font.forEach(function(ke,ge){var ie=hA.stringify({size:r.fontSize[ge],family:ke.family,stretch:_F?ke.stretch:void 0,variant:ke.variant,weight:ke.weight,style:ke.style});if(r.fontAtlas[ge]=r.shader.atlas[ie],!r.fontAtlas[ge]){var Te=ke.metrics;r.shader.atlas[ie]=r.fontAtlas[ge]={fontString:ie,step:Math.ceil(r.fontSize[ge]*Te.bottom*.5)*2,em:r.fontSize[ge],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:r.regl.texture()}}t.text==null&&(t.text=r.text)}),typeof t.text=="string"&&t.position&&t.position.length>2){for(var a=Array(t.position.length*.5),o=0;o2){for(var u=!t.position[0].length,c=hx.mallocFloat(this.count*2),f=0,h=0;f1?r.align[ge]:r.align[0]:r.align;if(typeof ie=="number")return ie;switch(ie){case"right":case"end":return-ke;case"center":case"centre":case"middle":return-ke*.5}return 0})),this.baseline==null&&t.baseline==null&&(t.baseline=0),t.baseline!=null&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(ke,ge){var ie=(r.font[ge]||r.font[0]).metrics,Te=0;return Te+=ie.bottom*.5,typeof ke=="number"?Te+=ke-ie.baseline:Te+=-ie[ke],Te*=-1,Te})),t.color!=null)if(t.color||(t.color="transparent"),typeof t.color=="string"||!isNaN(t.color))this.color=KY(t.color,"uint8");else{var H;if(typeof t.color[0]=="number"&&t.color.length>this.counts.length){var X=t.color.length;H=hx.mallocUint8(X);for(var G=(t.color.subarray||t.color.slice).bind(t.color),N=0;N4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2;if(ae){var _e=Math.max(this.position.length*.5||0,this.color.length*.25||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,this.positionOffset.length*.5||0);this.batch=Array(_e);for(var Me=0;Me1?this.counts[Me]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[Me]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(Me*4,Me*4+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[Me]:this.opacity,baseline:this.baselineOffset[Me]!=null?this.baselineOffset[Me]:this.baselineOffset[0],align:this.align?this.alignOffset[Me]!=null?this.alignOffset[Me]:this.alignOffset[0]:0,atlas:this.fontAtlas[Me]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(Me*2,Me*2+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]}};Vu.prototype.destroy=function(){};Vu.prototype.kerning=!0;Vu.prototype.position={constant:new Float32Array(2)};Vu.prototype.translate=null;Vu.prototype.scale=null;Vu.prototype.font=null;Vu.prototype.text="";Vu.prototype.positionOffset=[0,0];Vu.prototype.opacity=1;Vu.prototype.color=new Uint8Array([0,0,0,255]);Vu.prototype.alignOffset=[0,0];Vu.maxAtlasSize=1024;Vu.atlasCanvas=document.createElement("canvas");Vu.atlasContext=Vu.atlasCanvas.getContext("2d",{alpha:!1});Vu.baseFontSize=64;Vu.fonts={};function bBt(e){return typeof e=="function"&&e._gl&&e.prop&&e.texture&&e.buffer}vOe.exports=Vu});var xF=ye((Mmr,gOe)=>{"use strict";var wBt=pZ(),TBt=GY();gOe.exports=function(t,r,n){var i=t._fullLayout,a=!0;return i._glcanvas.each(function(o){if(o.regl){o.regl.preloadCachedCode(n);return}if(!(o.pick&&!i._has("parcoords"))){try{o.regl=TBt({canvas:this,attributes:{antialias:!o.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||window.devicePixelRatio,extensions:r||[],cachedCode:n||{}})}catch(s){a=!1}o.regl||(a=!1),a&&this.addEventListener("webglcontextlost",function(s){t&&t.emit&&t.emit("plotly_webglcontextlost",{event:s,layer:o.key})},!1)}}),a||wBt({container:i._glcontainer.node()}),a}});var QY=ye(($Y,bOe)=>{"use strict";var mOe=QX(),yOe=LY(),ABt=sqe(),_Oe=pOe(),JY=Mr(),SBt=Sg().selectMode,MBt=xF(),EBt=lu(),kBt=hU(),CBt=YX().styleTextSelection,xOe={};function LBt(e,t,r,n){var i=e._size,a=e.width*n,o=e.height*n,s=i.l*n,l=i.b*n,u=i.r*n,c=i.t*n,f=i.w*n,h=i.h*n;return[s+t.domain[0]*f,l+r.domain[0]*h,a-u-(1-t.domain[1])*f,o-c-(1-r.domain[1])*h]}var $Y=bOe.exports=function(t,r,n){if(n.length){var i=t._fullLayout,a=r._scene,o=r.xaxis,s=r.yaxis,l,u;if(a){var c=MBt(t,["ANGLE_instanced_arrays","OES_element_index_uint"],xOe);if(!c){a.init();return}var f=a.count,h=i._glcanvas.data()[0].regl;if(kBt(t,r,n),a.dirty){if((a.line2d||a.error2d)&&!(a.scatter2d||a.fill2d||a.glText)&&h.clear({}),a.error2d===!0&&(a.error2d=ABt(h)),a.line2d===!0&&(a.line2d=yOe(h)),a.scatter2d===!0&&(a.scatter2d=mOe(h)),a.fill2d===!0&&(a.fill2d=yOe(h)),a.glText===!0)for(a.glText=new Array(f),l=0;la.glText.length){var d=f-a.glText.length;for(l=0;lae&&(isNaN(re[_e])||isNaN(re[_e+1]));)_e-=2;W.positions=re.slice(ae,_e+2)}return W}),a.line2d.update(a.lineOptions)),a.error2d){var b=(a.errorXOptions||[]).concat(a.errorYOptions||[]);a.error2d.update(b)}a.scatter2d&&a.scatter2d.update(a.markerOptions),a.fillOrder=JY.repeat(null,f),a.fill2d&&(a.fillOptions=a.fillOptions.map(function(W,re){var ae=n[re];if(!(!W||!ae||!ae[0]||!ae[0].trace)){var _e=ae[0],Me=_e.trace,ke=_e.t,ge=a.lineOptions[re],ie,Te,Ee=[];Me._ownfill&&Ee.push(re),Me._nexttrace&&Ee.push(re+1),Ee.length&&(a.fillOrder[re]=Ee);var Ae=[],ze=ge&&ge.positions||ke.positions,Ce,me;if(Me.fill==="tozeroy"){for(Ce=0;CeCe&&isNaN(ze[me+1]);)me-=2;ze[Ce+1]!==0&&(Ae=[ze[Ce],0]),Ae=Ae.concat(ze.slice(Ce,me+2)),ze[me+1]!==0&&(Ae=Ae.concat([ze[me],0]))}else if(Me.fill==="tozerox"){for(Ce=0;CeCe&&isNaN(ze[me]);)me-=2;ze[Ce]!==0&&(Ae=[0,ze[Ce+1]]),Ae=Ae.concat(ze.slice(Ce,me+2)),ze[me]!==0&&(Ae=Ae.concat([0,ze[me+1]]))}else if(Me.fill==="toself"||Me.fill==="tonext"){for(Ae=[],ie=0,W.splitNull=!0,Te=0;Te-1;for(l=0;l{"use strict";var wOe=Vze();wOe.plot=QY();TOe.exports=wOe});var MOe=ye((kmr,SOe)=>{"use strict";SOe.exports=AOe()});var eK=ye((Cmr,LOe)=>{"use strict";var PBt=Uc(),COe=Kl(),EOe=Oc().axisHoverFormat,IBt=Wo().hovertemplateAttrs,xk=ek(),RBt=ad().idRegex,DBt=Vs().templatedArray,dA=no().extendFlat,o1=PBt.marker,zBt=o1.line,FBt=dA(COe("marker.line",{editTypeOverride:"calc"}),{width:dA({},zBt.width,{editType:"calc"}),editType:"calc"}),bF=dA(COe("marker"),{symbol:o1.symbol,angle:o1.angle,size:dA({},o1.size,{editType:"markerSize"}),sizeref:o1.sizeref,sizemin:o1.sizemin,sizemode:o1.sizemode,opacity:o1.opacity,colorbar:o1.colorbar,line:FBt,editType:"calc"});bF.color.editType=bF.cmin.editType=bF.cmax.editType="style";function kOe(e){return{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"subplotid",regex:RBt[e],editType:"plot"}}}LOe.exports={dimensions:DBt("dimension",{visible:{valType:"boolean",dflt:!0,editType:"calc"},label:{valType:"string",editType:"calc"},values:{valType:"data_array",editType:"calc+clearAxisTypes"},axis:{type:{valType:"enumerated",values:["linear","log","date","category"],editType:"calc+clearAxisTypes"},matches:{valType:"boolean",dflt:!1,editType:"calc"},editType:"calc+clearAxisTypes"},editType:"calc+clearAxisTypes"}),text:dA({},xk.text,{}),hovertext:dA({},xk.hovertext,{}),hovertemplate:IBt(),xhoverformat:EOe("x"),yhoverformat:EOe("y"),marker:bF,xaxes:kOe("x"),yaxes:kOe("y"),diagonal:{visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},showupperhalf:{valType:"boolean",dflt:!0,editType:"calc"},showlowerhalf:{valType:"boolean",dflt:!0,editType:"calc"},selected:{marker:xk.selected.marker,editType:"calc"},unselected:{marker:xk.unselected.marker,editType:"calc"},opacity:xk.opacity}});var wF=ye((Lmr,POe)=>{"use strict";POe.exports=function(e,t,r,n){n||(n=1/0);var i,a;for(i=0;i{"use strict";var tK=Mr(),qBt=Zd(),IOe=eK(),OBt=lu(),BBt=$p(),NBt=wF(),UBt=Fz().isOpenSymbol;ROe.exports=function(t,r,n,i){function a(d,v){return tK.coerce(t,r,IOe,d,v)}var o=qBt(t,r,{name:"dimensions",handleItemDefaults:VBt}),s=a("diagonal.visible"),l=a("showupperhalf"),u=a("showlowerhalf"),c=NBt(r,o,"values");if(!c||!s&&!l&&!u){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),BBt(t,r,n,i,a,{noAngleRef:!0,noStandOff:!0});var f=UBt(r.marker.symbol),h=OBt.isBubble(r);a("marker.line.width",f||h?1:0),HBt(t,r,i,a),tK.coerceSelectionMarkerOpacity(r,a)};function VBt(e,t){function r(i,a){return tK.coerce(e,t,IOe.dimensions,i,a)}r("label");var n=r("values");n&&n.length?r("visible"):t.visible=!1,r("axis.type"),r("axis.matches")}function HBt(e,t,r,n){var i=t.dimensions,a=i.length,o=t.showupperhalf,s=t.showlowerhalf,l=t.diagonal.visible,u,c,f=new Array(a),h=new Array(a);for(u=0;uc&&o||u{"use strict";var zOe=Mr();FOe.exports=function(t,r){var n=t._fullLayout,i=r.uid,a=n._splomScenes;a||(a=n._splomScenes={});var o={dirty:!0,selectBatch:[],unselectBatch:[]},s={matrix:!1,selectBatch:[],unselectBatch:[]},l=a[r.uid];return l||(l=a[i]=zOe.extendFlat({},o,s),l.draw=function(){l.matrix&&l.matrix.draw&&(l.selectBatch.length||l.unselectBatch.length?l.matrix.draw(l.unselectBatch,l.selectBatch):l.matrix.draw()),l.dirty=!1},l.destroy=function(){l.matrix&&l.matrix.destroy&&l.matrix.destroy(),l.matrixOptions=null,l.selectBatch=null,l.unselectBatch=null,l=null}),l.dirty||zOe.extendFlat(l,o),l}});var NOe=ye((Rmr,BOe)=>{"use strict";var rK=Mr(),TF=af(),GBt=q0().calcMarkerSize,jBt=q0().calcAxisExpansion,WBt=z0(),OOe=Y2().markerSelection,ZBt=Y2().markerStyle,XBt=qOe(),YBt=es().BADNUM,KBt=ox().TOO_MANY_POINTS;BOe.exports=function(t,r){var n=r.dimensions,i=r._length,a={},o=a.cdata=[],s=a.data=[],l=r._visibleDims=[],u,c,f,h,d;function v(k,A){for(var L=k.makeCalcdata({v:A.values,vcalendar:r.calendar},"v"),_=0;_KBt,g;for(b?g=a.sizeAvg||Math.max(a.size,3):g=GBt(r,i),c=0;c{(function(){var e,t,r,n,i,a;typeof performance!="undefined"&&performance!==null&&performance.now?bk.exports=function(){return performance.now()}:typeof process!="undefined"&&process!==null&&process.hrtime?(bk.exports=function(){return(e()-i)/1e6},t=process.hrtime,e=function(){var o;return o=t(),o[0]*1e9+o[1]},n=e(),a=process.uptime()*1e9,i=n-a):Date.now?(bk.exports=function(){return Date.now()-r},r=Date.now()):(bk.exports=function(){return new Date().getTime()-r},r=new Date().getTime())}).call(UOe)});var GOe=ye((Dmr,MF)=>{var JBt=VOe(),s1=window,AF=["moz","webkit"],pA="AnimationFrame",gA=s1["request"+pA],wk=s1["cancel"+pA]||s1["cancelRequest"+pA];for(vA=0;!gA&&vA{jOe.exports=function(t,r){var n=typeof t=="number",i=typeof r=="number";n&&!i?(r=t,t=0):!n&&!i&&(t=0,r=0),t=t|0,r=r|0;var a=r-t;if(a<0)throw new Error("array length must be positive");for(var o=new Array(a),s=0,l=t;s{"use strict";var $Bt=QX(),QBt=Zm(),eNt=j2(),ZOe=GOe(),tNt=WOe(),nK=eA(),rNt=W2();YOe.exports=vx;function vx(e,t){if(!(this instanceof vx))return new vx(e,t);this.traces=[],this.passes={},this.regl=e,this.scatter=$Bt(e),this.canvas=this.scatter.canvas}vx.prototype.render=function(...e){return e.length&&this.update(...e),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?this.planned==null&&(this.planned=ZOe(()=>{this.draw(),this.dirty=!0,this.planned=null})):(this.draw(),this.dirty=!0,ZOe(()=>{this.dirty=!1})),this)};vx.prototype.update=function(...e){if(!e.length)return;for(let n=0;nb||!i.lower&&x{t[a+s]=n})}this.scatter.draw(...t)}return this};vx.prototype.destroy=function(){return this.traces.forEach(e=>{e.buffer&&e.buffer.destroy&&e.buffer.destroy()}),this.traces=null,this.passes=null,this.scatter.destroy(),this};function iNt(e,t,r){let n=e.id!=null?e.id:e,i=t,a=r;return n<<16|(i&255)<<8|a&255}function EF(e,t,r){let n,i,a,o,s,l,u,c,f=e[t],h=e[r];return f.length>2?(n=f[0],a=f[2],i=f[1],o=f[3]):f.length?(n=i=f[0],a=o=f[1]):(n=f.x,i=f.y,a=f.x+f.width,o=f.y+f.height),h.length>2?(s=h[0],u=h[2],l=h[1],c=h[3]):h.length?(s=l=h[0],u=c=h[1]):(s=h.x,l=h.y,u=h.x+h.width,c=h.y+h.height),[s,i,u,o]}function XOe(e){if(typeof e=="number")return[e,e,e,e];if(e.length===2)return[e[0],e[1],e[0],e[1]];{let t=nK(e);return[t.x,t.y,t.x+t.width,t.y+t.height]}}});var $Oe=ye((qmr,JOe)=>{"use strict";var nNt=KOe(),aK=Mr(),kF=af(),aNt=Sg().selectMode;JOe.exports=function(t,r,n){if(n.length)for(var i=0;i-1,T=aNt(c)||!!i.selectedpoints||P,F=!0;if(T){var q=i._length;if(i.selectedpoints){o.selectBatch=i.selectedpoints;var V=i.selectedpoints,H={};for(d=0;d{"use strict";QOe.getDimIndex=function(t,r){for(var n=r._id,i=n.charAt(0),a={x:0,y:1}[i],o=t._visibleDims,s=0;s{"use strict";var eBe=oK(),sNt=zz().calcHover,tBe=Qa().getFromId,lNt=no().extendFlat;function uNt(e,t,r,n,i){i||(i={});var a=(n||"").charAt(0)==="x",o=(n||"").charAt(0)==="y",s=rBe(e,t,r);if((a||o)&&i.hoversubplots==="axis"&&s[0])for(var l=(a?e.xa:e.ya)._subplotsWith,u=i.gd,c=lNt({},e),f=0;f{"use strict";var lBe=Mr(),aBe=lBe.pushUnique,oBe=lu(),sBe=oK();uBe.exports=function(t,r){var n=t.cd,i=n[0].trace,a=n[0].t,o=t.scene,s=o.matrixOptions.cdata,l=t.xaxis,u=t.yaxis,c=[];if(!o)return c;var f=!oBe.hasMarkers(i)&&!oBe.hasText(i);if(i.visible!==!0||f)return c;var h=sBe.getDimIndex(i,l),d=sBe.getDimIndex(i,u);if(h===!1||d===!1)return c;var v=a.xpx[h],x=a.ypx[d],b=s[h],g=s[d],E=(t.scene.selectBatch||[]).slice(),k=[];if(r!==!1&&!r.degenerate)for(var A=0;A{"use strict";var fBe=Mr(),cNt=z0(),fNt=Y2().markerStyle;hBe.exports=function(t,r){var n=r.trace,i=t._fullLayout._splomScenes[n.uid];if(i){cNt(t,n),fBe.extendFlat(i.matrixOptions,fNt(t,n));var a=fBe.extendFlat({},i.matrixOptions,i.viewOpts);i.matrix.update(a,null)}}});var pBe=ye((Vmr,vBe)=>{"use strict";var hNt=ba(),dNt=nV();vBe.exports={moduleType:"trace",name:"splom",categories:["gl","regl","cartesian","symbols","showLegend","scatter-like"],attributes:eK(),supplyDefaults:DOe(),colorbar:Kd(),calc:NOe(),plot:$Oe(),hoverPoints:nBe().hoverPoints,selectPoints:cBe(),editStyle:dBe(),meta:{}};hNt.register(dNt)});var bBe=ye((Hmr,xBe)=>{"use strict";var vNt=LY(),pNt=ba(),gNt=xF(),mNt=kd().getModuleCalcData,px=Jf(),gBe=af().getFromId,mBe=Qa().shouldShowZeroLine,yBe="splom",_Be={};function yNt(e){var t=e._fullLayout,r=pNt.getModule(yBe),n=mNt(e.calcdata,r)[0],i=gNt(e,["ANGLE_instanced_arrays","OES_element_index_uint"],_Be);i&&(t._hasOnlyLargeSploms&&sK(e),r.plot(e,{},n))}function _Nt(e){var t=e.calcdata,r=e._fullLayout;r._hasOnlyLargeSploms&&sK(e);for(var n=0;n{"use strict";var wBe=pBe();wBe.basePlotModule=bBe(),TBe.exports=wBe});var MBe=ye((jmr,SBe)=>{"use strict";SBe.exports=ABe()});var cK=ye((Wmr,EBe)=>{"use strict";var TNt=Kl(),lK=Cd(),uK=Su(),ANt=Ju().attributes,CF=no().extendFlat,SNt=Vs().templatedArray;EBe.exports={domain:ANt({name:"parcoords",trace:!0,editType:"plot"}),labelangle:{valType:"angle",dflt:0,editType:"plot"},labelside:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},labelfont:uK({editType:"plot"}),tickfont:uK({autoShadowDflt:!0,editType:"plot"}),rangefont:uK({editType:"plot"}),dimensions:SNt("dimension",{label:{valType:"string",editType:"plot"},tickvals:CF({},lK.tickvals,{editType:"plot"}),ticktext:CF({},lK.ticktext,{editType:"plot"}),tickformat:CF({},lK.tickformat,{editType:"plot"}),visible:{valType:"boolean",dflt:!0,editType:"plot"},range:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},constraintrange:{valType:"info_array",freeLength:!0,dimensions:"1-2",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},multiselect:{valType:"boolean",dflt:!0,editType:"plot"},values:{valType:"data_array",editType:"calc"},editType:"calc"}),line:CF({editType:"calc"},TNt("line",{colorscaleDflt:"Viridis",autoColorDflt:!1,editTypeOverride:"calc"})),unselected:{line:{color:{valType:"color",dflt:"#7f7f7f",editType:"plot"},opacity:{valType:"number",min:0,max:1,dflt:"auto",editType:"plot"},editType:"plot"},editType:"plot"}}});var Tk=ye((Zmr,kBe)=>{"use strict";kBe.exports={maxDimensionCount:60,overdrag:45,verticalPadding:2,tickDistance:50,canvasPixelRatio:1,blockLineCount:5e3,layers:["contextLineLayer","focusLineLayer","pickLineLayer"],axisTitleOffset:28,axisExtentOffset:10,bar:{width:4,captureWidth:10,fillColor:"magenta",fillOpacity:1,snapDuration:150,snapRatio:.25,snapClose:.01,strokeOpacity:1,strokeWidth:1,handleHeight:8,handleOpacity:1,handleOverlap:0},cn:{axisExtentText:"axis-extent-text",parcoordsLineLayers:"parcoords-line-layers",parcoordsLineLayer:"parcoords-lines",parcoords:"parcoords",parcoordsControlView:"parcoords-control-view",yAxis:"y-axis",axisOverlays:"axis-overlays",axis:"axis",axisHeading:"axis-heading",axisTitle:"axis-title",axisExtent:"axis-extent",axisExtentTop:"axis-extent-top",axisExtentTopText:"axis-extent-top-text",axisExtentBottom:"axis-extent-bottom",axisExtentBottomText:"axis-extent-bottom-text",axisBrush:"axis-brush"},id:{filterBarPattern:"filter-bar-pattern"}}});var Km=ye((Xmr,LBe)=>{"use strict";var MNt=OS();function CBe(e){return[e]}LBe.exports={keyFun:function(e){return e.key},repeat:CBe,descend:MNt,wrap:CBe,unwrap:function(e){return e[0]}}});var dK=ye((Ymr,UBe)=>{"use strict";var th=Tk(),em=xa(),ENt=Km().keyFun,LF=Km().repeat,mA=Mr().sorterAsc,kNt=Mr().strTranslate,PBe=th.bar.snapRatio;function IBe(e,t){return e*(1-PBe)+t*PBe}var RBe=th.bar.snapClose;function CNt(e,t){return e*(1-RBe)+t*RBe}function IF(e,t,r,n){if(LNt(r,n))return r;var i=e?-1:1,a=0,o=t.length-1;if(i<0){var s=a;a=o,o=s}for(var l=t[a],u=l,c=a;i*c=t[r][0]&&e<=t[r][1])return!0;return!1}function PNt(e){e.attr("x",-th.bar.captureWidth/2).attr("width",th.bar.captureWidth)}function INt(e){e.attr("visibility","visible").style("visibility","visible").attr("fill","yellow").attr("opacity",0)}function RNt(e){if(!e.brush.filterSpecified)return"0,"+e.height;for(var t=DBe(e.brush.filter.getConsolidated(),e.height),r=[0],n,i,a,o=t.length?t[0][0]:null,s=0;se[1]+r||t=.9*e[1]+.1*e[0]?"n":t<=.9*e[0]+.1*e[1]?"s":"ns"}function zBe(){em.select(document.body).style("cursor",null)}function hK(e){e.attr("stroke-dasharray",RNt)}function PF(e,t){var r=em.select(e).selectAll(".highlight, .highlight-shadow"),n=t?r.transition().duration(th.bar.snapDuration).each("end",t):r;hK(n)}function FBe(e,t){var r=e.brush,n=r.filterSpecified,i=NaN,a={},o;if(n){var s=e.height,l=r.filter.getConsolidated(),u=DBe(l,s),c=NaN,f=NaN,h=NaN;for(o=0;o<=u.length;o++){var d=u[o];if(d&&d[0]<=t&&t<=d[1]){c=o;break}else if(f=o?o-1:NaN,d&&d[0]>t){h=o;break}}if(i=c,isNaN(i)&&(isNaN(f)||isNaN(h)?i=isNaN(f)?h:f:i=t-u[f][1]=E[0]&&g<=E[1]){a.clickableOrdinalRange=E;break}}}return a}function zNt(e,t){em.event.sourceEvent.stopPropagation();var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=t.unitToPaddedPx.invert(r),i=t.brush,a=FBe(t,r),o=a.interval,s=i.svgBrush;if(s.wasDragged=!1,s.grabbingBar=a.region==="ns",s.grabbingBar){var l=o.map(t.unitToPaddedPx);s.grabPoint=r-l[0]-th.verticalPadding,s.barLength=l[1]-l[0]}s.clickableOrdinalRange=a.clickableOrdinalRange,s.stayingIntervals=t.multiselect&&i.filterSpecified?i.filter.getConsolidated():[],o&&(s.stayingIntervals=s.stayingIntervals.filter(function(u){return u[0]!==o[0]&&u[1]!==o[1]})),s.startExtent=a.region?o[a.region==="s"?1:0]:n,t.parent.inBrushDrag=!0,s.brushStartCallback()}function qBe(e,t){em.event.sourceEvent.stopPropagation();var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=t.brush.svgBrush;n.wasDragged=!0,n._dragging=!0,n.grabbingBar?n.newExtent=[r-n.grabPoint,r+n.barLength-n.grabPoint].map(t.unitToPaddedPx.invert):n.newExtent=[n.startExtent,t.unitToPaddedPx.invert(r)].sort(mA),t.brush.filterSpecified=!0,n.extent=n.stayingIntervals.concat([n.newExtent]),n.brushCallback(t),PF(e.parentNode)}function FNt(e,t){var r=t.brush,n=r.filter,i=r.svgBrush;i._dragging||(OBe(e,t),qBe(e,t),t.brush.svgBrush.wasDragged=!1),i._dragging=!1;var a=em.event;a.sourceEvent.stopPropagation();var o=i.grabbingBar;if(i.grabbingBar=!1,i.grabLocation=void 0,t.parent.inBrushDrag=!1,zBe(),!i.wasDragged){i.wasDragged=void 0,i.clickableOrdinalRange?r.filterSpecified&&t.multiselect?i.extent.push(i.clickableOrdinalRange):(i.extent=[i.clickableOrdinalRange],r.filterSpecified=!0):o?(i.extent=i.stayingIntervals,i.extent.length===0&&fK(r)):fK(r),i.brushCallback(t),PF(e.parentNode),i.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);return}var s=function(){n.set(n.getConsolidated())};if(t.ordinal){var l=t.unitTickvals;l[l.length-1]i.newExtent[0];i.extent=i.stayingIntervals.concat(u?[i.newExtent]:[]),i.extent.length||fK(r),i.brushCallback(t),u?PF(e.parentNode,s):(s(),PF(e.parentNode))}else s();i.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}function OBe(e,t){var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=FBe(t,r),i="crosshair";n.clickableOrdinalRange?i="pointer":n.region&&(i=n.region+"-resize"),em.select(document.body).style("cursor",i)}function qNt(e){e.on("mousemove",function(t){em.event.preventDefault(),t.parent.inBrushDrag||OBe(this,t)}).on("mouseleave",function(t){t.parent.inBrushDrag||zBe()}).call(em.behavior.drag().on("dragstart",function(t){zNt(this,t)}).on("drag",function(t){qBe(this,t)}).on("dragend",function(t){FNt(this,t)}))}function BBe(e,t){return e[0]-t[0]}function ONt(e,t,r){var n=r._context.staticPlot,i=e.selectAll(".background").data(LF);i.enter().append("rect").classed("background",!0).call(PNt).call(INt).style("pointer-events",n?"none":"auto").attr("transform",kNt(0,th.verticalPadding)),i.call(qNt).attr("height",function(s){return s.height-th.verticalPadding});var a=e.selectAll(".highlight-shadow").data(LF);a.enter().append("line").classed("highlight-shadow",!0).attr("x",-th.bar.width/2).attr("stroke-width",th.bar.width+th.bar.strokeWidth).attr("stroke",t).attr("opacity",th.bar.strokeOpacity).attr("stroke-linecap","butt"),a.attr("y1",function(s){return s.height}).call(hK);var o=e.selectAll(".highlight").data(LF);o.enter().append("line").classed("highlight",!0).attr("x",-th.bar.width/2).attr("stroke-width",th.bar.width-th.bar.strokeWidth).attr("stroke",th.bar.fillColor).attr("opacity",th.bar.fillOpacity).attr("stroke-linecap","butt"),o.attr("y1",function(s){return s.height}).call(hK)}function BNt(e,t,r){var n=e.selectAll("."+th.cn.axisBrush).data(LF,ENt);n.enter().append("g").classed(th.cn.axisBrush,!0),ONt(n,t,r)}function NNt(e){return e.svgBrush.extent.map(function(t){return t.slice()})}function fK(e){e.filterSpecified=!1,e.svgBrush.extent=[[-1/0,1/0]]}function UNt(e){return function(r){var n=r.brush,i=NNt(n),a=i.slice();n.filter.set(a),e()}}function NBe(e){for(var t=e.slice(),r=[],n,i=t.shift();i;){for(n=i.slice();(i=t.shift())&&i[0]<=n[1];)n[1]=Math.max(n[1],i[1]);r.push(n)}return r.length===1&&r[0][0]>r[0][1]&&(r=[]),r}function VNt(){var e=[],t,r;return{set:function(n){e=n.map(function(i){return i.slice().sort(mA)}).sort(BBe),e.length===1&&e[0][0]===-1/0&&e[0][1]===1/0&&(e=[[0,-1]]),t=NBe(e),r=e.reduce(function(i,a){return[Math.min(i[0],a[0]),Math.max(i[1],a[1])]},[1/0,-1/0])},get:function(){return e.slice()},getConsolidated:function(){return t},getBounds:function(){return r}}}function HNt(e,t,r,n,i,a){var o=VNt();return o.set(r),{filter:o,filterSpecified:t,svgBrush:{extent:[],brushStartCallback:n,brushCallback:UNt(i),brushEndCallback:a}}}function GNt(e,t){if(Array.isArray(e[0])?(e=e.map(function(n){return n.sort(mA)}),t.multiselect?e=NBe(e.sort(BBe)):e=[e[0]]):e=[e.sort(mA)],t.tickvals){var r=t.tickvals.slice().sort(mA);if(e=e.map(function(n){var i=[IF(0,r,n[0],[]),IF(1,r,n[1],[])];if(i[1]>i[0])return i}).filter(function(n){return n}),!e.length)return}return e.length>1?e:e[0]}UBe.exports={makeBrush:HNt,ensureAxisBrush:BNt,cleanRanges:GNt}});var GBe=ye((Kmr,HBe)=>{"use strict";var gx=Mr(),jNt=Dv().hasColorscale,WNt=Uh(),ZNt=Ju().defaults,XNt=Zd(),YNt=Qa(),VBe=cK(),KNt=dK(),vK=Tk().maxDimensionCount,JNt=wF();function $Nt(e,t,r,n,i){var a=i("line.color",r);if(jNt(e,"line")&&gx.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),WNt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function QNt(e,t,r,n){function i(u,c){return gx.coerce(e,t,VBe.dimensions,u,c)}var a=i("values"),o=i("visible");if(a&&a.length||(o=t.visible=!1),o){i("label"),i("tickvals"),i("ticktext"),i("tickformat");var s=i("range");t._ax={_id:"y",type:"linear",showexponent:"all",exponentformat:"B",range:s},YNt.setConvert(t._ax,n.layout),i("multiselect");var l=i("constraintrange");l&&(t.constraintrange=KNt.cleanRanges(l,t))}}HBe.exports=function(t,r,n,i){function a(c,f){return gx.coerce(t,r,VBe,c,f)}var o=t.dimensions;Array.isArray(o)&&o.length>vK&&(gx.log("parcoords traces support up to "+vK+" dimensions at the moment"),o.splice(vK));var s=XNt(t,r,{name:"dimensions",layout:i,handleItemDefaults:QNt}),l=$Nt(t,r,n,i,a);ZNt(r,i,a),(!Array.isArray(s)||!s.length)&&(r.visible=!1),JNt(r,s,"values",l);var u=gx.extendFlat({},i.font,{size:Math.round(i.font.size/1.2)});gx.coerceFont(a,"labelfont",u),gx.coerceFont(a,"tickfont",u,{autoShadowDflt:!0}),gx.coerceFont(a,"rangefont",u),a("labelangle"),a("labelside"),a("unselected.line.color"),a("unselected.line.opacity")}});var WBe=ye((Jmr,jBe)=>{"use strict";var eUt=Mr().isArrayOrTypedArray,pK=Mu(),tUt=Km().wrap;jBe.exports=function(t,r){var n,i;return pK.hasColorscale(r,"line")&&eUt(r.line.color)?(n=r.line.color,i=pK.extractOpts(r.line).colorscale,pK.calc(t,r,{vals:n,containerStr:"line",cLetter:"c"})):(n=rUt(r._length),i=[[0,r.line.color],[1,r.line.color]]),tUt({lineColor:n,cscale:i})};function rUt(e){for(var t=new Array(e),r=0;r{"use strict";var iUt=Mr().isTypedArray;RF.convertTypedArray=function(e){return iUt(e)?Array.prototype.slice.call(e):e};RF.isOrdinal=function(e){return!!e.tickvals};RF.isVisible=function(e){return e.visible||!("visible"in e)}});var rNe=ye((Qmr,tNe)=>{"use strict";var nUt=["precision highp float;","","varying vec4 fragColor;","","attribute vec4 p01_04, p05_08, p09_12, p13_16,"," p17_20, p21_24, p25_28, p29_32,"," p33_36, p37_40, p41_44, p45_48,"," p49_52, p53_56, p57_60, colors;","","uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,"," loA, hiA, loB, hiB, loC, hiC, loD, hiD;","","uniform vec2 resolution, viewBoxPos, viewBoxSize;","uniform float maskHeight;","uniform float drwLayer; // 0: context, 1: focus, 2: pick","uniform vec4 contextColor;","uniform sampler2D maskTexture, palette;","","bool isPick = (drwLayer > 1.5);","bool isContext = (drwLayer < 0.5);","","const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);","const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);","","float val(mat4 p, mat4 v) {"," return dot(matrixCompMult(p, v) * UNITS, UNITS);","}","","float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {"," float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);"," float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);"," return y1 * (1.0 - ratio) + y2 * ratio;","}","","int iMod(int a, int b) {"," return a - b * (a / b);","}","","bool fOutside(float p, float lo, float hi) {"," return (lo < hi) && (lo > p || p > hi);","}","","bool vOutside(vec4 p, vec4 lo, vec4 hi) {"," return ("," fOutside(p[0], lo[0], hi[0]) ||"," fOutside(p[1], lo[1], hi[1]) ||"," fOutside(p[2], lo[2], hi[2]) ||"," fOutside(p[3], lo[3], hi[3])"," );","}","","bool mOutside(mat4 p, mat4 lo, mat4 hi) {"," return ("," vOutside(p[0], lo[0], hi[0]) ||"," vOutside(p[1], lo[1], hi[1]) ||"," vOutside(p[2], lo[2], hi[2]) ||"," vOutside(p[3], lo[3], hi[3])"," );","}","","bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {"," return mOutside(A, loA, hiA) ||"," mOutside(B, loB, hiB) ||"," mOutside(C, loC, hiC) ||"," mOutside(D, loD, hiD);","}","","bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {"," mat4 pnts[4];"," pnts[0] = A;"," pnts[1] = B;"," pnts[2] = C;"," pnts[3] = D;",""," for(int i = 0; i < 4; ++i) {"," for(int j = 0; j < 4; ++j) {"," for(int k = 0; k < 4; ++k) {"," if(0 == iMod("," int(255.0 * texture2D(maskTexture,"," vec2("," (float(i * 2 + j / 2) + 0.5) / 8.0,"," (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight"," ))[3]"," ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),"," 2"," )) return true;"," }"," }"," }"," return false;","}","","vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {"," float x = 0.5 * sign(v) + 0.5;"," float y = axisY(x, A, B, C, D);"," float z = 1.0 - abs(v);",""," z += isContext ? 0.0 : 2.0 * float("," outsideBoundingBox(A, B, C, D) ||"," outsideRasterMask(A, B, C, D)"," );",""," return vec4("," 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,"," z,"," 1.0"," );","}","","void main() {"," mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);"," mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);"," mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);"," mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);",""," float v = colors[3];",""," gl_Position = position(isContext, v, A, B, C, D);",""," fragColor ="," isContext ? vec4(contextColor) :"," isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));","}"].join(` -`),aUt=["precision highp float;","","varying vec4 fragColor;","","void main() {"," gl_FragColor = fragColor;","}"].join(` -`),Ak=Tk().maxDimensionCount,$Be=Mr(),ZBe=1e-6,DF=2048,oUt=new Uint8Array(4),XBe=new Uint8Array(4),YBe={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function sUt(e){e.read({x:0,y:0,width:1,height:1,data:oUt})}function QBe(e,t,r,n,i){var a=e._gl;a.enable(a.SCISSOR_TEST),a.scissor(t,r,n,i),e.clear({color:[0,0,0,0],depth:1})}function lUt(e,t,r,n,i,a){var o=a.key;function s(l){var u=Math.min(n,i-l*n);l===0&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],QBe(e,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),!r.clearOnly&&(a.count=2*u,a.offset=2*l*n,t(a),l*n+u>>8*t)%256/255}function fUt(e,t,r){for(var n=new Array(e*(Ak+4)),i=0,a=0;aX&&(X=M[F].dim1.canvasX,V=F);T===0&&QBe(i,0,0,u.canvasWidth,u.canvasHeight);var G=k(r);for(F=0;F{"use strict";var zd=xa(),l1=Mr(),yK=l1.isArrayOrTypedArray,lNe=l1.numberFormat,uNe=rZ(),cNe=Qa(),gUt=l1.strRotate,Jm=l1.strTranslate,mUt=Ll(),zF=ao(),iNe=Mu(),bK=Km(),tg=bK.keyFun,$m=bK.repeat,fNe=bK.unwrap,yA=gK(),ll=Tk(),hNe=dK(),yUt=rNe();function nNe(e,t,r){return l1.aggNums(e,null,t,r)}function dNe(e,t){return wK(nNe(Math.min,e,t),nNe(Math.max,e,t))}function FF(e){var t=e.range;return t?wK(t[0],t[1]):dNe(e.values,e._length)}function wK(e,t){return(isNaN(e)||!isFinite(e))&&(e=0),(isNaN(t)||!isFinite(t))&&(t=0),e===t&&(e===0?(e-=1,t+=1):(e*=.9,t*=1.1)),[e,t]}function _Ut(e,t){return t?function(r,n){var i=t[n];return i==null?e(r):i}:e}function xUt(e,t,r,n,i){var a=FF(r);return n?zd.scale.ordinal().domain(n.map(_Ut(lNe(r.tickformat),i))).range(n.map(function(o){var s=(o-a[0])/(a[1]-a[0]);return e-t+s*(2*t-e)})):zd.scale.linear().domain(a).range([e-t,t])}function bUt(e,t){return zd.scale.linear().range([t,e-t])}function wUt(e,t){return zd.scale.linear().domain(FF(e)).range([t,1-t])}function TUt(e){if(e.tickvals){var t=FF(e);return zd.scale.ordinal().domain(e.tickvals).range(e.tickvals.map(function(r){return(r-t[0])/(t[1]-t[0])}))}}function AUt(e){var t=e.map(function(a){return a[0]}),r=e.map(function(a){var o=uNe(a[1]);return zd.rgb("rgb("+o[0]+","+o[1]+","+o[2]+")")}),n=function(a){return function(o){return o[a]}},i="rgb".split("").map(function(a){return zd.scale.linear().clamp(!0).domain(t).range(r.map(n(a)))});return function(a){return i.map(function(o){return o(a)})}}function xK(e){return e.dimensions.some(function(t){return t.brush.filterSpecified})}function SUt(e,t,r){var n=fNe(t),i=n.trace,a=yA.convertTypedArray(n.lineColor),o=i.line,s={color:uNe(i.unselected.line.color),opacity:i.unselected.line.opacity},l=iNe.extractOpts(o),u=l.reversescale?iNe.flipScale(n.cscale):n.cscale,c=i.domain,f=i.dimensions,h=e.width,d=i.labelangle,v=i.labelside,x=i.labelfont,b=i.tickfont,g=i.rangefont,E=l1.extendDeepNoArrays({},o,{color:a.map(zd.scale.linear().domain(FF({values:a,range:[l.min,l.max],_length:i._length}))),blockLineCount:ll.blockLineCount,canvasOverdrag:ll.overdrag*ll.canvasPixelRatio}),k=Math.floor(h*(c.x[1]-c.x[0])),A=Math.floor(e.height*(c.y[1]-c.y[0])),L=e.margin||{l:80,r:80,t:100,b:80},_=k,C=A;return{key:r,colCount:f.filter(yA.isVisible).length,dimensions:f,tickDistance:ll.tickDistance,unitToColor:AUt(u),lines:E,deselectedLines:s,labelAngle:d,labelSide:v,labelFont:x,tickFont:b,rangeFont:g,layoutWidth:h,layoutHeight:e.height,domain:c,translateX:c.x[0]*h,translateY:e.height-c.y[1]*e.height,pad:L,canvasWidth:_*ll.canvasPixelRatio+2*E.canvasOverdrag,canvasHeight:C*ll.canvasPixelRatio,width:_,height:C,canvasPixelRatio:ll.canvasPixelRatio}}function MUt(e,t,r){var n=r.width,i=r.height,a=r.dimensions,o=r.canvasPixelRatio,s=function(h){return n*h/Math.max(1,r.colCount-1)},l=ll.verticalPadding/i,u=bUt(i,ll.verticalPadding),c={key:r.key,xScale:s,model:r,inBrushDrag:!1},f={};return c.dimensions=a.filter(yA.isVisible).map(function(h,d){var v=wUt(h,l),x=f[h.label];f[h.label]=(x||0)+1;var b=h.label+(x?"__"+x:""),g=h.constraintrange,E=g&&g.length;E&&!yK(g[0])&&(g=[g]);var k=E?g.map(function(q){return q.map(v)}):[[-1/0,1/0]],A=function(){var q=c;q.focusLayer&&q.focusLayer.render(q.panels,!0);var V=xK(q);!e.contextShown()&&V?(q.contextLayer&&q.contextLayer.render(q.panels,!0),e.contextShown(!0)):e.contextShown()&&!V&&(q.contextLayer&&q.contextLayer.render(q.panels,!0,!0),e.contextShown(!1))},L=h.values;L.length>h._length&&(L=L.slice(0,h._length));var _=h.tickvals,C;function M(q,V){return{val:q,text:C[V]}}function p(q,V){return q.val-V.val}if(yK(_)&&_.length){l1.isTypedArray(_)&&(_=Array.from(_)),C=h.ticktext,!yK(C)||!C.length?C=_.map(lNe(h.tickformat)):C.length>_.length?C=C.slice(0,_.length):_.length>C.length&&(_=_.slice(0,C.length));for(var P=1;P<_.length;P++)if(_[P]<_[P-1]){for(var T=_.map(M).sort(p),F=0;F<_.length;F++)_[F]=T[F].val,C[F]=T[F].text;break}}else _=void 0;return L=yA.convertTypedArray(L),{key:b,label:h.label,tickFormat:h.tickformat,tickvals:_,ticktext:C,ordinal:yA.isOrdinal(h),multiselect:h.multiselect,xIndex:d,crossfilterDimensionIndex:d,visibleIndex:h._index,height:i,values:L,paddedUnitValues:L.map(v),unitTickvals:_&&_.map(v),xScale:s,x:s(d),canvasX:s(d)*o,unitToPaddedPx:u,domainScale:xUt(i,ll.verticalPadding,h,_,C),ordinalScale:TUt(h),parent:c,model:r,brush:hNe.makeBrush(e,E,k,function(){e.linePickActive(!1)},A,function(q){if(c.focusLayer.render(c.panels,!0),c.pickLayer&&c.pickLayer.render(c.panels,!0),e.linePickActive(!0),t&&t.filterChanged){var V=v.invert,H=q.map(function(X){return X.map(V).sort(l1.sorterAsc)}).sort(function(X,G){return X[0]-G[0]});t.filterChanged(c.key,h._index,H)}})}}),c}function aNe(e){e.classed(ll.cn.axisExtentText,!0).attr("text-anchor","middle").style("cursor","default")}function EUt(){var e=!0,t=!1;return{linePickActive:function(r){return arguments.length?e=!!r:e},contextShown:function(r){return arguments.length?t=!!r:t}}}function oNe(e,t){var r=t==="top"?1:-1,n=e*Math.PI/180,i=Math.sin(n),a=Math.cos(n);return{dir:r,dx:i,dy:a,degrees:e}}function _K(e,t,r){for(var n=t.panels||(t.panels=[]),i=e.data(),a=0;a=V||N>=H)return;var W=F.lineLayer.readPixel(G,H-1-N),re=W[3]!==0,ae=re?W[2]+256*(W[1]+256*W[0]):null,_e={x:G,y:N,clientX:q.clientX,clientY:q.clientY,dataIndex:F.model.key,curveNumber:ae};ae!==v&&(re?i.hover(_e):i.unhover&&i.unhover(_e),v=ae)}}),d.style("opacity",function(F){return F.pick?0:1}),s.style("background","rgba(255, 255, 255, 0)");var b=s.selectAll("."+ll.cn.parcoords).data(h,tg);b.exit().remove(),b.enter().append("g").classed(ll.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),b.attr("transform",function(F){return Jm(F.model.translateX,F.model.translateY)});var g=b.selectAll("."+ll.cn.parcoordsControlView).data($m,tg);g.enter().append("g").classed(ll.cn.parcoordsControlView,!0),g.attr("transform",function(F){return Jm(F.model.pad.l,F.model.pad.t)});var E=g.selectAll("."+ll.cn.yAxis).data(function(F){return F.dimensions},tg);E.enter().append("g").classed(ll.cn.yAxis,!0),g.each(function(F){_K(E,F,u)}),d.each(function(F){if(F.viewModel){!F.lineLayer||i?F.lineLayer=yUt(this,F):F.lineLayer.update(F),(F.key||F.key===0)&&(F.viewModel[F.key]=F.lineLayer);var q=!F.context||i;F.lineLayer.render(F.viewModel.panels,q)}}),E.attr("transform",function(F){return Jm(F.xScale(F.xIndex),0)}),E.call(zd.behavior.drag().origin(function(F){return F}).on("drag",function(F){var q=F.parent;f.linePickActive(!1),F.x=Math.max(-ll.overdrag,Math.min(F.model.width+ll.overdrag,zd.event.x)),F.canvasX=F.x*F.model.canvasPixelRatio,E.sort(function(V,H){return V.x-H.x}).each(function(V,H){V.xIndex=H,V.x=F===V?V.x:V.xScale(V.xIndex),V.canvasX=V.x*V.model.canvasPixelRatio}),_K(E,q,u),E.filter(function(V){return Math.abs(F.xIndex-V.xIndex)!==0}).attr("transform",function(V){return Jm(V.xScale(V.xIndex),0)}),zd.select(this).attr("transform",Jm(F.x,0)),E.each(function(V,H,X){X===F.parent.key&&(q.dimensions[H]=V)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!xK(q)),q.focusLayer.render&&q.focusLayer.render(q.panels)}).on("dragend",function(F){var q=F.parent;F.x=F.xScale(F.xIndex),F.canvasX=F.x*F.model.canvasPixelRatio,_K(E,q,u),zd.select(this).attr("transform",function(V){return Jm(V.x,0)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!xK(q)),q.focusLayer&&q.focusLayer.render(q.panels),q.pickLayer&&q.pickLayer.render(q.panels,!0),f.linePickActive(!0),i&&i.axesMoved&&i.axesMoved(q.key,q.dimensions.map(function(V){return V.crossfilterDimensionIndex}))})),E.exit().remove();var k=E.selectAll("."+ll.cn.axisOverlays).data($m,tg);k.enter().append("g").classed(ll.cn.axisOverlays,!0),k.selectAll("."+ll.cn.axis).remove();var A=k.selectAll("."+ll.cn.axis).data($m,tg);A.enter().append("g").classed(ll.cn.axis,!0),A.each(function(F){var q=F.model.height/F.model.tickDistance,V=F.domainScale,H=V.domain();zd.select(this).call(zd.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(q,F.tickFormat).tickValues(F.ordinal?H:null).tickFormat(function(X){return yA.isOrdinal(F)?X:vNe(F.model.dimensions[F.visibleIndex],X)}).scale(V)),zF.font(A.selectAll("text"),F.model.tickFont)}),A.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),A.selectAll("text").style("cursor","default");var L=k.selectAll("."+ll.cn.axisHeading).data($m,tg);L.enter().append("g").classed(ll.cn.axisHeading,!0);var _=L.selectAll("."+ll.cn.axisTitle).data($m,tg);_.enter().append("text").classed(ll.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",a?"none":"auto"),_.text(function(F){return F.label}).each(function(F){var q=zd.select(this);zF.font(q,F.model.labelFont),mUt.convertToTspans(q,t)}).attr("transform",function(F){var q=oNe(F.model.labelAngle,F.model.labelSide),V=ll.axisTitleOffset;return(q.dir>0?"":Jm(0,2*V+F.model.height))+gUt(q.degrees)+Jm(-V*q.dx,-V*q.dy)}).attr("text-anchor",function(F){var q=oNe(F.model.labelAngle,F.model.labelSide),V=Math.abs(q.dx),H=Math.abs(q.dy);return 2*V>H?q.dir*q.dx<0?"start":"end":"middle"});var C=k.selectAll("."+ll.cn.axisExtent).data($m,tg);C.enter().append("g").classed(ll.cn.axisExtent,!0);var M=C.selectAll("."+ll.cn.axisExtentTop).data($m,tg);M.enter().append("g").classed(ll.cn.axisExtentTop,!0),M.attr("transform",Jm(0,-ll.axisExtentOffset));var p=M.selectAll("."+ll.cn.axisExtentTopText).data($m,tg);p.enter().append("text").classed(ll.cn.axisExtentTopText,!0).call(aNe),p.text(function(F){return sNe(F,!0)}).each(function(F){zF.font(zd.select(this),F.model.rangeFont)});var P=C.selectAll("."+ll.cn.axisExtentBottom).data($m,tg);P.enter().append("g").classed(ll.cn.axisExtentBottom,!0),P.attr("transform",function(F){return Jm(0,F.model.height+ll.axisExtentOffset)});var T=P.selectAll("."+ll.cn.axisExtentBottomText).data($m,tg);T.enter().append("text").classed(ll.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(aNe),T.text(function(F){return sNe(F,!1)}).each(function(F){zF.font(zd.select(this),F.model.rangeFont)}),hNe.ensureAxisBrush(k,c,t)}});var AK=ye((TK,xNe)=>{"use strict";var CUt=gNe(),LUt=xF(),mNe=gK().isVisible,_Ne={};function yNe(e,t,r){var n=t.indexOf(r),i=e.indexOf(n);return i===-1&&(i+=t.length),i}function PUt(e,t){return function(n,i){return yNe(e,t,n)-yNe(e,t,i)}}var TK=xNe.exports=function(t,r){var n=t._fullLayout,i=LUt(t,[],_Ne);if(i){var a={},o={},s={},l={},u=n._size;r.forEach(function(v,x){var b=v[0].trace;s[x]=b.index;var g=l[x]=b.index;a[x]=t.data[g].dimensions,o[x]=t.data[g].dimensions.slice()});var c=function(v,x,b){var g=o[v][x],E=b.map(function(M){return M.slice()}),k="dimensions["+x+"].constraintrange",A=n._tracePreGUI[t._fullData[s[v]]._fullInput.uid];if(A[k]===void 0){var L=g.constraintrange;A[k]=L||null}var _=t._fullData[s[v]].dimensions[x];E.length?(E.length===1&&(E=E[0]),g.constraintrange=E,_.constraintrange=E.slice(),E=[E]):(delete g.constraintrange,delete _.constraintrange,E=null);var C={};C[k]=E,t.emit("plotly_restyle",[C,[l[v]]])},f=function(v){t.emit("plotly_hover",v)},h=function(v){t.emit("plotly_unhover",v)},d=function(v,x){var b=PUt(x,o[v].filter(mNe));a[v].sort(b),o[v].filter(function(g){return!mNe(g)}).sort(function(g){return o[v].indexOf(g)}).forEach(function(g){a[v].splice(a[v].indexOf(g),1),a[v].splice(o[v].indexOf(g),0,g)}),t.emit("plotly_restyle",[{dimensions:[a[v]]},[l[v]]])};CUt(t,r,{width:u.w,height:u.h,margin:{t:u.t,r:u.r,b:u.b,l:u.l}},{filterChanged:c,hover:f,unhover:h,axesMoved:d})}};TK.reglPrecompiled=_Ne});var wNe=ye(Sk=>{"use strict";var bNe=xa(),IUt=kd().getModuleCalcData,RUt=AK(),DUt=Zp();Sk.name="parcoords";Sk.plot=function(e){var t=IUt(e.calcdata,"parcoords")[0];t.length&&RUt(e,t)};Sk.clean=function(e,t,r,n){var i=n._has&&n._has("parcoords"),a=t._has&&t._has("parcoords");i&&!a&&(n._paperdiv.selectAll(".parcoords").remove(),n._glimages.selectAll("*").remove())};Sk.toSVG=function(e){var t=e._fullLayout._glimages,r=bNe.select(e).selectAll(".svg-container"),n=r.filter(function(a,o){return o===r.size()-1}).selectAll(".gl-canvas-context, .gl-canvas-focus");function i(){var a=this,o=a.toDataURL("image/png"),s=t.append("svg:image");s.attr({xmlns:DUt.svg,"xlink:href":o,preserveAspectRatio:"none",x:0,y:0,width:a.style.width,height:a.style.height})}n.each(i),window.setTimeout(function(){bNe.selectAll("#filterBarPattern").attr("id","filterBarPattern")},60)}});var ANe=ye((ryr,TNe)=>{"use strict";TNe.exports={attributes:cK(),supplyDefaults:GBe(),calc:WBe(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:wNe(),categories:["gl","regl","noOpacity","noHover"],meta:{}}});var ENe=ye((iyr,MNe)=>{"use strict";var SNe=ANe();SNe.plot=AK();MNe.exports=SNe});var CNe=ye((nyr,kNe)=>{"use strict";kNe.exports=ENe()});var SK=ye((ayr,RNe)=>{"use strict";var PNe=no().extendFlat,zUt=vl(),LNe=Su(),FUt=Kl(),INe=Wo().hovertemplateAttrs,qUt=Ju().attributes,OUt=PNe({editType:"calc"},FUt("line",{editTypeOverride:"calc"}),{shape:{valType:"enumerated",values:["linear","hspline"],dflt:"linear",editType:"plot"},hovertemplate:INe({editType:"plot",arrayOk:!1},{keys:["count","probability"]})});RNe.exports={domain:qUt({name:"parcats",trace:!0,editType:"calc"}),hoverinfo:PNe({},zUt.hoverinfo,{flags:["count","probability"],editType:"plot",arrayOk:!1}),hoveron:{valType:"enumerated",values:["category","color","dimension"],dflt:"category",editType:"plot"},hovertemplate:INe({editType:"plot",arrayOk:!1},{keys:["count","probability","category","categorycount","colorcount","bandcolorcount"]}),arrangement:{valType:"enumerated",values:["perpendicular","freeform","fixed"],dflt:"perpendicular",editType:"plot"},bundlecolors:{valType:"boolean",dflt:!0,editType:"plot"},sortpaths:{valType:"enumerated",values:["forward","backward"],dflt:"forward",editType:"plot"},labelfont:LNe({editType:"calc"}),tickfont:LNe({autoShadowDflt:!0,editType:"calc"}),dimensions:{_isLinkedToArray:"dimension",label:{valType:"string",editType:"calc"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},values:{valType:"data_array",dflt:[],editType:"calc"},displayindex:{valType:"integer",editType:"calc"},editType:"calc",visible:{valType:"boolean",dflt:!0,editType:"calc"}},line:OUt,counts:{valType:"number",min:0,dflt:1,arrayOk:!0,editType:"calc"},customdata:void 0,hoverlabel:void 0,ids:void 0,legend:void 0,legendgroup:void 0,legendrank:void 0,opacity:void 0,selectedpoints:void 0,showlegend:void 0}});var FNe=ye((oyr,zNe)=>{"use strict";var _A=Mr(),BUt=Dv().hasColorscale,NUt=Uh(),UUt=Ju().defaults,VUt=Zd(),DNe=SK(),HUt=wF(),GUt=vv().isTypedArraySpec;function jUt(e,t,r,n,i){i("line.shape"),i("line.hovertemplate");var a=i("line.color",n.colorway[0]);if(BUt(e,"line")&&_A.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),NUt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function WUt(e,t){function r(u,c){return _A.coerce(e,t,DNe.dimensions,u,c)}var n=r("values"),i=r("visible");if(n&&n.length||(i=t.visible=!1),i){r("label"),r("displayindex",t._index);var a=e.categoryarray,o=_A.isArrayOrTypedArray(a)&&a.length>0||GUt(a),s;o&&(s="array");var l=r("categoryorder",s);l==="array"?(r("categoryarray"),r("ticktext")):(delete e.categoryarray,delete e.ticktext),!o&&l==="array"&&(t.categoryorder="trace")}}zNe.exports=function(t,r,n,i){function a(u,c){return _A.coerce(t,r,DNe,u,c)}var o=VUt(t,r,{name:"dimensions",handleItemDefaults:WUt}),s=jUt(t,r,n,i,a);UUt(r,i,a),(!Array.isArray(o)||!o.length)&&(r.visible=!1),HUt(r,o,"values",s),a("hoveron"),a("hovertemplate"),a("arrangement"),a("bundlecolors"),a("sortpaths"),a("counts");var l=i.font;_A.coerceFont(a,"labelfont",l,{overrideDflt:{size:Math.round(l.size)}}),_A.coerceFont(a,"tickfont",l,{autoShadowDflt:!0,overrideDflt:{size:Math.round(l.size/1.2)}})}});var ONe=ye((syr,qNe)=>{"use strict";var ZUt=Km().wrap,XUt=Dv().hasColorscale,YUt=zv(),KUt=Gq(),JUt=ao(),Mk=Mr(),$Ut=uo();qNe.exports=function(t,r){var n=Mk.filterVisible(r.dimensions);if(n.length===0)return[];var i=n.map(function(p){var P;if(p.categoryorder==="trace")P=null;else if(p.categoryorder==="array")P=p.categoryarray;else{P=KUt(p.values);for(var T=!0,F=0;F=e.length||t[e[r]]!==void 0)return!1;t[e[r]]=!0}return!0}});var ZNe=ye((lyr,WNe)=>{"use strict";var ul=xa(),uVt=(R2(),ab(I2)).interpolateNumber,cVt=qP(),Ck=Nc(),mx=Mr(),Ek=mx.strTranslate,BNe=ao(),MK=id(),fVt=Ll();function hVt(e,t,r,n){var i=t._context.staticPlot,a=e.map(EVt.bind(0,t,r)),o=n.selectAll("g.parcatslayer").data([null]);o.enter().append("g").attr("class","parcatslayer").style("pointer-events",i?"none":"all");var s=o.selectAll("g.trace.parcats").data(a,u1),l=s.enter().append("g").attr("class","trace parcats");s.attr("transform",function(E){return Ek(E.x,E.y)}),l.append("g").attr("class","paths");var u=s.select("g.paths"),c=u.selectAll("path.path").data(function(E){return E.paths},u1);c.attr("fill",function(E){return E.model.color});var f=c.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",function(E){return E.model.color}).attr("fill-opacity",0);CK(f),c.attr("d",function(E){return E.svgD}),f.empty()||c.sort(EK),c.exit().remove(),c.on("mouseover",dVt).on("mouseout",vVt).on("click",pVt),l.append("g").attr("class","dimensions");var h=s.select("g.dimensions"),d=h.selectAll("g.dimension").data(function(E){return E.dimensions},u1);d.enter().append("g").attr("class","dimension"),d.attr("transform",function(E){return Ek(E.x,0)}),d.exit().remove();var v=d.selectAll("g.category").data(function(E){return E.categories},u1),x=v.enter().append("g").attr("class","category");v.attr("transform",function(E){return Ek(0,E.y)}),x.append("rect").attr("class","catrect").attr("pointer-events","none"),v.select("rect.catrect").attr("fill","none").attr("width",function(E){return E.width}).attr("height",function(E){return E.height}),UNe(x);var b=v.selectAll("rect.bandrect").data(function(E){return E.bands},u1);b.each(function(){mx.raiseToTop(this)}),b.attr("fill",function(E){return E.color});var g=b.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",function(E){return E.color}).attr("fill-opacity",0);b.attr("fill",function(E){return E.color}).attr("width",function(E){return E.width}).attr("height",function(E){return E.height}).attr("y",function(E){return E.y}).attr("cursor",function(E){return E.parcatsViewModel.arrangement==="fixed"?"default":E.parcatsViewModel.arrangement==="perpendicular"?"ns-resize":"move"}),PK(g),b.exit().remove(),x.append("text").attr("class","catlabel").attr("pointer-events","none"),v.select("text.catlabel").attr("text-anchor",function(E){return kk(E)?"start":"end"}).attr("alignment-baseline","middle").style("fill","rgb(0, 0, 0)").attr("x",function(E){return kk(E)?E.width+5:-5}).attr("y",function(E){return E.height/2}).text(function(E){return E.model.categoryLabel}).each(function(E){BNe.font(ul.select(this),E.parcatsViewModel.categorylabelfont),fVt.convertToTspans(ul.select(this),t)}),x.append("text").attr("class","dimlabel"),v.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",function(E){return E.parcatsViewModel.arrangement==="fixed"?"default":"ew-resize"}).attr("x",function(E){return E.width/2}).attr("y",-5).text(function(E,k){return k===0?E.parcatsViewModel.model.dimensions[E.model.dimensionInd].dimensionLabel:null}).each(function(E){BNe.font(ul.select(this),E.parcatsViewModel.labelfont)}),v.selectAll("rect.bandrect").on("mouseover",wVt).on("mouseout",TVt),v.exit().remove(),d.call(ul.behavior.drag().origin(function(E){return{x:E.x,y:0}}).on("dragstart",AVt).on("drag",SVt).on("dragend",MVt)),s.each(function(E){E.traceSelection=ul.select(this),E.pathSelection=ul.select(this).selectAll("g.paths").selectAll("path.path"),E.dimensionSelection=ul.select(this).selectAll("g.dimensions").selectAll("g.dimension")}),s.exit().remove()}WNe.exports=function(e,t,r,n){hVt(r,e,n,t)};function u1(e){return e.key}function kk(e){var t=e.parcatsViewModel.dimensions.length,r=e.parcatsViewModel.dimensions[t-1].model.dimensionInd;return e.model.dimensionInd===r}function EK(e,t){return e.model.rawColor>t.model.rawColor?1:e.model.rawColor"),_=ul.mouse(i)[0];Ck.loneHover({trace:a,x:v-s.left+l.left,y:x-s.top+l.top,text:L,color:e.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:b,idealAlign:_1&&u.displayInd===l.dimensions.length-1?(h=o.left,d="left"):(h=o.left+o.width,d="right");var v=s.model.count,x=s.model.categoryLabel,b=v/s.parcatsViewModel.model.count,g={countLabel:v,categoryLabel:x,probabilityLabel:b.toFixed(3)},E=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&E.push(["Count:",g.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&E.push(["P("+g.categoryLabel+"):",g.probabilityLabel].join(" "));var k=E.join("
");return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:k,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:g,eventData:[{data:c._input,fullData:c,count:v,category:x,probability:b}]}}function xVt(e,t,r){var n=[];return ul.select(r.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){var i=this;n.push(VNe(e,t,i))}),n}function bVt(e,t,r){e._fullLayout._calcInverseTransform(e);var n=e._fullLayout._invScaleX,i=e._fullLayout._invScaleY,a=r.getBoundingClientRect(),o=ul.select(r).datum(),s=o.categoryViewModel,l=s.parcatsViewModel,u=l.model.dimensions[s.model.dimensionInd],c=l.trace,f=a.y+a.height/2,h,d;l.dimensions.length>1&&u.displayInd===l.dimensions.length-1?(h=a.left,d="left"):(h=a.left+a.width,d="right");var v=s.model.categoryLabel,x=o.parcatsViewModel.model.count,b=0;o.categoryViewModel.bands.forEach(function(P){P.color===o.color&&(b+=P.count)});var g=s.model.count,E=0;l.pathSelection.each(function(P){P.model.color===o.color&&(E+=P.model.count)});var k=b/x,A=b/E,L=b/g,_={countLabel:b,categoryLabel:v,probabilityLabel:k.toFixed(3)},C=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&C.push(["Count:",_.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&(C.push("P(color \u2229 "+v+"): "+_.probabilityLabel),C.push("P("+v+" | color): "+A.toFixed(3)),C.push("P(color | "+v+"): "+L.toFixed(3)));var M=C.join("
"),p=MK.mostReadable(o.color,["black","white"]);return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:M,color:o.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:p,fontSize:10,idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:_,eventData:[{data:c._input,fullData:c,category:v,count:x,probability:k,categorycount:g,colorcount:E,bandcolorcount:b}]}}function wVt(e){if(!e.parcatsViewModel.dragDimension&&e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1){var t=ul.mouse(this)[1];if(t<-1)return;var r=e.parcatsViewModel.graphDiv,n=r._fullLayout,i=n._paperdiv.node().getBoundingClientRect(),a=e.parcatsViewModel.hoveron,o=this;if(a==="color"?(_Vt(o),RK(o,"plotly_hover",ul.event)):(yVt(o),IK(o,"plotly_hover",ul.event)),e.parcatsViewModel.hoverinfoItems.indexOf("none")===-1){var s;a==="category"?s=VNe(r,i,o):a==="color"?s=bVt(r,i,o):a==="dimension"&&(s=xVt(r,i,o)),s&&Ck.loneHover(s,{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:r})}}}function TVt(e){var t=e.parcatsViewModel;if(!t.dragDimension&&(CK(t.pathSelection),UNe(t.dimensionSelection.selectAll("g.category")),PK(t.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),Ck.loneUnhover(t.graphDiv._fullLayout._hoverlayer.node()),t.pathSelection.sort(EK),t.hoverinfoItems.indexOf("skip")===-1)){var r=e.parcatsViewModel.hoveron,n=this;r==="color"?RK(n,"plotly_unhover",ul.event):IK(n,"plotly_unhover",ul.event)}}function AVt(e){e.parcatsViewModel.arrangement!=="fixed"&&(e.dragDimensionDisplayInd=e.model.displayInd,e.initialDragDimensionDisplayInds=e.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),e.dragHasMoved=!1,e.dragCategoryDisplayInd=null,ul.select(this).selectAll("g.category").select("rect.catrect").each(function(t){var r=ul.mouse(this)[0],n=ul.mouse(this)[1];-2<=r&&r<=t.width+2&&-2<=n&&n<=t.height+2&&(e.dragCategoryDisplayInd=t.model.displayInd,e.initialDragCategoryDisplayInds=e.model.categories.map(function(i){return i.displayInd}),t.model.dragY=t.y,mx.raiseToTop(this.parentNode),ul.select(this.parentNode).selectAll("rect.bandrect").each(function(i){i.yc.y+c.height/2&&(a.model.displayInd=c.model.displayInd,c.model.displayInd=s),e.dragCategoryDisplayInd=a.model.displayInd}if(e.dragCategoryDisplayInd===null||e.parcatsViewModel.arrangement==="freeform"){i.model.dragX=ul.event.x;var f=e.parcatsViewModel.dimensions[r],h=e.parcatsViewModel.dimensions[n];f!==void 0&&i.model.dragXh.x&&(i.model.displayInd=h.model.displayInd,h.model.displayInd=e.dragDimensionDisplayInd),e.dragDimensionDisplayInd=i.model.displayInd}zK(e.parcatsViewModel),DK(e.parcatsViewModel),jNe(e.parcatsViewModel),GNe(e.parcatsViewModel)}}function MVt(e){if(e.parcatsViewModel.arrangement!=="fixed"&&e.dragDimensionDisplayInd!==null){ul.select(this).selectAll("text").attr("font-weight","normal");var t={},r=HNe(e.parcatsViewModel),n=e.parcatsViewModel.model.dimensions.map(function(h){return h.displayInd}),i=e.initialDragDimensionDisplayInds.some(function(h,d){return h!==n[d]});i&&n.forEach(function(h,d){var v=e.parcatsViewModel.model.dimensions[d].containerInd;t["dimensions["+v+"].displayindex"]=h});var a=!1;if(e.dragCategoryDisplayInd!==null){var o=e.model.categories.map(function(h){return h.displayInd});if(a=e.initialDragCategoryDisplayInds.some(function(h,d){return h!==o[d]}),a){var s=e.model.categories.slice().sort(function(h,d){return h.displayInd-d.displayInd}),l=s.map(function(h){return h.categoryValue}),u=s.map(function(h){return h.categoryLabel});t["dimensions["+e.model.containerInd+"].categoryarray"]=[l],t["dimensions["+e.model.containerInd+"].ticktext"]=[u],t["dimensions["+e.model.containerInd+"].categoryorder"]="array"}}if(e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1&&!e.dragHasMoved&&e.potentialClickBand&&(e.parcatsViewModel.hoveron==="color"?RK(e.potentialClickBand,"plotly_click",ul.event.sourceEvent):IK(e.potentialClickBand,"plotly_click",ul.event.sourceEvent)),e.model.dragX=null,e.dragCategoryDisplayInd!==null){var c=e.parcatsViewModel.dimensions[e.dragDimensionDisplayInd].categories[e.dragCategoryDisplayInd];c.model.dragY=null,e.dragCategoryDisplayInd=null}e.dragDimensionDisplayInd=null,e.parcatsViewModel.dragDimension=null,e.dragHasMoved=null,e.potentialClickBand=null,zK(e.parcatsViewModel),DK(e.parcatsViewModel);var f=ul.transition().duration(300).ease("cubic-in-out");f.each(function(){jNe(e.parcatsViewModel,!0),GNe(e.parcatsViewModel,!0)}).each("end",function(){(i||a)&&cVt.restyle(e.parcatsViewModel.graphDiv,t,[r])})}}function HNe(e){for(var t,r=e.graphDiv._fullData,n=0;n=0;l--)u+="C"+o[l]+","+(t[l+1]+n)+" "+a[l]+","+(t[l]+n)+" "+(e[l]+r[l])+","+(t[l]+n),u+="l-"+r[l]+",0 ";return u+="Z",u}function DK(e){var t=e.dimensions,r=e.model,n=t.map(function(q){return q.categories.map(function(V){return V.y})}),i=e.model.dimensions.map(function(q){return q.categories.map(function(V){return V.displayInd})}),a=e.model.dimensions.map(function(q){return q.displayInd}),o=e.dimensions.map(function(q){return q.model.dimensionInd}),s=t.map(function(q){return q.x}),l=t.map(function(q){return q.width}),u=[];for(var c in r.paths)r.paths.hasOwnProperty(c)&&u.push(r.paths[c]);function f(q){var V=q.categoryInds.map(function(X,G){return i[G][X]}),H=o.map(function(X){return V[X]});return H}u.sort(function(q,V){var H=f(q),X=f(V);return e.sortpaths==="backward"&&(H.reverse(),X.reverse()),H.push(q.valueInds[0]),X.push(V.valueInds[0]),e.bundlecolors&&(H.unshift(q.rawColor),X.unshift(V.rawColor)),HX?1:0});for(var h=new Array(u.length),d=t[0].model.count,v=t[0].categories.map(function(q){return q.height}).reduce(function(q,V){return q+V}),x=0;x0?g=v*(b.count/d):g=0;for(var E=new Array(n.length),k=0;k1?o=(e.width-2*r-n)/(i-1):o=0,s=r,l=s+o*a;var u=[],c=e.model.maxCats,f=t.categories.length,h=8,d=t.count,v=e.height-h*(c-1),x,b,g,E,k,A=(c-f)*h/2,L=t.categories.map(function(_){return{displayInd:_.displayInd,categoryInd:_.categoryInd}});for(L.sort(function(_,C){return _.displayInd-C.displayInd}),k=0;k0?x=b.count/d*v:x=0,g={key:b.valueInds[0],model:b,width:n,height:x,y:b.dragY!==null?b.dragY:A,bands:[],parcatsViewModel:e},A=A+x+h,u.push(g);return{key:t.dimensionInd,x:t.dragX!==null?t.dragX:l,y:0,width:n,model:t,categories:u,parcatsViewModel:e,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}});var FK=ye((uyr,XNe)=>{"use strict";var CVt=ZNe();XNe.exports=function(t,r,n,i){var a=t._fullLayout,o=a._paper,s=a._size;CVt(t,o,r,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},n,i)}});var KNe=ye(OF=>{"use strict";var LVt=kd().getModuleCalcData,PVt=FK(),YNe="parcats";OF.name=YNe;OF.plot=function(e,t,r,n){var i=LVt(e.calcdata,YNe);if(i.length){var a=i[0];PVt(e,a,r,n)}};OF.clean=function(e,t,r,n){var i=n._has&&n._has("parcats"),a=t._has&&t._has("parcats");i&&!a&&n._paperdiv.selectAll(".parcats").remove()}});var $Ne=ye((fyr,JNe)=>{"use strict";JNe.exports={attributes:SK(),supplyDefaults:FNe(),calc:ONe(),plot:FK(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:KNe(),categories:["noOpacity"],meta:{}}});var eUe=ye((hyr,QNe)=>{"use strict";QNe.exports=$Ne()});var c1=ye((dyr,sUe)=>{"use strict";var IVt=X1(),tUe="1.13.4",aUe='\xA9
OpenStreetMap contributors',rUe=['\xA9 Carto',aUe].join(" "),iUe=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),RVt=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),oUe={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:aUe,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:rUe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-positron",type:"raster",source:"plotly-carto-positron",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-darkmatter":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:rUe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-darkmatter",type:"raster",source:"plotly-carto-darkmatter",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-terrain":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:iUe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-terrain",type:"raster",source:"plotly-stamen-terrain",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-toner":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:iUe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-toner",type:"raster",source:"plotly-stamen-toner",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-watercolor":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:RVt,tiles:["https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"}},nUe=IVt(oUe);sUe.exports={requiredVersion:tUe,styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:oUe,styleValuesNonMapbox:nUe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install @plotly/mapbox-gl@"+tUe+"."].join(` + }`}),n={};return{regl:t,draw:r,atlas:n}};Vu.prototype.update=function(t){var r=this;if(typeof t=="string")t={text:t};else if(!t)return;t=pBt(t,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0),t.opacity!=null&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map(function(ke){return parseFloat(ke)}):this.opacity=parseFloat(t.opacity)),t.viewport!=null&&(this.viewport=xBt(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),this.viewport==null&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),t.kerning!=null&&(this.kerning=t.kerning),t.offset!=null&&(typeof t.offset=="number"&&(t.offset=[t.offset,0]),this.positionOffset=EBt(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),!this.font.length&&!t.font&&(t.font=Vu.baseFontSize+"px sans-serif");var n=!1,i=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach(function(ke,ge){if(typeof ke=="string")try{ke=fA.parse(ke)}catch(Ge){ke=fA.parse(Vu.baseFontSize+"px "+ke)}else{var ie=ke.style,Te=ke.weight,Ee=ke.stretch,Ae=ke.variant;ke=fA.parse(fA.stringify(ke)),ie&&(ke.style=ie),Te&&(ke.weight=Te),Ee&&(ke.stretch=Ee),Ae&&(ke.variant=Ae)}var ze=fA.stringify({size:Vu.baseFontSize,family:ke.family,stretch:_F?ke.stretch:void 0,variant:ke.variant,weight:ke.weight,style:ke.style}),Ce=wBt(ke.size),me=Math.round(Ce[0]*TBt(Ce[1]));if(me!==r.fontSize[ge]&&(i=!0,r.fontSize[ge]=me),(!r.font[ge]||ze!=r.font[ge].baseString)&&(n=!0,r.font[ge]=Vu.fonts[ze],!r.font[ge])){var Re=ke.family.join(", "),ce=[ke.style];ke.style!=ke.variant&&ce.push(ke.variant),ke.variant!=ke.weight&&ce.push(ke.weight),_F&&ke.weight!=ke.stretch&&ce.push(ke.stretch),r.font[ge]={baseString:ze,family:Re,weight:ke.weight,stretch:ke.stretch,style:ke.style,variant:ke.variant,width:{},kerning:{},metrics:MBt(Re,{origin:"top",fontSize:Vu.baseFontSize,fontStyle:ce.join(" ")})},Vu.fonts[ze]=r.font[ge]}}),(n||i)&&this.font.forEach(function(ke,ge){var ie=fA.stringify({size:r.fontSize[ge],family:ke.family,stretch:_F?ke.stretch:void 0,variant:ke.variant,weight:ke.weight,style:ke.style});if(r.fontAtlas[ge]=r.shader.atlas[ie],!r.fontAtlas[ge]){var Te=ke.metrics;r.shader.atlas[ie]=r.fontAtlas[ge]={fontString:ie,step:Math.ceil(r.fontSize[ge]*Te.bottom*.5)*2,em:r.fontSize[ge],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:r.regl.texture()}}t.text==null&&(t.text=r.text)}),typeof t.text=="string"&&t.position&&t.position.length>2){for(var a=Array(t.position.length*.5),o=0;o2){for(var u=!t.position[0].length,c=dx.mallocFloat(this.count*2),f=0,h=0;f1?r.align[ge]:r.align[0]:r.align;if(typeof ie=="number")return ie;switch(ie){case"right":case"end":return-ke;case"center":case"centre":case"middle":return-ke*.5}return 0})),this.baseline==null&&t.baseline==null&&(t.baseline=0),t.baseline!=null&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(ke,ge){var ie=(r.font[ge]||r.font[0]).metrics,Te=0;return Te+=ie.bottom*.5,typeof ke=="number"?Te+=ke-ie.baseline:Te+=-ie[ke],Te*=-1,Te})),t.color!=null)if(t.color||(t.color="transparent"),typeof t.color=="string"||!isNaN(t.color))this.color=KY(t.color,"uint8");else{var H;if(typeof t.color[0]=="number"&&t.color.length>this.counts.length){var X=t.color.length;H=dx.mallocUint8(X);for(var G=(t.color.subarray||t.color.slice).bind(t.color),N=0;N4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2;if(ae){var _e=Math.max(this.position.length*.5||0,this.color.length*.25||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,this.positionOffset.length*.5||0);this.batch=Array(_e);for(var Me=0;Me1?this.counts[Me]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[Me]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(Me*4,Me*4+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[Me]:this.opacity,baseline:this.baselineOffset[Me]!=null?this.baselineOffset[Me]:this.baselineOffset[0],align:this.align?this.alignOffset[Me]!=null?this.alignOffset[Me]:this.alignOffset[0]:0,atlas:this.fontAtlas[Me]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(Me*2,Me*2+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]}};Vu.prototype.destroy=function(){};Vu.prototype.kerning=!0;Vu.prototype.position={constant:new Float32Array(2)};Vu.prototype.translate=null;Vu.prototype.scale=null;Vu.prototype.font=null;Vu.prototype.text="";Vu.prototype.positionOffset=[0,0];Vu.prototype.opacity=1;Vu.prototype.color=new Uint8Array([0,0,0,255]);Vu.prototype.alignOffset=[0,0];Vu.maxAtlasSize=1024;Vu.atlasCanvas=document.createElement("canvas");Vu.atlasContext=Vu.atlasCanvas.getContext("2d",{alpha:!1});Vu.baseFontSize=64;Vu.fonts={};function CBt(e){return typeof e=="function"&&e._gl&&e.prop&&e.texture&&e.buffer}pOe.exports=Vu});var xF=ye((Rmr,mOe)=>{"use strict";var LBt=pZ(),PBt=GY();mOe.exports=function(t,r,n){var i=t._fullLayout,a=!0;return i._glcanvas.each(function(o){if(o.regl){o.regl.preloadCachedCode(n);return}if(!(o.pick&&!i._has("parcoords"))){try{o.regl=PBt({canvas:this,attributes:{antialias:!o.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||window.devicePixelRatio,extensions:r||[],cachedCode:n||{}})}catch(s){a=!1}o.regl||(a=!1),a&&this.addEventListener("webglcontextlost",function(s){t&&t.emit&&t.emit("plotly_webglcontextlost",{event:s,layer:o.key})},!1)}}),a||LBt({container:i._glcontainer.node()}),a}});var QY=ye(($Y,wOe)=>{"use strict";var yOe=QX(),_Oe=LY(),IBt=lqe(),xOe=gOe(),JY=Mr(),RBt=Sg().selectMode,DBt=xF(),zBt=lu(),FBt=hU(),qBt=YX().styleTextSelection,bOe={};function OBt(e,t,r,n){var i=e._size,a=e.width*n,o=e.height*n,s=i.l*n,l=i.b*n,u=i.r*n,c=i.t*n,f=i.w*n,h=i.h*n;return[s+t.domain[0]*f,l+r.domain[0]*h,a-u-(1-t.domain[1])*f,o-c-(1-r.domain[1])*h]}var $Y=wOe.exports=function(t,r,n){if(n.length){var i=t._fullLayout,a=r._scene,o=r.xaxis,s=r.yaxis,l,u;if(a){var c=DBt(t,["ANGLE_instanced_arrays","OES_element_index_uint"],bOe);if(!c){a.init();return}var f=a.count,h=i._glcanvas.data()[0].regl;if(FBt(t,r,n),a.dirty){if((a.line2d||a.error2d)&&!(a.scatter2d||a.fill2d||a.glText)&&h.clear({}),a.error2d===!0&&(a.error2d=IBt(h)),a.line2d===!0&&(a.line2d=_Oe(h)),a.scatter2d===!0&&(a.scatter2d=yOe(h)),a.fill2d===!0&&(a.fill2d=_Oe(h)),a.glText===!0)for(a.glText=new Array(f),l=0;la.glText.length){var d=f-a.glText.length;for(l=0;lae&&(isNaN(re[_e])||isNaN(re[_e+1]));)_e-=2;W.positions=re.slice(ae,_e+2)}return W}),a.line2d.update(a.lineOptions)),a.error2d){var b=(a.errorXOptions||[]).concat(a.errorYOptions||[]);a.error2d.update(b)}a.scatter2d&&a.scatter2d.update(a.markerOptions),a.fillOrder=JY.repeat(null,f),a.fill2d&&(a.fillOptions=a.fillOptions.map(function(W,re){var ae=n[re];if(!(!W||!ae||!ae[0]||!ae[0].trace)){var _e=ae[0],Me=_e.trace,ke=_e.t,ge=a.lineOptions[re],ie,Te,Ee=[];Me._ownfill&&Ee.push(re),Me._nexttrace&&Ee.push(re+1),Ee.length&&(a.fillOrder[re]=Ee);var Ae=[],ze=ge&&ge.positions||ke.positions,Ce,me;if(Me.fill==="tozeroy"){for(Ce=0;CeCe&&isNaN(ze[me+1]);)me-=2;ze[Ce+1]!==0&&(Ae=[ze[Ce],0]),Ae=Ae.concat(ze.slice(Ce,me+2)),ze[me+1]!==0&&(Ae=Ae.concat([ze[me],0]))}else if(Me.fill==="tozerox"){for(Ce=0;CeCe&&isNaN(ze[me]);)me-=2;ze[Ce]!==0&&(Ae=[0,ze[Ce+1]]),Ae=Ae.concat(ze.slice(Ce,me+2)),ze[me]!==0&&(Ae=Ae.concat([0,ze[me+1]]))}else if(Me.fill==="toself"||Me.fill==="tonext"){for(Ae=[],ie=0,W.splitNull=!0,Te=0;Te-1;for(l=0;l{"use strict";var TOe=Hze();TOe.plot=QY();AOe.exports=TOe});var EOe=ye((zmr,MOe)=>{"use strict";MOe.exports=SOe()});var eK=ye((Fmr,POe)=>{"use strict";var BBt=Uc(),LOe=Jl(),kOe=Oc().axisHoverFormat,NBt=Wo().hovertemplateAttrs,bk=tk(),UBt=ad().idRegex,VBt=Vs().templatedArray,hA=no().extendFlat,o1=BBt.marker,HBt=o1.line,GBt=hA(LOe("marker.line",{editTypeOverride:"calc"}),{width:hA({},HBt.width,{editType:"calc"}),editType:"calc"}),bF=hA(LOe("marker"),{symbol:o1.symbol,angle:o1.angle,size:hA({},o1.size,{editType:"markerSize"}),sizeref:o1.sizeref,sizemin:o1.sizemin,sizemode:o1.sizemode,opacity:o1.opacity,colorbar:o1.colorbar,line:GBt,editType:"calc"});bF.color.editType=bF.cmin.editType=bF.cmax.editType="style";function COe(e){return{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"subplotid",regex:UBt[e],editType:"plot"}}}POe.exports={dimensions:VBt("dimension",{visible:{valType:"boolean",dflt:!0,editType:"calc"},label:{valType:"string",editType:"calc"},values:{valType:"data_array",editType:"calc+clearAxisTypes"},axis:{type:{valType:"enumerated",values:["linear","log","date","category"],editType:"calc+clearAxisTypes"},matches:{valType:"boolean",dflt:!1,editType:"calc"},editType:"calc+clearAxisTypes"},editType:"calc+clearAxisTypes"}),text:hA({},bk.text,{}),hovertext:hA({},bk.hovertext,{}),hovertemplate:NBt(),xhoverformat:kOe("x"),yhoverformat:kOe("y"),marker:bF,xaxes:COe("x"),yaxes:COe("y"),diagonal:{visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},showupperhalf:{valType:"boolean",dflt:!0,editType:"calc"},showlowerhalf:{valType:"boolean",dflt:!0,editType:"calc"},selected:{marker:bk.selected.marker,editType:"calc"},unselected:{marker:bk.unselected.marker,editType:"calc"},opacity:bk.opacity}});var wF=ye((qmr,IOe)=>{"use strict";IOe.exports=function(e,t,r,n){n||(n=1/0);var i,a;for(i=0;i{"use strict";var tK=Mr(),jBt=Zd(),ROe=eK(),WBt=lu(),ZBt=$p(),XBt=wF(),YBt=Fz().isOpenSymbol;DOe.exports=function(t,r,n,i){function a(d,v){return tK.coerce(t,r,ROe,d,v)}var o=jBt(t,r,{name:"dimensions",handleItemDefaults:KBt}),s=a("diagonal.visible"),l=a("showupperhalf"),u=a("showlowerhalf"),c=XBt(r,o,"values");if(!c||!s&&!l&&!u){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),ZBt(t,r,n,i,a,{noAngleRef:!0,noStandOff:!0});var f=YBt(r.marker.symbol),h=WBt.isBubble(r);a("marker.line.width",f||h?1:0),JBt(t,r,i,a),tK.coerceSelectionMarkerOpacity(r,a)};function KBt(e,t){function r(i,a){return tK.coerce(e,t,ROe.dimensions,i,a)}r("label");var n=r("values");n&&n.length?r("visible"):t.visible=!1,r("axis.type"),r("axis.matches")}function JBt(e,t,r,n){var i=t.dimensions,a=i.length,o=t.showupperhalf,s=t.showlowerhalf,l=t.diagonal.visible,u,c,f=new Array(a),h=new Array(a);for(u=0;uc&&o||u{"use strict";var FOe=Mr();qOe.exports=function(t,r){var n=t._fullLayout,i=r.uid,a=n._splomScenes;a||(a=n._splomScenes={});var o={dirty:!0,selectBatch:[],unselectBatch:[]},s={matrix:!1,selectBatch:[],unselectBatch:[]},l=a[r.uid];return l||(l=a[i]=FOe.extendFlat({},o,s),l.draw=function(){l.matrix&&l.matrix.draw&&(l.selectBatch.length||l.unselectBatch.length?l.matrix.draw(l.unselectBatch,l.selectBatch):l.matrix.draw()),l.dirty=!1},l.destroy=function(){l.matrix&&l.matrix.destroy&&l.matrix.destroy(),l.matrixOptions=null,l.selectBatch=null,l.unselectBatch=null,l=null}),l.dirty||FOe.extendFlat(l,o),l}});var UOe=ye((Nmr,NOe)=>{"use strict";var rK=Mr(),TF=af(),$Bt=q0().calcMarkerSize,QBt=q0().calcAxisExpansion,eNt=z0(),BOe=Y2().markerSelection,tNt=Y2().markerStyle,rNt=OOe(),iNt=es().BADNUM,nNt=sx().TOO_MANY_POINTS;NOe.exports=function(t,r){var n=r.dimensions,i=r._length,a={},o=a.cdata=[],s=a.data=[],l=r._visibleDims=[],u,c,f,h,d;function v(k,A){for(var L=k.makeCalcdata({v:A.values,vcalendar:r.calendar},"v"),_=0;_nNt,p;for(b?p=a.sizeAvg||Math.max(a.size,3):p=$Bt(r,i),c=0;c{(function(){var e,t,r,n,i,a;typeof performance!="undefined"&&performance!==null&&performance.now?wk.exports=function(){return performance.now()}:typeof process!="undefined"&&process!==null&&process.hrtime?(wk.exports=function(){return(e()-i)/1e6},t=process.hrtime,e=function(){var o;return o=t(),o[0]*1e9+o[1]},n=e(),a=process.uptime()*1e9,i=n-a):Date.now?(wk.exports=function(){return Date.now()-r},r=Date.now()):(wk.exports=function(){return new Date().getTime()-r},r=new Date().getTime())}).call(VOe)});var jOe=ye((Umr,MF)=>{var aNt=HOe(),s1=window,AF=["moz","webkit"],vA="AnimationFrame",pA=s1["request"+vA],Tk=s1["cancel"+vA]||s1["cancelRequest"+vA];for(dA=0;!pA&&dA{WOe.exports=function(t,r){var n=typeof t=="number",i=typeof r=="number";n&&!i?(r=t,t=0):!n&&!i&&(t=0,r=0),t=t|0,r=r|0;var a=r-t;if(a<0)throw new Error("array length must be positive");for(var o=new Array(a),s=0,l=t;s{"use strict";var oNt=QX(),sNt=Zm(),lNt=j2(),XOe=jOe(),uNt=ZOe(),nK=Q5(),cNt=W2();KOe.exports=px;function px(e,t){if(!(this instanceof px))return new px(e,t);this.traces=[],this.passes={},this.regl=e,this.scatter=oNt(e),this.canvas=this.scatter.canvas}px.prototype.render=function(...e){return e.length&&this.update(...e),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?this.planned==null&&(this.planned=XOe(()=>{this.draw(),this.dirty=!0,this.planned=null})):(this.draw(),this.dirty=!0,XOe(()=>{this.dirty=!1})),this)};px.prototype.update=function(...e){if(!e.length)return;for(let n=0;nb||!i.lower&&x{t[a+s]=n})}this.scatter.draw(...t)}return this};px.prototype.destroy=function(){return this.traces.forEach(e=>{e.buffer&&e.buffer.destroy&&e.buffer.destroy()}),this.traces=null,this.passes=null,this.scatter.destroy(),this};function fNt(e,t,r){let n=e.id!=null?e.id:e,i=t,a=r;return n<<16|(i&255)<<8|a&255}function EF(e,t,r){let n,i,a,o,s,l,u,c,f=e[t],h=e[r];return f.length>2?(n=f[0],a=f[2],i=f[1],o=f[3]):f.length?(n=i=f[0],a=o=f[1]):(n=f.x,i=f.y,a=f.x+f.width,o=f.y+f.height),h.length>2?(s=h[0],u=h[2],l=h[1],c=h[3]):h.length?(s=l=h[0],u=c=h[1]):(s=h.x,l=h.y,u=h.x+h.width,c=h.y+h.height),[s,i,u,o]}function YOe(e){if(typeof e=="number")return[e,e,e,e];if(e.length===2)return[e[0],e[1],e[0],e[1]];{let t=nK(e);return[t.x,t.y,t.x+t.width,t.y+t.height]}}});var QOe=ye((Gmr,$Oe)=>{"use strict";var hNt=JOe(),aK=Mr(),kF=af(),dNt=Sg().selectMode;$Oe.exports=function(t,r,n){if(n.length)for(var i=0;i-1,T=dNt(c)||!!i.selectedpoints||P,F=!0;if(T){var q=i._length;if(i.selectedpoints){o.selectBatch=i.selectedpoints;var V=i.selectedpoints,H={};for(d=0;d{"use strict";eBe.getDimIndex=function(t,r){for(var n=r._id,i=n.charAt(0),a={x:0,y:1}[i],o=t._visibleDims,s=0;s{"use strict";var tBe=oK(),pNt=zz().calcHover,rBe=Qa().getFromId,gNt=no().extendFlat;function mNt(e,t,r,n,i){i||(i={});var a=(n||"").charAt(0)==="x",o=(n||"").charAt(0)==="y",s=iBe(e,t,r);if((a||o)&&i.hoversubplots==="axis"&&s[0])for(var l=(a?e.xa:e.ya)._subplotsWith,u=i.gd,c=gNt({},e),f=0;f{"use strict";var uBe=Mr(),oBe=uBe.pushUnique,sBe=lu(),lBe=oK();cBe.exports=function(t,r){var n=t.cd,i=n[0].trace,a=n[0].t,o=t.scene,s=o.matrixOptions.cdata,l=t.xaxis,u=t.yaxis,c=[];if(!o)return c;var f=!sBe.hasMarkers(i)&&!sBe.hasText(i);if(i.visible!==!0||f)return c;var h=lBe.getDimIndex(i,l),d=lBe.getDimIndex(i,u);if(h===!1||d===!1)return c;var v=a.xpx[h],x=a.ypx[d],b=s[h],p=s[d],E=(t.scene.selectBatch||[]).slice(),k=[];if(r!==!1&&!r.degenerate)for(var A=0;A{"use strict";var hBe=Mr(),yNt=z0(),_Nt=Y2().markerStyle;dBe.exports=function(t,r){var n=r.trace,i=t._fullLayout._splomScenes[n.uid];if(i){yNt(t,n),hBe.extendFlat(i.matrixOptions,_Nt(t,n));var a=hBe.extendFlat({},i.matrixOptions,i.viewOpts);i.matrix.update(a,null)}}});var gBe=ye((Ymr,pBe)=>{"use strict";var xNt=ba(),bNt=nV();pBe.exports={moduleType:"trace",name:"splom",categories:["gl","regl","cartesian","symbols","showLegend","scatter-like"],attributes:eK(),supplyDefaults:zOe(),colorbar:Kd(),calc:UOe(),plot:QOe(),hoverPoints:aBe().hoverPoints,selectPoints:fBe(),editStyle:vBe(),meta:{}};xNt.register(bNt)});var wBe=ye((Kmr,bBe)=>{"use strict";var wNt=LY(),TNt=ba(),ANt=xF(),SNt=kd().getModuleCalcData,gx=Jf(),mBe=af().getFromId,yBe=Qa().shouldShowZeroLine,_Be="splom",xBe={};function MNt(e){var t=e._fullLayout,r=TNt.getModule(_Be),n=SNt(e.calcdata,r)[0],i=ANt(e,["ANGLE_instanced_arrays","OES_element_index_uint"],xBe);i&&(t._hasOnlyLargeSploms&&sK(e),r.plot(e,{},n))}function ENt(e){var t=e.calcdata,r=e._fullLayout;r._hasOnlyLargeSploms&&sK(e);for(var n=0;n{"use strict";var TBe=gBe();TBe.basePlotModule=wBe(),ABe.exports=TBe});var EBe=ye(($mr,MBe)=>{"use strict";MBe.exports=SBe()});var cK=ye((Qmr,kBe)=>{"use strict";var PNt=Jl(),lK=Cd(),uK=Su(),INt=Ju().attributes,CF=no().extendFlat,RNt=Vs().templatedArray;kBe.exports={domain:INt({name:"parcoords",trace:!0,editType:"plot"}),labelangle:{valType:"angle",dflt:0,editType:"plot"},labelside:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},labelfont:uK({editType:"plot"}),tickfont:uK({autoShadowDflt:!0,editType:"plot"}),rangefont:uK({editType:"plot"}),dimensions:RNt("dimension",{label:{valType:"string",editType:"plot"},tickvals:CF({},lK.tickvals,{editType:"plot"}),ticktext:CF({},lK.ticktext,{editType:"plot"}),tickformat:CF({},lK.tickformat,{editType:"plot"}),visible:{valType:"boolean",dflt:!0,editType:"plot"},range:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},constraintrange:{valType:"info_array",freeLength:!0,dimensions:"1-2",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},multiselect:{valType:"boolean",dflt:!0,editType:"plot"},values:{valType:"data_array",editType:"calc"},editType:"calc"}),line:CF({editType:"calc"},PNt("line",{colorscaleDflt:"Viridis",autoColorDflt:!1,editTypeOverride:"calc"})),unselected:{line:{color:{valType:"color",dflt:"#7f7f7f",editType:"plot"},opacity:{valType:"number",min:0,max:1,dflt:"auto",editType:"plot"},editType:"plot"},editType:"plot"}}});var Ak=ye((eyr,CBe)=>{"use strict";CBe.exports={maxDimensionCount:60,overdrag:45,verticalPadding:2,tickDistance:50,canvasPixelRatio:1,blockLineCount:5e3,layers:["contextLineLayer","focusLineLayer","pickLineLayer"],axisTitleOffset:28,axisExtentOffset:10,bar:{width:4,captureWidth:10,fillColor:"magenta",fillOpacity:1,snapDuration:150,snapRatio:.25,snapClose:.01,strokeOpacity:1,strokeWidth:1,handleHeight:8,handleOpacity:1,handleOverlap:0},cn:{axisExtentText:"axis-extent-text",parcoordsLineLayers:"parcoords-line-layers",parcoordsLineLayer:"parcoords-lines",parcoords:"parcoords",parcoordsControlView:"parcoords-control-view",yAxis:"y-axis",axisOverlays:"axis-overlays",axis:"axis",axisHeading:"axis-heading",axisTitle:"axis-title",axisExtent:"axis-extent",axisExtentTop:"axis-extent-top",axisExtentTopText:"axis-extent-top-text",axisExtentBottom:"axis-extent-bottom",axisExtentBottomText:"axis-extent-bottom-text",axisBrush:"axis-brush"},id:{filterBarPattern:"filter-bar-pattern"}}});var Km=ye((tyr,PBe)=>{"use strict";var DNt=OS();function LBe(e){return[e]}PBe.exports={keyFun:function(e){return e.key},repeat:LBe,descend:DNt,wrap:LBe,unwrap:function(e){return e[0]}}});var dK=ye((ryr,VBe)=>{"use strict";var th=Ak(),em=xa(),zNt=Km().keyFun,LF=Km().repeat,gA=Mr().sorterAsc,FNt=Mr().strTranslate,IBe=th.bar.snapRatio;function RBe(e,t){return e*(1-IBe)+t*IBe}var DBe=th.bar.snapClose;function qNt(e,t){return e*(1-DBe)+t*DBe}function IF(e,t,r,n){if(ONt(r,n))return r;var i=e?-1:1,a=0,o=t.length-1;if(i<0){var s=a;a=o,o=s}for(var l=t[a],u=l,c=a;i*c=t[r][0]&&e<=t[r][1])return!0;return!1}function BNt(e){e.attr("x",-th.bar.captureWidth/2).attr("width",th.bar.captureWidth)}function NNt(e){e.attr("visibility","visible").style("visibility","visible").attr("fill","yellow").attr("opacity",0)}function UNt(e){if(!e.brush.filterSpecified)return"0,"+e.height;for(var t=zBe(e.brush.filter.getConsolidated(),e.height),r=[0],n,i,a,o=t.length?t[0][0]:null,s=0;se[1]+r||t=.9*e[1]+.1*e[0]?"n":t<=.9*e[0]+.1*e[1]?"s":"ns"}function FBe(){em.select(document.body).style("cursor",null)}function hK(e){e.attr("stroke-dasharray",UNt)}function PF(e,t){var r=em.select(e).selectAll(".highlight, .highlight-shadow"),n=t?r.transition().duration(th.bar.snapDuration).each("end",t):r;hK(n)}function qBe(e,t){var r=e.brush,n=r.filterSpecified,i=NaN,a={},o;if(n){var s=e.height,l=r.filter.getConsolidated(),u=zBe(l,s),c=NaN,f=NaN,h=NaN;for(o=0;o<=u.length;o++){var d=u[o];if(d&&d[0]<=t&&t<=d[1]){c=o;break}else if(f=o?o-1:NaN,d&&d[0]>t){h=o;break}}if(i=c,isNaN(i)&&(isNaN(f)||isNaN(h)?i=isNaN(f)?h:f:i=t-u[f][1]=E[0]&&p<=E[1]){a.clickableOrdinalRange=E;break}}}return a}function HNt(e,t){em.event.sourceEvent.stopPropagation();var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=t.unitToPaddedPx.invert(r),i=t.brush,a=qBe(t,r),o=a.interval,s=i.svgBrush;if(s.wasDragged=!1,s.grabbingBar=a.region==="ns",s.grabbingBar){var l=o.map(t.unitToPaddedPx);s.grabPoint=r-l[0]-th.verticalPadding,s.barLength=l[1]-l[0]}s.clickableOrdinalRange=a.clickableOrdinalRange,s.stayingIntervals=t.multiselect&&i.filterSpecified?i.filter.getConsolidated():[],o&&(s.stayingIntervals=s.stayingIntervals.filter(function(u){return u[0]!==o[0]&&u[1]!==o[1]})),s.startExtent=a.region?o[a.region==="s"?1:0]:n,t.parent.inBrushDrag=!0,s.brushStartCallback()}function OBe(e,t){em.event.sourceEvent.stopPropagation();var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=t.brush.svgBrush;n.wasDragged=!0,n._dragging=!0,n.grabbingBar?n.newExtent=[r-n.grabPoint,r+n.barLength-n.grabPoint].map(t.unitToPaddedPx.invert):n.newExtent=[n.startExtent,t.unitToPaddedPx.invert(r)].sort(gA),t.brush.filterSpecified=!0,n.extent=n.stayingIntervals.concat([n.newExtent]),n.brushCallback(t),PF(e.parentNode)}function GNt(e,t){var r=t.brush,n=r.filter,i=r.svgBrush;i._dragging||(BBe(e,t),OBe(e,t),t.brush.svgBrush.wasDragged=!1),i._dragging=!1;var a=em.event;a.sourceEvent.stopPropagation();var o=i.grabbingBar;if(i.grabbingBar=!1,i.grabLocation=void 0,t.parent.inBrushDrag=!1,FBe(),!i.wasDragged){i.wasDragged=void 0,i.clickableOrdinalRange?r.filterSpecified&&t.multiselect?i.extent.push(i.clickableOrdinalRange):(i.extent=[i.clickableOrdinalRange],r.filterSpecified=!0):o?(i.extent=i.stayingIntervals,i.extent.length===0&&fK(r)):fK(r),i.brushCallback(t),PF(e.parentNode),i.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);return}var s=function(){n.set(n.getConsolidated())};if(t.ordinal){var l=t.unitTickvals;l[l.length-1]i.newExtent[0];i.extent=i.stayingIntervals.concat(u?[i.newExtent]:[]),i.extent.length||fK(r),i.brushCallback(t),u?PF(e.parentNode,s):(s(),PF(e.parentNode))}else s();i.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}function BBe(e,t){var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=qBe(t,r),i="crosshair";n.clickableOrdinalRange?i="pointer":n.region&&(i=n.region+"-resize"),em.select(document.body).style("cursor",i)}function jNt(e){e.on("mousemove",function(t){em.event.preventDefault(),t.parent.inBrushDrag||BBe(this,t)}).on("mouseleave",function(t){t.parent.inBrushDrag||FBe()}).call(em.behavior.drag().on("dragstart",function(t){HNt(this,t)}).on("drag",function(t){OBe(this,t)}).on("dragend",function(t){GNt(this,t)}))}function NBe(e,t){return e[0]-t[0]}function WNt(e,t,r){var n=r._context.staticPlot,i=e.selectAll(".background").data(LF);i.enter().append("rect").classed("background",!0).call(BNt).call(NNt).style("pointer-events",n?"none":"auto").attr("transform",FNt(0,th.verticalPadding)),i.call(jNt).attr("height",function(s){return s.height-th.verticalPadding});var a=e.selectAll(".highlight-shadow").data(LF);a.enter().append("line").classed("highlight-shadow",!0).attr("x",-th.bar.width/2).attr("stroke-width",th.bar.width+th.bar.strokeWidth).attr("stroke",t).attr("opacity",th.bar.strokeOpacity).attr("stroke-linecap","butt"),a.attr("y1",function(s){return s.height}).call(hK);var o=e.selectAll(".highlight").data(LF);o.enter().append("line").classed("highlight",!0).attr("x",-th.bar.width/2).attr("stroke-width",th.bar.width-th.bar.strokeWidth).attr("stroke",th.bar.fillColor).attr("opacity",th.bar.fillOpacity).attr("stroke-linecap","butt"),o.attr("y1",function(s){return s.height}).call(hK)}function ZNt(e,t,r){var n=e.selectAll("."+th.cn.axisBrush).data(LF,zNt);n.enter().append("g").classed(th.cn.axisBrush,!0),WNt(n,t,r)}function XNt(e){return e.svgBrush.extent.map(function(t){return t.slice()})}function fK(e){e.filterSpecified=!1,e.svgBrush.extent=[[-1/0,1/0]]}function YNt(e){return function(r){var n=r.brush,i=XNt(n),a=i.slice();n.filter.set(a),e()}}function UBe(e){for(var t=e.slice(),r=[],n,i=t.shift();i;){for(n=i.slice();(i=t.shift())&&i[0]<=n[1];)n[1]=Math.max(n[1],i[1]);r.push(n)}return r.length===1&&r[0][0]>r[0][1]&&(r=[]),r}function KNt(){var e=[],t,r;return{set:function(n){e=n.map(function(i){return i.slice().sort(gA)}).sort(NBe),e.length===1&&e[0][0]===-1/0&&e[0][1]===1/0&&(e=[[0,-1]]),t=UBe(e),r=e.reduce(function(i,a){return[Math.min(i[0],a[0]),Math.max(i[1],a[1])]},[1/0,-1/0])},get:function(){return e.slice()},getConsolidated:function(){return t},getBounds:function(){return r}}}function JNt(e,t,r,n,i,a){var o=KNt();return o.set(r),{filter:o,filterSpecified:t,svgBrush:{extent:[],brushStartCallback:n,brushCallback:YNt(i),brushEndCallback:a}}}function $Nt(e,t){if(Array.isArray(e[0])?(e=e.map(function(n){return n.sort(gA)}),t.multiselect?e=UBe(e.sort(NBe)):e=[e[0]]):e=[e.sort(gA)],t.tickvals){var r=t.tickvals.slice().sort(gA);if(e=e.map(function(n){var i=[IF(0,r,n[0],[]),IF(1,r,n[1],[])];if(i[1]>i[0])return i}).filter(function(n){return n}),!e.length)return}return e.length>1?e:e[0]}VBe.exports={makeBrush:JNt,ensureAxisBrush:ZNt,cleanRanges:$Nt}});var jBe=ye((iyr,GBe)=>{"use strict";var mx=Mr(),QNt=Dv().hasColorscale,eUt=Uh(),tUt=Ju().defaults,rUt=Zd(),iUt=Qa(),HBe=cK(),nUt=dK(),vK=Ak().maxDimensionCount,aUt=wF();function oUt(e,t,r,n,i){var a=i("line.color",r);if(QNt(e,"line")&&mx.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),eUt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function sUt(e,t,r,n){function i(u,c){return mx.coerce(e,t,HBe.dimensions,u,c)}var a=i("values"),o=i("visible");if(a&&a.length||(o=t.visible=!1),o){i("label"),i("tickvals"),i("ticktext"),i("tickformat");var s=i("range");t._ax={_id:"y",type:"linear",showexponent:"all",exponentformat:"B",range:s},iUt.setConvert(t._ax,n.layout),i("multiselect");var l=i("constraintrange");l&&(t.constraintrange=nUt.cleanRanges(l,t))}}GBe.exports=function(t,r,n,i){function a(c,f){return mx.coerce(t,r,HBe,c,f)}var o=t.dimensions;Array.isArray(o)&&o.length>vK&&(mx.log("parcoords traces support up to "+vK+" dimensions at the moment"),o.splice(vK));var s=rUt(t,r,{name:"dimensions",layout:i,handleItemDefaults:sUt}),l=oUt(t,r,n,i,a);tUt(r,i,a),(!Array.isArray(s)||!s.length)&&(r.visible=!1),aUt(r,s,"values",l);var u=mx.extendFlat({},i.font,{size:Math.round(i.font.size/1.2)});mx.coerceFont(a,"labelfont",u),mx.coerceFont(a,"tickfont",u,{autoShadowDflt:!0}),mx.coerceFont(a,"rangefont",u),a("labelangle"),a("labelside"),a("unselected.line.color"),a("unselected.line.opacity")}});var ZBe=ye((nyr,WBe)=>{"use strict";var lUt=Mr().isArrayOrTypedArray,pK=Mu(),uUt=Km().wrap;WBe.exports=function(t,r){var n,i;return pK.hasColorscale(r,"line")&&lUt(r.line.color)?(n=r.line.color,i=pK.extractOpts(r.line).colorscale,pK.calc(t,r,{vals:n,containerStr:"line",cLetter:"c"})):(n=cUt(r._length),i=[[0,r.line.color],[1,r.line.color]]),uUt({lineColor:n,cscale:i})};function cUt(e){for(var t=new Array(e),r=0;r>>16,(e&65280)>>>8,e&255],alpha:1};if(typeof e=="number")return{space:"rgb",values:[e>>>16,(e&65280)>>>8,e&255],alpha:1};if(e=String(e).toLowerCase(),gK.default[e])r=gK.default[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(e[0]==="#"){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(e)){var l=t[1];i=l.replace(/a$/,"");var u=i==="cmyk"?4:i==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/),i==="color"&&(i=r.shift()),r=r.map(function(h,d){if(h[h.length-1]==="%")return h=parseFloat(h)/100,d===3?h:i==="rgb"?h*255:i[0]==="h"||i[0]==="l"&&!d?h*100:i==="lab"?h*125:i==="lch"?d<2?h*150:h*360:i[0]==="o"&&!d?h:i==="oklab"?h*.4:i==="oklch"?d<2?h*.4:h*360:h;if(i[d]==="h"||d===2&&i[i.length-1]==="h"){if(XBe[h]!==void 0)return XBe[h];if(h.endsWith("deg"))return parseFloat(h);if(h.endsWith("turn"))return parseFloat(h)*360;if(h.endsWith("grad"))return parseFloat(h)*360/400;if(h.endsWith("rad"))return parseFloat(h)*180/Math.PI}return h==="none"?0:parseFloat(h)}),n=r.length>u?r.pop():1}else/[0-9](?:\s|\/|,)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(h){return parseFloat(h)}),i=((f=(c=e.match(/([a-z])/ig))==null?void 0:c.join(""))==null?void 0:f.toLowerCase())||"rgb");return{space:i,values:r,alpha:n}}var gK,YBe,XBe,KBe=Ll(()=>{gK=YQe(rZ(),1),YBe=fUt,XBe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}});var Sk,mK=Ll(()=>{Sk={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}});var RF,JBe=Ll(()=>{mK();RF={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l,u=0;if(r===0)return l=n*255,[l,l,l];for(a=n<.5?n*(1+r):n+r-n*r,i=2*n-a,s=[0,0,0];u<3;)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,l=6*o<1?i+(a-i)*6*o:2*o<1?a:3*o<2?i+(a-i)*(2/3-o)*6:i,s[u++]=l*255;return s}};Sk.hsl=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=a-i,s,l,u;return a===i?s=0:t===a?s=(r-n)/o:r===a?s=2+(n-t)/o:n===a&&(s=4+(t-r)/o),s=Math.min(s*60,360),s<0&&(s+=360),u=(i+a)/2,a===i?l=0:u<=.5?l=o/(a+i):l=o/(2-a-i),[s,l*100,u*100]}});var QBe={};QQ(QBe,{default:()=>$Be});function $Be(e){Array.isArray(e)&&e.raw&&(e=String.raw(...arguments)),e instanceof Number&&(e=+e);var t,r,n,i=YBe(e);if(!i.space)return[];let a=i.space[0]==="h"?RF.min:Sk.min,o=i.space[0]==="h"?RF.max:Sk.max;return t=Array(3),t[0]=Math.min(Math.max(i.values[0],a[0]),o[0]),t[1]=Math.min(Math.max(i.values[1],a[1]),o[1]),t[2]=Math.min(Math.max(i.values[2],a[2]),o[2]),i.space[0]==="h"&&(t=RF.rgb(t)),t.push(Math.min(Math.max(i.alpha,0),1)),t}var eNe=Ll(()=>{KBe();mK();JBe()});var yK=ye(DF=>{"use strict";var hUt=Mr().isTypedArray;DF.convertTypedArray=function(e){return hUt(e)?Array.prototype.slice.call(e):e};DF.isOrdinal=function(e){return!!e.tickvals};DF.isVisible=function(e){return e.visible||!("visible"in e)}});var cNe=ye((dyr,uNe)=>{"use strict";var dUt=["precision highp float;","","varying vec4 fragColor;","","attribute vec4 p01_04, p05_08, p09_12, p13_16,"," p17_20, p21_24, p25_28, p29_32,"," p33_36, p37_40, p41_44, p45_48,"," p49_52, p53_56, p57_60, colors;","","uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,"," loA, hiA, loB, hiB, loC, hiC, loD, hiD;","","uniform vec2 resolution, viewBoxPos, viewBoxSize;","uniform float maskHeight;","uniform float drwLayer; // 0: context, 1: focus, 2: pick","uniform vec4 contextColor;","uniform sampler2D maskTexture, palette;","","bool isPick = (drwLayer > 1.5);","bool isContext = (drwLayer < 0.5);","","const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);","const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);","","float val(mat4 p, mat4 v) {"," return dot(matrixCompMult(p, v) * UNITS, UNITS);","}","","float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {"," float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);"," float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);"," return y1 * (1.0 - ratio) + y2 * ratio;","}","","int iMod(int a, int b) {"," return a - b * (a / b);","}","","bool fOutside(float p, float lo, float hi) {"," return (lo < hi) && (lo > p || p > hi);","}","","bool vOutside(vec4 p, vec4 lo, vec4 hi) {"," return ("," fOutside(p[0], lo[0], hi[0]) ||"," fOutside(p[1], lo[1], hi[1]) ||"," fOutside(p[2], lo[2], hi[2]) ||"," fOutside(p[3], lo[3], hi[3])"," );","}","","bool mOutside(mat4 p, mat4 lo, mat4 hi) {"," return ("," vOutside(p[0], lo[0], hi[0]) ||"," vOutside(p[1], lo[1], hi[1]) ||"," vOutside(p[2], lo[2], hi[2]) ||"," vOutside(p[3], lo[3], hi[3])"," );","}","","bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {"," return mOutside(A, loA, hiA) ||"," mOutside(B, loB, hiB) ||"," mOutside(C, loC, hiC) ||"," mOutside(D, loD, hiD);","}","","bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {"," mat4 pnts[4];"," pnts[0] = A;"," pnts[1] = B;"," pnts[2] = C;"," pnts[3] = D;",""," for(int i = 0; i < 4; ++i) {"," for(int j = 0; j < 4; ++j) {"," for(int k = 0; k < 4; ++k) {"," if(0 == iMod("," int(255.0 * texture2D(maskTexture,"," vec2("," (float(i * 2 + j / 2) + 0.5) / 8.0,"," (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight"," ))[3]"," ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),"," 2"," )) return true;"," }"," }"," }"," return false;","}","","vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {"," float x = 0.5 * sign(v) + 0.5;"," float y = axisY(x, A, B, C, D);"," float z = 1.0 - abs(v);",""," z += isContext ? 0.0 : 2.0 * float("," outsideBoundingBox(A, B, C, D) ||"," outsideRasterMask(A, B, C, D)"," );",""," return vec4("," 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,"," z,"," 1.0"," );","}","","void main() {"," mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);"," mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);"," mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);"," mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);",""," float v = colors[3];",""," gl_Position = position(isContext, v, A, B, C, D);",""," fragColor ="," isContext ? vec4(contextColor) :"," isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));","}"].join(` +`),vUt=["precision highp float;","","varying vec4 fragColor;","","void main() {"," gl_FragColor = fragColor;","}"].join(` +`),Mk=Ak().maxDimensionCount,oNe=Mr(),tNe=1e-6,zF=2048,pUt=new Uint8Array(4),rNe=new Uint8Array(4),iNe={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function gUt(e){e.read({x:0,y:0,width:1,height:1,data:pUt})}function sNe(e,t,r,n,i){var a=e._gl;a.enable(a.SCISSOR_TEST),a.scissor(t,r,n,i),e.clear({color:[0,0,0,0],depth:1})}function mUt(e,t,r,n,i,a){var o=a.key;function s(l){var u=Math.min(n,i-l*n);l===0&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],sNe(e,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),!r.clearOnly&&(a.count=2*u,a.offset=2*l*n,t(a),l*n+u>>8*t)%256/255}function xUt(e,t,r){for(var n=new Array(e*(Mk+4)),i=0,a=0;aX&&(X=M[F].dim1.canvasX,V=F);T===0&&sNe(i,0,0,u.canvasWidth,u.canvasHeight);var G=k(r);for(F=0;F{"use strict";var zd=xa(),l1=Mr(),xK=l1.isArrayOrTypedArray,gNe=l1.numberFormat,mNe=(eNe(),B1(QBe)).default,yNe=Qa(),SUt=l1.strRotate,Jm=l1.strTranslate,MUt=Pl(),FF=ao(),fNe=Mu(),TK=Km(),tg=TK.keyFun,$m=TK.repeat,_Ne=TK.unwrap,mA=yK(),ll=Ak(),xNe=dK(),EUt=cNe();function hNe(e,t,r){return l1.aggNums(e,null,t,r)}function bNe(e,t){return AK(hNe(Math.min,e,t),hNe(Math.max,e,t))}function qF(e){var t=e.range;return t?AK(t[0],t[1]):bNe(e.values,e._length)}function AK(e,t){return(isNaN(e)||!isFinite(e))&&(e=0),(isNaN(t)||!isFinite(t))&&(t=0),e===t&&(e===0?(e-=1,t+=1):(e*=.9,t*=1.1)),[e,t]}function kUt(e,t){return t?function(r,n){var i=t[n];return i==null?e(r):i}:e}function CUt(e,t,r,n,i){var a=qF(r);return n?zd.scale.ordinal().domain(n.map(kUt(gNe(r.tickformat),i))).range(n.map(function(o){var s=(o-a[0])/(a[1]-a[0]);return e-t+s*(2*t-e)})):zd.scale.linear().domain(a).range([e-t,t])}function LUt(e,t){return zd.scale.linear().range([t,e-t])}function PUt(e,t){return zd.scale.linear().domain(qF(e)).range([t,1-t])}function IUt(e){if(e.tickvals){var t=qF(e);return zd.scale.ordinal().domain(e.tickvals).range(e.tickvals.map(function(r){return(r-t[0])/(t[1]-t[0])}))}}function RUt(e){var t=e.map(function(a){return a[0]}),r=e.map(function(a){var o=mNe(a[1]);return zd.rgb("rgb("+o[0]+","+o[1]+","+o[2]+")")}),n=function(a){return function(o){return o[a]}},i="rgb".split("").map(function(a){return zd.scale.linear().clamp(!0).domain(t).range(r.map(n(a)))});return function(a){return i.map(function(o){return o(a)})}}function wK(e){return e.dimensions.some(function(t){return t.brush.filterSpecified})}function DUt(e,t,r){var n=_Ne(t),i=n.trace,a=mA.convertTypedArray(n.lineColor),o=i.line,s={color:mNe(i.unselected.line.color),opacity:i.unselected.line.opacity},l=fNe.extractOpts(o),u=l.reversescale?fNe.flipScale(n.cscale):n.cscale,c=i.domain,f=i.dimensions,h=e.width,d=i.labelangle,v=i.labelside,x=i.labelfont,b=i.tickfont,p=i.rangefont,E=l1.extendDeepNoArrays({},o,{color:a.map(zd.scale.linear().domain(qF({values:a,range:[l.min,l.max],_length:i._length}))),blockLineCount:ll.blockLineCount,canvasOverdrag:ll.overdrag*ll.canvasPixelRatio}),k=Math.floor(h*(c.x[1]-c.x[0])),A=Math.floor(e.height*(c.y[1]-c.y[0])),L=e.margin||{l:80,r:80,t:100,b:80},_=k,C=A;return{key:r,colCount:f.filter(mA.isVisible).length,dimensions:f,tickDistance:ll.tickDistance,unitToColor:RUt(u),lines:E,deselectedLines:s,labelAngle:d,labelSide:v,labelFont:x,tickFont:b,rangeFont:p,layoutWidth:h,layoutHeight:e.height,domain:c,translateX:c.x[0]*h,translateY:e.height-c.y[1]*e.height,pad:L,canvasWidth:_*ll.canvasPixelRatio+2*E.canvasOverdrag,canvasHeight:C*ll.canvasPixelRatio,width:_,height:C,canvasPixelRatio:ll.canvasPixelRatio}}function zUt(e,t,r){var n=r.width,i=r.height,a=r.dimensions,o=r.canvasPixelRatio,s=function(h){return n*h/Math.max(1,r.colCount-1)},l=ll.verticalPadding/i,u=LUt(i,ll.verticalPadding),c={key:r.key,xScale:s,model:r,inBrushDrag:!1},f={};return c.dimensions=a.filter(mA.isVisible).map(function(h,d){var v=PUt(h,l),x=f[h.label];f[h.label]=(x||0)+1;var b=h.label+(x?"__"+x:""),p=h.constraintrange,E=p&&p.length;E&&!xK(p[0])&&(p=[p]);var k=E?p.map(function(q){return q.map(v)}):[[-1/0,1/0]],A=function(){var q=c;q.focusLayer&&q.focusLayer.render(q.panels,!0);var V=wK(q);!e.contextShown()&&V?(q.contextLayer&&q.contextLayer.render(q.panels,!0),e.contextShown(!0)):e.contextShown()&&!V&&(q.contextLayer&&q.contextLayer.render(q.panels,!0,!0),e.contextShown(!1))},L=h.values;L.length>h._length&&(L=L.slice(0,h._length));var _=h.tickvals,C;function M(q,V){return{val:q,text:C[V]}}function g(q,V){return q.val-V.val}if(xK(_)&&_.length){l1.isTypedArray(_)&&(_=Array.from(_)),C=h.ticktext,!xK(C)||!C.length?C=_.map(gNe(h.tickformat)):C.length>_.length?C=C.slice(0,_.length):_.length>C.length&&(_=_.slice(0,C.length));for(var P=1;P<_.length;P++)if(_[P]<_[P-1]){for(var T=_.map(M).sort(g),F=0;F<_.length;F++)_[F]=T[F].val,C[F]=T[F].text;break}}else _=void 0;return L=mA.convertTypedArray(L),{key:b,label:h.label,tickFormat:h.tickformat,tickvals:_,ticktext:C,ordinal:mA.isOrdinal(h),multiselect:h.multiselect,xIndex:d,crossfilterDimensionIndex:d,visibleIndex:h._index,height:i,values:L,paddedUnitValues:L.map(v),unitTickvals:_&&_.map(v),xScale:s,x:s(d),canvasX:s(d)*o,unitToPaddedPx:u,domainScale:CUt(i,ll.verticalPadding,h,_,C),ordinalScale:IUt(h),parent:c,model:r,brush:xNe.makeBrush(e,E,k,function(){e.linePickActive(!1)},A,function(q){if(c.focusLayer.render(c.panels,!0),c.pickLayer&&c.pickLayer.render(c.panels,!0),e.linePickActive(!0),t&&t.filterChanged){var V=v.invert,H=q.map(function(X){return X.map(V).sort(l1.sorterAsc)}).sort(function(X,G){return X[0]-G[0]});t.filterChanged(c.key,h._index,H)}})}}),c}function dNe(e){e.classed(ll.cn.axisExtentText,!0).attr("text-anchor","middle").style("cursor","default")}function FUt(){var e=!0,t=!1;return{linePickActive:function(r){return arguments.length?e=!!r:e},contextShown:function(r){return arguments.length?t=!!r:t}}}function vNe(e,t){var r=t==="top"?1:-1,n=e*Math.PI/180,i=Math.sin(n),a=Math.cos(n);return{dir:r,dx:i,dy:a,degrees:e}}function bK(e,t,r){for(var n=t.panels||(t.panels=[]),i=e.data(),a=0;a=V||N>=H)return;var W=F.lineLayer.readPixel(G,H-1-N),re=W[3]!==0,ae=re?W[2]+256*(W[1]+256*W[0]):null,_e={x:G,y:N,clientX:q.clientX,clientY:q.clientY,dataIndex:F.model.key,curveNumber:ae};ae!==v&&(re?i.hover(_e):i.unhover&&i.unhover(_e),v=ae)}}),d.style("opacity",function(F){return F.pick?0:1}),s.style("background","rgba(255, 255, 255, 0)");var b=s.selectAll("."+ll.cn.parcoords).data(h,tg);b.exit().remove(),b.enter().append("g").classed(ll.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),b.attr("transform",function(F){return Jm(F.model.translateX,F.model.translateY)});var p=b.selectAll("."+ll.cn.parcoordsControlView).data($m,tg);p.enter().append("g").classed(ll.cn.parcoordsControlView,!0),p.attr("transform",function(F){return Jm(F.model.pad.l,F.model.pad.t)});var E=p.selectAll("."+ll.cn.yAxis).data(function(F){return F.dimensions},tg);E.enter().append("g").classed(ll.cn.yAxis,!0),p.each(function(F){bK(E,F,u)}),d.each(function(F){if(F.viewModel){!F.lineLayer||i?F.lineLayer=EUt(this,F):F.lineLayer.update(F),(F.key||F.key===0)&&(F.viewModel[F.key]=F.lineLayer);var q=!F.context||i;F.lineLayer.render(F.viewModel.panels,q)}}),E.attr("transform",function(F){return Jm(F.xScale(F.xIndex),0)}),E.call(zd.behavior.drag().origin(function(F){return F}).on("drag",function(F){var q=F.parent;f.linePickActive(!1),F.x=Math.max(-ll.overdrag,Math.min(F.model.width+ll.overdrag,zd.event.x)),F.canvasX=F.x*F.model.canvasPixelRatio,E.sort(function(V,H){return V.x-H.x}).each(function(V,H){V.xIndex=H,V.x=F===V?V.x:V.xScale(V.xIndex),V.canvasX=V.x*V.model.canvasPixelRatio}),bK(E,q,u),E.filter(function(V){return Math.abs(F.xIndex-V.xIndex)!==0}).attr("transform",function(V){return Jm(V.xScale(V.xIndex),0)}),zd.select(this).attr("transform",Jm(F.x,0)),E.each(function(V,H,X){X===F.parent.key&&(q.dimensions[H]=V)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!wK(q)),q.focusLayer.render&&q.focusLayer.render(q.panels)}).on("dragend",function(F){var q=F.parent;F.x=F.xScale(F.xIndex),F.canvasX=F.x*F.model.canvasPixelRatio,bK(E,q,u),zd.select(this).attr("transform",function(V){return Jm(V.x,0)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!wK(q)),q.focusLayer&&q.focusLayer.render(q.panels),q.pickLayer&&q.pickLayer.render(q.panels,!0),f.linePickActive(!0),i&&i.axesMoved&&i.axesMoved(q.key,q.dimensions.map(function(V){return V.crossfilterDimensionIndex}))})),E.exit().remove();var k=E.selectAll("."+ll.cn.axisOverlays).data($m,tg);k.enter().append("g").classed(ll.cn.axisOverlays,!0),k.selectAll("."+ll.cn.axis).remove();var A=k.selectAll("."+ll.cn.axis).data($m,tg);A.enter().append("g").classed(ll.cn.axis,!0),A.each(function(F){var q=F.model.height/F.model.tickDistance,V=F.domainScale,H=V.domain();zd.select(this).call(zd.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(q,F.tickFormat).tickValues(F.ordinal?H:null).tickFormat(function(X){return mA.isOrdinal(F)?X:wNe(F.model.dimensions[F.visibleIndex],X)}).scale(V)),FF.font(A.selectAll("text"),F.model.tickFont)}),A.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),A.selectAll("text").style("cursor","default");var L=k.selectAll("."+ll.cn.axisHeading).data($m,tg);L.enter().append("g").classed(ll.cn.axisHeading,!0);var _=L.selectAll("."+ll.cn.axisTitle).data($m,tg);_.enter().append("text").classed(ll.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",a?"none":"auto"),_.text(function(F){return F.label}).each(function(F){var q=zd.select(this);FF.font(q,F.model.labelFont),MUt.convertToTspans(q,t)}).attr("transform",function(F){var q=vNe(F.model.labelAngle,F.model.labelSide),V=ll.axisTitleOffset;return(q.dir>0?"":Jm(0,2*V+F.model.height))+SUt(q.degrees)+Jm(-V*q.dx,-V*q.dy)}).attr("text-anchor",function(F){var q=vNe(F.model.labelAngle,F.model.labelSide),V=Math.abs(q.dx),H=Math.abs(q.dy);return 2*V>H?q.dir*q.dx<0?"start":"end":"middle"});var C=k.selectAll("."+ll.cn.axisExtent).data($m,tg);C.enter().append("g").classed(ll.cn.axisExtent,!0);var M=C.selectAll("."+ll.cn.axisExtentTop).data($m,tg);M.enter().append("g").classed(ll.cn.axisExtentTop,!0),M.attr("transform",Jm(0,-ll.axisExtentOffset));var g=M.selectAll("."+ll.cn.axisExtentTopText).data($m,tg);g.enter().append("text").classed(ll.cn.axisExtentTopText,!0).call(dNe),g.text(function(F){return pNe(F,!0)}).each(function(F){FF.font(zd.select(this),F.model.rangeFont)});var P=C.selectAll("."+ll.cn.axisExtentBottom).data($m,tg);P.enter().append("g").classed(ll.cn.axisExtentBottom,!0),P.attr("transform",function(F){return Jm(0,F.model.height+ll.axisExtentOffset)});var T=P.selectAll("."+ll.cn.axisExtentBottomText).data($m,tg);T.enter().append("text").classed(ll.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(dNe),T.text(function(F){return pNe(F,!1)}).each(function(F){FF.font(zd.select(this),F.model.rangeFont)}),xNe.ensureAxisBrush(k,c,t)}});var MK=ye((SK,kNe)=>{"use strict";var OUt=ANe(),BUt=xF(),SNe=yK().isVisible,ENe={};function MNe(e,t,r){var n=t.indexOf(r),i=e.indexOf(n);return i===-1&&(i+=t.length),i}function NUt(e,t){return function(n,i){return MNe(e,t,n)-MNe(e,t,i)}}var SK=kNe.exports=function(t,r){var n=t._fullLayout,i=BUt(t,[],ENe);if(i){var a={},o={},s={},l={},u=n._size;r.forEach(function(v,x){var b=v[0].trace;s[x]=b.index;var p=l[x]=b.index;a[x]=t.data[p].dimensions,o[x]=t.data[p].dimensions.slice()});var c=function(v,x,b){var p=o[v][x],E=b.map(function(M){return M.slice()}),k="dimensions["+x+"].constraintrange",A=n._tracePreGUI[t._fullData[s[v]]._fullInput.uid];if(A[k]===void 0){var L=p.constraintrange;A[k]=L||null}var _=t._fullData[s[v]].dimensions[x];E.length?(E.length===1&&(E=E[0]),p.constraintrange=E,_.constraintrange=E.slice(),E=[E]):(delete p.constraintrange,delete _.constraintrange,E=null);var C={};C[k]=E,t.emit("plotly_restyle",[C,[l[v]]])},f=function(v){t.emit("plotly_hover",v)},h=function(v){t.emit("plotly_unhover",v)},d=function(v,x){var b=NUt(x,o[v].filter(SNe));a[v].sort(b),o[v].filter(function(p){return!SNe(p)}).sort(function(p){return o[v].indexOf(p)}).forEach(function(p){a[v].splice(a[v].indexOf(p),1),a[v].splice(o[v].indexOf(p),0,p)}),t.emit("plotly_restyle",[{dimensions:[a[v]]},[l[v]]])};OUt(t,r,{width:u.w,height:u.h,margin:{t:u.t,r:u.r,b:u.b,l:u.l}},{filterChanged:c,hover:f,unhover:h,axesMoved:d})}};SK.reglPrecompiled=ENe});var LNe=ye(Ek=>{"use strict";var CNe=xa(),UUt=kd().getModuleCalcData,VUt=MK(),HUt=Zp();Ek.name="parcoords";Ek.plot=function(e){var t=UUt(e.calcdata,"parcoords")[0];t.length&&VUt(e,t)};Ek.clean=function(e,t,r,n){var i=n._has&&n._has("parcoords"),a=t._has&&t._has("parcoords");i&&!a&&(n._paperdiv.selectAll(".parcoords").remove(),n._glimages.selectAll("*").remove())};Ek.toSVG=function(e){var t=e._fullLayout._glimages,r=CNe.select(e).selectAll(".svg-container"),n=r.filter(function(a,o){return o===r.size()-1}).selectAll(".gl-canvas-context, .gl-canvas-focus");function i(){var a=this,o=a.toDataURL("image/png"),s=t.append("svg:image");s.attr({xmlns:HUt.svg,"xlink:href":o,preserveAspectRatio:"none",x:0,y:0,width:a.style.width,height:a.style.height})}n.each(i),window.setTimeout(function(){CNe.selectAll("#filterBarPattern").attr("id","filterBarPattern")},60)}});var INe=ye((gyr,PNe)=>{"use strict";PNe.exports={attributes:cK(),supplyDefaults:jBe(),calc:ZBe(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:LNe(),categories:["gl","regl","noOpacity","noHover"],meta:{}}});var zNe=ye((myr,DNe)=>{"use strict";var RNe=INe();RNe.plot=MK();DNe.exports=RNe});var qNe=ye((yyr,FNe)=>{"use strict";FNe.exports=zNe()});var EK=ye((_yr,UNe)=>{"use strict";var BNe=no().extendFlat,GUt=vl(),ONe=Su(),jUt=Jl(),NNe=Wo().hovertemplateAttrs,WUt=Ju().attributes,ZUt=BNe({editType:"calc"},jUt("line",{editTypeOverride:"calc"}),{shape:{valType:"enumerated",values:["linear","hspline"],dflt:"linear",editType:"plot"},hovertemplate:NNe({editType:"plot",arrayOk:!1},{keys:["count","probability"]})});UNe.exports={domain:WUt({name:"parcats",trace:!0,editType:"calc"}),hoverinfo:BNe({},GUt.hoverinfo,{flags:["count","probability"],editType:"plot",arrayOk:!1}),hoveron:{valType:"enumerated",values:["category","color","dimension"],dflt:"category",editType:"plot"},hovertemplate:NNe({editType:"plot",arrayOk:!1},{keys:["count","probability","category","categorycount","colorcount","bandcolorcount"]}),arrangement:{valType:"enumerated",values:["perpendicular","freeform","fixed"],dflt:"perpendicular",editType:"plot"},bundlecolors:{valType:"boolean",dflt:!0,editType:"plot"},sortpaths:{valType:"enumerated",values:["forward","backward"],dflt:"forward",editType:"plot"},labelfont:ONe({editType:"calc"}),tickfont:ONe({autoShadowDflt:!0,editType:"calc"}),dimensions:{_isLinkedToArray:"dimension",label:{valType:"string",editType:"calc"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},values:{valType:"data_array",dflt:[],editType:"calc"},displayindex:{valType:"integer",editType:"calc"},editType:"calc",visible:{valType:"boolean",dflt:!0,editType:"calc"}},line:ZUt,counts:{valType:"number",min:0,dflt:1,arrayOk:!0,editType:"calc"},customdata:void 0,hoverlabel:void 0,ids:void 0,legend:void 0,legendgroup:void 0,legendrank:void 0,opacity:void 0,selectedpoints:void 0,showlegend:void 0}});var GNe=ye((xyr,HNe)=>{"use strict";var yA=Mr(),XUt=Dv().hasColorscale,YUt=Uh(),KUt=Ju().defaults,JUt=Zd(),VNe=EK(),$Ut=wF(),QUt=vv().isTypedArraySpec;function eVt(e,t,r,n,i){i("line.shape"),i("line.hovertemplate");var a=i("line.color",n.colorway[0]);if(XUt(e,"line")&&yA.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),YUt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function tVt(e,t){function r(u,c){return yA.coerce(e,t,VNe.dimensions,u,c)}var n=r("values"),i=r("visible");if(n&&n.length||(i=t.visible=!1),i){r("label"),r("displayindex",t._index);var a=e.categoryarray,o=yA.isArrayOrTypedArray(a)&&a.length>0||QUt(a),s;o&&(s="array");var l=r("categoryorder",s);l==="array"?(r("categoryarray"),r("ticktext")):(delete e.categoryarray,delete e.ticktext),!o&&l==="array"&&(t.categoryorder="trace")}}HNe.exports=function(t,r,n,i){function a(u,c){return yA.coerce(t,r,VNe,u,c)}var o=JUt(t,r,{name:"dimensions",handleItemDefaults:tVt}),s=eVt(t,r,n,i,a);KUt(r,i,a),(!Array.isArray(o)||!o.length)&&(r.visible=!1),$Ut(r,o,"values",s),a("hoveron"),a("hovertemplate"),a("arrangement"),a("bundlecolors"),a("sortpaths"),a("counts");var l=i.font;yA.coerceFont(a,"labelfont",l,{overrideDflt:{size:Math.round(l.size)}}),yA.coerceFont(a,"tickfont",l,{autoShadowDflt:!0,overrideDflt:{size:Math.round(l.size/1.2)}})}});var WNe=ye((byr,jNe)=>{"use strict";var rVt=Km().wrap,iVt=Dv().hasColorscale,nVt=zv(),aVt=jq(),oVt=ao(),kk=Mr(),sVt=uo();jNe.exports=function(t,r){var n=kk.filterVisible(r.dimensions);if(n.length===0)return[];var i=n.map(function(g){var P;if(g.categoryorder==="trace")P=null;else if(g.categoryorder==="array")P=g.categoryarray;else{P=aVt(g.values);for(var T=!0,F=0;F=e.length||t[e[r]]!==void 0)return!1;t[e[r]]=!0}return!0}});var tUe=ye((wyr,eUe)=>{"use strict";var ul=xa(),yVt=(R2(),B1(I2)).interpolateNumber,_Vt=OP(),Pk=Nc(),yx=Mr(),Ck=yx.strTranslate,ZNe=ao(),kK=id(),xVt=Pl();function bVt(e,t,r,n){var i=t._context.staticPlot,a=e.map(FVt.bind(0,t,r)),o=n.selectAll("g.parcatslayer").data([null]);o.enter().append("g").attr("class","parcatslayer").style("pointer-events",i?"none":"all");var s=o.selectAll("g.trace.parcats").data(a,u1),l=s.enter().append("g").attr("class","trace parcats");s.attr("transform",function(E){return Ck(E.x,E.y)}),l.append("g").attr("class","paths");var u=s.select("g.paths"),c=u.selectAll("path.path").data(function(E){return E.paths},u1);c.attr("fill",function(E){return E.model.color});var f=c.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",function(E){return E.model.color}).attr("fill-opacity",0);PK(f),c.attr("d",function(E){return E.svgD}),f.empty()||c.sort(CK),c.exit().remove(),c.on("mouseover",wVt).on("mouseout",TVt).on("click",AVt),l.append("g").attr("class","dimensions");var h=s.select("g.dimensions"),d=h.selectAll("g.dimension").data(function(E){return E.dimensions},u1);d.enter().append("g").attr("class","dimension"),d.attr("transform",function(E){return Ck(E.x,0)}),d.exit().remove();var v=d.selectAll("g.category").data(function(E){return E.categories},u1),x=v.enter().append("g").attr("class","category");v.attr("transform",function(E){return Ck(0,E.y)}),x.append("rect").attr("class","catrect").attr("pointer-events","none"),v.select("rect.catrect").attr("fill","none").attr("width",function(E){return E.width}).attr("height",function(E){return E.height}),YNe(x);var b=v.selectAll("rect.bandrect").data(function(E){return E.bands},u1);b.each(function(){yx.raiseToTop(this)}),b.attr("fill",function(E){return E.color});var p=b.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",function(E){return E.color}).attr("fill-opacity",0);b.attr("fill",function(E){return E.color}).attr("width",function(E){return E.width}).attr("height",function(E){return E.height}).attr("y",function(E){return E.y}).attr("cursor",function(E){return E.parcatsViewModel.arrangement==="fixed"?"default":E.parcatsViewModel.arrangement==="perpendicular"?"ns-resize":"move"}),RK(p),b.exit().remove(),x.append("text").attr("class","catlabel").attr("pointer-events","none"),v.select("text.catlabel").attr("text-anchor",function(E){return Lk(E)?"start":"end"}).attr("alignment-baseline","middle").style("fill","rgb(0, 0, 0)").attr("x",function(E){return Lk(E)?E.width+5:-5}).attr("y",function(E){return E.height/2}).text(function(E){return E.model.categoryLabel}).each(function(E){ZNe.font(ul.select(this),E.parcatsViewModel.categorylabelfont),xVt.convertToTspans(ul.select(this),t)}),x.append("text").attr("class","dimlabel"),v.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",function(E){return E.parcatsViewModel.arrangement==="fixed"?"default":"ew-resize"}).attr("x",function(E){return E.width/2}).attr("y",-5).text(function(E,k){return k===0?E.parcatsViewModel.model.dimensions[E.model.dimensionInd].dimensionLabel:null}).each(function(E){ZNe.font(ul.select(this),E.parcatsViewModel.labelfont)}),v.selectAll("rect.bandrect").on("mouseover",PVt).on("mouseout",IVt),v.exit().remove(),d.call(ul.behavior.drag().origin(function(E){return{x:E.x,y:0}}).on("dragstart",RVt).on("drag",DVt).on("dragend",zVt)),s.each(function(E){E.traceSelection=ul.select(this),E.pathSelection=ul.select(this).selectAll("g.paths").selectAll("path.path"),E.dimensionSelection=ul.select(this).selectAll("g.dimensions").selectAll("g.dimension")}),s.exit().remove()}eUe.exports=function(e,t,r,n){bVt(r,e,n,t)};function u1(e){return e.key}function Lk(e){var t=e.parcatsViewModel.dimensions.length,r=e.parcatsViewModel.dimensions[t-1].model.dimensionInd;return e.model.dimensionInd===r}function CK(e,t){return e.model.rawColor>t.model.rawColor?1:e.model.rawColor"),_=ul.mouse(i)[0];Pk.loneHover({trace:a,x:v-s.left+l.left,y:x-s.top+l.top,text:L,color:e.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:b,idealAlign:_1&&u.displayInd===l.dimensions.length-1?(h=o.left,d="left"):(h=o.left+o.width,d="right");var v=s.model.count,x=s.model.categoryLabel,b=v/s.parcatsViewModel.model.count,p={countLabel:v,categoryLabel:x,probabilityLabel:b.toFixed(3)},E=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&E.push(["Count:",p.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&E.push(["P("+p.categoryLabel+"):",p.probabilityLabel].join(" "));var k=E.join("
");return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:k,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:p,eventData:[{data:c._input,fullData:c,count:v,category:x,probability:b}]}}function CVt(e,t,r){var n=[];return ul.select(r.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){var i=this;n.push(KNe(e,t,i))}),n}function LVt(e,t,r){e._fullLayout._calcInverseTransform(e);var n=e._fullLayout._invScaleX,i=e._fullLayout._invScaleY,a=r.getBoundingClientRect(),o=ul.select(r).datum(),s=o.categoryViewModel,l=s.parcatsViewModel,u=l.model.dimensions[s.model.dimensionInd],c=l.trace,f=a.y+a.height/2,h,d;l.dimensions.length>1&&u.displayInd===l.dimensions.length-1?(h=a.left,d="left"):(h=a.left+a.width,d="right");var v=s.model.categoryLabel,x=o.parcatsViewModel.model.count,b=0;o.categoryViewModel.bands.forEach(function(P){P.color===o.color&&(b+=P.count)});var p=s.model.count,E=0;l.pathSelection.each(function(P){P.model.color===o.color&&(E+=P.model.count)});var k=b/x,A=b/E,L=b/p,_={countLabel:b,categoryLabel:v,probabilityLabel:k.toFixed(3)},C=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&C.push(["Count:",_.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&(C.push("P(color \u2229 "+v+"): "+_.probabilityLabel),C.push("P("+v+" | color): "+A.toFixed(3)),C.push("P(color | "+v+"): "+L.toFixed(3)));var M=C.join("
"),g=kK.mostReadable(o.color,["black","white"]);return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:M,color:o.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:g,fontSize:10,idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:_,eventData:[{data:c._input,fullData:c,category:v,count:x,probability:k,categorycount:p,colorcount:E,bandcolorcount:b}]}}function PVt(e){if(!e.parcatsViewModel.dragDimension&&e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1){var t=ul.mouse(this)[1];if(t<-1)return;var r=e.parcatsViewModel.graphDiv,n=r._fullLayout,i=n._paperdiv.node().getBoundingClientRect(),a=e.parcatsViewModel.hoveron,o=this;if(a==="color"?(kVt(o),zK(o,"plotly_hover",ul.event)):(EVt(o),DK(o,"plotly_hover",ul.event)),e.parcatsViewModel.hoverinfoItems.indexOf("none")===-1){var s;a==="category"?s=KNe(r,i,o):a==="color"?s=LVt(r,i,o):a==="dimension"&&(s=CVt(r,i,o)),s&&Pk.loneHover(s,{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:r})}}}function IVt(e){var t=e.parcatsViewModel;if(!t.dragDimension&&(PK(t.pathSelection),YNe(t.dimensionSelection.selectAll("g.category")),RK(t.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),Pk.loneUnhover(t.graphDiv._fullLayout._hoverlayer.node()),t.pathSelection.sort(CK),t.hoverinfoItems.indexOf("skip")===-1)){var r=e.parcatsViewModel.hoveron,n=this;r==="color"?zK(n,"plotly_unhover",ul.event):DK(n,"plotly_unhover",ul.event)}}function RVt(e){e.parcatsViewModel.arrangement!=="fixed"&&(e.dragDimensionDisplayInd=e.model.displayInd,e.initialDragDimensionDisplayInds=e.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),e.dragHasMoved=!1,e.dragCategoryDisplayInd=null,ul.select(this).selectAll("g.category").select("rect.catrect").each(function(t){var r=ul.mouse(this)[0],n=ul.mouse(this)[1];-2<=r&&r<=t.width+2&&-2<=n&&n<=t.height+2&&(e.dragCategoryDisplayInd=t.model.displayInd,e.initialDragCategoryDisplayInds=e.model.categories.map(function(i){return i.displayInd}),t.model.dragY=t.y,yx.raiseToTop(this.parentNode),ul.select(this.parentNode).selectAll("rect.bandrect").each(function(i){i.yc.y+c.height/2&&(a.model.displayInd=c.model.displayInd,c.model.displayInd=s),e.dragCategoryDisplayInd=a.model.displayInd}if(e.dragCategoryDisplayInd===null||e.parcatsViewModel.arrangement==="freeform"){i.model.dragX=ul.event.x;var f=e.parcatsViewModel.dimensions[r],h=e.parcatsViewModel.dimensions[n];f!==void 0&&i.model.dragXh.x&&(i.model.displayInd=h.model.displayInd,h.model.displayInd=e.dragDimensionDisplayInd),e.dragDimensionDisplayInd=i.model.displayInd}qK(e.parcatsViewModel),FK(e.parcatsViewModel),QNe(e.parcatsViewModel),$Ne(e.parcatsViewModel)}}function zVt(e){if(e.parcatsViewModel.arrangement!=="fixed"&&e.dragDimensionDisplayInd!==null){ul.select(this).selectAll("text").attr("font-weight","normal");var t={},r=JNe(e.parcatsViewModel),n=e.parcatsViewModel.model.dimensions.map(function(h){return h.displayInd}),i=e.initialDragDimensionDisplayInds.some(function(h,d){return h!==n[d]});i&&n.forEach(function(h,d){var v=e.parcatsViewModel.model.dimensions[d].containerInd;t["dimensions["+v+"].displayindex"]=h});var a=!1;if(e.dragCategoryDisplayInd!==null){var o=e.model.categories.map(function(h){return h.displayInd});if(a=e.initialDragCategoryDisplayInds.some(function(h,d){return h!==o[d]}),a){var s=e.model.categories.slice().sort(function(h,d){return h.displayInd-d.displayInd}),l=s.map(function(h){return h.categoryValue}),u=s.map(function(h){return h.categoryLabel});t["dimensions["+e.model.containerInd+"].categoryarray"]=[l],t["dimensions["+e.model.containerInd+"].ticktext"]=[u],t["dimensions["+e.model.containerInd+"].categoryorder"]="array"}}if(e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1&&!e.dragHasMoved&&e.potentialClickBand&&(e.parcatsViewModel.hoveron==="color"?zK(e.potentialClickBand,"plotly_click",ul.event.sourceEvent):DK(e.potentialClickBand,"plotly_click",ul.event.sourceEvent)),e.model.dragX=null,e.dragCategoryDisplayInd!==null){var c=e.parcatsViewModel.dimensions[e.dragDimensionDisplayInd].categories[e.dragCategoryDisplayInd];c.model.dragY=null,e.dragCategoryDisplayInd=null}e.dragDimensionDisplayInd=null,e.parcatsViewModel.dragDimension=null,e.dragHasMoved=null,e.potentialClickBand=null,qK(e.parcatsViewModel),FK(e.parcatsViewModel);var f=ul.transition().duration(300).ease("cubic-in-out");f.each(function(){QNe(e.parcatsViewModel,!0),$Ne(e.parcatsViewModel,!0)}).each("end",function(){(i||a)&&_Vt.restyle(e.parcatsViewModel.graphDiv,t,[r])})}}function JNe(e){for(var t,r=e.graphDiv._fullData,n=0;n=0;l--)u+="C"+o[l]+","+(t[l+1]+n)+" "+a[l]+","+(t[l]+n)+" "+(e[l]+r[l])+","+(t[l]+n),u+="l-"+r[l]+",0 ";return u+="Z",u}function FK(e){var t=e.dimensions,r=e.model,n=t.map(function(q){return q.categories.map(function(V){return V.y})}),i=e.model.dimensions.map(function(q){return q.categories.map(function(V){return V.displayInd})}),a=e.model.dimensions.map(function(q){return q.displayInd}),o=e.dimensions.map(function(q){return q.model.dimensionInd}),s=t.map(function(q){return q.x}),l=t.map(function(q){return q.width}),u=[];for(var c in r.paths)r.paths.hasOwnProperty(c)&&u.push(r.paths[c]);function f(q){var V=q.categoryInds.map(function(X,G){return i[G][X]}),H=o.map(function(X){return V[X]});return H}u.sort(function(q,V){var H=f(q),X=f(V);return e.sortpaths==="backward"&&(H.reverse(),X.reverse()),H.push(q.valueInds[0]),X.push(V.valueInds[0]),e.bundlecolors&&(H.unshift(q.rawColor),X.unshift(V.rawColor)),HX?1:0});for(var h=new Array(u.length),d=t[0].model.count,v=t[0].categories.map(function(q){return q.height}).reduce(function(q,V){return q+V}),x=0;x0?p=v*(b.count/d):p=0;for(var E=new Array(n.length),k=0;k1?o=(e.width-2*r-n)/(i-1):o=0,s=r,l=s+o*a;var u=[],c=e.model.maxCats,f=t.categories.length,h=8,d=t.count,v=e.height-h*(c-1),x,b,p,E,k,A=(c-f)*h/2,L=t.categories.map(function(_){return{displayInd:_.displayInd,categoryInd:_.categoryInd}});for(L.sort(function(_,C){return _.displayInd-C.displayInd}),k=0;k0?x=b.count/d*v:x=0,p={key:b.valueInds[0],model:b,width:n,height:x,y:b.dragY!==null?b.dragY:A,bands:[],parcatsViewModel:e},A=A+x+h,u.push(p);return{key:t.dimensionInd,x:t.dragX!==null?t.dragX:l,y:0,width:n,model:t,categories:u,parcatsViewModel:e,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}});var OK=ye((Tyr,rUe)=>{"use strict";var OVt=tUe();rUe.exports=function(t,r,n,i){var a=t._fullLayout,o=a._paper,s=a._size;OVt(t,o,r,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},n,i)}});var nUe=ye(BF=>{"use strict";var BVt=kd().getModuleCalcData,NVt=OK(),iUe="parcats";BF.name=iUe;BF.plot=function(e,t,r,n){var i=BVt(e.calcdata,iUe);if(i.length){var a=i[0];NVt(e,a,r,n)}};BF.clean=function(e,t,r,n){var i=n._has&&n._has("parcats"),a=t._has&&t._has("parcats");i&&!a&&n._paperdiv.selectAll(".parcats").remove()}});var oUe=ye((Syr,aUe)=>{"use strict";aUe.exports={attributes:EK(),supplyDefaults:GNe(),calc:WNe(),plot:OK(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:nUe(),categories:["noOpacity"],meta:{}}});var lUe=ye((Myr,sUe)=>{"use strict";sUe.exports=oUe()});var c1=ye((Eyr,pUe)=>{"use strict";var UVt=Y1(),uUe="1.13.4",dUe='\xA9 OpenStreetMap contributors',cUe=['\xA9 Carto',dUe].join(" "),fUe=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),VVt=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),vUe={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:dUe,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:cUe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-positron",type:"raster",source:"plotly-carto-positron",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-darkmatter":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:cUe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-darkmatter",type:"raster",source:"plotly-carto-darkmatter",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-terrain":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:fUe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-terrain",type:"raster",source:"plotly-stamen-terrain",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-toner":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:fUe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-toner",type:"raster",source:"plotly-stamen-toner",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-watercolor":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:VVt,tiles:["https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"}},hUe=UVt(vUe);pUe.exports={requiredVersion:uUe,styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:vUe,styleValuesNonMapbox:hUe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install @plotly/mapbox-gl@"+uUe+"."].join(` `),noAccessTokenErrorMsg:["Missing Mapbox access token.","Mapbox trace type require a Mapbox access token to be registered.","For example:"," Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });","More info here: https://www.mapbox.com/help/define-access-token/"].join(` -`),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",nUe.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join(` +`),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",hUe.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join(` `),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join(` -`),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z",path1:"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z",path2:"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z",polygon:"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner":"display: none;","ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner":"display: block; margin-top:2px","ctrl-attrib.mapboxgl-compact:hover":"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;","ctrl-attrib.mapboxgl-compact::after":`content: ""; cursor: pointer; position: absolute; background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;`,"ctrl-attrib.mapboxgl-compact":"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;","ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; right: 0","ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; left: 0","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","ctrl-logo":`display:block; width: 21px; height: 21px; background-image: url('data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E')`}}});var Pk=ye((vyr,fUe)=>{"use strict";var lUe=Mr(),uUe=va().defaultLine,DVt=Ju().attributes,zVt=Su(),FVt=Uc().textposition,qVt=Bu().overrideAll,OVt=Vs().templatedArray,qK=c1(),cUe=zVt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});cUe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var BVt=fUe.exports=qVt({_arrayAttrRegexps:[lUe.counterRegex("mapbox",".layers",!0)],domain:DVt({name:"mapbox"}),accesstoken:{valType:"string",noBlank:!0,strict:!0},style:{valType:"any",values:qK.styleValuesMapbox.concat(qK.styleValuesNonMapbox),dflt:qK.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:OVt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:uUe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:uUe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:cUe,textposition:lUe.extendFlat({},FVt,{arrayOk:!1})}})},"plot","from-root");BVt.uirevision={valType:"any",editType:"none"}});var BF=ye((pyr,vUe)=>{"use strict";var NVt=Wo().hovertemplateAttrs,UVt=Wo().texttemplateAttrs,VVt=Eg(),Ik=H2(),xA=Uc(),hUe=Pk(),HVt=vl(),GVt=Kl(),ew=no().extendFlat,jVt=Bu().overrideAll,WVt=Pk(),dUe=Ik.line,bA=Ik.marker;vUe.exports=jVt({lon:Ik.lon,lat:Ik.lat,cluster:{enabled:{valType:"boolean"},maxzoom:ew({},WVt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:ew({},bA.opacity,{dflt:1})},mode:ew({},xA.mode,{dflt:"markers"}),text:ew({},xA.text,{}),texttemplate:UVt({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:ew({},xA.hovertext,{}),line:{color:dUe.color,width:dUe.width},connectgaps:xA.connectgaps,marker:ew({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:bA.opacity,size:bA.size,sizeref:bA.sizeref,sizemin:bA.sizemin,sizemode:bA.sizemode},GVt("marker")),fill:Ik.fill,fillcolor:VVt(),textfont:hUe.layers.symbol.textfont,textposition:hUe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:xA.selected.marker},unselected:{marker:xA.unselected.marker},hoverinfo:ew({},HVt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:NVt()},"calc","nested")});var OK=ye((gyr,pUe)=>{"use strict";var ZVt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];pUe.exports={isSupportedFont:function(e){return ZVt.indexOf(e)!==-1}}});var yUe=ye((myr,mUe)=>{"use strict";var Rk=Mr(),BK=lu(),XVt=$p(),YVt=R0(),KVt=D0(),JVt=Ig(),gUe=BF(),$Vt=OK().isSupportedFont;mUe.exports=function(t,r,n,i){function a(g,E){return Rk.coerce(t,r,gUe,g,E)}function o(g,E){return Rk.coerce2(t,r,gUe,g,E)}var s=QVt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("hovertext"),a("hovertemplate"),a("mode"),a("below"),BK.hasMarkers(r)){XVt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(Rk.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),Rk.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}BK.hasLines(r)&&(YVt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,x=a("cluster.enabled",v);if(x||BK.hasText(r)){var b=i.font.family;KVt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:$Vt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&JVt(t,r,n,a),Rk.coerceSelectionMarkerOpacity(r,a)};function QVt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var NK=ye((yyr,xUe)=>{"use strict";var _Ue=Qa();xUe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=_Ue.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=_Ue.tickText(o,o.c2l(s[1]),!0).text,i}});var UK=ye((_yr,wUe)=>{"use strict";var bUe=Mr();wUe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=bUe.isArrayOrTypedArray(r)?bUe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var kUe=ye((xyr,EUe)=>{"use strict";var SUe=uo(),iv=Mr(),eHt=es().BADNUM,UF=tx(),TUe=Mu(),tHt=ao(),rHt=S3(),VF=lu(),iHt=OK().isSupportedFont,nHt=UK(),aHt=rp().appendArrayPointValue,oHt=Ll().NEWLINES,sHt=Ll().BR_TAG_ALL;EUe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=VF.hasLines(n),s=VF.hasMarkers(n),l=VF.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=NF("fill"),d=NF("line"),v=NF("circle"),x=NF("symbol"),b={fill:h,line:d,circle:v,symbol:x};if(!i)return b;var g;if((a||o)&&(g=UF.calcTraceToLineCoords(r)),a&&(h.geojson=UF.makePolygon(g),h.layout.visibility="visible",iv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=UF.makeLine(g),d.layout.visibility="visible",iv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var E=lHt(r);v.geojson=E.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":HK(n.cluster.color,n.cluster.step),"circle-radius":HK(n.cluster.size,n.cluster.step),"circle-opacity":HK(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":AUe(n),"text-size":12}}),iv.extendFlat(v.paint,{"circle-color":E.mcc,"circle-radius":E.mrc,"circle-opacity":E.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(x.geojson=uHt(r,t),iv.extendFlat(x.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(iv.extendFlat(x.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&iv.extendFlat(x.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),x.layout["icon-allow-overlap"]=n.marker.allowoverlap,iv.extendFlat(x.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var k=(n.marker||{}).size,A=nHt(n.textposition,k);iv.extendFlat(x.layout,{"text-size":n.textfont.size,"text-anchor":A.anchor,"text-offset":A.offset,"text-font":AUe(n)}),iv.extendFlat(x.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function NF(e){return{type:e,geojson:UF.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function lHt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=iv.isArrayOrTypedArray(r.color),a=iv.isArrayOrTypedArray(r.size),o=iv.isArrayOrTypedArray(r.opacity),s;function l(k){return t.opacity*k}function u(k){return k/2}var c;i&&(TUe.hasColorscale(t,"marker")?c=TUe.makeColorScaleFuncFromTrace(r):c=iv.identity);var f;a&&(f=rHt(t));var h;o&&(h=function(k){var A=SUe(k)?+iv.constrain(k,0,1):0;return l(A)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),iHt(s)||(s=r);var l=s.split(", ");return l}});var IUe=ye((byr,PUe)=>{"use strict";var cHt=Mr(),CUe=kUe(),wA=c1().traceLayerPrefix,rg={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function LUe(e,t,r,n){this.type="scattermapbox",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:wA+t+"-fill",line:wA+t+"-line",circle:wA+t+"-circle",symbol:wA+t+"-symbol",cluster:wA+t+"-cluster",clusterCount:wA+t+"-cluster-count"},this.below=null}var Dk=LUe.prototype;Dk.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&cHt.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};Dk.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};Dk.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var _=A[L];i.removeLayer(u.layerIds[_])}k||i.removeSource(u.sourceIds.circle)}function h(k){for(var A=rg.nonCluster,L=0;L=0;L--){var _=A[L];i.removeLayer(u.layerIds[_]),k||i.removeSource(u.sourceIds[_])}}function v(k){l?f(k):d(k)}function x(k){s?c(k):h(k)}function b(){for(var k=s?rg.cluster:rg.nonCluster,A=0;A=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};PUe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new LUe(t,n.uid,i,a),s=CUe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var fHt=Nc(),GK=Mr(),hHt=oT(),dHt=GK.fillText,vHt=es().BADNUM,pHt=c1().traceLayerPrefix;function gHt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=pHt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(M){return M.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function x(M){var p=M.lonlat;if(p[0]===vHt||c&&l.indexOf(M.i+1)===-1)return 1/0;var P=GK.modHalf(p[0],360),T=p[1],F=s.project([P,T]),q=F.x-a.c2p([v,T]),V=F.y-o.c2p([P,r]),H=Math.max(3,M.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-H,1-3/H)}if(fHt.getClosest(n,x,e),e.index!==!1){var b=n[e.index],g=b.lonlat,E=[GK.modHalf(g[0],360)+d,g[1]],k=a.c2p(E),A=o.c2p(E),L=b.mrc||1;e.x0=k-L,e.x1=k+L,e.y0=A-L,e.y1=A+L;var _={};_[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,_);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=hHt(i,b),e.extraText=RUe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function RUe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&dHt(t,e,u),u.join("
")}DUe.exports={hoverPoints:gHt,getExtraText:RUe}});var FUe=ye((Tyr,zUe)=>{"use strict";zUe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var OUe=ye((Ayr,qUe)=>{"use strict";var mHt=Mr(),yHt=lu(),_Ht=es().BADNUM;qUe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!yHt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof jK=="object"&&typeof WK!="undefined"?WK.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self,e.mapboxgl=t())})(jK,function(){"use strict";var e,t,r;function n(i,a){if(!e)e=a;else if(!t)t=a;else{var o="var sharedChunk = {}; ("+e+")(sharedChunk); ("+t+")(sharedChunk);",s={};e(s),r=a(s),typeof window!="undefined"&&(r.workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"})))}}return n(["exports"],function(i){"use strict";function a(m,y){return y={exports:{}},m(y,y.exports),y.exports}var o="1.13.4",s=l;function l(m,y,I,U){this.cx=3*m,this.bx=3*(I-m)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*y,this.by=3*(U-y)-this.cy,this.ay=1-this.cy-this.by,this.p1x=m,this.p1y=U,this.p2x=I,this.p2y=U}l.prototype.sampleCurveX=function(m){return((this.ax*m+this.bx)*m+this.cx)*m},l.prototype.sampleCurveY=function(m){return((this.ay*m+this.by)*m+this.cy)*m},l.prototype.sampleCurveDerivativeX=function(m){return(3*this.ax*m+2*this.bx)*m+this.cx},l.prototype.solveCurveX=function(m,y){typeof y=="undefined"&&(y=1e-6);var I,U,J,ne,fe;for(J=m,fe=0;fe<8;fe++){if(ne=this.sampleCurveX(J)-m,Math.abs(ne)U)return U;for(;Ine?I=J:U=J,J=(U-I)*.5+I}return J},l.prototype.solve=function(m,y){return this.sampleCurveY(this.solveCurveX(m,y))};var u=c;function c(m,y){this.x=m,this.y=y}c.prototype={clone:function(){return new c(this.x,this.y)},add:function(m){return this.clone()._add(m)},sub:function(m){return this.clone()._sub(m)},multByPoint:function(m){return this.clone()._multByPoint(m)},divByPoint:function(m){return this.clone()._divByPoint(m)},mult:function(m){return this.clone()._mult(m)},div:function(m){return this.clone()._div(m)},rotate:function(m){return this.clone()._rotate(m)},rotateAround:function(m,y){return this.clone()._rotateAround(m,y)},matMult:function(m){return this.clone()._matMult(m)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(m){return this.x===m.x&&this.y===m.y},dist:function(m){return Math.sqrt(this.distSqr(m))},distSqr:function(m){var y=m.x-this.x,I=m.y-this.y;return y*y+I*I},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(m){return Math.atan2(this.y-m.y,this.x-m.x)},angleWith:function(m){return this.angleWithSep(m.x,m.y)},angleWithSep:function(m,y){return Math.atan2(this.x*y-this.y*m,this.x*m+this.y*y)},_matMult:function(m){var y=m[0]*this.x+m[1]*this.y,I=m[2]*this.x+m[3]*this.y;return this.x=y,this.y=I,this},_add:function(m){return this.x+=m.x,this.y+=m.y,this},_sub:function(m){return this.x-=m.x,this.y-=m.y,this},_mult:function(m){return this.x*=m,this.y*=m,this},_div:function(m){return this.x/=m,this.y/=m,this},_multByPoint:function(m){return this.x*=m.x,this.y*=m.y,this},_divByPoint:function(m){return this.x/=m.x,this.y/=m.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var m=this.y;return this.y=this.x,this.x=-m,this},_rotate:function(m){var y=Math.cos(m),I=Math.sin(m),U=y*this.x-I*this.y,J=I*this.x+y*this.y;return this.x=U,this.y=J,this},_rotateAround:function(m,y){var I=Math.cos(m),U=Math.sin(m),J=y.x+I*(this.x-y.x)-U*(this.y-y.y),ne=y.y+U*(this.x-y.x)+I*(this.y-y.y);return this.x=J,this.y=ne,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},c.convert=function(m){return m instanceof c?m:Array.isArray(m)?new c(m[0],m[1]):m};var f=typeof self!="undefined"?self:{};function h(m,y){if(Array.isArray(m)){if(!Array.isArray(y)||m.length!==y.length)return!1;for(var I=0;I=1)return 1;var y=m*m,I=y*m;return 4*(m<.5?I:3*(m-y)+I-.75)}function x(m,y,I,U){var J=new s(m,y,I,U);return function(ne){return J.solve(ne)}}var b=x(.25,.1,.25,1);function g(m,y,I){return Math.min(I,Math.max(y,m))}function E(m,y,I){var U=I-y,J=((m-y)%U+U)%U+y;return J===y?I:J}function k(m,y,I){if(!m.length)return I(null,[]);var U=m.length,J=new Array(m.length),ne=null;m.forEach(function(fe,Fe){y(fe,function(Qe,st){Qe&&(ne=Qe),J[Fe]=st,--U===0&&I(ne,J)})})}function A(m){var y=[];for(var I in m)y.push(m[I]);return y}function L(m,y){var I=[];for(var U in m)U in y||I.push(U);return I}function _(m){for(var y=[],I=arguments.length-1;I-- >0;)y[I]=arguments[I+1];for(var U=0,J=y;U>y/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,m)}return m()}function T(m){return m<=1?1:Math.pow(2,Math.ceil(Math.log(m)/Math.LN2))}function F(m){return m?/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(m):!1}function q(m,y){m.forEach(function(I){y[I]&&(y[I]=y[I].bind(y))})}function V(m,y){return m.indexOf(y,m.length-y.length)!==-1}function H(m,y,I){var U={};for(var J in m)U[J]=y.call(I||this,m[J],J,m);return U}function X(m,y,I){var U={};for(var J in m)y.call(I||this,m[J],J,m)&&(U[J]=m[J]);return U}function G(m){return Array.isArray(m)?m.map(G):typeof m=="object"&&m?H(m,G):m}function N(m,y){for(var I=0;I=0)return!0;return!1}var W={};function re(m){W[m]||(typeof console!="undefined"&&console.warn(m),W[m]=!0)}function ae(m,y,I){return(I.y-m.y)*(y.x-m.x)>(y.y-m.y)*(I.x-m.x)}function _e(m){for(var y=0,I=0,U=m.length,J=U-1,ne=void 0,fe=void 0;I@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,I={};if(m.replace(y,function(J,ne,fe,Fe){var Qe=fe||Fe;return I[ne]=Qe?Qe.toLowerCase():!0,""}),I["max-age"]){var U=parseInt(I["max-age"],10);isNaN(U)?delete I["max-age"]:I["max-age"]=U}return I}var ie=null;function Te(m){if(ie==null){var y=m.navigator?m.navigator.userAgent:null;ie=!!m.safari||!!(y&&(/\b(iPad|iPhone|iPod)\b/.test(y)||y.match("Safari")&&!y.match("Chrome")))}return ie}function Ee(m){try{var y=f[m];return y.setItem("_mapbox_test_",1),y.removeItem("_mapbox_test_"),!0}catch(I){return!1}}function Ae(m){return f.btoa(encodeURIComponent(m).replace(/%([0-9A-F]{2})/g,function(y,I){return String.fromCharCode(+("0x"+I))}))}function ze(m){return decodeURIComponent(f.atob(m).split("").map(function(y){return"%"+("00"+y.charCodeAt(0).toString(16)).slice(-2)}).join(""))}var Ce=f.performance&&f.performance.now?f.performance.now.bind(f.performance):Date.now.bind(Date),me=f.requestAnimationFrame||f.mozRequestAnimationFrame||f.webkitRequestAnimationFrame||f.msRequestAnimationFrame,Re=f.cancelAnimationFrame||f.mozCancelAnimationFrame||f.webkitCancelAnimationFrame||f.msCancelAnimationFrame,ce,Ge,nt={now:Ce,frame:function(y){var I=me(y);return{cancel:function(){return Re(I)}}},getImageData:function(y,I){I===void 0&&(I=0);var U=f.document.createElement("canvas"),J=U.getContext("2d");if(!J)throw new Error("failed to create canvas 2d context");return U.width=y.width,U.height=y.height,J.drawImage(y,0,0,y.width,y.height),J.getImageData(-I,-I,y.width+2*I,y.height+2*I)},resolveURL:function(y){return ce||(ce=f.document.createElement("a")),ce.href=y,ce.href},hardwareConcurrency:f.navigator&&f.navigator.hardwareConcurrency||4,get devicePixelRatio(){return f.devicePixelRatio},get prefersReducedMotion(){return f.matchMedia?(Ge==null&&(Ge=f.matchMedia("(prefers-reduced-motion: reduce)")),Ge.matches):!1}},ct={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?this.API_URL.indexOf("https://api.mapbox.cn")===0?"https://events.mapbox.cn/events/v2":this.API_URL.indexOf("https://api.mapbox.com")===0?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},qt={supported:!1,testSupport:Ct},rt,ot=!1,Rt,kt=!1;f.document&&(Rt=f.document.createElement("img"),Rt.onload=function(){rt&&Yt(rt),rt=null,kt=!0},Rt.onerror=function(){ot=!0,rt=null},Rt.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");function Ct(m){ot||!Rt||(kt?Yt(m):rt=m)}function Yt(m){var y=m.createTexture();m.bindTexture(m.TEXTURE_2D,y);try{if(m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,Rt),m.isContextLost())return;qt.supported=!0}catch(I){}m.deleteTexture(y),ot=!0}var xr="01";function er(){for(var m="1",y="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",I="",U=0;U<10;U++)I+=y[Math.floor(Math.random()*62)];var J=12*60*60*1e3,ne=[m,xr,I].join(""),fe=Date.now()+J;return{token:ne,tokenExpiresAt:fe}}var Ke=function(y,I){this._transformRequestFn=y,this._customAccessToken=I,this._createSkuToken()};Ke.prototype._createSkuToken=function(){var y=er();this._skuToken=y.token,this._skuTokenExpiresAt=y.tokenExpiresAt},Ke.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},Ke.prototype.transformRequest=function(y,I){return this._transformRequestFn?this._transformRequestFn(y,I)||{url:y}:{url:y}},Ke.prototype.normalizeStyleURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/styles/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeGlyphsURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/fonts/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeSourceURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/v4/"+U.authority+".json",U.params.push("secure"),this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeSpriteURL=function(y,I,U,J){var ne=Ht(y);return xt(y)?(ne.path="/styles/v1"+ne.path+"/sprite"+I+U,this._makeAPIURL(ne,this._customAccessToken||J)):(ne.path+=""+I+U,$t(ne))},Ke.prototype.normalizeTileURL=function(y,I){if(this._isSkuTokenExpired()&&this._createSkuToken(),y&&!xt(y))return y;var U=Ht(y),J=/(\.(png|jpg)\d*)(?=$)/,ne=/^.+\/v4\//,fe=nt.devicePixelRatio>=2||I===512?"@2x":"",Fe=qt.supported?".webp":"$1";U.path=U.path.replace(J,""+fe+Fe),U.path=U.path.replace(ne,"/"),U.path="/v4"+U.path;var Qe=this._customAccessToken||Et(U.params)||ct.ACCESS_TOKEN;return ct.REQUIRE_ACCESS_TOKEN&&Qe&&this._skuToken&&U.params.push("sku="+this._skuToken),this._makeAPIURL(U,Qe)},Ke.prototype.canonicalizeTileURL=function(y,I){var U="/v4/",J=/\.[\w]+$/,ne=Ht(y);if(!ne.path.match(/(^\/v4\/)/)||!ne.path.match(J))return y;var fe="mapbox://tiles/";fe+=ne.path.replace(U,"");var Fe=ne.params;return I&&(Fe=Fe.filter(function(Qe){return!Qe.match(/^access_token=/)})),Fe.length&&(fe+="?"+Fe.join("&")),fe},Ke.prototype.canonicalizeTileset=function(y,I){for(var U=I?xt(I):!1,J=[],ne=0,fe=y.tiles||[];ne=0&&y.params.splice(ne,1)}if(J.path!=="/"&&(y.path=""+J.path+y.path),!ct.REQUIRE_ACCESS_TOKEN)return $t(y);if(I=I||ct.ACCESS_TOKEN,!I)throw new Error("An API access token is required to use Mapbox GL. "+U);if(I[0]==="s")throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+U);return y.params=y.params.filter(function(fe){return fe.indexOf("access_token")===-1}),y.params.push("access_token="+I),$t(y)};function xt(m){return m.indexOf("mapbox:")===0}var bt=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;function Lt(m){return bt.test(m)}function St(m){return m.indexOf("sku=")>0&&Lt(m)}function Et(m){for(var y=0,I=m;y=1&&f.localStorage.setItem(I,JSON.stringify(this.eventData))}catch(J){re("Unable to write to LocalStorage")}},Br.prototype.processRequests=function(y){},Br.prototype.postEvent=function(y,I,U,J){var ne=this;if(ct.EVENTS_URL){var fe=Ht(ct.EVENTS_URL);fe.params.push("access_token="+(J||ct.ACCESS_TOKEN||""));var Fe={event:this.type,created:new Date(y).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:o,skuId:xr,userId:this.anonId},Qe=I?_(Fe,I):Fe,st={url:$t(fe),headers:{"Content-Type":"text/plain"},body:JSON.stringify([Qe])};this.pendingRequest=Vr(st,function(mt){ne.pendingRequest=null,U(mt),ne.saveEventData(),ne.processRequests(J)})}},Br.prototype.queueRequest=function(y,I){this.queue.push(y),this.processRequests(I)};var Or=function(m){function y(){m.call(this,"map.load"),this.success={},this.skuToken=""}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.postMapLoadEvent=function(U,J,ne,fe){this.skuToken=ne,(ct.EVENTS_URL&&fe||ct.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(Fe){return xt(Fe)||Lt(Fe)}))&&this.queueRequest({id:J,timestamp:Date.now()},fe)},y.prototype.processRequests=function(U){var J=this;if(!(this.pendingRequest||this.queue.length===0)){var ne=this.queue.shift(),fe=ne.id,Fe=ne.timestamp;fe&&this.success[fe]||(this.anonId||this.fetchEventData(),F(this.anonId)||(this.anonId=P()),this.postEvent(Fe,{skuToken:this.skuToken},function(Qe){Qe||fe&&(J.success[fe]=!0)},U))}},y}(Br),Nr=function(m){function y(I){m.call(this,"appUserTurnstile"),this._customAccessToken=I}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.postTurnstileEvent=function(U,J){ct.EVENTS_URL&&ct.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(ne){return xt(ne)||Lt(ne)})&&this.queueRequest(Date.now(),J)},y.prototype.processRequests=function(U){var J=this;if(!(this.pendingRequest||this.queue.length===0)){(!this.anonId||!this.eventData.lastSuccess||!this.eventData.tokenU)&&this.fetchEventData();var ne=_r(ct.ACCESS_TOKEN),fe=ne?ne.u:ct.ACCESS_TOKEN,Fe=fe!==this.eventData.tokenU;F(this.anonId)||(this.anonId=P(),Fe=!0);var Qe=this.queue.shift();if(this.eventData.lastSuccess){var st=new Date(this.eventData.lastSuccess),mt=new Date(Qe),Xt=(Qe-this.eventData.lastSuccess)/(24*60*60*1e3);Fe=Fe||Xt>=1||Xt<-1||st.getDate()!==mt.getDate()}else Fe=!0;if(!Fe)return this.processRequests();this.postEvent(Qe,{"enabled.telemetry":!1},function(ur){ur||(J.eventData.lastSuccess=Qe,J.eventData.tokenU=fe)},U)}},y}(Br),ut=new Nr,Ne=ut.postTurnstileEvent.bind(ut),Ye=new Or,Ve=Ye.postMapLoadEvent.bind(Ye),Xe="mapbox-tiles",ht=500,Le=50,xe=1e3*60*7,Se;function lt(){f.caches&&!Se&&(Se=f.caches.open(Xe))}var Gt;function Vt(m,y){if(Gt===void 0)try{new Response(new ReadableStream),Gt=!0}catch(I){Gt=!1}Gt?y(m.body):m.blob().then(y)}function ar(m,y,I){if(lt(),!!Se){var U={status:y.status,statusText:y.statusText,headers:new f.Headers};y.headers.forEach(function(fe,Fe){return U.headers.set(Fe,fe)});var J=ge(y.headers.get("Cache-Control")||"");if(!J["no-store"]){J["max-age"]&&U.headers.set("Expires",new Date(I+J["max-age"]*1e3).toUTCString());var ne=new Date(U.headers.get("Expires")).getTime()-I;neDate.now()&&!I["no-cache"]}var ri=1/0;function bi(m){ri++,ri>Le&&(m.getActor().send("enforceCacheSizeLimit",ht),ri=0)}function nn(m){lt(),Se&&Se.then(function(y){y.keys().then(function(I){for(var U=0;U=200&&I.status<300||I.status===0)&&I.response!==null){var J=I.response;if(m.type==="json")try{J=JSON.parse(I.response)}catch(ne){return y(ne)}y(null,J,I.getResponseHeader("Cache-Control"),I.getResponseHeader("Expires"))}else y(new Wn(I.statusText,I.status,m.url))},I.send(m.body),{cancel:function(){return I.abort()}}}var yr=function(m,y){if(!ft(m.url)){if(f.fetch&&f.Request&&f.AbortController&&f.Request.prototype.hasOwnProperty("signal"))return jt(m,y);if(ke()&&self.worker&&self.worker.actor){var I=!0;return self.worker.actor.send("getResource",m,y,void 0,I)}}return Zt(m,y)},Fr=function(m,y){return yr(_(m,{type:"json"}),y)},Zr=function(m,y){return yr(_(m,{type:"arrayBuffer"}),y)},Vr=function(m,y){return yr(_(m,{method:"POST"}),y)};function gi(m){var y=f.document.createElement("a");return y.href=m,y.protocol===f.document.location.protocol&&y.host===f.document.location.host}var Si="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function Mi(m,y,I,U){var J=new f.Image,ne=f.URL;J.onload=function(){y(null,J),ne.revokeObjectURL(J.src),J.onload=null,f.requestAnimationFrame(function(){J.src=Si})},J.onerror=function(){return y(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))};var fe=new f.Blob([new Uint8Array(m)],{type:"image/png"});J.cacheControl=I,J.expires=U,J.src=m.byteLength?ne.createObjectURL(fe):Si}function Pi(m,y){var I=new f.Blob([new Uint8Array(m)],{type:"image/png"});f.createImageBitmap(I).then(function(U){y(null,U)}).catch(function(U){y(new Error("Could not load image because of "+U.message+". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))})}var Gi,Ki,ka=function(){Gi=[],Ki=0};ka();var jn=function(m,y){if(qt.supported&&(m.headers||(m.headers={}),m.headers.accept="image/webp,*/*"),Ki>=ct.MAX_PARALLEL_IMAGE_REQUESTS){var I={requestParameters:m,callback:y,cancelled:!1,cancel:function(){this.cancelled=!0}};return Gi.push(I),I}Ki++;var U=!1,J=function(){if(!U)for(U=!0,Ki--;Gi.length&&Ki0||this._oneTimeListeners&&this._oneTimeListeners[y]&&this._oneTimeListeners[y].length>0||this._eventedParent&&this._eventedParent.listens(y)},Sn.prototype.setEventedParent=function(y,I){return this._eventedParent=y,this._eventedParentData=I,this};var Ha=8,oo={version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},xn={"*":{type:"source"}},_t=["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],br={type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},Hr={type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},ti={type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},zi={type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},Yi={type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},an={type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},hi={id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},Ji=["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],ua={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Fn={"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Sa={"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},go={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Oo={"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},ho={"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Mo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},xo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},zs={type:"array",value:"*"},ks={type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},Zs={type:"enum",values:{Point:{},LineString:{},Polygon:{}}},Xs={type:"array",minimum:0,maximum:24,value:["number","color"],length:2},wl={type:"array",value:"*",minimum:1},os={anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},cl=["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],Cs={"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},ml={"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},Ys={"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},Hs={"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Eo={"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},fs={"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},$l={"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Hu={"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},fc={duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},ms={"*":{type:"string"}},on={$version:Ha,$root:oo,sources:xn,source:_t,source_vector:br,source_raster:Hr,source_raster_dem:ti,source_geojson:zi,source_video:Yi,source_image:an,layer:hi,layout:Ji,layout_background:ua,layout_fill:Fn,layout_circle:Sa,layout_heatmap:go,"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:Oo,layout_symbol:ho,layout_raster:Mo,layout_hillshade:xo,filter:zs,filter_operator:ks,geometry_type:Zs,function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:Xs,expression:wl,light:os,paint:cl,paint_fill:Cs,"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:ml,paint_circle:Ys,paint_heatmap:Hs,paint_symbol:Eo,paint_raster:fs,paint_hillshade:$l,paint_background:Hu,transition:fc,"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:ms},fa=function(y,I,U,J){this.message=(y?y+": ":"")+U,J&&(this.identifier=J),I!=null&&I.__line__&&(this.line=I.__line__)};function Qu(m){var y=m.key,I=m.value;return I?[new fa(y,I,"constants have been deprecated as of v8")]:[]}function Il(m){for(var y=[],I=arguments.length-1;I-- >0;)y[I]=arguments[I+1];for(var U=0,J=y;U":m.itemType.kind==="value"?"array":"array<"+y+">"}else return m.kind}var mu=[Ec,Zn,ko,Co,Tl,Al,uf,Ql(So),Hc];function kc(m,y){if(y.kind==="error")return null;if(m.kind==="array"){if(y.kind==="array"&&(y.N===0&&y.itemType.kind==="value"||!kc(m.itemType,y.itemType))&&(typeof m.N!="number"||m.N===y.N))return null}else{if(m.kind===y.kind)return null;if(m.kind==="value")for(var I=0,U=mu;I255?255:st}function J(st){return st<0?0:st>1?1:st}function ne(st){return st[st.length-1]==="%"?U(parseFloat(st)/100*255):U(parseInt(st))}function fe(st){return st[st.length-1]==="%"?J(parseFloat(st)/100):J(parseFloat(st))}function Fe(st,mt,Xt){return Xt<0?Xt+=1:Xt>1&&(Xt-=1),Xt*6<1?st+(mt-st)*Xt*6:Xt*2<1?mt:Xt*3<2?st+(mt-st)*(2/3-Xt)*6:st}function Qe(st){var mt=st.replace(/ /g,"").toLowerCase();if(mt in I)return I[mt].slice();if(mt[0]==="#"){if(mt.length===4){var Xt=parseInt(mt.substr(1),16);return Xt>=0&&Xt<=4095?[(Xt&3840)>>4|(Xt&3840)>>8,Xt&240|(Xt&240)>>4,Xt&15|(Xt&15)<<4,1]:null}else if(mt.length===7){var Xt=parseInt(mt.substr(1),16);return Xt>=0&&Xt<=16777215?[(Xt&16711680)>>16,(Xt&65280)>>8,Xt&255,1]:null}return null}var ur=mt.indexOf("("),nr=mt.indexOf(")");if(ur!==-1&&nr+1===mt.length){var Lr=mt.substr(0,ur),Yr=mt.substr(ur+1,nr-(ur+1)).split(","),_i=1;switch(Lr){case"rgba":if(Yr.length!==4)return null;_i=fe(Yr.pop());case"rgb":return Yr.length!==3?null:[ne(Yr[0]),ne(Yr[1]),ne(Yr[2]),_i];case"hsla":if(Yr.length!==4)return null;_i=fe(Yr.pop());case"hsl":if(Yr.length!==3)return null;var si=(parseFloat(Yr[0])%360+360)%360/360,Hi=fe(Yr[1]),Ei=fe(Yr[2]),Vi=Ei<=.5?Ei*(Hi+1):Ei+Hi-Ei*Hi,en=Ei*2-Vi;return[U(Fe(en,Vi,si+1/3)*255),U(Fe(en,Vi,si)*255),U(Fe(en,Vi,si-1/3)*255),_i];default:return null}}return null}try{y.parseCSSColor=Qe}catch(st){}}),Bf=vd.parseCSSColor,ss=function(y,I,U,J){J===void 0&&(J=1),this.r=y,this.g=I,this.b=U,this.a=J};ss.parse=function(y){if(y){if(y instanceof ss)return y;if(typeof y=="string"){var I=Bf(y);if(I)return new ss(I[0]/255*I[3],I[1]/255*I[3],I[2]/255*I[3],I[3])}}},ss.prototype.toString=function(){var y=this.toArray(),I=y[0],U=y[1],J=y[2],ne=y[3];return"rgba("+Math.round(I)+","+Math.round(U)+","+Math.round(J)+","+ne+")"},ss.prototype.toArray=function(){var y=this,I=y.r,U=y.g,J=y.b,ne=y.a;return ne===0?[0,0,0,0]:[I*255/ne,U*255/ne,J*255/ne,ne]},ss.black=new ss(0,0,0,1),ss.white=new ss(1,1,1,1),ss.transparent=new ss(0,0,0,0),ss.red=new ss(1,0,0,1);var ff=function(y,I,U){y?this.sensitivity=I?"variant":"case":this.sensitivity=I?"accent":"base",this.locale=U,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};ff.prototype.compare=function(y,I){return this.collator.compare(y,I)},ff.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var ih=function(y,I,U,J,ne){this.text=y,this.image=I,this.scale=U,this.fontStack=J,this.textColor=ne},Ul=function(y){this.sections=y};Ul.fromString=function(y){return new Ul([new ih(y,null,null,null,null)])},Ul.prototype.isEmpty=function(){return this.sections.length===0?!0:!this.sections.some(function(y){return y.text.length!==0||y.image&&y.image.name.length!==0})},Ul.factory=function(y){return y instanceof Ul?y:Ul.fromString(y)},Ul.prototype.toString=function(){return this.sections.length===0?"":this.sections.map(function(y){return y.text}).join("")},Ul.prototype.serialize=function(){for(var y=["format"],I=0,U=this.sections;I=0&&m<=255&&typeof y=="number"&&y>=0&&y<=255&&typeof I=="number"&&I>=0&&I<=255)){var J=typeof U=="number"?[m,y,I,U]:[m,y,I];return"Invalid rgba value ["+J.join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}return typeof U=="undefined"||typeof U=="number"&&U>=0&&U<=1?null:"Invalid rgba value ["+[m,y,I,U].join(", ")+"]: 'a' must be between 0 and 1."}function Cc(m){if(m===null)return!0;if(typeof m=="string")return!0;if(typeof m=="boolean")return!0;if(typeof m=="number")return!0;if(m instanceof ss)return!0;if(m instanceof ff)return!0;if(m instanceof Ul)return!0;if(m instanceof Js)return!0;if(Array.isArray(m)){for(var y=0,I=m;y2){var Fe=y[1];if(typeof Fe!="string"||!(Fe in dc)||Fe==="object")return I.error('The item type argument of "array" must be one of string, number, boolean',1);fe=dc[Fe],U++}else fe=So;var Qe;if(y.length>3){if(y[2]!==null&&(typeof y[2]!="number"||y[2]<0||y[2]!==Math.floor(y[2])))return I.error('The length argument to "array" must be a positive integer literal',2);Qe=y[2],U++}J=Ql(fe,Qe)}else J=dc[ne];for(var st=[];U1)&&I.push(J)}}return I.concat(this.args.map(function(ne){return ne.serialize()}))};var ec=function(y){this.type=Al,this.sections=y};ec.parse=function(y,I){if(y.length<2)return I.error("Expected at least one argument.");var U=y[1];if(!Array.isArray(U)&&typeof U=="object")return I.error("First argument must be an image or text section.");for(var J=[],ne=!1,fe=1;fe<=y.length-1;++fe){var Fe=y[fe];if(ne&&typeof Fe=="object"&&!Array.isArray(Fe)){ne=!1;var Qe=null;if(Fe["font-scale"]&&(Qe=I.parse(Fe["font-scale"],1,Zn),!Qe))return null;var st=null;if(Fe["text-font"]&&(st=I.parse(Fe["text-font"],1,Ql(ko)),!st))return null;var mt=null;if(Fe["text-color"]&&(mt=I.parse(Fe["text-color"],1,Tl),!mt))return null;var Xt=J[J.length-1];Xt.scale=Qe,Xt.font=st,Xt.textColor=mt}else{var ur=I.parse(y[fe],1,So);if(!ur)return null;var nr=ur.type.kind;if(nr!=="string"&&nr!=="value"&&nr!=="null"&&nr!=="resolvedImage")return I.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ne=!0,J.push({content:ur,scale:null,font:null,textColor:null})}}return new ec(J)},ec.prototype.evaluate=function(y){var I=function(U){var J=U.content.evaluate(y);return ws(J)===Hc?new ih("",J,null,null,null):new ih($s(J),null,U.scale?U.scale.evaluate(y):null,U.font?U.font.evaluate(y).join(","):null,U.textColor?U.textColor.evaluate(y):null)};return new Ul(this.sections.map(I))},ec.prototype.eachChild=function(y){for(var I=0,U=this.sections;I-1),U},Ps.prototype.eachChild=function(y){y(this.input)},Ps.prototype.outputDefined=function(){return!1},Ps.prototype.serialize=function(){return["image",this.input.serialize()]};var ov={"to-boolean":Co,"to-color":Tl,"to-number":Zn,"to-string":ko},wo=function(y,I){this.type=y,this.args=I};wo.parse=function(y,I){if(y.length<2)return I.error("Expected at least one argument.");var U=y[0];if((U==="to-boolean"||U==="to-string")&&y.length!==2)return I.error("Expected one argument.");for(var J=ov[U],ne=[],fe=1;fe4?U="Invalid rbga value "+JSON.stringify(I)+": expected an array containing either three or four numeric values.":U=hc(I[0],I[1],I[2],I[3]),!U))return new ss(I[0]/255,I[1]/255,I[2]/255,I[3])}throw new Ms(U||"Could not parse color from value '"+(typeof I=="string"?I:String(JSON.stringify(I)))+"'")}else if(this.type.kind==="number"){for(var Qe=null,st=0,mt=this.args;st=y[2]||m[1]<=y[1]||m[3]>=y[3])}function Yh(m,y){var I=jc(m[0]),U=kf(m[1]),J=Math.pow(2,y.z);return[Math.round(I*J*uu),Math.round(U*J*uu)]}function Eh(m,y,I){var U=m[0]-y[0],J=m[1]-y[1],ne=m[0]-I[0],fe=m[1]-I[1];return U*fe-ne*J===0&&U*ne<=0&&J*fe<=0}function nh(m,y,I){return y[1]>m[1]!=I[1]>m[1]&&m[0]<(I[0]-y[0])*(m[1]-y[1])/(I[1]-y[1])+y[0]}function hf(m,y){for(var I=!1,U=0,J=y.length;U0&&Xt<0||mt<0&&Xt>0}function ah(m,y,I,U){var J=[y[0]-m[0],y[1]-m[1]],ne=[U[0]-I[0],U[1]-I[1]];return Kh(ne,J)===0?!1:!!(rc(m,y,I,U)&&rc(I,U,m,y))}function Wc(m,y,I){for(var U=0,J=I;UI[2]){var J=U*.5,ne=m[0]-I[0]>J?-U:I[0]-m[0]>J?U:0;ne===0&&(ne=m[0]-I[2]>J?-U:I[2]-m[0]>J?U:0),m[0]+=ne}Mh(y,m)}function Ch(m){m[0]=m[1]=1/0,m[2]=m[3]=-1/0}function Bd(m,y,I,U){for(var J=Math.pow(2,U.z)*uu,ne=[U.x*uu,U.y*uu],fe=[],Fe=0,Qe=m;Fe=0)return!1;var I=!0;return m.eachChild(function(U){I&&!Pu(U,y)&&(I=!1)}),I}var Lc=function(y,I){this.type=I.type,this.name=y,this.boundExpression=I};Lc.parse=function(y,I){if(y.length!==2||typeof y[1]!="string")return I.error("'var' expression requires exactly one string literal argument.");var U=y[1];return I.scope.has(U)?new Lc(U,I.scope.get(U)):I.error('Unknown variable "'+U+'". Make sure "'+U+'" has been bound in an enclosing "let" expression before using it.',1)},Lc.prototype.evaluate=function(y){return this.boundExpression.evaluate(y)},Lc.prototype.eachChild=function(){},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return["var",this.name]};var fl=function(y,I,U,J,ne){I===void 0&&(I=[]),J===void 0&&(J=new Zl),ne===void 0&&(ne=[]),this.registry=y,this.path=I,this.key=I.map(function(fe){return"["+fe+"]"}).join(""),this.scope=J,this.errors=ne,this.expectedType=U};fl.prototype.parse=function(y,I,U,J,ne){return ne===void 0&&(ne={}),I?this.concat(I,U,J)._parse(y,ne):this._parse(y,ne)},fl.prototype._parse=function(y,I){(y===null||typeof y=="string"||typeof y=="boolean"||typeof y=="number")&&(y=["literal",y]);function U(mt,Xt,ur){return ur==="assert"?new Sl(Xt,[mt]):ur==="coerce"?new wo(Xt,[mt]):mt}if(Array.isArray(y)){if(y.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var J=y[0];if(typeof J!="string")return this.error("Expression name must be a string, but found "+typeof J+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var ne=this.registry[J];if(ne){var fe=ne.parse(y,this);if(!fe)return null;if(this.expectedType){var Fe=this.expectedType,Qe=fe.type;if((Fe.kind==="string"||Fe.kind==="number"||Fe.kind==="boolean"||Fe.kind==="object"||Fe.kind==="array")&&Qe.kind==="value")fe=U(fe,Fe,I.typeAnnotation||"assert");else if((Fe.kind==="color"||Fe.kind==="formatted"||Fe.kind==="resolvedImage")&&(Qe.kind==="value"||Qe.kind==="string"))fe=U(fe,Fe,I.typeAnnotation||"coerce");else if(this.checkSubtype(Fe,Qe))return null}if(!(fe instanceof hs)&&fe.type.kind!=="resolvedImage"&&Xc(fe)){var st=new $o;try{fe=new hs(fe.type,fe.evaluate(st))}catch(mt){return this.error(mt.message),null}}return fe}return this.error('Unknown expression "'+J+'". If you wanted a literal array, use ["literal", [...]].',0)}else return typeof y=="undefined"?this.error("'undefined' value invalid. Use null instead."):typeof y=="object"?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof y+" instead.")},fl.prototype.concat=function(y,I,U){var J=typeof y=="number"?this.path.concat(y):this.path,ne=U?this.scope.concat(U):this.scope;return new fl(this.registry,J,I||null,ne,this.errors)},fl.prototype.error=function(y){for(var I=[],U=arguments.length-1;U-- >0;)I[U]=arguments[U+1];var J=""+this.key+I.map(function(ne){return"["+ne+"]"}).join("");this.errors.push(new Ks(J,y))},fl.prototype.checkSubtype=function(y,I){var U=kc(y,I);return U&&this.error(U),U};function Xc(m){if(m instanceof Lc)return Xc(m.boundExpression);if(m instanceof Ja&&m.name==="error")return!1;if(m instanceof tc)return!1;if(m instanceof Lu)return!1;var y=m instanceof wo||m instanceof Sl,I=!0;return m.eachChild(function(U){y?I=I&&Xc(U):I=I&&U instanceof hs}),I?$h(m)&&Pu(m,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"]):!1}function ic(m,y){for(var I=m.length-1,U=0,J=I,ne=0,fe,Fe;U<=J;)if(ne=Math.floor((U+J)/2),fe=m[ne],Fe=m[ne+1],fe<=y){if(ne===I||yy)J=ne-1;else throw new Ms("Input is not a number.");return 0}var yu=function(y,I,U){this.type=y,this.input=I,this.labels=[],this.outputs=[];for(var J=0,ne=U;J=Fe)return I.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',st);var Xt=I.parse(Qe,mt,ne);if(!Xt)return null;ne=ne||Xt.type,J.push([Fe,Xt])}return new yu(ne,U,J)},yu.prototype.evaluate=function(y){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(y);var J=this.input.evaluate(y);if(J<=I[0])return U[0].evaluate(y);var ne=I.length;if(J>=I[ne-1])return U[ne-1].evaluate(y);var fe=ic(I,J);return U[fe].evaluate(y)},yu.prototype.eachChild=function(y){y(this.input);for(var I=0,U=this.outputs;I0&&y.push(this.labels[I]),y.push(this.outputs[I].serialize());return y};function Qs(m,y,I){return m*(1-I)+y*I}function Qh(m,y,I){return new ss(Qs(m.r,y.r,I),Qs(m.g,y.g,I),Qs(m.b,y.b,I),Qs(m.a,y.a,I))}function gd(m,y,I){return m.map(function(U,J){return Qs(U,y[J],I)})}var Gu=Object.freeze({__proto__:null,number:Qs,color:Qh,array:gd}),Pc=.95047,vc=1,sv=1.08883,Lf=4/29,Uf=6/29,Iu=3*Uf*Uf,oh=Uf*Uf*Uf,tu=Math.PI/180,vf=180/Math.PI;function md(m){return m>oh?Math.pow(m,1/3):m/Iu+Lf}function sh(m){return m>Uf?m*m*m:Iu*(m-Lf)}function Fs(m){return 255*(m<=.0031308?12.92*m:1.055*Math.pow(m,1/2.4)-.055)}function _u(m){return m/=255,m<=.04045?m/12.92:Math.pow((m+.055)/1.055,2.4)}function xu(m){var y=_u(m.r),I=_u(m.g),U=_u(m.b),J=md((.4124564*y+.3575761*I+.1804375*U)/Pc),ne=md((.2126729*y+.7151522*I+.072175*U)/vc),fe=md((.0193339*y+.119192*I+.9503041*U)/sv);return{l:116*ne-16,a:500*(J-ne),b:200*(ne-fe),alpha:m.a}}function Lh(m){var y=(m.l+16)/116,I=isNaN(m.a)?y:y+m.a/500,U=isNaN(m.b)?y:y-m.b/200;return y=vc*sh(y),I=Pc*sh(I),U=sv*sh(U),new ss(Fs(3.2404542*I-1.5371385*y-.4985314*U),Fs(-.969266*I+1.8760108*y+.041556*U),Fs(.0556434*I-.2040259*y+1.0572252*U),m.alpha)}function Is(m,y,I){return{l:Qs(m.l,y.l,I),a:Qs(m.a,y.a,I),b:Qs(m.b,y.b,I),alpha:Qs(m.alpha,y.alpha,I)}}function Pf(m){var y=xu(m),I=y.l,U=y.a,J=y.b,ne=Math.atan2(J,U)*vf;return{h:ne<0?ne+360:ne,c:Math.sqrt(U*U+J*J),l:I,alpha:m.a}}function Ic(m){var y=m.h*tu,I=m.c,U=m.l;return Lh({l:U,a:Math.cos(y)*I,b:Math.sin(y)*I,alpha:m.alpha})}function ju(m,y,I){var U=y-m;return m+I*(U>180||U<-180?U-360*Math.round(U/360):U)}function Vf(m,y,I){return{h:ju(m.h,y.h,I),c:Qs(m.c,y.c,I),l:Qs(m.l,y.l,I),alpha:Qs(m.alpha,y.alpha,I)}}var pc={forward:xu,reverse:Lh,interpolate:Is},pf={forward:Pf,reverse:Ic,interpolate:Vf},Ph=Object.freeze({__proto__:null,lab:pc,hcl:pf}),Rl=function(y,I,U,J,ne){this.type=y,this.operator=I,this.interpolation=U,this.input=J,this.labels=[],this.outputs=[];for(var fe=0,Fe=ne;fe1}))return I.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);J={name:"cubic-bezier",controlPoints:Qe}}else return I.error("Unknown interpolation type "+String(J[0]),1,0);if(y.length-1<4)return I.error("Expected at least 4 arguments, but found only "+(y.length-1)+".");if((y.length-1)%2!==0)return I.error("Expected an even number of arguments.");if(ne=I.parse(ne,2,Zn),!ne)return null;var st=[],mt=null;U==="interpolate-hcl"||U==="interpolate-lab"?mt=Tl:I.expectedType&&I.expectedType.kind!=="value"&&(mt=I.expectedType);for(var Xt=0;Xt=ur)return I.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Lr);var _i=I.parse(nr,Yr,mt);if(!_i)return null;mt=mt||_i.type,st.push([ur,_i])}return mt.kind!=="number"&&mt.kind!=="color"&&!(mt.kind==="array"&&mt.itemType.kind==="number"&&typeof mt.N=="number")?I.error("Type "+Ls(mt)+" is not interpolatable."):new Rl(mt,U,J,ne,st)},Rl.prototype.evaluate=function(y){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(y);var J=this.input.evaluate(y);if(J<=I[0])return U[0].evaluate(y);var ne=I.length;if(J>=I[ne-1])return U[ne-1].evaluate(y);var fe=ic(I,J),Fe=I[fe],Qe=I[fe+1],st=Rl.interpolationFactor(this.interpolation,J,Fe,Qe),mt=U[fe].evaluate(y),Xt=U[fe+1].evaluate(y);return this.operator==="interpolate"?Gu[this.type.kind.toLowerCase()](mt,Xt,st):this.operator==="interpolate-hcl"?pf.reverse(pf.interpolate(pf.forward(mt),pf.forward(Xt),st)):pc.reverse(pc.interpolate(pc.forward(mt),pc.forward(Xt),st))},Rl.prototype.eachChild=function(y){y(this.input);for(var I=0,U=this.outputs;I=U.length)throw new Ms("Array index out of bounds: "+I+" > "+(U.length-1)+".");if(I!==Math.floor(I))throw new Ms("Array index must be an integer, but found "+I+" instead.");return U[I]},gc.prototype.eachChild=function(y){y(this.index),y(this.input)},gc.prototype.outputDefined=function(){return!1},gc.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var hl=function(y,I){this.type=Co,this.needle=y,this.haystack=I};hl.parse=function(y,I){if(y.length!==3)return I.error("Expected 2 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,So);return!U||!J?null:Of(U.type,[Co,ko,Zn,Ec,So])?new hl(U,J):I.error("Expected first argument to be of type boolean, string, number or null, but found "+Ls(U.type)+" instead")},hl.prototype.evaluate=function(y){var I=this.needle.evaluate(y),U=this.haystack.evaluate(y);if(!U)return!1;if(!Gc(I,["boolean","string","number","null"]))throw new Ms("Expected first argument to be of type boolean, string, number or null, but found "+Ls(ws(I))+" instead.");if(!Gc(U,["string","array"]))throw new Ms("Expected second argument to be of type array or string, but found "+Ls(ws(U))+" instead.");return U.indexOf(I)>=0},hl.prototype.eachChild=function(y){y(this.needle),y(this.haystack)},hl.prototype.outputDefined=function(){return!0},hl.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var ru=function(y,I,U){this.type=Zn,this.needle=y,this.haystack=I,this.fromIndex=U};ru.parse=function(y,I){if(y.length<=2||y.length>=5)return I.error("Expected 3 or 4 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,So);if(!U||!J)return null;if(!Of(U.type,[Co,ko,Zn,Ec,So]))return I.error("Expected first argument to be of type boolean, string, number or null, but found "+Ls(U.type)+" instead");if(y.length===4){var ne=I.parse(y[3],3,Zn);return ne?new ru(U,J,ne):null}else return new ru(U,J)},ru.prototype.evaluate=function(y){var I=this.needle.evaluate(y),U=this.haystack.evaluate(y);if(!Gc(I,["boolean","string","number","null"]))throw new Ms("Expected first argument to be of type boolean, string, number or null, but found "+Ls(ws(I))+" instead.");if(!Gc(U,["string","array"]))throw new Ms("Expected second argument to be of type array or string, but found "+Ls(ws(U))+" instead.");if(this.fromIndex){var J=this.fromIndex.evaluate(y);return U.indexOf(I,J)}return U.indexOf(I)},ru.prototype.eachChild=function(y){y(this.needle),y(this.haystack),this.fromIndex&&y(this.fromIndex)},ru.prototype.outputDefined=function(){return!1},ru.prototype.serialize=function(){if(this.fromIndex!=null&&this.fromIndex!==void 0){var y=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),y]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var mc=function(y,I,U,J,ne,fe){this.inputType=y,this.type=I,this.input=U,this.cases=J,this.outputs=ne,this.otherwise=fe};mc.parse=function(y,I){if(y.length<5)return I.error("Expected at least 4 arguments, but found only "+(y.length-1)+".");if(y.length%2!==1)return I.error("Expected an even number of arguments.");var U,J;I.expectedType&&I.expectedType.kind!=="value"&&(J=I.expectedType);for(var ne={},fe=[],Fe=2;FeNumber.MAX_SAFE_INTEGER)return mt.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if(typeof nr=="number"&&Math.floor(nr)!==nr)return mt.error("Numeric branch labels must be integer values.");if(!U)U=ws(nr);else if(mt.checkSubtype(U,ws(nr)))return null;if(typeof ne[String(nr)]!="undefined")return mt.error("Branch labels must be unique.");ne[String(nr)]=fe.length}var Lr=I.parse(st,Fe,J);if(!Lr)return null;J=J||Lr.type,fe.push(Lr)}var Yr=I.parse(y[1],1,So);if(!Yr)return null;var _i=I.parse(y[y.length-1],y.length-1,J);return!_i||Yr.type.kind!=="value"&&I.concat(1).checkSubtype(U,Yr.type)?null:new mc(U,J,Yr,ne,fe,_i)},mc.prototype.evaluate=function(y){var I=this.input.evaluate(y),U=ws(I)===this.inputType&&this.outputs[this.cases[I]]||this.otherwise;return U.evaluate(y)},mc.prototype.eachChild=function(y){y(this.input),this.outputs.forEach(y),y(this.otherwise)},mc.prototype.outputDefined=function(){return this.outputs.every(function(y){return y.outputDefined()})&&this.otherwise.outputDefined()},mc.prototype.serialize=function(){for(var y=this,I=["match",this.input.serialize()],U=Object.keys(this.cases).sort(),J=[],ne={},fe=0,Fe=U;fe=5)return I.error("Expected 3 or 4 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,Zn);if(!U||!J)return null;if(!Of(U.type,[Ql(So),ko,So]))return I.error("Expected first argument to be of type array or string, but found "+Ls(U.type)+" instead");if(y.length===4){var ne=I.parse(y[3],3,Zn);return ne?new nc(U.type,U,J,ne):null}else return new nc(U.type,U,J)},nc.prototype.evaluate=function(y){var I=this.input.evaluate(y),U=this.beginIndex.evaluate(y);if(!Gc(I,["string","array"]))throw new Ms("Expected first argument to be of type array or string, but found "+Ls(ws(I))+" instead.");if(this.endIndex){var J=this.endIndex.evaluate(y);return I.slice(U,J)}return I.slice(U)},nc.prototype.eachChild=function(y){y(this.input),y(this.beginIndex),this.endIndex&&y(this.endIndex)},nc.prototype.outputDefined=function(){return!1},nc.prototype.serialize=function(){if(this.endIndex!=null&&this.endIndex!==void 0){var y=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),y]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};function gf(m,y){return m==="=="||m==="!="?y.kind==="boolean"||y.kind==="string"||y.kind==="number"||y.kind==="null"||y.kind==="value":y.kind==="string"||y.kind==="number"||y.kind==="value"}function gt(m,y,I){return y===I}function Bt(m,y,I){return y!==I}function wr(m,y,I){return yI}function Ur(m,y,I){return y<=I}function fi(m,y,I){return y>=I}function xi(m,y,I,U){return U.compare(y,I)===0}function Fi(m,y,I,U){return!xi(m,y,I,U)}function Xi(m,y,I,U){return U.compare(y,I)<0}function hn(m,y,I,U){return U.compare(y,I)>0}function Ti(m,y,I,U){return U.compare(y,I)<=0}function qi(m,y,I,U){return U.compare(y,I)>=0}function Ii(m,y,I){var U=m!=="=="&&m!=="!=";return function(){function J(ne,fe,Fe){this.type=Co,this.lhs=ne,this.rhs=fe,this.collator=Fe,this.hasUntypedArgument=ne.type.kind==="value"||fe.type.kind==="value"}return J.parse=function(fe,Fe){if(fe.length!==3&&fe.length!==4)return Fe.error("Expected two or three arguments.");var Qe=fe[0],st=Fe.parse(fe[1],1,So);if(!st)return null;if(!gf(Qe,st.type))return Fe.concat(1).error('"'+Qe+`" comparisons are not supported for type '`+Ls(st.type)+"'.");var mt=Fe.parse(fe[2],2,So);if(!mt)return null;if(!gf(Qe,mt.type))return Fe.concat(2).error('"'+Qe+`" comparisons are not supported for type '`+Ls(mt.type)+"'.");if(st.type.kind!==mt.type.kind&&st.type.kind!=="value"&&mt.type.kind!=="value")return Fe.error("Cannot compare types '"+Ls(st.type)+"' and '"+Ls(mt.type)+"'.");U&&(st.type.kind==="value"&&mt.type.kind!=="value"?st=new Sl(mt.type,[st]):st.type.kind!=="value"&&mt.type.kind==="value"&&(mt=new Sl(st.type,[mt])));var Xt=null;if(fe.length===4){if(st.type.kind!=="string"&&mt.type.kind!=="string"&&st.type.kind!=="value"&&mt.type.kind!=="value")return Fe.error("Cannot use collator to compare non-string types.");if(Xt=Fe.parse(fe[3],3,rh),!Xt)return null}return new J(st,mt,Xt)},J.prototype.evaluate=function(fe){var Fe=this.lhs.evaluate(fe),Qe=this.rhs.evaluate(fe);if(U&&this.hasUntypedArgument){var st=ws(Fe),mt=ws(Qe);if(st.kind!==mt.kind||!(st.kind==="string"||st.kind==="number"))throw new Ms('Expected arguments for "'+m+'" to be (string, string) or (number, number), but found ('+st.kind+", "+mt.kind+") instead.")}if(this.collator&&!U&&this.hasUntypedArgument){var Xt=ws(Fe),ur=ws(Qe);if(Xt.kind!=="string"||ur.kind!=="string")return y(fe,Fe,Qe)}return this.collator?I(fe,Fe,Qe,this.collator.evaluate(fe)):y(fe,Fe,Qe)},J.prototype.eachChild=function(fe){fe(this.lhs),fe(this.rhs),this.collator&&fe(this.collator)},J.prototype.outputDefined=function(){return!0},J.prototype.serialize=function(){var fe=[m];return this.eachChild(function(Fe){fe.push(Fe.serialize())}),fe},J}()}var mi=Ii("==",gt,xi),Pn=Ii("!=",Bt,Fi),Ma=Ii("<",wr,Xi),Ta=Ii(">",vr,hn),Ea=Ii("<=",Ur,Ti),qa=Ii(">=",fi,qi),Cn=function(y,I,U,J,ne){this.type=ko,this.number=y,this.locale=I,this.currency=U,this.minFractionDigits=J,this.maxFractionDigits=ne};Cn.parse=function(y,I){if(y.length!==3)return I.error("Expected two arguments.");var U=I.parse(y[1],1,Zn);if(!U)return null;var J=y[2];if(typeof J!="object"||Array.isArray(J))return I.error("NumberFormat options argument must be an object.");var ne=null;if(J.locale&&(ne=I.parse(J.locale,1,ko),!ne))return null;var fe=null;if(J.currency&&(fe=I.parse(J.currency,1,ko),!fe))return null;var Fe=null;if(J["min-fraction-digits"]&&(Fe=I.parse(J["min-fraction-digits"],1,Zn),!Fe))return null;var Qe=null;return J["max-fraction-digits"]&&(Qe=I.parse(J["max-fraction-digits"],1,Zn),!Qe)?null:new Cn(U,ne,fe,Fe,Qe)},Cn.prototype.evaluate=function(y){return new Intl.NumberFormat(this.locale?this.locale.evaluate(y):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(y):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(y):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(y):void 0}).format(this.number.evaluate(y))},Cn.prototype.eachChild=function(y){y(this.number),this.locale&&y(this.locale),this.currency&&y(this.currency),this.minFractionDigits&&y(this.minFractionDigits),this.maxFractionDigits&&y(this.maxFractionDigits)},Cn.prototype.outputDefined=function(){return!1},Cn.prototype.serialize=function(){var y={};return this.locale&&(y.locale=this.locale.serialize()),this.currency&&(y.currency=this.currency.serialize()),this.minFractionDigits&&(y["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(y["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),y]};var sn=function(y){this.type=Zn,this.input=y};sn.parse=function(y,I){if(y.length!==2)return I.error("Expected 1 argument, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1);return U?U.type.kind!=="array"&&U.type.kind!=="string"&&U.type.kind!=="value"?I.error("Expected argument of type string or array, but found "+Ls(U.type)+" instead."):new sn(U):null},sn.prototype.evaluate=function(y){var I=this.input.evaluate(y);if(typeof I=="string")return I.length;if(Array.isArray(I))return I.length;throw new Ms("Expected value to be of type string or array, but found "+Ls(ws(I))+" instead.")},sn.prototype.eachChild=function(y){y(this.input)},sn.prototype.outputDefined=function(){return!1},sn.prototype.serialize=function(){var y=["length"];return this.eachChild(function(I){y.push(I.serialize())}),y};var Ua={"==":mi,"!=":Pn,">":Ta,"<":Ma,">=":qa,"<=":Ea,array:Sl,at:gc,boolean:Sl,case:Yc,coalesce:Wu,collator:tc,format:ec,image:Ps,in:hl,"index-of":ru,interpolate:Rl,"interpolate-hcl":Rl,"interpolate-lab":Rl,length:sn,let:Rc,literal:hs,match:mc,number:Sl,"number-format":Cn,object:Sl,slice:nc,step:yu,string:Sl,"to-boolean":wo,"to-color":wo,"to-number":wo,"to-string":wo,var:Lc,within:Lu};function mo(m,y){var I=y[0],U=y[1],J=y[2],ne=y[3];I=I.evaluate(m),U=U.evaluate(m),J=J.evaluate(m);var fe=ne?ne.evaluate(m):1,Fe=hc(I,U,J,fe);if(Fe)throw new Ms(Fe);return new ss(I/255*fe,U/255*fe,J/255*fe,fe)}function Xo(m,y){return m in y}function Ts(m,y){var I=y[m];return typeof I=="undefined"?null:I}function Qo(m,y,I,U){for(;I<=U;){var J=I+U>>1;if(y[J]===m)return!0;y[J]>m?U=J-1:I=J+1}return!1}function ys(m){return{type:m}}Ja.register(Ua,{error:[cf,[ko],function(m,y){var I=y[0];throw new Ms(I.evaluate(m))}],typeof:[ko,[So],function(m,y){var I=y[0];return Ls(ws(I.evaluate(m)))}],"to-rgba":[Ql(Zn,4),[Tl],function(m,y){var I=y[0];return I.evaluate(m).toArray()}],rgb:[Tl,[Zn,Zn,Zn],mo],rgba:[Tl,[Zn,Zn,Zn,Zn],mo],has:{type:Co,overloads:[[[ko],function(m,y){var I=y[0];return Xo(I.evaluate(m),m.properties())}],[[ko,uf],function(m,y){var I=y[0],U=y[1];return Xo(I.evaluate(m),U.evaluate(m))}]]},get:{type:So,overloads:[[[ko],function(m,y){var I=y[0];return Ts(I.evaluate(m),m.properties())}],[[ko,uf],function(m,y){var I=y[0],U=y[1];return Ts(I.evaluate(m),U.evaluate(m))}]]},"feature-state":[So,[ko],function(m,y){var I=y[0];return Ts(I.evaluate(m),m.featureState||{})}],properties:[uf,[],function(m){return m.properties()}],"geometry-type":[ko,[],function(m){return m.geometryType()}],id:[So,[],function(m){return m.id()}],zoom:[Zn,[],function(m){return m.globals.zoom}],"heatmap-density":[Zn,[],function(m){return m.globals.heatmapDensity||0}],"line-progress":[Zn,[],function(m){return m.globals.lineProgress||0}],accumulated:[So,[],function(m){return m.globals.accumulated===void 0?null:m.globals.accumulated}],"+":[Zn,ys(Zn),function(m,y){for(var I=0,U=0,J=y;U":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J>ne}],"filter-id->":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U>J}],"filter-<=":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J<=ne}],"filter-id-<=":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U<=J}],"filter->=":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J>=ne}],"filter-id->=":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U>=J}],"filter-has":[Co,[So],function(m,y){var I=y[0];return I.value in m.properties()}],"filter-has-id":[Co,[],function(m){return m.id()!==null&&m.id()!==void 0}],"filter-type-in":[Co,[Ql(ko)],function(m,y){var I=y[0];return I.value.indexOf(m.geometryType())>=0}],"filter-id-in":[Co,[Ql(So)],function(m,y){var I=y[0];return I.value.indexOf(m.id())>=0}],"filter-in-small":[Co,[ko,Ql(So)],function(m,y){var I=y[0],U=y[1];return U.value.indexOf(m.properties()[I.value])>=0}],"filter-in-large":[Co,[ko,Ql(So)],function(m,y){var I=y[0],U=y[1];return Qo(m.properties()[I.value],U.value,0,U.value.length-1)}],all:{type:Co,overloads:[[[Co,Co],function(m,y){var I=y[0],U=y[1];return I.evaluate(m)&&U.evaluate(m)}],[ys(Co),function(m,y){for(var I=0,U=y;I-1}function ia(m){return!!m.expression&&m.expression.interpolated}function Ka(m){return m instanceof Number?"number":m instanceof String?"string":m instanceof Boolean?"boolean":Array.isArray(m)?"array":m===null?"null":typeof m}function vs(m){return typeof m=="object"&&m!==null&&!Array.isArray(m)}function Ko(m){return m}function iu(m,y){var I=y.type==="color",U=m.stops&&typeof m.stops[0][0]=="object",J=U||m.property!==void 0,ne=U||!J,fe=m.type||(ia(y)?"exponential":"interval");if(I&&(m=Il({},m),m.stops&&(m.stops=m.stops.map(function($n){return[$n[0],ss.parse($n[1])]})),m.default?m.default=ss.parse(m.default):m.default=ss.parse(y.default)),m.colorSpace&&m.colorSpace!=="rgb"&&!Ph[m.colorSpace])throw new Error("Unknown color space: "+m.colorSpace);var Fe,Qe,st;if(fe==="exponential")Fe=bu;else if(fe==="interval")Fe=mf;else if(fe==="categorical"){Fe=ac,Qe=Object.create(null);for(var mt=0,Xt=m.stops;mt=m.stops[U-1][0])return m.stops[U-1][1];var J=ic(m.stops.map(function(ne){return ne[0]}),I);return m.stops[J][1]}function bu(m,y,I){var U=m.base!==void 0?m.base:1;if(Ka(I)!=="number")return Ru(m.default,y.default);var J=m.stops.length;if(J===1||I<=m.stops[0][0])return m.stops[0][1];if(I>=m.stops[J-1][0])return m.stops[J-1][1];var ne=ic(m.stops.map(function(Xt){return Xt[0]}),I),fe=Du(I,U,m.stops[ne][0],m.stops[ne+1][0]),Fe=m.stops[ne][1],Qe=m.stops[ne+1][1],st=Gu[y.type]||Ko;if(m.colorSpace&&m.colorSpace!=="rgb"){var mt=Ph[m.colorSpace];st=function(Xt,ur){return mt.reverse(mt.interpolate(mt.forward(Xt),mt.forward(ur),fe))}}return typeof Fe.evaluate=="function"?{evaluate:function(){for(var ur=[],nr=arguments.length;nr--;)ur[nr]=arguments[nr];var Lr=Fe.evaluate.apply(void 0,ur),Yr=Qe.evaluate.apply(void 0,ur);if(!(Lr===void 0||Yr===void 0))return st(Lr,Yr,fe)}}:st(Fe,Qe,fe)}function Kc(m,y,I){return y.type==="color"?I=ss.parse(I):y.type==="formatted"?I=Ul.fromString(I.toString()):y.type==="resolvedImage"?I=Js.fromString(I.toString()):Ka(I)!==y.type&&(y.type!=="enum"||!y.values[I])&&(I=void 0),Ru(I,m.default,y.default)}function Du(m,y,I,U){var J=U-I,ne=m-I;return J===0?0:y===1?ne/J:(Math.pow(y,ne)-1)/(Math.pow(y,J)-1)}var Dc=function(y,I){this.expression=y,this._warningHistory={},this._evaluator=new $o,this._defaultValue=I?ee(I):null,this._enumValues=I&&I.type==="enum"?I.values:null};Dc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._evaluator.globals=y,this._evaluator.feature=I,this._evaluator.featureState=U,this._evaluator.canonical=J,this._evaluator.availableImages=ne||null,this._evaluator.formattedSection=fe,this.expression.evaluate(this._evaluator)},Dc.prototype.evaluate=function(y,I,U,J,ne,fe){this._evaluator.globals=y,this._evaluator.feature=I||null,this._evaluator.featureState=U||null,this._evaluator.canonical=J,this._evaluator.availableImages=ne||null,this._evaluator.formattedSection=fe||null;try{var Fe=this.expression.evaluate(this._evaluator);if(Fe==null||typeof Fe=="number"&&Fe!==Fe)return this._defaultValue;if(this._enumValues&&!(Fe in this._enumValues))throw new Ms("Expected value to be one of "+Object.keys(this._enumValues).map(function(Qe){return JSON.stringify(Qe)}).join(", ")+", but found "+JSON.stringify(Fe)+" instead.");return Fe}catch(Qe){return this._warningHistory[Qe.message]||(this._warningHistory[Qe.message]=!0,typeof console!="undefined"&&console.warn(Qe.message)),this._defaultValue}};function Da(m){return Array.isArray(m)&&m.length>0&&typeof m[0]=="string"&&m[0]in Ua}function eo(m,y){var I=new fl(Ua,[],y?Q(y):void 0),U=I.parse(m,void 0,void 0,void 0,y&&y.type==="string"?{typeAnnotation:"coerce"}:void 0);return U?Bo(new Dc(U,y)):yl(I.errors)}var Jc=function(y,I){this.kind=y,this._styleExpression=I,this.isStateDependent=y!=="constant"&&!eu(I.expression)};Jc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._styleExpression.evaluateWithoutErrorHandling(y,I,U,J,ne,fe)},Jc.prototype.evaluate=function(y,I,U,J,ne,fe){return this._styleExpression.evaluate(y,I,U,J,ne,fe)};var yc=function(y,I,U,J){this.kind=y,this.zoomStops=U,this._styleExpression=I,this.isStateDependent=y!=="camera"&&!eu(I.expression),this.interpolationType=J};yc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._styleExpression.evaluateWithoutErrorHandling(y,I,U,J,ne,fe)},yc.prototype.evaluate=function(y,I,U,J,ne,fe){return this._styleExpression.evaluate(y,I,U,J,ne,fe)},yc.prototype.interpolationFactor=function(y,I,U){return this.interpolationType?Rl.interpolationFactor(this.interpolationType,y,I,U):0};function _c(m,y){if(m=eo(m,y),m.result==="error")return m;var I=m.value.expression,U=$h(I);if(!U&&!Gs(y))return yl([new Ks("","data expressions not supported")]);var J=Pu(I,["zoom"]);if(!J&&!Rs(y))return yl([new Ks("","zoom expressions not supported")]);var ne=B(I);if(!ne&&!J)return yl([new Ks("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(ne instanceof Ks)return yl([ne]);if(ne instanceof Rl&&!ia(y))return yl([new Ks("",'"interpolate" expressions cannot be used with this property')]);if(!ne)return Bo(U?new Jc("constant",m.value):new Jc("source",m.value));var fe=ne instanceof Rl?ne.interpolation:void 0;return Bo(U?new yc("camera",m.value,ne.labels,fe):new yc("composite",m.value,ne.labels,fe))}var le=function(y,I){this._parameters=y,this._specification=I,Il(this,iu(this._parameters,this._specification))};le.deserialize=function(y){return new le(y._parameters,y._specification)},le.serialize=function(y){return{_parameters:y._parameters,_specification:y._specification}};function w(m,y){if(vs(m))return new le(m,y);if(Da(m)){var I=_c(m,y);if(I.result==="error")throw new Error(I.value.map(function(J){return J.key+": "+J.message}).join(", "));return I.value}else{var U=m;return typeof m=="string"&&y.type==="color"&&(U=ss.parse(m)),{kind:"constant",evaluate:function(){return U}}}}function B(m){var y=null;if(m instanceof Rc)y=B(m.result);else if(m instanceof Wu)for(var I=0,U=m.args;IU.maximum?[new fa(y,I,I+" is greater than the maximum value "+U.maximum)]:[]}function it(m){var y=m.valueSpec,I=vo(m.value.type),U,J={},ne,fe,Fe=I!=="categorical"&&m.value.property===void 0,Qe=!Fe,st=Ka(m.value.stops)==="array"&&Ka(m.value.stops[0])==="array"&&Ka(m.value.stops[0][0])==="object",mt=se({key:m.key,value:m.value,valueSpec:m.styleSpec.function,style:m.style,styleSpec:m.styleSpec,objectElementValidators:{stops:Xt,default:Lr}});return I==="identity"&&Fe&&mt.push(new fa(m.key,m.value,'missing required property "property"')),I!=="identity"&&!m.value.stops&&mt.push(new fa(m.key,m.value,'missing required property "stops"')),I==="exponential"&&m.valueSpec.expression&&!ia(m.valueSpec)&&mt.push(new fa(m.key,m.value,"exponential functions not supported")),m.styleSpec.$version>=8&&(Qe&&!Gs(m.valueSpec)?mt.push(new fa(m.key,m.value,"property functions not supported")):Fe&&!Rs(m.valueSpec)&&mt.push(new fa(m.key,m.value,"zoom functions not supported"))),(I==="categorical"||st)&&m.value.property===void 0&&mt.push(new fa(m.key,m.value,'"property" property is required')),mt;function Xt(Yr){if(I==="identity")return[new fa(Yr.key,Yr.value,'identity function may not have a "stops" property')];var _i=[],si=Yr.value;return _i=_i.concat(qe({key:Yr.key,value:si,valueSpec:Yr.valueSpec,style:Yr.style,styleSpec:Yr.styleSpec,arrayElementValidator:ur})),Ka(si)==="array"&&si.length===0&&_i.push(new fa(Yr.key,si,"array must have at least one stop")),_i}function ur(Yr){var _i=[],si=Yr.value,Hi=Yr.key;if(Ka(si)!=="array")return[new fa(Hi,si,"array expected, "+Ka(si)+" found")];if(si.length!==2)return[new fa(Hi,si,"array length 2 expected, length "+si.length+" found")];if(st){if(Ka(si[0])!=="object")return[new fa(Hi,si,"object expected, "+Ka(si[0])+" found")];if(si[0].zoom===void 0)return[new fa(Hi,si,"object stop key must have zoom")];if(si[0].value===void 0)return[new fa(Hi,si,"object stop key must have value")];if(fe&&fe>vo(si[0].zoom))return[new fa(Hi,si[0].zoom,"stop zoom values must appear in ascending order")];vo(si[0].zoom)!==fe&&(fe=vo(si[0].zoom),ne=void 0,J={}),_i=_i.concat(se({key:Hi+"[0]",value:si[0],valueSpec:{zoom:{}},style:Yr.style,styleSpec:Yr.styleSpec,objectElementValidators:{zoom:je,value:nr}}))}else _i=_i.concat(nr({key:Hi+"[0]",value:si[0],valueSpec:{},style:Yr.style,styleSpec:Yr.styleSpec},si));return Da(Wl(si[1]))?_i.concat([new fa(Hi+"[1]",si[1],"expressions are not allowed in function stops.")]):_i.concat(Wa({key:Hi+"[1]",value:si[1],valueSpec:y,style:Yr.style,styleSpec:Yr.styleSpec}))}function nr(Yr,_i){var si=Ka(Yr.value),Hi=vo(Yr.value),Ei=Yr.value!==null?Yr.value:_i;if(!U)U=si;else if(si!==U)return[new fa(Yr.key,Ei,si+" stop domain type must match previous stop domain type "+U)];if(si!=="number"&&si!=="string"&&si!=="boolean")return[new fa(Yr.key,Ei,"stop domain value must be a number, string, or boolean")];if(si!=="number"&&I!=="categorical"){var Vi="number expected, "+si+" found";return Gs(y)&&I===void 0&&(Vi+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new fa(Yr.key,Ei,Vi)]}return I==="categorical"&&si==="number"&&(!isFinite(Hi)||Math.floor(Hi)!==Hi)?[new fa(Yr.key,Ei,"integer expected, found "+Hi)]:I!=="categorical"&&si==="number"&&ne!==void 0&&Hi=2&&m[1]!=="$id"&&m[1]!=="$type";case"in":return m.length>=3&&(typeof m[1]!="string"||Array.isArray(m[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return m.length!==3||Array.isArray(m[1])||Array.isArray(m[2]);case"any":case"all":for(var y=0,I=m.slice(1);yy?1:0}function Oe(m){if(!Array.isArray(m))return!1;if(m[0]==="within")return!0;for(var y=1;y"||y==="<="||y===">="?He(m[1],m[2],y):y==="any"?et(m.slice(1)):y==="all"?["all"].concat(m.slice(1).map(Je)):y==="none"?["all"].concat(m.slice(1).map(Je).map(Ut)):y==="in"?Mt(m[1],m.slice(2)):y==="!in"?Ut(Mt(m[1],m.slice(2))):y==="has"?Dt(m[1]):y==="!has"?Ut(Dt(m[1])):y==="within"?m:!0;return I}function He(m,y,I){switch(m){case"$type":return["filter-type-"+I,y];case"$id":return["filter-id-"+I,y];default:return["filter-"+I,m,y]}}function et(m){return["any"].concat(m.map(Je))}function Mt(m,y){if(y.length===0)return!1;switch(m){case"$type":return["filter-type-in",["literal",y]];case"$id":return["filter-id-in",["literal",y]];default:return y.length>200&&!y.some(function(I){return typeof I!=typeof y[0]})?["filter-in-large",m,["literal",y.sort(Pe)]]:["filter-in-small",m,["literal",y]]}}function Dt(m){switch(m){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",m]}}function Ut(m){return["!",m]}function tr(m){return Sr(Wl(m.value))?yt(Il({},m,{expressionContext:"filter",valueSpec:{value:"boolean"}})):mr(m)}function mr(m){var y=m.value,I=m.key;if(Ka(y)!=="array")return[new fa(I,y,"array expected, "+Ka(y)+" found")];var U=m.styleSpec,J,ne=[];if(y.length<1)return[new fa(I,y,"filter array must have at least 1 element")];switch(ne=ne.concat(hr({key:I+"[0]",value:y[0],valueSpec:U.filter_operator,style:m.style,styleSpec:m.styleSpec})),vo(y[0])){case"<":case"<=":case">":case">=":y.length>=2&&vo(y[1])==="$type"&&ne.push(new fa(I,y,'"$type" cannot be use with operator "'+y[0]+'"'));case"==":case"!=":y.length!==3&&ne.push(new fa(I,y,'filter array for operator "'+y[0]+'" must have 3 elements'));case"in":case"!in":y.length>=2&&(J=Ka(y[1]),J!=="string"&&ne.push(new fa(I+"[1]",y[1],"string expected, "+J+" found")));for(var fe=2;fe=mt[nr+0]&&U>=mt[nr+1])?(fe[ur]=!0,ne.push(st[ur])):fe[ur]=!1}}},nu.prototype._forEachCell=function(m,y,I,U,J,ne,fe,Fe){for(var Qe=this._convertToCellCoord(m),st=this._convertToCellCoord(y),mt=this._convertToCellCoord(I),Xt=this._convertToCellCoord(U),ur=Qe;ur<=mt;ur++)for(var nr=st;nr<=Xt;nr++){var Lr=this.d*nr+ur;if(!(Fe&&!Fe(this._convertFromCellCoord(ur),this._convertFromCellCoord(nr),this._convertFromCellCoord(ur+1),this._convertFromCellCoord(nr+1)))&&J.call(this,m,y,I,U,Lr,ne,fe,Fe))return}},nu.prototype._convertFromCellCoord=function(m){return(m-this.padding)/this.scale},nu.prototype._convertToCellCoord=function(m){return Math.max(0,Math.min(this.d-1,Math.floor(m*this.scale)+this.padding))},nu.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var m=this.cells,y=el+this.cells.length+1+1,I=0,U=0;U=0)){var Xt=m[mt];st[mt]=zl[Qe].shallow.indexOf(mt)>=0?Xt:Ue(Xt,y)}m instanceof Error&&(st.message=m.message)}if(st.$name)throw new Error("$name property is reserved for worker serialization logic.");return Qe!=="Object"&&(st.$name=Qe),st}throw new Error("can't serialize object of type "+typeof m)}function We(m){if(m==null||typeof m=="boolean"||typeof m=="number"||typeof m=="string"||m instanceof Boolean||m instanceof Number||m instanceof String||m instanceof Date||m instanceof RegExp||we(m)||Be(m)||ArrayBuffer.isView(m)||m instanceof zc)return m;if(Array.isArray(m))return m.map(We);if(typeof m=="object"){var y=m.$name||"Object",I=zl[y],U=I.klass;if(!U)throw new Error("can't deserialize unregistered class "+y);if(U.deserialize)return U.deserialize(m);for(var J=Object.create(U.prototype),ne=0,fe=Object.keys(m);ne=0?Qe:We(Qe)}}return J}throw new Error("can't deserialize object of type "+typeof m)}var wt=function(){this.first=!0};wt.prototype.update=function(y,I){var U=Math.floor(y);return this.first?(this.first=!1,this.lastIntegerZoom=U,this.lastIntegerZoomTime=0,this.lastZoom=y,this.lastFloorZoom=U,!0):(this.lastFloorZoom>U?(this.lastIntegerZoom=U+1,this.lastIntegerZoomTime=I):this.lastFloorZoom=128&&m<=255},Arabic:function(m){return m>=1536&&m<=1791},"Arabic Supplement":function(m){return m>=1872&&m<=1919},"Arabic Extended-A":function(m){return m>=2208&&m<=2303},"Hangul Jamo":function(m){return m>=4352&&m<=4607},"Unified Canadian Aboriginal Syllabics":function(m){return m>=5120&&m<=5759},Khmer:function(m){return m>=6016&&m<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(m){return m>=6320&&m<=6399},"General Punctuation":function(m){return m>=8192&&m<=8303},"Letterlike Symbols":function(m){return m>=8448&&m<=8527},"Number Forms":function(m){return m>=8528&&m<=8591},"Miscellaneous Technical":function(m){return m>=8960&&m<=9215},"Control Pictures":function(m){return m>=9216&&m<=9279},"Optical Character Recognition":function(m){return m>=9280&&m<=9311},"Enclosed Alphanumerics":function(m){return m>=9312&&m<=9471},"Geometric Shapes":function(m){return m>=9632&&m<=9727},"Miscellaneous Symbols":function(m){return m>=9728&&m<=9983},"Miscellaneous Symbols and Arrows":function(m){return m>=11008&&m<=11263},"CJK Radicals Supplement":function(m){return m>=11904&&m<=12031},"Kangxi Radicals":function(m){return m>=12032&&m<=12255},"Ideographic Description Characters":function(m){return m>=12272&&m<=12287},"CJK Symbols and Punctuation":function(m){return m>=12288&&m<=12351},Hiragana:function(m){return m>=12352&&m<=12447},Katakana:function(m){return m>=12448&&m<=12543},Bopomofo:function(m){return m>=12544&&m<=12591},"Hangul Compatibility Jamo":function(m){return m>=12592&&m<=12687},Kanbun:function(m){return m>=12688&&m<=12703},"Bopomofo Extended":function(m){return m>=12704&&m<=12735},"CJK Strokes":function(m){return m>=12736&&m<=12783},"Katakana Phonetic Extensions":function(m){return m>=12784&&m<=12799},"Enclosed CJK Letters and Months":function(m){return m>=12800&&m<=13055},"CJK Compatibility":function(m){return m>=13056&&m<=13311},"CJK Unified Ideographs Extension A":function(m){return m>=13312&&m<=19903},"Yijing Hexagram Symbols":function(m){return m>=19904&&m<=19967},"CJK Unified Ideographs":function(m){return m>=19968&&m<=40959},"Yi Syllables":function(m){return m>=40960&&m<=42127},"Yi Radicals":function(m){return m>=42128&&m<=42191},"Hangul Jamo Extended-A":function(m){return m>=43360&&m<=43391},"Hangul Syllables":function(m){return m>=44032&&m<=55215},"Hangul Jamo Extended-B":function(m){return m>=55216&&m<=55295},"Private Use Area":function(m){return m>=57344&&m<=63743},"CJK Compatibility Ideographs":function(m){return m>=63744&&m<=64255},"Arabic Presentation Forms-A":function(m){return m>=64336&&m<=65023},"Vertical Forms":function(m){return m>=65040&&m<=65055},"CJK Compatibility Forms":function(m){return m>=65072&&m<=65103},"Small Form Variants":function(m){return m>=65104&&m<=65135},"Arabic Presentation Forms-B":function(m){return m>=65136&&m<=65279},"Halfwidth and Fullwidth Forms":function(m){return m>=65280&&m<=65519}};function zt(m){for(var y=0,I=m;y=65097&&m<=65103)||tt["CJK Compatibility Ideographs"](m)||tt["CJK Compatibility"](m)||tt["CJK Radicals Supplement"](m)||tt["CJK Strokes"](m)||tt["CJK Symbols and Punctuation"](m)&&!(m>=12296&&m<=12305)&&!(m>=12308&&m<=12319)&&m!==12336||tt["CJK Unified Ideographs Extension A"](m)||tt["CJK Unified Ideographs"](m)||tt["Enclosed CJK Letters and Months"](m)||tt["Hangul Compatibility Jamo"](m)||tt["Hangul Jamo Extended-A"](m)||tt["Hangul Jamo Extended-B"](m)||tt["Hangul Jamo"](m)||tt["Hangul Syllables"](m)||tt.Hiragana(m)||tt["Ideographic Description Characters"](m)||tt.Kanbun(m)||tt["Kangxi Radicals"](m)||tt["Katakana Phonetic Extensions"](m)||tt.Katakana(m)&&m!==12540||tt["Halfwidth and Fullwidth Forms"](m)&&m!==65288&&m!==65289&&m!==65293&&!(m>=65306&&m<=65310)&&m!==65339&&m!==65341&&m!==65343&&!(m>=65371&&m<=65503)&&m!==65507&&!(m>=65512&&m<=65519)||tt["Small Form Variants"](m)&&!(m>=65112&&m<=65118)&&!(m>=65123&&m<=65126)||tt["Unified Canadian Aboriginal Syllabics"](m)||tt["Unified Canadian Aboriginal Syllabics Extended"](m)||tt["Vertical Forms"](m)||tt["Yijing Hexagram Symbols"](m)||tt["Yi Syllables"](m)||tt["Yi Radicals"](m))}function oi(m){return!!(tt["Latin-1 Supplement"](m)&&(m===167||m===169||m===174||m===177||m===188||m===189||m===190||m===215||m===247)||tt["General Punctuation"](m)&&(m===8214||m===8224||m===8225||m===8240||m===8241||m===8251||m===8252||m===8258||m===8263||m===8264||m===8265||m===8273)||tt["Letterlike Symbols"](m)||tt["Number Forms"](m)||tt["Miscellaneous Technical"](m)&&(m>=8960&&m<=8967||m>=8972&&m<=8991||m>=8996&&m<=9e3||m===9003||m>=9085&&m<=9114||m>=9150&&m<=9165||m===9167||m>=9169&&m<=9179||m>=9186&&m<=9215)||tt["Control Pictures"](m)&&m!==9251||tt["Optical Character Recognition"](m)||tt["Enclosed Alphanumerics"](m)||tt["Geometric Shapes"](m)||tt["Miscellaneous Symbols"](m)&&!(m>=9754&&m<=9759)||tt["Miscellaneous Symbols and Arrows"](m)&&(m>=11026&&m<=11055||m>=11088&&m<=11097||m>=11192&&m<=11243)||tt["CJK Symbols and Punctuation"](m)||tt.Katakana(m)||tt["Private Use Area"](m)||tt["CJK Compatibility Forms"](m)||tt["Small Form Variants"](m)||tt["Halfwidth and Fullwidth Forms"](m)||m===8734||m===8756||m===8757||m>=9984&&m<=10087||m>=10102&&m<=10131||m===65532||m===65533)}function ui(m){return!(Ir(m)||oi(m))}function qr(m){return tt.Arabic(m)||tt["Arabic Supplement"](m)||tt["Arabic Extended-A"](m)||tt["Arabic Presentation Forms-A"](m)||tt["Arabic Presentation Forms-B"](m)}function Kr(m){return m>=1424&&m<=2303||tt["Arabic Presentation Forms-A"](m)||tt["Arabic Presentation Forms-B"](m)}function ii(m,y){return!(!y&&Kr(m)||m>=2304&&m<=3583||m>=3840&&m<=4255||tt.Khmer(m))}function vi(m){for(var y=0,I=m;y-1&&(dn=Jr.error),un&&un(m)};function ga(){ya.fire(new jo("pluginStateChange",{pluginStatus:dn,pluginURL:En}))}var ya=new Sn,so=function(){return dn},wa=function(m){return m({pluginStatus:dn,pluginURL:En}),ya.on("pluginStateChange",m),m},io=function(m,y,I){if(I===void 0&&(I=!1),dn===Jr.deferred||dn===Jr.loading||dn===Jr.loaded)throw new Error("setRTLTextPlugin cannot be called multiple times.");En=nt.resolveURL(m),dn=Jr.deferred,un=y,ga(),I||Ss()},Ss=function(){if(dn!==Jr.deferred||!En)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");dn=Jr.loading,ga(),En&&Zr({url:En},function(m){m?Nn(m):(dn=Jr.loaded,ga())})},_s={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return dn===Jr.loaded||_s.applyArabicShaping!=null},isLoading:function(){return dn===Jr.loading},setState:function(y){dn=y.pluginStatus,En=y.pluginURL},isParsed:function(){return _s.applyArabicShaping!=null&&_s.processBidirectionalText!=null&&_s.processStyledBidirectionalText!=null},getPluginURL:function(){return En}},Ns=function(){!_s.isLoading()&&!_s.isLoaded()&&so()==="deferred"&&Ss()},pn=function(y,I){this.zoom=y,I?(this.now=I.now,this.fadeDuration=I.fadeDuration,this.zoomHistory=I.zoomHistory,this.transition=I.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new wt,this.transition={})};pn.prototype.isSupportedScript=function(y){return ci(y,_s.isLoaded())},pn.prototype.crossFadingFactor=function(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},pn.prototype.getCrossfadeParameters=function(){var y=this.zoom,I=y-Math.floor(y),U=this.crossFadingFactor();return y>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:I+(1-I)*U}:{fromScale:.5,toScale:1,t:1-(1-U)*I}};var za=function(y,I){this.property=y,this.value=I,this.expression=w(I===void 0?y.specification.default:I,y.specification)};za.prototype.isDataDriven=function(){return this.expression.kind==="source"||this.expression.kind==="composite"},za.prototype.possiblyEvaluate=function(y,I,U){return this.property.possiblyEvaluate(this,y,I,U)};var Lo=function(y){this.property=y,this.value=new za(y,void 0)};Lo.prototype.transitioned=function(y,I){return new js(this.property,this.value,I,_({},y.transition,this.transition),y.now)},Lo.prototype.untransitioned=function(){return new js(this.property,this.value,null,{},0)};var Fo=function(y){this._properties=y,this._values=Object.create(y.defaultTransitionablePropertyValues)};Fo.prototype.getValue=function(y){return G(this._values[y].value.value)},Fo.prototype.setValue=function(y,I){this._values.hasOwnProperty(y)||(this._values[y]=new Lo(this._values[y].property)),this._values[y].value=new za(this._values[y].property,I===null?void 0:G(I))},Fo.prototype.getTransition=function(y){return G(this._values[y].transition)},Fo.prototype.setTransition=function(y,I){this._values.hasOwnProperty(y)||(this._values[y]=new Lo(this._values[y].property)),this._values[y].transition=G(I)||void 0},Fo.prototype.serialize=function(){for(var y={},I=0,U=Object.keys(this._values);Ithis.end)return this.prior=null,ne;if(this.value.isDataDriven())return this.prior=null,ne;if(Jfe.zoomHistory.lastIntegerZoom?{from:U,to:J}:{from:ne,to:J}},y.prototype.interpolate=function(U){return U},y}(Er),wi=function(y){this.specification=y};wi.prototype.possiblyEvaluate=function(y,I,U,J){if(y.value!==void 0)if(y.expression.kind==="constant"){var ne=y.expression.evaluate(I,null,{},U,J);return this._calculate(ne,ne,ne,I)}else return this._calculate(y.expression.evaluate(new pn(Math.floor(I.zoom-1),I)),y.expression.evaluate(new pn(Math.floor(I.zoom),I)),y.expression.evaluate(new pn(Math.floor(I.zoom+1),I)),I)},wi.prototype._calculate=function(y,I,U,J){var ne=J.zoom;return ne>J.zoomHistory.lastIntegerZoom?{from:y,to:I}:{from:U,to:I}},wi.prototype.interpolate=function(y){return y};var Ui=function(y){this.specification=y};Ui.prototype.possiblyEvaluate=function(y,I,U,J){return!!y.expression.evaluate(I,null,{},U,J)},Ui.prototype.interpolate=function(){return!1};var Oi=function(y){this.properties=y,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(var I in y){var U=y[I];U.specification.overridable&&this.overridableProperties.push(I);var J=this.defaultPropertyValues[I]=new za(U,void 0),ne=this.defaultTransitionablePropertyValues[I]=new Lo(U);this.defaultTransitioningPropertyValues[I]=ne.untransitioned(),this.defaultPossiblyEvaluatedValues[I]=J.possiblyEvaluate({})}};Z("DataDrivenProperty",Er),Z("DataConstantProperty",At),Z("CrossFadedDataDrivenProperty",Wr),Z("CrossFadedProperty",wi),Z("ColorRampProperty",Ui);var Bi="-transition",cn=function(m){function y(I,U){if(m.call(this),this.id=I.id,this.type=I.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},I.type!=="custom"&&(I=I,this.metadata=I.metadata,this.minzoom=I.minzoom,this.maxzoom=I.maxzoom,I.type!=="background"&&(this.source=I.source,this.sourceLayer=I["source-layer"],this.filter=I.filter),U.layout&&(this._unevaluatedLayout=new fu(U.layout)),U.paint)){this._transitionablePaint=new Fo(U.paint);for(var J in I.paint)this.setPaintProperty(J,I.paint[J],{validate:!1});for(var ne in I.layout)this.setLayoutProperty(ne,I.layout[ne],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new xc(U.paint)}}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},y.prototype.getLayoutProperty=function(U){return U==="visibility"?this.visibility:this._unevaluatedLayout.getValue(U)},y.prototype.setLayoutProperty=function(U,J,ne){if(ne===void 0&&(ne={}),J!=null){var fe="layers."+this.id+".layout."+U;if(this._validate(Vl,fe,U,J,ne))return}if(U==="visibility"){this.visibility=J;return}this._unevaluatedLayout.setValue(U,J)},y.prototype.getPaintProperty=function(U){return V(U,Bi)?this._transitionablePaint.getTransition(U.slice(0,-Bi.length)):this._transitionablePaint.getValue(U)},y.prototype.setPaintProperty=function(U,J,ne){if(ne===void 0&&(ne={}),J!=null){var fe="layers."+this.id+".paint."+U;if(this._validate(_l,fe,U,J,ne))return!1}if(V(U,Bi))return this._transitionablePaint.setTransition(U.slice(0,-Bi.length),J||void 0),!1;var Fe=this._transitionablePaint._values[U],Qe=Fe.property.specification["property-type"]==="cross-faded-data-driven",st=Fe.value.isDataDriven(),mt=Fe.value;this._transitionablePaint.setValue(U,J),this._handleSpecialPaintPropertyUpdate(U);var Xt=this._transitionablePaint._values[U].value,ur=Xt.isDataDriven();return ur||st||Qe||this._handleOverridablePaintPropertyUpdate(U,mt,Xt)},y.prototype._handleSpecialPaintPropertyUpdate=function(U){},y.prototype._handleOverridablePaintPropertyUpdate=function(U,J,ne){return!1},y.prototype.isHidden=function(U){return this.minzoom&&U=this.maxzoom?!0:this.visibility==="none"},y.prototype.updateTransitions=function(U){this._transitioningPaint=this._transitionablePaint.transitioned(U,this._transitioningPaint)},y.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},y.prototype.recalculate=function(U,J){U.getCrossfadeParameters&&(this._crossfadeParameters=U.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(U,void 0,J)),this.paint=this._transitioningPaint.possiblyEvaluate(U,void 0,J)},y.prototype.serialize=function(){var U={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(U.layout=U.layout||{},U.layout.visibility=this.visibility),X(U,function(J,ne){return J!==void 0&&!(ne==="layout"&&!Object.keys(J).length)&&!(ne==="paint"&&!Object.keys(J).length)})},y.prototype._validate=function(U,J,ne,fe,Fe){return Fe===void 0&&(Fe={}),Fe&&Fe.validate===!1?!1:Zu(this,U.call(yo,{key:J,layerType:this.type,objectKey:ne,value:fe,styleSpec:on,style:{glyphs:!0,sprite:!0}}))},y.prototype.is3D=function(){return!1},y.prototype.isTileClipped=function(){return!1},y.prototype.hasOffscreenPass=function(){return!1},y.prototype.resize=function(){},y.prototype.isStateDependent=function(){for(var U in this.paint._values){var J=this.paint.get(U);if(!(!(J instanceof dl)||!Gs(J.property.specification))&&(J.value.kind==="source"||J.value.kind==="composite")&&J.value.isStateDependent)return!0}return!1},y}(Sn),On={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Bn=function(y,I){this._structArray=y,this._pos1=I*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},yn=128,to=5,Rn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};Rn.serialize=function(y,I){return y._trim(),I&&(y.isTransferred=!0,I.push(y.arrayBuffer)),{length:y.length,arrayBuffer:y.arrayBuffer}},Rn.deserialize=function(y){var I=Object.create(this.prototype);return I.arrayBuffer=y.arrayBuffer,I.length=y.length,I.capacity=y.arrayBuffer.byteLength/I.bytesPerElement,I._refreshViews(),I},Rn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Rn.prototype.clear=function(){this.length=0},Rn.prototype.resize=function(y){this.reserve(y),this.length=y},Rn.prototype.reserve=function(y){if(y>this.capacity){this.capacity=Math.max(y,Math.floor(this.capacity*to),yn),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var I=this.uint8;this._refreshViews(),I&&this.uint8.set(I)}},Rn.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};function Dn(m,y){y===void 0&&(y=1);var I=0,U=0,J=m.map(function(fe){var Fe=fn(fe.type),Qe=I=Ai(I,Math.max(y,Fe)),st=fe.components||1;return U=Math.max(U,Fe),I+=Fe*st,{name:fe.name,type:fe.type,components:st,offset:Qe}}),ne=Ai(I,Math.max(U,y));return{members:J,size:ne,alignment:y}}function fn(m){return On[m].BYTES_PER_ELEMENT}function Ai(m,y){return Math.ceil(m/y)*y}var ji=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.int16[fe+0]=J,this.int16[fe+1]=ne,U},y}(Rn);ji.prototype.bytesPerElement=4,Z("StructArrayLayout2i4",ji);var Ln=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*4;return this.int16[Qe+0]=J,this.int16[Qe+1]=ne,this.int16[Qe+2]=fe,this.int16[Qe+3]=Fe,U},y}(Rn);Ln.prototype.bytesPerElement=8,Z("StructArrayLayout4i8",Ln);var Un=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*6;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.int16[mt+2]=fe,this.int16[mt+3]=Fe,this.int16[mt+4]=Qe,this.int16[mt+5]=st,U},y}(Rn);Un.prototype.bytesPerElement=12,Z("StructArrayLayout2i4i12",Un);var gn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*4,Xt=U*8;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.uint8[Xt+4]=fe,this.uint8[Xt+5]=Fe,this.uint8[Xt+6]=Qe,this.uint8[Xt+7]=st,U},y}(Rn);gn.prototype.bytesPerElement=8,Z("StructArrayLayout2i4ub8",gn);var ca=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.float32[fe+0]=J,this.float32[fe+1]=ne,U},y}(Rn);ca.prototype.bytesPerElement=8,Z("StructArrayLayout2f8",ca);var Kn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur){var nr=this.length;return this.resize(nr+1),this.emplace(nr,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr){var Lr=U*10;return this.uint16[Lr+0]=J,this.uint16[Lr+1]=ne,this.uint16[Lr+2]=fe,this.uint16[Lr+3]=Fe,this.uint16[Lr+4]=Qe,this.uint16[Lr+5]=st,this.uint16[Lr+6]=mt,this.uint16[Lr+7]=Xt,this.uint16[Lr+8]=ur,this.uint16[Lr+9]=nr,U},y}(Rn);Kn.prototype.bytesPerElement=20,Z("StructArrayLayout10ui20",Kn);var Za=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr){var Yr=this.length;return this.resize(Yr+1),this.emplace(Yr,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr){var _i=U*12;return this.int16[_i+0]=J,this.int16[_i+1]=ne,this.int16[_i+2]=fe,this.int16[_i+3]=Fe,this.uint16[_i+4]=Qe,this.uint16[_i+5]=st,this.uint16[_i+6]=mt,this.uint16[_i+7]=Xt,this.int16[_i+8]=ur,this.int16[_i+9]=nr,this.int16[_i+10]=Lr,this.int16[_i+11]=Yr,U},y}(Rn);Za.prototype.bytesPerElement=24,Z("StructArrayLayout4i4ui4i24",Za);var wn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.float32[Fe+0]=J,this.float32[Fe+1]=ne,this.float32[Fe+2]=fe,U},y}(Rn);wn.prototype.bytesPerElement=12,Z("StructArrayLayout3f12",wn);var vn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.uint32[ne+0]=J,U},y}(Rn);vn.prototype.bytesPerElement=4,Z("StructArrayLayout1ul4",vn);var Aa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt){var ur=this.length;return this.resize(ur+1),this.emplace(ur,U,J,ne,fe,Fe,Qe,st,mt,Xt)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur){var nr=U*10,Lr=U*5;return this.int16[nr+0]=J,this.int16[nr+1]=ne,this.int16[nr+2]=fe,this.int16[nr+3]=Fe,this.int16[nr+4]=Qe,this.int16[nr+5]=st,this.uint32[Lr+3]=mt,this.uint16[nr+8]=Xt,this.uint16[nr+9]=ur,U},y}(Rn);Aa.prototype.bytesPerElement=20,Z("StructArrayLayout6i1ul2ui20",Aa);var aa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*6;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.int16[mt+2]=fe,this.int16[mt+3]=Fe,this.int16[mt+4]=Qe,this.int16[mt+5]=st,U},y}(Rn);aa.prototype.bytesPerElement=12,Z("StructArrayLayout2i2i2i12",aa);var Xn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe){var Qe=this.length;return this.resize(Qe+1),this.emplace(Qe,U,J,ne,fe,Fe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe){var st=U*4,mt=U*8;return this.float32[st+0]=J,this.float32[st+1]=ne,this.float32[st+2]=fe,this.int16[mt+6]=Fe,this.int16[mt+7]=Qe,U},y}(Rn);Xn.prototype.bytesPerElement=16,Z("StructArrayLayout2f1f2i16",Xn);var Vn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*12,st=U*3;return this.uint8[Qe+0]=J,this.uint8[Qe+1]=ne,this.float32[st+1]=fe,this.float32[st+2]=Fe,U},y}(Rn);Vn.prototype.bytesPerElement=12,Z("StructArrayLayout2ub2f12",Vn);var ma=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.uint16[Fe+0]=J,this.uint16[Fe+1]=ne,this.uint16[Fe+2]=fe,U},y}(Rn);ma.prototype.bytesPerElement=6,Z("StructArrayLayout3ui6",ma);var ro=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei){var Vi=this.length;return this.resize(Vi+1),this.emplace(Vi,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi){var en=U*24,An=U*12,ra=U*48;return this.int16[en+0]=J,this.int16[en+1]=ne,this.uint16[en+2]=fe,this.uint16[en+3]=Fe,this.uint32[An+2]=Qe,this.uint32[An+3]=st,this.uint32[An+4]=mt,this.uint16[en+10]=Xt,this.uint16[en+11]=ur,this.uint16[en+12]=nr,this.float32[An+7]=Lr,this.float32[An+8]=Yr,this.uint8[ra+36]=_i,this.uint8[ra+37]=si,this.uint8[ra+38]=Hi,this.uint32[An+10]=Ei,this.int16[en+22]=Vi,U},y}(Rn);ro.prototype.bytesPerElement=48,Z("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",ro);var Ao=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja){var us=this.length;return this.resize(us+1),this.emplace(us,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja,us){var zo=U*34,rl=U*17;return this.int16[zo+0]=J,this.int16[zo+1]=ne,this.int16[zo+2]=fe,this.int16[zo+3]=Fe,this.int16[zo+4]=Qe,this.int16[zo+5]=st,this.int16[zo+6]=mt,this.int16[zo+7]=Xt,this.uint16[zo+8]=ur,this.uint16[zo+9]=nr,this.uint16[zo+10]=Lr,this.uint16[zo+11]=Yr,this.uint16[zo+12]=_i,this.uint16[zo+13]=si,this.uint16[zo+14]=Hi,this.uint16[zo+15]=Ei,this.uint16[zo+16]=Vi,this.uint16[zo+17]=en,this.uint16[zo+18]=An,this.uint16[zo+19]=ra,this.uint16[zo+20]=$n,this.uint16[zo+21]=Ba,this.uint16[zo+22]=_a,this.uint32[rl+12]=Pa,this.float32[rl+13]=qo,this.float32[rl+14]=Na,this.float32[rl+15]=ja,this.float32[rl+16]=us,U},y}(Rn);Ao.prototype.bytesPerElement=68,Z("StructArrayLayout8i15ui1ul4f68",Ao);var Jn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.float32[ne+0]=J,U},y}(Rn);Jn.prototype.bytesPerElement=4,Z("StructArrayLayout1f4",Jn);var Oa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.int16[Fe+0]=J,this.int16[Fe+1]=ne,this.int16[Fe+2]=fe,U},y}(Rn);Oa.prototype.bytesPerElement=6,Z("StructArrayLayout3i6",Oa);var _o=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*2,Qe=U*4;return this.uint32[Fe+0]=J,this.uint16[Qe+2]=ne,this.uint16[Qe+3]=fe,U},y}(Rn);_o.prototype.bytesPerElement=8,Z("StructArrayLayout1ul2ui8",_o);var Po=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.uint16[fe+0]=J,this.uint16[fe+1]=ne,U},y}(Rn);Po.prototype.bytesPerElement=4,Z("StructArrayLayout2ui4",Po);var Jo=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.uint16[ne+0]=J,U},y}(Rn);Jo.prototype.bytesPerElement=2,Z("StructArrayLayout1ui2",Jo);var Xl=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*4;return this.float32[Qe+0]=J,this.float32[Qe+1]=ne,this.float32[Qe+2]=fe,this.float32[Qe+3]=Fe,U},y}(Rn);Xl.prototype.bytesPerElement=16,Z("StructArrayLayout4f16",Xl);var $c=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return I.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},I.x1.get=function(){return this._structArray.int16[this._pos2+2]},I.y1.get=function(){return this._structArray.int16[this._pos2+3]},I.x2.get=function(){return this._structArray.int16[this._pos2+4]},I.y2.get=function(){return this._structArray.int16[this._pos2+5]},I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.anchorPoint.get=function(){return new u(this.anchorPointX,this.anchorPointY)},Object.defineProperties(y.prototype,I),y}(Bn);$c.prototype.size=20;var xs=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new $c(this,U)},y}(Aa);Z("CollisionBoxArray",xs);var Qc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},I.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},I.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},I.segment.get=function(){return this._structArray.uint16[this._pos2+10]},I.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},I.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},I.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},I.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},I.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},I.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},I.placedOrientation.set=function(U){this._structArray.uint8[this._pos1+37]=U},I.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},I.hidden.set=function(U){this._structArray.uint8[this._pos1+38]=U},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+10]=U},I.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(y.prototype,I),y}(Bn);Qc.prototype.size=48;var El=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new Qc(this,U)},y}(ro);Z("PlacedSymbolArray",El);var bc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},I.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},I.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},I.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},I.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},I.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},I.key.get=function(){return this._structArray.uint16[this._pos2+8]},I.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},I.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},I.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},I.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},I.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},I.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},I.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},I.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},I.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},I.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},I.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},I.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},I.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+12]=U},I.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},I.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},I.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},I.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(y.prototype,I),y}(Bn);bc.prototype.size=68;var wc=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new bc(this,U)},y}(Ao);Z("SymbolInstanceArray",wc);var yf=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getoffsetX=function(U){return this.float32[U*1+0]},y}(Jn);Z("GlyphOffsetArray",yf);var Hl=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getx=function(U){return this.int16[U*3+0]},y.prototype.gety=function(U){return this.int16[U*3+1]},y.prototype.gettileUnitDistanceFromAnchor=function(U){return this.int16[U*3+2]},y}(Oa);Z("SymbolLineVertexArray",Hl);var Fc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(y.prototype,I),y}(Bn);Fc.prototype.size=8;var ef=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new Fc(this,U)},y}(_o);Z("FeatureIndexArray",ef);var ls=Dn([{name:"a_pos",components:2,type:"Int16"}],4),_f=ls.members,ns=function(y){y===void 0&&(y=[]),this.segments=y};ns.prototype.prepareSegment=function(y,I,U,J){var ne=this.segments[this.segments.length-1];return y>ns.MAX_VERTEX_ARRAY_LENGTH&&re("Max vertices per segment is "+ns.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+y),(!ne||ne.vertexLength+y>ns.MAX_VERTEX_ARRAY_LENGTH||ne.sortKey!==J)&&(ne={vertexOffset:I.length,primitiveOffset:U.length,vertexLength:0,primitiveLength:0},J!==void 0&&(ne.sortKey=J),this.segments.push(ne)),ne},ns.prototype.get=function(){return this.segments},ns.prototype.destroy=function(){for(var y=0,I=this.segments;y>>16)*Qe&65535)<<16)&4294967295,mt=mt<<15|mt>>>17,mt=(mt&65535)*st+(((mt>>>16)*st&65535)<<16)&4294967295,fe^=mt,fe=fe<<13|fe>>>19,Fe=(fe&65535)*5+(((fe>>>16)*5&65535)<<16)&4294967295,fe=(Fe&65535)+27492+(((Fe>>>16)+58964&65535)<<16);switch(mt=0,J){case 3:mt^=(I.charCodeAt(Xt+2)&255)<<16;case 2:mt^=(I.charCodeAt(Xt+1)&255)<<8;case 1:mt^=I.charCodeAt(Xt)&255,mt=(mt&65535)*Qe+(((mt>>>16)*Qe&65535)<<16)&4294967295,mt=mt<<15|mt>>>17,mt=(mt&65535)*st+(((mt>>>16)*st&65535)<<16)&4294967295,fe^=mt}return fe^=I.length,fe^=fe>>>16,fe=(fe&65535)*2246822507+(((fe>>>16)*2246822507&65535)<<16)&4294967295,fe^=fe>>>13,fe=(fe&65535)*3266489909+(((fe>>>16)*3266489909&65535)<<16)&4294967295,fe^=fe>>>16,fe>>>0}m.exports=y}),O=a(function(m){function y(I,U){for(var J=I.length,ne=U^J,fe=0,Fe;J>=4;)Fe=I.charCodeAt(fe)&255|(I.charCodeAt(++fe)&255)<<8|(I.charCodeAt(++fe)&255)<<16|(I.charCodeAt(++fe)&255)<<24,Fe=(Fe&65535)*1540483477+(((Fe>>>16)*1540483477&65535)<<16),Fe^=Fe>>>24,Fe=(Fe&65535)*1540483477+(((Fe>>>16)*1540483477&65535)<<16),ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16)^Fe,J-=4,++fe;switch(J){case 3:ne^=(I.charCodeAt(fe+2)&255)<<16;case 2:ne^=(I.charCodeAt(fe+1)&255)<<8;case 1:ne^=I.charCodeAt(fe)&255,ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16)}return ne^=ne>>>13,ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16),ne^=ne>>>15,ne>>>0}m.exports=y}),$=K,pe=K,de=O;$.murmur3=pe,$.murmur2=de;var Ie=function(){this.ids=[],this.positions=[],this.indexed=!1};Ie.prototype.add=function(y,I,U,J){this.ids.push(pt(y)),this.positions.push(I,U,J)},Ie.prototype.getPositions=function(y){for(var I=pt(y),U=0,J=this.ids.length-1;U>1;this.ids[ne]>=I?J=ne:U=ne+1}for(var fe=[];this.ids[U]===I;){var Fe=this.positions[3*U],Qe=this.positions[3*U+1],st=this.positions[3*U+2];fe.push({index:Fe,start:Qe,end:st}),U++}return fe},Ie.serialize=function(y,I){var U=new Float64Array(y.ids),J=new Uint32Array(y.positions);return Kt(U,J,0,U.length-1),I&&I.push(U.buffer,J.buffer),{ids:U,positions:J}},Ie.deserialize=function(y){var I=new Ie;return I.ids=y.ids,I.positions=y.positions,I.indexed=!0,I};var $e=Math.pow(2,53)-1;function pt(m){var y=+m;return!isNaN(y)&&y<=$e?y:$(String(m))}function Kt(m,y,I,U){for(;I>1],ne=I-1,fe=U+1;;){do ne++;while(m[ne]J);if(ne>=fe)break;ir(m,ne,fe),ir(y,3*ne,3*fe),ir(y,3*ne+1,3*fe+1),ir(y,3*ne+2,3*fe+2)}fe-Ife.x+1||Qefe.y+1)&&re("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return I}function No(m,y){return{type:m.type,id:m.id,properties:m.properties,geometry:y?da(m):[]}}function Do(m,y,I,U,J){m.emplaceBack(y*2+(U+1)/2,I*2+(J+1)/2)}var ps=function(y){this.zoom=y.zoom,this.overscaling=y.overscaling,this.layers=y.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=y.index,this.hasPattern=!1,this.layoutVertexArray=new ji,this.indexArray=new ma,this.segments=new ns,this.programConfigurations=new Ri(y.layers,y.zoom),this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};ps.prototype.populate=function(y,I,U){var J=this.layers[0],ne=[],fe=null;J.type==="circle"&&(fe=J.layout.get("circle-sort-key"));for(var Fe=0,Qe=y;Fe=rn||ur<0||ur>=rn)){var nr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,y.sortKey),Lr=nr.vertexLength;Do(this.layoutVertexArray,Xt,ur,-1,-1),Do(this.layoutVertexArray,Xt,ur,1,-1),Do(this.layoutVertexArray,Xt,ur,1,1),Do(this.layoutVertexArray,Xt,ur,-1,1),this.indexArray.emplaceBack(Lr,Lr+1,Lr+2),this.indexArray.emplaceBack(Lr,Lr+3,Lr+2),nr.vertexLength+=4,nr.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,y,U,{},J)},Z("CircleBucket",ps,{omit:["layers"]});function fo(m,y){for(var I=0;I=3){for(var ne=0;ne1){if(Ev(m,y))return!0;for(var U=0;U1?m.distSqr(I):m.distSqr(I.sub(y)._mult(J)._add(y))}function vp(m,y){for(var I=!1,U,J,ne,fe=0;fey.y!=ne.y>y.y&&y.x<(ne.x-J.x)*(y.y-J.y)/(ne.y-J.y)+J.x&&(I=!I)}return I}function _d(m,y){for(var I=!1,U=0,J=m.length-1;Uy.y!=fe.y>y.y&&y.x<(fe.x-ne.x)*(y.y-ne.y)/(fe.y-ne.y)+ne.x&&(I=!I)}return I}function pp(m,y,I,U,J){for(var ne=0,fe=m;ne=Fe.x&&J>=Fe.y)return!0}var Qe=[new u(y,I),new u(y,J),new u(U,J),new u(U,I)];if(m.length>2)for(var st=0,mt=Qe;stJ.x&&y.x>J.x||m.yJ.y&&y.y>J.y)return!1;var ne=ae(m,y,I[0]);return ne!==ae(m,y,I[1])||ne!==ae(m,y,I[2])||ne!==ae(m,y,I[3])}function xd(m,y,I){var U=y.paint.get(m).value;return U.kind==="constant"?U.value:I.programConfigurations.get(y.id).getMaxValue(m)}function kv(m){return Math.sqrt(m[0]*m[0]+m[1]*m[1])}function Kv(m,y,I,U,J){if(!y[0]&&!y[1])return m;var ne=u.convert(y)._mult(J);I==="viewport"&&ne._rotate(-U);for(var fe=[],Fe=0;Fe0&&(ne=1/Math.sqrt(ne)),m[0]=y[0]*ne,m[1]=y[1]*ne,m[2]=y[2]*ne,m}function L9(m,y){return m[0]*y[0]+m[1]*y[1]+m[2]*y[2]}function P9(m,y,I){var U=y[0],J=y[1],ne=y[2],fe=I[0],Fe=I[1],Qe=I[2];return m[0]=J*Qe-ne*Fe,m[1]=ne*fe-U*Qe,m[2]=U*Fe-J*fe,m}function I9(m,y,I){var U=y[0],J=y[1],ne=y[2];return m[0]=U*I[0]+J*I[3]+ne*I[6],m[1]=U*I[1]+J*I[4]+ne*I[7],m[2]=U*I[2]+J*I[5]+ne*I[8],m}var R9=om,pQ=function(){var m=am();return function(y,I,U,J,ne,fe){var Fe,Qe;for(I||(I=3),U||(U=0),J?Qe=Math.min(J*I+U,y.length):Qe=y.length,Fe=U;Fem.width||J.height>m.height||I.x>m.width-J.width||I.y>m.height-J.height)throw new RangeError("out of range source coordinates for image copy");if(J.width>y.width||J.height>y.height||U.x>y.width-J.width||U.y>y.height-J.height)throw new RangeError("out of range destination coordinates for image copy");for(var fe=m.data,Fe=y.data,Qe=0;Qe80*I){Fe=st=m[0],Qe=mt=m[1];for(var Lr=I;Lrst&&(st=Xt),ur>mt&&(mt=ur);nr=Math.max(st-Fe,mt-Qe),nr=nr!==0?1/nr:0}return Gx(ne,fe,I,Fe,Qe,nr),fe}function Iw(m,y,I,U,J){var ne,fe;if(J===cS(m,y,I,U)>0)for(ne=y;ne=y;ne-=U)fe=yC(ne,m[ne],m[ne+1],fe);return fe&&Wx(fe,fe.next)&&(Yx(fe),fe=fe.next),fe}function sm(m,y){if(!m)return m;y||(y=m);var I=m,U;do if(U=!1,!I.steiner&&(Wx(I,I.next)||tf(I.prev,I,I.next)===0)){if(Yx(I),I=y=I.prev,I===I.next)break;U=!0}else I=I.next;while(U||I!==y);return y}function Gx(m,y,I,U,J,ne,fe){if(m){!fe&&ne&&Rw(m,U,J,ne);for(var Fe=m,Qe,st;m.prev!==m.next;){if(Qe=m.prev,st=m.next,ne?pC(m,U,J,ne):vC(m)){y.push(Qe.i/I),y.push(m.i/I),y.push(st.i/I),Yx(m),m=st.next,Fe=st.next;continue}if(m=st,m===Fe){fe?fe===1?(m=jx(sm(m),y,I),Gx(m,y,I,U,J,ne,2)):fe===2&&v0(m,y,I,U,J,ne):Gx(sm(m),y,I,U,J,ne,1);break}}}}function vC(m){var y=m.prev,I=m,U=m.next;if(tf(y,I,U)>=0)return!1;for(var J=m.next.next;J!==m.prev;){if(um(y.x,y.y,I.x,I.y,U.x,U.y,J.x,J.y)&&tf(J.prev,J,J.next)>=0)return!1;J=J.next}return!0}function pC(m,y,I,U){var J=m.prev,ne=m,fe=m.next;if(tf(J,ne,fe)>=0)return!1;for(var Fe=J.xne.x?J.x>fe.x?J.x:fe.x:ne.x>fe.x?ne.x:fe.x,mt=J.y>ne.y?J.y>fe.y?J.y:fe.y:ne.y>fe.y?ne.y:fe.y,Xt=oS(Fe,Qe,y,I,U),ur=oS(st,mt,y,I,U),nr=m.prevZ,Lr=m.nextZ;nr&&nr.z>=Xt&&Lr&&Lr.z<=ur;){if(nr!==m.prev&&nr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,nr.x,nr.y)&&tf(nr.prev,nr,nr.next)>=0||(nr=nr.prevZ,Lr!==m.prev&&Lr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,Lr.x,Lr.y)&&tf(Lr.prev,Lr,Lr.next)>=0))return!1;Lr=Lr.nextZ}for(;nr&&nr.z>=Xt;){if(nr!==m.prev&&nr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,nr.x,nr.y)&&tf(nr.prev,nr,nr.next)>=0)return!1;nr=nr.prevZ}for(;Lr&&Lr.z<=ur;){if(Lr!==m.prev&&Lr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,Lr.x,Lr.y)&&tf(Lr.prev,Lr,Lr.next)>=0)return!1;Lr=Lr.nextZ}return!0}function jx(m,y,I){var U=m;do{var J=U.prev,ne=U.next.next;!Wx(J,ne)&&Dw(J,U,U.next,ne)&&Xx(J,ne)&&Xx(ne,J)&&(y.push(J.i/I),y.push(U.i/I),y.push(ne.i/I),Yx(U),Yx(U.next),U=m=ne),U=U.next}while(U!==m);return sm(U)}function v0(m,y,I,U,J,ne){var fe=m;do{for(var Fe=fe.next.next;Fe!==fe.prev;){if(fe.i!==Fe.i&&E1(fe,Fe)){var Qe=lS(fe,Fe);fe=sm(fe,fe.next),Qe=sm(Qe,Qe.next),Gx(fe,y,I,U,J,ne),Gx(Qe,y,I,U,J,ne);return}Fe=Fe.next}fe=fe.next}while(fe!==m)}function lm(m,y,I,U){var J=[],ne,fe,Fe,Qe,st;for(ne=0,fe=y.length;ne=I.next.y&&I.next.y!==I.y){var Fe=I.x+(J-I.y)*(I.next.x-I.x)/(I.next.y-I.y);if(Fe<=U&&Fe>ne){if(ne=Fe,Fe===U){if(J===I.y)return I;if(J===I.next.y)return I.next}fe=I.x=I.x&&I.x>=st&&U!==I.x&&um(Jfe.x||I.x===fe.x&&V9(fe,I)))&&(fe=I,Xt=ur)),I=I.next;while(I!==Qe);return fe}function V9(m,y){return tf(m.prev,m,y.prev)<0&&tf(y.next,m,m.next)<0}function Rw(m,y,I,U){var J=m;do J.z===null&&(J.z=oS(J.x,J.y,y,I,U)),J.prevZ=J.prev,J.nextZ=J.next,J=J.next;while(J!==m);J.prevZ.nextZ=null,J.prevZ=null,aS(J)}function aS(m){var y,I,U,J,ne,fe,Fe,Qe,st=1;do{for(I=m,m=null,ne=null,fe=0;I;){for(fe++,U=I,Fe=0,y=0;y0||Qe>0&&U;)Fe!==0&&(Qe===0||!U||I.z<=U.z)?(J=I,I=I.nextZ,Fe--):(J=U,U=U.nextZ,Qe--),ne?ne.nextZ=J:m=J,J.prevZ=ne,ne=J;I=U}ne.nextZ=null,st*=2}while(fe>1);return m}function oS(m,y,I,U,J){return m=32767*(m-I)*J,y=32767*(y-U)*J,m=(m|m<<8)&16711935,m=(m|m<<4)&252645135,m=(m|m<<2)&858993459,m=(m|m<<1)&1431655765,y=(y|y<<8)&16711935,y=(y|y<<4)&252645135,y=(y|y<<2)&858993459,y=(y|y<<1)&1431655765,m|y<<1}function sS(m){var y=m,I=m;do(y.x=0&&(m-fe)*(U-Fe)-(I-fe)*(y-Fe)>=0&&(I-fe)*(ne-Fe)-(J-fe)*(U-Fe)>=0}function E1(m,y){return m.next.i!==y.i&&m.prev.i!==y.i&&!mC(m,y)&&(Xx(m,y)&&Xx(y,m)&&H9(m,y)&&(tf(m.prev,m,y.prev)||tf(m,y.prev,y))||Wx(m,y)&&tf(m.prev,m,m.next)>0&&tf(y.prev,y,y.next)>0)}function tf(m,y,I){return(y.y-m.y)*(I.x-y.x)-(y.x-m.x)*(I.y-y.y)}function Wx(m,y){return m.x===y.x&&m.y===y.y}function Dw(m,y,I,U){var J=uy(tf(m,y,I)),ne=uy(tf(m,y,U)),fe=uy(tf(I,U,m)),Fe=uy(tf(I,U,y));return!!(J!==ne&&fe!==Fe||J===0&&Zx(m,I,y)||ne===0&&Zx(m,U,y)||fe===0&&Zx(I,m,U)||Fe===0&&Zx(I,y,U))}function Zx(m,y,I){return y.x<=Math.max(m.x,I.x)&&y.x>=Math.min(m.x,I.x)&&y.y<=Math.max(m.y,I.y)&&y.y>=Math.min(m.y,I.y)}function uy(m){return m>0?1:m<0?-1:0}function mC(m,y){var I=m;do{if(I.i!==m.i&&I.next.i!==m.i&&I.i!==y.i&&I.next.i!==y.i&&Dw(I,I.next,m,y))return!0;I=I.next}while(I!==m);return!1}function Xx(m,y){return tf(m.prev,m,m.next)<0?tf(m,y,m.next)>=0&&tf(m,m.prev,y)>=0:tf(m,y,m.prev)<0||tf(m,m.next,y)<0}function H9(m,y){var I=m,U=!1,J=(m.x+y.x)/2,ne=(m.y+y.y)/2;do I.y>ne!=I.next.y>ne&&I.next.y!==I.y&&J<(I.next.x-I.x)*(ne-I.y)/(I.next.y-I.y)+I.x&&(U=!U),I=I.next;while(I!==m);return U}function lS(m,y){var I=new uS(m.i,m.x,m.y),U=new uS(y.i,y.x,y.y),J=m.next,ne=y.prev;return m.next=y,y.prev=m,I.next=J,J.prev=I,U.next=I,I.prev=U,ne.next=U,U.prev=ne,U}function yC(m,y,I,U){var J=new uS(m,y,I);return U?(J.next=U.next,J.prev=U,U.next.prev=J,U.next=J):(J.prev=J,J.next=J),J}function Yx(m){m.next.prev=m.prev,m.prev.next=m.next,m.prevZ&&(m.prevZ.nextZ=m.nextZ),m.nextZ&&(m.nextZ.prevZ=m.prevZ)}function uS(m,y,I){this.i=m,this.x=y,this.y=I,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}M1.deviation=function(m,y,I,U){var J=y&&y.length,ne=J?y[0]*I:m.length,fe=Math.abs(cS(m,0,ne,I));if(J)for(var Fe=0,Qe=y.length;Fe0&&(U+=m[J-1].length,I.holes.push(U))}return I},Pw.default=dC;function fS(m,y,I,U,J){dg(m,y,I||0,U||m.length-1,J||_C)}function dg(m,y,I,U,J){for(;U>I;){if(U-I>600){var ne=U-I+1,fe=y-I+1,Fe=Math.log(ne),Qe=.5*Math.exp(2*Fe/3),st=.5*Math.sqrt(Fe*Qe*(ne-Qe)/ne)*(fe-ne/2<0?-1:1),mt=Math.max(I,Math.floor(y-fe*Qe/ne+st)),Xt=Math.min(U,Math.floor(y+(ne-fe)*Qe/ne+st));dg(m,y,mt,Xt,J)}var ur=m[y],nr=I,Lr=U;for(k1(m,I,y),J(m[U],ur)>0&&k1(m,I,U);nr0;)Lr--}J(m[I],ur)===0?k1(m,I,Lr):(Lr++,k1(m,Lr,U)),Lr<=y&&(I=Lr+1),y<=Lr&&(U=Lr-1)}}function k1(m,y,I){var U=m[y];m[y]=m[I],m[I]=U}function _C(m,y){return my?1:0}function zw(m,y){var I=m.length;if(I<=1)return[m];for(var U=[],J,ne,fe=0;fe1)for(var Qe=0;Qe>3}if(U--,I===1||I===2)J+=m.readSVarint(),ne+=m.readSVarint(),I===1&&(Fe&&fe.push(Fe),Fe=[]),Fe.push(new u(J,ne));else if(I===7)Fe&&Fe.push(Fe[0].clone());else throw new Error("unknown command "+I)}return Fe&&fe.push(Fe),fe},cy.prototype.bbox=function(){var m=this._pbf;m.pos=this._geometry;for(var y=m.readVarint()+m.pos,I=1,U=0,J=0,ne=0,fe=1/0,Fe=-1/0,Qe=1/0,st=-1/0;m.pos>3}if(U--,I===1||I===2)J+=m.readSVarint(),ne+=m.readSVarint(),JFe&&(Fe=J),nest&&(st=ne);else if(I!==7)throw new Error("unknown command "+I)}return[fe,Qe,Fe,st]},cy.prototype.toGeoJSON=function(m,y,I){var U=this.extent*Math.pow(2,I),J=this.extent*m,ne=this.extent*y,fe=this.loadGeometry(),Fe=cy.types[this.type],Qe,st;function mt(nr){for(var Lr=0;Lr>3;y=U===1?m.readString():U===2?m.readFloat():U===3?m.readDouble():U===4?m.readVarint64():U===5?m.readVarint():U===6?m.readSVarint():U===7?m.readBoolean():null}return y}vS.prototype.feature=function(m){if(m<0||m>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[m];var y=this._pbf.readVarint()+this._pbf.pos;return new dS(this._pbf,y,this.extent,this._keys,this._values)};var CC=j9;function j9(m,y){this.layers=m.readFields(W9,{},y)}function W9(m,y,I){if(m===3){var U=new vg(I,I.readVarint()+I.pos);U.length&&(y[U.name]=U)}}var LC=CC,C1=dS,PC=vg,pg={VectorTile:LC,VectorTileFeature:C1,VectorTileLayer:PC},IC=pg.VectorTileFeature.types,qw=500,L1=Math.pow(2,13);function cm(m,y,I,U,J,ne,fe,Fe){m.emplaceBack(y,I,Math.floor(U*L1)*2+fe,J*L1*2,ne*L1*2,Math.round(Fe))}var Hp=function(y){this.zoom=y.zoom,this.overscaling=y.overscaling,this.layers=y.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=y.index,this.hasPattern=!1,this.layoutVertexArray=new Un,this.indexArray=new ma,this.programConfigurations=new Ri(y.layers,y.zoom),this.segments=new ns,this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};Hp.prototype.populate=function(y,I,U){this.features=[],this.hasPattern=Fw("fill-extrusion",this.layers,I);for(var J=0,ne=y;J=1){var Vi=_i[Hi-1];if(!Z9(Ei,Vi)){nr.vertexLength+4>ns.MAX_VERTEX_ARRAY_LENGTH&&(nr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var en=Ei.sub(Vi)._perp()._unit(),An=Vi.dist(Ei);si+An>32768&&(si=0),cm(this.layoutVertexArray,Ei.x,Ei.y,en.x,en.y,0,0,si),cm(this.layoutVertexArray,Ei.x,Ei.y,en.x,en.y,0,1,si),si+=An,cm(this.layoutVertexArray,Vi.x,Vi.y,en.x,en.y,0,0,si),cm(this.layoutVertexArray,Vi.x,Vi.y,en.x,en.y,0,1,si);var ra=nr.vertexLength;this.indexArray.emplaceBack(ra,ra+2,ra+1),this.indexArray.emplaceBack(ra+1,ra+2,ra+3),nr.vertexLength+=4,nr.primitiveLength+=2}}}}if(nr.vertexLength+st>ns.MAX_VERTEX_ARRAY_LENGTH&&(nr=this.segments.prepareSegment(st,this.layoutVertexArray,this.indexArray)),IC[y.type]==="Polygon"){for(var $n=[],Ba=[],_a=nr.vertexLength,Pa=0,qo=Qe;Parn)||m.y===y.y&&(m.y<0||m.y>rn)}function X9(m){return m.every(function(y){return y.x<0})||m.every(function(y){return y.x>rn})||m.every(function(y){return y.y<0})||m.every(function(y){return y.y>rn})}var P1=new Oi({"fill-extrusion-opacity":new At(on["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Er(on["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new At(on["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new At(on["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Wr(on["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Er(on["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Er(on["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new At(on["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])}),ed={paint:P1},fm=function(m){function y(I){m.call(this,I,ed)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.createBucket=function(U){return new Hp(U)},y.prototype.queryRadius=function(){return kv(this.paint.get("fill-extrusion-translate"))},y.prototype.is3D=function(){return!0},y.prototype.queryIntersectsFeature=function(U,J,ne,fe,Fe,Qe,st,mt){var Xt=Kv(U,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),Qe.angle,st),ur=this.paint.get("fill-extrusion-height").evaluate(J,ne),nr=this.paint.get("fill-extrusion-base").evaluate(J,ne),Lr=Y9(Xt,mt,Qe,0),Yr=gS(fe,nr,ur,mt),_i=Yr[0],si=Yr[1];return RC(_i,si,Lr)},y}(cn);function fy(m,y){return m.x*y.x+m.y*y.y}function pS(m,y){if(m.length===1){for(var I=0,U=y[I++],J;!J||U.equals(J);)if(J=y[I++],!J)return 1/0;for(;I=2&&y[st-1].equals(y[st-2]);)st--;for(var mt=0;mt0;if($n&&Hi>mt){var _a=nr.dist(Lr);if(_a>2*Xt){var Pa=nr.sub(nr.sub(Lr)._mult(Xt/_a)._round());this.updateDistance(Lr,Pa),this.addCurrentVertex(Pa,_i,0,0,ur),Lr=Pa}}var qo=Lr&&Yr,Na=qo?U:Qe?"butt":J;if(qo&&Na==="round"&&(Anne&&(Na="bevel"),Na==="bevel"&&(An>2&&(Na="flipbevel"),An100)Ei=si.mult(-1);else{var ja=An*_i.add(si).mag()/_i.sub(si).mag();Ei._perp()._mult(ja*(Ba?-1:1))}this.addCurrentVertex(nr,Ei,0,0,ur),this.addCurrentVertex(nr,Ei.mult(-1),0,0,ur)}else if(Na==="bevel"||Na==="fakeround"){var us=-Math.sqrt(An*An-1),zo=Ba?us:0,rl=Ba?0:us;if(Lr&&this.addCurrentVertex(nr,_i,zo,rl,ur),Na==="fakeround")for(var ou=Math.round(ra*180/Math.PI/yS),il=1;il2*Xt){var Zf=nr.add(Yr.sub(nr)._mult(Xt/qh)._round());this.updateDistance(nr,Zf),this.addCurrentVertex(Zf,si,0,0,ur),nr=Zf}}}}},Gf.prototype.addCurrentVertex=function(y,I,U,J,ne,fe){fe===void 0&&(fe=!1);var Fe=I.x+I.y*U,Qe=I.y-I.x*U,st=-I.x+I.y*J,mt=-I.y-I.x*J;this.addHalfVertex(y,Fe,Qe,fe,!1,U,ne),this.addHalfVertex(y,st,mt,fe,!0,-J,ne),this.distance>eb/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(y,I,U,J,ne,fe))},Gf.prototype.addHalfVertex=function(y,I,U,J,ne,fe,Fe){var Qe=y.x,st=y.y,mt=this.lineClips?this.scaledDistance*(eb-1):this.scaledDistance,Xt=mt*Bw;if(this.layoutVertexArray.emplaceBack((Qe<<1)+(J?1:0),(st<<1)+(ne?1:0),Math.round(Ow*I)+128,Math.round(Ow*U)+128,(fe===0?0:fe<0?-1:1)+1|(Xt&63)<<2,Xt>>6),this.lineClips){var ur=this.scaledDistance-this.lineClips.start,nr=this.lineClips.end-this.lineClips.start,Lr=ur/nr;this.layoutVertexArray2.emplaceBack(Lr,this.lineClipsArray.length)}var Yr=Fe.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Yr),Fe.primitiveLength++),ne?this.e2=Yr:this.e1=Yr},Gf.prototype.updateScaledDistance=function(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance},Gf.prototype.updateDistance=function(y,I){this.distance+=y.dist(I),this.updateScaledDistance()},Z("LineBucket",Gf,{omit:["layers","patternFeatures"]});var _S=new Oi({"line-cap":new At(on.layout_line["line-cap"]),"line-join":new Er(on.layout_line["line-join"]),"line-miter-limit":new At(on.layout_line["line-miter-limit"]),"line-round-limit":new At(on.layout_line["line-round-limit"]),"line-sort-key":new Er(on.layout_line["line-sort-key"])}),xS=new Oi({"line-opacity":new Er(on.paint_line["line-opacity"]),"line-color":new Er(on.paint_line["line-color"]),"line-translate":new At(on.paint_line["line-translate"]),"line-translate-anchor":new At(on.paint_line["line-translate-anchor"]),"line-width":new Er(on.paint_line["line-width"]),"line-gap-width":new Er(on.paint_line["line-gap-width"]),"line-offset":new Er(on.paint_line["line-offset"]),"line-blur":new Er(on.paint_line["line-blur"]),"line-dasharray":new wi(on.paint_line["line-dasharray"]),"line-pattern":new Wr(on.paint_line["line-pattern"]),"line-gradient":new Ui(on.paint_line["line-gradient"])}),Nw={paint:xS,layout:_S},J9=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.possiblyEvaluate=function(U,J){return J=new pn(Math.floor(J.zoom),{now:J.now,fadeDuration:J.fadeDuration,zoomHistory:J.zoomHistory,transition:J.transition}),m.prototype.possiblyEvaluate.call(this,U,J)},y.prototype.evaluate=function(U,J,ne,fe){return J=_({},J,{zoom:Math.floor(J.zoom)}),m.prototype.evaluate.call(this,U,J,ne,fe)},y}(Er),R=new J9(Nw.paint.properties["line-width"].specification);R.useIntegerZoom=!0;var S=function(m){function y(I){m.call(this,I,Nw),this.gradientVersion=0}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._handleSpecialPaintPropertyUpdate=function(U){if(U==="line-gradient"){var J=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=J._styleExpression.expression instanceof yu,this.gradientVersion=(this.gradientVersion+1)%d}},y.prototype.gradientExpression=function(){return this._transitionablePaint._values["line-gradient"].value.expression},y.prototype.recalculate=function(U,J){m.prototype.recalculate.call(this,U,J),this.paint._values["line-floorwidth"]=R.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,U)},y.prototype.createBucket=function(U){return new Gf(U)},y.prototype.queryRadius=function(U){var J=U,ne=D(xd("line-width",this,J),xd("line-gap-width",this,J)),fe=xd("line-offset",this,J);return ne/2+Math.abs(fe)+kv(this.paint.get("line-translate"))},y.prototype.queryIntersectsFeature=function(U,J,ne,fe,Fe,Qe,st){var mt=Kv(U,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),Qe.angle,st),Xt=st/2*D(this.paint.get("line-width").evaluate(J,ne),this.paint.get("line-gap-width").evaluate(J,ne)),ur=this.paint.get("line-offset").evaluate(J,ne);return ur&&(fe=j(fe,ur*st)),zu(mt,fe,Xt)},y.prototype.isTileClipped=function(){return!0},y}(cn);function D(m,y){return y>0?y+2*m:m}function j(m,y){for(var I=[],U=new u(0,0),J=0;J":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};function ki(m){for(var y="",I=0;I>1,mt=-7,Xt=I?J-1:0,ur=I?-1:1,nr=m[y+Xt];for(Xt+=ur,ne=nr&(1<<-mt)-1,nr>>=-mt,mt+=Fe;mt>0;ne=ne*256+m[y+Xt],Xt+=ur,mt-=8);for(fe=ne&(1<<-mt)-1,ne>>=-mt,mt+=U;mt>0;fe=fe*256+m[y+Xt],Xt+=ur,mt-=8);if(ne===0)ne=1-st;else{if(ne===Qe)return fe?NaN:(nr?-1:1)*(1/0);fe=fe+Math.pow(2,U),ne=ne-st}return(nr?-1:1)*fe*Math.pow(2,ne-U)},Va=function(m,y,I,U,J,ne){var fe,Fe,Qe,st=ne*8-J-1,mt=(1<>1,ur=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,nr=U?0:ne-1,Lr=U?1:-1,Yr=y<0||y===0&&1/y<0?1:0;for(y=Math.abs(y),isNaN(y)||y===1/0?(Fe=isNaN(y)?1:0,fe=mt):(fe=Math.floor(Math.log(y)/Math.LN2),y*(Qe=Math.pow(2,-fe))<1&&(fe--,Qe*=2),fe+Xt>=1?y+=ur/Qe:y+=ur*Math.pow(2,1-Xt),y*Qe>=2&&(fe++,Qe/=2),fe+Xt>=mt?(Fe=0,fe=mt):fe+Xt>=1?(Fe=(y*Qe-1)*Math.pow(2,J),fe=fe+Xt):(Fe=y*Math.pow(2,Xt-1)*Math.pow(2,J),fe=0));J>=8;m[I+nr]=Fe&255,nr+=Lr,Fe/=256,J-=8);for(fe=fe<0;m[I+nr]=fe&255,nr+=Lr,fe/=256,st-=8);m[I+nr-Lr]|=Yr*128},Io={read:ta,write:Va},La=Hn;function Hn(m){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(m)?m:new Uint8Array(m||0),this.pos=0,this.type=0,this.length=this.buf.length}Hn.Varint=0,Hn.Fixed64=1,Hn.Bytes=2,Hn.Fixed32=5;var lo=65536*65536,$a=1/lo,Xa=12,Tn=typeof TextDecoder=="undefined"?null:new TextDecoder("utf8");Hn.prototype={destroy:function(){this.buf=null},readFields:function(m,y,I){for(I=I||this.length;this.pos>3,ne=this.pos;this.type=U&7,m(J,y,this),this.pos===ne&&this.skip(U)}return y},readMessage:function(m,y){return this.readFields(m,y,this.readVarint()+this.pos)},readFixed32:function(){var m=Dh(this.buf,this.pos);return this.pos+=4,m},readSFixed32:function(){var m=Iv(this.buf,this.pos);return this.pos+=4,m},readFixed64:function(){var m=Dh(this.buf,this.pos)+Dh(this.buf,this.pos+4)*lo;return this.pos+=8,m},readSFixed64:function(){var m=Dh(this.buf,this.pos)+Iv(this.buf,this.pos+4)*lo;return this.pos+=8,m},readFloat:function(){var m=Io.read(this.buf,this.pos,!0,23,4);return this.pos+=4,m},readDouble:function(){var m=Io.read(this.buf,this.pos,!0,52,8);return this.pos+=8,m},readVarint:function(m){var y=this.buf,I,U;return U=y[this.pos++],I=U&127,U<128||(U=y[this.pos++],I|=(U&127)<<7,U<128)||(U=y[this.pos++],I|=(U&127)<<14,U<128)||(U=y[this.pos++],I|=(U&127)<<21,U<128)?I:(U=y[this.pos],I|=(U&15)<<28,bo(I,m,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var m=this.readVarint();return m%2===1?(m+1)/-2:m/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var m=this.readVarint()+this.pos,y=this.pos;return this.pos=m,m-y>=Xa&&Tn?Cl(this.buf,y,m):lv(this.buf,y,m)},readBytes:function(){var m=this.readVarint()+this.pos,y=this.buf.subarray(this.pos,m);return this.pos=m,y},readPackedVarint:function(m,y){if(this.type!==Hn.Bytes)return m.push(this.readVarint(y));var I=Ya(this);for(m=m||[];this.pos127;);else if(y===Hn.Bytes)this.pos=this.readVarint()+this.pos;else if(y===Hn.Fixed32)this.pos+=4;else if(y===Hn.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+y)},writeTag:function(m,y){this.writeVarint(m<<3|y)},realloc:function(m){for(var y=this.length||16;y268435455||m<0){wu(m,this);return}this.realloc(4),this.buf[this.pos++]=m&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=(m>>>=7)&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=(m>>>=7)&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=m>>>7&127)))},writeSVarint:function(m){this.writeVarint(m<0?-m*2-1:m*2)},writeBoolean:function(m){this.writeVarint(!!m)},writeString:function(m){m=String(m),this.realloc(m.length*4),this.pos++;var y=this.pos;this.pos=qu(this.buf,m,this.pos);var I=this.pos-y;I>=128&&$v(y,I,this),this.pos=y-1,this.writeVarint(I),this.pos+=I},writeFloat:function(m){this.realloc(4),Io.write(this.buf,m,this.pos,!0,23,4),this.pos+=4},writeDouble:function(m){this.realloc(8),Io.write(this.buf,m,this.pos,!0,52,8),this.pos+=8},writeBytes:function(m){var y=m.length;this.writeVarint(y),this.realloc(y);for(var I=0;I=128&&$v(I,U,this),this.pos=I-1,this.writeVarint(U),this.pos+=U},writeMessage:function(m,y,I){this.writeTag(m,Hn.Bytes),this.writeRawMessage(y,I)},writePackedVarint:function(m,y){y.length&&this.writeMessage(m,td,y)},writePackedSVarint:function(m,y){y.length&&this.writeMessage(m,ch,y)},writePackedBoolean:function(m,y){y.length&&this.writeMessage(m,Hd,y)},writePackedFloat:function(m,y){y.length&&this.writeMessage(m,Ud,y)},writePackedDouble:function(m,y){y.length&&this.writeMessage(m,Vd,y)},writePackedFixed32:function(m,y){y.length&&this.writeMessage(m,rf,y)},writePackedSFixed32:function(m,y){y.length&&this.writeMessage(m,fh,y)},writePackedFixed64:function(m,y){y.length&&this.writeMessage(m,Td,y)},writePackedSFixed64:function(m,y){y.length&&this.writeMessage(m,rd,y)},writeBytesField:function(m,y){this.writeTag(m,Hn.Bytes),this.writeBytes(y)},writeFixed32Field:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeFixed32(y)},writeSFixed32Field:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeSFixed32(y)},writeFixed64Field:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeFixed64(y)},writeSFixed64Field:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeSFixed64(y)},writeVarintField:function(m,y){this.writeTag(m,Hn.Varint),this.writeVarint(y)},writeSVarintField:function(m,y){this.writeTag(m,Hn.Varint),this.writeSVarint(y)},writeStringField:function(m,y){this.writeTag(m,Hn.Bytes),this.writeString(y)},writeFloatField:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeFloat(y)},writeDoubleField:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeDouble(y)},writeBooleanField:function(m,y){this.writeVarintField(m,!!y)}};function bo(m,y,I){var U=I.buf,J,ne;if(ne=U[I.pos++],J=(ne&112)>>4,ne<128||(ne=U[I.pos++],J|=(ne&127)<<3,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<10,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<17,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<24,ne<128)||(ne=U[I.pos++],J|=(ne&1)<<31,ne<128))return Uo(m,J,y);throw new Error("Expected varint not more than 10 bytes")}function Ya(m){return m.type===Hn.Bytes?m.readVarint()+m.pos:m.pos+1}function Uo(m,y,I){return I?y*4294967296+(m>>>0):(y>>>0)*4294967296+(m>>>0)}function wu(m,y){var I,U;if(m>=0?(I=m%4294967296|0,U=m/4294967296|0):(I=~(-m%4294967296),U=~(-m/4294967296),I^4294967295?I=I+1|0:(I=0,U=U+1|0)),m>=18446744073709552e3||m<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");y.realloc(10),hu(I,U,y),uh(U,y)}function hu(m,y,I){I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos]=m&127}function uh(m,y){var I=(m&7)<<4;y.buf[y.pos++]|=I|((m>>>=3)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127)))))}function $v(m,y,I){var U=y<=16383?1:y<=2097151?2:y<=268435455?3:Math.floor(Math.log(y)/(Math.LN2*7));I.realloc(U);for(var J=I.pos-1;J>=m;J--)I.buf[J+U]=I.buf[J]}function td(m,y){for(var I=0;I>>8,m[I+2]=y>>>16,m[I+3]=y>>>24}function Iv(m,y){return(m[y]|m[y+1]<<8|m[y+2]<<16)+(m[y+3]<<24)}function lv(m,y,I){for(var U="",J=y;J239?4:ne>223?3:ne>191?2:1;if(J+Fe>I)break;var Qe,st,mt;Fe===1?ne<128&&(fe=ne):Fe===2?(Qe=m[J+1],(Qe&192)===128&&(fe=(ne&31)<<6|Qe&63,fe<=127&&(fe=null))):Fe===3?(Qe=m[J+1],st=m[J+2],(Qe&192)===128&&(st&192)===128&&(fe=(ne&15)<<12|(Qe&63)<<6|st&63,(fe<=2047||fe>=55296&&fe<=57343)&&(fe=null))):Fe===4&&(Qe=m[J+1],st=m[J+2],mt=m[J+3],(Qe&192)===128&&(st&192)===128&&(mt&192)===128&&(fe=(ne&15)<<18|(Qe&63)<<12|(st&63)<<6|mt&63,(fe<=65535||fe>=1114112)&&(fe=null))),fe===null?(fe=65533,Fe=1):fe>65535&&(fe-=65536,U+=String.fromCharCode(fe>>>10&1023|55296),fe=56320|fe&1023),U+=String.fromCharCode(fe),J+=Fe}return U}function Cl(m,y,I){return Tn.decode(m.subarray(y,I))}function qu(m,y,I){for(var U=0,J,ne;U55295&&J<57344)if(ne)if(J<56320){m[I++]=239,m[I++]=191,m[I++]=189,ne=J;continue}else J=ne-55296<<10|J-56320|65536,ne=null;else{J>56319||U+1===y.length?(m[I++]=239,m[I++]=191,m[I++]=189):ne=J;continue}else ne&&(m[I++]=239,m[I++]=191,m[I++]=189,ne=null);J<128?m[I++]=J:(J<2048?m[I++]=J>>6|192:(J<65536?m[I++]=J>>12|224:(m[I++]=J>>18|240,m[I++]=J>>12&63|128),m[I++]=J>>6&63|128),m[I++]=J&63|128)}return I}var Tu=3;function Rv(m,y,I){m===1&&I.readMessage(qc,y)}function qc(m,y,I){if(m===3){var U=I.readMessage(I1,{}),J=U.id,ne=U.bitmap,fe=U.width,Fe=U.height,Qe=U.left,st=U.top,mt=U.advance;y.push({id:J,bitmap:new Pv({width:fe+2*Tu,height:Fe+2*Tu},ne),metrics:{width:fe,height:Fe,left:Qe,top:st,advance:mt}})}}function I1(m,y,I){m===1?y.id=I.readVarint():m===2?y.bitmap=I.readBytes():m===3?y.width=I.readVarint():m===4?y.height=I.readVarint():m===5?y.left=I.readSVarint():m===6?y.top=I.readSVarint():m===7&&(y.advance=I.readVarint())}function p0(m){return new La(m).readFields(Rv,[])}var Gp=Tu;function Qv(m){for(var y=0,I=0,U=0,J=m;U=0;nr--){var Lr=Fe[nr];if(!(ur.w>Lr.w||ur.h>Lr.h)){if(ur.x=Lr.x,ur.y=Lr.y,st=Math.max(st,ur.y+ur.h),Qe=Math.max(Qe,ur.x+ur.w),ur.w===Lr.w&&ur.h===Lr.h){var Yr=Fe.pop();nr=0&&J>=y&&m0[this.text.charCodeAt(J)];J--)U--;this.text=this.text.substring(y,U),this.sectionIndex=this.sectionIndex.slice(y,U)},zh.prototype.substring=function(y,I){var U=new zh;return U.text=this.text.substring(y,I),U.sectionIndex=this.sectionIndex.slice(y,I),U.sections=this.sections,U},zh.prototype.toString=function(){return this.text},zh.prototype.getMaxScale=function(){var y=this;return this.sectionIndex.reduce(function(I,U){return Math.max(I,y.sections[U].scale)},0)},zh.prototype.addTextSection=function(y,I){this.text+=y.text,this.sections.push(hy.forText(y.scale,y.fontStack||I));for(var U=this.sections.length-1,J=0;J=g0?null:++this.imageSectionID:(this.imageSectionID=Uw,this.imageSectionID)};function $9(m,y){for(var I=[],U=m.text,J=0,ne=0,fe=y;ne=0,mt=0,Xt=0;Xt0&&Zf>Ba&&(Ba=Zf)}else{var nl=I[Pa.fontStack],Ws=nl&&nl[Na];if(Ws&&Ws.rect)zo=Ws.rect,us=Ws.metrics;else{var Au=y[Pa.fontStack],Ou=Au&&Au[Na];if(!Ou)continue;us=Ou.metrics}ja=(en-Pa.scale)*Zi}il?(m.verticalizable=!0,$n.push({glyph:Na,imageName:rl,x:ur,y:nr+ja,vertical:il,scale:Pa.scale,fontStack:Pa.fontStack,sectionIndex:qo,metrics:us,rect:zo}),ur+=ou*Pa.scale+st):($n.push({glyph:Na,imageName:rl,x:ur,y:nr+ja,vertical:il,scale:Pa.scale,fontStack:Pa.fontStack,sectionIndex:qo,metrics:us,rect:zo}),ur+=us.advance*Pa.scale+st)}if($n.length!==0){var jd=ur-st;Lr=Math.max(jd,Lr),rq($n,0,$n.length-1,_i,Ba)}ur=0;var Wd=ne*en+Ba;ra.lineOffset=Math.max(Ba,An),nr+=Wd,Yr=Math.max(Wd,Yr),++si}var Oh=nr-R1,fv=wS(fe),hv=fv.horizontalAlign,hh=fv.verticalAlign;Ad(m.positionedLines,_i,hv,hh,Lr,Yr,ne,Oh,J.length),m.top+=-hh*Oh,m.bottom=m.top+Oh,m.left+=-hv*Lr,m.right=m.left+Lr}function rq(m,y,I,U,J){if(!(!U&&!J))for(var ne=m[I],fe=ne.metrics.advance*ne.scale,Fe=(m[I].x+fe)*U,Qe=y;Qe<=I;Qe++)m[Qe].x-=Fe,m[Qe].y+=J}function Ad(m,y,I,U,J,ne,fe,Fe,Qe){var st=(y-I)*J,mt=0;ne!==fe?mt=-Fe*U-R1:mt=(-U*Qe+.5)*fe;for(var Xt=0,ur=m;Xt-I/2;){if(fe--,fe<0)return!1;Fe-=m[fe].dist(ne),ne=m[fe]}Fe+=m[fe].dist(m[fe+1]),fe++;for(var Qe=[],st=0;FeU;)st-=Qe.shift().angleDelta;if(st>J)return!1;fe++,Fe+=Xt.dist(ur)}return!0}function xQ(m){for(var y=0,I=0;Ist){var Lr=(st-Qe)/nr,Yr=Qs(Xt.x,ur.x,Lr),_i=Qs(Xt.y,ur.y,Lr),si=new Gd(Yr,_i,ur.angleTo(Xt),mt);return si._round(),!fe||_Q(m,si,Fe,fe,y)?si:void 0}Qe+=nr}}function J$e(m,y,I,U,J,ne,fe,Fe,Qe){var st=bQ(U,ne,fe),mt=wQ(U,J),Xt=mt*fe,ur=m[0].x===0||m[0].x===Qe||m[0].y===0||m[0].y===Qe;y-Xt=0&&Vi=0&&en=0&&ur+st<=mt){var An=new Gd(Vi,en,Hi,Lr);An._round(),(!U||_Q(m,An,ne,U,J))&&nr.push(An)}}Xt+=si}return!Fe&&!nr.length&&!fe&&(nr=TQ(m,Xt/2,I,U,J,ne,fe,!0,Qe)),nr}function AQ(m,y,I,U,J){for(var ne=[],fe=0;fe=U&&Xt.x>=U)&&(mt.x>=U?mt=new u(U,mt.y+(Xt.y-mt.y)*((U-mt.x)/(Xt.x-mt.x)))._round():Xt.x>=U&&(Xt=new u(U,mt.y+(Xt.y-mt.y)*((U-mt.x)/(Xt.x-mt.x)))._round()),!(mt.y>=J&&Xt.y>=J)&&(mt.y>=J?mt=new u(mt.x+(Xt.x-mt.x)*((J-mt.y)/(Xt.y-mt.y)),J)._round():Xt.y>=J&&(Xt=new u(mt.x+(Xt.x-mt.x)*((J-mt.y)/(Xt.y-mt.y)),J)._round()),(!Qe||!mt.equals(Qe[Qe.length-1]))&&(Qe=[mt],ne.push(Qe)),Qe.push(Xt)))))}return ne}var Gw=oc;function SQ(m,y,I,U){var J=[],ne=m.image,fe=ne.pixelRatio,Fe=ne.paddedRect.w-2*Gw,Qe=ne.paddedRect.h-2*Gw,st=m.right-m.left,mt=m.bottom-m.top,Xt=ne.stretchX||[[0,Fe]],ur=ne.stretchY||[[0,Qe]],nr=function(nl,Ws){return nl+Ws[1]-Ws[0]},Lr=Xt.reduce(nr,0),Yr=ur.reduce(nr,0),_i=Fe-Lr,si=Qe-Yr,Hi=0,Ei=Lr,Vi=0,en=Yr,An=0,ra=_i,$n=0,Ba=si;if(ne.content&&U){var _a=ne.content;Hi=UC(Xt,0,_a[0]),Vi=UC(ur,0,_a[1]),Ei=UC(Xt,_a[0],_a[2]),en=UC(ur,_a[1],_a[3]),An=_a[0]-Hi,$n=_a[1]-Vi,ra=_a[2]-_a[0]-Ei,Ba=_a[3]-_a[1]-en}var Pa=function(nl,Ws,Au,Ou){var nf=VC(nl.stretch-Hi,Ei,st,m.left),bf=HC(nl.fixed-An,ra,nl.stretch,Lr),qh=VC(Ws.stretch-Vi,en,mt,m.top),Zf=HC(Ws.fixed-$n,Ba,Ws.stretch,Yr),jd=VC(Au.stretch-Hi,Ei,st,m.left),Wd=HC(Au.fixed-An,ra,Au.stretch,Lr),Oh=VC(Ou.stretch-Vi,en,mt,m.top),fv=HC(Ou.fixed-$n,Ba,Ou.stretch,Yr),hv=new u(nf,qh),hh=new u(jd,qh),dv=new u(jd,Oh),_p=new u(nf,Oh),py=new u(bf/fe,Zf/fe),F1=new u(Wd/fe,fv/fe),q1=y*Math.PI/180;if(q1){var O1=Math.sin(q1),$w=Math.cos(q1),y0=[$w,-O1,O1,$w];hv._matMult(y0),hh._matMult(y0),_p._matMult(y0),dv._matMult(y0)}var YC=nl.stretch+nl.fixed,cq=Au.stretch+Au.fixed,KC=Ws.stretch+Ws.fixed,fq=Ou.stretch+Ou.fixed,jp={x:ne.paddedRect.x+Gw+YC,y:ne.paddedRect.y+Gw+KC,w:cq-YC,h:fq-KC},Qw=ra/fe/st,JC=Ba/fe/mt;return{tl:hv,tr:hh,bl:_p,br:dv,tex:jp,writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:py,pixelOffsetBR:F1,minFontScaleX:Qw,minFontScaleY:JC,isSDF:I}};if(!U||!ne.stretchX&&!ne.stretchY)J.push(Pa({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:Fe+1},{fixed:0,stretch:Qe+1}));else for(var qo=MQ(Xt,_i,Lr),Na=MQ(ur,si,Yr),ja=0;ja0&&(Lr=Math.max(10,Lr),this.circleDiameter=Lr)}else{var Yr=fe.top*Fe-Qe,_i=fe.bottom*Fe+Qe,si=fe.left*Fe-Qe,Hi=fe.right*Fe+Qe,Ei=fe.collisionPadding;if(Ei&&(si-=Ei[0]*Fe,Yr-=Ei[1]*Fe,Hi+=Ei[2]*Fe,_i+=Ei[3]*Fe),mt){var Vi=new u(si,Yr),en=new u(Hi,Yr),An=new u(si,_i),ra=new u(Hi,_i),$n=mt*Math.PI/180;Vi._rotate($n),en._rotate($n),An._rotate($n),ra._rotate($n),si=Math.min(Vi.x,en.x,An.x,ra.x),Hi=Math.max(Vi.x,en.x,An.x,ra.x),Yr=Math.min(Vi.y,en.y,An.y,ra.y),_i=Math.max(Vi.y,en.y,An.y,ra.y)}y.emplaceBack(I.x,I.y,si,Yr,Hi,_i,U,J,ne)}this.boxEndIndex=y.length},jw=function(y,I){if(y===void 0&&(y=[]),I===void 0&&(I=Q$e),this.data=y,this.length=this.data.length,this.compare=I,this.length>0)for(var U=(this.length>>1)-1;U>=0;U--)this._down(U)};jw.prototype.push=function(y){this.data.push(y),this.length++,this._up(this.length-1)},jw.prototype.pop=function(){if(this.length!==0){var y=this.data[0],I=this.data.pop();return this.length--,this.length>0&&(this.data[0]=I,this._down(0)),y}},jw.prototype.peek=function(){return this.data[0]},jw.prototype._up=function(y){for(var I=this,U=I.data,J=I.compare,ne=U[y];y>0;){var fe=y-1>>1,Fe=U[fe];if(J(ne,Fe)>=0)break;U[y]=Fe,y=fe}U[y]=ne},jw.prototype._down=function(y){for(var I=this,U=I.data,J=I.compare,ne=this.length>>1,fe=U[y];y=0)break;U[y]=Qe,y=Fe}U[y]=fe};function Q$e(m,y){return my?1:0}function eQe(m,y,I){y===void 0&&(y=1),I===void 0&&(I=!1);for(var U=1/0,J=1/0,ne=-1/0,fe=-1/0,Fe=m[0],Qe=0;Qene)&&(ne=st.x),(!Qe||st.y>fe)&&(fe=st.y)}var mt=ne-U,Xt=fe-J,ur=Math.min(mt,Xt),nr=ur/2,Lr=new jw([],tQe);if(ur===0)return new u(U,J);for(var Yr=U;Yrsi.d||!si.d)&&(si=Ei,I&&console.log("found best %d after %d probes",Math.round(1e4*Ei.d)/1e4,Hi)),!(Ei.max-si.d<=y)&&(nr=Ei.h/2,Lr.push(new Ww(Ei.p.x-nr,Ei.p.y-nr,nr,m)),Lr.push(new Ww(Ei.p.x+nr,Ei.p.y-nr,nr,m)),Lr.push(new Ww(Ei.p.x-nr,Ei.p.y+nr,nr,m)),Lr.push(new Ww(Ei.p.x+nr,Ei.p.y+nr,nr,m)),Hi+=4)}return I&&(console.log("num probes: "+Hi),console.log("best distance: "+si.d)),si.p}function tQe(m,y){return y.max-m.max}function Ww(m,y,I,U){this.p=new u(m,y),this.h=I,this.d=rQe(this.p,U),this.max=this.d+this.h*Math.SQRT2}function rQe(m,y){for(var I=!1,U=1/0,J=0;Jm.y!=mt.y>m.y&&m.x<(mt.x-st.x)*(m.y-st.y)/(mt.y-st.y)+st.x&&(I=!I),U=Math.min(U,cg(m,st,mt))}return(I?1:-1)*Math.sqrt(U)}function iQe(m){for(var y=0,I=0,U=0,J=m[0],ne=0,fe=J.length,Fe=fe-1;ne=rn||y0.y<0||y0.y>=rn||oQe(m,y0,$w,I,U,J,Na,m.layers[0],m.collisionBoxArray,y.index,y.sourceLayerIndex,m.index,si,en,$n,Qe,Ei,An,Ba,nr,y,ne,st,mt,fe)};if(_a==="line")for(var us=0,zo=AQ(y.geometry,0,0,rn,rn);us1){var qh=K$e(bf,ra,I.vertical||Lr,U,Yr,Hi);qh&&ja(bf,qh)}}else if(y.type==="Polygon")for(var Zf=0,jd=zw(y.geometry,0);ZfD1&&re(m.layerIds[0]+': Value for "text-size" is >= '+TS+'. Reduce your "text-size".')):_i.kind==="composite"&&(si=[Sd*nr.compositeTextSizes[0].evaluate(fe,{},Lr),Sd*nr.compositeTextSizes[1].evaluate(fe,{},Lr)],(si[0]>D1||si[1]>D1)&&re(m.layerIds[0]+': Value for "text-size" is >= '+TS+'. Reduce your "text-size".')),m.addSymbols(m.text,Yr,si,Fe,ne,fe,st,y,Qe.lineStartIndex,Qe.lineLength,ur,Lr);for(var Hi=0,Ei=mt;HiD1&&re(m.layerIds[0]+': Value for "icon-size" is >= '+TS+'. Reduce your "icon-size".')):hv.kind==="composite"&&(hh=[Sd*en.compositeIconSizes[0].evaluate(Vi,{},ra),Sd*en.compositeIconSizes[1].evaluate(Vi,{},ra)],(hh[0]>D1||hh[1]>D1)&&re(m.layerIds[0]+': Value for "icon-size" is >= '+TS+'. Reduce your "icon-size".')),m.addSymbols(m.icon,Oh,hh,Ei,Hi,Vi,!1,y,_a.lineStartIndex,_a.lineLength,-1,ra),il=m.icon.placedSymbolArray.length-1,fv&&(zo=fv.length*4,m.addSymbols(m.icon,fv,hh,Ei,Hi,Vi,uv.vertical,y,_a.lineStartIndex,_a.lineLength,-1,ra),nl=m.icon.placedSymbolArray.length-1)}for(var dv in U.horizontal){var _p=U.horizontal[dv];if(!Pa){Au=$(_p.text);var py=Fe.layout.get("text-rotate").evaluate(Vi,{},ra);Pa=new GC(Qe,y,st,mt,Xt,_p,ur,nr,Lr,py)}var F1=_p.positionedLines.length===1;if(rl+=kQ(m,y,_p,ne,Fe,Lr,Vi,Yr,_a,U.vertical?uv.horizontal:uv.horizontalOnly,F1?Object.keys(U.horizontal):[dv],Ws,il,en,ra),F1)break}U.vertical&&(ou+=kQ(m,y,U.vertical,ne,Fe,Lr,Vi,Yr,_a,uv.vertical,["vertical"],Ws,nl,en,ra));var q1=Pa?Pa.boxStartIndex:m.collisionBoxArray.length,O1=Pa?Pa.boxEndIndex:m.collisionBoxArray.length,$w=Na?Na.boxStartIndex:m.collisionBoxArray.length,y0=Na?Na.boxEndIndex:m.collisionBoxArray.length,YC=qo?qo.boxStartIndex:m.collisionBoxArray.length,cq=qo?qo.boxEndIndex:m.collisionBoxArray.length,KC=ja?ja.boxStartIndex:m.collisionBoxArray.length,fq=ja?ja.boxEndIndex:m.collisionBoxArray.length,jp=-1,Qw=function(MS,jQ){return MS&&MS.circleDiameter?Math.max(MS.circleDiameter,jQ):jQ};jp=Qw(Pa,jp),jp=Qw(Na,jp),jp=Qw(qo,jp),jp=Qw(ja,jp);var JC=jp>-1?1:0;JC&&(jp*=$n/Zi),m.glyphOffsetArray.length>=au.MAX_GLYPHS&&re("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),Vi.sortKey!==void 0&&m.addToSortKeyRanges(m.symbolInstances.length,Vi.sortKey),m.symbolInstances.emplaceBack(y.x,y.y,Ws.right>=0?Ws.right:-1,Ws.center>=0?Ws.center:-1,Ws.left>=0?Ws.left:-1,Ws.vertical||-1,il,nl,Au,q1,O1,$w,y0,YC,cq,KC,fq,st,rl,ou,us,zo,JC,0,ur,Ou,nf,jp)}function sQe(m,y,I,U){var J=m.compareText;if(!(y in J))J[y]=[];else for(var ne=J[y],fe=ne.length-1;fe>=0;fe--)if(U.dist(ne[fe])0)&&(fe.value.kind!=="constant"||fe.value.value.length>0),mt=Qe.value.kind!=="constant"||!!Qe.value.value||Object.keys(Qe.parameters).length>0,Xt=ne.get("symbol-sort-key");if(this.features=[],!(!st&&!mt)){for(var ur=I.iconDependencies,nr=I.glyphDependencies,Lr=I.availableImages,Yr=new pn(this.zoom),_i=0,si=y;_i=0;for(var ou=0,il=Ba.sections;ou=0;Qe--)fe[Qe]={x:I[Qe].x,y:I[Qe].y,tileUnitDistanceFromAnchor:ne},Qe>0&&(ne+=I[Qe-1].dist(I[Qe]));for(var st=0;st0},au.prototype.hasIconData=function(){return this.icon.segments.get().length>0},au.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},au.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},au.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},au.prototype.addIndicesForPlacedSymbol=function(y,I){for(var U=y.placedSymbolArray.get(I),J=U.vertexStartIndex+U.numGlyphs*4,ne=U.vertexStartIndex;ne1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(y),this.sortedAngle=y,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var U=0,J=this.symbolInstanceIndexes;U=0&&st.indexOf(Fe)===Qe&&I.addIndicesForPlacedSymbol(I.text,Fe)}),fe.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,fe.verticalPlacedTextSymbolIndex),fe.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,fe.placedIconSymbolIndex),fe.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,fe.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Z("SymbolBucket",au,{omit:["layers","collisionBoxArray","features","compareText"]}),au.MAX_GLYPHS=65535,au.addDynamicAttributes=aq;function fQe(m,y){return y.replace(/{([^{}]+)}/g,function(I,U){return U in m?String(m[U]):""})}var hQe=new Oi({"symbol-placement":new At(on.layout_symbol["symbol-placement"]),"symbol-spacing":new At(on.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new At(on.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Er(on.layout_symbol["symbol-sort-key"]),"symbol-z-order":new At(on.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new At(on.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new At(on.layout_symbol["icon-ignore-placement"]),"icon-optional":new At(on.layout_symbol["icon-optional"]),"icon-rotation-alignment":new At(on.layout_symbol["icon-rotation-alignment"]),"icon-size":new Er(on.layout_symbol["icon-size"]),"icon-text-fit":new At(on.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new At(on.layout_symbol["icon-text-fit-padding"]),"icon-image":new Er(on.layout_symbol["icon-image"]),"icon-rotate":new Er(on.layout_symbol["icon-rotate"]),"icon-padding":new At(on.layout_symbol["icon-padding"]),"icon-keep-upright":new At(on.layout_symbol["icon-keep-upright"]),"icon-offset":new Er(on.layout_symbol["icon-offset"]),"icon-anchor":new Er(on.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new At(on.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new At(on.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new At(on.layout_symbol["text-rotation-alignment"]),"text-field":new Er(on.layout_symbol["text-field"]),"text-font":new Er(on.layout_symbol["text-font"]),"text-size":new Er(on.layout_symbol["text-size"]),"text-max-width":new Er(on.layout_symbol["text-max-width"]),"text-line-height":new At(on.layout_symbol["text-line-height"]),"text-letter-spacing":new Er(on.layout_symbol["text-letter-spacing"]),"text-justify":new Er(on.layout_symbol["text-justify"]),"text-radial-offset":new Er(on.layout_symbol["text-radial-offset"]),"text-variable-anchor":new At(on.layout_symbol["text-variable-anchor"]),"text-anchor":new Er(on.layout_symbol["text-anchor"]),"text-max-angle":new At(on.layout_symbol["text-max-angle"]),"text-writing-mode":new At(on.layout_symbol["text-writing-mode"]),"text-rotate":new Er(on.layout_symbol["text-rotate"]),"text-padding":new At(on.layout_symbol["text-padding"]),"text-keep-upright":new At(on.layout_symbol["text-keep-upright"]),"text-transform":new Er(on.layout_symbol["text-transform"]),"text-offset":new Er(on.layout_symbol["text-offset"]),"text-allow-overlap":new At(on.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new At(on.layout_symbol["text-ignore-placement"]),"text-optional":new At(on.layout_symbol["text-optional"])}),dQe=new Oi({"icon-opacity":new Er(on.paint_symbol["icon-opacity"]),"icon-color":new Er(on.paint_symbol["icon-color"]),"icon-halo-color":new Er(on.paint_symbol["icon-halo-color"]),"icon-halo-width":new Er(on.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Er(on.paint_symbol["icon-halo-blur"]),"icon-translate":new At(on.paint_symbol["icon-translate"]),"icon-translate-anchor":new At(on.paint_symbol["icon-translate-anchor"]),"text-opacity":new Er(on.paint_symbol["text-opacity"]),"text-color":new Er(on.paint_symbol["text-color"],{runtimeType:Tl,getOverride:function(m){return m.textColor},hasOverride:function(m){return!!m.textColor}}),"text-halo-color":new Er(on.paint_symbol["text-halo-color"]),"text-halo-width":new Er(on.paint_symbol["text-halo-width"]),"text-halo-blur":new Er(on.paint_symbol["text-halo-blur"]),"text-translate":new At(on.paint_symbol["text-translate"]),"text-translate-anchor":new At(on.paint_symbol["text-translate-anchor"])}),oq={paint:dQe,layout:hQe},Yw=function(y){this.type=y.property.overrides?y.property.overrides.runtimeType:Ec,this.defaultValue=y};Yw.prototype.evaluate=function(y){if(y.formattedSection){var I=this.defaultValue.property.overrides;if(I&&I.hasOverride(y.formattedSection))return I.getOverride(y.formattedSection)}return y.feature&&y.featureState?this.defaultValue.evaluate(y.feature,y.featureState):this.defaultValue.property.specification.default},Yw.prototype.eachChild=function(y){if(!this.defaultValue.isConstant()){var I=this.defaultValue.value;y(I._styleExpression.expression)}},Yw.prototype.outputDefined=function(){return!1},Yw.prototype.serialize=function(){return null},Z("FormatSectionOverride",Yw,{omit:["defaultValue"]});var vQe=function(m){function y(I){m.call(this,I,oq)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.recalculate=function(U,J){if(m.prototype.recalculate.call(this,U,J),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){var ne=this.layout.get("text-writing-mode");if(ne){for(var fe=[],Fe=0,Qe=ne;Fe",targetMapId:J,sourceMapId:fe.mapId})}}},Kw.prototype.receive=function(y){var I=y.data,U=I.id;if(U&&!(I.targetMapId&&this.mapId!==I.targetMapId))if(I.type===""){delete this.tasks[U];var J=this.cancelCallbacks[U];delete this.cancelCallbacks[U],J&&J()}else ke()||I.mustQueue?(this.tasks[U]=I,this.taskQueue.push(U),this.invoker.trigger()):this.processTask(U,I)},Kw.prototype.process=function(){if(this.taskQueue.length){var y=this.taskQueue.shift(),I=this.tasks[y];delete this.tasks[y],this.taskQueue.length&&this.invoker.trigger(),I&&this.processTask(y,I)}},Kw.prototype.processTask=function(y,I){var U=this;if(I.type===""){var J=this.callbacks[y];delete this.callbacks[y],J&&(I.error?J(We(I.error)):J(null,We(I.data)))}else{var ne=!1,fe=Te(this.globalScope)?void 0:[],Fe=I.hasCallback?function(ur,nr){ne=!0,delete U.cancelCallbacks[y],U.target.postMessage({id:y,type:"",sourceMapId:U.mapId,error:ur?Ue(ur):null,data:Ue(nr,fe)},fe)}:function(ur){ne=!0},Qe=null,st=We(I.data);if(this.parent[I.type])Qe=this.parent[I.type](I.sourceMapId,st,Fe);else if(this.parent.getWorkerSource){var mt=I.type.split("."),Xt=this.parent.getWorkerSource(I.sourceMapId,mt[0],st.source);Qe=Xt[mt[1]](st,Fe)}else Fe(new Error("Could not find function "+I.type));!ne&&Qe&&Qe.cancel&&(this.cancelCallbacks[y]=Qe.cancel)}},Kw.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};function SQe(m,y,I){y=Math.pow(2,I)-y-1;var U=DQ(m*256,y*256,I),J=DQ((m+1)*256,(y+1)*256,I);return U[0]+","+U[1]+","+J[0]+","+J[1]}function DQ(m,y,I){var U=2*Math.PI*6378137/256/Math.pow(2,I),J=m*U-2*Math.PI*6378137/2,ne=y*U-2*Math.PI*6378137/2;return[J,ne]}var jf=function(y,I){y&&(I?this.setSouthWest(y).setNorthEast(I):y.length===4?this.setSouthWest([y[0],y[1]]).setNorthEast([y[2],y[3]]):this.setSouthWest(y[0]).setNorthEast(y[1]))};jf.prototype.setNorthEast=function(y){return this._ne=y instanceof sc?new sc(y.lng,y.lat):sc.convert(y),this},jf.prototype.setSouthWest=function(y){return this._sw=y instanceof sc?new sc(y.lng,y.lat):sc.convert(y),this},jf.prototype.extend=function(y){var I=this._sw,U=this._ne,J,ne;if(y instanceof sc)J=y,ne=y;else if(y instanceof jf){if(J=y._sw,ne=y._ne,!J||!ne)return this}else{if(Array.isArray(y))if(y.length===4||y.every(Array.isArray)){var fe=y;return this.extend(jf.convert(fe))}else{var Fe=y;return this.extend(sc.convert(Fe))}return this}return!I&&!U?(this._sw=new sc(J.lng,J.lat),this._ne=new sc(ne.lng,ne.lat)):(I.lng=Math.min(J.lng,I.lng),I.lat=Math.min(J.lat,I.lat),U.lng=Math.max(ne.lng,U.lng),U.lat=Math.max(ne.lat,U.lat)),this},jf.prototype.getCenter=function(){return new sc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},jf.prototype.getSouthWest=function(){return this._sw},jf.prototype.getNorthEast=function(){return this._ne},jf.prototype.getNorthWest=function(){return new sc(this.getWest(),this.getNorth())},jf.prototype.getSouthEast=function(){return new sc(this.getEast(),this.getSouth())},jf.prototype.getWest=function(){return this._sw.lng},jf.prototype.getSouth=function(){return this._sw.lat},jf.prototype.getEast=function(){return this._ne.lng},jf.prototype.getNorth=function(){return this._ne.lat},jf.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},jf.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},jf.prototype.isEmpty=function(){return!(this._sw&&this._ne)},jf.prototype.contains=function(y){var I=sc.convert(y),U=I.lng,J=I.lat,ne=this._sw.lat<=J&&J<=this._ne.lat,fe=this._sw.lng<=U&&U<=this._ne.lng;return this._sw.lng>this._ne.lng&&(fe=this._sw.lng>=U&&U>=this._ne.lng),ne&&fe},jf.convert=function(y){return!y||y instanceof jf?y:new jf(y)};var zQ=63710088e-1,sc=function(y,I){if(isNaN(y)||isNaN(I))throw new Error("Invalid LngLat object: ("+y+", "+I+")");if(this.lng=+y,this.lat=+I,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};sc.prototype.wrap=function(){return new sc(E(this.lng,-180,180),this.lat)},sc.prototype.toArray=function(){return[this.lng,this.lat]},sc.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},sc.prototype.distanceTo=function(y){var I=Math.PI/180,U=this.lat*I,J=y.lat*I,ne=Math.sin(U)*Math.sin(J)+Math.cos(U)*Math.cos(J)*Math.cos((y.lng-this.lng)*I),fe=zQ*Math.acos(Math.min(ne,1));return fe},sc.prototype.toBounds=function(y){y===void 0&&(y=0);var I=40075017,U=360*y/I,J=U/Math.cos(Math.PI/180*this.lat);return new jf(new sc(this.lng-J,this.lat-U),new sc(this.lng+J,this.lat+U))},sc.convert=function(y){if(y instanceof sc)return y;if(Array.isArray(y)&&(y.length===2||y.length===3))return new sc(Number(y[0]),Number(y[1]));if(!Array.isArray(y)&&typeof y=="object"&&y!==null)return new sc(Number("lng"in y?y.lng:y.lon),Number(y.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var FQ=2*Math.PI*zQ;function qQ(m){return FQ*Math.cos(m*Math.PI/180)}function OQ(m){return(180+m)/360}function BQ(m){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+m*Math.PI/360)))/360}function NQ(m,y){return m/qQ(y)}function MQe(m){return m*360-180}function lq(m){var y=180-m*360;return 360/Math.PI*Math.atan(Math.exp(y*Math.PI/180))-90}function EQe(m,y){return m*qQ(lq(y))}function kQe(m){return 1/Math.cos(m*Math.PI/180)}var ib=function(y,I,U){U===void 0&&(U=0),this.x=+y,this.y=+I,this.z=+U};ib.fromLngLat=function(y,I){I===void 0&&(I=0);var U=sc.convert(y);return new ib(OQ(U.lng),BQ(U.lat),NQ(I,U.lat))},ib.prototype.toLngLat=function(){return new sc(MQe(this.x),lq(this.y))},ib.prototype.toAltitude=function(){return EQe(this.z,this.y)},ib.prototype.meterInMercatorCoordinateUnits=function(){return 1/FQ*kQe(lq(this.y))};var nb=function(y,I,U){this.z=y,this.x=I,this.y=U,this.key=SS(0,y,y,I,U)};nb.prototype.equals=function(y){return this.z===y.z&&this.x===y.x&&this.y===y.y},nb.prototype.url=function(y,I){var U=SQe(this.x,this.y,this.z),J=CQe(this.z,this.x,this.y);return y[(this.x+this.y)%y.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(this.z)).replace("{x}",String(this.x)).replace("{y}",String(I==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",J).replace("{bbox-epsg-3857}",U)},nb.prototype.getTilePoint=function(y){var I=Math.pow(2,this.z);return new u((y.x*I-this.x)*rn,(y.y*I-this.y)*rn)},nb.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y};var UQ=function(y,I){this.wrap=y,this.canonical=I,this.key=SS(y,I.z,I.z,I.x,I.y)},Wf=function(y,I,U,J,ne){this.overscaledZ=y,this.wrap=I,this.canonical=new nb(U,+J,+ne),this.key=SS(I,y,U,J,ne)};Wf.prototype.equals=function(y){return this.overscaledZ===y.overscaledZ&&this.wrap===y.wrap&&this.canonical.equals(y.canonical)},Wf.prototype.scaledTo=function(y){var I=this.canonical.z-y;return y>this.canonical.z?new Wf(y,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Wf(y,this.wrap,y,this.canonical.x>>I,this.canonical.y>>I)},Wf.prototype.calculateScaledKey=function(y,I){var U=this.canonical.z-y;return y>this.canonical.z?SS(this.wrap*+I,y,this.canonical.z,this.canonical.x,this.canonical.y):SS(this.wrap*+I,y,y,this.canonical.x>>U,this.canonical.y>>U)},Wf.prototype.isChildOf=function(y){if(y.wrap!==this.wrap)return!1;var I=this.canonical.z-y.canonical.z;return y.overscaledZ===0||y.overscaledZ>I&&y.canonical.y===this.canonical.y>>I},Wf.prototype.children=function(y){if(this.overscaledZ>=y)return[new Wf(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var I=this.canonical.z+1,U=this.canonical.x*2,J=this.canonical.y*2;return[new Wf(I,this.wrap,I,U,J),new Wf(I,this.wrap,I,U+1,J),new Wf(I,this.wrap,I,U,J+1),new Wf(I,this.wrap,I,U+1,J+1)]},Wf.prototype.isLessThan=function(y){return this.wrapy.wrap?!1:this.overscaledZy.overscaledZ?!1:this.canonical.xy.canonical.x?!1:this.canonical.y0;ne--)J=1<=this.dim+1||I<-1||I>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(I+1)*this.stride+(y+1)},dy.prototype._unpackMapbox=function(y,I,U){return(y*256*256+I*256+U)/10-1e4},dy.prototype._unpackTerrarium=function(y,I,U){return y*256+I+U/256-32768},dy.prototype.getPixels=function(){return new lh({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},dy.prototype.backfillBorder=function(y,I,U){if(this.dim!==y.dim)throw new Error("dem dimension mismatch");var J=I*this.dim,ne=I*this.dim+this.dim,fe=U*this.dim,Fe=U*this.dim+this.dim;switch(I){case-1:J=ne-1;break;case 1:ne=J+1;break}switch(U){case-1:fe=Fe-1;break;case 1:Fe=fe+1;break}for(var Qe=-I*this.dim,st=-U*this.dim,mt=fe;mt=0&&Xt[3]>=0&&Qe.insert(Fe,Xt[0],Xt[1],Xt[2],Xt[3])}},vy.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new pg.VectorTile(new La(this.rawTileData)).layers,this.sourceLayerCoder=new ZC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},vy.prototype.query=function(y,I,U,J){var ne=this;this.loadVTLayers();for(var fe=y.params||{},Fe=rn/y.tileSize/y.scale,Qe=be(fe.filter),st=y.queryGeometry,mt=y.queryPadding*Fe,Xt=HQ(st),ur=this.grid.query(Xt.minX-mt,Xt.minY-mt,Xt.maxX+mt,Xt.maxY+mt),nr=HQ(y.cameraQueryGeometry),Lr=this.grid3D.query(nr.minX-mt,nr.minY-mt,nr.maxX+mt,nr.maxY+mt,function(An,ra,$n,Ba){return pp(y.cameraQueryGeometry,An-mt,ra-mt,$n+mt,Ba+mt)}),Yr=0,_i=Lr;Yr<_i.length;Yr+=1){var si=_i[Yr];ur.push(si)}ur.sort(PQe);for(var Hi={},Ei,Vi=function(An){var ra=ur[An];if(ra!==Ei){Ei=ra;var $n=ne.featureIndexArray.get(ra),Ba=null;ne.loadMatchingFeature(Hi,$n.bucketIndex,$n.sourceLayerIndex,$n.featureIndex,Qe,fe.layers,fe.availableImages,I,U,J,function(_a,Pa,qo){return Ba||(Ba=da(_a)),Pa.queryIntersectsFeature(st,_a,qo,Ba,ne.z,y.transform,Fe,y.pixelPosMatrix)})}},en=0;enJ)ne=!1;else if(!I)ne=!0;else if(this.expirationTime=Ha.maxzoom)&&Ha.visibility!=="none"){h(Sn,this.zoom,Zt);var oo=Si[Ha.id]=Ha.createBucket({index:gi.bucketLayerIDs.length,layers:Sn,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:ka,sourceID:this.source});oo.populate(jn,Mi,this.tileID.canonical),gi.bucketLayerIDs.push(Sn.map(function(hi){return hi.id}))}}}}var xn,_t,br,Hr,ti=i.mapObject(Mi.glyphDependencies,function(hi){return Object.keys(hi).map(Number)});Object.keys(ti).length?yr.send("getGlyphs",{uid:this.uid,stacks:ti},function(hi,Ji){xn||(xn=hi,_t=Ji,an.call(Zr))}):_t={};var zi=Object.keys(Mi.iconDependencies);zi.length?yr.send("getImages",{icons:zi,source:this.source,tileID:this.tileID,type:"icons"},function(hi,Ji){xn||(xn=hi,br=Ji,an.call(Zr))}):br={};var Yi=Object.keys(Mi.patternDependencies);Yi.length?yr.send("getImages",{icons:Yi,source:this.source,tileID:this.tileID,type:"patterns"},function(hi,Ji){xn||(xn=hi,Hr=Ji,an.call(Zr))}):Hr={},an.call(this);function an(){if(xn)return Fr(xn);if(_t&&br&&Hr){var hi=new c(_t),Ji=new i.ImageAtlas(br,Hr);for(var ua in Si){var Fn=Si[ua];Fn instanceof i.SymbolBucket?(h(Fn.layers,this.zoom,Zt),i.performSymbolLayout(Fn,_t,hi.positions,br,Ji.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):Fn.hasPattern&&(Fn instanceof i.LineBucket||Fn instanceof i.FillBucket||Fn instanceof i.FillExtrusionBucket)&&(h(Fn.layers,this.zoom,Zt),Fn.addFeatures(Mi,this.tileID.canonical,Ji.patternPositions))}this.status="done",Fr(null,{buckets:i.values(Si).filter(function(Sa){return!Sa.isEmpty()}),featureIndex:gi,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:hi.image,imageAtlas:Ji,glyphMap:this.returnDependencies?_t:null,iconMap:this.returnDependencies?br:null,glyphPositions:this.returnDependencies?hi.positions:null})}}};function h(It,ft,jt){for(var Zt=new i.EvaluationParameters(ft),yr=0,Fr=It;yr=0!=!!ft&&It.reverse()}var L=i.vectorTile.VectorTileFeature.prototype.toGeoJSON,_=function(ft){this._feature=ft,this.extent=i.EXTENT,this.type=ft.type,this.properties=ft.tags,"id"in ft&&!isNaN(ft.id)&&(this.id=parseInt(ft.id,10))};_.prototype.loadGeometry=function(){if(this._feature.type===1){for(var ft=[],jt=0,Zt=this._feature.geometry;jt>31}function ke(It,ft){for(var jt=It.loadGeometry(),Zt=It.type,yr=0,Fr=0,Zr=jt.length,Vr=0;Vr>1;Te(It,ft,Zr,Zt,yr,Fr%2),ie(It,ft,jt,Zt,Zr-1,Fr+1),ie(It,ft,jt,Zr+1,yr,Fr+1)}}function Te(It,ft,jt,Zt,yr,Fr){for(;yr>Zt;){if(yr-Zt>600){var Zr=yr-Zt+1,Vr=jt-Zt+1,gi=Math.log(Zr),Si=.5*Math.exp(2*gi/3),Mi=.5*Math.sqrt(gi*Si*(Zr-Si)/Zr)*(Vr-Zr/2<0?-1:1),Pi=Math.max(Zt,Math.floor(jt-Vr*Si/Zr+Mi)),Gi=Math.min(yr,Math.floor(jt+(Zr-Vr)*Si/Zr+Mi));Te(It,ft,jt,Pi,Gi,Fr)}var Ki=ft[2*jt+Fr],ka=Zt,jn=yr;for(Ee(It,ft,Zt,jt),ft[2*yr+Fr]>Ki&&Ee(It,ft,Zt,yr);kaKi;)jn--}ft[2*Zt+Fr]===Ki?Ee(It,ft,Zt,jn):(jn++,Ee(It,ft,jn,yr)),jn<=jt&&(Zt=jn+1),jt<=jn&&(yr=jn-1)}}function Ee(It,ft,jt,Zt){Ae(It,jt,Zt),Ae(ft,2*jt,2*Zt),Ae(ft,2*jt+1,2*Zt+1)}function Ae(It,ft,jt){var Zt=It[ft];It[ft]=It[jt],It[jt]=Zt}function ze(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=[0,It.length-1,0],gi=[],Si,Mi;Vr.length;){var Pi=Vr.pop(),Gi=Vr.pop(),Ki=Vr.pop();if(Gi-Ki<=Zr){for(var ka=Ki;ka<=Gi;ka++)Si=ft[2*ka],Mi=ft[2*ka+1],Si>=jt&&Si<=yr&&Mi>=Zt&&Mi<=Fr&&gi.push(It[ka]);continue}var jn=Math.floor((Ki+Gi)/2);Si=ft[2*jn],Mi=ft[2*jn+1],Si>=jt&&Si<=yr&&Mi>=Zt&&Mi<=Fr&&gi.push(It[jn]);var la=(Pi+1)%2;(Pi===0?jt<=Si:Zt<=Mi)&&(Vr.push(Ki),Vr.push(jn-1),Vr.push(la)),(Pi===0?yr>=Si:Fr>=Mi)&&(Vr.push(jn+1),Vr.push(Gi),Vr.push(la))}return gi}function Ce(It,ft,jt,Zt,yr,Fr){for(var Zr=[0,It.length-1,0],Vr=[],gi=yr*yr;Zr.length;){var Si=Zr.pop(),Mi=Zr.pop(),Pi=Zr.pop();if(Mi-Pi<=Fr){for(var Gi=Pi;Gi<=Mi;Gi++)me(ft[2*Gi],ft[2*Gi+1],jt,Zt)<=gi&&Vr.push(It[Gi]);continue}var Ki=Math.floor((Pi+Mi)/2),ka=ft[2*Ki],jn=ft[2*Ki+1];me(ka,jn,jt,Zt)<=gi&&Vr.push(It[Ki]);var la=(Si+1)%2;(Si===0?jt-yr<=ka:Zt-yr<=jn)&&(Zr.push(Pi),Zr.push(Ki-1),Zr.push(la)),(Si===0?jt+yr>=ka:Zt+yr>=jn)&&(Zr.push(Ki+1),Zr.push(Mi),Zr.push(la))}return Vr}function me(It,ft,jt,Zt){var yr=It-jt,Fr=ft-Zt;return yr*yr+Fr*Fr}var Re=function(It){return It[0]},ce=function(It){return It[1]},Ge=function(ft,jt,Zt,yr,Fr){jt===void 0&&(jt=Re),Zt===void 0&&(Zt=ce),yr===void 0&&(yr=64),Fr===void 0&&(Fr=Float64Array),this.nodeSize=yr,this.points=ft;for(var Zr=ft.length<65536?Uint16Array:Uint32Array,Vr=this.ids=new Zr(ft.length),gi=this.coords=new Fr(ft.length*2),Si=0;Si=yr;Mi--){var Pi=+Date.now();gi=this._cluster(gi,Mi),this.trees[Mi]=new Ge(gi,Ke,xt,Zr,Float32Array),Zt&&console.log("z%d: %d clusters in %dms",Mi,gi.length,+Date.now()-Pi)}return Zt&&console.timeEnd("total time"),this},ct.prototype.getClusters=function(ft,jt){var Zt=((ft[0]+180)%360+360)%360-180,yr=Math.max(-90,Math.min(90,ft[1])),Fr=ft[2]===180?180:((ft[2]+180)%360+360)%360-180,Zr=Math.max(-90,Math.min(90,ft[3]));if(ft[2]-ft[0]>=360)Zt=-180,Fr=180;else if(Zt>Fr){var Vr=this.getClusters([Zt,yr,180,Zr],jt),gi=this.getClusters([-180,yr,Fr,Zr],jt);return Vr.concat(gi)}for(var Si=this.trees[this._limitZoom(jt)],Mi=Si.range(kt(Zt),Ct(Zr),kt(Fr),Ct(yr)),Pi=[],Gi=0,Ki=Mi;Gijt&&(jn+=jo.numPoints||1)}if(jn>=gi){for(var oa=Pi.x*ka,Sn=Pi.y*ka,Ha=Vr&&ka>1?this._map(Pi,!0):null,oo=(Mi<<5)+(jt+1)+this.points.length,xn=0,_t=Ki;xn<_t.length;xn+=1){var br=_t[xn],Hr=Gi.points[br];if(!(Hr.zoom<=jt)){Hr.zoom=jt;var ti=Hr.numPoints||1;oa+=Hr.x*ti,Sn+=Hr.y*ti,Hr.parentId=oo,Vr&&(Ha||(Ha=this._map(Pi,!0)),Vr(Ha,this._map(Hr)))}}Pi.parentId=oo,Zt.push(qt(oa/jn,Sn/jn,oo,jn,Ha))}else if(Zt.push(Pi),jn>1)for(var zi=0,Yi=Ki;zi>5},ct.prototype._getOriginZoom=function(ft){return(ft-this.points.length)%32},ct.prototype._map=function(ft,jt){if(ft.numPoints)return jt?er({},ft.properties):ft.properties;var Zt=this.points[ft.index].properties,yr=this.options.map(Zt);return jt&&yr===Zt?er({},yr):yr};function qt(It,ft,jt,Zt,yr){return{x:It,y:ft,zoom:1/0,id:jt,parentId:-1,numPoints:Zt,properties:yr}}function rt(It,ft){var jt=It.geometry.coordinates,Zt=jt[0],yr=jt[1];return{x:kt(Zt),y:Ct(yr),zoom:1/0,index:ft,parentId:-1}}function ot(It){return{type:"Feature",id:It.id,properties:Rt(It),geometry:{type:"Point",coordinates:[Yt(It.x),xr(It.y)]}}}function Rt(It){var ft=It.numPoints,jt=ft>=1e4?Math.round(ft/1e3)+"k":ft>=1e3?Math.round(ft/100)/10+"k":ft;return er(er({},It.properties),{cluster:!0,cluster_id:It.id,point_count:ft,point_count_abbreviated:jt})}function kt(It){return It/360+.5}function Ct(It){var ft=Math.sin(It*Math.PI/180),jt=.5-.25*Math.log((1+ft)/(1-ft))/Math.PI;return jt<0?0:jt>1?1:jt}function Yt(It){return(It-.5)*360}function xr(It){var ft=(180-It*360)*Math.PI/180;return 360*Math.atan(Math.exp(ft))/Math.PI-90}function er(It,ft){for(var jt in ft)It[jt]=ft[jt];return It}function Ke(It){return It.x}function xt(It){return It.y}function bt(It,ft,jt,Zt){for(var yr=Zt,Fr=jt-ft>>1,Zr=jt-ft,Vr,gi=It[ft],Si=It[ft+1],Mi=It[jt],Pi=It[jt+1],Gi=ft+3;Giyr)Vr=Gi,yr=Ki;else if(Ki===yr){var ka=Math.abs(Gi-Fr);kaZt&&(Vr-ft>3&&bt(It,ft,Vr,Zt),It[Vr+2]=yr,jt-Vr>3&&bt(It,Vr,jt,Zt))}function Lt(It,ft,jt,Zt,yr,Fr){var Zr=yr-jt,Vr=Fr-Zt;if(Zr!==0||Vr!==0){var gi=((It-jt)*Zr+(ft-Zt)*Vr)/(Zr*Zr+Vr*Vr);gi>1?(jt=yr,Zt=Fr):gi>0&&(jt+=Zr*gi,Zt+=Vr*gi)}return Zr=It-jt,Vr=ft-Zt,Zr*Zr+Vr*Vr}function St(It,ft,jt,Zt){var yr={id:typeof It=="undefined"?null:It,type:ft,geometry:jt,tags:Zt,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return Et(yr),yr}function Et(It){var ft=It.geometry,jt=It.type;if(jt==="Point"||jt==="MultiPoint"||jt==="LineString")dt(It,ft);else if(jt==="Polygon"||jt==="MultiLineString")for(var Zt=0;Zt0&&(Zt?Zr+=(yr*Si-gi*Fr)/2:Zr+=Math.sqrt(Math.pow(gi-yr,2)+Math.pow(Si-Fr,2))),yr=gi,Fr=Si}var Mi=ft.length-3;ft[2]=1,bt(ft,0,Mi,jt),ft[Mi+2]=1,ft.size=Math.abs(Zr),ft.start=0,ft.end=ft.size}function Br(It,ft,jt,Zt){for(var yr=0;yr1?1:jt}function ut(It,ft,jt,Zt,yr,Fr,Zr,Vr){if(jt/=ft,Zt/=ft,Fr>=jt&&Zr=Zt)return null;for(var gi=[],Si=0;Si=jt&&ka=Zt)continue;var jn=[];if(Gi==="Point"||Gi==="MultiPoint")Ne(Pi,jn,jt,Zt,yr);else if(Gi==="LineString")Ye(Pi,jn,jt,Zt,yr,!1,Vr.lineMetrics);else if(Gi==="MultiLineString")Xe(Pi,jn,jt,Zt,yr,!1);else if(Gi==="Polygon")Xe(Pi,jn,jt,Zt,yr,!0);else if(Gi==="MultiPolygon")for(var la=0;la=jt&&Zr<=Zt&&(ft.push(It[Fr]),ft.push(It[Fr+1]),ft.push(It[Fr+2]))}}function Ye(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=Ve(It),gi=yr===0?Le:xe,Si=It.start,Mi,Pi,Gi=0;Gijt&&(Pi=gi(Vr,Ki,ka,la,Fa,jt),Zr&&(Vr.start=Si+Mi*Pi)):Ra>Zt?jo=jt&&(Pi=gi(Vr,Ki,ka,la,Fa,jt),oa=!0),jo>Zt&&Ra<=Zt&&(Pi=gi(Vr,Ki,ka,la,Fa,Zt),oa=!0),!Fr&&oa&&(Zr&&(Vr.end=Si+Mi*Pi),ft.push(Vr),Vr=Ve(It)),Zr&&(Si+=Mi)}var Sn=It.length-3;Ki=It[Sn],ka=It[Sn+1],jn=It[Sn+2],Ra=yr===0?Ki:ka,Ra>=jt&&Ra<=Zt&&ht(Vr,Ki,ka,jn),Sn=Vr.length-3,Fr&&Sn>=3&&(Vr[Sn]!==Vr[0]||Vr[Sn+1]!==Vr[1])&&ht(Vr,Vr[0],Vr[1],Vr[2]),Vr.length&&ft.push(Vr)}function Ve(It){var ft=[];return ft.size=It.size,ft.start=It.start,ft.end=It.end,ft}function Xe(It,ft,jt,Zt,yr,Fr){for(var Zr=0;ZrZr.maxX&&(Zr.maxX=Mi),Pi>Zr.maxY&&(Zr.maxY=Pi)}return Zr}function ai(It,ft,jt,Zt){var yr=ft.geometry,Fr=ft.type,Zr=[];if(Fr==="Point"||Fr==="MultiPoint")for(var Vr=0;Vr0&&ft.size<(yr?Zr:Zt)){jt.numPoints+=ft.length/3;return}for(var Vr=[],gi=0;giZr)&&(jt.numSimplified++,Vr.push(ft[gi]),Vr.push(ft[gi+1])),jt.numPoints++;yr&&ri(Vr,Fr),It.push(Vr)}function ri(It,ft){for(var jt=0,Zt=0,yr=It.length,Fr=yr-2;Zt0===ft)for(Zt=0,yr=It.length;Zt24)throw new Error("maxZoom should be in the 0-24 range");if(ft.promoteId&&ft.generateId)throw new Error("promoteId and generateId cannot be used together.");var Zt=Ht(It,ft);this.tiles={},this.tileCoords=[],jt&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",ft.indexMaxZoom,ft.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),Zt=Se(Zt,ft),Zt.length&&this.splitTile(Zt,0,0,0),jt&&(Zt.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}nn.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},nn.prototype.splitTile=function(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=[It,ft,jt,Zt],gi=this.options,Si=gi.debug;Vr.length;){Zt=Vr.pop(),jt=Vr.pop(),ft=Vr.pop(),It=Vr.pop();var Mi=1<1&&console.time("creation"),Gi=this.tiles[Pi]=Qr(It,ft,jt,Zt,gi),this.tileCoords.push({z:ft,x:jt,y:Zt}),Si)){Si>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",ft,jt,Zt,Gi.numFeatures,Gi.numPoints,Gi.numSimplified),console.timeEnd("creation"));var Ki="z"+ft;this.stats[Ki]=(this.stats[Ki]||0)+1,this.total++}if(Gi.source=It,yr){if(ft===gi.maxZoom||ft===yr)continue;var ka=1<1&&console.time("clipping");var jn=.5*gi.buffer/gi.extent,la=.5-jn,Fa=.5+jn,Ra=1+jn,jo,oa,Sn,Ha,oo,xn;jo=oa=Sn=Ha=null,oo=ut(It,Mi,jt-jn,jt+Fa,0,Gi.minX,Gi.maxX,gi),xn=ut(It,Mi,jt+la,jt+Ra,0,Gi.minX,Gi.maxX,gi),It=null,oo&&(jo=ut(oo,Mi,Zt-jn,Zt+Fa,1,Gi.minY,Gi.maxY,gi),oa=ut(oo,Mi,Zt+la,Zt+Ra,1,Gi.minY,Gi.maxY,gi),oo=null),xn&&(Sn=ut(xn,Mi,Zt-jn,Zt+Fa,1,Gi.minY,Gi.maxY,gi),Ha=ut(xn,Mi,Zt+la,Zt+Ra,1,Gi.minY,Gi.maxY,gi),xn=null),Si>1&&console.timeEnd("clipping"),Vr.push(jo||[],ft+1,jt*2,Zt*2),Vr.push(oa||[],ft+1,jt*2,Zt*2+1),Vr.push(Sn||[],ft+1,jt*2+1,Zt*2),Vr.push(Ha||[],ft+1,jt*2+1,Zt*2+1)}}},nn.prototype.getTile=function(It,ft,jt){var Zt=this.options,yr=Zt.extent,Fr=Zt.debug;if(It<0||It>24)return null;var Zr=1<1&&console.log("drilling down to z%d-%d-%d",It,ft,jt);for(var gi=It,Si=ft,Mi=jt,Pi;!Pi&&gi>0;)gi--,Si=Math.floor(Si/2),Mi=Math.floor(Mi/2),Pi=this.tiles[Wi(gi,Si,Mi)];return!Pi||!Pi.source?null:(Fr>1&&console.log("found parent tile z%d-%d-%d",gi,Si,Mi),Fr>1&&console.time("drilling down"),this.splitTile(Pi.source,gi,Si,Mi,It,ft,jt),Fr>1&&console.timeEnd("drilling down"),this.tiles[Vr]?Vt(this.tiles[Vr],yr):null)};function Wi(It,ft,jt){return((1<=0?0:Y.button},o.remove=function(Y){Y.parentNode&&Y.parentNode.removeChild(Y)};function x(Y,z,K){var O,$,pe,de=i.browser.devicePixelRatio>1?"@2x":"",Ie=i.getJSON(z.transformRequest(z.normalizeSpriteURL(Y,de,".json"),i.ResourceType.SpriteJSON),function(Kt,ir){Ie=null,pe||(pe=Kt,O=ir,pt())}),$e=i.getImage(z.transformRequest(z.normalizeSpriteURL(Y,de,".png"),i.ResourceType.SpriteImage),function(Kt,ir){$e=null,pe||(pe=Kt,$=ir,pt())});function pt(){if(pe)K(pe);else if(O&&$){var Kt=i.browser.getImageData($),ir={};for(var Jt in O){var vt=O[Jt],Pt=vt.width,Wt=vt.height,rr=vt.x,dr=vt.y,pr=vt.sdf,kr=vt.pixelRatio,Ar=vt.stretchX,gr=vt.stretchY,Cr=vt.content,cr=new i.RGBAImage({width:Pt,height:Wt});i.RGBAImage.copy(Kt,cr,{x:rr,y:dr},{x:0,y:0},{width:Pt,height:Wt}),ir[Jt]={data:cr,pixelRatio:kr,sdf:pr,stretchX:Ar,stretchY:gr,content:Cr}}K(null,ir)}}return{cancel:function(){Ie&&(Ie.cancel(),Ie=null),$e&&($e.cancel(),$e=null)}}}function b(Y){var z=Y.userImage;if(z&&z.render){var K=z.render();if(K)return Y.data.replace(new Uint8Array(z.data.buffer)),!0}return!1}var g=1,E=function(Y){function z(){Y.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new i.RGBAImage({width:1,height:1}),this.dirty=!0}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.isLoaded=function(){return this.loaded},z.prototype.setLoaded=function(O){if(this.loaded!==O&&(this.loaded=O,O)){for(var $=0,pe=this.requestors;$=0?1.2:1))}C.prototype.draw=function(Y){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(Y,this.buffer,this.middle);for(var z=this.ctx.getImageData(0,0,this.size,this.size),K=new Uint8ClampedArray(this.size*this.size),O=0;O65535){Kt(new Error("glyphs > 65535 not supported"));return}if(vt.ranges[Wt]){Kt(null,{stack:ir,id:Jt,glyph:Pt});return}var rr=vt.requests[Wt];rr||(rr=vt.requests[Wt]=[],P.loadGlyphRange(ir,Wt,O.url,O.requestManager,function(dr,pr){if(pr){for(var kr in pr)O._doesCharSupportLocalGlyph(+kr)||(vt.glyphs[+kr]=pr[+kr]);vt.ranges[Wt]=!0}for(var Ar=0,gr=rr;Ar1&&(pt=z[++$e]);var ir=Math.abs(Kt-pt.left),Jt=Math.abs(Kt-pt.right),vt=Math.min(ir,Jt),Pt=void 0,Wt=pe/O*($+1);if(pt.isDash){var rr=$-Math.abs(Wt);Pt=Math.sqrt(vt*vt+rr*rr)}else Pt=$-Math.sqrt(vt*vt+Wt*Wt);this.data[Ie+Kt]=Math.max(0,Math.min(255,Pt+128))}},H.prototype.addRegularDash=function(z){for(var K=z.length-1;K>=0;--K){var O=z[K],$=z[K+1];O.zeroLength?z.splice(K,1):$&&$.isDash===O.isDash&&($.left=O.left,z.splice(K,1))}var pe=z[0],de=z[z.length-1];pe.isDash===de.isDash&&(pe.left=de.left-this.width,de.right=pe.right+this.width);for(var Ie=this.width*this.nextRow,$e=0,pt=z[$e],Kt=0;Kt1&&(pt=z[++$e]);var ir=Math.abs(Kt-pt.left),Jt=Math.abs(Kt-pt.right),vt=Math.min(ir,Jt),Pt=pt.isDash?vt:-vt;this.data[Ie+Kt]=Math.max(0,Math.min(255,Pt+128))}},H.prototype.addDash=function(z,K){var O=K?7:0,$=2*O+1;if(this.nextRow+$>this.height)return i.warnOnce("LineAtlas out of space"),null;for(var pe=0,de=0;de=O.minX&&z.x=O.minY&&z.y0&&(Kt[new i.OverscaledTileID(O.overscaledZ,Ie,$.z,de,$.y-1).key]={backfilled:!1},Kt[new i.OverscaledTileID(O.overscaledZ,O.wrap,$.z,$.x,$.y-1).key]={backfilled:!1},Kt[new i.OverscaledTileID(O.overscaledZ,pt,$.z,$e,$.y-1).key]={backfilled:!1}),$.y+10&&(pe.resourceTiming=O._resourceTiming,O._resourceTiming=[]),O.fire(new i.Event("data",pe))})},z.prototype.onAdd=function(O){this.map=O,this.load()},z.prototype.setData=function(O){var $=this;return this._data=O,this.fire(new i.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(pe){if(pe){$.fire(new i.ErrorEvent(pe));return}var de={dataType:"source",sourceDataType:"content"};$._collectResourceTiming&&$._resourceTiming&&$._resourceTiming.length>0&&(de.resourceTiming=$._resourceTiming,$._resourceTiming=[]),$.fire(new i.Event("data",de))}),this},z.prototype.getClusterExpansionZoom=function(O,$){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:O,source:this.id},$),this},z.prototype.getClusterChildren=function(O,$){return this.actor.send("geojson.getClusterChildren",{clusterId:O,source:this.id},$),this},z.prototype.getClusterLeaves=function(O,$,pe,de){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:O,limit:$,offset:pe},de),this},z.prototype._updateWorkerData=function(O){var $=this;this._loaded=!1;var pe=i.extend({},this.workerOptions),de=this._data;typeof de=="string"?(pe.request=this.map._requestManager.transformRequest(i.browser.resolveURL(de),i.ResourceType.Source),pe.request.collectResourceTiming=this._collectResourceTiming):pe.data=JSON.stringify(de),this.actor.send(this.type+".loadData",pe,function(Ie,$e){$._removed||$e&&$e.abandoned||($._loaded=!0,$e&&$e.resourceTiming&&$e.resourceTiming[$.id]&&($._resourceTiming=$e.resourceTiming[$.id].slice(0)),$.actor.send($.type+".coalesce",{source:pe.source},null),O(Ie))})},z.prototype.loaded=function(){return this._loaded},z.prototype.loadTile=function(O,$){var pe=this,de=O.actor?"reloadTile":"loadTile";O.actor=this.actor;var Ie={type:this.type,uid:O.uid,tileID:O.tileID,zoom:O.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:i.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};O.request=this.actor.send(de,Ie,function($e,pt){return delete O.request,O.unloadVectorData(),O.aborted?$(null):$e?$($e):(O.loadVectorData(pt,pe.map.painter,de==="reloadTile"),$(null))})},z.prototype.abortTile=function(O){O.request&&(O.request.cancel(),delete O.request),O.aborted=!0},z.prototype.unloadTile=function(O){O.unloadVectorData(),this.actor.send("removeTile",{uid:O.uid,type:this.type,source:this.id})},z.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},z.prototype.serialize=function(){return i.extend({},this._options,{type:this.type,data:this._data})},z.prototype.hasTransition=function(){return!1},z}(i.Evented),Me=i.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),ke=function(Y){function z(K,O,$,pe){Y.call(this),this.id=K,this.dispatcher=$,this.coordinates=O.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(pe),this.options=O}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.load=function(O,$){var pe=this;this._loaded=!1,this.fire(new i.Event("dataloading",{dataType:"source"})),this.url=this.options.url,i.getImage(this.map._requestManager.transformRequest(this.url,i.ResourceType.Image),function(de,Ie){pe._loaded=!0,de?pe.fire(new i.ErrorEvent(de)):Ie&&(pe.image=Ie,O&&(pe.coordinates=O),$&&$(),pe._finishLoading())})},z.prototype.loaded=function(){return this._loaded},z.prototype.updateImage=function(O){var $=this;return!this.image||!O.url?this:(this.options.url=O.url,this.load(O.coordinates,function(){$.texture=null}),this)},z.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"metadata"})))},z.prototype.onAdd=function(O){this.map=O,this.load()},z.prototype.setCoordinates=function(O){var $=this;this.coordinates=O;var pe=O.map(i.MercatorCoordinate.fromLngLat);this.tileID=ge(pe),this.minzoom=this.maxzoom=this.tileID.z;var de=pe.map(function(Ie){return $.tileID.getTilePoint(Ie)._round()});return this._boundsArray=new i.StructArrayLayout4i8,this._boundsArray.emplaceBack(de[0].x,de[0].y,0,0),this._boundsArray.emplaceBack(de[1].x,de[1].y,i.EXTENT,0),this._boundsArray.emplaceBack(de[3].x,de[3].y,0,i.EXTENT),this._boundsArray.emplaceBack(de[2].x,de[2].y,i.EXTENT,i.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"content"})),this},z.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||!this.image)){var O=this.map.painter.context,$=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new i.Texture(O,this.image,$.RGBA),this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE));for(var pe in this.tiles){var de=this.tiles[pe];de.state!=="loaded"&&(de.state="loaded",de.texture=this.texture)}}},z.prototype.loadTile=function(O,$){this.tileID&&this.tileID.equals(O.tileID.canonical)?(this.tiles[String(O.tileID.wrap)]=O,O.buckets={},$(null)):(O.state="errored",$(null))},z.prototype.serialize=function(){return{type:"image",url:this.options.url,coordinates:this.coordinates}},z.prototype.hasTransition=function(){return!1},z}(i.Evented);function ge(Y){for(var z=1/0,K=1/0,O=-1/0,$=-1/0,pe=0,de=Y;pe$.end(0)?this.fire(new i.ErrorEvent(new i.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+$.start(0)+" and "+$.end(0)+"-second mark."))):this.video.currentTime=O}},z.prototype.getVideo=function(){return this.video},z.prototype.onAdd=function(O){this.map||(this.map=O,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},z.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||this.video.readyState<2)){var O=this.map.painter.context,$=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE),$.texSubImage2D($.TEXTURE_2D,0,0,0,$.RGBA,$.UNSIGNED_BYTE,this.video)):(this.texture=new i.Texture(O,this.video,$.RGBA),this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE));for(var pe in this.tiles){var de=this.tiles[pe];de.state!=="loaded"&&(de.state="loaded",de.texture=this.texture)}}},z.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},z.prototype.hasTransition=function(){return this.video&&!this.video.paused},z}(ke),Te=function(Y){function z(K,O,$,pe){Y.call(this,K,O,$,pe),O.coordinates?(!Array.isArray(O.coordinates)||O.coordinates.length!==4||O.coordinates.some(function(de){return!Array.isArray(de)||de.length!==2||de.some(function(Ie){return typeof Ie!="number"})}))&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'missing required property "coordinates"'))),O.animate&&typeof O.animate!="boolean"&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'optional "animate" property must be a boolean value'))),O.canvas?typeof O.canvas!="string"&&!(O.canvas instanceof i.window.HTMLCanvasElement)&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'missing required property "canvas"'))),this.options=O,this.animate=O.animate!==void 0?O.animate:!0}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.load=function(){if(this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof i.window.HTMLCanvasElement?this.options.canvas:i.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()){this.fire(new i.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero.")));return}this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading()},z.prototype.getCanvas=function(){return this.canvas},z.prototype.onAdd=function(O){this.map=O,this.load(),this.canvas&&this.animate&&this.play()},z.prototype.onRemove=function(){this.pause()},z.prototype.prepare=function(){var O=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,O=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,O=!0),!this._hasInvalidDimensions()&&Object.keys(this.tiles).length!==0){var $=this.map.painter.context,pe=$.gl;this.boundsBuffer||(this.boundsBuffer=$.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(O||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new i.Texture($,this.canvas,pe.RGBA,{premultiply:!0});for(var de in this.tiles){var Ie=this.tiles[de];Ie.state!=="loaded"&&(Ie.state="loaded",Ie.texture=this.texture)}}},z.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},z.prototype.hasTransition=function(){return this._playing},z.prototype._hasInvalidDimensions=function(){for(var O=0,$=[this.canvas.width,this.canvas.height];O<$.length;O+=1){var pe=$[O];if(isNaN(pe)||pe<=0)return!0}return!1},z}(ke),Ee={vector:W,raster:re,"raster-dem":ae,geojson:_e,video:ie,image:ke,canvas:Te},Ae=function(Y,z,K,O){var $=new Ee[z.type](Y,z,K,O);if($.id!==Y)throw new Error("Expected Source id to be "+Y+" instead of "+$.id);return i.bindAll(["load","abort","unload","serialize","prepare"],$),$},ze=function(Y){return Ee[Y]},Ce=function(Y,z){Ee[Y]=z};function me(Y,z){var K=i.identity([]);return i.translate(K,K,[1,1,0]),i.scale(K,K,[Y.width*.5,Y.height*.5,1]),i.multiply(K,K,Y.calculatePosMatrix(z.toUnwrapped()))}function Re(Y,z,K){if(Y)for(var O=0,$=Y;O<$.length;O+=1){var pe=$[O],de=z[pe];if(de&&de.source===K&&de.type==="fill-extrusion")return!0}else for(var Ie in z){var $e=z[Ie];if($e.source===K&&$e.type==="fill-extrusion")return!0}return!1}function ce(Y,z,K,O,$,pe){var de=Re($&&$.layers,z,Y.id),Ie=pe.maxPitchScaleFactor(),$e=Y.tilesIn(O,Ie,de);$e.sort(ct);for(var pt=[],Kt=0,ir=$e;Ktthis.max){var Ie=this._getAndRemoveByKey(this.order[0]);Ie&&this.onRemove(Ie)}return this},rt.prototype.has=function(z){return z.wrapped().key in this.data},rt.prototype.getAndRemove=function(z){return this.has(z)?this._getAndRemoveByKey(z.wrapped().key):null},rt.prototype._getAndRemoveByKey=function(z){var K=this.data[z].shift();return K.timeout&&clearTimeout(K.timeout),this.data[z].length===0&&delete this.data[z],this.order.splice(this.order.indexOf(z),1),K.value},rt.prototype.getByKey=function(z){var K=this.data[z];return K?K[0].value:null},rt.prototype.get=function(z){if(!this.has(z))return null;var K=this.data[z.wrapped().key][0];return K.value},rt.prototype.remove=function(z,K){if(!this.has(z))return this;var O=z.wrapped().key,$=K===void 0?0:this.data[O].indexOf(K),pe=this.data[O][$];return this.data[O].splice($,1),pe.timeout&&clearTimeout(pe.timeout),this.data[O].length===0&&delete this.data[O],this.onRemove(pe.value),this.order.splice(this.order.indexOf(O),1),this},rt.prototype.setMaxSize=function(z){for(this.max=z;this.order.length>this.max;){var K=this._getAndRemoveByKey(this.order[0]);K&&this.onRemove(K)}return this},rt.prototype.filter=function(z){var K=[];for(var O in this.data)for(var $=0,pe=this.data[O];$1||(Math.abs(ir)>1&&(Math.abs(ir+vt)===1?ir+=vt:Math.abs(ir-vt)===1&&(ir-=vt)),!(!Kt.dem||!pt.dem)&&(pt.dem.backfillBorder(Kt.dem,ir,Jt),pt.neighboringTiles&&pt.neighboringTiles[Pt]&&(pt.neighboringTiles[Pt].backfilled=!0)))}},z.prototype.getTile=function(O){return this.getTileByID(O.key)},z.prototype.getTileByID=function(O){return this._tiles[O]},z.prototype._retainLoadedChildren=function(O,$,pe,de){for(var Ie in this._tiles){var $e=this._tiles[Ie];if(!(de[Ie]||!$e.hasData()||$e.tileID.overscaledZ<=$||$e.tileID.overscaledZ>pe)){for(var pt=$e.tileID;$e&&$e.tileID.overscaledZ>$+1;){var Kt=$e.tileID.scaledTo($e.tileID.overscaledZ-1);$e=this._tiles[Kt.key],$e&&$e.hasData()&&(pt=Kt)}for(var ir=pt;ir.overscaledZ>$;)if(ir=ir.scaledTo(ir.overscaledZ-1),O[ir.key]){de[pt.key]=pt;break}}}},z.prototype.findLoadedParent=function(O,$){if(O.key in this._loadedParentTiles){var pe=this._loadedParentTiles[O.key];return pe&&pe.tileID.overscaledZ>=$?pe:null}for(var de=O.overscaledZ-1;de>=$;de--){var Ie=O.scaledTo(de),$e=this._getLoadedTile(Ie);if($e)return $e}},z.prototype._getLoadedTile=function(O){var $=this._tiles[O.key];if($&&$.hasData())return $;var pe=this._cache.getByKey(O.wrapped().key);return pe},z.prototype.updateCacheSize=function(O){var $=Math.ceil(O.width/this._source.tileSize)+1,pe=Math.ceil(O.height/this._source.tileSize)+1,de=$*pe,Ie=5,$e=Math.floor(de*Ie),pt=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,$e):$e;this._cache.setMaxSize(pt)},z.prototype.handleWrapJump=function(O){var $=this._prevLng===void 0?O:this._prevLng,pe=O-$,de=pe/360,Ie=Math.round(de);if(this._prevLng=O,Ie){var $e={};for(var pt in this._tiles){var Kt=this._tiles[pt];Kt.tileID=Kt.tileID.unwrapTo(Kt.tileID.wrap+Ie),$e[Kt.tileID.key]=Kt}this._tiles=$e;for(var ir in this._timers)clearTimeout(this._timers[ir]),delete this._timers[ir];for(var Jt in this._tiles){var vt=this._tiles[Jt];this._setTileReloadTimer(Jt,vt)}}},z.prototype.update=function(O){var $=this;if(this.transform=O,!(!this._sourceLoaded||this._paused)){this.updateCacheSize(O),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={};var pe;this.used?this._source.tileID?pe=O.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(yi){return new i.OverscaledTileID(yi.canonical.z,yi.wrap,yi.canonical.z,yi.canonical.x,yi.canonical.y)}):(pe=O.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(pe=pe.filter(function(yi){return $._source.hasTile(yi)}))):pe=[];var de=O.coveringZoomLevel(this._source),Ie=Math.max(de-z.maxOverzooming,this._source.minzoom),$e=Math.max(de+z.maxUnderzooming,this._source.minzoom),pt=this._updateRetainedTiles(pe,de);if(gi(this._source.type)){for(var Kt={},ir={},Jt=Object.keys(pt),vt=0,Pt=Jt;vtthis._source.maxzoom){var pr=rr.children(this._source.maxzoom)[0],kr=this.getTile(pr);if(kr&&kr.hasData()){pe[pr.key]=pr;continue}}else{var Ar=rr.children(this._source.maxzoom);if(pe[Ar[0].key]&&pe[Ar[1].key]&&pe[Ar[2].key]&&pe[Ar[3].key])continue}for(var gr=dr.wasRequested(),Cr=rr.overscaledZ-1;Cr>=Ie;--Cr){var cr=rr.scaledTo(Cr);if(de[cr.key]||(de[cr.key]=!0,dr=this.getTile(cr),!dr&&gr&&(dr=this._addTile(cr)),dr&&(pe[cr.key]=cr,gr=dr.wasRequested(),dr.hasData())))break}}}return pe},z.prototype._updateLoadedParentTileCache=function(){this._loadedParentTiles={};for(var O in this._tiles){for(var $=[],pe=void 0,de=this._tiles[O].tileID;de.overscaledZ>0;){if(de.key in this._loadedParentTiles){pe=this._loadedParentTiles[de.key];break}$.push(de.key);var Ie=de.scaledTo(de.overscaledZ-1);if(pe=this._getLoadedTile(Ie),pe)break;de=Ie}for(var $e=0,pt=$;$e0)&&($.hasData()&&$.state!=="reloading"?this._cache.add($.tileID,$,$.getExpiryTimeout()):($.aborted=!0,this._abortTile($),this._unloadTile($))))},z.prototype.clearTiles=function(){this._shouldReloadOnResume=!1,this._paused=!1;for(var O in this._tiles)this._removeTile(O);this._cache.reset()},z.prototype.tilesIn=function(O,$,pe){var de=this,Ie=[],$e=this.transform;if(!$e)return Ie;for(var pt=pe?$e.getCameraQueryGeometry(O):O,Kt=O.map(function(Cr){return $e.pointCoordinate(Cr)}),ir=pt.map(function(Cr){return $e.pointCoordinate(Cr)}),Jt=this.getIds(),vt=1/0,Pt=1/0,Wt=-1/0,rr=-1/0,dr=0,pr=ir;dr=0&&tn[1].y+yi>=0){var Ri=Kt.map(function(Qn){return Gr.getTilePoint(Qn)}),ln=ir.map(function(Qn){return Gr.getTilePoint(Qn)});Ie.push({tile:cr,tileID:Gr,queryGeometry:Ri,cameraQueryGeometry:ln,scale:ei})}}},gr=0;gr=i.browser.now())return!0}return!1},z.prototype.setFeatureState=function(O,$,pe){O=O||"_geojsonTileLayer",this._state.updateState(O,$,pe)},z.prototype.removeFeatureState=function(O,$,pe){O=O||"_geojsonTileLayer",this._state.removeFeatureState(O,$,pe)},z.prototype.getFeatureState=function(O,$){return O=O||"_geojsonTileLayer",this._state.getState(O,$)},z.prototype.setDependencies=function(O,$,pe){var de=this._tiles[O];de&&de.setDependencies($,pe)},z.prototype.reloadTilesForDependencies=function(O,$){for(var pe in this._tiles){var de=this._tiles[pe];de.hasDependency(O,$)&&this._reloadTile(pe,"reloading")}this._cache.filter(function(Ie){return!Ie.hasDependency(O,$)})},z}(i.Evented);Zr.maxOverzooming=10,Zr.maxUnderzooming=3;function Vr(Y,z){var K=Math.abs(Y.wrap*2)-+(Y.wrap<0),O=Math.abs(z.wrap*2)-+(z.wrap<0);return Y.overscaledZ-z.overscaledZ||O-K||z.canonical.y-Y.canonical.y||z.canonical.x-Y.canonical.x}function gi(Y){return Y==="raster"||Y==="image"||Y==="video"}function Si(){return new i.window.Worker(ns.workerUrl)}var Mi="mapboxgl_preloaded_worker_pool",Pi=function(){this.active={}};Pi.prototype.acquire=function(z){if(!this.workers)for(this.workers=[];this.workers.length0?($-de)/Ie:0;return this.points[pe].mult(1-$e).add(this.points[K].mult($e))};var hi=function(z,K,O){var $=this.boxCells=[],pe=this.circleCells=[];this.xCellCount=Math.ceil(z/O),this.yCellCount=Math.ceil(K/O);for(var de=0;dethis.width||$<0||K>this.height)return pe?!1:[];var Ie=[];if(z<=0&&K<=0&&this.width<=O&&this.height<=$){if(pe)return!0;for(var $e=0;$e0:Ie}},hi.prototype._queryCircle=function(z,K,O,$,pe){var de=z-O,Ie=z+O,$e=K-O,pt=K+O;if(Ie<0||de>this.width||pt<0||$e>this.height)return $?!1:[];var Kt=[],ir={hitTest:$,circle:{x:z,y:K,radius:O},seenUids:{box:{},circle:{}}};return this._forEachCell(de,$e,Ie,pt,this._queryCellCircle,Kt,ir,pe),$?Kt.length>0:Kt},hi.prototype.query=function(z,K,O,$,pe){return this._query(z,K,O,$,!1,pe)},hi.prototype.hitTest=function(z,K,O,$,pe){return this._query(z,K,O,$,!0,pe)},hi.prototype.hitTestCircle=function(z,K,O,$){return this._queryCircle(z,K,O,!0,$)},hi.prototype._queryCell=function(z,K,O,$,pe,de,Ie,$e){var pt=Ie.seenUids,Kt=this.boxCells[pe];if(Kt!==null)for(var ir=this.bboxes,Jt=0,vt=Kt;Jt=ir[Wt+0]&&$>=ir[Wt+1]&&(!$e||$e(this.boxKeys[Pt]))){if(Ie.hitTest)return de.push(!0),!0;de.push({key:this.boxKeys[Pt],x1:ir[Wt],y1:ir[Wt+1],x2:ir[Wt+2],y2:ir[Wt+3]})}}}var rr=this.circleCells[pe];if(rr!==null)for(var dr=this.circles,pr=0,kr=rr;prIe*Ie+$e*$e},hi.prototype._circleAndRectCollide=function(z,K,O,$,pe,de,Ie){var $e=(de-$)/2,pt=Math.abs(z-($+$e));if(pt>$e+O)return!1;var Kt=(Ie-pe)/2,ir=Math.abs(K-(pe+Kt));if(ir>Kt+O)return!1;if(pt<=$e||ir<=Kt)return!0;var Jt=pt-$e,vt=ir-Kt;return Jt*Jt+vt*vt<=O*O};function Ji(Y,z,K,O,$){var pe=i.create();return z?(i.scale(pe,pe,[1/$,1/$,1]),K||i.rotateZ(pe,pe,O.angle)):i.multiply(pe,O.labelPlaneMatrix,Y),pe}function ua(Y,z,K,O,$){if(z){var pe=i.clone(Y);return i.scale(pe,pe,[$,$,1]),K||i.rotateZ(pe,pe,-O.angle),pe}else return O.glCoordMatrix}function Fn(Y,z){var K=[Y.x,Y.y,0,1];wl(K,K,z);var O=K[3];return{point:new i.Point(K[0]/O,K[1]/O),signedDistanceFromCamera:O}}function Sa(Y,z){return .5+.5*(Y/z)}function go(Y,z){var K=Y[0]/Y[3],O=Y[1]/Y[3],$=K>=-z[0]&&K<=z[0]&&O>=-z[1]&&O<=z[1];return $}function Oo(Y,z,K,O,$,pe,de,Ie){var $e=O?Y.textSizeData:Y.iconSizeData,pt=i.evaluateSizeForZoom($e,K.transform.zoom),Kt=[256/K.width*2+1,256/K.height*2+1],ir=O?Y.text.dynamicLayoutVertexArray:Y.icon.dynamicLayoutVertexArray;ir.clear();for(var Jt=Y.lineVertexArray,vt=O?Y.text.placedSymbolArray:Y.icon.placedSymbolArray,Pt=K.transform.width/K.transform.height,Wt=!1,rr=0;rrpe)return{useVertical:!0}}return(Y===i.WritingMode.vertical?z.yK.x)?{needsFlipping:!0}:null}function xo(Y,z,K,O,$,pe,de,Ie,$e,pt,Kt,ir,Jt,vt){var Pt=z/24,Wt=Y.lineOffsetX*Pt,rr=Y.lineOffsetY*Pt,dr;if(Y.numGlyphs>1){var pr=Y.glyphStartIndex+Y.numGlyphs,kr=Y.lineStartIndex,Ar=Y.lineStartIndex+Y.lineLength,gr=ho(Pt,Ie,Wt,rr,K,Kt,ir,Y,$e,pe,Jt);if(!gr)return{notEnoughRoom:!0};var Cr=Fn(gr.first.point,de).point,cr=Fn(gr.last.point,de).point;if(O&&!K){var Gr=Mo(Y.writingMode,Cr,cr,vt);if(Gr)return Gr}dr=[gr.first];for(var ei=Y.glyphStartIndex+1;ei0?ln.point:zs(ir,Ri,yi,1,$),qn=Mo(Y.writingMode,yi,Qn,vt);if(qn)return qn}var rn=ks(Pt*Ie.getoffsetX(Y.glyphStartIndex),Wt,rr,K,Kt,ir,Y.segment,Y.lineStartIndex,Y.lineStartIndex+Y.lineLength,$e,pe,Jt);if(!rn)return{notEnoughRoom:!0};dr=[rn]}for(var bn=0,mn=dr;bn0?1:-1,Pt=0;O&&(vt*=-1,Pt=Math.PI),vt<0&&(Pt+=Math.PI);for(var Wt=vt>0?Ie+de:Ie+de+1,rr=$,dr=$,pr=0,kr=0,Ar=Math.abs(Jt),gr=[];pr+kr<=Ar;){if(Wt+=vt,Wt=$e)return null;if(dr=rr,gr.push(rr),rr=ir[Wt],rr===void 0){var Cr=new i.Point(pt.getx(Wt),pt.gety(Wt)),cr=Fn(Cr,Kt);if(cr.signedDistanceFromCamera>0)rr=ir[Wt]=cr.point;else{var Gr=Wt-vt,ei=pr===0?pe:new i.Point(pt.getx(Gr),pt.gety(Gr));rr=zs(ei,Cr,dr,Ar-pr+1,Kt)}}pr+=kr,kr=dr.dist(rr)}var yi=(Ar-pr)/kr,tn=rr.sub(dr),Ri=tn.mult(yi)._add(dr);Ri._add(tn._unit()._perp()._mult(K*vt));var ln=Pt+Math.atan2(rr.y-dr.y,rr.x-dr.x);return gr.push(Ri),{point:Ri,angle:ln,path:gr}}var Zs=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Xs(Y,z){for(var K=0;K=1;Gn--)mn.push(rn.path[Gn]);for(var da=1;da0){for(var fo=mn[0].clone(),as=mn[0].clone(),tl=1;tl=ln.x&&as.x<=Qn.x&&fo.y>=ln.y&&as.y<=Qn.y?ps=[mn]:as.xQn.x||as.yQn.y?ps=[]:ps=i.clipLine([mn],ln.x,ln.y,Qn.x,Qn.y)}for(var zu=0,Mv=ps;zu=this.screenRightBoundary||$this.screenBottomBoundary},cl.prototype.isInsideGrid=function(z,K,O,$){return O>=0&&z=0&&K0){var Ar;return this.prevPlacement&&this.prevPlacement.variableOffsets[Jt.crossTileID]&&this.prevPlacement.placements[Jt.crossTileID]&&this.prevPlacement.placements[Jt.crossTileID].text&&(Ar=this.prevPlacement.variableOffsets[Jt.crossTileID].anchor),this.variableOffsets[Jt.crossTileID]={textOffset:rr,width:O,height:$,anchor:z,textBoxScale:pe,prevAnchor:Ar},this.markUsedJustification(vt,z,Jt,Pt),vt.allowVerticalPlacement&&(this.markUsedOrientation(vt,Pt,Jt),this.placedOrientations[Jt.crossTileID]=Pt),{shift:dr,placedGlyphBoxes:pr}}},ms.prototype.placeLayerBucketPart=function(z,K,O){var $=this,pe=z.parameters,de=pe.bucket,Ie=pe.layout,$e=pe.posMatrix,pt=pe.textLabelPlaneMatrix,Kt=pe.labelToScreenMatrix,ir=pe.textPixelRatio,Jt=pe.holdingForFade,vt=pe.collisionBoxArray,Pt=pe.partiallyEvaluatedTextSize,Wt=pe.collisionGroup,rr=Ie.get("text-optional"),dr=Ie.get("icon-optional"),pr=Ie.get("text-allow-overlap"),kr=Ie.get("icon-allow-overlap"),Ar=Ie.get("text-rotation-alignment")==="map",gr=Ie.get("text-pitch-alignment")==="map",Cr=Ie.get("icon-text-fit")!=="none",cr=Ie.get("symbol-z-order")==="viewport-y",Gr=pr&&(kr||!de.hasIconData()||dr),ei=kr&&(pr||!de.hasTextData()||rr);!de.collisionArrays&&vt&&de.deserializeCollisionBoxes(vt);var yi=function(rn,bn){if(!K[rn.crossTileID]){if(Jt){$.placements[rn.crossTileID]=new Hs(!1,!1,!1);return}var mn=!1,Gn=!1,da=!0,No=null,Do={box:null,offscreen:null},ps={box:null,offscreen:null},fo=null,as=null,tl=null,zu=0,Mv=0,Ev=0;bn.textFeatureIndex?zu=bn.textFeatureIndex:rn.useRuntimeCollisionCircles&&(zu=rn.featureIndex),bn.verticalTextFeatureIndex&&(Mv=bn.verticalTextFeatureIndex);var yd=bn.textBox;if(yd){var Yv=function(Fu){var kl=i.WritingMode.horizontal;if(de.allowVerticalPlacement&&!Fu&&$.prevPlacement){var bd=$.prevPlacement.placedOrientations[rn.crossTileID];bd&&($.placedOrientations[rn.crossTileID]=bd,kl=bd,$.markUsedOrientation(de,kl,rn))}return kl},cg=function(Fu,kl){if(de.allowVerticalPlacement&&rn.numVerticalGlyphVertices>0&&bn.verticalTextBox)for(var bd=0,sy=de.writingModes;bd0&&(Nd=Nd.filter(function(Fu){return Fu!==xd.anchor}),Nd.unshift(xd.anchor))}var kv=function(Fu,kl,bd){for(var sy=Fu.x2-Fu.x1,A1=Fu.y2-Fu.y1,Yl=rn.textBoxScale,Bx=Cr&&!kr?kl:null,am={box:[],offscreen:!1},Mw=pr?Nd.length*2:Nd.length,Lv=0;Lv=Nd.length,Nx=$.attemptAnchorPlacement(om,Fu,sy,A1,Yl,Ar,gr,ir,$e,Wt,Ew,rn,de,bd,Bx);if(Nx&&(am=Nx.placedGlyphBoxes,am&&am.box&&am.box.length)){mn=!0,No=Nx.shift;break}}return am},Kv=function(){return kv(yd,bn.iconBox,i.WritingMode.horizontal)},Cv=function(){var Fu=bn.verticalTextBox,kl=Do&&Do.box&&Do.box.length;return de.allowVerticalPlacement&&!kl&&rn.numVerticalGlyphVertices>0&&Fu?kv(Fu,bn.verticalIconBox,i.WritingMode.vertical):{box:null,offscreen:null}};cg(Kv,Cv),Do&&(mn=Do.box,da=Do.offscreen);var ny=Yv(Do&&Do.box);if(!mn&&$.prevPlacement){var fg=$.prevPlacement.variableOffsets[rn.crossTileID];fg&&($.variableOffsets[rn.crossTileID]=fg,$.markUsedJustification(de,fg.anchor,rn,ny))}}else{var vp=function(Fu,kl){var bd=$.collisionIndex.placeCollisionBox(Fu,pr,ir,$e,Wt.predicate);return bd&&bd.box&&bd.box.length&&($.markUsedOrientation(de,kl,rn),$.placedOrientations[rn.crossTileID]=kl),bd},_d=function(){return vp(yd,i.WritingMode.horizontal)},pp=function(){var Fu=bn.verticalTextBox;return de.allowVerticalPlacement&&rn.numVerticalGlyphVertices>0&&Fu?vp(Fu,i.WritingMode.vertical):{box:null,offscreen:null}};cg(_d,pp),Yv(Do&&Do.box&&Do.box.length)}}if(fo=Do,mn=fo&&fo.box&&fo.box.length>0,da=fo&&fo.offscreen,rn.useRuntimeCollisionCircles){var Hf=de.text.placedSymbolArray.get(rn.centerJustifiedTextSymbolIndex),hg=i.evaluateSizeForFeature(de.textSizeData,Pt,Hf),ay=Ie.get("text-padding"),Rh=rn.collisionCircleDiameter;as=$.collisionIndex.placeCollisionCircles(pr,Hf,de.lineVertexArray,de.glyphOffsetArray,hg,$e,pt,Kt,O,gr,Wt.predicate,Rh,ay),mn=pr||as.circles.length>0&&!as.collisionDetected,da=da&&as.offscreen}if(bn.iconFeatureIndex&&(Ev=bn.iconFeatureIndex),bn.iconBox){var rm=function(Fu){var kl=Cr&&No?fc(Fu,No.x,No.y,Ar,gr,$.transform.angle):Fu;return $.collisionIndex.placeCollisionBox(kl,kr,ir,$e,Wt.predicate)};ps&&ps.box&&ps.box.length&&bn.verticalIconBox?(tl=rm(bn.verticalIconBox),Gn=tl.box.length>0):(tl=rm(bn.iconBox),Gn=tl.box.length>0),da=da&&tl.offscreen}var w1=rr||rn.numHorizontalGlyphVertices===0&&rn.numVerticalGlyphVertices===0,T1=dr||rn.numIconVertices===0;if(!w1&&!T1?Gn=mn=Gn&&mn:T1?w1||(Gn=Gn&&mn):mn=Gn&&mn,mn&&fo&&fo.box&&(ps&&ps.box&&Mv?$.collisionIndex.insertCollisionBox(fo.box,Ie.get("text-ignore-placement"),de.bucketInstanceId,Mv,Wt.ID):$.collisionIndex.insertCollisionBox(fo.box,Ie.get("text-ignore-placement"),de.bucketInstanceId,zu,Wt.ID)),Gn&&tl&&$.collisionIndex.insertCollisionBox(tl.box,Ie.get("icon-ignore-placement"),de.bucketInstanceId,Ev,Wt.ID),as&&(mn&&$.collisionIndex.insertCollisionCircles(as.circles,Ie.get("text-ignore-placement"),de.bucketInstanceId,zu,Wt.ID),O)){var oy=de.bucketInstanceId,im=$.collisionCircleArrays[oy];im===void 0&&(im=$.collisionCircleArrays[oy]=new Eo);for(var nm=0;nm=0;--Ri){var ln=tn[Ri];yi(de.symbolInstances.get(ln),de.collisionArrays[ln])}else for(var Qn=z.symbolInstanceStart;Qn=0&&(de>=0&&Kt!==de?z.text.placedSymbolArray.get(Kt).crossTileID=0:z.text.placedSymbolArray.get(Kt).crossTileID=O.crossTileID)}},ms.prototype.markUsedOrientation=function(z,K,O){for(var $=K===i.WritingMode.horizontal||K===i.WritingMode.horizontalOnly?K:0,pe=K===i.WritingMode.vertical?K:0,de=[O.leftJustifiedTextSymbolIndex,O.centerJustifiedTextSymbolIndex,O.rightJustifiedTextSymbolIndex],Ie=0,$e=de;Ie<$e.length;Ie+=1){var pt=$e[Ie];z.text.placedSymbolArray.get(pt).placedOrientation=$}O.verticalPlacedTextSymbolIndex&&(z.text.placedSymbolArray.get(O.verticalPlacedTextSymbolIndex).placedOrientation=pe)},ms.prototype.commit=function(z){this.commitTime=z,this.zoomAtLastRecencyCheck=this.transform.zoom;var K=this.prevPlacement,O=!1;this.prevZoomAdjustment=K?K.zoomAdjustment(this.transform.zoom):0;var $=K?K.symbolFadeChange(z):1,pe=K?K.opacities:{},de=K?K.variableOffsets:{},Ie=K?K.placedOrientations:{};for(var $e in this.placements){var pt=this.placements[$e],Kt=pe[$e];Kt?(this.opacities[$e]=new Ys(Kt,$,pt.text,pt.icon),O=O||pt.text!==Kt.text.placed||pt.icon!==Kt.icon.placed):(this.opacities[$e]=new Ys(null,$,pt.text,pt.icon,pt.skipFade),O=O||pt.text||pt.icon)}for(var ir in pe){var Jt=pe[ir];if(!this.opacities[ir]){var vt=new Ys(Jt,$,!1,!1);vt.isHidden()||(this.opacities[ir]=vt,O=O||Jt.text.placed||Jt.icon.placed)}}for(var Pt in de)!this.variableOffsets[Pt]&&this.opacities[Pt]&&!this.opacities[Pt].isHidden()&&(this.variableOffsets[Pt]=de[Pt]);for(var Wt in Ie)!this.placedOrientations[Wt]&&this.opacities[Wt]&&!this.opacities[Wt].isHidden()&&(this.placedOrientations[Wt]=Ie[Wt]);O?this.lastPlacementChangeTime=z:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=K?K.lastPlacementChangeTime:z)},ms.prototype.updateLayerOpacities=function(z,K){for(var O={},$=0,pe=K;$0||gr>0,yi=kr.numIconVertices>0,tn=$.placedOrientations[kr.crossTileID],Ri=tn===i.WritingMode.vertical,ln=tn===i.WritingMode.horizontal||tn===i.WritingMode.horizontalOnly;if(ei){var Qn=Ec(Gr.text),qn=Ri?Zn:Qn;Pt(z.text,Ar,qn);var rn=ln?Zn:Qn;Pt(z.text,gr,rn);var bn=Gr.text.isHidden();[kr.rightJustifiedTextSymbolIndex,kr.centerJustifiedTextSymbolIndex,kr.leftJustifiedTextSymbolIndex].forEach(function(Ev){Ev>=0&&(z.text.placedSymbolArray.get(Ev).hidden=bn||Ri?1:0)}),kr.verticalPlacedTextSymbolIndex>=0&&(z.text.placedSymbolArray.get(kr.verticalPlacedTextSymbolIndex).hidden=bn||ln?1:0);var mn=$.variableOffsets[kr.crossTileID];mn&&$.markUsedJustification(z,mn.anchor,kr,tn);var Gn=$.placedOrientations[kr.crossTileID];Gn&&($.markUsedJustification(z,"left",kr,Gn),$.markUsedOrientation(z,Gn,kr))}if(yi){var da=Ec(Gr.icon),No=!(Jt&&kr.verticalPlacedIconSymbolIndex&&Ri);if(kr.placedIconSymbolIndex>=0){var Do=No?da:Zn;Pt(z.icon,kr.numIconVertices,Do),z.icon.placedSymbolArray.get(kr.placedIconSymbolIndex).hidden=Gr.icon.isHidden()}if(kr.verticalPlacedIconSymbolIndex>=0){var ps=No?Zn:da;Pt(z.icon,kr.numVerticalIconVertices,ps),z.icon.placedSymbolArray.get(kr.verticalPlacedIconSymbolIndex).hidden=Gr.icon.isHidden()}}if(z.hasIconCollisionBoxData()||z.hasTextCollisionBoxData()){var fo=z.collisionArrays[pr];if(fo){var as=new i.Point(0,0);if(fo.textBox||fo.verticalTextBox){var tl=!0;if(pt){var zu=$.variableOffsets[Cr];zu?(as=Hu(zu.anchor,zu.width,zu.height,zu.textOffset,zu.textBoxScale),Kt&&as._rotate(ir?$.transform.angle:-$.transform.angle)):tl=!1}fo.textBox&&on(z.textCollisionBox.collisionVertexArray,Gr.text.placed,!tl||Ri,as.x,as.y),fo.verticalTextBox&&on(z.textCollisionBox.collisionVertexArray,Gr.text.placed,!tl||ln,as.x,as.y)}var Mv=!!(!ln&&fo.verticalIconBox);fo.iconBox&&on(z.iconCollisionBox.collisionVertexArray,Gr.icon.placed,Mv,Jt?as.x:0,Jt?as.y:0),fo.verticalIconBox&&on(z.iconCollisionBox.collisionVertexArray,Gr.icon.placed,!Mv,Jt?as.x:0,Jt?as.y:0)}}},rr=0;rrz},ms.prototype.setStale=function(){this.stale=!0};function on(Y,z,K,O,$){Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0)}var fa=Math.pow(2,25),Qu=Math.pow(2,24),Il=Math.pow(2,17),vo=Math.pow(2,16),Wl=Math.pow(2,9),Ks=Math.pow(2,8),Zl=Math.pow(2,1);function Ec(Y){if(Y.opacity===0&&!Y.placed)return 0;if(Y.opacity===1&&Y.placed)return 4294967295;var z=Y.placed?1:0,K=Math.floor(Y.opacity*127);return K*fa+z*Qu+K*Il+z*vo+K*Wl+z*Ks+K*Zl+z}var Zn=0,ko=function(z){this._sortAcrossTiles=z.layout.get("symbol-z-order")!=="viewport-y"&&z.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};ko.prototype.continuePlacement=function(z,K,O,$,pe){for(var de=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var Ie=z[this._currentPlacementIndex],$e=K[Ie],pt=this.placement.collisionIndex.transform.zoom;if($e.type==="symbol"&&(!$e.minzoom||$e.minzoom<=pt)&&(!$e.maxzoom||$e.maxzoom>pt)){this._inProgressLayer||(this._inProgressLayer=new ko($e));var Kt=this._inProgressLayer.continuePlacement(O[$e.source],this.placement,this._showCollisionBoxes,$e,de);if(Kt)return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},Co.prototype.commit=function(z){return this.placement.commit(z),this.placement};var Tl=512/i.EXTENT/2,uf=function(z,K,O){this.tileID=z,this.indexedSymbolInstances={},this.bucketInstanceId=O;for(var $=0;$z.overscaledZ)for(var pt in $e){var Kt=$e[pt];Kt.tileID.isChildOf(z)&&Kt.findMatches(K.symbolInstances,z,de)}else{var ir=z.scaledTo(Number(Ie)),Jt=$e[ir.key];Jt&&Jt.findMatches(K.symbolInstances,z,de)}}for(var vt=0;vt0)throw new Error("Unimplemented: "+de.map(function(Ie){return Ie.command}).join(", ")+".");return pe.forEach(function(Ie){Ie.command!=="setTransition"&&$[Ie.command].apply($,Ie.args)}),this.stylesheet=O,!0},z.prototype.addImage=function(O,$){if(this.getImage(O))return this.fire(new i.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(O,$),this._afterImageUpdated(O)},z.prototype.updateImage=function(O,$){this.imageManager.updateImage(O,$)},z.prototype.getImage=function(O){return this.imageManager.getImage(O)},z.prototype.removeImage=function(O){if(!this.getImage(O))return this.fire(new i.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(O),this._afterImageUpdated(O)},z.prototype._afterImageUpdated=function(O){this._availableImages=this.imageManager.listImages(),this._changedImages[O]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new i.Event("data",{dataType:"style"}))},z.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},z.prototype.addSource=function(O,$,pe){var de=this;if(pe===void 0&&(pe={}),this._checkLoaded(),this.sourceCaches[O]!==void 0)throw new Error("There is already a source with this ID");if(!$.type)throw new Error("The type property must be defined, but only the following properties were given: "+Object.keys($).join(", ")+".");var Ie=["vector","raster","geojson","video","image"],$e=Ie.indexOf($.type)>=0;if(!($e&&this._validate(i.validateStyle.source,"sources."+O,$,null,pe))){this.map&&this.map._collectResourceTiming&&($.collectResourceTiming=!0);var pt=this.sourceCaches[O]=new Zr(O,$,this.dispatcher);pt.style=this,pt.setEventedParent(this,function(){return{isSourceLoaded:de.loaded(),source:pt.serialize(),sourceId:O}}),pt.onAdd(this.map),this._changed=!0}},z.prototype.removeSource=function(O){if(this._checkLoaded(),this.sourceCaches[O]===void 0)throw new Error("There is no source with this ID");for(var $ in this._layers)if(this._layers[$].source===O)return this.fire(new i.ErrorEvent(new Error('Source "'+O+'" cannot be removed while layer "'+$+'" is using it.')));var pe=this.sourceCaches[O];delete this.sourceCaches[O],delete this._updatedSources[O],pe.fire(new i.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:O})),pe.setEventedParent(null),pe.clearTiles(),pe.onRemove&&pe.onRemove(this.map),this._changed=!0},z.prototype.setGeoJSONSourceData=function(O,$){this._checkLoaded();var pe=this.sourceCaches[O].getSource();pe.setData($),this._changed=!0},z.prototype.getSource=function(O){return this.sourceCaches[O]&&this.sourceCaches[O].getSource()},z.prototype.addLayer=function(O,$,pe){pe===void 0&&(pe={}),this._checkLoaded();var de=O.id;if(this.getLayer(de)){this.fire(new i.ErrorEvent(new Error('Layer with id "'+de+'" already exists on this map')));return}var Ie;if(O.type==="custom"){if(Al(this,i.validateCustomStyleLayer(O)))return;Ie=i.createStyleLayer(O)}else{if(typeof O.source=="object"&&(this.addSource(de,O.source),O=i.clone$1(O),O=i.extend(O,{source:de})),this._validate(i.validateStyle.layer,"layers."+de,O,{arrayIndex:-1},pe))return;Ie=i.createStyleLayer(O),this._validateLayer(Ie),Ie.setEventedParent(this,{layer:{id:de}}),this._serializedLayers[Ie.id]=Ie.serialize()}var $e=$?this._order.indexOf($):this._order.length;if($&&$e===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+$+'" does not exist on this map.')));return}if(this._order.splice($e,0,de),this._layerOrderChanged=!0,this._layers[de]=Ie,this._removedLayers[de]&&Ie.source&&Ie.type!=="custom"){var pt=this._removedLayers[de];delete this._removedLayers[de],pt.type!==Ie.type?this._updatedSources[Ie.source]="clear":(this._updatedSources[Ie.source]="reload",this.sourceCaches[Ie.source].pause())}this._updateLayer(Ie),Ie.onAdd&&Ie.onAdd(this.map)},z.prototype.moveLayer=function(O,$){this._checkLoaded(),this._changed=!0;var pe=this._layers[O];if(!pe){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be moved.")));return}if(O!==$){var de=this._order.indexOf(O);this._order.splice(de,1);var Ie=$?this._order.indexOf($):this._order.length;if($&&Ie===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+$+'" does not exist on this map.')));return}this._order.splice(Ie,0,O),this._layerOrderChanged=!0}},z.prototype.removeLayer=function(O){this._checkLoaded();var $=this._layers[O];if(!$){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be removed.")));return}$.setEventedParent(null);var pe=this._order.indexOf(O);this._order.splice(pe,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[O]=$,delete this._layers[O],delete this._serializedLayers[O],delete this._updatedLayers[O],delete this._updatedPaintProps[O],$.onRemove&&$.onRemove(this.map)},z.prototype.getLayer=function(O){return this._layers[O]},z.prototype.hasLayer=function(O){return O in this._layers},z.prototype.setLayerZoomRange=function(O,$,pe){this._checkLoaded();var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot have zoom extent.")));return}de.minzoom===$&&de.maxzoom===pe||($!=null&&(de.minzoom=$),pe!=null&&(de.maxzoom=pe),this._updateLayer(de))},z.prototype.setFilter=function(O,$,pe){pe===void 0&&(pe={}),this._checkLoaded();var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be filtered.")));return}if(!i.deepEqual(de.filter,$)){if($==null){de.filter=void 0,this._updateLayer(de);return}this._validate(i.validateStyle.filter,"layers."+de.id+".filter",$,null,pe)||(de.filter=i.clone$1($),this._updateLayer(de))}},z.prototype.getFilter=function(O){return i.clone$1(this.getLayer(O).filter)},z.prototype.setLayoutProperty=function(O,$,pe,de){de===void 0&&(de={}),this._checkLoaded();var Ie=this.getLayer(O);if(!Ie){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}i.deepEqual(Ie.getLayoutProperty($),pe)||(Ie.setLayoutProperty($,pe,de),this._updateLayer(Ie))},z.prototype.getLayoutProperty=function(O,$){var pe=this.getLayer(O);if(!pe){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style.")));return}return pe.getLayoutProperty($)},z.prototype.setPaintProperty=function(O,$,pe,de){de===void 0&&(de={}),this._checkLoaded();var Ie=this.getLayer(O);if(!Ie){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}if(!i.deepEqual(Ie.getPaintProperty($),pe)){var $e=Ie.setPaintProperty($,pe,de);$e&&this._updateLayer(Ie),this._changed=!0,this._updatedPaintProps[O]=!0}},z.prototype.getPaintProperty=function(O,$){return this.getLayer(O).getPaintProperty($)},z.prototype.setFeatureState=function(O,$){this._checkLoaded();var pe=O.source,de=O.sourceLayer,Ie=this.sourceCaches[pe];if(Ie===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+pe+"' does not exist in the map's style.")));return}var $e=Ie.getSource().type;if($e==="geojson"&&de){this.fire(new i.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));return}if($e==="vector"&&!de){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),Ie.setFeatureState(de,O.id,$)},z.prototype.removeFeatureState=function(O,$){this._checkLoaded();var pe=O.source,de=this.sourceCaches[pe];if(de===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+pe+"' does not exist in the map's style.")));return}var Ie=de.getSource().type,$e=Ie==="vector"?O.sourceLayer:void 0;if(Ie==="vector"&&!$e){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}if($&&typeof O.id!="string"&&typeof O.id!="number"){this.fire(new i.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));return}de.removeFeatureState($e,O.id,$)},z.prototype.getFeatureState=function(O){this._checkLoaded();var $=O.source,pe=O.sourceLayer,de=this.sourceCaches[$];if(de===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+$+"' does not exist in the map's style.")));return}var Ie=de.getSource().type;if(Ie==="vector"&&!pe){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}return O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),de.getFeatureState(pe,O.id)},z.prototype.getTransition=function(){return i.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},z.prototype.serialize=function(){return i.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:i.mapObject(this.sourceCaches,function(O){return O.serialize()}),layers:this._serializeLayers(this._order)},function(O){return O!==void 0})},z.prototype._updateLayer=function(O){this._updatedLayers[O.id]=!0,O.source&&!this._updatedSources[O.source]&&this.sourceCaches[O.source].getSource().type!=="raster"&&(this._updatedSources[O.source]="reload",this.sourceCaches[O.source].pause()),this._changed=!0},z.prototype._flattenAndSortRenderedFeatures=function(O){for(var $=this,pe=function(ln){return $._layers[ln].type==="fill-extrusion"},de={},Ie=[],$e=this._order.length-1;$e>=0;$e--){var pt=this._order[$e];if(pe(pt)){de[pt]=$e;for(var Kt=0,ir=O;Kt=0;pr--){var kr=this._order[pr];if(pe(kr))for(var Ar=Ie.length-1;Ar>=0;Ar--){var gr=Ie[Ar].feature;if(de[gr.layer.id] .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; right: 0","ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; left: 0","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","ctrl-logo":`display:block; width: 21px; height: 21px; background-image: url('data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E')`}}});var Rk=ye((kyr,_Ue)=>{"use strict";var gUe=Mr(),mUe=va().defaultLine,HVt=Ju().attributes,GVt=Su(),jVt=Uc().textposition,WVt=Bu().overrideAll,ZVt=Vs().templatedArray,BK=c1(),yUe=GVt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});yUe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var XVt=_Ue.exports=WVt({_arrayAttrRegexps:[gUe.counterRegex("mapbox",".layers",!0)],domain:HVt({name:"mapbox"}),accesstoken:{valType:"string",noBlank:!0,strict:!0},style:{valType:"any",values:BK.styleValuesMapbox.concat(BK.styleValuesNonMapbox),dflt:BK.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:ZVt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:mUe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:mUe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:yUe,textposition:gUe.extendFlat({},jVt,{arrayOk:!1})}})},"plot","from-root");XVt.uirevision={valType:"any",editType:"none"}});var NF=ye((Cyr,wUe)=>{"use strict";var YVt=Wo().hovertemplateAttrs,KVt=Wo().texttemplateAttrs,JVt=Eg(),Dk=H2(),_A=Uc(),xUe=Rk(),$Vt=vl(),QVt=Jl(),ew=no().extendFlat,eHt=Bu().overrideAll,tHt=Rk(),bUe=Dk.line,xA=Dk.marker;wUe.exports=eHt({lon:Dk.lon,lat:Dk.lat,cluster:{enabled:{valType:"boolean"},maxzoom:ew({},tHt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:ew({},xA.opacity,{dflt:1})},mode:ew({},_A.mode,{dflt:"markers"}),text:ew({},_A.text,{}),texttemplate:KVt({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:ew({},_A.hovertext,{}),line:{color:bUe.color,width:bUe.width},connectgaps:_A.connectgaps,marker:ew({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:xA.opacity,size:xA.size,sizeref:xA.sizeref,sizemin:xA.sizemin,sizemode:xA.sizemode},QVt("marker")),fill:Dk.fill,fillcolor:JVt(),textfont:xUe.layers.symbol.textfont,textposition:xUe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:_A.selected.marker},unselected:{marker:_A.unselected.marker},hoverinfo:ew({},$Vt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:YVt()},"calc","nested")});var NK=ye((Lyr,TUe)=>{"use strict";var rHt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];TUe.exports={isSupportedFont:function(e){return rHt.indexOf(e)!==-1}}});var MUe=ye((Pyr,SUe)=>{"use strict";var zk=Mr(),UK=lu(),iHt=$p(),nHt=R0(),aHt=D0(),oHt=Ig(),AUe=NF(),sHt=NK().isSupportedFont;SUe.exports=function(t,r,n,i){function a(p,E){return zk.coerce(t,r,AUe,p,E)}function o(p,E){return zk.coerce2(t,r,AUe,p,E)}var s=lHt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("hovertext"),a("hovertemplate"),a("mode"),a("below"),UK.hasMarkers(r)){iHt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(zk.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),zk.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}UK.hasLines(r)&&(nHt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,x=a("cluster.enabled",v);if(x||UK.hasText(r)){var b=i.font.family;aHt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:sHt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&oHt(t,r,n,a),zk.coerceSelectionMarkerOpacity(r,a)};function lHt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var VK=ye((Iyr,kUe)=>{"use strict";var EUe=Qa();kUe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=EUe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=EUe.tickText(o,o.c2l(s[1]),!0).text,i}});var HK=ye((Ryr,LUe)=>{"use strict";var CUe=Mr();LUe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=CUe.isArrayOrTypedArray(r)?CUe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var FUe=ye((Dyr,zUe)=>{"use strict";var RUe=uo(),iv=Mr(),uHt=es().BADNUM,VF=rx(),PUe=Mu(),cHt=ao(),fHt=S3(),HF=lu(),hHt=NK().isSupportedFont,dHt=HK(),vHt=rp().appendArrayPointValue,pHt=Pl().NEWLINES,gHt=Pl().BR_TAG_ALL;zUe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=HF.hasLines(n),s=HF.hasMarkers(n),l=HF.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=UF("fill"),d=UF("line"),v=UF("circle"),x=UF("symbol"),b={fill:h,line:d,circle:v,symbol:x};if(!i)return b;var p;if((a||o)&&(p=VF.calcTraceToLineCoords(r)),a&&(h.geojson=VF.makePolygon(p),h.layout.visibility="visible",iv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=VF.makeLine(p),d.layout.visibility="visible",iv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var E=mHt(r);v.geojson=E.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":jK(n.cluster.color,n.cluster.step),"circle-radius":jK(n.cluster.size,n.cluster.step),"circle-opacity":jK(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":IUe(n),"text-size":12}}),iv.extendFlat(v.paint,{"circle-color":E.mcc,"circle-radius":E.mrc,"circle-opacity":E.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(x.geojson=yHt(r,t),iv.extendFlat(x.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(iv.extendFlat(x.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&iv.extendFlat(x.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),x.layout["icon-allow-overlap"]=n.marker.allowoverlap,iv.extendFlat(x.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var k=(n.marker||{}).size,A=dHt(n.textposition,k);iv.extendFlat(x.layout,{"text-size":n.textfont.size,"text-anchor":A.anchor,"text-offset":A.offset,"text-font":IUe(n)}),iv.extendFlat(x.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function UF(e){return{type:e,geojson:VF.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function mHt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=iv.isArrayOrTypedArray(r.color),a=iv.isArrayOrTypedArray(r.size),o=iv.isArrayOrTypedArray(r.opacity),s;function l(k){return t.opacity*k}function u(k){return k/2}var c;i&&(PUe.hasColorscale(t,"marker")?c=PUe.makeColorScaleFuncFromTrace(r):c=iv.identity);var f;a&&(f=fHt(t));var h;o&&(h=function(k){var A=RUe(k)?+iv.constrain(k,0,1):0;return l(A)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),hHt(s)||(s=r);var l=s.split(", ");return l}});var NUe=ye((zyr,BUe)=>{"use strict";var _Ht=Mr(),qUe=FUe(),bA=c1().traceLayerPrefix,rg={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function OUe(e,t,r,n){this.type="scattermapbox",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:bA+t+"-fill",line:bA+t+"-line",circle:bA+t+"-circle",symbol:bA+t+"-symbol",cluster:bA+t+"-cluster",clusterCount:bA+t+"-cluster-count"},this.below=null}var Fk=OUe.prototype;Fk.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&_Ht.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};Fk.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};Fk.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var _=A[L];i.removeLayer(u.layerIds[_])}k||i.removeSource(u.sourceIds.circle)}function h(k){for(var A=rg.nonCluster,L=0;L=0;L--){var _=A[L];i.removeLayer(u.layerIds[_]),k||i.removeSource(u.sourceIds[_])}}function v(k){l?f(k):d(k)}function x(k){s?c(k):h(k)}function b(){for(var k=s?rg.cluster:rg.nonCluster,A=0;A=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};BUe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new OUe(t,n.uid,i,a),s=qUe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var xHt=Nc(),WK=Mr(),bHt=oT(),wHt=WK.fillText,THt=es().BADNUM,AHt=c1().traceLayerPrefix;function SHt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=AHt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(M){return M.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function x(M){var g=M.lonlat;if(g[0]===THt||c&&l.indexOf(M.i+1)===-1)return 1/0;var P=WK.modHalf(g[0],360),T=g[1],F=s.project([P,T]),q=F.x-a.c2p([v,T]),V=F.y-o.c2p([P,r]),H=Math.max(3,M.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-H,1-3/H)}if(xHt.getClosest(n,x,e),e.index!==!1){var b=n[e.index],p=b.lonlat,E=[WK.modHalf(p[0],360)+d,p[1]],k=a.c2p(E),A=o.c2p(E),L=b.mrc||1;e.x0=k-L,e.x1=k+L,e.y0=A-L,e.y1=A+L;var _={};_[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,_);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=bHt(i,b),e.extraText=UUe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function UUe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&wHt(t,e,u),u.join("
")}VUe.exports={hoverPoints:SHt,getExtraText:UUe}});var GUe=ye((qyr,HUe)=>{"use strict";HUe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var WUe=ye((Oyr,jUe)=>{"use strict";var MHt=Mr(),EHt=lu(),kHt=es().BADNUM;jUe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!EHt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof ZK=="object"&&typeof XK!="undefined"?XK.exports=t():(e=e||self,e.mapboxgl=t())})(ZK,function(){"use strict";var e,t,r;function n(i,a){if(!e)e=a;else if(!t)t=a;else{var o="var sharedChunk = {}; ("+e+")(sharedChunk); ("+t+")(sharedChunk);",s={};e(s),r=a(s),typeof window!="undefined"&&(r.workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"})))}}return n(["exports"],function(i){"use strict";function a(m,y){return y={exports:{}},m(y,y.exports),y.exports}var o="1.13.4",s=l;function l(m,y,I,U){this.cx=3*m,this.bx=3*(I-m)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*y,this.by=3*(U-y)-this.cy,this.ay=1-this.cy-this.by,this.p1x=m,this.p1y=U,this.p2x=I,this.p2y=U}l.prototype.sampleCurveX=function(m){return((this.ax*m+this.bx)*m+this.cx)*m},l.prototype.sampleCurveY=function(m){return((this.ay*m+this.by)*m+this.cy)*m},l.prototype.sampleCurveDerivativeX=function(m){return(3*this.ax*m+2*this.bx)*m+this.cx},l.prototype.solveCurveX=function(m,y){typeof y=="undefined"&&(y=1e-6);var I,U,J,ne,fe;for(J=m,fe=0;fe<8;fe++){if(ne=this.sampleCurveX(J)-m,Math.abs(ne)U)return U;for(;Ine?I=J:U=J,J=(U-I)*.5+I}return J},l.prototype.solve=function(m,y){return this.sampleCurveY(this.solveCurveX(m,y))};var u=c;function c(m,y){this.x=m,this.y=y}c.prototype={clone:function(){return new c(this.x,this.y)},add:function(m){return this.clone()._add(m)},sub:function(m){return this.clone()._sub(m)},multByPoint:function(m){return this.clone()._multByPoint(m)},divByPoint:function(m){return this.clone()._divByPoint(m)},mult:function(m){return this.clone()._mult(m)},div:function(m){return this.clone()._div(m)},rotate:function(m){return this.clone()._rotate(m)},rotateAround:function(m,y){return this.clone()._rotateAround(m,y)},matMult:function(m){return this.clone()._matMult(m)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(m){return this.x===m.x&&this.y===m.y},dist:function(m){return Math.sqrt(this.distSqr(m))},distSqr:function(m){var y=m.x-this.x,I=m.y-this.y;return y*y+I*I},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(m){return Math.atan2(this.y-m.y,this.x-m.x)},angleWith:function(m){return this.angleWithSep(m.x,m.y)},angleWithSep:function(m,y){return Math.atan2(this.x*y-this.y*m,this.x*m+this.y*y)},_matMult:function(m){var y=m[0]*this.x+m[1]*this.y,I=m[2]*this.x+m[3]*this.y;return this.x=y,this.y=I,this},_add:function(m){return this.x+=m.x,this.y+=m.y,this},_sub:function(m){return this.x-=m.x,this.y-=m.y,this},_mult:function(m){return this.x*=m,this.y*=m,this},_div:function(m){return this.x/=m,this.y/=m,this},_multByPoint:function(m){return this.x*=m.x,this.y*=m.y,this},_divByPoint:function(m){return this.x/=m.x,this.y/=m.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var m=this.y;return this.y=this.x,this.x=-m,this},_rotate:function(m){var y=Math.cos(m),I=Math.sin(m),U=y*this.x-I*this.y,J=I*this.x+y*this.y;return this.x=U,this.y=J,this},_rotateAround:function(m,y){var I=Math.cos(m),U=Math.sin(m),J=y.x+I*(this.x-y.x)-U*(this.y-y.y),ne=y.y+U*(this.x-y.x)+I*(this.y-y.y);return this.x=J,this.y=ne,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},c.convert=function(m){return m instanceof c?m:Array.isArray(m)?new c(m[0],m[1]):m};var f=typeof self!="undefined"?self:{};function h(m,y){if(Array.isArray(m)){if(!Array.isArray(y)||m.length!==y.length)return!1;for(var I=0;I=1)return 1;var y=m*m,I=y*m;return 4*(m<.5?I:3*(m-y)+I-.75)}function x(m,y,I,U){var J=new s(m,y,I,U);return function(ne){return J.solve(ne)}}var b=x(.25,.1,.25,1);function p(m,y,I){return Math.min(I,Math.max(y,m))}function E(m,y,I){var U=I-y,J=((m-y)%U+U)%U+y;return J===y?I:J}function k(m,y,I){if(!m.length)return I(null,[]);var U=m.length,J=new Array(m.length),ne=null;m.forEach(function(fe,Fe){y(fe,function(Qe,st){Qe&&(ne=Qe),J[Fe]=st,--U===0&&I(ne,J)})})}function A(m){var y=[];for(var I in m)y.push(m[I]);return y}function L(m,y){var I=[];for(var U in m)U in y||I.push(U);return I}function _(m){for(var y=[],I=arguments.length-1;I-- >0;)y[I]=arguments[I+1];for(var U=0,J=y;U>y/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,m)}return m()}function T(m){return m<=1?1:Math.pow(2,Math.ceil(Math.log(m)/Math.LN2))}function F(m){return m?/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(m):!1}function q(m,y){m.forEach(function(I){y[I]&&(y[I]=y[I].bind(y))})}function V(m,y){return m.indexOf(y,m.length-y.length)!==-1}function H(m,y,I){var U={};for(var J in m)U[J]=y.call(I||this,m[J],J,m);return U}function X(m,y,I){var U={};for(var J in m)y.call(I||this,m[J],J,m)&&(U[J]=m[J]);return U}function G(m){return Array.isArray(m)?m.map(G):typeof m=="object"&&m?H(m,G):m}function N(m,y){for(var I=0;I=0)return!0;return!1}var W={};function re(m){W[m]||(typeof console!="undefined"&&console.warn(m),W[m]=!0)}function ae(m,y,I){return(I.y-m.y)*(y.x-m.x)>(y.y-m.y)*(I.x-m.x)}function _e(m){for(var y=0,I=0,U=m.length,J=U-1,ne=void 0,fe=void 0;I@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,I={};if(m.replace(y,function(J,ne,fe,Fe){var Qe=fe||Fe;return I[ne]=Qe?Qe.toLowerCase():!0,""}),I["max-age"]){var U=parseInt(I["max-age"],10);isNaN(U)?delete I["max-age"]:I["max-age"]=U}return I}var ie=null;function Te(m){if(ie==null){var y=m.navigator?m.navigator.userAgent:null;ie=!!m.safari||!!(y&&(/\b(iPad|iPhone|iPod)\b/.test(y)||y.match("Safari")&&!y.match("Chrome")))}return ie}function Ee(m){try{var y=f[m];return y.setItem("_mapbox_test_",1),y.removeItem("_mapbox_test_"),!0}catch(I){return!1}}function Ae(m){return f.btoa(encodeURIComponent(m).replace(/%([0-9A-F]{2})/g,function(y,I){return String.fromCharCode(+("0x"+I))}))}function ze(m){return decodeURIComponent(f.atob(m).split("").map(function(y){return"%"+("00"+y.charCodeAt(0).toString(16)).slice(-2)}).join(""))}var Ce=f.performance&&f.performance.now?f.performance.now.bind(f.performance):Date.now.bind(Date),me=f.requestAnimationFrame||f.mozRequestAnimationFrame||f.webkitRequestAnimationFrame||f.msRequestAnimationFrame,Re=f.cancelAnimationFrame||f.mozCancelAnimationFrame||f.webkitCancelAnimationFrame||f.msCancelAnimationFrame,ce,Ge,nt={now:Ce,frame:function(y){var I=me(y);return{cancel:function(){return Re(I)}}},getImageData:function(y,I){I===void 0&&(I=0);var U=f.document.createElement("canvas"),J=U.getContext("2d");if(!J)throw new Error("failed to create canvas 2d context");return U.width=y.width,U.height=y.height,J.drawImage(y,0,0,y.width,y.height),J.getImageData(-I,-I,y.width+2*I,y.height+2*I)},resolveURL:function(y){return ce||(ce=f.document.createElement("a")),ce.href=y,ce.href},hardwareConcurrency:f.navigator&&f.navigator.hardwareConcurrency||4,get devicePixelRatio(){return f.devicePixelRatio},get prefersReducedMotion(){return f.matchMedia?(Ge==null&&(Ge=f.matchMedia("(prefers-reduced-motion: reduce)")),Ge.matches):!1}},ct={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?this.API_URL.indexOf("https://api.mapbox.cn")===0?"https://events.mapbox.cn/events/v2":this.API_URL.indexOf("https://api.mapbox.com")===0?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},qt={supported:!1,testSupport:Ct},rt,ot=!1,Rt,kt=!1;f.document&&(Rt=f.document.createElement("img"),Rt.onload=function(){rt&&Yt(rt),rt=null,kt=!0},Rt.onerror=function(){ot=!0,rt=null},Rt.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");function Ct(m){ot||!Rt||(kt?Yt(m):rt=m)}function Yt(m){var y=m.createTexture();m.bindTexture(m.TEXTURE_2D,y);try{if(m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,Rt),m.isContextLost())return;qt.supported=!0}catch(I){}m.deleteTexture(y),ot=!0}var xr="01";function er(){for(var m="1",y="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",I="",U=0;U<10;U++)I+=y[Math.floor(Math.random()*62)];var J=12*60*60*1e3,ne=[m,xr,I].join(""),fe=Date.now()+J;return{token:ne,tokenExpiresAt:fe}}var Ke=function(y,I){this._transformRequestFn=y,this._customAccessToken=I,this._createSkuToken()};Ke.prototype._createSkuToken=function(){var y=er();this._skuToken=y.token,this._skuTokenExpiresAt=y.tokenExpiresAt},Ke.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},Ke.prototype.transformRequest=function(y,I){return this._transformRequestFn?this._transformRequestFn(y,I)||{url:y}:{url:y}},Ke.prototype.normalizeStyleURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/styles/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeGlyphsURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/fonts/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeSourceURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/v4/"+U.authority+".json",U.params.push("secure"),this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeSpriteURL=function(y,I,U,J){var ne=Ht(y);return xt(y)?(ne.path="/styles/v1"+ne.path+"/sprite"+I+U,this._makeAPIURL(ne,this._customAccessToken||J)):(ne.path+=""+I+U,$t(ne))},Ke.prototype.normalizeTileURL=function(y,I){if(this._isSkuTokenExpired()&&this._createSkuToken(),y&&!xt(y))return y;var U=Ht(y),J=/(\.(png|jpg)\d*)(?=$)/,ne=/^.+\/v4\//,fe=nt.devicePixelRatio>=2||I===512?"@2x":"",Fe=qt.supported?".webp":"$1";U.path=U.path.replace(J,""+fe+Fe),U.path=U.path.replace(ne,"/"),U.path="/v4"+U.path;var Qe=this._customAccessToken||Et(U.params)||ct.ACCESS_TOKEN;return ct.REQUIRE_ACCESS_TOKEN&&Qe&&this._skuToken&&U.params.push("sku="+this._skuToken),this._makeAPIURL(U,Qe)},Ke.prototype.canonicalizeTileURL=function(y,I){var U="/v4/",J=/\.[\w]+$/,ne=Ht(y);if(!ne.path.match(/(^\/v4\/)/)||!ne.path.match(J))return y;var fe="mapbox://tiles/";fe+=ne.path.replace(U,"");var Fe=ne.params;return I&&(Fe=Fe.filter(function(Qe){return!Qe.match(/^access_token=/)})),Fe.length&&(fe+="?"+Fe.join("&")),fe},Ke.prototype.canonicalizeTileset=function(y,I){for(var U=I?xt(I):!1,J=[],ne=0,fe=y.tiles||[];ne=0&&y.params.splice(ne,1)}if(J.path!=="/"&&(y.path=""+J.path+y.path),!ct.REQUIRE_ACCESS_TOKEN)return $t(y);if(I=I||ct.ACCESS_TOKEN,!I)throw new Error("An API access token is required to use Mapbox GL. "+U);if(I[0]==="s")throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+U);return y.params=y.params.filter(function(fe){return fe.indexOf("access_token")===-1}),y.params.push("access_token="+I),$t(y)};function xt(m){return m.indexOf("mapbox:")===0}var bt=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;function Lt(m){return bt.test(m)}function St(m){return m.indexOf("sku=")>0&&Lt(m)}function Et(m){for(var y=0,I=m;y=1&&f.localStorage.setItem(I,JSON.stringify(this.eventData))}catch(J){re("Unable to write to LocalStorage")}},Br.prototype.processRequests=function(y){},Br.prototype.postEvent=function(y,I,U,J){var ne=this;if(ct.EVENTS_URL){var fe=Ht(ct.EVENTS_URL);fe.params.push("access_token="+(J||ct.ACCESS_TOKEN||""));var Fe={event:this.type,created:new Date(y).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:o,skuId:xr,userId:this.anonId},Qe=I?_(Fe,I):Fe,st={url:$t(fe),headers:{"Content-Type":"text/plain"},body:JSON.stringify([Qe])};this.pendingRequest=Vr(st,function(mt){ne.pendingRequest=null,U(mt),ne.saveEventData(),ne.processRequests(J)})}},Br.prototype.queueRequest=function(y,I){this.queue.push(y),this.processRequests(I)};var Or=function(m){function y(){m.call(this,"map.load"),this.success={},this.skuToken=""}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.postMapLoadEvent=function(U,J,ne,fe){this.skuToken=ne,(ct.EVENTS_URL&&fe||ct.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(Fe){return xt(Fe)||Lt(Fe)}))&&this.queueRequest({id:J,timestamp:Date.now()},fe)},y.prototype.processRequests=function(U){var J=this;if(!(this.pendingRequest||this.queue.length===0)){var ne=this.queue.shift(),fe=ne.id,Fe=ne.timestamp;fe&&this.success[fe]||(this.anonId||this.fetchEventData(),F(this.anonId)||(this.anonId=P()),this.postEvent(Fe,{skuToken:this.skuToken},function(Qe){Qe||fe&&(J.success[fe]=!0)},U))}},y}(Br),Nr=function(m){function y(I){m.call(this,"appUserTurnstile"),this._customAccessToken=I}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.postTurnstileEvent=function(U,J){ct.EVENTS_URL&&ct.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(ne){return xt(ne)||Lt(ne)})&&this.queueRequest(Date.now(),J)},y.prototype.processRequests=function(U){var J=this;if(!(this.pendingRequest||this.queue.length===0)){(!this.anonId||!this.eventData.lastSuccess||!this.eventData.tokenU)&&this.fetchEventData();var ne=_r(ct.ACCESS_TOKEN),fe=ne?ne.u:ct.ACCESS_TOKEN,Fe=fe!==this.eventData.tokenU;F(this.anonId)||(this.anonId=P(),Fe=!0);var Qe=this.queue.shift();if(this.eventData.lastSuccess){var st=new Date(this.eventData.lastSuccess),mt=new Date(Qe),Xt=(Qe-this.eventData.lastSuccess)/(24*60*60*1e3);Fe=Fe||Xt>=1||Xt<-1||st.getDate()!==mt.getDate()}else Fe=!0;if(!Fe)return this.processRequests();this.postEvent(Qe,{"enabled.telemetry":!1},function(ur){ur||(J.eventData.lastSuccess=Qe,J.eventData.tokenU=fe)},U)}},y}(Br),ut=new Nr,Ne=ut.postTurnstileEvent.bind(ut),Ye=new Or,Ve=Ye.postMapLoadEvent.bind(Ye),Xe="mapbox-tiles",ht=500,Le=50,xe=1e3*60*7,Se;function lt(){f.caches&&!Se&&(Se=f.caches.open(Xe))}var Gt;function Vt(m,y){if(Gt===void 0)try{new Response(new ReadableStream),Gt=!0}catch(I){Gt=!1}Gt?y(m.body):m.blob().then(y)}function ar(m,y,I){if(lt(),!!Se){var U={status:y.status,statusText:y.statusText,headers:new f.Headers};y.headers.forEach(function(fe,Fe){return U.headers.set(Fe,fe)});var J=ge(y.headers.get("Cache-Control")||"");if(!J["no-store"]){J["max-age"]&&U.headers.set("Expires",new Date(I+J["max-age"]*1e3).toUTCString());var ne=new Date(U.headers.get("Expires")).getTime()-I;neDate.now()&&!I["no-cache"]}var ri=1/0;function bi(m){ri++,ri>Le&&(m.getActor().send("enforceCacheSizeLimit",ht),ri=0)}function nn(m){lt(),Se&&Se.then(function(y){y.keys().then(function(I){for(var U=0;U=200&&I.status<300||I.status===0)&&I.response!==null){var J=I.response;if(m.type==="json")try{J=JSON.parse(I.response)}catch(ne){return y(ne)}y(null,J,I.getResponseHeader("Cache-Control"),I.getResponseHeader("Expires"))}else y(new Wn(I.statusText,I.status,m.url))},I.send(m.body),{cancel:function(){return I.abort()}}}var yr=function(m,y){if(!ft(m.url)){if(f.fetch&&f.Request&&f.AbortController&&f.Request.prototype.hasOwnProperty("signal"))return jt(m,y);if(ke()&&self.worker&&self.worker.actor){var I=!0;return self.worker.actor.send("getResource",m,y,void 0,I)}}return Zt(m,y)},Fr=function(m,y){return yr(_(m,{type:"json"}),y)},Zr=function(m,y){return yr(_(m,{type:"arrayBuffer"}),y)},Vr=function(m,y){return yr(_(m,{method:"POST"}),y)};function gi(m){var y=f.document.createElement("a");return y.href=m,y.protocol===f.document.location.protocol&&y.host===f.document.location.host}var Si="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function Mi(m,y,I,U){var J=new f.Image,ne=f.URL;J.onload=function(){y(null,J),ne.revokeObjectURL(J.src),J.onload=null,f.requestAnimationFrame(function(){J.src=Si})},J.onerror=function(){return y(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))};var fe=new f.Blob([new Uint8Array(m)],{type:"image/png"});J.cacheControl=I,J.expires=U,J.src=m.byteLength?ne.createObjectURL(fe):Si}function Pi(m,y){var I=new f.Blob([new Uint8Array(m)],{type:"image/png"});f.createImageBitmap(I).then(function(U){y(null,U)}).catch(function(U){y(new Error("Could not load image because of "+U.message+". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))})}var Gi,Ki,ka=function(){Gi=[],Ki=0};ka();var jn=function(m,y){if(qt.supported&&(m.headers||(m.headers={}),m.headers.accept="image/webp,*/*"),Ki>=ct.MAX_PARALLEL_IMAGE_REQUESTS){var I={requestParameters:m,callback:y,cancelled:!1,cancel:function(){this.cancelled=!0}};return Gi.push(I),I}Ki++;var U=!1,J=function(){if(!U)for(U=!0,Ki--;Gi.length&&Ki0||this._oneTimeListeners&&this._oneTimeListeners[y]&&this._oneTimeListeners[y].length>0||this._eventedParent&&this._eventedParent.listens(y)},Sn.prototype.setEventedParent=function(y,I){return this._eventedParent=y,this._eventedParentData=I,this};var Ha=8,oo={version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},xn={"*":{type:"source"}},_t=["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],br={type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},Hr={type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},ti={type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},zi={type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},Yi={type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},an={type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},hi={id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},Ji=["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],ua={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Fn={"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Sa={"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},go={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Oo={"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},ho={"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Mo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},xo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},zs={type:"array",value:"*"},ks={type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},Zs={type:"enum",values:{Point:{},LineString:{},Polygon:{}}},Xs={type:"array",minimum:0,maximum:24,value:["number","color"],length:2},wl={type:"array",value:"*",minimum:1},os={anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},cl=["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],Cs={"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},ml={"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},Ys={"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},Hs={"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Eo={"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},fs={"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Ql={"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Hu={"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},fc={duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},ms={"*":{type:"string"}},on={$version:Ha,$root:oo,sources:xn,source:_t,source_vector:br,source_raster:Hr,source_raster_dem:ti,source_geojson:zi,source_video:Yi,source_image:an,layer:hi,layout:Ji,layout_background:ua,layout_fill:Fn,layout_circle:Sa,layout_heatmap:go,"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:Oo,layout_symbol:ho,layout_raster:Mo,layout_hillshade:xo,filter:zs,filter_operator:ks,geometry_type:Zs,function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:Xs,expression:wl,light:os,paint:cl,paint_fill:Cs,"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:ml,paint_circle:Ys,paint_heatmap:Hs,paint_symbol:Eo,paint_raster:fs,paint_hillshade:Ql,paint_background:Hu,transition:fc,"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:ms},fa=function(y,I,U,J){this.message=(y?y+": ":"")+U,J&&(this.identifier=J),I!=null&&I.__line__&&(this.line=I.__line__)};function Qu(m){var y=m.key,I=m.value;return I?[new fa(y,I,"constants have been deprecated as of v8")]:[]}function Rl(m){for(var y=[],I=arguments.length-1;I-- >0;)y[I]=arguments[I+1];for(var U=0,J=y;U":m.itemType.kind==="value"?"array":"array<"+y+">"}else return m.kind}var mu=[Ec,Zn,ko,Co,Tl,Al,uf,eu(So),Hc];function kc(m,y){if(y.kind==="error")return null;if(m.kind==="array"){if(y.kind==="array"&&(y.N===0&&y.itemType.kind==="value"||!kc(m.itemType,y.itemType))&&(typeof m.N!="number"||m.N===y.N))return null}else{if(m.kind===y.kind)return null;if(m.kind==="value")for(var I=0,U=mu;I255?255:st}function J(st){return st<0?0:st>1?1:st}function ne(st){return st[st.length-1]==="%"?U(parseFloat(st)/100*255):U(parseInt(st))}function fe(st){return st[st.length-1]==="%"?J(parseFloat(st)/100):J(parseFloat(st))}function Fe(st,mt,Xt){return Xt<0?Xt+=1:Xt>1&&(Xt-=1),Xt*6<1?st+(mt-st)*Xt*6:Xt*2<1?mt:Xt*3<2?st+(mt-st)*(2/3-Xt)*6:st}function Qe(st){var mt=st.replace(/ /g,"").toLowerCase();if(mt in I)return I[mt].slice();if(mt[0]==="#"){if(mt.length===4){var Xt=parseInt(mt.substr(1),16);return Xt>=0&&Xt<=4095?[(Xt&3840)>>4|(Xt&3840)>>8,Xt&240|(Xt&240)>>4,Xt&15|(Xt&15)<<4,1]:null}else if(mt.length===7){var Xt=parseInt(mt.substr(1),16);return Xt>=0&&Xt<=16777215?[(Xt&16711680)>>16,(Xt&65280)>>8,Xt&255,1]:null}return null}var ur=mt.indexOf("("),nr=mt.indexOf(")");if(ur!==-1&&nr+1===mt.length){var Lr=mt.substr(0,ur),Yr=mt.substr(ur+1,nr-(ur+1)).split(","),_i=1;switch(Lr){case"rgba":if(Yr.length!==4)return null;_i=fe(Yr.pop());case"rgb":return Yr.length!==3?null:[ne(Yr[0]),ne(Yr[1]),ne(Yr[2]),_i];case"hsla":if(Yr.length!==4)return null;_i=fe(Yr.pop());case"hsl":if(Yr.length!==3)return null;var si=(parseFloat(Yr[0])%360+360)%360/360,Hi=fe(Yr[1]),Ei=fe(Yr[2]),Vi=Ei<=.5?Ei*(Hi+1):Ei+Hi-Ei*Hi,en=Ei*2-Vi;return[U(Fe(en,Vi,si+1/3)*255),U(Fe(en,Vi,si)*255),U(Fe(en,Vi,si-1/3)*255),_i];default:return null}}return null}try{y.parseCSSColor=Qe}catch(st){}}),Bf=vd.parseCSSColor,ss=function(y,I,U,J){J===void 0&&(J=1),this.r=y,this.g=I,this.b=U,this.a=J};ss.parse=function(y){if(y){if(y instanceof ss)return y;if(typeof y=="string"){var I=Bf(y);if(I)return new ss(I[0]/255*I[3],I[1]/255*I[3],I[2]/255*I[3],I[3])}}},ss.prototype.toString=function(){var y=this.toArray(),I=y[0],U=y[1],J=y[2],ne=y[3];return"rgba("+Math.round(I)+","+Math.round(U)+","+Math.round(J)+","+ne+")"},ss.prototype.toArray=function(){var y=this,I=y.r,U=y.g,J=y.b,ne=y.a;return ne===0?[0,0,0,0]:[I*255/ne,U*255/ne,J*255/ne,ne]},ss.black=new ss(0,0,0,1),ss.white=new ss(1,1,1,1),ss.transparent=new ss(0,0,0,0),ss.red=new ss(1,0,0,1);var ff=function(y,I,U){y?this.sensitivity=I?"variant":"case":this.sensitivity=I?"accent":"base",this.locale=U,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};ff.prototype.compare=function(y,I){return this.collator.compare(y,I)},ff.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var ih=function(y,I,U,J,ne){this.text=y,this.image=I,this.scale=U,this.fontStack=J,this.textColor=ne},Vl=function(y){this.sections=y};Vl.fromString=function(y){return new Vl([new ih(y,null,null,null,null)])},Vl.prototype.isEmpty=function(){return this.sections.length===0?!0:!this.sections.some(function(y){return y.text.length!==0||y.image&&y.image.name.length!==0})},Vl.factory=function(y){return y instanceof Vl?y:Vl.fromString(y)},Vl.prototype.toString=function(){return this.sections.length===0?"":this.sections.map(function(y){return y.text}).join("")},Vl.prototype.serialize=function(){for(var y=["format"],I=0,U=this.sections;I=0&&m<=255&&typeof y=="number"&&y>=0&&y<=255&&typeof I=="number"&&I>=0&&I<=255)){var J=typeof U=="number"?[m,y,I,U]:[m,y,I];return"Invalid rgba value ["+J.join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}return typeof U=="undefined"||typeof U=="number"&&U>=0&&U<=1?null:"Invalid rgba value ["+[m,y,I,U].join(", ")+"]: 'a' must be between 0 and 1."}function Cc(m){if(m===null)return!0;if(typeof m=="string")return!0;if(typeof m=="boolean")return!0;if(typeof m=="number")return!0;if(m instanceof ss)return!0;if(m instanceof ff)return!0;if(m instanceof Vl)return!0;if(m instanceof Js)return!0;if(Array.isArray(m)){for(var y=0,I=m;y2){var Fe=y[1];if(typeof Fe!="string"||!(Fe in dc)||Fe==="object")return I.error('The item type argument of "array" must be one of string, number, boolean',1);fe=dc[Fe],U++}else fe=So;var Qe;if(y.length>3){if(y[2]!==null&&(typeof y[2]!="number"||y[2]<0||y[2]!==Math.floor(y[2])))return I.error('The length argument to "array" must be a positive integer literal',2);Qe=y[2],U++}J=eu(fe,Qe)}else J=dc[ne];for(var st=[];U1)&&I.push(J)}}return I.concat(this.args.map(function(ne){return ne.serialize()}))};var ec=function(y){this.type=Al,this.sections=y};ec.parse=function(y,I){if(y.length<2)return I.error("Expected at least one argument.");var U=y[1];if(!Array.isArray(U)&&typeof U=="object")return I.error("First argument must be an image or text section.");for(var J=[],ne=!1,fe=1;fe<=y.length-1;++fe){var Fe=y[fe];if(ne&&typeof Fe=="object"&&!Array.isArray(Fe)){ne=!1;var Qe=null;if(Fe["font-scale"]&&(Qe=I.parse(Fe["font-scale"],1,Zn),!Qe))return null;var st=null;if(Fe["text-font"]&&(st=I.parse(Fe["text-font"],1,eu(ko)),!st))return null;var mt=null;if(Fe["text-color"]&&(mt=I.parse(Fe["text-color"],1,Tl),!mt))return null;var Xt=J[J.length-1];Xt.scale=Qe,Xt.font=st,Xt.textColor=mt}else{var ur=I.parse(y[fe],1,So);if(!ur)return null;var nr=ur.type.kind;if(nr!=="string"&&nr!=="value"&&nr!=="null"&&nr!=="resolvedImage")return I.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ne=!0,J.push({content:ur,scale:null,font:null,textColor:null})}}return new ec(J)},ec.prototype.evaluate=function(y){var I=function(U){var J=U.content.evaluate(y);return ws(J)===Hc?new ih("",J,null,null,null):new ih($s(J),null,U.scale?U.scale.evaluate(y):null,U.font?U.font.evaluate(y).join(","):null,U.textColor?U.textColor.evaluate(y):null)};return new Vl(this.sections.map(I))},ec.prototype.eachChild=function(y){for(var I=0,U=this.sections;I-1),U},Ps.prototype.eachChild=function(y){y(this.input)},Ps.prototype.outputDefined=function(){return!1},Ps.prototype.serialize=function(){return["image",this.input.serialize()]};var ov={"to-boolean":Co,"to-color":Tl,"to-number":Zn,"to-string":ko},wo=function(y,I){this.type=y,this.args=I};wo.parse=function(y,I){if(y.length<2)return I.error("Expected at least one argument.");var U=y[0];if((U==="to-boolean"||U==="to-string")&&y.length!==2)return I.error("Expected one argument.");for(var J=ov[U],ne=[],fe=1;fe4?U="Invalid rbga value "+JSON.stringify(I)+": expected an array containing either three or four numeric values.":U=hc(I[0],I[1],I[2],I[3]),!U))return new ss(I[0]/255,I[1]/255,I[2]/255,I[3])}throw new Ms(U||"Could not parse color from value '"+(typeof I=="string"?I:String(JSON.stringify(I)))+"'")}else if(this.type.kind==="number"){for(var Qe=null,st=0,mt=this.args;st=y[2]||m[1]<=y[1]||m[3]>=y[3])}function Yh(m,y){var I=jc(m[0]),U=kf(m[1]),J=Math.pow(2,y.z);return[Math.round(I*J*uu),Math.round(U*J*uu)]}function Eh(m,y,I){var U=m[0]-y[0],J=m[1]-y[1],ne=m[0]-I[0],fe=m[1]-I[1];return U*fe-ne*J===0&&U*ne<=0&&J*fe<=0}function nh(m,y,I){return y[1]>m[1]!=I[1]>m[1]&&m[0]<(I[0]-y[0])*(m[1]-y[1])/(I[1]-y[1])+y[0]}function hf(m,y){for(var I=!1,U=0,J=y.length;U0&&Xt<0||mt<0&&Xt>0}function ah(m,y,I,U){var J=[y[0]-m[0],y[1]-m[1]],ne=[U[0]-I[0],U[1]-I[1]];return Kh(ne,J)===0?!1:!!(rc(m,y,I,U)&&rc(I,U,m,y))}function Wc(m,y,I){for(var U=0,J=I;UI[2]){var J=U*.5,ne=m[0]-I[0]>J?-U:I[0]-m[0]>J?U:0;ne===0&&(ne=m[0]-I[2]>J?-U:I[2]-m[0]>J?U:0),m[0]+=ne}Mh(y,m)}function Ch(m){m[0]=m[1]=1/0,m[2]=m[3]=-1/0}function Bd(m,y,I,U){for(var J=Math.pow(2,U.z)*uu,ne=[U.x*uu,U.y*uu],fe=[],Fe=0,Qe=m;Fe=0)return!1;var I=!0;return m.eachChild(function(U){I&&!Pu(U,y)&&(I=!1)}),I}var Lc=function(y,I){this.type=I.type,this.name=y,this.boundExpression=I};Lc.parse=function(y,I){if(y.length!==2||typeof y[1]!="string")return I.error("'var' expression requires exactly one string literal argument.");var U=y[1];return I.scope.has(U)?new Lc(U,I.scope.get(U)):I.error('Unknown variable "'+U+'". Make sure "'+U+'" has been bound in an enclosing "let" expression before using it.',1)},Lc.prototype.evaluate=function(y){return this.boundExpression.evaluate(y)},Lc.prototype.eachChild=function(){},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return["var",this.name]};var fl=function(y,I,U,J,ne){I===void 0&&(I=[]),J===void 0&&(J=new Xl),ne===void 0&&(ne=[]),this.registry=y,this.path=I,this.key=I.map(function(fe){return"["+fe+"]"}).join(""),this.scope=J,this.errors=ne,this.expectedType=U};fl.prototype.parse=function(y,I,U,J,ne){return ne===void 0&&(ne={}),I?this.concat(I,U,J)._parse(y,ne):this._parse(y,ne)},fl.prototype._parse=function(y,I){(y===null||typeof y=="string"||typeof y=="boolean"||typeof y=="number")&&(y=["literal",y]);function U(mt,Xt,ur){return ur==="assert"?new Sl(Xt,[mt]):ur==="coerce"?new wo(Xt,[mt]):mt}if(Array.isArray(y)){if(y.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var J=y[0];if(typeof J!="string")return this.error("Expression name must be a string, but found "+typeof J+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var ne=this.registry[J];if(ne){var fe=ne.parse(y,this);if(!fe)return null;if(this.expectedType){var Fe=this.expectedType,Qe=fe.type;if((Fe.kind==="string"||Fe.kind==="number"||Fe.kind==="boolean"||Fe.kind==="object"||Fe.kind==="array")&&Qe.kind==="value")fe=U(fe,Fe,I.typeAnnotation||"assert");else if((Fe.kind==="color"||Fe.kind==="formatted"||Fe.kind==="resolvedImage")&&(Qe.kind==="value"||Qe.kind==="string"))fe=U(fe,Fe,I.typeAnnotation||"coerce");else if(this.checkSubtype(Fe,Qe))return null}if(!(fe instanceof hs)&&fe.type.kind!=="resolvedImage"&&Xc(fe)){var st=new $o;try{fe=new hs(fe.type,fe.evaluate(st))}catch(mt){return this.error(mt.message),null}}return fe}return this.error('Unknown expression "'+J+'". If you wanted a literal array, use ["literal", [...]].',0)}else return typeof y=="undefined"?this.error("'undefined' value invalid. Use null instead."):typeof y=="object"?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof y+" instead.")},fl.prototype.concat=function(y,I,U){var J=typeof y=="number"?this.path.concat(y):this.path,ne=U?this.scope.concat(U):this.scope;return new fl(this.registry,J,I||null,ne,this.errors)},fl.prototype.error=function(y){for(var I=[],U=arguments.length-1;U-- >0;)I[U]=arguments[U+1];var J=""+this.key+I.map(function(ne){return"["+ne+"]"}).join("");this.errors.push(new Ks(J,y))},fl.prototype.checkSubtype=function(y,I){var U=kc(y,I);return U&&this.error(U),U};function Xc(m){if(m instanceof Lc)return Xc(m.boundExpression);if(m instanceof Ja&&m.name==="error")return!1;if(m instanceof tc)return!1;if(m instanceof Lu)return!1;var y=m instanceof wo||m instanceof Sl,I=!0;return m.eachChild(function(U){y?I=I&&Xc(U):I=I&&U instanceof hs}),I?$h(m)&&Pu(m,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"]):!1}function ic(m,y){for(var I=m.length-1,U=0,J=I,ne=0,fe,Fe;U<=J;)if(ne=Math.floor((U+J)/2),fe=m[ne],Fe=m[ne+1],fe<=y){if(ne===I||yy)J=ne-1;else throw new Ms("Input is not a number.");return 0}var yu=function(y,I,U){this.type=y,this.input=I,this.labels=[],this.outputs=[];for(var J=0,ne=U;J=Fe)return I.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',st);var Xt=I.parse(Qe,mt,ne);if(!Xt)return null;ne=ne||Xt.type,J.push([Fe,Xt])}return new yu(ne,U,J)},yu.prototype.evaluate=function(y){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(y);var J=this.input.evaluate(y);if(J<=I[0])return U[0].evaluate(y);var ne=I.length;if(J>=I[ne-1])return U[ne-1].evaluate(y);var fe=ic(I,J);return U[fe].evaluate(y)},yu.prototype.eachChild=function(y){y(this.input);for(var I=0,U=this.outputs;I0&&y.push(this.labels[I]),y.push(this.outputs[I].serialize());return y};function Qs(m,y,I){return m*(1-I)+y*I}function Qh(m,y,I){return new ss(Qs(m.r,y.r,I),Qs(m.g,y.g,I),Qs(m.b,y.b,I),Qs(m.a,y.a,I))}function gd(m,y,I){return m.map(function(U,J){return Qs(U,y[J],I)})}var Gu=Object.freeze({__proto__:null,number:Qs,color:Qh,array:gd}),Pc=.95047,vc=1,sv=1.08883,Lf=4/29,Uf=6/29,Iu=3*Uf*Uf,oh=Uf*Uf*Uf,ru=Math.PI/180,vf=180/Math.PI;function md(m){return m>oh?Math.pow(m,1/3):m/Iu+Lf}function sh(m){return m>Uf?m*m*m:Iu*(m-Lf)}function Fs(m){return 255*(m<=.0031308?12.92*m:1.055*Math.pow(m,1/2.4)-.055)}function _u(m){return m/=255,m<=.04045?m/12.92:Math.pow((m+.055)/1.055,2.4)}function xu(m){var y=_u(m.r),I=_u(m.g),U=_u(m.b),J=md((.4124564*y+.3575761*I+.1804375*U)/Pc),ne=md((.2126729*y+.7151522*I+.072175*U)/vc),fe=md((.0193339*y+.119192*I+.9503041*U)/sv);return{l:116*ne-16,a:500*(J-ne),b:200*(ne-fe),alpha:m.a}}function Lh(m){var y=(m.l+16)/116,I=isNaN(m.a)?y:y+m.a/500,U=isNaN(m.b)?y:y-m.b/200;return y=vc*sh(y),I=Pc*sh(I),U=sv*sh(U),new ss(Fs(3.2404542*I-1.5371385*y-.4985314*U),Fs(-.969266*I+1.8760108*y+.041556*U),Fs(.0556434*I-.2040259*y+1.0572252*U),m.alpha)}function Is(m,y,I){return{l:Qs(m.l,y.l,I),a:Qs(m.a,y.a,I),b:Qs(m.b,y.b,I),alpha:Qs(m.alpha,y.alpha,I)}}function Pf(m){var y=xu(m),I=y.l,U=y.a,J=y.b,ne=Math.atan2(J,U)*vf;return{h:ne<0?ne+360:ne,c:Math.sqrt(U*U+J*J),l:I,alpha:m.a}}function Ic(m){var y=m.h*ru,I=m.c,U=m.l;return Lh({l:U,a:Math.cos(y)*I,b:Math.sin(y)*I,alpha:m.alpha})}function ju(m,y,I){var U=y-m;return m+I*(U>180||U<-180?U-360*Math.round(U/360):U)}function Vf(m,y,I){return{h:ju(m.h,y.h,I),c:Qs(m.c,y.c,I),l:Qs(m.l,y.l,I),alpha:Qs(m.alpha,y.alpha,I)}}var pc={forward:xu,reverse:Lh,interpolate:Is},pf={forward:Pf,reverse:Ic,interpolate:Vf},Ph=Object.freeze({__proto__:null,lab:pc,hcl:pf}),Dl=function(y,I,U,J,ne){this.type=y,this.operator=I,this.interpolation=U,this.input=J,this.labels=[],this.outputs=[];for(var fe=0,Fe=ne;fe1}))return I.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);J={name:"cubic-bezier",controlPoints:Qe}}else return I.error("Unknown interpolation type "+String(J[0]),1,0);if(y.length-1<4)return I.error("Expected at least 4 arguments, but found only "+(y.length-1)+".");if((y.length-1)%2!==0)return I.error("Expected an even number of arguments.");if(ne=I.parse(ne,2,Zn),!ne)return null;var st=[],mt=null;U==="interpolate-hcl"||U==="interpolate-lab"?mt=Tl:I.expectedType&&I.expectedType.kind!=="value"&&(mt=I.expectedType);for(var Xt=0;Xt=ur)return I.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Lr);var _i=I.parse(nr,Yr,mt);if(!_i)return null;mt=mt||_i.type,st.push([ur,_i])}return mt.kind!=="number"&&mt.kind!=="color"&&!(mt.kind==="array"&&mt.itemType.kind==="number"&&typeof mt.N=="number")?I.error("Type "+Ls(mt)+" is not interpolatable."):new Dl(mt,U,J,ne,st)},Dl.prototype.evaluate=function(y){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(y);var J=this.input.evaluate(y);if(J<=I[0])return U[0].evaluate(y);var ne=I.length;if(J>=I[ne-1])return U[ne-1].evaluate(y);var fe=ic(I,J),Fe=I[fe],Qe=I[fe+1],st=Dl.interpolationFactor(this.interpolation,J,Fe,Qe),mt=U[fe].evaluate(y),Xt=U[fe+1].evaluate(y);return this.operator==="interpolate"?Gu[this.type.kind.toLowerCase()](mt,Xt,st):this.operator==="interpolate-hcl"?pf.reverse(pf.interpolate(pf.forward(mt),pf.forward(Xt),st)):pc.reverse(pc.interpolate(pc.forward(mt),pc.forward(Xt),st))},Dl.prototype.eachChild=function(y){y(this.input);for(var I=0,U=this.outputs;I=U.length)throw new Ms("Array index out of bounds: "+I+" > "+(U.length-1)+".");if(I!==Math.floor(I))throw new Ms("Array index must be an integer, but found "+I+" instead.");return U[I]},gc.prototype.eachChild=function(y){y(this.index),y(this.input)},gc.prototype.outputDefined=function(){return!1},gc.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var hl=function(y,I){this.type=Co,this.needle=y,this.haystack=I};hl.parse=function(y,I){if(y.length!==3)return I.error("Expected 2 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,So);return!U||!J?null:Of(U.type,[Co,ko,Zn,Ec,So])?new hl(U,J):I.error("Expected first argument to be of type boolean, string, number or null, but found "+Ls(U.type)+" instead")},hl.prototype.evaluate=function(y){var I=this.needle.evaluate(y),U=this.haystack.evaluate(y);if(!U)return!1;if(!Gc(I,["boolean","string","number","null"]))throw new Ms("Expected first argument to be of type boolean, string, number or null, but found "+Ls(ws(I))+" instead.");if(!Gc(U,["string","array"]))throw new Ms("Expected second argument to be of type array or string, but found "+Ls(ws(U))+" instead.");return U.indexOf(I)>=0},hl.prototype.eachChild=function(y){y(this.needle),y(this.haystack)},hl.prototype.outputDefined=function(){return!0},hl.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var iu=function(y,I,U){this.type=Zn,this.needle=y,this.haystack=I,this.fromIndex=U};iu.parse=function(y,I){if(y.length<=2||y.length>=5)return I.error("Expected 3 or 4 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,So);if(!U||!J)return null;if(!Of(U.type,[Co,ko,Zn,Ec,So]))return I.error("Expected first argument to be of type boolean, string, number or null, but found "+Ls(U.type)+" instead");if(y.length===4){var ne=I.parse(y[3],3,Zn);return ne?new iu(U,J,ne):null}else return new iu(U,J)},iu.prototype.evaluate=function(y){var I=this.needle.evaluate(y),U=this.haystack.evaluate(y);if(!Gc(I,["boolean","string","number","null"]))throw new Ms("Expected first argument to be of type boolean, string, number or null, but found "+Ls(ws(I))+" instead.");if(!Gc(U,["string","array"]))throw new Ms("Expected second argument to be of type array or string, but found "+Ls(ws(U))+" instead.");if(this.fromIndex){var J=this.fromIndex.evaluate(y);return U.indexOf(I,J)}return U.indexOf(I)},iu.prototype.eachChild=function(y){y(this.needle),y(this.haystack),this.fromIndex&&y(this.fromIndex)},iu.prototype.outputDefined=function(){return!1},iu.prototype.serialize=function(){if(this.fromIndex!=null&&this.fromIndex!==void 0){var y=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),y]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var mc=function(y,I,U,J,ne,fe){this.inputType=y,this.type=I,this.input=U,this.cases=J,this.outputs=ne,this.otherwise=fe};mc.parse=function(y,I){if(y.length<5)return I.error("Expected at least 4 arguments, but found only "+(y.length-1)+".");if(y.length%2!==1)return I.error("Expected an even number of arguments.");var U,J;I.expectedType&&I.expectedType.kind!=="value"&&(J=I.expectedType);for(var ne={},fe=[],Fe=2;FeNumber.MAX_SAFE_INTEGER)return mt.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if(typeof nr=="number"&&Math.floor(nr)!==nr)return mt.error("Numeric branch labels must be integer values.");if(!U)U=ws(nr);else if(mt.checkSubtype(U,ws(nr)))return null;if(typeof ne[String(nr)]!="undefined")return mt.error("Branch labels must be unique.");ne[String(nr)]=fe.length}var Lr=I.parse(st,Fe,J);if(!Lr)return null;J=J||Lr.type,fe.push(Lr)}var Yr=I.parse(y[1],1,So);if(!Yr)return null;var _i=I.parse(y[y.length-1],y.length-1,J);return!_i||Yr.type.kind!=="value"&&I.concat(1).checkSubtype(U,Yr.type)?null:new mc(U,J,Yr,ne,fe,_i)},mc.prototype.evaluate=function(y){var I=this.input.evaluate(y),U=ws(I)===this.inputType&&this.outputs[this.cases[I]]||this.otherwise;return U.evaluate(y)},mc.prototype.eachChild=function(y){y(this.input),this.outputs.forEach(y),y(this.otherwise)},mc.prototype.outputDefined=function(){return this.outputs.every(function(y){return y.outputDefined()})&&this.otherwise.outputDefined()},mc.prototype.serialize=function(){for(var y=this,I=["match",this.input.serialize()],U=Object.keys(this.cases).sort(),J=[],ne={},fe=0,Fe=U;fe=5)return I.error("Expected 3 or 4 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,Zn);if(!U||!J)return null;if(!Of(U.type,[eu(So),ko,So]))return I.error("Expected first argument to be of type array or string, but found "+Ls(U.type)+" instead");if(y.length===4){var ne=I.parse(y[3],3,Zn);return ne?new nc(U.type,U,J,ne):null}else return new nc(U.type,U,J)},nc.prototype.evaluate=function(y){var I=this.input.evaluate(y),U=this.beginIndex.evaluate(y);if(!Gc(I,["string","array"]))throw new Ms("Expected first argument to be of type array or string, but found "+Ls(ws(I))+" instead.");if(this.endIndex){var J=this.endIndex.evaluate(y);return I.slice(U,J)}return I.slice(U)},nc.prototype.eachChild=function(y){y(this.input),y(this.beginIndex),this.endIndex&&y(this.endIndex)},nc.prototype.outputDefined=function(){return!1},nc.prototype.serialize=function(){if(this.endIndex!=null&&this.endIndex!==void 0){var y=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),y]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};function gf(m,y){return m==="=="||m==="!="?y.kind==="boolean"||y.kind==="string"||y.kind==="number"||y.kind==="null"||y.kind==="value":y.kind==="string"||y.kind==="number"||y.kind==="value"}function gt(m,y,I){return y===I}function Bt(m,y,I){return y!==I}function wr(m,y,I){return yI}function Ur(m,y,I){return y<=I}function fi(m,y,I){return y>=I}function xi(m,y,I,U){return U.compare(y,I)===0}function Fi(m,y,I,U){return!xi(m,y,I,U)}function Xi(m,y,I,U){return U.compare(y,I)<0}function hn(m,y,I,U){return U.compare(y,I)>0}function Ti(m,y,I,U){return U.compare(y,I)<=0}function qi(m,y,I,U){return U.compare(y,I)>=0}function Ii(m,y,I){var U=m!=="=="&&m!=="!=";return function(){function J(ne,fe,Fe){this.type=Co,this.lhs=ne,this.rhs=fe,this.collator=Fe,this.hasUntypedArgument=ne.type.kind==="value"||fe.type.kind==="value"}return J.parse=function(fe,Fe){if(fe.length!==3&&fe.length!==4)return Fe.error("Expected two or three arguments.");var Qe=fe[0],st=Fe.parse(fe[1],1,So);if(!st)return null;if(!gf(Qe,st.type))return Fe.concat(1).error('"'+Qe+`" comparisons are not supported for type '`+Ls(st.type)+"'.");var mt=Fe.parse(fe[2],2,So);if(!mt)return null;if(!gf(Qe,mt.type))return Fe.concat(2).error('"'+Qe+`" comparisons are not supported for type '`+Ls(mt.type)+"'.");if(st.type.kind!==mt.type.kind&&st.type.kind!=="value"&&mt.type.kind!=="value")return Fe.error("Cannot compare types '"+Ls(st.type)+"' and '"+Ls(mt.type)+"'.");U&&(st.type.kind==="value"&&mt.type.kind!=="value"?st=new Sl(mt.type,[st]):st.type.kind!=="value"&&mt.type.kind==="value"&&(mt=new Sl(st.type,[mt])));var Xt=null;if(fe.length===4){if(st.type.kind!=="string"&&mt.type.kind!=="string"&&st.type.kind!=="value"&&mt.type.kind!=="value")return Fe.error("Cannot use collator to compare non-string types.");if(Xt=Fe.parse(fe[3],3,rh),!Xt)return null}return new J(st,mt,Xt)},J.prototype.evaluate=function(fe){var Fe=this.lhs.evaluate(fe),Qe=this.rhs.evaluate(fe);if(U&&this.hasUntypedArgument){var st=ws(Fe),mt=ws(Qe);if(st.kind!==mt.kind||!(st.kind==="string"||st.kind==="number"))throw new Ms('Expected arguments for "'+m+'" to be (string, string) or (number, number), but found ('+st.kind+", "+mt.kind+") instead.")}if(this.collator&&!U&&this.hasUntypedArgument){var Xt=ws(Fe),ur=ws(Qe);if(Xt.kind!=="string"||ur.kind!=="string")return y(fe,Fe,Qe)}return this.collator?I(fe,Fe,Qe,this.collator.evaluate(fe)):y(fe,Fe,Qe)},J.prototype.eachChild=function(fe){fe(this.lhs),fe(this.rhs),this.collator&&fe(this.collator)},J.prototype.outputDefined=function(){return!0},J.prototype.serialize=function(){var fe=[m];return this.eachChild(function(Fe){fe.push(Fe.serialize())}),fe},J}()}var mi=Ii("==",gt,xi),Pn=Ii("!=",Bt,Fi),Ma=Ii("<",wr,Xi),Ta=Ii(">",vr,hn),Ea=Ii("<=",Ur,Ti),qa=Ii(">=",fi,qi),Cn=function(y,I,U,J,ne){this.type=ko,this.number=y,this.locale=I,this.currency=U,this.minFractionDigits=J,this.maxFractionDigits=ne};Cn.parse=function(y,I){if(y.length!==3)return I.error("Expected two arguments.");var U=I.parse(y[1],1,Zn);if(!U)return null;var J=y[2];if(typeof J!="object"||Array.isArray(J))return I.error("NumberFormat options argument must be an object.");var ne=null;if(J.locale&&(ne=I.parse(J.locale,1,ko),!ne))return null;var fe=null;if(J.currency&&(fe=I.parse(J.currency,1,ko),!fe))return null;var Fe=null;if(J["min-fraction-digits"]&&(Fe=I.parse(J["min-fraction-digits"],1,Zn),!Fe))return null;var Qe=null;return J["max-fraction-digits"]&&(Qe=I.parse(J["max-fraction-digits"],1,Zn),!Qe)?null:new Cn(U,ne,fe,Fe,Qe)},Cn.prototype.evaluate=function(y){return new Intl.NumberFormat(this.locale?this.locale.evaluate(y):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(y):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(y):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(y):void 0}).format(this.number.evaluate(y))},Cn.prototype.eachChild=function(y){y(this.number),this.locale&&y(this.locale),this.currency&&y(this.currency),this.minFractionDigits&&y(this.minFractionDigits),this.maxFractionDigits&&y(this.maxFractionDigits)},Cn.prototype.outputDefined=function(){return!1},Cn.prototype.serialize=function(){var y={};return this.locale&&(y.locale=this.locale.serialize()),this.currency&&(y.currency=this.currency.serialize()),this.minFractionDigits&&(y["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(y["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),y]};var sn=function(y){this.type=Zn,this.input=y};sn.parse=function(y,I){if(y.length!==2)return I.error("Expected 1 argument, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1);return U?U.type.kind!=="array"&&U.type.kind!=="string"&&U.type.kind!=="value"?I.error("Expected argument of type string or array, but found "+Ls(U.type)+" instead."):new sn(U):null},sn.prototype.evaluate=function(y){var I=this.input.evaluate(y);if(typeof I=="string")return I.length;if(Array.isArray(I))return I.length;throw new Ms("Expected value to be of type string or array, but found "+Ls(ws(I))+" instead.")},sn.prototype.eachChild=function(y){y(this.input)},sn.prototype.outputDefined=function(){return!1},sn.prototype.serialize=function(){var y=["length"];return this.eachChild(function(I){y.push(I.serialize())}),y};var Ua={"==":mi,"!=":Pn,">":Ta,"<":Ma,">=":qa,"<=":Ea,array:Sl,at:gc,boolean:Sl,case:Yc,coalesce:Wu,collator:tc,format:ec,image:Ps,in:hl,"index-of":iu,interpolate:Dl,"interpolate-hcl":Dl,"interpolate-lab":Dl,length:sn,let:Rc,literal:hs,match:mc,number:Sl,"number-format":Cn,object:Sl,slice:nc,step:yu,string:Sl,"to-boolean":wo,"to-color":wo,"to-number":wo,"to-string":wo,var:Lc,within:Lu};function mo(m,y){var I=y[0],U=y[1],J=y[2],ne=y[3];I=I.evaluate(m),U=U.evaluate(m),J=J.evaluate(m);var fe=ne?ne.evaluate(m):1,Fe=hc(I,U,J,fe);if(Fe)throw new Ms(Fe);return new ss(I/255*fe,U/255*fe,J/255*fe,fe)}function Xo(m,y){return m in y}function Ts(m,y){var I=y[m];return typeof I=="undefined"?null:I}function Qo(m,y,I,U){for(;I<=U;){var J=I+U>>1;if(y[J]===m)return!0;y[J]>m?U=J-1:I=J+1}return!1}function ys(m){return{type:m}}Ja.register(Ua,{error:[cf,[ko],function(m,y){var I=y[0];throw new Ms(I.evaluate(m))}],typeof:[ko,[So],function(m,y){var I=y[0];return Ls(ws(I.evaluate(m)))}],"to-rgba":[eu(Zn,4),[Tl],function(m,y){var I=y[0];return I.evaluate(m).toArray()}],rgb:[Tl,[Zn,Zn,Zn],mo],rgba:[Tl,[Zn,Zn,Zn,Zn],mo],has:{type:Co,overloads:[[[ko],function(m,y){var I=y[0];return Xo(I.evaluate(m),m.properties())}],[[ko,uf],function(m,y){var I=y[0],U=y[1];return Xo(I.evaluate(m),U.evaluate(m))}]]},get:{type:So,overloads:[[[ko],function(m,y){var I=y[0];return Ts(I.evaluate(m),m.properties())}],[[ko,uf],function(m,y){var I=y[0],U=y[1];return Ts(I.evaluate(m),U.evaluate(m))}]]},"feature-state":[So,[ko],function(m,y){var I=y[0];return Ts(I.evaluate(m),m.featureState||{})}],properties:[uf,[],function(m){return m.properties()}],"geometry-type":[ko,[],function(m){return m.geometryType()}],id:[So,[],function(m){return m.id()}],zoom:[Zn,[],function(m){return m.globals.zoom}],"heatmap-density":[Zn,[],function(m){return m.globals.heatmapDensity||0}],"line-progress":[Zn,[],function(m){return m.globals.lineProgress||0}],accumulated:[So,[],function(m){return m.globals.accumulated===void 0?null:m.globals.accumulated}],"+":[Zn,ys(Zn),function(m,y){for(var I=0,U=0,J=y;U":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J>ne}],"filter-id->":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U>J}],"filter-<=":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J<=ne}],"filter-id-<=":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U<=J}],"filter->=":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J>=ne}],"filter-id->=":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U>=J}],"filter-has":[Co,[So],function(m,y){var I=y[0];return I.value in m.properties()}],"filter-has-id":[Co,[],function(m){return m.id()!==null&&m.id()!==void 0}],"filter-type-in":[Co,[eu(ko)],function(m,y){var I=y[0];return I.value.indexOf(m.geometryType())>=0}],"filter-id-in":[Co,[eu(So)],function(m,y){var I=y[0];return I.value.indexOf(m.id())>=0}],"filter-in-small":[Co,[ko,eu(So)],function(m,y){var I=y[0],U=y[1];return U.value.indexOf(m.properties()[I.value])>=0}],"filter-in-large":[Co,[ko,eu(So)],function(m,y){var I=y[0],U=y[1];return Qo(m.properties()[I.value],U.value,0,U.value.length-1)}],all:{type:Co,overloads:[[[Co,Co],function(m,y){var I=y[0],U=y[1];return I.evaluate(m)&&U.evaluate(m)}],[ys(Co),function(m,y){for(var I=0,U=y;I-1}function ia(m){return!!m.expression&&m.expression.interpolated}function Ka(m){return m instanceof Number?"number":m instanceof String?"string":m instanceof Boolean?"boolean":Array.isArray(m)?"array":m===null?"null":typeof m}function vs(m){return typeof m=="object"&&m!==null&&!Array.isArray(m)}function Ko(m){return m}function nu(m,y){var I=y.type==="color",U=m.stops&&typeof m.stops[0][0]=="object",J=U||m.property!==void 0,ne=U||!J,fe=m.type||(ia(y)?"exponential":"interval");if(I&&(m=Rl({},m),m.stops&&(m.stops=m.stops.map(function($n){return[$n[0],ss.parse($n[1])]})),m.default?m.default=ss.parse(m.default):m.default=ss.parse(y.default)),m.colorSpace&&m.colorSpace!=="rgb"&&!Ph[m.colorSpace])throw new Error("Unknown color space: "+m.colorSpace);var Fe,Qe,st;if(fe==="exponential")Fe=bu;else if(fe==="interval")Fe=mf;else if(fe==="categorical"){Fe=ac,Qe=Object.create(null);for(var mt=0,Xt=m.stops;mt=m.stops[U-1][0])return m.stops[U-1][1];var J=ic(m.stops.map(function(ne){return ne[0]}),I);return m.stops[J][1]}function bu(m,y,I){var U=m.base!==void 0?m.base:1;if(Ka(I)!=="number")return Ru(m.default,y.default);var J=m.stops.length;if(J===1||I<=m.stops[0][0])return m.stops[0][1];if(I>=m.stops[J-1][0])return m.stops[J-1][1];var ne=ic(m.stops.map(function(Xt){return Xt[0]}),I),fe=Du(I,U,m.stops[ne][0],m.stops[ne+1][0]),Fe=m.stops[ne][1],Qe=m.stops[ne+1][1],st=Gu[y.type]||Ko;if(m.colorSpace&&m.colorSpace!=="rgb"){var mt=Ph[m.colorSpace];st=function(Xt,ur){return mt.reverse(mt.interpolate(mt.forward(Xt),mt.forward(ur),fe))}}return typeof Fe.evaluate=="function"?{evaluate:function(){for(var ur=[],nr=arguments.length;nr--;)ur[nr]=arguments[nr];var Lr=Fe.evaluate.apply(void 0,ur),Yr=Qe.evaluate.apply(void 0,ur);if(!(Lr===void 0||Yr===void 0))return st(Lr,Yr,fe)}}:st(Fe,Qe,fe)}function Kc(m,y,I){return y.type==="color"?I=ss.parse(I):y.type==="formatted"?I=Vl.fromString(I.toString()):y.type==="resolvedImage"?I=Js.fromString(I.toString()):Ka(I)!==y.type&&(y.type!=="enum"||!y.values[I])&&(I=void 0),Ru(I,m.default,y.default)}function Du(m,y,I,U){var J=U-I,ne=m-I;return J===0?0:y===1?ne/J:(Math.pow(y,ne)-1)/(Math.pow(y,J)-1)}var Dc=function(y,I){this.expression=y,this._warningHistory={},this._evaluator=new $o,this._defaultValue=I?ee(I):null,this._enumValues=I&&I.type==="enum"?I.values:null};Dc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._evaluator.globals=y,this._evaluator.feature=I,this._evaluator.featureState=U,this._evaluator.canonical=J,this._evaluator.availableImages=ne||null,this._evaluator.formattedSection=fe,this.expression.evaluate(this._evaluator)},Dc.prototype.evaluate=function(y,I,U,J,ne,fe){this._evaluator.globals=y,this._evaluator.feature=I||null,this._evaluator.featureState=U||null,this._evaluator.canonical=J,this._evaluator.availableImages=ne||null,this._evaluator.formattedSection=fe||null;try{var Fe=this.expression.evaluate(this._evaluator);if(Fe==null||typeof Fe=="number"&&Fe!==Fe)return this._defaultValue;if(this._enumValues&&!(Fe in this._enumValues))throw new Ms("Expected value to be one of "+Object.keys(this._enumValues).map(function(Qe){return JSON.stringify(Qe)}).join(", ")+", but found "+JSON.stringify(Fe)+" instead.");return Fe}catch(Qe){return this._warningHistory[Qe.message]||(this._warningHistory[Qe.message]=!0,typeof console!="undefined"&&console.warn(Qe.message)),this._defaultValue}};function Da(m){return Array.isArray(m)&&m.length>0&&typeof m[0]=="string"&&m[0]in Ua}function eo(m,y){var I=new fl(Ua,[],y?Q(y):void 0),U=I.parse(m,void 0,void 0,void 0,y&&y.type==="string"?{typeAnnotation:"coerce"}:void 0);return U?Bo(new Dc(U,y)):yl(I.errors)}var Jc=function(y,I){this.kind=y,this._styleExpression=I,this.isStateDependent=y!=="constant"&&!tu(I.expression)};Jc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._styleExpression.evaluateWithoutErrorHandling(y,I,U,J,ne,fe)},Jc.prototype.evaluate=function(y,I,U,J,ne,fe){return this._styleExpression.evaluate(y,I,U,J,ne,fe)};var yc=function(y,I,U,J){this.kind=y,this.zoomStops=U,this._styleExpression=I,this.isStateDependent=y!=="camera"&&!tu(I.expression),this.interpolationType=J};yc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._styleExpression.evaluateWithoutErrorHandling(y,I,U,J,ne,fe)},yc.prototype.evaluate=function(y,I,U,J,ne,fe){return this._styleExpression.evaluate(y,I,U,J,ne,fe)},yc.prototype.interpolationFactor=function(y,I,U){return this.interpolationType?Dl.interpolationFactor(this.interpolationType,y,I,U):0};function _c(m,y){if(m=eo(m,y),m.result==="error")return m;var I=m.value.expression,U=$h(I);if(!U&&!Gs(y))return yl([new Ks("","data expressions not supported")]);var J=Pu(I,["zoom"]);if(!J&&!Rs(y))return yl([new Ks("","zoom expressions not supported")]);var ne=B(I);if(!ne&&!J)return yl([new Ks("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(ne instanceof Ks)return yl([ne]);if(ne instanceof Dl&&!ia(y))return yl([new Ks("",'"interpolate" expressions cannot be used with this property')]);if(!ne)return Bo(U?new Jc("constant",m.value):new Jc("source",m.value));var fe=ne instanceof Dl?ne.interpolation:void 0;return Bo(U?new yc("camera",m.value,ne.labels,fe):new yc("composite",m.value,ne.labels,fe))}var le=function(y,I){this._parameters=y,this._specification=I,Rl(this,nu(this._parameters,this._specification))};le.deserialize=function(y){return new le(y._parameters,y._specification)},le.serialize=function(y){return{_parameters:y._parameters,_specification:y._specification}};function w(m,y){if(vs(m))return new le(m,y);if(Da(m)){var I=_c(m,y);if(I.result==="error")throw new Error(I.value.map(function(J){return J.key+": "+J.message}).join(", "));return I.value}else{var U=m;return typeof m=="string"&&y.type==="color"&&(U=ss.parse(m)),{kind:"constant",evaluate:function(){return U}}}}function B(m){var y=null;if(m instanceof Rc)y=B(m.result);else if(m instanceof Wu)for(var I=0,U=m.args;IU.maximum?[new fa(y,I,I+" is greater than the maximum value "+U.maximum)]:[]}function it(m){var y=m.valueSpec,I=vo(m.value.type),U,J={},ne,fe,Fe=I!=="categorical"&&m.value.property===void 0,Qe=!Fe,st=Ka(m.value.stops)==="array"&&Ka(m.value.stops[0])==="array"&&Ka(m.value.stops[0][0])==="object",mt=se({key:m.key,value:m.value,valueSpec:m.styleSpec.function,style:m.style,styleSpec:m.styleSpec,objectElementValidators:{stops:Xt,default:Lr}});return I==="identity"&&Fe&&mt.push(new fa(m.key,m.value,'missing required property "property"')),I!=="identity"&&!m.value.stops&&mt.push(new fa(m.key,m.value,'missing required property "stops"')),I==="exponential"&&m.valueSpec.expression&&!ia(m.valueSpec)&&mt.push(new fa(m.key,m.value,"exponential functions not supported")),m.styleSpec.$version>=8&&(Qe&&!Gs(m.valueSpec)?mt.push(new fa(m.key,m.value,"property functions not supported")):Fe&&!Rs(m.valueSpec)&&mt.push(new fa(m.key,m.value,"zoom functions not supported"))),(I==="categorical"||st)&&m.value.property===void 0&&mt.push(new fa(m.key,m.value,'"property" property is required')),mt;function Xt(Yr){if(I==="identity")return[new fa(Yr.key,Yr.value,'identity function may not have a "stops" property')];var _i=[],si=Yr.value;return _i=_i.concat(qe({key:Yr.key,value:si,valueSpec:Yr.valueSpec,style:Yr.style,styleSpec:Yr.styleSpec,arrayElementValidator:ur})),Ka(si)==="array"&&si.length===0&&_i.push(new fa(Yr.key,si,"array must have at least one stop")),_i}function ur(Yr){var _i=[],si=Yr.value,Hi=Yr.key;if(Ka(si)!=="array")return[new fa(Hi,si,"array expected, "+Ka(si)+" found")];if(si.length!==2)return[new fa(Hi,si,"array length 2 expected, length "+si.length+" found")];if(st){if(Ka(si[0])!=="object")return[new fa(Hi,si,"object expected, "+Ka(si[0])+" found")];if(si[0].zoom===void 0)return[new fa(Hi,si,"object stop key must have zoom")];if(si[0].value===void 0)return[new fa(Hi,si,"object stop key must have value")];if(fe&&fe>vo(si[0].zoom))return[new fa(Hi,si[0].zoom,"stop zoom values must appear in ascending order")];vo(si[0].zoom)!==fe&&(fe=vo(si[0].zoom),ne=void 0,J={}),_i=_i.concat(se({key:Hi+"[0]",value:si[0],valueSpec:{zoom:{}},style:Yr.style,styleSpec:Yr.styleSpec,objectElementValidators:{zoom:je,value:nr}}))}else _i=_i.concat(nr({key:Hi+"[0]",value:si[0],valueSpec:{},style:Yr.style,styleSpec:Yr.styleSpec},si));return Da(Zl(si[1]))?_i.concat([new fa(Hi+"[1]",si[1],"expressions are not allowed in function stops.")]):_i.concat(Wa({key:Hi+"[1]",value:si[1],valueSpec:y,style:Yr.style,styleSpec:Yr.styleSpec}))}function nr(Yr,_i){var si=Ka(Yr.value),Hi=vo(Yr.value),Ei=Yr.value!==null?Yr.value:_i;if(!U)U=si;else if(si!==U)return[new fa(Yr.key,Ei,si+" stop domain type must match previous stop domain type "+U)];if(si!=="number"&&si!=="string"&&si!=="boolean")return[new fa(Yr.key,Ei,"stop domain value must be a number, string, or boolean")];if(si!=="number"&&I!=="categorical"){var Vi="number expected, "+si+" found";return Gs(y)&&I===void 0&&(Vi+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new fa(Yr.key,Ei,Vi)]}return I==="categorical"&&si==="number"&&(!isFinite(Hi)||Math.floor(Hi)!==Hi)?[new fa(Yr.key,Ei,"integer expected, found "+Hi)]:I!=="categorical"&&si==="number"&&ne!==void 0&&Hi=2&&m[1]!=="$id"&&m[1]!=="$type";case"in":return m.length>=3&&(typeof m[1]!="string"||Array.isArray(m[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return m.length!==3||Array.isArray(m[1])||Array.isArray(m[2]);case"any":case"all":for(var y=0,I=m.slice(1);yy?1:0}function Oe(m){if(!Array.isArray(m))return!1;if(m[0]==="within")return!0;for(var y=1;y"||y==="<="||y===">="?He(m[1],m[2],y):y==="any"?et(m.slice(1)):y==="all"?["all"].concat(m.slice(1).map(Je)):y==="none"?["all"].concat(m.slice(1).map(Je).map(Ut)):y==="in"?Mt(m[1],m.slice(2)):y==="!in"?Ut(Mt(m[1],m.slice(2))):y==="has"?Dt(m[1]):y==="!has"?Ut(Dt(m[1])):y==="within"?m:!0;return I}function He(m,y,I){switch(m){case"$type":return["filter-type-"+I,y];case"$id":return["filter-id-"+I,y];default:return["filter-"+I,m,y]}}function et(m){return["any"].concat(m.map(Je))}function Mt(m,y){if(y.length===0)return!1;switch(m){case"$type":return["filter-type-in",["literal",y]];case"$id":return["filter-id-in",["literal",y]];default:return y.length>200&&!y.some(function(I){return typeof I!=typeof y[0]})?["filter-in-large",m,["literal",y.sort(Pe)]]:["filter-in-small",m,["literal",y]]}}function Dt(m){switch(m){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",m]}}function Ut(m){return["!",m]}function tr(m){return Sr(Zl(m.value))?yt(Rl({},m,{expressionContext:"filter",valueSpec:{value:"boolean"}})):mr(m)}function mr(m){var y=m.value,I=m.key;if(Ka(y)!=="array")return[new fa(I,y,"array expected, "+Ka(y)+" found")];var U=m.styleSpec,J,ne=[];if(y.length<1)return[new fa(I,y,"filter array must have at least 1 element")];switch(ne=ne.concat(hr({key:I+"[0]",value:y[0],valueSpec:U.filter_operator,style:m.style,styleSpec:m.styleSpec})),vo(y[0])){case"<":case"<=":case">":case">=":y.length>=2&&vo(y[1])==="$type"&&ne.push(new fa(I,y,'"$type" cannot be use with operator "'+y[0]+'"'));case"==":case"!=":y.length!==3&&ne.push(new fa(I,y,'filter array for operator "'+y[0]+'" must have 3 elements'));case"in":case"!in":y.length>=2&&(J=Ka(y[1]),J!=="string"&&ne.push(new fa(I+"[1]",y[1],"string expected, "+J+" found")));for(var fe=2;fe=mt[nr+0]&&U>=mt[nr+1])?(fe[ur]=!0,ne.push(st[ur])):fe[ur]=!1}}},au.prototype._forEachCell=function(m,y,I,U,J,ne,fe,Fe){for(var Qe=this._convertToCellCoord(m),st=this._convertToCellCoord(y),mt=this._convertToCellCoord(I),Xt=this._convertToCellCoord(U),ur=Qe;ur<=mt;ur++)for(var nr=st;nr<=Xt;nr++){var Lr=this.d*nr+ur;if(!(Fe&&!Fe(this._convertFromCellCoord(ur),this._convertFromCellCoord(nr),this._convertFromCellCoord(ur+1),this._convertFromCellCoord(nr+1)))&&J.call(this,m,y,I,U,Lr,ne,fe,Fe))return}},au.prototype._convertFromCellCoord=function(m){return(m-this.padding)/this.scale},au.prototype._convertToCellCoord=function(m){return Math.max(0,Math.min(this.d-1,Math.floor(m*this.scale)+this.padding))},au.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var m=this.cells,y=el+this.cells.length+1+1,I=0,U=0;U=0)){var Xt=m[mt];st[mt]=Fl[Qe].shallow.indexOf(mt)>=0?Xt:Ue(Xt,y)}m instanceof Error&&(st.message=m.message)}if(st.$name)throw new Error("$name property is reserved for worker serialization logic.");return Qe!=="Object"&&(st.$name=Qe),st}throw new Error("can't serialize object of type "+typeof m)}function We(m){if(m==null||typeof m=="boolean"||typeof m=="number"||typeof m=="string"||m instanceof Boolean||m instanceof Number||m instanceof String||m instanceof Date||m instanceof RegExp||we(m)||Be(m)||ArrayBuffer.isView(m)||m instanceof zc)return m;if(Array.isArray(m))return m.map(We);if(typeof m=="object"){var y=m.$name||"Object",I=Fl[y],U=I.klass;if(!U)throw new Error("can't deserialize unregistered class "+y);if(U.deserialize)return U.deserialize(m);for(var J=Object.create(U.prototype),ne=0,fe=Object.keys(m);ne=0?Qe:We(Qe)}}return J}throw new Error("can't deserialize object of type "+typeof m)}var wt=function(){this.first=!0};wt.prototype.update=function(y,I){var U=Math.floor(y);return this.first?(this.first=!1,this.lastIntegerZoom=U,this.lastIntegerZoomTime=0,this.lastZoom=y,this.lastFloorZoom=U,!0):(this.lastFloorZoom>U?(this.lastIntegerZoom=U+1,this.lastIntegerZoomTime=I):this.lastFloorZoom=128&&m<=255},Arabic:function(m){return m>=1536&&m<=1791},"Arabic Supplement":function(m){return m>=1872&&m<=1919},"Arabic Extended-A":function(m){return m>=2208&&m<=2303},"Hangul Jamo":function(m){return m>=4352&&m<=4607},"Unified Canadian Aboriginal Syllabics":function(m){return m>=5120&&m<=5759},Khmer:function(m){return m>=6016&&m<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(m){return m>=6320&&m<=6399},"General Punctuation":function(m){return m>=8192&&m<=8303},"Letterlike Symbols":function(m){return m>=8448&&m<=8527},"Number Forms":function(m){return m>=8528&&m<=8591},"Miscellaneous Technical":function(m){return m>=8960&&m<=9215},"Control Pictures":function(m){return m>=9216&&m<=9279},"Optical Character Recognition":function(m){return m>=9280&&m<=9311},"Enclosed Alphanumerics":function(m){return m>=9312&&m<=9471},"Geometric Shapes":function(m){return m>=9632&&m<=9727},"Miscellaneous Symbols":function(m){return m>=9728&&m<=9983},"Miscellaneous Symbols and Arrows":function(m){return m>=11008&&m<=11263},"CJK Radicals Supplement":function(m){return m>=11904&&m<=12031},"Kangxi Radicals":function(m){return m>=12032&&m<=12255},"Ideographic Description Characters":function(m){return m>=12272&&m<=12287},"CJK Symbols and Punctuation":function(m){return m>=12288&&m<=12351},Hiragana:function(m){return m>=12352&&m<=12447},Katakana:function(m){return m>=12448&&m<=12543},Bopomofo:function(m){return m>=12544&&m<=12591},"Hangul Compatibility Jamo":function(m){return m>=12592&&m<=12687},Kanbun:function(m){return m>=12688&&m<=12703},"Bopomofo Extended":function(m){return m>=12704&&m<=12735},"CJK Strokes":function(m){return m>=12736&&m<=12783},"Katakana Phonetic Extensions":function(m){return m>=12784&&m<=12799},"Enclosed CJK Letters and Months":function(m){return m>=12800&&m<=13055},"CJK Compatibility":function(m){return m>=13056&&m<=13311},"CJK Unified Ideographs Extension A":function(m){return m>=13312&&m<=19903},"Yijing Hexagram Symbols":function(m){return m>=19904&&m<=19967},"CJK Unified Ideographs":function(m){return m>=19968&&m<=40959},"Yi Syllables":function(m){return m>=40960&&m<=42127},"Yi Radicals":function(m){return m>=42128&&m<=42191},"Hangul Jamo Extended-A":function(m){return m>=43360&&m<=43391},"Hangul Syllables":function(m){return m>=44032&&m<=55215},"Hangul Jamo Extended-B":function(m){return m>=55216&&m<=55295},"Private Use Area":function(m){return m>=57344&&m<=63743},"CJK Compatibility Ideographs":function(m){return m>=63744&&m<=64255},"Arabic Presentation Forms-A":function(m){return m>=64336&&m<=65023},"Vertical Forms":function(m){return m>=65040&&m<=65055},"CJK Compatibility Forms":function(m){return m>=65072&&m<=65103},"Small Form Variants":function(m){return m>=65104&&m<=65135},"Arabic Presentation Forms-B":function(m){return m>=65136&&m<=65279},"Halfwidth and Fullwidth Forms":function(m){return m>=65280&&m<=65519}};function zt(m){for(var y=0,I=m;y=65097&&m<=65103)||tt["CJK Compatibility Ideographs"](m)||tt["CJK Compatibility"](m)||tt["CJK Radicals Supplement"](m)||tt["CJK Strokes"](m)||tt["CJK Symbols and Punctuation"](m)&&!(m>=12296&&m<=12305)&&!(m>=12308&&m<=12319)&&m!==12336||tt["CJK Unified Ideographs Extension A"](m)||tt["CJK Unified Ideographs"](m)||tt["Enclosed CJK Letters and Months"](m)||tt["Hangul Compatibility Jamo"](m)||tt["Hangul Jamo Extended-A"](m)||tt["Hangul Jamo Extended-B"](m)||tt["Hangul Jamo"](m)||tt["Hangul Syllables"](m)||tt.Hiragana(m)||tt["Ideographic Description Characters"](m)||tt.Kanbun(m)||tt["Kangxi Radicals"](m)||tt["Katakana Phonetic Extensions"](m)||tt.Katakana(m)&&m!==12540||tt["Halfwidth and Fullwidth Forms"](m)&&m!==65288&&m!==65289&&m!==65293&&!(m>=65306&&m<=65310)&&m!==65339&&m!==65341&&m!==65343&&!(m>=65371&&m<=65503)&&m!==65507&&!(m>=65512&&m<=65519)||tt["Small Form Variants"](m)&&!(m>=65112&&m<=65118)&&!(m>=65123&&m<=65126)||tt["Unified Canadian Aboriginal Syllabics"](m)||tt["Unified Canadian Aboriginal Syllabics Extended"](m)||tt["Vertical Forms"](m)||tt["Yijing Hexagram Symbols"](m)||tt["Yi Syllables"](m)||tt["Yi Radicals"](m))}function oi(m){return!!(tt["Latin-1 Supplement"](m)&&(m===167||m===169||m===174||m===177||m===188||m===189||m===190||m===215||m===247)||tt["General Punctuation"](m)&&(m===8214||m===8224||m===8225||m===8240||m===8241||m===8251||m===8252||m===8258||m===8263||m===8264||m===8265||m===8273)||tt["Letterlike Symbols"](m)||tt["Number Forms"](m)||tt["Miscellaneous Technical"](m)&&(m>=8960&&m<=8967||m>=8972&&m<=8991||m>=8996&&m<=9e3||m===9003||m>=9085&&m<=9114||m>=9150&&m<=9165||m===9167||m>=9169&&m<=9179||m>=9186&&m<=9215)||tt["Control Pictures"](m)&&m!==9251||tt["Optical Character Recognition"](m)||tt["Enclosed Alphanumerics"](m)||tt["Geometric Shapes"](m)||tt["Miscellaneous Symbols"](m)&&!(m>=9754&&m<=9759)||tt["Miscellaneous Symbols and Arrows"](m)&&(m>=11026&&m<=11055||m>=11088&&m<=11097||m>=11192&&m<=11243)||tt["CJK Symbols and Punctuation"](m)||tt.Katakana(m)||tt["Private Use Area"](m)||tt["CJK Compatibility Forms"](m)||tt["Small Form Variants"](m)||tt["Halfwidth and Fullwidth Forms"](m)||m===8734||m===8756||m===8757||m>=9984&&m<=10087||m>=10102&&m<=10131||m===65532||m===65533)}function ui(m){return!(Ir(m)||oi(m))}function qr(m){return tt.Arabic(m)||tt["Arabic Supplement"](m)||tt["Arabic Extended-A"](m)||tt["Arabic Presentation Forms-A"](m)||tt["Arabic Presentation Forms-B"](m)}function Kr(m){return m>=1424&&m<=2303||tt["Arabic Presentation Forms-A"](m)||tt["Arabic Presentation Forms-B"](m)}function ii(m,y){return!(!y&&Kr(m)||m>=2304&&m<=3583||m>=3840&&m<=4255||tt.Khmer(m))}function vi(m){for(var y=0,I=m;y-1&&(dn=Jr.error),un&&un(m)};function ga(){ya.fire(new jo("pluginStateChange",{pluginStatus:dn,pluginURL:En}))}var ya=new Sn,so=function(){return dn},wa=function(m){return m({pluginStatus:dn,pluginURL:En}),ya.on("pluginStateChange",m),m},io=function(m,y,I){if(I===void 0&&(I=!1),dn===Jr.deferred||dn===Jr.loading||dn===Jr.loaded)throw new Error("setRTLTextPlugin cannot be called multiple times.");En=nt.resolveURL(m),dn=Jr.deferred,un=y,ga(),I||Ss()},Ss=function(){if(dn!==Jr.deferred||!En)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");dn=Jr.loading,ga(),En&&Zr({url:En},function(m){m?Nn(m):(dn=Jr.loaded,ga())})},_s={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return dn===Jr.loaded||_s.applyArabicShaping!=null},isLoading:function(){return dn===Jr.loading},setState:function(y){dn=y.pluginStatus,En=y.pluginURL},isParsed:function(){return _s.applyArabicShaping!=null&&_s.processBidirectionalText!=null&&_s.processStyledBidirectionalText!=null},getPluginURL:function(){return En}},Ns=function(){!_s.isLoading()&&!_s.isLoaded()&&so()==="deferred"&&Ss()},pn=function(y,I){this.zoom=y,I?(this.now=I.now,this.fadeDuration=I.fadeDuration,this.zoomHistory=I.zoomHistory,this.transition=I.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new wt,this.transition={})};pn.prototype.isSupportedScript=function(y){return ci(y,_s.isLoaded())},pn.prototype.crossFadingFactor=function(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},pn.prototype.getCrossfadeParameters=function(){var y=this.zoom,I=y-Math.floor(y),U=this.crossFadingFactor();return y>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:I+(1-I)*U}:{fromScale:.5,toScale:1,t:1-(1-U)*I}};var za=function(y,I){this.property=y,this.value=I,this.expression=w(I===void 0?y.specification.default:I,y.specification)};za.prototype.isDataDriven=function(){return this.expression.kind==="source"||this.expression.kind==="composite"},za.prototype.possiblyEvaluate=function(y,I,U){return this.property.possiblyEvaluate(this,y,I,U)};var Lo=function(y){this.property=y,this.value=new za(y,void 0)};Lo.prototype.transitioned=function(y,I){return new js(this.property,this.value,I,_({},y.transition,this.transition),y.now)},Lo.prototype.untransitioned=function(){return new js(this.property,this.value,null,{},0)};var Fo=function(y){this._properties=y,this._values=Object.create(y.defaultTransitionablePropertyValues)};Fo.prototype.getValue=function(y){return G(this._values[y].value.value)},Fo.prototype.setValue=function(y,I){this._values.hasOwnProperty(y)||(this._values[y]=new Lo(this._values[y].property)),this._values[y].value=new za(this._values[y].property,I===null?void 0:G(I))},Fo.prototype.getTransition=function(y){return G(this._values[y].transition)},Fo.prototype.setTransition=function(y,I){this._values.hasOwnProperty(y)||(this._values[y]=new Lo(this._values[y].property)),this._values[y].transition=G(I)||void 0},Fo.prototype.serialize=function(){for(var y={},I=0,U=Object.keys(this._values);Ithis.end)return this.prior=null,ne;if(this.value.isDataDriven())return this.prior=null,ne;if(Jfe.zoomHistory.lastIntegerZoom?{from:U,to:J}:{from:ne,to:J}},y.prototype.interpolate=function(U){return U},y}(Er),wi=function(y){this.specification=y};wi.prototype.possiblyEvaluate=function(y,I,U,J){if(y.value!==void 0)if(y.expression.kind==="constant"){var ne=y.expression.evaluate(I,null,{},U,J);return this._calculate(ne,ne,ne,I)}else return this._calculate(y.expression.evaluate(new pn(Math.floor(I.zoom-1),I)),y.expression.evaluate(new pn(Math.floor(I.zoom),I)),y.expression.evaluate(new pn(Math.floor(I.zoom+1),I)),I)},wi.prototype._calculate=function(y,I,U,J){var ne=J.zoom;return ne>J.zoomHistory.lastIntegerZoom?{from:y,to:I}:{from:U,to:I}},wi.prototype.interpolate=function(y){return y};var Ui=function(y){this.specification=y};Ui.prototype.possiblyEvaluate=function(y,I,U,J){return!!y.expression.evaluate(I,null,{},U,J)},Ui.prototype.interpolate=function(){return!1};var Oi=function(y){this.properties=y,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(var I in y){var U=y[I];U.specification.overridable&&this.overridableProperties.push(I);var J=this.defaultPropertyValues[I]=new za(U,void 0),ne=this.defaultTransitionablePropertyValues[I]=new Lo(U);this.defaultTransitioningPropertyValues[I]=ne.untransitioned(),this.defaultPossiblyEvaluatedValues[I]=J.possiblyEvaluate({})}};Z("DataDrivenProperty",Er),Z("DataConstantProperty",At),Z("CrossFadedDataDrivenProperty",Wr),Z("CrossFadedProperty",wi),Z("ColorRampProperty",Ui);var Bi="-transition",cn=function(m){function y(I,U){if(m.call(this),this.id=I.id,this.type=I.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},I.type!=="custom"&&(I=I,this.metadata=I.metadata,this.minzoom=I.minzoom,this.maxzoom=I.maxzoom,I.type!=="background"&&(this.source=I.source,this.sourceLayer=I["source-layer"],this.filter=I.filter),U.layout&&(this._unevaluatedLayout=new fu(U.layout)),U.paint)){this._transitionablePaint=new Fo(U.paint);for(var J in I.paint)this.setPaintProperty(J,I.paint[J],{validate:!1});for(var ne in I.layout)this.setLayoutProperty(ne,I.layout[ne],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new xc(U.paint)}}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},y.prototype.getLayoutProperty=function(U){return U==="visibility"?this.visibility:this._unevaluatedLayout.getValue(U)},y.prototype.setLayoutProperty=function(U,J,ne){if(ne===void 0&&(ne={}),J!=null){var fe="layers."+this.id+".layout."+U;if(this._validate(Hl,fe,U,J,ne))return}if(U==="visibility"){this.visibility=J;return}this._unevaluatedLayout.setValue(U,J)},y.prototype.getPaintProperty=function(U){return V(U,Bi)?this._transitionablePaint.getTransition(U.slice(0,-Bi.length)):this._transitionablePaint.getValue(U)},y.prototype.setPaintProperty=function(U,J,ne){if(ne===void 0&&(ne={}),J!=null){var fe="layers."+this.id+".paint."+U;if(this._validate(_l,fe,U,J,ne))return!1}if(V(U,Bi))return this._transitionablePaint.setTransition(U.slice(0,-Bi.length),J||void 0),!1;var Fe=this._transitionablePaint._values[U],Qe=Fe.property.specification["property-type"]==="cross-faded-data-driven",st=Fe.value.isDataDriven(),mt=Fe.value;this._transitionablePaint.setValue(U,J),this._handleSpecialPaintPropertyUpdate(U);var Xt=this._transitionablePaint._values[U].value,ur=Xt.isDataDriven();return ur||st||Qe||this._handleOverridablePaintPropertyUpdate(U,mt,Xt)},y.prototype._handleSpecialPaintPropertyUpdate=function(U){},y.prototype._handleOverridablePaintPropertyUpdate=function(U,J,ne){return!1},y.prototype.isHidden=function(U){return this.minzoom&&U=this.maxzoom?!0:this.visibility==="none"},y.prototype.updateTransitions=function(U){this._transitioningPaint=this._transitionablePaint.transitioned(U,this._transitioningPaint)},y.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},y.prototype.recalculate=function(U,J){U.getCrossfadeParameters&&(this._crossfadeParameters=U.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(U,void 0,J)),this.paint=this._transitioningPaint.possiblyEvaluate(U,void 0,J)},y.prototype.serialize=function(){var U={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(U.layout=U.layout||{},U.layout.visibility=this.visibility),X(U,function(J,ne){return J!==void 0&&!(ne==="layout"&&!Object.keys(J).length)&&!(ne==="paint"&&!Object.keys(J).length)})},y.prototype._validate=function(U,J,ne,fe,Fe){return Fe===void 0&&(Fe={}),Fe&&Fe.validate===!1?!1:Zu(this,U.call(yo,{key:J,layerType:this.type,objectKey:ne,value:fe,styleSpec:on,style:{glyphs:!0,sprite:!0}}))},y.prototype.is3D=function(){return!1},y.prototype.isTileClipped=function(){return!1},y.prototype.hasOffscreenPass=function(){return!1},y.prototype.resize=function(){},y.prototype.isStateDependent=function(){for(var U in this.paint._values){var J=this.paint.get(U);if(!(!(J instanceof dl)||!Gs(J.property.specification))&&(J.value.kind==="source"||J.value.kind==="composite")&&J.value.isStateDependent)return!0}return!1},y}(Sn),On={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Bn=function(y,I){this._structArray=y,this._pos1=I*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},yn=128,to=5,Rn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};Rn.serialize=function(y,I){return y._trim(),I&&(y.isTransferred=!0,I.push(y.arrayBuffer)),{length:y.length,arrayBuffer:y.arrayBuffer}},Rn.deserialize=function(y){var I=Object.create(this.prototype);return I.arrayBuffer=y.arrayBuffer,I.length=y.length,I.capacity=y.arrayBuffer.byteLength/I.bytesPerElement,I._refreshViews(),I},Rn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Rn.prototype.clear=function(){this.length=0},Rn.prototype.resize=function(y){this.reserve(y),this.length=y},Rn.prototype.reserve=function(y){if(y>this.capacity){this.capacity=Math.max(y,Math.floor(this.capacity*to),yn),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var I=this.uint8;this._refreshViews(),I&&this.uint8.set(I)}},Rn.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};function Dn(m,y){y===void 0&&(y=1);var I=0,U=0,J=m.map(function(fe){var Fe=fn(fe.type),Qe=I=Ai(I,Math.max(y,Fe)),st=fe.components||1;return U=Math.max(U,Fe),I+=Fe*st,{name:fe.name,type:fe.type,components:st,offset:Qe}}),ne=Ai(I,Math.max(U,y));return{members:J,size:ne,alignment:y}}function fn(m){return On[m].BYTES_PER_ELEMENT}function Ai(m,y){return Math.ceil(m/y)*y}var ji=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.int16[fe+0]=J,this.int16[fe+1]=ne,U},y}(Rn);ji.prototype.bytesPerElement=4,Z("StructArrayLayout2i4",ji);var Ln=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*4;return this.int16[Qe+0]=J,this.int16[Qe+1]=ne,this.int16[Qe+2]=fe,this.int16[Qe+3]=Fe,U},y}(Rn);Ln.prototype.bytesPerElement=8,Z("StructArrayLayout4i8",Ln);var Un=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*6;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.int16[mt+2]=fe,this.int16[mt+3]=Fe,this.int16[mt+4]=Qe,this.int16[mt+5]=st,U},y}(Rn);Un.prototype.bytesPerElement=12,Z("StructArrayLayout2i4i12",Un);var gn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*4,Xt=U*8;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.uint8[Xt+4]=fe,this.uint8[Xt+5]=Fe,this.uint8[Xt+6]=Qe,this.uint8[Xt+7]=st,U},y}(Rn);gn.prototype.bytesPerElement=8,Z("StructArrayLayout2i4ub8",gn);var ca=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.float32[fe+0]=J,this.float32[fe+1]=ne,U},y}(Rn);ca.prototype.bytesPerElement=8,Z("StructArrayLayout2f8",ca);var Kn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur){var nr=this.length;return this.resize(nr+1),this.emplace(nr,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr){var Lr=U*10;return this.uint16[Lr+0]=J,this.uint16[Lr+1]=ne,this.uint16[Lr+2]=fe,this.uint16[Lr+3]=Fe,this.uint16[Lr+4]=Qe,this.uint16[Lr+5]=st,this.uint16[Lr+6]=mt,this.uint16[Lr+7]=Xt,this.uint16[Lr+8]=ur,this.uint16[Lr+9]=nr,U},y}(Rn);Kn.prototype.bytesPerElement=20,Z("StructArrayLayout10ui20",Kn);var Za=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr){var Yr=this.length;return this.resize(Yr+1),this.emplace(Yr,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr){var _i=U*12;return this.int16[_i+0]=J,this.int16[_i+1]=ne,this.int16[_i+2]=fe,this.int16[_i+3]=Fe,this.uint16[_i+4]=Qe,this.uint16[_i+5]=st,this.uint16[_i+6]=mt,this.uint16[_i+7]=Xt,this.int16[_i+8]=ur,this.int16[_i+9]=nr,this.int16[_i+10]=Lr,this.int16[_i+11]=Yr,U},y}(Rn);Za.prototype.bytesPerElement=24,Z("StructArrayLayout4i4ui4i24",Za);var wn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.float32[Fe+0]=J,this.float32[Fe+1]=ne,this.float32[Fe+2]=fe,U},y}(Rn);wn.prototype.bytesPerElement=12,Z("StructArrayLayout3f12",wn);var vn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.uint32[ne+0]=J,U},y}(Rn);vn.prototype.bytesPerElement=4,Z("StructArrayLayout1ul4",vn);var Aa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt){var ur=this.length;return this.resize(ur+1),this.emplace(ur,U,J,ne,fe,Fe,Qe,st,mt,Xt)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur){var nr=U*10,Lr=U*5;return this.int16[nr+0]=J,this.int16[nr+1]=ne,this.int16[nr+2]=fe,this.int16[nr+3]=Fe,this.int16[nr+4]=Qe,this.int16[nr+5]=st,this.uint32[Lr+3]=mt,this.uint16[nr+8]=Xt,this.uint16[nr+9]=ur,U},y}(Rn);Aa.prototype.bytesPerElement=20,Z("StructArrayLayout6i1ul2ui20",Aa);var aa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*6;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.int16[mt+2]=fe,this.int16[mt+3]=Fe,this.int16[mt+4]=Qe,this.int16[mt+5]=st,U},y}(Rn);aa.prototype.bytesPerElement=12,Z("StructArrayLayout2i2i2i12",aa);var Xn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe){var Qe=this.length;return this.resize(Qe+1),this.emplace(Qe,U,J,ne,fe,Fe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe){var st=U*4,mt=U*8;return this.float32[st+0]=J,this.float32[st+1]=ne,this.float32[st+2]=fe,this.int16[mt+6]=Fe,this.int16[mt+7]=Qe,U},y}(Rn);Xn.prototype.bytesPerElement=16,Z("StructArrayLayout2f1f2i16",Xn);var Vn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*12,st=U*3;return this.uint8[Qe+0]=J,this.uint8[Qe+1]=ne,this.float32[st+1]=fe,this.float32[st+2]=Fe,U},y}(Rn);Vn.prototype.bytesPerElement=12,Z("StructArrayLayout2ub2f12",Vn);var ma=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.uint16[Fe+0]=J,this.uint16[Fe+1]=ne,this.uint16[Fe+2]=fe,U},y}(Rn);ma.prototype.bytesPerElement=6,Z("StructArrayLayout3ui6",ma);var ro=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei){var Vi=this.length;return this.resize(Vi+1),this.emplace(Vi,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi){var en=U*24,An=U*12,ra=U*48;return this.int16[en+0]=J,this.int16[en+1]=ne,this.uint16[en+2]=fe,this.uint16[en+3]=Fe,this.uint32[An+2]=Qe,this.uint32[An+3]=st,this.uint32[An+4]=mt,this.uint16[en+10]=Xt,this.uint16[en+11]=ur,this.uint16[en+12]=nr,this.float32[An+7]=Lr,this.float32[An+8]=Yr,this.uint8[ra+36]=_i,this.uint8[ra+37]=si,this.uint8[ra+38]=Hi,this.uint32[An+10]=Ei,this.int16[en+22]=Vi,U},y}(Rn);ro.prototype.bytesPerElement=48,Z("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",ro);var Ao=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja){var us=this.length;return this.resize(us+1),this.emplace(us,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja,us){var zo=U*34,rl=U*17;return this.int16[zo+0]=J,this.int16[zo+1]=ne,this.int16[zo+2]=fe,this.int16[zo+3]=Fe,this.int16[zo+4]=Qe,this.int16[zo+5]=st,this.int16[zo+6]=mt,this.int16[zo+7]=Xt,this.uint16[zo+8]=ur,this.uint16[zo+9]=nr,this.uint16[zo+10]=Lr,this.uint16[zo+11]=Yr,this.uint16[zo+12]=_i,this.uint16[zo+13]=si,this.uint16[zo+14]=Hi,this.uint16[zo+15]=Ei,this.uint16[zo+16]=Vi,this.uint16[zo+17]=en,this.uint16[zo+18]=An,this.uint16[zo+19]=ra,this.uint16[zo+20]=$n,this.uint16[zo+21]=Ba,this.uint16[zo+22]=_a,this.uint32[rl+12]=Pa,this.float32[rl+13]=qo,this.float32[rl+14]=Na,this.float32[rl+15]=ja,this.float32[rl+16]=us,U},y}(Rn);Ao.prototype.bytesPerElement=68,Z("StructArrayLayout8i15ui1ul4f68",Ao);var Jn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.float32[ne+0]=J,U},y}(Rn);Jn.prototype.bytesPerElement=4,Z("StructArrayLayout1f4",Jn);var Oa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.int16[Fe+0]=J,this.int16[Fe+1]=ne,this.int16[Fe+2]=fe,U},y}(Rn);Oa.prototype.bytesPerElement=6,Z("StructArrayLayout3i6",Oa);var _o=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*2,Qe=U*4;return this.uint32[Fe+0]=J,this.uint16[Qe+2]=ne,this.uint16[Qe+3]=fe,U},y}(Rn);_o.prototype.bytesPerElement=8,Z("StructArrayLayout1ul2ui8",_o);var Po=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.uint16[fe+0]=J,this.uint16[fe+1]=ne,U},y}(Rn);Po.prototype.bytesPerElement=4,Z("StructArrayLayout2ui4",Po);var Jo=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.uint16[ne+0]=J,U},y}(Rn);Jo.prototype.bytesPerElement=2,Z("StructArrayLayout1ui2",Jo);var Yl=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*4;return this.float32[Qe+0]=J,this.float32[Qe+1]=ne,this.float32[Qe+2]=fe,this.float32[Qe+3]=Fe,U},y}(Rn);Yl.prototype.bytesPerElement=16,Z("StructArrayLayout4f16",Yl);var $c=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return I.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},I.x1.get=function(){return this._structArray.int16[this._pos2+2]},I.y1.get=function(){return this._structArray.int16[this._pos2+3]},I.x2.get=function(){return this._structArray.int16[this._pos2+4]},I.y2.get=function(){return this._structArray.int16[this._pos2+5]},I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.anchorPoint.get=function(){return new u(this.anchorPointX,this.anchorPointY)},Object.defineProperties(y.prototype,I),y}(Bn);$c.prototype.size=20;var xs=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new $c(this,U)},y}(Aa);Z("CollisionBoxArray",xs);var Qc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},I.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},I.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},I.segment.get=function(){return this._structArray.uint16[this._pos2+10]},I.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},I.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},I.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},I.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},I.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},I.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},I.placedOrientation.set=function(U){this._structArray.uint8[this._pos1+37]=U},I.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},I.hidden.set=function(U){this._structArray.uint8[this._pos1+38]=U},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+10]=U},I.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(y.prototype,I),y}(Bn);Qc.prototype.size=48;var El=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new Qc(this,U)},y}(ro);Z("PlacedSymbolArray",El);var bc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},I.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},I.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},I.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},I.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},I.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},I.key.get=function(){return this._structArray.uint16[this._pos2+8]},I.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},I.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},I.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},I.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},I.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},I.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},I.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},I.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},I.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},I.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},I.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},I.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},I.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+12]=U},I.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},I.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},I.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},I.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(y.prototype,I),y}(Bn);bc.prototype.size=68;var wc=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new bc(this,U)},y}(Ao);Z("SymbolInstanceArray",wc);var yf=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getoffsetX=function(U){return this.float32[U*1+0]},y}(Jn);Z("GlyphOffsetArray",yf);var Gl=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getx=function(U){return this.int16[U*3+0]},y.prototype.gety=function(U){return this.int16[U*3+1]},y.prototype.gettileUnitDistanceFromAnchor=function(U){return this.int16[U*3+2]},y}(Oa);Z("SymbolLineVertexArray",Gl);var Fc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(y.prototype,I),y}(Bn);Fc.prototype.size=8;var ef=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new Fc(this,U)},y}(_o);Z("FeatureIndexArray",ef);var ls=Dn([{name:"a_pos",components:2,type:"Int16"}],4),_f=ls.members,ns=function(y){y===void 0&&(y=[]),this.segments=y};ns.prototype.prepareSegment=function(y,I,U,J){var ne=this.segments[this.segments.length-1];return y>ns.MAX_VERTEX_ARRAY_LENGTH&&re("Max vertices per segment is "+ns.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+y),(!ne||ne.vertexLength+y>ns.MAX_VERTEX_ARRAY_LENGTH||ne.sortKey!==J)&&(ne={vertexOffset:I.length,primitiveOffset:U.length,vertexLength:0,primitiveLength:0},J!==void 0&&(ne.sortKey=J),this.segments.push(ne)),ne},ns.prototype.get=function(){return this.segments},ns.prototype.destroy=function(){for(var y=0,I=this.segments;y>>16)*Qe&65535)<<16)&4294967295,mt=mt<<15|mt>>>17,mt=(mt&65535)*st+(((mt>>>16)*st&65535)<<16)&4294967295,fe^=mt,fe=fe<<13|fe>>>19,Fe=(fe&65535)*5+(((fe>>>16)*5&65535)<<16)&4294967295,fe=(Fe&65535)+27492+(((Fe>>>16)+58964&65535)<<16);switch(mt=0,J){case 3:mt^=(I.charCodeAt(Xt+2)&255)<<16;case 2:mt^=(I.charCodeAt(Xt+1)&255)<<8;case 1:mt^=I.charCodeAt(Xt)&255,mt=(mt&65535)*Qe+(((mt>>>16)*Qe&65535)<<16)&4294967295,mt=mt<<15|mt>>>17,mt=(mt&65535)*st+(((mt>>>16)*st&65535)<<16)&4294967295,fe^=mt}return fe^=I.length,fe^=fe>>>16,fe=(fe&65535)*2246822507+(((fe>>>16)*2246822507&65535)<<16)&4294967295,fe^=fe>>>13,fe=(fe&65535)*3266489909+(((fe>>>16)*3266489909&65535)<<16)&4294967295,fe^=fe>>>16,fe>>>0}m.exports=y}),O=a(function(m){function y(I,U){for(var J=I.length,ne=U^J,fe=0,Fe;J>=4;)Fe=I.charCodeAt(fe)&255|(I.charCodeAt(++fe)&255)<<8|(I.charCodeAt(++fe)&255)<<16|(I.charCodeAt(++fe)&255)<<24,Fe=(Fe&65535)*1540483477+(((Fe>>>16)*1540483477&65535)<<16),Fe^=Fe>>>24,Fe=(Fe&65535)*1540483477+(((Fe>>>16)*1540483477&65535)<<16),ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16)^Fe,J-=4,++fe;switch(J){case 3:ne^=(I.charCodeAt(fe+2)&255)<<16;case 2:ne^=(I.charCodeAt(fe+1)&255)<<8;case 1:ne^=I.charCodeAt(fe)&255,ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16)}return ne^=ne>>>13,ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16),ne^=ne>>>15,ne>>>0}m.exports=y}),$=K,pe=K,de=O;$.murmur3=pe,$.murmur2=de;var Ie=function(){this.ids=[],this.positions=[],this.indexed=!1};Ie.prototype.add=function(y,I,U,J){this.ids.push(pt(y)),this.positions.push(I,U,J)},Ie.prototype.getPositions=function(y){for(var I=pt(y),U=0,J=this.ids.length-1;U>1;this.ids[ne]>=I?J=ne:U=ne+1}for(var fe=[];this.ids[U]===I;){var Fe=this.positions[3*U],Qe=this.positions[3*U+1],st=this.positions[3*U+2];fe.push({index:Fe,start:Qe,end:st}),U++}return fe},Ie.serialize=function(y,I){var U=new Float64Array(y.ids),J=new Uint32Array(y.positions);return Kt(U,J,0,U.length-1),I&&I.push(U.buffer,J.buffer),{ids:U,positions:J}},Ie.deserialize=function(y){var I=new Ie;return I.ids=y.ids,I.positions=y.positions,I.indexed=!0,I};var $e=Math.pow(2,53)-1;function pt(m){var y=+m;return!isNaN(y)&&y<=$e?y:$(String(m))}function Kt(m,y,I,U){for(;I>1],ne=I-1,fe=U+1;;){do ne++;while(m[ne]J);if(ne>=fe)break;ir(m,ne,fe),ir(y,3*ne,3*fe),ir(y,3*ne+1,3*fe+1),ir(y,3*ne+2,3*fe+2)}fe-Ife.x+1||Qefe.y+1)&&re("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return I}function No(m,y){return{type:m.type,id:m.id,properties:m.properties,geometry:y?da(m):[]}}function Do(m,y,I,U,J){m.emplaceBack(y*2+(U+1)/2,I*2+(J+1)/2)}var ps=function(y){this.zoom=y.zoom,this.overscaling=y.overscaling,this.layers=y.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=y.index,this.hasPattern=!1,this.layoutVertexArray=new ji,this.indexArray=new ma,this.segments=new ns,this.programConfigurations=new Ri(y.layers,y.zoom),this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};ps.prototype.populate=function(y,I,U){var J=this.layers[0],ne=[],fe=null;J.type==="circle"&&(fe=J.layout.get("circle-sort-key"));for(var Fe=0,Qe=y;Fe=rn||ur<0||ur>=rn)){var nr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,y.sortKey),Lr=nr.vertexLength;Do(this.layoutVertexArray,Xt,ur,-1,-1),Do(this.layoutVertexArray,Xt,ur,1,-1),Do(this.layoutVertexArray,Xt,ur,1,1),Do(this.layoutVertexArray,Xt,ur,-1,1),this.indexArray.emplaceBack(Lr,Lr+1,Lr+2),this.indexArray.emplaceBack(Lr,Lr+3,Lr+2),nr.vertexLength+=4,nr.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,y,U,{},J)},Z("CircleBucket",ps,{omit:["layers"]});function fo(m,y){for(var I=0;I=3){for(var ne=0;ne1){if(Ev(m,y))return!0;for(var U=0;U1?m.distSqr(I):m.distSqr(I.sub(y)._mult(J)._add(y))}function vp(m,y){for(var I=!1,U,J,ne,fe=0;fey.y!=ne.y>y.y&&y.x<(ne.x-J.x)*(y.y-J.y)/(ne.y-J.y)+J.x&&(I=!I)}return I}function _d(m,y){for(var I=!1,U=0,J=m.length-1;Uy.y!=fe.y>y.y&&y.x<(fe.x-ne.x)*(y.y-ne.y)/(fe.y-ne.y)+ne.x&&(I=!I)}return I}function pp(m,y,I,U,J){for(var ne=0,fe=m;ne=Fe.x&&J>=Fe.y)return!0}var Qe=[new u(y,I),new u(y,J),new u(U,J),new u(U,I)];if(m.length>2)for(var st=0,mt=Qe;stJ.x&&y.x>J.x||m.yJ.y&&y.y>J.y)return!1;var ne=ae(m,y,I[0]);return ne!==ae(m,y,I[1])||ne!==ae(m,y,I[2])||ne!==ae(m,y,I[3])}function xd(m,y,I){var U=y.paint.get(m).value;return U.kind==="constant"?U.value:I.programConfigurations.get(y.id).getMaxValue(m)}function kv(m){return Math.sqrt(m[0]*m[0]+m[1]*m[1])}function Kv(m,y,I,U,J){if(!y[0]&&!y[1])return m;var ne=u.convert(y)._mult(J);I==="viewport"&&ne._rotate(-U);for(var fe=[],Fe=0;Fe0&&(ne=1/Math.sqrt(ne)),m[0]=y[0]*ne,m[1]=y[1]*ne,m[2]=y[2]*ne,m}function P9(m,y){return m[0]*y[0]+m[1]*y[1]+m[2]*y[2]}function I9(m,y,I){var U=y[0],J=y[1],ne=y[2],fe=I[0],Fe=I[1],Qe=I[2];return m[0]=J*Qe-ne*Fe,m[1]=ne*fe-U*Qe,m[2]=U*Fe-J*fe,m}function R9(m,y,I){var U=y[0],J=y[1],ne=y[2];return m[0]=U*I[0]+J*I[3]+ne*I[6],m[1]=U*I[1]+J*I[4]+ne*I[7],m[2]=U*I[2]+J*I[5]+ne*I[8],m}var D9=om,mQ=function(){var m=am();return function(y,I,U,J,ne,fe){var Fe,Qe;for(I||(I=3),U||(U=0),J?Qe=Math.min(J*I+U,y.length):Qe=y.length,Fe=U;Fem.width||J.height>m.height||I.x>m.width-J.width||I.y>m.height-J.height)throw new RangeError("out of range source coordinates for image copy");if(J.width>y.width||J.height>y.height||U.x>y.width-J.width||U.y>y.height-J.height)throw new RangeError("out of range destination coordinates for image copy");for(var fe=m.data,Fe=y.data,Qe=0;Qe80*I){Fe=st=m[0],Qe=mt=m[1];for(var Lr=I;Lrst&&(st=Xt),ur>mt&&(mt=ur);nr=Math.max(st-Fe,mt-Qe),nr=nr!==0?1/nr:0}return jx(ne,fe,I,Fe,Qe,nr),fe}function Iw(m,y,I,U,J){var ne,fe;if(J===uS(m,y,I,U)>0)for(ne=y;ne=y;ne-=U)fe=xC(ne,m[ne],m[ne+1],fe);return fe&&Zx(fe,fe.next)&&(Kx(fe),fe=fe.next),fe}function sm(m,y){if(!m)return m;y||(y=m);var I=m,U;do if(U=!1,!I.steiner&&(Zx(I,I.next)||tf(I.prev,I,I.next)===0)){if(Kx(I),I=y=I.prev,I===I.next)break;U=!0}else I=I.next;while(U||I!==y);return y}function jx(m,y,I,U,J,ne,fe){if(m){!fe&&ne&&Rw(m,U,J,ne);for(var Fe=m,Qe,st;m.prev!==m.next;){if(Qe=m.prev,st=m.next,ne?mC(m,U,J,ne):gC(m)){y.push(Qe.i/I),y.push(m.i/I),y.push(st.i/I),Kx(m),m=st.next,Fe=st.next;continue}if(m=st,m===Fe){fe?fe===1?(m=Wx(sm(m),y,I),jx(m,y,I,U,J,ne,2)):fe===2&&v0(m,y,I,U,J,ne):jx(sm(m),y,I,U,J,ne,1);break}}}}function gC(m){var y=m.prev,I=m,U=m.next;if(tf(y,I,U)>=0)return!1;for(var J=m.next.next;J!==m.prev;){if(um(y.x,y.y,I.x,I.y,U.x,U.y,J.x,J.y)&&tf(J.prev,J,J.next)>=0)return!1;J=J.next}return!0}function mC(m,y,I,U){var J=m.prev,ne=m,fe=m.next;if(tf(J,ne,fe)>=0)return!1;for(var Fe=J.xne.x?J.x>fe.x?J.x:fe.x:ne.x>fe.x?ne.x:fe.x,mt=J.y>ne.y?J.y>fe.y?J.y:fe.y:ne.y>fe.y?ne.y:fe.y,Xt=aS(Fe,Qe,y,I,U),ur=aS(st,mt,y,I,U),nr=m.prevZ,Lr=m.nextZ;nr&&nr.z>=Xt&&Lr&&Lr.z<=ur;){if(nr!==m.prev&&nr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,nr.x,nr.y)&&tf(nr.prev,nr,nr.next)>=0||(nr=nr.prevZ,Lr!==m.prev&&Lr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,Lr.x,Lr.y)&&tf(Lr.prev,Lr,Lr.next)>=0))return!1;Lr=Lr.nextZ}for(;nr&&nr.z>=Xt;){if(nr!==m.prev&&nr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,nr.x,nr.y)&&tf(nr.prev,nr,nr.next)>=0)return!1;nr=nr.prevZ}for(;Lr&&Lr.z<=ur;){if(Lr!==m.prev&&Lr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,Lr.x,Lr.y)&&tf(Lr.prev,Lr,Lr.next)>=0)return!1;Lr=Lr.nextZ}return!0}function Wx(m,y,I){var U=m;do{var J=U.prev,ne=U.next.next;!Zx(J,ne)&&Dw(J,U,U.next,ne)&&Yx(J,ne)&&Yx(ne,J)&&(y.push(J.i/I),y.push(U.i/I),y.push(ne.i/I),Kx(U),Kx(U.next),U=m=ne),U=U.next}while(U!==m);return sm(U)}function v0(m,y,I,U,J,ne){var fe=m;do{for(var Fe=fe.next.next;Fe!==fe.prev;){if(fe.i!==Fe.i&&E1(fe,Fe)){var Qe=sS(fe,Fe);fe=sm(fe,fe.next),Qe=sm(Qe,Qe.next),jx(fe,y,I,U,J,ne),jx(Qe,y,I,U,J,ne);return}Fe=Fe.next}fe=fe.next}while(fe!==m)}function lm(m,y,I,U){var J=[],ne,fe,Fe,Qe,st;for(ne=0,fe=y.length;ne=I.next.y&&I.next.y!==I.y){var Fe=I.x+(J-I.y)*(I.next.x-I.x)/(I.next.y-I.y);if(Fe<=U&&Fe>ne){if(ne=Fe,Fe===U){if(J===I.y)return I;if(J===I.next.y)return I.next}fe=I.x=I.x&&I.x>=st&&U!==I.x&&um(Jfe.x||I.x===fe.x&&H9(fe,I)))&&(fe=I,Xt=ur)),I=I.next;while(I!==Qe);return fe}function H9(m,y){return tf(m.prev,m,y.prev)<0&&tf(y.next,m,m.next)<0}function Rw(m,y,I,U){var J=m;do J.z===null&&(J.z=aS(J.x,J.y,y,I,U)),J.prevZ=J.prev,J.nextZ=J.next,J=J.next;while(J!==m);J.prevZ.nextZ=null,J.prevZ=null,nS(J)}function nS(m){var y,I,U,J,ne,fe,Fe,Qe,st=1;do{for(I=m,m=null,ne=null,fe=0;I;){for(fe++,U=I,Fe=0,y=0;y0||Qe>0&&U;)Fe!==0&&(Qe===0||!U||I.z<=U.z)?(J=I,I=I.nextZ,Fe--):(J=U,U=U.nextZ,Qe--),ne?ne.nextZ=J:m=J,J.prevZ=ne,ne=J;I=U}ne.nextZ=null,st*=2}while(fe>1);return m}function aS(m,y,I,U,J){return m=32767*(m-I)*J,y=32767*(y-U)*J,m=(m|m<<8)&16711935,m=(m|m<<4)&252645135,m=(m|m<<2)&858993459,m=(m|m<<1)&1431655765,y=(y|y<<8)&16711935,y=(y|y<<4)&252645135,y=(y|y<<2)&858993459,y=(y|y<<1)&1431655765,m|y<<1}function oS(m){var y=m,I=m;do(y.x=0&&(m-fe)*(U-Fe)-(I-fe)*(y-Fe)>=0&&(I-fe)*(ne-Fe)-(J-fe)*(U-Fe)>=0}function E1(m,y){return m.next.i!==y.i&&m.prev.i!==y.i&&!_C(m,y)&&(Yx(m,y)&&Yx(y,m)&&G9(m,y)&&(tf(m.prev,m,y.prev)||tf(m,y.prev,y))||Zx(m,y)&&tf(m.prev,m,m.next)>0&&tf(y.prev,y,y.next)>0)}function tf(m,y,I){return(y.y-m.y)*(I.x-y.x)-(y.x-m.x)*(I.y-y.y)}function Zx(m,y){return m.x===y.x&&m.y===y.y}function Dw(m,y,I,U){var J=uy(tf(m,y,I)),ne=uy(tf(m,y,U)),fe=uy(tf(I,U,m)),Fe=uy(tf(I,U,y));return!!(J!==ne&&fe!==Fe||J===0&&Xx(m,I,y)||ne===0&&Xx(m,U,y)||fe===0&&Xx(I,m,U)||Fe===0&&Xx(I,y,U))}function Xx(m,y,I){return y.x<=Math.max(m.x,I.x)&&y.x>=Math.min(m.x,I.x)&&y.y<=Math.max(m.y,I.y)&&y.y>=Math.min(m.y,I.y)}function uy(m){return m>0?1:m<0?-1:0}function _C(m,y){var I=m;do{if(I.i!==m.i&&I.next.i!==m.i&&I.i!==y.i&&I.next.i!==y.i&&Dw(I,I.next,m,y))return!0;I=I.next}while(I!==m);return!1}function Yx(m,y){return tf(m.prev,m,m.next)<0?tf(m,y,m.next)>=0&&tf(m,m.prev,y)>=0:tf(m,y,m.prev)<0||tf(m,m.next,y)<0}function G9(m,y){var I=m,U=!1,J=(m.x+y.x)/2,ne=(m.y+y.y)/2;do I.y>ne!=I.next.y>ne&&I.next.y!==I.y&&J<(I.next.x-I.x)*(ne-I.y)/(I.next.y-I.y)+I.x&&(U=!U),I=I.next;while(I!==m);return U}function sS(m,y){var I=new lS(m.i,m.x,m.y),U=new lS(y.i,y.x,y.y),J=m.next,ne=y.prev;return m.next=y,y.prev=m,I.next=J,J.prev=I,U.next=I,I.prev=U,ne.next=U,U.prev=ne,U}function xC(m,y,I,U){var J=new lS(m,y,I);return U?(J.next=U.next,J.prev=U,U.next.prev=J,U.next=J):(J.prev=J,J.next=J),J}function Kx(m){m.next.prev=m.prev,m.prev.next=m.next,m.prevZ&&(m.prevZ.nextZ=m.nextZ),m.nextZ&&(m.nextZ.prevZ=m.prevZ)}function lS(m,y,I){this.i=m,this.x=y,this.y=I,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}M1.deviation=function(m,y,I,U){var J=y&&y.length,ne=J?y[0]*I:m.length,fe=Math.abs(uS(m,0,ne,I));if(J)for(var Fe=0,Qe=y.length;Fe0&&(U+=m[J-1].length,I.holes.push(U))}return I},Pw.default=pC;function cS(m,y,I,U,J){dg(m,y,I||0,U||m.length-1,J||bC)}function dg(m,y,I,U,J){for(;U>I;){if(U-I>600){var ne=U-I+1,fe=y-I+1,Fe=Math.log(ne),Qe=.5*Math.exp(2*Fe/3),st=.5*Math.sqrt(Fe*Qe*(ne-Qe)/ne)*(fe-ne/2<0?-1:1),mt=Math.max(I,Math.floor(y-fe*Qe/ne+st)),Xt=Math.min(U,Math.floor(y+(ne-fe)*Qe/ne+st));dg(m,y,mt,Xt,J)}var ur=m[y],nr=I,Lr=U;for(k1(m,I,y),J(m[U],ur)>0&&k1(m,I,U);nr0;)Lr--}J(m[I],ur)===0?k1(m,I,Lr):(Lr++,k1(m,Lr,U)),Lr<=y&&(I=Lr+1),y<=Lr&&(U=Lr-1)}}function k1(m,y,I){var U=m[y];m[y]=m[I],m[I]=U}function bC(m,y){return my?1:0}function zw(m,y){var I=m.length;if(I<=1)return[m];for(var U=[],J,ne,fe=0;fe1)for(var Qe=0;Qe>3}if(U--,I===1||I===2)J+=m.readSVarint(),ne+=m.readSVarint(),I===1&&(Fe&&fe.push(Fe),Fe=[]),Fe.push(new u(J,ne));else if(I===7)Fe&&Fe.push(Fe[0].clone());else throw new Error("unknown command "+I)}return Fe&&fe.push(Fe),fe},cy.prototype.bbox=function(){var m=this._pbf;m.pos=this._geometry;for(var y=m.readVarint()+m.pos,I=1,U=0,J=0,ne=0,fe=1/0,Fe=-1/0,Qe=1/0,st=-1/0;m.pos>3}if(U--,I===1||I===2)J+=m.readSVarint(),ne+=m.readSVarint(),JFe&&(Fe=J),nest&&(st=ne);else if(I!==7)throw new Error("unknown command "+I)}return[fe,Qe,Fe,st]},cy.prototype.toGeoJSON=function(m,y,I){var U=this.extent*Math.pow(2,I),J=this.extent*m,ne=this.extent*y,fe=this.loadGeometry(),Fe=cy.types[this.type],Qe,st;function mt(nr){for(var Lr=0;Lr>3;y=U===1?m.readString():U===2?m.readFloat():U===3?m.readDouble():U===4?m.readVarint64():U===5?m.readVarint():U===6?m.readSVarint():U===7?m.readBoolean():null}return y}dS.prototype.feature=function(m){if(m<0||m>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[m];var y=this._pbf.readVarint()+this._pbf.pos;return new hS(this._pbf,y,this.extent,this._keys,this._values)};var PC=W9;function W9(m,y){this.layers=m.readFields(Z9,{},y)}function Z9(m,y,I){if(m===3){var U=new vg(I,I.readVarint()+I.pos);U.length&&(y[U.name]=U)}}var IC=PC,C1=hS,RC=vg,pg={VectorTile:IC,VectorTileFeature:C1,VectorTileLayer:RC},DC=pg.VectorTileFeature.types,qw=500,L1=Math.pow(2,13);function cm(m,y,I,U,J,ne,fe,Fe){m.emplaceBack(y,I,Math.floor(U*L1)*2+fe,J*L1*2,ne*L1*2,Math.round(Fe))}var Hp=function(y){this.zoom=y.zoom,this.overscaling=y.overscaling,this.layers=y.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=y.index,this.hasPattern=!1,this.layoutVertexArray=new Un,this.indexArray=new ma,this.programConfigurations=new Ri(y.layers,y.zoom),this.segments=new ns,this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};Hp.prototype.populate=function(y,I,U){this.features=[],this.hasPattern=Fw("fill-extrusion",this.layers,I);for(var J=0,ne=y;J=1){var Vi=_i[Hi-1];if(!X9(Ei,Vi)){nr.vertexLength+4>ns.MAX_VERTEX_ARRAY_LENGTH&&(nr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var en=Ei.sub(Vi)._perp()._unit(),An=Vi.dist(Ei);si+An>32768&&(si=0),cm(this.layoutVertexArray,Ei.x,Ei.y,en.x,en.y,0,0,si),cm(this.layoutVertexArray,Ei.x,Ei.y,en.x,en.y,0,1,si),si+=An,cm(this.layoutVertexArray,Vi.x,Vi.y,en.x,en.y,0,0,si),cm(this.layoutVertexArray,Vi.x,Vi.y,en.x,en.y,0,1,si);var ra=nr.vertexLength;this.indexArray.emplaceBack(ra,ra+2,ra+1),this.indexArray.emplaceBack(ra+1,ra+2,ra+3),nr.vertexLength+=4,nr.primitiveLength+=2}}}}if(nr.vertexLength+st>ns.MAX_VERTEX_ARRAY_LENGTH&&(nr=this.segments.prepareSegment(st,this.layoutVertexArray,this.indexArray)),DC[y.type]==="Polygon"){for(var $n=[],Ba=[],_a=nr.vertexLength,Pa=0,qo=Qe;Parn)||m.y===y.y&&(m.y<0||m.y>rn)}function Y9(m){return m.every(function(y){return y.x<0})||m.every(function(y){return y.x>rn})||m.every(function(y){return y.y<0})||m.every(function(y){return y.y>rn})}var P1=new Oi({"fill-extrusion-opacity":new At(on["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Er(on["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new At(on["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new At(on["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Wr(on["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Er(on["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Er(on["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new At(on["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])}),ed={paint:P1},fm=function(m){function y(I){m.call(this,I,ed)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.createBucket=function(U){return new Hp(U)},y.prototype.queryRadius=function(){return kv(this.paint.get("fill-extrusion-translate"))},y.prototype.is3D=function(){return!0},y.prototype.queryIntersectsFeature=function(U,J,ne,fe,Fe,Qe,st,mt){var Xt=Kv(U,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),Qe.angle,st),ur=this.paint.get("fill-extrusion-height").evaluate(J,ne),nr=this.paint.get("fill-extrusion-base").evaluate(J,ne),Lr=K9(Xt,mt,Qe,0),Yr=pS(fe,nr,ur,mt),_i=Yr[0],si=Yr[1];return zC(_i,si,Lr)},y}(cn);function fy(m,y){return m.x*y.x+m.y*y.y}function vS(m,y){if(m.length===1){for(var I=0,U=y[I++],J;!J||U.equals(J);)if(J=y[I++],!J)return 1/0;for(;I=2&&y[st-1].equals(y[st-2]);)st--;for(var mt=0;mt0;if($n&&Hi>mt){var _a=nr.dist(Lr);if(_a>2*Xt){var Pa=nr.sub(nr.sub(Lr)._mult(Xt/_a)._round());this.updateDistance(Lr,Pa),this.addCurrentVertex(Pa,_i,0,0,ur),Lr=Pa}}var qo=Lr&&Yr,Na=qo?U:Qe?"butt":J;if(qo&&Na==="round"&&(Anne&&(Na="bevel"),Na==="bevel"&&(An>2&&(Na="flipbevel"),An100)Ei=si.mult(-1);else{var ja=An*_i.add(si).mag()/_i.sub(si).mag();Ei._perp()._mult(ja*(Ba?-1:1))}this.addCurrentVertex(nr,Ei,0,0,ur),this.addCurrentVertex(nr,Ei.mult(-1),0,0,ur)}else if(Na==="bevel"||Na==="fakeround"){var us=-Math.sqrt(An*An-1),zo=Ba?us:0,rl=Ba?0:us;if(Lr&&this.addCurrentVertex(nr,_i,zo,rl,ur),Na==="fakeround")for(var su=Math.round(ra*180/Math.PI/mS),il=1;il2*Xt){var Zf=nr.add(Yr.sub(nr)._mult(Xt/qh)._round());this.updateDistance(nr,Zf),this.addCurrentVertex(Zf,si,0,0,ur),nr=Zf}}}}},Gf.prototype.addCurrentVertex=function(y,I,U,J,ne,fe){fe===void 0&&(fe=!1);var Fe=I.x+I.y*U,Qe=I.y-I.x*U,st=-I.x+I.y*J,mt=-I.y-I.x*J;this.addHalfVertex(y,Fe,Qe,fe,!1,U,ne),this.addHalfVertex(y,st,mt,fe,!0,-J,ne),this.distance>tb/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(y,I,U,J,ne,fe))},Gf.prototype.addHalfVertex=function(y,I,U,J,ne,fe,Fe){var Qe=y.x,st=y.y,mt=this.lineClips?this.scaledDistance*(tb-1):this.scaledDistance,Xt=mt*Bw;if(this.layoutVertexArray.emplaceBack((Qe<<1)+(J?1:0),(st<<1)+(ne?1:0),Math.round(Ow*I)+128,Math.round(Ow*U)+128,(fe===0?0:fe<0?-1:1)+1|(Xt&63)<<2,Xt>>6),this.lineClips){var ur=this.scaledDistance-this.lineClips.start,nr=this.lineClips.end-this.lineClips.start,Lr=ur/nr;this.layoutVertexArray2.emplaceBack(Lr,this.lineClipsArray.length)}var Yr=Fe.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Yr),Fe.primitiveLength++),ne?this.e2=Yr:this.e1=Yr},Gf.prototype.updateScaledDistance=function(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance},Gf.prototype.updateDistance=function(y,I){this.distance+=y.dist(I),this.updateScaledDistance()},Z("LineBucket",Gf,{omit:["layers","patternFeatures"]});var yS=new Oi({"line-cap":new At(on.layout_line["line-cap"]),"line-join":new Er(on.layout_line["line-join"]),"line-miter-limit":new At(on.layout_line["line-miter-limit"]),"line-round-limit":new At(on.layout_line["line-round-limit"]),"line-sort-key":new Er(on.layout_line["line-sort-key"])}),_S=new Oi({"line-opacity":new Er(on.paint_line["line-opacity"]),"line-color":new Er(on.paint_line["line-color"]),"line-translate":new At(on.paint_line["line-translate"]),"line-translate-anchor":new At(on.paint_line["line-translate-anchor"]),"line-width":new Er(on.paint_line["line-width"]),"line-gap-width":new Er(on.paint_line["line-gap-width"]),"line-offset":new Er(on.paint_line["line-offset"]),"line-blur":new Er(on.paint_line["line-blur"]),"line-dasharray":new wi(on.paint_line["line-dasharray"]),"line-pattern":new Wr(on.paint_line["line-pattern"]),"line-gradient":new Ui(on.paint_line["line-gradient"])}),Nw={paint:_S,layout:yS},$9=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.possiblyEvaluate=function(U,J){return J=new pn(Math.floor(J.zoom),{now:J.now,fadeDuration:J.fadeDuration,zoomHistory:J.zoomHistory,transition:J.transition}),m.prototype.possiblyEvaluate.call(this,U,J)},y.prototype.evaluate=function(U,J,ne,fe){return J=_({},J,{zoom:Math.floor(J.zoom)}),m.prototype.evaluate.call(this,U,J,ne,fe)},y}(Er),R=new $9(Nw.paint.properties["line-width"].specification);R.useIntegerZoom=!0;var S=function(m){function y(I){m.call(this,I,Nw),this.gradientVersion=0}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._handleSpecialPaintPropertyUpdate=function(U){if(U==="line-gradient"){var J=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=J._styleExpression.expression instanceof yu,this.gradientVersion=(this.gradientVersion+1)%d}},y.prototype.gradientExpression=function(){return this._transitionablePaint._values["line-gradient"].value.expression},y.prototype.recalculate=function(U,J){m.prototype.recalculate.call(this,U,J),this.paint._values["line-floorwidth"]=R.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,U)},y.prototype.createBucket=function(U){return new Gf(U)},y.prototype.queryRadius=function(U){var J=U,ne=D(xd("line-width",this,J),xd("line-gap-width",this,J)),fe=xd("line-offset",this,J);return ne/2+Math.abs(fe)+kv(this.paint.get("line-translate"))},y.prototype.queryIntersectsFeature=function(U,J,ne,fe,Fe,Qe,st){var mt=Kv(U,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),Qe.angle,st),Xt=st/2*D(this.paint.get("line-width").evaluate(J,ne),this.paint.get("line-gap-width").evaluate(J,ne)),ur=this.paint.get("line-offset").evaluate(J,ne);return ur&&(fe=j(fe,ur*st)),zu(mt,fe,Xt)},y.prototype.isTileClipped=function(){return!0},y}(cn);function D(m,y){return y>0?y+2*m:m}function j(m,y){for(var I=[],U=new u(0,0),J=0;J":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};function ki(m){for(var y="",I=0;I>1,mt=-7,Xt=I?J-1:0,ur=I?-1:1,nr=m[y+Xt];for(Xt+=ur,ne=nr&(1<<-mt)-1,nr>>=-mt,mt+=Fe;mt>0;ne=ne*256+m[y+Xt],Xt+=ur,mt-=8);for(fe=ne&(1<<-mt)-1,ne>>=-mt,mt+=U;mt>0;fe=fe*256+m[y+Xt],Xt+=ur,mt-=8);if(ne===0)ne=1-st;else{if(ne===Qe)return fe?NaN:(nr?-1:1)*(1/0);fe=fe+Math.pow(2,U),ne=ne-st}return(nr?-1:1)*fe*Math.pow(2,ne-U)},Va=function(m,y,I,U,J,ne){var fe,Fe,Qe,st=ne*8-J-1,mt=(1<>1,ur=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,nr=U?0:ne-1,Lr=U?1:-1,Yr=y<0||y===0&&1/y<0?1:0;for(y=Math.abs(y),isNaN(y)||y===1/0?(Fe=isNaN(y)?1:0,fe=mt):(fe=Math.floor(Math.log(y)/Math.LN2),y*(Qe=Math.pow(2,-fe))<1&&(fe--,Qe*=2),fe+Xt>=1?y+=ur/Qe:y+=ur*Math.pow(2,1-Xt),y*Qe>=2&&(fe++,Qe/=2),fe+Xt>=mt?(Fe=0,fe=mt):fe+Xt>=1?(Fe=(y*Qe-1)*Math.pow(2,J),fe=fe+Xt):(Fe=y*Math.pow(2,Xt-1)*Math.pow(2,J),fe=0));J>=8;m[I+nr]=Fe&255,nr+=Lr,Fe/=256,J-=8);for(fe=fe<0;m[I+nr]=fe&255,nr+=Lr,fe/=256,st-=8);m[I+nr-Lr]|=Yr*128},Io={read:ta,write:Va},La=Hn;function Hn(m){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(m)?m:new Uint8Array(m||0),this.pos=0,this.type=0,this.length=this.buf.length}Hn.Varint=0,Hn.Fixed64=1,Hn.Bytes=2,Hn.Fixed32=5;var lo=65536*65536,$a=1/lo,Xa=12,Tn=typeof TextDecoder=="undefined"?null:new TextDecoder("utf8");Hn.prototype={destroy:function(){this.buf=null},readFields:function(m,y,I){for(I=I||this.length;this.pos>3,ne=this.pos;this.type=U&7,m(J,y,this),this.pos===ne&&this.skip(U)}return y},readMessage:function(m,y){return this.readFields(m,y,this.readVarint()+this.pos)},readFixed32:function(){var m=Dh(this.buf,this.pos);return this.pos+=4,m},readSFixed32:function(){var m=Iv(this.buf,this.pos);return this.pos+=4,m},readFixed64:function(){var m=Dh(this.buf,this.pos)+Dh(this.buf,this.pos+4)*lo;return this.pos+=8,m},readSFixed64:function(){var m=Dh(this.buf,this.pos)+Iv(this.buf,this.pos+4)*lo;return this.pos+=8,m},readFloat:function(){var m=Io.read(this.buf,this.pos,!0,23,4);return this.pos+=4,m},readDouble:function(){var m=Io.read(this.buf,this.pos,!0,52,8);return this.pos+=8,m},readVarint:function(m){var y=this.buf,I,U;return U=y[this.pos++],I=U&127,U<128||(U=y[this.pos++],I|=(U&127)<<7,U<128)||(U=y[this.pos++],I|=(U&127)<<14,U<128)||(U=y[this.pos++],I|=(U&127)<<21,U<128)?I:(U=y[this.pos],I|=(U&15)<<28,bo(I,m,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var m=this.readVarint();return m%2===1?(m+1)/-2:m/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var m=this.readVarint()+this.pos,y=this.pos;return this.pos=m,m-y>=Xa&&Tn?Cl(this.buf,y,m):lv(this.buf,y,m)},readBytes:function(){var m=this.readVarint()+this.pos,y=this.buf.subarray(this.pos,m);return this.pos=m,y},readPackedVarint:function(m,y){if(this.type!==Hn.Bytes)return m.push(this.readVarint(y));var I=Ya(this);for(m=m||[];this.pos127;);else if(y===Hn.Bytes)this.pos=this.readVarint()+this.pos;else if(y===Hn.Fixed32)this.pos+=4;else if(y===Hn.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+y)},writeTag:function(m,y){this.writeVarint(m<<3|y)},realloc:function(m){for(var y=this.length||16;y268435455||m<0){wu(m,this);return}this.realloc(4),this.buf[this.pos++]=m&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=(m>>>=7)&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=(m>>>=7)&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=m>>>7&127)))},writeSVarint:function(m){this.writeVarint(m<0?-m*2-1:m*2)},writeBoolean:function(m){this.writeVarint(!!m)},writeString:function(m){m=String(m),this.realloc(m.length*4),this.pos++;var y=this.pos;this.pos=qu(this.buf,m,this.pos);var I=this.pos-y;I>=128&&$v(y,I,this),this.pos=y-1,this.writeVarint(I),this.pos+=I},writeFloat:function(m){this.realloc(4),Io.write(this.buf,m,this.pos,!0,23,4),this.pos+=4},writeDouble:function(m){this.realloc(8),Io.write(this.buf,m,this.pos,!0,52,8),this.pos+=8},writeBytes:function(m){var y=m.length;this.writeVarint(y),this.realloc(y);for(var I=0;I=128&&$v(I,U,this),this.pos=I-1,this.writeVarint(U),this.pos+=U},writeMessage:function(m,y,I){this.writeTag(m,Hn.Bytes),this.writeRawMessage(y,I)},writePackedVarint:function(m,y){y.length&&this.writeMessage(m,td,y)},writePackedSVarint:function(m,y){y.length&&this.writeMessage(m,ch,y)},writePackedBoolean:function(m,y){y.length&&this.writeMessage(m,Hd,y)},writePackedFloat:function(m,y){y.length&&this.writeMessage(m,Ud,y)},writePackedDouble:function(m,y){y.length&&this.writeMessage(m,Vd,y)},writePackedFixed32:function(m,y){y.length&&this.writeMessage(m,rf,y)},writePackedSFixed32:function(m,y){y.length&&this.writeMessage(m,fh,y)},writePackedFixed64:function(m,y){y.length&&this.writeMessage(m,Td,y)},writePackedSFixed64:function(m,y){y.length&&this.writeMessage(m,rd,y)},writeBytesField:function(m,y){this.writeTag(m,Hn.Bytes),this.writeBytes(y)},writeFixed32Field:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeFixed32(y)},writeSFixed32Field:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeSFixed32(y)},writeFixed64Field:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeFixed64(y)},writeSFixed64Field:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeSFixed64(y)},writeVarintField:function(m,y){this.writeTag(m,Hn.Varint),this.writeVarint(y)},writeSVarintField:function(m,y){this.writeTag(m,Hn.Varint),this.writeSVarint(y)},writeStringField:function(m,y){this.writeTag(m,Hn.Bytes),this.writeString(y)},writeFloatField:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeFloat(y)},writeDoubleField:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeDouble(y)},writeBooleanField:function(m,y){this.writeVarintField(m,!!y)}};function bo(m,y,I){var U=I.buf,J,ne;if(ne=U[I.pos++],J=(ne&112)>>4,ne<128||(ne=U[I.pos++],J|=(ne&127)<<3,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<10,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<17,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<24,ne<128)||(ne=U[I.pos++],J|=(ne&1)<<31,ne<128))return Uo(m,J,y);throw new Error("Expected varint not more than 10 bytes")}function Ya(m){return m.type===Hn.Bytes?m.readVarint()+m.pos:m.pos+1}function Uo(m,y,I){return I?y*4294967296+(m>>>0):(y>>>0)*4294967296+(m>>>0)}function wu(m,y){var I,U;if(m>=0?(I=m%4294967296|0,U=m/4294967296|0):(I=~(-m%4294967296),U=~(-m/4294967296),I^4294967295?I=I+1|0:(I=0,U=U+1|0)),m>=18446744073709552e3||m<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");y.realloc(10),hu(I,U,y),uh(U,y)}function hu(m,y,I){I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos]=m&127}function uh(m,y){var I=(m&7)<<4;y.buf[y.pos++]|=I|((m>>>=3)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127)))))}function $v(m,y,I){var U=y<=16383?1:y<=2097151?2:y<=268435455?3:Math.floor(Math.log(y)/(Math.LN2*7));I.realloc(U);for(var J=I.pos-1;J>=m;J--)I.buf[J+U]=I.buf[J]}function td(m,y){for(var I=0;I>>8,m[I+2]=y>>>16,m[I+3]=y>>>24}function Iv(m,y){return(m[y]|m[y+1]<<8|m[y+2]<<16)+(m[y+3]<<24)}function lv(m,y,I){for(var U="",J=y;J239?4:ne>223?3:ne>191?2:1;if(J+Fe>I)break;var Qe,st,mt;Fe===1?ne<128&&(fe=ne):Fe===2?(Qe=m[J+1],(Qe&192)===128&&(fe=(ne&31)<<6|Qe&63,fe<=127&&(fe=null))):Fe===3?(Qe=m[J+1],st=m[J+2],(Qe&192)===128&&(st&192)===128&&(fe=(ne&15)<<12|(Qe&63)<<6|st&63,(fe<=2047||fe>=55296&&fe<=57343)&&(fe=null))):Fe===4&&(Qe=m[J+1],st=m[J+2],mt=m[J+3],(Qe&192)===128&&(st&192)===128&&(mt&192)===128&&(fe=(ne&15)<<18|(Qe&63)<<12|(st&63)<<6|mt&63,(fe<=65535||fe>=1114112)&&(fe=null))),fe===null?(fe=65533,Fe=1):fe>65535&&(fe-=65536,U+=String.fromCharCode(fe>>>10&1023|55296),fe=56320|fe&1023),U+=String.fromCharCode(fe),J+=Fe}return U}function Cl(m,y,I){return Tn.decode(m.subarray(y,I))}function qu(m,y,I){for(var U=0,J,ne;U55295&&J<57344)if(ne)if(J<56320){m[I++]=239,m[I++]=191,m[I++]=189,ne=J;continue}else J=ne-55296<<10|J-56320|65536,ne=null;else{J>56319||U+1===y.length?(m[I++]=239,m[I++]=191,m[I++]=189):ne=J;continue}else ne&&(m[I++]=239,m[I++]=191,m[I++]=189,ne=null);J<128?m[I++]=J:(J<2048?m[I++]=J>>6|192:(J<65536?m[I++]=J>>12|224:(m[I++]=J>>18|240,m[I++]=J>>12&63|128),m[I++]=J>>6&63|128),m[I++]=J&63|128)}return I}var Tu=3;function Rv(m,y,I){m===1&&I.readMessage(qc,y)}function qc(m,y,I){if(m===3){var U=I.readMessage(I1,{}),J=U.id,ne=U.bitmap,fe=U.width,Fe=U.height,Qe=U.left,st=U.top,mt=U.advance;y.push({id:J,bitmap:new Pv({width:fe+2*Tu,height:Fe+2*Tu},ne),metrics:{width:fe,height:Fe,left:Qe,top:st,advance:mt}})}}function I1(m,y,I){m===1?y.id=I.readVarint():m===2?y.bitmap=I.readBytes():m===3?y.width=I.readVarint():m===4?y.height=I.readVarint():m===5?y.left=I.readSVarint():m===6?y.top=I.readSVarint():m===7&&(y.advance=I.readVarint())}function p0(m){return new La(m).readFields(Rv,[])}var Gp=Tu;function Qv(m){for(var y=0,I=0,U=0,J=m;U=0;nr--){var Lr=Fe[nr];if(!(ur.w>Lr.w||ur.h>Lr.h)){if(ur.x=Lr.x,ur.y=Lr.y,st=Math.max(st,ur.y+ur.h),Qe=Math.max(Qe,ur.x+ur.w),ur.w===Lr.w&&ur.h===Lr.h){var Yr=Fe.pop();nr=0&&J>=y&&m0[this.text.charCodeAt(J)];J--)U--;this.text=this.text.substring(y,U),this.sectionIndex=this.sectionIndex.slice(y,U)},zh.prototype.substring=function(y,I){var U=new zh;return U.text=this.text.substring(y,I),U.sectionIndex=this.sectionIndex.slice(y,I),U.sections=this.sections,U},zh.prototype.toString=function(){return this.text},zh.prototype.getMaxScale=function(){var y=this;return this.sectionIndex.reduce(function(I,U){return Math.max(I,y.sections[U].scale)},0)},zh.prototype.addTextSection=function(y,I){this.text+=y.text,this.sections.push(hy.forText(y.scale,y.fontStack||I));for(var U=this.sections.length-1,J=0;J=g0?null:++this.imageSectionID:(this.imageSectionID=Uw,this.imageSectionID)};function Q9(m,y){for(var I=[],U=m.text,J=0,ne=0,fe=y;ne=0,mt=0,Xt=0;Xt0&&Zf>Ba&&(Ba=Zf)}else{var nl=I[Pa.fontStack],Ws=nl&&nl[Na];if(Ws&&Ws.rect)zo=Ws.rect,us=Ws.metrics;else{var Au=y[Pa.fontStack],Ou=Au&&Au[Na];if(!Ou)continue;us=Ou.metrics}ja=(en-Pa.scale)*Zi}il?(m.verticalizable=!0,$n.push({glyph:Na,imageName:rl,x:ur,y:nr+ja,vertical:il,scale:Pa.scale,fontStack:Pa.fontStack,sectionIndex:qo,metrics:us,rect:zo}),ur+=su*Pa.scale+st):($n.push({glyph:Na,imageName:rl,x:ur,y:nr+ja,vertical:il,scale:Pa.scale,fontStack:Pa.fontStack,sectionIndex:qo,metrics:us,rect:zo}),ur+=us.advance*Pa.scale+st)}if($n.length!==0){var jd=ur-st;Lr=Math.max(jd,Lr),iq($n,0,$n.length-1,_i,Ba)}ur=0;var Wd=ne*en+Ba;ra.lineOffset=Math.max(Ba,An),nr+=Wd,Yr=Math.max(Wd,Yr),++si}var Oh=nr-R1,fv=bS(fe),hv=fv.horizontalAlign,hh=fv.verticalAlign;Ad(m.positionedLines,_i,hv,hh,Lr,Yr,ne,Oh,J.length),m.top+=-hh*Oh,m.bottom=m.top+Oh,m.left+=-hv*Lr,m.right=m.left+Lr}function iq(m,y,I,U,J){if(!(!U&&!J))for(var ne=m[I],fe=ne.metrics.advance*ne.scale,Fe=(m[I].x+fe)*U,Qe=y;Qe<=I;Qe++)m[Qe].x-=Fe,m[Qe].y+=J}function Ad(m,y,I,U,J,ne,fe,Fe,Qe){var st=(y-I)*J,mt=0;ne!==fe?mt=-Fe*U-R1:mt=(-U*Qe+.5)*fe;for(var Xt=0,ur=m;Xt-I/2;){if(fe--,fe<0)return!1;Fe-=m[fe].dist(ne),ne=m[fe]}Fe+=m[fe].dist(m[fe+1]),fe++;for(var Qe=[],st=0;FeU;)st-=Qe.shift().angleDelta;if(st>J)return!1;fe++,Fe+=Xt.dist(ur)}return!0}function wQ(m){for(var y=0,I=0;Ist){var Lr=(st-Qe)/nr,Yr=Qs(Xt.x,ur.x,Lr),_i=Qs(Xt.y,ur.y,Lr),si=new Gd(Yr,_i,ur.angleTo(Xt),mt);return si._round(),!fe||bQ(m,si,Fe,fe,y)?si:void 0}Qe+=nr}}function aQe(m,y,I,U,J,ne,fe,Fe,Qe){var st=TQ(U,ne,fe),mt=AQ(U,J),Xt=mt*fe,ur=m[0].x===0||m[0].x===Qe||m[0].y===0||m[0].y===Qe;y-Xt=0&&Vi=0&&en=0&&ur+st<=mt){var An=new Gd(Vi,en,Hi,Lr);An._round(),(!U||bQ(m,An,ne,U,J))&&nr.push(An)}}Xt+=si}return!Fe&&!nr.length&&!fe&&(nr=SQ(m,Xt/2,I,U,J,ne,fe,!0,Qe)),nr}function MQ(m,y,I,U,J){for(var ne=[],fe=0;fe=U&&Xt.x>=U)&&(mt.x>=U?mt=new u(U,mt.y+(Xt.y-mt.y)*((U-mt.x)/(Xt.x-mt.x)))._round():Xt.x>=U&&(Xt=new u(U,mt.y+(Xt.y-mt.y)*((U-mt.x)/(Xt.x-mt.x)))._round()),!(mt.y>=J&&Xt.y>=J)&&(mt.y>=J?mt=new u(mt.x+(Xt.x-mt.x)*((J-mt.y)/(Xt.y-mt.y)),J)._round():Xt.y>=J&&(Xt=new u(mt.x+(Xt.x-mt.x)*((J-mt.y)/(Xt.y-mt.y)),J)._round()),(!Qe||!mt.equals(Qe[Qe.length-1]))&&(Qe=[mt],ne.push(Qe)),Qe.push(Xt)))))}return ne}var Gw=oc;function EQ(m,y,I,U){var J=[],ne=m.image,fe=ne.pixelRatio,Fe=ne.paddedRect.w-2*Gw,Qe=ne.paddedRect.h-2*Gw,st=m.right-m.left,mt=m.bottom-m.top,Xt=ne.stretchX||[[0,Fe]],ur=ne.stretchY||[[0,Qe]],nr=function(nl,Ws){return nl+Ws[1]-Ws[0]},Lr=Xt.reduce(nr,0),Yr=ur.reduce(nr,0),_i=Fe-Lr,si=Qe-Yr,Hi=0,Ei=Lr,Vi=0,en=Yr,An=0,ra=_i,$n=0,Ba=si;if(ne.content&&U){var _a=ne.content;Hi=HC(Xt,0,_a[0]),Vi=HC(ur,0,_a[1]),Ei=HC(Xt,_a[0],_a[2]),en=HC(ur,_a[1],_a[3]),An=_a[0]-Hi,$n=_a[1]-Vi,ra=_a[2]-_a[0]-Ei,Ba=_a[3]-_a[1]-en}var Pa=function(nl,Ws,Au,Ou){var nf=GC(nl.stretch-Hi,Ei,st,m.left),bf=jC(nl.fixed-An,ra,nl.stretch,Lr),qh=GC(Ws.stretch-Vi,en,mt,m.top),Zf=jC(Ws.fixed-$n,Ba,Ws.stretch,Yr),jd=GC(Au.stretch-Hi,Ei,st,m.left),Wd=jC(Au.fixed-An,ra,Au.stretch,Lr),Oh=GC(Ou.stretch-Vi,en,mt,m.top),fv=jC(Ou.fixed-$n,Ba,Ou.stretch,Yr),hv=new u(nf,qh),hh=new u(jd,qh),dv=new u(jd,Oh),_p=new u(nf,Oh),py=new u(bf/fe,Zf/fe),F1=new u(Wd/fe,fv/fe),q1=y*Math.PI/180;if(q1){var O1=Math.sin(q1),$w=Math.cos(q1),y0=[$w,-O1,O1,$w];hv._matMult(y0),hh._matMult(y0),_p._matMult(y0),dv._matMult(y0)}var JC=nl.stretch+nl.fixed,fq=Au.stretch+Au.fixed,$C=Ws.stretch+Ws.fixed,hq=Ou.stretch+Ou.fixed,jp={x:ne.paddedRect.x+Gw+JC,y:ne.paddedRect.y+Gw+$C,w:fq-JC,h:hq-$C},Qw=ra/fe/st,QC=Ba/fe/mt;return{tl:hv,tr:hh,bl:_p,br:dv,tex:jp,writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:py,pixelOffsetBR:F1,minFontScaleX:Qw,minFontScaleY:QC,isSDF:I}};if(!U||!ne.stretchX&&!ne.stretchY)J.push(Pa({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:Fe+1},{fixed:0,stretch:Qe+1}));else for(var qo=kQ(Xt,_i,Lr),Na=kQ(ur,si,Yr),ja=0;ja0&&(Lr=Math.max(10,Lr),this.circleDiameter=Lr)}else{var Yr=fe.top*Fe-Qe,_i=fe.bottom*Fe+Qe,si=fe.left*Fe-Qe,Hi=fe.right*Fe+Qe,Ei=fe.collisionPadding;if(Ei&&(si-=Ei[0]*Fe,Yr-=Ei[1]*Fe,Hi+=Ei[2]*Fe,_i+=Ei[3]*Fe),mt){var Vi=new u(si,Yr),en=new u(Hi,Yr),An=new u(si,_i),ra=new u(Hi,_i),$n=mt*Math.PI/180;Vi._rotate($n),en._rotate($n),An._rotate($n),ra._rotate($n),si=Math.min(Vi.x,en.x,An.x,ra.x),Hi=Math.max(Vi.x,en.x,An.x,ra.x),Yr=Math.min(Vi.y,en.y,An.y,ra.y),_i=Math.max(Vi.y,en.y,An.y,ra.y)}y.emplaceBack(I.x,I.y,si,Yr,Hi,_i,U,J,ne)}this.boxEndIndex=y.length},jw=function(y,I){if(y===void 0&&(y=[]),I===void 0&&(I=sQe),this.data=y,this.length=this.data.length,this.compare=I,this.length>0)for(var U=(this.length>>1)-1;U>=0;U--)this._down(U)};jw.prototype.push=function(y){this.data.push(y),this.length++,this._up(this.length-1)},jw.prototype.pop=function(){if(this.length!==0){var y=this.data[0],I=this.data.pop();return this.length--,this.length>0&&(this.data[0]=I,this._down(0)),y}},jw.prototype.peek=function(){return this.data[0]},jw.prototype._up=function(y){for(var I=this,U=I.data,J=I.compare,ne=U[y];y>0;){var fe=y-1>>1,Fe=U[fe];if(J(ne,Fe)>=0)break;U[y]=Fe,y=fe}U[y]=ne},jw.prototype._down=function(y){for(var I=this,U=I.data,J=I.compare,ne=this.length>>1,fe=U[y];y=0)break;U[y]=Qe,y=Fe}U[y]=fe};function sQe(m,y){return my?1:0}function lQe(m,y,I){y===void 0&&(y=1),I===void 0&&(I=!1);for(var U=1/0,J=1/0,ne=-1/0,fe=-1/0,Fe=m[0],Qe=0;Qene)&&(ne=st.x),(!Qe||st.y>fe)&&(fe=st.y)}var mt=ne-U,Xt=fe-J,ur=Math.min(mt,Xt),nr=ur/2,Lr=new jw([],uQe);if(ur===0)return new u(U,J);for(var Yr=U;Yrsi.d||!si.d)&&(si=Ei,I&&console.log("found best %d after %d probes",Math.round(1e4*Ei.d)/1e4,Hi)),!(Ei.max-si.d<=y)&&(nr=Ei.h/2,Lr.push(new Ww(Ei.p.x-nr,Ei.p.y-nr,nr,m)),Lr.push(new Ww(Ei.p.x+nr,Ei.p.y-nr,nr,m)),Lr.push(new Ww(Ei.p.x-nr,Ei.p.y+nr,nr,m)),Lr.push(new Ww(Ei.p.x+nr,Ei.p.y+nr,nr,m)),Hi+=4)}return I&&(console.log("num probes: "+Hi),console.log("best distance: "+si.d)),si.p}function uQe(m,y){return y.max-m.max}function Ww(m,y,I,U){this.p=new u(m,y),this.h=I,this.d=cQe(this.p,U),this.max=this.d+this.h*Math.SQRT2}function cQe(m,y){for(var I=!1,U=1/0,J=0;Jm.y!=mt.y>m.y&&m.x<(mt.x-st.x)*(m.y-st.y)/(mt.y-st.y)+st.x&&(I=!I),U=Math.min(U,cg(m,st,mt))}return(I?1:-1)*Math.sqrt(U)}function fQe(m){for(var y=0,I=0,U=0,J=m[0],ne=0,fe=J.length,Fe=fe-1;ne=rn||y0.y<0||y0.y>=rn||vQe(m,y0,$w,I,U,J,Na,m.layers[0],m.collisionBoxArray,y.index,y.sourceLayerIndex,m.index,si,en,$n,Qe,Ei,An,Ba,nr,y,ne,st,mt,fe)};if(_a==="line")for(var us=0,zo=MQ(y.geometry,0,0,rn,rn);us1){var qh=nQe(bf,ra,I.vertical||Lr,U,Yr,Hi);qh&&ja(bf,qh)}}else if(y.type==="Polygon")for(var Zf=0,jd=zw(y.geometry,0);ZfD1&&re(m.layerIds[0]+': Value for "text-size" is >= '+wS+'. Reduce your "text-size".')):_i.kind==="composite"&&(si=[Sd*nr.compositeTextSizes[0].evaluate(fe,{},Lr),Sd*nr.compositeTextSizes[1].evaluate(fe,{},Lr)],(si[0]>D1||si[1]>D1)&&re(m.layerIds[0]+': Value for "text-size" is >= '+wS+'. Reduce your "text-size".')),m.addSymbols(m.text,Yr,si,Fe,ne,fe,st,y,Qe.lineStartIndex,Qe.lineLength,ur,Lr);for(var Hi=0,Ei=mt;HiD1&&re(m.layerIds[0]+': Value for "icon-size" is >= '+wS+'. Reduce your "icon-size".')):hv.kind==="composite"&&(hh=[Sd*en.compositeIconSizes[0].evaluate(Vi,{},ra),Sd*en.compositeIconSizes[1].evaluate(Vi,{},ra)],(hh[0]>D1||hh[1]>D1)&&re(m.layerIds[0]+': Value for "icon-size" is >= '+wS+'. Reduce your "icon-size".')),m.addSymbols(m.icon,Oh,hh,Ei,Hi,Vi,!1,y,_a.lineStartIndex,_a.lineLength,-1,ra),il=m.icon.placedSymbolArray.length-1,fv&&(zo=fv.length*4,m.addSymbols(m.icon,fv,hh,Ei,Hi,Vi,uv.vertical,y,_a.lineStartIndex,_a.lineLength,-1,ra),nl=m.icon.placedSymbolArray.length-1)}for(var dv in U.horizontal){var _p=U.horizontal[dv];if(!Pa){Au=$(_p.text);var py=Fe.layout.get("text-rotate").evaluate(Vi,{},ra);Pa=new WC(Qe,y,st,mt,Xt,_p,ur,nr,Lr,py)}var F1=_p.positionedLines.length===1;if(rl+=LQ(m,y,_p,ne,Fe,Lr,Vi,Yr,_a,U.vertical?uv.horizontal:uv.horizontalOnly,F1?Object.keys(U.horizontal):[dv],Ws,il,en,ra),F1)break}U.vertical&&(su+=LQ(m,y,U.vertical,ne,Fe,Lr,Vi,Yr,_a,uv.vertical,["vertical"],Ws,nl,en,ra));var q1=Pa?Pa.boxStartIndex:m.collisionBoxArray.length,O1=Pa?Pa.boxEndIndex:m.collisionBoxArray.length,$w=Na?Na.boxStartIndex:m.collisionBoxArray.length,y0=Na?Na.boxEndIndex:m.collisionBoxArray.length,JC=qo?qo.boxStartIndex:m.collisionBoxArray.length,fq=qo?qo.boxEndIndex:m.collisionBoxArray.length,$C=ja?ja.boxStartIndex:m.collisionBoxArray.length,hq=ja?ja.boxEndIndex:m.collisionBoxArray.length,jp=-1,Qw=function(SS,ZQ){return SS&&SS.circleDiameter?Math.max(SS.circleDiameter,ZQ):ZQ};jp=Qw(Pa,jp),jp=Qw(Na,jp),jp=Qw(qo,jp),jp=Qw(ja,jp);var QC=jp>-1?1:0;QC&&(jp*=$n/Zi),m.glyphOffsetArray.length>=ou.MAX_GLYPHS&&re("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),Vi.sortKey!==void 0&&m.addToSortKeyRanges(m.symbolInstances.length,Vi.sortKey),m.symbolInstances.emplaceBack(y.x,y.y,Ws.right>=0?Ws.right:-1,Ws.center>=0?Ws.center:-1,Ws.left>=0?Ws.left:-1,Ws.vertical||-1,il,nl,Au,q1,O1,$w,y0,JC,fq,$C,hq,st,rl,su,us,zo,QC,0,ur,Ou,nf,jp)}function pQe(m,y,I,U){var J=m.compareText;if(!(y in J))J[y]=[];else for(var ne=J[y],fe=ne.length-1;fe>=0;fe--)if(U.dist(ne[fe])0)&&(fe.value.kind!=="constant"||fe.value.value.length>0),mt=Qe.value.kind!=="constant"||!!Qe.value.value||Object.keys(Qe.parameters).length>0,Xt=ne.get("symbol-sort-key");if(this.features=[],!(!st&&!mt)){for(var ur=I.iconDependencies,nr=I.glyphDependencies,Lr=I.availableImages,Yr=new pn(this.zoom),_i=0,si=y;_i=0;for(var su=0,il=Ba.sections;su=0;Qe--)fe[Qe]={x:I[Qe].x,y:I[Qe].y,tileUnitDistanceFromAnchor:ne},Qe>0&&(ne+=I[Qe-1].dist(I[Qe]));for(var st=0;st0},ou.prototype.hasIconData=function(){return this.icon.segments.get().length>0},ou.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},ou.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},ou.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},ou.prototype.addIndicesForPlacedSymbol=function(y,I){for(var U=y.placedSymbolArray.get(I),J=U.vertexStartIndex+U.numGlyphs*4,ne=U.vertexStartIndex;ne1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(y),this.sortedAngle=y,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var U=0,J=this.symbolInstanceIndexes;U=0&&st.indexOf(Fe)===Qe&&I.addIndicesForPlacedSymbol(I.text,Fe)}),fe.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,fe.verticalPlacedTextSymbolIndex),fe.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,fe.placedIconSymbolIndex),fe.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,fe.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Z("SymbolBucket",ou,{omit:["layers","collisionBoxArray","features","compareText"]}),ou.MAX_GLYPHS=65535,ou.addDynamicAttributes=oq;function _Qe(m,y){return y.replace(/{([^{}]+)}/g,function(I,U){return U in m?String(m[U]):""})}var xQe=new Oi({"symbol-placement":new At(on.layout_symbol["symbol-placement"]),"symbol-spacing":new At(on.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new At(on.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Er(on.layout_symbol["symbol-sort-key"]),"symbol-z-order":new At(on.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new At(on.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new At(on.layout_symbol["icon-ignore-placement"]),"icon-optional":new At(on.layout_symbol["icon-optional"]),"icon-rotation-alignment":new At(on.layout_symbol["icon-rotation-alignment"]),"icon-size":new Er(on.layout_symbol["icon-size"]),"icon-text-fit":new At(on.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new At(on.layout_symbol["icon-text-fit-padding"]),"icon-image":new Er(on.layout_symbol["icon-image"]),"icon-rotate":new Er(on.layout_symbol["icon-rotate"]),"icon-padding":new At(on.layout_symbol["icon-padding"]),"icon-keep-upright":new At(on.layout_symbol["icon-keep-upright"]),"icon-offset":new Er(on.layout_symbol["icon-offset"]),"icon-anchor":new Er(on.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new At(on.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new At(on.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new At(on.layout_symbol["text-rotation-alignment"]),"text-field":new Er(on.layout_symbol["text-field"]),"text-font":new Er(on.layout_symbol["text-font"]),"text-size":new Er(on.layout_symbol["text-size"]),"text-max-width":new Er(on.layout_symbol["text-max-width"]),"text-line-height":new At(on.layout_symbol["text-line-height"]),"text-letter-spacing":new Er(on.layout_symbol["text-letter-spacing"]),"text-justify":new Er(on.layout_symbol["text-justify"]),"text-radial-offset":new Er(on.layout_symbol["text-radial-offset"]),"text-variable-anchor":new At(on.layout_symbol["text-variable-anchor"]),"text-anchor":new Er(on.layout_symbol["text-anchor"]),"text-max-angle":new At(on.layout_symbol["text-max-angle"]),"text-writing-mode":new At(on.layout_symbol["text-writing-mode"]),"text-rotate":new Er(on.layout_symbol["text-rotate"]),"text-padding":new At(on.layout_symbol["text-padding"]),"text-keep-upright":new At(on.layout_symbol["text-keep-upright"]),"text-transform":new Er(on.layout_symbol["text-transform"]),"text-offset":new Er(on.layout_symbol["text-offset"]),"text-allow-overlap":new At(on.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new At(on.layout_symbol["text-ignore-placement"]),"text-optional":new At(on.layout_symbol["text-optional"])}),bQe=new Oi({"icon-opacity":new Er(on.paint_symbol["icon-opacity"]),"icon-color":new Er(on.paint_symbol["icon-color"]),"icon-halo-color":new Er(on.paint_symbol["icon-halo-color"]),"icon-halo-width":new Er(on.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Er(on.paint_symbol["icon-halo-blur"]),"icon-translate":new At(on.paint_symbol["icon-translate"]),"icon-translate-anchor":new At(on.paint_symbol["icon-translate-anchor"]),"text-opacity":new Er(on.paint_symbol["text-opacity"]),"text-color":new Er(on.paint_symbol["text-color"],{runtimeType:Tl,getOverride:function(m){return m.textColor},hasOverride:function(m){return!!m.textColor}}),"text-halo-color":new Er(on.paint_symbol["text-halo-color"]),"text-halo-width":new Er(on.paint_symbol["text-halo-width"]),"text-halo-blur":new Er(on.paint_symbol["text-halo-blur"]),"text-translate":new At(on.paint_symbol["text-translate"]),"text-translate-anchor":new At(on.paint_symbol["text-translate-anchor"])}),sq={paint:bQe,layout:xQe},Yw=function(y){this.type=y.property.overrides?y.property.overrides.runtimeType:Ec,this.defaultValue=y};Yw.prototype.evaluate=function(y){if(y.formattedSection){var I=this.defaultValue.property.overrides;if(I&&I.hasOverride(y.formattedSection))return I.getOverride(y.formattedSection)}return y.feature&&y.featureState?this.defaultValue.evaluate(y.feature,y.featureState):this.defaultValue.property.specification.default},Yw.prototype.eachChild=function(y){if(!this.defaultValue.isConstant()){var I=this.defaultValue.value;y(I._styleExpression.expression)}},Yw.prototype.outputDefined=function(){return!1},Yw.prototype.serialize=function(){return null},Z("FormatSectionOverride",Yw,{omit:["defaultValue"]});var wQe=function(m){function y(I){m.call(this,I,sq)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.recalculate=function(U,J){if(m.prototype.recalculate.call(this,U,J),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){var ne=this.layout.get("text-writing-mode");if(ne){for(var fe=[],Fe=0,Qe=ne;Fe",targetMapId:J,sourceMapId:fe.mapId})}}},Kw.prototype.receive=function(y){var I=y.data,U=I.id;if(U&&!(I.targetMapId&&this.mapId!==I.targetMapId))if(I.type===""){delete this.tasks[U];var J=this.cancelCallbacks[U];delete this.cancelCallbacks[U],J&&J()}else ke()||I.mustQueue?(this.tasks[U]=I,this.taskQueue.push(U),this.invoker.trigger()):this.processTask(U,I)},Kw.prototype.process=function(){if(this.taskQueue.length){var y=this.taskQueue.shift(),I=this.tasks[y];delete this.tasks[y],this.taskQueue.length&&this.invoker.trigger(),I&&this.processTask(y,I)}},Kw.prototype.processTask=function(y,I){var U=this;if(I.type===""){var J=this.callbacks[y];delete this.callbacks[y],J&&(I.error?J(We(I.error)):J(null,We(I.data)))}else{var ne=!1,fe=Te(this.globalScope)?void 0:[],Fe=I.hasCallback?function(ur,nr){ne=!0,delete U.cancelCallbacks[y],U.target.postMessage({id:y,type:"",sourceMapId:U.mapId,error:ur?Ue(ur):null,data:Ue(nr,fe)},fe)}:function(ur){ne=!0},Qe=null,st=We(I.data);if(this.parent[I.type])Qe=this.parent[I.type](I.sourceMapId,st,Fe);else if(this.parent.getWorkerSource){var mt=I.type.split("."),Xt=this.parent.getWorkerSource(I.sourceMapId,mt[0],st.source);Qe=Xt[mt[1]](st,Fe)}else Fe(new Error("Could not find function "+I.type));!ne&&Qe&&Qe.cancel&&(this.cancelCallbacks[y]=Qe.cancel)}},Kw.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};function RQe(m,y,I){y=Math.pow(2,I)-y-1;var U=FQ(m*256,y*256,I),J=FQ((m+1)*256,(y+1)*256,I);return U[0]+","+U[1]+","+J[0]+","+J[1]}function FQ(m,y,I){var U=2*Math.PI*6378137/256/Math.pow(2,I),J=m*U-2*Math.PI*6378137/2,ne=y*U-2*Math.PI*6378137/2;return[J,ne]}var jf=function(y,I){y&&(I?this.setSouthWest(y).setNorthEast(I):y.length===4?this.setSouthWest([y[0],y[1]]).setNorthEast([y[2],y[3]]):this.setSouthWest(y[0]).setNorthEast(y[1]))};jf.prototype.setNorthEast=function(y){return this._ne=y instanceof sc?new sc(y.lng,y.lat):sc.convert(y),this},jf.prototype.setSouthWest=function(y){return this._sw=y instanceof sc?new sc(y.lng,y.lat):sc.convert(y),this},jf.prototype.extend=function(y){var I=this._sw,U=this._ne,J,ne;if(y instanceof sc)J=y,ne=y;else if(y instanceof jf){if(J=y._sw,ne=y._ne,!J||!ne)return this}else{if(Array.isArray(y))if(y.length===4||y.every(Array.isArray)){var fe=y;return this.extend(jf.convert(fe))}else{var Fe=y;return this.extend(sc.convert(Fe))}return this}return!I&&!U?(this._sw=new sc(J.lng,J.lat),this._ne=new sc(ne.lng,ne.lat)):(I.lng=Math.min(J.lng,I.lng),I.lat=Math.min(J.lat,I.lat),U.lng=Math.max(ne.lng,U.lng),U.lat=Math.max(ne.lat,U.lat)),this},jf.prototype.getCenter=function(){return new sc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},jf.prototype.getSouthWest=function(){return this._sw},jf.prototype.getNorthEast=function(){return this._ne},jf.prototype.getNorthWest=function(){return new sc(this.getWest(),this.getNorth())},jf.prototype.getSouthEast=function(){return new sc(this.getEast(),this.getSouth())},jf.prototype.getWest=function(){return this._sw.lng},jf.prototype.getSouth=function(){return this._sw.lat},jf.prototype.getEast=function(){return this._ne.lng},jf.prototype.getNorth=function(){return this._ne.lat},jf.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},jf.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},jf.prototype.isEmpty=function(){return!(this._sw&&this._ne)},jf.prototype.contains=function(y){var I=sc.convert(y),U=I.lng,J=I.lat,ne=this._sw.lat<=J&&J<=this._ne.lat,fe=this._sw.lng<=U&&U<=this._ne.lng;return this._sw.lng>this._ne.lng&&(fe=this._sw.lng>=U&&U>=this._ne.lng),ne&&fe},jf.convert=function(y){return!y||y instanceof jf?y:new jf(y)};var qQ=63710088e-1,sc=function(y,I){if(isNaN(y)||isNaN(I))throw new Error("Invalid LngLat object: ("+y+", "+I+")");if(this.lng=+y,this.lat=+I,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};sc.prototype.wrap=function(){return new sc(E(this.lng,-180,180),this.lat)},sc.prototype.toArray=function(){return[this.lng,this.lat]},sc.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},sc.prototype.distanceTo=function(y){var I=Math.PI/180,U=this.lat*I,J=y.lat*I,ne=Math.sin(U)*Math.sin(J)+Math.cos(U)*Math.cos(J)*Math.cos((y.lng-this.lng)*I),fe=qQ*Math.acos(Math.min(ne,1));return fe},sc.prototype.toBounds=function(y){y===void 0&&(y=0);var I=40075017,U=360*y/I,J=U/Math.cos(Math.PI/180*this.lat);return new jf(new sc(this.lng-J,this.lat-U),new sc(this.lng+J,this.lat+U))},sc.convert=function(y){if(y instanceof sc)return y;if(Array.isArray(y)&&(y.length===2||y.length===3))return new sc(Number(y[0]),Number(y[1]));if(!Array.isArray(y)&&typeof y=="object"&&y!==null)return new sc(Number("lng"in y?y.lng:y.lon),Number(y.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var OQ=2*Math.PI*qQ;function BQ(m){return OQ*Math.cos(m*Math.PI/180)}function NQ(m){return(180+m)/360}function UQ(m){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+m*Math.PI/360)))/360}function VQ(m,y){return m/BQ(y)}function DQe(m){return m*360-180}function uq(m){var y=180-m*360;return 360/Math.PI*Math.atan(Math.exp(y*Math.PI/180))-90}function zQe(m,y){return m*BQ(uq(y))}function FQe(m){return 1/Math.cos(m*Math.PI/180)}var nb=function(y,I,U){U===void 0&&(U=0),this.x=+y,this.y=+I,this.z=+U};nb.fromLngLat=function(y,I){I===void 0&&(I=0);var U=sc.convert(y);return new nb(NQ(U.lng),UQ(U.lat),VQ(I,U.lat))},nb.prototype.toLngLat=function(){return new sc(DQe(this.x),uq(this.y))},nb.prototype.toAltitude=function(){return zQe(this.z,this.y)},nb.prototype.meterInMercatorCoordinateUnits=function(){return 1/OQ*FQe(uq(this.y))};var ab=function(y,I,U){this.z=y,this.x=I,this.y=U,this.key=AS(0,y,y,I,U)};ab.prototype.equals=function(y){return this.z===y.z&&this.x===y.x&&this.y===y.y},ab.prototype.url=function(y,I){var U=RQe(this.x,this.y,this.z),J=qQe(this.z,this.x,this.y);return y[(this.x+this.y)%y.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(this.z)).replace("{x}",String(this.x)).replace("{y}",String(I==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",J).replace("{bbox-epsg-3857}",U)},ab.prototype.getTilePoint=function(y){var I=Math.pow(2,this.z);return new u((y.x*I-this.x)*rn,(y.y*I-this.y)*rn)},ab.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y};var HQ=function(y,I){this.wrap=y,this.canonical=I,this.key=AS(y,I.z,I.z,I.x,I.y)},Wf=function(y,I,U,J,ne){this.overscaledZ=y,this.wrap=I,this.canonical=new ab(U,+J,+ne),this.key=AS(I,y,U,J,ne)};Wf.prototype.equals=function(y){return this.overscaledZ===y.overscaledZ&&this.wrap===y.wrap&&this.canonical.equals(y.canonical)},Wf.prototype.scaledTo=function(y){var I=this.canonical.z-y;return y>this.canonical.z?new Wf(y,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Wf(y,this.wrap,y,this.canonical.x>>I,this.canonical.y>>I)},Wf.prototype.calculateScaledKey=function(y,I){var U=this.canonical.z-y;return y>this.canonical.z?AS(this.wrap*+I,y,this.canonical.z,this.canonical.x,this.canonical.y):AS(this.wrap*+I,y,y,this.canonical.x>>U,this.canonical.y>>U)},Wf.prototype.isChildOf=function(y){if(y.wrap!==this.wrap)return!1;var I=this.canonical.z-y.canonical.z;return y.overscaledZ===0||y.overscaledZ>I&&y.canonical.y===this.canonical.y>>I},Wf.prototype.children=function(y){if(this.overscaledZ>=y)return[new Wf(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var I=this.canonical.z+1,U=this.canonical.x*2,J=this.canonical.y*2;return[new Wf(I,this.wrap,I,U,J),new Wf(I,this.wrap,I,U+1,J),new Wf(I,this.wrap,I,U,J+1),new Wf(I,this.wrap,I,U+1,J+1)]},Wf.prototype.isLessThan=function(y){return this.wrapy.wrap?!1:this.overscaledZy.overscaledZ?!1:this.canonical.xy.canonical.x?!1:this.canonical.y0;ne--)J=1<=this.dim+1||I<-1||I>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(I+1)*this.stride+(y+1)},dy.prototype._unpackMapbox=function(y,I,U){return(y*256*256+I*256+U)/10-1e4},dy.prototype._unpackTerrarium=function(y,I,U){return y*256+I+U/256-32768},dy.prototype.getPixels=function(){return new lh({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},dy.prototype.backfillBorder=function(y,I,U){if(this.dim!==y.dim)throw new Error("dem dimension mismatch");var J=I*this.dim,ne=I*this.dim+this.dim,fe=U*this.dim,Fe=U*this.dim+this.dim;switch(I){case-1:J=ne-1;break;case 1:ne=J+1;break}switch(U){case-1:fe=Fe-1;break;case 1:Fe=fe+1;break}for(var Qe=-I*this.dim,st=-U*this.dim,mt=fe;mt=0&&Xt[3]>=0&&Qe.insert(Fe,Xt[0],Xt[1],Xt[2],Xt[3])}},vy.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new pg.VectorTile(new La(this.rawTileData)).layers,this.sourceLayerCoder=new YC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},vy.prototype.query=function(y,I,U,J){var ne=this;this.loadVTLayers();for(var fe=y.params||{},Fe=rn/y.tileSize/y.scale,Qe=be(fe.filter),st=y.queryGeometry,mt=y.queryPadding*Fe,Xt=jQ(st),ur=this.grid.query(Xt.minX-mt,Xt.minY-mt,Xt.maxX+mt,Xt.maxY+mt),nr=jQ(y.cameraQueryGeometry),Lr=this.grid3D.query(nr.minX-mt,nr.minY-mt,nr.maxX+mt,nr.maxY+mt,function(An,ra,$n,Ba){return pp(y.cameraQueryGeometry,An-mt,ra-mt,$n+mt,Ba+mt)}),Yr=0,_i=Lr;Yr<_i.length;Yr+=1){var si=_i[Yr];ur.push(si)}ur.sort(BQe);for(var Hi={},Ei,Vi=function(An){var ra=ur[An];if(ra!==Ei){Ei=ra;var $n=ne.featureIndexArray.get(ra),Ba=null;ne.loadMatchingFeature(Hi,$n.bucketIndex,$n.sourceLayerIndex,$n.featureIndex,Qe,fe.layers,fe.availableImages,I,U,J,function(_a,Pa,qo){return Ba||(Ba=da(_a)),Pa.queryIntersectsFeature(st,_a,qo,Ba,ne.z,y.transform,Fe,y.pixelPosMatrix)})}},en=0;enJ)ne=!1;else if(!I)ne=!0;else if(this.expirationTime=Ha.maxzoom)&&Ha.visibility!=="none"){h(Sn,this.zoom,Zt);var oo=Si[Ha.id]=Ha.createBucket({index:gi.bucketLayerIDs.length,layers:Sn,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:ka,sourceID:this.source});oo.populate(jn,Mi,this.tileID.canonical),gi.bucketLayerIDs.push(Sn.map(function(hi){return hi.id}))}}}}var xn,_t,br,Hr,ti=i.mapObject(Mi.glyphDependencies,function(hi){return Object.keys(hi).map(Number)});Object.keys(ti).length?yr.send("getGlyphs",{uid:this.uid,stacks:ti},function(hi,Ji){xn||(xn=hi,_t=Ji,an.call(Zr))}):_t={};var zi=Object.keys(Mi.iconDependencies);zi.length?yr.send("getImages",{icons:zi,source:this.source,tileID:this.tileID,type:"icons"},function(hi,Ji){xn||(xn=hi,br=Ji,an.call(Zr))}):br={};var Yi=Object.keys(Mi.patternDependencies);Yi.length?yr.send("getImages",{icons:Yi,source:this.source,tileID:this.tileID,type:"patterns"},function(hi,Ji){xn||(xn=hi,Hr=Ji,an.call(Zr))}):Hr={},an.call(this);function an(){if(xn)return Fr(xn);if(_t&&br&&Hr){var hi=new c(_t),Ji=new i.ImageAtlas(br,Hr);for(var ua in Si){var Fn=Si[ua];Fn instanceof i.SymbolBucket?(h(Fn.layers,this.zoom,Zt),i.performSymbolLayout(Fn,_t,hi.positions,br,Ji.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):Fn.hasPattern&&(Fn instanceof i.LineBucket||Fn instanceof i.FillBucket||Fn instanceof i.FillExtrusionBucket)&&(h(Fn.layers,this.zoom,Zt),Fn.addFeatures(Mi,this.tileID.canonical,Ji.patternPositions))}this.status="done",Fr(null,{buckets:i.values(Si).filter(function(Sa){return!Sa.isEmpty()}),featureIndex:gi,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:hi.image,imageAtlas:Ji,glyphMap:this.returnDependencies?_t:null,iconMap:this.returnDependencies?br:null,glyphPositions:this.returnDependencies?hi.positions:null})}}};function h(It,ft,jt){for(var Zt=new i.EvaluationParameters(ft),yr=0,Fr=It;yr=0!=!!ft&&It.reverse()}var L=i.vectorTile.VectorTileFeature.prototype.toGeoJSON,_=function(ft){this._feature=ft,this.extent=i.EXTENT,this.type=ft.type,this.properties=ft.tags,"id"in ft&&!isNaN(ft.id)&&(this.id=parseInt(ft.id,10))};_.prototype.loadGeometry=function(){if(this._feature.type===1){for(var ft=[],jt=0,Zt=this._feature.geometry;jt>31}function ke(It,ft){for(var jt=It.loadGeometry(),Zt=It.type,yr=0,Fr=0,Zr=jt.length,Vr=0;Vr>1;Te(It,ft,Zr,Zt,yr,Fr%2),ie(It,ft,jt,Zt,Zr-1,Fr+1),ie(It,ft,jt,Zr+1,yr,Fr+1)}}function Te(It,ft,jt,Zt,yr,Fr){for(;yr>Zt;){if(yr-Zt>600){var Zr=yr-Zt+1,Vr=jt-Zt+1,gi=Math.log(Zr),Si=.5*Math.exp(2*gi/3),Mi=.5*Math.sqrt(gi*Si*(Zr-Si)/Zr)*(Vr-Zr/2<0?-1:1),Pi=Math.max(Zt,Math.floor(jt-Vr*Si/Zr+Mi)),Gi=Math.min(yr,Math.floor(jt+(Zr-Vr)*Si/Zr+Mi));Te(It,ft,jt,Pi,Gi,Fr)}var Ki=ft[2*jt+Fr],ka=Zt,jn=yr;for(Ee(It,ft,Zt,jt),ft[2*yr+Fr]>Ki&&Ee(It,ft,Zt,yr);kaKi;)jn--}ft[2*Zt+Fr]===Ki?Ee(It,ft,Zt,jn):(jn++,Ee(It,ft,jn,yr)),jn<=jt&&(Zt=jn+1),jt<=jn&&(yr=jn-1)}}function Ee(It,ft,jt,Zt){Ae(It,jt,Zt),Ae(ft,2*jt,2*Zt),Ae(ft,2*jt+1,2*Zt+1)}function Ae(It,ft,jt){var Zt=It[ft];It[ft]=It[jt],It[jt]=Zt}function ze(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=[0,It.length-1,0],gi=[],Si,Mi;Vr.length;){var Pi=Vr.pop(),Gi=Vr.pop(),Ki=Vr.pop();if(Gi-Ki<=Zr){for(var ka=Ki;ka<=Gi;ka++)Si=ft[2*ka],Mi=ft[2*ka+1],Si>=jt&&Si<=yr&&Mi>=Zt&&Mi<=Fr&&gi.push(It[ka]);continue}var jn=Math.floor((Ki+Gi)/2);Si=ft[2*jn],Mi=ft[2*jn+1],Si>=jt&&Si<=yr&&Mi>=Zt&&Mi<=Fr&&gi.push(It[jn]);var la=(Pi+1)%2;(Pi===0?jt<=Si:Zt<=Mi)&&(Vr.push(Ki),Vr.push(jn-1),Vr.push(la)),(Pi===0?yr>=Si:Fr>=Mi)&&(Vr.push(jn+1),Vr.push(Gi),Vr.push(la))}return gi}function Ce(It,ft,jt,Zt,yr,Fr){for(var Zr=[0,It.length-1,0],Vr=[],gi=yr*yr;Zr.length;){var Si=Zr.pop(),Mi=Zr.pop(),Pi=Zr.pop();if(Mi-Pi<=Fr){for(var Gi=Pi;Gi<=Mi;Gi++)me(ft[2*Gi],ft[2*Gi+1],jt,Zt)<=gi&&Vr.push(It[Gi]);continue}var Ki=Math.floor((Pi+Mi)/2),ka=ft[2*Ki],jn=ft[2*Ki+1];me(ka,jn,jt,Zt)<=gi&&Vr.push(It[Ki]);var la=(Si+1)%2;(Si===0?jt-yr<=ka:Zt-yr<=jn)&&(Zr.push(Pi),Zr.push(Ki-1),Zr.push(la)),(Si===0?jt+yr>=ka:Zt+yr>=jn)&&(Zr.push(Ki+1),Zr.push(Mi),Zr.push(la))}return Vr}function me(It,ft,jt,Zt){var yr=It-jt,Fr=ft-Zt;return yr*yr+Fr*Fr}var Re=function(It){return It[0]},ce=function(It){return It[1]},Ge=function(ft,jt,Zt,yr,Fr){jt===void 0&&(jt=Re),Zt===void 0&&(Zt=ce),yr===void 0&&(yr=64),Fr===void 0&&(Fr=Float64Array),this.nodeSize=yr,this.points=ft;for(var Zr=ft.length<65536?Uint16Array:Uint32Array,Vr=this.ids=new Zr(ft.length),gi=this.coords=new Fr(ft.length*2),Si=0;Si=yr;Mi--){var Pi=+Date.now();gi=this._cluster(gi,Mi),this.trees[Mi]=new Ge(gi,Ke,xt,Zr,Float32Array),Zt&&console.log("z%d: %d clusters in %dms",Mi,gi.length,+Date.now()-Pi)}return Zt&&console.timeEnd("total time"),this},ct.prototype.getClusters=function(ft,jt){var Zt=((ft[0]+180)%360+360)%360-180,yr=Math.max(-90,Math.min(90,ft[1])),Fr=ft[2]===180?180:((ft[2]+180)%360+360)%360-180,Zr=Math.max(-90,Math.min(90,ft[3]));if(ft[2]-ft[0]>=360)Zt=-180,Fr=180;else if(Zt>Fr){var Vr=this.getClusters([Zt,yr,180,Zr],jt),gi=this.getClusters([-180,yr,Fr,Zr],jt);return Vr.concat(gi)}for(var Si=this.trees[this._limitZoom(jt)],Mi=Si.range(kt(Zt),Ct(Zr),kt(Fr),Ct(yr)),Pi=[],Gi=0,Ki=Mi;Gijt&&(jn+=jo.numPoints||1)}if(jn>=gi){for(var oa=Pi.x*ka,Sn=Pi.y*ka,Ha=Vr&&ka>1?this._map(Pi,!0):null,oo=(Mi<<5)+(jt+1)+this.points.length,xn=0,_t=Ki;xn<_t.length;xn+=1){var br=_t[xn],Hr=Gi.points[br];if(!(Hr.zoom<=jt)){Hr.zoom=jt;var ti=Hr.numPoints||1;oa+=Hr.x*ti,Sn+=Hr.y*ti,Hr.parentId=oo,Vr&&(Ha||(Ha=this._map(Pi,!0)),Vr(Ha,this._map(Hr)))}}Pi.parentId=oo,Zt.push(qt(oa/jn,Sn/jn,oo,jn,Ha))}else if(Zt.push(Pi),jn>1)for(var zi=0,Yi=Ki;zi>5},ct.prototype._getOriginZoom=function(ft){return(ft-this.points.length)%32},ct.prototype._map=function(ft,jt){if(ft.numPoints)return jt?er({},ft.properties):ft.properties;var Zt=this.points[ft.index].properties,yr=this.options.map(Zt);return jt&&yr===Zt?er({},yr):yr};function qt(It,ft,jt,Zt,yr){return{x:It,y:ft,zoom:1/0,id:jt,parentId:-1,numPoints:Zt,properties:yr}}function rt(It,ft){var jt=It.geometry.coordinates,Zt=jt[0],yr=jt[1];return{x:kt(Zt),y:Ct(yr),zoom:1/0,index:ft,parentId:-1}}function ot(It){return{type:"Feature",id:It.id,properties:Rt(It),geometry:{type:"Point",coordinates:[Yt(It.x),xr(It.y)]}}}function Rt(It){var ft=It.numPoints,jt=ft>=1e4?Math.round(ft/1e3)+"k":ft>=1e3?Math.round(ft/100)/10+"k":ft;return er(er({},It.properties),{cluster:!0,cluster_id:It.id,point_count:ft,point_count_abbreviated:jt})}function kt(It){return It/360+.5}function Ct(It){var ft=Math.sin(It*Math.PI/180),jt=.5-.25*Math.log((1+ft)/(1-ft))/Math.PI;return jt<0?0:jt>1?1:jt}function Yt(It){return(It-.5)*360}function xr(It){var ft=(180-It*360)*Math.PI/180;return 360*Math.atan(Math.exp(ft))/Math.PI-90}function er(It,ft){for(var jt in ft)It[jt]=ft[jt];return It}function Ke(It){return It.x}function xt(It){return It.y}function bt(It,ft,jt,Zt){for(var yr=Zt,Fr=jt-ft>>1,Zr=jt-ft,Vr,gi=It[ft],Si=It[ft+1],Mi=It[jt],Pi=It[jt+1],Gi=ft+3;Giyr)Vr=Gi,yr=Ki;else if(Ki===yr){var ka=Math.abs(Gi-Fr);kaZt&&(Vr-ft>3&&bt(It,ft,Vr,Zt),It[Vr+2]=yr,jt-Vr>3&&bt(It,Vr,jt,Zt))}function Lt(It,ft,jt,Zt,yr,Fr){var Zr=yr-jt,Vr=Fr-Zt;if(Zr!==0||Vr!==0){var gi=((It-jt)*Zr+(ft-Zt)*Vr)/(Zr*Zr+Vr*Vr);gi>1?(jt=yr,Zt=Fr):gi>0&&(jt+=Zr*gi,Zt+=Vr*gi)}return Zr=It-jt,Vr=ft-Zt,Zr*Zr+Vr*Vr}function St(It,ft,jt,Zt){var yr={id:typeof It=="undefined"?null:It,type:ft,geometry:jt,tags:Zt,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return Et(yr),yr}function Et(It){var ft=It.geometry,jt=It.type;if(jt==="Point"||jt==="MultiPoint"||jt==="LineString")dt(It,ft);else if(jt==="Polygon"||jt==="MultiLineString")for(var Zt=0;Zt0&&(Zt?Zr+=(yr*Si-gi*Fr)/2:Zr+=Math.sqrt(Math.pow(gi-yr,2)+Math.pow(Si-Fr,2))),yr=gi,Fr=Si}var Mi=ft.length-3;ft[2]=1,bt(ft,0,Mi,jt),ft[Mi+2]=1,ft.size=Math.abs(Zr),ft.start=0,ft.end=ft.size}function Br(It,ft,jt,Zt){for(var yr=0;yr1?1:jt}function ut(It,ft,jt,Zt,yr,Fr,Zr,Vr){if(jt/=ft,Zt/=ft,Fr>=jt&&Zr=Zt)return null;for(var gi=[],Si=0;Si=jt&&ka=Zt)continue;var jn=[];if(Gi==="Point"||Gi==="MultiPoint")Ne(Pi,jn,jt,Zt,yr);else if(Gi==="LineString")Ye(Pi,jn,jt,Zt,yr,!1,Vr.lineMetrics);else if(Gi==="MultiLineString")Xe(Pi,jn,jt,Zt,yr,!1);else if(Gi==="Polygon")Xe(Pi,jn,jt,Zt,yr,!0);else if(Gi==="MultiPolygon")for(var la=0;la=jt&&Zr<=Zt&&(ft.push(It[Fr]),ft.push(It[Fr+1]),ft.push(It[Fr+2]))}}function Ye(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=Ve(It),gi=yr===0?Le:xe,Si=It.start,Mi,Pi,Gi=0;Gijt&&(Pi=gi(Vr,Ki,ka,la,Fa,jt),Zr&&(Vr.start=Si+Mi*Pi)):Ra>Zt?jo=jt&&(Pi=gi(Vr,Ki,ka,la,Fa,jt),oa=!0),jo>Zt&&Ra<=Zt&&(Pi=gi(Vr,Ki,ka,la,Fa,Zt),oa=!0),!Fr&&oa&&(Zr&&(Vr.end=Si+Mi*Pi),ft.push(Vr),Vr=Ve(It)),Zr&&(Si+=Mi)}var Sn=It.length-3;Ki=It[Sn],ka=It[Sn+1],jn=It[Sn+2],Ra=yr===0?Ki:ka,Ra>=jt&&Ra<=Zt&&ht(Vr,Ki,ka,jn),Sn=Vr.length-3,Fr&&Sn>=3&&(Vr[Sn]!==Vr[0]||Vr[Sn+1]!==Vr[1])&&ht(Vr,Vr[0],Vr[1],Vr[2]),Vr.length&&ft.push(Vr)}function Ve(It){var ft=[];return ft.size=It.size,ft.start=It.start,ft.end=It.end,ft}function Xe(It,ft,jt,Zt,yr,Fr){for(var Zr=0;ZrZr.maxX&&(Zr.maxX=Mi),Pi>Zr.maxY&&(Zr.maxY=Pi)}return Zr}function ai(It,ft,jt,Zt){var yr=ft.geometry,Fr=ft.type,Zr=[];if(Fr==="Point"||Fr==="MultiPoint")for(var Vr=0;Vr0&&ft.size<(yr?Zr:Zt)){jt.numPoints+=ft.length/3;return}for(var Vr=[],gi=0;giZr)&&(jt.numSimplified++,Vr.push(ft[gi]),Vr.push(ft[gi+1])),jt.numPoints++;yr&&ri(Vr,Fr),It.push(Vr)}function ri(It,ft){for(var jt=0,Zt=0,yr=It.length,Fr=yr-2;Zt0===ft)for(Zt=0,yr=It.length;Zt24)throw new Error("maxZoom should be in the 0-24 range");if(ft.promoteId&&ft.generateId)throw new Error("promoteId and generateId cannot be used together.");var Zt=Ht(It,ft);this.tiles={},this.tileCoords=[],jt&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",ft.indexMaxZoom,ft.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),Zt=Se(Zt,ft),Zt.length&&this.splitTile(Zt,0,0,0),jt&&(Zt.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}nn.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},nn.prototype.splitTile=function(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=[It,ft,jt,Zt],gi=this.options,Si=gi.debug;Vr.length;){Zt=Vr.pop(),jt=Vr.pop(),ft=Vr.pop(),It=Vr.pop();var Mi=1<1&&console.time("creation"),Gi=this.tiles[Pi]=Qr(It,ft,jt,Zt,gi),this.tileCoords.push({z:ft,x:jt,y:Zt}),Si)){Si>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",ft,jt,Zt,Gi.numFeatures,Gi.numPoints,Gi.numSimplified),console.timeEnd("creation"));var Ki="z"+ft;this.stats[Ki]=(this.stats[Ki]||0)+1,this.total++}if(Gi.source=It,yr){if(ft===gi.maxZoom||ft===yr)continue;var ka=1<1&&console.time("clipping");var jn=.5*gi.buffer/gi.extent,la=.5-jn,Fa=.5+jn,Ra=1+jn,jo,oa,Sn,Ha,oo,xn;jo=oa=Sn=Ha=null,oo=ut(It,Mi,jt-jn,jt+Fa,0,Gi.minX,Gi.maxX,gi),xn=ut(It,Mi,jt+la,jt+Ra,0,Gi.minX,Gi.maxX,gi),It=null,oo&&(jo=ut(oo,Mi,Zt-jn,Zt+Fa,1,Gi.minY,Gi.maxY,gi),oa=ut(oo,Mi,Zt+la,Zt+Ra,1,Gi.minY,Gi.maxY,gi),oo=null),xn&&(Sn=ut(xn,Mi,Zt-jn,Zt+Fa,1,Gi.minY,Gi.maxY,gi),Ha=ut(xn,Mi,Zt+la,Zt+Ra,1,Gi.minY,Gi.maxY,gi),xn=null),Si>1&&console.timeEnd("clipping"),Vr.push(jo||[],ft+1,jt*2,Zt*2),Vr.push(oa||[],ft+1,jt*2,Zt*2+1),Vr.push(Sn||[],ft+1,jt*2+1,Zt*2),Vr.push(Ha||[],ft+1,jt*2+1,Zt*2+1)}}},nn.prototype.getTile=function(It,ft,jt){var Zt=this.options,yr=Zt.extent,Fr=Zt.debug;if(It<0||It>24)return null;var Zr=1<1&&console.log("drilling down to z%d-%d-%d",It,ft,jt);for(var gi=It,Si=ft,Mi=jt,Pi;!Pi&&gi>0;)gi--,Si=Math.floor(Si/2),Mi=Math.floor(Mi/2),Pi=this.tiles[Wi(gi,Si,Mi)];return!Pi||!Pi.source?null:(Fr>1&&console.log("found parent tile z%d-%d-%d",gi,Si,Mi),Fr>1&&console.time("drilling down"),this.splitTile(Pi.source,gi,Si,Mi,It,ft,jt),Fr>1&&console.timeEnd("drilling down"),this.tiles[Vr]?Vt(this.tiles[Vr],yr):null)};function Wi(It,ft,jt){return((1<=0?0:Y.button},o.remove=function(Y){Y.parentNode&&Y.parentNode.removeChild(Y)};function x(Y,z,K){var O,$,pe,de=i.browser.devicePixelRatio>1?"@2x":"",Ie=i.getJSON(z.transformRequest(z.normalizeSpriteURL(Y,de,".json"),i.ResourceType.SpriteJSON),function(Kt,ir){Ie=null,pe||(pe=Kt,O=ir,pt())}),$e=i.getImage(z.transformRequest(z.normalizeSpriteURL(Y,de,".png"),i.ResourceType.SpriteImage),function(Kt,ir){$e=null,pe||(pe=Kt,$=ir,pt())});function pt(){if(pe)K(pe);else if(O&&$){var Kt=i.browser.getImageData($),ir={};for(var Jt in O){var vt=O[Jt],Pt=vt.width,Wt=vt.height,rr=vt.x,dr=vt.y,pr=vt.sdf,kr=vt.pixelRatio,Ar=vt.stretchX,gr=vt.stretchY,Cr=vt.content,cr=new i.RGBAImage({width:Pt,height:Wt});i.RGBAImage.copy(Kt,cr,{x:rr,y:dr},{x:0,y:0},{width:Pt,height:Wt}),ir[Jt]={data:cr,pixelRatio:kr,sdf:pr,stretchX:Ar,stretchY:gr,content:Cr}}K(null,ir)}}return{cancel:function(){Ie&&(Ie.cancel(),Ie=null),$e&&($e.cancel(),$e=null)}}}function b(Y){var z=Y.userImage;if(z&&z.render){var K=z.render();if(K)return Y.data.replace(new Uint8Array(z.data.buffer)),!0}return!1}var p=1,E=function(Y){function z(){Y.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new i.RGBAImage({width:1,height:1}),this.dirty=!0}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.isLoaded=function(){return this.loaded},z.prototype.setLoaded=function(O){if(this.loaded!==O&&(this.loaded=O,O)){for(var $=0,pe=this.requestors;$=0?1.2:1))}C.prototype.draw=function(Y){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(Y,this.buffer,this.middle);for(var z=this.ctx.getImageData(0,0,this.size,this.size),K=new Uint8ClampedArray(this.size*this.size),O=0;O65535){Kt(new Error("glyphs > 65535 not supported"));return}if(vt.ranges[Wt]){Kt(null,{stack:ir,id:Jt,glyph:Pt});return}var rr=vt.requests[Wt];rr||(rr=vt.requests[Wt]=[],P.loadGlyphRange(ir,Wt,O.url,O.requestManager,function(dr,pr){if(pr){for(var kr in pr)O._doesCharSupportLocalGlyph(+kr)||(vt.glyphs[+kr]=pr[+kr]);vt.ranges[Wt]=!0}for(var Ar=0,gr=rr;Ar1&&(pt=z[++$e]);var ir=Math.abs(Kt-pt.left),Jt=Math.abs(Kt-pt.right),vt=Math.min(ir,Jt),Pt=void 0,Wt=pe/O*($+1);if(pt.isDash){var rr=$-Math.abs(Wt);Pt=Math.sqrt(vt*vt+rr*rr)}else Pt=$-Math.sqrt(vt*vt+Wt*Wt);this.data[Ie+Kt]=Math.max(0,Math.min(255,Pt+128))}},H.prototype.addRegularDash=function(z){for(var K=z.length-1;K>=0;--K){var O=z[K],$=z[K+1];O.zeroLength?z.splice(K,1):$&&$.isDash===O.isDash&&($.left=O.left,z.splice(K,1))}var pe=z[0],de=z[z.length-1];pe.isDash===de.isDash&&(pe.left=de.left-this.width,de.right=pe.right+this.width);for(var Ie=this.width*this.nextRow,$e=0,pt=z[$e],Kt=0;Kt1&&(pt=z[++$e]);var ir=Math.abs(Kt-pt.left),Jt=Math.abs(Kt-pt.right),vt=Math.min(ir,Jt),Pt=pt.isDash?vt:-vt;this.data[Ie+Kt]=Math.max(0,Math.min(255,Pt+128))}},H.prototype.addDash=function(z,K){var O=K?7:0,$=2*O+1;if(this.nextRow+$>this.height)return i.warnOnce("LineAtlas out of space"),null;for(var pe=0,de=0;de=O.minX&&z.x=O.minY&&z.y0&&(Kt[new i.OverscaledTileID(O.overscaledZ,Ie,$.z,de,$.y-1).key]={backfilled:!1},Kt[new i.OverscaledTileID(O.overscaledZ,O.wrap,$.z,$.x,$.y-1).key]={backfilled:!1},Kt[new i.OverscaledTileID(O.overscaledZ,pt,$.z,$e,$.y-1).key]={backfilled:!1}),$.y+10&&(pe.resourceTiming=O._resourceTiming,O._resourceTiming=[]),O.fire(new i.Event("data",pe))})},z.prototype.onAdd=function(O){this.map=O,this.load()},z.prototype.setData=function(O){var $=this;return this._data=O,this.fire(new i.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(pe){if(pe){$.fire(new i.ErrorEvent(pe));return}var de={dataType:"source",sourceDataType:"content"};$._collectResourceTiming&&$._resourceTiming&&$._resourceTiming.length>0&&(de.resourceTiming=$._resourceTiming,$._resourceTiming=[]),$.fire(new i.Event("data",de))}),this},z.prototype.getClusterExpansionZoom=function(O,$){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:O,source:this.id},$),this},z.prototype.getClusterChildren=function(O,$){return this.actor.send("geojson.getClusterChildren",{clusterId:O,source:this.id},$),this},z.prototype.getClusterLeaves=function(O,$,pe,de){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:O,limit:$,offset:pe},de),this},z.prototype._updateWorkerData=function(O){var $=this;this._loaded=!1;var pe=i.extend({},this.workerOptions),de=this._data;typeof de=="string"?(pe.request=this.map._requestManager.transformRequest(i.browser.resolveURL(de),i.ResourceType.Source),pe.request.collectResourceTiming=this._collectResourceTiming):pe.data=JSON.stringify(de),this.actor.send(this.type+".loadData",pe,function(Ie,$e){$._removed||$e&&$e.abandoned||($._loaded=!0,$e&&$e.resourceTiming&&$e.resourceTiming[$.id]&&($._resourceTiming=$e.resourceTiming[$.id].slice(0)),$.actor.send($.type+".coalesce",{source:pe.source},null),O(Ie))})},z.prototype.loaded=function(){return this._loaded},z.prototype.loadTile=function(O,$){var pe=this,de=O.actor?"reloadTile":"loadTile";O.actor=this.actor;var Ie={type:this.type,uid:O.uid,tileID:O.tileID,zoom:O.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:i.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};O.request=this.actor.send(de,Ie,function($e,pt){return delete O.request,O.unloadVectorData(),O.aborted?$(null):$e?$($e):(O.loadVectorData(pt,pe.map.painter,de==="reloadTile"),$(null))})},z.prototype.abortTile=function(O){O.request&&(O.request.cancel(),delete O.request),O.aborted=!0},z.prototype.unloadTile=function(O){O.unloadVectorData(),this.actor.send("removeTile",{uid:O.uid,type:this.type,source:this.id})},z.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},z.prototype.serialize=function(){return i.extend({},this._options,{type:this.type,data:this._data})},z.prototype.hasTransition=function(){return!1},z}(i.Evented),Me=i.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),ke=function(Y){function z(K,O,$,pe){Y.call(this),this.id=K,this.dispatcher=$,this.coordinates=O.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(pe),this.options=O}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.load=function(O,$){var pe=this;this._loaded=!1,this.fire(new i.Event("dataloading",{dataType:"source"})),this.url=this.options.url,i.getImage(this.map._requestManager.transformRequest(this.url,i.ResourceType.Image),function(de,Ie){pe._loaded=!0,de?pe.fire(new i.ErrorEvent(de)):Ie&&(pe.image=Ie,O&&(pe.coordinates=O),$&&$(),pe._finishLoading())})},z.prototype.loaded=function(){return this._loaded},z.prototype.updateImage=function(O){var $=this;return!this.image||!O.url?this:(this.options.url=O.url,this.load(O.coordinates,function(){$.texture=null}),this)},z.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"metadata"})))},z.prototype.onAdd=function(O){this.map=O,this.load()},z.prototype.setCoordinates=function(O){var $=this;this.coordinates=O;var pe=O.map(i.MercatorCoordinate.fromLngLat);this.tileID=ge(pe),this.minzoom=this.maxzoom=this.tileID.z;var de=pe.map(function(Ie){return $.tileID.getTilePoint(Ie)._round()});return this._boundsArray=new i.StructArrayLayout4i8,this._boundsArray.emplaceBack(de[0].x,de[0].y,0,0),this._boundsArray.emplaceBack(de[1].x,de[1].y,i.EXTENT,0),this._boundsArray.emplaceBack(de[3].x,de[3].y,0,i.EXTENT),this._boundsArray.emplaceBack(de[2].x,de[2].y,i.EXTENT,i.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"content"})),this},z.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||!this.image)){var O=this.map.painter.context,$=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new i.Texture(O,this.image,$.RGBA),this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE));for(var pe in this.tiles){var de=this.tiles[pe];de.state!=="loaded"&&(de.state="loaded",de.texture=this.texture)}}},z.prototype.loadTile=function(O,$){this.tileID&&this.tileID.equals(O.tileID.canonical)?(this.tiles[String(O.tileID.wrap)]=O,O.buckets={},$(null)):(O.state="errored",$(null))},z.prototype.serialize=function(){return{type:"image",url:this.options.url,coordinates:this.coordinates}},z.prototype.hasTransition=function(){return!1},z}(i.Evented);function ge(Y){for(var z=1/0,K=1/0,O=-1/0,$=-1/0,pe=0,de=Y;pe$.end(0)?this.fire(new i.ErrorEvent(new i.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+$.start(0)+" and "+$.end(0)+"-second mark."))):this.video.currentTime=O}},z.prototype.getVideo=function(){return this.video},z.prototype.onAdd=function(O){this.map||(this.map=O,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},z.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||this.video.readyState<2)){var O=this.map.painter.context,$=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE),$.texSubImage2D($.TEXTURE_2D,0,0,0,$.RGBA,$.UNSIGNED_BYTE,this.video)):(this.texture=new i.Texture(O,this.video,$.RGBA),this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE));for(var pe in this.tiles){var de=this.tiles[pe];de.state!=="loaded"&&(de.state="loaded",de.texture=this.texture)}}},z.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},z.prototype.hasTransition=function(){return this.video&&!this.video.paused},z}(ke),Te=function(Y){function z(K,O,$,pe){Y.call(this,K,O,$,pe),O.coordinates?(!Array.isArray(O.coordinates)||O.coordinates.length!==4||O.coordinates.some(function(de){return!Array.isArray(de)||de.length!==2||de.some(function(Ie){return typeof Ie!="number"})}))&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'missing required property "coordinates"'))),O.animate&&typeof O.animate!="boolean"&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'optional "animate" property must be a boolean value'))),O.canvas?typeof O.canvas!="string"&&!(O.canvas instanceof i.window.HTMLCanvasElement)&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'missing required property "canvas"'))),this.options=O,this.animate=O.animate!==void 0?O.animate:!0}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.load=function(){if(this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof i.window.HTMLCanvasElement?this.options.canvas:i.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()){this.fire(new i.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero.")));return}this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading()},z.prototype.getCanvas=function(){return this.canvas},z.prototype.onAdd=function(O){this.map=O,this.load(),this.canvas&&this.animate&&this.play()},z.prototype.onRemove=function(){this.pause()},z.prototype.prepare=function(){var O=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,O=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,O=!0),!this._hasInvalidDimensions()&&Object.keys(this.tiles).length!==0){var $=this.map.painter.context,pe=$.gl;this.boundsBuffer||(this.boundsBuffer=$.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(O||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new i.Texture($,this.canvas,pe.RGBA,{premultiply:!0});for(var de in this.tiles){var Ie=this.tiles[de];Ie.state!=="loaded"&&(Ie.state="loaded",Ie.texture=this.texture)}}},z.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},z.prototype.hasTransition=function(){return this._playing},z.prototype._hasInvalidDimensions=function(){for(var O=0,$=[this.canvas.width,this.canvas.height];O<$.length;O+=1){var pe=$[O];if(isNaN(pe)||pe<=0)return!0}return!1},z}(ke),Ee={vector:W,raster:re,"raster-dem":ae,geojson:_e,video:ie,image:ke,canvas:Te},Ae=function(Y,z,K,O){var $=new Ee[z.type](Y,z,K,O);if($.id!==Y)throw new Error("Expected Source id to be "+Y+" instead of "+$.id);return i.bindAll(["load","abort","unload","serialize","prepare"],$),$},ze=function(Y){return Ee[Y]},Ce=function(Y,z){Ee[Y]=z};function me(Y,z){var K=i.identity([]);return i.translate(K,K,[1,1,0]),i.scale(K,K,[Y.width*.5,Y.height*.5,1]),i.multiply(K,K,Y.calculatePosMatrix(z.toUnwrapped()))}function Re(Y,z,K){if(Y)for(var O=0,$=Y;O<$.length;O+=1){var pe=$[O],de=z[pe];if(de&&de.source===K&&de.type==="fill-extrusion")return!0}else for(var Ie in z){var $e=z[Ie];if($e.source===K&&$e.type==="fill-extrusion")return!0}return!1}function ce(Y,z,K,O,$,pe){var de=Re($&&$.layers,z,Y.id),Ie=pe.maxPitchScaleFactor(),$e=Y.tilesIn(O,Ie,de);$e.sort(ct);for(var pt=[],Kt=0,ir=$e;Ktthis.max){var Ie=this._getAndRemoveByKey(this.order[0]);Ie&&this.onRemove(Ie)}return this},rt.prototype.has=function(z){return z.wrapped().key in this.data},rt.prototype.getAndRemove=function(z){return this.has(z)?this._getAndRemoveByKey(z.wrapped().key):null},rt.prototype._getAndRemoveByKey=function(z){var K=this.data[z].shift();return K.timeout&&clearTimeout(K.timeout),this.data[z].length===0&&delete this.data[z],this.order.splice(this.order.indexOf(z),1),K.value},rt.prototype.getByKey=function(z){var K=this.data[z];return K?K[0].value:null},rt.prototype.get=function(z){if(!this.has(z))return null;var K=this.data[z.wrapped().key][0];return K.value},rt.prototype.remove=function(z,K){if(!this.has(z))return this;var O=z.wrapped().key,$=K===void 0?0:this.data[O].indexOf(K),pe=this.data[O][$];return this.data[O].splice($,1),pe.timeout&&clearTimeout(pe.timeout),this.data[O].length===0&&delete this.data[O],this.onRemove(pe.value),this.order.splice(this.order.indexOf(O),1),this},rt.prototype.setMaxSize=function(z){for(this.max=z;this.order.length>this.max;){var K=this._getAndRemoveByKey(this.order[0]);K&&this.onRemove(K)}return this},rt.prototype.filter=function(z){var K=[];for(var O in this.data)for(var $=0,pe=this.data[O];$1||(Math.abs(ir)>1&&(Math.abs(ir+vt)===1?ir+=vt:Math.abs(ir-vt)===1&&(ir-=vt)),!(!Kt.dem||!pt.dem)&&(pt.dem.backfillBorder(Kt.dem,ir,Jt),pt.neighboringTiles&&pt.neighboringTiles[Pt]&&(pt.neighboringTiles[Pt].backfilled=!0)))}},z.prototype.getTile=function(O){return this.getTileByID(O.key)},z.prototype.getTileByID=function(O){return this._tiles[O]},z.prototype._retainLoadedChildren=function(O,$,pe,de){for(var Ie in this._tiles){var $e=this._tiles[Ie];if(!(de[Ie]||!$e.hasData()||$e.tileID.overscaledZ<=$||$e.tileID.overscaledZ>pe)){for(var pt=$e.tileID;$e&&$e.tileID.overscaledZ>$+1;){var Kt=$e.tileID.scaledTo($e.tileID.overscaledZ-1);$e=this._tiles[Kt.key],$e&&$e.hasData()&&(pt=Kt)}for(var ir=pt;ir.overscaledZ>$;)if(ir=ir.scaledTo(ir.overscaledZ-1),O[ir.key]){de[pt.key]=pt;break}}}},z.prototype.findLoadedParent=function(O,$){if(O.key in this._loadedParentTiles){var pe=this._loadedParentTiles[O.key];return pe&&pe.tileID.overscaledZ>=$?pe:null}for(var de=O.overscaledZ-1;de>=$;de--){var Ie=O.scaledTo(de),$e=this._getLoadedTile(Ie);if($e)return $e}},z.prototype._getLoadedTile=function(O){var $=this._tiles[O.key];if($&&$.hasData())return $;var pe=this._cache.getByKey(O.wrapped().key);return pe},z.prototype.updateCacheSize=function(O){var $=Math.ceil(O.width/this._source.tileSize)+1,pe=Math.ceil(O.height/this._source.tileSize)+1,de=$*pe,Ie=5,$e=Math.floor(de*Ie),pt=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,$e):$e;this._cache.setMaxSize(pt)},z.prototype.handleWrapJump=function(O){var $=this._prevLng===void 0?O:this._prevLng,pe=O-$,de=pe/360,Ie=Math.round(de);if(this._prevLng=O,Ie){var $e={};for(var pt in this._tiles){var Kt=this._tiles[pt];Kt.tileID=Kt.tileID.unwrapTo(Kt.tileID.wrap+Ie),$e[Kt.tileID.key]=Kt}this._tiles=$e;for(var ir in this._timers)clearTimeout(this._timers[ir]),delete this._timers[ir];for(var Jt in this._tiles){var vt=this._tiles[Jt];this._setTileReloadTimer(Jt,vt)}}},z.prototype.update=function(O){var $=this;if(this.transform=O,!(!this._sourceLoaded||this._paused)){this.updateCacheSize(O),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={};var pe;this.used?this._source.tileID?pe=O.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(yi){return new i.OverscaledTileID(yi.canonical.z,yi.wrap,yi.canonical.z,yi.canonical.x,yi.canonical.y)}):(pe=O.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(pe=pe.filter(function(yi){return $._source.hasTile(yi)}))):pe=[];var de=O.coveringZoomLevel(this._source),Ie=Math.max(de-z.maxOverzooming,this._source.minzoom),$e=Math.max(de+z.maxUnderzooming,this._source.minzoom),pt=this._updateRetainedTiles(pe,de);if(gi(this._source.type)){for(var Kt={},ir={},Jt=Object.keys(pt),vt=0,Pt=Jt;vtthis._source.maxzoom){var pr=rr.children(this._source.maxzoom)[0],kr=this.getTile(pr);if(kr&&kr.hasData()){pe[pr.key]=pr;continue}}else{var Ar=rr.children(this._source.maxzoom);if(pe[Ar[0].key]&&pe[Ar[1].key]&&pe[Ar[2].key]&&pe[Ar[3].key])continue}for(var gr=dr.wasRequested(),Cr=rr.overscaledZ-1;Cr>=Ie;--Cr){var cr=rr.scaledTo(Cr);if(de[cr.key]||(de[cr.key]=!0,dr=this.getTile(cr),!dr&&gr&&(dr=this._addTile(cr)),dr&&(pe[cr.key]=cr,gr=dr.wasRequested(),dr.hasData())))break}}}return pe},z.prototype._updateLoadedParentTileCache=function(){this._loadedParentTiles={};for(var O in this._tiles){for(var $=[],pe=void 0,de=this._tiles[O].tileID;de.overscaledZ>0;){if(de.key in this._loadedParentTiles){pe=this._loadedParentTiles[de.key];break}$.push(de.key);var Ie=de.scaledTo(de.overscaledZ-1);if(pe=this._getLoadedTile(Ie),pe)break;de=Ie}for(var $e=0,pt=$;$e0)&&($.hasData()&&$.state!=="reloading"?this._cache.add($.tileID,$,$.getExpiryTimeout()):($.aborted=!0,this._abortTile($),this._unloadTile($))))},z.prototype.clearTiles=function(){this._shouldReloadOnResume=!1,this._paused=!1;for(var O in this._tiles)this._removeTile(O);this._cache.reset()},z.prototype.tilesIn=function(O,$,pe){var de=this,Ie=[],$e=this.transform;if(!$e)return Ie;for(var pt=pe?$e.getCameraQueryGeometry(O):O,Kt=O.map(function(Cr){return $e.pointCoordinate(Cr)}),ir=pt.map(function(Cr){return $e.pointCoordinate(Cr)}),Jt=this.getIds(),vt=1/0,Pt=1/0,Wt=-1/0,rr=-1/0,dr=0,pr=ir;dr=0&&tn[1].y+yi>=0){var Ri=Kt.map(function(Qn){return Gr.getTilePoint(Qn)}),ln=ir.map(function(Qn){return Gr.getTilePoint(Qn)});Ie.push({tile:cr,tileID:Gr,queryGeometry:Ri,cameraQueryGeometry:ln,scale:ei})}}},gr=0;gr=i.browser.now())return!0}return!1},z.prototype.setFeatureState=function(O,$,pe){O=O||"_geojsonTileLayer",this._state.updateState(O,$,pe)},z.prototype.removeFeatureState=function(O,$,pe){O=O||"_geojsonTileLayer",this._state.removeFeatureState(O,$,pe)},z.prototype.getFeatureState=function(O,$){return O=O||"_geojsonTileLayer",this._state.getState(O,$)},z.prototype.setDependencies=function(O,$,pe){var de=this._tiles[O];de&&de.setDependencies($,pe)},z.prototype.reloadTilesForDependencies=function(O,$){for(var pe in this._tiles){var de=this._tiles[pe];de.hasDependency(O,$)&&this._reloadTile(pe,"reloading")}this._cache.filter(function(Ie){return!Ie.hasDependency(O,$)})},z}(i.Evented);Zr.maxOverzooming=10,Zr.maxUnderzooming=3;function Vr(Y,z){var K=Math.abs(Y.wrap*2)-+(Y.wrap<0),O=Math.abs(z.wrap*2)-+(z.wrap<0);return Y.overscaledZ-z.overscaledZ||O-K||z.canonical.y-Y.canonical.y||z.canonical.x-Y.canonical.x}function gi(Y){return Y==="raster"||Y==="image"||Y==="video"}function Si(){return new i.window.Worker(ns.workerUrl)}var Mi="mapboxgl_preloaded_worker_pool",Pi=function(){this.active={}};Pi.prototype.acquire=function(z){if(!this.workers)for(this.workers=[];this.workers.length0?($-de)/Ie:0;return this.points[pe].mult(1-$e).add(this.points[K].mult($e))};var hi=function(z,K,O){var $=this.boxCells=[],pe=this.circleCells=[];this.xCellCount=Math.ceil(z/O),this.yCellCount=Math.ceil(K/O);for(var de=0;dethis.width||$<0||K>this.height)return pe?!1:[];var Ie=[];if(z<=0&&K<=0&&this.width<=O&&this.height<=$){if(pe)return!0;for(var $e=0;$e0:Ie}},hi.prototype._queryCircle=function(z,K,O,$,pe){var de=z-O,Ie=z+O,$e=K-O,pt=K+O;if(Ie<0||de>this.width||pt<0||$e>this.height)return $?!1:[];var Kt=[],ir={hitTest:$,circle:{x:z,y:K,radius:O},seenUids:{box:{},circle:{}}};return this._forEachCell(de,$e,Ie,pt,this._queryCellCircle,Kt,ir,pe),$?Kt.length>0:Kt},hi.prototype.query=function(z,K,O,$,pe){return this._query(z,K,O,$,!1,pe)},hi.prototype.hitTest=function(z,K,O,$,pe){return this._query(z,K,O,$,!0,pe)},hi.prototype.hitTestCircle=function(z,K,O,$){return this._queryCircle(z,K,O,!0,$)},hi.prototype._queryCell=function(z,K,O,$,pe,de,Ie,$e){var pt=Ie.seenUids,Kt=this.boxCells[pe];if(Kt!==null)for(var ir=this.bboxes,Jt=0,vt=Kt;Jt=ir[Wt+0]&&$>=ir[Wt+1]&&(!$e||$e(this.boxKeys[Pt]))){if(Ie.hitTest)return de.push(!0),!0;de.push({key:this.boxKeys[Pt],x1:ir[Wt],y1:ir[Wt+1],x2:ir[Wt+2],y2:ir[Wt+3]})}}}var rr=this.circleCells[pe];if(rr!==null)for(var dr=this.circles,pr=0,kr=rr;prIe*Ie+$e*$e},hi.prototype._circleAndRectCollide=function(z,K,O,$,pe,de,Ie){var $e=(de-$)/2,pt=Math.abs(z-($+$e));if(pt>$e+O)return!1;var Kt=(Ie-pe)/2,ir=Math.abs(K-(pe+Kt));if(ir>Kt+O)return!1;if(pt<=$e||ir<=Kt)return!0;var Jt=pt-$e,vt=ir-Kt;return Jt*Jt+vt*vt<=O*O};function Ji(Y,z,K,O,$){var pe=i.create();return z?(i.scale(pe,pe,[1/$,1/$,1]),K||i.rotateZ(pe,pe,O.angle)):i.multiply(pe,O.labelPlaneMatrix,Y),pe}function ua(Y,z,K,O,$){if(z){var pe=i.clone(Y);return i.scale(pe,pe,[$,$,1]),K||i.rotateZ(pe,pe,-O.angle),pe}else return O.glCoordMatrix}function Fn(Y,z){var K=[Y.x,Y.y,0,1];wl(K,K,z);var O=K[3];return{point:new i.Point(K[0]/O,K[1]/O),signedDistanceFromCamera:O}}function Sa(Y,z){return .5+.5*(Y/z)}function go(Y,z){var K=Y[0]/Y[3],O=Y[1]/Y[3],$=K>=-z[0]&&K<=z[0]&&O>=-z[1]&&O<=z[1];return $}function Oo(Y,z,K,O,$,pe,de,Ie){var $e=O?Y.textSizeData:Y.iconSizeData,pt=i.evaluateSizeForZoom($e,K.transform.zoom),Kt=[256/K.width*2+1,256/K.height*2+1],ir=O?Y.text.dynamicLayoutVertexArray:Y.icon.dynamicLayoutVertexArray;ir.clear();for(var Jt=Y.lineVertexArray,vt=O?Y.text.placedSymbolArray:Y.icon.placedSymbolArray,Pt=K.transform.width/K.transform.height,Wt=!1,rr=0;rrpe)return{useVertical:!0}}return(Y===i.WritingMode.vertical?z.yK.x)?{needsFlipping:!0}:null}function xo(Y,z,K,O,$,pe,de,Ie,$e,pt,Kt,ir,Jt,vt){var Pt=z/24,Wt=Y.lineOffsetX*Pt,rr=Y.lineOffsetY*Pt,dr;if(Y.numGlyphs>1){var pr=Y.glyphStartIndex+Y.numGlyphs,kr=Y.lineStartIndex,Ar=Y.lineStartIndex+Y.lineLength,gr=ho(Pt,Ie,Wt,rr,K,Kt,ir,Y,$e,pe,Jt);if(!gr)return{notEnoughRoom:!0};var Cr=Fn(gr.first.point,de).point,cr=Fn(gr.last.point,de).point;if(O&&!K){var Gr=Mo(Y.writingMode,Cr,cr,vt);if(Gr)return Gr}dr=[gr.first];for(var ei=Y.glyphStartIndex+1;ei0?ln.point:zs(ir,Ri,yi,1,$),qn=Mo(Y.writingMode,yi,Qn,vt);if(qn)return qn}var rn=ks(Pt*Ie.getoffsetX(Y.glyphStartIndex),Wt,rr,K,Kt,ir,Y.segment,Y.lineStartIndex,Y.lineStartIndex+Y.lineLength,$e,pe,Jt);if(!rn)return{notEnoughRoom:!0};dr=[rn]}for(var bn=0,mn=dr;bn0?1:-1,Pt=0;O&&(vt*=-1,Pt=Math.PI),vt<0&&(Pt+=Math.PI);for(var Wt=vt>0?Ie+de:Ie+de+1,rr=$,dr=$,pr=0,kr=0,Ar=Math.abs(Jt),gr=[];pr+kr<=Ar;){if(Wt+=vt,Wt=$e)return null;if(dr=rr,gr.push(rr),rr=ir[Wt],rr===void 0){var Cr=new i.Point(pt.getx(Wt),pt.gety(Wt)),cr=Fn(Cr,Kt);if(cr.signedDistanceFromCamera>0)rr=ir[Wt]=cr.point;else{var Gr=Wt-vt,ei=pr===0?pe:new i.Point(pt.getx(Gr),pt.gety(Gr));rr=zs(ei,Cr,dr,Ar-pr+1,Kt)}}pr+=kr,kr=dr.dist(rr)}var yi=(Ar-pr)/kr,tn=rr.sub(dr),Ri=tn.mult(yi)._add(dr);Ri._add(tn._unit()._perp()._mult(K*vt));var ln=Pt+Math.atan2(rr.y-dr.y,rr.x-dr.x);return gr.push(Ri),{point:Ri,angle:ln,path:gr}}var Zs=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Xs(Y,z){for(var K=0;K=1;Gn--)mn.push(rn.path[Gn]);for(var da=1;da0){for(var fo=mn[0].clone(),as=mn[0].clone(),tl=1;tl=ln.x&&as.x<=Qn.x&&fo.y>=ln.y&&as.y<=Qn.y?ps=[mn]:as.xQn.x||as.yQn.y?ps=[]:ps=i.clipLine([mn],ln.x,ln.y,Qn.x,Qn.y)}for(var zu=0,Mv=ps;zu=this.screenRightBoundary||$this.screenBottomBoundary},cl.prototype.isInsideGrid=function(z,K,O,$){return O>=0&&z=0&&K0){var Ar;return this.prevPlacement&&this.prevPlacement.variableOffsets[Jt.crossTileID]&&this.prevPlacement.placements[Jt.crossTileID]&&this.prevPlacement.placements[Jt.crossTileID].text&&(Ar=this.prevPlacement.variableOffsets[Jt.crossTileID].anchor),this.variableOffsets[Jt.crossTileID]={textOffset:rr,width:O,height:$,anchor:z,textBoxScale:pe,prevAnchor:Ar},this.markUsedJustification(vt,z,Jt,Pt),vt.allowVerticalPlacement&&(this.markUsedOrientation(vt,Pt,Jt),this.placedOrientations[Jt.crossTileID]=Pt),{shift:dr,placedGlyphBoxes:pr}}},ms.prototype.placeLayerBucketPart=function(z,K,O){var $=this,pe=z.parameters,de=pe.bucket,Ie=pe.layout,$e=pe.posMatrix,pt=pe.textLabelPlaneMatrix,Kt=pe.labelToScreenMatrix,ir=pe.textPixelRatio,Jt=pe.holdingForFade,vt=pe.collisionBoxArray,Pt=pe.partiallyEvaluatedTextSize,Wt=pe.collisionGroup,rr=Ie.get("text-optional"),dr=Ie.get("icon-optional"),pr=Ie.get("text-allow-overlap"),kr=Ie.get("icon-allow-overlap"),Ar=Ie.get("text-rotation-alignment")==="map",gr=Ie.get("text-pitch-alignment")==="map",Cr=Ie.get("icon-text-fit")!=="none",cr=Ie.get("symbol-z-order")==="viewport-y",Gr=pr&&(kr||!de.hasIconData()||dr),ei=kr&&(pr||!de.hasTextData()||rr);!de.collisionArrays&&vt&&de.deserializeCollisionBoxes(vt);var yi=function(rn,bn){if(!K[rn.crossTileID]){if(Jt){$.placements[rn.crossTileID]=new Hs(!1,!1,!1);return}var mn=!1,Gn=!1,da=!0,No=null,Do={box:null,offscreen:null},ps={box:null,offscreen:null},fo=null,as=null,tl=null,zu=0,Mv=0,Ev=0;bn.textFeatureIndex?zu=bn.textFeatureIndex:rn.useRuntimeCollisionCircles&&(zu=rn.featureIndex),bn.verticalTextFeatureIndex&&(Mv=bn.verticalTextFeatureIndex);var yd=bn.textBox;if(yd){var Yv=function(Fu){var kl=i.WritingMode.horizontal;if(de.allowVerticalPlacement&&!Fu&&$.prevPlacement){var bd=$.prevPlacement.placedOrientations[rn.crossTileID];bd&&($.placedOrientations[rn.crossTileID]=bd,kl=bd,$.markUsedOrientation(de,kl,rn))}return kl},cg=function(Fu,kl){if(de.allowVerticalPlacement&&rn.numVerticalGlyphVertices>0&&bn.verticalTextBox)for(var bd=0,sy=de.writingModes;bd0&&(Nd=Nd.filter(function(Fu){return Fu!==xd.anchor}),Nd.unshift(xd.anchor))}var kv=function(Fu,kl,bd){for(var sy=Fu.x2-Fu.x1,A1=Fu.y2-Fu.y1,Kl=rn.textBoxScale,Nx=Cr&&!kr?kl:null,am={box:[],offscreen:!1},Mw=pr?Nd.length*2:Nd.length,Lv=0;Lv=Nd.length,Ux=$.attemptAnchorPlacement(om,Fu,sy,A1,Kl,Ar,gr,ir,$e,Wt,Ew,rn,de,bd,Nx);if(Ux&&(am=Ux.placedGlyphBoxes,am&&am.box&&am.box.length)){mn=!0,No=Ux.shift;break}}return am},Kv=function(){return kv(yd,bn.iconBox,i.WritingMode.horizontal)},Cv=function(){var Fu=bn.verticalTextBox,kl=Do&&Do.box&&Do.box.length;return de.allowVerticalPlacement&&!kl&&rn.numVerticalGlyphVertices>0&&Fu?kv(Fu,bn.verticalIconBox,i.WritingMode.vertical):{box:null,offscreen:null}};cg(Kv,Cv),Do&&(mn=Do.box,da=Do.offscreen);var ny=Yv(Do&&Do.box);if(!mn&&$.prevPlacement){var fg=$.prevPlacement.variableOffsets[rn.crossTileID];fg&&($.variableOffsets[rn.crossTileID]=fg,$.markUsedJustification(de,fg.anchor,rn,ny))}}else{var vp=function(Fu,kl){var bd=$.collisionIndex.placeCollisionBox(Fu,pr,ir,$e,Wt.predicate);return bd&&bd.box&&bd.box.length&&($.markUsedOrientation(de,kl,rn),$.placedOrientations[rn.crossTileID]=kl),bd},_d=function(){return vp(yd,i.WritingMode.horizontal)},pp=function(){var Fu=bn.verticalTextBox;return de.allowVerticalPlacement&&rn.numVerticalGlyphVertices>0&&Fu?vp(Fu,i.WritingMode.vertical):{box:null,offscreen:null}};cg(_d,pp),Yv(Do&&Do.box&&Do.box.length)}}if(fo=Do,mn=fo&&fo.box&&fo.box.length>0,da=fo&&fo.offscreen,rn.useRuntimeCollisionCircles){var Hf=de.text.placedSymbolArray.get(rn.centerJustifiedTextSymbolIndex),hg=i.evaluateSizeForFeature(de.textSizeData,Pt,Hf),ay=Ie.get("text-padding"),Rh=rn.collisionCircleDiameter;as=$.collisionIndex.placeCollisionCircles(pr,Hf,de.lineVertexArray,de.glyphOffsetArray,hg,$e,pt,Kt,O,gr,Wt.predicate,Rh,ay),mn=pr||as.circles.length>0&&!as.collisionDetected,da=da&&as.offscreen}if(bn.iconFeatureIndex&&(Ev=bn.iconFeatureIndex),bn.iconBox){var rm=function(Fu){var kl=Cr&&No?fc(Fu,No.x,No.y,Ar,gr,$.transform.angle):Fu;return $.collisionIndex.placeCollisionBox(kl,kr,ir,$e,Wt.predicate)};ps&&ps.box&&ps.box.length&&bn.verticalIconBox?(tl=rm(bn.verticalIconBox),Gn=tl.box.length>0):(tl=rm(bn.iconBox),Gn=tl.box.length>0),da=da&&tl.offscreen}var w1=rr||rn.numHorizontalGlyphVertices===0&&rn.numVerticalGlyphVertices===0,T1=dr||rn.numIconVertices===0;if(!w1&&!T1?Gn=mn=Gn&&mn:T1?w1||(Gn=Gn&&mn):mn=Gn&&mn,mn&&fo&&fo.box&&(ps&&ps.box&&Mv?$.collisionIndex.insertCollisionBox(fo.box,Ie.get("text-ignore-placement"),de.bucketInstanceId,Mv,Wt.ID):$.collisionIndex.insertCollisionBox(fo.box,Ie.get("text-ignore-placement"),de.bucketInstanceId,zu,Wt.ID)),Gn&&tl&&$.collisionIndex.insertCollisionBox(tl.box,Ie.get("icon-ignore-placement"),de.bucketInstanceId,Ev,Wt.ID),as&&(mn&&$.collisionIndex.insertCollisionCircles(as.circles,Ie.get("text-ignore-placement"),de.bucketInstanceId,zu,Wt.ID),O)){var oy=de.bucketInstanceId,im=$.collisionCircleArrays[oy];im===void 0&&(im=$.collisionCircleArrays[oy]=new Eo);for(var nm=0;nm=0;--Ri){var ln=tn[Ri];yi(de.symbolInstances.get(ln),de.collisionArrays[ln])}else for(var Qn=z.symbolInstanceStart;Qn=0&&(de>=0&&Kt!==de?z.text.placedSymbolArray.get(Kt).crossTileID=0:z.text.placedSymbolArray.get(Kt).crossTileID=O.crossTileID)}},ms.prototype.markUsedOrientation=function(z,K,O){for(var $=K===i.WritingMode.horizontal||K===i.WritingMode.horizontalOnly?K:0,pe=K===i.WritingMode.vertical?K:0,de=[O.leftJustifiedTextSymbolIndex,O.centerJustifiedTextSymbolIndex,O.rightJustifiedTextSymbolIndex],Ie=0,$e=de;Ie<$e.length;Ie+=1){var pt=$e[Ie];z.text.placedSymbolArray.get(pt).placedOrientation=$}O.verticalPlacedTextSymbolIndex&&(z.text.placedSymbolArray.get(O.verticalPlacedTextSymbolIndex).placedOrientation=pe)},ms.prototype.commit=function(z){this.commitTime=z,this.zoomAtLastRecencyCheck=this.transform.zoom;var K=this.prevPlacement,O=!1;this.prevZoomAdjustment=K?K.zoomAdjustment(this.transform.zoom):0;var $=K?K.symbolFadeChange(z):1,pe=K?K.opacities:{},de=K?K.variableOffsets:{},Ie=K?K.placedOrientations:{};for(var $e in this.placements){var pt=this.placements[$e],Kt=pe[$e];Kt?(this.opacities[$e]=new Ys(Kt,$,pt.text,pt.icon),O=O||pt.text!==Kt.text.placed||pt.icon!==Kt.icon.placed):(this.opacities[$e]=new Ys(null,$,pt.text,pt.icon,pt.skipFade),O=O||pt.text||pt.icon)}for(var ir in pe){var Jt=pe[ir];if(!this.opacities[ir]){var vt=new Ys(Jt,$,!1,!1);vt.isHidden()||(this.opacities[ir]=vt,O=O||Jt.text.placed||Jt.icon.placed)}}for(var Pt in de)!this.variableOffsets[Pt]&&this.opacities[Pt]&&!this.opacities[Pt].isHidden()&&(this.variableOffsets[Pt]=de[Pt]);for(var Wt in Ie)!this.placedOrientations[Wt]&&this.opacities[Wt]&&!this.opacities[Wt].isHidden()&&(this.placedOrientations[Wt]=Ie[Wt]);O?this.lastPlacementChangeTime=z:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=K?K.lastPlacementChangeTime:z)},ms.prototype.updateLayerOpacities=function(z,K){for(var O={},$=0,pe=K;$0||gr>0,yi=kr.numIconVertices>0,tn=$.placedOrientations[kr.crossTileID],Ri=tn===i.WritingMode.vertical,ln=tn===i.WritingMode.horizontal||tn===i.WritingMode.horizontalOnly;if(ei){var Qn=Ec(Gr.text),qn=Ri?Zn:Qn;Pt(z.text,Ar,qn);var rn=ln?Zn:Qn;Pt(z.text,gr,rn);var bn=Gr.text.isHidden();[kr.rightJustifiedTextSymbolIndex,kr.centerJustifiedTextSymbolIndex,kr.leftJustifiedTextSymbolIndex].forEach(function(Ev){Ev>=0&&(z.text.placedSymbolArray.get(Ev).hidden=bn||Ri?1:0)}),kr.verticalPlacedTextSymbolIndex>=0&&(z.text.placedSymbolArray.get(kr.verticalPlacedTextSymbolIndex).hidden=bn||ln?1:0);var mn=$.variableOffsets[kr.crossTileID];mn&&$.markUsedJustification(z,mn.anchor,kr,tn);var Gn=$.placedOrientations[kr.crossTileID];Gn&&($.markUsedJustification(z,"left",kr,Gn),$.markUsedOrientation(z,Gn,kr))}if(yi){var da=Ec(Gr.icon),No=!(Jt&&kr.verticalPlacedIconSymbolIndex&&Ri);if(kr.placedIconSymbolIndex>=0){var Do=No?da:Zn;Pt(z.icon,kr.numIconVertices,Do),z.icon.placedSymbolArray.get(kr.placedIconSymbolIndex).hidden=Gr.icon.isHidden()}if(kr.verticalPlacedIconSymbolIndex>=0){var ps=No?Zn:da;Pt(z.icon,kr.numVerticalIconVertices,ps),z.icon.placedSymbolArray.get(kr.verticalPlacedIconSymbolIndex).hidden=Gr.icon.isHidden()}}if(z.hasIconCollisionBoxData()||z.hasTextCollisionBoxData()){var fo=z.collisionArrays[pr];if(fo){var as=new i.Point(0,0);if(fo.textBox||fo.verticalTextBox){var tl=!0;if(pt){var zu=$.variableOffsets[Cr];zu?(as=Hu(zu.anchor,zu.width,zu.height,zu.textOffset,zu.textBoxScale),Kt&&as._rotate(ir?$.transform.angle:-$.transform.angle)):tl=!1}fo.textBox&&on(z.textCollisionBox.collisionVertexArray,Gr.text.placed,!tl||Ri,as.x,as.y),fo.verticalTextBox&&on(z.textCollisionBox.collisionVertexArray,Gr.text.placed,!tl||ln,as.x,as.y)}var Mv=!!(!ln&&fo.verticalIconBox);fo.iconBox&&on(z.iconCollisionBox.collisionVertexArray,Gr.icon.placed,Mv,Jt?as.x:0,Jt?as.y:0),fo.verticalIconBox&&on(z.iconCollisionBox.collisionVertexArray,Gr.icon.placed,!Mv,Jt?as.x:0,Jt?as.y:0)}}},rr=0;rrz},ms.prototype.setStale=function(){this.stale=!0};function on(Y,z,K,O,$){Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0)}var fa=Math.pow(2,25),Qu=Math.pow(2,24),Rl=Math.pow(2,17),vo=Math.pow(2,16),Zl=Math.pow(2,9),Ks=Math.pow(2,8),Xl=Math.pow(2,1);function Ec(Y){if(Y.opacity===0&&!Y.placed)return 0;if(Y.opacity===1&&Y.placed)return 4294967295;var z=Y.placed?1:0,K=Math.floor(Y.opacity*127);return K*fa+z*Qu+K*Rl+z*vo+K*Zl+z*Ks+K*Xl+z}var Zn=0,ko=function(z){this._sortAcrossTiles=z.layout.get("symbol-z-order")!=="viewport-y"&&z.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};ko.prototype.continuePlacement=function(z,K,O,$,pe){for(var de=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var Ie=z[this._currentPlacementIndex],$e=K[Ie],pt=this.placement.collisionIndex.transform.zoom;if($e.type==="symbol"&&(!$e.minzoom||$e.minzoom<=pt)&&(!$e.maxzoom||$e.maxzoom>pt)){this._inProgressLayer||(this._inProgressLayer=new ko($e));var Kt=this._inProgressLayer.continuePlacement(O[$e.source],this.placement,this._showCollisionBoxes,$e,de);if(Kt)return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},Co.prototype.commit=function(z){return this.placement.commit(z),this.placement};var Tl=512/i.EXTENT/2,uf=function(z,K,O){this.tileID=z,this.indexedSymbolInstances={},this.bucketInstanceId=O;for(var $=0;$z.overscaledZ)for(var pt in $e){var Kt=$e[pt];Kt.tileID.isChildOf(z)&&Kt.findMatches(K.symbolInstances,z,de)}else{var ir=z.scaledTo(Number(Ie)),Jt=$e[ir.key];Jt&&Jt.findMatches(K.symbolInstances,z,de)}}for(var vt=0;vt0)throw new Error("Unimplemented: "+de.map(function(Ie){return Ie.command}).join(", ")+".");return pe.forEach(function(Ie){Ie.command!=="setTransition"&&$[Ie.command].apply($,Ie.args)}),this.stylesheet=O,!0},z.prototype.addImage=function(O,$){if(this.getImage(O))return this.fire(new i.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(O,$),this._afterImageUpdated(O)},z.prototype.updateImage=function(O,$){this.imageManager.updateImage(O,$)},z.prototype.getImage=function(O){return this.imageManager.getImage(O)},z.prototype.removeImage=function(O){if(!this.getImage(O))return this.fire(new i.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(O),this._afterImageUpdated(O)},z.prototype._afterImageUpdated=function(O){this._availableImages=this.imageManager.listImages(),this._changedImages[O]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new i.Event("data",{dataType:"style"}))},z.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},z.prototype.addSource=function(O,$,pe){var de=this;if(pe===void 0&&(pe={}),this._checkLoaded(),this.sourceCaches[O]!==void 0)throw new Error("There is already a source with this ID");if(!$.type)throw new Error("The type property must be defined, but only the following properties were given: "+Object.keys($).join(", ")+".");var Ie=["vector","raster","geojson","video","image"],$e=Ie.indexOf($.type)>=0;if(!($e&&this._validate(i.validateStyle.source,"sources."+O,$,null,pe))){this.map&&this.map._collectResourceTiming&&($.collectResourceTiming=!0);var pt=this.sourceCaches[O]=new Zr(O,$,this.dispatcher);pt.style=this,pt.setEventedParent(this,function(){return{isSourceLoaded:de.loaded(),source:pt.serialize(),sourceId:O}}),pt.onAdd(this.map),this._changed=!0}},z.prototype.removeSource=function(O){if(this._checkLoaded(),this.sourceCaches[O]===void 0)throw new Error("There is no source with this ID");for(var $ in this._layers)if(this._layers[$].source===O)return this.fire(new i.ErrorEvent(new Error('Source "'+O+'" cannot be removed while layer "'+$+'" is using it.')));var pe=this.sourceCaches[O];delete this.sourceCaches[O],delete this._updatedSources[O],pe.fire(new i.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:O})),pe.setEventedParent(null),pe.clearTiles(),pe.onRemove&&pe.onRemove(this.map),this._changed=!0},z.prototype.setGeoJSONSourceData=function(O,$){this._checkLoaded();var pe=this.sourceCaches[O].getSource();pe.setData($),this._changed=!0},z.prototype.getSource=function(O){return this.sourceCaches[O]&&this.sourceCaches[O].getSource()},z.prototype.addLayer=function(O,$,pe){pe===void 0&&(pe={}),this._checkLoaded();var de=O.id;if(this.getLayer(de)){this.fire(new i.ErrorEvent(new Error('Layer with id "'+de+'" already exists on this map')));return}var Ie;if(O.type==="custom"){if(Al(this,i.validateCustomStyleLayer(O)))return;Ie=i.createStyleLayer(O)}else{if(typeof O.source=="object"&&(this.addSource(de,O.source),O=i.clone$1(O),O=i.extend(O,{source:de})),this._validate(i.validateStyle.layer,"layers."+de,O,{arrayIndex:-1},pe))return;Ie=i.createStyleLayer(O),this._validateLayer(Ie),Ie.setEventedParent(this,{layer:{id:de}}),this._serializedLayers[Ie.id]=Ie.serialize()}var $e=$?this._order.indexOf($):this._order.length;if($&&$e===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+$+'" does not exist on this map.')));return}if(this._order.splice($e,0,de),this._layerOrderChanged=!0,this._layers[de]=Ie,this._removedLayers[de]&&Ie.source&&Ie.type!=="custom"){var pt=this._removedLayers[de];delete this._removedLayers[de],pt.type!==Ie.type?this._updatedSources[Ie.source]="clear":(this._updatedSources[Ie.source]="reload",this.sourceCaches[Ie.source].pause())}this._updateLayer(Ie),Ie.onAdd&&Ie.onAdd(this.map)},z.prototype.moveLayer=function(O,$){this._checkLoaded(),this._changed=!0;var pe=this._layers[O];if(!pe){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be moved.")));return}if(O!==$){var de=this._order.indexOf(O);this._order.splice(de,1);var Ie=$?this._order.indexOf($):this._order.length;if($&&Ie===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+$+'" does not exist on this map.')));return}this._order.splice(Ie,0,O),this._layerOrderChanged=!0}},z.prototype.removeLayer=function(O){this._checkLoaded();var $=this._layers[O];if(!$){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be removed.")));return}$.setEventedParent(null);var pe=this._order.indexOf(O);this._order.splice(pe,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[O]=$,delete this._layers[O],delete this._serializedLayers[O],delete this._updatedLayers[O],delete this._updatedPaintProps[O],$.onRemove&&$.onRemove(this.map)},z.prototype.getLayer=function(O){return this._layers[O]},z.prototype.hasLayer=function(O){return O in this._layers},z.prototype.setLayerZoomRange=function(O,$,pe){this._checkLoaded();var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot have zoom extent.")));return}de.minzoom===$&&de.maxzoom===pe||($!=null&&(de.minzoom=$),pe!=null&&(de.maxzoom=pe),this._updateLayer(de))},z.prototype.setFilter=function(O,$,pe){pe===void 0&&(pe={}),this._checkLoaded();var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be filtered.")));return}if(!i.deepEqual(de.filter,$)){if($==null){de.filter=void 0,this._updateLayer(de);return}this._validate(i.validateStyle.filter,"layers."+de.id+".filter",$,null,pe)||(de.filter=i.clone$1($),this._updateLayer(de))}},z.prototype.getFilter=function(O){return i.clone$1(this.getLayer(O).filter)},z.prototype.setLayoutProperty=function(O,$,pe,de){de===void 0&&(de={}),this._checkLoaded();var Ie=this.getLayer(O);if(!Ie){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}i.deepEqual(Ie.getLayoutProperty($),pe)||(Ie.setLayoutProperty($,pe,de),this._updateLayer(Ie))},z.prototype.getLayoutProperty=function(O,$){var pe=this.getLayer(O);if(!pe){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style.")));return}return pe.getLayoutProperty($)},z.prototype.setPaintProperty=function(O,$,pe,de){de===void 0&&(de={}),this._checkLoaded();var Ie=this.getLayer(O);if(!Ie){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}if(!i.deepEqual(Ie.getPaintProperty($),pe)){var $e=Ie.setPaintProperty($,pe,de);$e&&this._updateLayer(Ie),this._changed=!0,this._updatedPaintProps[O]=!0}},z.prototype.getPaintProperty=function(O,$){return this.getLayer(O).getPaintProperty($)},z.prototype.setFeatureState=function(O,$){this._checkLoaded();var pe=O.source,de=O.sourceLayer,Ie=this.sourceCaches[pe];if(Ie===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+pe+"' does not exist in the map's style.")));return}var $e=Ie.getSource().type;if($e==="geojson"&&de){this.fire(new i.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));return}if($e==="vector"&&!de){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),Ie.setFeatureState(de,O.id,$)},z.prototype.removeFeatureState=function(O,$){this._checkLoaded();var pe=O.source,de=this.sourceCaches[pe];if(de===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+pe+"' does not exist in the map's style.")));return}var Ie=de.getSource().type,$e=Ie==="vector"?O.sourceLayer:void 0;if(Ie==="vector"&&!$e){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}if($&&typeof O.id!="string"&&typeof O.id!="number"){this.fire(new i.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));return}de.removeFeatureState($e,O.id,$)},z.prototype.getFeatureState=function(O){this._checkLoaded();var $=O.source,pe=O.sourceLayer,de=this.sourceCaches[$];if(de===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+$+"' does not exist in the map's style.")));return}var Ie=de.getSource().type;if(Ie==="vector"&&!pe){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}return O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),de.getFeatureState(pe,O.id)},z.prototype.getTransition=function(){return i.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},z.prototype.serialize=function(){return i.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:i.mapObject(this.sourceCaches,function(O){return O.serialize()}),layers:this._serializeLayers(this._order)},function(O){return O!==void 0})},z.prototype._updateLayer=function(O){this._updatedLayers[O.id]=!0,O.source&&!this._updatedSources[O.source]&&this.sourceCaches[O.source].getSource().type!=="raster"&&(this._updatedSources[O.source]="reload",this.sourceCaches[O.source].pause()),this._changed=!0},z.prototype._flattenAndSortRenderedFeatures=function(O){for(var $=this,pe=function(ln){return $._layers[ln].type==="fill-extrusion"},de={},Ie=[],$e=this._order.length-1;$e>=0;$e--){var pt=this._order[$e];if(pe(pt)){de[pt]=$e;for(var Kt=0,ir=O;Kt=0;pr--){var kr=this._order[pr];if(pe(kr))for(var Ar=Ie.length-1;Ar>=0;Ar--){var gr=Ie[Ar].feature;if(de[gr.layer.id] 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`,eu=Is(Of,Gc),Pu=Is(vd,Bf),Lc=Is(ss,ff),fl=Is(ih,Ul),Xc=Is(Js,hc),ic=Is(Cc,ws),yu=Is($s,hs),Qs=Is(Ms,dc),Qh=Is(Sl,ec),gd=Is(Ps,ov),Gu=Is(wo,Od),Pc=Is($o,Ja),vc=Is(Ef,tc),sv=Is(uu,Mh),Lf=Is(jc,kf),Uf=Is(Ml,Yh),Iu=Is(Eh,nh),oh=Is(hf,kh),tu=Is(Kh,rc),vf=Is(ah,Wc),md=Is(df,Cu),sh=Is(Nf,Zc),Fs=Is(ds,Ch),_u=Is(Bd,Jh),xu=Is(Cf,pd),Lh=Is(Lu,$h);function Is(Y,z){var K=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,O=z.match(/attribute ([\w]+) ([\w]+)/g),$=Y.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),pe=z.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),de=pe?pe.concat($):$,Ie={};return Y=Y.replace(K,function($e,pt,Kt,ir,Jt){return Ie[Jt]=!0,pt==="define"?` +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`,tu=Is(Of,Gc),Pu=Is(vd,Bf),Lc=Is(ss,ff),fl=Is(ih,Vl),Xc=Is(Js,hc),ic=Is(Cc,ws),yu=Is($s,hs),Qs=Is(Ms,dc),Qh=Is(Sl,ec),gd=Is(Ps,ov),Gu=Is(wo,Od),Pc=Is($o,Ja),vc=Is(Ef,tc),sv=Is(uu,Mh),Lf=Is(jc,kf),Uf=Is(Ml,Yh),Iu=Is(Eh,nh),oh=Is(hf,kh),ru=Is(Kh,rc),vf=Is(ah,Wc),md=Is(df,Cu),sh=Is(Nf,Zc),Fs=Is(ds,Ch),_u=Is(Bd,Jh),xu=Is(Cf,pd),Lh=Is(Lu,$h);function Is(Y,z){var K=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,O=z.match(/attribute ([\w]+) ([\w]+)/g),$=Y.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),pe=z.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),de=pe?pe.concat($):$,Ie={};return Y=Y.replace(K,function($e,pt,Kt,ir,Jt){return Ie[Jt]=!0,pt==="define"?` #ifndef HAS_UNIFORM_u_`+Jt+` varying `+Kt+" "+ir+" "+Jt+`; #else @@ -3206,9 +3206,9 @@ uniform `+Kt+" "+ir+" u_"+Jt+`; #else `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; #endif -`}),{fragmentSource:Y,vertexSource:z,staticAttributes:O,staticUniforms:de}}var Pf=Object.freeze({__proto__:null,prelude:eu,background:Pu,backgroundPattern:Lc,circle:fl,clippingMask:Xc,heatmap:ic,heatmapTexture:yu,collisionBox:Qs,collisionCircle:Qh,debug:gd,fill:Gu,fillOutline:Pc,fillOutlinePattern:vc,fillPattern:sv,fillExtrusion:Lf,fillExtrusionPattern:Uf,hillshadePrepare:Iu,hillshade:oh,line:tu,lineGradient:vf,linePattern:md,lineSDF:sh,raster:Fs,symbolIcon:_u,symbolSDF:xu,symbolTextAndIcon:Lh}),Ic=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};Ic.prototype.bind=function(z,K,O,$,pe,de,Ie,$e){this.context=z;for(var pt=this.boundPaintVertexBuffers.length!==$.length,Kt=0;!pt&&Kt<$.length;Kt++)this.boundPaintVertexBuffers[Kt]!==$[Kt]&&(pt=!0);var ir=!this.vao||this.boundProgram!==K||this.boundLayoutVertexBuffer!==O||pt||this.boundIndexBuffer!==pe||this.boundVertexOffset!==de||this.boundDynamicVertexBuffer!==Ie||this.boundDynamicVertexBuffer2!==$e;!z.extVertexArrayObject||ir?this.freshBind(K,O,$,pe,de,Ie,$e):(z.bindVertexArrayOES.set(this.vao),Ie&&Ie.bind(),pe&&pe.dynamicDraw&&pe.bind(),$e&&$e.bind())},Ic.prototype.freshBind=function(z,K,O,$,pe,de,Ie){var $e,pt=z.numAttributes,Kt=this.context,ir=Kt.gl;if(Kt.extVertexArrayObject)this.vao&&this.destroy(),this.vao=Kt.extVertexArrayObject.createVertexArrayOES(),Kt.bindVertexArrayOES.set(this.vao),$e=0,this.boundProgram=z,this.boundLayoutVertexBuffer=K,this.boundPaintVertexBuffers=O,this.boundIndexBuffer=$,this.boundVertexOffset=pe,this.boundDynamicVertexBuffer=de,this.boundDynamicVertexBuffer2=Ie;else{$e=Kt.currentNumAttributes||0;for(var Jt=pt;Jt<$e;Jt++)ir.disableVertexAttribArray(Jt)}K.enableAttributes(ir,z);for(var vt=0,Pt=O;vt>16,Ie>>16],u_pixel_coord_lower:[de&65535,Ie&65535]}}function pf(Y,z,K,O){var $=K.imageManager.getPattern(Y.from.toString()),pe=K.imageManager.getPattern(Y.to.toString()),de=K.imageManager.getPixelSize(),Ie=de.width,$e=de.height,pt=Math.pow(2,O.tileID.overscaledZ),Kt=O.tileSize*Math.pow(2,K.transform.tileZoom)/pt,ir=Kt*(O.tileID.canonical.x+O.tileID.wrap*pt),Jt=Kt*O.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:$.tl,u_pattern_br_a:$.br,u_pattern_tl_b:pe.tl,u_pattern_br_b:pe.br,u_texsize:[Ie,$e],u_mix:z.t,u_pattern_size_a:$.displaySize,u_pattern_size_b:pe.displaySize,u_scale_a:z.fromScale,u_scale_b:z.toScale,u_tile_units_to_pixels:1/Cs(O,1,K.transform.tileZoom),u_pixel_coord_upper:[ir>>16,Jt>>16],u_pixel_coord_lower:[ir&65535,Jt&65535]}}var Ph=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_lightpos:new i.Uniform3f(Y,z.u_lightpos),u_lightintensity:new i.Uniform1f(Y,z.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,z.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,z.u_vertical_gradient),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Rl=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_lightpos:new i.Uniform3f(Y,z.u_lightpos),u_lightintensity:new i.Uniform1f(Y,z.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,z.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,z.u_vertical_gradient),u_height_factor:new i.Uniform1f(Y,z.u_height_factor),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Ih=function(Y,z,K,O){var $=z.style.light,pe=$.properties.get("position"),de=[pe.x,pe.y,pe.z],Ie=i.create$1();$.properties.get("anchor")==="viewport"&&i.fromRotation(Ie,-z.transform.angle),i.transformMat3(de,de,Ie);var $e=$.properties.get("color");return{u_matrix:Y,u_lightpos:de,u_lightintensity:$.properties.get("intensity"),u_lightcolor:[$e.r,$e.g,$e.b],u_vertical_gradient:+K,u_opacity:O}},Wu=function(Y,z,K,O,$,pe,de){return i.extend(Ih(Y,z,K,O),pc(pe,z,de),{u_height_factor:-Math.pow(2,$.overscaledZ)/de.tileSize/8})},Rc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},gc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},hl=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world)}},ru=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},mc=function(Y){return{u_matrix:Y}},Yc=function(Y,z,K,O){return i.extend(mc(Y),pc(K,z,O))},nc=function(Y,z){return{u_matrix:Y,u_world:z}},gf=function(Y,z,K,O,$){return i.extend(Yc(Y,z,K,O),{u_world:$})},gt=function(Y,z){return{u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_scale_with_map:new i.Uniform1i(Y,z.u_scale_with_map),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_extrude_scale:new i.Uniform2f(Y,z.u_extrude_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},Bt=function(Y,z,K,O){var $=Y.transform,pe,de;if(O.paint.get("circle-pitch-alignment")==="map"){var Ie=Cs(K,1,$.zoom);pe=!0,de=[Ie,Ie]}else pe=!1,de=$.pixelsToGLUnits;return{u_camera_to_center_distance:$.cameraToCenterDistance,u_scale_with_map:+(O.paint.get("circle-pitch-scale")==="map"),u_matrix:Y.translatePosMatrix(z.posMatrix,K,O.paint.get("circle-translate"),O.paint.get("circle-translate-anchor")),u_pitch_with_map:+pe,u_device_pixel_ratio:i.browser.devicePixelRatio,u_extrude_scale:de}},wr=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pixels_to_tile_units:new i.Uniform1f(Y,z.u_pixels_to_tile_units),u_extrude_scale:new i.Uniform2f(Y,z.u_extrude_scale),u_overscale_factor:new i.Uniform1f(Y,z.u_overscale_factor)}},vr=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_inv_matrix:new i.UniformMatrix4f(Y,z.u_inv_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_viewport_size:new i.Uniform2f(Y,z.u_viewport_size)}},Ur=function(Y,z,K){var O=Cs(K,1,z.zoom),$=Math.pow(2,z.zoom-K.tileID.overscaledZ),pe=K.tileID.overscaleFactor();return{u_matrix:Y,u_camera_to_center_distance:z.cameraToCenterDistance,u_pixels_to_tile_units:O,u_extrude_scale:[z.pixelsToGLUnits[0]/(O*$),z.pixelsToGLUnits[1]/(O*$)],u_overscale_factor:pe}},fi=function(Y,z,K){return{u_matrix:Y,u_inv_matrix:z,u_camera_to_center_distance:K.cameraToCenterDistance,u_viewport_size:[K.width,K.height]}},xi=function(Y,z){return{u_color:new i.UniformColor(Y,z.u_color),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_overlay:new i.Uniform1i(Y,z.u_overlay),u_overlay_scale:new i.Uniform1f(Y,z.u_overlay_scale)}},Fi=function(Y,z,K){return K===void 0&&(K=1),{u_matrix:Y,u_color:z,u_overlay:0,u_overlay_scale:K}},Xi=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},hn=function(Y){return{u_matrix:Y}},Ti=function(Y,z){return{u_extrude_scale:new i.Uniform1f(Y,z.u_extrude_scale),u_intensity:new i.Uniform1f(Y,z.u_intensity),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},qi=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world),u_image:new i.Uniform1i(Y,z.u_image),u_color_ramp:new i.Uniform1i(Y,z.u_color_ramp),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Ii=function(Y,z,K,O){return{u_matrix:Y,u_extrude_scale:Cs(z,1,K),u_intensity:O}},mi=function(Y,z,K,O){var $=i.create();i.ortho($,0,Y.width,Y.height,0,0,1);var pe=Y.context.gl;return{u_matrix:$,u_world:[pe.drawingBufferWidth,pe.drawingBufferHeight],u_image:K,u_color_ramp:O,u_opacity:z.paint.get("heatmap-opacity")}},Pn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_latrange:new i.Uniform2f(Y,z.u_latrange),u_light:new i.Uniform2f(Y,z.u_light),u_shadow:new i.UniformColor(Y,z.u_shadow),u_highlight:new i.UniformColor(Y,z.u_highlight),u_accent:new i.UniformColor(Y,z.u_accent)}},Ma=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_dimension:new i.Uniform2f(Y,z.u_dimension),u_zoom:new i.Uniform1f(Y,z.u_zoom),u_unpack:new i.Uniform4f(Y,z.u_unpack)}},Ta=function(Y,z,K){var O=K.paint.get("hillshade-shadow-color"),$=K.paint.get("hillshade-highlight-color"),pe=K.paint.get("hillshade-accent-color"),de=K.paint.get("hillshade-illumination-direction")*(Math.PI/180);K.paint.get("hillshade-illumination-anchor")==="viewport"&&(de-=Y.transform.angle);var Ie=!Y.options.moving;return{u_matrix:Y.transform.calculatePosMatrix(z.tileID.toUnwrapped(),Ie),u_image:0,u_latrange:qa(Y,z.tileID),u_light:[K.paint.get("hillshade-exaggeration"),de],u_shadow:O,u_highlight:$,u_accent:pe}},Ea=function(Y,z){var K=z.stride,O=i.create();return i.ortho(O,0,i.EXTENT,-i.EXTENT,0,0,1),i.translate(O,O,[0,-i.EXTENT,0]),{u_matrix:O,u_image:1,u_dimension:[K,K],u_zoom:Y.overscaledZ,u_unpack:z.getUnpackVector()}};function qa(Y,z){var K=Math.pow(2,z.canonical.z),O=z.canonical.y;return[new i.MercatorCoordinate(0,O/K).toLngLat().lat,new i.MercatorCoordinate(0,(O+1)/K).toLngLat().lat]}var Cn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels)}},sn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_image:new i.Uniform1i(Y,z.u_image),u_image_height:new i.Uniform1f(Y,z.u_image_height)}},Ua=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_image:new i.Uniform1i(Y,z.u_image),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},mo=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_patternscale_a:new i.Uniform2f(Y,z.u_patternscale_a),u_patternscale_b:new i.Uniform2f(Y,z.u_patternscale_b),u_sdfgamma:new i.Uniform1f(Y,z.u_sdfgamma),u_image:new i.Uniform1i(Y,z.u_image),u_tex_y_a:new i.Uniform1f(Y,z.u_tex_y_a),u_tex_y_b:new i.Uniform1f(Y,z.u_tex_y_b),u_mix:new i.Uniform1f(Y,z.u_mix)}},Xo=function(Y,z,K){var O=Y.transform;return{u_matrix:yl(Y,z,K),u_ratio:1/Cs(z,1,O.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_units_to_pixels:[1/O.pixelsToGLUnits[0],1/O.pixelsToGLUnits[1]]}},Ts=function(Y,z,K,O){return i.extend(Xo(Y,z,K),{u_image:0,u_image_height:O})},Qo=function(Y,z,K,O){var $=Y.transform,pe=Bo(z,$);return{u_matrix:yl(Y,z,K),u_texsize:z.imageAtlasTexture.size,u_ratio:1/Cs(z,1,$.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_image:0,u_scale:[pe,O.fromScale,O.toScale],u_fade:O.t,u_units_to_pixels:[1/$.pixelsToGLUnits[0],1/$.pixelsToGLUnits[1]]}},ys=function(Y,z,K,O,$){var pe=Y.transform,de=Y.lineAtlas,Ie=Bo(z,pe),$e=K.layout.get("line-cap")==="round",pt=de.getDash(O.from,$e),Kt=de.getDash(O.to,$e),ir=pt.width*$.fromScale,Jt=Kt.width*$.toScale;return i.extend(Xo(Y,z,K),{u_patternscale_a:[Ie/ir,-pt.height/2],u_patternscale_b:[Ie/Jt,-Kt.height/2],u_sdfgamma:de.width/(Math.min(ir,Jt)*256*i.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:pt.y,u_tex_y_b:Kt.y,u_mix:$.t})};function Bo(Y,z){return 1/Cs(Y,1,z.tileZoom)}function yl(Y,z,K){return Y.translatePosMatrix(z.tileID.posMatrix,z,K.paint.get("line-translate"),K.paint.get("line-translate-anchor"))}var Gs=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_tl_parent:new i.Uniform2f(Y,z.u_tl_parent),u_scale_parent:new i.Uniform1f(Y,z.u_scale_parent),u_buffer_scale:new i.Uniform1f(Y,z.u_buffer_scale),u_fade_t:new i.Uniform1f(Y,z.u_fade_t),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_image0:new i.Uniform1i(Y,z.u_image0),u_image1:new i.Uniform1i(Y,z.u_image1),u_brightness_low:new i.Uniform1f(Y,z.u_brightness_low),u_brightness_high:new i.Uniform1f(Y,z.u_brightness_high),u_saturation_factor:new i.Uniform1f(Y,z.u_saturation_factor),u_contrast_factor:new i.Uniform1f(Y,z.u_contrast_factor),u_spin_weights:new i.Uniform3f(Y,z.u_spin_weights)}},Rs=function(Y,z,K,O,$){return{u_matrix:Y,u_tl_parent:z,u_scale_parent:K,u_buffer_scale:1,u_fade_t:O.mix,u_opacity:O.opacity*$.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:$.paint.get("raster-brightness-min"),u_brightness_high:$.paint.get("raster-brightness-max"),u_saturation_factor:vs($.paint.get("raster-saturation")),u_contrast_factor:Ka($.paint.get("raster-contrast")),u_spin_weights:ia($.paint.get("raster-hue-rotate"))}};function ia(Y){Y*=Math.PI/180;var z=Math.sin(Y),K=Math.cos(Y);return[(2*K+1)/3,(-Math.sqrt(3)*z-K+1)/3,(Math.sqrt(3)*z-K+1)/3]}function Ka(Y){return Y>0?1/(1-Y):1+Y}function vs(Y){return Y>0?1-1/(1.001-Y):-Y}var Ko=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texture:new i.Uniform1i(Y,z.u_texture)}},iu=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texture:new i.Uniform1i(Y,z.u_texture),u_gamma_scale:new i.Uniform1f(Y,z.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,z.u_is_halo)}},Ru=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texsize_icon:new i.Uniform2f(Y,z.u_texsize_icon),u_texture:new i.Uniform1i(Y,z.u_texture),u_texture_icon:new i.Uniform1i(Y,z.u_texture_icon),u_gamma_scale:new i.Uniform1f(Y,z.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,z.u_is_halo)}},ac=function(Y,z,K,O,$,pe,de,Ie,$e,pt){var Kt=$.transform;return{u_is_size_zoom_constant:+(Y==="constant"||Y==="source"),u_is_size_feature_constant:+(Y==="constant"||Y==="camera"),u_size_t:z?z.uSizeT:0,u_size:z?z.uSize:0,u_camera_to_center_distance:Kt.cameraToCenterDistance,u_pitch:Kt.pitch/360*2*Math.PI,u_rotate_symbol:+K,u_aspect_ratio:Kt.width/Kt.height,u_fade_change:$.options.fadeDuration?$.symbolFadeChange:1,u_matrix:pe,u_label_plane_matrix:de,u_coord_matrix:Ie,u_is_text:+$e,u_pitch_with_map:+O,u_texsize:pt,u_texture:0}},mf=function(Y,z,K,O,$,pe,de,Ie,$e,pt,Kt){var ir=$.transform;return i.extend(ac(Y,z,K,O,$,pe,de,Ie,$e,pt),{u_gamma_scale:O?Math.cos(ir._pitch)*ir.cameraToCenterDistance:1,u_device_pixel_ratio:i.browser.devicePixelRatio,u_is_halo:+Kt})},bu=function(Y,z,K,O,$,pe,de,Ie,$e,pt){return i.extend(mf(Y,z,K,O,$,pe,de,Ie,!0,$e,!0),{u_texsize_icon:pt,u_texture_icon:1})},Kc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_color:new i.UniformColor(Y,z.u_color)}},Du=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_image:new i.Uniform1i(Y,z.u_image),u_pattern_tl_a:new i.Uniform2f(Y,z.u_pattern_tl_a),u_pattern_br_a:new i.Uniform2f(Y,z.u_pattern_br_a),u_pattern_tl_b:new i.Uniform2f(Y,z.u_pattern_tl_b),u_pattern_br_b:new i.Uniform2f(Y,z.u_pattern_br_b),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_mix:new i.Uniform1f(Y,z.u_mix),u_pattern_size_a:new i.Uniform2f(Y,z.u_pattern_size_a),u_pattern_size_b:new i.Uniform2f(Y,z.u_pattern_size_b),u_scale_a:new i.Uniform1f(Y,z.u_scale_a),u_scale_b:new i.Uniform1f(Y,z.u_scale_b),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_tile_units_to_pixels:new i.Uniform1f(Y,z.u_tile_units_to_pixels)}},Dc=function(Y,z,K){return{u_matrix:Y,u_opacity:z,u_color:K}},Da=function(Y,z,K,O,$,pe){return i.extend(pf(O,pe,K,$),{u_matrix:Y,u_opacity:z})},eo={fillExtrusion:Ph,fillExtrusionPattern:Rl,fill:Rc,fillPattern:gc,fillOutline:hl,fillOutlinePattern:ru,circle:gt,collisionBox:wr,collisionCircle:vr,debug:xi,clippingMask:Xi,heatmap:Ti,heatmapTexture:qi,hillshade:Pn,hillshadePrepare:Ma,line:Cn,lineGradient:sn,linePattern:Ua,lineSDF:mo,raster:Gs,symbolIcon:Ko,symbolSDF:iu,symbolTextAndIcon:Ru,background:Kc,backgroundPattern:Du},Jc;function yc(Y,z,K,O,$,pe,de){for(var Ie=Y.context,$e=Ie.gl,pt=Y.useProgram("collisionBox"),Kt=[],ir=0,Jt=0,vt=0;vt0){var Ar=i.create(),gr=dr;i.mul(Ar,rr.placementInvProjMatrix,Y.transform.glCoordMatrix),i.mul(Ar,Ar,rr.placementViewportMatrix),Kt.push({circleArray:kr,circleOffset:Jt,transform:gr,invTransform:Ar}),ir+=kr.length/4,Jt=ir}pr&&pt.draw(Ie,$e.LINES,Wi.disabled,$i.disabled,Y.colorModeForRenderPass(),yr.disabled,Ur(dr,Y.transform,Wt),K.id,pr.layoutVertexBuffer,pr.indexBuffer,pr.segments,null,Y.transform.zoom,null,null,pr.collisionVertexBuffer)}}if(!(!de||!Kt.length)){var Cr=Y.useProgram("collisionCircle"),cr=new i.StructArrayLayout2f1f2i16;cr.resize(ir*4),cr._trim();for(var Gr=0,ei=0,yi=Kt;ei=0&&(Pt[rr.associatedIconIndex]={shiftedAnchor:ln,angle:Qn})}}if(Kt){vt.clear();for(var rn=Y.icon.placedSymbolArray,bn=0;bn0){var de=i.browser.now(),Ie=(de-Y.timeAdded)/pe,$e=z?(de-z.timeAdded)/pe:-1,pt=K.getSource(),Kt=$.coveringZoomLevel({tileSize:pt.tileSize,roundZoom:pt.roundZoom}),ir=!z||Math.abs(z.tileID.overscaledZ-Kt)>Math.abs(Y.tileID.overscaledZ-Kt),Jt=ir&&Y.refreshedUponExpiration?1:i.clamp(ir?Ie:1-$e,0,1);return Y.refreshedUponExpiration&&Ie>=1&&(Y.refreshedUponExpiration=!1),z?{opacity:1,mix:1-Jt}:{opacity:Jt,mix:0}}else return{opacity:1,mix:0}}function Ut(Y,z,K){var O=K.paint.get("background-color"),$=K.paint.get("background-opacity");if($!==0){var pe=Y.context,de=pe.gl,Ie=Y.transform,$e=Ie.tileSize,pt=K.paint.get("background-pattern");if(!Y.isPatternMissing(pt)){var Kt=!pt&&O.a===1&&$===1&&Y.opaquePassEnabledForLayer()?"opaque":"translucent";if(Y.renderPass===Kt){var ir=$i.disabled,Jt=Y.depthModeForSublayer(0,Kt==="opaque"?Wi.ReadWrite:Wi.ReadOnly),vt=Y.colorModeForRenderPass(),Pt=Y.useProgram(pt?"backgroundPattern":"background"),Wt=Ie.coveringTiles({tileSize:$e});pt&&(pe.activeTexture.set(de.TEXTURE0),Y.imageManager.bind(Y.context));for(var rr=K.getCrossfadeParameters(),dr=0,pr=Wt;dr "+K.overscaledZ);var dr=rr+" "+vt+"kb";Ga(Y,dr),de.draw(O,$.TRIANGLES,Ie,$e,ft.alphaBlended,yr.disabled,Fi(pe,i.Color.transparent,Wt),Kt,Y.debugBuffer,Y.quadTriangleIndexBuffer,Y.debugSegments)}function Ga(Y,z){Y.initDebugOverlayCanvas();var K=Y.debugOverlayCanvas,O=Y.context.gl,$=Y.debugOverlayCanvas.getContext("2d");$.clearRect(0,0,K.width,K.height),$.shadowColor="white",$.shadowBlur=2,$.lineWidth=1.5,$.strokeStyle="white",$.textBaseline="top",$.font="bold 36px Open Sans, sans-serif",$.fillText(z,5,5),$.strokeText(z,5,5),Y.debugOverlayTexture.update(K),Y.debugOverlayTexture.bind(O.LINEAR,O.CLAMP_TO_EDGE)}function To(Y,z,K){var O=Y.context,$=K.implementation;if(Y.renderPass==="offscreen"){var pe=$.prerender;pe&&(Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),pe.call($,O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState())}else if(Y.renderPass==="translucent"){Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),O.setStencilMode($i.disabled);var de=$.renderingMode==="3d"?new Wi(Y.context.gl.LEQUAL,Wi.ReadWrite,Y.depthRangeFor3D):Y.depthModeForSublayer(0,Wi.ReadOnly);O.setDepthMode(de),$.render(O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState(),O.bindFramebuffer.set(null)}}var Wa={symbol:w,circle:it,heatmap:yt,line:Sr,fill:he,"fill-extrusion":Pe,hillshade:Je,raster:Mt,background:Ut,debug:pa,custom:To},co=function(z,K){this.context=new Fr(z),this.transform=K,this._tileTextures={},this.setup(),this.numSublayers=Zr.maxUnderzooming+Zr.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new rh,this.gpuTimers={}};co.prototype.resize=function(z,K){if(this.width=z*i.browser.devicePixelRatio,this.height=K*i.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var O=0,$=this.style._order;O<$.length;O+=1){var pe=$[O];this.style._layers[pe].resize()}},co.prototype.setup=function(){var z=this.context,K=new i.StructArrayLayout2i4;K.emplaceBack(0,0),K.emplaceBack(i.EXTENT,0),K.emplaceBack(0,i.EXTENT),K.emplaceBack(i.EXTENT,i.EXTENT),this.tileExtentBuffer=z.createVertexBuffer(K,kc.members),this.tileExtentSegments=i.SegmentVector.simpleSegment(0,0,4,2);var O=new i.StructArrayLayout2i4;O.emplaceBack(0,0),O.emplaceBack(i.EXTENT,0),O.emplaceBack(0,i.EXTENT),O.emplaceBack(i.EXTENT,i.EXTENT),this.debugBuffer=z.createVertexBuffer(O,kc.members),this.debugSegments=i.SegmentVector.simpleSegment(0,0,4,5);var $=new i.StructArrayLayout4i8;$.emplaceBack(0,0,0,0),$.emplaceBack(i.EXTENT,0,i.EXTENT,0),$.emplaceBack(0,i.EXTENT,0,i.EXTENT),$.emplaceBack(i.EXTENT,i.EXTENT,i.EXTENT,i.EXTENT),this.rasterBoundsBuffer=z.createVertexBuffer($,Me.members),this.rasterBoundsSegments=i.SegmentVector.simpleSegment(0,0,4,2);var pe=new i.StructArrayLayout2i4;pe.emplaceBack(0,0),pe.emplaceBack(1,0),pe.emplaceBack(0,1),pe.emplaceBack(1,1),this.viewportBuffer=z.createVertexBuffer(pe,kc.members),this.viewportSegments=i.SegmentVector.simpleSegment(0,0,4,2);var de=new i.StructArrayLayout1ui2;de.emplaceBack(0),de.emplaceBack(1),de.emplaceBack(3),de.emplaceBack(2),de.emplaceBack(0),this.tileBorderIndexBuffer=z.createIndexBuffer(de);var Ie=new i.StructArrayLayout3ui6;Ie.emplaceBack(0,1,2),Ie.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=z.createIndexBuffer(Ie),this.emptyTexture=new i.Texture(z,{width:1,height:1,data:new Uint8Array([0,0,0,0])},z.gl.RGBA);var $e=this.context.gl;this.stencilClearMode=new $i({func:$e.ALWAYS,mask:0},0,255,$e.ZERO,$e.ZERO,$e.ZERO)},co.prototype.clearStencil=function(){var z=this.context,K=z.gl;this.nextStencilID=1,this.currentStencilSource=void 0;var O=i.create();i.ortho(O,0,this.width,this.height,0,0,1),i.scale(O,O,[K.drawingBufferWidth,K.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(z,K.TRIANGLES,Wi.disabled,this.stencilClearMode,ft.disabled,yr.disabled,hn(O),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)},co.prototype._renderTileClippingMasks=function(z,K){if(!(this.currentStencilSource===z.source||!z.isTileClipped()||!K||!K.length)){this.currentStencilSource=z.source;var O=this.context,$=O.gl;this.nextStencilID+K.length>256&&this.clearStencil(),O.setColorMode(ft.disabled),O.setDepthMode(Wi.disabled);var pe=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var de=0,Ie=K;de256&&this.clearStencil();var z=this.nextStencilID++,K=this.context.gl;return new $i({func:K.NOTEQUAL,mask:255},z,255,K.KEEP,K.KEEP,K.REPLACE)},co.prototype.stencilModeForClipping=function(z){var K=this.context.gl;return new $i({func:K.EQUAL,mask:255},this._tileClippingMaskIDs[z.key],0,K.KEEP,K.KEEP,K.REPLACE)},co.prototype.stencilConfigForOverlap=function(z){var K,O=this.context.gl,$=z.sort(function(pt,Kt){return Kt.overscaledZ-pt.overscaledZ}),pe=$[$.length-1].overscaledZ,de=$[0].overscaledZ-pe+1;if(de>1){this.currentStencilSource=void 0,this.nextStencilID+de>256&&this.clearStencil();for(var Ie={},$e=0;$e=0;this.currentLayer--){var Ar=this.style._layers[$[this.currentLayer]],gr=pe[Ar.source],Cr=$e[Ar.source];this._renderTileClippingMasks(Ar,Cr),this.renderLayer(this,gr,Ar,Cr)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<$.length;this.currentLayer++){var cr=this.style._layers[$[this.currentLayer]],Gr=pe[cr.source],ei=(cr.type==="symbol"?Kt:pt)[cr.source];this._renderTileClippingMasks(cr,$e[cr.source]),this.renderLayer(this,Gr,cr,ei)}if(this.options.showTileBoundaries){var yi,tn,Ri=i.values(this.style._layers);Ri.forEach(function(ln){ln.source&&!ln.isHidden(O.transform.zoom)&&(ln.source!==(tn&&tn.id)&&(tn=O.style.sourceCaches[ln.source]),(!yi||yi.getSource().maxzoom0?K.pop():null},co.prototype.isPatternMissing=function(z){if(!z)return!1;if(!z.from||!z.to)return!0;var K=this.imageManager.getPattern(z.from.toString()),O=this.imageManager.getPattern(z.to.toString());return!K||!O},co.prototype.useProgram=function(z,K){this.cache=this.cache||{};var O=""+z+(K?K.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[O]||(this.cache[O]=new Vf(this.context,z,Pf[z],K,eo[z],this._showOverdrawInspector)),this.cache[O]},co.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},co.prototype.setBaseState=function(){var z=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(z.FUNC_ADD)},co.prototype.initDebugOverlayCanvas=function(){if(this.debugOverlayCanvas==null){this.debugOverlayCanvas=i.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var z=this.context.gl;this.debugOverlayTexture=new i.Texture(this.context,this.debugOverlayCanvas,z.RGBA)}},co.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var Ro=function(z,K){this.points=z,this.planes=K};Ro.fromInvProjectionMatrix=function(z,K,O){var $=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]],pe=Math.pow(2,O),de=$.map(function(pt){return i.transformMat4([],pt,z)}).map(function(pt){return i.scale$1([],pt,1/pt[3]/K*pe)}),Ie=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],$e=Ie.map(function(pt){var Kt=i.sub([],de[pt[0]],de[pt[1]]),ir=i.sub([],de[pt[2]],de[pt[1]]),Jt=i.normalize([],i.cross([],Kt,ir)),vt=-i.dot(Jt,de[pt[1]]);return Jt.concat(vt)});return new Ro(de,$e)};var Ds=function(z,K){this.min=z,this.max=K,this.center=i.scale$2([],i.add([],this.min,this.max),.5)};Ds.prototype.quadrant=function(z){for(var K=[z%2===0,z<2],O=i.clone$2(this.min),$=i.clone$2(this.max),pe=0;pe=0;if(de===0)return 0;de!==K.length&&(O=!1)}if(O)return 2;for(var $e=0;$e<3;$e++){for(var pt=Number.MAX_VALUE,Kt=-Number.MAX_VALUE,ir=0;irthis.max[$e]-this.min[$e])return 0}return 1};var As=function(z,K,O,$){if(z===void 0&&(z=0),K===void 0&&(K=0),O===void 0&&(O=0),$===void 0&&($=0),isNaN(z)||z<0||isNaN(K)||K<0||isNaN(O)||O<0||isNaN($)||$<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=z,this.bottom=K,this.left=O,this.right=$};As.prototype.interpolate=function(z,K,O){return K.top!=null&&z.top!=null&&(this.top=i.number(z.top,K.top,O)),K.bottom!=null&&z.bottom!=null&&(this.bottom=i.number(z.bottom,K.bottom,O)),K.left!=null&&z.left!=null&&(this.left=i.number(z.left,K.left,O)),K.right!=null&&z.right!=null&&(this.right=i.number(z.right,K.right,O)),this},As.prototype.getCenter=function(z,K){var O=i.clamp((this.left+z-this.right)/2,0,z),$=i.clamp((this.top+K-this.bottom)/2,0,K);return new i.Point(O,$)},As.prototype.equals=function(z){return this.top===z.top&&this.bottom===z.bottom&&this.left===z.left&&this.right===z.right},As.prototype.clone=function(){return new As(this.top,this.bottom,this.left,this.right)},As.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var yo=function(z,K,O,$,pe){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=pe===void 0?!0:pe,this._minZoom=z||0,this._maxZoom=K||22,this._minPitch=O==null?0:O,this._maxPitch=$==null?60:$,this.setMaxBounds(),this.width=0,this.height=0,this._center=new i.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new As,this._posMatrixCache={},this._alignedPosMatrixCache={}},po={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};yo.prototype.clone=function(){var z=new yo(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return z.tileSize=this.tileSize,z.latRange=this.latRange,z.width=this.width,z.height=this.height,z._center=this._center,z.zoom=this.zoom,z.angle=this.angle,z._fov=this._fov,z._pitch=this._pitch,z._unmodified=this._unmodified,z._edgeInsets=this._edgeInsets.clone(),z._calcMatrices(),z},po.minZoom.get=function(){return this._minZoom},po.minZoom.set=function(Y){this._minZoom!==Y&&(this._minZoom=Y,this.zoom=Math.max(this.zoom,Y))},po.maxZoom.get=function(){return this._maxZoom},po.maxZoom.set=function(Y){this._maxZoom!==Y&&(this._maxZoom=Y,this.zoom=Math.min(this.zoom,Y))},po.minPitch.get=function(){return this._minPitch},po.minPitch.set=function(Y){this._minPitch!==Y&&(this._minPitch=Y,this.pitch=Math.max(this.pitch,Y))},po.maxPitch.get=function(){return this._maxPitch},po.maxPitch.set=function(Y){this._maxPitch!==Y&&(this._maxPitch=Y,this.pitch=Math.min(this.pitch,Y))},po.renderWorldCopies.get=function(){return this._renderWorldCopies},po.renderWorldCopies.set=function(Y){Y===void 0?Y=!0:Y===null&&(Y=!1),this._renderWorldCopies=Y},po.worldSize.get=function(){return this.tileSize*this.scale},po.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},po.size.get=function(){return new i.Point(this.width,this.height)},po.bearing.get=function(){return-this.angle/Math.PI*180},po.bearing.set=function(Y){var z=-i.wrap(Y,-180,180)*Math.PI/180;this.angle!==z&&(this._unmodified=!1,this.angle=z,this._calcMatrices(),this.rotationMatrix=i.create$2(),i.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},po.pitch.get=function(){return this._pitch/Math.PI*180},po.pitch.set=function(Y){var z=i.clamp(Y,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==z&&(this._unmodified=!1,this._pitch=z,this._calcMatrices())},po.fov.get=function(){return this._fov/Math.PI*180},po.fov.set=function(Y){Y=Math.max(.01,Math.min(60,Y)),this._fov!==Y&&(this._unmodified=!1,this._fov=Y/180*Math.PI,this._calcMatrices())},po.zoom.get=function(){return this._zoom},po.zoom.set=function(Y){var z=Math.min(Math.max(Y,this.minZoom),this.maxZoom);this._zoom!==z&&(this._unmodified=!1,this._zoom=z,this.scale=this.zoomScale(z),this.tileZoom=Math.floor(z),this.zoomFraction=z-this.tileZoom,this._constrain(),this._calcMatrices())},po.center.get=function(){return this._center},po.center.set=function(Y){Y.lat===this._center.lat&&Y.lng===this._center.lng||(this._unmodified=!1,this._center=Y,this._constrain(),this._calcMatrices())},po.padding.get=function(){return this._edgeInsets.toJSON()},po.padding.set=function(Y){this._edgeInsets.equals(Y)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,Y,1),this._calcMatrices())},po.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},yo.prototype.isPaddingEqual=function(z){return this._edgeInsets.equals(z)},yo.prototype.interpolatePadding=function(z,K,O){this._unmodified=!1,this._edgeInsets.interpolate(z,K,O),this._constrain(),this._calcMatrices()},yo.prototype.coveringZoomLevel=function(z){var K=(z.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/z.tileSize));return Math.max(0,K)},yo.prototype.getVisibleUnwrappedCoordinates=function(z){var K=[new i.UnwrappedTileID(0,z)];if(this._renderWorldCopies)for(var O=this.pointCoordinate(new i.Point(0,0)),$=this.pointCoordinate(new i.Point(this.width,0)),pe=this.pointCoordinate(new i.Point(this.width,this.height)),de=this.pointCoordinate(new i.Point(0,this.height)),Ie=Math.floor(Math.min(O.x,$.x,pe.x,de.x)),$e=Math.floor(Math.max(O.x,$.x,pe.x,de.x)),pt=1,Kt=Ie-pt;Kt<=$e+pt;Kt++)Kt!==0&&K.push(new i.UnwrappedTileID(Kt,z));return K},yo.prototype.coveringTiles=function(z){var K=this.coveringZoomLevel(z),O=K;if(z.minzoom!==void 0&&Kz.maxzoom&&(K=z.maxzoom);var $=i.MercatorCoordinate.fromLngLat(this.center),pe=Math.pow(2,K),de=[pe*$.x,pe*$.y,0],Ie=Ro.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,K),$e=z.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&($e=K);var pt=3,Kt=function(Ri){return{aabb:new Ds([Ri*pe,0,0],[(Ri+1)*pe,pe,0]),zoom:0,x:0,y:0,wrap:Ri,fullyVisible:!1}},ir=[],Jt=[],vt=K,Pt=z.reparseOverscaled?O:K;if(this._renderWorldCopies)for(var Wt=1;Wt<=3;Wt++)ir.push(Kt(-Wt)),ir.push(Kt(Wt));for(ir.push(Kt(0));ir.length>0;){var rr=ir.pop(),dr=rr.x,pr=rr.y,kr=rr.fullyVisible;if(!kr){var Ar=rr.aabb.intersects(Ie);if(Ar===0)continue;kr=Ar===2}var gr=rr.aabb.distanceX(de),Cr=rr.aabb.distanceY(de),cr=Math.max(Math.abs(gr),Math.abs(Cr)),Gr=pt+(1<Gr&&rr.zoom>=$e){Jt.push({tileID:new i.OverscaledTileID(rr.zoom===vt?Pt:rr.zoom,rr.wrap,rr.zoom,dr,pr),distanceSq:i.sqrLen([de[0]-.5-dr,de[1]-.5-pr])});continue}for(var ei=0;ei<4;ei++){var yi=(dr<<1)+ei%2,tn=(pr<<1)+(ei>>1);ir.push({aabb:rr.aabb.quadrant(ei),zoom:rr.zoom+1,x:yi,y:tn,wrap:rr.wrap,fullyVisible:kr})}}return Jt.sort(function(Ri,ln){return Ri.distanceSq-ln.distanceSq}).map(function(Ri){return Ri.tileID})},yo.prototype.resize=function(z,K){this.width=z,this.height=K,this.pixelsToGLUnits=[2/z,-2/K],this._constrain(),this._calcMatrices()},po.unmodified.get=function(){return this._unmodified},yo.prototype.zoomScale=function(z){return Math.pow(2,z)},yo.prototype.scaleZoom=function(z){return Math.log(z)/Math.LN2},yo.prototype.project=function(z){var K=i.clamp(z.lat,-this.maxValidLatitude,this.maxValidLatitude);return new i.Point(i.mercatorXfromLng(z.lng)*this.worldSize,i.mercatorYfromLat(K)*this.worldSize)},yo.prototype.unproject=function(z){return new i.MercatorCoordinate(z.x/this.worldSize,z.y/this.worldSize).toLngLat()},po.point.get=function(){return this.project(this.center)},yo.prototype.setLocationAtPoint=function(z,K){var O=this.pointCoordinate(K),$=this.pointCoordinate(this.centerPoint),pe=this.locationCoordinate(z),de=new i.MercatorCoordinate(pe.x-(O.x-$.x),pe.y-(O.y-$.y));this.center=this.coordinateLocation(de),this._renderWorldCopies&&(this.center=this.center.wrap())},yo.prototype.locationPoint=function(z){return this.coordinatePoint(this.locationCoordinate(z))},yo.prototype.pointLocation=function(z){return this.coordinateLocation(this.pointCoordinate(z))},yo.prototype.locationCoordinate=function(z){return i.MercatorCoordinate.fromLngLat(z)},yo.prototype.coordinateLocation=function(z){return z.toLngLat()},yo.prototype.pointCoordinate=function(z){var K=0,O=[z.x,z.y,0,1],$=[z.x,z.y,1,1];i.transformMat4(O,O,this.pixelMatrixInverse),i.transformMat4($,$,this.pixelMatrixInverse);var pe=O[3],de=$[3],Ie=O[0]/pe,$e=$[0]/de,pt=O[1]/pe,Kt=$[1]/de,ir=O[2]/pe,Jt=$[2]/de,vt=ir===Jt?0:(K-ir)/(Jt-ir);return new i.MercatorCoordinate(i.number(Ie,$e,vt)/this.worldSize,i.number(pt,Kt,vt)/this.worldSize)},yo.prototype.coordinatePoint=function(z){var K=[z.x*this.worldSize,z.y*this.worldSize,0,1];return i.transformMat4(K,K,this.pixelMatrix),new i.Point(K[0]/K[3],K[1]/K[3])},yo.prototype.getBounds=function(){return new i.LngLatBounds().extend(this.pointLocation(new i.Point(0,0))).extend(this.pointLocation(new i.Point(this.width,0))).extend(this.pointLocation(new i.Point(this.width,this.height))).extend(this.pointLocation(new i.Point(0,this.height)))},yo.prototype.getMaxBounds=function(){return!this.latRange||this.latRange.length!==2||!this.lngRange||this.lngRange.length!==2?null:new i.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]])},yo.prototype.setMaxBounds=function(z){z?(this.lngRange=[z.getWest(),z.getEast()],this.latRange=[z.getSouth(),z.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},yo.prototype.calculatePosMatrix=function(z,K){K===void 0&&(K=!1);var O=z.key,$=K?this._alignedPosMatrixCache:this._posMatrixCache;if($[O])return $[O];var pe=z.canonical,de=this.worldSize/this.zoomScale(pe.z),Ie=pe.x+Math.pow(2,pe.z)*z.wrap,$e=i.identity(new Float64Array(16));return i.translate($e,$e,[Ie*de,pe.y*de,0]),i.scale($e,$e,[de/i.EXTENT,de/i.EXTENT,1]),i.multiply($e,K?this.alignedProjMatrix:this.projMatrix,$e),$[O]=new Float32Array($e),$[O]},yo.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},yo.prototype._constrain=function(){if(!(!this.center||!this.width||!this.height||this._constraining)){this._constraining=!0;var z=-90,K=90,O=-180,$=180,pe,de,Ie,$e,pt=this.size,Kt=this._unmodified;if(this.latRange){var ir=this.latRange;z=i.mercatorYfromLat(ir[1])*this.worldSize,K=i.mercatorYfromLat(ir[0])*this.worldSize,pe=K-zK&&($e=K-rr)}if(this.lngRange){var dr=vt.x,pr=pt.x/2;dr-pr$&&(Ie=$-pr)}(Ie!==void 0||$e!==void 0)&&(this.center=this.unproject(new i.Point(Ie!==void 0?Ie:vt.x,$e!==void 0?$e:vt.y))),this._unmodified=Kt,this._constraining=!1}},yo.prototype._calcMatrices=function(){if(this.height){var z=this._fov/2,K=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(z)*this.height;var O=Math.PI/2+this._pitch,$=this._fov*(.5+K.y/this.height),pe=Math.sin($)*this.cameraToCenterDistance/Math.sin(i.clamp(Math.PI-O-$,.01,Math.PI-.01)),de=this.point,Ie=de.x,$e=de.y,pt=Math.cos(Math.PI/2-this._pitch)*pe+this.cameraToCenterDistance,Kt=pt*1.01,ir=this.height/50,Jt=new Float64Array(16);i.perspective(Jt,this._fov,this.width/this.height,ir,Kt),Jt[8]=-K.x*2/this.width,Jt[9]=K.y*2/this.height,i.scale(Jt,Jt,[1,-1,1]),i.translate(Jt,Jt,[0,0,-this.cameraToCenterDistance]),i.rotateX(Jt,Jt,this._pitch),i.rotateZ(Jt,Jt,this.angle),i.translate(Jt,Jt,[-Ie,-$e,0]),this.mercatorMatrix=i.scale([],Jt,[this.worldSize,this.worldSize,this.worldSize]),i.scale(Jt,Jt,[1,1,i.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=Jt,this.invProjMatrix=i.invert([],this.projMatrix);var vt=this.width%2/2,Pt=this.height%2/2,Wt=Math.cos(this.angle),rr=Math.sin(this.angle),dr=Ie-Math.round(Ie)+Wt*vt+rr*Pt,pr=$e-Math.round($e)+Wt*Pt+rr*vt,kr=new Float64Array(Jt);if(i.translate(kr,kr,[dr>.5?dr-1:dr,pr>.5?pr-1:pr,0]),this.alignedProjMatrix=kr,Jt=i.create(),i.scale(Jt,Jt,[this.width/2,-this.height/2,1]),i.translate(Jt,Jt,[1,-1,0]),this.labelPlaneMatrix=Jt,Jt=i.create(),i.scale(Jt,Jt,[1,-1,1]),i.translate(Jt,Jt,[-1,-1,0]),i.scale(Jt,Jt,[2/this.width,2/this.height,1]),this.glCoordMatrix=Jt,this.pixelMatrix=i.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),Jt=i.invert(new Float64Array(16),this.pixelMatrix),!Jt)throw new Error("failed to invert matrix");this.pixelMatrixInverse=Jt,this._posMatrixCache={},this._alignedPosMatrixCache={}}},yo.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var z=this.pointCoordinate(new i.Point(0,0)),K=[z.x*this.worldSize,z.y*this.worldSize,0,1],O=i.transformMat4(K,K,this.pixelMatrix);return O[3]/this.cameraToCenterDistance},yo.prototype.getCameraPoint=function(){var z=this._pitch,K=Math.tan(z)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new i.Point(0,K))},yo.prototype.getCameraQueryGeometry=function(z){var K=this.getCameraPoint();if(z.length===1)return[z[0],K];for(var O=K.x,$=K.y,pe=K.x,de=K.y,Ie=0,$e=z;Ie<$e.length;Ie+=1){var pt=$e[Ie];O=Math.min(O,pt.x),$=Math.min($,pt.y),pe=Math.max(pe,pt.x),de=Math.max(de,pt.y)}return[new i.Point(O,$),new i.Point(pe,$),new i.Point(pe,de),new i.Point(O,de),new i.Point(O,$)]},Object.defineProperties(yo.prototype,po);function _l(Y,z){var K=!1,O=null,$=function(){O=null,K&&(Y(),O=setTimeout($,z),K=!1)};return function(){return K=!0,O||$(),O}}var Vl=function(z){this._hashName=z&&encodeURIComponent(z),i.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=_l(this._updateHashUnthrottled.bind(this),30*1e3/100)};Vl.prototype.addTo=function(z){return this._map=z,i.window.addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this},Vl.prototype.remove=function(){return i.window.removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this},Vl.prototype.getHashString=function(z){var K=this._map.getCenter(),O=Math.round(this._map.getZoom()*100)/100,$=Math.ceil((O*Math.LN2+Math.log(512/360/.5))/Math.LN10),pe=Math.pow(10,$),de=Math.round(K.lng*pe)/pe,Ie=Math.round(K.lat*pe)/pe,$e=this._map.getBearing(),pt=this._map.getPitch(),Kt="";if(z?Kt+="/"+de+"/"+Ie+"/"+O:Kt+=O+"/"+Ie+"/"+de,($e||pt)&&(Kt+="/"+Math.round($e*10)/10),pt&&(Kt+="/"+Math.round(pt)),this._hashName){var ir=this._hashName,Jt=!1,vt=i.window.location.hash.slice(1).split("&").map(function(Pt){var Wt=Pt.split("=")[0];return Wt===ir?(Jt=!0,Wt+"="+Kt):Pt}).filter(function(Pt){return Pt});return Jt||vt.push(ir+"="+Kt),"#"+vt.join("&")}return"#"+Kt},Vl.prototype._getCurrentHash=function(){var z=this,K=i.window.location.hash.replace("#","");if(this._hashName){var O;return K.split("&").map(function($){return $.split("=")}).forEach(function($){$[0]===z._hashName&&(O=$)}),(O&&O[1]||"").split("/")}return K.split("/")},Vl.prototype._onHashChange=function(){var z=this._getCurrentHash();if(z.length>=3&&!z.some(function(O){return isNaN(O)})){var K=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(z[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+z[2],+z[1]],zoom:+z[0],bearing:K,pitch:+(z[4]||0)}),!0}return!1},Vl.prototype._updateHashUnthrottled=function(){var z=i.window.location.href.replace(/(#.+)?$/,this.getHashString());try{i.window.history.replaceState(i.window.history.state,null,z)}catch(K){}};var Zu={linearity:.3,easing:i.bezier(0,0,.3,1)},cu=i.extend({deceleration:2500,maxSpeed:1400},Zu),el=i.extend({deceleration:20,maxSpeed:1400},Zu),nu=i.extend({deceleration:1e3,maxSpeed:360},Zu),zc=i.extend({deceleration:1e3,maxSpeed:90},Zu),Dl=function(z){this._map=z,this.clear()};Dl.prototype.clear=function(){this._inertiaBuffer=[]},Dl.prototype.record=function(z){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:i.browser.now(),settings:z})},Dl.prototype._drainInertiaBuffer=function(){for(var z=this._inertiaBuffer,K=i.browser.now(),O=160;z.length>0&&K-z[0].time>O;)z.shift()},Dl.prototype._onMoveEnd=function(z){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var K={zoom:0,bearing:0,pitch:0,pan:new i.Point(0,0),pinchAround:void 0,around:void 0},O=0,$=this._inertiaBuffer;O<$.length;O+=1){var pe=$[O],de=pe.settings;K.zoom+=de.zoomDelta||0,K.bearing+=de.bearingDelta||0,K.pitch+=de.pitchDelta||0,de.panDelta&&K.pan._add(de.panDelta),de.around&&(K.around=de.around),de.pinchAround&&(K.pinchAround=de.pinchAround)}var Ie=this._inertiaBuffer[this._inertiaBuffer.length-1],$e=Ie.time-this._inertiaBuffer[0].time,pt={};if(K.pan.mag()){var Kt=Z(K.pan.mag(),$e,i.extend({},cu,z||{}));pt.offset=K.pan.mult(Kt.amount/K.pan.mag()),pt.center=this._map.transform.center,zl(pt,Kt)}if(K.zoom){var ir=Z(K.zoom,$e,el);pt.zoom=this._map.transform.zoom+ir.amount,zl(pt,ir)}if(K.bearing){var Jt=Z(K.bearing,$e,nu);pt.bearing=this._map.transform.bearing+i.clamp(Jt.amount,-179,179),zl(pt,Jt)}if(K.pitch){var vt=Z(K.pitch,$e,zc);pt.pitch=this._map.transform.pitch+vt.amount,zl(pt,vt)}if(pt.zoom||pt.bearing){var Pt=K.pinchAround===void 0?K.around:K.pinchAround;pt.around=Pt?this._map.unproject(Pt):this._map.getCenter()}return this.clear(),i.extend(pt,{noMoveStart:!0})}};function zl(Y,z){(!Y.duration||Y.duration=this._clickTolerance||this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.dblclick=function(z){return this._firePreventable(new oe(z.type,this._map,z))},Ue.prototype.mouseover=function(z){this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.mouseout=function(z){this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.touchstart=function(z){return this._firePreventable(new we(z.type,this._map,z))},Ue.prototype.touchmove=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype.touchend=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype.touchcancel=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype._firePreventable=function(z){if(this._map.fire(z),z.defaultPrevented)return{}},Ue.prototype.isEnabled=function(){return!0},Ue.prototype.isActive=function(){return!1},Ue.prototype.enable=function(){},Ue.prototype.disable=function(){};var We=function(z){this._map=z};We.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},We.prototype.mousemove=function(z){this._map.fire(new oe(z.type,this._map,z))},We.prototype.mousedown=function(){this._delayContextMenu=!0},We.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new oe("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},We.prototype.contextmenu=function(z){this._delayContextMenu?this._contextMenuEvent=z:this._map.fire(new oe(z.type,this._map,z)),this._map.listens("contextmenu")&&z.preventDefault()},We.prototype.isEnabled=function(){return!0},We.prototype.isActive=function(){return!1},We.prototype.enable=function(){},We.prototype.disable=function(){};var wt=function(z,K){this._map=z,this._el=z.getCanvasContainer(),this._container=z.getContainer(),this._clickTolerance=K.clickTolerance||1};wt.prototype.isEnabled=function(){return!!this._enabled},wt.prototype.isActive=function(){return!!this._active},wt.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},wt.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},wt.prototype.mousedown=function(z,K){this.isEnabled()&&z.shiftKey&&z.button===0&&(o.disableDrag(),this._startPos=this._lastPos=K,this._active=!0)},wt.prototype.mousemoveWindow=function(z,K){if(this._active){var O=K;if(!(this._lastPos.equals(O)||!this._box&&O.dist(this._startPos)this.numTouches)&&(this.aborted=!0),!this.aborted&&(this.startTime===void 0&&(this.startTime=z.timeStamp),O.length===this.numTouches&&(this.centroid=zt(K),this.touches=tt(O,K)))},Ir.prototype.touchmove=function(z,K,O){if(!(this.aborted||!this.centroid)){var $=tt(O,K);for(var pe in this.touches){var de=this.touches[pe],Ie=$[pe];(!Ie||Ie.dist(de)>Dr)&&(this.aborted=!0)}}},Ir.prototype.touchend=function(z,K,O){if((!this.centroid||z.timeStamp-this.startTime>lr)&&(this.aborted=!0),O.length===0){var $=!this.aborted&&this.centroid;if(this.reset(),$)return $}};var oi=function(z){this.singleTap=new Ir(z),this.numTaps=z.numTaps,this.reset()};oi.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},oi.prototype.touchstart=function(z,K,O){this.singleTap.touchstart(z,K,O)},oi.prototype.touchmove=function(z,K,O){this.singleTap.touchmove(z,K,O)},oi.prototype.touchend=function(z,K,O){var $=this.singleTap.touchend(z,K,O);if($){var pe=z.timeStamp-this.lastTime0&&(this._active=!0);var $=tt(O,K),pe=new i.Point(0,0),de=new i.Point(0,0),Ie=0;for(var $e in $){var pt=$[$e],Kt=this._touches[$e];Kt&&(pe._add(pt),de._add(pt.sub(Kt)),Ie++,$[$e]=pt)}if(this._touches=$,!(IeMath.abs(Y.x)}var pn=100,za=function(Y){function z(){Y.apply(this,arguments)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.reset=function(){Y.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},z.prototype._start=function(O){this._lastPoints=O,Ns(O[0].sub(O[1]))&&(this._valid=!1)},z.prototype._move=function(O,$,pe){var de=O[0].sub(this._lastPoints[0]),Ie=O[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(de,Ie,pe.timeStamp),!!this._valid){this._lastPoints=O,this._active=!0;var $e=(de.y+Ie.y)/2,pt=-.5;return{pitchDelta:$e*pt}}},z.prototype.gestureBeginsVertically=function(O,$,pe){if(this._valid!==void 0)return this._valid;var de=2,Ie=O.mag()>=de,$e=$.mag()>=de;if(!(!Ie&&!$e)){if(!Ie||!$e)return this._firstMove===void 0&&(this._firstMove=pe),pe-this._firstMove0==$.y>0;return Ns(O)&&Ns($)&&pt}},z}(Nn),Lo={panStep:100,bearingStep:15,pitchStep:10},Fo=function(){var z=Lo;this._panStep=z.panStep,this._bearingStep=z.bearingStep,this._pitchStep=z.pitchStep,this._rotationDisabled=!1};Fo.prototype.reset=function(){this._active=!1},Fo.prototype.keydown=function(z){var K=this;if(!(z.altKey||z.ctrlKey||z.metaKey)){var O=0,$=0,pe=0,de=0,Ie=0;switch(z.keyCode){case 61:case 107:case 171:case 187:O=1;break;case 189:case 109:case 173:O=-1;break;case 37:z.shiftKey?$=-1:(z.preventDefault(),de=-1);break;case 39:z.shiftKey?$=1:(z.preventDefault(),de=1);break;case 38:z.shiftKey?pe=1:(z.preventDefault(),Ie=-1);break;case 40:z.shiftKey?pe=-1:(z.preventDefault(),Ie=1);break;default:return}return this._rotationDisabled&&($=0,pe=0),{cameraAnimation:function($e){var pt=$e.getZoom();$e.easeTo({duration:300,easeId:"keyboardHandler",easing:js,zoom:O?Math.round(pt)+O*(z.shiftKey?2:1):pt,bearing:$e.getBearing()+$*K._bearingStep,pitch:$e.getPitch()+pe*K._pitchStep,offset:[-de*K._panStep,-Ie*K._panStep],center:$e.getCenter()},{originalEvent:z})}}}},Fo.prototype.enable=function(){this._enabled=!0},Fo.prototype.disable=function(){this._enabled=!1,this.reset()},Fo.prototype.isEnabled=function(){return this._enabled},Fo.prototype.isActive=function(){return this._active},Fo.prototype.disableRotation=function(){this._rotationDisabled=!0},Fo.prototype.enableRotation=function(){this._rotationDisabled=!1};function js(Y){return Y*(2-Y)}var xl=4.000244140625,fu=1/100,dl=1/450,xc=2,At=function(z,K){this._map=z,this._el=z.getCanvasContainer(),this._handler=K,this._delta=0,this._defaultZoomRate=fu,this._wheelZoomRate=dl,i.bindAll(["_onTimeout"],this)};At.prototype.setZoomRate=function(z){this._defaultZoomRate=z},At.prototype.setWheelZoomRate=function(z){this._wheelZoomRate=z},At.prototype.isEnabled=function(){return!!this._enabled},At.prototype.isActive=function(){return!!this._active||this._finishTimeout!==void 0},At.prototype.isZooming=function(){return!!this._zooming},At.prototype.enable=function(z){this.isEnabled()||(this._enabled=!0,this._aroundCenter=z&&z.around==="center")},At.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},At.prototype.wheel=function(z){if(this.isEnabled()){var K=z.deltaMode===i.window.WheelEvent.DOM_DELTA_LINE?z.deltaY*40:z.deltaY,O=i.browser.now(),$=O-(this._lastWheelEventTime||0);this._lastWheelEventTime=O,K!==0&&K%xl===0?this._type="wheel":K!==0&&Math.abs(K)<4?this._type="trackpad":$>400?(this._type=null,this._lastValue=K,this._timeout=setTimeout(this._onTimeout,40,z)):this._type||(this._type=Math.abs($*K)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,K+=this._lastValue)),z.shiftKey&&K&&(K=K/4),this._type&&(this._lastWheelEvent=z,this._delta-=K,this._active||this._start(z)),z.preventDefault()}},At.prototype._onTimeout=function(z){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(z)},At.prototype._start=function(z){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var K=o.mousePos(this._el,z);this._around=i.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(K)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},At.prototype.renderFrame=function(){var z=this;if(this._frameId&&(this._frameId=null,!!this.isActive())){var K=this._map.transform;if(this._delta!==0){var O=this._type==="wheel"&&Math.abs(this._delta)>xl?this._wheelZoomRate:this._defaultZoomRate,$=xc/(1+Math.exp(-Math.abs(this._delta*O)));this._delta<0&&$!==0&&($=1/$);var pe=typeof this._targetZoom=="number"?K.zoomScale(this._targetZoom):K.scale;this._targetZoom=Math.min(K.maxZoom,Math.max(K.minZoom,K.scaleZoom(pe*$))),this._type==="wheel"&&(this._startZoom=K.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var de=typeof this._targetZoom=="number"?this._targetZoom:K.zoom,Ie=this._startZoom,$e=this._easing,pt=!1,Kt;if(this._type==="wheel"&&Ie&&$e){var ir=Math.min((i.browser.now()-this._lastWheelEventTime)/200,1),Jt=$e(ir);Kt=i.number(Ie,de,Jt),ir<1?this._frameId||(this._frameId=!0):pt=!0}else Kt=de,pt=!0;return this._active=!0,pt&&(this._active=!1,this._finishTimeout=setTimeout(function(){z._zooming=!1,z._handler._triggerRenderFrame(),delete z._targetZoom,delete z._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!pt,zoomDelta:Kt-K.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},At.prototype._smoothOutEasing=function(z){var K=i.ease;if(this._prevEase){var O=this._prevEase,$=(i.browser.now()-O.start)/O.duration,pe=O.easing($+.01)-O.easing($),de=.27/Math.sqrt(pe*pe+1e-4)*.01,Ie=Math.sqrt(.27*.27-de*de);K=i.bezier(de,Ie,.25,1)}return this._prevEase={start:i.browser.now(),duration:z,easing:K},K},At.prototype.reset=function(){this._active=!1};var Er=function(z,K){this._clickZoom=z,this._tapZoom=K};Er.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},Er.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},Er.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},Er.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var Wr=function(){this.reset()};Wr.prototype.reset=function(){this._active=!1},Wr.prototype.dblclick=function(z,K){return z.preventDefault(),{cameraAnimation:function(O){O.easeTo({duration:300,zoom:O.getZoom()+(z.shiftKey?-1:1),around:O.unproject(K)},{originalEvent:z})}}},Wr.prototype.enable=function(){this._enabled=!0},Wr.prototype.disable=function(){this._enabled=!1,this.reset()},Wr.prototype.isEnabled=function(){return this._enabled},Wr.prototype.isActive=function(){return this._active};var wi=function(){this._tap=new oi({numTouches:1,numTaps:1}),this.reset()};wi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},wi.prototype.touchstart=function(z,K,O){this._swipePoint||(this._tapTime&&z.timeStamp-this._tapTime>or&&this.reset(),this._tapTime?O.length>0&&(this._swipePoint=K[0],this._swipeTouch=O[0].identifier):this._tap.touchstart(z,K,O))},wi.prototype.touchmove=function(z,K,O){if(!this._tapTime)this._tap.touchmove(z,K,O);else if(this._swipePoint){if(O[0].identifier!==this._swipeTouch)return;var $=K[0],pe=$.y-this._swipePoint.y;return this._swipePoint=$,z.preventDefault(),this._active=!0,{zoomDelta:pe/128}}},wi.prototype.touchend=function(z,K,O){if(this._tapTime)this._swipePoint&&O.length===0&&this.reset();else{var $=this._tap.touchend(z,K,O);$&&(this._tapTime=z.timeStamp)}},wi.prototype.touchcancel=function(){this.reset()},wi.prototype.enable=function(){this._enabled=!0},wi.prototype.disable=function(){this._enabled=!1,this.reset()},wi.prototype.isEnabled=function(){return this._enabled},wi.prototype.isActive=function(){return this._active};var Ui=function(z,K,O){this._el=z,this._mousePan=K,this._touchPan=O};Ui.prototype.enable=function(z){this._inertiaOptions=z||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},Ui.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},Ui.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},Ui.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var Oi=function(z,K,O){this._pitchWithRotate=z.pitchWithRotate,this._mouseRotate=K,this._mousePitch=O};Oi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},Oi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},Oi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},Oi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var Bi=function(z,K,O,$){this._el=z,this._touchZoom=K,this._touchRotate=O,this._tapDragZoom=$,this._rotationDisabled=!1,this._enabled=!0};Bi.prototype.enable=function(z){this._touchZoom.enable(z),this._rotationDisabled||this._touchRotate.enable(z),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},Bi.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},Bi.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},Bi.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},Bi.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},Bi.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var cn=function(Y){return Y.zoom||Y.drag||Y.pitch||Y.rotate},On=function(Y){function z(){Y.apply(this,arguments)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z}(i.Event);function Bn(Y){return Y.panDelta&&Y.panDelta.mag()||Y.zoomDelta||Y.bearingDelta||Y.pitchDelta}var yn=function(z,K){this._map=z,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Dl(z),this._bearingSnap=K.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(K),i.bindAll(["handleEvent","handleWindowEvent"],this);var O=this._el;this._listeners=[[O,"touchstart",{passive:!0}],[O,"touchmove",{passive:!1}],[O,"touchend",void 0],[O,"touchcancel",void 0],[O,"mousedown",void 0],[O,"mousemove",void 0],[O,"mouseup",void 0],[i.window.document,"mousemove",{capture:!0}],[i.window.document,"mouseup",void 0],[O,"mouseover",void 0],[O,"mouseout",void 0],[O,"dblclick",void 0],[O,"click",void 0],[O,"keydown",{capture:!1}],[O,"keyup",void 0],[O,"wheel",{passive:!1}],[O,"contextmenu",void 0],[i.window,"blur",void 0]];for(var $=0,pe=this._listeners;$Ie?Math.min(2,gr):Math.max(.5,gr),Ri=Math.pow(tn,1-ei),ln=de.unproject(kr.add(Ar.mult(ei*Ri)).mult(yi));de.setLocationAtPoint(de.renderWorldCopies?ln.wrap():ln,rr)}pe._fireMoveEvents($)},function(ei){pe._afterEase($,ei)},O),this},z.prototype._prepareEase=function(O,$,pe){pe===void 0&&(pe={}),this._moving=!0,!$&&!pe.moving&&this.fire(new i.Event("movestart",O)),this._zooming&&!pe.zooming&&this.fire(new i.Event("zoomstart",O)),this._rotating&&!pe.rotating&&this.fire(new i.Event("rotatestart",O)),this._pitching&&!pe.pitching&&this.fire(new i.Event("pitchstart",O))},z.prototype._fireMoveEvents=function(O){this.fire(new i.Event("move",O)),this._zooming&&this.fire(new i.Event("zoom",O)),this._rotating&&this.fire(new i.Event("rotate",O)),this._pitching&&this.fire(new i.Event("pitch",O))},z.prototype._afterEase=function(O,$){if(!(this._easeId&&$&&this._easeId===$)){delete this._easeId;var pe=this._zooming,de=this._rotating,Ie=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,pe&&this.fire(new i.Event("zoomend",O)),de&&this.fire(new i.Event("rotateend",O)),Ie&&this.fire(new i.Event("pitchend",O)),this.fire(new i.Event("moveend",O))}},z.prototype.flyTo=function(O,$){var pe=this;if(!O.essential&&i.browser.prefersReducedMotion){var de=i.pick(O,["center","zoom","bearing","pitch","around"]);return this.jumpTo(de,$)}this.stop(),O=i.extend({offset:[0,0],speed:1.2,curve:1.42,easing:i.ease},O);var Ie=this.transform,$e=this.getZoom(),pt=this.getBearing(),Kt=this.getPitch(),ir=this.getPadding(),Jt="zoom"in O?i.clamp(+O.zoom,Ie.minZoom,Ie.maxZoom):$e,vt="bearing"in O?this._normalizeBearing(O.bearing,pt):pt,Pt="pitch"in O?+O.pitch:Kt,Wt="padding"in O?O.padding:Ie.padding,rr=Ie.zoomScale(Jt-$e),dr=i.Point.convert(O.offset),pr=Ie.centerPoint.add(dr),kr=Ie.pointLocation(pr),Ar=i.LngLat.convert(O.center||kr);this._normalizeCenter(Ar);var gr=Ie.project(kr),Cr=Ie.project(Ar).sub(gr),cr=O.curve,Gr=Math.max(Ie.width,Ie.height),ei=Gr/rr,yi=Cr.mag();if("minZoom"in O){var tn=i.clamp(Math.min(O.minZoom,$e,Jt),Ie.minZoom,Ie.maxZoom),Ri=Gr/Ie.zoomScale(tn-$e);cr=Math.sqrt(Ri/yi*2)}var ln=cr*cr;function Qn(fo){var as=(ei*ei-Gr*Gr+(fo?-1:1)*ln*ln*yi*yi)/(2*(fo?ei:Gr)*ln*yi);return Math.log(Math.sqrt(as*as+1)-as)}function qn(fo){return(Math.exp(fo)-Math.exp(-fo))/2}function rn(fo){return(Math.exp(fo)+Math.exp(-fo))/2}function bn(fo){return qn(fo)/rn(fo)}var mn=Qn(0),Gn=function(fo){return rn(mn)/rn(mn+cr*fo)},da=function(fo){return Gr*((rn(mn)*bn(mn+cr*fo)-qn(mn))/ln)/yi},No=(Qn(1)-mn)/cr;if(Math.abs(yi)<1e-6||!isFinite(No)){if(Math.abs(Gr-ei)<1e-6)return this.easeTo(O,$);var Do=eiO.maxDuration&&(O.duration=0),this._zooming=!0,this._rotating=pt!==vt,this._pitching=Pt!==Kt,this._padding=!Ie.isPaddingEqual(Wt),this._prepareEase($,!1),this._ease(function(fo){var as=fo*No,tl=1/Gn(as);Ie.zoom=fo===1?Jt:$e+Ie.scaleZoom(tl),pe._rotating&&(Ie.bearing=i.number(pt,vt,fo)),pe._pitching&&(Ie.pitch=i.number(Kt,Pt,fo)),pe._padding&&(Ie.interpolatePadding(ir,Wt,fo),pr=Ie.centerPoint.add(dr));var zu=fo===1?Ar:Ie.unproject(gr.add(Cr.mult(da(as))).mult(tl));Ie.setLocationAtPoint(Ie.renderWorldCopies?zu.wrap():zu,pr),pe._fireMoveEvents($)},function(){return pe._afterEase($)},O),this},z.prototype.isEasing=function(){return!!this._easeFrameId},z.prototype.stop=function(){return this._stop()},z.prototype._stop=function(O,$){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var pe=this._onEaseEnd;delete this._onEaseEnd,pe.call(this,$)}if(!O){var de=this.handlers;de&&de.stop(!1)}return this},z.prototype._ease=function(O,$,pe){pe.animate===!1||pe.duration===0?(O(1),$()):(this._easeStart=i.browser.now(),this._easeOptions=pe,this._onEaseFrame=O,this._onEaseEnd=$,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},z.prototype._renderFrameCallback=function(){var O=Math.min((i.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(O)),O<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},z.prototype._normalizeBearing=function(O,$){O=i.wrap(O,-180,180);var pe=Math.abs(O-$);return Math.abs(O-360-$)180?-360:pe<-180?360:0}},z}(i.Evented),Rn=function(z){z===void 0&&(z={}),this.options=z,i.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)};Rn.prototype.getDefaultPosition=function(){return"bottom-right"},Rn.prototype.onAdd=function(z){var K=this.options&&this.options.compact;return this._map=z,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=o.create("button","mapboxgl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=o.create("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),K&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),K===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},Rn.prototype.onRemove=function(){o.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},Rn.prototype._setElementTitle=function(z,K){var O=this._map._getUIString("AttributionControl."+K);z.title=O,z.setAttribute("aria-label",O)},Rn.prototype._toggleAttribution=function(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","true"))},Rn.prototype._updateEditLink=function(){var z=this._editLink;z||(z=this._editLink=this._container.querySelector(".mapbox-improve-map"));var K=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||i.config.ACCESS_TOKEN}];if(z){var O=K.reduce(function($,pe,de){return pe.value&&($+=pe.key+"="+pe.value+(de=0)return!1;return!0});var Ie=z.join(" | ");Ie!==this._attribHTML&&(this._attribHTML=Ie,z.length?(this._innerContainer.innerHTML=Ie,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},Rn.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")};var Dn=function(){i.bindAll(["_updateLogo"],this),i.bindAll(["_updateCompact"],this)};Dn.prototype.onAdd=function(z){this._map=z,this._container=o.create("div","mapboxgl-ctrl");var K=o.create("a","mapboxgl-ctrl-logo");return K.target="_blank",K.rel="noopener nofollow",K.href="https://www.mapbox.com/",K.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),K.setAttribute("rel","noopener nofollow"),this._container.appendChild(K),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},Dn.prototype.onRemove=function(){o.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},Dn.prototype.getDefaultPosition=function(){return"bottom-left"},Dn.prototype._updateLogo=function(z){(!z||z.sourceDataType==="metadata")&&(this._container.style.display=this._logoRequired()?"block":"none")},Dn.prototype._logoRequired=function(){if(this._map.style){var z=this._map.style.sourceCaches;for(var K in z){var O=z[K].getSource();if(O.mapbox_logo)return!0}return!1}},Dn.prototype._updateCompact=function(){var z=this._container.children;if(z.length){var K=z[0];this._map.getCanvasContainer().offsetWidth<250?K.classList.add("mapboxgl-compact"):K.classList.remove("mapboxgl-compact")}};var fn=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};fn.prototype.add=function(z){var K=++this._id,O=this._queue;return O.push({callback:z,id:K,cancelled:!1}),K},fn.prototype.remove=function(z){for(var K=this._currentlyRunning,O=K?this._queue.concat(K):this._queue,$=0,pe=O;$O.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(O.minPitch!=null&&O.maxPitch!=null&&O.minPitch>O.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(O.minPitch!=null&&O.minPitchZa)throw new Error("maxPitch must be less than or equal to "+Za);var pe=new yo(O.minZoom,O.maxZoom,O.minPitch,O.maxPitch,O.renderWorldCopies);if(Y.call(this,pe,O),this._interactive=O.interactive,this._maxTileCacheSize=O.maxTileCacheSize,this._failIfMajorPerformanceCaveat=O.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=O.preserveDrawingBuffer,this._antialias=O.antialias,this._trackResize=O.trackResize,this._bearingSnap=O.bearingSnap,this._refreshExpiredTiles=O.refreshExpiredTiles,this._fadeDuration=O.fadeDuration,this._crossSourceCollisions=O.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=O.collectResourceTiming,this._renderTaskQueue=new fn,this._controls=[],this._mapId=i.uniqueId(),this._locale=i.extend({},Ai,O.locale),this._clickTolerance=O.clickTolerance,this._requestManager=new i.RequestManager(O.transformRequest,O.accessToken),typeof O.container=="string"){if(this._container=i.window.document.getElementById(O.container),!this._container)throw new Error("Container '"+O.container+"' not found.")}else if(O.container instanceof Ln)this._container=O.container;else throw new Error("Invalid type: 'container' must be a String or HTMLElement.");if(O.maxBounds&&this.setMaxBounds(O.maxBounds),i.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return $._update(!1)}),this.on("moveend",function(){return $._update(!1)}),this.on("zoom",function(){return $._update(!0)}),typeof i.window!="undefined"&&(i.window.addEventListener("online",this._onWindowOnline,!1),i.window.addEventListener("resize",this._onWindowResize,!1),i.window.addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new yn(this,O);var de=typeof O.hash=="string"&&O.hash||void 0;this._hash=O.hash&&new Vl(de).addTo(this),(!this._hash||!this._hash._onHashChange())&&(this.jumpTo({center:O.center,zoom:O.zoom,bearing:O.bearing,pitch:O.pitch}),O.bounds&&(this.resize(),this.fitBounds(O.bounds,i.extend({},O.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=O.localIdeographFontFamily,O.style&&this.setStyle(O.style,{localIdeographFontFamily:O.localIdeographFontFamily}),O.attributionControl&&this.addControl(new Rn({customAttribution:O.customAttribution})),this.addControl(new Dn,O.logoPosition),this.on("style.load",function(){$.transform.unmodified&&$.jumpTo($.style.stylesheet)}),this.on("data",function(Ie){$._update(Ie.dataType==="style"),$.fire(new i.Event(Ie.dataType+"data",Ie))}),this.on("dataloading",function(Ie){$.fire(new i.Event(Ie.dataType+"dataloading",Ie))})}Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z;var K={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return z.prototype._getMapId=function(){return this._mapId},z.prototype.addControl=function($,pe){if(pe===void 0&&($.getDefaultPosition?pe=$.getDefaultPosition():pe="top-right"),!$||!$.onAdd)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var de=$.onAdd(this);this._controls.push($);var Ie=this._controlPositions[pe];return pe.indexOf("bottom")!==-1?Ie.insertBefore(de,Ie.firstChild):Ie.appendChild(de),this},z.prototype.removeControl=function($){if(!$||!$.onRemove)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var pe=this._controls.indexOf($);return pe>-1&&this._controls.splice(pe,1),$.onRemove(this),this},z.prototype.hasControl=function($){return this._controls.indexOf($)>-1},z.prototype.resize=function($){var pe=this._containerDimensions(),de=pe[0],Ie=pe[1];this._resizeCanvas(de,Ie),this.transform.resize(de,Ie),this.painter.resize(de,Ie);var $e=!this._moving;return $e&&(this.stop(),this.fire(new i.Event("movestart",$)).fire(new i.Event("move",$))),this.fire(new i.Event("resize",$)),$e&&this.fire(new i.Event("moveend",$)),this},z.prototype.getBounds=function(){return this.transform.getBounds()},z.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},z.prototype.setMaxBounds=function($){return this.transform.setMaxBounds(i.LngLatBounds.convert($)),this._update()},z.prototype.setMinZoom=function($){if($=$==null?gn:$,$>=gn&&$<=this.transform.maxZoom)return this.transform.minZoom=$,this._update(),this.getZoom()<$&&this.setZoom($),this;throw new Error("minZoom must be between "+gn+" and the current maxZoom, inclusive")},z.prototype.getMinZoom=function(){return this.transform.minZoom},z.prototype.setMaxZoom=function($){if($=$==null?ca:$,$>=this.transform.minZoom)return this.transform.maxZoom=$,this._update(),this.getZoom()>$&&this.setZoom($),this;throw new Error("maxZoom must be greater than the current minZoom")},z.prototype.getMaxZoom=function(){return this.transform.maxZoom},z.prototype.setMinPitch=function($){if($=$==null?Kn:$,$=Kn&&$<=this.transform.maxPitch)return this.transform.minPitch=$,this._update(),this.getPitch()<$&&this.setPitch($),this;throw new Error("minPitch must be between "+Kn+" and the current maxPitch, inclusive")},z.prototype.getMinPitch=function(){return this.transform.minPitch},z.prototype.setMaxPitch=function($){if($=$==null?Za:$,$>Za)throw new Error("maxPitch must be less than or equal to "+Za);if($>=this.transform.minPitch)return this.transform.maxPitch=$,this._update(),this.getPitch()>$&&this.setPitch($),this;throw new Error("maxPitch must be greater than the current minPitch")},z.prototype.getMaxPitch=function(){return this.transform.maxPitch},z.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},z.prototype.setRenderWorldCopies=function($){return this.transform.renderWorldCopies=$,this._update()},z.prototype.project=function($){return this.transform.locationPoint(i.LngLat.convert($))},z.prototype.unproject=function($){return this.transform.pointLocation(i.Point.convert($))},z.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},z.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},z.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},z.prototype._createDelegatedListener=function($,pe,de){var Ie=this,$e;if($==="mouseenter"||$==="mouseover"){var pt=!1,Kt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length?pt||(pt=!0,de.call(Ie,new oe($,Ie,rr.originalEvent,{features:dr}))):pt=!1},ir=function(){pt=!1};return{layer:pe,listener:de,delegates:{mousemove:Kt,mouseout:ir}}}else if($==="mouseleave"||$==="mouseout"){var Jt=!1,vt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length?Jt=!0:Jt&&(Jt=!1,de.call(Ie,new oe($,Ie,rr.originalEvent)))},Pt=function(rr){Jt&&(Jt=!1,de.call(Ie,new oe($,Ie,rr.originalEvent)))};return{layer:pe,listener:de,delegates:{mousemove:vt,mouseout:Pt}}}else{var Wt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length&&(rr.features=dr,de.call(Ie,rr),delete rr.features)};return{layer:pe,listener:de,delegates:($e={},$e[$]=Wt,$e)}}},z.prototype.on=function($,pe,de){if(de===void 0)return Y.prototype.on.call(this,$,pe);var Ie=this._createDelegatedListener($,pe,de);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[$]=this._delegatedListeners[$]||[],this._delegatedListeners[$].push(Ie);for(var $e in Ie.delegates)this.on($e,Ie.delegates[$e]);return this},z.prototype.once=function($,pe,de){if(de===void 0)return Y.prototype.once.call(this,$,pe);var Ie=this._createDelegatedListener($,pe,de);for(var $e in Ie.delegates)this.once($e,Ie.delegates[$e]);return this},z.prototype.off=function($,pe,de){var Ie=this;if(de===void 0)return Y.prototype.off.call(this,$,pe);var $e=function(pt){for(var Kt=pt[$],ir=0;ir180;){var de=K.locationPoint(Y);if(de.x>=0&&de.y>=0&&de.x<=K.width&&de.y<=K.height)break;Y.lng>K.center.lng?Y.lng-=360:Y.lng+=360}return Y}var ro={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ao(Y,z,K){var O=Y.classList;for(var $ in ro)O.remove("mapboxgl-"+K+"-anchor-"+$);O.add("mapboxgl-"+K+"-anchor-"+z)}var Jn=function(Y){function z(K,O){if(Y.call(this),(K instanceof i.window.HTMLElement||O)&&(K=i.extend({element:K},O)),i.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=K&&K.anchor||"center",this._color=K&&K.color||"#3FB1CE",this._scale=K&&K.scale||1,this._draggable=K&&K.draggable||!1,this._clickTolerance=K&&K.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=K&&K.rotation||0,this._rotationAlignment=K&&K.rotationAlignment||"auto",this._pitchAlignment=K&&K.pitchAlignment&&K.pitchAlignment!=="auto"?K.pitchAlignment:this._rotationAlignment,!K||!K.element){this._defaultMarker=!0,this._element=o.create("div"),this._element.setAttribute("aria-label","Map marker");var $=o.createNS("http://www.w3.org/2000/svg","svg"),pe=41,de=27;$.setAttributeNS(null,"display","block"),$.setAttributeNS(null,"height",pe+"px"),$.setAttributeNS(null,"width",de+"px"),$.setAttributeNS(null,"viewBox","0 0 "+de+" "+pe);var Ie=o.createNS("http://www.w3.org/2000/svg","g");Ie.setAttributeNS(null,"stroke","none"),Ie.setAttributeNS(null,"stroke-width","1"),Ie.setAttributeNS(null,"fill","none"),Ie.setAttributeNS(null,"fill-rule","evenodd");var $e=o.createNS("http://www.w3.org/2000/svg","g");$e.setAttributeNS(null,"fill-rule","nonzero");var pt=o.createNS("http://www.w3.org/2000/svg","g");pt.setAttributeNS(null,"transform","translate(3.0, 29.0)"),pt.setAttributeNS(null,"fill","#000000");for(var Kt=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}],ir=0,Jt=Kt;ir=$}this._isDragging&&(this._pos=O.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new i.Event("dragstart"))),this.fire(new i.Event("drag")))},z.prototype._onUp=function(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new i.Event("dragend")),this._state="inactive"},z.prototype._addDragHandler=function(O){this._element.contains(O.originalEvent.target)&&(O.preventDefault(),this._positionDelta=O.point.sub(this._pos).add(this._offset),this._pointerdownPos=O.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},z.prototype.setDraggable=function(O){return this._draggable=!!O,this._map&&(O?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this},z.prototype.isDraggable=function(){return this._draggable},z.prototype.setRotation=function(O){return this._rotation=O||0,this._update(),this},z.prototype.getRotation=function(){return this._rotation},z.prototype.setRotationAlignment=function(O){return this._rotationAlignment=O||"auto",this._update(),this},z.prototype.getRotationAlignment=function(){return this._rotationAlignment},z.prototype.setPitchAlignment=function(O){return this._pitchAlignment=O&&O!=="auto"?O:this._rotationAlignment,this._update(),this},z.prototype.getPitchAlignment=function(){return this._pitchAlignment},z}(i.Evented),Oa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},_o;function Po(Y){_o!==void 0?Y(_o):i.window.navigator.permissions!==void 0?i.window.navigator.permissions.query({name:"geolocation"}).then(function(z){_o=z.state!=="denied",Y(_o)}):(_o=!!i.window.navigator.geolocation,Y(_o))}var Jo=0,Xl=!1,$c=function(Y){function z(K){Y.call(this),this.options=i.extend({},Oa,K),i.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.onAdd=function(O){return this._map=O,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),Po(this._setupUI),this._container},z.prototype.onRemove=function(){this._geolocationWatchID!==void 0&&(i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),o.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Jo=0,Xl=!1},z.prototype._isOutOfMapMaxBounds=function(O){var $=this._map.getMaxBounds(),pe=O.coords;return $&&(pe.longitude<$.getWest()||pe.longitude>$.getEast()||pe.latitude<$.getSouth()||pe.latitude>$.getNorth())},z.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break}},z.prototype._onSuccess=function(O){if(this._map){if(this._isOutOfMapMaxBounds(O)){this._setErrorState(),this.fire(new i.Event("outofmaxbounds",O)),this._updateMarker(),this._finish();return}if(this.options.trackUserLocation)switch(this._lastKnownPosition=O,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(O),(!this.options.trackUserLocation||this._watchState==="ACTIVE_LOCK")&&this._updateCamera(O),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("geolocate",O)),this._finish()}},z.prototype._updateCamera=function(O){var $=new i.LngLat(O.coords.longitude,O.coords.latitude),pe=O.coords.accuracy,de=this._map.getBearing(),Ie=i.extend({bearing:de},this.options.fitBoundsOptions);this._map.fitBounds($.toBounds(pe),Ie,{geolocateSource:!0})},z.prototype._updateMarker=function(O){if(O){var $=new i.LngLat(O.coords.longitude,O.coords.latitude);this._accuracyCircleMarker.setLngLat($).addTo(this._map),this._userLocationDotMarker.setLngLat($).addTo(this._map),this._accuracy=O.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},z.prototype._updateCircleRadius=function(){var O=this._map._container.clientHeight/2,$=this._map.unproject([0,O]),pe=this._map.unproject([1,O]),de=$.distanceTo(pe),Ie=Math.ceil(2*this._accuracy/de);this._circleElement.style.width=Ie+"px",this._circleElement.style.height=Ie+"px"},z.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},z.prototype._onError=function(O){if(this._map){if(this.options.trackUserLocation)if(O.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var $=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=$,this._geolocateButton.setAttribute("aria-label",$),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(O.code===3&&Xl)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("error",O)),this._finish()}},z.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},z.prototype._setupUI=function(O){var $=this;if(this._container.addEventListener("contextmenu",function(Ie){return Ie.preventDefault()}),this._geolocateButton=o.create("button","mapboxgl-ctrl-geolocate",this._container),o.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",O===!1){i.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var pe=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=pe,this._geolocateButton.setAttribute("aria-label",pe)}else{var de=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=de,this._geolocateButton.setAttribute("aria-label",de)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=o.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new Jn(this._dotElement),this._circleElement=o.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Jn({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(Ie){var $e=Ie.originalEvent&&Ie.originalEvent.type==="resize";!Ie.geolocateSource&&$._watchState==="ACTIVE_LOCK"&&!$e&&($._watchState="BACKGROUND",$._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),$._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),$.fire(new i.Event("trackuserlocationend")))})},z.prototype.trigger=function(){if(!this._setup)return i.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new i.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Jo--,Xl=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new i.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new i.Event("trackuserlocationstart"));break}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error");break}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Jo++;var O;Jo>1?(O={maximumAge:6e5,timeout:0},Xl=!0):(O=this.options.positionOptions,Xl=!1),this._geolocationWatchID=i.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,O)}}else i.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},z.prototype._clearWatch=function(){i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},z}(i.Evented),xs={maxWidth:100,unit:"metric"},Qc=function(z){this.options=i.extend({},xs,z),i.bindAll(["_onMove","setUnit"],this)};Qc.prototype.getDefaultPosition=function(){return"bottom-left"},Qc.prototype._onMove=function(){El(this._map,this._container,this.options)},Qc.prototype.onAdd=function(z){return this._map=z,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",z.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Qc.prototype.onRemove=function(){o.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Qc.prototype.setUnit=function(z){this.options.unit=z,El(this._map,this._container,this.options)};function El(Y,z,K){var O=K&&K.maxWidth||100,$=Y._container.clientHeight/2,pe=Y.unproject([0,$]),de=Y.unproject([O,$]),Ie=pe.distanceTo(de);if(K&&K.unit==="imperial"){var $e=3.2808*Ie;if($e>5280){var pt=$e/5280;bc(z,O,pt,Y._getUIString("ScaleControl.Miles"))}else bc(z,O,$e,Y._getUIString("ScaleControl.Feet"))}else if(K&&K.unit==="nautical"){var Kt=Ie/1852;bc(z,O,Kt,Y._getUIString("ScaleControl.NauticalMiles"))}else Ie>=1e3?bc(z,O,Ie/1e3,Y._getUIString("ScaleControl.Kilometers")):bc(z,O,Ie,Y._getUIString("ScaleControl.Meters"))}function bc(Y,z,K,O){var $=yf(K),pe=$/K;Y.style.width=z*pe+"px",Y.innerHTML=$+" "+O}function wc(Y){var z=Math.pow(10,Math.ceil(-Math.log(Y)/Math.LN10));return Math.round(Y*z)/z}function yf(Y){var z=Math.pow(10,(""+Math.floor(Y)).length-1),K=Y/z;return K=K>=10?10:K>=5?5:K>=3?3:K>=2?2:K>=1?1:wc(K),z*K}var Hl=function(z){this._fullscreen=!1,z&&z.container&&(z.container instanceof i.window.HTMLElement?this._container=z.container:i.warnOnce("Full screen control 'container' must be a DOM element.")),i.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in i.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in i.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in i.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in i.window.document&&(this._fullscreenchange="MSFullscreenChange")};Hl.prototype.onAdd=function(z){return this._map=z,this._container||(this._container=this._map.getContainer()),this._controlContainer=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",i.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},Hl.prototype.onRemove=function(){o.remove(this._controlContainer),this._map=null,i.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Hl.prototype._checkFullscreenSupport=function(){return!!(i.window.document.fullscreenEnabled||i.window.document.mozFullScreenEnabled||i.window.document.msFullscreenEnabled||i.window.document.webkitFullscreenEnabled)},Hl.prototype._setupUI=function(){var z=this._fullscreenButton=o.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);o.create("span","mapboxgl-ctrl-icon",z).setAttribute("aria-hidden",!0),z.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),i.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Hl.prototype._updateTitle=function(){var z=this._getTitle();this._fullscreenButton.setAttribute("aria-label",z),this._fullscreenButton.title=z},Hl.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},Hl.prototype._isFullscreen=function(){return this._fullscreen},Hl.prototype._changeIcon=function(){var z=i.window.document.fullscreenElement||i.window.document.mozFullScreenElement||i.window.document.webkitFullscreenElement||i.window.document.msFullscreenElement;z===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},Hl.prototype._onClickFullscreen=function(){this._isFullscreen()?i.window.document.exitFullscreen?i.window.document.exitFullscreen():i.window.document.mozCancelFullScreen?i.window.document.mozCancelFullScreen():i.window.document.msExitFullscreen?i.window.document.msExitFullscreen():i.window.document.webkitCancelFullScreen&&i.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Fc={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},ef=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", "),ls=function(Y){function z(K){Y.call(this),this.options=i.extend(Object.create(Fc),K),i.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.addTo=function(O){return this._map&&this.remove(),this._map=O,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new i.Event("open")),this},z.prototype.isOpen=function(){return!!this._map},z.prototype.remove=function(){return this._content&&o.remove(this._content),this._container&&(o.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new i.Event("close")),this},z.prototype.getLngLat=function(){return this._lngLat},z.prototype.setLngLat=function(O){return this._lngLat=i.LngLat.convert(O),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},z.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},z.prototype.getElement=function(){return this._container},z.prototype.setText=function(O){return this.setDOMContent(i.window.document.createTextNode(O))},z.prototype.setHTML=function(O){var $=i.window.document.createDocumentFragment(),pe=i.window.document.createElement("body"),de;for(pe.innerHTML=O;de=pe.firstChild,!!de;)$.appendChild(de);return this.setDOMContent($)},z.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},z.prototype.setMaxWidth=function(O){return this.options.maxWidth=O,this._update(),this},z.prototype.setDOMContent=function(O){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=o.create("div","mapboxgl-popup-content",this._container);return this._content.appendChild(O),this._createCloseButton(),this._update(),this._focusFirstElement(),this},z.prototype.addClassName=function(O){this._container&&this._container.classList.add(O)},z.prototype.removeClassName=function(O){this._container&&this._container.classList.remove(O)},z.prototype.setOffset=function(O){return this.options.offset=O,this._update(),this},z.prototype.toggleClassName=function(O){if(this._container)return this._container.classList.toggle(O)},z.prototype._createCloseButton=function(){this.options.closeButton&&(this._closeButton=o.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},z.prototype._onMouseUp=function(O){this._update(O.point)},z.prototype._onMouseMove=function(O){this._update(O.point)},z.prototype._onDrag=function(O){this._update(O.point)},z.prototype._update=function(O){var $=this,pe=this._lngLat||this._trackPointer;if(!(!this._map||!pe||!this._content)&&(this._container||(this._container=o.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=o.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(vt){return $._container.classList.add(vt)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=ma(this._lngLat,this._pos,this._map.transform)),!(this._trackPointer&&!O))){var de=this._pos=this._trackPointer&&O?O:this._map.project(this._lngLat),Ie=this.options.anchor,$e=_f(this.options.offset);if(!Ie){var pt=this._container.offsetWidth,Kt=this._container.offsetHeight,ir;de.y+$e.bottom.ythis._map.transform.height-Kt?ir=["bottom"]:ir=[],de.xthis._map.transform.width-pt/2&&ir.push("right"),ir.length===0?Ie="bottom":Ie=ir.join("-")}var Jt=de.add($e[Ie]).round();o.setTransform(this._container,ro[Ie]+" translate("+Jt.x+"px,"+Jt.y+"px)"),Ao(this._container,Ie,"popup")}},z.prototype._focusFirstElement=function(){if(!(!this.options.focusAfterOpen||!this._container)){var O=this._container.querySelector(ef);O&&O.focus()}},z.prototype._onClose=function(){this.remove()},z}(i.Evented);function _f(Y){if(Y)if(typeof Y=="number"){var z=Math.round(Math.sqrt(.5*Math.pow(Y,2)));return{center:new i.Point(0,0),top:new i.Point(0,Y),"top-left":new i.Point(z,z),"top-right":new i.Point(-z,z),bottom:new i.Point(0,-Y),"bottom-left":new i.Point(z,-z),"bottom-right":new i.Point(-z,-z),left:new i.Point(Y,0),right:new i.Point(-Y,0)}}else if(Y instanceof i.Point||Array.isArray(Y)){var K=i.Point.convert(Y);return{center:K,top:K,"top-left":K,"top-right":K,bottom:K,"bottom-left":K,"bottom-right":K,left:K,right:K}}else return{center:i.Point.convert(Y.center||[0,0]),top:i.Point.convert(Y.top||[0,0]),"top-left":i.Point.convert(Y["top-left"]||[0,0]),"top-right":i.Point.convert(Y["top-right"]||[0,0]),bottom:i.Point.convert(Y.bottom||[0,0]),"bottom-left":i.Point.convert(Y["bottom-left"]||[0,0]),"bottom-right":i.Point.convert(Y["bottom-right"]||[0,0]),left:i.Point.convert(Y.left||[0,0]),right:i.Point.convert(Y.right||[0,0])};else return _f(new i.Point(0,0))}var ns={version:i.version,supported:a,setRTLTextPlugin:i.setRTLTextPlugin,getRTLTextPluginStatus:i.getRTLTextPluginStatus,Map:vn,NavigationControl:Xn,GeolocateControl:$c,AttributionControl:Rn,ScaleControl:Qc,FullscreenControl:Hl,Popup:ls,Marker:Jn,Style:mu,LngLat:i.LngLat,LngLatBounds:i.LngLatBounds,Point:i.Point,MercatorCoordinate:i.MercatorCoordinate,Evented:i.Evented,config:i.config,prewarm:jn,clearPrewarmedResources:la,get accessToken(){return i.config.ACCESS_TOKEN},set accessToken(Y){i.config.ACCESS_TOKEN=Y},get baseApiUrl(){return i.config.API_URL},set baseApiUrl(Y){i.config.API_URL=Y},get workerCount(){return Pi.workerCount},set workerCount(Y){Pi.workerCount=Y},get maxParallelImageRequests(){return i.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(Y){i.config.MAX_PARALLEL_IMAGE_REQUESTS=Y},clearStorage:function(z){i.clearTileCache(z)},workerUrl:""};return ns}),r})});var HUe=ye((Syr,VUe)=>{"use strict";var tw=Mr(),xHt=Ll().sanitizeHTML,bHt=UK(),BUe=c1();function NUe(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=BUe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ig=NUe.prototype;ig.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=jF(t)};ig.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ig.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ig.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ig.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ig.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapboxLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ig.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!jF(e)){var r=wHt(e);t.addSource(this.idSource,r)}};ig.findFollowingMapboxLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function UUe(e){var t={},r={};switch(e.type){case"circle":tw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":tw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":tw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=bHt(n.textposition,n.iconsize);tw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),tw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":tw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function wHt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=xHt(e.sourceattribution)),n}VUe.exports=function(t,r,n){var i=new NUe(t,r);return i.update(n),i}});var $Ue=ye((Myr,JUe)=>{"use strict";var XK=ZK(),YK=Mr(),ZUe=ix(),GUe=ba(),THt=Qa(),AHt=gv(),WF=Nc(),XUe=Sg(),SHt=XUe.drawMode,MHt=XUe.selectMode,EHt=wf().prepSelect,kHt=wf().clearOutline,CHt=wf().clearSelectionsCache,LHt=wf().selectOnClick,yx=c1(),PHt=HUe();function YUe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.accessToken=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Ah=YUe.prototype;Ah.plot=function(e,t,r){var n=this,i=t[n.id];n.map&&i.accesstoken!==n.accessToken&&(n.map.remove(),n.map=null,n.styleObj=null,n.traceHash={},n.layerList=[]);var a;n.map?a=new Promise(function(o,s){n.updateMap(e,t,o,s)}):a=new Promise(function(o,s){n.createMap(e,t,o,s)}),r.push(a)};Ah.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=KUe(a.style,t);i.accessToken=a.accesstoken;var s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new XK.Map({container:i.div,style:o.style,center:KK(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new XK.AttributionControl({compact:!0}));u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var c=[];c.push(new Promise(function(f){u.once("load",f)})),c=c.concat(ZUe.fetchTraceGeoData(e)),Promise.all(c).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Ah.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=KUe(o.style,t);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(ZUe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Ah.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&LHt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&WF.click(n,l.originalEvent)}}};Ah.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=YK.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),MHt(a)||SHt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){EHt(l,u,c,t.dragOptions,a)},AHt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Ah.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Ah.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var JK=Mr(),IHt=k_(),RHt=Zd(),QUe=Pk();eVe.exports=function(t,r,n){IHt(t,r,n,{type:"mapbox",attributes:QUe,handleDefaults:DHt,partition:"y",accessToken:r._mapboxAccessToken})};function DHt(e,t,r,n){r("accesstoken",n.accessToken),r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var i=r("bounds.west"),a=r("bounds.east"),o=r("bounds.south"),s=r("bounds.north");(i===void 0||a===void 0||o===void 0||s===void 0)&&delete t.bounds,RHt(e,t,{name:"layers",handleItemDefaults:zHt}),t._input=e}function zHt(e,t){function r(l,u){return JK.coerce(e,t,QUe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",JK.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),JK.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var ZF=ye(Np=>{"use strict";var rVe=ZK(),tm=Mr(),$K=tm.strTranslate,FHt=tm.strScale,qHt=kd().getSubplotCalcData,OHt=Zp(),BHt=xa(),iVe=ao(),NHt=Ll(),UHt=$Ue(),_x="mapbox",Qm=Np.constants=c1();Np.name=_x;Np.attr="subplot";Np.idRoot=_x;Np.idRegex=Np.attrRegex=tm.counterRegex(_x);var VHt=["mapbox subplots and traces are deprecated!","Please consider switching to `map` subplots and traces.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");Np.attributes={subplot:{valType:"subplotid",dflt:"mapbox",editType:"calc"}};Np.layoutAttributes=Pk();Np.supplyLayoutDefaults=tVe();var nVe=!0;Np.plot=function(t){nVe&&(nVe=!1,tm.warn(VHt));var r=t._fullLayout,n=t.calcdata,i=r._subplots[_x];if(rVe.version!==Qm.requiredVersion)throw new Error(Qm.wrongVersionErrorMsg);var a=HHt(t,i);rVe.accessToken=a;for(var o=0;og/2){var E=d.split("|").join("
");x.text(E).attr("data-unformatted",E).call(NHt.convertToTspans,e),b=iVe.bBox(x.node())}x.attr("transform",$K(-3,-b.height+8)),v.insert("rect",".static-attribution").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:"rgba(255, 255, 255, 0.75)"});var k=1;b.width+6>g&&(k=g/(b.width+6));var A=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];v.attr("transform",$K(A[0],A[1])+FHt(k))}};function HHt(e,t){var r=e._fullLayout,n=e._context;if(n.mapboxAccessToken==="")return"";for(var i=[],a=[],o=!1,s=!1,l=0;l1&&tm.warn(Qm.multipleTokensErrorMsg),i[0]):(a.length&&tm.log(["Listed mapbox access token(s)",a.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}function aVe(e){return typeof e=="string"&&(Qm.styleValuesMapbox.indexOf(e)!==-1||e.indexOf("mapbox://")===0||e.indexOf("stamen")===0)}Np.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[_x],n=0;n{"use strict";var Cyr=["*scattermapbox* trace is deprecated!","Please consider switching to the *scattermap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");oVe.exports={attributes:BF(),supplyDefaults:yUe(),colorbar:Kd(),formatLabels:NK(),calc:lz(),plot:IUe(),hoverPoints:GF().hoverPoints,eventData:FUe(),selectPoints:OUe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermapbox",basePlotModule:ZF(),categories:["mapbox","gl","symbols","showLegend","scatter-like"],meta:{}}});var uVe=ye((Pyr,lVe)=>{"use strict";lVe.exports=sVe()});var QK=ye((Iyr,cVe)=>{"use strict";var f1=J5(),GHt=Kl(),jHt=Wo().hovertemplateAttrs,WHt=vl(),xx=no().extendFlat;cVe.exports=xx({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:xx({},f1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:f1.text,hovertext:f1.hovertext,marker:{line:{color:xx({},f1.marker.line.color,{editType:"plot"}),width:xx({},f1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:xx({},f1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:xx({},f1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:xx({},f1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:f1.hoverinfo,hovertemplate:jHt({},{keys:["properties"]}),showlegend:xx({},WHt.showlegend,{dflt:!1})},GHt("",{cLetter:"z",editTypeOverride:"calc"}))});var hVe=ye((Ryr,fVe)=>{"use strict";var zk=Mr(),ZHt=Uh(),XHt=QK();fVe.exports=function(t,r,n,i){function a(c,f){return zk.coerce(t,r,XHt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!zk.isArrayOrTypedArray(o)||!o.length||!zk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||zk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),ZHt(t,r,i,a,{prefix:"",cLetter:"z"}),zk.coerceSelectionMarkerOpacity(r,a)}});var eJ=ye((Dyr,pVe)=>{"use strict";var YHt=uo(),h1=Mr(),KHt=Mu(),JHt=ao(),$Ht=tx().makeBlank,dVe=ix();function QHt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:$Ht()};if(!r)return a;var o=dVe.extractTraceFeature(e);if(!o)return a;var s=KHt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;h1.isArrayOrTypedArray(l.opacity)&&(c=function(E){var k=E.mo;return YHt(k)?+h1.constrain(k,0,1):0});var f;h1.isArrayOrTypedArray(u.color)&&(f=function(E){return E.mlc});var h;h1.isArrayOrTypedArray(u.width)&&(h=function(E){return E.mlw});for(var d=0;d{"use strict";var mVe=eJ().convert,eGt=eJ().convertOnSelect,gVe=c1().traceLayerPrefix;function yVe(e,t){this.type="choroplethmapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",gVe+t+"-fill"],["line",gVe+t+"-line"]],this.below=null}var TA=yVe.prototype;TA.update=function(e){this._update(mVe(e)),e[0].trace._glTrace=this};TA.updateOnSelect=function(e){this._update(eGt(e))};TA._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};TA.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};_Ve.exports=function(t,r){var n=r[0].trace,i=new yVe(t,n.uid),a=i.sourceId,o=mVe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var wVe=ye((qyr,bVe)=>{"use strict";var Fyr=["*choroplethmapbox* trace is deprecated!","Please consider switching to the *choroplethmap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");bVe.exports={attributes:QK(),supplyDefaults:hVe(),colorbar:S_(),calc:Lz(),plot:xVe(),hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";TVe.exports=wVe()});var rJ=ye((Byr,MVe)=>{"use strict";var tGt=Kl(),rGt=Wo().hovertemplateAttrs,SVe=vl(),XF=BF(),tJ=no().extendFlat;MVe.exports=tJ({lon:XF.lon,lat:XF.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:XF.text,hovertext:XF.hovertext,hoverinfo:tJ({},SVe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:rGt(),showlegend:tJ({},SVe.showlegend,{dflt:!1})},tGt("",{cLetter:"z",editTypeOverride:"calc"}))});var kVe=ye((Nyr,EVe)=>{"use strict";var iGt=Mr(),nGt=Uh(),aGt=rJ();EVe.exports=function(t,r,n,i){function a(u,c){return iGt.coerce(t,r,aGt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),nGt(t,r,i,a,{prefix:"",cLetter:"z"})}});var PVe=ye((Uyr,LVe)=>{"use strict";var iJ=uo(),oGt=Mr().isArrayOrTypedArray,nJ=es().BADNUM,sGt=zv(),CVe=Mr()._;LVe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=oGt(a)&&a.length,s=0;s{"use strict";var lGt=uo(),aJ=Mr(),IVe=va(),RVe=Mu(),DVe=es().BADNUM,uGt=tx().makeBlank;zVe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:uGt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=aJ.isArrayOrTypedArray(l)&&l.length,f=aJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=RVe.extractOpts(r),g=b.reversescale?RVe.flipScale(b.colorscale):b.colorscale,E=g[0][1],k=IVe.opacity(E)<1?E:IVe.addOpacity(E,0),A=["interpolate",["linear"],["heatmap-density"],0,k];for(s=1;s{"use strict";var qVe=FVe(),cGt=c1().traceLayerPrefix;function OVe(e,t){this.type="densitymapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",cGt+t+"-heatmap"]],this.below=null}var YF=OVe.prototype;YF.update=function(e){var t=this.subplot,r=this.layerList,n=qVe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};YF.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};BVe.exports=function(t,r){var n=r[0].trace,i=new OVe(t,n.uid),a=i.sourceId,o=qVe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var VVe=ye((Gyr,UVe)=>{"use strict";var fGt=Qa(),hGt=GF().hoverPoints,dGt=GF().getExtraText;UVe.exports=function(t,r,n){var i=hGt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=fGt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=dGt(s,l,o[0].t.labels),[a]}}});var GVe=ye((jyr,HVe)=>{"use strict";HVe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var WVe=ye((Zyr,jVe)=>{"use strict";var Wyr=["*densitymapbox* trace is deprecated!","Please consider switching to the *densitymap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");jVe.exports={attributes:rJ(),supplyDefaults:kVe(),colorbar:S_(),formatLabels:NK(),calc:PVe(),plot:NVe(),hoverPoints:VVe(),eventData:GVe(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";ZVe.exports=WVe()});var KVe=ye((Yyr,YVe)=>{YVe.exports={version:8,name:"orto",metadata:{"maputnik:renderer":"mlgljs"},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",minzoom:14,filter:["all",["in","class","river","stream","canal"],["==","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]},"line-dasharray":[2,4]}},{id:"waterway-other",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["!in","class","canal","river","stream"],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,2]]}}},{id:"waterway-stream-canal",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["in","class","canal","stream"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]}}},{id:"waterway-river",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["==","class","river"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.2,stops:[[10,.8],[20,4]]},"line-opacity":.5}},{id:"water-offset",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",maxzoom:8,filter:["==","$type","Polygon"],layout:{visibility:"visible"},paint:{"fill-opacity":0,"fill-color":"#a0c8f0","fill-translate":{base:1,stops:[[6,[2,0]],[8,[0,0]]]}}},{id:"water",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-color":"hsl(210, 67%, 85%)","fill-opacity":0}},{id:"water-pattern",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-translate":[0,2.5],"fill-pattern":"wave","fill-opacity":1}},{id:"landcover-ice-shelf",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"landcover",filter:["==","subclass","ice_shelf"],layout:{visibility:"visible"},paint:{"fill-color":"#fff","fill-opacity":{base:1,stops:[[0,.9],[10,.3]]}}},{id:"tunnel-service-track-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[15,1],[16,4],[20,11]]}}},{id:"tunnel-minor-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,1]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"tunnel-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"tunnel-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.7}},{id:"tunnel-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"tunnel-path",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"tunnel-service-track",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":{base:1.2,stops:[[15.5,0],[16,2],[20,7.5]]}}},{id:"tunnel-minor",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor_road"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"tunnel-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,10]]}}},{id:"tunnel-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-motorway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#ffdaa6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-railway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]},"line-dasharray":[2,2]}},{id:"ferry",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["in","class","ferry"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(108, 159, 182, 1)","line-width":1.1,"line-dasharray":[2,2]}},{id:"aeroway-taxiway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","taxiway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,2],[17,12]]},"line-opacity":1}},{id:"aeroway-runway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","runway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,5],[17,55]]},"line-opacity":1}},{id:"aeroway-taxiway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,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-width":{base:1.5,stops:[[11,1],[17,10]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{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-width":{base:1.5,stops:[[11,4],[17,50]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"highway-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-minor-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,0]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"highway-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":.5,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"highway-primary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[7,0],[8,.6]]},"line-width":{base:1.2,stops:[[7,0],[8,.6],[9,1.5],[20,22]]}}},{id:"highway-trunk-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[5,0],[6,.5]]},"line-width":{base:1.2,stops:[[5,0],[6,.6],[7,1.5],[20,22]]}}},{id:"highway-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:4,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[4,0],[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":{stops:[[4,0],[5,.5]]}}},{id:"highway-path",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"highway-motorway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-minor",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":.5,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"highway-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[8,.5],[20,13]]},"line-opacity":.5}},{id:"highway-primary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[8.5,0],[9,.5],[20,18]]},"line-opacity":0}},{id:"highway-trunk",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"highway-motorway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"railway-transit",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-transit-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway-service",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-service-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"railway-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"bridge-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,28]]}}},{id:"bridge-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(28, 76%, 67%)","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,26]]}}},{id:"bridge-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"bridge-path-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#f8f4f0","line-width":{base:1.2,stops:[[15,1.2],[20,18]]}}},{id:"bridge-path",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#cba","line-width":{base:1.2,stops:[[15,1.2],[20,4]]},"line-dasharray":[1.5,.75]}},{id:"bridge-motorway-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,20]]}}},{id:"bridge-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]}}},{id:"bridge-motorway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"bridge-railway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"bridge-railway-hatching",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"cablecar",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,1],[19,2.5]]}}},{id:"cablecar-dash",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,3],[19,5.5]]},"line-dasharray":[2,3]}},{id:"boundary-land-level-4",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",[">=","admin_level",4],["<=","admin_level",8],["!=","maritime",1]],layout:{"line-join":"round"},paint:{"line-color":"#9e9cab","line-dasharray":[3,1,1,1],"line-width":{base:1.4,stops:[[4,.4],[5,1],[12,3]]},"line-opacity":.6}},{id:"boundary-land-level-2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==","admin_level",2],["!=","maritime",1],["!=","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 66%)","line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,2]]}}},{id:"boundary-land-disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=","maritime",1],["==","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 70%)","line-dasharray":[1,3],"line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,8]]}}},{id:"boundary-water",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["in","admin_level",2,4],["==","maritime",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(154, 189, 214, 1)","line-width":{base:1,stops:[[0,.6],[4,1],[5,1],[12,1]]},"line-opacity":{stops:[[6,0],[10,0]]}}},{id:"waterway-name",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:13,filter:["all",["==","$type","LineString"],["has","name"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin} {name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","text-letter-spacing":.2,"symbol-spacing":350},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-lakeline",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["==","$type","LineString"],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":`{name:latin} +`}),{fragmentSource:Y,vertexSource:z,staticAttributes:O,staticUniforms:de}}var Pf=Object.freeze({__proto__:null,prelude:tu,background:Pu,backgroundPattern:Lc,circle:fl,clippingMask:Xc,heatmap:ic,heatmapTexture:yu,collisionBox:Qs,collisionCircle:Qh,debug:gd,fill:Gu,fillOutline:Pc,fillOutlinePattern:vc,fillPattern:sv,fillExtrusion:Lf,fillExtrusionPattern:Uf,hillshadePrepare:Iu,hillshade:oh,line:ru,lineGradient:vf,linePattern:md,lineSDF:sh,raster:Fs,symbolIcon:_u,symbolSDF:xu,symbolTextAndIcon:Lh}),Ic=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};Ic.prototype.bind=function(z,K,O,$,pe,de,Ie,$e){this.context=z;for(var pt=this.boundPaintVertexBuffers.length!==$.length,Kt=0;!pt&&Kt<$.length;Kt++)this.boundPaintVertexBuffers[Kt]!==$[Kt]&&(pt=!0);var ir=!this.vao||this.boundProgram!==K||this.boundLayoutVertexBuffer!==O||pt||this.boundIndexBuffer!==pe||this.boundVertexOffset!==de||this.boundDynamicVertexBuffer!==Ie||this.boundDynamicVertexBuffer2!==$e;!z.extVertexArrayObject||ir?this.freshBind(K,O,$,pe,de,Ie,$e):(z.bindVertexArrayOES.set(this.vao),Ie&&Ie.bind(),pe&&pe.dynamicDraw&&pe.bind(),$e&&$e.bind())},Ic.prototype.freshBind=function(z,K,O,$,pe,de,Ie){var $e,pt=z.numAttributes,Kt=this.context,ir=Kt.gl;if(Kt.extVertexArrayObject)this.vao&&this.destroy(),this.vao=Kt.extVertexArrayObject.createVertexArrayOES(),Kt.bindVertexArrayOES.set(this.vao),$e=0,this.boundProgram=z,this.boundLayoutVertexBuffer=K,this.boundPaintVertexBuffers=O,this.boundIndexBuffer=$,this.boundVertexOffset=pe,this.boundDynamicVertexBuffer=de,this.boundDynamicVertexBuffer2=Ie;else{$e=Kt.currentNumAttributes||0;for(var Jt=pt;Jt<$e;Jt++)ir.disableVertexAttribArray(Jt)}K.enableAttributes(ir,z);for(var vt=0,Pt=O;vt>16,Ie>>16],u_pixel_coord_lower:[de&65535,Ie&65535]}}function pf(Y,z,K,O){var $=K.imageManager.getPattern(Y.from.toString()),pe=K.imageManager.getPattern(Y.to.toString()),de=K.imageManager.getPixelSize(),Ie=de.width,$e=de.height,pt=Math.pow(2,O.tileID.overscaledZ),Kt=O.tileSize*Math.pow(2,K.transform.tileZoom)/pt,ir=Kt*(O.tileID.canonical.x+O.tileID.wrap*pt),Jt=Kt*O.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:$.tl,u_pattern_br_a:$.br,u_pattern_tl_b:pe.tl,u_pattern_br_b:pe.br,u_texsize:[Ie,$e],u_mix:z.t,u_pattern_size_a:$.displaySize,u_pattern_size_b:pe.displaySize,u_scale_a:z.fromScale,u_scale_b:z.toScale,u_tile_units_to_pixels:1/Cs(O,1,K.transform.tileZoom),u_pixel_coord_upper:[ir>>16,Jt>>16],u_pixel_coord_lower:[ir&65535,Jt&65535]}}var Ph=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_lightpos:new i.Uniform3f(Y,z.u_lightpos),u_lightintensity:new i.Uniform1f(Y,z.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,z.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,z.u_vertical_gradient),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Dl=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_lightpos:new i.Uniform3f(Y,z.u_lightpos),u_lightintensity:new i.Uniform1f(Y,z.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,z.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,z.u_vertical_gradient),u_height_factor:new i.Uniform1f(Y,z.u_height_factor),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Ih=function(Y,z,K,O){var $=z.style.light,pe=$.properties.get("position"),de=[pe.x,pe.y,pe.z],Ie=i.create$1();$.properties.get("anchor")==="viewport"&&i.fromRotation(Ie,-z.transform.angle),i.transformMat3(de,de,Ie);var $e=$.properties.get("color");return{u_matrix:Y,u_lightpos:de,u_lightintensity:$.properties.get("intensity"),u_lightcolor:[$e.r,$e.g,$e.b],u_vertical_gradient:+K,u_opacity:O}},Wu=function(Y,z,K,O,$,pe,de){return i.extend(Ih(Y,z,K,O),pc(pe,z,de),{u_height_factor:-Math.pow(2,$.overscaledZ)/de.tileSize/8})},Rc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},gc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},hl=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world)}},iu=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},mc=function(Y){return{u_matrix:Y}},Yc=function(Y,z,K,O){return i.extend(mc(Y),pc(K,z,O))},nc=function(Y,z){return{u_matrix:Y,u_world:z}},gf=function(Y,z,K,O,$){return i.extend(Yc(Y,z,K,O),{u_world:$})},gt=function(Y,z){return{u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_scale_with_map:new i.Uniform1i(Y,z.u_scale_with_map),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_extrude_scale:new i.Uniform2f(Y,z.u_extrude_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},Bt=function(Y,z,K,O){var $=Y.transform,pe,de;if(O.paint.get("circle-pitch-alignment")==="map"){var Ie=Cs(K,1,$.zoom);pe=!0,de=[Ie,Ie]}else pe=!1,de=$.pixelsToGLUnits;return{u_camera_to_center_distance:$.cameraToCenterDistance,u_scale_with_map:+(O.paint.get("circle-pitch-scale")==="map"),u_matrix:Y.translatePosMatrix(z.posMatrix,K,O.paint.get("circle-translate"),O.paint.get("circle-translate-anchor")),u_pitch_with_map:+pe,u_device_pixel_ratio:i.browser.devicePixelRatio,u_extrude_scale:de}},wr=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pixels_to_tile_units:new i.Uniform1f(Y,z.u_pixels_to_tile_units),u_extrude_scale:new i.Uniform2f(Y,z.u_extrude_scale),u_overscale_factor:new i.Uniform1f(Y,z.u_overscale_factor)}},vr=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_inv_matrix:new i.UniformMatrix4f(Y,z.u_inv_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_viewport_size:new i.Uniform2f(Y,z.u_viewport_size)}},Ur=function(Y,z,K){var O=Cs(K,1,z.zoom),$=Math.pow(2,z.zoom-K.tileID.overscaledZ),pe=K.tileID.overscaleFactor();return{u_matrix:Y,u_camera_to_center_distance:z.cameraToCenterDistance,u_pixels_to_tile_units:O,u_extrude_scale:[z.pixelsToGLUnits[0]/(O*$),z.pixelsToGLUnits[1]/(O*$)],u_overscale_factor:pe}},fi=function(Y,z,K){return{u_matrix:Y,u_inv_matrix:z,u_camera_to_center_distance:K.cameraToCenterDistance,u_viewport_size:[K.width,K.height]}},xi=function(Y,z){return{u_color:new i.UniformColor(Y,z.u_color),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_overlay:new i.Uniform1i(Y,z.u_overlay),u_overlay_scale:new i.Uniform1f(Y,z.u_overlay_scale)}},Fi=function(Y,z,K){return K===void 0&&(K=1),{u_matrix:Y,u_color:z,u_overlay:0,u_overlay_scale:K}},Xi=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},hn=function(Y){return{u_matrix:Y}},Ti=function(Y,z){return{u_extrude_scale:new i.Uniform1f(Y,z.u_extrude_scale),u_intensity:new i.Uniform1f(Y,z.u_intensity),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},qi=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world),u_image:new i.Uniform1i(Y,z.u_image),u_color_ramp:new i.Uniform1i(Y,z.u_color_ramp),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Ii=function(Y,z,K,O){return{u_matrix:Y,u_extrude_scale:Cs(z,1,K),u_intensity:O}},mi=function(Y,z,K,O){var $=i.create();i.ortho($,0,Y.width,Y.height,0,0,1);var pe=Y.context.gl;return{u_matrix:$,u_world:[pe.drawingBufferWidth,pe.drawingBufferHeight],u_image:K,u_color_ramp:O,u_opacity:z.paint.get("heatmap-opacity")}},Pn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_latrange:new i.Uniform2f(Y,z.u_latrange),u_light:new i.Uniform2f(Y,z.u_light),u_shadow:new i.UniformColor(Y,z.u_shadow),u_highlight:new i.UniformColor(Y,z.u_highlight),u_accent:new i.UniformColor(Y,z.u_accent)}},Ma=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_dimension:new i.Uniform2f(Y,z.u_dimension),u_zoom:new i.Uniform1f(Y,z.u_zoom),u_unpack:new i.Uniform4f(Y,z.u_unpack)}},Ta=function(Y,z,K){var O=K.paint.get("hillshade-shadow-color"),$=K.paint.get("hillshade-highlight-color"),pe=K.paint.get("hillshade-accent-color"),de=K.paint.get("hillshade-illumination-direction")*(Math.PI/180);K.paint.get("hillshade-illumination-anchor")==="viewport"&&(de-=Y.transform.angle);var Ie=!Y.options.moving;return{u_matrix:Y.transform.calculatePosMatrix(z.tileID.toUnwrapped(),Ie),u_image:0,u_latrange:qa(Y,z.tileID),u_light:[K.paint.get("hillshade-exaggeration"),de],u_shadow:O,u_highlight:$,u_accent:pe}},Ea=function(Y,z){var K=z.stride,O=i.create();return i.ortho(O,0,i.EXTENT,-i.EXTENT,0,0,1),i.translate(O,O,[0,-i.EXTENT,0]),{u_matrix:O,u_image:1,u_dimension:[K,K],u_zoom:Y.overscaledZ,u_unpack:z.getUnpackVector()}};function qa(Y,z){var K=Math.pow(2,z.canonical.z),O=z.canonical.y;return[new i.MercatorCoordinate(0,O/K).toLngLat().lat,new i.MercatorCoordinate(0,(O+1)/K).toLngLat().lat]}var Cn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels)}},sn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_image:new i.Uniform1i(Y,z.u_image),u_image_height:new i.Uniform1f(Y,z.u_image_height)}},Ua=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_image:new i.Uniform1i(Y,z.u_image),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},mo=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_patternscale_a:new i.Uniform2f(Y,z.u_patternscale_a),u_patternscale_b:new i.Uniform2f(Y,z.u_patternscale_b),u_sdfgamma:new i.Uniform1f(Y,z.u_sdfgamma),u_image:new i.Uniform1i(Y,z.u_image),u_tex_y_a:new i.Uniform1f(Y,z.u_tex_y_a),u_tex_y_b:new i.Uniform1f(Y,z.u_tex_y_b),u_mix:new i.Uniform1f(Y,z.u_mix)}},Xo=function(Y,z,K){var O=Y.transform;return{u_matrix:yl(Y,z,K),u_ratio:1/Cs(z,1,O.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_units_to_pixels:[1/O.pixelsToGLUnits[0],1/O.pixelsToGLUnits[1]]}},Ts=function(Y,z,K,O){return i.extend(Xo(Y,z,K),{u_image:0,u_image_height:O})},Qo=function(Y,z,K,O){var $=Y.transform,pe=Bo(z,$);return{u_matrix:yl(Y,z,K),u_texsize:z.imageAtlasTexture.size,u_ratio:1/Cs(z,1,$.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_image:0,u_scale:[pe,O.fromScale,O.toScale],u_fade:O.t,u_units_to_pixels:[1/$.pixelsToGLUnits[0],1/$.pixelsToGLUnits[1]]}},ys=function(Y,z,K,O,$){var pe=Y.transform,de=Y.lineAtlas,Ie=Bo(z,pe),$e=K.layout.get("line-cap")==="round",pt=de.getDash(O.from,$e),Kt=de.getDash(O.to,$e),ir=pt.width*$.fromScale,Jt=Kt.width*$.toScale;return i.extend(Xo(Y,z,K),{u_patternscale_a:[Ie/ir,-pt.height/2],u_patternscale_b:[Ie/Jt,-Kt.height/2],u_sdfgamma:de.width/(Math.min(ir,Jt)*256*i.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:pt.y,u_tex_y_b:Kt.y,u_mix:$.t})};function Bo(Y,z){return 1/Cs(Y,1,z.tileZoom)}function yl(Y,z,K){return Y.translatePosMatrix(z.tileID.posMatrix,z,K.paint.get("line-translate"),K.paint.get("line-translate-anchor"))}var Gs=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_tl_parent:new i.Uniform2f(Y,z.u_tl_parent),u_scale_parent:new i.Uniform1f(Y,z.u_scale_parent),u_buffer_scale:new i.Uniform1f(Y,z.u_buffer_scale),u_fade_t:new i.Uniform1f(Y,z.u_fade_t),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_image0:new i.Uniform1i(Y,z.u_image0),u_image1:new i.Uniform1i(Y,z.u_image1),u_brightness_low:new i.Uniform1f(Y,z.u_brightness_low),u_brightness_high:new i.Uniform1f(Y,z.u_brightness_high),u_saturation_factor:new i.Uniform1f(Y,z.u_saturation_factor),u_contrast_factor:new i.Uniform1f(Y,z.u_contrast_factor),u_spin_weights:new i.Uniform3f(Y,z.u_spin_weights)}},Rs=function(Y,z,K,O,$){return{u_matrix:Y,u_tl_parent:z,u_scale_parent:K,u_buffer_scale:1,u_fade_t:O.mix,u_opacity:O.opacity*$.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:$.paint.get("raster-brightness-min"),u_brightness_high:$.paint.get("raster-brightness-max"),u_saturation_factor:vs($.paint.get("raster-saturation")),u_contrast_factor:Ka($.paint.get("raster-contrast")),u_spin_weights:ia($.paint.get("raster-hue-rotate"))}};function ia(Y){Y*=Math.PI/180;var z=Math.sin(Y),K=Math.cos(Y);return[(2*K+1)/3,(-Math.sqrt(3)*z-K+1)/3,(Math.sqrt(3)*z-K+1)/3]}function Ka(Y){return Y>0?1/(1-Y):1+Y}function vs(Y){return Y>0?1-1/(1.001-Y):-Y}var Ko=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texture:new i.Uniform1i(Y,z.u_texture)}},nu=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texture:new i.Uniform1i(Y,z.u_texture),u_gamma_scale:new i.Uniform1f(Y,z.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,z.u_is_halo)}},Ru=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texsize_icon:new i.Uniform2f(Y,z.u_texsize_icon),u_texture:new i.Uniform1i(Y,z.u_texture),u_texture_icon:new i.Uniform1i(Y,z.u_texture_icon),u_gamma_scale:new i.Uniform1f(Y,z.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,z.u_is_halo)}},ac=function(Y,z,K,O,$,pe,de,Ie,$e,pt){var Kt=$.transform;return{u_is_size_zoom_constant:+(Y==="constant"||Y==="source"),u_is_size_feature_constant:+(Y==="constant"||Y==="camera"),u_size_t:z?z.uSizeT:0,u_size:z?z.uSize:0,u_camera_to_center_distance:Kt.cameraToCenterDistance,u_pitch:Kt.pitch/360*2*Math.PI,u_rotate_symbol:+K,u_aspect_ratio:Kt.width/Kt.height,u_fade_change:$.options.fadeDuration?$.symbolFadeChange:1,u_matrix:pe,u_label_plane_matrix:de,u_coord_matrix:Ie,u_is_text:+$e,u_pitch_with_map:+O,u_texsize:pt,u_texture:0}},mf=function(Y,z,K,O,$,pe,de,Ie,$e,pt,Kt){var ir=$.transform;return i.extend(ac(Y,z,K,O,$,pe,de,Ie,$e,pt),{u_gamma_scale:O?Math.cos(ir._pitch)*ir.cameraToCenterDistance:1,u_device_pixel_ratio:i.browser.devicePixelRatio,u_is_halo:+Kt})},bu=function(Y,z,K,O,$,pe,de,Ie,$e,pt){return i.extend(mf(Y,z,K,O,$,pe,de,Ie,!0,$e,!0),{u_texsize_icon:pt,u_texture_icon:1})},Kc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_color:new i.UniformColor(Y,z.u_color)}},Du=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_image:new i.Uniform1i(Y,z.u_image),u_pattern_tl_a:new i.Uniform2f(Y,z.u_pattern_tl_a),u_pattern_br_a:new i.Uniform2f(Y,z.u_pattern_br_a),u_pattern_tl_b:new i.Uniform2f(Y,z.u_pattern_tl_b),u_pattern_br_b:new i.Uniform2f(Y,z.u_pattern_br_b),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_mix:new i.Uniform1f(Y,z.u_mix),u_pattern_size_a:new i.Uniform2f(Y,z.u_pattern_size_a),u_pattern_size_b:new i.Uniform2f(Y,z.u_pattern_size_b),u_scale_a:new i.Uniform1f(Y,z.u_scale_a),u_scale_b:new i.Uniform1f(Y,z.u_scale_b),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_tile_units_to_pixels:new i.Uniform1f(Y,z.u_tile_units_to_pixels)}},Dc=function(Y,z,K){return{u_matrix:Y,u_opacity:z,u_color:K}},Da=function(Y,z,K,O,$,pe){return i.extend(pf(O,pe,K,$),{u_matrix:Y,u_opacity:z})},eo={fillExtrusion:Ph,fillExtrusionPattern:Dl,fill:Rc,fillPattern:gc,fillOutline:hl,fillOutlinePattern:iu,circle:gt,collisionBox:wr,collisionCircle:vr,debug:xi,clippingMask:Xi,heatmap:Ti,heatmapTexture:qi,hillshade:Pn,hillshadePrepare:Ma,line:Cn,lineGradient:sn,linePattern:Ua,lineSDF:mo,raster:Gs,symbolIcon:Ko,symbolSDF:nu,symbolTextAndIcon:Ru,background:Kc,backgroundPattern:Du},Jc;function yc(Y,z,K,O,$,pe,de){for(var Ie=Y.context,$e=Ie.gl,pt=Y.useProgram("collisionBox"),Kt=[],ir=0,Jt=0,vt=0;vt0){var Ar=i.create(),gr=dr;i.mul(Ar,rr.placementInvProjMatrix,Y.transform.glCoordMatrix),i.mul(Ar,Ar,rr.placementViewportMatrix),Kt.push({circleArray:kr,circleOffset:Jt,transform:gr,invTransform:Ar}),ir+=kr.length/4,Jt=ir}pr&&pt.draw(Ie,$e.LINES,Wi.disabled,$i.disabled,Y.colorModeForRenderPass(),yr.disabled,Ur(dr,Y.transform,Wt),K.id,pr.layoutVertexBuffer,pr.indexBuffer,pr.segments,null,Y.transform.zoom,null,null,pr.collisionVertexBuffer)}}if(!(!de||!Kt.length)){var Cr=Y.useProgram("collisionCircle"),cr=new i.StructArrayLayout2f1f2i16;cr.resize(ir*4),cr._trim();for(var Gr=0,ei=0,yi=Kt;ei=0&&(Pt[rr.associatedIconIndex]={shiftedAnchor:ln,angle:Qn})}}if(Kt){vt.clear();for(var rn=Y.icon.placedSymbolArray,bn=0;bn0){var de=i.browser.now(),Ie=(de-Y.timeAdded)/pe,$e=z?(de-z.timeAdded)/pe:-1,pt=K.getSource(),Kt=$.coveringZoomLevel({tileSize:pt.tileSize,roundZoom:pt.roundZoom}),ir=!z||Math.abs(z.tileID.overscaledZ-Kt)>Math.abs(Y.tileID.overscaledZ-Kt),Jt=ir&&Y.refreshedUponExpiration?1:i.clamp(ir?Ie:1-$e,0,1);return Y.refreshedUponExpiration&&Ie>=1&&(Y.refreshedUponExpiration=!1),z?{opacity:1,mix:1-Jt}:{opacity:Jt,mix:0}}else return{opacity:1,mix:0}}function Ut(Y,z,K){var O=K.paint.get("background-color"),$=K.paint.get("background-opacity");if($!==0){var pe=Y.context,de=pe.gl,Ie=Y.transform,$e=Ie.tileSize,pt=K.paint.get("background-pattern");if(!Y.isPatternMissing(pt)){var Kt=!pt&&O.a===1&&$===1&&Y.opaquePassEnabledForLayer()?"opaque":"translucent";if(Y.renderPass===Kt){var ir=$i.disabled,Jt=Y.depthModeForSublayer(0,Kt==="opaque"?Wi.ReadWrite:Wi.ReadOnly),vt=Y.colorModeForRenderPass(),Pt=Y.useProgram(pt?"backgroundPattern":"background"),Wt=Ie.coveringTiles({tileSize:$e});pt&&(pe.activeTexture.set(de.TEXTURE0),Y.imageManager.bind(Y.context));for(var rr=K.getCrossfadeParameters(),dr=0,pr=Wt;dr "+K.overscaledZ);var dr=rr+" "+vt+"kb";Ga(Y,dr),de.draw(O,$.TRIANGLES,Ie,$e,ft.alphaBlended,yr.disabled,Fi(pe,i.Color.transparent,Wt),Kt,Y.debugBuffer,Y.quadTriangleIndexBuffer,Y.debugSegments)}function Ga(Y,z){Y.initDebugOverlayCanvas();var K=Y.debugOverlayCanvas,O=Y.context.gl,$=Y.debugOverlayCanvas.getContext("2d");$.clearRect(0,0,K.width,K.height),$.shadowColor="white",$.shadowBlur=2,$.lineWidth=1.5,$.strokeStyle="white",$.textBaseline="top",$.font="bold 36px Open Sans, sans-serif",$.fillText(z,5,5),$.strokeText(z,5,5),Y.debugOverlayTexture.update(K),Y.debugOverlayTexture.bind(O.LINEAR,O.CLAMP_TO_EDGE)}function To(Y,z,K){var O=Y.context,$=K.implementation;if(Y.renderPass==="offscreen"){var pe=$.prerender;pe&&(Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),pe.call($,O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState())}else if(Y.renderPass==="translucent"){Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),O.setStencilMode($i.disabled);var de=$.renderingMode==="3d"?new Wi(Y.context.gl.LEQUAL,Wi.ReadWrite,Y.depthRangeFor3D):Y.depthModeForSublayer(0,Wi.ReadOnly);O.setDepthMode(de),$.render(O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState(),O.bindFramebuffer.set(null)}}var Wa={symbol:w,circle:it,heatmap:yt,line:Sr,fill:he,"fill-extrusion":Pe,hillshade:Je,raster:Mt,background:Ut,debug:pa,custom:To},co=function(z,K){this.context=new Fr(z),this.transform=K,this._tileTextures={},this.setup(),this.numSublayers=Zr.maxUnderzooming+Zr.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new rh,this.gpuTimers={}};co.prototype.resize=function(z,K){if(this.width=z*i.browser.devicePixelRatio,this.height=K*i.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var O=0,$=this.style._order;O<$.length;O+=1){var pe=$[O];this.style._layers[pe].resize()}},co.prototype.setup=function(){var z=this.context,K=new i.StructArrayLayout2i4;K.emplaceBack(0,0),K.emplaceBack(i.EXTENT,0),K.emplaceBack(0,i.EXTENT),K.emplaceBack(i.EXTENT,i.EXTENT),this.tileExtentBuffer=z.createVertexBuffer(K,kc.members),this.tileExtentSegments=i.SegmentVector.simpleSegment(0,0,4,2);var O=new i.StructArrayLayout2i4;O.emplaceBack(0,0),O.emplaceBack(i.EXTENT,0),O.emplaceBack(0,i.EXTENT),O.emplaceBack(i.EXTENT,i.EXTENT),this.debugBuffer=z.createVertexBuffer(O,kc.members),this.debugSegments=i.SegmentVector.simpleSegment(0,0,4,5);var $=new i.StructArrayLayout4i8;$.emplaceBack(0,0,0,0),$.emplaceBack(i.EXTENT,0,i.EXTENT,0),$.emplaceBack(0,i.EXTENT,0,i.EXTENT),$.emplaceBack(i.EXTENT,i.EXTENT,i.EXTENT,i.EXTENT),this.rasterBoundsBuffer=z.createVertexBuffer($,Me.members),this.rasterBoundsSegments=i.SegmentVector.simpleSegment(0,0,4,2);var pe=new i.StructArrayLayout2i4;pe.emplaceBack(0,0),pe.emplaceBack(1,0),pe.emplaceBack(0,1),pe.emplaceBack(1,1),this.viewportBuffer=z.createVertexBuffer(pe,kc.members),this.viewportSegments=i.SegmentVector.simpleSegment(0,0,4,2);var de=new i.StructArrayLayout1ui2;de.emplaceBack(0),de.emplaceBack(1),de.emplaceBack(3),de.emplaceBack(2),de.emplaceBack(0),this.tileBorderIndexBuffer=z.createIndexBuffer(de);var Ie=new i.StructArrayLayout3ui6;Ie.emplaceBack(0,1,2),Ie.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=z.createIndexBuffer(Ie),this.emptyTexture=new i.Texture(z,{width:1,height:1,data:new Uint8Array([0,0,0,0])},z.gl.RGBA);var $e=this.context.gl;this.stencilClearMode=new $i({func:$e.ALWAYS,mask:0},0,255,$e.ZERO,$e.ZERO,$e.ZERO)},co.prototype.clearStencil=function(){var z=this.context,K=z.gl;this.nextStencilID=1,this.currentStencilSource=void 0;var O=i.create();i.ortho(O,0,this.width,this.height,0,0,1),i.scale(O,O,[K.drawingBufferWidth,K.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(z,K.TRIANGLES,Wi.disabled,this.stencilClearMode,ft.disabled,yr.disabled,hn(O),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)},co.prototype._renderTileClippingMasks=function(z,K){if(!(this.currentStencilSource===z.source||!z.isTileClipped()||!K||!K.length)){this.currentStencilSource=z.source;var O=this.context,$=O.gl;this.nextStencilID+K.length>256&&this.clearStencil(),O.setColorMode(ft.disabled),O.setDepthMode(Wi.disabled);var pe=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var de=0,Ie=K;de256&&this.clearStencil();var z=this.nextStencilID++,K=this.context.gl;return new $i({func:K.NOTEQUAL,mask:255},z,255,K.KEEP,K.KEEP,K.REPLACE)},co.prototype.stencilModeForClipping=function(z){var K=this.context.gl;return new $i({func:K.EQUAL,mask:255},this._tileClippingMaskIDs[z.key],0,K.KEEP,K.KEEP,K.REPLACE)},co.prototype.stencilConfigForOverlap=function(z){var K,O=this.context.gl,$=z.sort(function(pt,Kt){return Kt.overscaledZ-pt.overscaledZ}),pe=$[$.length-1].overscaledZ,de=$[0].overscaledZ-pe+1;if(de>1){this.currentStencilSource=void 0,this.nextStencilID+de>256&&this.clearStencil();for(var Ie={},$e=0;$e=0;this.currentLayer--){var Ar=this.style._layers[$[this.currentLayer]],gr=pe[Ar.source],Cr=$e[Ar.source];this._renderTileClippingMasks(Ar,Cr),this.renderLayer(this,gr,Ar,Cr)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<$.length;this.currentLayer++){var cr=this.style._layers[$[this.currentLayer]],Gr=pe[cr.source],ei=(cr.type==="symbol"?Kt:pt)[cr.source];this._renderTileClippingMasks(cr,$e[cr.source]),this.renderLayer(this,Gr,cr,ei)}if(this.options.showTileBoundaries){var yi,tn,Ri=i.values(this.style._layers);Ri.forEach(function(ln){ln.source&&!ln.isHidden(O.transform.zoom)&&(ln.source!==(tn&&tn.id)&&(tn=O.style.sourceCaches[ln.source]),(!yi||yi.getSource().maxzoom0?K.pop():null},co.prototype.isPatternMissing=function(z){if(!z)return!1;if(!z.from||!z.to)return!0;var K=this.imageManager.getPattern(z.from.toString()),O=this.imageManager.getPattern(z.to.toString());return!K||!O},co.prototype.useProgram=function(z,K){this.cache=this.cache||{};var O=""+z+(K?K.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[O]||(this.cache[O]=new Vf(this.context,z,Pf[z],K,eo[z],this._showOverdrawInspector)),this.cache[O]},co.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},co.prototype.setBaseState=function(){var z=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(z.FUNC_ADD)},co.prototype.initDebugOverlayCanvas=function(){if(this.debugOverlayCanvas==null){this.debugOverlayCanvas=i.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var z=this.context.gl;this.debugOverlayTexture=new i.Texture(this.context,this.debugOverlayCanvas,z.RGBA)}},co.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var Ro=function(z,K){this.points=z,this.planes=K};Ro.fromInvProjectionMatrix=function(z,K,O){var $=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]],pe=Math.pow(2,O),de=$.map(function(pt){return i.transformMat4([],pt,z)}).map(function(pt){return i.scale$1([],pt,1/pt[3]/K*pe)}),Ie=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],$e=Ie.map(function(pt){var Kt=i.sub([],de[pt[0]],de[pt[1]]),ir=i.sub([],de[pt[2]],de[pt[1]]),Jt=i.normalize([],i.cross([],Kt,ir)),vt=-i.dot(Jt,de[pt[1]]);return Jt.concat(vt)});return new Ro(de,$e)};var Ds=function(z,K){this.min=z,this.max=K,this.center=i.scale$2([],i.add([],this.min,this.max),.5)};Ds.prototype.quadrant=function(z){for(var K=[z%2===0,z<2],O=i.clone$2(this.min),$=i.clone$2(this.max),pe=0;pe=0;if(de===0)return 0;de!==K.length&&(O=!1)}if(O)return 2;for(var $e=0;$e<3;$e++){for(var pt=Number.MAX_VALUE,Kt=-Number.MAX_VALUE,ir=0;irthis.max[$e]-this.min[$e])return 0}return 1};var As=function(z,K,O,$){if(z===void 0&&(z=0),K===void 0&&(K=0),O===void 0&&(O=0),$===void 0&&($=0),isNaN(z)||z<0||isNaN(K)||K<0||isNaN(O)||O<0||isNaN($)||$<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=z,this.bottom=K,this.left=O,this.right=$};As.prototype.interpolate=function(z,K,O){return K.top!=null&&z.top!=null&&(this.top=i.number(z.top,K.top,O)),K.bottom!=null&&z.bottom!=null&&(this.bottom=i.number(z.bottom,K.bottom,O)),K.left!=null&&z.left!=null&&(this.left=i.number(z.left,K.left,O)),K.right!=null&&z.right!=null&&(this.right=i.number(z.right,K.right,O)),this},As.prototype.getCenter=function(z,K){var O=i.clamp((this.left+z-this.right)/2,0,z),$=i.clamp((this.top+K-this.bottom)/2,0,K);return new i.Point(O,$)},As.prototype.equals=function(z){return this.top===z.top&&this.bottom===z.bottom&&this.left===z.left&&this.right===z.right},As.prototype.clone=function(){return new As(this.top,this.bottom,this.left,this.right)},As.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var yo=function(z,K,O,$,pe){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=pe===void 0?!0:pe,this._minZoom=z||0,this._maxZoom=K||22,this._minPitch=O==null?0:O,this._maxPitch=$==null?60:$,this.setMaxBounds(),this.width=0,this.height=0,this._center=new i.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new As,this._posMatrixCache={},this._alignedPosMatrixCache={}},po={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};yo.prototype.clone=function(){var z=new yo(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return z.tileSize=this.tileSize,z.latRange=this.latRange,z.width=this.width,z.height=this.height,z._center=this._center,z.zoom=this.zoom,z.angle=this.angle,z._fov=this._fov,z._pitch=this._pitch,z._unmodified=this._unmodified,z._edgeInsets=this._edgeInsets.clone(),z._calcMatrices(),z},po.minZoom.get=function(){return this._minZoom},po.minZoom.set=function(Y){this._minZoom!==Y&&(this._minZoom=Y,this.zoom=Math.max(this.zoom,Y))},po.maxZoom.get=function(){return this._maxZoom},po.maxZoom.set=function(Y){this._maxZoom!==Y&&(this._maxZoom=Y,this.zoom=Math.min(this.zoom,Y))},po.minPitch.get=function(){return this._minPitch},po.minPitch.set=function(Y){this._minPitch!==Y&&(this._minPitch=Y,this.pitch=Math.max(this.pitch,Y))},po.maxPitch.get=function(){return this._maxPitch},po.maxPitch.set=function(Y){this._maxPitch!==Y&&(this._maxPitch=Y,this.pitch=Math.min(this.pitch,Y))},po.renderWorldCopies.get=function(){return this._renderWorldCopies},po.renderWorldCopies.set=function(Y){Y===void 0?Y=!0:Y===null&&(Y=!1),this._renderWorldCopies=Y},po.worldSize.get=function(){return this.tileSize*this.scale},po.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},po.size.get=function(){return new i.Point(this.width,this.height)},po.bearing.get=function(){return-this.angle/Math.PI*180},po.bearing.set=function(Y){var z=-i.wrap(Y,-180,180)*Math.PI/180;this.angle!==z&&(this._unmodified=!1,this.angle=z,this._calcMatrices(),this.rotationMatrix=i.create$2(),i.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},po.pitch.get=function(){return this._pitch/Math.PI*180},po.pitch.set=function(Y){var z=i.clamp(Y,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==z&&(this._unmodified=!1,this._pitch=z,this._calcMatrices())},po.fov.get=function(){return this._fov/Math.PI*180},po.fov.set=function(Y){Y=Math.max(.01,Math.min(60,Y)),this._fov!==Y&&(this._unmodified=!1,this._fov=Y/180*Math.PI,this._calcMatrices())},po.zoom.get=function(){return this._zoom},po.zoom.set=function(Y){var z=Math.min(Math.max(Y,this.minZoom),this.maxZoom);this._zoom!==z&&(this._unmodified=!1,this._zoom=z,this.scale=this.zoomScale(z),this.tileZoom=Math.floor(z),this.zoomFraction=z-this.tileZoom,this._constrain(),this._calcMatrices())},po.center.get=function(){return this._center},po.center.set=function(Y){Y.lat===this._center.lat&&Y.lng===this._center.lng||(this._unmodified=!1,this._center=Y,this._constrain(),this._calcMatrices())},po.padding.get=function(){return this._edgeInsets.toJSON()},po.padding.set=function(Y){this._edgeInsets.equals(Y)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,Y,1),this._calcMatrices())},po.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},yo.prototype.isPaddingEqual=function(z){return this._edgeInsets.equals(z)},yo.prototype.interpolatePadding=function(z,K,O){this._unmodified=!1,this._edgeInsets.interpolate(z,K,O),this._constrain(),this._calcMatrices()},yo.prototype.coveringZoomLevel=function(z){var K=(z.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/z.tileSize));return Math.max(0,K)},yo.prototype.getVisibleUnwrappedCoordinates=function(z){var K=[new i.UnwrappedTileID(0,z)];if(this._renderWorldCopies)for(var O=this.pointCoordinate(new i.Point(0,0)),$=this.pointCoordinate(new i.Point(this.width,0)),pe=this.pointCoordinate(new i.Point(this.width,this.height)),de=this.pointCoordinate(new i.Point(0,this.height)),Ie=Math.floor(Math.min(O.x,$.x,pe.x,de.x)),$e=Math.floor(Math.max(O.x,$.x,pe.x,de.x)),pt=1,Kt=Ie-pt;Kt<=$e+pt;Kt++)Kt!==0&&K.push(new i.UnwrappedTileID(Kt,z));return K},yo.prototype.coveringTiles=function(z){var K=this.coveringZoomLevel(z),O=K;if(z.minzoom!==void 0&&Kz.maxzoom&&(K=z.maxzoom);var $=i.MercatorCoordinate.fromLngLat(this.center),pe=Math.pow(2,K),de=[pe*$.x,pe*$.y,0],Ie=Ro.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,K),$e=z.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&($e=K);var pt=3,Kt=function(Ri){return{aabb:new Ds([Ri*pe,0,0],[(Ri+1)*pe,pe,0]),zoom:0,x:0,y:0,wrap:Ri,fullyVisible:!1}},ir=[],Jt=[],vt=K,Pt=z.reparseOverscaled?O:K;if(this._renderWorldCopies)for(var Wt=1;Wt<=3;Wt++)ir.push(Kt(-Wt)),ir.push(Kt(Wt));for(ir.push(Kt(0));ir.length>0;){var rr=ir.pop(),dr=rr.x,pr=rr.y,kr=rr.fullyVisible;if(!kr){var Ar=rr.aabb.intersects(Ie);if(Ar===0)continue;kr=Ar===2}var gr=rr.aabb.distanceX(de),Cr=rr.aabb.distanceY(de),cr=Math.max(Math.abs(gr),Math.abs(Cr)),Gr=pt+(1<Gr&&rr.zoom>=$e){Jt.push({tileID:new i.OverscaledTileID(rr.zoom===vt?Pt:rr.zoom,rr.wrap,rr.zoom,dr,pr),distanceSq:i.sqrLen([de[0]-.5-dr,de[1]-.5-pr])});continue}for(var ei=0;ei<4;ei++){var yi=(dr<<1)+ei%2,tn=(pr<<1)+(ei>>1);ir.push({aabb:rr.aabb.quadrant(ei),zoom:rr.zoom+1,x:yi,y:tn,wrap:rr.wrap,fullyVisible:kr})}}return Jt.sort(function(Ri,ln){return Ri.distanceSq-ln.distanceSq}).map(function(Ri){return Ri.tileID})},yo.prototype.resize=function(z,K){this.width=z,this.height=K,this.pixelsToGLUnits=[2/z,-2/K],this._constrain(),this._calcMatrices()},po.unmodified.get=function(){return this._unmodified},yo.prototype.zoomScale=function(z){return Math.pow(2,z)},yo.prototype.scaleZoom=function(z){return Math.log(z)/Math.LN2},yo.prototype.project=function(z){var K=i.clamp(z.lat,-this.maxValidLatitude,this.maxValidLatitude);return new i.Point(i.mercatorXfromLng(z.lng)*this.worldSize,i.mercatorYfromLat(K)*this.worldSize)},yo.prototype.unproject=function(z){return new i.MercatorCoordinate(z.x/this.worldSize,z.y/this.worldSize).toLngLat()},po.point.get=function(){return this.project(this.center)},yo.prototype.setLocationAtPoint=function(z,K){var O=this.pointCoordinate(K),$=this.pointCoordinate(this.centerPoint),pe=this.locationCoordinate(z),de=new i.MercatorCoordinate(pe.x-(O.x-$.x),pe.y-(O.y-$.y));this.center=this.coordinateLocation(de),this._renderWorldCopies&&(this.center=this.center.wrap())},yo.prototype.locationPoint=function(z){return this.coordinatePoint(this.locationCoordinate(z))},yo.prototype.pointLocation=function(z){return this.coordinateLocation(this.pointCoordinate(z))},yo.prototype.locationCoordinate=function(z){return i.MercatorCoordinate.fromLngLat(z)},yo.prototype.coordinateLocation=function(z){return z.toLngLat()},yo.prototype.pointCoordinate=function(z){var K=0,O=[z.x,z.y,0,1],$=[z.x,z.y,1,1];i.transformMat4(O,O,this.pixelMatrixInverse),i.transformMat4($,$,this.pixelMatrixInverse);var pe=O[3],de=$[3],Ie=O[0]/pe,$e=$[0]/de,pt=O[1]/pe,Kt=$[1]/de,ir=O[2]/pe,Jt=$[2]/de,vt=ir===Jt?0:(K-ir)/(Jt-ir);return new i.MercatorCoordinate(i.number(Ie,$e,vt)/this.worldSize,i.number(pt,Kt,vt)/this.worldSize)},yo.prototype.coordinatePoint=function(z){var K=[z.x*this.worldSize,z.y*this.worldSize,0,1];return i.transformMat4(K,K,this.pixelMatrix),new i.Point(K[0]/K[3],K[1]/K[3])},yo.prototype.getBounds=function(){return new i.LngLatBounds().extend(this.pointLocation(new i.Point(0,0))).extend(this.pointLocation(new i.Point(this.width,0))).extend(this.pointLocation(new i.Point(this.width,this.height))).extend(this.pointLocation(new i.Point(0,this.height)))},yo.prototype.getMaxBounds=function(){return!this.latRange||this.latRange.length!==2||!this.lngRange||this.lngRange.length!==2?null:new i.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]])},yo.prototype.setMaxBounds=function(z){z?(this.lngRange=[z.getWest(),z.getEast()],this.latRange=[z.getSouth(),z.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},yo.prototype.calculatePosMatrix=function(z,K){K===void 0&&(K=!1);var O=z.key,$=K?this._alignedPosMatrixCache:this._posMatrixCache;if($[O])return $[O];var pe=z.canonical,de=this.worldSize/this.zoomScale(pe.z),Ie=pe.x+Math.pow(2,pe.z)*z.wrap,$e=i.identity(new Float64Array(16));return i.translate($e,$e,[Ie*de,pe.y*de,0]),i.scale($e,$e,[de/i.EXTENT,de/i.EXTENT,1]),i.multiply($e,K?this.alignedProjMatrix:this.projMatrix,$e),$[O]=new Float32Array($e),$[O]},yo.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},yo.prototype._constrain=function(){if(!(!this.center||!this.width||!this.height||this._constraining)){this._constraining=!0;var z=-90,K=90,O=-180,$=180,pe,de,Ie,$e,pt=this.size,Kt=this._unmodified;if(this.latRange){var ir=this.latRange;z=i.mercatorYfromLat(ir[1])*this.worldSize,K=i.mercatorYfromLat(ir[0])*this.worldSize,pe=K-zK&&($e=K-rr)}if(this.lngRange){var dr=vt.x,pr=pt.x/2;dr-pr$&&(Ie=$-pr)}(Ie!==void 0||$e!==void 0)&&(this.center=this.unproject(new i.Point(Ie!==void 0?Ie:vt.x,$e!==void 0?$e:vt.y))),this._unmodified=Kt,this._constraining=!1}},yo.prototype._calcMatrices=function(){if(this.height){var z=this._fov/2,K=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(z)*this.height;var O=Math.PI/2+this._pitch,$=this._fov*(.5+K.y/this.height),pe=Math.sin($)*this.cameraToCenterDistance/Math.sin(i.clamp(Math.PI-O-$,.01,Math.PI-.01)),de=this.point,Ie=de.x,$e=de.y,pt=Math.cos(Math.PI/2-this._pitch)*pe+this.cameraToCenterDistance,Kt=pt*1.01,ir=this.height/50,Jt=new Float64Array(16);i.perspective(Jt,this._fov,this.width/this.height,ir,Kt),Jt[8]=-K.x*2/this.width,Jt[9]=K.y*2/this.height,i.scale(Jt,Jt,[1,-1,1]),i.translate(Jt,Jt,[0,0,-this.cameraToCenterDistance]),i.rotateX(Jt,Jt,this._pitch),i.rotateZ(Jt,Jt,this.angle),i.translate(Jt,Jt,[-Ie,-$e,0]),this.mercatorMatrix=i.scale([],Jt,[this.worldSize,this.worldSize,this.worldSize]),i.scale(Jt,Jt,[1,1,i.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=Jt,this.invProjMatrix=i.invert([],this.projMatrix);var vt=this.width%2/2,Pt=this.height%2/2,Wt=Math.cos(this.angle),rr=Math.sin(this.angle),dr=Ie-Math.round(Ie)+Wt*vt+rr*Pt,pr=$e-Math.round($e)+Wt*Pt+rr*vt,kr=new Float64Array(Jt);if(i.translate(kr,kr,[dr>.5?dr-1:dr,pr>.5?pr-1:pr,0]),this.alignedProjMatrix=kr,Jt=i.create(),i.scale(Jt,Jt,[this.width/2,-this.height/2,1]),i.translate(Jt,Jt,[1,-1,0]),this.labelPlaneMatrix=Jt,Jt=i.create(),i.scale(Jt,Jt,[1,-1,1]),i.translate(Jt,Jt,[-1,-1,0]),i.scale(Jt,Jt,[2/this.width,2/this.height,1]),this.glCoordMatrix=Jt,this.pixelMatrix=i.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),Jt=i.invert(new Float64Array(16),this.pixelMatrix),!Jt)throw new Error("failed to invert matrix");this.pixelMatrixInverse=Jt,this._posMatrixCache={},this._alignedPosMatrixCache={}}},yo.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var z=this.pointCoordinate(new i.Point(0,0)),K=[z.x*this.worldSize,z.y*this.worldSize,0,1],O=i.transformMat4(K,K,this.pixelMatrix);return O[3]/this.cameraToCenterDistance},yo.prototype.getCameraPoint=function(){var z=this._pitch,K=Math.tan(z)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new i.Point(0,K))},yo.prototype.getCameraQueryGeometry=function(z){var K=this.getCameraPoint();if(z.length===1)return[z[0],K];for(var O=K.x,$=K.y,pe=K.x,de=K.y,Ie=0,$e=z;Ie<$e.length;Ie+=1){var pt=$e[Ie];O=Math.min(O,pt.x),$=Math.min($,pt.y),pe=Math.max(pe,pt.x),de=Math.max(de,pt.y)}return[new i.Point(O,$),new i.Point(pe,$),new i.Point(pe,de),new i.Point(O,de),new i.Point(O,$)]},Object.defineProperties(yo.prototype,po);function _l(Y,z){var K=!1,O=null,$=function(){O=null,K&&(Y(),O=setTimeout($,z),K=!1)};return function(){return K=!0,O||$(),O}}var Hl=function(z){this._hashName=z&&encodeURIComponent(z),i.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=_l(this._updateHashUnthrottled.bind(this),30*1e3/100)};Hl.prototype.addTo=function(z){return this._map=z,i.window.addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this},Hl.prototype.remove=function(){return i.window.removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this},Hl.prototype.getHashString=function(z){var K=this._map.getCenter(),O=Math.round(this._map.getZoom()*100)/100,$=Math.ceil((O*Math.LN2+Math.log(512/360/.5))/Math.LN10),pe=Math.pow(10,$),de=Math.round(K.lng*pe)/pe,Ie=Math.round(K.lat*pe)/pe,$e=this._map.getBearing(),pt=this._map.getPitch(),Kt="";if(z?Kt+="/"+de+"/"+Ie+"/"+O:Kt+=O+"/"+Ie+"/"+de,($e||pt)&&(Kt+="/"+Math.round($e*10)/10),pt&&(Kt+="/"+Math.round(pt)),this._hashName){var ir=this._hashName,Jt=!1,vt=i.window.location.hash.slice(1).split("&").map(function(Pt){var Wt=Pt.split("=")[0];return Wt===ir?(Jt=!0,Wt+"="+Kt):Pt}).filter(function(Pt){return Pt});return Jt||vt.push(ir+"="+Kt),"#"+vt.join("&")}return"#"+Kt},Hl.prototype._getCurrentHash=function(){var z=this,K=i.window.location.hash.replace("#","");if(this._hashName){var O;return K.split("&").map(function($){return $.split("=")}).forEach(function($){$[0]===z._hashName&&(O=$)}),(O&&O[1]||"").split("/")}return K.split("/")},Hl.prototype._onHashChange=function(){var z=this._getCurrentHash();if(z.length>=3&&!z.some(function(O){return isNaN(O)})){var K=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(z[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+z[2],+z[1]],zoom:+z[0],bearing:K,pitch:+(z[4]||0)}),!0}return!1},Hl.prototype._updateHashUnthrottled=function(){var z=i.window.location.href.replace(/(#.+)?$/,this.getHashString());try{i.window.history.replaceState(i.window.history.state,null,z)}catch(K){}};var Zu={linearity:.3,easing:i.bezier(0,0,.3,1)},cu=i.extend({deceleration:2500,maxSpeed:1400},Zu),el=i.extend({deceleration:20,maxSpeed:1400},Zu),au=i.extend({deceleration:1e3,maxSpeed:360},Zu),zc=i.extend({deceleration:1e3,maxSpeed:90},Zu),zl=function(z){this._map=z,this.clear()};zl.prototype.clear=function(){this._inertiaBuffer=[]},zl.prototype.record=function(z){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:i.browser.now(),settings:z})},zl.prototype._drainInertiaBuffer=function(){for(var z=this._inertiaBuffer,K=i.browser.now(),O=160;z.length>0&&K-z[0].time>O;)z.shift()},zl.prototype._onMoveEnd=function(z){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var K={zoom:0,bearing:0,pitch:0,pan:new i.Point(0,0),pinchAround:void 0,around:void 0},O=0,$=this._inertiaBuffer;O<$.length;O+=1){var pe=$[O],de=pe.settings;K.zoom+=de.zoomDelta||0,K.bearing+=de.bearingDelta||0,K.pitch+=de.pitchDelta||0,de.panDelta&&K.pan._add(de.panDelta),de.around&&(K.around=de.around),de.pinchAround&&(K.pinchAround=de.pinchAround)}var Ie=this._inertiaBuffer[this._inertiaBuffer.length-1],$e=Ie.time-this._inertiaBuffer[0].time,pt={};if(K.pan.mag()){var Kt=Z(K.pan.mag(),$e,i.extend({},cu,z||{}));pt.offset=K.pan.mult(Kt.amount/K.pan.mag()),pt.center=this._map.transform.center,Fl(pt,Kt)}if(K.zoom){var ir=Z(K.zoom,$e,el);pt.zoom=this._map.transform.zoom+ir.amount,Fl(pt,ir)}if(K.bearing){var Jt=Z(K.bearing,$e,au);pt.bearing=this._map.transform.bearing+i.clamp(Jt.amount,-179,179),Fl(pt,Jt)}if(K.pitch){var vt=Z(K.pitch,$e,zc);pt.pitch=this._map.transform.pitch+vt.amount,Fl(pt,vt)}if(pt.zoom||pt.bearing){var Pt=K.pinchAround===void 0?K.around:K.pinchAround;pt.around=Pt?this._map.unproject(Pt):this._map.getCenter()}return this.clear(),i.extend(pt,{noMoveStart:!0})}};function Fl(Y,z){(!Y.duration||Y.duration=this._clickTolerance||this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.dblclick=function(z){return this._firePreventable(new oe(z.type,this._map,z))},Ue.prototype.mouseover=function(z){this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.mouseout=function(z){this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.touchstart=function(z){return this._firePreventable(new we(z.type,this._map,z))},Ue.prototype.touchmove=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype.touchend=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype.touchcancel=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype._firePreventable=function(z){if(this._map.fire(z),z.defaultPrevented)return{}},Ue.prototype.isEnabled=function(){return!0},Ue.prototype.isActive=function(){return!1},Ue.prototype.enable=function(){},Ue.prototype.disable=function(){};var We=function(z){this._map=z};We.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},We.prototype.mousemove=function(z){this._map.fire(new oe(z.type,this._map,z))},We.prototype.mousedown=function(){this._delayContextMenu=!0},We.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new oe("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},We.prototype.contextmenu=function(z){this._delayContextMenu?this._contextMenuEvent=z:this._map.fire(new oe(z.type,this._map,z)),this._map.listens("contextmenu")&&z.preventDefault()},We.prototype.isEnabled=function(){return!0},We.prototype.isActive=function(){return!1},We.prototype.enable=function(){},We.prototype.disable=function(){};var wt=function(z,K){this._map=z,this._el=z.getCanvasContainer(),this._container=z.getContainer(),this._clickTolerance=K.clickTolerance||1};wt.prototype.isEnabled=function(){return!!this._enabled},wt.prototype.isActive=function(){return!!this._active},wt.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},wt.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},wt.prototype.mousedown=function(z,K){this.isEnabled()&&z.shiftKey&&z.button===0&&(o.disableDrag(),this._startPos=this._lastPos=K,this._active=!0)},wt.prototype.mousemoveWindow=function(z,K){if(this._active){var O=K;if(!(this._lastPos.equals(O)||!this._box&&O.dist(this._startPos)this.numTouches)&&(this.aborted=!0),!this.aborted&&(this.startTime===void 0&&(this.startTime=z.timeStamp),O.length===this.numTouches&&(this.centroid=zt(K),this.touches=tt(O,K)))},Ir.prototype.touchmove=function(z,K,O){if(!(this.aborted||!this.centroid)){var $=tt(O,K);for(var pe in this.touches){var de=this.touches[pe],Ie=$[pe];(!Ie||Ie.dist(de)>Dr)&&(this.aborted=!0)}}},Ir.prototype.touchend=function(z,K,O){if((!this.centroid||z.timeStamp-this.startTime>lr)&&(this.aborted=!0),O.length===0){var $=!this.aborted&&this.centroid;if(this.reset(),$)return $}};var oi=function(z){this.singleTap=new Ir(z),this.numTaps=z.numTaps,this.reset()};oi.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},oi.prototype.touchstart=function(z,K,O){this.singleTap.touchstart(z,K,O)},oi.prototype.touchmove=function(z,K,O){this.singleTap.touchmove(z,K,O)},oi.prototype.touchend=function(z,K,O){var $=this.singleTap.touchend(z,K,O);if($){var pe=z.timeStamp-this.lastTime0&&(this._active=!0);var $=tt(O,K),pe=new i.Point(0,0),de=new i.Point(0,0),Ie=0;for(var $e in $){var pt=$[$e],Kt=this._touches[$e];Kt&&(pe._add(pt),de._add(pt.sub(Kt)),Ie++,$[$e]=pt)}if(this._touches=$,!(IeMath.abs(Y.x)}var pn=100,za=function(Y){function z(){Y.apply(this,arguments)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.reset=function(){Y.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},z.prototype._start=function(O){this._lastPoints=O,Ns(O[0].sub(O[1]))&&(this._valid=!1)},z.prototype._move=function(O,$,pe){var de=O[0].sub(this._lastPoints[0]),Ie=O[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(de,Ie,pe.timeStamp),!!this._valid){this._lastPoints=O,this._active=!0;var $e=(de.y+Ie.y)/2,pt=-.5;return{pitchDelta:$e*pt}}},z.prototype.gestureBeginsVertically=function(O,$,pe){if(this._valid!==void 0)return this._valid;var de=2,Ie=O.mag()>=de,$e=$.mag()>=de;if(!(!Ie&&!$e)){if(!Ie||!$e)return this._firstMove===void 0&&(this._firstMove=pe),pe-this._firstMove0==$.y>0;return Ns(O)&&Ns($)&&pt}},z}(Nn),Lo={panStep:100,bearingStep:15,pitchStep:10},Fo=function(){var z=Lo;this._panStep=z.panStep,this._bearingStep=z.bearingStep,this._pitchStep=z.pitchStep,this._rotationDisabled=!1};Fo.prototype.reset=function(){this._active=!1},Fo.prototype.keydown=function(z){var K=this;if(!(z.altKey||z.ctrlKey||z.metaKey)){var O=0,$=0,pe=0,de=0,Ie=0;switch(z.keyCode){case 61:case 107:case 171:case 187:O=1;break;case 189:case 109:case 173:O=-1;break;case 37:z.shiftKey?$=-1:(z.preventDefault(),de=-1);break;case 39:z.shiftKey?$=1:(z.preventDefault(),de=1);break;case 38:z.shiftKey?pe=1:(z.preventDefault(),Ie=-1);break;case 40:z.shiftKey?pe=-1:(z.preventDefault(),Ie=1);break;default:return}return this._rotationDisabled&&($=0,pe=0),{cameraAnimation:function($e){var pt=$e.getZoom();$e.easeTo({duration:300,easeId:"keyboardHandler",easing:js,zoom:O?Math.round(pt)+O*(z.shiftKey?2:1):pt,bearing:$e.getBearing()+$*K._bearingStep,pitch:$e.getPitch()+pe*K._pitchStep,offset:[-de*K._panStep,-Ie*K._panStep],center:$e.getCenter()},{originalEvent:z})}}}},Fo.prototype.enable=function(){this._enabled=!0},Fo.prototype.disable=function(){this._enabled=!1,this.reset()},Fo.prototype.isEnabled=function(){return this._enabled},Fo.prototype.isActive=function(){return this._active},Fo.prototype.disableRotation=function(){this._rotationDisabled=!0},Fo.prototype.enableRotation=function(){this._rotationDisabled=!1};function js(Y){return Y*(2-Y)}var xl=4.000244140625,fu=1/100,dl=1/450,xc=2,At=function(z,K){this._map=z,this._el=z.getCanvasContainer(),this._handler=K,this._delta=0,this._defaultZoomRate=fu,this._wheelZoomRate=dl,i.bindAll(["_onTimeout"],this)};At.prototype.setZoomRate=function(z){this._defaultZoomRate=z},At.prototype.setWheelZoomRate=function(z){this._wheelZoomRate=z},At.prototype.isEnabled=function(){return!!this._enabled},At.prototype.isActive=function(){return!!this._active||this._finishTimeout!==void 0},At.prototype.isZooming=function(){return!!this._zooming},At.prototype.enable=function(z){this.isEnabled()||(this._enabled=!0,this._aroundCenter=z&&z.around==="center")},At.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},At.prototype.wheel=function(z){if(this.isEnabled()){var K=z.deltaMode===i.window.WheelEvent.DOM_DELTA_LINE?z.deltaY*40:z.deltaY,O=i.browser.now(),$=O-(this._lastWheelEventTime||0);this._lastWheelEventTime=O,K!==0&&K%xl===0?this._type="wheel":K!==0&&Math.abs(K)<4?this._type="trackpad":$>400?(this._type=null,this._lastValue=K,this._timeout=setTimeout(this._onTimeout,40,z)):this._type||(this._type=Math.abs($*K)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,K+=this._lastValue)),z.shiftKey&&K&&(K=K/4),this._type&&(this._lastWheelEvent=z,this._delta-=K,this._active||this._start(z)),z.preventDefault()}},At.prototype._onTimeout=function(z){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(z)},At.prototype._start=function(z){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var K=o.mousePos(this._el,z);this._around=i.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(K)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},At.prototype.renderFrame=function(){var z=this;if(this._frameId&&(this._frameId=null,!!this.isActive())){var K=this._map.transform;if(this._delta!==0){var O=this._type==="wheel"&&Math.abs(this._delta)>xl?this._wheelZoomRate:this._defaultZoomRate,$=xc/(1+Math.exp(-Math.abs(this._delta*O)));this._delta<0&&$!==0&&($=1/$);var pe=typeof this._targetZoom=="number"?K.zoomScale(this._targetZoom):K.scale;this._targetZoom=Math.min(K.maxZoom,Math.max(K.minZoom,K.scaleZoom(pe*$))),this._type==="wheel"&&(this._startZoom=K.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var de=typeof this._targetZoom=="number"?this._targetZoom:K.zoom,Ie=this._startZoom,$e=this._easing,pt=!1,Kt;if(this._type==="wheel"&&Ie&&$e){var ir=Math.min((i.browser.now()-this._lastWheelEventTime)/200,1),Jt=$e(ir);Kt=i.number(Ie,de,Jt),ir<1?this._frameId||(this._frameId=!0):pt=!0}else Kt=de,pt=!0;return this._active=!0,pt&&(this._active=!1,this._finishTimeout=setTimeout(function(){z._zooming=!1,z._handler._triggerRenderFrame(),delete z._targetZoom,delete z._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!pt,zoomDelta:Kt-K.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},At.prototype._smoothOutEasing=function(z){var K=i.ease;if(this._prevEase){var O=this._prevEase,$=(i.browser.now()-O.start)/O.duration,pe=O.easing($+.01)-O.easing($),de=.27/Math.sqrt(pe*pe+1e-4)*.01,Ie=Math.sqrt(.27*.27-de*de);K=i.bezier(de,Ie,.25,1)}return this._prevEase={start:i.browser.now(),duration:z,easing:K},K},At.prototype.reset=function(){this._active=!1};var Er=function(z,K){this._clickZoom=z,this._tapZoom=K};Er.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},Er.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},Er.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},Er.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var Wr=function(){this.reset()};Wr.prototype.reset=function(){this._active=!1},Wr.prototype.dblclick=function(z,K){return z.preventDefault(),{cameraAnimation:function(O){O.easeTo({duration:300,zoom:O.getZoom()+(z.shiftKey?-1:1),around:O.unproject(K)},{originalEvent:z})}}},Wr.prototype.enable=function(){this._enabled=!0},Wr.prototype.disable=function(){this._enabled=!1,this.reset()},Wr.prototype.isEnabled=function(){return this._enabled},Wr.prototype.isActive=function(){return this._active};var wi=function(){this._tap=new oi({numTouches:1,numTaps:1}),this.reset()};wi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},wi.prototype.touchstart=function(z,K,O){this._swipePoint||(this._tapTime&&z.timeStamp-this._tapTime>or&&this.reset(),this._tapTime?O.length>0&&(this._swipePoint=K[0],this._swipeTouch=O[0].identifier):this._tap.touchstart(z,K,O))},wi.prototype.touchmove=function(z,K,O){if(!this._tapTime)this._tap.touchmove(z,K,O);else if(this._swipePoint){if(O[0].identifier!==this._swipeTouch)return;var $=K[0],pe=$.y-this._swipePoint.y;return this._swipePoint=$,z.preventDefault(),this._active=!0,{zoomDelta:pe/128}}},wi.prototype.touchend=function(z,K,O){if(this._tapTime)this._swipePoint&&O.length===0&&this.reset();else{var $=this._tap.touchend(z,K,O);$&&(this._tapTime=z.timeStamp)}},wi.prototype.touchcancel=function(){this.reset()},wi.prototype.enable=function(){this._enabled=!0},wi.prototype.disable=function(){this._enabled=!1,this.reset()},wi.prototype.isEnabled=function(){return this._enabled},wi.prototype.isActive=function(){return this._active};var Ui=function(z,K,O){this._el=z,this._mousePan=K,this._touchPan=O};Ui.prototype.enable=function(z){this._inertiaOptions=z||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},Ui.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},Ui.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},Ui.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var Oi=function(z,K,O){this._pitchWithRotate=z.pitchWithRotate,this._mouseRotate=K,this._mousePitch=O};Oi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},Oi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},Oi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},Oi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var Bi=function(z,K,O,$){this._el=z,this._touchZoom=K,this._touchRotate=O,this._tapDragZoom=$,this._rotationDisabled=!1,this._enabled=!0};Bi.prototype.enable=function(z){this._touchZoom.enable(z),this._rotationDisabled||this._touchRotate.enable(z),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},Bi.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},Bi.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},Bi.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},Bi.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},Bi.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var cn=function(Y){return Y.zoom||Y.drag||Y.pitch||Y.rotate},On=function(Y){function z(){Y.apply(this,arguments)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z}(i.Event);function Bn(Y){return Y.panDelta&&Y.panDelta.mag()||Y.zoomDelta||Y.bearingDelta||Y.pitchDelta}var yn=function(z,K){this._map=z,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new zl(z),this._bearingSnap=K.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(K),i.bindAll(["handleEvent","handleWindowEvent"],this);var O=this._el;this._listeners=[[O,"touchstart",{passive:!0}],[O,"touchmove",{passive:!1}],[O,"touchend",void 0],[O,"touchcancel",void 0],[O,"mousedown",void 0],[O,"mousemove",void 0],[O,"mouseup",void 0],[i.window.document,"mousemove",{capture:!0}],[i.window.document,"mouseup",void 0],[O,"mouseover",void 0],[O,"mouseout",void 0],[O,"dblclick",void 0],[O,"click",void 0],[O,"keydown",{capture:!1}],[O,"keyup",void 0],[O,"wheel",{passive:!1}],[O,"contextmenu",void 0],[i.window,"blur",void 0]];for(var $=0,pe=this._listeners;$Ie?Math.min(2,gr):Math.max(.5,gr),Ri=Math.pow(tn,1-ei),ln=de.unproject(kr.add(Ar.mult(ei*Ri)).mult(yi));de.setLocationAtPoint(de.renderWorldCopies?ln.wrap():ln,rr)}pe._fireMoveEvents($)},function(ei){pe._afterEase($,ei)},O),this},z.prototype._prepareEase=function(O,$,pe){pe===void 0&&(pe={}),this._moving=!0,!$&&!pe.moving&&this.fire(new i.Event("movestart",O)),this._zooming&&!pe.zooming&&this.fire(new i.Event("zoomstart",O)),this._rotating&&!pe.rotating&&this.fire(new i.Event("rotatestart",O)),this._pitching&&!pe.pitching&&this.fire(new i.Event("pitchstart",O))},z.prototype._fireMoveEvents=function(O){this.fire(new i.Event("move",O)),this._zooming&&this.fire(new i.Event("zoom",O)),this._rotating&&this.fire(new i.Event("rotate",O)),this._pitching&&this.fire(new i.Event("pitch",O))},z.prototype._afterEase=function(O,$){if(!(this._easeId&&$&&this._easeId===$)){delete this._easeId;var pe=this._zooming,de=this._rotating,Ie=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,pe&&this.fire(new i.Event("zoomend",O)),de&&this.fire(new i.Event("rotateend",O)),Ie&&this.fire(new i.Event("pitchend",O)),this.fire(new i.Event("moveend",O))}},z.prototype.flyTo=function(O,$){var pe=this;if(!O.essential&&i.browser.prefersReducedMotion){var de=i.pick(O,["center","zoom","bearing","pitch","around"]);return this.jumpTo(de,$)}this.stop(),O=i.extend({offset:[0,0],speed:1.2,curve:1.42,easing:i.ease},O);var Ie=this.transform,$e=this.getZoom(),pt=this.getBearing(),Kt=this.getPitch(),ir=this.getPadding(),Jt="zoom"in O?i.clamp(+O.zoom,Ie.minZoom,Ie.maxZoom):$e,vt="bearing"in O?this._normalizeBearing(O.bearing,pt):pt,Pt="pitch"in O?+O.pitch:Kt,Wt="padding"in O?O.padding:Ie.padding,rr=Ie.zoomScale(Jt-$e),dr=i.Point.convert(O.offset),pr=Ie.centerPoint.add(dr),kr=Ie.pointLocation(pr),Ar=i.LngLat.convert(O.center||kr);this._normalizeCenter(Ar);var gr=Ie.project(kr),Cr=Ie.project(Ar).sub(gr),cr=O.curve,Gr=Math.max(Ie.width,Ie.height),ei=Gr/rr,yi=Cr.mag();if("minZoom"in O){var tn=i.clamp(Math.min(O.minZoom,$e,Jt),Ie.minZoom,Ie.maxZoom),Ri=Gr/Ie.zoomScale(tn-$e);cr=Math.sqrt(Ri/yi*2)}var ln=cr*cr;function Qn(fo){var as=(ei*ei-Gr*Gr+(fo?-1:1)*ln*ln*yi*yi)/(2*(fo?ei:Gr)*ln*yi);return Math.log(Math.sqrt(as*as+1)-as)}function qn(fo){return(Math.exp(fo)-Math.exp(-fo))/2}function rn(fo){return(Math.exp(fo)+Math.exp(-fo))/2}function bn(fo){return qn(fo)/rn(fo)}var mn=Qn(0),Gn=function(fo){return rn(mn)/rn(mn+cr*fo)},da=function(fo){return Gr*((rn(mn)*bn(mn+cr*fo)-qn(mn))/ln)/yi},No=(Qn(1)-mn)/cr;if(Math.abs(yi)<1e-6||!isFinite(No)){if(Math.abs(Gr-ei)<1e-6)return this.easeTo(O,$);var Do=eiO.maxDuration&&(O.duration=0),this._zooming=!0,this._rotating=pt!==vt,this._pitching=Pt!==Kt,this._padding=!Ie.isPaddingEqual(Wt),this._prepareEase($,!1),this._ease(function(fo){var as=fo*No,tl=1/Gn(as);Ie.zoom=fo===1?Jt:$e+Ie.scaleZoom(tl),pe._rotating&&(Ie.bearing=i.number(pt,vt,fo)),pe._pitching&&(Ie.pitch=i.number(Kt,Pt,fo)),pe._padding&&(Ie.interpolatePadding(ir,Wt,fo),pr=Ie.centerPoint.add(dr));var zu=fo===1?Ar:Ie.unproject(gr.add(Cr.mult(da(as))).mult(tl));Ie.setLocationAtPoint(Ie.renderWorldCopies?zu.wrap():zu,pr),pe._fireMoveEvents($)},function(){return pe._afterEase($)},O),this},z.prototype.isEasing=function(){return!!this._easeFrameId},z.prototype.stop=function(){return this._stop()},z.prototype._stop=function(O,$){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var pe=this._onEaseEnd;delete this._onEaseEnd,pe.call(this,$)}if(!O){var de=this.handlers;de&&de.stop(!1)}return this},z.prototype._ease=function(O,$,pe){pe.animate===!1||pe.duration===0?(O(1),$()):(this._easeStart=i.browser.now(),this._easeOptions=pe,this._onEaseFrame=O,this._onEaseEnd=$,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},z.prototype._renderFrameCallback=function(){var O=Math.min((i.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(O)),O<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},z.prototype._normalizeBearing=function(O,$){O=i.wrap(O,-180,180);var pe=Math.abs(O-$);return Math.abs(O-360-$)180?-360:pe<-180?360:0}},z}(i.Evented),Rn=function(z){z===void 0&&(z={}),this.options=z,i.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)};Rn.prototype.getDefaultPosition=function(){return"bottom-right"},Rn.prototype.onAdd=function(z){var K=this.options&&this.options.compact;return this._map=z,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=o.create("button","mapboxgl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=o.create("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),K&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),K===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},Rn.prototype.onRemove=function(){o.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},Rn.prototype._setElementTitle=function(z,K){var O=this._map._getUIString("AttributionControl."+K);z.title=O,z.setAttribute("aria-label",O)},Rn.prototype._toggleAttribution=function(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","true"))},Rn.prototype._updateEditLink=function(){var z=this._editLink;z||(z=this._editLink=this._container.querySelector(".mapbox-improve-map"));var K=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||i.config.ACCESS_TOKEN}];if(z){var O=K.reduce(function($,pe,de){return pe.value&&($+=pe.key+"="+pe.value+(de=0)return!1;return!0});var Ie=z.join(" | ");Ie!==this._attribHTML&&(this._attribHTML=Ie,z.length?(this._innerContainer.innerHTML=Ie,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},Rn.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")};var Dn=function(){i.bindAll(["_updateLogo"],this),i.bindAll(["_updateCompact"],this)};Dn.prototype.onAdd=function(z){this._map=z,this._container=o.create("div","mapboxgl-ctrl");var K=o.create("a","mapboxgl-ctrl-logo");return K.target="_blank",K.rel="noopener nofollow",K.href="https://www.mapbox.com/",K.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),K.setAttribute("rel","noopener nofollow"),this._container.appendChild(K),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},Dn.prototype.onRemove=function(){o.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},Dn.prototype.getDefaultPosition=function(){return"bottom-left"},Dn.prototype._updateLogo=function(z){(!z||z.sourceDataType==="metadata")&&(this._container.style.display=this._logoRequired()?"block":"none")},Dn.prototype._logoRequired=function(){if(this._map.style){var z=this._map.style.sourceCaches;for(var K in z){var O=z[K].getSource();if(O.mapbox_logo)return!0}return!1}},Dn.prototype._updateCompact=function(){var z=this._container.children;if(z.length){var K=z[0];this._map.getCanvasContainer().offsetWidth<250?K.classList.add("mapboxgl-compact"):K.classList.remove("mapboxgl-compact")}};var fn=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};fn.prototype.add=function(z){var K=++this._id,O=this._queue;return O.push({callback:z,id:K,cancelled:!1}),K},fn.prototype.remove=function(z){for(var K=this._currentlyRunning,O=K?this._queue.concat(K):this._queue,$=0,pe=O;$O.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(O.minPitch!=null&&O.maxPitch!=null&&O.minPitch>O.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(O.minPitch!=null&&O.minPitchZa)throw new Error("maxPitch must be less than or equal to "+Za);var pe=new yo(O.minZoom,O.maxZoom,O.minPitch,O.maxPitch,O.renderWorldCopies);if(Y.call(this,pe,O),this._interactive=O.interactive,this._maxTileCacheSize=O.maxTileCacheSize,this._failIfMajorPerformanceCaveat=O.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=O.preserveDrawingBuffer,this._antialias=O.antialias,this._trackResize=O.trackResize,this._bearingSnap=O.bearingSnap,this._refreshExpiredTiles=O.refreshExpiredTiles,this._fadeDuration=O.fadeDuration,this._crossSourceCollisions=O.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=O.collectResourceTiming,this._renderTaskQueue=new fn,this._controls=[],this._mapId=i.uniqueId(),this._locale=i.extend({},Ai,O.locale),this._clickTolerance=O.clickTolerance,this._requestManager=new i.RequestManager(O.transformRequest,O.accessToken),typeof O.container=="string"){if(this._container=i.window.document.getElementById(O.container),!this._container)throw new Error("Container '"+O.container+"' not found.")}else if(O.container instanceof Ln)this._container=O.container;else throw new Error("Invalid type: 'container' must be a String or HTMLElement.");if(O.maxBounds&&this.setMaxBounds(O.maxBounds),i.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return $._update(!1)}),this.on("moveend",function(){return $._update(!1)}),this.on("zoom",function(){return $._update(!0)}),typeof i.window!="undefined"&&(i.window.addEventListener("online",this._onWindowOnline,!1),i.window.addEventListener("resize",this._onWindowResize,!1),i.window.addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new yn(this,O);var de=typeof O.hash=="string"&&O.hash||void 0;this._hash=O.hash&&new Hl(de).addTo(this),(!this._hash||!this._hash._onHashChange())&&(this.jumpTo({center:O.center,zoom:O.zoom,bearing:O.bearing,pitch:O.pitch}),O.bounds&&(this.resize(),this.fitBounds(O.bounds,i.extend({},O.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=O.localIdeographFontFamily,O.style&&this.setStyle(O.style,{localIdeographFontFamily:O.localIdeographFontFamily}),O.attributionControl&&this.addControl(new Rn({customAttribution:O.customAttribution})),this.addControl(new Dn,O.logoPosition),this.on("style.load",function(){$.transform.unmodified&&$.jumpTo($.style.stylesheet)}),this.on("data",function(Ie){$._update(Ie.dataType==="style"),$.fire(new i.Event(Ie.dataType+"data",Ie))}),this.on("dataloading",function(Ie){$.fire(new i.Event(Ie.dataType+"dataloading",Ie))})}Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z;var K={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return z.prototype._getMapId=function(){return this._mapId},z.prototype.addControl=function($,pe){if(pe===void 0&&($.getDefaultPosition?pe=$.getDefaultPosition():pe="top-right"),!$||!$.onAdd)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var de=$.onAdd(this);this._controls.push($);var Ie=this._controlPositions[pe];return pe.indexOf("bottom")!==-1?Ie.insertBefore(de,Ie.firstChild):Ie.appendChild(de),this},z.prototype.removeControl=function($){if(!$||!$.onRemove)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var pe=this._controls.indexOf($);return pe>-1&&this._controls.splice(pe,1),$.onRemove(this),this},z.prototype.hasControl=function($){return this._controls.indexOf($)>-1},z.prototype.resize=function($){var pe=this._containerDimensions(),de=pe[0],Ie=pe[1];this._resizeCanvas(de,Ie),this.transform.resize(de,Ie),this.painter.resize(de,Ie);var $e=!this._moving;return $e&&(this.stop(),this.fire(new i.Event("movestart",$)).fire(new i.Event("move",$))),this.fire(new i.Event("resize",$)),$e&&this.fire(new i.Event("moveend",$)),this},z.prototype.getBounds=function(){return this.transform.getBounds()},z.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},z.prototype.setMaxBounds=function($){return this.transform.setMaxBounds(i.LngLatBounds.convert($)),this._update()},z.prototype.setMinZoom=function($){if($=$==null?gn:$,$>=gn&&$<=this.transform.maxZoom)return this.transform.minZoom=$,this._update(),this.getZoom()<$&&this.setZoom($),this;throw new Error("minZoom must be between "+gn+" and the current maxZoom, inclusive")},z.prototype.getMinZoom=function(){return this.transform.minZoom},z.prototype.setMaxZoom=function($){if($=$==null?ca:$,$>=this.transform.minZoom)return this.transform.maxZoom=$,this._update(),this.getZoom()>$&&this.setZoom($),this;throw new Error("maxZoom must be greater than the current minZoom")},z.prototype.getMaxZoom=function(){return this.transform.maxZoom},z.prototype.setMinPitch=function($){if($=$==null?Kn:$,$=Kn&&$<=this.transform.maxPitch)return this.transform.minPitch=$,this._update(),this.getPitch()<$&&this.setPitch($),this;throw new Error("minPitch must be between "+Kn+" and the current maxPitch, inclusive")},z.prototype.getMinPitch=function(){return this.transform.minPitch},z.prototype.setMaxPitch=function($){if($=$==null?Za:$,$>Za)throw new Error("maxPitch must be less than or equal to "+Za);if($>=this.transform.minPitch)return this.transform.maxPitch=$,this._update(),this.getPitch()>$&&this.setPitch($),this;throw new Error("maxPitch must be greater than the current minPitch")},z.prototype.getMaxPitch=function(){return this.transform.maxPitch},z.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},z.prototype.setRenderWorldCopies=function($){return this.transform.renderWorldCopies=$,this._update()},z.prototype.project=function($){return this.transform.locationPoint(i.LngLat.convert($))},z.prototype.unproject=function($){return this.transform.pointLocation(i.Point.convert($))},z.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},z.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},z.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},z.prototype._createDelegatedListener=function($,pe,de){var Ie=this,$e;if($==="mouseenter"||$==="mouseover"){var pt=!1,Kt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length?pt||(pt=!0,de.call(Ie,new oe($,Ie,rr.originalEvent,{features:dr}))):pt=!1},ir=function(){pt=!1};return{layer:pe,listener:de,delegates:{mousemove:Kt,mouseout:ir}}}else if($==="mouseleave"||$==="mouseout"){var Jt=!1,vt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length?Jt=!0:Jt&&(Jt=!1,de.call(Ie,new oe($,Ie,rr.originalEvent)))},Pt=function(rr){Jt&&(Jt=!1,de.call(Ie,new oe($,Ie,rr.originalEvent)))};return{layer:pe,listener:de,delegates:{mousemove:vt,mouseout:Pt}}}else{var Wt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length&&(rr.features=dr,de.call(Ie,rr),delete rr.features)};return{layer:pe,listener:de,delegates:($e={},$e[$]=Wt,$e)}}},z.prototype.on=function($,pe,de){if(de===void 0)return Y.prototype.on.call(this,$,pe);var Ie=this._createDelegatedListener($,pe,de);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[$]=this._delegatedListeners[$]||[],this._delegatedListeners[$].push(Ie);for(var $e in Ie.delegates)this.on($e,Ie.delegates[$e]);return this},z.prototype.once=function($,pe,de){if(de===void 0)return Y.prototype.once.call(this,$,pe);var Ie=this._createDelegatedListener($,pe,de);for(var $e in Ie.delegates)this.once($e,Ie.delegates[$e]);return this},z.prototype.off=function($,pe,de){var Ie=this;if(de===void 0)return Y.prototype.off.call(this,$,pe);var $e=function(pt){for(var Kt=pt[$],ir=0;ir180;){var de=K.locationPoint(Y);if(de.x>=0&&de.y>=0&&de.x<=K.width&&de.y<=K.height)break;Y.lng>K.center.lng?Y.lng-=360:Y.lng+=360}return Y}var ro={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ao(Y,z,K){var O=Y.classList;for(var $ in ro)O.remove("mapboxgl-"+K+"-anchor-"+$);O.add("mapboxgl-"+K+"-anchor-"+z)}var Jn=function(Y){function z(K,O){if(Y.call(this),(K instanceof i.window.HTMLElement||O)&&(K=i.extend({element:K},O)),i.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=K&&K.anchor||"center",this._color=K&&K.color||"#3FB1CE",this._scale=K&&K.scale||1,this._draggable=K&&K.draggable||!1,this._clickTolerance=K&&K.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=K&&K.rotation||0,this._rotationAlignment=K&&K.rotationAlignment||"auto",this._pitchAlignment=K&&K.pitchAlignment&&K.pitchAlignment!=="auto"?K.pitchAlignment:this._rotationAlignment,!K||!K.element){this._defaultMarker=!0,this._element=o.create("div"),this._element.setAttribute("aria-label","Map marker");var $=o.createNS("http://www.w3.org/2000/svg","svg"),pe=41,de=27;$.setAttributeNS(null,"display","block"),$.setAttributeNS(null,"height",pe+"px"),$.setAttributeNS(null,"width",de+"px"),$.setAttributeNS(null,"viewBox","0 0 "+de+" "+pe);var Ie=o.createNS("http://www.w3.org/2000/svg","g");Ie.setAttributeNS(null,"stroke","none"),Ie.setAttributeNS(null,"stroke-width","1"),Ie.setAttributeNS(null,"fill","none"),Ie.setAttributeNS(null,"fill-rule","evenodd");var $e=o.createNS("http://www.w3.org/2000/svg","g");$e.setAttributeNS(null,"fill-rule","nonzero");var pt=o.createNS("http://www.w3.org/2000/svg","g");pt.setAttributeNS(null,"transform","translate(3.0, 29.0)"),pt.setAttributeNS(null,"fill","#000000");for(var Kt=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}],ir=0,Jt=Kt;ir=$}this._isDragging&&(this._pos=O.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new i.Event("dragstart"))),this.fire(new i.Event("drag")))},z.prototype._onUp=function(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new i.Event("dragend")),this._state="inactive"},z.prototype._addDragHandler=function(O){this._element.contains(O.originalEvent.target)&&(O.preventDefault(),this._positionDelta=O.point.sub(this._pos).add(this._offset),this._pointerdownPos=O.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},z.prototype.setDraggable=function(O){return this._draggable=!!O,this._map&&(O?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this},z.prototype.isDraggable=function(){return this._draggable},z.prototype.setRotation=function(O){return this._rotation=O||0,this._update(),this},z.prototype.getRotation=function(){return this._rotation},z.prototype.setRotationAlignment=function(O){return this._rotationAlignment=O||"auto",this._update(),this},z.prototype.getRotationAlignment=function(){return this._rotationAlignment},z.prototype.setPitchAlignment=function(O){return this._pitchAlignment=O&&O!=="auto"?O:this._rotationAlignment,this._update(),this},z.prototype.getPitchAlignment=function(){return this._pitchAlignment},z}(i.Evented),Oa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},_o;function Po(Y){_o!==void 0?Y(_o):i.window.navigator.permissions!==void 0?i.window.navigator.permissions.query({name:"geolocation"}).then(function(z){_o=z.state!=="denied",Y(_o)}):(_o=!!i.window.navigator.geolocation,Y(_o))}var Jo=0,Yl=!1,$c=function(Y){function z(K){Y.call(this),this.options=i.extend({},Oa,K),i.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.onAdd=function(O){return this._map=O,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),Po(this._setupUI),this._container},z.prototype.onRemove=function(){this._geolocationWatchID!==void 0&&(i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),o.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Jo=0,Yl=!1},z.prototype._isOutOfMapMaxBounds=function(O){var $=this._map.getMaxBounds(),pe=O.coords;return $&&(pe.longitude<$.getWest()||pe.longitude>$.getEast()||pe.latitude<$.getSouth()||pe.latitude>$.getNorth())},z.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break}},z.prototype._onSuccess=function(O){if(this._map){if(this._isOutOfMapMaxBounds(O)){this._setErrorState(),this.fire(new i.Event("outofmaxbounds",O)),this._updateMarker(),this._finish();return}if(this.options.trackUserLocation)switch(this._lastKnownPosition=O,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(O),(!this.options.trackUserLocation||this._watchState==="ACTIVE_LOCK")&&this._updateCamera(O),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("geolocate",O)),this._finish()}},z.prototype._updateCamera=function(O){var $=new i.LngLat(O.coords.longitude,O.coords.latitude),pe=O.coords.accuracy,de=this._map.getBearing(),Ie=i.extend({bearing:de},this.options.fitBoundsOptions);this._map.fitBounds($.toBounds(pe),Ie,{geolocateSource:!0})},z.prototype._updateMarker=function(O){if(O){var $=new i.LngLat(O.coords.longitude,O.coords.latitude);this._accuracyCircleMarker.setLngLat($).addTo(this._map),this._userLocationDotMarker.setLngLat($).addTo(this._map),this._accuracy=O.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},z.prototype._updateCircleRadius=function(){var O=this._map._container.clientHeight/2,$=this._map.unproject([0,O]),pe=this._map.unproject([1,O]),de=$.distanceTo(pe),Ie=Math.ceil(2*this._accuracy/de);this._circleElement.style.width=Ie+"px",this._circleElement.style.height=Ie+"px"},z.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},z.prototype._onError=function(O){if(this._map){if(this.options.trackUserLocation)if(O.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var $=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=$,this._geolocateButton.setAttribute("aria-label",$),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(O.code===3&&Yl)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("error",O)),this._finish()}},z.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},z.prototype._setupUI=function(O){var $=this;if(this._container.addEventListener("contextmenu",function(Ie){return Ie.preventDefault()}),this._geolocateButton=o.create("button","mapboxgl-ctrl-geolocate",this._container),o.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",O===!1){i.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var pe=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=pe,this._geolocateButton.setAttribute("aria-label",pe)}else{var de=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=de,this._geolocateButton.setAttribute("aria-label",de)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=o.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new Jn(this._dotElement),this._circleElement=o.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Jn({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(Ie){var $e=Ie.originalEvent&&Ie.originalEvent.type==="resize";!Ie.geolocateSource&&$._watchState==="ACTIVE_LOCK"&&!$e&&($._watchState="BACKGROUND",$._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),$._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),$.fire(new i.Event("trackuserlocationend")))})},z.prototype.trigger=function(){if(!this._setup)return i.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new i.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Jo--,Yl=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new i.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new i.Event("trackuserlocationstart"));break}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error");break}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Jo++;var O;Jo>1?(O={maximumAge:6e5,timeout:0},Yl=!0):(O=this.options.positionOptions,Yl=!1),this._geolocationWatchID=i.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,O)}}else i.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},z.prototype._clearWatch=function(){i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},z}(i.Evented),xs={maxWidth:100,unit:"metric"},Qc=function(z){this.options=i.extend({},xs,z),i.bindAll(["_onMove","setUnit"],this)};Qc.prototype.getDefaultPosition=function(){return"bottom-left"},Qc.prototype._onMove=function(){El(this._map,this._container,this.options)},Qc.prototype.onAdd=function(z){return this._map=z,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",z.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Qc.prototype.onRemove=function(){o.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Qc.prototype.setUnit=function(z){this.options.unit=z,El(this._map,this._container,this.options)};function El(Y,z,K){var O=K&&K.maxWidth||100,$=Y._container.clientHeight/2,pe=Y.unproject([0,$]),de=Y.unproject([O,$]),Ie=pe.distanceTo(de);if(K&&K.unit==="imperial"){var $e=3.2808*Ie;if($e>5280){var pt=$e/5280;bc(z,O,pt,Y._getUIString("ScaleControl.Miles"))}else bc(z,O,$e,Y._getUIString("ScaleControl.Feet"))}else if(K&&K.unit==="nautical"){var Kt=Ie/1852;bc(z,O,Kt,Y._getUIString("ScaleControl.NauticalMiles"))}else Ie>=1e3?bc(z,O,Ie/1e3,Y._getUIString("ScaleControl.Kilometers")):bc(z,O,Ie,Y._getUIString("ScaleControl.Meters"))}function bc(Y,z,K,O){var $=yf(K),pe=$/K;Y.style.width=z*pe+"px",Y.innerHTML=$+" "+O}function wc(Y){var z=Math.pow(10,Math.ceil(-Math.log(Y)/Math.LN10));return Math.round(Y*z)/z}function yf(Y){var z=Math.pow(10,(""+Math.floor(Y)).length-1),K=Y/z;return K=K>=10?10:K>=5?5:K>=3?3:K>=2?2:K>=1?1:wc(K),z*K}var Gl=function(z){this._fullscreen=!1,z&&z.container&&(z.container instanceof i.window.HTMLElement?this._container=z.container:i.warnOnce("Full screen control 'container' must be a DOM element.")),i.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in i.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in i.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in i.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in i.window.document&&(this._fullscreenchange="MSFullscreenChange")};Gl.prototype.onAdd=function(z){return this._map=z,this._container||(this._container=this._map.getContainer()),this._controlContainer=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",i.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},Gl.prototype.onRemove=function(){o.remove(this._controlContainer),this._map=null,i.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Gl.prototype._checkFullscreenSupport=function(){return!!(i.window.document.fullscreenEnabled||i.window.document.mozFullScreenEnabled||i.window.document.msFullscreenEnabled||i.window.document.webkitFullscreenEnabled)},Gl.prototype._setupUI=function(){var z=this._fullscreenButton=o.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);o.create("span","mapboxgl-ctrl-icon",z).setAttribute("aria-hidden",!0),z.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),i.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Gl.prototype._updateTitle=function(){var z=this._getTitle();this._fullscreenButton.setAttribute("aria-label",z),this._fullscreenButton.title=z},Gl.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},Gl.prototype._isFullscreen=function(){return this._fullscreen},Gl.prototype._changeIcon=function(){var z=i.window.document.fullscreenElement||i.window.document.mozFullScreenElement||i.window.document.webkitFullscreenElement||i.window.document.msFullscreenElement;z===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},Gl.prototype._onClickFullscreen=function(){this._isFullscreen()?i.window.document.exitFullscreen?i.window.document.exitFullscreen():i.window.document.mozCancelFullScreen?i.window.document.mozCancelFullScreen():i.window.document.msExitFullscreen?i.window.document.msExitFullscreen():i.window.document.webkitCancelFullScreen&&i.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Fc={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},ef=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", "),ls=function(Y){function z(K){Y.call(this),this.options=i.extend(Object.create(Fc),K),i.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.addTo=function(O){return this._map&&this.remove(),this._map=O,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new i.Event("open")),this},z.prototype.isOpen=function(){return!!this._map},z.prototype.remove=function(){return this._content&&o.remove(this._content),this._container&&(o.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new i.Event("close")),this},z.prototype.getLngLat=function(){return this._lngLat},z.prototype.setLngLat=function(O){return this._lngLat=i.LngLat.convert(O),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},z.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},z.prototype.getElement=function(){return this._container},z.prototype.setText=function(O){return this.setDOMContent(i.window.document.createTextNode(O))},z.prototype.setHTML=function(O){var $=i.window.document.createDocumentFragment(),pe=i.window.document.createElement("body"),de;for(pe.innerHTML=O;de=pe.firstChild,!!de;)$.appendChild(de);return this.setDOMContent($)},z.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},z.prototype.setMaxWidth=function(O){return this.options.maxWidth=O,this._update(),this},z.prototype.setDOMContent=function(O){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=o.create("div","mapboxgl-popup-content",this._container);return this._content.appendChild(O),this._createCloseButton(),this._update(),this._focusFirstElement(),this},z.prototype.addClassName=function(O){this._container&&this._container.classList.add(O)},z.prototype.removeClassName=function(O){this._container&&this._container.classList.remove(O)},z.prototype.setOffset=function(O){return this.options.offset=O,this._update(),this},z.prototype.toggleClassName=function(O){if(this._container)return this._container.classList.toggle(O)},z.prototype._createCloseButton=function(){this.options.closeButton&&(this._closeButton=o.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},z.prototype._onMouseUp=function(O){this._update(O.point)},z.prototype._onMouseMove=function(O){this._update(O.point)},z.prototype._onDrag=function(O){this._update(O.point)},z.prototype._update=function(O){var $=this,pe=this._lngLat||this._trackPointer;if(!(!this._map||!pe||!this._content)&&(this._container||(this._container=o.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=o.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(vt){return $._container.classList.add(vt)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=ma(this._lngLat,this._pos,this._map.transform)),!(this._trackPointer&&!O))){var de=this._pos=this._trackPointer&&O?O:this._map.project(this._lngLat),Ie=this.options.anchor,$e=_f(this.options.offset);if(!Ie){var pt=this._container.offsetWidth,Kt=this._container.offsetHeight,ir;de.y+$e.bottom.ythis._map.transform.height-Kt?ir=["bottom"]:ir=[],de.xthis._map.transform.width-pt/2&&ir.push("right"),ir.length===0?Ie="bottom":Ie=ir.join("-")}var Jt=de.add($e[Ie]).round();o.setTransform(this._container,ro[Ie]+" translate("+Jt.x+"px,"+Jt.y+"px)"),Ao(this._container,Ie,"popup")}},z.prototype._focusFirstElement=function(){if(!(!this.options.focusAfterOpen||!this._container)){var O=this._container.querySelector(ef);O&&O.focus()}},z.prototype._onClose=function(){this.remove()},z}(i.Evented);function _f(Y){if(Y)if(typeof Y=="number"){var z=Math.round(Math.sqrt(.5*Math.pow(Y,2)));return{center:new i.Point(0,0),top:new i.Point(0,Y),"top-left":new i.Point(z,z),"top-right":new i.Point(-z,z),bottom:new i.Point(0,-Y),"bottom-left":new i.Point(z,-z),"bottom-right":new i.Point(-z,-z),left:new i.Point(Y,0),right:new i.Point(-Y,0)}}else if(Y instanceof i.Point||Array.isArray(Y)){var K=i.Point.convert(Y);return{center:K,top:K,"top-left":K,"top-right":K,bottom:K,"bottom-left":K,"bottom-right":K,left:K,right:K}}else return{center:i.Point.convert(Y.center||[0,0]),top:i.Point.convert(Y.top||[0,0]),"top-left":i.Point.convert(Y["top-left"]||[0,0]),"top-right":i.Point.convert(Y["top-right"]||[0,0]),bottom:i.Point.convert(Y.bottom||[0,0]),"bottom-left":i.Point.convert(Y["bottom-left"]||[0,0]),"bottom-right":i.Point.convert(Y["bottom-right"]||[0,0]),left:i.Point.convert(Y.left||[0,0]),right:i.Point.convert(Y.right||[0,0])};else return _f(new i.Point(0,0))}var ns={version:i.version,supported:a,setRTLTextPlugin:i.setRTLTextPlugin,getRTLTextPluginStatus:i.getRTLTextPluginStatus,Map:vn,NavigationControl:Xn,GeolocateControl:$c,AttributionControl:Rn,ScaleControl:Qc,FullscreenControl:Gl,Popup:ls,Marker:Jn,Style:mu,LngLat:i.LngLat,LngLatBounds:i.LngLatBounds,Point:i.Point,MercatorCoordinate:i.MercatorCoordinate,Evented:i.Evented,config:i.config,prewarm:jn,clearPrewarmedResources:la,get accessToken(){return i.config.ACCESS_TOKEN},set accessToken(Y){i.config.ACCESS_TOKEN=Y},get baseApiUrl(){return i.config.API_URL},set baseApiUrl(Y){i.config.API_URL=Y},get workerCount(){return Pi.workerCount},set workerCount(Y){Pi.workerCount=Y},get maxParallelImageRequests(){return i.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(Y){i.config.MAX_PARALLEL_IMAGE_REQUESTS=Y},clearStorage:function(z){i.clearTileCache(z)},workerUrl:""};return ns}),r})});var JUe=ye((Byr,KUe)=>{"use strict";var tw=Mr(),CHt=Pl().sanitizeHTML,LHt=HK(),ZUe=c1();function XUe(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=ZUe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ig=XUe.prototype;ig.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=WF(t)};ig.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ig.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ig.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ig.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ig.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapboxLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ig.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!WF(e)){var r=PHt(e);t.addSource(this.idSource,r)}};ig.findFollowingMapboxLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function YUe(e){var t={},r={};switch(e.type){case"circle":tw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":tw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":tw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=LHt(n.textposition,n.iconsize);tw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),tw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":tw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function PHt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=CHt(e.sourceattribution)),n}KUe.exports=function(t,r,n){var i=new XUe(t,r);return i.update(n),i}});var oVe=ye((Nyr,aVe)=>{"use strict";var KK=YK(),JK=Mr(),tVe=nx(),$Ue=ba(),IHt=Qa(),RHt=gv(),ZF=Nc(),rVe=Sg(),DHt=rVe.drawMode,zHt=rVe.selectMode,FHt=wf().prepSelect,qHt=wf().clearOutline,OHt=wf().clearSelectionsCache,BHt=wf().selectOnClick,_x=c1(),NHt=JUe();function iVe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.accessToken=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Ah=iVe.prototype;Ah.plot=function(e,t,r){var n=this,i=t[n.id];n.map&&i.accesstoken!==n.accessToken&&(n.map.remove(),n.map=null,n.styleObj=null,n.traceHash={},n.layerList=[]);var a;n.map?a=new Promise(function(o,s){n.updateMap(e,t,o,s)}):a=new Promise(function(o,s){n.createMap(e,t,o,s)}),r.push(a)};Ah.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=nVe(a.style,t);i.accessToken=a.accesstoken;var s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new KK.Map({container:i.div,style:o.style,center:$K(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new KK.AttributionControl({compact:!0}));u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var c=[];c.push(new Promise(function(f){u.once("load",f)})),c=c.concat(tVe.fetchTraceGeoData(e)),Promise.all(c).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Ah.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=nVe(o.style,t);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(tVe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Ah.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&BHt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&ZF.click(n,l.originalEvent)}}};Ah.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=JK.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),zHt(a)||DHt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){FHt(l,u,c,t.dragOptions,a)},RHt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Ah.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Ah.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var QK=Mr(),UHt=C_(),VHt=Zd(),sVe=Rk();lVe.exports=function(t,r,n){UHt(t,r,n,{type:"mapbox",attributes:sVe,handleDefaults:HHt,partition:"y",accessToken:r._mapboxAccessToken})};function HHt(e,t,r,n){r("accesstoken",n.accessToken),r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var i=r("bounds.west"),a=r("bounds.east"),o=r("bounds.south"),s=r("bounds.north");(i===void 0||a===void 0||o===void 0||s===void 0)&&delete t.bounds,VHt(e,t,{name:"layers",handleItemDefaults:GHt}),t._input=e}function GHt(e,t){function r(l,u){return QK.coerce(e,t,sVe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",QK.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),QK.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var XF=ye(Np=>{"use strict";var cVe=YK(),tm=Mr(),eJ=tm.strTranslate,jHt=tm.strScale,WHt=kd().getSubplotCalcData,ZHt=Zp(),XHt=xa(),fVe=ao(),YHt=Pl(),KHt=oVe(),xx="mapbox",Qm=Np.constants=c1();Np.name=xx;Np.attr="subplot";Np.idRoot=xx;Np.idRegex=Np.attrRegex=tm.counterRegex(xx);var JHt=["mapbox subplots and traces are deprecated!","Please consider switching to `map` subplots and traces.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");Np.attributes={subplot:{valType:"subplotid",dflt:"mapbox",editType:"calc"}};Np.layoutAttributes=Rk();Np.supplyLayoutDefaults=uVe();var hVe=!0;Np.plot=function(t){hVe&&(hVe=!1,tm.warn(JHt));var r=t._fullLayout,n=t.calcdata,i=r._subplots[xx];if(cVe.version!==Qm.requiredVersion)throw new Error(Qm.wrongVersionErrorMsg);var a=$Ht(t,i);cVe.accessToken=a;for(var o=0;op/2){var E=d.split("|").join("
");x.text(E).attr("data-unformatted",E).call(YHt.convertToTspans,e),b=fVe.bBox(x.node())}x.attr("transform",eJ(-3,-b.height+8)),v.insert("rect",".static-attribution").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:"rgba(255, 255, 255, 0.75)"});var k=1;b.width+6>p&&(k=p/(b.width+6));var A=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];v.attr("transform",eJ(A[0],A[1])+jHt(k))}};function $Ht(e,t){var r=e._fullLayout,n=e._context;if(n.mapboxAccessToken==="")return"";for(var i=[],a=[],o=!1,s=!1,l=0;l1&&tm.warn(Qm.multipleTokensErrorMsg),i[0]):(a.length&&tm.log(["Listed mapbox access token(s)",a.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}function dVe(e){return typeof e=="string"&&(Qm.styleValuesMapbox.indexOf(e)!==-1||e.indexOf("mapbox://")===0||e.indexOf("stamen")===0)}Np.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[xx],n=0;n{"use strict";var Hyr=["*scattermapbox* trace is deprecated!","Please consider switching to the *scattermap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");vVe.exports={attributes:NF(),supplyDefaults:MUe(),colorbar:Kd(),formatLabels:VK(),calc:lz(),plot:NUe(),hoverPoints:jF().hoverPoints,eventData:GUe(),selectPoints:WUe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermapbox",basePlotModule:XF(),categories:["mapbox","gl","symbols","showLegend","scatter-like"],meta:{}}});var mVe=ye((jyr,gVe)=>{"use strict";gVe.exports=pVe()});var tJ=ye((Wyr,yVe)=>{"use strict";var f1=K5(),QHt=Jl(),eGt=Wo().hovertemplateAttrs,tGt=vl(),bx=no().extendFlat;yVe.exports=bx({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:bx({},f1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:f1.text,hovertext:f1.hovertext,marker:{line:{color:bx({},f1.marker.line.color,{editType:"plot"}),width:bx({},f1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:bx({},f1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:bx({},f1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:bx({},f1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:f1.hoverinfo,hovertemplate:eGt({},{keys:["properties"]}),showlegend:bx({},tGt.showlegend,{dflt:!1})},QHt("",{cLetter:"z",editTypeOverride:"calc"}))});var xVe=ye((Zyr,_Ve)=>{"use strict";var qk=Mr(),rGt=Uh(),iGt=tJ();_Ve.exports=function(t,r,n,i){function a(c,f){return qk.coerce(t,r,iGt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!qk.isArrayOrTypedArray(o)||!o.length||!qk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||qk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),rGt(t,r,i,a,{prefix:"",cLetter:"z"}),qk.coerceSelectionMarkerOpacity(r,a)}});var rJ=ye((Xyr,TVe)=>{"use strict";var nGt=uo(),h1=Mr(),aGt=Mu(),oGt=ao(),sGt=rx().makeBlank,bVe=nx();function lGt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:sGt()};if(!r)return a;var o=bVe.extractTraceFeature(e);if(!o)return a;var s=aGt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;h1.isArrayOrTypedArray(l.opacity)&&(c=function(E){var k=E.mo;return nGt(k)?+h1.constrain(k,0,1):0});var f;h1.isArrayOrTypedArray(u.color)&&(f=function(E){return E.mlc});var h;h1.isArrayOrTypedArray(u.width)&&(h=function(E){return E.mlw});for(var d=0;d{"use strict";var SVe=rJ().convert,uGt=rJ().convertOnSelect,AVe=c1().traceLayerPrefix;function MVe(e,t){this.type="choroplethmapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",AVe+t+"-fill"],["line",AVe+t+"-line"]],this.below=null}var wA=MVe.prototype;wA.update=function(e){this._update(SVe(e)),e[0].trace._glTrace=this};wA.updateOnSelect=function(e){this._update(uGt(e))};wA._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};wA.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};EVe.exports=function(t,r){var n=r[0].trace,i=new MVe(t,n.uid),a=i.sourceId,o=SVe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var LVe=ye((Jyr,CVe)=>{"use strict";var Kyr=["*choroplethmapbox* trace is deprecated!","Please consider switching to the *choroplethmap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");CVe.exports={attributes:tJ(),supplyDefaults:xVe(),colorbar:M_(),calc:Lz(),plot:kVe(),hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";PVe.exports=LVe()});var nJ=ye((Qyr,DVe)=>{"use strict";var cGt=Jl(),fGt=Wo().hovertemplateAttrs,RVe=vl(),YF=NF(),iJ=no().extendFlat;DVe.exports=iJ({lon:YF.lon,lat:YF.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:YF.text,hovertext:YF.hovertext,hoverinfo:iJ({},RVe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:fGt(),showlegend:iJ({},RVe.showlegend,{dflt:!1})},cGt("",{cLetter:"z",editTypeOverride:"calc"}))});var FVe=ye((e1r,zVe)=>{"use strict";var hGt=Mr(),dGt=Uh(),vGt=nJ();zVe.exports=function(t,r,n,i){function a(u,c){return hGt.coerce(t,r,vGt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),dGt(t,r,i,a,{prefix:"",cLetter:"z"})}});var BVe=ye((t1r,OVe)=>{"use strict";var aJ=uo(),pGt=Mr().isArrayOrTypedArray,oJ=es().BADNUM,gGt=zv(),qVe=Mr()._;OVe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=pGt(a)&&a.length,s=0;s{"use strict";var mGt=uo(),sJ=Mr(),NVe=va(),UVe=Mu(),VVe=es().BADNUM,yGt=rx().makeBlank;HVe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:yGt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=sJ.isArrayOrTypedArray(l)&&l.length,f=sJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=UVe.extractOpts(r),p=b.reversescale?UVe.flipScale(b.colorscale):b.colorscale,E=p[0][1],k=NVe.opacity(E)<1?E:NVe.addOpacity(E,0),A=["interpolate",["linear"],["heatmap-density"],0,k];for(s=1;s{"use strict";var jVe=GVe(),_Gt=c1().traceLayerPrefix;function WVe(e,t){this.type="densitymapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",_Gt+t+"-heatmap"]],this.below=null}var KF=WVe.prototype;KF.update=function(e){var t=this.subplot,r=this.layerList,n=jVe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};KF.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};ZVe.exports=function(t,r){var n=r[0].trace,i=new WVe(t,n.uid),a=i.sourceId,o=jVe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var KVe=ye((n1r,YVe)=>{"use strict";var xGt=Qa(),bGt=jF().hoverPoints,wGt=jF().getExtraText;YVe.exports=function(t,r,n){var i=bGt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=xGt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=wGt(s,l,o[0].t.labels),[a]}}});var $Ve=ye((a1r,JVe)=>{"use strict";JVe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var eHe=ye((s1r,QVe)=>{"use strict";var o1r=["*densitymapbox* trace is deprecated!","Please consider switching to the *densitymap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");QVe.exports={attributes:nJ(),supplyDefaults:FVe(),colorbar:M_(),formatLabels:VK(),calc:BVe(),plot:XVe(),hoverPoints:KVe(),eventData:$Ve(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";tHe.exports=eHe()});var nHe=ye((u1r,iHe)=>{iHe.exports={version:8,name:"orto",metadata:{"maputnik:renderer":"mlgljs"},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",minzoom:14,filter:["all",["in","class","river","stream","canal"],["==","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]},"line-dasharray":[2,4]}},{id:"waterway-other",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["!in","class","canal","river","stream"],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,2]]}}},{id:"waterway-stream-canal",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["in","class","canal","stream"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]}}},{id:"waterway-river",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["==","class","river"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.2,stops:[[10,.8],[20,4]]},"line-opacity":.5}},{id:"water-offset",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",maxzoom:8,filter:["==","$type","Polygon"],layout:{visibility:"visible"},paint:{"fill-opacity":0,"fill-color":"#a0c8f0","fill-translate":{base:1,stops:[[6,[2,0]],[8,[0,0]]]}}},{id:"water",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-color":"hsl(210, 67%, 85%)","fill-opacity":0}},{id:"water-pattern",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-translate":[0,2.5],"fill-pattern":"wave","fill-opacity":1}},{id:"landcover-ice-shelf",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"landcover",filter:["==","subclass","ice_shelf"],layout:{visibility:"visible"},paint:{"fill-color":"#fff","fill-opacity":{base:1,stops:[[0,.9],[10,.3]]}}},{id:"tunnel-service-track-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[15,1],[16,4],[20,11]]}}},{id:"tunnel-minor-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,1]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"tunnel-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"tunnel-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.7}},{id:"tunnel-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"tunnel-path",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"tunnel-service-track",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":{base:1.2,stops:[[15.5,0],[16,2],[20,7.5]]}}},{id:"tunnel-minor",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor_road"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"tunnel-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,10]]}}},{id:"tunnel-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-motorway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#ffdaa6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-railway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]},"line-dasharray":[2,2]}},{id:"ferry",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["in","class","ferry"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(108, 159, 182, 1)","line-width":1.1,"line-dasharray":[2,2]}},{id:"aeroway-taxiway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","taxiway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,2],[17,12]]},"line-opacity":1}},{id:"aeroway-runway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","runway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,5],[17,55]]},"line-opacity":1}},{id:"aeroway-taxiway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,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-width":{base:1.5,stops:[[11,1],[17,10]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{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-width":{base:1.5,stops:[[11,4],[17,50]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"highway-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-minor-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,0]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"highway-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":.5,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"highway-primary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[7,0],[8,.6]]},"line-width":{base:1.2,stops:[[7,0],[8,.6],[9,1.5],[20,22]]}}},{id:"highway-trunk-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[5,0],[6,.5]]},"line-width":{base:1.2,stops:[[5,0],[6,.6],[7,1.5],[20,22]]}}},{id:"highway-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:4,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[4,0],[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":{stops:[[4,0],[5,.5]]}}},{id:"highway-path",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"highway-motorway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-minor",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":.5,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"highway-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[8,.5],[20,13]]},"line-opacity":.5}},{id:"highway-primary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[8.5,0],[9,.5],[20,18]]},"line-opacity":0}},{id:"highway-trunk",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"highway-motorway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"railway-transit",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-transit-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway-service",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-service-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"railway-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"bridge-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,28]]}}},{id:"bridge-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(28, 76%, 67%)","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,26]]}}},{id:"bridge-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"bridge-path-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#f8f4f0","line-width":{base:1.2,stops:[[15,1.2],[20,18]]}}},{id:"bridge-path",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#cba","line-width":{base:1.2,stops:[[15,1.2],[20,4]]},"line-dasharray":[1.5,.75]}},{id:"bridge-motorway-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,20]]}}},{id:"bridge-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]}}},{id:"bridge-motorway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"bridge-railway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"bridge-railway-hatching",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"cablecar",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,1],[19,2.5]]}}},{id:"cablecar-dash",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,3],[19,5.5]]},"line-dasharray":[2,3]}},{id:"boundary-land-level-4",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",[">=","admin_level",4],["<=","admin_level",8],["!=","maritime",1]],layout:{"line-join":"round"},paint:{"line-color":"#9e9cab","line-dasharray":[3,1,1,1],"line-width":{base:1.4,stops:[[4,.4],[5,1],[12,3]]},"line-opacity":.6}},{id:"boundary-land-level-2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==","admin_level",2],["!=","maritime",1],["!=","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 66%)","line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,2]]}}},{id:"boundary-land-disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=","maritime",1],["==","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 70%)","line-dasharray":[1,3],"line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,8]]}}},{id:"boundary-water",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["in","admin_level",2,4],["==","maritime",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(154, 189, 214, 1)","line-width":{base:1,stops:[[0,.6],[4,1],[5,1],[12,1]]},"line-opacity":{stops:[[6,0],[10,0]]}}},{id:"waterway-name",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:13,filter:["all",["==","$type","LineString"],["has","name"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin} {name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","text-letter-spacing":.2,"symbol-spacing":350},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-lakeline",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["==","$type","LineString"],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":`{name:latin} {name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-ocean",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["==","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-other",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["!in","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":{stops:[[0,10],[6,14]]},"text-field":`{name:latin} {name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2,visibility:"visible"},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"poi-level-3",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:16,filter:["all",["==","$type","Point"],[">=","rank",25]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} {name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-2",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:15,filter:["all",["==","$type","Point"],["<=","rank",24],[">=","rank",15]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} @@ -3219,10 +3219,10 @@ uniform `+Kt+" "+ir+" u_"+Jt+`; {name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(10, 9, 9, 0.8)"}},{id:"place-town",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["==","class","town"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,14],[15,24]]},"text-field":`{name:latin} {name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(22, 22, 22, 0.8)"}},{id:"place-city",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["!=","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} {name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(0, 0, 0, 1)","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-city-capital",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} -{name:nonlatin}`,"text-max-width":8,"icon-image":"star_11","text-offset":[.4,0],"icon-size":.8,"text-anchor":"left",visibility:"visible"},paint:{"text-color":"#333","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["!has","iso_a2"]],layout:{"text-font":["Noto Sans Italic"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-3",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-2",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",2],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[2,11],[5,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-1",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",1],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[1,11],[4,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-continent",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",maxzoom:1,filter:["==","class","continent"],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":14,"text-max-width":6.25,"text-transform":"uppercase",visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}}],id:"qebnlkra6"}});var $Ve=ye((Kyr,JVe)=>{JVe.exports={version:8,name:"orto",metadata:{},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}}]}});var bx=ye((Jyr,iHe)=>{"use strict";var vGt=X1(),pGt=KVe(),gGt=$Ve(),mGt='\xA9 OpenStreetMap contributors',QVe="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",eHe="https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",KF="https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",yGt="https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json",_Gt="https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json",xGt="https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json",rHe={basic:KF,streets:KF,outdoors:KF,light:QVe,dark:eHe,satellite:gGt,"satellite-streets":pGt,"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:mGt,tiles:["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":QVe,"carto-darkmatter":eHe,"carto-voyager":KF,"carto-positron-nolabels":yGt,"carto-darkmatter-nolabels":_Gt,"carto-voyager-nolabels":xGt},tHe=vGt(rHe);iHe.exports={styleValueDflt:"basic",stylesMap:rHe,styleValuesMap:tHe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",missingStyleErrorMsg:["No valid maplibre style found, please set `map.style` to one of:",tHe.join(", "),"or use a tile service."].join(` -`),mapOnErrorMsg:"Map error."}});var Fk=ye(($yr,lHe)=>{"use strict";var nHe=Mr(),aHe=va().defaultLine,bGt=Ju().attributes,wGt=Su(),TGt=Uc().textposition,AGt=Bu().overrideAll,SGt=Vs().templatedArray,oHe=bx(),sHe=wGt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});sHe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var MGt=lHe.exports=AGt({_arrayAttrRegexps:[nHe.counterRegex("map",".layers",!0)],domain:bGt({name:"map"}),style:{valType:"any",values:oHe.styleValuesMap,dflt:oHe.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:SGt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:aHe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:aHe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:sHe,textposition:nHe.extendFlat({},TGt,{arrayOk:!1})}})},"plot","from-root");MGt.uirevision={valType:"any",editType:"none"}});var JF=ye((Qyr,fHe)=>{"use strict";var EGt=Wo().hovertemplateAttrs,kGt=Wo().texttemplateAttrs,CGt=Eg(),qk=H2(),AA=Uc(),uHe=Fk(),LGt=vl(),PGt=Kl(),rw=no().extendFlat,IGt=Bu().overrideAll,RGt=Fk(),cHe=qk.line,SA=qk.marker;fHe.exports=IGt({lon:qk.lon,lat:qk.lat,cluster:{enabled:{valType:"boolean"},maxzoom:rw({},RGt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:rw({},SA.opacity,{dflt:1})},mode:rw({},AA.mode,{dflt:"markers"}),text:rw({},AA.text,{}),texttemplate:kGt({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:rw({},AA.hovertext,{}),line:{color:cHe.color,width:cHe.width},connectgaps:AA.connectgaps,marker:rw({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:SA.opacity,size:SA.size,sizeref:SA.sizeref,sizemin:SA.sizemin,sizemode:SA.sizemode},PGt("marker")),fill:qk.fill,fillcolor:CGt(),textfont:uHe.layers.symbol.textfont,textposition:uHe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:AA.selected.marker},unselected:{marker:AA.unselected.marker},hoverinfo:rw({},LGt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:EGt()},"calc","nested")});var oJ=ye((e1r,hHe)=>{"use strict";var DGt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];hHe.exports={isSupportedFont:function(e){return DGt.indexOf(e)!==-1}}});var pHe=ye((t1r,vHe)=>{"use strict";var Ok=Mr(),sJ=lu(),zGt=$p(),FGt=R0(),qGt=D0(),OGt=Ig(),dHe=JF(),BGt=oJ().isSupportedFont;vHe.exports=function(t,r,n,i){function a(g,E){return Ok.coerce(t,r,dHe,g,E)}function o(g,E){return Ok.coerce2(t,r,dHe,g,E)}var s=NGt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("hovertext"),a("hovertemplate"),a("mode"),a("below"),sJ.hasMarkers(r)){zGt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(Ok.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),Ok.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}sJ.hasLines(r)&&(FGt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,x=a("cluster.enabled",v);if(x||sJ.hasText(r)){var b=i.font.family;qGt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:BGt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&OGt(t,r,n,a),Ok.coerceSelectionMarkerOpacity(r,a)};function NGt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var lJ=ye((r1r,mHe)=>{"use strict";var gHe=Qa();mHe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=gHe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=gHe.tickText(o,o.c2l(s[1]),!0).text,i}});var uJ=ye((i1r,_He)=>{"use strict";var yHe=Mr();_He.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=yHe.isArrayOrTypedArray(r)?yHe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var SHe=ye((n1r,AHe)=>{"use strict";var wHe=uo(),nv=Mr(),UGt=es().BADNUM,QF=tx(),xHe=Mu(),VGt=ao(),HGt=S3(),e7=lu(),GGt=oJ().isSupportedFont,jGt=uJ(),WGt=rp().appendArrayPointValue,ZGt=Ll().NEWLINES,XGt=Ll().BR_TAG_ALL;AHe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=e7.hasLines(n),s=e7.hasMarkers(n),l=e7.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=$F("fill"),d=$F("line"),v=$F("circle"),x=$F("symbol"),b={fill:h,line:d,circle:v,symbol:x};if(!i)return b;var g;if((a||o)&&(g=QF.calcTraceToLineCoords(r)),a&&(h.geojson=QF.makePolygon(g),h.layout.visibility="visible",nv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=QF.makeLine(g),d.layout.visibility="visible",nv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var E=YGt(r);v.geojson=E.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":fJ(n.cluster.color,n.cluster.step),"circle-radius":fJ(n.cluster.size,n.cluster.step),"circle-opacity":fJ(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":bHe(n),"text-size":12}}),nv.extendFlat(v.paint,{"circle-color":E.mcc,"circle-radius":E.mrc,"circle-opacity":E.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(x.geojson=KGt(r,t),nv.extendFlat(x.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(nv.extendFlat(x.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&nv.extendFlat(x.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),x.layout["icon-allow-overlap"]=n.marker.allowoverlap,nv.extendFlat(x.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var k=(n.marker||{}).size,A=jGt(n.textposition,k);nv.extendFlat(x.layout,{"text-size":n.textfont.size,"text-anchor":A.anchor,"text-offset":A.offset,"text-font":bHe(n)}),nv.extendFlat(x.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function $F(e){return{type:e,geojson:QF.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function YGt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=nv.isArrayOrTypedArray(r.color),a=nv.isArrayOrTypedArray(r.size),o=nv.isArrayOrTypedArray(r.opacity),s;function l(k){return t.opacity*k}function u(k){return k/2}var c;i&&(xHe.hasColorscale(t,"marker")?c=xHe.makeColorScaleFuncFromTrace(r):c=nv.identity);var f;a&&(f=HGt(t));var h;o&&(h=function(k){var A=wHe(k)?+nv.constrain(k,0,1):0;return l(A)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),GGt(s)||(s=r);var l=s.split(", ");return l}});var CHe=ye((a1r,kHe)=>{"use strict";var JGt=Mr(),MHe=SHe(),MA=bx().traceLayerPrefix,ng={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function EHe(e,t,r,n){this.type="scattermap",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:MA+t+"-fill",line:MA+t+"-line",circle:MA+t+"-circle",symbol:MA+t+"-symbol",cluster:MA+t+"-cluster",clusterCount:MA+t+"-cluster-count"},this.below=null}var Bk=EHe.prototype;Bk.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&JGt.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};Bk.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};Bk.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var _=A[L];i.removeLayer(u.layerIds[_])}k||i.removeSource(u.sourceIds.circle)}function h(k){for(var A=ng.nonCluster,L=0;L=0;L--){var _=A[L];i.removeLayer(u.layerIds[_]),k||i.removeSource(u.sourceIds[_])}}function v(k){l?f(k):d(k)}function x(k){s?c(k):h(k)}function b(){for(var k=s?ng.cluster:ng.nonCluster,A=0;A=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};kHe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new EHe(t,n.uid,i,a),s=MHe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var $Gt=Nc(),hJ=Mr(),QGt=oT(),ejt=hJ.fillText,tjt=es().BADNUM,rjt=bx().traceLayerPrefix;function ijt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=rjt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(M){return M.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function x(M){var p=M.lonlat;if(p[0]===tjt||c&&l.indexOf(M.i+1)===-1)return 1/0;var P=hJ.modHalf(p[0],360),T=p[1],F=s.project([P,T]),q=F.x-a.c2p([v,T]),V=F.y-o.c2p([P,r]),H=Math.max(3,M.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-H,1-3/H)}if($Gt.getClosest(n,x,e),e.index!==!1){var b=n[e.index],g=b.lonlat,E=[hJ.modHalf(g[0],360)+d,g[1]],k=a.c2p(E),A=o.c2p(E),L=b.mrc||1;e.x0=k-L,e.x1=k+L,e.y0=A-L,e.y1=A+L;var _={};_[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,_);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=QGt(i,b),e.extraText=LHe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function LHe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&ejt(t,e,u),u.join("
")}PHe.exports={hoverPoints:ijt,getExtraText:LHe}});var RHe=ye((s1r,IHe)=>{"use strict";IHe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var zHe=ye((l1r,DHe)=>{"use strict";var njt=Mr(),ajt=lu(),ojt=es().BADNUM;DHe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!ajt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof dJ=="object"&&typeof vJ!="undefined"?vJ.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis!="undefined"?globalThis:e||self,e.maplibregl=t())})(dJ,function(){"use strict";var e={},t={};function r(i,a,o){if(t[i]=o,i==="index"){var s="var sharedModule = {}; ("+t.shared+")(sharedModule); ("+t.worker+")(sharedModule);",l={};return t.shared(l),t.index(e,l),typeof window!="undefined"&&e.setWorkerUrl(window.URL.createObjectURL(new Blob([s],{type:"text/javascript"}))),e}}r("shared",["exports"],function(i){"use strict";function a(R,S,D,j){return new(D||(D=Promise))(function(te,ue){function ve(at){try{Ze(j.next(at))}catch(Tt){ue(Tt)}}function De(at){try{Ze(j.throw(at))}catch(Tt){ue(Tt)}}function Ze(at){var Tt;at.done?te(at.value):(Tt=at.value,Tt instanceof D?Tt:new D(function(Ft){Ft(Tt)})).then(ve,De)}Ze((j=j.apply(R,S||[])).next())})}function o(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}typeof SuppressedError=="function"&&SuppressedError;var s=l;function l(R,S){this.x=R,this.y=S}l.prototype={clone:function(){return new l(this.x,this.y)},add:function(R){return this.clone()._add(R)},sub:function(R){return this.clone()._sub(R)},multByPoint:function(R){return this.clone()._multByPoint(R)},divByPoint:function(R){return this.clone()._divByPoint(R)},mult:function(R){return this.clone()._mult(R)},div:function(R){return this.clone()._div(R)},rotate:function(R){return this.clone()._rotate(R)},rotateAround:function(R,S){return this.clone()._rotateAround(R,S)},matMult:function(R){return this.clone()._matMult(R)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(R){return this.x===R.x&&this.y===R.y},dist:function(R){return Math.sqrt(this.distSqr(R))},distSqr:function(R){var S=R.x-this.x,D=R.y-this.y;return S*S+D*D},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(R){return Math.atan2(this.y-R.y,this.x-R.x)},angleWith:function(R){return this.angleWithSep(R.x,R.y)},angleWithSep:function(R,S){return Math.atan2(this.x*S-this.y*R,this.x*R+this.y*S)},_matMult:function(R){var S=R[2]*this.x+R[3]*this.y;return this.x=R[0]*this.x+R[1]*this.y,this.y=S,this},_add:function(R){return this.x+=R.x,this.y+=R.y,this},_sub:function(R){return this.x-=R.x,this.y-=R.y,this},_mult:function(R){return this.x*=R,this.y*=R,this},_div:function(R){return this.x/=R,this.y/=R,this},_multByPoint:function(R){return this.x*=R.x,this.y*=R.y,this},_divByPoint:function(R){return this.x/=R.x,this.y/=R.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var R=this.y;return this.y=this.x,this.x=-R,this},_rotate:function(R){var S=Math.cos(R),D=Math.sin(R),j=D*this.x+S*this.y;return this.x=S*this.x-D*this.y,this.y=j,this},_rotateAround:function(R,S){var D=Math.cos(R),j=Math.sin(R),te=S.y+j*(this.x-S.x)+D*(this.y-S.y);return this.x=S.x+D*(this.x-S.x)-j*(this.y-S.y),this.y=te,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},l.convert=function(R){return R instanceof l?R:Array.isArray(R)?new l(R[0],R[1]):R};var u=o(s),c=f;function f(R,S,D,j){this.cx=3*R,this.bx=3*(D-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*S,this.by=3*(j-S)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=S,this.p2x=D,this.p2y=j}f.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,S){if(S===void 0&&(S=1e-6),R<0)return 0;if(R>1)return 1;for(var D=R,j=0;j<8;j++){var te=this.sampleCurveX(D)-R;if(Math.abs(te)te?ve=D:De=D,D=.5*(De-ve)+ve;return D},solve:function(R,S){return this.sampleCurveY(this.solveCurveX(R,S))}};var h=o(c);let d,v;function x(){return d==null&&(d=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),d}function b(){if(v==null&&(v=!1,x())){let S=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(S){for(let j=0;j<5*5;j++){let te=4*j;S.fillStyle=`rgb(${te},${te+1},${te+2})`,S.fillRect(j%5,Math.floor(j/5),1,1)}let D=S.getImageData(0,0,5,5).data;for(let j=0;j<5*5*4;j++)if(j%4!=3&&D[j]!==j){v=!0;break}}}return v||!1}function g(R,S,D,j){let te=new h(R,S,D,j);return ue=>te.solve(ue)}let E=g(.25,.1,.25,1);function k(R,S,D){return Math.min(D,Math.max(S,R))}function A(R,S,D){let j=D-S,te=((R-S)%j+j)%j+S;return te===S?D:te}function L(R,...S){for(let D of S)for(let j in D)R[j]=D[j];return R}let _=1;function C(R,S,D){let j={};for(let te in R)j[te]=S.call(this,R[te],te,R);return j}function M(R,S,D){let j={};for(let te in R)S.call(this,R[te],te,R)&&(j[te]=R[te]);return j}function p(R){return Array.isArray(R)?R.map(p):typeof R=="object"&&R?C(R,p):R}let P={};function T(R){P[R]||(typeof console!="undefined"&&console.warn(R),P[R]=!0)}function F(R,S,D){return(D.y-R.y)*(S.x-R.x)>(S.y-R.y)*(D.x-R.x)}function q(R){return typeof WorkerGlobalScope!="undefined"&&R!==void 0&&R instanceof WorkerGlobalScope}let V=null;function H(R){return typeof ImageBitmap!="undefined"&&R instanceof ImageBitmap}let X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function G(R,S,D,j,te){return a(this,void 0,void 0,function*(){if(typeof VideoFrame=="undefined")throw new Error("VideoFrame not supported");let ue=new VideoFrame(R,{timestamp:0});try{let ve=ue==null?void 0:ue.format;if(!ve||!ve.startsWith("BGR")&&!ve.startsWith("RGB"))throw new Error(`Unrecognized format ${ve}`);let De=ve.startsWith("BGR"),Ze=new Uint8ClampedArray(j*te*4);if(yield ue.copyTo(Ze,function(at,Tt,Ft,Qt,sr){let Tr=4*Math.max(-Tt,0),Pr=(Math.max(0,Ft)-Ft)*Qt*4+Tr,$r=4*Qt,ni=Math.max(0,Tt),Di=Math.max(0,Ft);return{rect:{x:ni,y:Di,width:Math.min(at.width,Tt+Qt)-ni,height:Math.min(at.height,Ft+sr)-Di},layout:[{offset:Pr,stride:$r}]}}(R,S,D,j,te)),De)for(let at=0;atq(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,Te=function(R,S){if(/:\/\//.test(R.url)&&!/^https?:|^file:/.test(R.url)){let j=Me(R.url);if(j)return j(R,S);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,targetMapId:ke},S)}if(!(/^file:/.test(D=R.url)||/^file:/.test(ie())&&!/^\w+:/.test(D))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(j,te){return a(this,void 0,void 0,function*(){let ue=new Request(j.url,{method:j.method||"GET",body:j.body,credentials:j.credentials,headers:j.headers,cache:j.cache,referrer:ie(),signal:te.signal});j.type!=="json"||ue.headers.has("Accept")||ue.headers.set("Accept","application/json");let ve=yield fetch(ue);if(!ve.ok){let at=yield ve.blob();throw new ge(ve.status,ve.statusText,j.url,at)}let De;De=j.type==="arrayBuffer"||j.type==="image"?ve.arrayBuffer():j.type==="json"?ve.json():ve.text();let Ze=yield De;if(te.signal.aborted)throw ae();return{data:Ze,cacheControl:ve.headers.get("Cache-Control"),expires:ve.headers.get("Expires")}})}(R,S);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,mustQueue:!0,targetMapId:ke},S)}var D;return function(j,te){return new Promise((ue,ve)=>{var De;let Ze=new XMLHttpRequest;Ze.open(j.method||"GET",j.url,!0),j.type!=="arrayBuffer"&&j.type!=="image"||(Ze.responseType="arraybuffer");for(let at in j.headers)Ze.setRequestHeader(at,j.headers[at]);j.type==="json"&&(Ze.responseType="text",!((De=j.headers)===null||De===void 0)&&De.Accept||Ze.setRequestHeader("Accept","application/json")),Ze.withCredentials=j.credentials==="include",Ze.onerror=()=>{ve(new Error(Ze.statusText))},Ze.onload=()=>{if(!te.signal.aborted)if((Ze.status>=200&&Ze.status<300||Ze.status===0)&&Ze.response!==null){let at=Ze.response;if(j.type==="json")try{at=JSON.parse(Ze.response)}catch(Tt){return void ve(Tt)}ue({data:at,cacheControl:Ze.getResponseHeader("Cache-Control"),expires:Ze.getResponseHeader("Expires")})}else{let at=new Blob([Ze.response],{type:Ze.getResponseHeader("Content-Type")});ve(new ge(Ze.status,Ze.statusText,j.url,at))}},te.signal.addEventListener("abort",()=>{Ze.abort(),ve(ae())}),Ze.send(j.body)})}(R,S)};function Ee(R){if(!R||R.indexOf("://")<=0||R.indexOf("data:image/")===0||R.indexOf("blob:")===0)return!0;let S=new URL(R),D=window.location;return S.protocol===D.protocol&&S.host===D.host}function Ae(R,S,D){D[R]&&D[R].indexOf(S)!==-1||(D[R]=D[R]||[],D[R].push(S))}function ze(R,S,D){if(D&&D[R]){let j=D[R].indexOf(S);j!==-1&&D[R].splice(j,1)}}class Ce{constructor(S,D={}){L(this,D),this.type=S}}class me extends Ce{constructor(S,D={}){super("error",L({error:S},D))}}class Re{on(S,D){return this._listeners=this._listeners||{},Ae(S,D,this._listeners),this}off(S,D){return ze(S,D,this._listeners),ze(S,D,this._oneTimeListeners),this}once(S,D){return D?(this._oneTimeListeners=this._oneTimeListeners||{},Ae(S,D,this._oneTimeListeners),this):new Promise(j=>this.once(S,j))}fire(S,D){typeof S=="string"&&(S=new Ce(S,D||{}));let j=S.type;if(this.listens(j)){S.target=this;let te=this._listeners&&this._listeners[j]?this._listeners[j].slice():[];for(let De of te)De.call(this,S);let ue=this._oneTimeListeners&&this._oneTimeListeners[j]?this._oneTimeListeners[j].slice():[];for(let De of ue)ze(j,De,this._oneTimeListeners),De.call(this,S);let ve=this._eventedParent;ve&&(L(S,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),ve.fire(S))}else S instanceof me&&console.error(S.error);return this}listens(S){return this._listeners&&this._listeners[S]&&this._listeners[S].length>0||this._oneTimeListeners&&this._oneTimeListeners[S]&&this._oneTimeListeners[S].length>0||this._eventedParent&&this._eventedParent.listens(S)}setEventedParent(S,D){return this._eventedParent=S,this._eventedParentData=D,this}}var ce={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let Ge=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function nt(R,S){let D={};for(let j in R)j!=="ref"&&(D[j]=R[j]);return Ge.forEach(j=>{j in S&&(D[j]=S[j])}),D}function ct(R,S){if(Array.isArray(R)){if(!Array.isArray(S)||R.length!==S.length)return!1;for(let D=0;D`:R.itemType.kind==="value"?"array":`array<${S}>`}return R.kind}let Ve=[Lt,St,Et,dt,Ht,Br,$t,Ne(fr),Or,Nr,ut];function Xe(R,S){if(S.kind==="error")return null;if(R.kind==="array"){if(S.kind==="array"&&(S.N===0&&S.itemType.kind==="value"||!Xe(R.itemType,S.itemType))&&(typeof R.N!="number"||R.N===S.N))return null}else{if(R.kind===S.kind)return null;if(R.kind==="value"){for(let D of Ve)if(!Xe(D,S))return null}}return`Expected ${Ye(R)} but found ${Ye(S)} instead.`}function ht(R,S){return S.some(D=>D.kind===R.kind)}function Le(R,S){return S.some(D=>D==="null"?R===null:D==="array"?Array.isArray(R):D==="object"?R&&!Array.isArray(R)&&typeof R=="object":D===typeof R)}function xe(R,S){return R.kind==="array"&&S.kind==="array"?R.itemType.kind===S.itemType.kind&&typeof R.N=="number":R.kind===S.kind}let Se=.96422,lt=.82521,Gt=4/29,Vt=6/29,ar=3*Vt*Vt,Qr=Vt*Vt*Vt,ai=Math.PI/180,jr=180/Math.PI;function ri(R){return(R%=360)<0&&(R+=360),R}function bi([R,S,D,j]){let te,ue,ve=Wi((.2225045*(R=nn(R))+.7168786*(S=nn(S))+.0606169*(D=nn(D)))/1);R===S&&S===D?te=ue=ve:(te=Wi((.4360747*R+.3850649*S+.1430804*D)/Se),ue=Wi((.0139322*R+.0971045*S+.7141733*D)/lt));let De=116*ve-16;return[De<0?0:De,500*(te-ve),200*(ve-ue),j]}function nn(R){return R<=.04045?R/12.92:Math.pow((R+.055)/1.055,2.4)}function Wi(R){return R>Qr?Math.pow(R,1/3):R/ar+Gt}function Ni([R,S,D,j]){let te=(R+16)/116,ue=isNaN(S)?te:te+S/500,ve=isNaN(D)?te:te-D/200;return te=1*$i(te),ue=Se*$i(ue),ve=lt*$i(ve),[_n(3.1338561*ue-1.6168667*te-.4906146*ve),_n(-.9787684*ue+1.9161415*te+.033454*ve),_n(.0719453*ue-.2289914*te+1.4052427*ve),j]}function _n(R){return(R=R<=.00304?12.92*R:1.055*Math.pow(R,1/2.4)-.055)<0?0:R>1?1:R}function $i(R){return R>Vt?R*R*R:ar*(R-Gt)}function zn(R){return parseInt(R.padEnd(2,R),16)/255}function Wn(R,S){return It(S?R/100:R,0,1)}function It(R,S,D){return Math.min(Math.max(S,R),D)}function ft(R){return!R.some(Number.isNaN)}let jt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Zt{constructor(S,D,j,te=1,ue=!0){this.r=S,this.g=D,this.b=j,this.a=te,ue||(this.r*=te,this.g*=te,this.b*=te,te||this.overwriteGetter("rgb",[S,D,j,te]))}static parse(S){if(S instanceof Zt)return S;if(typeof S!="string")return;let D=function(j){if((j=j.toLowerCase().trim())==="transparent")return[0,0,0,0];let te=jt[j];if(te){let[ve,De,Ze]=te;return[ve/255,De/255,Ze/255,1]}if(j.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(j)){let ve=j.length<6?1:2,De=1;return[zn(j.slice(De,De+=ve)),zn(j.slice(De,De+=ve)),zn(j.slice(De,De+=ve)),zn(j.slice(De,De+ve)||"ff")]}if(j.startsWith("rgb")){let ve=j.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(ve){let[De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di]=ve,pi=[Tt||" ",sr||" ",$r].join("");if(pi===" "||pi===" /"||pi===",,"||pi===",,,"){let ki=[at,Qt,Pr].join(""),Zi=ki==="%%%"?100:ki===""?255:0;if(Zi){let ta=[It(+Ze/Zi,0,1),It(+Ft/Zi,0,1),It(+Tr/Zi,0,1),ni?Wn(+ni,Di):1];if(ft(ta))return ta}}return}}let ue=j.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(ue){let[ve,De,Ze,at,Tt,Ft,Qt,sr,Tr]=ue,Pr=[Ze||" ",Tt||" ",Qt].join("");if(Pr===" "||Pr===" /"||Pr===",,"||Pr===",,,"){let $r=[+De,It(+at,0,100),It(+Ft,0,100),sr?Wn(+sr,Tr):1];if(ft($r))return function([ni,Di,pi,ki]){function Zi(ta){let Va=(ta+ni/30)%12,Io=Di*Math.min(pi,1-pi);return pi-Io*Math.max(-1,Math.min(Va-3,9-Va,1))}return ni=ri(ni),Di/=100,pi/=100,[Zi(0),Zi(8),Zi(4),ki]}($r)}}}(S);return D?new Zt(...D,!1):void 0}get rgb(){let{r:S,g:D,b:j,a:te}=this,ue=te||1/0;return this.overwriteGetter("rgb",[S/ue,D/ue,j/ue,te])}get hcl(){return this.overwriteGetter("hcl",function(S){let[D,j,te,ue]=bi(S),ve=Math.sqrt(j*j+te*te);return[Math.round(1e4*ve)?ri(Math.atan2(te,j)*jr):NaN,ve,D,ue]}(this.rgb))}get lab(){return this.overwriteGetter("lab",bi(this.rgb))}overwriteGetter(S,D){return Object.defineProperty(this,S,{value:D}),D}toString(){let[S,D,j,te]=this.rgb;return`rgba(${[S,D,j].map(ue=>Math.round(255*ue)).join(",")},${te})`}}Zt.black=new Zt(0,0,0,1),Zt.white=new Zt(1,1,1,1),Zt.transparent=new Zt(0,0,0,0),Zt.red=new Zt(1,0,0,1);class yr{constructor(S,D,j){this.sensitivity=S?D?"variant":"case":D?"accent":"base",this.locale=j,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(S,D){return this.collator.compare(S,D)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Fr{constructor(S,D,j,te,ue){this.text=S,this.image=D,this.scale=j,this.fontStack=te,this.textColor=ue}}class Zr{constructor(S){this.sections=S}static fromString(S){return new Zr([new Fr(S,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(S=>S.text.length!==0||S.image&&S.image.name.length!==0)}static factory(S){return S instanceof Zr?S:Zr.fromString(S)}toString(){return this.sections.length===0?"":this.sections.map(S=>S.text).join("")}}class Vr{constructor(S){this.values=S.slice()}static parse(S){if(S instanceof Vr)return S;if(typeof S=="number")return new Vr([S,S,S,S]);if(Array.isArray(S)&&!(S.length<1||S.length>4)){for(let D of S)if(typeof D!="number")return;switch(S.length){case 1:S=[S[0],S[0],S[0],S[0]];break;case 2:S=[S[0],S[1],S[0],S[1]];break;case 3:S=[S[0],S[1],S[2],S[1]]}return new Vr(S)}}toString(){return JSON.stringify(this.values)}}let gi=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class Si{constructor(S){this.values=S.slice()}static parse(S){if(S instanceof Si)return S;if(Array.isArray(S)&&!(S.length<1)&&S.length%2==0){for(let D=0;D=0&&R<=255&&typeof S=="number"&&S>=0&&S<=255&&typeof D=="number"&&D>=0&&D<=255?j===void 0||typeof j=="number"&&j>=0&&j<=1?null:`Invalid rgba value [${[R,S,D,j].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof j=="number"?[R,S,D,j]:[R,S,D]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Gi(R){if(R===null||typeof R=="string"||typeof R=="boolean"||typeof R=="number"||R instanceof Zt||R instanceof yr||R instanceof Zr||R instanceof Vr||R instanceof Si||R instanceof Mi)return!0;if(Array.isArray(R)){for(let S of R)if(!Gi(S))return!1;return!0}if(typeof R=="object"){for(let S in R)if(!Gi(R[S]))return!1;return!0}return!1}function Ki(R){if(R===null)return Lt;if(typeof R=="string")return Et;if(typeof R=="boolean")return dt;if(typeof R=="number")return St;if(R instanceof Zt)return Ht;if(R instanceof yr)return _r;if(R instanceof Zr)return Br;if(R instanceof Vr)return Or;if(R instanceof Si)return ut;if(R instanceof Mi)return Nr;if(Array.isArray(R)){let S=R.length,D;for(let j of R){let te=Ki(j);if(D){if(D===te)continue;D=fr;break}D=te}return Ne(D||fr,S)}return $t}function ka(R){let S=typeof R;return R===null?"":S==="string"||S==="number"||S==="boolean"?String(R):R instanceof Zt||R instanceof Zr||R instanceof Vr||R instanceof Si||R instanceof Mi?R.toString():JSON.stringify(R)}class jn{constructor(S,D){this.type=S,this.value=D}static parse(S,D){if(S.length!==2)return D.error(`'literal' expression requires exactly one argument, but found ${S.length-1} instead.`);if(!Gi(S[1]))return D.error("invalid value");let j=S[1],te=Ki(j),ue=D.expectedType;return te.kind!=="array"||te.N!==0||!ue||ue.kind!=="array"||typeof ue.N=="number"&&ue.N!==0||(te=ue),new jn(te,j)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class la{constructor(S){this.name="ExpressionEvaluationError",this.message=S}toJSON(){return this.message}}let Fa={string:Et,number:St,boolean:dt,object:$t};class Ra{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j,te=1,ue=S[0];if(ue==="array"){let De,Ze;if(S.length>2){let at=S[1];if(typeof at!="string"||!(at in Fa)||at==="object")return D.error('The item type argument of "array" must be one of string, number, boolean',1);De=Fa[at],te++}else De=fr;if(S.length>3){if(S[2]!==null&&(typeof S[2]!="number"||S[2]<0||S[2]!==Math.floor(S[2])))return D.error('The length argument to "array" must be a positive integer literal',2);Ze=S[2],te++}j=Ne(De,Ze)}else{if(!Fa[ue])throw new Error(`Types doesn't contain name = ${ue}`);j=Fa[ue]}let ve=[];for(;teS.outputDefined())}}let jo={"to-boolean":dt,"to-color":Ht,"to-number":St,"to-string":Et};class oa{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j=S[0];if(!jo[j])throw new Error(`Can't parse ${j} as it is not part of the known types`);if((j==="to-boolean"||j==="to-string")&&S.length!==2)return D.error("Expected one argument.");let te=jo[j],ue=[];for(let ve=1;ve4?`Invalid rbga value ${JSON.stringify(D)}: expected an array containing either three or four numeric values.`:Pi(D[0],D[1],D[2],D[3]),!j))return new Zt(D[0]/255,D[1]/255,D[2]/255,D[3])}throw new la(j||`Could not parse color from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"padding":{let D;for(let j of this.args){D=j.evaluate(S);let te=Vr.parse(D);if(te)return te}throw new la(`Could not parse padding from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"variableAnchorOffsetCollection":{let D;for(let j of this.args){D=j.evaluate(S);let te=Si.parse(D);if(te)return te}throw new la(`Could not parse variableAnchorOffsetCollection from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"number":{let D=null;for(let j of this.args){if(D=j.evaluate(S),D===null)return 0;let te=Number(D);if(!isNaN(te))return te}throw new la(`Could not convert ${JSON.stringify(D)} to number.`)}case"formatted":return Zr.fromString(ka(this.args[0].evaluate(S)));case"resolvedImage":return Mi.fromString(ka(this.args[0].evaluate(S)));default:return ka(this.args[0].evaluate(S))}}eachChild(S){this.args.forEach(S)}outputDefined(){return this.args.every(S=>S.outputDefined())}}let Sn=["Unknown","Point","LineString","Polygon"];class Ha{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?Sn[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(S){let D=this._parseColorCache[S];return D||(D=this._parseColorCache[S]=Zt.parse(S)),D}}class oo{constructor(S,D,j=[],te,ue=new bt,ve=[]){this.registry=S,this.path=j,this.key=j.map(De=>`[${De}]`).join(""),this.scope=ue,this.errors=ve,this.expectedType=te,this._isConstant=D}parse(S,D,j,te,ue={}){return D?this.concat(D,j,te)._parse(S,ue):this._parse(S,ue)}_parse(S,D){function j(te,ue,ve){return ve==="assert"?new Ra(ue,[te]):ve==="coerce"?new oa(ue,[te]):te}if(S!==null&&typeof S!="string"&&typeof S!="boolean"&&typeof S!="number"||(S=["literal",S]),Array.isArray(S)){if(S.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let te=S[0];if(typeof te!="string")return this.error(`Expression name must be a string, but found ${typeof te} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let ue=this.registry[te];if(ue){let ve=ue.parse(S,this);if(!ve)return null;if(this.expectedType){let De=this.expectedType,Ze=ve.type;if(De.kind!=="string"&&De.kind!=="number"&&De.kind!=="boolean"&&De.kind!=="object"&&De.kind!=="array"||Ze.kind!=="value")if(De.kind!=="color"&&De.kind!=="formatted"&&De.kind!=="resolvedImage"||Ze.kind!=="value"&&Ze.kind!=="string")if(De.kind!=="padding"||Ze.kind!=="value"&&Ze.kind!=="number"&&Ze.kind!=="array")if(De.kind!=="variableAnchorOffsetCollection"||Ze.kind!=="value"&&Ze.kind!=="array"){if(this.checkSubtype(De,Ze))return null}else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"assert")}if(!(ve instanceof jn)&&ve.type.kind!=="resolvedImage"&&this._isConstant(ve)){let De=new Ha;try{ve=new jn(ve.type,ve.evaluate(De))}catch(Ze){return this.error(Ze.message),null}}return ve}return this.error(`Unknown expression "${te}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(S===void 0?"'undefined' value invalid. Use null instead.":typeof S=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof S} instead.`)}concat(S,D,j){let te=typeof S=="number"?this.path.concat(S):this.path,ue=j?this.scope.concat(j):this.scope;return new oo(this.registry,this._isConstant,te,D||null,ue,this.errors)}error(S,...D){let j=`${this.key}${D.map(te=>`[${te}]`).join("")}`;this.errors.push(new xt(j,S))}checkSubtype(S,D){let j=Xe(S,D);return j&&this.error(j),j}}class xn{constructor(S,D){this.type=D.type,this.bindings=[].concat(S),this.result=D}evaluate(S){return this.result.evaluate(S)}eachChild(S){for(let D of this.bindings)S(D[1]);S(this.result)}static parse(S,D){if(S.length<4)return D.error(`Expected at least 3 arguments, but found ${S.length-1} instead.`);let j=[];for(let ue=1;ue=j.length)throw new la(`Array index out of bounds: ${D} > ${j.length-1}.`);if(D!==Math.floor(D))throw new la(`Array index must be an integer, but found ${D} instead.`);return j[D]}eachChild(S){S(this.index),S(this.input)}outputDefined(){return!1}}class Hr{constructor(S,D){this.type=dt,this.needle=S,this.haystack=D}static parse(S,D){if(S.length!==3)return D.error(`Expected 2 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,fr);return j&&te?ht(j.type,[dt,Et,St,Lt,fr])?new Hr(j,te):D.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(j.type)} instead`):null}evaluate(S){let D=this.needle.evaluate(S),j=this.haystack.evaluate(S);if(!j)return!1;if(!Le(D,["boolean","string","number","null"]))throw new la(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(Ki(D))} instead.`);if(!Le(j,["string","array"]))throw new la(`Expected second argument to be of type array or string, but found ${Ye(Ki(j))} instead.`);return j.indexOf(D)>=0}eachChild(S){S(this.needle),S(this.haystack)}outputDefined(){return!0}}class ti{constructor(S,D,j){this.type=St,this.needle=S,this.haystack=D,this.fromIndex=j}static parse(S,D){if(S.length<=2||S.length>=5)return D.error(`Expected 3 or 4 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,fr);if(!j||!te)return null;if(!ht(j.type,[dt,Et,St,Lt,fr]))return D.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(j.type)} instead`);if(S.length===4){let ue=D.parse(S[3],3,St);return ue?new ti(j,te,ue):null}return new ti(j,te)}evaluate(S){let D=this.needle.evaluate(S),j=this.haystack.evaluate(S);if(!Le(D,["boolean","string","number","null"]))throw new la(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(Ki(D))} instead.`);let te;if(this.fromIndex&&(te=this.fromIndex.evaluate(S)),Le(j,["string"])){let ue=j.indexOf(D,te);return ue===-1?-1:[...j.slice(0,ue)].length}if(Le(j,["array"]))return j.indexOf(D,te);throw new la(`Expected second argument to be of type array or string, but found ${Ye(Ki(j))} instead.`)}eachChild(S){S(this.needle),S(this.haystack),this.fromIndex&&S(this.fromIndex)}outputDefined(){return!1}}class zi{constructor(S,D,j,te,ue,ve){this.inputType=S,this.type=D,this.input=j,this.cases=te,this.outputs=ue,this.otherwise=ve}static parse(S,D){if(S.length<5)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if(S.length%2!=1)return D.error("Expected an even number of arguments.");let j,te;D.expectedType&&D.expectedType.kind!=="value"&&(te=D.expectedType);let ue={},ve=[];for(let at=2;atNumber.MAX_SAFE_INTEGER)return Qt.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof Tr=="number"&&Math.floor(Tr)!==Tr)return Qt.error("Numeric branch labels must be integer values.");if(j){if(Qt.checkSubtype(j,Ki(Tr)))return null}else j=Ki(Tr);if(ue[String(Tr)]!==void 0)return Qt.error("Branch labels must be unique.");ue[String(Tr)]=ve.length}let sr=D.parse(Ft,at,te);if(!sr)return null;te=te||sr.type,ve.push(sr)}let De=D.parse(S[1],1,fr);if(!De)return null;let Ze=D.parse(S[S.length-1],S.length-1,te);return Ze?De.type.kind!=="value"&&D.concat(1).checkSubtype(j,De.type)?null:new zi(j,te,De,ue,ve,Ze):null}evaluate(S){let D=this.input.evaluate(S);return(Ki(D)===this.inputType&&this.outputs[this.cases[D]]||this.otherwise).evaluate(S)}eachChild(S){S(this.input),this.outputs.forEach(S),S(this.otherwise)}outputDefined(){return this.outputs.every(S=>S.outputDefined())&&this.otherwise.outputDefined()}}class Yi{constructor(S,D,j){this.type=S,this.branches=D,this.otherwise=j}static parse(S,D){if(S.length<4)return D.error(`Expected at least 3 arguments, but found only ${S.length-1}.`);if(S.length%2!=0)return D.error("Expected an odd number of arguments.");let j;D.expectedType&&D.expectedType.kind!=="value"&&(j=D.expectedType);let te=[];for(let ve=1;veD.outputDefined())&&this.otherwise.outputDefined()}}class an{constructor(S,D,j,te){this.type=S,this.input=D,this.beginIndex=j,this.endIndex=te}static parse(S,D){if(S.length<=2||S.length>=5)return D.error(`Expected 3 or 4 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,St);if(!j||!te)return null;if(!ht(j.type,[Ne(fr),Et,fr]))return D.error(`Expected first argument to be of type array or string, but found ${Ye(j.type)} instead`);if(S.length===4){let ue=D.parse(S[3],3,St);return ue?new an(j.type,j,te,ue):null}return new an(j.type,j,te)}evaluate(S){let D=this.input.evaluate(S),j=this.beginIndex.evaluate(S),te;if(this.endIndex&&(te=this.endIndex.evaluate(S)),Le(D,["string"]))return[...D].slice(j,te).join("");if(Le(D,["array"]))return D.slice(j,te);throw new la(`Expected first argument to be of type array or string, but found ${Ye(Ki(D))} instead.`)}eachChild(S){S(this.input),S(this.beginIndex),this.endIndex&&S(this.endIndex)}outputDefined(){return!1}}function hi(R,S){let D=R.length-1,j,te,ue=0,ve=D,De=0;for(;ue<=ve;)if(De=Math.floor((ue+ve)/2),j=R[De],te=R[De+1],j<=S){if(De===D||SS))throw new la("Input is not a number.");ve=De-1}return 0}class Ji{constructor(S,D,j){this.type=S,this.input=D,this.labels=[],this.outputs=[];for(let[te,ue]of j)this.labels.push(te),this.outputs.push(ue)}static parse(S,D){if(S.length-1<4)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if((S.length-1)%2!=0)return D.error("Expected an even number of arguments.");let j=D.parse(S[1],1,St);if(!j)return null;let te=[],ue=null;D.expectedType&&D.expectedType.kind!=="value"&&(ue=D.expectedType);for(let ve=1;ve=De)return D.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',at);let Ft=D.parse(Ze,Tt,ue);if(!Ft)return null;ue=ue||Ft.type,te.push([De,Ft])}return new Ji(ue,j,te)}evaluate(S){let D=this.labels,j=this.outputs;if(D.length===1)return j[0].evaluate(S);let te=this.input.evaluate(S);if(te<=D[0])return j[0].evaluate(S);let ue=D.length;return te>=D[ue-1]?j[ue-1].evaluate(S):j[hi(D,te)].evaluate(S)}eachChild(S){S(this.input);for(let D of this.outputs)S(D)}outputDefined(){return this.outputs.every(S=>S.outputDefined())}}function ua(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}var Fn=Sa;function Sa(R,S,D,j){this.cx=3*R,this.bx=3*(D-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*S,this.by=3*(j-S)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=S,this.p2x=D,this.p2y=j}Sa.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,S){if(S===void 0&&(S=1e-6),R<0)return 0;if(R>1)return 1;for(var D=R,j=0;j<8;j++){var te=this.sampleCurveX(D)-R;if(Math.abs(te)te?ve=D:De=D,D=.5*(De-ve)+ve;return D},solve:function(R,S){return this.sampleCurveY(this.solveCurveX(R,S))}};var go=ua(Fn);function Oo(R,S,D){return R+D*(S-R)}function ho(R,S,D){return R.map((j,te)=>Oo(j,S[te],D))}let Mo={number:Oo,color:function(R,S,D,j="rgb"){switch(j){case"rgb":{let[te,ue,ve,De]=ho(R.rgb,S.rgb,D);return new Zt(te,ue,ve,De,!1)}case"hcl":{let[te,ue,ve,De]=R.hcl,[Ze,at,Tt,Ft]=S.hcl,Qt,sr;if(isNaN(te)||isNaN(Ze))isNaN(te)?isNaN(Ze)?Qt=NaN:(Qt=Ze,ve!==1&&ve!==0||(sr=at)):(Qt=te,Tt!==1&&Tt!==0||(sr=ue));else{let Di=Ze-te;Ze>te&&Di>180?Di-=360:Ze180&&(Di+=360),Qt=te+D*Di}let[Tr,Pr,$r,ni]=function([Di,pi,ki,Zi]){return Di=isNaN(Di)?0:Di*ai,Ni([ki,Math.cos(Di)*pi,Math.sin(Di)*pi,Zi])}([Qt,sr!=null?sr:Oo(ue,at,D),Oo(ve,Tt,D),Oo(De,Ft,D)]);return new Zt(Tr,Pr,$r,ni,!1)}case"lab":{let[te,ue,ve,De]=Ni(ho(R.lab,S.lab,D));return new Zt(te,ue,ve,De,!1)}}},array:ho,padding:function(R,S,D){return new Vr(ho(R.values,S.values,D))},variableAnchorOffsetCollection:function(R,S,D){let j=R.values,te=S.values;if(j.length!==te.length)throw new la(`Cannot interpolate values of different length. from: ${R.toString()}, to: ${S.toString()}`);let ue=[];for(let ve=0;vetypeof Tt!="number"||Tt<0||Tt>1))return D.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);te={name:"cubic-bezier",controlPoints:at}}}if(S.length-1<4)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if((S.length-1)%2!=0)return D.error("Expected an even number of arguments.");if(ue=D.parse(ue,2,St),!ue)return null;let De=[],Ze=null;j==="interpolate-hcl"||j==="interpolate-lab"?Ze=Ht:D.expectedType&&D.expectedType.kind!=="value"&&(Ze=D.expectedType);for(let at=0;at=Tt)return D.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Qt);let Tr=D.parse(Ft,sr,Ze);if(!Tr)return null;Ze=Ze||Tr.type,De.push([Tt,Tr])}return xe(Ze,St)||xe(Ze,Ht)||xe(Ze,Or)||xe(Ze,ut)||xe(Ze,Ne(St))?new xo(Ze,j,te,ue,De):D.error(`Type ${Ye(Ze)} is not interpolatable.`)}evaluate(S){let D=this.labels,j=this.outputs;if(D.length===1)return j[0].evaluate(S);let te=this.input.evaluate(S);if(te<=D[0])return j[0].evaluate(S);let ue=D.length;if(te>=D[ue-1])return j[ue-1].evaluate(S);let ve=hi(D,te),De=xo.interpolationFactor(this.interpolation,te,D[ve],D[ve+1]),Ze=j[ve].evaluate(S),at=j[ve+1].evaluate(S);switch(this.operator){case"interpolate":return Mo[this.type.kind](Ze,at,De);case"interpolate-hcl":return Mo.color(Ze,at,De,"hcl");case"interpolate-lab":return Mo.color(Ze,at,De,"lab")}}eachChild(S){S(this.input);for(let D of this.outputs)S(D)}outputDefined(){return this.outputs.every(S=>S.outputDefined())}}function zs(R,S,D,j){let te=j-D,ue=R-D;return te===0?0:S===1?ue/te:(Math.pow(S,ue)-1)/(Math.pow(S,te)-1)}class ks{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expectected at least one argument.");let j=null,te=D.expectedType;te&&te.kind!=="value"&&(j=te);let ue=[];for(let De of S.slice(1)){let Ze=D.parse(De,1+ue.length,j,void 0,{typeAnnotation:"omit"});if(!Ze)return null;j=j||Ze.type,ue.push(Ze)}if(!j)throw new Error("No output type");let ve=te&&ue.some(De=>Xe(te,De.type));return new ks(ve?fr:j,ue)}evaluate(S){let D,j=null,te=0;for(let ue of this.args)if(te++,j=ue.evaluate(S),j&&j instanceof Mi&&!j.available&&(D||(D=j.name),j=null,te===this.args.length&&(j=D)),j!==null)break;return j}eachChild(S){this.args.forEach(S)}outputDefined(){return this.args.every(S=>S.outputDefined())}}function Zs(R,S){return R==="=="||R==="!="?S.kind==="boolean"||S.kind==="string"||S.kind==="number"||S.kind==="null"||S.kind==="value":S.kind==="string"||S.kind==="number"||S.kind==="value"}function Xs(R,S,D,j){return j.compare(S,D)===0}function wl(R,S,D){let j=R!=="=="&&R!=="!=";return class FHe{constructor(ue,ve,De){this.type=dt,this.lhs=ue,this.rhs=ve,this.collator=De,this.hasUntypedArgument=ue.type.kind==="value"||ve.type.kind==="value"}static parse(ue,ve){if(ue.length!==3&&ue.length!==4)return ve.error("Expected two or three arguments.");let De=ue[0],Ze=ve.parse(ue[1],1,fr);if(!Ze)return null;if(!Zs(De,Ze.type))return ve.concat(1).error(`"${De}" comparisons are not supported for type '${Ye(Ze.type)}'.`);let at=ve.parse(ue[2],2,fr);if(!at)return null;if(!Zs(De,at.type))return ve.concat(2).error(`"${De}" comparisons are not supported for type '${Ye(at.type)}'.`);if(Ze.type.kind!==at.type.kind&&Ze.type.kind!=="value"&&at.type.kind!=="value")return ve.error(`Cannot compare types '${Ye(Ze.type)}' and '${Ye(at.type)}'.`);j&&(Ze.type.kind==="value"&&at.type.kind!=="value"?Ze=new Ra(at.type,[Ze]):Ze.type.kind!=="value"&&at.type.kind==="value"&&(at=new Ra(Ze.type,[at])));let Tt=null;if(ue.length===4){if(Ze.type.kind!=="string"&&at.type.kind!=="string"&&Ze.type.kind!=="value"&&at.type.kind!=="value")return ve.error("Cannot use collator to compare non-string types.");if(Tt=ve.parse(ue[3],3,_r),!Tt)return null}return new FHe(Ze,at,Tt)}evaluate(ue){let ve=this.lhs.evaluate(ue),De=this.rhs.evaluate(ue);if(j&&this.hasUntypedArgument){let Ze=Ki(ve),at=Ki(De);if(Ze.kind!==at.kind||Ze.kind!=="string"&&Ze.kind!=="number")throw new la(`Expected arguments for "${R}" to be (string, string) or (number, number), but found (${Ze.kind}, ${at.kind}) instead.`)}if(this.collator&&!j&&this.hasUntypedArgument){let Ze=Ki(ve),at=Ki(De);if(Ze.kind!=="string"||at.kind!=="string")return S(ue,ve,De)}return this.collator?D(ue,ve,De,this.collator.evaluate(ue)):S(ue,ve,De)}eachChild(ue){ue(this.lhs),ue(this.rhs),this.collator&&ue(this.collator)}outputDefined(){return!0}}}let os=wl("==",function(R,S,D){return S===D},Xs),cl=wl("!=",function(R,S,D){return S!==D},function(R,S,D,j){return!Xs(0,S,D,j)}),Cs=wl("<",function(R,S,D){return S",function(R,S,D){return S>D},function(R,S,D,j){return j.compare(S,D)>0}),Ys=wl("<=",function(R,S,D){return S<=D},function(R,S,D,j){return j.compare(S,D)<=0}),Hs=wl(">=",function(R,S,D){return S>=D},function(R,S,D,j){return j.compare(S,D)>=0});class Eo{constructor(S,D,j){this.type=_r,this.locale=j,this.caseSensitive=S,this.diacriticSensitive=D}static parse(S,D){if(S.length!==2)return D.error("Expected one argument.");let j=S[1];if(typeof j!="object"||Array.isArray(j))return D.error("Collator options argument must be an object.");let te=D.parse(j["case-sensitive"]!==void 0&&j["case-sensitive"],1,dt);if(!te)return null;let ue=D.parse(j["diacritic-sensitive"]!==void 0&&j["diacritic-sensitive"],1,dt);if(!ue)return null;let ve=null;return j.locale&&(ve=D.parse(j.locale,1,Et),!ve)?null:new Eo(te,ue,ve)}evaluate(S){return new yr(this.caseSensitive.evaluate(S),this.diacriticSensitive.evaluate(S),this.locale?this.locale.evaluate(S):null)}eachChild(S){S(this.caseSensitive),S(this.diacriticSensitive),this.locale&&S(this.locale)}outputDefined(){return!1}}class fs{constructor(S,D,j,te,ue){this.type=Et,this.number=S,this.locale=D,this.currency=j,this.minFractionDigits=te,this.maxFractionDigits=ue}static parse(S,D){if(S.length!==3)return D.error("Expected two arguments.");let j=D.parse(S[1],1,St);if(!j)return null;let te=S[2];if(typeof te!="object"||Array.isArray(te))return D.error("NumberFormat options argument must be an object.");let ue=null;if(te.locale&&(ue=D.parse(te.locale,1,Et),!ue))return null;let ve=null;if(te.currency&&(ve=D.parse(te.currency,1,Et),!ve))return null;let De=null;if(te["min-fraction-digits"]&&(De=D.parse(te["min-fraction-digits"],1,St),!De))return null;let Ze=null;return te["max-fraction-digits"]&&(Ze=D.parse(te["max-fraction-digits"],1,St),!Ze)?null:new fs(j,ue,ve,De,Ze)}evaluate(S){return new Intl.NumberFormat(this.locale?this.locale.evaluate(S):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(S):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(S):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(S):void 0}).format(this.number.evaluate(S))}eachChild(S){S(this.number),this.locale&&S(this.locale),this.currency&&S(this.currency),this.minFractionDigits&&S(this.minFractionDigits),this.maxFractionDigits&&S(this.maxFractionDigits)}outputDefined(){return!1}}class $l{constructor(S){this.type=Br,this.sections=S}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j=S[1];if(!Array.isArray(j)&&typeof j=="object")return D.error("First argument must be an image or text section.");let te=[],ue=!1;for(let ve=1;ve<=S.length-1;++ve){let De=S[ve];if(ue&&typeof De=="object"&&!Array.isArray(De)){ue=!1;let Ze=null;if(De["font-scale"]&&(Ze=D.parse(De["font-scale"],1,St),!Ze))return null;let at=null;if(De["text-font"]&&(at=D.parse(De["text-font"],1,Ne(Et)),!at))return null;let Tt=null;if(De["text-color"]&&(Tt=D.parse(De["text-color"],1,Ht),!Tt))return null;let Ft=te[te.length-1];Ft.scale=Ze,Ft.font=at,Ft.textColor=Tt}else{let Ze=D.parse(S[ve],1,fr);if(!Ze)return null;let at=Ze.type.kind;if(at!=="string"&&at!=="value"&&at!=="null"&&at!=="resolvedImage")return D.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ue=!0,te.push({content:Ze,scale:null,font:null,textColor:null})}}return new $l(te)}evaluate(S){return new Zr(this.sections.map(D=>{let j=D.content.evaluate(S);return Ki(j)===Nr?new Fr("",j,null,null,null):new Fr(ka(j),null,D.scale?D.scale.evaluate(S):null,D.font?D.font.evaluate(S).join(","):null,D.textColor?D.textColor.evaluate(S):null)}))}eachChild(S){for(let D of this.sections)S(D.content),D.scale&&S(D.scale),D.font&&S(D.font),D.textColor&&S(D.textColor)}outputDefined(){return!1}}class Hu{constructor(S){this.type=Nr,this.input=S}static parse(S,D){if(S.length!==2)return D.error("Expected two arguments.");let j=D.parse(S[1],1,Et);return j?new Hu(j):D.error("No image name provided.")}evaluate(S){let D=this.input.evaluate(S),j=Mi.fromString(D);return j&&S.availableImages&&(j.available=S.availableImages.indexOf(D)>-1),j}eachChild(S){S(this.input)}outputDefined(){return!1}}class fc{constructor(S){this.type=St,this.input=S}static parse(S,D){if(S.length!==2)return D.error(`Expected 1 argument, but found ${S.length-1} instead.`);let j=D.parse(S[1],1);return j?j.type.kind!=="array"&&j.type.kind!=="string"&&j.type.kind!=="value"?D.error(`Expected argument of type string or array, but found ${Ye(j.type)} instead.`):new fc(j):null}evaluate(S){let D=this.input.evaluate(S);if(typeof D=="string")return[...D].length;if(Array.isArray(D))return D.length;throw new la(`Expected value to be of type string or array, but found ${Ye(Ki(D))} instead.`)}eachChild(S){S(this.input)}outputDefined(){return!1}}let ms=8192;function on(R,S){let D=(180+R[0])/360,j=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R[1]*Math.PI/360)))/360,te=Math.pow(2,S.z);return[Math.round(D*te*ms),Math.round(j*te*ms)]}function fa(R,S){let D=Math.pow(2,S.z);return[(te=(R[0]/ms+S.x)/D,360*te-180),(j=(R[1]/ms+S.y)/D,360/Math.PI*Math.atan(Math.exp((180-360*j)*Math.PI/180))-90)];var j,te}function Qu(R,S){R[0]=Math.min(R[0],S[0]),R[1]=Math.min(R[1],S[1]),R[2]=Math.max(R[2],S[0]),R[3]=Math.max(R[3],S[1])}function Il(R,S){return!(R[0]<=S[0]||R[2]>=S[2]||R[1]<=S[1]||R[3]>=S[3])}function vo(R,S,D){let j=R[0]-S[0],te=R[1]-S[1],ue=R[0]-D[0],ve=R[1]-D[1];return j*ve-ue*te==0&&j*ue<=0&&te*ve<=0}function Wl(R,S,D,j){return(te=[j[0]-D[0],j[1]-D[1]])[0]*(ue=[S[0]-R[0],S[1]-R[1]])[1]-te[1]*ue[0]!=0&&!(!Co(R,S,D,j)||!Co(D,j,R,S));var te,ue}function Ks(R,S,D){for(let j of D)for(let te=0;te(te=R)[1]!=(ve=De[Ze+1])[1]>te[1]&&te[0]<(ve[0]-ue[0])*(te[1]-ue[1])/(ve[1]-ue[1])+ue[0]&&(j=!j)}var te,ue,ve;return j}function Ec(R,S){for(let D of S)if(Zl(R,D))return!0;return!1}function Zn(R,S){for(let D of R)if(!Zl(D,S))return!1;for(let D=0;D0&&De<0||ve<0&&De>0}function Tl(R,S,D){let j=[];for(let te=0;teD[2]){let te=.5*j,ue=R[0]-D[0]>te?-j:D[0]-R[0]>te?j:0;ue===0&&(ue=R[0]-D[2]>te?-j:D[2]-R[0]>te?j:0),R[0]+=ue}Qu(S,R)}function cf(R,S,D,j){let te=Math.pow(2,j.z)*ms,ue=[j.x*ms,j.y*ms],ve=[];for(let De of R)for(let Ze of De){let at=[Ze.x+ue[0],Ze.y+ue[1]];So(at,S,D,te),ve.push(at)}return ve}function rh(R,S,D,j){let te=Math.pow(2,j.z)*ms,ue=[j.x*ms,j.y*ms],ve=[];for(let Ze of R){let at=[];for(let Tt of Ze){let Ft=[Tt.x+ue[0],Tt.y+ue[1]];Qu(S,Ft),at.push(Ft)}ve.push(at)}if(S[2]-S[0]<=te/2){(De=S)[0]=De[1]=1/0,De[2]=De[3]=-1/0;for(let Ze of ve)for(let at of Ze)So(at,S,D,te)}var De;return ve}class Al{constructor(S,D){this.type=dt,this.geojson=S,this.geometries=D}static parse(S,D){if(S.length!==2)return D.error(`'within' expression requires exactly one argument, but found ${S.length-1} instead.`);if(Gi(S[1])){let j=S[1];if(j.type==="FeatureCollection"){let te=[];for(let ue of j.features){let{type:ve,coordinates:De}=ue.geometry;ve==="Polygon"&&te.push(De),ve==="MultiPolygon"&&te.push(...De)}if(te.length)return new Al(j,{type:"MultiPolygon",coordinates:te})}else if(j.type==="Feature"){let te=j.geometry.type;if(te==="Polygon"||te==="MultiPolygon")return new Al(j,j.geometry)}else if(j.type==="Polygon"||j.type==="MultiPolygon")return new Al(j,j)}return D.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(S){if(S.geometry()!=null&&S.canonicalID()!=null){if(S.geometryType()==="Point")return function(D,j){let te=[1/0,1/0,-1/0,-1/0],ue=[1/0,1/0,-1/0,-1/0],ve=D.canonicalID();if(j.type==="Polygon"){let De=Tl(j.coordinates,ue,ve),Ze=cf(D.geometry(),te,ue,ve);if(!Il(te,ue))return!1;for(let at of Ze)if(!Zl(at,De))return!1}if(j.type==="MultiPolygon"){let De=uf(j.coordinates,ue,ve),Ze=cf(D.geometry(),te,ue,ve);if(!Il(te,ue))return!1;for(let at of Ze)if(!Ec(at,De))return!1}return!0}(S,this.geometries);if(S.geometryType()==="LineString")return function(D,j){let te=[1/0,1/0,-1/0,-1/0],ue=[1/0,1/0,-1/0,-1/0],ve=D.canonicalID();if(j.type==="Polygon"){let De=Tl(j.coordinates,ue,ve),Ze=rh(D.geometry(),te,ue,ve);if(!Il(te,ue))return!1;for(let at of Ze)if(!Zn(at,De))return!1}if(j.type==="MultiPolygon"){let De=uf(j.coordinates,ue,ve),Ze=rh(D.geometry(),te,ue,ve);if(!Il(te,ue))return!1;for(let at of Ze)if(!ko(at,De))return!1}return!0}(S,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Hc=class{constructor(R=[],S=(D,j)=>Dj?1:0){if(this.data=R,this.length=this.data.length,this.compare=S,this.length>0)for(let D=(this.length>>1)-1;D>=0;D--)this._down(D)}push(R){this.data.push(R),this._up(this.length++)}pop(){if(this.length===0)return;let R=this.data[0],S=this.data.pop();return--this.length>0&&(this.data[0]=S,this._down(0)),R}peek(){return this.data[0]}_up(R){let{data:S,compare:D}=this,j=S[R];for(;R>0;){let te=R-1>>1,ue=S[te];if(D(j,ue)>=0)break;S[R]=ue,R=te}S[R]=j}_down(R){let{data:S,compare:D}=this,j=this.length>>1,te=S[R];for(;R=0)break;S[R]=S[ue],R=ue}S[R]=te}};function Ql(R,S,D,j,te){Ls(R,S,D,j||R.length-1,te||kc)}function Ls(R,S,D,j,te){for(;j>D;){if(j-D>600){var ue=j-D+1,ve=S-D+1,De=Math.log(ue),Ze=.5*Math.exp(2*De/3),at=.5*Math.sqrt(De*Ze*(ue-Ze)/ue)*(ve-ue/2<0?-1:1);Ls(R,S,Math.max(D,Math.floor(S-ve*Ze/ue+at)),Math.min(j,Math.floor(S+(ue-ve)*Ze/ue+at)),te)}var Tt=R[S],Ft=D,Qt=j;for(mu(R,D,S),te(R[j],Tt)>0&&mu(R,D,j);Ft0;)Qt--}te(R[D],Tt)===0?mu(R,D,Qt):mu(R,++Qt,j),Qt<=S&&(D=Qt+1),S<=Qt&&(j=Qt-1)}}function mu(R,S,D){var j=R[S];R[S]=R[D],R[D]=j}function kc(R,S){return RS?1:0}function Of(R,S){if(R.length<=1)return[R];let D=[],j,te;for(let ue of R){let ve=vd(ue);ve!==0&&(ue.area=Math.abs(ve),te===void 0&&(te=ve<0),te===ve<0?(j&&D.push(j),j=[ue]):j.push(ue))}if(j&&D.push(j),S>1)for(let ue=0;ue1?(at=S[Ze+1][0],Tt=S[Ze+1][1]):sr>0&&(at+=Ft/this.kx*sr,Tt+=Qt/this.ky*sr)),Ft=this.wrap(D[0]-at)*this.kx,Qt=(D[1]-Tt)*this.ky;let Tr=Ft*Ft+Qt*Qt;Tr180;)S-=360;return S}}function Ul(R,S){return S[0]-R[0]}function Js(R){return R[1]-R[0]+1}function hc(R,S){return R[1]>=R[0]&&R[1]R[1])return[null,null];let D=Js(R);if(S){if(D===2)return[R,null];let te=Math.floor(D/2);return[[R[0],R[0]+te],[R[0]+te,R[1]]]}if(D===1)return[R,null];let j=Math.floor(D/2)-1;return[[R[0],R[0]+j],[R[0]+j+1,R[1]]]}function ws(R,S){if(!hc(S,R.length))return[1/0,1/0,-1/0,-1/0];let D=[1/0,1/0,-1/0,-1/0];for(let j=S[0];j<=S[1];++j)Qu(D,R[j]);return D}function $s(R){let S=[1/0,1/0,-1/0,-1/0];for(let D of R)for(let j of D)Qu(S,j);return S}function hs(R){return R[0]!==-1/0&&R[1]!==-1/0&&R[2]!==1/0&&R[3]!==1/0}function Ms(R,S,D){if(!hs(R)||!hs(S))return NaN;let j=0,te=0;return R[2]S[2]&&(j=R[0]-S[2]),R[1]>S[3]&&(te=R[1]-S[3]),R[3]=j)return j;if(Il(te,ue)){if(Od(R,S))return 0}else if(Od(S,R))return 0;let ve=1/0;for(let De of R)for(let Ze=0,at=De.length,Tt=at-1;Ze0;){let Ze=ve.pop();if(Ze[0]>=ue)continue;let at=Ze[1],Tt=S?50:100;if(Js(at)<=Tt){if(!hc(at,R.length))return NaN;if(S){let Ft=wo(R,at,D,j);if(isNaN(Ft)||Ft===0)return Ft;ue=Math.min(ue,Ft)}else for(let Ft=at[0];Ft<=at[1];++Ft){let Qt=ov(R[Ft],D,j);if(ue=Math.min(ue,Qt),ue===0)return 0}}else{let Ft=Cc(at,S);Ja(ve,ue,j,R,De,Ft[0]),Ja(ve,ue,j,R,De,Ft[1])}}return ue}function uu(R,S,D,j,te,ue=1/0){let ve=Math.min(ue,te.distance(R[0],D[0]));if(ve===0)return ve;let De=new Hc([[0,[0,R.length-1],[0,D.length-1]]],Ul);for(;De.length>0;){let Ze=De.pop();if(Ze[0]>=ve)continue;let at=Ze[1],Tt=Ze[2],Ft=S?50:100,Qt=j?50:100;if(Js(at)<=Ft&&Js(Tt)<=Qt){if(!hc(at,R.length)&&hc(Tt,D.length))return NaN;let sr;if(S&&j)sr=ec(R,at,D,Tt,te),ve=Math.min(ve,sr);else if(S&&!j){let Tr=R.slice(at[0],at[1]+1);for(let Pr=Tt[0];Pr<=Tt[1];++Pr)if(sr=dc(D[Pr],Tr,te),ve=Math.min(ve,sr),ve===0)return ve}else if(!S&&j){let Tr=D.slice(Tt[0],Tt[1]+1);for(let Pr=at[0];Pr<=at[1];++Pr)if(sr=dc(R[Pr],Tr,te),ve=Math.min(ve,sr),ve===0)return ve}else sr=Ps(R,at,D,Tt,te),ve=Math.min(ve,sr)}else{let sr=Cc(at,S),Tr=Cc(Tt,j);Ef(De,ve,te,R,D,sr[0],Tr[0]),Ef(De,ve,te,R,D,sr[0],Tr[1]),Ef(De,ve,te,R,D,sr[1],Tr[0]),Ef(De,ve,te,R,D,sr[1],Tr[1])}}return ve}function Mh(R){return R.type==="MultiPolygon"?R.coordinates.map(S=>({type:"Polygon",coordinates:S})):R.type==="MultiLineString"?R.coordinates.map(S=>({type:"LineString",coordinates:S})):R.type==="MultiPoint"?R.coordinates.map(S=>({type:"Point",coordinates:S})):[R]}class jc{constructor(S,D){this.type=St,this.geojson=S,this.geometries=D}static parse(S,D){if(S.length!==2)return D.error(`'distance' expression requires exactly one argument, but found ${S.length-1} instead.`);if(Gi(S[1])){let j=S[1];if(j.type==="FeatureCollection")return new jc(j,j.features.map(te=>Mh(te.geometry)).flat());if(j.type==="Feature")return new jc(j,Mh(j.geometry));if("type"in j&&"coordinates"in j)return new jc(j,Mh(j))}return D.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(S){if(S.geometry()!=null&&S.canonicalID()!=null){if(S.geometryType()==="Point")return function(D,j){let te=D.geometry(),ue=te.flat().map(Ze=>fa([Ze.x,Ze.y],D.canonical));if(te.length===0)return NaN;let ve=new ih(ue[0][1]),De=1/0;for(let Ze of j){switch(Ze.type){case"Point":De=Math.min(De,uu(ue,!1,[Ze.coordinates],!1,ve,De));break;case"LineString":De=Math.min(De,uu(ue,!1,Ze.coordinates,!0,ve,De));break;case"Polygon":De=Math.min(De,tc(ue,!1,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries);if(S.geometryType()==="LineString")return function(D,j){let te=D.geometry(),ue=te.flat().map(Ze=>fa([Ze.x,Ze.y],D.canonical));if(te.length===0)return NaN;let ve=new ih(ue[0][1]),De=1/0;for(let Ze of j){switch(Ze.type){case"Point":De=Math.min(De,uu(ue,!0,[Ze.coordinates],!1,ve,De));break;case"LineString":De=Math.min(De,uu(ue,!0,Ze.coordinates,!0,ve,De));break;case"Polygon":De=Math.min(De,tc(ue,!0,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries);if(S.geometryType()==="Polygon")return function(D,j){let te=D.geometry();if(te.length===0||te[0].length===0)return NaN;let ue=Of(te,0).map(Ze=>Ze.map(at=>at.map(Tt=>fa([Tt.x,Tt.y],D.canonical)))),ve=new ih(ue[0][0][0][1]),De=1/0;for(let Ze of j)for(let at of ue){switch(Ze.type){case"Point":De=Math.min(De,tc([Ze.coordinates],!1,at,ve,De));break;case"LineString":De=Math.min(De,tc(Ze.coordinates,!0,at,ve,De));break;case"Polygon":De=Math.min(De,$o(at,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let kf={"==":os,"!=":cl,">":ml,"<":Cs,">=":Hs,"<=":Ys,array:Ra,at:br,boolean:Ra,case:Yi,coalesce:ks,collator:Eo,format:$l,image:Hu,in:Hr,"index-of":ti,interpolate:xo,"interpolate-hcl":xo,"interpolate-lab":xo,length:fc,let:xn,literal:jn,match:zi,number:Ra,"number-format":fs,object:Ra,slice:an,step:Ji,string:Ra,"to-boolean":oa,"to-color":oa,"to-number":oa,"to-string":oa,var:_t,within:Al,distance:jc};class Ml{constructor(S,D,j,te){this.name=S,this.type=D,this._evaluate=j,this.args=te}evaluate(S){return this._evaluate(S,this.args)}eachChild(S){this.args.forEach(S)}outputDefined(){return!1}static parse(S,D){let j=S[0],te=Ml.definitions[j];if(!te)return D.error(`Unknown expression "${j}". If you wanted a literal array, use ["literal", [...]].`,0);let ue=Array.isArray(te)?te[0]:te.type,ve=Array.isArray(te)?[[te[1],te[2]]]:te.overloads,De=ve.filter(([at])=>!Array.isArray(at)||at.length===S.length-1),Ze=null;for(let[at,Tt]of De){Ze=new oo(D.registry,kh,D.path,null,D.scope);let Ft=[],Qt=!1;for(let sr=1;sr{return Qt=Ft,Array.isArray(Qt)?`(${Qt.map(Ye).join(", ")})`:`(${Ye(Qt.type)}...)`;var Qt}).join(" | "),Tt=[];for(let Ft=1;Ft{D=S?D&&kh(j):D&&j instanceof jn}),!!D&&Kh(R)&&ah(R,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function Kh(R){if(R instanceof Ml&&(R.name==="get"&&R.args.length===1||R.name==="feature-state"||R.name==="has"&&R.args.length===1||R.name==="properties"||R.name==="geometry-type"||R.name==="id"||/^filter-/.test(R.name))||R instanceof Al||R instanceof jc)return!1;let S=!0;return R.eachChild(D=>{S&&!Kh(D)&&(S=!1)}),S}function rc(R){if(R instanceof Ml&&R.name==="feature-state")return!1;let S=!0;return R.eachChild(D=>{S&&!rc(D)&&(S=!1)}),S}function ah(R,S){if(R instanceof Ml&&S.indexOf(R.name)>=0)return!1;let D=!0;return R.eachChild(j=>{D&&!ah(j,S)&&(D=!1)}),D}function Wc(R){return{result:"success",value:R}}function df(R){return{result:"error",value:R}}function Cu(R){return R["property-type"]==="data-driven"||R["property-type"]==="cross-faded-data-driven"}function Nf(R){return!!R.expression&&R.expression.parameters.indexOf("zoom")>-1}function Zc(R){return!!R.expression&&R.expression.interpolated}function ds(R){return R instanceof Number?"number":R instanceof String?"string":R instanceof Boolean?"boolean":Array.isArray(R)?"array":R===null?"null":typeof R}function Ch(R){return typeof R=="object"&&R!==null&&!Array.isArray(R)}function Bd(R){return R}function Jh(R,S){let D=S.type==="color",j=R.stops&&typeof R.stops[0][0]=="object",te=j||!(j||R.property!==void 0),ue=R.type||(Zc(S)?"exponential":"interval");if(D||S.type==="padding"){let Tt=D?Zt.parse:Vr.parse;(R=Ke({},R)).stops&&(R.stops=R.stops.map(Ft=>[Ft[0],Tt(Ft[1])])),R.default=Tt(R.default?R.default:S.default)}if(R.colorSpace&&(ve=R.colorSpace)!=="rgb"&&ve!=="hcl"&&ve!=="lab")throw new Error(`Unknown color space: "${R.colorSpace}"`);var ve;let De,Ze,at;if(ue==="exponential")De=$h;else if(ue==="interval")De=Lu;else if(ue==="categorical"){De=pd,Ze=Object.create(null);for(let Tt of R.stops)Ze[Tt[0]]=Tt[1];at=typeof R.stops[0][0]}else{if(ue!=="identity")throw new Error(`Unknown function type "${ue}"`);De=eu}if(j){let Tt={},Ft=[];for(let Tr=0;TrTr[0]),evaluate:({zoom:Tr},Pr)=>$h({stops:Qt,base:R.base},S,Tr).evaluate(Tr,Pr)}}if(te){let Tt=ue==="exponential"?{name:"exponential",base:R.base!==void 0?R.base:1}:null;return{kind:"camera",interpolationType:Tt,interpolationFactor:xo.interpolationFactor.bind(void 0,Tt),zoomStops:R.stops.map(Ft=>Ft[0]),evaluate:({zoom:Ft})=>De(R,S,Ft,Ze,at)}}return{kind:"source",evaluate(Tt,Ft){let Qt=Ft&&Ft.properties?Ft.properties[R.property]:void 0;return Qt===void 0?Cf(R.default,S.default):De(R,S,Qt,Ze,at)}}}function Cf(R,S,D){return R!==void 0?R:S!==void 0?S:D!==void 0?D:void 0}function pd(R,S,D,j,te){return Cf(typeof D===te?j[D]:void 0,R.default,S.default)}function Lu(R,S,D){if(ds(D)!=="number")return Cf(R.default,S.default);let j=R.stops.length;if(j===1||D<=R.stops[0][0])return R.stops[0][1];if(D>=R.stops[j-1][0])return R.stops[j-1][1];let te=hi(R.stops.map(ue=>ue[0]),D);return R.stops[te][1]}function $h(R,S,D){let j=R.base!==void 0?R.base:1;if(ds(D)!=="number")return Cf(R.default,S.default);let te=R.stops.length;if(te===1||D<=R.stops[0][0])return R.stops[0][1];if(D>=R.stops[te-1][0])return R.stops[te-1][1];let ue=hi(R.stops.map(Tt=>Tt[0]),D),ve=function(Tt,Ft,Qt,sr){let Tr=sr-Qt,Pr=Tt-Qt;return Tr===0?0:Ft===1?Pr/Tr:(Math.pow(Ft,Pr)-1)/(Math.pow(Ft,Tr)-1)}(D,j,R.stops[ue][0],R.stops[ue+1][0]),De=R.stops[ue][1],Ze=R.stops[ue+1][1],at=Mo[S.type]||Bd;return typeof De.evaluate=="function"?{evaluate(...Tt){let Ft=De.evaluate.apply(void 0,Tt),Qt=Ze.evaluate.apply(void 0,Tt);if(Ft!==void 0&&Qt!==void 0)return at(Ft,Qt,ve,R.colorSpace)}}:at(De,Ze,ve,R.colorSpace)}function eu(R,S,D){switch(S.type){case"color":D=Zt.parse(D);break;case"formatted":D=Zr.fromString(D.toString());break;case"resolvedImage":D=Mi.fromString(D.toString());break;case"padding":D=Vr.parse(D);break;default:ds(D)===S.type||S.type==="enum"&&S.values[D]||(D=void 0)}return Cf(D,R.default,S.default)}Ml.register(kf,{error:[{kind:"error"},[Et],(R,[S])=>{throw new la(S.evaluate(R))}],typeof:[Et,[fr],(R,[S])=>Ye(Ki(S.evaluate(R)))],"to-rgba":[Ne(St,4),[Ht],(R,[S])=>{let[D,j,te,ue]=S.evaluate(R).rgb;return[255*D,255*j,255*te,ue]}],rgb:[Ht,[St,St,St],Yh],rgba:[Ht,[St,St,St,St],Yh],has:{type:dt,overloads:[[[Et],(R,[S])=>Eh(S.evaluate(R),R.properties())],[[Et,$t],(R,[S,D])=>Eh(S.evaluate(R),D.evaluate(R))]]},get:{type:fr,overloads:[[[Et],(R,[S])=>nh(S.evaluate(R),R.properties())],[[Et,$t],(R,[S,D])=>nh(S.evaluate(R),D.evaluate(R))]]},"feature-state":[fr,[Et],(R,[S])=>nh(S.evaluate(R),R.featureState||{})],properties:[$t,[],R=>R.properties()],"geometry-type":[Et,[],R=>R.geometryType()],id:[fr,[],R=>R.id()],zoom:[St,[],R=>R.globals.zoom],"heatmap-density":[St,[],R=>R.globals.heatmapDensity||0],"line-progress":[St,[],R=>R.globals.lineProgress||0],accumulated:[fr,[],R=>R.globals.accumulated===void 0?null:R.globals.accumulated],"+":[St,hf(St),(R,S)=>{let D=0;for(let j of S)D+=j.evaluate(R);return D}],"*":[St,hf(St),(R,S)=>{let D=1;for(let j of S)D*=j.evaluate(R);return D}],"-":{type:St,overloads:[[[St,St],(R,[S,D])=>S.evaluate(R)-D.evaluate(R)],[[St],(R,[S])=>-S.evaluate(R)]]},"/":[St,[St,St],(R,[S,D])=>S.evaluate(R)/D.evaluate(R)],"%":[St,[St,St],(R,[S,D])=>S.evaluate(R)%D.evaluate(R)],ln2:[St,[],()=>Math.LN2],pi:[St,[],()=>Math.PI],e:[St,[],()=>Math.E],"^":[St,[St,St],(R,[S,D])=>Math.pow(S.evaluate(R),D.evaluate(R))],sqrt:[St,[St],(R,[S])=>Math.sqrt(S.evaluate(R))],log10:[St,[St],(R,[S])=>Math.log(S.evaluate(R))/Math.LN10],ln:[St,[St],(R,[S])=>Math.log(S.evaluate(R))],log2:[St,[St],(R,[S])=>Math.log(S.evaluate(R))/Math.LN2],sin:[St,[St],(R,[S])=>Math.sin(S.evaluate(R))],cos:[St,[St],(R,[S])=>Math.cos(S.evaluate(R))],tan:[St,[St],(R,[S])=>Math.tan(S.evaluate(R))],asin:[St,[St],(R,[S])=>Math.asin(S.evaluate(R))],acos:[St,[St],(R,[S])=>Math.acos(S.evaluate(R))],atan:[St,[St],(R,[S])=>Math.atan(S.evaluate(R))],min:[St,hf(St),(R,S)=>Math.min(...S.map(D=>D.evaluate(R)))],max:[St,hf(St),(R,S)=>Math.max(...S.map(D=>D.evaluate(R)))],abs:[St,[St],(R,[S])=>Math.abs(S.evaluate(R))],round:[St,[St],(R,[S])=>{let D=S.evaluate(R);return D<0?-Math.round(-D):Math.round(D)}],floor:[St,[St],(R,[S])=>Math.floor(S.evaluate(R))],ceil:[St,[St],(R,[S])=>Math.ceil(S.evaluate(R))],"filter-==":[dt,[Et,fr],(R,[S,D])=>R.properties()[S.value]===D.value],"filter-id-==":[dt,[fr],(R,[S])=>R.id()===S.value],"filter-type-==":[dt,[Et],(R,[S])=>R.geometryType()===S.value],"filter-<":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j{let D=R.id(),j=S.value;return typeof D==typeof j&&D":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j>te}],"filter-id->":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D>j}],"filter-<=":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j<=te}],"filter-id-<=":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D<=j}],"filter->=":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j>=te}],"filter-id->=":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D>=j}],"filter-has":[dt,[fr],(R,[S])=>S.value in R.properties()],"filter-has-id":[dt,[],R=>R.id()!==null&&R.id()!==void 0],"filter-type-in":[dt,[Ne(Et)],(R,[S])=>S.value.indexOf(R.geometryType())>=0],"filter-id-in":[dt,[Ne(fr)],(R,[S])=>S.value.indexOf(R.id())>=0],"filter-in-small":[dt,[Et,Ne(fr)],(R,[S,D])=>D.value.indexOf(R.properties()[S.value])>=0],"filter-in-large":[dt,[Et,Ne(fr)],(R,[S,D])=>function(j,te,ue,ve){for(;ue<=ve;){let De=ue+ve>>1;if(te[De]===j)return!0;te[De]>j?ve=De-1:ue=De+1}return!1}(R.properties()[S.value],D.value,0,D.value.length-1)],all:{type:dt,overloads:[[[dt,dt],(R,[S,D])=>S.evaluate(R)&&D.evaluate(R)],[hf(dt),(R,S)=>{for(let D of S)if(!D.evaluate(R))return!1;return!0}]]},any:{type:dt,overloads:[[[dt,dt],(R,[S,D])=>S.evaluate(R)||D.evaluate(R)],[hf(dt),(R,S)=>{for(let D of S)if(D.evaluate(R))return!0;return!1}]]},"!":[dt,[dt],(R,[S])=>!S.evaluate(R)],"is-supported-script":[dt,[Et],(R,[S])=>{let D=R.globals&&R.globals.isSupportedScript;return!D||D(S.evaluate(R))}],upcase:[Et,[Et],(R,[S])=>S.evaluate(R).toUpperCase()],downcase:[Et,[Et],(R,[S])=>S.evaluate(R).toLowerCase()],concat:[Et,hf(fr),(R,S)=>S.map(D=>ka(D.evaluate(R))).join("")],"resolved-locale":[Et,[_r],(R,[S])=>S.evaluate(R).resolvedLocale()]});class Pu{constructor(S,D){var j;this.expression=S,this._warningHistory={},this._evaluator=new Ha,this._defaultValue=D?(j=D).type==="color"&&Ch(j.default)?new Zt(0,0,0,0):j.type==="color"?Zt.parse(j.default)||null:j.type==="padding"?Vr.parse(j.default)||null:j.type==="variableAnchorOffsetCollection"?Si.parse(j.default)||null:j.default===void 0?null:j.default:null,this._enumValues=D&&D.type==="enum"?D.values:null}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._evaluator.globals=S,this._evaluator.feature=D,this._evaluator.featureState=j,this._evaluator.canonical=te,this._evaluator.availableImages=ue||null,this._evaluator.formattedSection=ve,this.expression.evaluate(this._evaluator)}evaluate(S,D,j,te,ue,ve){this._evaluator.globals=S,this._evaluator.feature=D||null,this._evaluator.featureState=j||null,this._evaluator.canonical=te,this._evaluator.availableImages=ue||null,this._evaluator.formattedSection=ve||null;try{let De=this.expression.evaluate(this._evaluator);if(De==null||typeof De=="number"&&De!=De)return this._defaultValue;if(this._enumValues&&!(De in this._enumValues))throw new la(`Expected value to be one of ${Object.keys(this._enumValues).map(Ze=>JSON.stringify(Ze)).join(", ")}, but found ${JSON.stringify(De)} instead.`);return De}catch(De){return this._warningHistory[De.message]||(this._warningHistory[De.message]=!0,typeof console!="undefined"&&console.warn(De.message)),this._defaultValue}}}function Lc(R){return Array.isArray(R)&&R.length>0&&typeof R[0]=="string"&&R[0]in kf}function fl(R,S){let D=new oo(kf,kh,[],S?function(te){let ue={color:Ht,string:Et,number:St,enum:Et,boolean:dt,formatted:Br,padding:Or,resolvedImage:Nr,variableAnchorOffsetCollection:ut};return te.type==="array"?Ne(ue[te.value]||fr,te.length):ue[te.type]}(S):void 0),j=D.parse(R,void 0,void 0,void 0,S&&S.type==="string"?{typeAnnotation:"coerce"}:void 0);return j?Wc(new Pu(j,S)):df(D.errors)}class Xc{constructor(S,D){this.kind=S,this._styleExpression=D,this.isStateDependent=S!=="constant"&&!rc(D.expression)}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._styleExpression.evaluateWithoutErrorHandling(S,D,j,te,ue,ve)}evaluate(S,D,j,te,ue,ve){return this._styleExpression.evaluate(S,D,j,te,ue,ve)}}class ic{constructor(S,D,j,te){this.kind=S,this.zoomStops=j,this._styleExpression=D,this.isStateDependent=S!=="camera"&&!rc(D.expression),this.interpolationType=te}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._styleExpression.evaluateWithoutErrorHandling(S,D,j,te,ue,ve)}evaluate(S,D,j,te,ue,ve){return this._styleExpression.evaluate(S,D,j,te,ue,ve)}interpolationFactor(S,D,j){return this.interpolationType?xo.interpolationFactor(this.interpolationType,S,D,j):0}}function yu(R,S){let D=fl(R,S);if(D.result==="error")return D;let j=D.value.expression,te=Kh(j);if(!te&&!Cu(S))return df([new xt("","data expressions not supported")]);let ue=ah(j,["zoom"]);if(!ue&&!Nf(S))return df([new xt("","zoom expressions not supported")]);let ve=Qh(j);return ve||ue?ve instanceof xt?df([ve]):ve instanceof xo&&!Zc(S)?df([new xt("",'"interpolate" expressions cannot be used with this property')]):Wc(ve?new ic(te?"camera":"composite",D.value,ve.labels,ve instanceof xo?ve.interpolation:void 0):new Xc(te?"constant":"source",D.value)):df([new xt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Qs{constructor(S,D){this._parameters=S,this._specification=D,Ke(this,Jh(this._parameters,this._specification))}static deserialize(S){return new Qs(S._parameters,S._specification)}static serialize(S){return{_parameters:S._parameters,_specification:S._specification}}}function Qh(R){let S=null;if(R instanceof xn)S=Qh(R.result);else if(R instanceof ks){for(let D of R.args)if(S=Qh(D),S)break}else(R instanceof Ji||R instanceof xo)&&R.input instanceof Ml&&R.input.name==="zoom"&&(S=R);return S instanceof xt||R.eachChild(D=>{let j=Qh(D);j instanceof xt?S=j:!S&&j?S=new xt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):S&&j&&S!==j&&(S=new xt("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),S}function gd(R){if(R===!0||R===!1)return!0;if(!Array.isArray(R)||R.length===0)return!1;switch(R[0]){case"has":return R.length>=2&&R[1]!=="$id"&&R[1]!=="$type";case"in":return R.length>=3&&(typeof R[1]!="string"||Array.isArray(R[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return R.length!==3||Array.isArray(R[1])||Array.isArray(R[2]);case"any":case"all":for(let S of R.slice(1))if(!gd(S)&&typeof S!="boolean")return!1;return!0;default:return!0}}let Gu={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Pc(R){if(R==null)return{filter:()=>!0,needGeometry:!1};gd(R)||(R=Lf(R));let S=fl(R,Gu);if(S.result==="error")throw new Error(S.value.map(D=>`${D.key}: ${D.message}`).join(", "));return{filter:(D,j,te)=>S.value.evaluate(D,j,{},te),needGeometry:sv(R)}}function vc(R,S){return RS?1:0}function sv(R){if(!Array.isArray(R))return!1;if(R[0]==="within"||R[0]==="distance")return!0;for(let S=1;S"||S==="<="||S===">="?Uf(R[1],R[2],S):S==="any"?(D=R.slice(1),["any"].concat(D.map(Lf))):S==="all"?["all"].concat(R.slice(1).map(Lf)):S==="none"?["all"].concat(R.slice(1).map(Lf).map(tu)):S==="in"?Iu(R[1],R.slice(2)):S==="!in"?tu(Iu(R[1],R.slice(2))):S==="has"?oh(R[1]):S!=="!has"||tu(oh(R[1]));var D}function Uf(R,S,D){switch(R){case"$type":return[`filter-type-${D}`,S];case"$id":return[`filter-id-${D}`,S];default:return[`filter-${D}`,R,S]}}function Iu(R,S){if(S.length===0)return!1;switch(R){case"$type":return["filter-type-in",["literal",S]];case"$id":return["filter-id-in",["literal",S]];default:return S.length>200&&!S.some(D=>typeof D!=typeof S[0])?["filter-in-large",R,["literal",S.sort(vc)]]:["filter-in-small",R,["literal",S]]}}function oh(R){switch(R){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",R]}}function tu(R){return["!",R]}function vf(R){let S=typeof R;if(S==="number"||S==="boolean"||S==="string"||R==null)return JSON.stringify(R);if(Array.isArray(R)){let te="[";for(let ue of R)te+=`${vf(ue)},`;return`${te}]`}let D=Object.keys(R).sort(),j="{";for(let te=0;tej.maximum?[new er(S,D,`${D} is greater than the maximum value ${j.maximum}`)]:[]}function Pf(R){let S=R.valueSpec,D=Fs(R.value.type),j,te,ue,ve={},De=D!=="categorical"&&R.value.property===void 0,Ze=!De,at=ds(R.value.stops)==="array"&&ds(R.value.stops[0])==="array"&&ds(R.value.stops[0][0])==="object",Tt=xu({key:R.key,value:R.value,valueSpec:R.styleSpec.function,validateSpec:R.validateSpec,style:R.style,styleSpec:R.styleSpec,objectElementValidators:{stops:function(sr){if(D==="identity")return[new er(sr.key,sr.value,'identity function may not have a "stops" property')];let Tr=[],Pr=sr.value;return Tr=Tr.concat(Lh({key:sr.key,value:Pr,valueSpec:sr.valueSpec,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec,arrayElementValidator:Ft})),ds(Pr)==="array"&&Pr.length===0&&Tr.push(new er(sr.key,Pr,"array must have at least one stop")),Tr},default:function(sr){return sr.validateSpec({key:sr.key,value:sr.value,valueSpec:S,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec})}}});return D==="identity"&&De&&Tt.push(new er(R.key,R.value,'missing required property "property"')),D==="identity"||R.value.stops||Tt.push(new er(R.key,R.value,'missing required property "stops"')),D==="exponential"&&R.valueSpec.expression&&!Zc(R.valueSpec)&&Tt.push(new er(R.key,R.value,"exponential functions not supported")),R.styleSpec.$version>=8&&(Ze&&!Cu(R.valueSpec)?Tt.push(new er(R.key,R.value,"property functions not supported")):De&&!Nf(R.valueSpec)&&Tt.push(new er(R.key,R.value,"zoom functions not supported"))),D!=="categorical"&&!at||R.value.property!==void 0||Tt.push(new er(R.key,R.value,'"property" property is required')),Tt;function Ft(sr){let Tr=[],Pr=sr.value,$r=sr.key;if(ds(Pr)!=="array")return[new er($r,Pr,`array expected, ${ds(Pr)} found`)];if(Pr.length!==2)return[new er($r,Pr,`array length 2 expected, length ${Pr.length} found`)];if(at){if(ds(Pr[0])!=="object")return[new er($r,Pr,`object expected, ${ds(Pr[0])} found`)];if(Pr[0].zoom===void 0)return[new er($r,Pr,"object stop key must have zoom")];if(Pr[0].value===void 0)return[new er($r,Pr,"object stop key must have value")];if(ue&&ue>Fs(Pr[0].zoom))return[new er($r,Pr[0].zoom,"stop zoom values must appear in ascending order")];Fs(Pr[0].zoom)!==ue&&(ue=Fs(Pr[0].zoom),te=void 0,ve={}),Tr=Tr.concat(xu({key:`${$r}[0]`,value:Pr[0],valueSpec:{zoom:{}},validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec,objectElementValidators:{zoom:Is,value:Qt}}))}else Tr=Tr.concat(Qt({key:`${$r}[0]`,value:Pr[0],valueSpec:{},validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec},Pr));return Lc(_u(Pr[1]))?Tr.concat([new er(`${$r}[1]`,Pr[1],"expressions are not allowed in function stops.")]):Tr.concat(sr.validateSpec({key:`${$r}[1]`,value:Pr[1],valueSpec:S,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec}))}function Qt(sr,Tr){let Pr=ds(sr.value),$r=Fs(sr.value),ni=sr.value!==null?sr.value:Tr;if(j){if(Pr!==j)return[new er(sr.key,ni,`${Pr} stop domain type must match previous stop domain type ${j}`)]}else j=Pr;if(Pr!=="number"&&Pr!=="string"&&Pr!=="boolean")return[new er(sr.key,ni,"stop domain value must be a number, string, or boolean")];if(Pr!=="number"&&D!=="categorical"){let Di=`number expected, ${Pr} found`;return Cu(S)&&D===void 0&&(Di+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new er(sr.key,ni,Di)]}return D!=="categorical"||Pr!=="number"||isFinite($r)&&Math.floor($r)===$r?D!=="categorical"&&Pr==="number"&&te!==void 0&&$rnew er(`${R.key}${j.key}`,R.value,j.message));let D=S.value.expression||S.value._styleExpression.expression;if(R.expressionContext==="property"&&R.propertyKey==="text-font"&&!D.outputDefined())return[new er(R.key,R.value,`Invalid data expression for "${R.propertyKey}". Output values must be contained as literals within the expression.`)];if(R.expressionContext==="property"&&R.propertyType==="layout"&&!rc(D))return[new er(R.key,R.value,'"feature-state" data expressions are not supported with layout properties.')];if(R.expressionContext==="filter"&&!rc(D))return[new er(R.key,R.value,'"feature-state" data expressions are not supported with filters.')];if(R.expressionContext&&R.expressionContext.indexOf("cluster")===0){if(!ah(D,["zoom","feature-state"]))return[new er(R.key,R.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(R.expressionContext==="cluster-initial"&&!Kh(D))return[new er(R.key,R.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function ju(R){let S=R.key,D=R.value,j=R.valueSpec,te=[];return Array.isArray(j.values)?j.values.indexOf(Fs(D))===-1&&te.push(new er(S,D,`expected one of [${j.values.join(", ")}], ${JSON.stringify(D)} found`)):Object.keys(j.values).indexOf(Fs(D))===-1&&te.push(new er(S,D,`expected one of [${Object.keys(j.values).join(", ")}], ${JSON.stringify(D)} found`)),te}function Vf(R){return gd(_u(R.value))?Ic(Ke({},R,{expressionContext:"filter",valueSpec:{value:"boolean"}})):pc(R)}function pc(R){let S=R.value,D=R.key;if(ds(S)!=="array")return[new er(D,S,`array expected, ${ds(S)} found`)];let j=R.styleSpec,te,ue=[];if(S.length<1)return[new er(D,S,"filter array must have at least 1 element")];switch(ue=ue.concat(ju({key:`${D}[0]`,value:S[0],valueSpec:j.filter_operator,style:R.style,styleSpec:R.styleSpec})),Fs(S[0])){case"<":case"<=":case">":case">=":S.length>=2&&Fs(S[1])==="$type"&&ue.push(new er(D,S,`"$type" cannot be use with operator "${S[0]}"`));case"==":case"!=":S.length!==3&&ue.push(new er(D,S,`filter array for operator "${S[0]}" must have 3 elements`));case"in":case"!in":S.length>=2&&(te=ds(S[1]),te!=="string"&&ue.push(new er(`${D}[1]`,S[1],`string expected, ${te} found`)));for(let ve=2;ve{at in D&&S.push(new er(j,D[at],`"${at}" is prohibited for ref layers`))}),te.layers.forEach(at=>{Fs(at.id)===De&&(Ze=at)}),Ze?Ze.ref?S.push(new er(j,D.ref,"ref cannot reference another ref layer")):ve=Fs(Ze.type):S.push(new er(j,D.ref,`ref layer "${De}" not found`))}else if(ve!=="background")if(D.source){let Ze=te.sources&&te.sources[D.source],at=Ze&&Fs(Ze.type);Ze?at==="vector"&&ve==="raster"?S.push(new er(j,D.source,`layer "${D.id}" requires a raster source`)):at!=="raster-dem"&&ve==="hillshade"?S.push(new er(j,D.source,`layer "${D.id}" requires a raster-dem source`)):at==="raster"&&ve!=="raster"?S.push(new er(j,D.source,`layer "${D.id}" requires a vector source`)):at!=="vector"||D["source-layer"]?at==="raster-dem"&&ve!=="hillshade"?S.push(new er(j,D.source,"raster-dem source can only be used with layer type 'hillshade'.")):ve!=="line"||!D.paint||!D.paint["line-gradient"]||at==="geojson"&&Ze.lineMetrics||S.push(new er(j,D,`layer "${D.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):S.push(new er(j,D,`layer "${D.id}" must specify a "source-layer"`)):S.push(new er(j,D.source,`source "${D.source}" not found`))}else S.push(new er(j,D,'missing required property "source"'));return S=S.concat(xu({key:j,value:D,valueSpec:ue.layer,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,objectElementValidators:{"*":()=>[],type:()=>R.validateSpec({key:`${j}.type`,value:D.type,valueSpec:ue.layer.type,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,object:D,objectKey:"type"}),filter:Vf,layout:Ze=>xu({layer:D,key:Ze.key,value:Ze.value,style:Ze.style,styleSpec:Ze.styleSpec,validateSpec:Ze.validateSpec,objectElementValidators:{"*":at=>Rl(Ke({layerType:ve},at))}}),paint:Ze=>xu({layer:D,key:Ze.key,value:Ze.value,style:Ze.style,styleSpec:Ze.styleSpec,validateSpec:Ze.validateSpec,objectElementValidators:{"*":at=>Ph(Ke({layerType:ve},at))}})}})),S}function Wu(R){let S=R.value,D=R.key,j=ds(S);return j!=="string"?[new er(D,S,`string expected, ${j} found`)]:[]}let Rc={promoteId:function({key:R,value:S}){if(ds(S)==="string")return Wu({key:R,value:S});{let D=[];for(let j in S)D.push(...Wu({key:`${R}.${j}`,value:S[j]}));return D}}};function gc(R){let S=R.value,D=R.key,j=R.styleSpec,te=R.style,ue=R.validateSpec;if(!S.type)return[new er(D,S,'"type" is required')];let ve=Fs(S.type),De;switch(ve){case"vector":case"raster":return De=xu({key:D,value:S,valueSpec:j[`source_${ve.replace("-","_")}`],style:R.style,styleSpec:j,objectElementValidators:Rc,validateSpec:ue}),De;case"raster-dem":return De=function(Ze){var at;let Tt=(at=Ze.sourceName)!==null&&at!==void 0?at:"",Ft=Ze.value,Qt=Ze.styleSpec,sr=Qt.source_raster_dem,Tr=Ze.style,Pr=[],$r=ds(Ft);if(Ft===void 0)return Pr;if($r!=="object")return Pr.push(new er("source_raster_dem",Ft,`object expected, ${$r} found`)),Pr;let ni=Fs(Ft.encoding)==="custom",Di=["redFactor","greenFactor","blueFactor","baseShift"],pi=Ze.value.encoding?`"${Ze.value.encoding}"`:"Default";for(let ki in Ft)!ni&&Di.includes(ki)?Pr.push(new er(ki,Ft[ki],`In "${Tt}": "${ki}" is only valid when "encoding" is set to "custom". ${pi} encoding found`)):sr[ki]?Pr=Pr.concat(Ze.validateSpec({key:ki,value:Ft[ki],valueSpec:sr[ki],validateSpec:Ze.validateSpec,style:Tr,styleSpec:Qt})):Pr.push(new er(ki,Ft[ki],`unknown property "${ki}"`));return Pr}({sourceName:D,value:S,style:R.style,styleSpec:j,validateSpec:ue}),De;case"geojson":if(De=xu({key:D,value:S,valueSpec:j.source_geojson,style:te,styleSpec:j,validateSpec:ue,objectElementValidators:Rc}),S.cluster)for(let Ze in S.clusterProperties){let[at,Tt]=S.clusterProperties[Ze],Ft=typeof at=="string"?[at,["accumulated"],["get",Ze]]:at;De.push(...Ic({key:`${D}.${Ze}.map`,value:Tt,validateSpec:ue,expressionContext:"cluster-map"})),De.push(...Ic({key:`${D}.${Ze}.reduce`,value:Ft,validateSpec:ue,expressionContext:"cluster-reduce"}))}return De;case"video":return xu({key:D,value:S,valueSpec:j.source_video,style:te,validateSpec:ue,styleSpec:j});case"image":return xu({key:D,value:S,valueSpec:j.source_image,style:te,validateSpec:ue,styleSpec:j});case"canvas":return[new er(D,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return ju({key:`${D}.type`,value:S.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:te,validateSpec:ue,styleSpec:j})}}function hl(R){let S=R.value,D=R.styleSpec,j=D.light,te=R.style,ue=[],ve=ds(S);if(S===void 0)return ue;if(ve!=="object")return ue=ue.concat([new er("light",S,`object expected, ${ve} found`)]),ue;for(let De in S){let Ze=De.match(/^(.*)-transition$/);ue=ue.concat(Ze&&j[Ze[1]]&&j[Ze[1]].transition?R.validateSpec({key:De,value:S[De],valueSpec:D.transition,validateSpec:R.validateSpec,style:te,styleSpec:D}):j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],validateSpec:R.validateSpec,style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)])}return ue}function ru(R){let S=R.value,D=R.styleSpec,j=D.sky,te=R.style,ue=ds(S);if(S===void 0)return[];if(ue!=="object")return[new er("sky",S,`object expected, ${ue} found`)];let ve=[];for(let De in S)ve=ve.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ve}function mc(R){let S=R.value,D=R.styleSpec,j=D.terrain,te=R.style,ue=[],ve=ds(S);if(S===void 0)return ue;if(ve!=="object")return ue=ue.concat([new er("terrain",S,`object expected, ${ve} found`)]),ue;for(let De in S)ue=ue.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],validateSpec:R.validateSpec,style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ue}function Yc(R){let S=[],D=R.value,j=R.key;if(Array.isArray(D)){let te=[],ue=[];for(let ve in D)D[ve].id&&te.includes(D[ve].id)&&S.push(new er(j,D,`all the sprites' ids must be unique, but ${D[ve].id} is duplicated`)),te.push(D[ve].id),D[ve].url&&ue.includes(D[ve].url)&&S.push(new er(j,D,`all the sprites' URLs must be unique, but ${D[ve].url} is duplicated`)),ue.push(D[ve].url),S=S.concat(xu({key:`${j}[${ve}]`,value:D[ve],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:R.validateSpec}));return S}return Wu({key:j,value:D})}let nc={"*":()=>[],array:Lh,boolean:function(R){let S=R.value,D=R.key,j=ds(S);return j!=="boolean"?[new er(D,S,`boolean expected, ${j} found`)]:[]},number:Is,color:function(R){let S=R.key,D=R.value,j=ds(D);return j!=="string"?[new er(S,D,`color expected, ${j} found`)]:Zt.parse(String(D))?[]:[new er(S,D,`color expected, "${D}" found`)]},constants:sh,enum:ju,filter:Vf,function:Pf,layer:Ih,object:xu,source:gc,light:hl,sky:ru,terrain:mc,projection:function(R){let S=R.value,D=R.styleSpec,j=D.projection,te=R.style,ue=ds(S);if(S===void 0)return[];if(ue!=="object")return[new er("projection",S,`object expected, ${ue} found`)];let ve=[];for(let De in S)ve=ve.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ve},string:Wu,formatted:function(R){return Wu(R).length===0?[]:Ic(R)},resolvedImage:function(R){return Wu(R).length===0?[]:Ic(R)},padding:function(R){let S=R.key,D=R.value;if(ds(D)==="array"){if(D.length<1||D.length>4)return[new er(S,D,`padding requires 1 to 4 values; ${D.length} values found`)];let j={type:"number"},te=[];for(let ue=0;ue[]}})),R.constants&&(D=D.concat(sh({key:"constants",value:R.constants,style:R,styleSpec:S,validateSpec:gf}))),vr(D)}function wr(R){return function(S){return R(KQ(YQ({},S),{validateSpec:gf}))}}function vr(R){return[].concat(R).sort((S,D)=>S.line-D.line)}function Ur(R){return function(...S){return vr(R.apply(this,S))}}Bt.source=Ur(wr(gc)),Bt.sprite=Ur(wr(Yc)),Bt.glyphs=Ur(wr(gt)),Bt.light=Ur(wr(hl)),Bt.sky=Ur(wr(ru)),Bt.terrain=Ur(wr(mc)),Bt.layer=Ur(wr(Ih)),Bt.filter=Ur(wr(Vf)),Bt.paintProperty=Ur(wr(Ph)),Bt.layoutProperty=Ur(wr(Rl));let fi=Bt,xi=fi.light,Fi=fi.sky,Xi=fi.paintProperty,hn=fi.layoutProperty;function Ti(R,S){let D=!1;if(S&&S.length)for(let j of S)R.fire(new me(new Error(j.message))),D=!0;return D}class qi{constructor(S,D,j){let te=this.cells=[];if(S instanceof ArrayBuffer){this.arrayBuffer=S;let ve=new Int32Array(this.arrayBuffer);S=ve[0],this.d=(D=ve[1])+2*(j=ve[2]);for(let Ze=0;Ze=Ft[Tr+0]&&te>=Ft[Tr+1])?(De[sr]=!0,ve.push(Tt[sr])):De[sr]=!1}}}}_forEachCell(S,D,j,te,ue,ve,De,Ze){let at=this._convertToCellCoord(S),Tt=this._convertToCellCoord(D),Ft=this._convertToCellCoord(j),Qt=this._convertToCellCoord(te);for(let sr=at;sr<=Ft;sr++)for(let Tr=Tt;Tr<=Qt;Tr++){let Pr=this.d*Tr+sr;if((!Ze||Ze(this._convertFromCellCoord(sr),this._convertFromCellCoord(Tr),this._convertFromCellCoord(sr+1),this._convertFromCellCoord(Tr+1)))&&ue.call(this,S,D,j,te,Pr,ve,De,Ze))return}}_convertFromCellCoord(S){return(S-this.padding)/this.scale}_convertToCellCoord(S){return Math.max(0,Math.min(this.d-1,Math.floor(S*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let S=this.cells,D=3+this.cells.length+1+1,j=0;for(let ve=0;ve=0)continue;let ve=R[ue];te[ue]=Ii[D].shallow.indexOf(ue)>=0?ve:Ea(ve,S)}R instanceof Error&&(te.message=R.message)}if(te.$name)throw new Error("$name property is reserved for worker serialization logic.");return D!=="Object"&&(te.$name=D),te}function qa(R){if(Ta(R))return R;if(Array.isArray(R))return R.map(qa);if(typeof R!="object")throw new Error("can't deserialize object of type "+typeof R);let S=Ma(R)||"Object";if(!Ii[S])throw new Error(`can't deserialize unregistered class ${S}`);let{klass:D}=Ii[S];if(!D)throw new Error(`can't deserialize unregistered class ${S}`);if(D.deserialize)return D.deserialize(R);let j=Object.create(D.prototype);for(let te of Object.keys(R)){if(te==="$name")continue;let ue=R[te];j[te]=Ii[S].shallow.indexOf(te)>=0?ue:qa(ue)}return j}class Cn{constructor(){this.first=!0}update(S,D){let j=Math.floor(S);return this.first?(this.first=!1,this.lastIntegerZoom=j,this.lastIntegerZoomTime=0,this.lastZoom=S,this.lastFloorZoom=j,!0):(this.lastFloorZoom>j?(this.lastIntegerZoom=j+1,this.lastIntegerZoomTime=D):this.lastFloorZoomR>=128&&R<=255,"Hangul Jamo":R=>R>=4352&&R<=4607,Khmer:R=>R>=6016&&R<=6143,"General Punctuation":R=>R>=8192&&R<=8303,"Letterlike Symbols":R=>R>=8448&&R<=8527,"Number Forms":R=>R>=8528&&R<=8591,"Miscellaneous Technical":R=>R>=8960&&R<=9215,"Control Pictures":R=>R>=9216&&R<=9279,"Optical Character Recognition":R=>R>=9280&&R<=9311,"Enclosed Alphanumerics":R=>R>=9312&&R<=9471,"Geometric Shapes":R=>R>=9632&&R<=9727,"Miscellaneous Symbols":R=>R>=9728&&R<=9983,"Miscellaneous Symbols and Arrows":R=>R>=11008&&R<=11263,"Ideographic Description Characters":R=>R>=12272&&R<=12287,"CJK Symbols and Punctuation":R=>R>=12288&&R<=12351,Katakana:R=>R>=12448&&R<=12543,Kanbun:R=>R>=12688&&R<=12703,"CJK Strokes":R=>R>=12736&&R<=12783,"Enclosed CJK Letters and Months":R=>R>=12800&&R<=13055,"CJK Compatibility":R=>R>=13056&&R<=13311,"Yijing Hexagram Symbols":R=>R>=19904&&R<=19967,"Private Use Area":R=>R>=57344&&R<=63743,"Vertical Forms":R=>R>=65040&&R<=65055,"CJK Compatibility Forms":R=>R>=65072&&R<=65103,"Small Form Variants":R=>R>=65104&&R<=65135,"Halfwidth and Fullwidth Forms":R=>R>=65280&&R<=65519};function Ua(R){for(let S of R)if(Bo(S.charCodeAt(0)))return!0;return!1}function mo(R){for(let S of R)if(!Qo(S.charCodeAt(0)))return!1;return!0}function Xo(R){let S=R.map(D=>{try{return new RegExp(`\\p{sc=${D}}`,"u").source}catch(j){return null}}).filter(D=>D);return new RegExp(S.join("|"),"u")}let Ts=Xo(["Arab","Dupl","Mong","Ougr","Syrc"]);function Qo(R){return!Ts.test(String.fromCodePoint(R))}let ys=Xo(["Bopo","Hani","Hira","Kana","Kits","Nshu","Tang","Yiii"]);function Bo(R){return!(R!==746&&R!==747&&(R<4352||!(sn["CJK Compatibility Forms"](R)&&!(R>=65097&&R<=65103)||sn["CJK Compatibility"](R)||sn["CJK Strokes"](R)||!(!sn["CJK Symbols and Punctuation"](R)||R>=12296&&R<=12305||R>=12308&&R<=12319||R===12336)||sn["Enclosed CJK Letters and Months"](R)||sn["Ideographic Description Characters"](R)||sn.Kanbun(R)||sn.Katakana(R)&&R!==12540||!(!sn["Halfwidth and Fullwidth Forms"](R)||R===65288||R===65289||R===65293||R>=65306&&R<=65310||R===65339||R===65341||R===65343||R>=65371&&R<=65503||R===65507||R>=65512&&R<=65519)||!(!sn["Small Form Variants"](R)||R>=65112&&R<=65118||R>=65123&&R<=65126)||sn["Vertical Forms"](R)||sn["Yijing Hexagram Symbols"](R)||new RegExp("\\p{sc=Cans}","u").test(String.fromCodePoint(R))||new RegExp("\\p{sc=Hang}","u").test(String.fromCodePoint(R))||ys.test(String.fromCodePoint(R)))))}function yl(R){return!(Bo(R)||function(S){return!!(sn["Latin-1 Supplement"](S)&&(S===167||S===169||S===174||S===177||S===188||S===189||S===190||S===215||S===247)||sn["General Punctuation"](S)&&(S===8214||S===8224||S===8225||S===8240||S===8241||S===8251||S===8252||S===8258||S===8263||S===8264||S===8265||S===8273)||sn["Letterlike Symbols"](S)||sn["Number Forms"](S)||sn["Miscellaneous Technical"](S)&&(S>=8960&&S<=8967||S>=8972&&S<=8991||S>=8996&&S<=9e3||S===9003||S>=9085&&S<=9114||S>=9150&&S<=9165||S===9167||S>=9169&&S<=9179||S>=9186&&S<=9215)||sn["Control Pictures"](S)&&S!==9251||sn["Optical Character Recognition"](S)||sn["Enclosed Alphanumerics"](S)||sn["Geometric Shapes"](S)||sn["Miscellaneous Symbols"](S)&&!(S>=9754&&S<=9759)||sn["Miscellaneous Symbols and Arrows"](S)&&(S>=11026&&S<=11055||S>=11088&&S<=11097||S>=11192&&S<=11243)||sn["CJK Symbols and Punctuation"](S)||sn.Katakana(S)||sn["Private Use Area"](S)||sn["CJK Compatibility Forms"](S)||sn["Small Form Variants"](S)||sn["Halfwidth and Fullwidth Forms"](S)||S===8734||S===8756||S===8757||S>=9984&&S<=10087||S>=10102&&S<=10131||S===65532||S===65533)}(R))}let Gs=Xo(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function Rs(R){return Gs.test(String.fromCodePoint(R))}function ia(R,S){return!(!S&&Rs(R)||R>=2304&&R<=3583||R>=3840&&R<=4255||sn.Khmer(R))}function Ka(R){for(let S of R)if(Rs(S.charCodeAt(0)))return!0;return!1}let vs=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(R){this.pluginStatus=R.pluginStatus,this.pluginURL=R.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(R){this.applyArabicShaping=R.applyArabicShaping,this.processBidirectionalText=R.processBidirectionalText,this.processStyledBidirectionalText=R.processStyledBidirectionalText}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class Ko{constructor(S,D){this.zoom=S,D?(this.now=D.now,this.fadeDuration=D.fadeDuration,this.zoomHistory=D.zoomHistory,this.transition=D.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Cn,this.transition={})}isSupportedScript(S){return function(D,j){for(let te of D)if(!ia(te.charCodeAt(0),j))return!1;return!0}(S,vs.getRTLTextPluginStatus()==="loaded")}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let S=this.zoom,D=S-Math.floor(S),j=this.crossFadingFactor();return S>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:D+(1-D)*j}:{fromScale:.5,toScale:1,t:1-(1-j)*D}}}class iu{constructor(S,D){this.property=S,this.value=D,this.expression=function(j,te){if(Ch(j))return new Qs(j,te);if(Lc(j)){let ue=yu(j,te);if(ue.result==="error")throw new Error(ue.value.map(ve=>`${ve.key}: ${ve.message}`).join(", "));return ue.value}{let ue=j;return te.type==="color"&&typeof j=="string"?ue=Zt.parse(j):te.type!=="padding"||typeof j!="number"&&!Array.isArray(j)?te.type==="variableAnchorOffsetCollection"&&Array.isArray(j)&&(ue=Si.parse(j)):ue=Vr.parse(j),{kind:"constant",evaluate:()=>ue}}}(D===void 0?S.specification.default:D,S.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(S,D,j){return this.property.possiblyEvaluate(this,S,D,j)}}class Ru{constructor(S){this.property=S,this.value=new iu(S,void 0)}transitioned(S,D){return new mf(this.property,this.value,D,L({},S.transition,this.transition),S.now)}untransitioned(){return new mf(this.property,this.value,null,{},0)}}class ac{constructor(S){this._properties=S,this._values=Object.create(S.defaultTransitionablePropertyValues)}getValue(S){return p(this._values[S].value.value)}setValue(S,D){Object.prototype.hasOwnProperty.call(this._values,S)||(this._values[S]=new Ru(this._values[S].property)),this._values[S].value=new iu(this._values[S].property,D===null?void 0:p(D))}getTransition(S){return p(this._values[S].transition)}setTransition(S,D){Object.prototype.hasOwnProperty.call(this._values,S)||(this._values[S]=new Ru(this._values[S].property)),this._values[S].transition=p(D)||void 0}serialize(){let S={};for(let D of Object.keys(this._values)){let j=this.getValue(D);j!==void 0&&(S[D]=j);let te=this.getTransition(D);te!==void 0&&(S[`${D}-transition`]=te)}return S}transitioned(S,D){let j=new bu(this._properties);for(let te of Object.keys(this._values))j._values[te]=this._values[te].transitioned(S,D._values[te]);return j}untransitioned(){let S=new bu(this._properties);for(let D of Object.keys(this._values))S._values[D]=this._values[D].untransitioned();return S}}class mf{constructor(S,D,j,te,ue){this.property=S,this.value=D,this.begin=ue+te.delay||0,this.end=this.begin+te.duration||0,S.specification.transition&&(te.delay||te.duration)&&(this.prior=j)}possiblyEvaluate(S,D,j){let te=S.now||0,ue=this.value.possiblyEvaluate(S,D,j),ve=this.prior;if(ve){if(te>this.end)return this.prior=null,ue;if(this.value.isDataDriven())return this.prior=null,ue;if(te=1)return 1;let at=Ze*Ze,Tt=at*Ze;return 4*(Ze<.5?Tt:3*(Ze-at)+Tt-.75)}(De))}}return ue}}class bu{constructor(S){this._properties=S,this._values=Object.create(S.defaultTransitioningPropertyValues)}possiblyEvaluate(S,D,j){let te=new Dc(this._properties);for(let ue of Object.keys(this._values))te._values[ue]=this._values[ue].possiblyEvaluate(S,D,j);return te}hasTransition(){for(let S of Object.keys(this._values))if(this._values[S].prior)return!0;return!1}}class Kc{constructor(S){this._properties=S,this._values=Object.create(S.defaultPropertyValues)}hasValue(S){return this._values[S].value!==void 0}getValue(S){return p(this._values[S].value)}setValue(S,D){this._values[S]=new iu(this._values[S].property,D===null?void 0:p(D))}serialize(){let S={};for(let D of Object.keys(this._values)){let j=this.getValue(D);j!==void 0&&(S[D]=j)}return S}possiblyEvaluate(S,D,j){let te=new Dc(this._properties);for(let ue of Object.keys(this._values))te._values[ue]=this._values[ue].possiblyEvaluate(S,D,j);return te}}class Du{constructor(S,D,j){this.property=S,this.value=D,this.parameters=j}isConstant(){return this.value.kind==="constant"}constantOr(S){return this.value.kind==="constant"?this.value.value:S}evaluate(S,D,j,te){return this.property.evaluate(this.value,this.parameters,S,D,j,te)}}class Dc{constructor(S){this._properties=S,this._values=Object.create(S.defaultPossiblyEvaluatedValues)}get(S){return this._values[S]}}class Da{constructor(S){this.specification=S}possiblyEvaluate(S,D){if(S.isDataDriven())throw new Error("Value should not be data driven");return S.expression.evaluate(D)}interpolate(S,D,j){let te=Mo[this.specification.type];return te?te(S,D,j):S}}class eo{constructor(S,D){this.specification=S,this.overrides=D}possiblyEvaluate(S,D,j,te){return new Du(this,S.expression.kind==="constant"||S.expression.kind==="camera"?{kind:"constant",value:S.expression.evaluate(D,null,{},j,te)}:S.expression,D)}interpolate(S,D,j){if(S.value.kind!=="constant"||D.value.kind!=="constant")return S;if(S.value.value===void 0||D.value.value===void 0)return new Du(this,{kind:"constant",value:void 0},S.parameters);let te=Mo[this.specification.type];if(te){let ue=te(S.value.value,D.value.value,j);return new Du(this,{kind:"constant",value:ue},S.parameters)}return S}evaluate(S,D,j,te,ue,ve){return S.kind==="constant"?S.value:S.evaluate(D,j,te,ue,ve)}}class Jc extends eo{possiblyEvaluate(S,D,j,te){if(S.value===void 0)return new Du(this,{kind:"constant",value:void 0},D);if(S.expression.kind==="constant"){let ue=S.expression.evaluate(D,null,{},j,te),ve=S.property.specification.type==="resolvedImage"&&typeof ue!="string"?ue.name:ue,De=this._calculate(ve,ve,ve,D);return new Du(this,{kind:"constant",value:De},D)}if(S.expression.kind==="camera"){let ue=this._calculate(S.expression.evaluate({zoom:D.zoom-1}),S.expression.evaluate({zoom:D.zoom}),S.expression.evaluate({zoom:D.zoom+1}),D);return new Du(this,{kind:"constant",value:ue},D)}return new Du(this,S.expression,D)}evaluate(S,D,j,te,ue,ve){if(S.kind==="source"){let De=S.evaluate(D,j,te,ue,ve);return this._calculate(De,De,De,D)}return S.kind==="composite"?this._calculate(S.evaluate({zoom:Math.floor(D.zoom)-1},j,te),S.evaluate({zoom:Math.floor(D.zoom)},j,te),S.evaluate({zoom:Math.floor(D.zoom)+1},j,te),D):S.value}_calculate(S,D,j,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:S,to:D}:{from:j,to:D}}interpolate(S){return S}}class yc{constructor(S){this.specification=S}possiblyEvaluate(S,D,j,te){if(S.value!==void 0){if(S.expression.kind==="constant"){let ue=S.expression.evaluate(D,null,{},j,te);return this._calculate(ue,ue,ue,D)}return this._calculate(S.expression.evaluate(new Ko(Math.floor(D.zoom-1),D)),S.expression.evaluate(new Ko(Math.floor(D.zoom),D)),S.expression.evaluate(new Ko(Math.floor(D.zoom+1),D)),D)}}_calculate(S,D,j,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:S,to:D}:{from:j,to:D}}interpolate(S){return S}}class _c{constructor(S){this.specification=S}possiblyEvaluate(S,D,j,te){return!!S.expression.evaluate(D,null,{},j,te)}interpolate(){return!1}}class le{constructor(S){this.properties=S,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let D in S){let j=S[D];j.specification.overridable&&this.overridableProperties.push(D);let te=this.defaultPropertyValues[D]=new iu(j,void 0),ue=this.defaultTransitionablePropertyValues[D]=new Ru(j);this.defaultTransitioningPropertyValues[D]=ue.untransitioned(),this.defaultPossiblyEvaluatedValues[D]=te.possiblyEvaluate({})}}}mi("DataDrivenProperty",eo),mi("DataConstantProperty",Da),mi("CrossFadedDataDrivenProperty",Jc),mi("CrossFadedProperty",yc),mi("ColorRampProperty",_c);let w="-transition";class B extends Re{constructor(S,D){if(super(),this.id=S.id,this.type=S.type,this._featureFilter={filter:()=>!0,needGeometry:!1},S.type!=="custom"&&(this.metadata=S.metadata,this.minzoom=S.minzoom,this.maxzoom=S.maxzoom,S.type!=="background"&&(this.source=S.source,this.sourceLayer=S["source-layer"],this.filter=S.filter),D.layout&&(this._unevaluatedLayout=new Kc(D.layout)),D.paint)){this._transitionablePaint=new ac(D.paint);for(let j in S.paint)this.setPaintProperty(j,S.paint[j],{validate:!1});for(let j in S.layout)this.setLayoutProperty(j,S.layout[j],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Dc(D.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(S){return S==="visibility"?this.visibility:this._unevaluatedLayout.getValue(S)}setLayoutProperty(S,D,j={}){D!=null&&this._validate(hn,`layers.${this.id}.layout.${S}`,S,D,j)||(S!=="visibility"?this._unevaluatedLayout.setValue(S,D):this.visibility=D)}getPaintProperty(S){return S.endsWith(w)?this._transitionablePaint.getTransition(S.slice(0,-11)):this._transitionablePaint.getValue(S)}setPaintProperty(S,D,j={}){if(D!=null&&this._validate(Xi,`layers.${this.id}.paint.${S}`,S,D,j))return!1;if(S.endsWith(w))return this._transitionablePaint.setTransition(S.slice(0,-11),D||void 0),!1;{let te=this._transitionablePaint._values[S],ue=te.property.specification["property-type"]==="cross-faded-data-driven",ve=te.value.isDataDriven(),De=te.value;this._transitionablePaint.setValue(S,D),this._handleSpecialPaintPropertyUpdate(S);let Ze=this._transitionablePaint._values[S].value;return Ze.isDataDriven()||ve||ue||this._handleOverridablePaintPropertyUpdate(S,De,Ze)}}_handleSpecialPaintPropertyUpdate(S){}_handleOverridablePaintPropertyUpdate(S,D,j){return!1}isHidden(S){return!!(this.minzoom&&S=this.maxzoom)||this.visibility==="none"}updateTransitions(S){this._transitioningPaint=this._transitionablePaint.transitioned(S,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(S,D){S.getCrossfadeParameters&&(this._crossfadeParameters=S.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(S,void 0,D)),this.paint=this._transitioningPaint.possiblyEvaluate(S,void 0,D)}serialize(){let S={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(S.layout=S.layout||{},S.layout.visibility=this.visibility),M(S,(D,j)=>!(D===void 0||j==="layout"&&!Object.keys(D).length||j==="paint"&&!Object.keys(D).length))}_validate(S,D,j,te,ue={}){return(!ue||ue.validate!==!1)&&Ti(this,S.call(fi,{key:D,layerType:this.type,objectKey:j,value:te,styleSpec:ce,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let S in this.paint._values){let D=this.paint.get(S);if(D instanceof Du&&Cu(D.property.specification)&&(D.value.kind==="source"||D.value.kind==="composite")&&D.value.isStateDependent)return!0}return!1}}let Q={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class ee{constructor(S,D){this._structArray=S,this._pos1=D*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class se{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(S,D){return S._trim(),D&&(S.isTransferred=!0,D.push(S.arrayBuffer)),{length:S.length,arrayBuffer:S.arrayBuffer}}static deserialize(S){let D=Object.create(this.prototype);return D.arrayBuffer=S.arrayBuffer,D.length=S.length,D.capacity=S.arrayBuffer.byteLength/D.bytesPerElement,D._refreshViews(),D}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(S){this.reserve(S),this.length=S}reserve(S){if(S>this.capacity){this.capacity=Math.max(S,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let D=this.uint8;this._refreshViews(),D&&this.uint8.set(D)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function qe(R,S=1){let D=0,j=0;return{members:R.map(te=>{let ue=Q[te.type].BYTES_PER_ELEMENT,ve=D=je(D,Math.max(S,ue)),De=te.components||1;return j=Math.max(j,ue),D+=ue*De,{name:te.name,type:te.type,components:De,offset:ve}}),size:je(D,Math.max(j,S)),alignment:S}}function je(R,S){return Math.ceil(R/S)*S}class it extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.int16[te+0]=D,this.int16[te+1]=j,S}}it.prototype.bytesPerElement=4,mi("StructArrayLayout2i4",it);class yt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.int16[ue+0]=D,this.int16[ue+1]=j,this.int16[ue+2]=te,S}}yt.prototype.bytesPerElement=6,mi("StructArrayLayout3i6",yt);class Ot extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te){let ue=this.length;return this.resize(ue+1),this.emplace(ue,S,D,j,te)}emplace(S,D,j,te,ue){let ve=4*S;return this.int16[ve+0]=D,this.int16[ve+1]=j,this.int16[ve+2]=te,this.int16[ve+3]=ue,S}}Ot.prototype.bytesPerElement=8,mi("StructArrayLayout4i8",Ot);class Nt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=6*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.int16[Ze+2]=te,this.int16[Ze+3]=ue,this.int16[Ze+4]=ve,this.int16[Ze+5]=De,S}}Nt.prototype.bytesPerElement=12,mi("StructArrayLayout2i4i12",Nt);class hr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=4*S,at=8*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.uint8[at+4]=te,this.uint8[at+5]=ue,this.uint8[at+6]=ve,this.uint8[at+7]=De,S}}hr.prototype.bytesPerElement=8,mi("StructArrayLayout2i4ub8",hr);class Sr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.float32[te+0]=D,this.float32[te+1]=j,S}}Sr.prototype.bytesPerElement=8,mi("StructArrayLayout2f8",Sr);class he extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=this.length;return this.resize(Ft+1),this.emplace(Ft,S,D,j,te,ue,ve,De,Ze,at,Tt)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft){let Qt=10*S;return this.uint16[Qt+0]=D,this.uint16[Qt+1]=j,this.uint16[Qt+2]=te,this.uint16[Qt+3]=ue,this.uint16[Qt+4]=ve,this.uint16[Qt+5]=De,this.uint16[Qt+6]=Ze,this.uint16[Qt+7]=at,this.uint16[Qt+8]=Tt,this.uint16[Qt+9]=Ft,S}}he.prototype.bytesPerElement=20,mi("StructArrayLayout10ui20",he);class be extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt){let sr=this.length;return this.resize(sr+1),this.emplace(sr,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr){let Tr=12*S;return this.int16[Tr+0]=D,this.int16[Tr+1]=j,this.int16[Tr+2]=te,this.int16[Tr+3]=ue,this.uint16[Tr+4]=ve,this.uint16[Tr+5]=De,this.uint16[Tr+6]=Ze,this.uint16[Tr+7]=at,this.int16[Tr+8]=Tt,this.int16[Tr+9]=Ft,this.int16[Tr+10]=Qt,this.int16[Tr+11]=sr,S}}be.prototype.bytesPerElement=24,mi("StructArrayLayout4i4ui4i24",be);class Pe extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.float32[ue+0]=D,this.float32[ue+1]=j,this.float32[ue+2]=te,S}}Pe.prototype.bytesPerElement=12,mi("StructArrayLayout3f12",Pe);class Oe extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.uint32[1*S+0]=D,S}}Oe.prototype.bytesPerElement=4,mi("StructArrayLayout1ul4",Oe);class Je extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at){let Tt=this.length;return this.resize(Tt+1),this.emplace(Tt,S,D,j,te,ue,ve,De,Ze,at)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=10*S,Qt=5*S;return this.int16[Ft+0]=D,this.int16[Ft+1]=j,this.int16[Ft+2]=te,this.int16[Ft+3]=ue,this.int16[Ft+4]=ve,this.int16[Ft+5]=De,this.uint32[Qt+3]=Ze,this.uint16[Ft+8]=at,this.uint16[Ft+9]=Tt,S}}Je.prototype.bytesPerElement=20,mi("StructArrayLayout6i1ul2ui20",Je);class He extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=6*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.int16[Ze+2]=te,this.int16[Ze+3]=ue,this.int16[Ze+4]=ve,this.int16[Ze+5]=De,S}}He.prototype.bytesPerElement=12,mi("StructArrayLayout2i2i2i12",He);class et extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue){let ve=this.length;return this.resize(ve+1),this.emplace(ve,S,D,j,te,ue)}emplace(S,D,j,te,ue,ve){let De=4*S,Ze=8*S;return this.float32[De+0]=D,this.float32[De+1]=j,this.float32[De+2]=te,this.int16[Ze+6]=ue,this.int16[Ze+7]=ve,S}}et.prototype.bytesPerElement=16,mi("StructArrayLayout2f1f2i16",et);class Mt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=16*S,at=4*S,Tt=8*S;return this.uint8[Ze+0]=D,this.uint8[Ze+1]=j,this.float32[at+1]=te,this.float32[at+2]=ue,this.int16[Tt+6]=ve,this.int16[Tt+7]=De,S}}Mt.prototype.bytesPerElement=16,mi("StructArrayLayout2ub2f2i16",Mt);class Dt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.uint16[ue+0]=D,this.uint16[ue+1]=j,this.uint16[ue+2]=te,S}}Dt.prototype.bytesPerElement=6,mi("StructArrayLayout3ui6",Dt);class Ut extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni){let Di=this.length;return this.resize(Di+1),this.emplace(Di,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di){let pi=24*S,ki=12*S,Zi=48*S;return this.int16[pi+0]=D,this.int16[pi+1]=j,this.uint16[pi+2]=te,this.uint16[pi+3]=ue,this.uint32[ki+2]=ve,this.uint32[ki+3]=De,this.uint32[ki+4]=Ze,this.uint16[pi+10]=at,this.uint16[pi+11]=Tt,this.uint16[pi+12]=Ft,this.float32[ki+7]=Qt,this.float32[ki+8]=sr,this.uint8[Zi+36]=Tr,this.uint8[Zi+37]=Pr,this.uint8[Zi+38]=$r,this.uint32[ki+10]=ni,this.int16[pi+22]=Di,S}}Ut.prototype.bytesPerElement=48,mi("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Ut);class tr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a){let Xa=this.length;return this.resize(Xa+1),this.emplace(Xa,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a,Xa){let Tn=32*S,bo=16*S;return this.int16[Tn+0]=D,this.int16[Tn+1]=j,this.int16[Tn+2]=te,this.int16[Tn+3]=ue,this.int16[Tn+4]=ve,this.int16[Tn+5]=De,this.int16[Tn+6]=Ze,this.int16[Tn+7]=at,this.uint16[Tn+8]=Tt,this.uint16[Tn+9]=Ft,this.uint16[Tn+10]=Qt,this.uint16[Tn+11]=sr,this.uint16[Tn+12]=Tr,this.uint16[Tn+13]=Pr,this.uint16[Tn+14]=$r,this.uint16[Tn+15]=ni,this.uint16[Tn+16]=Di,this.uint16[Tn+17]=pi,this.uint16[Tn+18]=ki,this.uint16[Tn+19]=Zi,this.uint16[Tn+20]=ta,this.uint16[Tn+21]=Va,this.uint16[Tn+22]=Io,this.uint32[bo+12]=La,this.float32[bo+13]=Hn,this.float32[bo+14]=lo,this.uint16[Tn+30]=$a,this.uint16[Tn+31]=Xa,S}}tr.prototype.bytesPerElement=64,mi("StructArrayLayout8i15ui1ul2f2ui64",tr);class mr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.float32[1*S+0]=D,S}}mr.prototype.bytesPerElement=4,mi("StructArrayLayout1f4",mr);class Rr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.uint16[6*S+0]=D,this.float32[ue+1]=j,this.float32[ue+2]=te,S}}Rr.prototype.bytesPerElement=12,mi("StructArrayLayout1ui2f12",Rr);class zr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=4*S;return this.uint32[2*S+0]=D,this.uint16[ue+2]=j,this.uint16[ue+3]=te,S}}zr.prototype.bytesPerElement=8,mi("StructArrayLayout1ul2ui8",zr);class Xr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.uint16[te+0]=D,this.uint16[te+1]=j,S}}Xr.prototype.bytesPerElement=4,mi("StructArrayLayout2ui4",Xr);class di extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.uint16[1*S+0]=D,S}}di.prototype.bytesPerElement=2,mi("StructArrayLayout1ui2",di);class Li extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te){let ue=this.length;return this.resize(ue+1),this.emplace(ue,S,D,j,te)}emplace(S,D,j,te,ue){let ve=4*S;return this.float32[ve+0]=D,this.float32[ve+1]=j,this.float32[ve+2]=te,this.float32[ve+3]=ue,S}}Li.prototype.bytesPerElement=16,mi("StructArrayLayout4f16",Li);class Ci extends ee{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new u(this.anchorPointX,this.anchorPointY)}}Ci.prototype.size=20;class Qi extends Je{get(S){return new Ci(this,S)}}mi("CollisionBoxArray",Qi);class Mn extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(S){this._structArray.uint8[this._pos1+37]=S}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(S){this._structArray.uint8[this._pos1+38]=S}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(S){this._structArray.uint32[this._pos4+10]=S}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Mn.prototype.size=48;class pa extends Ut{get(S){return new Mn(this,S)}}mi("PlacedSymbolArray",pa);class ea extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(S){this._structArray.uint32[this._pos4+12]=S}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}ea.prototype.size=64;class Ga extends tr{get(S){return new ea(this,S)}}mi("SymbolInstanceArray",Ga);class To extends mr{getoffsetX(S){return this.float32[1*S+0]}}mi("GlyphOffsetArray",To);class Wa extends yt{getx(S){return this.int16[3*S+0]}gety(S){return this.int16[3*S+1]}gettileUnitDistanceFromAnchor(S){return this.int16[3*S+2]}}mi("SymbolLineVertexArray",Wa);class co extends ee{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}co.prototype.size=12;class Ro extends Rr{get(S){return new co(this,S)}}mi("TextAnchorOffsetArray",Ro);class Ds extends ee{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}Ds.prototype.size=8;class As extends zr{get(S){return new Ds(this,S)}}mi("FeatureIndexArray",As);class yo extends it{}class po extends it{}class _l extends it{}class Vl extends Nt{}class Zu extends hr{}class cu extends Sr{}class el extends he{}class nu extends be{}class zc extends Pe{}class Dl extends Oe{}class zl extends He{}class Z extends Mt{}class oe extends Dt{}class we extends Xr{}let Be=qe([{name:"a_pos",components:2,type:"Int16"}],4),{members:Ue}=Be;class We{constructor(S=[]){this.segments=S}prepareSegment(S,D,j,te){let ue=this.segments[this.segments.length-1];return S>We.MAX_VERTEX_ARRAY_LENGTH&&T(`Max vertices per segment is ${We.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${S}`),(!ue||ue.vertexLength+S>We.MAX_VERTEX_ARRAY_LENGTH||ue.sortKey!==te)&&(ue={vertexOffset:D.length,primitiveOffset:j.length,vertexLength:0,primitiveLength:0},te!==void 0&&(ue.sortKey=te),this.segments.push(ue)),ue}get(){return this.segments}destroy(){for(let S of this.segments)for(let D in S.vaos)S.vaos[D].destroy()}static simpleSegment(S,D,j,te){return new We([{vertexOffset:S,primitiveOffset:D,vertexLength:j,primitiveLength:te,vaos:{},sortKey:0}])}}function wt(R,S){return 256*(R=k(Math.floor(R),0,255))+k(Math.floor(S),0,255)}We.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,mi("SegmentVector",We);let tt=qe([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var zt={exports:{}},or={exports:{}};or.exports=function(R,S){var D,j,te,ue,ve,De,Ze,at;for(j=R.length-(D=3&R.length),te=S,ve=3432918353,De=461845907,at=0;at>>16)*ve&65535)<<16)&4294967295)<<15|Ze>>>17))*De+(((Ze>>>16)*De&65535)<<16)&4294967295)<<13|te>>>19))+((5*(te>>>16)&65535)<<16)&4294967295))+((58964+(ue>>>16)&65535)<<16);switch(Ze=0,D){case 3:Ze^=(255&R.charCodeAt(at+2))<<16;case 2:Ze^=(255&R.charCodeAt(at+1))<<8;case 1:te^=Ze=(65535&(Ze=(Ze=(65535&(Ze^=255&R.charCodeAt(at)))*ve+(((Ze>>>16)*ve&65535)<<16)&4294967295)<<15|Ze>>>17))*De+(((Ze>>>16)*De&65535)<<16)&4294967295}return te^=R.length,te=2246822507*(65535&(te^=te>>>16))+((2246822507*(te>>>16)&65535)<<16)&4294967295,te=3266489909*(65535&(te^=te>>>13))+((3266489909*(te>>>16)&65535)<<16)&4294967295,(te^=te>>>16)>>>0};var lr=or.exports,Dr={exports:{}};Dr.exports=function(R,S){for(var D,j=R.length,te=S^j,ue=0;j>=4;)D=1540483477*(65535&(D=255&R.charCodeAt(ue)|(255&R.charCodeAt(++ue))<<8|(255&R.charCodeAt(++ue))<<16|(255&R.charCodeAt(++ue))<<24))+((1540483477*(D>>>16)&65535)<<16),te=1540483477*(65535&te)+((1540483477*(te>>>16)&65535)<<16)^(D=1540483477*(65535&(D^=D>>>24))+((1540483477*(D>>>16)&65535)<<16)),j-=4,++ue;switch(j){case 3:te^=(255&R.charCodeAt(ue+2))<<16;case 2:te^=(255&R.charCodeAt(ue+1))<<8;case 1:te=1540483477*(65535&(te^=255&R.charCodeAt(ue)))+((1540483477*(te>>>16)&65535)<<16)}return te=1540483477*(65535&(te^=te>>>13))+((1540483477*(te>>>16)&65535)<<16),(te^=te>>>15)>>>0};var Ir=lr,oi=Dr.exports;zt.exports=Ir,zt.exports.murmur3=Ir,zt.exports.murmur2=oi;var ui=o(zt.exports);class qr{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(S,D,j,te){this.ids.push(Kr(S)),this.positions.push(D,j,te)}getPositions(S){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let D=Kr(S),j=0,te=this.ids.length-1;for(;j>1;this.ids[ve]>=D?te=ve:j=ve+1}let ue=[];for(;this.ids[j]===D;)ue.push({index:this.positions[3*j],start:this.positions[3*j+1],end:this.positions[3*j+2]}),j++;return ue}static serialize(S,D){let j=new Float64Array(S.ids),te=new Uint32Array(S.positions);return ii(j,te,0,j.length-1),D&&D.push(j.buffer,te.buffer),{ids:j,positions:te}}static deserialize(S){let D=new qr;return D.ids=S.ids,D.positions=S.positions,D.indexed=!0,D}}function Kr(R){let S=+R;return!isNaN(S)&&S<=Number.MAX_SAFE_INTEGER?S:ui(String(R))}function ii(R,S,D,j){for(;D>1],ue=D-1,ve=j+1;for(;;){do ue++;while(R[ue]te);if(ue>=ve)break;vi(R,ue,ve),vi(S,3*ue,3*ve),vi(S,3*ue+1,3*ve+1),vi(S,3*ue+2,3*ve+2)}ve-D`u_${te}`),this.type=j}setUniform(S,D,j){S.set(j.constantOr(this.value))}getBinding(S,D,j){return this.type==="color"?new dn(S,D):new Jr(S,D)}}class ya{constructor(S,D){this.uniformNames=D.map(j=>`u_${j}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(S,D){this.pixelRatioFrom=D.pixelRatio,this.pixelRatioTo=S.pixelRatio,this.patternFrom=D.tlbr,this.patternTo=S.tlbr}setUniform(S,D,j,te){let ue=te==="u_pattern_to"?this.patternTo:te==="u_pattern_from"?this.patternFrom:te==="u_pixel_ratio_to"?this.pixelRatioTo:te==="u_pixel_ratio_from"?this.pixelRatioFrom:null;ue&&S.set(ue)}getBinding(S,D,j){return j.substr(0,9)==="u_pattern"?new un(S,D):new Jr(S,D)}}class so{constructor(S,D,j,te){this.expression=S,this.type=j,this.maxValue=0,this.paintVertexAttributes=D.map(ue=>({name:`a_${ue}`,type:"Float32",components:j==="color"?2:1,offset:0})),this.paintVertexArray=new te}populatePaintArray(S,D,j,te,ue){let ve=this.paintVertexArray.length,De=this.expression.evaluate(new Ko(0),D,{},te,[],ue);this.paintVertexArray.resize(S),this._setPaintValue(ve,S,De)}updatePaintArray(S,D,j,te){let ue=this.expression.evaluate({zoom:0},j,te);this._setPaintValue(S,D,ue)}_setPaintValue(S,D,j){if(this.type==="color"){let te=Nn(j);for(let ue=S;ue`u_${De}_t`),this.type=j,this.useIntegerZoom=te,this.zoom=ue,this.maxValue=0,this.paintVertexAttributes=D.map(De=>({name:`a_${De}`,type:"Float32",components:j==="color"?4:2,offset:0})),this.paintVertexArray=new ve}populatePaintArray(S,D,j,te,ue){let ve=this.expression.evaluate(new Ko(this.zoom),D,{},te,[],ue),De=this.expression.evaluate(new Ko(this.zoom+1),D,{},te,[],ue),Ze=this.paintVertexArray.length;this.paintVertexArray.resize(S),this._setPaintValue(Ze,S,ve,De)}updatePaintArray(S,D,j,te){let ue=this.expression.evaluate({zoom:this.zoom},j,te),ve=this.expression.evaluate({zoom:this.zoom+1},j,te);this._setPaintValue(S,D,ue,ve)}_setPaintValue(S,D,j,te){if(this.type==="color"){let ue=Nn(j),ve=Nn(te);for(let De=S;De`#define HAS_UNIFORM_${te}`))}return S}getBinderAttributes(){let S=[];for(let D in this.binders){let j=this.binders[D];if(j instanceof so||j instanceof wa)for(let te=0;te!0){this.programConfigurations={};for(let te of S)this.programConfigurations[te.id]=new Ss(te,D,j);this.needsUpload=!1,this._featureMap=new qr,this._bufferOffset=0}populatePaintArrays(S,D,j,te,ue,ve){for(let De in this.programConfigurations)this.programConfigurations[De].populatePaintArrays(S,D,te,ue,ve);D.id!==void 0&&this._featureMap.add(D.id,j,this._bufferOffset,S),this._bufferOffset=S,this.needsUpload=!0}updatePaintArrays(S,D,j,te){for(let ue of j)this.needsUpload=this.programConfigurations[ue.id].updatePaintArrays(S,this._featureMap,D,ue,te)||this.needsUpload}get(S){return this.programConfigurations[S]}upload(S){if(this.needsUpload){for(let D in this.programConfigurations)this.programConfigurations[D].upload(S);this.needsUpload=!1}}destroy(){for(let S in this.programConfigurations)this.programConfigurations[S].destroy()}}function Ns(R,S){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[R]||[R.replace(`${S}-`,"").replace(/-/g,"_")]}function pn(R,S,D){let j={color:{source:Sr,composite:Li},number:{source:mr,composite:Sr}},te=function(ue){return{"line-pattern":{source:el,composite:el},"fill-pattern":{source:el,composite:el},"fill-extrusion-pattern":{source:el,composite:el}}[ue]}(R);return te&&te[D]||j[S][D]}mi("ConstantBinder",ga),mi("CrossFadedConstantBinder",ya),mi("SourceExpressionBinder",so),mi("CrossFadedCompositeBinder",io),mi("CompositeExpressionBinder",wa),mi("ProgramConfiguration",Ss,{omit:["_buffers"]}),mi("ProgramConfigurationSet",_s);let za=8192,Lo=Math.pow(2,14)-1,Fo=-Lo-1;function js(R){let S=za/R.extent,D=R.loadGeometry();for(let j=0;jve.x+1||Zeve.y+1)&&T("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return D}function xl(R,S){return{type:R.type,id:R.id,properties:R.properties,geometry:S?js(R):[]}}function fu(R,S,D,j,te){R.emplaceBack(2*S+(j+1)/2,2*D+(te+1)/2)}class dl{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new po,this.indexArray=new oe,this.segments=new We,this.programConfigurations=new _s(S.layers,S.zoom),this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){let te=this.layers[0],ue=[],ve=null,De=!1;te.type==="circle"&&(ve=te.layout.get("circle-sort-key"),De=!ve.isConstant());for(let{feature:Ze,id:at,index:Tt,sourceLayerIndex:Ft}of S){let Qt=this.layers[0]._featureFilter.needGeometry,sr=xl(Ze,Qt);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),sr,j))continue;let Tr=De?ve.evaluate(sr,{},j):void 0,Pr={id:at,properties:Ze.properties,type:Ze.type,sourceLayerIndex:Ft,index:Tt,geometry:Qt?sr.geometry:js(Ze),patterns:{},sortKey:Tr};ue.push(Pr)}De&&ue.sort((Ze,at)=>Ze.sortKey-at.sortKey);for(let Ze of ue){let{geometry:at,index:Tt,sourceLayerIndex:Ft}=Ze,Qt=S[Tt].feature;this.addFeature(Ze,at,Tt,j),D.featureIndex.insert(Qt,at,Tt,Ft,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Ue),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(S,D,j,te){for(let ue of D)for(let ve of ue){let De=ve.x,Ze=ve.y;if(De<0||De>=za||Ze<0||Ze>=za)continue;let at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,S.sortKey),Tt=at.vertexLength;fu(this.layoutVertexArray,De,Ze,-1,-1),fu(this.layoutVertexArray,De,Ze,1,-1),fu(this.layoutVertexArray,De,Ze,1,1),fu(this.layoutVertexArray,De,Ze,-1,1),this.indexArray.emplaceBack(Tt,Tt+1,Tt+2),this.indexArray.emplaceBack(Tt,Tt+3,Tt+2),at.vertexLength+=4,at.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,j,{},te)}}function xc(R,S){for(let D=0;D1){if(wi(R,S))return!0;for(let j=0;j1?D:D.sub(S)._mult(te)._add(S))}function cn(R,S){let D,j,te,ue=!1;for(let ve=0;veS.y!=te.y>S.y&&S.x<(te.x-j.x)*(S.y-j.y)/(te.y-j.y)+j.x&&(ue=!ue)}return ue}function On(R,S){let D=!1;for(let j=0,te=R.length-1;jS.y!=ve.y>S.y&&S.x<(ve.x-ue.x)*(S.y-ue.y)/(ve.y-ue.y)+ue.x&&(D=!D)}return D}function Bn(R,S,D){let j=D[0],te=D[2];if(R.xte.x&&S.x>te.x||R.yte.y&&S.y>te.y)return!1;let ue=F(R,S,D[0]);return ue!==F(R,S,D[1])||ue!==F(R,S,D[2])||ue!==F(R,S,D[3])}function yn(R,S,D){let j=S.paint.get(R).value;return j.kind==="constant"?j.value:D.programConfigurations.get(S.id).getMaxValue(R)}function to(R){return Math.sqrt(R[0]*R[0]+R[1]*R[1])}function Rn(R,S,D,j,te){if(!S[0]&&!S[1])return R;let ue=u.convert(S)._mult(te);D==="viewport"&&ue._rotate(-j);let ve=[];for(let De=0;Devn($r,Pr))}(at,Ze),sr=Ft?Tt*De:Tt;for(let Tr of te)for(let Pr of Tr){let $r=Ft?Pr:vn(Pr,Ze),ni=sr,Di=Za([],[Pr.x,Pr.y,0,1],Ze);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?ni*=Di[3]/ve.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(ni*=ve.cameraToCenterDistance/Di[3]),At(Qt,$r,ni))return!0}return!1}}function vn(R,S){let D=Za([],[R.x,R.y,0,1],S);return new u(D[0]/D[3],D[1]/D[3])}class Aa extends dl{}let aa;mi("HeatmapBucket",Aa,{omit:["layers"]});var Xn={get paint(){return aa=aa||new le({"heatmap-radius":new eo(ce.paint_heatmap["heatmap-radius"]),"heatmap-weight":new eo(ce.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Da(ce.paint_heatmap["heatmap-intensity"]),"heatmap-color":new _c(ce.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Da(ce.paint_heatmap["heatmap-opacity"])})}};function Vn(R,{width:S,height:D},j,te){if(te){if(te instanceof Uint8ClampedArray)te=new Uint8Array(te.buffer);else if(te.length!==S*D*j)throw new RangeError(`mismatched image size. expected: ${te.length} but got: ${S*D*j}`)}else te=new Uint8Array(S*D*j);return R.width=S,R.height=D,R.data=te,R}function ma(R,{width:S,height:D},j){if(S===R.width&&D===R.height)return;let te=Vn({},{width:S,height:D},j);ro(R,te,{x:0,y:0},{x:0,y:0},{width:Math.min(R.width,S),height:Math.min(R.height,D)},j),R.width=S,R.height=D,R.data=te.data}function ro(R,S,D,j,te,ue){if(te.width===0||te.height===0)return S;if(te.width>R.width||te.height>R.height||D.x>R.width-te.width||D.y>R.height-te.height)throw new RangeError("out of range source coordinates for image copy");if(te.width>S.width||te.height>S.height||j.x>S.width-te.width||j.y>S.height-te.height)throw new RangeError("out of range destination coordinates for image copy");let ve=R.data,De=S.data;if(ve===De)throw new Error("srcData equals dstData, so image is already copied");for(let Ze=0;Ze{S[R.evaluationKey]=Ze;let at=R.expression.evaluate(S);te.data[ve+De+0]=Math.floor(255*at.r/at.a),te.data[ve+De+1]=Math.floor(255*at.g/at.a),te.data[ve+De+2]=Math.floor(255*at.b/at.a),te.data[ve+De+3]=Math.floor(255*at.a)};if(R.clips)for(let ve=0,De=0;ve80*D){De=1/0,Ze=1/0;let Tt=-1/0,Ft=-1/0;for(let Qt=D;QtTt&&(Tt=sr),Tr>Ft&&(Ft=Tr)}at=Math.max(Tt-De,Ft-Ze),at=at!==0?32767/at:0}return yf(ue,ve,D,De,Ze,at,0),ve}function bc(R,S,D,j,te){let ue;if(te===function(ve,De,Ze,at){let Tt=0;for(let Ft=De,Qt=Ze-at;Ft0)for(let ve=S;ve=S;ve-=j)ue=Jt(ve/j|0,R[ve],R[ve+1],ue);return ue&&de(ue,ue.next)&&(vt(ue),ue=ue.next),ue}function wc(R,S){if(!R)return R;S||(S=R);let D,j=R;do if(D=!1,j.steiner||!de(j,j.next)&&pe(j.prev,j,j.next)!==0)j=j.next;else{if(vt(j),j=S=j.prev,j===j.next)break;D=!0}while(D||j!==S);return S}function yf(R,S,D,j,te,ue,ve){if(!R)return;!ve&&ue&&function(Ze,at,Tt,Ft){let Qt=Ze;do Qt.z===0&&(Qt.z=z(Qt.x,Qt.y,at,Tt,Ft)),Qt.prevZ=Qt.prev,Qt.nextZ=Qt.next,Qt=Qt.next;while(Qt!==Ze);Qt.prevZ.nextZ=null,Qt.prevZ=null,function(sr){let Tr,Pr=1;do{let $r,ni=sr;sr=null;let Di=null;for(Tr=0;ni;){Tr++;let pi=ni,ki=0;for(let ta=0;ta0||Zi>0&π)ki!==0&&(Zi===0||!pi||ni.z<=pi.z)?($r=ni,ni=ni.nextZ,ki--):($r=pi,pi=pi.nextZ,Zi--),Di?Di.nextZ=$r:sr=$r,$r.prevZ=Di,Di=$r;ni=pi}Di.nextZ=null,Pr*=2}while(Tr>1)}(Qt)}(R,j,te,ue);let De=R;for(;R.prev!==R.next;){let Ze=R.prev,at=R.next;if(ue?Fc(R,j,te,ue):Hl(R))S.push(Ze.i,R.i,at.i),vt(R),R=at.next,De=at.next;else if((R=at)===De){ve?ve===1?yf(R=ef(wc(R),S),S,D,j,te,ue,2):ve===2&&ls(R,S,D,j,te,ue):yf(wc(R),S,D,j,te,ue,1);break}}}function Hl(R){let S=R.prev,D=R,j=R.next;if(pe(S,D,j)>=0)return!1;let te=S.x,ue=D.x,ve=j.x,De=S.y,Ze=D.y,at=j.y,Tt=teue?te>ve?te:ve:ue>ve?ue:ve,sr=De>Ze?De>at?De:at:Ze>at?Ze:at,Tr=j.next;for(;Tr!==S;){if(Tr.x>=Tt&&Tr.x<=Qt&&Tr.y>=Ft&&Tr.y<=sr&&O(te,De,ue,Ze,ve,at,Tr.x,Tr.y)&&pe(Tr.prev,Tr,Tr.next)>=0)return!1;Tr=Tr.next}return!0}function Fc(R,S,D,j){let te=R.prev,ue=R,ve=R.next;if(pe(te,ue,ve)>=0)return!1;let De=te.x,Ze=ue.x,at=ve.x,Tt=te.y,Ft=ue.y,Qt=ve.y,sr=DeZe?De>at?De:at:Ze>at?Ze:at,$r=Tt>Ft?Tt>Qt?Tt:Qt:Ft>Qt?Ft:Qt,ni=z(sr,Tr,S,D,j),Di=z(Pr,$r,S,D,j),pi=R.prevZ,ki=R.nextZ;for(;pi&&pi.z>=ni&&ki&&ki.z<=Di;){if(pi.x>=sr&&pi.x<=Pr&&pi.y>=Tr&&pi.y<=$r&&pi!==te&&pi!==ve&&O(De,Tt,Ze,Ft,at,Qt,pi.x,pi.y)&&pe(pi.prev,pi,pi.next)>=0||(pi=pi.prevZ,ki.x>=sr&&ki.x<=Pr&&ki.y>=Tr&&ki.y<=$r&&ki!==te&&ki!==ve&&O(De,Tt,Ze,Ft,at,Qt,ki.x,ki.y)&&pe(ki.prev,ki,ki.next)>=0))return!1;ki=ki.nextZ}for(;pi&&pi.z>=ni;){if(pi.x>=sr&&pi.x<=Pr&&pi.y>=Tr&&pi.y<=$r&&pi!==te&&pi!==ve&&O(De,Tt,Ze,Ft,at,Qt,pi.x,pi.y)&&pe(pi.prev,pi,pi.next)>=0)return!1;pi=pi.prevZ}for(;ki&&ki.z<=Di;){if(ki.x>=sr&&ki.x<=Pr&&ki.y>=Tr&&ki.y<=$r&&ki!==te&&ki!==ve&&O(De,Tt,Ze,Ft,at,Qt,ki.x,ki.y)&&pe(ki.prev,ki,ki.next)>=0)return!1;ki=ki.nextZ}return!0}function ef(R,S){let D=R;do{let j=D.prev,te=D.next.next;!de(j,te)&&Ie(j,D,D.next,te)&&Kt(j,te)&&Kt(te,j)&&(S.push(j.i,D.i,te.i),vt(D),vt(D.next),D=R=te),D=D.next}while(D!==R);return wc(D)}function ls(R,S,D,j,te,ue){let ve=R;do{let De=ve.next.next;for(;De!==ve.prev;){if(ve.i!==De.i&&$(ve,De)){let Ze=ir(ve,De);return ve=wc(ve,ve.next),Ze=wc(Ze,Ze.next),yf(ve,S,D,j,te,ue,0),void yf(Ze,S,D,j,te,ue,0)}De=De.next}ve=ve.next}while(ve!==R)}function _f(R,S){return R.x-S.x}function ns(R,S){let D=function(te,ue){let ve=ue,De=te.x,Ze=te.y,at,Tt=-1/0;do{if(Ze<=ve.y&&Ze>=ve.next.y&&ve.next.y!==ve.y){let Pr=ve.x+(Ze-ve.y)*(ve.next.x-ve.x)/(ve.next.y-ve.y);if(Pr<=De&&Pr>Tt&&(Tt=Pr,at=ve.x=ve.x&&ve.x>=Qt&&De!==ve.x&&O(Zeat.x||ve.x===at.x&&Y(at,ve)))&&(at=ve,Tr=Pr)}ve=ve.next}while(ve!==Ft);return at}(R,S);if(!D)return S;let j=ir(D,R);return wc(j,j.next),wc(D,D.next)}function Y(R,S){return pe(R.prev,R,S.prev)<0&&pe(S.next,R,R.next)<0}function z(R,S,D,j,te){return(R=1431655765&((R=858993459&((R=252645135&((R=16711935&((R=(R-D)*te|0)|R<<8))|R<<4))|R<<2))|R<<1))|(S=1431655765&((S=858993459&((S=252645135&((S=16711935&((S=(S-j)*te|0)|S<<8))|S<<4))|S<<2))|S<<1))<<1}function K(R){let S=R,D=R;do(S.x=(R-ve)*(ue-De)&&(R-ve)*(j-De)>=(D-ve)*(S-De)&&(D-ve)*(ue-De)>=(te-ve)*(j-De)}function $(R,S){return R.next.i!==S.i&&R.prev.i!==S.i&&!function(D,j){let te=D;do{if(te.i!==D.i&&te.next.i!==D.i&&te.i!==j.i&&te.next.i!==j.i&&Ie(te,te.next,D,j))return!0;te=te.next}while(te!==D);return!1}(R,S)&&(Kt(R,S)&&Kt(S,R)&&function(D,j){let te=D,ue=!1,ve=(D.x+j.x)/2,De=(D.y+j.y)/2;do te.y>De!=te.next.y>De&&te.next.y!==te.y&&ve<(te.next.x-te.x)*(De-te.y)/(te.next.y-te.y)+te.x&&(ue=!ue),te=te.next;while(te!==D);return ue}(R,S)&&(pe(R.prev,R,S.prev)||pe(R,S.prev,S))||de(R,S)&&pe(R.prev,R,R.next)>0&&pe(S.prev,S,S.next)>0)}function pe(R,S,D){return(S.y-R.y)*(D.x-S.x)-(S.x-R.x)*(D.y-S.y)}function de(R,S){return R.x===S.x&&R.y===S.y}function Ie(R,S,D,j){let te=pt(pe(R,S,D)),ue=pt(pe(R,S,j)),ve=pt(pe(D,j,R)),De=pt(pe(D,j,S));return te!==ue&&ve!==De||!(te!==0||!$e(R,D,S))||!(ue!==0||!$e(R,j,S))||!(ve!==0||!$e(D,R,j))||!(De!==0||!$e(D,S,j))}function $e(R,S,D){return S.x<=Math.max(R.x,D.x)&&S.x>=Math.min(R.x,D.x)&&S.y<=Math.max(R.y,D.y)&&S.y>=Math.min(R.y,D.y)}function pt(R){return R>0?1:R<0?-1:0}function Kt(R,S){return pe(R.prev,R,R.next)<0?pe(R,S,R.next)>=0&&pe(R,R.prev,S)>=0:pe(R,S,R.prev)<0||pe(R,R.next,S)<0}function ir(R,S){let D=Pt(R.i,R.x,R.y),j=Pt(S.i,S.x,S.y),te=R.next,ue=S.prev;return R.next=S,S.prev=R,D.next=te,te.prev=D,j.next=D,D.prev=j,ue.next=j,j.prev=ue,j}function Jt(R,S,D,j){let te=Pt(R,S,D);return j?(te.next=j.next,te.prev=j,j.next.prev=te,j.next=te):(te.prev=te,te.next=te),te}function vt(R){R.next.prev=R.prev,R.prev.next=R.next,R.prevZ&&(R.prevZ.nextZ=R.nextZ),R.nextZ&&(R.nextZ.prevZ=R.prevZ)}function Pt(R,S,D){return{i:R,x:S,y:D,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Wt(R,S,D){let j=D.patternDependencies,te=!1;for(let ue of S){let ve=ue.paint.get(`${R}-pattern`);ve.isConstant()||(te=!0);let De=ve.constantOr(null);De&&(te=!0,j[De.to]=!0,j[De.from]=!0)}return te}function rr(R,S,D,j,te){let ue=te.patternDependencies;for(let ve of S){let De=ve.paint.get(`${R}-pattern`).value;if(De.kind!=="constant"){let Ze=De.evaluate({zoom:j-1},D,{},te.availableImages),at=De.evaluate({zoom:j},D,{},te.availableImages),Tt=De.evaluate({zoom:j+1},D,{},te.availableImages);Ze=Ze&&Ze.name?Ze.name:Ze,at=at&&at.name?at.name:at,Tt=Tt&&Tt.name?Tt.name:Tt,ue[Ze]=!0,ue[at]=!0,ue[Tt]=!0,D.patterns[ve.id]={min:Ze,mid:at,max:Tt}}}return D}class dr{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new _l,this.indexArray=new oe,this.indexArray2=new we,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.segments2=new We,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.hasPattern=Wt("fill",this.layers,D);let te=this.layers[0].layout.get("fill-sort-key"),ue=!te.isConstant(),ve=[];for(let{feature:De,id:Ze,index:at,sourceLayerIndex:Tt}of S){let Ft=this.layers[0]._featureFilter.needGeometry,Qt=xl(De,Ft);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),Qt,j))continue;let sr=ue?te.evaluate(Qt,{},j,D.availableImages):void 0,Tr={id:Ze,properties:De.properties,type:De.type,sourceLayerIndex:Tt,index:at,geometry:Ft?Qt.geometry:js(De),patterns:{},sortKey:sr};ve.push(Tr)}ue&&ve.sort((De,Ze)=>De.sortKey-Ze.sortKey);for(let De of ve){let{geometry:Ze,index:at,sourceLayerIndex:Tt}=De;if(this.hasPattern){let Ft=rr("fill",this.layers,De,this.zoom,D);this.patternFeatures.push(Ft)}else this.addFeature(De,Ze,at,j,{});D.featureIndex.insert(S[at].feature,Ze,at,Tt,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}addFeatures(S,D,j){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,D,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Qc),this.indexBuffer=S.createIndexBuffer(this.indexArray),this.indexBuffer2=S.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(S,D,j,te,ue){for(let ve of Of(D,500)){let De=0;for(let sr of ve)De+=sr.length;let Ze=this.segments.prepareSegment(De,this.layoutVertexArray,this.indexArray),at=Ze.vertexLength,Tt=[],Ft=[];for(let sr of ve){if(sr.length===0)continue;sr!==ve[0]&&Ft.push(Tt.length/2);let Tr=this.segments2.prepareSegment(sr.length,this.layoutVertexArray,this.indexArray2),Pr=Tr.vertexLength;this.layoutVertexArray.emplaceBack(sr[0].x,sr[0].y),this.indexArray2.emplaceBack(Pr+sr.length-1,Pr),Tt.push(sr[0].x),Tt.push(sr[0].y);for(let $r=1;$r>3}if(te--,j===1||j===2)ue+=R.readSVarint(),ve+=R.readSVarint(),j===1&&(S&&De.push(S),S=[]),S.push(new yi(ue,ve));else{if(j!==7)throw new Error("unknown command "+j);S&&S.push(S[0].clone())}}return S&&De.push(S),De},Ri.prototype.bbox=function(){var R=this._pbf;R.pos=this._geometry;for(var S=R.readVarint()+R.pos,D=1,j=0,te=0,ue=0,ve=1/0,De=-1/0,Ze=1/0,at=-1/0;R.pos>3}if(j--,D===1||D===2)(te+=R.readSVarint())De&&(De=te),(ue+=R.readSVarint())at&&(at=ue);else if(D!==7)throw new Error("unknown command "+D)}return[ve,Ze,De,at]},Ri.prototype.toGeoJSON=function(R,S,D){var j,te,ue=this.extent*Math.pow(2,D),ve=this.extent*R,De=this.extent*S,Ze=this.loadGeometry(),at=Ri.types[this.type];function Tt(sr){for(var Tr=0;Tr>3;te=ve===1?j.readString():ve===2?j.readFloat():ve===3?j.readDouble():ve===4?j.readVarint64():ve===5?j.readVarint():ve===6?j.readSVarint():ve===7?j.readBoolean():null}return te}(D))}bn.prototype.feature=function(R){if(R<0||R>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[R];var S=this._pbf.readVarint()+this._pbf.pos;return new qn(this._pbf,S,this.extent,this._keys,this._values)};var Gn=rn;function da(R,S,D){if(R===3){var j=new Gn(D,D.readVarint()+D.pos);j.length&&(S[j.name]=j)}}ei.VectorTile=function(R,S){this.layers=R.readFields(da,{},S)},ei.VectorTileFeature=tn,ei.VectorTileLayer=rn;let No=ei.VectorTileFeature.types,Do=Math.pow(2,13);function ps(R,S,D,j,te,ue,ve,De){R.emplaceBack(S,D,2*Math.floor(j*Do)+ve,te*Do*2,ue*Do*2,Math.round(De))}class fo{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new Vl,this.centroidVertexArray=new yo,this.indexArray=new oe,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.features=[],this.hasPattern=Wt("fill-extrusion",this.layers,D);for(let{feature:te,id:ue,index:ve,sourceLayerIndex:De}of S){let Ze=this.layers[0]._featureFilter.needGeometry,at=xl(te,Ze);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),at,j))continue;let Tt={id:ue,sourceLayerIndex:De,index:ve,geometry:Ze?at.geometry:js(te),properties:te.properties,type:te.type,patterns:{}};this.hasPattern?this.features.push(rr("fill-extrusion",this.layers,Tt,this.zoom,D)):this.addFeature(Tt,Tt.geometry,ve,j,{}),D.featureIndex.insert(te,Tt.geometry,ve,De,this.index,!0)}}addFeatures(S,D,j){for(let te of this.features){let{geometry:ue}=te;this.addFeature(te,ue,te.index,D,j)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Gr),this.centroidVertexBuffer=S.createVertexBuffer(this.centroidVertexArray,cr.members,!0),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(S,D,j,te,ue){for(let ve of Of(D,500)){let De={x:0,y:0,vertexCount:0},Ze=0;for(let Tr of ve)Ze+=Tr.length;let at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let Tr of ve){if(Tr.length===0||tl(Tr))continue;let Pr=0;for(let $r=0;$r=1){let Di=Tr[$r-1];if(!as(ni,Di)){at.vertexLength+4>We.MAX_VERTEX_ARRAY_LENGTH&&(at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let pi=ni.sub(Di)._perp()._unit(),ki=Di.dist(ni);Pr+ki>32768&&(Pr=0),ps(this.layoutVertexArray,ni.x,ni.y,pi.x,pi.y,0,0,Pr),ps(this.layoutVertexArray,ni.x,ni.y,pi.x,pi.y,0,1,Pr),De.x+=2*ni.x,De.y+=2*ni.y,De.vertexCount+=2,Pr+=ki,ps(this.layoutVertexArray,Di.x,Di.y,pi.x,pi.y,0,0,Pr),ps(this.layoutVertexArray,Di.x,Di.y,pi.x,pi.y,0,1,Pr),De.x+=2*Di.x,De.y+=2*Di.y,De.vertexCount+=2;let Zi=at.vertexLength;this.indexArray.emplaceBack(Zi,Zi+2,Zi+1),this.indexArray.emplaceBack(Zi+1,Zi+2,Zi+3),at.vertexLength+=4,at.primitiveLength+=2}}}}if(at.vertexLength+Ze>We.MAX_VERTEX_ARRAY_LENGTH&&(at=this.segments.prepareSegment(Ze,this.layoutVertexArray,this.indexArray)),No[S.type]!=="Polygon")continue;let Tt=[],Ft=[],Qt=at.vertexLength;for(let Tr of ve)if(Tr.length!==0){Tr!==ve[0]&&Ft.push(Tt.length/2);for(let Pr=0;Prza)||R.y===S.y&&(R.y<0||R.y>za)}function tl(R){return R.every(S=>S.x<0)||R.every(S=>S.x>za)||R.every(S=>S.y<0)||R.every(S=>S.y>za)}let zu;mi("FillExtrusionBucket",fo,{omit:["layers","features"]});var Mv={get paint(){return zu=zu||new le({"fill-extrusion-opacity":new Da(ce["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new eo(ce["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Da(ce["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Da(ce["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Jc(ce["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new eo(ce["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new eo(ce["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Da(ce["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Ev extends B{constructor(S){super(S,Mv)}createBucket(S){return new fo(S)}queryRadius(){return to(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(S,D,j,te,ue,ve,De,Ze){let at=Rn(S,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),ve.angle,De),Tt=this.paint.get("fill-extrusion-height").evaluate(D,j),Ft=this.paint.get("fill-extrusion-base").evaluate(D,j),Qt=function(Tr,Pr,$r,ni){let Di=[];for(let pi of Tr){let ki=[pi.x,pi.y,0,1];Za(ki,ki,Pr),Di.push(new u(ki[0]/ki[3],ki[1]/ki[3]))}return Di}(at,Ze),sr=function(Tr,Pr,$r,ni){let Di=[],pi=[],ki=ni[8]*Pr,Zi=ni[9]*Pr,ta=ni[10]*Pr,Va=ni[11]*Pr,Io=ni[8]*$r,La=ni[9]*$r,Hn=ni[10]*$r,lo=ni[11]*$r;for(let $a of Tr){let Xa=[],Tn=[];for(let bo of $a){let Ya=bo.x,Uo=bo.y,wu=ni[0]*Ya+ni[4]*Uo+ni[12],hu=ni[1]*Ya+ni[5]*Uo+ni[13],uh=ni[2]*Ya+ni[6]*Uo+ni[14],$v=ni[3]*Ya+ni[7]*Uo+ni[15],td=uh+ta,ch=$v+Va,Ud=wu+Io,Vd=hu+La,Hd=uh+Hn,rf=$v+lo,fh=new u((wu+ki)/ch,(hu+Zi)/ch);fh.z=td/ch,Xa.push(fh);let Td=new u(Ud/rf,Vd/rf);Td.z=Hd/rf,Tn.push(Td)}Di.push(Xa),pi.push(Tn)}return[Di,pi]}(te,Ft,Tt,Ze);return function(Tr,Pr,$r){let ni=1/0;Er($r,Pr)&&(ni=Yv($r,Pr[0]));for(let Di=0;DiD.id),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(D=>{this.gradients[D.id]={}}),this.layoutVertexArray=new Zu,this.layoutVertexArray2=new cu,this.indexArray=new oe,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.hasPattern=Wt("line",this.layers,D);let te=this.layers[0].layout.get("line-sort-key"),ue=!te.isConstant(),ve=[];for(let{feature:De,id:Ze,index:at,sourceLayerIndex:Tt}of S){let Ft=this.layers[0]._featureFilter.needGeometry,Qt=xl(De,Ft);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),Qt,j))continue;let sr=ue?te.evaluate(Qt,{},j):void 0,Tr={id:Ze,properties:De.properties,type:De.type,sourceLayerIndex:Tt,index:at,geometry:Ft?Qt.geometry:js(De),patterns:{},sortKey:sr};ve.push(Tr)}ue&&ve.sort((De,Ze)=>De.sortKey-Ze.sortKey);for(let De of ve){let{geometry:Ze,index:at,sourceLayerIndex:Tt}=De;if(this.hasPattern){let Ft=rr("line",this.layers,De,this.zoom,D);this.patternFeatures.push(Ft)}else this.addFeature(De,Ze,at,j,{});D.featureIndex.insert(S[at].feature,Ze,at,Tt,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}addFeatures(S,D,j){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,D,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=S.createVertexBuffer(this.layoutVertexArray2,pp)),this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,vp),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(S){if(S.properties&&Object.prototype.hasOwnProperty.call(S.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(S.properties,"mapbox_clip_end"))return{start:+S.properties.mapbox_clip_start,end:+S.properties.mapbox_clip_end}}addFeature(S,D,j,te,ue){let ve=this.layers[0].layout,De=ve.get("line-join").evaluate(S,{}),Ze=ve.get("line-cap"),at=ve.get("line-miter-limit"),Tt=ve.get("line-round-limit");this.lineClips=this.lineFeatureClips(S);for(let Ft of D)this.addLine(Ft,S,De,Ze,at,Tt);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,j,ue,te)}addLine(S,D,j,te,ue,ve){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let ni=0;ni=2&&S[Ze-1].equals(S[Ze-2]);)Ze--;let at=0;for(;at0;if(Va&&ni>at){let lo=Qt.dist(sr);if(lo>2*Tt){let $a=Qt.sub(Qt.sub(sr)._mult(Tt/lo)._round());this.updateDistance(sr,$a),this.addCurrentVertex($a,Pr,0,0,Ft),sr=$a}}let La=sr&&Tr,Hn=La?j:De?"butt":te;if(La&&Hn==="round"&&(Ziue&&(Hn="bevel"),Hn==="bevel"&&(Zi>2&&(Hn="flipbevel"),Zi100)Di=$r.mult(-1);else{let lo=Zi*Pr.add($r).mag()/Pr.sub($r).mag();Di._perp()._mult(lo*(Io?-1:1))}this.addCurrentVertex(Qt,Di,0,0,Ft),this.addCurrentVertex(Qt,Di.mult(-1),0,0,Ft)}else if(Hn==="bevel"||Hn==="fakeround"){let lo=-Math.sqrt(Zi*Zi-1),$a=Io?lo:0,Xa=Io?0:lo;if(sr&&this.addCurrentVertex(Qt,Pr,$a,Xa,Ft),Hn==="fakeround"){let Tn=Math.round(180*ta/Math.PI/20);for(let bo=1;bo2*Tt){let $a=Qt.add(Tr.sub(Qt)._mult(Tt/lo)._round());this.updateDistance(Qt,$a),this.addCurrentVertex($a,$r,0,0,Ft),Qt=$a}}}}addCurrentVertex(S,D,j,te,ue,ve=!1){let De=D.y*te-D.x,Ze=-D.y-D.x*te;this.addHalfVertex(S,D.x+D.y*j,D.y-D.x*j,ve,!1,j,ue),this.addHalfVertex(S,De,Ze,ve,!0,-te,ue),this.distance>kv/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(S,D,j,te,ue,ve))}addHalfVertex({x:S,y:D},j,te,ue,ve,De,Ze){let at=.5*(this.lineClips?this.scaledDistance*(kv-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((S<<1)+(ue?1:0),(D<<1)+(ve?1:0),Math.round(63*j)+128,Math.round(63*te)+128,1+(De===0?0:De<0?-1:1)|(63&at)<<2,at>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let Tt=Ze.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Tt),Ze.primitiveLength++),ve?this.e2=Tt:this.e1=Tt}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(S,D){this.distance+=S.dist(D),this.updateScaledDistance()}}let Cv,ny;mi("LineBucket",Kv,{omit:["layers","patternFeatures"]});var fg={get paint(){return ny=ny||new le({"line-opacity":new eo(ce.paint_line["line-opacity"]),"line-color":new eo(ce.paint_line["line-color"]),"line-translate":new Da(ce.paint_line["line-translate"]),"line-translate-anchor":new Da(ce.paint_line["line-translate-anchor"]),"line-width":new eo(ce.paint_line["line-width"]),"line-gap-width":new eo(ce.paint_line["line-gap-width"]),"line-offset":new eo(ce.paint_line["line-offset"]),"line-blur":new eo(ce.paint_line["line-blur"]),"line-dasharray":new yc(ce.paint_line["line-dasharray"]),"line-pattern":new Jc(ce.paint_line["line-pattern"]),"line-gradient":new _c(ce.paint_line["line-gradient"])})},get layout(){return Cv=Cv||new le({"line-cap":new Da(ce.layout_line["line-cap"]),"line-join":new eo(ce.layout_line["line-join"]),"line-miter-limit":new Da(ce.layout_line["line-miter-limit"]),"line-round-limit":new Da(ce.layout_line["line-round-limit"]),"line-sort-key":new eo(ce.layout_line["line-sort-key"])})}};class Hf extends eo{possiblyEvaluate(S,D){return D=new Ko(Math.floor(D.zoom),{now:D.now,fadeDuration:D.fadeDuration,zoomHistory:D.zoomHistory,transition:D.transition}),super.possiblyEvaluate(S,D)}evaluate(S,D,j,te){return D=L({},D,{zoom:Math.floor(D.zoom)}),super.evaluate(S,D,j,te)}}let hg;class ay extends B{constructor(S){super(S,fg),this.gradientVersion=0,hg||(hg=new Hf(fg.paint.properties["line-width"].specification),hg.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(S){if(S==="line-gradient"){let D=this.gradientExpression();this.stepInterpolant=!!function(j){return j._styleExpression!==void 0}(D)&&D._styleExpression.expression instanceof Ji,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(S,D){super.recalculate(S,D),this.paint._values["line-floorwidth"]=hg.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,S)}createBucket(S){return new Kv(S)}queryRadius(S){let D=S,j=Rh(yn("line-width",this,D),yn("line-gap-width",this,D)),te=yn("line-offset",this,D);return j/2+Math.abs(te)+to(this.paint.get("line-translate"))}queryIntersectsFeature(S,D,j,te,ue,ve,De){let Ze=Rn(S,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),ve.angle,De),at=De/2*Rh(this.paint.get("line-width").evaluate(D,j),this.paint.get("line-gap-width").evaluate(D,j)),Tt=this.paint.get("line-offset").evaluate(D,j);return Tt&&(te=function(Ft,Qt){let sr=[];for(let Tr=0;Tr=3){for(let $r=0;$r0?S+2*R:R}let rm=qe([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),w1=qe([{name:"a_projected_pos",components:3,type:"Float32"}],4);qe([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let T1=qe([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);qe([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let oy=qe([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),im=qe([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function nm(R,S,D){return R.sections.forEach(j=>{j.text=function(te,ue,ve){let De=ue.layout.get("text-transform").evaluate(ve,{});return De==="uppercase"?te=te.toLocaleUpperCase():De==="lowercase"&&(te=te.toLocaleLowerCase()),vs.applyArabicShaping&&(te=vs.applyArabicShaping(te)),te}(j.text,S,D)}),R}qe([{name:"triangle",components:3,type:"Uint16"}]),qe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),qe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),qe([{type:"Float32",name:"offsetX"}]),qe([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),qe([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let Fu={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var kl=24,bd=Yl,sy=function(R,S,D,j,te){var ue,ve,De=8*te-j-1,Ze=(1<>1,Tt=-7,Ft=D?te-1:0,Qt=D?-1:1,sr=R[S+Ft];for(Ft+=Qt,ue=sr&(1<<-Tt)-1,sr>>=-Tt,Tt+=De;Tt>0;ue=256*ue+R[S+Ft],Ft+=Qt,Tt-=8);for(ve=ue&(1<<-Tt)-1,ue>>=-Tt,Tt+=j;Tt>0;ve=256*ve+R[S+Ft],Ft+=Qt,Tt-=8);if(ue===0)ue=1-at;else{if(ue===Ze)return ve?NaN:1/0*(sr?-1:1);ve+=Math.pow(2,j),ue-=at}return(sr?-1:1)*ve*Math.pow(2,ue-j)},A1=function(R,S,D,j,te,ue){var ve,De,Ze,at=8*ue-te-1,Tt=(1<>1,Qt=te===23?Math.pow(2,-24)-Math.pow(2,-77):0,sr=j?0:ue-1,Tr=j?1:-1,Pr=S<0||S===0&&1/S<0?1:0;for(S=Math.abs(S),isNaN(S)||S===1/0?(De=isNaN(S)?1:0,ve=Tt):(ve=Math.floor(Math.log(S)/Math.LN2),S*(Ze=Math.pow(2,-ve))<1&&(ve--,Ze*=2),(S+=ve+Ft>=1?Qt/Ze:Qt*Math.pow(2,1-Ft))*Ze>=2&&(ve++,Ze/=2),ve+Ft>=Tt?(De=0,ve=Tt):ve+Ft>=1?(De=(S*Ze-1)*Math.pow(2,te),ve+=Ft):(De=S*Math.pow(2,Ft-1)*Math.pow(2,te),ve=0));te>=8;R[D+sr]=255&De,sr+=Tr,De/=256,te-=8);for(ve=ve<0;R[D+sr]=255&ve,sr+=Tr,ve/=256,at-=8);R[D+sr-Tr]|=128*Pr};function Yl(R){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(R)?R:new Uint8Array(R||0),this.pos=0,this.type=0,this.length=this.buf.length}Yl.Varint=0,Yl.Fixed64=1,Yl.Bytes=2,Yl.Fixed32=5;var Bx=4294967296,am=1/Bx,Mw=typeof TextDecoder=="undefined"?null:new TextDecoder("utf-8");function Lv(R){return R.type===Yl.Bytes?R.readVarint()+R.pos:R.pos+1}function om(R,S,D){return D?4294967296*S+(R>>>0):4294967296*(S>>>0)+(R>>>0)}function Ew(R,S,D){var j=S<=16383?1:S<=2097151?2:S<=268435455?3:Math.floor(Math.log(S)/(7*Math.LN2));D.realloc(j);for(var te=D.pos-1;te>=R;te--)D.buf[te+j]=D.buf[te]}function Nx(R,S){for(var D=0;D>>8,R[D+2]=S>>>16,R[D+3]=S>>>24}function lC(R,S){return(R[S]|R[S+1]<<8|R[S+2]<<16)+(R[S+3]<<24)}Yl.prototype={destroy:function(){this.buf=null},readFields:function(R,S,D){for(D=D||this.length;this.pos>3,ue=this.pos;this.type=7&j,R(te,S,this),this.pos===ue&&this.skip(j)}return S},readMessage:function(R,S){return this.readFields(R,S,this.readVarint()+this.pos)},readFixed32:function(){var R=ly(this.buf,this.pos);return this.pos+=4,R},readSFixed32:function(){var R=lC(this.buf,this.pos);return this.pos+=4,R},readFixed64:function(){var R=ly(this.buf,this.pos)+ly(this.buf,this.pos+4)*Bx;return this.pos+=8,R},readSFixed64:function(){var R=ly(this.buf,this.pos)+lC(this.buf,this.pos+4)*Bx;return this.pos+=8,R},readFloat:function(){var R=sy(this.buf,this.pos,!0,23,4);return this.pos+=4,R},readDouble:function(){var R=sy(this.buf,this.pos,!0,52,8);return this.pos+=8,R},readVarint:function(R){var S,D,j=this.buf;return S=127&(D=j[this.pos++]),D<128?S:(S|=(127&(D=j[this.pos++]))<<7,D<128?S:(S|=(127&(D=j[this.pos++]))<<14,D<128?S:(S|=(127&(D=j[this.pos++]))<<21,D<128?S:function(te,ue,ve){var De,Ze,at=ve.buf;if(De=(112&(Ze=at[ve.pos++]))>>4,Ze<128||(De|=(127&(Ze=at[ve.pos++]))<<3,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<10,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<17,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<24,Ze<128)||(De|=(1&(Ze=at[ve.pos++]))<<31,Ze<128))return om(te,De,ue);throw new Error("Expected varint not more than 10 bytes")}(S|=(15&(D=j[this.pos]))<<28,R,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var R=this.readVarint();return R%2==1?(R+1)/-2:R/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var R=this.readVarint()+this.pos,S=this.pos;return this.pos=R,R-S>=12&&Mw?function(D,j,te){return Mw.decode(D.subarray(j,te))}(this.buf,S,R):function(D,j,te){for(var ue="",ve=j;ve239?4:Tt>223?3:Tt>191?2:1;if(ve+Qt>te)break;Qt===1?Tt<128&&(Ft=Tt):Qt===2?(192&(De=D[ve+1]))==128&&(Ft=(31&Tt)<<6|63&De)<=127&&(Ft=null):Qt===3?(Ze=D[ve+2],(192&(De=D[ve+1]))==128&&(192&Ze)==128&&((Ft=(15&Tt)<<12|(63&De)<<6|63&Ze)<=2047||Ft>=55296&&Ft<=57343)&&(Ft=null)):Qt===4&&(Ze=D[ve+2],at=D[ve+3],(192&(De=D[ve+1]))==128&&(192&Ze)==128&&(192&at)==128&&((Ft=(15&Tt)<<18|(63&De)<<12|(63&Ze)<<6|63&at)<=65535||Ft>=1114112)&&(Ft=null)),Ft===null?(Ft=65533,Qt=1):Ft>65535&&(Ft-=65536,ue+=String.fromCharCode(Ft>>>10&1023|55296),Ft=56320|1023&Ft),ue+=String.fromCharCode(Ft),ve+=Qt}return ue}(this.buf,S,R)},readBytes:function(){var R=this.readVarint()+this.pos,S=this.buf.subarray(this.pos,R);return this.pos=R,S},readPackedVarint:function(R,S){if(this.type!==Yl.Bytes)return R.push(this.readVarint(S));var D=Lv(this);for(R=R||[];this.pos127;);else if(S===Yl.Bytes)this.pos=this.readVarint()+this.pos;else if(S===Yl.Fixed32)this.pos+=4;else{if(S!==Yl.Fixed64)throw new Error("Unimplemented type: "+S);this.pos+=8}},writeTag:function(R,S){this.writeVarint(R<<3|S)},realloc:function(R){for(var S=this.length||16;S268435455||R<0?function(S,D){var j,te;if(S>=0?(j=S%4294967296|0,te=S/4294967296|0):(te=~(-S/4294967296),4294967295^(j=~(-S%4294967296))?j=j+1|0:(j=0,te=te+1|0)),S>=18446744073709552e3||S<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");D.realloc(10),function(ue,ve,De){De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,De.buf[De.pos]=127&(ue>>>=7)}(j,0,D),function(ue,ve){var De=(7&ue)<<4;ve.buf[ve.pos++]|=De|((ue>>>=3)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue)))))}(te,D)}(R,this):(this.realloc(4),this.buf[this.pos++]=127&R|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=R>>>7&127))))},writeSVarint:function(R){this.writeVarint(R<0?2*-R-1:2*R)},writeBoolean:function(R){this.writeVarint(!!R)},writeString:function(R){R=String(R),this.realloc(4*R.length),this.pos++;var S=this.pos;this.pos=function(j,te,ue){for(var ve,De,Ze=0;Ze55295&&ve<57344){if(!De){ve>56319||Ze+1===te.length?(j[ue++]=239,j[ue++]=191,j[ue++]=189):De=ve;continue}if(ve<56320){j[ue++]=239,j[ue++]=191,j[ue++]=189,De=ve;continue}ve=De-55296<<10|ve-56320|65536,De=null}else De&&(j[ue++]=239,j[ue++]=191,j[ue++]=189,De=null);ve<128?j[ue++]=ve:(ve<2048?j[ue++]=ve>>6|192:(ve<65536?j[ue++]=ve>>12|224:(j[ue++]=ve>>18|240,j[ue++]=ve>>12&63|128),j[ue++]=ve>>6&63|128),j[ue++]=63&ve|128)}return ue}(this.buf,R,this.pos);var D=this.pos-S;D>=128&&Ew(S,D,this),this.pos=S-1,this.writeVarint(D),this.pos+=D},writeFloat:function(R){this.realloc(4),A1(this.buf,R,this.pos,!0,23,4),this.pos+=4},writeDouble:function(R){this.realloc(8),A1(this.buf,R,this.pos,!0,52,8),this.pos+=8},writeBytes:function(R){var S=R.length;this.writeVarint(S),this.realloc(S);for(var D=0;D=128&&Ew(D,j,this),this.pos=D-1,this.writeVarint(j),this.pos+=j},writeMessage:function(R,S,D){this.writeTag(R,Yl.Bytes),this.writeRawMessage(S,D)},writePackedVarint:function(R,S){S.length&&this.writeMessage(R,Nx,S)},writePackedSVarint:function(R,S){S.length&&this.writeMessage(R,L9,S)},writePackedBoolean:function(R,S){S.length&&this.writeMessage(R,R9,S)},writePackedFloat:function(R,S){S.length&&this.writeMessage(R,P9,S)},writePackedDouble:function(R,S){S.length&&this.writeMessage(R,I9,S)},writePackedFixed32:function(R,S){S.length&&this.writeMessage(R,pQ,S)},writePackedSFixed32:function(R,S){S.length&&this.writeMessage(R,D9,S)},writePackedFixed64:function(R,S){S.length&&this.writeMessage(R,z9,S)},writePackedSFixed64:function(R,S){S.length&&this.writeMessage(R,F9,S)},writeBytesField:function(R,S){this.writeTag(R,Yl.Bytes),this.writeBytes(S)},writeFixed32Field:function(R,S){this.writeTag(R,Yl.Fixed32),this.writeFixed32(S)},writeSFixed32Field:function(R,S){this.writeTag(R,Yl.Fixed32),this.writeSFixed32(S)},writeFixed64Field:function(R,S){this.writeTag(R,Yl.Fixed64),this.writeFixed64(S)},writeSFixed64Field:function(R,S){this.writeTag(R,Yl.Fixed64),this.writeSFixed64(S)},writeVarintField:function(R,S){this.writeTag(R,Yl.Varint),this.writeVarint(S)},writeSVarintField:function(R,S){this.writeTag(R,Yl.Varint),this.writeSVarint(S)},writeStringField:function(R,S){this.writeTag(R,Yl.Bytes),this.writeString(S)},writeFloatField:function(R,S){this.writeTag(R,Yl.Fixed32),this.writeFloat(S)},writeDoubleField:function(R,S){this.writeTag(R,Yl.Fixed64),this.writeDouble(S)},writeBooleanField:function(R,S){this.writeVarintField(R,!!S)}};var tS=o(bd);let rS=3;function gQ(R,S,D){R===1&&D.readMessage(q9,S)}function q9(R,S,D){if(R===3){let{id:j,bitmap:te,width:ue,height:ve,left:De,top:Ze,advance:at}=D.readMessage(uC,{});S.push({id:j,bitmap:new Ao({width:ue+2*rS,height:ve+2*rS},te),metrics:{width:ue,height:ve,left:De,top:Ze,advance:at}})}}function uC(R,S,D){R===1?S.id=D.readVarint():R===2?S.bitmap=D.readBytes():R===3?S.width=D.readVarint():R===4?S.height=D.readVarint():R===5?S.left=D.readSVarint():R===6?S.top=D.readSVarint():R===7&&(S.advance=D.readVarint())}let cC=rS;function iS(R){let S=0,D=0;for(let ve of R)S+=ve.w*ve.h,D=Math.max(D,ve.w);R.sort((ve,De)=>De.h-ve.h);let j=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(S/.95)),D),h:1/0}],te=0,ue=0;for(let ve of R)for(let De=j.length-1;De>=0;De--){let Ze=j[De];if(!(ve.w>Ze.w||ve.h>Ze.h)){if(ve.x=Ze.x,ve.y=Ze.y,ue=Math.max(ue,ve.y+ve.h),te=Math.max(te,ve.x+ve.w),ve.w===Ze.w&&ve.h===Ze.h){let at=j.pop();De=0&&j>=S&&Lw[this.text.charCodeAt(j)];j--)D--;this.text=this.text.substring(S,D),this.sectionIndex=this.sectionIndex.slice(S,D)}substring(S,D){let j=new S1;return j.text=this.text.substring(S,D),j.sectionIndex=this.sectionIndex.slice(S,D),j.sections=this.sections,j}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((S,D)=>Math.max(S,this.sections[D].scale),0)}addTextSection(S,D){this.text+=S.text,this.sections.push(Vx.forText(S.scale,S.fontStack||D));let j=this.sections.length-1;for(let te=0;te=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Hx(R,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr){let Pr=S1.fromFeature(R,te),$r;Ft===i.ah.vertical&&Pr.verticalizePunctuation();let{processBidirectionalText:ni,processStyledBidirectionalText:Di}=vs;if(ni&&Pr.sections.length===1){$r=[];let Zi=ni(Pr.toString(),M1(Pr,at,ue,S,j,sr));for(let ta of Zi){let Va=new S1;Va.text=ta,Va.sections=Pr.sections;for(let Io=0;Io0&&ep>xf&&(xf=ep)}else{let oc=Va[Cl.fontStack],If=oc&&oc[Tu];if(If&&If.rect)I1=If.rect,qc=If.metrics;else{let ep=ta[Cl.fontStack],gg=ep&&ep[Tu];if(!gg)continue;qc=gg.metrics}Rv=(fh-Cl.scale)*kl}Qv?(Zi.verticalizable=!0,Dh.push({glyph:Tu,imageName:p0,x:Uo,y:wu+Rv,vertical:Qv,scale:Cl.scale,fontStack:Cl.fontStack,sectionIndex:qu,metrics:qc,rect:I1}),Uo+=Gp*Cl.scale+Tn):(Dh.push({glyph:Tu,imageName:p0,x:Uo,y:wu+Rv,vertical:Qv,scale:Cl.scale,fontStack:Cl.fontStack,sectionIndex:qu,metrics:qc,rect:I1}),Uo+=qc.advance*Cl.scale+Tn)}Dh.length!==0&&(hu=Math.max(Uo-Tn,hu),sm(Dh,0,Dh.length-1,$v,xf)),Uo=0;let Iv=Hn*fh+xf;rd.lineOffset=Math.max(xf,Td),wu+=Iv,uh=Math.max(Iv,uh),++td}var ch;let Ud=wu-lh,{horizontalAlign:Vd,verticalAlign:Hd}=Iw(lo);(function(rf,fh,Td,rd,Dh,xf,Iv,lv,Cl){let qu=(fh-Td)*Dh,Tu=0;Tu=xf!==Iv?-lv*rd-lh:(-rd*Cl+.5)*Iv;for(let Rv of rf)for(let qc of Rv.positionedGlyphs)qc.x+=qu,qc.y+=Tu})(Zi.positionedLines,$v,Vd,Hd,hu,uh,Hn,Ud,La.length),Zi.top+=-Hd*Ud,Zi.bottom=Zi.top+Ud,Zi.left+=-Vd*hu,Zi.right=Zi.left+hu}(ki,S,D,j,$r,ve,De,Ze,Ft,at,Qt,Tr),!function(Zi){for(let ta of Zi)if(ta.positionedGlyphs.length!==0)return!1;return!0}(pi)&&ki}let Lw={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},O9={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},B9={40:!0};function fC(R,S,D,j,te,ue){if(S.imageName){let ve=j[S.imageName];return ve?ve.displaySize[0]*S.scale*kl/ue+te:0}{let ve=D[S.fontStack],De=ve&&ve[R];return De?De.metrics.advance*S.scale+te:0}}function hC(R,S,D,j){let te=Math.pow(R-S,2);return j?R=0,at=0;for(let Ft=0;Ftat){let Tt=Math.ceil(ue/at);te*=Tt/ve,ve=Tt}return{x1:j,y1:te,x2:j+ue,y2:te+ve}}function pC(R,S,D,j,te,ue){let ve=R.image,De;if(ve.content){let $r=ve.content,ni=ve.pixelRatio||1;De=[$r[0]/ni,$r[1]/ni,ve.displaySize[0]-$r[2]/ni,ve.displaySize[1]-$r[3]/ni]}let Ze=S.left*ue,at=S.right*ue,Tt,Ft,Qt,sr;D==="width"||D==="both"?(sr=te[0]+Ze-j[3],Ft=te[0]+at+j[1]):(sr=te[0]+(Ze+at-ve.displaySize[0])/2,Ft=sr+ve.displaySize[0]);let Tr=S.top*ue,Pr=S.bottom*ue;return D==="height"||D==="both"?(Tt=te[1]+Tr-j[0],Qt=te[1]+Pr+j[2]):(Tt=te[1]+(Tr+Pr-ve.displaySize[1])/2,Qt=Tt+ve.displaySize[1]),{image:ve,top:Tt,right:Ft,bottom:Qt,left:sr,collisionPadding:De}}let jx=255,v0=128,lm=jx*v0;function gC(R,S){let{expression:D}=S;if(D.kind==="constant")return{kind:"constant",layoutSize:D.evaluate(new Ko(R+1))};if(D.kind==="source")return{kind:"source"};{let{zoomStops:j,interpolationType:te}=D,ue=0;for(;ueve.id),this.index=S.index,this.pixelRatio=S.pixelRatio,this.sourceLayerIndex=S.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Un([]),this.placementViewportMatrix=Un([]);let D=this.layers[0]._unevaluatedLayout._values;this.textSizeData=gC(this.zoom,D["text-size"]),this.iconSizeData=gC(this.zoom,D["icon-size"]);let j=this.layers[0].layout,te=j.get("symbol-sort-key"),ue=j.get("symbol-z-order");this.canOverlap=nS(j,"text-overlap","text-allow-overlap")!=="never"||nS(j,"icon-overlap","icon-allow-overlap")!=="never"||j.get("text-ignore-placement")||j.get("icon-ignore-placement"),this.sortFeaturesByKey=ue!=="viewport-y"&&!te.isConstant(),this.sortFeaturesByY=(ue==="viewport-y"||ue==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,j.get("symbol-placement")==="point"&&(this.writingModes=j.get("text-writing-mode").map(ve=>i.ah[ve])),this.stateDependentLayerIds=this.layers.filter(ve=>ve.isStateDependent()).map(ve=>ve.id),this.sourceID=S.sourceID}createArrays(){this.text=new sS(new _s(this.layers,this.zoom,S=>/^text/.test(S))),this.icon=new sS(new _s(this.layers,this.zoom,S=>/^icon/.test(S))),this.glyphOffsetArray=new To,this.lineVertexArray=new Wa,this.symbolInstances=new Ga,this.textAnchorOffsets=new Ro}calculateGlyphDependencies(S,D,j,te,ue){for(let ve=0;ve0)&&(ve.value.kind!=="constant"||ve.value.value.length>0),Tt=Ze.value.kind!=="constant"||!!Ze.value.value||Object.keys(Ze.parameters).length>0,Ft=ue.get("symbol-sort-key");if(this.features=[],!at&&!Tt)return;let Qt=D.iconDependencies,sr=D.glyphDependencies,Tr=D.availableImages,Pr=new Ko(this.zoom);for(let{feature:$r,id:ni,index:Di,sourceLayerIndex:pi}of S){let ki=te._featureFilter.needGeometry,Zi=xl($r,ki);if(!te._featureFilter.filter(Pr,Zi,j))continue;let ta,Va;if(ki||(Zi.geometry=js($r)),at){let La=te.getValueAndResolveTokens("text-field",Zi,j,Tr),Hn=Zr.factory(La),lo=this.hasRTLText=this.hasRTLText||oS(Hn);(!lo||vs.getRTLTextPluginStatus()==="unavailable"||lo&&vs.isParsed())&&(ta=nm(Hn,te,Zi))}if(Tt){let La=te.getValueAndResolveTokens("icon-image",Zi,j,Tr);Va=La instanceof Mi?La:Mi.fromString(La)}if(!ta&&!Va)continue;let Io=this.sortFeaturesByKey?Ft.evaluate(Zi,{},j):void 0;if(this.features.push({id:ni,text:ta,icon:Va,index:Di,sourceLayerIndex:pi,geometry:Zi.geometry,properties:$r.properties,type:U9[$r.type],sortKey:Io}),Va&&(Qt[Va.name]=!0),ta){let La=ve.evaluate(Zi,{},j).join(","),Hn=ue.get("text-rotation-alignment")!=="viewport"&&ue.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(i.ah.vertical)>=0;for(let lo of ta.sections)if(lo.image)Qt[lo.image.name]=!0;else{let $a=Ua(ta.toString()),Xa=lo.fontStack||La,Tn=sr[Xa]=sr[Xa]||{};this.calculateGlyphDependencies(lo.text,Tn,Hn,this.allowVerticalPlacement,$a)}}}ue.get("symbol-placement")==="line"&&(this.features=function($r){let ni={},Di={},pi=[],ki=0;function Zi(La){pi.push($r[La]),ki++}function ta(La,Hn,lo){let $a=Di[La];return delete Di[La],Di[Hn]=$a,pi[$a].geometry[0].pop(),pi[$a].geometry[0]=pi[$a].geometry[0].concat(lo[0]),$a}function Va(La,Hn,lo){let $a=ni[Hn];return delete ni[Hn],ni[La]=$a,pi[$a].geometry[0].shift(),pi[$a].geometry[0]=lo[0].concat(pi[$a].geometry[0]),$a}function Io(La,Hn,lo){let $a=lo?Hn[0][Hn[0].length-1]:Hn[0][0];return`${La}:${$a.x}:${$a.y}`}for(let La=0;La<$r.length;La++){let Hn=$r[La],lo=Hn.geometry,$a=Hn.text?Hn.text.toString():null;if(!$a){Zi(La);continue}let Xa=Io($a,lo),Tn=Io($a,lo,!0);if(Xa in Di&&Tn in ni&&Di[Xa]!==ni[Tn]){let bo=Va(Xa,Tn,lo),Ya=ta(Xa,Tn,pi[bo].geometry);delete ni[Xa],delete Di[Tn],Di[Io($a,pi[Ya].geometry,!0)]=Ya,pi[bo].geometry=null}else Xa in Di?ta(Xa,Tn,lo):Tn in ni?Va(Xa,Tn,lo):(Zi(La),ni[Xa]=ki-1,Di[Tn]=ki-1)}return pi.filter(La=>La.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort(($r,ni)=>$r.sortKey-ni.sortKey)}update(S,D,j){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(S,D,this.layers,j),this.icon.programConfigurations.updatePaintArrays(S,D,this.layers,j))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(S){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(S),this.iconCollisionBox.upload(S)),this.text.upload(S,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(S,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(S,D){let j=this.lineVertexArray.length;if(S.segment!==void 0){let te=S.dist(D[S.segment+1]),ue=S.dist(D[S.segment]),ve={};for(let De=S.segment+1;De=0;De--)ve[De]={x:D[De].x,y:D[De].y,tileUnitDistanceFromAnchor:ue},De>0&&(ue+=D[De-1].dist(D[De]));for(let De=0;De0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(S,D){let j=S.placedSymbolArray.get(D),te=j.vertexStartIndex+4*j.numGlyphs;for(let ue=j.vertexStartIndex;uete[De]-te[Ze]||ue[Ze]-ue[De]),ve}addToSortKeyRanges(S,D){let j=this.sortKeyRanges[this.sortKeyRanges.length-1];j&&j.sortKey===D?j.symbolInstanceEnd=S+1:this.sortKeyRanges.push({sortKey:D,symbolInstanceStart:S,symbolInstanceEnd:S+1})}sortFeatures(S){if(this.sortFeaturesByY&&this.sortedAngle!==S&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(S),this.sortedAngle=S,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let D of this.symbolInstanceIndexes){let j=this.symbolInstances.get(D);this.featureSortOrder.push(j.featureIndex),[j.rightJustifiedTextSymbolIndex,j.centerJustifiedTextSymbolIndex,j.leftJustifiedTextSymbolIndex].forEach((te,ue,ve)=>{te>=0&&ve.indexOf(te)===ue&&this.addIndicesForPlacedSymbol(this.text,te)}),j.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,j.verticalPlacedTextSymbolIndex),j.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,j.placedIconSymbolIndex),j.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,j.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let tf,Wx;mi("SymbolBucket",E1,{omit:["layers","collisionBoxArray","features","compareText"]}),E1.MAX_GLYPHS=65535,E1.addDynamicAttributes=aS;var Dw={get paint(){return Wx=Wx||new le({"icon-opacity":new eo(ce.paint_symbol["icon-opacity"]),"icon-color":new eo(ce.paint_symbol["icon-color"]),"icon-halo-color":new eo(ce.paint_symbol["icon-halo-color"]),"icon-halo-width":new eo(ce.paint_symbol["icon-halo-width"]),"icon-halo-blur":new eo(ce.paint_symbol["icon-halo-blur"]),"icon-translate":new Da(ce.paint_symbol["icon-translate"]),"icon-translate-anchor":new Da(ce.paint_symbol["icon-translate-anchor"]),"text-opacity":new eo(ce.paint_symbol["text-opacity"]),"text-color":new eo(ce.paint_symbol["text-color"],{runtimeType:Ht,getOverride:R=>R.textColor,hasOverride:R=>!!R.textColor}),"text-halo-color":new eo(ce.paint_symbol["text-halo-color"]),"text-halo-width":new eo(ce.paint_symbol["text-halo-width"]),"text-halo-blur":new eo(ce.paint_symbol["text-halo-blur"]),"text-translate":new Da(ce.paint_symbol["text-translate"]),"text-translate-anchor":new Da(ce.paint_symbol["text-translate-anchor"])})},get layout(){return tf=tf||new le({"symbol-placement":new Da(ce.layout_symbol["symbol-placement"]),"symbol-spacing":new Da(ce.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Da(ce.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new eo(ce.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Da(ce.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Da(ce.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Da(ce.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Da(ce.layout_symbol["icon-ignore-placement"]),"icon-optional":new Da(ce.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Da(ce.layout_symbol["icon-rotation-alignment"]),"icon-size":new eo(ce.layout_symbol["icon-size"]),"icon-text-fit":new Da(ce.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Da(ce.layout_symbol["icon-text-fit-padding"]),"icon-image":new eo(ce.layout_symbol["icon-image"]),"icon-rotate":new eo(ce.layout_symbol["icon-rotate"]),"icon-padding":new eo(ce.layout_symbol["icon-padding"]),"icon-keep-upright":new Da(ce.layout_symbol["icon-keep-upright"]),"icon-offset":new eo(ce.layout_symbol["icon-offset"]),"icon-anchor":new eo(ce.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Da(ce.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Da(ce.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Da(ce.layout_symbol["text-rotation-alignment"]),"text-field":new eo(ce.layout_symbol["text-field"]),"text-font":new eo(ce.layout_symbol["text-font"]),"text-size":new eo(ce.layout_symbol["text-size"]),"text-max-width":new eo(ce.layout_symbol["text-max-width"]),"text-line-height":new Da(ce.layout_symbol["text-line-height"]),"text-letter-spacing":new eo(ce.layout_symbol["text-letter-spacing"]),"text-justify":new eo(ce.layout_symbol["text-justify"]),"text-radial-offset":new eo(ce.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Da(ce.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new eo(ce.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new eo(ce.layout_symbol["text-anchor"]),"text-max-angle":new Da(ce.layout_symbol["text-max-angle"]),"text-writing-mode":new Da(ce.layout_symbol["text-writing-mode"]),"text-rotate":new eo(ce.layout_symbol["text-rotate"]),"text-padding":new Da(ce.layout_symbol["text-padding"]),"text-keep-upright":new Da(ce.layout_symbol["text-keep-upright"]),"text-transform":new eo(ce.layout_symbol["text-transform"]),"text-offset":new eo(ce.layout_symbol["text-offset"]),"text-allow-overlap":new Da(ce.layout_symbol["text-allow-overlap"]),"text-overlap":new Da(ce.layout_symbol["text-overlap"]),"text-ignore-placement":new Da(ce.layout_symbol["text-ignore-placement"]),"text-optional":new Da(ce.layout_symbol["text-optional"])})}};class Zx{constructor(S){if(S.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=S.property.overrides?S.property.overrides.runtimeType:Lt,this.defaultValue=S}evaluate(S){if(S.formattedSection){let D=this.defaultValue.property.overrides;if(D&&D.hasOverride(S.formattedSection))return D.getOverride(S.formattedSection)}return S.feature&&S.featureState?this.defaultValue.evaluate(S.feature,S.featureState):this.defaultValue.property.specification.default}eachChild(S){this.defaultValue.isConstant()||S(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}mi("FormatSectionOverride",Zx,{omit:["defaultValue"]});class uy extends B{constructor(S){super(S,Dw)}recalculate(S,D){if(super.recalculate(S,D),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let j=this.layout.get("text-writing-mode");if(j){let te=[];for(let ue of j)te.indexOf(ue)<0&&te.push(ue);this.layout._values["text-writing-mode"]=te}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(S,D,j,te){let ue=this.layout.get(S).evaluate(D,{},j,te),ve=this._unevaluatedLayout._values[S];return ve.isDataDriven()||Lc(ve.value)||!ue?ue:function(De,Ze){return Ze.replace(/{([^{}]+)}/g,(at,Tt)=>De&&Tt in De?String(De[Tt]):"")}(D.properties,ue)}createBucket(S){return new E1(S)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let S of Dw.paint.overridableProperties){if(!uy.hasPaintOverride(this.layout,S))continue;let D=this.paint.get(S),j=new Zx(D),te=new Pu(j,D.property.specification),ue=null;ue=D.value.kind==="constant"||D.value.kind==="source"?new Xc("source",te):new ic("composite",te,D.value.zoomStops),this.paint._values[S]=new Du(D.property,ue,D.parameters)}}_handleOverridablePaintPropertyUpdate(S,D,j){return!(!this.layout||D.isDataDriven()||j.isDataDriven())&&uy.hasPaintOverride(this.layout,S)}static hasPaintOverride(S,D){let j=S.get("text-field"),te=Dw.paint.properties[D],ue=!1,ve=De=>{for(let Ze of De)if(te.overrides&&te.overrides.hasOverride(Ze))return void(ue=!0)};if(j.value.kind==="constant"&&j.value.value instanceof Zr)ve(j.value.value.sections);else if(j.value.kind==="source"){let De=at=>{ue||(at instanceof jn&&Ki(at.value)===Br?ve(at.value.sections):at instanceof $l?ve(at.sections):at.eachChild(De))},Ze=j.value;Ze._styleExpression&&De(Ze._styleExpression.expression)}return ue}}let mC;var Xx={get paint(){return mC=mC||new le({"background-color":new Da(ce.paint_background["background-color"]),"background-pattern":new yc(ce.paint_background["background-pattern"]),"background-opacity":new Da(ce.paint_background["background-opacity"])})}};class H9 extends B{constructor(S){super(S,Xx)}}let lS;var yC={get paint(){return lS=lS||new le({"raster-opacity":new Da(ce.paint_raster["raster-opacity"]),"raster-hue-rotate":new Da(ce.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Da(ce.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Da(ce.paint_raster["raster-brightness-max"]),"raster-saturation":new Da(ce.paint_raster["raster-saturation"]),"raster-contrast":new Da(ce.paint_raster["raster-contrast"]),"raster-resampling":new Da(ce.paint_raster["raster-resampling"]),"raster-fade-duration":new Da(ce.paint_raster["raster-fade-duration"])})}};class Yx extends B{constructor(S){super(S,yC)}}class uS extends B{constructor(S){super(S,{}),this.onAdd=D=>{this.implementation.onAdd&&this.implementation.onAdd(D,D.painter.context.gl)},this.onRemove=D=>{this.implementation.onRemove&&this.implementation.onRemove(D,D.painter.context.gl)},this.implementation=S}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class cS{constructor(S){this._methodToThrottle=S,this._triggered=!1,typeof MessageChannel!="undefined"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let fS=63710088e-1;class dg{constructor(S,D){if(isNaN(S)||isNaN(D))throw new Error(`Invalid LngLat object: (${S}, ${D})`);if(this.lng=+S,this.lat=+D,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new dg(A(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(S){let D=Math.PI/180,j=this.lat*D,te=S.lat*D,ue=Math.sin(j)*Math.sin(te)+Math.cos(j)*Math.cos(te)*Math.cos((S.lng-this.lng)*D);return fS*Math.acos(Math.min(ue,1))}static convert(S){if(S instanceof dg)return S;if(Array.isArray(S)&&(S.length===2||S.length===3))return new dg(Number(S[0]),Number(S[1]));if(!Array.isArray(S)&&typeof S=="object"&&S!==null)return new dg(Number("lng"in S?S.lng:S.lon),Number(S.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let k1=2*Math.PI*fS;function _C(R){return k1*Math.cos(R*Math.PI/180)}function zw(R){return(180+R)/360}function xC(R){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R*Math.PI/360)))/360}function Fw(R,S){return R/_C(S)}function Kx(R){return 360/Math.PI*Math.atan(Math.exp((180-360*R)*Math.PI/180))-90}class Jx{constructor(S,D,j=0){this.x=+S,this.y=+D,this.z=+j}static fromLngLat(S,D=0){let j=dg.convert(S);return new Jx(zw(j.lng),xC(j.lat),Fw(D,j.lat))}toLngLat(){return new dg(360*this.x-180,Kx(this.y))}toAltitude(){return this.z*_C(Kx(this.y))}meterInMercatorCoordinateUnits(){return 1/k1*(S=Kx(this.y),1/Math.cos(S*Math.PI/180));var S}}function gp(R,S,D){var j=2*Math.PI*6378137/256/Math.pow(2,D);return[R*j-2*Math.PI*6378137/2,S*j-2*Math.PI*6378137/2]}class hS{constructor(S,D,j){if(!function(te,ue,ve){return!(te<0||te>25||ve<0||ve>=Math.pow(2,te)||ue<0||ue>=Math.pow(2,te))}(S,D,j))throw new Error(`x=${D}, y=${j}, z=${S} outside of bounds. 0<=x<${Math.pow(2,S)}, 0<=y<${Math.pow(2,S)} 0<=z<=25 `);this.z=S,this.x=D,this.y=j,this.key=$x(0,S,S,D,j)}equals(S){return this.z===S.z&&this.x===S.x&&this.y===S.y}url(S,D,j){let te=(ve=this.y,De=this.z,Ze=gp(256*(ue=this.x),256*(ve=Math.pow(2,De)-ve-1),De),at=gp(256*(ue+1),256*(ve+1),De),Ze[0]+","+Ze[1]+","+at[0]+","+at[1]);var ue,ve,De,Ze,at;let Tt=function(Ft,Qt,sr){let Tr,Pr="";for(let $r=Ft;$r>0;$r--)Tr=1<<$r-1,Pr+=(Qt&Tr?1:0)+(sr&Tr?2:0);return Pr}(this.z,this.x,this.y);return S[(this.x+this.y)%S.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(j==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,D>1?"@2x":"").replace(/{quadkey}/g,Tt).replace(/{bbox-epsg-3857}/g,te)}isChildOf(S){let D=this.z-S.z;return D>0&&S.x===this.x>>D&&S.y===this.y>>D}getTilePoint(S){let D=Math.pow(2,this.z);return new u((S.x*D-this.x)*za,(S.y*D-this.y)*za)}toString(){return`${this.z}/${this.x}/${this.y}`}}class bC{constructor(S,D){this.wrap=S,this.canonical=D,this.key=$x(S,D.z,D.z,D.x,D.y)}}class Jv{constructor(S,D,j,te,ue){if(S= z; overscaledZ = ${S}; z = ${j}`);this.overscaledZ=S,this.wrap=D,this.canonical=new hS(j,+te,+ue),this.key=$x(D,S,j,te,ue)}clone(){return new Jv(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(S){return this.overscaledZ===S.overscaledZ&&this.wrap===S.wrap&&this.canonical.equals(S.canonical)}scaledTo(S){if(S>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${S}; overscaledZ = ${this.overscaledZ}`);let D=this.canonical.z-S;return S>this.canonical.z?new Jv(S,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Jv(S,this.wrap,S,this.canonical.x>>D,this.canonical.y>>D)}calculateScaledKey(S,D){if(S>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${S}; overscaledZ = ${this.overscaledZ}`);let j=this.canonical.z-S;return S>this.canonical.z?$x(this.wrap*+D,S,this.canonical.z,this.canonical.x,this.canonical.y):$x(this.wrap*+D,S,S,this.canonical.x>>j,this.canonical.y>>j)}isChildOf(S){if(S.wrap!==this.wrap)return!1;let D=this.canonical.z-S.canonical.z;return S.overscaledZ===0||S.overscaledZ>D&&S.canonical.y===this.canonical.y>>D}children(S){if(this.overscaledZ>=S)return[new Jv(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let D=this.canonical.z+1,j=2*this.canonical.x,te=2*this.canonical.y;return[new Jv(D,this.wrap,D,j,te),new Jv(D,this.wrap,D,j+1,te),new Jv(D,this.wrap,D,j,te+1),new Jv(D,this.wrap,D,j+1,te+1)]}isLessThan(S){return this.wrapS.wrap)&&(this.overscaledZS.overscaledZ)&&(this.canonical.xS.canonical.x)&&this.canonical.ythis.max&&(this.max=Ft),Ft=this.dim+1||D<-1||D>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(D+1)*this.stride+(S+1)}unpack(S,D,j){return S*this.redFactor+D*this.greenFactor+j*this.blueFactor-this.baseShift}getPixels(){return new Jn({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(S,D,j){if(this.dim!==S.dim)throw new Error("dem dimension mismatch");let te=D*this.dim,ue=D*this.dim+this.dim,ve=j*this.dim,De=j*this.dim+this.dim;switch(D){case-1:te=ue-1;break;case 1:ue=te+1}switch(j){case-1:ve=De-1;break;case 1:De=ve+1}let Ze=-D*this.dim,at=-j*this.dim;for(let Tt=ve;Tt=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${S} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[S]}}class dS{constructor(S,D,j,te,ue){this.type="Feature",this._vectorTileFeature=S,S._z=D,S._x=j,S._y=te,this.properties=S.properties,this.id=ue}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(S){this._geometry=S}toJSON(){let S={geometry:this.geometry};for(let D in this)D!=="_geometry"&&D!=="_vectorTileFeature"&&(S[D]=this[D]);return S}}class cy{constructor(S,D){this.tileID=S,this.x=S.canonical.x,this.y=S.canonical.y,this.z=S.canonical.z,this.grid=new qi(za,16,0),this.grid3D=new qi(za,16,0),this.featureIndexArray=new As,this.promoteId=D}insert(S,D,j,te,ue,ve){let De=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(j,te,ue);let Ze=ve?this.grid3D:this.grid;for(let at=0;at=0&&Ft[3]>=0&&Ze.insert(De,Ft[0],Ft[1],Ft[2],Ft[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new ei.VectorTile(new tS(this.rawTileData)).layers,this.sourceLayerCoder=new TC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(S,D,j,te){this.loadVTLayers();let ue=S.params||{},ve=za/S.tileSize/S.scale,De=Pc(ue.filter),Ze=S.queryGeometry,at=S.queryPadding*ve,Tt=SC(Ze),Ft=this.grid.query(Tt.minX-at,Tt.minY-at,Tt.maxX+at,Tt.maxY+at),Qt=SC(S.cameraQueryGeometry),sr=this.grid3D.query(Qt.minX-at,Qt.minY-at,Qt.maxX+at,Qt.maxY+at,($r,ni,Di,pi)=>function(ki,Zi,ta,Va,Io){for(let Hn of ki)if(Zi<=Hn.x&&ta<=Hn.y&&Va>=Hn.x&&Io>=Hn.y)return!0;let La=[new u(Zi,ta),new u(Zi,Io),new u(Va,Io),new u(Va,ta)];if(ki.length>2){for(let Hn of La)if(On(ki,Hn))return!0}for(let Hn=0;Hn(pi||(pi=js(ki)),Zi.queryIntersectsFeature(Ze,ki,ta,pi,this.z,S.transform,ve,S.pixelPosMatrix)))}return Tr}loadMatchingFeature(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft){let Qt=this.bucketLayerIDs[D];if(ve&&!function($r,ni){for(let Di=0;Di<$r.length;Di++)if(ni.indexOf($r[Di])>=0)return!0;return!1}(ve,Qt))return;let sr=this.sourceLayerCoder.decode(j),Tr=this.vtLayers[sr].feature(te);if(ue.needGeometry){let $r=xl(Tr,!0);if(!ue.filter(new Ko(this.tileID.overscaledZ),$r,this.tileID.canonical))return}else if(!ue.filter(new Ko(this.tileID.overscaledZ),Tr))return;let Pr=this.getId(Tr,sr);for(let $r=0;$r{let De=S instanceof Dc?S.get(ve):null;return De&&De.evaluate?De.evaluate(D,j,te):De})}function SC(R){let S=1/0,D=1/0,j=-1/0,te=-1/0;for(let ue of R)S=Math.min(S,ue.x),D=Math.min(D,ue.y),j=Math.max(j,ue.x),te=Math.max(te,ue.y);return{minX:S,minY:D,maxX:j,maxY:te}}function G9(R,S){return S-R}function MC(R,S,D,j,te){let ue=[];for(let ve=0;ve=j&&Ft.x>=j||(Tt.x>=j?Tt=new u(j,Tt.y+(j-Tt.x)/(Ft.x-Tt.x)*(Ft.y-Tt.y))._round():Ft.x>=j&&(Ft=new u(j,Tt.y+(j-Tt.x)/(Ft.x-Tt.x)*(Ft.y-Tt.y))._round()),Tt.y>=te&&Ft.y>=te||(Tt.y>=te?Tt=new u(Tt.x+(te-Tt.y)/(Ft.y-Tt.y)*(Ft.x-Tt.x),te)._round():Ft.y>=te&&(Ft=new u(Tt.x+(te-Tt.y)/(Ft.y-Tt.y)*(Ft.x-Tt.x),te)._round()),Ze&&Tt.equals(Ze[Ze.length-1])||(Ze=[Tt],ue.push(Ze)),Ze.push(Ft)))))}}return ue}mi("FeatureIndex",cy,{omit:["rawTileData","sourceLayerCoder"]});class vg extends u{constructor(S,D,j,te){super(S,D),this.angle=j,te!==void 0&&(this.segment=te)}clone(){return new vg(this.x,this.y,this.angle,this.segment)}}function vS(R,S,D,j,te){if(S.segment===void 0||D===0)return!0;let ue=S,ve=S.segment+1,De=0;for(;De>-D/2;){if(ve--,ve<0)return!1;De-=R[ve].dist(ue),ue=R[ve]}De+=R[ve].dist(R[ve+1]),ve++;let Ze=[],at=0;for(;Dej;)at-=Ze.shift().angleDelta;if(at>te)return!1;ve++,De+=Tt.dist(Ft)}return!0}function EC(R){let S=0;for(let D=0;Dat){let Tr=(at-Ze)/sr,Pr=Mo.number(Ft.x,Qt.x,Tr),$r=Mo.number(Ft.y,Qt.y,Tr),ni=new vg(Pr,$r,Qt.angleTo(Ft),Tt);return ni._round(),!ve||vS(R,ni,De,ve,S)?ni:void 0}Ze+=sr}}function W9(R,S,D,j,te,ue,ve,De,Ze){let at=kC(j,ue,ve),Tt=CC(j,te),Ft=Tt*ve,Qt=R[0].x===0||R[0].x===Ze||R[0].y===0||R[0].y===Ze;return S-Ft=0&&ki=0&&Zi=0&&Qt+at<=Tt){let ta=new vg(ki,Zi,Di,Tr);ta._round(),j&&!vS(R,ta,ue,j,te)||sr.push(ta)}}Ft+=ni}return De||sr.length||ve||(sr=LC(R,Ft/2,D,j,te,ue,ve,!0,Ze)),sr}mi("Anchor",vg);let C1=wd;function PC(R,S,D,j){let te=[],ue=R.image,ve=ue.pixelRatio,De=ue.paddedRect.w-2*C1,Ze=ue.paddedRect.h-2*C1,at={x1:R.left,y1:R.top,x2:R.right,y2:R.bottom},Tt=ue.stretchX||[[0,De]],Ft=ue.stretchY||[[0,Ze]],Qt=(Tn,bo)=>Tn+bo[1]-bo[0],sr=Tt.reduce(Qt,0),Tr=Ft.reduce(Qt,0),Pr=De-sr,$r=Ze-Tr,ni=0,Di=sr,pi=0,ki=Tr,Zi=0,ta=Pr,Va=0,Io=$r;if(ue.content&&j){let Tn=ue.content,bo=Tn[2]-Tn[0],Ya=Tn[3]-Tn[1];(ue.textFitWidth||ue.textFitHeight)&&(at=vC(R)),ni=pg(Tt,0,Tn[0]),pi=pg(Ft,0,Tn[1]),Di=pg(Tt,Tn[0],Tn[2]),ki=pg(Ft,Tn[1],Tn[3]),Zi=Tn[0]-ni,Va=Tn[1]-pi,ta=bo-Di,Io=Ya-ki}let La=at.x1,Hn=at.y1,lo=at.x2-La,$a=at.y2-Hn,Xa=(Tn,bo,Ya,Uo)=>{let wu=qw(Tn.stretch-ni,Di,lo,La),hu=L1(Tn.fixed-Zi,ta,Tn.stretch,sr),uh=qw(bo.stretch-pi,ki,$a,Hn),$v=L1(bo.fixed-Va,Io,bo.stretch,Tr),td=qw(Ya.stretch-ni,Di,lo,La),ch=L1(Ya.fixed-Zi,ta,Ya.stretch,sr),Ud=qw(Uo.stretch-pi,ki,$a,Hn),Vd=L1(Uo.fixed-Va,Io,Uo.stretch,Tr),Hd=new u(wu,uh),rf=new u(td,uh),fh=new u(td,Ud),Td=new u(wu,Ud),rd=new u(hu/ve,$v/ve),Dh=new u(ch/ve,Vd/ve),xf=S*Math.PI/180;if(xf){let Cl=Math.sin(xf),qu=Math.cos(xf),Tu=[qu,-Cl,Cl,qu];Hd._matMult(Tu),rf._matMult(Tu),Td._matMult(Tu),fh._matMult(Tu)}let Iv=Tn.stretch+Tn.fixed,lv=bo.stretch+bo.fixed;return{tl:Hd,tr:rf,bl:Td,br:fh,tex:{x:ue.paddedRect.x+C1+Iv,y:ue.paddedRect.y+C1+lv,w:Ya.stretch+Ya.fixed-Iv,h:Uo.stretch+Uo.fixed-lv},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:rd,pixelOffsetBR:Dh,minFontScaleX:ta/ve/lo,minFontScaleY:Io/ve/$a,isSDF:D}};if(j&&(ue.stretchX||ue.stretchY)){let Tn=IC(Tt,Pr,sr),bo=IC(Ft,$r,Tr);for(let Ya=0;Ya0&&(Pr=Math.max(10,Pr),this.circleDiameter=Pr)}else{let Qt=!((Ft=ve.image)===null||Ft===void 0)&&Ft.content&&(ve.image.textFitWidth||ve.image.textFitHeight)?vC(ve):{x1:ve.left,y1:ve.top,x2:ve.right,y2:ve.bottom};Qt.y1=Qt.y1*De-Ze[0],Qt.y2=Qt.y2*De+Ze[2],Qt.x1=Qt.x1*De-Ze[3],Qt.x2=Qt.x2*De+Ze[1];let sr=ve.collisionPadding;if(sr&&(Qt.x1-=sr[0]*De,Qt.y1-=sr[1]*De,Qt.x2+=sr[2]*De,Qt.y2+=sr[3]*De),Tt){let Tr=new u(Qt.x1,Qt.y1),Pr=new u(Qt.x2,Qt.y1),$r=new u(Qt.x1,Qt.y2),ni=new u(Qt.x2,Qt.y2),Di=Tt*Math.PI/180;Tr._rotate(Di),Pr._rotate(Di),$r._rotate(Di),ni._rotate(Di),Qt.x1=Math.min(Tr.x,Pr.x,$r.x,ni.x),Qt.x2=Math.max(Tr.x,Pr.x,$r.x,ni.x),Qt.y1=Math.min(Tr.y,Pr.y,$r.y,ni.y),Qt.y2=Math.max(Tr.y,Pr.y,$r.y,ni.y)}S.emplaceBack(D.x,D.y,Qt.x1,Qt.y1,Qt.x2,Qt.y2,j,te,ue)}this.boxEndIndex=S.length}}class Hp{constructor(S=[],D=(j,te)=>jte?1:0){if(this.data=S,this.length=this.data.length,this.compare=D,this.length>0)for(let j=(this.length>>1)-1;j>=0;j--)this._down(j)}push(S){this.data.push(S),this._up(this.length++)}pop(){if(this.length===0)return;let S=this.data[0],D=this.data.pop();return--this.length>0&&(this.data[0]=D,this._down(0)),S}peek(){return this.data[0]}_up(S){let{data:D,compare:j}=this,te=D[S];for(;S>0;){let ue=S-1>>1,ve=D[ue];if(j(te,ve)>=0)break;D[S]=ve,S=ue}D[S]=te}_down(S){let{data:D,compare:j}=this,te=this.length>>1,ue=D[S];for(;S=0)break;D[S]=D[ve],S=ve}D[S]=ue}}function Z9(R,S=1,D=!1){let j=1/0,te=1/0,ue=-1/0,ve=-1/0,De=R[0];for(let sr=0;srue)&&(ue=Tr.x),(!sr||Tr.y>ve)&&(ve=Tr.y)}let Ze=Math.min(ue-j,ve-te),at=Ze/2,Tt=new Hp([],X9);if(Ze===0)return new u(j,te);for(let sr=j;srFt.d||!Ft.d)&&(Ft=sr,D&&console.log("found best %d after %d probes",Math.round(1e4*sr.d)/1e4,Qt)),sr.max-Ft.d<=S||(at=sr.h/2,Tt.push(new P1(sr.p.x-at,sr.p.y-at,at,R)),Tt.push(new P1(sr.p.x+at,sr.p.y-at,at,R)),Tt.push(new P1(sr.p.x-at,sr.p.y+at,at,R)),Tt.push(new P1(sr.p.x+at,sr.p.y+at,at,R)),Qt+=4)}return D&&(console.log(`num probes: ${Qt}`),console.log(`best distance: ${Ft.d}`)),Ft.p}function X9(R,S){return S.max-R.max}function P1(R,S,D,j){this.p=new u(R,S),this.h=D,this.d=function(te,ue){let ve=!1,De=1/0;for(let Ze=0;Zete.y!=Tr.y>te.y&&te.x<(Tr.x-sr.x)*(te.y-sr.y)/(Tr.y-sr.y)+sr.x&&(ve=!ve),De=Math.min(De,Bi(te,sr,Tr))}}return(ve?1:-1)*Math.sqrt(De)}(this.p,j),this.max=this.d+this.h*Math.SQRT2}var ed;i.aq=void 0,(ed=i.aq||(i.aq={}))[ed.center=1]="center",ed[ed.left=2]="left",ed[ed.right=3]="right",ed[ed.top=4]="top",ed[ed.bottom=5]="bottom",ed[ed["top-left"]=6]="top-left",ed[ed["top-right"]=7]="top-right",ed[ed["bottom-left"]=8]="bottom-left",ed[ed["bottom-right"]=9]="bottom-right";let fm=7,fy=Number.POSITIVE_INFINITY;function pS(R,S){return S[1]!==fy?function(D,j,te){let ue=0,ve=0;switch(j=Math.abs(j),te=Math.abs(te),D){case"top-right":case"top-left":case"top":ve=te-fm;break;case"bottom-right":case"bottom-left":case"bottom":ve=-te+fm}switch(D){case"top-right":case"bottom-right":case"right":ue=-j;break;case"top-left":case"bottom-left":case"left":ue=j}return[ue,ve]}(R,S[0],S[1]):function(D,j){let te=0,ue=0;j<0&&(j=0);let ve=j/Math.SQRT2;switch(D){case"top-right":case"top-left":ue=ve-fm;break;case"bottom-right":case"bottom-left":ue=-ve+fm;break;case"bottom":ue=-j+fm;break;case"top":ue=j-fm}switch(D){case"top-right":case"bottom-right":te=-ve;break;case"top-left":case"bottom-left":te=ve;break;case"left":te=j;break;case"right":te=-j}return[te,ue]}(R,S[0])}function RC(R,S,D){var j;let te=R.layout,ue=(j=te.get("text-variable-anchor-offset"))===null||j===void 0?void 0:j.evaluate(S,{},D);if(ue){let De=ue.values,Ze=[];for(let at=0;atQt*kl);Tt.startsWith("top")?Ft[1]-=fm:Tt.startsWith("bottom")&&(Ft[1]+=fm),Ze[at+1]=Ft}return new Si(Ze)}let ve=te.get("text-variable-anchor");if(ve){let De;De=R._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[te.get("text-radial-offset").evaluate(S,{},D)*kl,fy]:te.get("text-offset").evaluate(S,{},D).map(at=>at*kl);let Ze=[];for(let at of ve)Ze.push(at,pS(at,De));return new Si(Ze)}return null}function gS(R){switch(R){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function Y9(R,S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=ue.textMaxSize.evaluate(S,{});Ft===void 0&&(Ft=ve);let Qt=R.layers[0].layout,sr=Qt.get("icon-offset").evaluate(S,{},Tt),Tr=zC(D.horizontal),Pr=ve/24,$r=R.tilePixelRatio*Pr,ni=R.tilePixelRatio*Ft/24,Di=R.tilePixelRatio*De,pi=R.tilePixelRatio*Qt.get("symbol-spacing"),ki=Qt.get("text-padding")*R.tilePixelRatio,Zi=function(Tn,bo,Ya,Uo=1){let wu=Tn.get("icon-padding").evaluate(bo,{},Ya),hu=wu&&wu.values;return[hu[0]*Uo,hu[1]*Uo,hu[2]*Uo,hu[3]*Uo]}(Qt,S,Tt,R.tilePixelRatio),ta=Qt.get("text-max-angle")/180*Math.PI,Va=Qt.get("text-rotation-alignment")!=="viewport"&&Qt.get("symbol-placement")!=="point",Io=Qt.get("icon-rotation-alignment")==="map"&&Qt.get("symbol-placement")!=="point",La=Qt.get("symbol-placement"),Hn=pi/2,lo=Qt.get("icon-text-fit"),$a;j&&lo!=="none"&&(R.allowVerticalPlacement&&D.vertical&&($a=pC(j,D.vertical,lo,Qt.get("icon-text-fit-padding"),sr,Pr)),Tr&&(j=pC(j,Tr,lo,Qt.get("icon-text-fit-padding"),sr,Pr)));let Xa=(Tn,bo)=>{bo.x<0||bo.x>=za||bo.y<0||bo.y>=za||function(Ya,Uo,wu,hu,uh,$v,td,ch,Ud,Vd,Hd,rf,fh,Td,rd,Dh,xf,Iv,lv,Cl,qu,Tu,Rv,qc,I1){let p0=Ya.addToLineVertexArray(Uo,wu),Gp,Qv,oc,If,ep=0,gg=0,uv=0,R1=0,bS=-1,Uw=-1,g0={},hy=ui("");if(Ya.allowVerticalPlacement&&hu.vertical){let Ad=ch.layout.get("text-rotate").evaluate(qu,{},qc)+90;oc=new cm(Ud,Uo,Vd,Hd,rf,hu.vertical,fh,Td,rd,Ad),td&&(If=new cm(Ud,Uo,Vd,Hd,rf,td,xf,Iv,rd,Ad))}if(uh){let Ad=ch.layout.get("icon-rotate").evaluate(qu,{}),tp=ch.layout.get("icon-text-fit")!=="none",hm=PC(uh,Ad,Rv,tp),Gd=td?PC(td,Ad,Rv,tp):void 0;Qv=new cm(Ud,Uo,Vd,Hd,rf,uh,xf,Iv,!1,Ad),ep=4*hm.length;let Sd=Ya.iconSizeData,yp=null;Sd.kind==="source"?(yp=[v0*ch.layout.get("icon-size").evaluate(qu,{})],yp[0]>lm&&T(`${Ya.layerIds[0]}: Value for "icon-size" is >= ${jx}. Reduce your "icon-size".`)):Sd.kind==="composite"&&(yp=[v0*Tu.compositeIconSizes[0].evaluate(qu,{},qc),v0*Tu.compositeIconSizes[1].evaluate(qu,{},qc)],(yp[0]>lm||yp[1]>lm)&&T(`${Ya.layerIds[0]}: Value for "icon-size" is >= ${jx}. Reduce your "icon-size".`)),Ya.addSymbols(Ya.icon,hm,yp,Cl,lv,qu,i.ah.none,Uo,p0.lineStartIndex,p0.lineLength,-1,qc),bS=Ya.icon.placedSymbolArray.length-1,Gd&&(gg=4*Gd.length,Ya.addSymbols(Ya.icon,Gd,yp,Cl,lv,qu,i.ah.vertical,Uo,p0.lineStartIndex,p0.lineLength,-1,qc),Uw=Ya.icon.placedSymbolArray.length-1)}let zh=Object.keys(hu.horizontal);for(let Ad of zh){let tp=hu.horizontal[Ad];if(!Gp){hy=ui(tp.text);let Gd=ch.layout.get("text-rotate").evaluate(qu,{},qc);Gp=new cm(Ud,Uo,Vd,Hd,rf,tp,fh,Td,rd,Gd)}let hm=tp.positionedLines.length===1;if(uv+=DC(Ya,Uo,tp,$v,ch,rd,qu,Dh,p0,hu.vertical?i.ah.horizontal:i.ah.horizontalOnly,hm?zh:[Ad],g0,bS,Tu,qc),hm)break}hu.vertical&&(R1+=DC(Ya,Uo,hu.vertical,$v,ch,rd,qu,Dh,p0,i.ah.vertical,["vertical"],g0,Uw,Tu,qc));let $9=Gp?Gp.boxStartIndex:Ya.collisionBoxArray.length,Vw=Gp?Gp.boxEndIndex:Ya.collisionBoxArray.length,m0=oc?oc.boxStartIndex:Ya.collisionBoxArray.length,cv=oc?oc.boxEndIndex:Ya.collisionBoxArray.length,BC=Qv?Qv.boxStartIndex:Ya.collisionBoxArray.length,Q9=Qv?Qv.boxEndIndex:Ya.collisionBoxArray.length,NC=If?If.boxStartIndex:Ya.collisionBoxArray.length,eq=If?If.boxEndIndex:Ya.collisionBoxArray.length,mp=-1,tb=(Ad,tp)=>Ad&&Ad.circleDiameter?Math.max(Ad.circleDiameter,tp):tp;mp=tb(Gp,mp),mp=tb(oc,mp),mp=tb(Qv,mp),mp=tb(If,mp);let Hw=mp>-1?1:0;Hw&&(mp*=I1/kl),Ya.glyphOffsetArray.length>=E1.MAX_GLYPHS&&T("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),qu.sortKey!==void 0&&Ya.addToSortKeyRanges(Ya.symbolInstances.length,qu.sortKey);let wS=RC(ch,qu,qc),[tq,rq]=function(Ad,tp){let hm=Ad.length,Gd=tp==null?void 0:tp.values;if((Gd==null?void 0:Gd.length)>0)for(let Sd=0;Sd=0?g0.right:-1,g0.center>=0?g0.center:-1,g0.left>=0?g0.left:-1,g0.vertical||-1,bS,Uw,hy,$9,Vw,m0,cv,BC,Q9,NC,eq,Vd,uv,R1,ep,gg,Hw,0,fh,mp,tq,rq)}(R,bo,Tn,D,j,te,$a,R.layers[0],R.collisionBoxArray,S.index,S.sourceLayerIndex,R.index,$r,[ki,ki,ki,ki],Va,Ze,Di,Zi,Io,sr,S,ue,at,Tt,ve)};if(La==="line")for(let Tn of MC(S.geometry,0,0,za,za)){let bo=W9(Tn,pi,ta,D.vertical||Tr,j,24,ni,R.overscaling,za);for(let Ya of bo)Tr&&K9(R,Tr.text,Hn,Ya)||Xa(Tn,Ya)}else if(La==="line-center"){for(let Tn of S.geometry)if(Tn.length>1){let bo=j9(Tn,ta,D.vertical||Tr,j,24,ni);bo&&Xa(Tn,bo)}}else if(S.type==="Polygon")for(let Tn of Of(S.geometry,0)){let bo=Z9(Tn,16);Xa(Tn[0],new vg(bo.x,bo.y,0))}else if(S.type==="LineString")for(let Tn of S.geometry)Xa(Tn,new vg(Tn[0].x,Tn[0].y,0));else if(S.type==="Point")for(let Tn of S.geometry)for(let bo of Tn)Xa([bo],new vg(bo.x,bo.y,0))}function DC(R,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr){let Pr=function(Di,pi,ki,Zi,ta,Va,Io,La){let Hn=Zi.layout.get("text-rotate").evaluate(Va,{})*Math.PI/180,lo=[];for(let $a of pi.positionedLines)for(let Xa of $a.positionedGlyphs){if(!Xa.rect)continue;let Tn=Xa.rect||{},bo=cC+1,Ya=!0,Uo=1,wu=0,hu=(ta||La)&&Xa.vertical,uh=Xa.metrics.advance*Xa.scale/2;if(La&&pi.verticalizable&&(wu=$a.lineOffset/2-(Xa.imageName?-(kl-Xa.metrics.width*Xa.scale)/2:(Xa.scale-1)*kl)),Xa.imageName){let Cl=Io[Xa.imageName];Ya=Cl.sdf,Uo=Cl.pixelRatio,bo=wd/Uo}let $v=ta?[Xa.x+uh,Xa.y]:[0,0],td=ta?[0,0]:[Xa.x+uh+ki[0],Xa.y+ki[1]-wu],ch=[0,0];hu&&(ch=td,td=[0,0]);let Ud=Xa.metrics.isDoubleResolution?2:1,Vd=(Xa.metrics.left-bo)*Xa.scale-uh+td[0],Hd=(-Xa.metrics.top-bo)*Xa.scale+td[1],rf=Vd+Tn.w/Ud*Xa.scale/Uo,fh=Hd+Tn.h/Ud*Xa.scale/Uo,Td=new u(Vd,Hd),rd=new u(rf,Hd),Dh=new u(Vd,fh),xf=new u(rf,fh);if(hu){let Cl=new u(-uh,uh-lh),qu=-Math.PI/2,Tu=kl/2-uh,Rv=new u(5-lh-Tu,-(Xa.imageName?Tu:0)),qc=new u(...ch);Td._rotateAround(qu,Cl)._add(Rv)._add(qc),rd._rotateAround(qu,Cl)._add(Rv)._add(qc),Dh._rotateAround(qu,Cl)._add(Rv)._add(qc),xf._rotateAround(qu,Cl)._add(Rv)._add(qc)}if(Hn){let Cl=Math.sin(Hn),qu=Math.cos(Hn),Tu=[qu,-Cl,Cl,qu];Td._matMult(Tu),rd._matMult(Tu),Dh._matMult(Tu),xf._matMult(Tu)}let Iv=new u(0,0),lv=new u(0,0);lo.push({tl:Td,tr:rd,bl:Dh,br:xf,tex:Tn,writingMode:pi.writingMode,glyphOffset:$v,sectionIndex:Xa.sectionIndex,isSDF:Ya,pixelOffsetTL:Iv,pixelOffsetBR:lv,minFontScaleX:0,minFontScaleY:0})}return lo}(0,D,De,te,ue,ve,j,R.allowVerticalPlacement),$r=R.textSizeData,ni=null;$r.kind==="source"?(ni=[v0*te.layout.get("text-size").evaluate(ve,{})],ni[0]>lm&&T(`${R.layerIds[0]}: Value for "text-size" is >= ${jx}. Reduce your "text-size".`)):$r.kind==="composite"&&(ni=[v0*sr.compositeTextSizes[0].evaluate(ve,{},Tr),v0*sr.compositeTextSizes[1].evaluate(ve,{},Tr)],(ni[0]>lm||ni[1]>lm)&&T(`${R.layerIds[0]}: Value for "text-size" is >= ${jx}. Reduce your "text-size".`)),R.addSymbols(R.text,Pr,ni,De,ue,ve,at,S,Ze.lineStartIndex,Ze.lineLength,Qt,Tr);for(let Di of Tt)Ft[Di]=R.text.placedSymbolArray.length-1;return 4*Pr.length}function zC(R){for(let S in R)return R[S];return null}function K9(R,S,D,j){let te=R.compareText;if(S in te){let ue=te[S];for(let ve=ue.length-1;ve>=0;ve--)if(j.dist(ue[ve])>4;if(te!==1)throw new Error(`Got v${te} data when expected v1.`);let ue=FC[15&j];if(!ue)throw new Error("Unrecognized array type.");let[ve]=new Uint16Array(S,2,1),[De]=new Uint32Array(S,4,1);return new mS(De,ve,ue,S)}constructor(S,D=64,j=Float64Array,te){if(isNaN(S)||S<0)throw new Error(`Unpexpected numItems value: ${S}.`);this.numItems=+S,this.nodeSize=Math.min(Math.max(+D,2),65535),this.ArrayType=j,this.IndexArrayType=S<65536?Uint16Array:Uint32Array;let ue=FC.indexOf(this.ArrayType),ve=2*S*this.ArrayType.BYTES_PER_ELEMENT,De=S*this.IndexArrayType.BYTES_PER_ELEMENT,Ze=(8-De%8)%8;if(ue<0)throw new Error(`Unexpected typed array class: ${j}.`);te&&te instanceof ArrayBuffer?(this.data=te,this.ids=new this.IndexArrayType(this.data,8,S),this.coords=new this.ArrayType(this.data,8+De+Ze,2*S),this._pos=2*S,this._finished=!0):(this.data=new ArrayBuffer(8+ve+De+Ze),this.ids=new this.IndexArrayType(this.data,8,S),this.coords=new this.ArrayType(this.data,8+De+Ze,2*S),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+ue]),new Uint16Array(this.data,2,1)[0]=D,new Uint32Array(this.data,4,1)[0]=S)}add(S,D){let j=this._pos>>1;return this.ids[j]=j,this.coords[this._pos++]=S,this.coords[this._pos++]=D,j}finish(){let S=this._pos>>1;if(S!==this.numItems)throw new Error(`Added ${S} items when expected ${this.numItems}.`);return Ow(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(S,D,j,te){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:ue,coords:ve,nodeSize:De}=this,Ze=[0,ue.length-1,0],at=[];for(;Ze.length;){let Tt=Ze.pop()||0,Ft=Ze.pop()||0,Qt=Ze.pop()||0;if(Ft-Qt<=De){for(let $r=Qt;$r<=Ft;$r++){let ni=ve[2*$r],Di=ve[2*$r+1];ni>=S&&ni<=j&&Di>=D&&Di<=te&&at.push(ue[$r])}continue}let sr=Qt+Ft>>1,Tr=ve[2*sr],Pr=ve[2*sr+1];Tr>=S&&Tr<=j&&Pr>=D&&Pr<=te&&at.push(ue[sr]),(Tt===0?S<=Tr:D<=Pr)&&(Ze.push(Qt),Ze.push(sr-1),Ze.push(1-Tt)),(Tt===0?j>=Tr:te>=Pr)&&(Ze.push(sr+1),Ze.push(Ft),Ze.push(1-Tt))}return at}within(S,D,j){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:te,coords:ue,nodeSize:ve}=this,De=[0,te.length-1,0],Ze=[],at=j*j;for(;De.length;){let Tt=De.pop()||0,Ft=De.pop()||0,Qt=De.pop()||0;if(Ft-Qt<=ve){for(let $r=Qt;$r<=Ft;$r++)OC(ue[2*$r],ue[2*$r+1],S,D)<=at&&Ze.push(te[$r]);continue}let sr=Qt+Ft>>1,Tr=ue[2*sr],Pr=ue[2*sr+1];OC(Tr,Pr,S,D)<=at&&Ze.push(te[sr]),(Tt===0?S-j<=Tr:D-j<=Pr)&&(De.push(Qt),De.push(sr-1),De.push(1-Tt)),(Tt===0?S+j>=Tr:D+j>=Pr)&&(De.push(sr+1),De.push(Ft),De.push(1-Tt))}return Ze}}function Ow(R,S,D,j,te,ue){if(te-j<=D)return;let ve=j+te>>1;qC(R,S,ve,j,te,ue),Ow(R,S,D,j,ve-1,1-ue),Ow(R,S,D,ve+1,te,1-ue)}function qC(R,S,D,j,te,ue){for(;te>j;){if(te-j>600){let at=te-j+1,Tt=D-j+1,Ft=Math.log(at),Qt=.5*Math.exp(2*Ft/3),sr=.5*Math.sqrt(Ft*Qt*(at-Qt)/at)*(Tt-at/2<0?-1:1);qC(R,S,D,Math.max(j,Math.floor(D-Tt*Qt/at+sr)),Math.min(te,Math.floor(D+(at-Tt)*Qt/at+sr)),ue)}let ve=S[2*D+ue],De=j,Ze=te;for(Qx(R,S,j,D),S[2*te+ue]>ve&&Qx(R,S,j,te);Deve;)Ze--}S[2*j+ue]===ve?Qx(R,S,j,Ze):(Ze++,Qx(R,S,Ze,te)),Ze<=D&&(j=Ze+1),D<=Ze&&(te=Ze-1)}}function Qx(R,S,D,j){yS(R,D,j),yS(S,2*D,2*j),yS(S,2*D+1,2*j+1)}function yS(R,S,D){let j=R[S];R[S]=R[D],R[D]=j}function OC(R,S,D,j){let te=R-D,ue=S-j;return te*te+ue*ue}var Bw;i.bg=void 0,(Bw=i.bg||(i.bg={})).create="create",Bw.load="load",Bw.fullLoad="fullLoad";let eb=null,Gf=[],_S=1e3/60,xS="loadTime",Nw="fullLoadTime",J9={mark(R){performance.mark(R)},frame(R){let S=R;eb!=null&&Gf.push(S-eb),eb=S},clearMetrics(){eb=null,Gf=[],performance.clearMeasures(xS),performance.clearMeasures(Nw);for(let R in i.bg)performance.clearMarks(i.bg[R])},getPerformanceMetrics(){performance.measure(xS,i.bg.create,i.bg.load),performance.measure(Nw,i.bg.create,i.bg.fullLoad);let R=performance.getEntriesByName(xS)[0].duration,S=performance.getEntriesByName(Nw)[0].duration,D=Gf.length,j=1/(Gf.reduce((ue,ve)=>ue+ve,0)/D/1e3),te=Gf.filter(ue=>ue>_S).reduce((ue,ve)=>ue+(ve-_S)/_S,0);return{loadTime:R,fullLoadTime:S,fps:j,percentDroppedFrames:te/(D+te)*100,totalFrames:D}}};i.$=class extends Ot{},i.A=Ln,i.B=Fi,i.C=function(R){if(V==null){let S=R.navigator?R.navigator.userAgent:null;V=!!R.safari||!(!S||!(/\b(iPad|iPhone|iPod)\b/.test(S)||S.match("Safari")&&!S.match("Chrome")))}return V},i.D=Da,i.E=Re,i.F=class{constructor(R,S){this.target=R,this.mapId=S,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new cS(()=>this.process()),this.subscription=function(D,j,te,ue){return D.addEventListener(j,te,!1),{unsubscribe:()=>{D.removeEventListener(j,te,!1)}}}(this.target,"message",D=>this.receive(D)),this.globalScope=q(self)?R:window}registerMessageHandler(R,S){this.messageHandlers[R]=S}sendAsync(R,S){return new Promise((D,j)=>{let te=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[te]={resolve:D,reject:j},S&&S.signal.addEventListener("abort",()=>{delete this.resolveRejects[te];let De={id:te,type:"",origin:location.origin,targetMapId:R.targetMapId,sourceMapId:this.mapId};this.target.postMessage(De)},{once:!0});let ue=[],ve=Object.assign(Object.assign({},R),{id:te,sourceMapId:this.mapId,origin:location.origin,data:Ea(R.data,ue)});this.target.postMessage(ve,{transfer:ue})})}receive(R){let S=R.data,D=S.id;if(!(S.origin!=="file://"&&location.origin!=="file://"&&S.origin!=="resource://android"&&location.origin!=="resource://android"&&S.origin!==location.origin||S.targetMapId&&this.mapId!==S.targetMapId)){if(S.type===""){delete this.tasks[D];let j=this.abortControllers[D];return delete this.abortControllers[D],void(j&&j.abort())}if(q(self)||S.mustQueue)return this.tasks[D]=S,this.taskQueue.push(D),void this.invoker.trigger();this.processTask(D,S)}}process(){if(this.taskQueue.length===0)return;let R=this.taskQueue.shift(),S=this.tasks[R];delete this.tasks[R],this.taskQueue.length>0&&this.invoker.trigger(),S&&this.processTask(R,S)}processTask(R,S){return a(this,void 0,void 0,function*(){if(S.type===""){let te=this.resolveRejects[R];return delete this.resolveRejects[R],te?void(S.error?te.reject(qa(S.error)):te.resolve(qa(S.data))):void 0}if(!this.messageHandlers[S.type])return void this.completeTask(R,new Error(`Could not find a registered handler for ${S.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let D=qa(S.data),j=new AbortController;this.abortControllers[R]=j;try{let te=yield this.messageHandlers[S.type](S.sourceMapId,D,j);this.completeTask(R,null,te)}catch(te){this.completeTask(R,te)}})}completeTask(R,S,D){let j=[];delete this.abortControllers[R];let te={id:R,type:"",sourceMapId:this.mapId,origin:location.origin,error:S?Ea(S):null,data:Ea(D,j)};this.target.postMessage(te,{transfer:j})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},i.G=ke,i.H=function(){var R=new Ln(16);return Ln!=Float32Array&&(R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[11]=0,R[12]=0,R[13]=0,R[14]=0),R[0]=1,R[5]=1,R[10]=1,R[15]=1,R},i.I=kw,i.J=function(R,S,D){var j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr=D[0],$r=D[1],ni=D[2];return S===R?(R[12]=S[0]*Pr+S[4]*$r+S[8]*ni+S[12],R[13]=S[1]*Pr+S[5]*$r+S[9]*ni+S[13],R[14]=S[2]*Pr+S[6]*$r+S[10]*ni+S[14],R[15]=S[3]*Pr+S[7]*$r+S[11]*ni+S[15]):(te=S[1],ue=S[2],ve=S[3],De=S[4],Ze=S[5],at=S[6],Tt=S[7],Ft=S[8],Qt=S[9],sr=S[10],Tr=S[11],R[0]=j=S[0],R[1]=te,R[2]=ue,R[3]=ve,R[4]=De,R[5]=Ze,R[6]=at,R[7]=Tt,R[8]=Ft,R[9]=Qt,R[10]=sr,R[11]=Tr,R[12]=j*Pr+De*$r+Ft*ni+S[12],R[13]=te*Pr+Ze*$r+Qt*ni+S[13],R[14]=ue*Pr+at*$r+sr*ni+S[14],R[15]=ve*Pr+Tt*$r+Tr*ni+S[15]),R},i.K=function(R,S,D){var j=D[0],te=D[1],ue=D[2];return R[0]=S[0]*j,R[1]=S[1]*j,R[2]=S[2]*j,R[3]=S[3]*j,R[4]=S[4]*te,R[5]=S[5]*te,R[6]=S[6]*te,R[7]=S[7]*te,R[8]=S[8]*ue,R[9]=S[9]*ue,R[10]=S[10]*ue,R[11]=S[11]*ue,R[12]=S[12],R[13]=S[13],R[14]=S[14],R[15]=S[15],R},i.L=gn,i.M=function(R,S){let D={};for(let j=0;j{let S=window.document.createElement("video");return S.muted=!0,new Promise(D=>{S.onloadstart=()=>{D(S)};for(let j of R){let te=window.document.createElement("source");Ee(j)||(S.crossOrigin="Anonymous"),te.src=j,S.appendChild(te)}})},i.a4=function(){return _++},i.a5=Qi,i.a6=E1,i.a7=Pc,i.a8=xl,i.a9=dS,i.aA=function(R){if(R.type==="custom")return new uS(R);switch(R.type){case"background":return new H9(R);case"circle":return new wn(R);case"fill":return new gr(R);case"fill-extrusion":return new Ev(R);case"heatmap":return new Po(R);case"hillshade":return new $c(R);case"line":return new ay(R);case"raster":return new Yx(R);case"symbol":return new uy(R)}},i.aB=p,i.aC=function(R,S){if(!R)return[{command:"setStyle",args:[S]}];let D=[];try{if(!ct(R.version,S.version))return[{command:"setStyle",args:[S]}];ct(R.center,S.center)||D.push({command:"setCenter",args:[S.center]}),ct(R.zoom,S.zoom)||D.push({command:"setZoom",args:[S.zoom]}),ct(R.bearing,S.bearing)||D.push({command:"setBearing",args:[S.bearing]}),ct(R.pitch,S.pitch)||D.push({command:"setPitch",args:[S.pitch]}),ct(R.sprite,S.sprite)||D.push({command:"setSprite",args:[S.sprite]}),ct(R.glyphs,S.glyphs)||D.push({command:"setGlyphs",args:[S.glyphs]}),ct(R.transition,S.transition)||D.push({command:"setTransition",args:[S.transition]}),ct(R.light,S.light)||D.push({command:"setLight",args:[S.light]}),ct(R.terrain,S.terrain)||D.push({command:"setTerrain",args:[S.terrain]}),ct(R.sky,S.sky)||D.push({command:"setSky",args:[S.sky]}),ct(R.projection,S.projection)||D.push({command:"setProjection",args:[S.projection]});let j={},te=[];(function(ve,De,Ze,at){let Tt;for(Tt in De=De||{},ve=ve||{})Object.prototype.hasOwnProperty.call(ve,Tt)&&(Object.prototype.hasOwnProperty.call(De,Tt)||ot(Tt,Ze,at));for(Tt in De)Object.prototype.hasOwnProperty.call(De,Tt)&&(Object.prototype.hasOwnProperty.call(ve,Tt)?ct(ve[Tt],De[Tt])||(ve[Tt].type==="geojson"&&De[Tt].type==="geojson"&&kt(ve,De,Tt)?qt(Ze,{command:"setGeoJSONSourceData",args:[Tt,De[Tt].data]}):Rt(Tt,De,Ze,at)):rt(Tt,De,Ze))})(R.sources,S.sources,te,j);let ue=[];R.layers&&R.layers.forEach(ve=>{"source"in ve&&j[ve.source]?D.push({command:"removeLayer",args:[ve.id]}):ue.push(ve)}),D=D.concat(te),function(ve,De,Ze){De=De||[];let at=(ve=ve||[]).map(Yt),Tt=De.map(Yt),Ft=ve.reduce(xr,{}),Qt=De.reduce(xr,{}),sr=at.slice(),Tr=Object.create(null),Pr,$r,ni,Di,pi;for(let ki=0,Zi=0;ki@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(D,j,te,ue)=>{let ve=te||ue;return S[j]=!ve||ve.toLowerCase(),""}),S["max-age"]){let D=parseInt(S["max-age"],10);isNaN(D)?delete S["max-age"]:S["max-age"]=D}return S},i.ab=function(R,S){let D=[];for(let j in R)j in S||D.push(j);return D},i.ac=k,i.ad=function(R,S,D){var j=Math.sin(D),te=Math.cos(D),ue=S[0],ve=S[1],De=S[2],Ze=S[3],at=S[4],Tt=S[5],Ft=S[6],Qt=S[7];return S!==R&&(R[8]=S[8],R[9]=S[9],R[10]=S[10],R[11]=S[11],R[12]=S[12],R[13]=S[13],R[14]=S[14],R[15]=S[15]),R[0]=ue*te+at*j,R[1]=ve*te+Tt*j,R[2]=De*te+Ft*j,R[3]=Ze*te+Qt*j,R[4]=at*te-ue*j,R[5]=Tt*te-ve*j,R[6]=Ft*te-De*j,R[7]=Qt*te-Ze*j,R},i.ae=function(R){var S=new Ln(16);return S[0]=R[0],S[1]=R[1],S[2]=R[2],S[3]=R[3],S[4]=R[4],S[5]=R[5],S[6]=R[6],S[7]=R[7],S[8]=R[8],S[9]=R[9],S[10]=R[10],S[11]=R[11],S[12]=R[12],S[13]=R[13],S[14]=R[14],S[15]=R[15],S},i.af=Za,i.ag=function(R,S){let D=0,j=0;if(R.kind==="constant")j=R.layoutSize;else if(R.kind!=="source"){let{interpolationType:te,minZoom:ue,maxZoom:ve}=R,De=te?k(xo.interpolationFactor(te,S,ue,ve),0,1):0;R.kind==="camera"?j=Mo.number(R.minSize,R.maxSize,De):D=De}return{uSizeT:D,uSize:j}},i.ai=function(R,{uSize:S,uSizeT:D},{lowerSize:j,upperSize:te}){return R.kind==="source"?j/v0:R.kind==="composite"?Mo.number(j/v0,te/v0,D):S},i.aj=aS,i.ak=function(R,S,D,j){let te=S.y-R.y,ue=S.x-R.x,ve=j.y-D.y,De=j.x-D.x,Ze=ve*ue-De*te;if(Ze===0)return null;let at=(De*(R.y-D.y)-ve*(R.x-D.x))/Ze;return new u(R.x+at*ue,R.y+at*te)},i.al=MC,i.am=xc,i.an=Un,i.ao=function(R){let S=1/0,D=1/0,j=-1/0,te=-1/0;for(let ue of R)S=Math.min(S,ue.x),D=Math.min(D,ue.y),j=Math.max(j,ue.x),te=Math.max(te,ue.y);return[S,D,j,te]},i.ap=kl,i.ar=nS,i.as=function(R,S){var D=S[0],j=S[1],te=S[2],ue=S[3],ve=S[4],De=S[5],Ze=S[6],at=S[7],Tt=S[8],Ft=S[9],Qt=S[10],sr=S[11],Tr=S[12],Pr=S[13],$r=S[14],ni=S[15],Di=D*De-j*ve,pi=D*Ze-te*ve,ki=D*at-ue*ve,Zi=j*Ze-te*De,ta=j*at-ue*De,Va=te*at-ue*Ze,Io=Tt*Pr-Ft*Tr,La=Tt*$r-Qt*Tr,Hn=Tt*ni-sr*Tr,lo=Ft*$r-Qt*Pr,$a=Ft*ni-sr*Pr,Xa=Qt*ni-sr*$r,Tn=Di*Xa-pi*$a+ki*lo+Zi*Hn-ta*La+Va*Io;return Tn?(R[0]=(De*Xa-Ze*$a+at*lo)*(Tn=1/Tn),R[1]=(te*$a-j*Xa-ue*lo)*Tn,R[2]=(Pr*Va-$r*ta+ni*Zi)*Tn,R[3]=(Qt*ta-Ft*Va-sr*Zi)*Tn,R[4]=(Ze*Hn-ve*Xa-at*La)*Tn,R[5]=(D*Xa-te*Hn+ue*La)*Tn,R[6]=($r*ki-Tr*Va-ni*pi)*Tn,R[7]=(Tt*Va-Qt*ki+sr*pi)*Tn,R[8]=(ve*$a-De*Hn+at*Io)*Tn,R[9]=(j*Hn-D*$a-ue*Io)*Tn,R[10]=(Tr*ta-Pr*ki+ni*Di)*Tn,R[11]=(Ft*ki-Tt*ta-sr*Di)*Tn,R[12]=(De*La-ve*lo-Ze*Io)*Tn,R[13]=(D*lo-j*La+te*Io)*Tn,R[14]=(Pr*pi-Tr*Zi-$r*Di)*Tn,R[15]=(Tt*Zi-Ft*pi+Qt*Di)*Tn,R):null},i.at=gS,i.au=Iw,i.av=mS,i.aw=function(){let R={},S=ce.$version;for(let D in ce.$root){let j=ce.$root[D];if(j.required){let te=null;te=D==="version"?S:j.type==="array"?[]:{},te!=null&&(R[D]=te)}}return R},i.ax=Cn,i.ay=ie,i.az=function(R){R=R.slice();let S=Object.create(null);for(let D=0;D25||j<0||j>=1||D<0||D>=1)},i.bc=function(R,S){return R[0]=S[0],R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=S[1],R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=S[2],R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R},i.bd=class extends yt{},i.be=fS,i.bf=J9,i.bh=ge,i.bi=function(R,S){_e.REGISTERED_PROTOCOLS[R]=S},i.bj=function(R){delete _e.REGISTERED_PROTOCOLS[R]},i.bk=function(R,S){let D={};for(let te=0;teXa*kl)}let La=ve?"center":D.get("text-justify").evaluate(at,{},R.canonical),Hn=D.get("symbol-placement")==="point"?D.get("text-max-width").evaluate(at,{},R.canonical)*kl:1/0,lo=()=>{R.bucket.allowVerticalPlacement&&Ua(ki)&&(Tr.vertical=Hx(Pr,R.glyphMap,R.glyphPositions,R.imagePositions,Tt,Hn,ue,Va,"left",ta,ni,i.ah.vertical,!0,Qt,Ft))};if(!ve&&Io){let $a=new Set;if(La==="auto")for(let Tn=0;Tna(void 0,void 0,void 0,function*(){if(R.byteLength===0)return createImageBitmap(new ImageData(1,1));let S=new Blob([new Uint8Array(R)],{type:"image/png"});try{return createImageBitmap(S)}catch(D){throw new Error(`Could not load image because of ${D.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),i.e=L,i.f=R=>new Promise((S,D)=>{let j=new Image;j.onload=()=>{S(j),URL.revokeObjectURL(j.src),j.onload=null,window.requestAnimationFrame(()=>{j.src=X})},j.onerror=()=>D(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));let te=new Blob([new Uint8Array(R)],{type:"image/png"});j.src=R.byteLength?URL.createObjectURL(te):X}),i.g=Me,i.h=(R,S)=>Te(L(R,{type:"json"}),S),i.i=q,i.j=me,i.k=Ce,i.l=(R,S)=>Te(L(R,{type:"arrayBuffer"}),S),i.m=Te,i.n=function(R){return new tS(R).readFields(gQ,[])},i.o=Ao,i.p=iS,i.q=le,i.r=xi,i.s=Ee,i.t=Ti,i.u=fi,i.v=ce,i.w=T,i.x=function([R,S,D]){return S+=90,S*=Math.PI/180,D*=Math.PI/180,{x:R*Math.cos(S)*Math.sin(D),y:R*Math.sin(S)*Math.sin(D),z:R*Math.cos(D)}},i.y=Mo,i.z=Ko}),r("worker",["./shared"],function(i){"use strict";class a{constructor(Ne){this.keyCache={},Ne&&this.replace(Ne)}replace(Ne){this._layerConfigs={},this._layers={},this.update(Ne,[])}update(Ne,Ye){for(let Xe of Ne){this._layerConfigs[Xe.id]=Xe;let ht=this._layers[Xe.id]=i.aA(Xe);ht._featureFilter=i.a7(ht.filter),this.keyCache[Xe.id]&&delete this.keyCache[Xe.id]}for(let Xe of Ye)delete this.keyCache[Xe],delete this._layerConfigs[Xe],delete this._layers[Xe];this.familiesBySource={};let Ve=i.bk(Object.values(this._layerConfigs),this.keyCache);for(let Xe of Ve){let ht=Xe.map(Vt=>this._layers[Vt.id]),Le=ht[0];if(Le.visibility==="none")continue;let xe=Le.source||"",Se=this.familiesBySource[xe];Se||(Se=this.familiesBySource[xe]={});let lt=Le.sourceLayer||"_geojsonTileLayer",Gt=Se[lt];Gt||(Gt=Se[lt]=[]),Gt.push(ht)}}}class o{constructor(Ne){let Ye={},Ve=[];for(let xe in Ne){let Se=Ne[xe],lt=Ye[xe]={};for(let Gt in Se){let Vt=Se[+Gt];if(!Vt||Vt.bitmap.width===0||Vt.bitmap.height===0)continue;let ar={x:0,y:0,w:Vt.bitmap.width+2,h:Vt.bitmap.height+2};Ve.push(ar),lt[Gt]={rect:ar,metrics:Vt.metrics}}}let{w:Xe,h:ht}=i.p(Ve),Le=new i.o({width:Xe||1,height:ht||1});for(let xe in Ne){let Se=Ne[xe];for(let lt in Se){let Gt=Se[+lt];if(!Gt||Gt.bitmap.width===0||Gt.bitmap.height===0)continue;let Vt=Ye[xe][lt].rect;i.o.copy(Gt.bitmap,Le,{x:0,y:0},{x:Vt.x+1,y:Vt.y+1},Gt.bitmap)}}this.image=Le,this.positions=Ye}}i.bl("GlyphAtlas",o);class s{constructor(Ne){this.tileID=new i.S(Ne.tileID.overscaledZ,Ne.tileID.wrap,Ne.tileID.canonical.z,Ne.tileID.canonical.x,Ne.tileID.canonical.y),this.uid=Ne.uid,this.zoom=Ne.zoom,this.pixelRatio=Ne.pixelRatio,this.tileSize=Ne.tileSize,this.source=Ne.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=Ne.showCollisionBoxes,this.collectResourceTiming=!!Ne.collectResourceTiming,this.returnDependencies=!!Ne.returnDependencies,this.promoteId=Ne.promoteId,this.inFlightDependencies=[]}parse(Ne,Ye,Ve,Xe){return i._(this,void 0,void 0,function*(){this.status="parsing",this.data=Ne,this.collisionBoxArray=new i.a5;let ht=new i.bm(Object.keys(Ne.layers).sort()),Le=new i.bn(this.tileID,this.promoteId);Le.bucketLayerIDs=[];let xe={},Se={featureIndex:Le,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:Ve},lt=Ye.familiesBySource[this.source];for(let _n in lt){let $i=Ne.layers[_n];if(!$i)continue;$i.version===1&&i.w(`Vector tile source "${this.source}" layer "${_n}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let zn=ht.encode(_n),Wn=[];for(let It=0;It<$i.length;It++){let ft=$i.feature(It),jt=Le.getId(ft,_n);Wn.push({feature:ft,id:jt,index:It,sourceLayerIndex:zn})}for(let It of lt[_n]){let ft=It[0];ft.source!==this.source&&i.w(`layer.source = ${ft.source} does not equal this.source = ${this.source}`),ft.minzoom&&this.zoom=ft.maxzoom||ft.visibility!=="none"&&(l(It,this.zoom,Ve),(xe[ft.id]=ft.createBucket({index:Le.bucketLayerIDs.length,layers:It,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:zn,sourceID:this.source})).populate(Wn,Se,this.tileID.canonical),Le.bucketLayerIDs.push(It.map(jt=>jt.id)))}}let Gt=i.aF(Se.glyphDependencies,_n=>Object.keys(_n).map(Number));this.inFlightDependencies.forEach(_n=>_n==null?void 0:_n.abort()),this.inFlightDependencies=[];let Vt=Promise.resolve({});if(Object.keys(Gt).length){let _n=new AbortController;this.inFlightDependencies.push(_n),Vt=Xe.sendAsync({type:"GG",data:{stacks:Gt,source:this.source,tileID:this.tileID,type:"glyphs"}},_n)}let ar=Object.keys(Se.iconDependencies),Qr=Promise.resolve({});if(ar.length){let _n=new AbortController;this.inFlightDependencies.push(_n),Qr=Xe.sendAsync({type:"GI",data:{icons:ar,source:this.source,tileID:this.tileID,type:"icons"}},_n)}let ai=Object.keys(Se.patternDependencies),jr=Promise.resolve({});if(ai.length){let _n=new AbortController;this.inFlightDependencies.push(_n),jr=Xe.sendAsync({type:"GI",data:{icons:ai,source:this.source,tileID:this.tileID,type:"patterns"}},_n)}let[ri,bi,nn]=yield Promise.all([Vt,Qr,jr]),Wi=new o(ri),Ni=new i.bo(bi,nn);for(let _n in xe){let $i=xe[_n];$i instanceof i.a6?(l($i.layers,this.zoom,Ve),i.bp({bucket:$i,glyphMap:ri,glyphPositions:Wi.positions,imageMap:bi,imagePositions:Ni.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):$i.hasPattern&&($i instanceof i.bq||$i instanceof i.br||$i instanceof i.bs)&&(l($i.layers,this.zoom,Ve),$i.addFeatures(Se,this.tileID.canonical,Ni.patternPositions))}return this.status="done",{buckets:Object.values(xe).filter(_n=>!_n.isEmpty()),featureIndex:Le,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:Wi.image,imageAtlas:Ni,glyphMap:this.returnDependencies?ri:null,iconMap:this.returnDependencies?bi:null,glyphPositions:this.returnDependencies?Wi.positions:null}})}}function l(ut,Ne,Ye){let Ve=new i.z(Ne);for(let Xe of ut)Xe.recalculate(Ve,Ye)}class u{constructor(Ne,Ye,Ve){this.actor=Ne,this.layerIndex=Ye,this.availableImages=Ve,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(Ne,Ye){return i._(this,void 0,void 0,function*(){let Ve=yield i.l(Ne.request,Ye);try{return{vectorTile:new i.bt.VectorTile(new i.bu(Ve.data)),rawData:Ve.data,cacheControl:Ve.cacheControl,expires:Ve.expires}}catch(Xe){let ht=new Uint8Array(Ve.data),Le=`Unable to parse the tile at ${Ne.request.url}, `;throw Le+=ht[0]===31&&ht[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${Xe.message}`,new Error(Le)}})}loadTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=Ne.uid,Ve=!!(Ne&&Ne.request&&Ne.request.collectResourceTiming)&&new i.bv(Ne.request),Xe=new s(Ne);this.loading[Ye]=Xe;let ht=new AbortController;Xe.abort=ht;try{let Le=yield this.loadVectorTile(Ne,ht);if(delete this.loading[Ye],!Le)return null;let xe=Le.rawData,Se={};Le.expires&&(Se.expires=Le.expires),Le.cacheControl&&(Se.cacheControl=Le.cacheControl);let lt={};if(Ve){let Vt=Ve.finish();Vt&&(lt.resourceTiming=JSON.parse(JSON.stringify(Vt)))}Xe.vectorTile=Le.vectorTile;let Gt=Xe.parse(Le.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[Ye]=Xe,this.fetching[Ye]={rawTileData:xe,cacheControl:Se,resourceTiming:lt};try{let Vt=yield Gt;return i.e({rawTileData:xe.slice(0)},Vt,Se,lt)}finally{delete this.fetching[Ye]}}catch(Le){throw delete this.loading[Ye],Xe.status="done",this.loaded[Ye]=Xe,Le}})}reloadTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=Ne.uid;if(!this.loaded||!this.loaded[Ye])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let Ve=this.loaded[Ye];if(Ve.showCollisionBoxes=Ne.showCollisionBoxes,Ve.status==="parsing"){let Xe=yield Ve.parse(Ve.vectorTile,this.layerIndex,this.availableImages,this.actor),ht;if(this.fetching[Ye]){let{rawTileData:Le,cacheControl:xe,resourceTiming:Se}=this.fetching[Ye];delete this.fetching[Ye],ht=i.e({rawTileData:Le.slice(0)},Xe,xe,Se)}else ht=Xe;return ht}if(Ve.status==="done"&&Ve.vectorTile)return Ve.parse(Ve.vectorTile,this.layerIndex,this.availableImages,this.actor)})}abortTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=this.loading,Ve=Ne.uid;Ye&&Ye[Ve]&&Ye[Ve].abort&&(Ye[Ve].abort.abort(),delete Ye[Ve])})}removeTile(Ne){return i._(this,void 0,void 0,function*(){this.loaded&&this.loaded[Ne.uid]&&delete this.loaded[Ne.uid]})}}class c{constructor(){this.loaded={}}loadTile(Ne){return i._(this,void 0,void 0,function*(){let{uid:Ye,encoding:Ve,rawImageData:Xe,redFactor:ht,greenFactor:Le,blueFactor:xe,baseShift:Se}=Ne,lt=Xe.width+2,Gt=Xe.height+2,Vt=i.b(Xe)?new i.R({width:lt,height:Gt},yield i.bw(Xe,-1,-1,lt,Gt)):Xe,ar=new i.bx(Ye,Vt,Ve,ht,Le,xe,Se);return this.loaded=this.loaded||{},this.loaded[Ye]=ar,ar})}removeTile(Ne){let Ye=this.loaded,Ve=Ne.uid;Ye&&Ye[Ve]&&delete Ye[Ve]}}function f(ut,Ne){if(ut.length!==0){h(ut[0],Ne);for(var Ye=1;Ye=Math.abs(xe)?Ye-Se+xe:xe-Se+Ye,Ye=Se}Ye+Ve>=0!=!!Ne&&ut.reverse()}var d=i.by(function ut(Ne,Ye){var Ve,Xe=Ne&&Ne.type;if(Xe==="FeatureCollection")for(Ve=0;Ve>31}function q(ut,Ne){for(var Ye=ut.loadGeometry(),Ve=ut.type,Xe=0,ht=0,Le=Ye.length,xe=0;xeut},G=Math.fround||(N=new Float32Array(1),ut=>(N[0]=+ut,N[0]));var N;let W=3,re=5,ae=6;class _e{constructor(Ne){this.options=Object.assign(Object.create(X),Ne),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(Ne){let{log:Ye,minZoom:Ve,maxZoom:Xe}=this.options;Ye&&console.time("total time");let ht=`prepare ${Ne.length} points`;Ye&&console.time(ht),this.points=Ne;let Le=[];for(let Se=0;Se=Ve;Se--){let lt=+Date.now();xe=this.trees[Se]=this._createTree(this._cluster(xe,Se)),Ye&&console.log("z%d: %d clusters in %dms",Se,xe.numItems,+Date.now()-lt)}return Ye&&console.timeEnd("total time"),this}getClusters(Ne,Ye){let Ve=((Ne[0]+180)%360+360)%360-180,Xe=Math.max(-90,Math.min(90,Ne[1])),ht=Ne[2]===180?180:((Ne[2]+180)%360+360)%360-180,Le=Math.max(-90,Math.min(90,Ne[3]));if(Ne[2]-Ne[0]>=360)Ve=-180,ht=180;else if(Ve>ht){let Vt=this.getClusters([Ve,Xe,180,Le],Ye),ar=this.getClusters([-180,Xe,ht,Le],Ye);return Vt.concat(ar)}let xe=this.trees[this._limitZoom(Ye)],Se=xe.range(ge(Ve),ie(Le),ge(ht),ie(Xe)),lt=xe.data,Gt=[];for(let Vt of Se){let ar=this.stride*Vt;Gt.push(lt[ar+re]>1?Me(lt,ar,this.clusterProps):this.points[lt[ar+W]])}return Gt}getChildren(Ne){let Ye=this._getOriginId(Ne),Ve=this._getOriginZoom(Ne),Xe="No cluster with the specified id.",ht=this.trees[Ve];if(!ht)throw new Error(Xe);let Le=ht.data;if(Ye*this.stride>=Le.length)throw new Error(Xe);let xe=this.options.radius/(this.options.extent*Math.pow(2,Ve-1)),Se=ht.within(Le[Ye*this.stride],Le[Ye*this.stride+1],xe),lt=[];for(let Gt of Se){let Vt=Gt*this.stride;Le[Vt+4]===Ne&<.push(Le[Vt+re]>1?Me(Le,Vt,this.clusterProps):this.points[Le[Vt+W]])}if(lt.length===0)throw new Error(Xe);return lt}getLeaves(Ne,Ye,Ve){let Xe=[];return this._appendLeaves(Xe,Ne,Ye=Ye||10,Ve=Ve||0,0),Xe}getTile(Ne,Ye,Ve){let Xe=this.trees[this._limitZoom(Ne)],ht=Math.pow(2,Ne),{extent:Le,radius:xe}=this.options,Se=xe/Le,lt=(Ve-Se)/ht,Gt=(Ve+1+Se)/ht,Vt={features:[]};return this._addTileFeatures(Xe.range((Ye-Se)/ht,lt,(Ye+1+Se)/ht,Gt),Xe.data,Ye,Ve,ht,Vt),Ye===0&&this._addTileFeatures(Xe.range(1-Se/ht,lt,1,Gt),Xe.data,ht,Ve,ht,Vt),Ye===ht-1&&this._addTileFeatures(Xe.range(0,lt,Se/ht,Gt),Xe.data,-1,Ve,ht,Vt),Vt.features.length?Vt:null}getClusterExpansionZoom(Ne){let Ye=this._getOriginZoom(Ne)-1;for(;Ye<=this.options.maxZoom;){let Ve=this.getChildren(Ne);if(Ye++,Ve.length!==1)break;Ne=Ve[0].properties.cluster_id}return Ye}_appendLeaves(Ne,Ye,Ve,Xe,ht){let Le=this.getChildren(Ye);for(let xe of Le){let Se=xe.properties;if(Se&&Se.cluster?ht+Se.point_count<=Xe?ht+=Se.point_count:ht=this._appendLeaves(Ne,Se.cluster_id,Ve,Xe,ht):ht1,Gt,Vt,ar;if(lt)Gt=ke(Ye,Se,this.clusterProps),Vt=Ye[Se],ar=Ye[Se+1];else{let jr=this.points[Ye[Se+W]];Gt=jr.properties;let[ri,bi]=jr.geometry.coordinates;Vt=ge(ri),ar=ie(bi)}let Qr={type:1,geometry:[[Math.round(this.options.extent*(Vt*ht-Ve)),Math.round(this.options.extent*(ar*ht-Xe))]],tags:Gt},ai;ai=lt||this.options.generateId?Ye[Se+W]:this.points[Ye[Se+W]].id,ai!==void 0&&(Qr.id=ai),Le.features.push(Qr)}}_limitZoom(Ne){return Math.max(this.options.minZoom,Math.min(Math.floor(+Ne),this.options.maxZoom+1))}_cluster(Ne,Ye){let{radius:Ve,extent:Xe,reduce:ht,minPoints:Le}=this.options,xe=Ve/(Xe*Math.pow(2,Ye)),Se=Ne.data,lt=[],Gt=this.stride;for(let Vt=0;VtYe&&(ri+=Se[nn+re])}if(ri>jr&&ri>=Le){let bi,nn=ar*jr,Wi=Qr*jr,Ni=-1,_n=((Vt/Gt|0)<<5)+(Ye+1)+this.points.length;for(let $i of ai){let zn=$i*Gt;if(Se[zn+2]<=Ye)continue;Se[zn+2]=Ye;let Wn=Se[zn+re];nn+=Se[zn]*Wn,Wi+=Se[zn+1]*Wn,Se[zn+4]=_n,ht&&(bi||(bi=this._map(Se,Vt,!0),Ni=this.clusterProps.length,this.clusterProps.push(bi)),ht(bi,this._map(Se,zn)))}Se[Vt+4]=_n,lt.push(nn/ri,Wi/ri,1/0,_n,-1,ri),ht&<.push(Ni)}else{for(let bi=0;bi1)for(let bi of ai){let nn=bi*Gt;if(!(Se[nn+2]<=Ye)){Se[nn+2]=Ye;for(let Wi=0;Wi>5}_getOriginZoom(Ne){return(Ne-this.points.length)%32}_map(Ne,Ye,Ve){if(Ne[Ye+re]>1){let Le=this.clusterProps[Ne[Ye+ae]];return Ve?Object.assign({},Le):Le}let Xe=this.points[Ne[Ye+W]].properties,ht=this.options.map(Xe);return Ve&&ht===Xe?Object.assign({},ht):ht}}function Me(ut,Ne,Ye){return{type:"Feature",id:ut[Ne+W],properties:ke(ut,Ne,Ye),geometry:{type:"Point",coordinates:[(Ve=ut[Ne],360*(Ve-.5)),Te(ut[Ne+1])]}};var Ve}function ke(ut,Ne,Ye){let Ve=ut[Ne+re],Xe=Ve>=1e4?`${Math.round(Ve/1e3)}k`:Ve>=1e3?Math.round(Ve/100)/10+"k":Ve,ht=ut[Ne+ae],Le=ht===-1?{}:Object.assign({},Ye[ht]);return Object.assign(Le,{cluster:!0,cluster_id:ut[Ne+W],point_count:Ve,point_count_abbreviated:Xe})}function ge(ut){return ut/360+.5}function ie(ut){let Ne=Math.sin(ut*Math.PI/180),Ye=.5-.25*Math.log((1+Ne)/(1-Ne))/Math.PI;return Ye<0?0:Ye>1?1:Ye}function Te(ut){let Ne=(180-360*ut)*Math.PI/180;return 360*Math.atan(Math.exp(Ne))/Math.PI-90}function Ee(ut,Ne,Ye,Ve){let Xe=Ve,ht=Ne+(Ye-Ne>>1),Le,xe=Ye-Ne,Se=ut[Ne],lt=ut[Ne+1],Gt=ut[Ye],Vt=ut[Ye+1];for(let ar=Ne+3;arXe)Le=ar,Xe=Qr;else if(Qr===Xe){let ai=Math.abs(ar-ht);aiVe&&(Le-Ne>3&&Ee(ut,Ne,Le,Ve),ut[Le+2]=Xe,Ye-Le>3&&Ee(ut,Le,Ye,Ve))}function Ae(ut,Ne,Ye,Ve,Xe,ht){let Le=Xe-Ye,xe=ht-Ve;if(Le!==0||xe!==0){let Se=((ut-Ye)*Le+(Ne-Ve)*xe)/(Le*Le+xe*xe);Se>1?(Ye=Xe,Ve=ht):Se>0&&(Ye+=Le*Se,Ve+=xe*Se)}return Le=ut-Ye,xe=Ne-Ve,Le*Le+xe*xe}function ze(ut,Ne,Ye,Ve){let Xe={id:ut==null?null:ut,type:Ne,geometry:Ye,tags:Ve,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(Ne==="Point"||Ne==="MultiPoint"||Ne==="LineString")Ce(Xe,Ye);else if(Ne==="Polygon")Ce(Xe,Ye[0]);else if(Ne==="MultiLineString")for(let ht of Ye)Ce(Xe,ht);else if(Ne==="MultiPolygon")for(let ht of Ye)Ce(Xe,ht[0]);return Xe}function Ce(ut,Ne){for(let Ye=0;Ye0&&(Le+=Ve?(Xe*Gt-lt*ht)/2:Math.sqrt(Math.pow(lt-Xe,2)+Math.pow(Gt-ht,2))),Xe=lt,ht=Gt}let xe=Ne.length-3;Ne[2]=1,Ee(Ne,0,xe,Ye),Ne[xe+2]=1,Ne.size=Math.abs(Le),Ne.start=0,Ne.end=Ne.size}function Ge(ut,Ne,Ye,Ve){for(let Xe=0;Xe1?1:Ye}function qt(ut,Ne,Ye,Ve,Xe,ht,Le,xe){if(Ve/=Ne,ht>=(Ye/=Ne)&&Le=Ve)return null;let Se=[];for(let lt of ut){let Gt=lt.geometry,Vt=lt.type,ar=Xe===0?lt.minX:lt.minY,Qr=Xe===0?lt.maxX:lt.maxY;if(ar>=Ye&&Qr=Ve)continue;let ai=[];if(Vt==="Point"||Vt==="MultiPoint")rt(Gt,ai,Ye,Ve,Xe);else if(Vt==="LineString")ot(Gt,ai,Ye,Ve,Xe,!1,xe.lineMetrics);else if(Vt==="MultiLineString")kt(Gt,ai,Ye,Ve,Xe,!1);else if(Vt==="Polygon")kt(Gt,ai,Ye,Ve,Xe,!0);else if(Vt==="MultiPolygon")for(let jr of Gt){let ri=[];kt(jr,ri,Ye,Ve,Xe,!0),ri.length&&ai.push(ri)}if(ai.length){if(xe.lineMetrics&&Vt==="LineString"){for(let jr of ai)Se.push(ze(lt.id,Vt,jr,lt.tags));continue}Vt!=="LineString"&&Vt!=="MultiLineString"||(ai.length===1?(Vt="LineString",ai=ai[0]):Vt="MultiLineString"),Vt!=="Point"&&Vt!=="MultiPoint"||(Vt=ai.length===3?"Point":"MultiPoint"),Se.push(ze(lt.id,Vt,ai,lt.tags))}}return Se.length?Se:null}function rt(ut,Ne,Ye,Ve,Xe){for(let ht=0;ht=Ye&&Le<=Ve&&Ct(Ne,ut[ht],ut[ht+1],ut[ht+2])}}function ot(ut,Ne,Ye,Ve,Xe,ht,Le){let xe=Rt(ut),Se=Xe===0?Yt:xr,lt,Gt,Vt=ut.start;for(let ri=0;riYe&&(Gt=Se(xe,bi,nn,Ni,_n,Ye),Le&&(xe.start=Vt+lt*Gt)):$i>Ve?zn=Ye&&(Gt=Se(xe,bi,nn,Ni,_n,Ye),Wn=!0),zn>Ve&&$i<=Ve&&(Gt=Se(xe,bi,nn,Ni,_n,Ve),Wn=!0),!ht&&Wn&&(Le&&(xe.end=Vt+lt*Gt),Ne.push(xe),xe=Rt(ut)),Le&&(Vt+=lt)}let ar=ut.length-3,Qr=ut[ar],ai=ut[ar+1],jr=Xe===0?Qr:ai;jr>=Ye&&jr<=Ve&&Ct(xe,Qr,ai,ut[ar+2]),ar=xe.length-3,ht&&ar>=3&&(xe[ar]!==xe[0]||xe[ar+1]!==xe[1])&&Ct(xe,xe[0],xe[1],xe[2]),xe.length&&Ne.push(xe)}function Rt(ut){let Ne=[];return Ne.size=ut.size,Ne.start=ut.start,Ne.end=ut.end,Ne}function kt(ut,Ne,Ye,Ve,Xe,ht){for(let Le of ut)ot(Le,Ne,Ye,Ve,Xe,ht,!1)}function Ct(ut,Ne,Ye,Ve){ut.push(Ne,Ye,Ve)}function Yt(ut,Ne,Ye,Ve,Xe,ht){let Le=(ht-Ne)/(Ve-Ne);return Ct(ut,ht,Ye+(Xe-Ye)*Le,1),Le}function xr(ut,Ne,Ye,Ve,Xe,ht){let Le=(ht-Ye)/(Xe-Ye);return Ct(ut,Ne+(Ve-Ne)*Le,ht,1),Le}function er(ut,Ne){let Ye=[];for(let Ve=0;Ve0&&Ne.size<(Xe?Le:Ve))return void(Ye.numPoints+=Ne.length/3);let xe=[];for(let Se=0;SeLe)&&(Ye.numSimplified++,xe.push(Ne[Se],Ne[Se+1])),Ye.numPoints++;Xe&&function(Se,lt){let Gt=0;for(let Vt=0,ar=Se.length,Qr=ar-2;Vt0===lt)for(let Vt=0,ar=Se.length;Vt24)throw new Error("maxZoom should be in the 0-24 range");if(Ye.promoteId&&Ye.generateId)throw new Error("promoteId and generateId cannot be used together.");let Xe=function(ht,Le){let xe=[];if(ht.type==="FeatureCollection")for(let Se=0;Se1&&console.time("creation"),Qr=this.tiles[ar]=Lt(Ne,Ye,Ve,Xe,lt),this.tileCoords.push({z:Ye,x:Ve,y:Xe}),Gt)){Gt>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",Ye,Ve,Xe,Qr.numFeatures,Qr.numPoints,Qr.numSimplified),console.timeEnd("creation"));let Wn=`z${Ye}`;this.stats[Wn]=(this.stats[Wn]||0)+1,this.total++}if(Qr.source=Ne,ht==null){if(Ye===lt.indexMaxZoom||Qr.numPoints<=lt.indexMaxPoints)continue}else{if(Ye===lt.maxZoom||Ye===ht)continue;if(ht!=null){let Wn=ht-Ye;if(Ve!==Le>>Wn||Xe!==xe>>Wn)continue}}if(Qr.source=null,Ne.length===0)continue;Gt>1&&console.time("clipping");let ai=.5*lt.buffer/lt.extent,jr=.5-ai,ri=.5+ai,bi=1+ai,nn=null,Wi=null,Ni=null,_n=null,$i=qt(Ne,Vt,Ve-ai,Ve+ri,0,Qr.minX,Qr.maxX,lt),zn=qt(Ne,Vt,Ve+jr,Ve+bi,0,Qr.minX,Qr.maxX,lt);Ne=null,$i&&(nn=qt($i,Vt,Xe-ai,Xe+ri,1,Qr.minY,Qr.maxY,lt),Wi=qt($i,Vt,Xe+jr,Xe+bi,1,Qr.minY,Qr.maxY,lt),$i=null),zn&&(Ni=qt(zn,Vt,Xe-ai,Xe+ri,1,Qr.minY,Qr.maxY,lt),_n=qt(zn,Vt,Xe+jr,Xe+bi,1,Qr.minY,Qr.maxY,lt),zn=null),Gt>1&&console.timeEnd("clipping"),Se.push(nn||[],Ye+1,2*Ve,2*Xe),Se.push(Wi||[],Ye+1,2*Ve,2*Xe+1),Se.push(Ni||[],Ye+1,2*Ve+1,2*Xe),Se.push(_n||[],Ye+1,2*Ve+1,2*Xe+1)}}getTile(Ne,Ye,Ve){Ne=+Ne,Ye=+Ye,Ve=+Ve;let Xe=this.options,{extent:ht,debug:Le}=Xe;if(Ne<0||Ne>24)return null;let xe=1<1&&console.log("drilling down to z%d-%d-%d",Ne,Ye,Ve);let lt,Gt=Ne,Vt=Ye,ar=Ve;for(;!lt&&Gt>0;)Gt--,Vt>>=1,ar>>=1,lt=this.tiles[$t(Gt,Vt,ar)];return lt&<.source?(Le>1&&(console.log("found parent tile z%d-%d-%d",Gt,Vt,ar),console.time("drilling down")),this.splitTile(lt.source,Gt,Vt,ar,Ne,Ye,Ve),Le>1&&console.timeEnd("drilling down"),this.tiles[Se]?xt(this.tiles[Se],ht):null):null}}function $t(ut,Ne,Ye){return 32*((1<{Vt.properties=Qr;let ai={};for(let jr of ar)ai[jr]=Se[jr].evaluate(Gt,Vt);return ai},Le.reduce=(Qr,ai)=>{Vt.properties=ai;for(let jr of ar)Gt.accumulated=Qr[jr],Qr[jr]=lt[jr].evaluate(Gt,Vt)},Le}(Ne)).load((yield this._pendingData).features):(Xe=yield this._pendingData,new Ht(Xe,Ne.geojsonVtOptions)),this.loaded={};let ht={};if(Ve){let Le=Ve.finish();Le&&(ht.resourceTiming={},ht.resourceTiming[Ne.source]=JSON.parse(JSON.stringify(Le)))}return ht}catch(ht){if(delete this._pendingRequest,i.bB(ht))return{abandoned:!0};throw ht}var Xe})}getData(){return i._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(Ne){let Ye=this.loaded;return Ye&&Ye[Ne.uid]?super.reloadTile(Ne):this.loadTile(Ne)}loadAndProcessGeoJSON(Ne,Ye){return i._(this,void 0,void 0,function*(){let Ve=yield this.loadGeoJSON(Ne,Ye);if(delete this._pendingRequest,typeof Ve!="object")throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`);if(d(Ve,!0),Ne.filter){let Xe=i.bC(Ne.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(Xe.result==="error")throw new Error(Xe.value.map(Le=>`${Le.key}: ${Le.message}`).join(", "));Ve={type:"FeatureCollection",features:Ve.features.filter(Le=>Xe.value.evaluate({zoom:0},Le))}}return Ve})}loadGeoJSON(Ne,Ye){return i._(this,void 0,void 0,function*(){let{promoteId:Ve}=Ne;if(Ne.request){let Xe=yield i.h(Ne.request,Ye);return this._dataUpdateable=_r(Xe.data,Ve)?Br(Xe.data,Ve):void 0,Xe.data}if(typeof Ne.data=="string")try{let Xe=JSON.parse(Ne.data);return this._dataUpdateable=_r(Xe,Ve)?Br(Xe,Ve):void 0,Xe}catch(Xe){throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`)}if(!Ne.dataDiff)throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${Ne.source}`);return function(Xe,ht,Le){var xe,Se,lt,Gt;if(ht.removeAll&&Xe.clear(),ht.remove)for(let Vt of ht.remove)Xe.delete(Vt);if(ht.add)for(let Vt of ht.add){let ar=fr(Vt,Le);ar!=null&&Xe.set(ar,Vt)}if(ht.update)for(let Vt of ht.update){let ar=Xe.get(Vt.id);if(ar==null)continue;let Qr=!Vt.removeAllProperties&&(((xe=Vt.removeProperties)===null||xe===void 0?void 0:xe.length)>0||((Se=Vt.addOrUpdateProperties)===null||Se===void 0?void 0:Se.length)>0);if((Vt.newGeometry||Vt.removeAllProperties||Qr)&&(ar=Object.assign({},ar),Xe.set(Vt.id,ar),Qr&&(ar.properties=Object.assign({},ar.properties))),Vt.newGeometry&&(ar.geometry=Vt.newGeometry),Vt.removeAllProperties)ar.properties={};else if(((lt=Vt.removeProperties)===null||lt===void 0?void 0:lt.length)>0)for(let ai of Vt.removeProperties)Object.prototype.hasOwnProperty.call(ar.properties,ai)&&delete ar.properties[ai];if(((Gt=Vt.addOrUpdateProperties)===null||Gt===void 0?void 0:Gt.length)>0)for(let{key:ai,value:jr}of Vt.addOrUpdateProperties)ar.properties[ai]=jr}}(this._dataUpdateable,Ne.dataDiff,Ve),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}})}removeSource(Ne){return i._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(Ne){return this._geoJSONIndex.getClusterExpansionZoom(Ne.clusterId)}getClusterChildren(Ne){return this._geoJSONIndex.getChildren(Ne.clusterId)}getClusterLeaves(Ne){return this._geoJSONIndex.getLeaves(Ne.clusterId,Ne.limit,Ne.offset)}}class Nr{constructor(Ne){this.self=Ne,this.actor=new i.F(Ne),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(Ye,Ve)=>{if(this.externalWorkerSourceTypes[Ye])throw new Error(`Worker source with name "${Ye}" already registered.`);this.externalWorkerSourceTypes[Ye]=Ve},this.self.addProtocol=i.bi,this.self.removeProtocol=i.bj,this.self.registerRTLTextPlugin=Ye=>{if(i.bD.isParsed())throw new Error("RTL text plugin already registered.");i.bD.setMethods(Ye)},this.actor.registerMessageHandler("LDT",(Ye,Ve)=>this._getDEMWorkerSource(Ye,Ve.source).loadTile(Ve)),this.actor.registerMessageHandler("RDT",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getDEMWorkerSource(Ye,Ve.source).removeTile(Ve)})),this.actor.registerMessageHandler("GCEZ",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterExpansionZoom(Ve)})),this.actor.registerMessageHandler("GCC",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterChildren(Ve)})),this.actor.registerMessageHandler("GCL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterLeaves(Ve)})),this.actor.registerMessageHandler("LD",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).loadData(Ve)),this.actor.registerMessageHandler("GD",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).getData()),this.actor.registerMessageHandler("LT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).loadTile(Ve)),this.actor.registerMessageHandler("RT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).reloadTile(Ve)),this.actor.registerMessageHandler("AT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).abortTile(Ve)),this.actor.registerMessageHandler("RMT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).removeTile(Ve)),this.actor.registerMessageHandler("RS",(Ye,Ve)=>i._(this,void 0,void 0,function*(){if(!this.workerSources[Ye]||!this.workerSources[Ye][Ve.type]||!this.workerSources[Ye][Ve.type][Ve.source])return;let Xe=this.workerSources[Ye][Ve.type][Ve.source];delete this.workerSources[Ye][Ve.type][Ve.source],Xe.removeSource!==void 0&&Xe.removeSource(Ve)})),this.actor.registerMessageHandler("RM",Ye=>i._(this,void 0,void 0,function*(){delete this.layerIndexes[Ye],delete this.availableImages[Ye],delete this.workerSources[Ye],delete this.demWorkerSources[Ye]})),this.actor.registerMessageHandler("SR",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this.referrer=Ve})),this.actor.registerMessageHandler("SRPS",(Ye,Ve)=>this._syncRTLPluginState(Ye,Ve)),this.actor.registerMessageHandler("IS",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this.self.importScripts(Ve)})),this.actor.registerMessageHandler("SI",(Ye,Ve)=>this._setImages(Ye,Ve)),this.actor.registerMessageHandler("UL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Ye).update(Ve.layers,Ve.removedIds)})),this.actor.registerMessageHandler("SL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Ye).replace(Ve)}))}_setImages(Ne,Ye){return i._(this,void 0,void 0,function*(){this.availableImages[Ne]=Ye;for(let Ve in this.workerSources[Ne]){let Xe=this.workerSources[Ne][Ve];for(let ht in Xe)Xe[ht].availableImages=Ye}})}_syncRTLPluginState(Ne,Ye){return i._(this,void 0,void 0,function*(){if(i.bD.isParsed())return i.bD.getState();if(Ye.pluginStatus!=="loading")return i.bD.setState(Ye),Ye;let Ve=Ye.pluginURL;if(this.self.importScripts(Ve),i.bD.isParsed()){let Xe={pluginStatus:"loaded",pluginURL:Ve};return i.bD.setState(Xe),Xe}throw i.bD.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${Ve}`)})}_getAvailableImages(Ne){let Ye=this.availableImages[Ne];return Ye||(Ye=[]),Ye}_getLayerIndex(Ne){let Ye=this.layerIndexes[Ne];return Ye||(Ye=this.layerIndexes[Ne]=new a),Ye}_getWorkerSource(Ne,Ye,Ve){if(this.workerSources[Ne]||(this.workerSources[Ne]={}),this.workerSources[Ne][Ye]||(this.workerSources[Ne][Ye]={}),!this.workerSources[Ne][Ye][Ve]){let Xe={sendAsync:(ht,Le)=>(ht.targetMapId=Ne,this.actor.sendAsync(ht,Le))};switch(Ye){case"vector":this.workerSources[Ne][Ye][Ve]=new u(Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne));break;case"geojson":this.workerSources[Ne][Ye][Ve]=new Or(Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne));break;default:this.workerSources[Ne][Ye][Ve]=new this.externalWorkerSourceTypes[Ye](Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne))}}return this.workerSources[Ne][Ye][Ve]}_getDEMWorkerSource(Ne,Ye){return this.demWorkerSources[Ne]||(this.demWorkerSources[Ne]={}),this.demWorkerSources[Ne][Ye]||(this.demWorkerSources[Ne][Ye]=new c),this.demWorkerSources[Ne][Ye]}}return i.i(self)&&(self.worker=new Nr(self)),Nr}),r("index",["exports","./shared"],function(i,a){"use strict";var o="4.7.1";let s,l,u={now:typeof performance!="undefined"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:le=>new Promise((w,B)=>{let Q=requestAnimationFrame(w);le.signal.addEventListener("abort",()=>{cancelAnimationFrame(Q),B(a.c())})}),getImageData(le,w=0){return this.getImageCanvasContext(le).getImageData(-w,-w,le.width+2*w,le.height+2*w)},getImageCanvasContext(le){let w=window.document.createElement("canvas"),B=w.getContext("2d",{willReadFrequently:!0});if(!B)throw new Error("failed to create canvas 2d context");return w.width=le.width,w.height=le.height,B.drawImage(le,0,0,le.width,le.height),B},resolveURL:le=>(s||(s=document.createElement("a")),s.href=le,s.href),hardwareConcurrency:typeof navigator!="undefined"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(l==null&&(l=matchMedia("(prefers-reduced-motion: reduce)")),l.matches)}};class c{static testProp(w){if(!c.docStyle)return w[0];for(let B=0;B{window.removeEventListener("click",c.suppressClickInternal,!0)},0)}static getScale(w){let B=w.getBoundingClientRect();return{x:B.width/w.offsetWidth||1,y:B.height/w.offsetHeight||1,boundingClientRect:B}}static getPoint(w,B,Q){let ee=B.boundingClientRect;return new a.P((Q.clientX-ee.left)/B.x-w.clientLeft,(Q.clientY-ee.top)/B.y-w.clientTop)}static mousePos(w,B){let Q=c.getScale(w);return c.getPoint(w,Q,B)}static touchPos(w,B){let Q=[],ee=c.getScale(w);for(let se=0;se{h&&b(h),h=null,x=!0},d.onerror=()=>{v=!0,h=null},d.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(le){let w,B,Q,ee;le.resetRequestQueue=()=>{w=[],B=0,Q=0,ee={}},le.addThrottleControl=it=>{let yt=Q++;return ee[yt]=it,yt},le.removeThrottleControl=it=>{delete ee[it],qe()},le.getImage=(it,yt,Ot=!0)=>new Promise((Nt,hr)=>{f.supported&&(it.headers||(it.headers={}),it.headers.accept="image/webp,*/*"),a.e(it,{type:"image"}),w.push({abortController:yt,requestParameters:it,supportImageRefresh:Ot,state:"queued",onError:Sr=>{hr(Sr)},onSuccess:Sr=>{Nt(Sr)}}),qe()});let se=it=>a._(this,void 0,void 0,function*(){it.state="running";let{requestParameters:yt,supportImageRefresh:Ot,onError:Nt,onSuccess:hr,abortController:Sr}=it,he=Ot===!1&&!a.i(self)&&!a.g(yt.url)&&(!yt.headers||Object.keys(yt.headers).reduce((Oe,Je)=>Oe&&Je==="accept",!0));B++;let be=he?je(yt,Sr):a.m(yt,Sr);try{let Oe=yield be;delete it.abortController,it.state="completed",Oe.data instanceof HTMLImageElement||a.b(Oe.data)?hr(Oe):Oe.data&&hr({data:yield(Pe=Oe.data,typeof createImageBitmap=="function"?a.d(Pe):a.f(Pe)),cacheControl:Oe.cacheControl,expires:Oe.expires})}catch(Oe){delete it.abortController,Nt(Oe)}finally{B--,qe()}var Pe}),qe=()=>{let it=(()=>{for(let yt of Object.keys(ee))if(ee[yt]())return!0;return!1})()?a.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:a.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let yt=B;yt0;yt++){let Ot=w.shift();Ot.abortController.signal.aborted?yt--:se(Ot)}},je=(it,yt)=>new Promise((Ot,Nt)=>{let hr=new Image,Sr=it.url,he=it.credentials;he&&he==="include"?hr.crossOrigin="use-credentials":(he&&he==="same-origin"||!a.s(Sr))&&(hr.crossOrigin="anonymous"),yt.signal.addEventListener("abort",()=>{hr.src="",Nt(a.c())}),hr.fetchPriority="high",hr.onload=()=>{hr.onerror=hr.onload=null,Ot({data:hr})},hr.onerror=()=>{hr.onerror=hr.onload=null,yt.signal.aborted||Nt(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},hr.src=Sr})}(g||(g={})),g.resetRequestQueue();class E{constructor(w){this._transformRequestFn=w}transformRequest(w,B){return this._transformRequestFn&&this._transformRequestFn(w,B)||{url:w}}setTransformRequest(w){this._transformRequestFn=w}}function k(le){var w=new a.A(3);return w[0]=le[0],w[1]=le[1],w[2]=le[2],w}var A,L=function(le,w,B){return le[0]=w[0]-B[0],le[1]=w[1]-B[1],le[2]=w[2]-B[2],le};A=new a.A(3),a.A!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0);var _=function(le){var w=le[0],B=le[1];return w*w+B*B};function C(le){let w=[];if(typeof le=="string")w.push({id:"default",url:le});else if(le&&le.length>0){let B=[];for(let{id:Q,url:ee}of le){let se=`${Q}${ee}`;B.indexOf(se)===-1&&(B.push(se),w.push({id:Q,url:ee}))}}return w}function M(le,w,B){let Q=le.split("?");return Q[0]+=`${w}${B}`,Q.join("?")}(function(){var le=new a.A(2);a.A!=Float32Array&&(le[0]=0,le[1]=0)})();class p{constructor(w,B,Q,ee){this.context=w,this.format=Q,this.texture=w.gl.createTexture(),this.update(B,ee)}update(w,B,Q){let{width:ee,height:se}=w,qe=!(this.size&&this.size[0]===ee&&this.size[1]===se||Q),{context:je}=this,{gl:it}=je;if(this.useMipmap=!!(B&&B.useMipmap),it.bindTexture(it.TEXTURE_2D,this.texture),je.pixelStoreUnpackFlipY.set(!1),je.pixelStoreUnpack.set(1),je.pixelStoreUnpackPremultiplyAlpha.set(this.format===it.RGBA&&(!B||B.premultiply!==!1)),qe)this.size=[ee,se],w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?it.texImage2D(it.TEXTURE_2D,0,this.format,this.format,it.UNSIGNED_BYTE,w):it.texImage2D(it.TEXTURE_2D,0,this.format,ee,se,0,this.format,it.UNSIGNED_BYTE,w.data);else{let{x:yt,y:Ot}=Q||{x:0,y:0};w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?it.texSubImage2D(it.TEXTURE_2D,0,yt,Ot,it.RGBA,it.UNSIGNED_BYTE,w):it.texSubImage2D(it.TEXTURE_2D,0,yt,Ot,ee,se,it.RGBA,it.UNSIGNED_BYTE,w.data)}this.useMipmap&&this.isSizePowerOfTwo()&&it.generateMipmap(it.TEXTURE_2D)}bind(w,B,Q){let{context:ee}=this,{gl:se}=ee;se.bindTexture(se.TEXTURE_2D,this.texture),Q!==se.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(Q=se.LINEAR),w!==this.filter&&(se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MAG_FILTER,w),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MIN_FILTER,Q||w),this.filter=w),B!==this.wrap&&(se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_S,B),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_T,B),this.wrap=B)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:w}=this.context;w.deleteTexture(this.texture),this.texture=null}}function P(le){let{userImage:w}=le;return!!(w&&w.render&&w.render())&&(le.data.replace(new Uint8Array(w.data.buffer)),!0)}class T extends a.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new a.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(w){if(this.loaded!==w&&(this.loaded=w,w)){for(let{ids:B,promiseResolve:Q}of this.requestors)Q(this._getImagesForIds(B));this.requestors=[]}}getImage(w){let B=this.images[w];if(B&&!B.data&&B.spriteData){let Q=B.spriteData;B.data=new a.R({width:Q.width,height:Q.height},Q.context.getImageData(Q.x,Q.y,Q.width,Q.height).data),B.spriteData=null}return B}addImage(w,B){if(this.images[w])throw new Error(`Image id ${w} already exist, use updateImage instead`);this._validate(w,B)&&(this.images[w]=B)}_validate(w,B){let Q=!0,ee=B.data||B.spriteData;return this._validateStretch(B.stretchX,ee&&ee.width)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchX" value`))),Q=!1),this._validateStretch(B.stretchY,ee&&ee.height)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchY" value`))),Q=!1),this._validateContent(B.content,B)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "content" value`))),Q=!1),Q}_validateStretch(w,B){if(!w)return!0;let Q=0;for(let ee of w){if(ee[0]{let ee=!0;if(!this.isLoaded())for(let se of w)this.images[se]||(ee=!1);this.isLoaded()||ee?B(this._getImagesForIds(w)):this.requestors.push({ids:w,promiseResolve:B})})}_getImagesForIds(w){let B={};for(let Q of w){let ee=this.getImage(Q);ee||(this.fire(new a.k("styleimagemissing",{id:Q})),ee=this.getImage(Q)),ee?B[Q]={data:ee.data.clone(),pixelRatio:ee.pixelRatio,sdf:ee.sdf,version:ee.version,stretchX:ee.stretchX,stretchY:ee.stretchY,content:ee.content,textFitWidth:ee.textFitWidth,textFitHeight:ee.textFitHeight,hasRenderCallback:!!(ee.userImage&&ee.userImage.render)}:a.w(`Image "${Q}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}return B}getPixelSize(){let{width:w,height:B}=this.atlasImage;return{width:w,height:B}}getPattern(w){let B=this.patterns[w],Q=this.getImage(w);if(!Q)return null;if(B&&B.position.version===Q.version)return B.position;if(B)B.position.version=Q.version;else{let ee={w:Q.data.width+2,h:Q.data.height+2,x:0,y:0},se=new a.I(ee,Q);this.patterns[w]={bin:ee,position:se}}return this._updatePatternAtlas(),this.patterns[w].position}bind(w){let B=w.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new p(w,this.atlasImage,B.RGBA),this.atlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE)}_updatePatternAtlas(){let w=[];for(let se in this.patterns)w.push(this.patterns[se].bin);let{w:B,h:Q}=a.p(w),ee=this.atlasImage;ee.resize({width:B||1,height:Q||1});for(let se in this.patterns){let{bin:qe}=this.patterns[se],je=qe.x+1,it=qe.y+1,yt=this.getImage(se).data,Ot=yt.width,Nt=yt.height;a.R.copy(yt,ee,{x:0,y:0},{x:je,y:it},{width:Ot,height:Nt}),a.R.copy(yt,ee,{x:0,y:Nt-1},{x:je,y:it-1},{width:Ot,height:1}),a.R.copy(yt,ee,{x:0,y:0},{x:je,y:it+Nt},{width:Ot,height:1}),a.R.copy(yt,ee,{x:Ot-1,y:0},{x:je-1,y:it},{width:1,height:Nt}),a.R.copy(yt,ee,{x:0,y:0},{x:je+Ot,y:it},{width:1,height:Nt})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(w){for(let B of w){if(this.callbackDispatchedThisFrame[B])continue;this.callbackDispatchedThisFrame[B]=!0;let Q=this.getImage(B);Q||a.w(`Image with ID: "${B}" was not found`),P(Q)&&this.updateImage(B,Q)}}}let F=1e20;function q(le,w,B,Q,ee,se,qe,je,it){for(let yt=w;yt-1);it++,se[it]=je,qe[it]=yt,qe[it+1]=F}for(let je=0,it=0;je65535)throw new Error("glyphs > 65535 not supported");if(Q.ranges[se])return{stack:w,id:B,glyph:ee};if(!this.url)throw new Error("glyphsUrl is not set");if(!Q.requests[se]){let je=H.loadGlyphRange(w,se,this.url,this.requestManager);Q.requests[se]=je}let qe=yield Q.requests[se];for(let je in qe)this._doesCharSupportLocalGlyph(+je)||(Q.glyphs[+je]=qe[+je]);return Q.ranges[se]=!0,{stack:w,id:B,glyph:qe[B]||null}})}_doesCharSupportLocalGlyph(w){return!!this.localIdeographFontFamily&&new RegExp("\\p{Ideo}|\\p{sc=Hang}|\\p{sc=Hira}|\\p{sc=Kana}","u").test(String.fromCodePoint(w))}_tinySDF(w,B,Q){let ee=this.localIdeographFontFamily;if(!ee||!this._doesCharSupportLocalGlyph(Q))return;let se=w.tinySDF;if(!se){let je="400";/bold/i.test(B)?je="900":/medium/i.test(B)?je="500":/light/i.test(B)&&(je="200"),se=w.tinySDF=new H.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:ee,fontWeight:je})}let qe=se.draw(String.fromCharCode(Q));return{id:Q,bitmap:new a.o({width:qe.width||60,height:qe.height||60},qe.data),metrics:{width:qe.glyphWidth/2||24,height:qe.glyphHeight/2||24,left:qe.glyphLeft/2+.5||0,top:qe.glyphTop/2-27.5||-8,advance:qe.glyphAdvance/2||24,isDoubleResolution:!0}}}}H.loadGlyphRange=function(le,w,B,Q){return a._(this,void 0,void 0,function*(){let ee=256*w,se=ee+255,qe=Q.transformRequest(B.replace("{fontstack}",le).replace("{range}",`${ee}-${se}`),"Glyphs"),je=yield a.l(qe,new AbortController);if(!je||!je.data)throw new Error(`Could not load glyph range. range: ${w}, ${ee}-${se}`);let it={};for(let yt of a.n(je.data))it[yt.id]=yt;return it})},H.TinySDF=class{constructor({fontSize:le=24,buffer:w=3,radius:B=8,cutoff:Q=.25,fontFamily:ee="sans-serif",fontWeight:se="normal",fontStyle:qe="normal"}={}){this.buffer=w,this.cutoff=Q,this.radius=B;let je=this.size=le+4*w,it=this._createCanvas(je),yt=this.ctx=it.getContext("2d",{willReadFrequently:!0});yt.font=`${qe} ${se} ${le}px ${ee}`,yt.textBaseline="alphabetic",yt.textAlign="left",yt.fillStyle="black",this.gridOuter=new Float64Array(je*je),this.gridInner=new Float64Array(je*je),this.f=new Float64Array(je),this.z=new Float64Array(je+1),this.v=new Uint16Array(je)}_createCanvas(le){let w=document.createElement("canvas");return w.width=w.height=le,w}draw(le){let{width:w,actualBoundingBoxAscent:B,actualBoundingBoxDescent:Q,actualBoundingBoxLeft:ee,actualBoundingBoxRight:se}=this.ctx.measureText(le),qe=Math.ceil(B),je=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(se-ee))),it=Math.min(this.size-this.buffer,qe+Math.ceil(Q)),yt=je+2*this.buffer,Ot=it+2*this.buffer,Nt=Math.max(yt*Ot,0),hr=new Uint8ClampedArray(Nt),Sr={data:hr,width:yt,height:Ot,glyphWidth:je,glyphHeight:it,glyphTop:qe,glyphLeft:0,glyphAdvance:w};if(je===0||it===0)return Sr;let{ctx:he,buffer:be,gridInner:Pe,gridOuter:Oe}=this;he.clearRect(be,be,je,it),he.fillText(le,be,be+qe);let Je=he.getImageData(be,be,je,it);Oe.fill(F,0,Nt),Pe.fill(0,0,Nt);for(let He=0;He0?Ut*Ut:0,Pe[Dt]=Ut<0?Ut*Ut:0}}q(Oe,0,0,yt,Ot,yt,this.f,this.v,this.z),q(Pe,be,be,je,it,yt,this.f,this.v,this.z);for(let He=0;He1&&(it=w[++je]);let Ot=Math.abs(yt-it.left),Nt=Math.abs(yt-it.right),hr=Math.min(Ot,Nt),Sr,he=se/Q*(ee+1);if(it.isDash){let be=ee-Math.abs(he);Sr=Math.sqrt(hr*hr+be*be)}else Sr=ee-Math.sqrt(hr*hr+he*he);this.data[qe+yt]=Math.max(0,Math.min(255,Sr+128))}}}addRegularDash(w){for(let je=w.length-1;je>=0;--je){let it=w[je],yt=w[je+1];it.zeroLength?w.splice(je,1):yt&&yt.isDash===it.isDash&&(yt.left=it.left,w.splice(je,1))}let B=w[0],Q=w[w.length-1];B.isDash===Q.isDash&&(B.left=Q.left-this.width,Q.right=B.right+this.width);let ee=this.width*this.nextRow,se=0,qe=w[se];for(let je=0;je1&&(qe=w[++se]);let it=Math.abs(je-qe.left),yt=Math.abs(je-qe.right),Ot=Math.min(it,yt);this.data[ee+je]=Math.max(0,Math.min(255,(qe.isDash?Ot:-Ot)+128))}}addDash(w,B){let Q=B?7:0,ee=2*Q+1;if(this.nextRow+ee>this.height)return a.w("LineAtlas out of space"),null;let se=0;for(let je=0;je{B.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[_e]}numActive(){return Object.keys(this.active).length}}let ke=Math.floor(u.hardwareConcurrency/2),ge,ie;function Te(){return ge||(ge=new Me),ge}Me.workerCount=a.C(globalThis)?Math.max(Math.min(ke,3),1):1;class Ee{constructor(w,B){this.workerPool=w,this.actors=[],this.currentActor=0,this.id=B;let Q=this.workerPool.acquire(B);for(let ee=0;ee{B.remove()}),this.actors=[],w&&this.workerPool.release(this.id)}registerMessageHandler(w,B){for(let Q of this.actors)Q.registerMessageHandler(w,B)}}function Ae(){return ie||(ie=new Ee(Te(),a.G),ie.registerMessageHandler("GR",(le,w,B)=>a.m(w,B))),ie}function ze(le,w){let B=a.H();return a.J(B,B,[1,1,0]),a.K(B,B,[.5*le.width,.5*le.height,1]),a.L(B,B,le.calculatePosMatrix(w.toUnwrapped()))}function Ce(le,w,B,Q,ee,se){let qe=function(Nt,hr,Sr){if(Nt)for(let he of Nt){let be=hr[he];if(be&&be.source===Sr&&be.type==="fill-extrusion")return!0}else for(let he in hr){let be=hr[he];if(be.source===Sr&&be.type==="fill-extrusion")return!0}return!1}(ee&&ee.layers,w,le.id),je=se.maxPitchScaleFactor(),it=le.tilesIn(Q,je,qe);it.sort(me);let yt=[];for(let Nt of it)yt.push({wrappedTileID:Nt.tileID.wrapped().key,queryResults:Nt.tile.queryRenderedFeatures(w,B,le._state,Nt.queryGeometry,Nt.cameraQueryGeometry,Nt.scale,ee,se,je,ze(le.transform,Nt.tileID))});let Ot=function(Nt){let hr={},Sr={};for(let he of Nt){let be=he.queryResults,Pe=he.wrappedTileID,Oe=Sr[Pe]=Sr[Pe]||{};for(let Je in be){let He=be[Je],et=Oe[Je]=Oe[Je]||{},Mt=hr[Je]=hr[Je]||[];for(let Dt of He)et[Dt.featureIndex]||(et[Dt.featureIndex]=!0,Mt.push(Dt))}}return hr}(yt);for(let Nt in Ot)Ot[Nt].forEach(hr=>{let Sr=hr.feature,he=le.getFeatureState(Sr.layer["source-layer"],Sr.id);Sr.source=Sr.layer.source,Sr.layer["source-layer"]&&(Sr.sourceLayer=Sr.layer["source-layer"]),Sr.state=he});return Ot}function me(le,w){let B=le.tileID,Q=w.tileID;return B.overscaledZ-Q.overscaledZ||B.canonical.y-Q.canonical.y||B.wrap-Q.wrap||B.canonical.x-Q.canonical.x}function Re(le,w,B){return a._(this,void 0,void 0,function*(){let Q=le;if(le.url?Q=(yield a.h(w.transformRequest(le.url,"Source"),B)).data:yield u.frameAsync(B),!Q)return null;let ee=a.M(a.e(Q,le),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in Q&&Q.vector_layers&&(ee.vectorLayerIds=Q.vector_layers.map(se=>se.id)),ee})}class ce{constructor(w,B){w&&(B?this.setSouthWest(w).setNorthEast(B):Array.isArray(w)&&(w.length===4?this.setSouthWest([w[0],w[1]]).setNorthEast([w[2],w[3]]):this.setSouthWest(w[0]).setNorthEast(w[1])))}setNorthEast(w){return this._ne=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}setSouthWest(w){return this._sw=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}extend(w){let B=this._sw,Q=this._ne,ee,se;if(w instanceof a.N)ee=w,se=w;else{if(!(w instanceof ce))return Array.isArray(w)?w.length===4||w.every(Array.isArray)?this.extend(ce.convert(w)):this.extend(a.N.convert(w)):w&&("lng"in w||"lon"in w)&&"lat"in w?this.extend(a.N.convert(w)):this;if(ee=w._sw,se=w._ne,!ee||!se)return this}return B||Q?(B.lng=Math.min(ee.lng,B.lng),B.lat=Math.min(ee.lat,B.lat),Q.lng=Math.max(se.lng,Q.lng),Q.lat=Math.max(se.lat,Q.lat)):(this._sw=new a.N(ee.lng,ee.lat),this._ne=new a.N(se.lng,se.lat)),this}getCenter(){return new a.N((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new a.N(this.getWest(),this.getNorth())}getSouthEast(){return new a.N(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(w){let{lng:B,lat:Q}=a.N.convert(w),ee=this._sw.lng<=B&&B<=this._ne.lng;return this._sw.lng>this._ne.lng&&(ee=this._sw.lng>=B&&B>=this._ne.lng),this._sw.lat<=Q&&Q<=this._ne.lat&&ee}static convert(w){return w instanceof ce?w:w&&new ce(w)}static fromLngLat(w,B=0){let Q=360*B/40075017,ee=Q/Math.cos(Math.PI/180*w.lat);return new ce(new a.N(w.lng-ee,w.lat-Q),new a.N(w.lng+ee,w.lat+Q))}adjustAntiMeridian(){let w=new a.N(this._sw.lng,this._sw.lat),B=new a.N(this._ne.lng,this._ne.lat);return new ce(w,w.lng>B.lng?new a.N(B.lng+360,B.lat):B)}}class Ge{constructor(w,B,Q){this.bounds=ce.convert(this.validateBounds(w)),this.minzoom=B||0,this.maxzoom=Q||24}validateBounds(w){return Array.isArray(w)&&w.length===4?[Math.max(-180,w[0]),Math.max(-90,w[1]),Math.min(180,w[2]),Math.min(90,w[3])]:[-180,-90,180,90]}contains(w){let B=Math.pow(2,w.z),Q=Math.floor(a.O(this.bounds.getWest())*B),ee=Math.floor(a.Q(this.bounds.getNorth())*B),se=Math.ceil(a.O(this.bounds.getEast())*B),qe=Math.ceil(a.Q(this.bounds.getSouth())*B);return w.x>=Q&&w.x=ee&&w.y{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return a.e({},this._options)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q={request:this.map._requestManager.transformRequest(B,"Tile"),uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,tileSize:this.tileSize*w.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};Q.request.collectResourceTiming=this._collectResourceTiming;let ee="RT";if(w.actor&&w.state!=="expired"){if(w.state==="loading")return new Promise((se,qe)=>{w.reloadPromise={resolve:se,reject:qe}})}else w.actor=this.dispatcher.getActor(),ee="LT";w.abortController=new AbortController;try{let se=yield w.actor.sendAsync({type:ee,data:Q},w.abortController);if(delete w.abortController,w.aborted)return;this._afterTileLoadWorkerResponse(w,se)}catch(se){if(delete w.abortController,w.aborted)return;if(se&&se.status!==404)throw se;this._afterTileLoadWorkerResponse(w,null)}})}_afterTileLoadWorkerResponse(w,B){if(B&&B.resourceTiming&&(w.resourceTiming=B.resourceTiming),B&&this.map._refreshExpiredTiles&&w.setExpiryData(B),w.loadVectorData(B,this.map.painter),w.reloadPromise){let Q=w.reloadPromise;w.reloadPromise=null,this.loadTile(w).then(Q.resolve).catch(Q.reject)}}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.actor&&(yield w.actor.sendAsync({type:"AT",data:{uid:w.uid,type:this.type,source:this.id}}))})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),w.actor&&(yield w.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class ct extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.setEventedParent(ee),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=a.e({type:"raster"},B),a.e(this,a.M(B,["url","scheme","tileSize"]))}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let w=yield Re(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,w&&(a.e(this,w),w.bounds&&(this.tileBounds=new Ge(w.bounds,this.minzoom,this.maxzoom)),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})))}catch(w){this._tileJSONRequest=null,this.fire(new a.j(w))}})}loaded(){return this._loaded}onAdd(w){this.map=w,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(w){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),w(),this.load()}setTiles(w){return this.setSourceProperty(()=>{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}serialize(){return a.e({},this._options)}hasTile(w){return!this.tileBounds||this.tileBounds.contains(w.canonical)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);w.abortController=new AbortController;try{let Q=yield g.getImage(this.map._requestManager.transformRequest(B,"Tile"),w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(Q&&Q.data){this.map._refreshExpiredTiles&&Q.cacheControl&&Q.expires&&w.setExpiryData({cacheControl:Q.cacheControl,expires:Q.expires});let ee=this.map.painter.context,se=ee.gl,qe=Q.data;w.texture=this.map.painter.getTileTexture(qe.width),w.texture?w.texture.update(qe,{useMipmap:!0}):(w.texture=new p(ee,qe,se.RGBA,{useMipmap:!0}),w.texture.bind(se.LINEAR,se.CLAMP_TO_EDGE,se.LINEAR_MIPMAP_NEAREST)),w.state="loaded"}}catch(Q){if(delete w.abortController,w.aborted)w.state="unloaded";else if(Q)throw w.state="errored",Q}})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController)})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.texture&&this.map.painter.saveTileTexture(w.texture)})}hasTransition(){return!1}}class qt extends ct{constructor(w,B,Q,ee){super(w,B,Q,ee),this.type="raster-dem",this.maxzoom=22,this._options=a.e({type:"raster-dem"},B),this.encoding=B.encoding||"mapbox",this.redFactor=B.redFactor,this.greenFactor=B.greenFactor,this.blueFactor=B.blueFactor,this.baseShift=B.baseShift}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q=this.map._requestManager.transformRequest(B,"Tile");w.neighboringTiles=this._getNeighboringTiles(w.tileID),w.abortController=new AbortController;try{let ee=yield g.getImage(Q,w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(ee&&ee.data){let se=ee.data;this.map._refreshExpiredTiles&&ee.cacheControl&&ee.expires&&w.setExpiryData({cacheControl:ee.cacheControl,expires:ee.expires});let qe=a.b(se)&&a.U()?se:yield this.readImageNow(se),je={type:this.type,uid:w.uid,source:this.id,rawImageData:qe,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!w.actor||w.state==="expired"){w.actor=this.dispatcher.getActor();let it=yield w.actor.sendAsync({type:"LDT",data:je});w.dem=it,w.needsHillshadePrepare=!0,w.needsTerrainPrepare=!0,w.state="loaded"}}}catch(ee){if(delete w.abortController,w.aborted)w.state="unloaded";else if(ee)throw w.state="errored",ee}})}readImageNow(w){return a._(this,void 0,void 0,function*(){if(typeof VideoFrame!="undefined"&&a.V()){let B=w.width+2,Q=w.height+2;try{return new a.R({width:B,height:Q},yield a.W(w,-1,-1,B,Q))}catch(ee){}}return u.getImageData(w,1)})}_getNeighboringTiles(w){let B=w.canonical,Q=Math.pow(2,B.z),ee=(B.x-1+Q)%Q,se=B.x===0?w.wrap-1:w.wrap,qe=(B.x+1+Q)%Q,je=B.x+1===Q?w.wrap+1:w.wrap,it={};return it[new a.S(w.overscaledZ,se,B.z,ee,B.y).key]={backfilled:!1},it[new a.S(w.overscaledZ,je,B.z,qe,B.y).key]={backfilled:!1},B.y>0&&(it[new a.S(w.overscaledZ,se,B.z,ee,B.y-1).key]={backfilled:!1},it[new a.S(w.overscaledZ,w.wrap,B.z,B.x,B.y-1).key]={backfilled:!1},it[new a.S(w.overscaledZ,je,B.z,qe,B.y-1).key]={backfilled:!1}),B.y+10&&a.e(se,{resourceTiming:ee}),this.fire(new a.k("data",Object.assign(Object.assign({},se),{sourceDataType:"metadata"}))),this.fire(new a.k("data",Object.assign(Object.assign({},se),{sourceDataType:"content"})))}catch(Q){if(this._pendingLoads--,this._removed)return void this.fire(new a.k("dataabort",{dataType:"source"}));this.fire(new a.j(Q))}})}loaded(){return this._pendingLoads===0}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.actor?"RT":"LT";w.actor=this.actor;let Q={type:this.type,uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};w.abortController=new AbortController;let ee=yield this.actor.sendAsync({type:B,data:Q},w.abortController);delete w.abortController,w.unloadVectorData(),w.aborted||w.loadVectorData(ee,this.map.painter,B==="RT")})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.aborted=!0})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return a.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var ot=a.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Rt extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.coordinates=B.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(ee),this.options=B}load(w){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let B=yield g.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,B&&B.data&&(this.image=B.data,w&&(this.coordinates=w),this._finishLoading())}catch(B){this._request=null,this._loaded=!0,this.fire(new a.j(B))}})}loaded(){return this._loaded}updateImage(w){return w.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=w.url,this.load(w.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(w){this.map=w,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(w){this.coordinates=w;let B=w.map(a.Z.fromLngLat);this.tileID=function(ee){let se=1/0,qe=1/0,je=-1/0,it=-1/0;for(let hr of ee)se=Math.min(se,hr.x),qe=Math.min(qe,hr.y),je=Math.max(je,hr.x),it=Math.max(it,hr.y);let yt=Math.max(je-se,it-qe),Ot=Math.max(0,Math.floor(-Math.log(yt)/Math.LN2)),Nt=Math.pow(2,Ot);return new a.a1(Ot,Math.floor((se+je)/2*Nt),Math.floor((qe+it)/2*Nt))}(B),this.minzoom=this.maxzoom=this.tileID.z;let Q=B.map(ee=>this.tileID.getTilePoint(ee)._round());return this._boundsArray=new a.$,this._boundsArray.emplaceBack(Q[0].x,Q[0].y,0,0),this._boundsArray.emplaceBack(Q[1].x,Q[1].y,a.X,0),this._boundsArray.emplaceBack(Q[3].x,Q[3].y,0,a.X),this._boundsArray.emplaceBack(Q[2].x,Q[2].y,a.X,a.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new p(w,this.image,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let se=this.tiles[ee];se.state!=="loaded"&&(se.state="loaded",se.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(w){return a._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(w.tileID.canonical)?(this.tiles[String(w.tileID.wrap)]=w,w.buckets={}):w.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class kt extends Rt{constructor(w,B,Q,ee){super(w,B,Q,ee),this.roundZoom=!0,this.type="video",this.options=B}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1;let w=this.options;this.urls=[];for(let B of w.urls)this.urls.push(this.map._requestManager.transformRequest(B,"Source").url);try{let B=yield a.a3(this.urls);if(this._loaded=!0,!B)return;this.video=B,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(B){this.fire(new a.j(B))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(w){if(this.video){let B=this.video.seekable;wB.end(0)?this.fire(new a.j(new a.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${B.start(0)} and ${B.end(0)}-second mark.`))):this.video.currentTime=w}}getVideo(){return this.video}onAdd(w){this.map||(this.map=w,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE),B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.video)):(this.texture=new p(w,this.video,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let se=this.tiles[ee];se.state!=="loaded"&&(se.state="loaded",se.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class Ct extends Rt{constructor(w,B,Q,ee){super(w,B,Q,ee),B.coordinates?Array.isArray(B.coordinates)&&B.coordinates.length===4&&!B.coordinates.some(se=>!Array.isArray(se)||se.length!==2||se.some(qe=>typeof qe!="number"))||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "coordinates"'))),B.animate&&typeof B.animate!="boolean"&&this.fire(new a.j(new a.a2(`sources.${w}`,null,'optional "animate" property must be a boolean value'))),B.canvas?typeof B.canvas=="string"||B.canvas instanceof HTMLCanvasElement||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "canvas"'))),this.options=B,this.animate=B.animate===void 0||B.animate}load(){return a._(this,void 0,void 0,function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new a.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())})}getCanvas(){return this.canvas}onAdd(w){this.map=w,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let w=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,w=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,w=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let B=this.map.painter.context,Q=B.gl;this.boundsBuffer||(this.boundsBuffer=B.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?(w||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new p(B,this.canvas,Q.RGBA,{premultiply:!0});let ee=!1;for(let se in this.tiles){let qe=this.tiles[se];qe.state!=="loaded"&&(qe.state="loaded",qe.texture=this.texture,ee=!0)}ee&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let w of[this.canvas.width,this.canvas.height])if(isNaN(w)||w<=0)return!0;return!1}}let Yt={},xr=le=>{switch(le){case"geojson":return rt;case"image":return Rt;case"raster":return ct;case"raster-dem":return qt;case"vector":return nt;case"video":return kt;case"canvas":return Ct}return Yt[le]},er="RTLPluginLoaded";class Ke extends a.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=Ae()}_syncState(w){return this.status=w,this.dispatcher.broadcast("SRPS",{pluginStatus:w,pluginURL:this.url}).catch(B=>{throw this.status="error",B})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(w){return a._(this,arguments,void 0,function*(B,Q=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=u.resolveURL(B),!this.url)throw new Error(`requested url ${B} is invalid`);if(this.status==="unavailable"){if(!Q)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return a._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new a.k(er))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let xt=null;function bt(){return xt||(xt=new Ke),xt}class Lt{constructor(w,B){this.timeAdded=0,this.fadeEndTime=0,this.tileID=w,this.uid=a.a4(),this.uses=0,this.tileSize=B,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(w){let B=w+this.timeAdded;Bse.getLayer(yt)).filter(Boolean);if(it.length!==0){je.layers=it,je.stateDependentLayerIds&&(je.stateDependentLayers=je.stateDependentLayerIds.map(yt=>it.filter(Ot=>Ot.id===yt)[0]));for(let yt of it)qe[yt.id]=je}}return qe}(w.buckets,B.style),this.hasSymbolBuckets=!1;for(let ee in this.buckets){let se=this.buckets[ee];if(se instanceof a.a6){if(this.hasSymbolBuckets=!0,!Q)break;se.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let ee in this.buckets){let se=this.buckets[ee];if(se instanceof a.a6&&se.hasRTLText){this.hasRTLText=!0,bt().lazyLoad();break}}this.queryPadding=0;for(let ee in this.buckets){let se=this.buckets[ee];this.queryPadding=Math.max(this.queryPadding,B.style.getLayer(ee).queryRadius(se))}w.imageAtlas&&(this.imageAtlas=w.imageAtlas),w.glyphAtlasImage&&(this.glyphAtlasImage=w.glyphAtlasImage)}else this.collisionBoxArray=new a.a5}unloadVectorData(){for(let w in this.buckets)this.buckets[w].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(w){return this.buckets[w.id]}upload(w){for(let Q in this.buckets){let ee=this.buckets[Q];ee.uploadPending()&&ee.upload(w)}let B=w.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new p(w,this.imageAtlas.image,B.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new p(w,this.glyphAtlasImage,B.ALPHA),this.glyphAtlasImage=null)}prepare(w){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(w,this.imageAtlasTexture)}queryRenderedFeatures(w,B,Q,ee,se,qe,je,it,yt,Ot){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:ee,cameraQueryGeometry:se,scale:qe,tileSize:this.tileSize,pixelPosMatrix:Ot,transform:it,params:je,queryPadding:this.queryPadding*yt},w,B,Q):{}}querySourceFeatures(w,B){let Q=this.latestFeatureIndex;if(!Q||!Q.rawTileData)return;let ee=Q.loadVTLayers(),se=B&&B.sourceLayer?B.sourceLayer:"",qe=ee._geojsonTileLayer||ee[se];if(!qe)return;let je=a.a7(B&&B.filter),{z:it,x:yt,y:Ot}=this.tileID.canonical,Nt={z:it,x:yt,y:Ot};for(let hr=0;hrQ)ee=!1;else if(B)if(this.expirationTime{this.remove(w,se)},Q)),this.data[ee].push(se),this.order.push(ee),this.order.length>this.max){let qe=this._getAndRemoveByKey(this.order[0]);qe&&this.onRemove(qe)}return this}has(w){return w.wrapped().key in this.data}getAndRemove(w){return this.has(w)?this._getAndRemoveByKey(w.wrapped().key):null}_getAndRemoveByKey(w){let B=this.data[w].shift();return B.timeout&&clearTimeout(B.timeout),this.data[w].length===0&&delete this.data[w],this.order.splice(this.order.indexOf(w),1),B.value}getByKey(w){let B=this.data[w];return B?B[0].value:null}get(w){return this.has(w)?this.data[w.wrapped().key][0].value:null}remove(w,B){if(!this.has(w))return this;let Q=w.wrapped().key,ee=B===void 0?0:this.data[Q].indexOf(B),se=this.data[Q][ee];return this.data[Q].splice(ee,1),se.timeout&&clearTimeout(se.timeout),this.data[Q].length===0&&delete this.data[Q],this.onRemove(se.value),this.order.splice(this.order.indexOf(Q),1),this}setMaxSize(w){for(this.max=w;this.order.length>this.max;){let B=this._getAndRemoveByKey(this.order[0]);B&&this.onRemove(B)}return this}filter(w){let B=[];for(let Q in this.data)for(let ee of this.data[Q])w(ee.value)||B.push(ee);for(let Q of B)this.remove(Q.value.tileID,Q)}}class Et{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(w,B,Q){let ee=String(B);if(this.stateChanges[w]=this.stateChanges[w]||{},this.stateChanges[w][ee]=this.stateChanges[w][ee]||{},a.e(this.stateChanges[w][ee],Q),this.deletedStates[w]===null){this.deletedStates[w]={};for(let se in this.state[w])se!==ee&&(this.deletedStates[w][se]=null)}else if(this.deletedStates[w]&&this.deletedStates[w][ee]===null){this.deletedStates[w][ee]={};for(let se in this.state[w][ee])Q[se]||(this.deletedStates[w][ee][se]=null)}else for(let se in Q)this.deletedStates[w]&&this.deletedStates[w][ee]&&this.deletedStates[w][ee][se]===null&&delete this.deletedStates[w][ee][se]}removeFeatureState(w,B,Q){if(this.deletedStates[w]===null)return;let ee=String(B);if(this.deletedStates[w]=this.deletedStates[w]||{},Q&&B!==void 0)this.deletedStates[w][ee]!==null&&(this.deletedStates[w][ee]=this.deletedStates[w][ee]||{},this.deletedStates[w][ee][Q]=null);else if(B!==void 0)if(this.stateChanges[w]&&this.stateChanges[w][ee])for(Q in this.deletedStates[w][ee]={},this.stateChanges[w][ee])this.deletedStates[w][ee][Q]=null;else this.deletedStates[w][ee]=null;else this.deletedStates[w]=null}getState(w,B){let Q=String(B),ee=a.e({},(this.state[w]||{})[Q],(this.stateChanges[w]||{})[Q]);if(this.deletedStates[w]===null)return{};if(this.deletedStates[w]){let se=this.deletedStates[w][B];if(se===null)return{};for(let qe in se)delete ee[qe]}return ee}initializeTileState(w,B){w.setFeatureState(this.state,B)}coalesceChanges(w,B){let Q={};for(let ee in this.stateChanges){this.state[ee]=this.state[ee]||{};let se={};for(let qe in this.stateChanges[ee])this.state[ee][qe]||(this.state[ee][qe]={}),a.e(this.state[ee][qe],this.stateChanges[ee][qe]),se[qe]=this.state[ee][qe];Q[ee]=se}for(let ee in this.deletedStates){this.state[ee]=this.state[ee]||{};let se={};if(this.deletedStates[ee]===null)for(let qe in this.state[ee])se[qe]={},this.state[ee][qe]={};else for(let qe in this.deletedStates[ee]){if(this.deletedStates[ee][qe]===null)this.state[ee][qe]={};else for(let je of Object.keys(this.deletedStates[ee][qe]))delete this.state[ee][qe][je];se[qe]=this.state[ee][qe]}Q[ee]=Q[ee]||{},a.e(Q[ee],se)}if(this.stateChanges={},this.deletedStates={},Object.keys(Q).length!==0)for(let ee in w)w[ee].setFeatureState(Q,B)}}class dt extends a.E{constructor(w,B,Q){super(),this.id=w,this.dispatcher=Q,this.on("data",ee=>this._dataHandler(ee)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((ee,se,qe,je)=>{let it=new(xr(se.type))(ee,se,qe,je);if(it.id!==ee)throw new Error(`Expected Source id to be ${ee} instead of ${it.id}`);return it})(w,B,Q,this),this._tiles={},this._cache=new St(0,ee=>this._unloadTile(ee)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Et,this._didEmitContent=!1,this._updated=!1}onAdd(w){this.map=w,this._maxTileCacheSize=w?w._maxTileCacheSize:null,this._maxTileCacheZoomLevels=w?w._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(w)}onRemove(w){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(w)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let w in this._tiles){let B=this._tiles[w];if(B.state!=="loaded"&&B.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let w=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,w&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(w,B,Q){return a._(this,void 0,void 0,function*(){try{yield this._source.loadTile(w),this._tileLoaded(w,B,Q)}catch(ee){w.state="errored",ee.status!==404?this._source.fire(new a.j(ee,{tile:w})):this.update(this.transform,this.terrain)}})}_unloadTile(w){this._source.unloadTile&&this._source.unloadTile(w)}_abortTile(w){this._source.abortTile&&this._source.abortTile(w),this._source.fire(new a.k("dataabort",{tile:w,coord:w.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(w){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let B in this._tiles){let Q=this._tiles[B];Q.upload(w),Q.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(w=>w.tileID).sort(Ht).map(w=>w.key)}getRenderableIds(w){let B=[];for(let Q in this._tiles)this._isIdRenderable(Q,w)&&B.push(this._tiles[Q]);return w?B.sort((Q,ee)=>{let se=Q.tileID,qe=ee.tileID,je=new a.P(se.canonical.x,se.canonical.y)._rotate(this.transform.angle),it=new a.P(qe.canonical.x,qe.canonical.y)._rotate(this.transform.angle);return se.overscaledZ-qe.overscaledZ||it.y-je.y||it.x-je.x}).map(Q=>Q.tileID.key):B.map(Q=>Q.tileID).sort(Ht).map(Q=>Q.key)}hasRenderableParent(w){let B=this.findLoadedParent(w,0);return!!B&&this._isIdRenderable(B.tileID.key)}_isIdRenderable(w,B){return this._tiles[w]&&this._tiles[w].hasData()&&!this._coveredTiles[w]&&(B||!this._tiles[w].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let w in this._tiles)this._tiles[w].state!=="errored"&&this._reloadTile(w,"reloading")}}_reloadTile(w,B){return a._(this,void 0,void 0,function*(){let Q=this._tiles[w];Q&&(Q.state!=="loading"&&(Q.state=B),yield this._loadTile(Q,w,B))})}_tileLoaded(w,B,Q){w.timeAdded=u.now(),Q==="expired"&&(w.refreshedUponExpiration=!0),this._setTileReloadTimer(B,w),this.getSource().type==="raster-dem"&&w.dem&&this._backfillDEM(w),this._state.initializeTileState(w,this.map?this.map.painter:null),w.aborted||this._source.fire(new a.k("data",{dataType:"source",tile:w,coord:w.tileID}))}_backfillDEM(w){let B=this.getRenderableIds();for(let ee=0;ee1||(Math.abs(qe)>1&&(Math.abs(qe+it)===1?qe+=it:Math.abs(qe-it)===1&&(qe-=it)),se.dem&&ee.dem&&(ee.dem.backfillBorder(se.dem,qe,je),ee.neighboringTiles&&ee.neighboringTiles[yt]&&(ee.neighboringTiles[yt].backfilled=!0)))}}getTile(w){return this.getTileByID(w.key)}getTileByID(w){return this._tiles[w]}_retainLoadedChildren(w,B,Q,ee){for(let se in this._tiles){let qe=this._tiles[se];if(ee[se]||!qe.hasData()||qe.tileID.overscaledZ<=B||qe.tileID.overscaledZ>Q)continue;let je=qe.tileID;for(;qe&&qe.tileID.overscaledZ>B+1;){let yt=qe.tileID.scaledTo(qe.tileID.overscaledZ-1);qe=this._tiles[yt.key],qe&&qe.hasData()&&(je=yt)}let it=je;for(;it.overscaledZ>B;)if(it=it.scaledTo(it.overscaledZ-1),w[it.key]){ee[je.key]=je;break}}}findLoadedParent(w,B){if(w.key in this._loadedParentTiles){let Q=this._loadedParentTiles[w.key];return Q&&Q.tileID.overscaledZ>=B?Q:null}for(let Q=w.overscaledZ-1;Q>=B;Q--){let ee=w.scaledTo(Q),se=this._getLoadedTile(ee);if(se)return se}}findLoadedSibling(w){return this._getLoadedTile(w)}_getLoadedTile(w){let B=this._tiles[w.key];return B&&B.hasData()?B:this._cache.getByKey(w.wrapped().key)}updateCacheSize(w){let B=Math.ceil(w.width/this._source.tileSize)+1,Q=Math.ceil(w.height/this._source.tileSize)+1,ee=Math.floor(B*Q*(this._maxTileCacheZoomLevels===null?a.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),se=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,ee):ee;this._cache.setMaxSize(se)}handleWrapJump(w){let B=Math.round((w-(this._prevLng===void 0?w:this._prevLng))/360);if(this._prevLng=w,B){let Q={};for(let ee in this._tiles){let se=this._tiles[ee];se.tileID=se.tileID.unwrapTo(se.tileID.wrap+B),Q[se.tileID.key]=se}this._tiles=Q;for(let ee in this._timers)clearTimeout(this._timers[ee]),delete this._timers[ee];for(let ee in this._tiles)this._setTileReloadTimer(ee,this._tiles[ee])}}_updateCoveredAndRetainedTiles(w,B,Q,ee,se,qe){let je={},it={},yt=Object.keys(w),Ot=u.now();for(let Nt of yt){let hr=w[Nt],Sr=this._tiles[Nt];if(!Sr||Sr.fadeEndTime!==0&&Sr.fadeEndTime<=Ot)continue;let he=this.findLoadedParent(hr,B),be=this.findLoadedSibling(hr),Pe=he||be||null;Pe&&(this._addTile(Pe.tileID),je[Pe.tileID.key]=Pe.tileID),it[Nt]=hr}this._retainLoadedChildren(it,ee,Q,w);for(let Nt in je)w[Nt]||(this._coveredTiles[Nt]=!0,w[Nt]=je[Nt]);if(qe){let Nt={},hr={};for(let Sr of se)this._tiles[Sr.key].hasData()?Nt[Sr.key]=Sr:hr[Sr.key]=Sr;for(let Sr in hr){let he=hr[Sr].children(this._source.maxzoom);this._tiles[he[0].key]&&this._tiles[he[1].key]&&this._tiles[he[2].key]&&this._tiles[he[3].key]&&(Nt[he[0].key]=w[he[0].key]=he[0],Nt[he[1].key]=w[he[1].key]=he[1],Nt[he[2].key]=w[he[2].key]=he[2],Nt[he[3].key]=w[he[3].key]=he[3],delete hr[Sr])}for(let Sr in hr){let he=hr[Sr],be=this.findLoadedParent(he,this._source.minzoom),Pe=this.findLoadedSibling(he),Oe=be||Pe||null;if(Oe){Nt[Oe.tileID.key]=w[Oe.tileID.key]=Oe.tileID;for(let Je in Nt)Nt[Je].isChildOf(Oe.tileID)&&delete Nt[Je]}}for(let Sr in this._tiles)Nt[Sr]||(this._coveredTiles[Sr]=!0)}}update(w,B){if(!this._sourceLoaded||this._paused)return;let Q;this.transform=w,this.terrain=B,this.updateCacheSize(w),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?Q=w.getVisibleUnwrappedCoordinates(this._source.tileID).map(Ot=>new a.S(Ot.canonical.z,Ot.wrap,Ot.canonical.z,Ot.canonical.x,Ot.canonical.y)):(Q=w.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:B}),this._source.hasTile&&(Q=Q.filter(Ot=>this._source.hasTile(Ot)))):Q=[];let ee=w.coveringZoomLevel(this._source),se=Math.max(ee-dt.maxOverzooming,this._source.minzoom),qe=Math.max(ee+dt.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let Ot={};for(let Nt of Q)if(Nt.canonical.z>this._source.minzoom){let hr=Nt.scaledTo(Nt.canonical.z-1);Ot[hr.key]=hr;let Sr=Nt.scaledTo(Math.max(this._source.minzoom,Math.min(Nt.canonical.z,5)));Ot[Sr.key]=Sr}Q=Q.concat(Object.values(Ot))}let je=Q.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,je&&this.fire(new a.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let it=this._updateRetainedTiles(Q,ee);$t(this._source.type)&&this._updateCoveredAndRetainedTiles(it,se,qe,ee,Q,B);for(let Ot in it)this._tiles[Ot].clearFadeHold();let yt=a.ab(this._tiles,it);for(let Ot of yt){let Nt=this._tiles[Ot];Nt.hasSymbolBuckets&&!Nt.holdingForFade()?Nt.setHoldDuration(this.map._fadeDuration):Nt.hasSymbolBuckets&&!Nt.symbolFadeFinished()||this._removeTile(Ot)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let w in this._tiles)this._tiles[w].holdingForFade()&&this._removeTile(w)}_updateRetainedTiles(w,B){var Q;let ee={},se={},qe=Math.max(B-dt.maxOverzooming,this._source.minzoom),je=Math.max(B+dt.maxUnderzooming,this._source.minzoom),it={};for(let yt of w){let Ot=this._addTile(yt);ee[yt.key]=yt,Ot.hasData()||Bthis._source.maxzoom){let hr=yt.children(this._source.maxzoom)[0],Sr=this.getTile(hr);if(Sr&&Sr.hasData()){ee[hr.key]=hr;continue}}else{let hr=yt.children(this._source.maxzoom);if(ee[hr[0].key]&&ee[hr[1].key]&&ee[hr[2].key]&&ee[hr[3].key])continue}let Nt=Ot.wasRequested();for(let hr=yt.overscaledZ-1;hr>=qe;--hr){let Sr=yt.scaledTo(hr);if(se[Sr.key])break;if(se[Sr.key]=!0,Ot=this.getTile(Sr),!Ot&&Nt&&(Ot=this._addTile(Sr)),Ot){let he=Ot.hasData();if((he||!(!((Q=this.map)===null||Q===void 0)&&Q.cancelPendingTileRequestsWhileZooming)||Nt)&&(ee[Sr.key]=Sr),Nt=Ot.wasRequested(),he)break}}}return ee}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let w in this._tiles){let B=[],Q,ee=this._tiles[w].tileID;for(;ee.overscaledZ>0;){if(ee.key in this._loadedParentTiles){Q=this._loadedParentTiles[ee.key];break}B.push(ee.key);let se=ee.scaledTo(ee.overscaledZ-1);if(Q=this._getLoadedTile(se),Q)break;ee=se}for(let se of B)this._loadedParentTiles[se]=Q}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let w in this._tiles){let B=this._tiles[w].tileID,Q=this._getLoadedTile(B);this._loadedSiblingTiles[B.key]=Q}}_addTile(w){let B=this._tiles[w.key];if(B)return B;B=this._cache.getAndRemove(w),B&&(this._setTileReloadTimer(w.key,B),B.tileID=w,this._state.initializeTileState(B,this.map?this.map.painter:null),this._cacheTimers[w.key]&&(clearTimeout(this._cacheTimers[w.key]),delete this._cacheTimers[w.key],this._setTileReloadTimer(w.key,B)));let Q=B;return B||(B=new Lt(w,this._source.tileSize*w.overscaleFactor()),this._loadTile(B,w.key,B.state)),B.uses++,this._tiles[w.key]=B,Q||this._source.fire(new a.k("dataloading",{tile:B,coord:B.tileID,dataType:"source"})),B}_setTileReloadTimer(w,B){w in this._timers&&(clearTimeout(this._timers[w]),delete this._timers[w]);let Q=B.getExpiryTimeout();Q&&(this._timers[w]=setTimeout(()=>{this._reloadTile(w,"expired"),delete this._timers[w]},Q))}_removeTile(w){let B=this._tiles[w];B&&(B.uses--,delete this._tiles[w],this._timers[w]&&(clearTimeout(this._timers[w]),delete this._timers[w]),B.uses>0||(B.hasData()&&B.state!=="reloading"?this._cache.add(B.tileID,B,B.getExpiryTimeout()):(B.aborted=!0,this._abortTile(B),this._unloadTile(B))))}_dataHandler(w){let B=w.sourceDataType;w.dataType==="source"&&B==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&w.dataType==="source"&&B==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let w in this._tiles)this._removeTile(w);this._cache.reset()}tilesIn(w,B,Q){let ee=[],se=this.transform;if(!se)return ee;let qe=Q?se.getCameraQueryGeometry(w):w,je=w.map(he=>se.pointCoordinate(he,this.terrain)),it=qe.map(he=>se.pointCoordinate(he,this.terrain)),yt=this.getIds(),Ot=1/0,Nt=1/0,hr=-1/0,Sr=-1/0;for(let he of it)Ot=Math.min(Ot,he.x),Nt=Math.min(Nt,he.y),hr=Math.max(hr,he.x),Sr=Math.max(Sr,he.y);for(let he=0;he=0&&He[1].y+Je>=0){let et=je.map(Dt=>Pe.getTilePoint(Dt)),Mt=it.map(Dt=>Pe.getTilePoint(Dt));ee.push({tile:be,tileID:Pe,queryGeometry:et,cameraQueryGeometry:Mt,scale:Oe})}}return ee}getVisibleCoordinates(w){let B=this.getRenderableIds(w).map(Q=>this._tiles[Q].tileID);for(let Q of B)Q.posMatrix=this.transform.calculatePosMatrix(Q.toUnwrapped());return B}hasTransition(){if(this._source.hasTransition())return!0;if($t(this._source.type)){let w=u.now();for(let B in this._tiles)if(this._tiles[B].fadeEndTime>=w)return!0}return!1}setFeatureState(w,B,Q){this._state.updateState(w=w||"_geojsonTileLayer",B,Q)}removeFeatureState(w,B,Q){this._state.removeFeatureState(w=w||"_geojsonTileLayer",B,Q)}getFeatureState(w,B){return this._state.getState(w=w||"_geojsonTileLayer",B)}setDependencies(w,B,Q){let ee=this._tiles[w];ee&&ee.setDependencies(B,Q)}reloadTilesForDependencies(w,B){for(let Q in this._tiles)this._tiles[Q].hasDependency(w,B)&&this._reloadTile(Q,"reloading");this._cache.filter(Q=>!Q.hasDependency(w,B))}}function Ht(le,w){let B=Math.abs(2*le.wrap)-+(le.wrap<0),Q=Math.abs(2*w.wrap)-+(w.wrap<0);return le.overscaledZ-w.overscaledZ||Q-B||w.canonical.y-le.canonical.y||w.canonical.x-le.canonical.x}function $t(le){return le==="raster"||le==="image"||le==="video"}dt.maxOverzooming=10,dt.maxUnderzooming=3;class fr{constructor(w,B){this.reset(w,B)}reset(w,B){this.points=w||[],this._distances=[0];for(let Q=1;Q0?(ee-qe)/je:0;return this.points[se].mult(1-it).add(this.points[B].mult(it))}}function _r(le,w){let B=!0;return le==="always"||le!=="never"&&w!=="never"||(B=!1),B}class Br{constructor(w,B,Q){let ee=this.boxCells=[],se=this.circleCells=[];this.xCellCount=Math.ceil(w/Q),this.yCellCount=Math.ceil(B/Q);for(let qe=0;qethis.width||ee<0||B>this.height)return[];let it=[];if(w<=0&&B<=0&&this.width<=Q&&this.height<=ee){if(se)return[{key:null,x1:w,y1:B,x2:Q,y2:ee}];for(let yt=0;yt0}hitTestCircle(w,B,Q,ee,se){let qe=w-Q,je=w+Q,it=B-Q,yt=B+Q;if(je<0||qe>this.width||yt<0||it>this.height)return!1;let Ot=[];return this._forEachCell(qe,it,je,yt,this._queryCellCircle,Ot,{hitTest:!0,overlapMode:ee,circle:{x:w,y:B,radius:Q},seenUids:{box:{},circle:{}}},se),Ot.length>0}_queryCell(w,B,Q,ee,se,qe,je,it){let{seenUids:yt,hitTest:Ot,overlapMode:Nt}=je,hr=this.boxCells[se];if(hr!==null){let he=this.bboxes;for(let be of hr)if(!yt.box[be]){yt.box[be]=!0;let Pe=4*be,Oe=this.boxKeys[be];if(w<=he[Pe+2]&&B<=he[Pe+3]&&Q>=he[Pe+0]&&ee>=he[Pe+1]&&(!it||it(Oe))&&(!Ot||!_r(Nt,Oe.overlapMode))&&(qe.push({key:Oe,x1:he[Pe],y1:he[Pe+1],x2:he[Pe+2],y2:he[Pe+3]}),Ot))return!0}}let Sr=this.circleCells[se];if(Sr!==null){let he=this.circles;for(let be of Sr)if(!yt.circle[be]){yt.circle[be]=!0;let Pe=3*be,Oe=this.circleKeys[be];if(this._circleAndRectCollide(he[Pe],he[Pe+1],he[Pe+2],w,B,Q,ee)&&(!it||it(Oe))&&(!Ot||!_r(Nt,Oe.overlapMode))){let Je=he[Pe],He=he[Pe+1],et=he[Pe+2];if(qe.push({key:Oe,x1:Je-et,y1:He-et,x2:Je+et,y2:He+et}),Ot)return!0}}}return!1}_queryCellCircle(w,B,Q,ee,se,qe,je,it){let{circle:yt,seenUids:Ot,overlapMode:Nt}=je,hr=this.boxCells[se];if(hr!==null){let he=this.bboxes;for(let be of hr)if(!Ot.box[be]){Ot.box[be]=!0;let Pe=4*be,Oe=this.boxKeys[be];if(this._circleAndRectCollide(yt.x,yt.y,yt.radius,he[Pe+0],he[Pe+1],he[Pe+2],he[Pe+3])&&(!it||it(Oe))&&!_r(Nt,Oe.overlapMode))return qe.push(!0),!0}}let Sr=this.circleCells[se];if(Sr!==null){let he=this.circles;for(let be of Sr)if(!Ot.circle[be]){Ot.circle[be]=!0;let Pe=3*be,Oe=this.circleKeys[be];if(this._circlesCollide(he[Pe],he[Pe+1],he[Pe+2],yt.x,yt.y,yt.radius)&&(!it||it(Oe))&&!_r(Nt,Oe.overlapMode))return qe.push(!0),!0}}}_forEachCell(w,B,Q,ee,se,qe,je,it){let yt=this._convertToXCellCoord(w),Ot=this._convertToYCellCoord(B),Nt=this._convertToXCellCoord(Q),hr=this._convertToYCellCoord(ee);for(let Sr=yt;Sr<=Nt;Sr++)for(let he=Ot;he<=hr;he++)if(se.call(this,w,B,Q,ee,this.xCellCount*he+Sr,qe,je,it))return}_convertToXCellCoord(w){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(w*this.xScale)))}_convertToYCellCoord(w){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(w*this.yScale)))}_circlesCollide(w,B,Q,ee,se,qe){let je=ee-w,it=se-B,yt=Q+qe;return yt*yt>je*je+it*it}_circleAndRectCollide(w,B,Q,ee,se,qe,je){let it=(qe-ee)/2,yt=Math.abs(w-(ee+it));if(yt>it+Q)return!1;let Ot=(je-se)/2,Nt=Math.abs(B-(se+Ot));if(Nt>Ot+Q)return!1;if(yt<=it||Nt<=Ot)return!0;let hr=yt-it,Sr=Nt-Ot;return hr*hr+Sr*Sr<=Q*Q}}function Or(le,w,B,Q,ee){let se=a.H();return w?(a.K(se,se,[1/ee,1/ee,1]),B||a.ad(se,se,Q.angle)):a.L(se,Q.labelPlaneMatrix,le),se}function Nr(le,w,B,Q,ee){if(w){let se=a.ae(le);return a.K(se,se,[ee,ee,1]),B||a.ad(se,se,-Q.angle),se}return Q.glCoordMatrix}function ut(le,w,B,Q){let ee;Q?(ee=[le,w,Q(le,w),1],a.af(ee,ee,B)):(ee=[le,w,0,1],jr(ee,ee,B));let se=ee[3];return{point:new a.P(ee[0]/se,ee[1]/se),signedDistanceFromCamera:se,isOccluded:!1}}function Ne(le,w){return .5+le/w*.5}function Ye(le,w){return le.x>=-w[0]&&le.x<=w[0]&&le.y>=-w[1]&&le.y<=w[1]}function Ve(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he){let be=Q?le.textSizeData:le.iconSizeData,Pe=a.ag(be,B.transform.zoom),Oe=[256/B.width*2+1,256/B.height*2+1],Je=Q?le.text.dynamicLayoutVertexArray:le.icon.dynamicLayoutVertexArray;Je.clear();let He=le.lineVertexArray,et=Q?le.text.placedSymbolArray:le.icon.placedSymbolArray,Mt=B.transform.width/B.transform.height,Dt=!1;for(let Ut=0;UtMath.abs(B.x-w.x)*Q?{useVertical:!0}:(le===a.ah.vertical?w.yB.x)?{needsFlipping:!0}:null}function Le(le,w,B,Q,ee,se,qe,je,it,yt,Ot){let Nt=B/24,hr=w.lineOffsetX*Nt,Sr=w.lineOffsetY*Nt,he;if(w.numGlyphs>1){let be=w.glyphStartIndex+w.numGlyphs,Pe=w.lineStartIndex,Oe=w.lineStartIndex+w.lineLength,Je=Xe(Nt,je,hr,Sr,Q,w,Ot,le);if(!Je)return{notEnoughRoom:!0};let He=ut(Je.first.point.x,Je.first.point.y,qe,le.getElevation).point,et=ut(Je.last.point.x,Je.last.point.y,qe,le.getElevation).point;if(ee&&!Q){let Mt=ht(w.writingMode,He,et,yt);if(Mt)return Mt}he=[Je.first];for(let Mt=w.glyphStartIndex+1;Mt0?He.point:function(Dt,Ut,tr,mr,Rr,zr){return xe(Dt,Ut,tr,1,Rr,zr)}(le.tileAnchorPoint,Je,Pe,0,se,le),Mt=ht(w.writingMode,Pe,et,yt);if(Mt)return Mt}let be=ar(Nt*je.getoffsetX(w.glyphStartIndex),hr,Sr,Q,w.segment,w.lineStartIndex,w.lineStartIndex+w.lineLength,le,Ot);if(!be||le.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};he=[be]}for(let be of he)a.aj(it,be.point,be.angle);return{}}function xe(le,w,B,Q,ee,se){let qe=le.add(le.sub(w)._unit()),je=ee!==void 0?ut(qe.x,qe.y,ee,se.getElevation).point:lt(qe.x,qe.y,se).point,it=B.sub(je);return B.add(it._mult(Q/it.mag()))}function Se(le,w,B){let Q=w.projectionCache;if(Q.projections[le])return Q.projections[le];let ee=new a.P(w.lineVertexArray.getx(le),w.lineVertexArray.gety(le)),se=lt(ee.x,ee.y,w);if(se.signedDistanceFromCamera>0)return Q.projections[le]=se.point,Q.anyProjectionOccluded=Q.anyProjectionOccluded||se.isOccluded,se.point;let qe=le-B.direction;return function(je,it,yt,Ot,Nt){return xe(je,it,yt,Ot,void 0,Nt)}(B.distanceFromAnchor===0?w.tileAnchorPoint:new a.P(w.lineVertexArray.getx(qe),w.lineVertexArray.gety(qe)),ee,B.previousVertex,B.absOffsetX-B.distanceFromAnchor+1,w)}function lt(le,w,B){let Q=le+B.translation[0],ee=w+B.translation[1],se;return!B.pitchWithMap&&B.projection.useSpecialProjectionForSymbols?(se=B.projection.projectTileCoordinates(Q,ee,B.unwrappedTileID,B.getElevation),se.point.x=(.5*se.point.x+.5)*B.width,se.point.y=(.5*-se.point.y+.5)*B.height):(se=ut(Q,ee,B.labelPlaneMatrix,B.getElevation),se.isOccluded=!1),se}function Gt(le,w,B){return le._unit()._perp()._mult(w*B)}function Vt(le,w,B,Q,ee,se,qe,je,it){if(je.projectionCache.offsets[le])return je.projectionCache.offsets[le];let yt=B.add(w);if(le+it.direction=ee)return je.projectionCache.offsets[le]=yt,yt;let Ot=Se(le+it.direction,je,it),Nt=Gt(Ot.sub(B),qe,it.direction),hr=B.add(Nt),Sr=Ot.add(Nt);return je.projectionCache.offsets[le]=a.ak(se,yt,hr,Sr)||yt,je.projectionCache.offsets[le]}function ar(le,w,B,Q,ee,se,qe,je,it){let yt=Q?le-w:le+w,Ot=yt>0?1:-1,Nt=0;Q&&(Ot*=-1,Nt=Math.PI),Ot<0&&(Nt+=Math.PI);let hr,Sr=Ot>0?se+ee:se+ee+1;je.projectionCache.cachedAnchorPoint?hr=je.projectionCache.cachedAnchorPoint:(hr=lt(je.tileAnchorPoint.x,je.tileAnchorPoint.y,je).point,je.projectionCache.cachedAnchorPoint=hr);let he,be,Pe=hr,Oe=hr,Je=0,He=0,et=Math.abs(yt),Mt=[],Dt;for(;Je+He<=et;){if(Sr+=Ot,Sr=qe)return null;Je+=He,Oe=Pe,be=he;let mr={absOffsetX:et,direction:Ot,distanceFromAnchor:Je,previousVertex:Oe};if(Pe=Se(Sr,je,mr),B===0)Mt.push(Oe),Dt=Pe.sub(Oe);else{let Rr,zr=Pe.sub(Oe);Rr=zr.mag()===0?Gt(Se(Sr+Ot,je,mr).sub(Pe),B,Ot):Gt(zr,B,Ot),be||(be=Oe.add(Rr)),he=Vt(Sr,Rr,Pe,se,qe,be,B,je,mr),Mt.push(be),Dt=he.sub(be)}He=Dt.mag()}let Ut=Dt._mult((et-Je)/He)._add(be||Oe),tr=Nt+Math.atan2(Pe.y-Oe.y,Pe.x-Oe.x);return Mt.push(Ut),{point:Ut,angle:it?tr:0,path:Mt}}let Qr=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ai(le,w){for(let B=0;B=1;ea--)Qi.push(Li.path[ea]);for(let ea=1;eaGa.signedDistanceFromCamera<=0)?[]:ea.map(Ga=>Ga.point)}let pa=[];if(Qi.length>0){let ea=Qi[0].clone(),Ga=Qi[0].clone();for(let To=1;To=zr.x&&Ga.x<=Xr.x&&ea.y>=zr.y&&Ga.y<=Xr.y?[Qi]:Ga.xXr.x||Ga.yXr.y?[]:a.al([Qi],zr.x,zr.y,Xr.x,Xr.y)}for(let ea of pa){di.reset(ea,.25*Rr);let Ga=0;Ga=di.length<=.5*Rr?1:Math.ceil(di.paddedLength/Mn)+1;for(let To=0;Tout(ee.x,ee.y,Q,B.getElevation))}queryRenderedSymbols(w){if(w.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let B=[],Q=1/0,ee=1/0,se=-1/0,qe=-1/0;for(let Ot of w){let Nt=new a.P(Ot.x+ri,Ot.y+ri);Q=Math.min(Q,Nt.x),ee=Math.min(ee,Nt.y),se=Math.max(se,Nt.x),qe=Math.max(qe,Nt.y),B.push(Nt)}let je=this.grid.query(Q,ee,se,qe).concat(this.ignoredGrid.query(Q,ee,se,qe)),it={},yt={};for(let Ot of je){let Nt=Ot.key;if(it[Nt.bucketInstanceId]===void 0&&(it[Nt.bucketInstanceId]={}),it[Nt.bucketInstanceId][Nt.featureIndex])continue;let hr=[new a.P(Ot.x1,Ot.y1),new a.P(Ot.x2,Ot.y1),new a.P(Ot.x2,Ot.y2),new a.P(Ot.x1,Ot.y2)];a.am(B,hr)&&(it[Nt.bucketInstanceId][Nt.featureIndex]=!0,yt[Nt.bucketInstanceId]===void 0&&(yt[Nt.bucketInstanceId]=[]),yt[Nt.bucketInstanceId].push(Nt.featureIndex))}return yt}insertCollisionBox(w,B,Q,ee,se,qe){(Q?this.ignoredGrid:this.grid).insert({bucketInstanceId:ee,featureIndex:se,collisionGroupID:qe,overlapMode:B},w[0],w[1],w[2],w[3])}insertCollisionCircles(w,B,Q,ee,se,qe){let je=Q?this.ignoredGrid:this.grid,it={bucketInstanceId:ee,featureIndex:se,collisionGroupID:qe,overlapMode:B};for(let yt=0;yt=this.screenRightBoundary||eethis.screenBottomBoundary}isInsideGrid(w,B,Q,ee){return Q>=0&&w=0&&Bthis.projectAndGetPerspectiveRatio(Q,Rr.x,Rr.y,ee,yt));tr=mr.some(Rr=>!Rr.isOccluded),Ut=mr.map(Rr=>Rr.point)}else tr=!0;return{box:a.ao(Ut),allPointsOccluded:!tr}}}function nn(le,w,B){return w*(a.X/(le.tileSize*Math.pow(2,B-le.tileID.overscaledZ)))}class Wi{constructor(w,B,Q,ee){this.opacity=w?Math.max(0,Math.min(1,w.opacity+(w.placed?B:-B))):ee&&Q?1:0,this.placed=Q}isHidden(){return this.opacity===0&&!this.placed}}class Ni{constructor(w,B,Q,ee,se){this.text=new Wi(w?w.text:null,B,Q,se),this.icon=new Wi(w?w.icon:null,B,ee,se)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class _n{constructor(w,B,Q){this.text=w,this.icon=B,this.skipFade=Q}}class $i{constructor(){this.invProjMatrix=a.H(),this.viewportMatrix=a.H(),this.circles=[]}}class zn{constructor(w,B,Q,ee,se){this.bucketInstanceId=w,this.featureIndex=B,this.sourceLayerIndex=Q,this.bucketIndex=ee,this.tileID=se}}class Wn{constructor(w){this.crossSourceCollisions=w,this.maxGroupID=0,this.collisionGroups={}}get(w){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[w]){let B=++this.maxGroupID;this.collisionGroups[w]={ID:B,predicate:Q=>Q.collisionGroupID===B}}return this.collisionGroups[w]}}function It(le,w,B,Q,ee){let{horizontalAlign:se,verticalAlign:qe}=a.au(le);return new a.P(-(se-.5)*w+Q[0]*ee,-(qe-.5)*B+Q[1]*ee)}class ft{constructor(w,B,Q,ee,se,qe){this.transform=w.clone(),this.terrain=Q,this.collisionIndex=new bi(this.transform,B),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=ee,this.retainedQueryData={},this.collisionGroups=new Wn(se),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=qe,qe&&(qe.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(w){let B=this.terrain;return B?(Q,ee)=>B.getElevation(w,Q,ee):null}getBucketParts(w,B,Q,ee){let se=Q.getBucket(B),qe=Q.latestFeatureIndex;if(!se||!qe||B.id!==se.layerIds[0])return;let je=Q.collisionBoxArray,it=se.layers[0].layout,yt=se.layers[0].paint,Ot=Math.pow(2,this.transform.zoom-Q.tileID.overscaledZ),Nt=Q.tileSize/a.X,hr=Q.tileID.toUnwrapped(),Sr=this.transform.calculatePosMatrix(hr),he=it.get("text-pitch-alignment")==="map",be=it.get("text-rotation-alignment")==="map",Pe=nn(Q,1,this.transform.zoom),Oe=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,yt.get("text-translate"),yt.get("text-translate-anchor")),Je=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,yt.get("icon-translate"),yt.get("icon-translate-anchor")),He=Or(Sr,he,be,this.transform,Pe),et=null;if(he){let Dt=Nr(Sr,he,be,this.transform,Pe);et=a.L([],this.transform.labelPlaneMatrix,Dt)}this.retainedQueryData[se.bucketInstanceId]=new zn(se.bucketInstanceId,qe,se.sourceLayerIndex,se.index,Q.tileID);let Mt={bucket:se,layout:it,translationText:Oe,translationIcon:Je,posMatrix:Sr,unwrappedTileID:hr,textLabelPlaneMatrix:He,labelToScreenMatrix:et,scale:Ot,textPixelRatio:Nt,holdingForFade:Q.holdingForFade(),collisionBoxArray:je,partiallyEvaluatedTextSize:a.ag(se.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(se.sourceID)};if(ee)for(let Dt of se.sortKeyRanges){let{sortKey:Ut,symbolInstanceStart:tr,symbolInstanceEnd:mr}=Dt;w.push({sortKey:Ut,symbolInstanceStart:tr,symbolInstanceEnd:mr,parameters:Mt})}else w.push({symbolInstanceStart:0,symbolInstanceEnd:se.symbolInstances.length,parameters:Mt})}attemptAnchorPlacement(w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he,be,Pe,Oe,Je,He){let et=a.aq[w.textAnchor],Mt=[w.textOffset0,w.textOffset1],Dt=It(et,Q,ee,Mt,se),Ut=this.collisionIndex.placeCollisionBox(B,hr,it,yt,Ot,je,qe,Pe,Nt.predicate,He,Dt);if((!Je||this.collisionIndex.placeCollisionBox(Je,hr,it,yt,Ot,je,qe,Oe,Nt.predicate,He,Dt).placeable)&&Ut.placeable){let tr;if(this.prevPlacement&&this.prevPlacement.variableOffsets[Sr.crossTileID]&&this.prevPlacement.placements[Sr.crossTileID]&&this.prevPlacement.placements[Sr.crossTileID].text&&(tr=this.prevPlacement.variableOffsets[Sr.crossTileID].anchor),Sr.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[Sr.crossTileID]={textOffset:Mt,width:Q,height:ee,anchor:et,textBoxScale:se,prevAnchor:tr},this.markUsedJustification(he,et,Sr,be),he.allowVerticalPlacement&&(this.markUsedOrientation(he,be,Sr),this.placedOrientations[Sr.crossTileID]=be),{shift:Dt,placedGlyphBoxes:Ut}}}placeLayerBucketPart(w,B,Q){let{bucket:ee,layout:se,translationText:qe,translationIcon:je,posMatrix:it,unwrappedTileID:yt,textLabelPlaneMatrix:Ot,labelToScreenMatrix:Nt,textPixelRatio:hr,holdingForFade:Sr,collisionBoxArray:he,partiallyEvaluatedTextSize:be,collisionGroup:Pe}=w.parameters,Oe=se.get("text-optional"),Je=se.get("icon-optional"),He=a.ar(se,"text-overlap","text-allow-overlap"),et=He==="always",Mt=a.ar(se,"icon-overlap","icon-allow-overlap"),Dt=Mt==="always",Ut=se.get("text-rotation-alignment")==="map",tr=se.get("text-pitch-alignment")==="map",mr=se.get("icon-text-fit")!=="none",Rr=se.get("symbol-z-order")==="viewport-y",zr=et&&(Dt||!ee.hasIconData()||Je),Xr=Dt&&(et||!ee.hasTextData()||Oe);!ee.collisionArrays&&he&&ee.deserializeCollisionBoxes(he);let di=this._getTerrainElevationFunc(this.retainedQueryData[ee.bucketInstanceId].tileID),Li=(Ci,Qi,Mn)=>{var pa,ea;if(B[Ci.crossTileID])return;if(Sr)return void(this.placements[Ci.crossTileID]=new _n(!1,!1,!1));let Ga=!1,To=!1,Wa=!0,co=null,Ro={box:null,placeable:!1,offscreen:null},Ds={box:null,placeable:!1,offscreen:null},As=null,yo=null,po=null,_l=0,Vl=0,Zu=0;Qi.textFeatureIndex?_l=Qi.textFeatureIndex:Ci.useRuntimeCollisionCircles&&(_l=Ci.featureIndex),Qi.verticalTextFeatureIndex&&(Vl=Qi.verticalTextFeatureIndex);let cu=Qi.textBox;if(cu){let Dl=we=>{let Be=a.ah.horizontal;if(ee.allowVerticalPlacement&&!we&&this.prevPlacement){let Ue=this.prevPlacement.placedOrientations[Ci.crossTileID];Ue&&(this.placedOrientations[Ci.crossTileID]=Ue,Be=Ue,this.markUsedOrientation(ee,Be,Ci))}return Be},zl=(we,Be)=>{if(ee.allowVerticalPlacement&&Ci.numVerticalGlyphVertices>0&&Qi.verticalTextBox){for(let Ue of ee.writingModes)if(Ue===a.ah.vertical?(Ro=Be(),Ds=Ro):Ro=we(),Ro&&Ro.placeable)break}else Ro=we()},Z=Ci.textAnchorOffsetStartIndex,oe=Ci.textAnchorOffsetEndIndex;if(oe===Z){let we=(Be,Ue)=>{let We=this.collisionIndex.placeCollisionBox(Be,He,hr,it,yt,tr,Ut,qe,Pe.predicate,di);return We&&We.placeable&&(this.markUsedOrientation(ee,Ue,Ci),this.placedOrientations[Ci.crossTileID]=Ue),We};zl(()=>we(cu,a.ah.horizontal),()=>{let Be=Qi.verticalTextBox;return ee.allowVerticalPlacement&&Ci.numVerticalGlyphVertices>0&&Be?we(Be,a.ah.vertical):{box:null,offscreen:null}}),Dl(Ro&&Ro.placeable)}else{let we=a.aq[(ea=(pa=this.prevPlacement)===null||pa===void 0?void 0:pa.variableOffsets[Ci.crossTileID])===null||ea===void 0?void 0:ea.anchor],Be=(We,wt,tt)=>{let zt=We.x2-We.x1,or=We.y2-We.y1,lr=Ci.textBoxScale,Dr=mr&&Mt==="never"?wt:null,Ir=null,oi=He==="never"?1:2,ui="never";we&&oi++;for(let qr=0;qrBe(cu,Qi.iconBox,a.ah.horizontal),()=>{let We=Qi.verticalTextBox;return ee.allowVerticalPlacement&&(!Ro||!Ro.placeable)&&Ci.numVerticalGlyphVertices>0&&We?Be(We,Qi.verticalIconBox,a.ah.vertical):{box:null,occluded:!0,offscreen:null}}),Ro&&(Ga=Ro.placeable,Wa=Ro.offscreen);let Ue=Dl(Ro&&Ro.placeable);if(!Ga&&this.prevPlacement){let We=this.prevPlacement.variableOffsets[Ci.crossTileID];We&&(this.variableOffsets[Ci.crossTileID]=We,this.markUsedJustification(ee,We.anchor,Ci,Ue))}}}if(As=Ro,Ga=As&&As.placeable,Wa=As&&As.offscreen,Ci.useRuntimeCollisionCircles){let Dl=ee.text.placedSymbolArray.get(Ci.centerJustifiedTextSymbolIndex),zl=a.ai(ee.textSizeData,be,Dl),Z=se.get("text-padding");yo=this.collisionIndex.placeCollisionCircles(He,Dl,ee.lineVertexArray,ee.glyphOffsetArray,zl,it,yt,Ot,Nt,Q,tr,Pe.predicate,Ci.collisionCircleDiameter,Z,qe,di),yo.circles.length&&yo.collisionDetected&&!Q&&a.w("Collisions detected, but collision boxes are not shown"),Ga=et||yo.circles.length>0&&!yo.collisionDetected,Wa=Wa&&yo.offscreen}if(Qi.iconFeatureIndex&&(Zu=Qi.iconFeatureIndex),Qi.iconBox){let Dl=zl=>this.collisionIndex.placeCollisionBox(zl,Mt,hr,it,yt,tr,Ut,je,Pe.predicate,di,mr&&co?co:void 0);Ds&&Ds.placeable&&Qi.verticalIconBox?(po=Dl(Qi.verticalIconBox),To=po.placeable):(po=Dl(Qi.iconBox),To=po.placeable),Wa=Wa&&po.offscreen}let el=Oe||Ci.numHorizontalGlyphVertices===0&&Ci.numVerticalGlyphVertices===0,nu=Je||Ci.numIconVertices===0;el||nu?nu?el||(To=To&&Ga):Ga=To&&Ga:To=Ga=To&&Ga;let zc=To&&po.placeable;if(Ga&&As.placeable&&this.collisionIndex.insertCollisionBox(As.box,He,se.get("text-ignore-placement"),ee.bucketInstanceId,Ds&&Ds.placeable&&Vl?Vl:_l,Pe.ID),zc&&this.collisionIndex.insertCollisionBox(po.box,Mt,se.get("icon-ignore-placement"),ee.bucketInstanceId,Zu,Pe.ID),yo&&Ga&&this.collisionIndex.insertCollisionCircles(yo.circles,He,se.get("text-ignore-placement"),ee.bucketInstanceId,_l,Pe.ID),Q&&this.storeCollisionData(ee.bucketInstanceId,Mn,Qi,As,po,yo),Ci.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(ee.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[Ci.crossTileID]=new _n(Ga||zr,To||Xr,Wa||ee.justReloaded),B[Ci.crossTileID]=!0};if(Rr){if(w.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let Ci=ee.getSortedSymbolIndexes(this.transform.angle);for(let Qi=Ci.length-1;Qi>=0;--Qi){let Mn=Ci[Qi];Li(ee.symbolInstances.get(Mn),ee.collisionArrays[Mn],Mn)}}else for(let Ci=w.symbolInstanceStart;Ci=0&&(w.text.placedSymbolArray.get(je).crossTileID=se>=0&&je!==se?0:Q.crossTileID)}markUsedOrientation(w,B,Q){let ee=B===a.ah.horizontal||B===a.ah.horizontalOnly?B:0,se=B===a.ah.vertical?B:0,qe=[Q.leftJustifiedTextSymbolIndex,Q.centerJustifiedTextSymbolIndex,Q.rightJustifiedTextSymbolIndex];for(let je of qe)w.text.placedSymbolArray.get(je).placedOrientation=ee;Q.verticalPlacedTextSymbolIndex&&(w.text.placedSymbolArray.get(Q.verticalPlacedTextSymbolIndex).placedOrientation=se)}commit(w){this.commitTime=w,this.zoomAtLastRecencyCheck=this.transform.zoom;let B=this.prevPlacement,Q=!1;this.prevZoomAdjustment=B?B.zoomAdjustment(this.transform.zoom):0;let ee=B?B.symbolFadeChange(w):1,se=B?B.opacities:{},qe=B?B.variableOffsets:{},je=B?B.placedOrientations:{};for(let it in this.placements){let yt=this.placements[it],Ot=se[it];Ot?(this.opacities[it]=new Ni(Ot,ee,yt.text,yt.icon),Q=Q||yt.text!==Ot.text.placed||yt.icon!==Ot.icon.placed):(this.opacities[it]=new Ni(null,ee,yt.text,yt.icon,yt.skipFade),Q=Q||yt.text||yt.icon)}for(let it in se){let yt=se[it];if(!this.opacities[it]){let Ot=new Ni(yt,ee,!1,!1);Ot.isHidden()||(this.opacities[it]=Ot,Q=Q||yt.text.placed||yt.icon.placed)}}for(let it in qe)this.variableOffsets[it]||!this.opacities[it]||this.opacities[it].isHidden()||(this.variableOffsets[it]=qe[it]);for(let it in je)this.placedOrientations[it]||!this.opacities[it]||this.opacities[it].isHidden()||(this.placedOrientations[it]=je[it]);if(B&&B.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");Q?this.lastPlacementChangeTime=w:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=B?B.lastPlacementChangeTime:w)}updateLayerOpacities(w,B){let Q={};for(let ee of B){let se=ee.getBucket(w);se&&ee.latestFeatureIndex&&w.id===se.layerIds[0]&&this.updateBucketOpacities(se,ee.tileID,Q,ee.collisionBoxArray)}}updateBucketOpacities(w,B,Q,ee){w.hasTextData()&&(w.text.opacityVertexArray.clear(),w.text.hasVisibleVertices=!1),w.hasIconData()&&(w.icon.opacityVertexArray.clear(),w.icon.hasVisibleVertices=!1),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexArray.clear(),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexArray.clear();let se=w.layers[0],qe=se.layout,je=new Ni(null,0,!1,!1,!0),it=qe.get("text-allow-overlap"),yt=qe.get("icon-allow-overlap"),Ot=se._unevaluatedLayout.hasValue("text-variable-anchor")||se._unevaluatedLayout.hasValue("text-variable-anchor-offset"),Nt=qe.get("text-rotation-alignment")==="map",hr=qe.get("text-pitch-alignment")==="map",Sr=qe.get("icon-text-fit")!=="none",he=new Ni(null,0,it&&(yt||!w.hasIconData()||qe.get("icon-optional")),yt&&(it||!w.hasTextData()||qe.get("text-optional")),!0);!w.collisionArrays&&ee&&(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData())&&w.deserializeCollisionBoxes(ee);let be=(Oe,Je,He)=>{for(let et=0;et0,tr=this.placedOrientations[Je.crossTileID],mr=tr===a.ah.vertical,Rr=tr===a.ah.horizontal||tr===a.ah.horizontalOnly;if(He>0||et>0){let Xr=Mi(Dt.text);be(w.text,He,mr?Pi:Xr),be(w.text,et,Rr?Pi:Xr);let di=Dt.text.isHidden();[Je.rightJustifiedTextSymbolIndex,Je.centerJustifiedTextSymbolIndex,Je.leftJustifiedTextSymbolIndex].forEach(Qi=>{Qi>=0&&(w.text.placedSymbolArray.get(Qi).hidden=di||mr?1:0)}),Je.verticalPlacedTextSymbolIndex>=0&&(w.text.placedSymbolArray.get(Je.verticalPlacedTextSymbolIndex).hidden=di||Rr?1:0);let Li=this.variableOffsets[Je.crossTileID];Li&&this.markUsedJustification(w,Li.anchor,Je,tr);let Ci=this.placedOrientations[Je.crossTileID];Ci&&(this.markUsedJustification(w,"left",Je,Ci),this.markUsedOrientation(w,Ci,Je))}if(Ut){let Xr=Mi(Dt.icon),di=!(Sr&&Je.verticalPlacedIconSymbolIndex&&mr);Je.placedIconSymbolIndex>=0&&(be(w.icon,Je.numIconVertices,di?Xr:Pi),w.icon.placedSymbolArray.get(Je.placedIconSymbolIndex).hidden=Dt.icon.isHidden()),Je.verticalPlacedIconSymbolIndex>=0&&(be(w.icon,Je.numVerticalIconVertices,di?Pi:Xr),w.icon.placedSymbolArray.get(Je.verticalPlacedIconSymbolIndex).hidden=Dt.icon.isHidden())}let zr=Pe&&Pe.has(Oe)?Pe.get(Oe):{text:null,icon:null};if(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData()){let Xr=w.collisionArrays[Oe];if(Xr){let di=new a.P(0,0);if(Xr.textBox||Xr.verticalTextBox){let Li=!0;if(Ot){let Ci=this.variableOffsets[Mt];Ci?(di=It(Ci.anchor,Ci.width,Ci.height,Ci.textOffset,Ci.textBoxScale),Nt&&di._rotate(hr?this.transform.angle:-this.transform.angle)):Li=!1}if(Xr.textBox||Xr.verticalTextBox){let Ci;Xr.textBox&&(Ci=mr),Xr.verticalTextBox&&(Ci=Rr),jt(w.textCollisionBox.collisionVertexArray,Dt.text.placed,!Li||Ci,zr.text,di.x,di.y)}}if(Xr.iconBox||Xr.verticalIconBox){let Li=!!(!Rr&&Xr.verticalIconBox),Ci;Xr.iconBox&&(Ci=Li),Xr.verticalIconBox&&(Ci=!Li),jt(w.iconCollisionBox.collisionVertexArray,Dt.icon.placed,Ci,zr.icon,Sr?di.x:0,Sr?di.y:0)}}}}if(w.sortFeatures(this.transform.angle),this.retainedQueryData[w.bucketInstanceId]&&(this.retainedQueryData[w.bucketInstanceId].featureSortOrder=w.featureSortOrder),w.hasTextData()&&w.text.opacityVertexBuffer&&w.text.opacityVertexBuffer.updateData(w.text.opacityVertexArray),w.hasIconData()&&w.icon.opacityVertexBuffer&&w.icon.opacityVertexBuffer.updateData(w.icon.opacityVertexArray),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexBuffer&&w.iconCollisionBox.collisionVertexBuffer.updateData(w.iconCollisionBox.collisionVertexArray),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexBuffer&&w.textCollisionBox.collisionVertexBuffer.updateData(w.textCollisionBox.collisionVertexArray),w.text.opacityVertexArray.length!==w.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${w.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${w.text.layoutVertexArray.length}) / 4`);if(w.icon.opacityVertexArray.length!==w.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${w.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${w.icon.layoutVertexArray.length}) / 4`);if(w.bucketInstanceId in this.collisionCircleArrays){let Oe=this.collisionCircleArrays[w.bucketInstanceId];w.placementInvProjMatrix=Oe.invProjMatrix,w.placementViewportMatrix=Oe.viewportMatrix,w.collisionCircleArray=Oe.circles,delete this.collisionCircleArrays[w.bucketInstanceId]}}symbolFadeChange(w){return this.fadeDuration===0?1:(w-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(w){return Math.max(0,(this.transform.zoom-w)/1.5)}hasTransitions(w){return this.stale||w-this.lastPlacementChangeTimew}setStale(){this.stale=!0}}function jt(le,w,B,Q,ee,se){Q&&Q.length!==0||(Q=[0,0,0,0]);let qe=Q[0]-ri,je=Q[1]-ri,it=Q[2]-ri,yt=Q[3]-ri;le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,qe,je),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,it,je),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,it,yt),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,qe,yt)}let Zt=Math.pow(2,25),yr=Math.pow(2,24),Fr=Math.pow(2,17),Zr=Math.pow(2,16),Vr=Math.pow(2,9),gi=Math.pow(2,8),Si=Math.pow(2,1);function Mi(le){if(le.opacity===0&&!le.placed)return 0;if(le.opacity===1&&le.placed)return 4294967295;let w=le.placed?1:0,B=Math.floor(127*le.opacity);return B*Zt+w*yr+B*Fr+w*Zr+B*Vr+w*gi+B*Si+w}let Pi=0;function Gi(){return{isOccluded:(le,w,B)=>!1,getPitchedTextCorrection:(le,w,B)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(le,w,B,Q){throw new Error("Not implemented.")},translatePosition:(le,w,B,Q)=>function(ee,se,qe,je,it=!1){if(!qe[0]&&!qe[1])return[0,0];let yt=it?je==="map"?ee.angle:0:je==="viewport"?-ee.angle:0;if(yt){let Ot=Math.sin(yt),Nt=Math.cos(yt);qe=[qe[0]*Nt-qe[1]*Ot,qe[0]*Ot+qe[1]*Nt]}return[it?qe[0]:nn(se,qe[0],ee.zoom),it?qe[1]:nn(se,qe[1],ee.zoom)]}(le,w,B,Q),getCircleRadiusCorrection:le=>1}}class Ki{constructor(w){this._sortAcrossTiles=w.layout.get("symbol-z-order")!=="viewport-y"&&!w.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(w,B,Q,ee,se){let qe=this._bucketParts;for(;this._currentTileIndexje.sortKey-it.sortKey));this._currentPartIndex!this._forceFullPlacement&&u.now()-ee>2;for(;this._currentPlacementIndex>=0;){let qe=B[w[this._currentPlacementIndex]],je=this.placement.collisionIndex.transform.zoom;if(qe.type==="symbol"&&(!qe.minzoom||qe.minzoom<=je)&&(!qe.maxzoom||qe.maxzoom>je)){if(this._inProgressLayer||(this._inProgressLayer=new Ki(qe)),this._inProgressLayer.continuePlacement(Q[qe.source],this.placement,this._showCollisionBoxes,qe,se))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(w){return this.placement.commit(w),this.placement}}let jn=512/a.X/2;class la{constructor(w,B,Q){this.tileID=w,this.bucketInstanceId=Q,this._symbolsByKey={};let ee=new Map;for(let se=0;se({x:Math.floor(it.anchorX*jn),y:Math.floor(it.anchorY*jn)})),crossTileIDs:qe.map(it=>it.crossTileID)};if(je.positions.length>128){let it=new a.av(je.positions.length,16,Uint16Array);for(let{x:yt,y:Ot}of je.positions)it.add(yt,Ot);it.finish(),delete je.positions,je.index=it}this._symbolsByKey[se]=je}}getScaledCoordinates(w,B){let{x:Q,y:ee,z:se}=this.tileID.canonical,{x:qe,y:je,z:it}=B.canonical,yt=jn/Math.pow(2,it-se),Ot=(je*a.X+w.anchorY)*yt,Nt=ee*a.X*jn;return{x:Math.floor((qe*a.X+w.anchorX)*yt-Q*a.X*jn),y:Math.floor(Ot-Nt)}}findMatches(w,B,Q){let ee=this.tileID.canonical.zw)}}class Fa{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class Ra{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(w){let B=Math.round((w-this.lng)/360);if(B!==0)for(let Q in this.indexes){let ee=this.indexes[Q],se={};for(let qe in ee){let je=ee[qe];je.tileID=je.tileID.unwrapTo(je.tileID.wrap+B),se[je.tileID.key]=je}this.indexes[Q]=se}this.lng=w}addBucket(w,B,Q){if(this.indexes[w.overscaledZ]&&this.indexes[w.overscaledZ][w.key]){if(this.indexes[w.overscaledZ][w.key].bucketInstanceId===B.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(w.overscaledZ,this.indexes[w.overscaledZ][w.key])}for(let se=0;sew.overscaledZ)for(let je in qe){let it=qe[je];it.tileID.isChildOf(w)&&it.findMatches(B.symbolInstances,w,ee)}else{let je=qe[w.scaledTo(Number(se)).key];je&&je.findMatches(B.symbolInstances,w,ee)}}for(let se=0;se{B[Q]=!0});for(let Q in this.layerIndexes)B[Q]||delete this.layerIndexes[Q]}}let oa=(le,w)=>a.t(le,w&&w.filter(B=>B.identifier!=="source.canvas")),Sn=a.aw();class Ha extends a.E{constructor(w,B={}){super(),this._rtlPluginLoaded=()=>{for(let Q in this.sourceCaches){let ee=this.sourceCaches[Q].getSource().type;ee!=="vector"&&ee!=="geojson"||this.sourceCaches[Q].reload()}},this.map=w,this.dispatcher=new Ee(Te(),w._getMapId()),this.dispatcher.registerMessageHandler("GG",(Q,ee)=>this.getGlyphs(Q,ee)),this.dispatcher.registerMessageHandler("GI",(Q,ee)=>this.getImages(Q,ee)),this.imageManager=new T,this.imageManager.setEventedParent(this),this.glyphManager=new H(w._requestManager,B.localIdeographFontFamily),this.lineAtlas=new ae(256,512),this.crossTileSymbolIndex=new jo,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new a.ax,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",a.ay()),bt().on(er,this._rtlPluginLoaded),this.on("data",Q=>{if(Q.dataType!=="source"||Q.sourceDataType!=="metadata")return;let ee=this.sourceCaches[Q.sourceId];if(!ee)return;let se=ee.getSource();if(se&&se.vectorLayerIds)for(let qe in this._layers){let je=this._layers[qe];je.source===se.id&&this._validateLayer(je)}})}loadURL(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),B.validate=typeof B.validate!="boolean"||B.validate;let ee=this.map._requestManager.transformRequest(w,"Style");this._loadStyleRequest=new AbortController;let se=this._loadStyleRequest;a.h(ee,this._loadStyleRequest).then(qe=>{this._loadStyleRequest=null,this._load(qe.data,B,Q)}).catch(qe=>{this._loadStyleRequest=null,qe&&!se.signal.aborted&&this.fire(new a.j(qe))})}loadJSON(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,B.validate=B.validate!==!1,this._load(w,B,Q)}).catch(()=>{})}loadEmpty(){this.fire(new a.k("dataloading",{dataType:"style"})),this._load(Sn,{validate:!1})}_load(w,B,Q){var ee;let se=B.transformStyle?B.transformStyle(Q,w):w;if(!B.validate||!oa(this,a.u(se))){this._loaded=!0,this.stylesheet=se;for(let qe in se.sources)this.addSource(qe,se.sources[qe],{validate:!1});se.sprite?this._loadSprite(se.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(se.glyphs),this._createLayers(),this.light=new N(this.stylesheet.light),this.sky=new re(this.stylesheet.sky),this.map.setTerrain((ee=this.stylesheet.terrain)!==null&&ee!==void 0?ee:null),this.fire(new a.k("data",{dataType:"style"})),this.fire(new a.k("style.load"))}}_createLayers(){let w=a.az(this.stylesheet.layers);this.dispatcher.broadcast("SL",w),this._order=w.map(B=>B.id),this._layers={},this._serializedLayers=null;for(let B of w){let Q=a.aA(B);Q.setEventedParent(this,{layer:{id:B.id}}),this._layers[B.id]=Q}}_loadSprite(w,B=!1,Q=void 0){let ee;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(se,qe,je,it){return a._(this,void 0,void 0,function*(){let yt=C(se),Ot=je>1?"@2x":"",Nt={},hr={};for(let{id:Sr,url:he}of yt){let be=qe.transformRequest(M(he,Ot,".json"),"SpriteJSON");Nt[Sr]=a.h(be,it);let Pe=qe.transformRequest(M(he,Ot,".png"),"SpriteImage");hr[Sr]=g.getImage(Pe,it)}return yield Promise.all([...Object.values(Nt),...Object.values(hr)]),function(Sr,he){return a._(this,void 0,void 0,function*(){let be={};for(let Pe in Sr){be[Pe]={};let Oe=u.getImageCanvasContext((yield he[Pe]).data),Je=(yield Sr[Pe]).data;for(let He in Je){let{width:et,height:Mt,x:Dt,y:Ut,sdf:tr,pixelRatio:mr,stretchX:Rr,stretchY:zr,content:Xr,textFitWidth:di,textFitHeight:Li}=Je[He];be[Pe][He]={data:null,pixelRatio:mr,sdf:tr,stretchX:Rr,stretchY:zr,content:Xr,textFitWidth:di,textFitHeight:Li,spriteData:{width:et,height:Mt,x:Dt,y:Ut,context:Oe}}}}return be})}(Nt,hr)})}(w,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(se=>{if(this._spriteRequest=null,se)for(let qe in se){this._spritesImagesIds[qe]=[];let je=this._spritesImagesIds[qe]?this._spritesImagesIds[qe].filter(it=>!(it in se)):[];for(let it of je)this.imageManager.removeImage(it),this._changedImages[it]=!0;for(let it in se[qe]){let yt=qe==="default"?it:`${qe}:${it}`;this._spritesImagesIds[qe].push(yt),yt in this.imageManager.images?this.imageManager.updateImage(yt,se[qe][it],!1):this.imageManager.addImage(yt,se[qe][it]),B&&(this._changedImages[yt]=!0)}}}).catch(se=>{this._spriteRequest=null,ee=se,this.fire(new a.j(ee))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),B&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"})),Q&&Q(ee)})}_unloadSprite(){for(let w of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(w),this._changedImages[w]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}_validateLayer(w){let B=this.sourceCaches[w.source];if(!B)return;let Q=w.sourceLayer;if(!Q)return;let ee=B.getSource();(ee.type==="geojson"||ee.vectorLayerIds&&ee.vectorLayerIds.indexOf(Q)===-1)&&this.fire(new a.j(new Error(`Source layer "${Q}" does not exist on source "${ee.id}" as specified by style layer "${w.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let w in this.sourceCaches)if(!this.sourceCaches[w].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(w,B=!1){let Q=this._serializedAllLayers();if(!w||w.length===0)return Object.values(B?a.aB(Q):Q);let ee=[];for(let se of w)if(Q[se]){let qe=B?a.aB(Q[se]):Q[se];ee.push(qe)}return ee}_serializedAllLayers(){let w=this._serializedLayers;if(w)return w;w=this._serializedLayers={};let B=Object.keys(this._layers);for(let Q of B){let ee=this._layers[Q];ee.type!=="custom"&&(w[Q]=ee.serialize())}return w}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let w in this.sourceCaches)if(this.sourceCaches[w].hasTransition())return!0;for(let w in this._layers)if(this._layers[w].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(w){if(!this._loaded)return;let B=this._changed;if(B){let ee=Object.keys(this._updatedLayers),se=Object.keys(this._removedLayers);(ee.length||se.length)&&this._updateWorkerLayers(ee,se);for(let qe in this._updatedSources){let je=this._updatedSources[qe];if(je==="reload")this._reloadSource(qe);else{if(je!=="clear")throw new Error(`Invalid action ${je}`);this._clearSource(qe)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let qe in this._updatedPaintProps)this._layers[qe].updateTransitions(w);this.light.updateTransitions(w),this.sky.updateTransitions(w),this._resetUpdates()}let Q={};for(let ee in this.sourceCaches){let se=this.sourceCaches[ee];Q[ee]=se.used,se.used=!1}for(let ee of this._order){let se=this._layers[ee];se.recalculate(w,this._availableImages),!se.isHidden(w.zoom)&&se.source&&(this.sourceCaches[se.source].used=!0)}for(let ee in Q){let se=this.sourceCaches[ee];!!Q[ee]!=!!se.used&&se.fire(new a.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:ee}))}this.light.recalculate(w),this.sky.recalculate(w),this.z=w.zoom,B&&this.fire(new a.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let w=Object.keys(this._changedImages);if(w.length){for(let B in this.sourceCaches)this.sourceCaches[B].reloadTilesForDependencies(["icons","patterns"],w);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let w in this.sourceCaches)this.sourceCaches[w].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(w,B){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(w,!1),removedIds:B})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(w,B={}){var Q;this._checkLoaded();let ee=this.serialize();if(w=B.transformStyle?B.transformStyle(ee,w):w,((Q=B.validate)===null||Q===void 0||Q)&&oa(this,a.u(w)))return!1;(w=a.aB(w)).layers=a.az(w.layers);let se=a.aC(ee,w),qe=this._getOperationsToPerform(se);if(qe.unimplemented.length>0)throw new Error(`Unimplemented: ${qe.unimplemented.join(", ")}.`);if(qe.operations.length===0)return!1;for(let je of qe.operations)je();return this.stylesheet=w,this._serializedLayers=null,!0}_getOperationsToPerform(w){let B=[],Q=[];for(let ee of w)switch(ee.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":B.push(()=>this.addLayer.apply(this,ee.args));break;case"removeLayer":B.push(()=>this.removeLayer.apply(this,ee.args));break;case"setPaintProperty":B.push(()=>this.setPaintProperty.apply(this,ee.args));break;case"setLayoutProperty":B.push(()=>this.setLayoutProperty.apply(this,ee.args));break;case"setFilter":B.push(()=>this.setFilter.apply(this,ee.args));break;case"addSource":B.push(()=>this.addSource.apply(this,ee.args));break;case"removeSource":B.push(()=>this.removeSource.apply(this,ee.args));break;case"setLayerZoomRange":B.push(()=>this.setLayerZoomRange.apply(this,ee.args));break;case"setLight":B.push(()=>this.setLight.apply(this,ee.args));break;case"setGeoJSONSourceData":B.push(()=>this.setGeoJSONSourceData.apply(this,ee.args));break;case"setGlyphs":B.push(()=>this.setGlyphs.apply(this,ee.args));break;case"setSprite":B.push(()=>this.setSprite.apply(this,ee.args));break;case"setSky":B.push(()=>this.setSky.apply(this,ee.args));break;case"setTerrain":B.push(()=>this.map.setTerrain.apply(this,ee.args));break;case"setTransition":B.push(()=>{});break;default:Q.push(ee.command)}return{operations:B,unimplemented:Q}}addImage(w,B){if(this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" already exists.`)));this.imageManager.addImage(w,B),this._afterImageUpdated(w)}updateImage(w,B){this.imageManager.updateImage(w,B)}getImage(w){return this.imageManager.getImage(w)}removeImage(w){if(!this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" does not exist.`)));this.imageManager.removeImage(w),this._afterImageUpdated(w)}_afterImageUpdated(w){this._availableImages=this.imageManager.listImages(),this._changedImages[w]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(w,B,Q={}){if(this._checkLoaded(),this.sourceCaches[w]!==void 0)throw new Error(`Source "${w}" already exists.`);if(!B.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(B).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(B.type)>=0&&this._validate(a.u.source,`sources.${w}`,B,null,Q))return;this.map&&this.map._collectResourceTiming&&(B.collectResourceTiming=!0);let ee=this.sourceCaches[w]=new dt(w,B,this.dispatcher);ee.style=this,ee.setEventedParent(this,()=>({isSourceLoaded:ee.loaded(),source:ee.serialize(),sourceId:w})),ee.onAdd(this.map),this._changed=!0}removeSource(w){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error("There is no source with this ID");for(let Q in this._layers)if(this._layers[Q].source===w)return this.fire(new a.j(new Error(`Source "${w}" cannot be removed while layer "${Q}" is using it.`)));let B=this.sourceCaches[w];delete this.sourceCaches[w],delete this._updatedSources[w],B.fire(new a.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:w})),B.setEventedParent(null),B.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(w,B){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error(`There is no source with this ID=${w}`);let Q=this.sourceCaches[w].getSource();if(Q.type!=="geojson")throw new Error(`geojsonSource.type is ${Q.type}, which is !== 'geojson`);Q.setData(B),this._changed=!0}getSource(w){return this.sourceCaches[w]&&this.sourceCaches[w].getSource()}addLayer(w,B,Q={}){this._checkLoaded();let ee=w.id;if(this.getLayer(ee))return void this.fire(new a.j(new Error(`Layer "${ee}" already exists on this map.`)));let se;if(w.type==="custom"){if(oa(this,a.aD(w)))return;se=a.aA(w)}else{if("source"in w&&typeof w.source=="object"&&(this.addSource(ee,w.source),w=a.aB(w),w=a.e(w,{source:ee})),this._validate(a.u.layer,`layers.${ee}`,w,{arrayIndex:-1},Q))return;se=a.aA(w),this._validateLayer(se),se.setEventedParent(this,{layer:{id:ee}})}let qe=B?this._order.indexOf(B):this._order.length;if(B&&qe===-1)this.fire(new a.j(new Error(`Cannot add layer "${ee}" before non-existing layer "${B}".`)));else{if(this._order.splice(qe,0,ee),this._layerOrderChanged=!0,this._layers[ee]=se,this._removedLayers[ee]&&se.source&&se.type!=="custom"){let je=this._removedLayers[ee];delete this._removedLayers[ee],je.type!==se.type?this._updatedSources[se.source]="clear":(this._updatedSources[se.source]="reload",this.sourceCaches[se.source].pause())}this._updateLayer(se),se.onAdd&&se.onAdd(this.map)}}moveLayer(w,B){if(this._checkLoaded(),this._changed=!0,!this._layers[w])return void this.fire(new a.j(new Error(`The layer '${w}' does not exist in the map's style and cannot be moved.`)));if(w===B)return;let Q=this._order.indexOf(w);this._order.splice(Q,1);let ee=B?this._order.indexOf(B):this._order.length;B&&ee===-1?this.fire(new a.j(new Error(`Cannot move layer "${w}" before non-existing layer "${B}".`))):(this._order.splice(ee,0,w),this._layerOrderChanged=!0)}removeLayer(w){this._checkLoaded();let B=this._layers[w];if(!B)return void this.fire(new a.j(new Error(`Cannot remove non-existing layer "${w}".`)));B.setEventedParent(null);let Q=this._order.indexOf(w);this._order.splice(Q,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[w]=B,delete this._layers[w],this._serializedLayers&&delete this._serializedLayers[w],delete this._updatedLayers[w],delete this._updatedPaintProps[w],B.onRemove&&B.onRemove(this.map)}getLayer(w){return this._layers[w]}getLayersOrder(){return[...this._order]}hasLayer(w){return w in this._layers}setLayerZoomRange(w,B,Q){this._checkLoaded();let ee=this.getLayer(w);ee?ee.minzoom===B&&ee.maxzoom===Q||(B!=null&&(ee.minzoom=B),Q!=null&&(ee.maxzoom=Q),this._updateLayer(ee)):this.fire(new a.j(new Error(`Cannot set the zoom range of non-existing layer "${w}".`)))}setFilter(w,B,Q={}){this._checkLoaded();let ee=this.getLayer(w);if(ee){if(!a.aE(ee.filter,B))return B==null?(ee.filter=void 0,void this._updateLayer(ee)):void(this._validate(a.u.filter,`layers.${ee.id}.filter`,B,null,Q)||(ee.filter=a.aB(B),this._updateLayer(ee)))}else this.fire(new a.j(new Error(`Cannot filter non-existing layer "${w}".`)))}getFilter(w){return a.aB(this.getLayer(w).filter)}setLayoutProperty(w,B,Q,ee={}){this._checkLoaded();let se=this.getLayer(w);se?a.aE(se.getLayoutProperty(B),Q)||(se.setLayoutProperty(B,Q,ee),this._updateLayer(se)):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getLayoutProperty(w,B){let Q=this.getLayer(w);if(Q)return Q.getLayoutProperty(B);this.fire(new a.j(new Error(`Cannot get style of non-existing layer "${w}".`)))}setPaintProperty(w,B,Q,ee={}){this._checkLoaded();let se=this.getLayer(w);se?a.aE(se.getPaintProperty(B),Q)||(se.setPaintProperty(B,Q,ee)&&this._updateLayer(se),this._changed=!0,this._updatedPaintProps[w]=!0,this._serializedLayers=null):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getPaintProperty(w,B){return this.getLayer(w).getPaintProperty(B)}setFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=w.sourceLayer,se=this.sourceCaches[Q];if(se===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let qe=se.getSource().type;qe==="geojson"&&ee?this.fire(new a.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):qe!=="vector"||ee?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),se.setFeatureState(ee,w.id,B)):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=this.sourceCaches[Q];if(ee===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let se=ee.getSource().type,qe=se==="vector"?w.sourceLayer:void 0;se!=="vector"||qe?B&&typeof w.id!="string"&&typeof w.id!="number"?this.fire(new a.j(new Error("A feature id is required to remove its specific state property."))):ee.removeFeatureState(qe,w.id,B):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(w){this._checkLoaded();let B=w.source,Q=w.sourceLayer,ee=this.sourceCaches[B];if(ee!==void 0)return ee.getSource().type!=="vector"||Q?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),ee.getFeatureState(Q,w.id)):void this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new a.j(new Error(`The source '${B}' does not exist in the map's style.`)))}getTransition(){return a.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let w=a.aF(this.sourceCaches,se=>se.serialize()),B=this._serializeByIds(this._order,!0),Q=this.map.getTerrain()||void 0,ee=this.stylesheet;return a.aG({version:ee.version,name:ee.name,metadata:ee.metadata,light:ee.light,sky:ee.sky,center:ee.center,zoom:ee.zoom,bearing:ee.bearing,pitch:ee.pitch,sprite:ee.sprite,glyphs:ee.glyphs,transition:ee.transition,sources:w,layers:B,terrain:Q},se=>se!==void 0)}_updateLayer(w){this._updatedLayers[w.id]=!0,w.source&&!this._updatedSources[w.source]&&this.sourceCaches[w.source].getSource().type!=="raster"&&(this._updatedSources[w.source]="reload",this.sourceCaches[w.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(w){let B=qe=>this._layers[qe].type==="fill-extrusion",Q={},ee=[];for(let qe=this._order.length-1;qe>=0;qe--){let je=this._order[qe];if(B(je)){Q[je]=qe;for(let it of w){let yt=it[je];if(yt)for(let Ot of yt)ee.push(Ot)}}}ee.sort((qe,je)=>je.intersectionZ-qe.intersectionZ);let se=[];for(let qe=this._order.length-1;qe>=0;qe--){let je=this._order[qe];if(B(je))for(let it=ee.length-1;it>=0;it--){let yt=ee[it].feature;if(Q[yt.layer.id]{let tr=Oe.featureSortOrder;if(tr){let mr=tr.indexOf(Dt.featureIndex);return tr.indexOf(Ut.featureIndex)-mr}return Ut.featureIndex-Dt.featureIndex});for(let Dt of Mt)et.push(Dt)}}for(let Oe in he)he[Oe].forEach(Je=>{let He=Je.feature,et=yt[je[Oe].source].getFeatureState(He.layer["source-layer"],He.id);He.source=He.layer.source,He.layer["source-layer"]&&(He.sourceLayer=He.layer["source-layer"]),He.state=et});return he}(this._layers,qe,this.sourceCaches,w,B,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(se)}querySourceFeatures(w,B){B&&B.filter&&this._validate(a.u.filter,"querySourceFeatures.filter",B.filter,null,B);let Q=this.sourceCaches[w];return Q?function(ee,se){let qe=ee.getRenderableIds().map(yt=>ee.getTileByID(yt)),je=[],it={};for(let yt=0;ythr.getTileByID(Sr)).sort((Sr,he)=>he.tileID.overscaledZ-Sr.tileID.overscaledZ||(Sr.tileID.isLessThan(he.tileID)?-1:1))}let Nt=this.crossTileSymbolIndex.addLayer(Ot,it[Ot.source],w.center.lng);qe=qe||Nt}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((se=se||this._layerOrderChanged||Q===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(u.now(),w.zoom))&&(this.pauseablePlacement=new ka(w,this.map.terrain,this._order,se,B,Q,ee,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,it),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(u.now()),je=!0),qe&&this.pauseablePlacement.placement.setStale()),je||qe)for(let yt of this._order){let Ot=this._layers[yt];Ot.type==="symbol"&&this.placement.updateLayerOpacities(Ot,it[Ot.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(u.now())}_releaseSymbolFadeTiles(){for(let w in this.sourceCaches)this.sourceCaches[w].releaseSymbolFadeTiles()}getImages(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.imageManager.getImages(B.icons);this._updateTilesForChangedImages();let ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,B.icons),Q})}getGlyphs(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.glyphManager.getGlyphs(B.stacks),ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,[""]),Q})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(w,B={}){this._checkLoaded(),w&&this._validate(a.u.glyphs,"glyphs",w,null,B)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=w,this.glyphManager.entries={},this.glyphManager.setURL(w))}addSprite(w,B,Q={},ee){this._checkLoaded();let se=[{id:w,url:B}],qe=[...C(this.stylesheet.sprite),...se];this._validate(a.u.sprite,"sprite",qe,null,Q)||(this.stylesheet.sprite=qe,this._loadSprite(se,!0,ee))}removeSprite(w){this._checkLoaded();let B=C(this.stylesheet.sprite);if(B.find(Q=>Q.id===w)){if(this._spritesImagesIds[w])for(let Q of this._spritesImagesIds[w])this.imageManager.removeImage(Q),this._changedImages[Q]=!0;B.splice(B.findIndex(Q=>Q.id===w),1),this.stylesheet.sprite=B.length>0?B:void 0,delete this._spritesImagesIds[w],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}else this.fire(new a.j(new Error(`Sprite "${w}" doesn't exists on this map.`)))}getSprite(){return C(this.stylesheet.sprite)}setSprite(w,B={},Q){this._checkLoaded(),w&&this._validate(a.u.sprite,"sprite",w,null,B)||(this.stylesheet.sprite=w,w?this._loadSprite(w,!0,Q):(this._unloadSprite(),Q&&Q(null)))}}var oo=a.Y([{name:"a_pos",type:"Int16",components:2}]);let xn={prelude:_t(`#ifdef GL_ES +{name:nonlatin}`,"text-max-width":8,"icon-image":"star_11","text-offset":[.4,0],"icon-size":.8,"text-anchor":"left",visibility:"visible"},paint:{"text-color":"#333","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["!has","iso_a2"]],layout:{"text-font":["Noto Sans Italic"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-3",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-2",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",2],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[2,11],[5,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-1",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",1],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[1,11],[4,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-continent",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",maxzoom:1,filter:["==","class","continent"],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":14,"text-max-width":6.25,"text-transform":"uppercase",visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}}],id:"qebnlkra6"}});var oHe=ye((c1r,aHe)=>{aHe.exports={version:8,name:"orto",metadata:{},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}}]}});var wx=ye((f1r,fHe)=>{"use strict";var TGt=Y1(),AGt=nHe(),SGt=oHe(),MGt='\xA9 OpenStreetMap contributors',sHe="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",lHe="https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",JF="https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",EGt="https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json",kGt="https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json",CGt="https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json",cHe={basic:JF,streets:JF,outdoors:JF,light:sHe,dark:lHe,satellite:SGt,"satellite-streets":AGt,"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:MGt,tiles:["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":sHe,"carto-darkmatter":lHe,"carto-voyager":JF,"carto-positron-nolabels":EGt,"carto-darkmatter-nolabels":kGt,"carto-voyager-nolabels":CGt},uHe=TGt(cHe);fHe.exports={styleValueDflt:"basic",stylesMap:cHe,styleValuesMap:uHe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",missingStyleErrorMsg:["No valid maplibre style found, please set `map.style` to one of:",uHe.join(", "),"or use a tile service."].join(` +`),mapOnErrorMsg:"Map error."}});var Ok=ye((h1r,gHe)=>{"use strict";var hHe=Mr(),dHe=va().defaultLine,LGt=Ju().attributes,PGt=Su(),IGt=Uc().textposition,RGt=Bu().overrideAll,DGt=Vs().templatedArray,vHe=wx(),pHe=PGt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});pHe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var zGt=gHe.exports=RGt({_arrayAttrRegexps:[hHe.counterRegex("map",".layers",!0)],domain:LGt({name:"map"}),style:{valType:"any",values:vHe.styleValuesMap,dflt:vHe.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:DGt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:dHe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:dHe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:pHe,textposition:hHe.extendFlat({},IGt,{arrayOk:!1})}})},"plot","from-root");zGt.uirevision={valType:"any",editType:"none"}});var $F=ye((d1r,_He)=>{"use strict";var FGt=Wo().hovertemplateAttrs,qGt=Wo().texttemplateAttrs,OGt=Eg(),Bk=H2(),TA=Uc(),mHe=Ok(),BGt=vl(),NGt=Jl(),rw=no().extendFlat,UGt=Bu().overrideAll,VGt=Ok(),yHe=Bk.line,AA=Bk.marker;_He.exports=UGt({lon:Bk.lon,lat:Bk.lat,cluster:{enabled:{valType:"boolean"},maxzoom:rw({},VGt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:rw({},AA.opacity,{dflt:1})},mode:rw({},TA.mode,{dflt:"markers"}),text:rw({},TA.text,{}),texttemplate:qGt({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:rw({},TA.hovertext,{}),line:{color:yHe.color,width:yHe.width},connectgaps:TA.connectgaps,marker:rw({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:AA.opacity,size:AA.size,sizeref:AA.sizeref,sizemin:AA.sizemin,sizemode:AA.sizemode},NGt("marker")),fill:Bk.fill,fillcolor:OGt(),textfont:mHe.layers.symbol.textfont,textposition:mHe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:TA.selected.marker},unselected:{marker:TA.unselected.marker},hoverinfo:rw({},BGt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:FGt()},"calc","nested")});var lJ=ye((v1r,xHe)=>{"use strict";var HGt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];xHe.exports={isSupportedFont:function(e){return HGt.indexOf(e)!==-1}}});var THe=ye((p1r,wHe)=>{"use strict";var Nk=Mr(),uJ=lu(),GGt=$p(),jGt=R0(),WGt=D0(),ZGt=Ig(),bHe=$F(),XGt=lJ().isSupportedFont;wHe.exports=function(t,r,n,i){function a(p,E){return Nk.coerce(t,r,bHe,p,E)}function o(p,E){return Nk.coerce2(t,r,bHe,p,E)}var s=YGt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("hovertext"),a("hovertemplate"),a("mode"),a("below"),uJ.hasMarkers(r)){GGt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(Nk.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),Nk.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}uJ.hasLines(r)&&(jGt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,x=a("cluster.enabled",v);if(x||uJ.hasText(r)){var b=i.font.family;WGt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:XGt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&ZGt(t,r,n,a),Nk.coerceSelectionMarkerOpacity(r,a)};function YGt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var cJ=ye((g1r,SHe)=>{"use strict";var AHe=Qa();SHe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=AHe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=AHe.tickText(o,o.c2l(s[1]),!0).text,i}});var fJ=ye((m1r,EHe)=>{"use strict";var MHe=Mr();EHe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=MHe.isArrayOrTypedArray(r)?MHe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var RHe=ye((y1r,IHe)=>{"use strict";var LHe=uo(),nv=Mr(),KGt=es().BADNUM,e7=rx(),kHe=Mu(),JGt=ao(),$Gt=S3(),t7=lu(),QGt=lJ().isSupportedFont,ejt=fJ(),tjt=rp().appendArrayPointValue,rjt=Pl().NEWLINES,ijt=Pl().BR_TAG_ALL;IHe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=t7.hasLines(n),s=t7.hasMarkers(n),l=t7.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=QF("fill"),d=QF("line"),v=QF("circle"),x=QF("symbol"),b={fill:h,line:d,circle:v,symbol:x};if(!i)return b;var p;if((a||o)&&(p=e7.calcTraceToLineCoords(r)),a&&(h.geojson=e7.makePolygon(p),h.layout.visibility="visible",nv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=e7.makeLine(p),d.layout.visibility="visible",nv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var E=njt(r);v.geojson=E.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":dJ(n.cluster.color,n.cluster.step),"circle-radius":dJ(n.cluster.size,n.cluster.step),"circle-opacity":dJ(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":CHe(n),"text-size":12}}),nv.extendFlat(v.paint,{"circle-color":E.mcc,"circle-radius":E.mrc,"circle-opacity":E.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(x.geojson=ajt(r,t),nv.extendFlat(x.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(nv.extendFlat(x.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&nv.extendFlat(x.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),x.layout["icon-allow-overlap"]=n.marker.allowoverlap,nv.extendFlat(x.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var k=(n.marker||{}).size,A=ejt(n.textposition,k);nv.extendFlat(x.layout,{"text-size":n.textfont.size,"text-anchor":A.anchor,"text-offset":A.offset,"text-font":CHe(n)}),nv.extendFlat(x.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function QF(e){return{type:e,geojson:e7.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function njt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=nv.isArrayOrTypedArray(r.color),a=nv.isArrayOrTypedArray(r.size),o=nv.isArrayOrTypedArray(r.opacity),s;function l(k){return t.opacity*k}function u(k){return k/2}var c;i&&(kHe.hasColorscale(t,"marker")?c=kHe.makeColorScaleFuncFromTrace(r):c=nv.identity);var f;a&&(f=$Gt(t));var h;o&&(h=function(k){var A=LHe(k)?+nv.constrain(k,0,1):0;return l(A)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),QGt(s)||(s=r);var l=s.split(", ");return l}});var qHe=ye((_1r,FHe)=>{"use strict";var ojt=Mr(),DHe=RHe(),SA=wx().traceLayerPrefix,ng={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function zHe(e,t,r,n){this.type="scattermap",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:SA+t+"-fill",line:SA+t+"-line",circle:SA+t+"-circle",symbol:SA+t+"-symbol",cluster:SA+t+"-cluster",clusterCount:SA+t+"-cluster-count"},this.below=null}var Uk=zHe.prototype;Uk.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&ojt.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};Uk.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};Uk.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var _=A[L];i.removeLayer(u.layerIds[_])}k||i.removeSource(u.sourceIds.circle)}function h(k){for(var A=ng.nonCluster,L=0;L=0;L--){var _=A[L];i.removeLayer(u.layerIds[_]),k||i.removeSource(u.sourceIds[_])}}function v(k){l?f(k):d(k)}function x(k){s?c(k):h(k)}function b(){for(var k=s?ng.cluster:ng.nonCluster,A=0;A=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};FHe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new zHe(t,n.uid,i,a),s=DHe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var sjt=Nc(),vJ=Mr(),ljt=oT(),ujt=vJ.fillText,cjt=es().BADNUM,fjt=wx().traceLayerPrefix;function hjt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=fjt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(M){return M.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function x(M){var g=M.lonlat;if(g[0]===cjt||c&&l.indexOf(M.i+1)===-1)return 1/0;var P=vJ.modHalf(g[0],360),T=g[1],F=s.project([P,T]),q=F.x-a.c2p([v,T]),V=F.y-o.c2p([P,r]),H=Math.max(3,M.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-H,1-3/H)}if(sjt.getClosest(n,x,e),e.index!==!1){var b=n[e.index],p=b.lonlat,E=[vJ.modHalf(p[0],360)+d,p[1]],k=a.c2p(E),A=o.c2p(E),L=b.mrc||1;e.x0=k-L,e.x1=k+L,e.y0=A-L,e.y1=A+L;var _={};_[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,_);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=ljt(i,b),e.extraText=OHe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function OHe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&ujt(t,e,u),u.join("
")}BHe.exports={hoverPoints:hjt,getExtraText:OHe}});var UHe=ye((b1r,NHe)=>{"use strict";NHe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var HHe=ye((w1r,VHe)=>{"use strict";var djt=Mr(),vjt=lu(),pjt=es().BADNUM;VHe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!vjt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof pJ=="object"&&typeof gJ!="undefined"?gJ.exports=t():(e=typeof globalThis!="undefined"?globalThis:e||self,e.maplibregl=t())})(pJ,function(){"use strict";var e={},t={};function r(i,a,o){if(t[i]=o,i==="index"){var s="var sharedModule = {}; ("+t.shared+")(sharedModule); ("+t.worker+")(sharedModule);",l={};return t.shared(l),t.index(e,l),typeof window!="undefined"&&e.setWorkerUrl(window.URL.createObjectURL(new Blob([s],{type:"text/javascript"}))),e}}r("shared",["exports"],function(i){"use strict";function a(R,S,D,j){return new(D||(D=Promise))(function(te,ue){function ve(at){try{Ze(j.next(at))}catch(Tt){ue(Tt)}}function De(at){try{Ze(j.throw(at))}catch(Tt){ue(Tt)}}function Ze(at){var Tt;at.done?te(at.value):(Tt=at.value,Tt instanceof D?Tt:new D(function(Ft){Ft(Tt)})).then(ve,De)}Ze((j=j.apply(R,S||[])).next())})}function o(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}typeof SuppressedError=="function"&&SuppressedError;var s=l;function l(R,S){this.x=R,this.y=S}l.prototype={clone:function(){return new l(this.x,this.y)},add:function(R){return this.clone()._add(R)},sub:function(R){return this.clone()._sub(R)},multByPoint:function(R){return this.clone()._multByPoint(R)},divByPoint:function(R){return this.clone()._divByPoint(R)},mult:function(R){return this.clone()._mult(R)},div:function(R){return this.clone()._div(R)},rotate:function(R){return this.clone()._rotate(R)},rotateAround:function(R,S){return this.clone()._rotateAround(R,S)},matMult:function(R){return this.clone()._matMult(R)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(R){return this.x===R.x&&this.y===R.y},dist:function(R){return Math.sqrt(this.distSqr(R))},distSqr:function(R){var S=R.x-this.x,D=R.y-this.y;return S*S+D*D},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(R){return Math.atan2(this.y-R.y,this.x-R.x)},angleWith:function(R){return this.angleWithSep(R.x,R.y)},angleWithSep:function(R,S){return Math.atan2(this.x*S-this.y*R,this.x*R+this.y*S)},_matMult:function(R){var S=R[2]*this.x+R[3]*this.y;return this.x=R[0]*this.x+R[1]*this.y,this.y=S,this},_add:function(R){return this.x+=R.x,this.y+=R.y,this},_sub:function(R){return this.x-=R.x,this.y-=R.y,this},_mult:function(R){return this.x*=R,this.y*=R,this},_div:function(R){return this.x/=R,this.y/=R,this},_multByPoint:function(R){return this.x*=R.x,this.y*=R.y,this},_divByPoint:function(R){return this.x/=R.x,this.y/=R.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var R=this.y;return this.y=this.x,this.x=-R,this},_rotate:function(R){var S=Math.cos(R),D=Math.sin(R),j=D*this.x+S*this.y;return this.x=S*this.x-D*this.y,this.y=j,this},_rotateAround:function(R,S){var D=Math.cos(R),j=Math.sin(R),te=S.y+j*(this.x-S.x)+D*(this.y-S.y);return this.x=S.x+D*(this.x-S.x)-j*(this.y-S.y),this.y=te,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},l.convert=function(R){return R instanceof l?R:Array.isArray(R)?new l(R[0],R[1]):R};var u=o(s),c=f;function f(R,S,D,j){this.cx=3*R,this.bx=3*(D-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*S,this.by=3*(j-S)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=S,this.p2x=D,this.p2y=j}f.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,S){if(S===void 0&&(S=1e-6),R<0)return 0;if(R>1)return 1;for(var D=R,j=0;j<8;j++){var te=this.sampleCurveX(D)-R;if(Math.abs(te)te?ve=D:De=D,D=.5*(De-ve)+ve;return D},solve:function(R,S){return this.sampleCurveY(this.solveCurveX(R,S))}};var h=o(c);let d,v;function x(){return d==null&&(d=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),d}function b(){if(v==null&&(v=!1,x())){let S=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(S){for(let j=0;j<5*5;j++){let te=4*j;S.fillStyle=`rgb(${te},${te+1},${te+2})`,S.fillRect(j%5,Math.floor(j/5),1,1)}let D=S.getImageData(0,0,5,5).data;for(let j=0;j<5*5*4;j++)if(j%4!=3&&D[j]!==j){v=!0;break}}}return v||!1}function p(R,S,D,j){let te=new h(R,S,D,j);return ue=>te.solve(ue)}let E=p(.25,.1,.25,1);function k(R,S,D){return Math.min(D,Math.max(S,R))}function A(R,S,D){let j=D-S,te=((R-S)%j+j)%j+S;return te===S?D:te}function L(R,...S){for(let D of S)for(let j in D)R[j]=D[j];return R}let _=1;function C(R,S,D){let j={};for(let te in R)j[te]=S.call(this,R[te],te,R);return j}function M(R,S,D){let j={};for(let te in R)S.call(this,R[te],te,R)&&(j[te]=R[te]);return j}function g(R){return Array.isArray(R)?R.map(g):typeof R=="object"&&R?C(R,g):R}let P={};function T(R){P[R]||(typeof console!="undefined"&&console.warn(R),P[R]=!0)}function F(R,S,D){return(D.y-R.y)*(S.x-R.x)>(S.y-R.y)*(D.x-R.x)}function q(R){return typeof WorkerGlobalScope!="undefined"&&R!==void 0&&R instanceof WorkerGlobalScope}let V=null;function H(R){return typeof ImageBitmap!="undefined"&&R instanceof ImageBitmap}let X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function G(R,S,D,j,te){return a(this,void 0,void 0,function*(){if(typeof VideoFrame=="undefined")throw new Error("VideoFrame not supported");let ue=new VideoFrame(R,{timestamp:0});try{let ve=ue==null?void 0:ue.format;if(!ve||!ve.startsWith("BGR")&&!ve.startsWith("RGB"))throw new Error(`Unrecognized format ${ve}`);let De=ve.startsWith("BGR"),Ze=new Uint8ClampedArray(j*te*4);if(yield ue.copyTo(Ze,function(at,Tt,Ft,Qt,sr){let Tr=4*Math.max(-Tt,0),Pr=(Math.max(0,Ft)-Ft)*Qt*4+Tr,$r=4*Qt,ni=Math.max(0,Tt),Di=Math.max(0,Ft);return{rect:{x:ni,y:Di,width:Math.min(at.width,Tt+Qt)-ni,height:Math.min(at.height,Ft+sr)-Di},layout:[{offset:Pr,stride:$r}]}}(R,S,D,j,te)),De)for(let at=0;atq(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,Te=function(R,S){if(/:\/\//.test(R.url)&&!/^https?:|^file:/.test(R.url)){let j=Me(R.url);if(j)return j(R,S);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,targetMapId:ke},S)}if(!(/^file:/.test(D=R.url)||/^file:/.test(ie())&&!/^\w+:/.test(D))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(j,te){return a(this,void 0,void 0,function*(){let ue=new Request(j.url,{method:j.method||"GET",body:j.body,credentials:j.credentials,headers:j.headers,cache:j.cache,referrer:ie(),signal:te.signal});j.type!=="json"||ue.headers.has("Accept")||ue.headers.set("Accept","application/json");let ve=yield fetch(ue);if(!ve.ok){let at=yield ve.blob();throw new ge(ve.status,ve.statusText,j.url,at)}let De;De=j.type==="arrayBuffer"||j.type==="image"?ve.arrayBuffer():j.type==="json"?ve.json():ve.text();let Ze=yield De;if(te.signal.aborted)throw ae();return{data:Ze,cacheControl:ve.headers.get("Cache-Control"),expires:ve.headers.get("Expires")}})}(R,S);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,mustQueue:!0,targetMapId:ke},S)}var D;return function(j,te){return new Promise((ue,ve)=>{var De;let Ze=new XMLHttpRequest;Ze.open(j.method||"GET",j.url,!0),j.type!=="arrayBuffer"&&j.type!=="image"||(Ze.responseType="arraybuffer");for(let at in j.headers)Ze.setRequestHeader(at,j.headers[at]);j.type==="json"&&(Ze.responseType="text",!((De=j.headers)===null||De===void 0)&&De.Accept||Ze.setRequestHeader("Accept","application/json")),Ze.withCredentials=j.credentials==="include",Ze.onerror=()=>{ve(new Error(Ze.statusText))},Ze.onload=()=>{if(!te.signal.aborted)if((Ze.status>=200&&Ze.status<300||Ze.status===0)&&Ze.response!==null){let at=Ze.response;if(j.type==="json")try{at=JSON.parse(Ze.response)}catch(Tt){return void ve(Tt)}ue({data:at,cacheControl:Ze.getResponseHeader("Cache-Control"),expires:Ze.getResponseHeader("Expires")})}else{let at=new Blob([Ze.response],{type:Ze.getResponseHeader("Content-Type")});ve(new ge(Ze.status,Ze.statusText,j.url,at))}},te.signal.addEventListener("abort",()=>{Ze.abort(),ve(ae())}),Ze.send(j.body)})}(R,S)};function Ee(R){if(!R||R.indexOf("://")<=0||R.indexOf("data:image/")===0||R.indexOf("blob:")===0)return!0;let S=new URL(R),D=window.location;return S.protocol===D.protocol&&S.host===D.host}function Ae(R,S,D){D[R]&&D[R].indexOf(S)!==-1||(D[R]=D[R]||[],D[R].push(S))}function ze(R,S,D){if(D&&D[R]){let j=D[R].indexOf(S);j!==-1&&D[R].splice(j,1)}}class Ce{constructor(S,D={}){L(this,D),this.type=S}}class me extends Ce{constructor(S,D={}){super("error",L({error:S},D))}}class Re{on(S,D){return this._listeners=this._listeners||{},Ae(S,D,this._listeners),this}off(S,D){return ze(S,D,this._listeners),ze(S,D,this._oneTimeListeners),this}once(S,D){return D?(this._oneTimeListeners=this._oneTimeListeners||{},Ae(S,D,this._oneTimeListeners),this):new Promise(j=>this.once(S,j))}fire(S,D){typeof S=="string"&&(S=new Ce(S,D||{}));let j=S.type;if(this.listens(j)){S.target=this;let te=this._listeners&&this._listeners[j]?this._listeners[j].slice():[];for(let De of te)De.call(this,S);let ue=this._oneTimeListeners&&this._oneTimeListeners[j]?this._oneTimeListeners[j].slice():[];for(let De of ue)ze(j,De,this._oneTimeListeners),De.call(this,S);let ve=this._eventedParent;ve&&(L(S,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),ve.fire(S))}else S instanceof me&&console.error(S.error);return this}listens(S){return this._listeners&&this._listeners[S]&&this._listeners[S].length>0||this._oneTimeListeners&&this._oneTimeListeners[S]&&this._oneTimeListeners[S].length>0||this._eventedParent&&this._eventedParent.listens(S)}setEventedParent(S,D){return this._eventedParent=S,this._eventedParentData=D,this}}var ce={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let Ge=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function nt(R,S){let D={};for(let j in R)j!=="ref"&&(D[j]=R[j]);return Ge.forEach(j=>{j in S&&(D[j]=S[j])}),D}function ct(R,S){if(Array.isArray(R)){if(!Array.isArray(S)||R.length!==S.length)return!1;for(let D=0;D`:R.itemType.kind==="value"?"array":`array<${S}>`}return R.kind}let Ve=[Lt,St,Et,dt,Ht,Br,$t,Ne(fr),Or,Nr,ut];function Xe(R,S){if(S.kind==="error")return null;if(R.kind==="array"){if(S.kind==="array"&&(S.N===0&&S.itemType.kind==="value"||!Xe(R.itemType,S.itemType))&&(typeof R.N!="number"||R.N===S.N))return null}else{if(R.kind===S.kind)return null;if(R.kind==="value"){for(let D of Ve)if(!Xe(D,S))return null}}return`Expected ${Ye(R)} but found ${Ye(S)} instead.`}function ht(R,S){return S.some(D=>D.kind===R.kind)}function Le(R,S){return S.some(D=>D==="null"?R===null:D==="array"?Array.isArray(R):D==="object"?R&&!Array.isArray(R)&&typeof R=="object":D===typeof R)}function xe(R,S){return R.kind==="array"&&S.kind==="array"?R.itemType.kind===S.itemType.kind&&typeof R.N=="number":R.kind===S.kind}let Se=.96422,lt=.82521,Gt=4/29,Vt=6/29,ar=3*Vt*Vt,Qr=Vt*Vt*Vt,ai=Math.PI/180,jr=180/Math.PI;function ri(R){return(R%=360)<0&&(R+=360),R}function bi([R,S,D,j]){let te,ue,ve=Wi((.2225045*(R=nn(R))+.7168786*(S=nn(S))+.0606169*(D=nn(D)))/1);R===S&&S===D?te=ue=ve:(te=Wi((.4360747*R+.3850649*S+.1430804*D)/Se),ue=Wi((.0139322*R+.0971045*S+.7141733*D)/lt));let De=116*ve-16;return[De<0?0:De,500*(te-ve),200*(ve-ue),j]}function nn(R){return R<=.04045?R/12.92:Math.pow((R+.055)/1.055,2.4)}function Wi(R){return R>Qr?Math.pow(R,1/3):R/ar+Gt}function Ni([R,S,D,j]){let te=(R+16)/116,ue=isNaN(S)?te:te+S/500,ve=isNaN(D)?te:te-D/200;return te=1*$i(te),ue=Se*$i(ue),ve=lt*$i(ve),[_n(3.1338561*ue-1.6168667*te-.4906146*ve),_n(-.9787684*ue+1.9161415*te+.033454*ve),_n(.0719453*ue-.2289914*te+1.4052427*ve),j]}function _n(R){return(R=R<=.00304?12.92*R:1.055*Math.pow(R,1/2.4)-.055)<0?0:R>1?1:R}function $i(R){return R>Vt?R*R*R:ar*(R-Gt)}function zn(R){return parseInt(R.padEnd(2,R),16)/255}function Wn(R,S){return It(S?R/100:R,0,1)}function It(R,S,D){return Math.min(Math.max(S,R),D)}function ft(R){return!R.some(Number.isNaN)}let jt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Zt{constructor(S,D,j,te=1,ue=!0){this.r=S,this.g=D,this.b=j,this.a=te,ue||(this.r*=te,this.g*=te,this.b*=te,te||this.overwriteGetter("rgb",[S,D,j,te]))}static parse(S){if(S instanceof Zt)return S;if(typeof S!="string")return;let D=function(j){if((j=j.toLowerCase().trim())==="transparent")return[0,0,0,0];let te=jt[j];if(te){let[ve,De,Ze]=te;return[ve/255,De/255,Ze/255,1]}if(j.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(j)){let ve=j.length<6?1:2,De=1;return[zn(j.slice(De,De+=ve)),zn(j.slice(De,De+=ve)),zn(j.slice(De,De+=ve)),zn(j.slice(De,De+ve)||"ff")]}if(j.startsWith("rgb")){let ve=j.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(ve){let[De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di]=ve,pi=[Tt||" ",sr||" ",$r].join("");if(pi===" "||pi===" /"||pi===",,"||pi===",,,"){let ki=[at,Qt,Pr].join(""),Zi=ki==="%%%"?100:ki===""?255:0;if(Zi){let ta=[It(+Ze/Zi,0,1),It(+Ft/Zi,0,1),It(+Tr/Zi,0,1),ni?Wn(+ni,Di):1];if(ft(ta))return ta}}return}}let ue=j.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(ue){let[ve,De,Ze,at,Tt,Ft,Qt,sr,Tr]=ue,Pr=[Ze||" ",Tt||" ",Qt].join("");if(Pr===" "||Pr===" /"||Pr===",,"||Pr===",,,"){let $r=[+De,It(+at,0,100),It(+Ft,0,100),sr?Wn(+sr,Tr):1];if(ft($r))return function([ni,Di,pi,ki]){function Zi(ta){let Va=(ta+ni/30)%12,Io=Di*Math.min(pi,1-pi);return pi-Io*Math.max(-1,Math.min(Va-3,9-Va,1))}return ni=ri(ni),Di/=100,pi/=100,[Zi(0),Zi(8),Zi(4),ki]}($r)}}}(S);return D?new Zt(...D,!1):void 0}get rgb(){let{r:S,g:D,b:j,a:te}=this,ue=te||1/0;return this.overwriteGetter("rgb",[S/ue,D/ue,j/ue,te])}get hcl(){return this.overwriteGetter("hcl",function(S){let[D,j,te,ue]=bi(S),ve=Math.sqrt(j*j+te*te);return[Math.round(1e4*ve)?ri(Math.atan2(te,j)*jr):NaN,ve,D,ue]}(this.rgb))}get lab(){return this.overwriteGetter("lab",bi(this.rgb))}overwriteGetter(S,D){return Object.defineProperty(this,S,{value:D}),D}toString(){let[S,D,j,te]=this.rgb;return`rgba(${[S,D,j].map(ue=>Math.round(255*ue)).join(",")},${te})`}}Zt.black=new Zt(0,0,0,1),Zt.white=new Zt(1,1,1,1),Zt.transparent=new Zt(0,0,0,0),Zt.red=new Zt(1,0,0,1);class yr{constructor(S,D,j){this.sensitivity=S?D?"variant":"case":D?"accent":"base",this.locale=j,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(S,D){return this.collator.compare(S,D)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Fr{constructor(S,D,j,te,ue){this.text=S,this.image=D,this.scale=j,this.fontStack=te,this.textColor=ue}}class Zr{constructor(S){this.sections=S}static fromString(S){return new Zr([new Fr(S,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(S=>S.text.length!==0||S.image&&S.image.name.length!==0)}static factory(S){return S instanceof Zr?S:Zr.fromString(S)}toString(){return this.sections.length===0?"":this.sections.map(S=>S.text).join("")}}class Vr{constructor(S){this.values=S.slice()}static parse(S){if(S instanceof Vr)return S;if(typeof S=="number")return new Vr([S,S,S,S]);if(Array.isArray(S)&&!(S.length<1||S.length>4)){for(let D of S)if(typeof D!="number")return;switch(S.length){case 1:S=[S[0],S[0],S[0],S[0]];break;case 2:S=[S[0],S[1],S[0],S[1]];break;case 3:S=[S[0],S[1],S[2],S[1]]}return new Vr(S)}}toString(){return JSON.stringify(this.values)}}let gi=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class Si{constructor(S){this.values=S.slice()}static parse(S){if(S instanceof Si)return S;if(Array.isArray(S)&&!(S.length<1)&&S.length%2==0){for(let D=0;D=0&&R<=255&&typeof S=="number"&&S>=0&&S<=255&&typeof D=="number"&&D>=0&&D<=255?j===void 0||typeof j=="number"&&j>=0&&j<=1?null:`Invalid rgba value [${[R,S,D,j].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof j=="number"?[R,S,D,j]:[R,S,D]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Gi(R){if(R===null||typeof R=="string"||typeof R=="boolean"||typeof R=="number"||R instanceof Zt||R instanceof yr||R instanceof Zr||R instanceof Vr||R instanceof Si||R instanceof Mi)return!0;if(Array.isArray(R)){for(let S of R)if(!Gi(S))return!1;return!0}if(typeof R=="object"){for(let S in R)if(!Gi(R[S]))return!1;return!0}return!1}function Ki(R){if(R===null)return Lt;if(typeof R=="string")return Et;if(typeof R=="boolean")return dt;if(typeof R=="number")return St;if(R instanceof Zt)return Ht;if(R instanceof yr)return _r;if(R instanceof Zr)return Br;if(R instanceof Vr)return Or;if(R instanceof Si)return ut;if(R instanceof Mi)return Nr;if(Array.isArray(R)){let S=R.length,D;for(let j of R){let te=Ki(j);if(D){if(D===te)continue;D=fr;break}D=te}return Ne(D||fr,S)}return $t}function ka(R){let S=typeof R;return R===null?"":S==="string"||S==="number"||S==="boolean"?String(R):R instanceof Zt||R instanceof Zr||R instanceof Vr||R instanceof Si||R instanceof Mi?R.toString():JSON.stringify(R)}class jn{constructor(S,D){this.type=S,this.value=D}static parse(S,D){if(S.length!==2)return D.error(`'literal' expression requires exactly one argument, but found ${S.length-1} instead.`);if(!Gi(S[1]))return D.error("invalid value");let j=S[1],te=Ki(j),ue=D.expectedType;return te.kind!=="array"||te.N!==0||!ue||ue.kind!=="array"||typeof ue.N=="number"&&ue.N!==0||(te=ue),new jn(te,j)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class la{constructor(S){this.name="ExpressionEvaluationError",this.message=S}toJSON(){return this.message}}let Fa={string:Et,number:St,boolean:dt,object:$t};class Ra{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j,te=1,ue=S[0];if(ue==="array"){let De,Ze;if(S.length>2){let at=S[1];if(typeof at!="string"||!(at in Fa)||at==="object")return D.error('The item type argument of "array" must be one of string, number, boolean',1);De=Fa[at],te++}else De=fr;if(S.length>3){if(S[2]!==null&&(typeof S[2]!="number"||S[2]<0||S[2]!==Math.floor(S[2])))return D.error('The length argument to "array" must be a positive integer literal',2);Ze=S[2],te++}j=Ne(De,Ze)}else{if(!Fa[ue])throw new Error(`Types doesn't contain name = ${ue}`);j=Fa[ue]}let ve=[];for(;teS.outputDefined())}}let jo={"to-boolean":dt,"to-color":Ht,"to-number":St,"to-string":Et};class oa{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j=S[0];if(!jo[j])throw new Error(`Can't parse ${j} as it is not part of the known types`);if((j==="to-boolean"||j==="to-string")&&S.length!==2)return D.error("Expected one argument.");let te=jo[j],ue=[];for(let ve=1;ve4?`Invalid rbga value ${JSON.stringify(D)}: expected an array containing either three or four numeric values.`:Pi(D[0],D[1],D[2],D[3]),!j))return new Zt(D[0]/255,D[1]/255,D[2]/255,D[3])}throw new la(j||`Could not parse color from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"padding":{let D;for(let j of this.args){D=j.evaluate(S);let te=Vr.parse(D);if(te)return te}throw new la(`Could not parse padding from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"variableAnchorOffsetCollection":{let D;for(let j of this.args){D=j.evaluate(S);let te=Si.parse(D);if(te)return te}throw new la(`Could not parse variableAnchorOffsetCollection from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"number":{let D=null;for(let j of this.args){if(D=j.evaluate(S),D===null)return 0;let te=Number(D);if(!isNaN(te))return te}throw new la(`Could not convert ${JSON.stringify(D)} to number.`)}case"formatted":return Zr.fromString(ka(this.args[0].evaluate(S)));case"resolvedImage":return Mi.fromString(ka(this.args[0].evaluate(S)));default:return ka(this.args[0].evaluate(S))}}eachChild(S){this.args.forEach(S)}outputDefined(){return this.args.every(S=>S.outputDefined())}}let Sn=["Unknown","Point","LineString","Polygon"];class Ha{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?Sn[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(S){let D=this._parseColorCache[S];return D||(D=this._parseColorCache[S]=Zt.parse(S)),D}}class oo{constructor(S,D,j=[],te,ue=new bt,ve=[]){this.registry=S,this.path=j,this.key=j.map(De=>`[${De}]`).join(""),this.scope=ue,this.errors=ve,this.expectedType=te,this._isConstant=D}parse(S,D,j,te,ue={}){return D?this.concat(D,j,te)._parse(S,ue):this._parse(S,ue)}_parse(S,D){function j(te,ue,ve){return ve==="assert"?new Ra(ue,[te]):ve==="coerce"?new oa(ue,[te]):te}if(S!==null&&typeof S!="string"&&typeof S!="boolean"&&typeof S!="number"||(S=["literal",S]),Array.isArray(S)){if(S.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let te=S[0];if(typeof te!="string")return this.error(`Expression name must be a string, but found ${typeof te} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let ue=this.registry[te];if(ue){let ve=ue.parse(S,this);if(!ve)return null;if(this.expectedType){let De=this.expectedType,Ze=ve.type;if(De.kind!=="string"&&De.kind!=="number"&&De.kind!=="boolean"&&De.kind!=="object"&&De.kind!=="array"||Ze.kind!=="value")if(De.kind!=="color"&&De.kind!=="formatted"&&De.kind!=="resolvedImage"||Ze.kind!=="value"&&Ze.kind!=="string")if(De.kind!=="padding"||Ze.kind!=="value"&&Ze.kind!=="number"&&Ze.kind!=="array")if(De.kind!=="variableAnchorOffsetCollection"||Ze.kind!=="value"&&Ze.kind!=="array"){if(this.checkSubtype(De,Ze))return null}else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"assert")}if(!(ve instanceof jn)&&ve.type.kind!=="resolvedImage"&&this._isConstant(ve)){let De=new Ha;try{ve=new jn(ve.type,ve.evaluate(De))}catch(Ze){return this.error(Ze.message),null}}return ve}return this.error(`Unknown expression "${te}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(S===void 0?"'undefined' value invalid. Use null instead.":typeof S=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof S} instead.`)}concat(S,D,j){let te=typeof S=="number"?this.path.concat(S):this.path,ue=j?this.scope.concat(j):this.scope;return new oo(this.registry,this._isConstant,te,D||null,ue,this.errors)}error(S,...D){let j=`${this.key}${D.map(te=>`[${te}]`).join("")}`;this.errors.push(new xt(j,S))}checkSubtype(S,D){let j=Xe(S,D);return j&&this.error(j),j}}class xn{constructor(S,D){this.type=D.type,this.bindings=[].concat(S),this.result=D}evaluate(S){return this.result.evaluate(S)}eachChild(S){for(let D of this.bindings)S(D[1]);S(this.result)}static parse(S,D){if(S.length<4)return D.error(`Expected at least 3 arguments, but found ${S.length-1} instead.`);let j=[];for(let ue=1;ue=j.length)throw new la(`Array index out of bounds: ${D} > ${j.length-1}.`);if(D!==Math.floor(D))throw new la(`Array index must be an integer, but found ${D} instead.`);return j[D]}eachChild(S){S(this.index),S(this.input)}outputDefined(){return!1}}class Hr{constructor(S,D){this.type=dt,this.needle=S,this.haystack=D}static parse(S,D){if(S.length!==3)return D.error(`Expected 2 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,fr);return j&&te?ht(j.type,[dt,Et,St,Lt,fr])?new Hr(j,te):D.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(j.type)} instead`):null}evaluate(S){let D=this.needle.evaluate(S),j=this.haystack.evaluate(S);if(!j)return!1;if(!Le(D,["boolean","string","number","null"]))throw new la(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(Ki(D))} instead.`);if(!Le(j,["string","array"]))throw new la(`Expected second argument to be of type array or string, but found ${Ye(Ki(j))} instead.`);return j.indexOf(D)>=0}eachChild(S){S(this.needle),S(this.haystack)}outputDefined(){return!0}}class ti{constructor(S,D,j){this.type=St,this.needle=S,this.haystack=D,this.fromIndex=j}static parse(S,D){if(S.length<=2||S.length>=5)return D.error(`Expected 3 or 4 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,fr);if(!j||!te)return null;if(!ht(j.type,[dt,Et,St,Lt,fr]))return D.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(j.type)} instead`);if(S.length===4){let ue=D.parse(S[3],3,St);return ue?new ti(j,te,ue):null}return new ti(j,te)}evaluate(S){let D=this.needle.evaluate(S),j=this.haystack.evaluate(S);if(!Le(D,["boolean","string","number","null"]))throw new la(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(Ki(D))} instead.`);let te;if(this.fromIndex&&(te=this.fromIndex.evaluate(S)),Le(j,["string"])){let ue=j.indexOf(D,te);return ue===-1?-1:[...j.slice(0,ue)].length}if(Le(j,["array"]))return j.indexOf(D,te);throw new la(`Expected second argument to be of type array or string, but found ${Ye(Ki(j))} instead.`)}eachChild(S){S(this.needle),S(this.haystack),this.fromIndex&&S(this.fromIndex)}outputDefined(){return!1}}class zi{constructor(S,D,j,te,ue,ve){this.inputType=S,this.type=D,this.input=j,this.cases=te,this.outputs=ue,this.otherwise=ve}static parse(S,D){if(S.length<5)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if(S.length%2!=1)return D.error("Expected an even number of arguments.");let j,te;D.expectedType&&D.expectedType.kind!=="value"&&(te=D.expectedType);let ue={},ve=[];for(let at=2;atNumber.MAX_SAFE_INTEGER)return Qt.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof Tr=="number"&&Math.floor(Tr)!==Tr)return Qt.error("Numeric branch labels must be integer values.");if(j){if(Qt.checkSubtype(j,Ki(Tr)))return null}else j=Ki(Tr);if(ue[String(Tr)]!==void 0)return Qt.error("Branch labels must be unique.");ue[String(Tr)]=ve.length}let sr=D.parse(Ft,at,te);if(!sr)return null;te=te||sr.type,ve.push(sr)}let De=D.parse(S[1],1,fr);if(!De)return null;let Ze=D.parse(S[S.length-1],S.length-1,te);return Ze?De.type.kind!=="value"&&D.concat(1).checkSubtype(j,De.type)?null:new zi(j,te,De,ue,ve,Ze):null}evaluate(S){let D=this.input.evaluate(S);return(Ki(D)===this.inputType&&this.outputs[this.cases[D]]||this.otherwise).evaluate(S)}eachChild(S){S(this.input),this.outputs.forEach(S),S(this.otherwise)}outputDefined(){return this.outputs.every(S=>S.outputDefined())&&this.otherwise.outputDefined()}}class Yi{constructor(S,D,j){this.type=S,this.branches=D,this.otherwise=j}static parse(S,D){if(S.length<4)return D.error(`Expected at least 3 arguments, but found only ${S.length-1}.`);if(S.length%2!=0)return D.error("Expected an odd number of arguments.");let j;D.expectedType&&D.expectedType.kind!=="value"&&(j=D.expectedType);let te=[];for(let ve=1;veD.outputDefined())&&this.otherwise.outputDefined()}}class an{constructor(S,D,j,te){this.type=S,this.input=D,this.beginIndex=j,this.endIndex=te}static parse(S,D){if(S.length<=2||S.length>=5)return D.error(`Expected 3 or 4 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,St);if(!j||!te)return null;if(!ht(j.type,[Ne(fr),Et,fr]))return D.error(`Expected first argument to be of type array or string, but found ${Ye(j.type)} instead`);if(S.length===4){let ue=D.parse(S[3],3,St);return ue?new an(j.type,j,te,ue):null}return new an(j.type,j,te)}evaluate(S){let D=this.input.evaluate(S),j=this.beginIndex.evaluate(S),te;if(this.endIndex&&(te=this.endIndex.evaluate(S)),Le(D,["string"]))return[...D].slice(j,te).join("");if(Le(D,["array"]))return D.slice(j,te);throw new la(`Expected first argument to be of type array or string, but found ${Ye(Ki(D))} instead.`)}eachChild(S){S(this.input),S(this.beginIndex),this.endIndex&&S(this.endIndex)}outputDefined(){return!1}}function hi(R,S){let D=R.length-1,j,te,ue=0,ve=D,De=0;for(;ue<=ve;)if(De=Math.floor((ue+ve)/2),j=R[De],te=R[De+1],j<=S){if(De===D||SS))throw new la("Input is not a number.");ve=De-1}return 0}class Ji{constructor(S,D,j){this.type=S,this.input=D,this.labels=[],this.outputs=[];for(let[te,ue]of j)this.labels.push(te),this.outputs.push(ue)}static parse(S,D){if(S.length-1<4)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if((S.length-1)%2!=0)return D.error("Expected an even number of arguments.");let j=D.parse(S[1],1,St);if(!j)return null;let te=[],ue=null;D.expectedType&&D.expectedType.kind!=="value"&&(ue=D.expectedType);for(let ve=1;ve=De)return D.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',at);let Ft=D.parse(Ze,Tt,ue);if(!Ft)return null;ue=ue||Ft.type,te.push([De,Ft])}return new Ji(ue,j,te)}evaluate(S){let D=this.labels,j=this.outputs;if(D.length===1)return j[0].evaluate(S);let te=this.input.evaluate(S);if(te<=D[0])return j[0].evaluate(S);let ue=D.length;return te>=D[ue-1]?j[ue-1].evaluate(S):j[hi(D,te)].evaluate(S)}eachChild(S){S(this.input);for(let D of this.outputs)S(D)}outputDefined(){return this.outputs.every(S=>S.outputDefined())}}function ua(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}var Fn=Sa;function Sa(R,S,D,j){this.cx=3*R,this.bx=3*(D-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*S,this.by=3*(j-S)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=S,this.p2x=D,this.p2y=j}Sa.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,S){if(S===void 0&&(S=1e-6),R<0)return 0;if(R>1)return 1;for(var D=R,j=0;j<8;j++){var te=this.sampleCurveX(D)-R;if(Math.abs(te)te?ve=D:De=D,D=.5*(De-ve)+ve;return D},solve:function(R,S){return this.sampleCurveY(this.solveCurveX(R,S))}};var go=ua(Fn);function Oo(R,S,D){return R+D*(S-R)}function ho(R,S,D){return R.map((j,te)=>Oo(j,S[te],D))}let Mo={number:Oo,color:function(R,S,D,j="rgb"){switch(j){case"rgb":{let[te,ue,ve,De]=ho(R.rgb,S.rgb,D);return new Zt(te,ue,ve,De,!1)}case"hcl":{let[te,ue,ve,De]=R.hcl,[Ze,at,Tt,Ft]=S.hcl,Qt,sr;if(isNaN(te)||isNaN(Ze))isNaN(te)?isNaN(Ze)?Qt=NaN:(Qt=Ze,ve!==1&&ve!==0||(sr=at)):(Qt=te,Tt!==1&&Tt!==0||(sr=ue));else{let Di=Ze-te;Ze>te&&Di>180?Di-=360:Ze180&&(Di+=360),Qt=te+D*Di}let[Tr,Pr,$r,ni]=function([Di,pi,ki,Zi]){return Di=isNaN(Di)?0:Di*ai,Ni([ki,Math.cos(Di)*pi,Math.sin(Di)*pi,Zi])}([Qt,sr!=null?sr:Oo(ue,at,D),Oo(ve,Tt,D),Oo(De,Ft,D)]);return new Zt(Tr,Pr,$r,ni,!1)}case"lab":{let[te,ue,ve,De]=Ni(ho(R.lab,S.lab,D));return new Zt(te,ue,ve,De,!1)}}},array:ho,padding:function(R,S,D){return new Vr(ho(R.values,S.values,D))},variableAnchorOffsetCollection:function(R,S,D){let j=R.values,te=S.values;if(j.length!==te.length)throw new la(`Cannot interpolate values of different length. from: ${R.toString()}, to: ${S.toString()}`);let ue=[];for(let ve=0;vetypeof Tt!="number"||Tt<0||Tt>1))return D.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);te={name:"cubic-bezier",controlPoints:at}}}if(S.length-1<4)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if((S.length-1)%2!=0)return D.error("Expected an even number of arguments.");if(ue=D.parse(ue,2,St),!ue)return null;let De=[],Ze=null;j==="interpolate-hcl"||j==="interpolate-lab"?Ze=Ht:D.expectedType&&D.expectedType.kind!=="value"&&(Ze=D.expectedType);for(let at=0;at=Tt)return D.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Qt);let Tr=D.parse(Ft,sr,Ze);if(!Tr)return null;Ze=Ze||Tr.type,De.push([Tt,Tr])}return xe(Ze,St)||xe(Ze,Ht)||xe(Ze,Or)||xe(Ze,ut)||xe(Ze,Ne(St))?new xo(Ze,j,te,ue,De):D.error(`Type ${Ye(Ze)} is not interpolatable.`)}evaluate(S){let D=this.labels,j=this.outputs;if(D.length===1)return j[0].evaluate(S);let te=this.input.evaluate(S);if(te<=D[0])return j[0].evaluate(S);let ue=D.length;if(te>=D[ue-1])return j[ue-1].evaluate(S);let ve=hi(D,te),De=xo.interpolationFactor(this.interpolation,te,D[ve],D[ve+1]),Ze=j[ve].evaluate(S),at=j[ve+1].evaluate(S);switch(this.operator){case"interpolate":return Mo[this.type.kind](Ze,at,De);case"interpolate-hcl":return Mo.color(Ze,at,De,"hcl");case"interpolate-lab":return Mo.color(Ze,at,De,"lab")}}eachChild(S){S(this.input);for(let D of this.outputs)S(D)}outputDefined(){return this.outputs.every(S=>S.outputDefined())}}function zs(R,S,D,j){let te=j-D,ue=R-D;return te===0?0:S===1?ue/te:(Math.pow(S,ue)-1)/(Math.pow(S,te)-1)}class ks{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expectected at least one argument.");let j=null,te=D.expectedType;te&&te.kind!=="value"&&(j=te);let ue=[];for(let De of S.slice(1)){let Ze=D.parse(De,1+ue.length,j,void 0,{typeAnnotation:"omit"});if(!Ze)return null;j=j||Ze.type,ue.push(Ze)}if(!j)throw new Error("No output type");let ve=te&&ue.some(De=>Xe(te,De.type));return new ks(ve?fr:j,ue)}evaluate(S){let D,j=null,te=0;for(let ue of this.args)if(te++,j=ue.evaluate(S),j&&j instanceof Mi&&!j.available&&(D||(D=j.name),j=null,te===this.args.length&&(j=D)),j!==null)break;return j}eachChild(S){this.args.forEach(S)}outputDefined(){return this.args.every(S=>S.outputDefined())}}function Zs(R,S){return R==="=="||R==="!="?S.kind==="boolean"||S.kind==="string"||S.kind==="number"||S.kind==="null"||S.kind==="value":S.kind==="string"||S.kind==="number"||S.kind==="value"}function Xs(R,S,D,j){return j.compare(S,D)===0}function wl(R,S,D){let j=R!=="=="&&R!=="!=";return class GHe{constructor(ue,ve,De){this.type=dt,this.lhs=ue,this.rhs=ve,this.collator=De,this.hasUntypedArgument=ue.type.kind==="value"||ve.type.kind==="value"}static parse(ue,ve){if(ue.length!==3&&ue.length!==4)return ve.error("Expected two or three arguments.");let De=ue[0],Ze=ve.parse(ue[1],1,fr);if(!Ze)return null;if(!Zs(De,Ze.type))return ve.concat(1).error(`"${De}" comparisons are not supported for type '${Ye(Ze.type)}'.`);let at=ve.parse(ue[2],2,fr);if(!at)return null;if(!Zs(De,at.type))return ve.concat(2).error(`"${De}" comparisons are not supported for type '${Ye(at.type)}'.`);if(Ze.type.kind!==at.type.kind&&Ze.type.kind!=="value"&&at.type.kind!=="value")return ve.error(`Cannot compare types '${Ye(Ze.type)}' and '${Ye(at.type)}'.`);j&&(Ze.type.kind==="value"&&at.type.kind!=="value"?Ze=new Ra(at.type,[Ze]):Ze.type.kind!=="value"&&at.type.kind==="value"&&(at=new Ra(Ze.type,[at])));let Tt=null;if(ue.length===4){if(Ze.type.kind!=="string"&&at.type.kind!=="string"&&Ze.type.kind!=="value"&&at.type.kind!=="value")return ve.error("Cannot use collator to compare non-string types.");if(Tt=ve.parse(ue[3],3,_r),!Tt)return null}return new GHe(Ze,at,Tt)}evaluate(ue){let ve=this.lhs.evaluate(ue),De=this.rhs.evaluate(ue);if(j&&this.hasUntypedArgument){let Ze=Ki(ve),at=Ki(De);if(Ze.kind!==at.kind||Ze.kind!=="string"&&Ze.kind!=="number")throw new la(`Expected arguments for "${R}" to be (string, string) or (number, number), but found (${Ze.kind}, ${at.kind}) instead.`)}if(this.collator&&!j&&this.hasUntypedArgument){let Ze=Ki(ve),at=Ki(De);if(Ze.kind!=="string"||at.kind!=="string")return S(ue,ve,De)}return this.collator?D(ue,ve,De,this.collator.evaluate(ue)):S(ue,ve,De)}eachChild(ue){ue(this.lhs),ue(this.rhs),this.collator&&ue(this.collator)}outputDefined(){return!0}}}let os=wl("==",function(R,S,D){return S===D},Xs),cl=wl("!=",function(R,S,D){return S!==D},function(R,S,D,j){return!Xs(0,S,D,j)}),Cs=wl("<",function(R,S,D){return S",function(R,S,D){return S>D},function(R,S,D,j){return j.compare(S,D)>0}),Ys=wl("<=",function(R,S,D){return S<=D},function(R,S,D,j){return j.compare(S,D)<=0}),Hs=wl(">=",function(R,S,D){return S>=D},function(R,S,D,j){return j.compare(S,D)>=0});class Eo{constructor(S,D,j){this.type=_r,this.locale=j,this.caseSensitive=S,this.diacriticSensitive=D}static parse(S,D){if(S.length!==2)return D.error("Expected one argument.");let j=S[1];if(typeof j!="object"||Array.isArray(j))return D.error("Collator options argument must be an object.");let te=D.parse(j["case-sensitive"]!==void 0&&j["case-sensitive"],1,dt);if(!te)return null;let ue=D.parse(j["diacritic-sensitive"]!==void 0&&j["diacritic-sensitive"],1,dt);if(!ue)return null;let ve=null;return j.locale&&(ve=D.parse(j.locale,1,Et),!ve)?null:new Eo(te,ue,ve)}evaluate(S){return new yr(this.caseSensitive.evaluate(S),this.diacriticSensitive.evaluate(S),this.locale?this.locale.evaluate(S):null)}eachChild(S){S(this.caseSensitive),S(this.diacriticSensitive),this.locale&&S(this.locale)}outputDefined(){return!1}}class fs{constructor(S,D,j,te,ue){this.type=Et,this.number=S,this.locale=D,this.currency=j,this.minFractionDigits=te,this.maxFractionDigits=ue}static parse(S,D){if(S.length!==3)return D.error("Expected two arguments.");let j=D.parse(S[1],1,St);if(!j)return null;let te=S[2];if(typeof te!="object"||Array.isArray(te))return D.error("NumberFormat options argument must be an object.");let ue=null;if(te.locale&&(ue=D.parse(te.locale,1,Et),!ue))return null;let ve=null;if(te.currency&&(ve=D.parse(te.currency,1,Et),!ve))return null;let De=null;if(te["min-fraction-digits"]&&(De=D.parse(te["min-fraction-digits"],1,St),!De))return null;let Ze=null;return te["max-fraction-digits"]&&(Ze=D.parse(te["max-fraction-digits"],1,St),!Ze)?null:new fs(j,ue,ve,De,Ze)}evaluate(S){return new Intl.NumberFormat(this.locale?this.locale.evaluate(S):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(S):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(S):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(S):void 0}).format(this.number.evaluate(S))}eachChild(S){S(this.number),this.locale&&S(this.locale),this.currency&&S(this.currency),this.minFractionDigits&&S(this.minFractionDigits),this.maxFractionDigits&&S(this.maxFractionDigits)}outputDefined(){return!1}}class Ql{constructor(S){this.type=Br,this.sections=S}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j=S[1];if(!Array.isArray(j)&&typeof j=="object")return D.error("First argument must be an image or text section.");let te=[],ue=!1;for(let ve=1;ve<=S.length-1;++ve){let De=S[ve];if(ue&&typeof De=="object"&&!Array.isArray(De)){ue=!1;let Ze=null;if(De["font-scale"]&&(Ze=D.parse(De["font-scale"],1,St),!Ze))return null;let at=null;if(De["text-font"]&&(at=D.parse(De["text-font"],1,Ne(Et)),!at))return null;let Tt=null;if(De["text-color"]&&(Tt=D.parse(De["text-color"],1,Ht),!Tt))return null;let Ft=te[te.length-1];Ft.scale=Ze,Ft.font=at,Ft.textColor=Tt}else{let Ze=D.parse(S[ve],1,fr);if(!Ze)return null;let at=Ze.type.kind;if(at!=="string"&&at!=="value"&&at!=="null"&&at!=="resolvedImage")return D.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ue=!0,te.push({content:Ze,scale:null,font:null,textColor:null})}}return new Ql(te)}evaluate(S){return new Zr(this.sections.map(D=>{let j=D.content.evaluate(S);return Ki(j)===Nr?new Fr("",j,null,null,null):new Fr(ka(j),null,D.scale?D.scale.evaluate(S):null,D.font?D.font.evaluate(S).join(","):null,D.textColor?D.textColor.evaluate(S):null)}))}eachChild(S){for(let D of this.sections)S(D.content),D.scale&&S(D.scale),D.font&&S(D.font),D.textColor&&S(D.textColor)}outputDefined(){return!1}}class Hu{constructor(S){this.type=Nr,this.input=S}static parse(S,D){if(S.length!==2)return D.error("Expected two arguments.");let j=D.parse(S[1],1,Et);return j?new Hu(j):D.error("No image name provided.")}evaluate(S){let D=this.input.evaluate(S),j=Mi.fromString(D);return j&&S.availableImages&&(j.available=S.availableImages.indexOf(D)>-1),j}eachChild(S){S(this.input)}outputDefined(){return!1}}class fc{constructor(S){this.type=St,this.input=S}static parse(S,D){if(S.length!==2)return D.error(`Expected 1 argument, but found ${S.length-1} instead.`);let j=D.parse(S[1],1);return j?j.type.kind!=="array"&&j.type.kind!=="string"&&j.type.kind!=="value"?D.error(`Expected argument of type string or array, but found ${Ye(j.type)} instead.`):new fc(j):null}evaluate(S){let D=this.input.evaluate(S);if(typeof D=="string")return[...D].length;if(Array.isArray(D))return D.length;throw new la(`Expected value to be of type string or array, but found ${Ye(Ki(D))} instead.`)}eachChild(S){S(this.input)}outputDefined(){return!1}}let ms=8192;function on(R,S){let D=(180+R[0])/360,j=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R[1]*Math.PI/360)))/360,te=Math.pow(2,S.z);return[Math.round(D*te*ms),Math.round(j*te*ms)]}function fa(R,S){let D=Math.pow(2,S.z);return[(te=(R[0]/ms+S.x)/D,360*te-180),(j=(R[1]/ms+S.y)/D,360/Math.PI*Math.atan(Math.exp((180-360*j)*Math.PI/180))-90)];var j,te}function Qu(R,S){R[0]=Math.min(R[0],S[0]),R[1]=Math.min(R[1],S[1]),R[2]=Math.max(R[2],S[0]),R[3]=Math.max(R[3],S[1])}function Rl(R,S){return!(R[0]<=S[0]||R[2]>=S[2]||R[1]<=S[1]||R[3]>=S[3])}function vo(R,S,D){let j=R[0]-S[0],te=R[1]-S[1],ue=R[0]-D[0],ve=R[1]-D[1];return j*ve-ue*te==0&&j*ue<=0&&te*ve<=0}function Zl(R,S,D,j){return(te=[j[0]-D[0],j[1]-D[1]])[0]*(ue=[S[0]-R[0],S[1]-R[1]])[1]-te[1]*ue[0]!=0&&!(!Co(R,S,D,j)||!Co(D,j,R,S));var te,ue}function Ks(R,S,D){for(let j of D)for(let te=0;te(te=R)[1]!=(ve=De[Ze+1])[1]>te[1]&&te[0]<(ve[0]-ue[0])*(te[1]-ue[1])/(ve[1]-ue[1])+ue[0]&&(j=!j)}var te,ue,ve;return j}function Ec(R,S){for(let D of S)if(Xl(R,D))return!0;return!1}function Zn(R,S){for(let D of R)if(!Xl(D,S))return!1;for(let D=0;D0&&De<0||ve<0&&De>0}function Tl(R,S,D){let j=[];for(let te=0;teD[2]){let te=.5*j,ue=R[0]-D[0]>te?-j:D[0]-R[0]>te?j:0;ue===0&&(ue=R[0]-D[2]>te?-j:D[2]-R[0]>te?j:0),R[0]+=ue}Qu(S,R)}function cf(R,S,D,j){let te=Math.pow(2,j.z)*ms,ue=[j.x*ms,j.y*ms],ve=[];for(let De of R)for(let Ze of De){let at=[Ze.x+ue[0],Ze.y+ue[1]];So(at,S,D,te),ve.push(at)}return ve}function rh(R,S,D,j){let te=Math.pow(2,j.z)*ms,ue=[j.x*ms,j.y*ms],ve=[];for(let Ze of R){let at=[];for(let Tt of Ze){let Ft=[Tt.x+ue[0],Tt.y+ue[1]];Qu(S,Ft),at.push(Ft)}ve.push(at)}if(S[2]-S[0]<=te/2){(De=S)[0]=De[1]=1/0,De[2]=De[3]=-1/0;for(let Ze of ve)for(let at of Ze)So(at,S,D,te)}var De;return ve}class Al{constructor(S,D){this.type=dt,this.geojson=S,this.geometries=D}static parse(S,D){if(S.length!==2)return D.error(`'within' expression requires exactly one argument, but found ${S.length-1} instead.`);if(Gi(S[1])){let j=S[1];if(j.type==="FeatureCollection"){let te=[];for(let ue of j.features){let{type:ve,coordinates:De}=ue.geometry;ve==="Polygon"&&te.push(De),ve==="MultiPolygon"&&te.push(...De)}if(te.length)return new Al(j,{type:"MultiPolygon",coordinates:te})}else if(j.type==="Feature"){let te=j.geometry.type;if(te==="Polygon"||te==="MultiPolygon")return new Al(j,j.geometry)}else if(j.type==="Polygon"||j.type==="MultiPolygon")return new Al(j,j)}return D.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(S){if(S.geometry()!=null&&S.canonicalID()!=null){if(S.geometryType()==="Point")return function(D,j){let te=[1/0,1/0,-1/0,-1/0],ue=[1/0,1/0,-1/0,-1/0],ve=D.canonicalID();if(j.type==="Polygon"){let De=Tl(j.coordinates,ue,ve),Ze=cf(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Xl(at,De))return!1}if(j.type==="MultiPolygon"){let De=uf(j.coordinates,ue,ve),Ze=cf(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Ec(at,De))return!1}return!0}(S,this.geometries);if(S.geometryType()==="LineString")return function(D,j){let te=[1/0,1/0,-1/0,-1/0],ue=[1/0,1/0,-1/0,-1/0],ve=D.canonicalID();if(j.type==="Polygon"){let De=Tl(j.coordinates,ue,ve),Ze=rh(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Zn(at,De))return!1}if(j.type==="MultiPolygon"){let De=uf(j.coordinates,ue,ve),Ze=rh(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!ko(at,De))return!1}return!0}(S,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Hc=class{constructor(R=[],S=(D,j)=>Dj?1:0){if(this.data=R,this.length=this.data.length,this.compare=S,this.length>0)for(let D=(this.length>>1)-1;D>=0;D--)this._down(D)}push(R){this.data.push(R),this._up(this.length++)}pop(){if(this.length===0)return;let R=this.data[0],S=this.data.pop();return--this.length>0&&(this.data[0]=S,this._down(0)),R}peek(){return this.data[0]}_up(R){let{data:S,compare:D}=this,j=S[R];for(;R>0;){let te=R-1>>1,ue=S[te];if(D(j,ue)>=0)break;S[R]=ue,R=te}S[R]=j}_down(R){let{data:S,compare:D}=this,j=this.length>>1,te=S[R];for(;R=0)break;S[R]=S[ue],R=ue}S[R]=te}};function eu(R,S,D,j,te){Ls(R,S,D,j||R.length-1,te||kc)}function Ls(R,S,D,j,te){for(;j>D;){if(j-D>600){var ue=j-D+1,ve=S-D+1,De=Math.log(ue),Ze=.5*Math.exp(2*De/3),at=.5*Math.sqrt(De*Ze*(ue-Ze)/ue)*(ve-ue/2<0?-1:1);Ls(R,S,Math.max(D,Math.floor(S-ve*Ze/ue+at)),Math.min(j,Math.floor(S+(ue-ve)*Ze/ue+at)),te)}var Tt=R[S],Ft=D,Qt=j;for(mu(R,D,S),te(R[j],Tt)>0&&mu(R,D,j);Ft0;)Qt--}te(R[D],Tt)===0?mu(R,D,Qt):mu(R,++Qt,j),Qt<=S&&(D=Qt+1),S<=Qt&&(j=Qt-1)}}function mu(R,S,D){var j=R[S];R[S]=R[D],R[D]=j}function kc(R,S){return RS?1:0}function Of(R,S){if(R.length<=1)return[R];let D=[],j,te;for(let ue of R){let ve=vd(ue);ve!==0&&(ue.area=Math.abs(ve),te===void 0&&(te=ve<0),te===ve<0?(j&&D.push(j),j=[ue]):j.push(ue))}if(j&&D.push(j),S>1)for(let ue=0;ue1?(at=S[Ze+1][0],Tt=S[Ze+1][1]):sr>0&&(at+=Ft/this.kx*sr,Tt+=Qt/this.ky*sr)),Ft=this.wrap(D[0]-at)*this.kx,Qt=(D[1]-Tt)*this.ky;let Tr=Ft*Ft+Qt*Qt;Tr180;)S-=360;return S}}function Vl(R,S){return S[0]-R[0]}function Js(R){return R[1]-R[0]+1}function hc(R,S){return R[1]>=R[0]&&R[1]R[1])return[null,null];let D=Js(R);if(S){if(D===2)return[R,null];let te=Math.floor(D/2);return[[R[0],R[0]+te],[R[0]+te,R[1]]]}if(D===1)return[R,null];let j=Math.floor(D/2)-1;return[[R[0],R[0]+j],[R[0]+j+1,R[1]]]}function ws(R,S){if(!hc(S,R.length))return[1/0,1/0,-1/0,-1/0];let D=[1/0,1/0,-1/0,-1/0];for(let j=S[0];j<=S[1];++j)Qu(D,R[j]);return D}function $s(R){let S=[1/0,1/0,-1/0,-1/0];for(let D of R)for(let j of D)Qu(S,j);return S}function hs(R){return R[0]!==-1/0&&R[1]!==-1/0&&R[2]!==1/0&&R[3]!==1/0}function Ms(R,S,D){if(!hs(R)||!hs(S))return NaN;let j=0,te=0;return R[2]S[2]&&(j=R[0]-S[2]),R[1]>S[3]&&(te=R[1]-S[3]),R[3]=j)return j;if(Rl(te,ue)){if(Od(R,S))return 0}else if(Od(S,R))return 0;let ve=1/0;for(let De of R)for(let Ze=0,at=De.length,Tt=at-1;Ze0;){let Ze=ve.pop();if(Ze[0]>=ue)continue;let at=Ze[1],Tt=S?50:100;if(Js(at)<=Tt){if(!hc(at,R.length))return NaN;if(S){let Ft=wo(R,at,D,j);if(isNaN(Ft)||Ft===0)return Ft;ue=Math.min(ue,Ft)}else for(let Ft=at[0];Ft<=at[1];++Ft){let Qt=ov(R[Ft],D,j);if(ue=Math.min(ue,Qt),ue===0)return 0}}else{let Ft=Cc(at,S);Ja(ve,ue,j,R,De,Ft[0]),Ja(ve,ue,j,R,De,Ft[1])}}return ue}function uu(R,S,D,j,te,ue=1/0){let ve=Math.min(ue,te.distance(R[0],D[0]));if(ve===0)return ve;let De=new Hc([[0,[0,R.length-1],[0,D.length-1]]],Vl);for(;De.length>0;){let Ze=De.pop();if(Ze[0]>=ve)continue;let at=Ze[1],Tt=Ze[2],Ft=S?50:100,Qt=j?50:100;if(Js(at)<=Ft&&Js(Tt)<=Qt){if(!hc(at,R.length)&&hc(Tt,D.length))return NaN;let sr;if(S&&j)sr=ec(R,at,D,Tt,te),ve=Math.min(ve,sr);else if(S&&!j){let Tr=R.slice(at[0],at[1]+1);for(let Pr=Tt[0];Pr<=Tt[1];++Pr)if(sr=dc(D[Pr],Tr,te),ve=Math.min(ve,sr),ve===0)return ve}else if(!S&&j){let Tr=D.slice(Tt[0],Tt[1]+1);for(let Pr=at[0];Pr<=at[1];++Pr)if(sr=dc(R[Pr],Tr,te),ve=Math.min(ve,sr),ve===0)return ve}else sr=Ps(R,at,D,Tt,te),ve=Math.min(ve,sr)}else{let sr=Cc(at,S),Tr=Cc(Tt,j);Ef(De,ve,te,R,D,sr[0],Tr[0]),Ef(De,ve,te,R,D,sr[0],Tr[1]),Ef(De,ve,te,R,D,sr[1],Tr[0]),Ef(De,ve,te,R,D,sr[1],Tr[1])}}return ve}function Mh(R){return R.type==="MultiPolygon"?R.coordinates.map(S=>({type:"Polygon",coordinates:S})):R.type==="MultiLineString"?R.coordinates.map(S=>({type:"LineString",coordinates:S})):R.type==="MultiPoint"?R.coordinates.map(S=>({type:"Point",coordinates:S})):[R]}class jc{constructor(S,D){this.type=St,this.geojson=S,this.geometries=D}static parse(S,D){if(S.length!==2)return D.error(`'distance' expression requires exactly one argument, but found ${S.length-1} instead.`);if(Gi(S[1])){let j=S[1];if(j.type==="FeatureCollection")return new jc(j,j.features.map(te=>Mh(te.geometry)).flat());if(j.type==="Feature")return new jc(j,Mh(j.geometry));if("type"in j&&"coordinates"in j)return new jc(j,Mh(j))}return D.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(S){if(S.geometry()!=null&&S.canonicalID()!=null){if(S.geometryType()==="Point")return function(D,j){let te=D.geometry(),ue=te.flat().map(Ze=>fa([Ze.x,Ze.y],D.canonical));if(te.length===0)return NaN;let ve=new ih(ue[0][1]),De=1/0;for(let Ze of j){switch(Ze.type){case"Point":De=Math.min(De,uu(ue,!1,[Ze.coordinates],!1,ve,De));break;case"LineString":De=Math.min(De,uu(ue,!1,Ze.coordinates,!0,ve,De));break;case"Polygon":De=Math.min(De,tc(ue,!1,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries);if(S.geometryType()==="LineString")return function(D,j){let te=D.geometry(),ue=te.flat().map(Ze=>fa([Ze.x,Ze.y],D.canonical));if(te.length===0)return NaN;let ve=new ih(ue[0][1]),De=1/0;for(let Ze of j){switch(Ze.type){case"Point":De=Math.min(De,uu(ue,!0,[Ze.coordinates],!1,ve,De));break;case"LineString":De=Math.min(De,uu(ue,!0,Ze.coordinates,!0,ve,De));break;case"Polygon":De=Math.min(De,tc(ue,!0,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries);if(S.geometryType()==="Polygon")return function(D,j){let te=D.geometry();if(te.length===0||te[0].length===0)return NaN;let ue=Of(te,0).map(Ze=>Ze.map(at=>at.map(Tt=>fa([Tt.x,Tt.y],D.canonical)))),ve=new ih(ue[0][0][0][1]),De=1/0;for(let Ze of j)for(let at of ue){switch(Ze.type){case"Point":De=Math.min(De,tc([Ze.coordinates],!1,at,ve,De));break;case"LineString":De=Math.min(De,tc(Ze.coordinates,!0,at,ve,De));break;case"Polygon":De=Math.min(De,$o(at,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let kf={"==":os,"!=":cl,">":ml,"<":Cs,">=":Hs,"<=":Ys,array:Ra,at:br,boolean:Ra,case:Yi,coalesce:ks,collator:Eo,format:Ql,image:Hu,in:Hr,"index-of":ti,interpolate:xo,"interpolate-hcl":xo,"interpolate-lab":xo,length:fc,let:xn,literal:jn,match:zi,number:Ra,"number-format":fs,object:Ra,slice:an,step:Ji,string:Ra,"to-boolean":oa,"to-color":oa,"to-number":oa,"to-string":oa,var:_t,within:Al,distance:jc};class Ml{constructor(S,D,j,te){this.name=S,this.type=D,this._evaluate=j,this.args=te}evaluate(S){return this._evaluate(S,this.args)}eachChild(S){this.args.forEach(S)}outputDefined(){return!1}static parse(S,D){let j=S[0],te=Ml.definitions[j];if(!te)return D.error(`Unknown expression "${j}". If you wanted a literal array, use ["literal", [...]].`,0);let ue=Array.isArray(te)?te[0]:te.type,ve=Array.isArray(te)?[[te[1],te[2]]]:te.overloads,De=ve.filter(([at])=>!Array.isArray(at)||at.length===S.length-1),Ze=null;for(let[at,Tt]of De){Ze=new oo(D.registry,kh,D.path,null,D.scope);let Ft=[],Qt=!1;for(let sr=1;sr{return Qt=Ft,Array.isArray(Qt)?`(${Qt.map(Ye).join(", ")})`:`(${Ye(Qt.type)}...)`;var Qt}).join(" | "),Tt=[];for(let Ft=1;Ft{D=S?D&&kh(j):D&&j instanceof jn}),!!D&&Kh(R)&&ah(R,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function Kh(R){if(R instanceof Ml&&(R.name==="get"&&R.args.length===1||R.name==="feature-state"||R.name==="has"&&R.args.length===1||R.name==="properties"||R.name==="geometry-type"||R.name==="id"||/^filter-/.test(R.name))||R instanceof Al||R instanceof jc)return!1;let S=!0;return R.eachChild(D=>{S&&!Kh(D)&&(S=!1)}),S}function rc(R){if(R instanceof Ml&&R.name==="feature-state")return!1;let S=!0;return R.eachChild(D=>{S&&!rc(D)&&(S=!1)}),S}function ah(R,S){if(R instanceof Ml&&S.indexOf(R.name)>=0)return!1;let D=!0;return R.eachChild(j=>{D&&!ah(j,S)&&(D=!1)}),D}function Wc(R){return{result:"success",value:R}}function df(R){return{result:"error",value:R}}function Cu(R){return R["property-type"]==="data-driven"||R["property-type"]==="cross-faded-data-driven"}function Nf(R){return!!R.expression&&R.expression.parameters.indexOf("zoom")>-1}function Zc(R){return!!R.expression&&R.expression.interpolated}function ds(R){return R instanceof Number?"number":R instanceof String?"string":R instanceof Boolean?"boolean":Array.isArray(R)?"array":R===null?"null":typeof R}function Ch(R){return typeof R=="object"&&R!==null&&!Array.isArray(R)}function Bd(R){return R}function Jh(R,S){let D=S.type==="color",j=R.stops&&typeof R.stops[0][0]=="object",te=j||!(j||R.property!==void 0),ue=R.type||(Zc(S)?"exponential":"interval");if(D||S.type==="padding"){let Tt=D?Zt.parse:Vr.parse;(R=Ke({},R)).stops&&(R.stops=R.stops.map(Ft=>[Ft[0],Tt(Ft[1])])),R.default=Tt(R.default?R.default:S.default)}if(R.colorSpace&&(ve=R.colorSpace)!=="rgb"&&ve!=="hcl"&&ve!=="lab")throw new Error(`Unknown color space: "${R.colorSpace}"`);var ve;let De,Ze,at;if(ue==="exponential")De=$h;else if(ue==="interval")De=Lu;else if(ue==="categorical"){De=pd,Ze=Object.create(null);for(let Tt of R.stops)Ze[Tt[0]]=Tt[1];at=typeof R.stops[0][0]}else{if(ue!=="identity")throw new Error(`Unknown function type "${ue}"`);De=tu}if(j){let Tt={},Ft=[];for(let Tr=0;TrTr[0]),evaluate:({zoom:Tr},Pr)=>$h({stops:Qt,base:R.base},S,Tr).evaluate(Tr,Pr)}}if(te){let Tt=ue==="exponential"?{name:"exponential",base:R.base!==void 0?R.base:1}:null;return{kind:"camera",interpolationType:Tt,interpolationFactor:xo.interpolationFactor.bind(void 0,Tt),zoomStops:R.stops.map(Ft=>Ft[0]),evaluate:({zoom:Ft})=>De(R,S,Ft,Ze,at)}}return{kind:"source",evaluate(Tt,Ft){let Qt=Ft&&Ft.properties?Ft.properties[R.property]:void 0;return Qt===void 0?Cf(R.default,S.default):De(R,S,Qt,Ze,at)}}}function Cf(R,S,D){return R!==void 0?R:S!==void 0?S:D!==void 0?D:void 0}function pd(R,S,D,j,te){return Cf(typeof D===te?j[D]:void 0,R.default,S.default)}function Lu(R,S,D){if(ds(D)!=="number")return Cf(R.default,S.default);let j=R.stops.length;if(j===1||D<=R.stops[0][0])return R.stops[0][1];if(D>=R.stops[j-1][0])return R.stops[j-1][1];let te=hi(R.stops.map(ue=>ue[0]),D);return R.stops[te][1]}function $h(R,S,D){let j=R.base!==void 0?R.base:1;if(ds(D)!=="number")return Cf(R.default,S.default);let te=R.stops.length;if(te===1||D<=R.stops[0][0])return R.stops[0][1];if(D>=R.stops[te-1][0])return R.stops[te-1][1];let ue=hi(R.stops.map(Tt=>Tt[0]),D),ve=function(Tt,Ft,Qt,sr){let Tr=sr-Qt,Pr=Tt-Qt;return Tr===0?0:Ft===1?Pr/Tr:(Math.pow(Ft,Pr)-1)/(Math.pow(Ft,Tr)-1)}(D,j,R.stops[ue][0],R.stops[ue+1][0]),De=R.stops[ue][1],Ze=R.stops[ue+1][1],at=Mo[S.type]||Bd;return typeof De.evaluate=="function"?{evaluate(...Tt){let Ft=De.evaluate.apply(void 0,Tt),Qt=Ze.evaluate.apply(void 0,Tt);if(Ft!==void 0&&Qt!==void 0)return at(Ft,Qt,ve,R.colorSpace)}}:at(De,Ze,ve,R.colorSpace)}function tu(R,S,D){switch(S.type){case"color":D=Zt.parse(D);break;case"formatted":D=Zr.fromString(D.toString());break;case"resolvedImage":D=Mi.fromString(D.toString());break;case"padding":D=Vr.parse(D);break;default:ds(D)===S.type||S.type==="enum"&&S.values[D]||(D=void 0)}return Cf(D,R.default,S.default)}Ml.register(kf,{error:[{kind:"error"},[Et],(R,[S])=>{throw new la(S.evaluate(R))}],typeof:[Et,[fr],(R,[S])=>Ye(Ki(S.evaluate(R)))],"to-rgba":[Ne(St,4),[Ht],(R,[S])=>{let[D,j,te,ue]=S.evaluate(R).rgb;return[255*D,255*j,255*te,ue]}],rgb:[Ht,[St,St,St],Yh],rgba:[Ht,[St,St,St,St],Yh],has:{type:dt,overloads:[[[Et],(R,[S])=>Eh(S.evaluate(R),R.properties())],[[Et,$t],(R,[S,D])=>Eh(S.evaluate(R),D.evaluate(R))]]},get:{type:fr,overloads:[[[Et],(R,[S])=>nh(S.evaluate(R),R.properties())],[[Et,$t],(R,[S,D])=>nh(S.evaluate(R),D.evaluate(R))]]},"feature-state":[fr,[Et],(R,[S])=>nh(S.evaluate(R),R.featureState||{})],properties:[$t,[],R=>R.properties()],"geometry-type":[Et,[],R=>R.geometryType()],id:[fr,[],R=>R.id()],zoom:[St,[],R=>R.globals.zoom],"heatmap-density":[St,[],R=>R.globals.heatmapDensity||0],"line-progress":[St,[],R=>R.globals.lineProgress||0],accumulated:[fr,[],R=>R.globals.accumulated===void 0?null:R.globals.accumulated],"+":[St,hf(St),(R,S)=>{let D=0;for(let j of S)D+=j.evaluate(R);return D}],"*":[St,hf(St),(R,S)=>{let D=1;for(let j of S)D*=j.evaluate(R);return D}],"-":{type:St,overloads:[[[St,St],(R,[S,D])=>S.evaluate(R)-D.evaluate(R)],[[St],(R,[S])=>-S.evaluate(R)]]},"/":[St,[St,St],(R,[S,D])=>S.evaluate(R)/D.evaluate(R)],"%":[St,[St,St],(R,[S,D])=>S.evaluate(R)%D.evaluate(R)],ln2:[St,[],()=>Math.LN2],pi:[St,[],()=>Math.PI],e:[St,[],()=>Math.E],"^":[St,[St,St],(R,[S,D])=>Math.pow(S.evaluate(R),D.evaluate(R))],sqrt:[St,[St],(R,[S])=>Math.sqrt(S.evaluate(R))],log10:[St,[St],(R,[S])=>Math.log(S.evaluate(R))/Math.LN10],ln:[St,[St],(R,[S])=>Math.log(S.evaluate(R))],log2:[St,[St],(R,[S])=>Math.log(S.evaluate(R))/Math.LN2],sin:[St,[St],(R,[S])=>Math.sin(S.evaluate(R))],cos:[St,[St],(R,[S])=>Math.cos(S.evaluate(R))],tan:[St,[St],(R,[S])=>Math.tan(S.evaluate(R))],asin:[St,[St],(R,[S])=>Math.asin(S.evaluate(R))],acos:[St,[St],(R,[S])=>Math.acos(S.evaluate(R))],atan:[St,[St],(R,[S])=>Math.atan(S.evaluate(R))],min:[St,hf(St),(R,S)=>Math.min(...S.map(D=>D.evaluate(R)))],max:[St,hf(St),(R,S)=>Math.max(...S.map(D=>D.evaluate(R)))],abs:[St,[St],(R,[S])=>Math.abs(S.evaluate(R))],round:[St,[St],(R,[S])=>{let D=S.evaluate(R);return D<0?-Math.round(-D):Math.round(D)}],floor:[St,[St],(R,[S])=>Math.floor(S.evaluate(R))],ceil:[St,[St],(R,[S])=>Math.ceil(S.evaluate(R))],"filter-==":[dt,[Et,fr],(R,[S,D])=>R.properties()[S.value]===D.value],"filter-id-==":[dt,[fr],(R,[S])=>R.id()===S.value],"filter-type-==":[dt,[Et],(R,[S])=>R.geometryType()===S.value],"filter-<":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j{let D=R.id(),j=S.value;return typeof D==typeof j&&D":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j>te}],"filter-id->":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D>j}],"filter-<=":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j<=te}],"filter-id-<=":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D<=j}],"filter->=":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j>=te}],"filter-id->=":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D>=j}],"filter-has":[dt,[fr],(R,[S])=>S.value in R.properties()],"filter-has-id":[dt,[],R=>R.id()!==null&&R.id()!==void 0],"filter-type-in":[dt,[Ne(Et)],(R,[S])=>S.value.indexOf(R.geometryType())>=0],"filter-id-in":[dt,[Ne(fr)],(R,[S])=>S.value.indexOf(R.id())>=0],"filter-in-small":[dt,[Et,Ne(fr)],(R,[S,D])=>D.value.indexOf(R.properties()[S.value])>=0],"filter-in-large":[dt,[Et,Ne(fr)],(R,[S,D])=>function(j,te,ue,ve){for(;ue<=ve;){let De=ue+ve>>1;if(te[De]===j)return!0;te[De]>j?ve=De-1:ue=De+1}return!1}(R.properties()[S.value],D.value,0,D.value.length-1)],all:{type:dt,overloads:[[[dt,dt],(R,[S,D])=>S.evaluate(R)&&D.evaluate(R)],[hf(dt),(R,S)=>{for(let D of S)if(!D.evaluate(R))return!1;return!0}]]},any:{type:dt,overloads:[[[dt,dt],(R,[S,D])=>S.evaluate(R)||D.evaluate(R)],[hf(dt),(R,S)=>{for(let D of S)if(D.evaluate(R))return!0;return!1}]]},"!":[dt,[dt],(R,[S])=>!S.evaluate(R)],"is-supported-script":[dt,[Et],(R,[S])=>{let D=R.globals&&R.globals.isSupportedScript;return!D||D(S.evaluate(R))}],upcase:[Et,[Et],(R,[S])=>S.evaluate(R).toUpperCase()],downcase:[Et,[Et],(R,[S])=>S.evaluate(R).toLowerCase()],concat:[Et,hf(fr),(R,S)=>S.map(D=>ka(D.evaluate(R))).join("")],"resolved-locale":[Et,[_r],(R,[S])=>S.evaluate(R).resolvedLocale()]});class Pu{constructor(S,D){var j;this.expression=S,this._warningHistory={},this._evaluator=new Ha,this._defaultValue=D?(j=D).type==="color"&&Ch(j.default)?new Zt(0,0,0,0):j.type==="color"?Zt.parse(j.default)||null:j.type==="padding"?Vr.parse(j.default)||null:j.type==="variableAnchorOffsetCollection"?Si.parse(j.default)||null:j.default===void 0?null:j.default:null,this._enumValues=D&&D.type==="enum"?D.values:null}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._evaluator.globals=S,this._evaluator.feature=D,this._evaluator.featureState=j,this._evaluator.canonical=te,this._evaluator.availableImages=ue||null,this._evaluator.formattedSection=ve,this.expression.evaluate(this._evaluator)}evaluate(S,D,j,te,ue,ve){this._evaluator.globals=S,this._evaluator.feature=D||null,this._evaluator.featureState=j||null,this._evaluator.canonical=te,this._evaluator.availableImages=ue||null,this._evaluator.formattedSection=ve||null;try{let De=this.expression.evaluate(this._evaluator);if(De==null||typeof De=="number"&&De!=De)return this._defaultValue;if(this._enumValues&&!(De in this._enumValues))throw new la(`Expected value to be one of ${Object.keys(this._enumValues).map(Ze=>JSON.stringify(Ze)).join(", ")}, but found ${JSON.stringify(De)} instead.`);return De}catch(De){return this._warningHistory[De.message]||(this._warningHistory[De.message]=!0,typeof console!="undefined"&&console.warn(De.message)),this._defaultValue}}}function Lc(R){return Array.isArray(R)&&R.length>0&&typeof R[0]=="string"&&R[0]in kf}function fl(R,S){let D=new oo(kf,kh,[],S?function(te){let ue={color:Ht,string:Et,number:St,enum:Et,boolean:dt,formatted:Br,padding:Or,resolvedImage:Nr,variableAnchorOffsetCollection:ut};return te.type==="array"?Ne(ue[te.value]||fr,te.length):ue[te.type]}(S):void 0),j=D.parse(R,void 0,void 0,void 0,S&&S.type==="string"?{typeAnnotation:"coerce"}:void 0);return j?Wc(new Pu(j,S)):df(D.errors)}class Xc{constructor(S,D){this.kind=S,this._styleExpression=D,this.isStateDependent=S!=="constant"&&!rc(D.expression)}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._styleExpression.evaluateWithoutErrorHandling(S,D,j,te,ue,ve)}evaluate(S,D,j,te,ue,ve){return this._styleExpression.evaluate(S,D,j,te,ue,ve)}}class ic{constructor(S,D,j,te){this.kind=S,this.zoomStops=j,this._styleExpression=D,this.isStateDependent=S!=="camera"&&!rc(D.expression),this.interpolationType=te}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._styleExpression.evaluateWithoutErrorHandling(S,D,j,te,ue,ve)}evaluate(S,D,j,te,ue,ve){return this._styleExpression.evaluate(S,D,j,te,ue,ve)}interpolationFactor(S,D,j){return this.interpolationType?xo.interpolationFactor(this.interpolationType,S,D,j):0}}function yu(R,S){let D=fl(R,S);if(D.result==="error")return D;let j=D.value.expression,te=Kh(j);if(!te&&!Cu(S))return df([new xt("","data expressions not supported")]);let ue=ah(j,["zoom"]);if(!ue&&!Nf(S))return df([new xt("","zoom expressions not supported")]);let ve=Qh(j);return ve||ue?ve instanceof xt?df([ve]):ve instanceof xo&&!Zc(S)?df([new xt("",'"interpolate" expressions cannot be used with this property')]):Wc(ve?new ic(te?"camera":"composite",D.value,ve.labels,ve instanceof xo?ve.interpolation:void 0):new Xc(te?"constant":"source",D.value)):df([new xt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Qs{constructor(S,D){this._parameters=S,this._specification=D,Ke(this,Jh(this._parameters,this._specification))}static deserialize(S){return new Qs(S._parameters,S._specification)}static serialize(S){return{_parameters:S._parameters,_specification:S._specification}}}function Qh(R){let S=null;if(R instanceof xn)S=Qh(R.result);else if(R instanceof ks){for(let D of R.args)if(S=Qh(D),S)break}else(R instanceof Ji||R instanceof xo)&&R.input instanceof Ml&&R.input.name==="zoom"&&(S=R);return S instanceof xt||R.eachChild(D=>{let j=Qh(D);j instanceof xt?S=j:!S&&j?S=new xt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):S&&j&&S!==j&&(S=new xt("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),S}function gd(R){if(R===!0||R===!1)return!0;if(!Array.isArray(R)||R.length===0)return!1;switch(R[0]){case"has":return R.length>=2&&R[1]!=="$id"&&R[1]!=="$type";case"in":return R.length>=3&&(typeof R[1]!="string"||Array.isArray(R[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return R.length!==3||Array.isArray(R[1])||Array.isArray(R[2]);case"any":case"all":for(let S of R.slice(1))if(!gd(S)&&typeof S!="boolean")return!1;return!0;default:return!0}}let Gu={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Pc(R){if(R==null)return{filter:()=>!0,needGeometry:!1};gd(R)||(R=Lf(R));let S=fl(R,Gu);if(S.result==="error")throw new Error(S.value.map(D=>`${D.key}: ${D.message}`).join(", "));return{filter:(D,j,te)=>S.value.evaluate(D,j,{},te),needGeometry:sv(R)}}function vc(R,S){return RS?1:0}function sv(R){if(!Array.isArray(R))return!1;if(R[0]==="within"||R[0]==="distance")return!0;for(let S=1;S"||S==="<="||S===">="?Uf(R[1],R[2],S):S==="any"?(D=R.slice(1),["any"].concat(D.map(Lf))):S==="all"?["all"].concat(R.slice(1).map(Lf)):S==="none"?["all"].concat(R.slice(1).map(Lf).map(ru)):S==="in"?Iu(R[1],R.slice(2)):S==="!in"?ru(Iu(R[1],R.slice(2))):S==="has"?oh(R[1]):S!=="!has"||ru(oh(R[1]));var D}function Uf(R,S,D){switch(R){case"$type":return[`filter-type-${D}`,S];case"$id":return[`filter-id-${D}`,S];default:return[`filter-${D}`,R,S]}}function Iu(R,S){if(S.length===0)return!1;switch(R){case"$type":return["filter-type-in",["literal",S]];case"$id":return["filter-id-in",["literal",S]];default:return S.length>200&&!S.some(D=>typeof D!=typeof S[0])?["filter-in-large",R,["literal",S.sort(vc)]]:["filter-in-small",R,["literal",S]]}}function oh(R){switch(R){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",R]}}function ru(R){return["!",R]}function vf(R){let S=typeof R;if(S==="number"||S==="boolean"||S==="string"||R==null)return JSON.stringify(R);if(Array.isArray(R)){let te="[";for(let ue of R)te+=`${vf(ue)},`;return`${te}]`}let D=Object.keys(R).sort(),j="{";for(let te=0;tej.maximum?[new er(S,D,`${D} is greater than the maximum value ${j.maximum}`)]:[]}function Pf(R){let S=R.valueSpec,D=Fs(R.value.type),j,te,ue,ve={},De=D!=="categorical"&&R.value.property===void 0,Ze=!De,at=ds(R.value.stops)==="array"&&ds(R.value.stops[0])==="array"&&ds(R.value.stops[0][0])==="object",Tt=xu({key:R.key,value:R.value,valueSpec:R.styleSpec.function,validateSpec:R.validateSpec,style:R.style,styleSpec:R.styleSpec,objectElementValidators:{stops:function(sr){if(D==="identity")return[new er(sr.key,sr.value,'identity function may not have a "stops" property')];let Tr=[],Pr=sr.value;return Tr=Tr.concat(Lh({key:sr.key,value:Pr,valueSpec:sr.valueSpec,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec,arrayElementValidator:Ft})),ds(Pr)==="array"&&Pr.length===0&&Tr.push(new er(sr.key,Pr,"array must have at least one stop")),Tr},default:function(sr){return sr.validateSpec({key:sr.key,value:sr.value,valueSpec:S,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec})}}});return D==="identity"&&De&&Tt.push(new er(R.key,R.value,'missing required property "property"')),D==="identity"||R.value.stops||Tt.push(new er(R.key,R.value,'missing required property "stops"')),D==="exponential"&&R.valueSpec.expression&&!Zc(R.valueSpec)&&Tt.push(new er(R.key,R.value,"exponential functions not supported")),R.styleSpec.$version>=8&&(Ze&&!Cu(R.valueSpec)?Tt.push(new er(R.key,R.value,"property functions not supported")):De&&!Nf(R.valueSpec)&&Tt.push(new er(R.key,R.value,"zoom functions not supported"))),D!=="categorical"&&!at||R.value.property!==void 0||Tt.push(new er(R.key,R.value,'"property" property is required')),Tt;function Ft(sr){let Tr=[],Pr=sr.value,$r=sr.key;if(ds(Pr)!=="array")return[new er($r,Pr,`array expected, ${ds(Pr)} found`)];if(Pr.length!==2)return[new er($r,Pr,`array length 2 expected, length ${Pr.length} found`)];if(at){if(ds(Pr[0])!=="object")return[new er($r,Pr,`object expected, ${ds(Pr[0])} found`)];if(Pr[0].zoom===void 0)return[new er($r,Pr,"object stop key must have zoom")];if(Pr[0].value===void 0)return[new er($r,Pr,"object stop key must have value")];if(ue&&ue>Fs(Pr[0].zoom))return[new er($r,Pr[0].zoom,"stop zoom values must appear in ascending order")];Fs(Pr[0].zoom)!==ue&&(ue=Fs(Pr[0].zoom),te=void 0,ve={}),Tr=Tr.concat(xu({key:`${$r}[0]`,value:Pr[0],valueSpec:{zoom:{}},validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec,objectElementValidators:{zoom:Is,value:Qt}}))}else Tr=Tr.concat(Qt({key:`${$r}[0]`,value:Pr[0],valueSpec:{},validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec},Pr));return Lc(_u(Pr[1]))?Tr.concat([new er(`${$r}[1]`,Pr[1],"expressions are not allowed in function stops.")]):Tr.concat(sr.validateSpec({key:`${$r}[1]`,value:Pr[1],valueSpec:S,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec}))}function Qt(sr,Tr){let Pr=ds(sr.value),$r=Fs(sr.value),ni=sr.value!==null?sr.value:Tr;if(j){if(Pr!==j)return[new er(sr.key,ni,`${Pr} stop domain type must match previous stop domain type ${j}`)]}else j=Pr;if(Pr!=="number"&&Pr!=="string"&&Pr!=="boolean")return[new er(sr.key,ni,"stop domain value must be a number, string, or boolean")];if(Pr!=="number"&&D!=="categorical"){let Di=`number expected, ${Pr} found`;return Cu(S)&&D===void 0&&(Di+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new er(sr.key,ni,Di)]}return D!=="categorical"||Pr!=="number"||isFinite($r)&&Math.floor($r)===$r?D!=="categorical"&&Pr==="number"&&te!==void 0&&$rnew er(`${R.key}${j.key}`,R.value,j.message));let D=S.value.expression||S.value._styleExpression.expression;if(R.expressionContext==="property"&&R.propertyKey==="text-font"&&!D.outputDefined())return[new er(R.key,R.value,`Invalid data expression for "${R.propertyKey}". Output values must be contained as literals within the expression.`)];if(R.expressionContext==="property"&&R.propertyType==="layout"&&!rc(D))return[new er(R.key,R.value,'"feature-state" data expressions are not supported with layout properties.')];if(R.expressionContext==="filter"&&!rc(D))return[new er(R.key,R.value,'"feature-state" data expressions are not supported with filters.')];if(R.expressionContext&&R.expressionContext.indexOf("cluster")===0){if(!ah(D,["zoom","feature-state"]))return[new er(R.key,R.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(R.expressionContext==="cluster-initial"&&!Kh(D))return[new er(R.key,R.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function ju(R){let S=R.key,D=R.value,j=R.valueSpec,te=[];return Array.isArray(j.values)?j.values.indexOf(Fs(D))===-1&&te.push(new er(S,D,`expected one of [${j.values.join(", ")}], ${JSON.stringify(D)} found`)):Object.keys(j.values).indexOf(Fs(D))===-1&&te.push(new er(S,D,`expected one of [${Object.keys(j.values).join(", ")}], ${JSON.stringify(D)} found`)),te}function Vf(R){return gd(_u(R.value))?Ic(Ke({},R,{expressionContext:"filter",valueSpec:{value:"boolean"}})):pc(R)}function pc(R){let S=R.value,D=R.key;if(ds(S)!=="array")return[new er(D,S,`array expected, ${ds(S)} found`)];let j=R.styleSpec,te,ue=[];if(S.length<1)return[new er(D,S,"filter array must have at least 1 element")];switch(ue=ue.concat(ju({key:`${D}[0]`,value:S[0],valueSpec:j.filter_operator,style:R.style,styleSpec:R.styleSpec})),Fs(S[0])){case"<":case"<=":case">":case">=":S.length>=2&&Fs(S[1])==="$type"&&ue.push(new er(D,S,`"$type" cannot be use with operator "${S[0]}"`));case"==":case"!=":S.length!==3&&ue.push(new er(D,S,`filter array for operator "${S[0]}" must have 3 elements`));case"in":case"!in":S.length>=2&&(te=ds(S[1]),te!=="string"&&ue.push(new er(`${D}[1]`,S[1],`string expected, ${te} found`)));for(let ve=2;ve{at in D&&S.push(new er(j,D[at],`"${at}" is prohibited for ref layers`))}),te.layers.forEach(at=>{Fs(at.id)===De&&(Ze=at)}),Ze?Ze.ref?S.push(new er(j,D.ref,"ref cannot reference another ref layer")):ve=Fs(Ze.type):S.push(new er(j,D.ref,`ref layer "${De}" not found`))}else if(ve!=="background")if(D.source){let Ze=te.sources&&te.sources[D.source],at=Ze&&Fs(Ze.type);Ze?at==="vector"&&ve==="raster"?S.push(new er(j,D.source,`layer "${D.id}" requires a raster source`)):at!=="raster-dem"&&ve==="hillshade"?S.push(new er(j,D.source,`layer "${D.id}" requires a raster-dem source`)):at==="raster"&&ve!=="raster"?S.push(new er(j,D.source,`layer "${D.id}" requires a vector source`)):at!=="vector"||D["source-layer"]?at==="raster-dem"&&ve!=="hillshade"?S.push(new er(j,D.source,"raster-dem source can only be used with layer type 'hillshade'.")):ve!=="line"||!D.paint||!D.paint["line-gradient"]||at==="geojson"&&Ze.lineMetrics||S.push(new er(j,D,`layer "${D.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):S.push(new er(j,D,`layer "${D.id}" must specify a "source-layer"`)):S.push(new er(j,D.source,`source "${D.source}" not found`))}else S.push(new er(j,D,'missing required property "source"'));return S=S.concat(xu({key:j,value:D,valueSpec:ue.layer,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,objectElementValidators:{"*":()=>[],type:()=>R.validateSpec({key:`${j}.type`,value:D.type,valueSpec:ue.layer.type,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,object:D,objectKey:"type"}),filter:Vf,layout:Ze=>xu({layer:D,key:Ze.key,value:Ze.value,style:Ze.style,styleSpec:Ze.styleSpec,validateSpec:Ze.validateSpec,objectElementValidators:{"*":at=>Dl(Ke({layerType:ve},at))}}),paint:Ze=>xu({layer:D,key:Ze.key,value:Ze.value,style:Ze.style,styleSpec:Ze.styleSpec,validateSpec:Ze.validateSpec,objectElementValidators:{"*":at=>Ph(Ke({layerType:ve},at))}})}})),S}function Wu(R){let S=R.value,D=R.key,j=ds(S);return j!=="string"?[new er(D,S,`string expected, ${j} found`)]:[]}let Rc={promoteId:function({key:R,value:S}){if(ds(S)==="string")return Wu({key:R,value:S});{let D=[];for(let j in S)D.push(...Wu({key:`${R}.${j}`,value:S[j]}));return D}}};function gc(R){let S=R.value,D=R.key,j=R.styleSpec,te=R.style,ue=R.validateSpec;if(!S.type)return[new er(D,S,'"type" is required')];let ve=Fs(S.type),De;switch(ve){case"vector":case"raster":return De=xu({key:D,value:S,valueSpec:j[`source_${ve.replace("-","_")}`],style:R.style,styleSpec:j,objectElementValidators:Rc,validateSpec:ue}),De;case"raster-dem":return De=function(Ze){var at;let Tt=(at=Ze.sourceName)!==null&&at!==void 0?at:"",Ft=Ze.value,Qt=Ze.styleSpec,sr=Qt.source_raster_dem,Tr=Ze.style,Pr=[],$r=ds(Ft);if(Ft===void 0)return Pr;if($r!=="object")return Pr.push(new er("source_raster_dem",Ft,`object expected, ${$r} found`)),Pr;let ni=Fs(Ft.encoding)==="custom",Di=["redFactor","greenFactor","blueFactor","baseShift"],pi=Ze.value.encoding?`"${Ze.value.encoding}"`:"Default";for(let ki in Ft)!ni&&Di.includes(ki)?Pr.push(new er(ki,Ft[ki],`In "${Tt}": "${ki}" is only valid when "encoding" is set to "custom". ${pi} encoding found`)):sr[ki]?Pr=Pr.concat(Ze.validateSpec({key:ki,value:Ft[ki],valueSpec:sr[ki],validateSpec:Ze.validateSpec,style:Tr,styleSpec:Qt})):Pr.push(new er(ki,Ft[ki],`unknown property "${ki}"`));return Pr}({sourceName:D,value:S,style:R.style,styleSpec:j,validateSpec:ue}),De;case"geojson":if(De=xu({key:D,value:S,valueSpec:j.source_geojson,style:te,styleSpec:j,validateSpec:ue,objectElementValidators:Rc}),S.cluster)for(let Ze in S.clusterProperties){let[at,Tt]=S.clusterProperties[Ze],Ft=typeof at=="string"?[at,["accumulated"],["get",Ze]]:at;De.push(...Ic({key:`${D}.${Ze}.map`,value:Tt,validateSpec:ue,expressionContext:"cluster-map"})),De.push(...Ic({key:`${D}.${Ze}.reduce`,value:Ft,validateSpec:ue,expressionContext:"cluster-reduce"}))}return De;case"video":return xu({key:D,value:S,valueSpec:j.source_video,style:te,validateSpec:ue,styleSpec:j});case"image":return xu({key:D,value:S,valueSpec:j.source_image,style:te,validateSpec:ue,styleSpec:j});case"canvas":return[new er(D,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return ju({key:`${D}.type`,value:S.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:te,validateSpec:ue,styleSpec:j})}}function hl(R){let S=R.value,D=R.styleSpec,j=D.light,te=R.style,ue=[],ve=ds(S);if(S===void 0)return ue;if(ve!=="object")return ue=ue.concat([new er("light",S,`object expected, ${ve} found`)]),ue;for(let De in S){let Ze=De.match(/^(.*)-transition$/);ue=ue.concat(Ze&&j[Ze[1]]&&j[Ze[1]].transition?R.validateSpec({key:De,value:S[De],valueSpec:D.transition,validateSpec:R.validateSpec,style:te,styleSpec:D}):j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],validateSpec:R.validateSpec,style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)])}return ue}function iu(R){let S=R.value,D=R.styleSpec,j=D.sky,te=R.style,ue=ds(S);if(S===void 0)return[];if(ue!=="object")return[new er("sky",S,`object expected, ${ue} found`)];let ve=[];for(let De in S)ve=ve.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ve}function mc(R){let S=R.value,D=R.styleSpec,j=D.terrain,te=R.style,ue=[],ve=ds(S);if(S===void 0)return ue;if(ve!=="object")return ue=ue.concat([new er("terrain",S,`object expected, ${ve} found`)]),ue;for(let De in S)ue=ue.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],validateSpec:R.validateSpec,style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ue}function Yc(R){let S=[],D=R.value,j=R.key;if(Array.isArray(D)){let te=[],ue=[];for(let ve in D)D[ve].id&&te.includes(D[ve].id)&&S.push(new er(j,D,`all the sprites' ids must be unique, but ${D[ve].id} is duplicated`)),te.push(D[ve].id),D[ve].url&&ue.includes(D[ve].url)&&S.push(new er(j,D,`all the sprites' URLs must be unique, but ${D[ve].url} is duplicated`)),ue.push(D[ve].url),S=S.concat(xu({key:`${j}[${ve}]`,value:D[ve],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:R.validateSpec}));return S}return Wu({key:j,value:D})}let nc={"*":()=>[],array:Lh,boolean:function(R){let S=R.value,D=R.key,j=ds(S);return j!=="boolean"?[new er(D,S,`boolean expected, ${j} found`)]:[]},number:Is,color:function(R){let S=R.key,D=R.value,j=ds(D);return j!=="string"?[new er(S,D,`color expected, ${j} found`)]:Zt.parse(String(D))?[]:[new er(S,D,`color expected, "${D}" found`)]},constants:sh,enum:ju,filter:Vf,function:Pf,layer:Ih,object:xu,source:gc,light:hl,sky:iu,terrain:mc,projection:function(R){let S=R.value,D=R.styleSpec,j=D.projection,te=R.style,ue=ds(S);if(S===void 0)return[];if(ue!=="object")return[new er("projection",S,`object expected, ${ue} found`)];let ve=[];for(let De in S)ve=ve.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ve},string:Wu,formatted:function(R){return Wu(R).length===0?[]:Ic(R)},resolvedImage:function(R){return Wu(R).length===0?[]:Ic(R)},padding:function(R){let S=R.key,D=R.value;if(ds(D)==="array"){if(D.length<1||D.length>4)return[new er(S,D,`padding requires 1 to 4 values; ${D.length} values found`)];let j={type:"number"},te=[];for(let ue=0;ue[]}})),R.constants&&(D=D.concat(sh({key:"constants",value:R.constants,style:R,styleSpec:S,validateSpec:gf}))),vr(D)}function wr(R){return function(S){return R($Q(JQ({},S),{validateSpec:gf}))}}function vr(R){return[].concat(R).sort((S,D)=>S.line-D.line)}function Ur(R){return function(...S){return vr(R.apply(this,S))}}Bt.source=Ur(wr(gc)),Bt.sprite=Ur(wr(Yc)),Bt.glyphs=Ur(wr(gt)),Bt.light=Ur(wr(hl)),Bt.sky=Ur(wr(iu)),Bt.terrain=Ur(wr(mc)),Bt.layer=Ur(wr(Ih)),Bt.filter=Ur(wr(Vf)),Bt.paintProperty=Ur(wr(Ph)),Bt.layoutProperty=Ur(wr(Dl));let fi=Bt,xi=fi.light,Fi=fi.sky,Xi=fi.paintProperty,hn=fi.layoutProperty;function Ti(R,S){let D=!1;if(S&&S.length)for(let j of S)R.fire(new me(new Error(j.message))),D=!0;return D}class qi{constructor(S,D,j){let te=this.cells=[];if(S instanceof ArrayBuffer){this.arrayBuffer=S;let ve=new Int32Array(this.arrayBuffer);S=ve[0],this.d=(D=ve[1])+2*(j=ve[2]);for(let Ze=0;Ze=Ft[Tr+0]&&te>=Ft[Tr+1])?(De[sr]=!0,ve.push(Tt[sr])):De[sr]=!1}}}}_forEachCell(S,D,j,te,ue,ve,De,Ze){let at=this._convertToCellCoord(S),Tt=this._convertToCellCoord(D),Ft=this._convertToCellCoord(j),Qt=this._convertToCellCoord(te);for(let sr=at;sr<=Ft;sr++)for(let Tr=Tt;Tr<=Qt;Tr++){let Pr=this.d*Tr+sr;if((!Ze||Ze(this._convertFromCellCoord(sr),this._convertFromCellCoord(Tr),this._convertFromCellCoord(sr+1),this._convertFromCellCoord(Tr+1)))&&ue.call(this,S,D,j,te,Pr,ve,De,Ze))return}}_convertFromCellCoord(S){return(S-this.padding)/this.scale}_convertToCellCoord(S){return Math.max(0,Math.min(this.d-1,Math.floor(S*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let S=this.cells,D=3+this.cells.length+1+1,j=0;for(let ve=0;ve=0)continue;let ve=R[ue];te[ue]=Ii[D].shallow.indexOf(ue)>=0?ve:Ea(ve,S)}R instanceof Error&&(te.message=R.message)}if(te.$name)throw new Error("$name property is reserved for worker serialization logic.");return D!=="Object"&&(te.$name=D),te}function qa(R){if(Ta(R))return R;if(Array.isArray(R))return R.map(qa);if(typeof R!="object")throw new Error("can't deserialize object of type "+typeof R);let S=Ma(R)||"Object";if(!Ii[S])throw new Error(`can't deserialize unregistered class ${S}`);let{klass:D}=Ii[S];if(!D)throw new Error(`can't deserialize unregistered class ${S}`);if(D.deserialize)return D.deserialize(R);let j=Object.create(D.prototype);for(let te of Object.keys(R)){if(te==="$name")continue;let ue=R[te];j[te]=Ii[S].shallow.indexOf(te)>=0?ue:qa(ue)}return j}class Cn{constructor(){this.first=!0}update(S,D){let j=Math.floor(S);return this.first?(this.first=!1,this.lastIntegerZoom=j,this.lastIntegerZoomTime=0,this.lastZoom=S,this.lastFloorZoom=j,!0):(this.lastFloorZoom>j?(this.lastIntegerZoom=j+1,this.lastIntegerZoomTime=D):this.lastFloorZoomR>=128&&R<=255,"Hangul Jamo":R=>R>=4352&&R<=4607,Khmer:R=>R>=6016&&R<=6143,"General Punctuation":R=>R>=8192&&R<=8303,"Letterlike Symbols":R=>R>=8448&&R<=8527,"Number Forms":R=>R>=8528&&R<=8591,"Miscellaneous Technical":R=>R>=8960&&R<=9215,"Control Pictures":R=>R>=9216&&R<=9279,"Optical Character Recognition":R=>R>=9280&&R<=9311,"Enclosed Alphanumerics":R=>R>=9312&&R<=9471,"Geometric Shapes":R=>R>=9632&&R<=9727,"Miscellaneous Symbols":R=>R>=9728&&R<=9983,"Miscellaneous Symbols and Arrows":R=>R>=11008&&R<=11263,"Ideographic Description Characters":R=>R>=12272&&R<=12287,"CJK Symbols and Punctuation":R=>R>=12288&&R<=12351,Katakana:R=>R>=12448&&R<=12543,Kanbun:R=>R>=12688&&R<=12703,"CJK Strokes":R=>R>=12736&&R<=12783,"Enclosed CJK Letters and Months":R=>R>=12800&&R<=13055,"CJK Compatibility":R=>R>=13056&&R<=13311,"Yijing Hexagram Symbols":R=>R>=19904&&R<=19967,"Private Use Area":R=>R>=57344&&R<=63743,"Vertical Forms":R=>R>=65040&&R<=65055,"CJK Compatibility Forms":R=>R>=65072&&R<=65103,"Small Form Variants":R=>R>=65104&&R<=65135,"Halfwidth and Fullwidth Forms":R=>R>=65280&&R<=65519};function Ua(R){for(let S of R)if(Bo(S.charCodeAt(0)))return!0;return!1}function mo(R){for(let S of R)if(!Qo(S.charCodeAt(0)))return!1;return!0}function Xo(R){let S=R.map(D=>{try{return new RegExp(`\\p{sc=${D}}`,"u").source}catch(j){return null}}).filter(D=>D);return new RegExp(S.join("|"),"u")}let Ts=Xo(["Arab","Dupl","Mong","Ougr","Syrc"]);function Qo(R){return!Ts.test(String.fromCodePoint(R))}let ys=Xo(["Bopo","Hani","Hira","Kana","Kits","Nshu","Tang","Yiii"]);function Bo(R){return!(R!==746&&R!==747&&(R<4352||!(sn["CJK Compatibility Forms"](R)&&!(R>=65097&&R<=65103)||sn["CJK Compatibility"](R)||sn["CJK Strokes"](R)||!(!sn["CJK Symbols and Punctuation"](R)||R>=12296&&R<=12305||R>=12308&&R<=12319||R===12336)||sn["Enclosed CJK Letters and Months"](R)||sn["Ideographic Description Characters"](R)||sn.Kanbun(R)||sn.Katakana(R)&&R!==12540||!(!sn["Halfwidth and Fullwidth Forms"](R)||R===65288||R===65289||R===65293||R>=65306&&R<=65310||R===65339||R===65341||R===65343||R>=65371&&R<=65503||R===65507||R>=65512&&R<=65519)||!(!sn["Small Form Variants"](R)||R>=65112&&R<=65118||R>=65123&&R<=65126)||sn["Vertical Forms"](R)||sn["Yijing Hexagram Symbols"](R)||new RegExp("\\p{sc=Cans}","u").test(String.fromCodePoint(R))||new RegExp("\\p{sc=Hang}","u").test(String.fromCodePoint(R))||ys.test(String.fromCodePoint(R)))))}function yl(R){return!(Bo(R)||function(S){return!!(sn["Latin-1 Supplement"](S)&&(S===167||S===169||S===174||S===177||S===188||S===189||S===190||S===215||S===247)||sn["General Punctuation"](S)&&(S===8214||S===8224||S===8225||S===8240||S===8241||S===8251||S===8252||S===8258||S===8263||S===8264||S===8265||S===8273)||sn["Letterlike Symbols"](S)||sn["Number Forms"](S)||sn["Miscellaneous Technical"](S)&&(S>=8960&&S<=8967||S>=8972&&S<=8991||S>=8996&&S<=9e3||S===9003||S>=9085&&S<=9114||S>=9150&&S<=9165||S===9167||S>=9169&&S<=9179||S>=9186&&S<=9215)||sn["Control Pictures"](S)&&S!==9251||sn["Optical Character Recognition"](S)||sn["Enclosed Alphanumerics"](S)||sn["Geometric Shapes"](S)||sn["Miscellaneous Symbols"](S)&&!(S>=9754&&S<=9759)||sn["Miscellaneous Symbols and Arrows"](S)&&(S>=11026&&S<=11055||S>=11088&&S<=11097||S>=11192&&S<=11243)||sn["CJK Symbols and Punctuation"](S)||sn.Katakana(S)||sn["Private Use Area"](S)||sn["CJK Compatibility Forms"](S)||sn["Small Form Variants"](S)||sn["Halfwidth and Fullwidth Forms"](S)||S===8734||S===8756||S===8757||S>=9984&&S<=10087||S>=10102&&S<=10131||S===65532||S===65533)}(R))}let Gs=Xo(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function Rs(R){return Gs.test(String.fromCodePoint(R))}function ia(R,S){return!(!S&&Rs(R)||R>=2304&&R<=3583||R>=3840&&R<=4255||sn.Khmer(R))}function Ka(R){for(let S of R)if(Rs(S.charCodeAt(0)))return!0;return!1}let vs=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(R){this.pluginStatus=R.pluginStatus,this.pluginURL=R.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(R){this.applyArabicShaping=R.applyArabicShaping,this.processBidirectionalText=R.processBidirectionalText,this.processStyledBidirectionalText=R.processStyledBidirectionalText}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class Ko{constructor(S,D){this.zoom=S,D?(this.now=D.now,this.fadeDuration=D.fadeDuration,this.zoomHistory=D.zoomHistory,this.transition=D.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Cn,this.transition={})}isSupportedScript(S){return function(D,j){for(let te of D)if(!ia(te.charCodeAt(0),j))return!1;return!0}(S,vs.getRTLTextPluginStatus()==="loaded")}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let S=this.zoom,D=S-Math.floor(S),j=this.crossFadingFactor();return S>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:D+(1-D)*j}:{fromScale:.5,toScale:1,t:1-(1-j)*D}}}class nu{constructor(S,D){this.property=S,this.value=D,this.expression=function(j,te){if(Ch(j))return new Qs(j,te);if(Lc(j)){let ue=yu(j,te);if(ue.result==="error")throw new Error(ue.value.map(ve=>`${ve.key}: ${ve.message}`).join(", "));return ue.value}{let ue=j;return te.type==="color"&&typeof j=="string"?ue=Zt.parse(j):te.type!=="padding"||typeof j!="number"&&!Array.isArray(j)?te.type==="variableAnchorOffsetCollection"&&Array.isArray(j)&&(ue=Si.parse(j)):ue=Vr.parse(j),{kind:"constant",evaluate:()=>ue}}}(D===void 0?S.specification.default:D,S.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(S,D,j){return this.property.possiblyEvaluate(this,S,D,j)}}class Ru{constructor(S){this.property=S,this.value=new nu(S,void 0)}transitioned(S,D){return new mf(this.property,this.value,D,L({},S.transition,this.transition),S.now)}untransitioned(){return new mf(this.property,this.value,null,{},0)}}class ac{constructor(S){this._properties=S,this._values=Object.create(S.defaultTransitionablePropertyValues)}getValue(S){return g(this._values[S].value.value)}setValue(S,D){Object.prototype.hasOwnProperty.call(this._values,S)||(this._values[S]=new Ru(this._values[S].property)),this._values[S].value=new nu(this._values[S].property,D===null?void 0:g(D))}getTransition(S){return g(this._values[S].transition)}setTransition(S,D){Object.prototype.hasOwnProperty.call(this._values,S)||(this._values[S]=new Ru(this._values[S].property)),this._values[S].transition=g(D)||void 0}serialize(){let S={};for(let D of Object.keys(this._values)){let j=this.getValue(D);j!==void 0&&(S[D]=j);let te=this.getTransition(D);te!==void 0&&(S[`${D}-transition`]=te)}return S}transitioned(S,D){let j=new bu(this._properties);for(let te of Object.keys(this._values))j._values[te]=this._values[te].transitioned(S,D._values[te]);return j}untransitioned(){let S=new bu(this._properties);for(let D of Object.keys(this._values))S._values[D]=this._values[D].untransitioned();return S}}class mf{constructor(S,D,j,te,ue){this.property=S,this.value=D,this.begin=ue+te.delay||0,this.end=this.begin+te.duration||0,S.specification.transition&&(te.delay||te.duration)&&(this.prior=j)}possiblyEvaluate(S,D,j){let te=S.now||0,ue=this.value.possiblyEvaluate(S,D,j),ve=this.prior;if(ve){if(te>this.end)return this.prior=null,ue;if(this.value.isDataDriven())return this.prior=null,ue;if(te=1)return 1;let at=Ze*Ze,Tt=at*Ze;return 4*(Ze<.5?Tt:3*(Ze-at)+Tt-.75)}(De))}}return ue}}class bu{constructor(S){this._properties=S,this._values=Object.create(S.defaultTransitioningPropertyValues)}possiblyEvaluate(S,D,j){let te=new Dc(this._properties);for(let ue of Object.keys(this._values))te._values[ue]=this._values[ue].possiblyEvaluate(S,D,j);return te}hasTransition(){for(let S of Object.keys(this._values))if(this._values[S].prior)return!0;return!1}}class Kc{constructor(S){this._properties=S,this._values=Object.create(S.defaultPropertyValues)}hasValue(S){return this._values[S].value!==void 0}getValue(S){return g(this._values[S].value)}setValue(S,D){this._values[S]=new nu(this._values[S].property,D===null?void 0:g(D))}serialize(){let S={};for(let D of Object.keys(this._values)){let j=this.getValue(D);j!==void 0&&(S[D]=j)}return S}possiblyEvaluate(S,D,j){let te=new Dc(this._properties);for(let ue of Object.keys(this._values))te._values[ue]=this._values[ue].possiblyEvaluate(S,D,j);return te}}class Du{constructor(S,D,j){this.property=S,this.value=D,this.parameters=j}isConstant(){return this.value.kind==="constant"}constantOr(S){return this.value.kind==="constant"?this.value.value:S}evaluate(S,D,j,te){return this.property.evaluate(this.value,this.parameters,S,D,j,te)}}class Dc{constructor(S){this._properties=S,this._values=Object.create(S.defaultPossiblyEvaluatedValues)}get(S){return this._values[S]}}class Da{constructor(S){this.specification=S}possiblyEvaluate(S,D){if(S.isDataDriven())throw new Error("Value should not be data driven");return S.expression.evaluate(D)}interpolate(S,D,j){let te=Mo[this.specification.type];return te?te(S,D,j):S}}class eo{constructor(S,D){this.specification=S,this.overrides=D}possiblyEvaluate(S,D,j,te){return new Du(this,S.expression.kind==="constant"||S.expression.kind==="camera"?{kind:"constant",value:S.expression.evaluate(D,null,{},j,te)}:S.expression,D)}interpolate(S,D,j){if(S.value.kind!=="constant"||D.value.kind!=="constant")return S;if(S.value.value===void 0||D.value.value===void 0)return new Du(this,{kind:"constant",value:void 0},S.parameters);let te=Mo[this.specification.type];if(te){let ue=te(S.value.value,D.value.value,j);return new Du(this,{kind:"constant",value:ue},S.parameters)}return S}evaluate(S,D,j,te,ue,ve){return S.kind==="constant"?S.value:S.evaluate(D,j,te,ue,ve)}}class Jc extends eo{possiblyEvaluate(S,D,j,te){if(S.value===void 0)return new Du(this,{kind:"constant",value:void 0},D);if(S.expression.kind==="constant"){let ue=S.expression.evaluate(D,null,{},j,te),ve=S.property.specification.type==="resolvedImage"&&typeof ue!="string"?ue.name:ue,De=this._calculate(ve,ve,ve,D);return new Du(this,{kind:"constant",value:De},D)}if(S.expression.kind==="camera"){let ue=this._calculate(S.expression.evaluate({zoom:D.zoom-1}),S.expression.evaluate({zoom:D.zoom}),S.expression.evaluate({zoom:D.zoom+1}),D);return new Du(this,{kind:"constant",value:ue},D)}return new Du(this,S.expression,D)}evaluate(S,D,j,te,ue,ve){if(S.kind==="source"){let De=S.evaluate(D,j,te,ue,ve);return this._calculate(De,De,De,D)}return S.kind==="composite"?this._calculate(S.evaluate({zoom:Math.floor(D.zoom)-1},j,te),S.evaluate({zoom:Math.floor(D.zoom)},j,te),S.evaluate({zoom:Math.floor(D.zoom)+1},j,te),D):S.value}_calculate(S,D,j,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:S,to:D}:{from:j,to:D}}interpolate(S){return S}}class yc{constructor(S){this.specification=S}possiblyEvaluate(S,D,j,te){if(S.value!==void 0){if(S.expression.kind==="constant"){let ue=S.expression.evaluate(D,null,{},j,te);return this._calculate(ue,ue,ue,D)}return this._calculate(S.expression.evaluate(new Ko(Math.floor(D.zoom-1),D)),S.expression.evaluate(new Ko(Math.floor(D.zoom),D)),S.expression.evaluate(new Ko(Math.floor(D.zoom+1),D)),D)}}_calculate(S,D,j,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:S,to:D}:{from:j,to:D}}interpolate(S){return S}}class _c{constructor(S){this.specification=S}possiblyEvaluate(S,D,j,te){return!!S.expression.evaluate(D,null,{},j,te)}interpolate(){return!1}}class le{constructor(S){this.properties=S,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let D in S){let j=S[D];j.specification.overridable&&this.overridableProperties.push(D);let te=this.defaultPropertyValues[D]=new nu(j,void 0),ue=this.defaultTransitionablePropertyValues[D]=new Ru(j);this.defaultTransitioningPropertyValues[D]=ue.untransitioned(),this.defaultPossiblyEvaluatedValues[D]=te.possiblyEvaluate({})}}}mi("DataDrivenProperty",eo),mi("DataConstantProperty",Da),mi("CrossFadedDataDrivenProperty",Jc),mi("CrossFadedProperty",yc),mi("ColorRampProperty",_c);let w="-transition";class B extends Re{constructor(S,D){if(super(),this.id=S.id,this.type=S.type,this._featureFilter={filter:()=>!0,needGeometry:!1},S.type!=="custom"&&(this.metadata=S.metadata,this.minzoom=S.minzoom,this.maxzoom=S.maxzoom,S.type!=="background"&&(this.source=S.source,this.sourceLayer=S["source-layer"],this.filter=S.filter),D.layout&&(this._unevaluatedLayout=new Kc(D.layout)),D.paint)){this._transitionablePaint=new ac(D.paint);for(let j in S.paint)this.setPaintProperty(j,S.paint[j],{validate:!1});for(let j in S.layout)this.setLayoutProperty(j,S.layout[j],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Dc(D.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(S){return S==="visibility"?this.visibility:this._unevaluatedLayout.getValue(S)}setLayoutProperty(S,D,j={}){D!=null&&this._validate(hn,`layers.${this.id}.layout.${S}`,S,D,j)||(S!=="visibility"?this._unevaluatedLayout.setValue(S,D):this.visibility=D)}getPaintProperty(S){return S.endsWith(w)?this._transitionablePaint.getTransition(S.slice(0,-11)):this._transitionablePaint.getValue(S)}setPaintProperty(S,D,j={}){if(D!=null&&this._validate(Xi,`layers.${this.id}.paint.${S}`,S,D,j))return!1;if(S.endsWith(w))return this._transitionablePaint.setTransition(S.slice(0,-11),D||void 0),!1;{let te=this._transitionablePaint._values[S],ue=te.property.specification["property-type"]==="cross-faded-data-driven",ve=te.value.isDataDriven(),De=te.value;this._transitionablePaint.setValue(S,D),this._handleSpecialPaintPropertyUpdate(S);let Ze=this._transitionablePaint._values[S].value;return Ze.isDataDriven()||ve||ue||this._handleOverridablePaintPropertyUpdate(S,De,Ze)}}_handleSpecialPaintPropertyUpdate(S){}_handleOverridablePaintPropertyUpdate(S,D,j){return!1}isHidden(S){return!!(this.minzoom&&S=this.maxzoom)||this.visibility==="none"}updateTransitions(S){this._transitioningPaint=this._transitionablePaint.transitioned(S,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(S,D){S.getCrossfadeParameters&&(this._crossfadeParameters=S.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(S,void 0,D)),this.paint=this._transitioningPaint.possiblyEvaluate(S,void 0,D)}serialize(){let S={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(S.layout=S.layout||{},S.layout.visibility=this.visibility),M(S,(D,j)=>!(D===void 0||j==="layout"&&!Object.keys(D).length||j==="paint"&&!Object.keys(D).length))}_validate(S,D,j,te,ue={}){return(!ue||ue.validate!==!1)&&Ti(this,S.call(fi,{key:D,layerType:this.type,objectKey:j,value:te,styleSpec:ce,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let S in this.paint._values){let D=this.paint.get(S);if(D instanceof Du&&Cu(D.property.specification)&&(D.value.kind==="source"||D.value.kind==="composite")&&D.value.isStateDependent)return!0}return!1}}let Q={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class ee{constructor(S,D){this._structArray=S,this._pos1=D*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class se{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(S,D){return S._trim(),D&&(S.isTransferred=!0,D.push(S.arrayBuffer)),{length:S.length,arrayBuffer:S.arrayBuffer}}static deserialize(S){let D=Object.create(this.prototype);return D.arrayBuffer=S.arrayBuffer,D.length=S.length,D.capacity=S.arrayBuffer.byteLength/D.bytesPerElement,D._refreshViews(),D}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(S){this.reserve(S),this.length=S}reserve(S){if(S>this.capacity){this.capacity=Math.max(S,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let D=this.uint8;this._refreshViews(),D&&this.uint8.set(D)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function qe(R,S=1){let D=0,j=0;return{members:R.map(te=>{let ue=Q[te.type].BYTES_PER_ELEMENT,ve=D=je(D,Math.max(S,ue)),De=te.components||1;return j=Math.max(j,ue),D+=ue*De,{name:te.name,type:te.type,components:De,offset:ve}}),size:je(D,Math.max(j,S)),alignment:S}}function je(R,S){return Math.ceil(R/S)*S}class it extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.int16[te+0]=D,this.int16[te+1]=j,S}}it.prototype.bytesPerElement=4,mi("StructArrayLayout2i4",it);class yt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.int16[ue+0]=D,this.int16[ue+1]=j,this.int16[ue+2]=te,S}}yt.prototype.bytesPerElement=6,mi("StructArrayLayout3i6",yt);class Ot extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te){let ue=this.length;return this.resize(ue+1),this.emplace(ue,S,D,j,te)}emplace(S,D,j,te,ue){let ve=4*S;return this.int16[ve+0]=D,this.int16[ve+1]=j,this.int16[ve+2]=te,this.int16[ve+3]=ue,S}}Ot.prototype.bytesPerElement=8,mi("StructArrayLayout4i8",Ot);class Nt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=6*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.int16[Ze+2]=te,this.int16[Ze+3]=ue,this.int16[Ze+4]=ve,this.int16[Ze+5]=De,S}}Nt.prototype.bytesPerElement=12,mi("StructArrayLayout2i4i12",Nt);class hr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=4*S,at=8*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.uint8[at+4]=te,this.uint8[at+5]=ue,this.uint8[at+6]=ve,this.uint8[at+7]=De,S}}hr.prototype.bytesPerElement=8,mi("StructArrayLayout2i4ub8",hr);class Sr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.float32[te+0]=D,this.float32[te+1]=j,S}}Sr.prototype.bytesPerElement=8,mi("StructArrayLayout2f8",Sr);class he extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=this.length;return this.resize(Ft+1),this.emplace(Ft,S,D,j,te,ue,ve,De,Ze,at,Tt)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft){let Qt=10*S;return this.uint16[Qt+0]=D,this.uint16[Qt+1]=j,this.uint16[Qt+2]=te,this.uint16[Qt+3]=ue,this.uint16[Qt+4]=ve,this.uint16[Qt+5]=De,this.uint16[Qt+6]=Ze,this.uint16[Qt+7]=at,this.uint16[Qt+8]=Tt,this.uint16[Qt+9]=Ft,S}}he.prototype.bytesPerElement=20,mi("StructArrayLayout10ui20",he);class be extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt){let sr=this.length;return this.resize(sr+1),this.emplace(sr,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr){let Tr=12*S;return this.int16[Tr+0]=D,this.int16[Tr+1]=j,this.int16[Tr+2]=te,this.int16[Tr+3]=ue,this.uint16[Tr+4]=ve,this.uint16[Tr+5]=De,this.uint16[Tr+6]=Ze,this.uint16[Tr+7]=at,this.int16[Tr+8]=Tt,this.int16[Tr+9]=Ft,this.int16[Tr+10]=Qt,this.int16[Tr+11]=sr,S}}be.prototype.bytesPerElement=24,mi("StructArrayLayout4i4ui4i24",be);class Pe extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.float32[ue+0]=D,this.float32[ue+1]=j,this.float32[ue+2]=te,S}}Pe.prototype.bytesPerElement=12,mi("StructArrayLayout3f12",Pe);class Oe extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.uint32[1*S+0]=D,S}}Oe.prototype.bytesPerElement=4,mi("StructArrayLayout1ul4",Oe);class Je extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at){let Tt=this.length;return this.resize(Tt+1),this.emplace(Tt,S,D,j,te,ue,ve,De,Ze,at)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=10*S,Qt=5*S;return this.int16[Ft+0]=D,this.int16[Ft+1]=j,this.int16[Ft+2]=te,this.int16[Ft+3]=ue,this.int16[Ft+4]=ve,this.int16[Ft+5]=De,this.uint32[Qt+3]=Ze,this.uint16[Ft+8]=at,this.uint16[Ft+9]=Tt,S}}Je.prototype.bytesPerElement=20,mi("StructArrayLayout6i1ul2ui20",Je);class He extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=6*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.int16[Ze+2]=te,this.int16[Ze+3]=ue,this.int16[Ze+4]=ve,this.int16[Ze+5]=De,S}}He.prototype.bytesPerElement=12,mi("StructArrayLayout2i2i2i12",He);class et extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue){let ve=this.length;return this.resize(ve+1),this.emplace(ve,S,D,j,te,ue)}emplace(S,D,j,te,ue,ve){let De=4*S,Ze=8*S;return this.float32[De+0]=D,this.float32[De+1]=j,this.float32[De+2]=te,this.int16[Ze+6]=ue,this.int16[Ze+7]=ve,S}}et.prototype.bytesPerElement=16,mi("StructArrayLayout2f1f2i16",et);class Mt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=16*S,at=4*S,Tt=8*S;return this.uint8[Ze+0]=D,this.uint8[Ze+1]=j,this.float32[at+1]=te,this.float32[at+2]=ue,this.int16[Tt+6]=ve,this.int16[Tt+7]=De,S}}Mt.prototype.bytesPerElement=16,mi("StructArrayLayout2ub2f2i16",Mt);class Dt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.uint16[ue+0]=D,this.uint16[ue+1]=j,this.uint16[ue+2]=te,S}}Dt.prototype.bytesPerElement=6,mi("StructArrayLayout3ui6",Dt);class Ut extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni){let Di=this.length;return this.resize(Di+1),this.emplace(Di,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di){let pi=24*S,ki=12*S,Zi=48*S;return this.int16[pi+0]=D,this.int16[pi+1]=j,this.uint16[pi+2]=te,this.uint16[pi+3]=ue,this.uint32[ki+2]=ve,this.uint32[ki+3]=De,this.uint32[ki+4]=Ze,this.uint16[pi+10]=at,this.uint16[pi+11]=Tt,this.uint16[pi+12]=Ft,this.float32[ki+7]=Qt,this.float32[ki+8]=sr,this.uint8[Zi+36]=Tr,this.uint8[Zi+37]=Pr,this.uint8[Zi+38]=$r,this.uint32[ki+10]=ni,this.int16[pi+22]=Di,S}}Ut.prototype.bytesPerElement=48,mi("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Ut);class tr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a){let Xa=this.length;return this.resize(Xa+1),this.emplace(Xa,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a,Xa){let Tn=32*S,bo=16*S;return this.int16[Tn+0]=D,this.int16[Tn+1]=j,this.int16[Tn+2]=te,this.int16[Tn+3]=ue,this.int16[Tn+4]=ve,this.int16[Tn+5]=De,this.int16[Tn+6]=Ze,this.int16[Tn+7]=at,this.uint16[Tn+8]=Tt,this.uint16[Tn+9]=Ft,this.uint16[Tn+10]=Qt,this.uint16[Tn+11]=sr,this.uint16[Tn+12]=Tr,this.uint16[Tn+13]=Pr,this.uint16[Tn+14]=$r,this.uint16[Tn+15]=ni,this.uint16[Tn+16]=Di,this.uint16[Tn+17]=pi,this.uint16[Tn+18]=ki,this.uint16[Tn+19]=Zi,this.uint16[Tn+20]=ta,this.uint16[Tn+21]=Va,this.uint16[Tn+22]=Io,this.uint32[bo+12]=La,this.float32[bo+13]=Hn,this.float32[bo+14]=lo,this.uint16[Tn+30]=$a,this.uint16[Tn+31]=Xa,S}}tr.prototype.bytesPerElement=64,mi("StructArrayLayout8i15ui1ul2f2ui64",tr);class mr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.float32[1*S+0]=D,S}}mr.prototype.bytesPerElement=4,mi("StructArrayLayout1f4",mr);class Rr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.uint16[6*S+0]=D,this.float32[ue+1]=j,this.float32[ue+2]=te,S}}Rr.prototype.bytesPerElement=12,mi("StructArrayLayout1ui2f12",Rr);class zr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=4*S;return this.uint32[2*S+0]=D,this.uint16[ue+2]=j,this.uint16[ue+3]=te,S}}zr.prototype.bytesPerElement=8,mi("StructArrayLayout1ul2ui8",zr);class Xr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.uint16[te+0]=D,this.uint16[te+1]=j,S}}Xr.prototype.bytesPerElement=4,mi("StructArrayLayout2ui4",Xr);class di extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.uint16[1*S+0]=D,S}}di.prototype.bytesPerElement=2,mi("StructArrayLayout1ui2",di);class Li extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te){let ue=this.length;return this.resize(ue+1),this.emplace(ue,S,D,j,te)}emplace(S,D,j,te,ue){let ve=4*S;return this.float32[ve+0]=D,this.float32[ve+1]=j,this.float32[ve+2]=te,this.float32[ve+3]=ue,S}}Li.prototype.bytesPerElement=16,mi("StructArrayLayout4f16",Li);class Ci extends ee{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new u(this.anchorPointX,this.anchorPointY)}}Ci.prototype.size=20;class Qi extends Je{get(S){return new Ci(this,S)}}mi("CollisionBoxArray",Qi);class Mn extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(S){this._structArray.uint8[this._pos1+37]=S}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(S){this._structArray.uint8[this._pos1+38]=S}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(S){this._structArray.uint32[this._pos4+10]=S}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Mn.prototype.size=48;class pa extends Ut{get(S){return new Mn(this,S)}}mi("PlacedSymbolArray",pa);class ea extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(S){this._structArray.uint32[this._pos4+12]=S}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}ea.prototype.size=64;class Ga extends tr{get(S){return new ea(this,S)}}mi("SymbolInstanceArray",Ga);class To extends mr{getoffsetX(S){return this.float32[1*S+0]}}mi("GlyphOffsetArray",To);class Wa extends yt{getx(S){return this.int16[3*S+0]}gety(S){return this.int16[3*S+1]}gettileUnitDistanceFromAnchor(S){return this.int16[3*S+2]}}mi("SymbolLineVertexArray",Wa);class co extends ee{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}co.prototype.size=12;class Ro extends Rr{get(S){return new co(this,S)}}mi("TextAnchorOffsetArray",Ro);class Ds extends ee{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}Ds.prototype.size=8;class As extends zr{get(S){return new Ds(this,S)}}mi("FeatureIndexArray",As);class yo extends it{}class po extends it{}class _l extends it{}class Hl extends Nt{}class Zu extends hr{}class cu extends Sr{}class el extends he{}class au extends be{}class zc extends Pe{}class zl extends Oe{}class Fl extends He{}class Z extends Mt{}class oe extends Dt{}class we extends Xr{}let Be=qe([{name:"a_pos",components:2,type:"Int16"}],4),{members:Ue}=Be;class We{constructor(S=[]){this.segments=S}prepareSegment(S,D,j,te){let ue=this.segments[this.segments.length-1];return S>We.MAX_VERTEX_ARRAY_LENGTH&&T(`Max vertices per segment is ${We.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${S}`),(!ue||ue.vertexLength+S>We.MAX_VERTEX_ARRAY_LENGTH||ue.sortKey!==te)&&(ue={vertexOffset:D.length,primitiveOffset:j.length,vertexLength:0,primitiveLength:0},te!==void 0&&(ue.sortKey=te),this.segments.push(ue)),ue}get(){return this.segments}destroy(){for(let S of this.segments)for(let D in S.vaos)S.vaos[D].destroy()}static simpleSegment(S,D,j,te){return new We([{vertexOffset:S,primitiveOffset:D,vertexLength:j,primitiveLength:te,vaos:{},sortKey:0}])}}function wt(R,S){return 256*(R=k(Math.floor(R),0,255))+k(Math.floor(S),0,255)}We.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,mi("SegmentVector",We);let tt=qe([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var zt={exports:{}},or={exports:{}};or.exports=function(R,S){var D,j,te,ue,ve,De,Ze,at;for(j=R.length-(D=3&R.length),te=S,ve=3432918353,De=461845907,at=0;at>>16)*ve&65535)<<16)&4294967295)<<15|Ze>>>17))*De+(((Ze>>>16)*De&65535)<<16)&4294967295)<<13|te>>>19))+((5*(te>>>16)&65535)<<16)&4294967295))+((58964+(ue>>>16)&65535)<<16);switch(Ze=0,D){case 3:Ze^=(255&R.charCodeAt(at+2))<<16;case 2:Ze^=(255&R.charCodeAt(at+1))<<8;case 1:te^=Ze=(65535&(Ze=(Ze=(65535&(Ze^=255&R.charCodeAt(at)))*ve+(((Ze>>>16)*ve&65535)<<16)&4294967295)<<15|Ze>>>17))*De+(((Ze>>>16)*De&65535)<<16)&4294967295}return te^=R.length,te=2246822507*(65535&(te^=te>>>16))+((2246822507*(te>>>16)&65535)<<16)&4294967295,te=3266489909*(65535&(te^=te>>>13))+((3266489909*(te>>>16)&65535)<<16)&4294967295,(te^=te>>>16)>>>0};var lr=or.exports,Dr={exports:{}};Dr.exports=function(R,S){for(var D,j=R.length,te=S^j,ue=0;j>=4;)D=1540483477*(65535&(D=255&R.charCodeAt(ue)|(255&R.charCodeAt(++ue))<<8|(255&R.charCodeAt(++ue))<<16|(255&R.charCodeAt(++ue))<<24))+((1540483477*(D>>>16)&65535)<<16),te=1540483477*(65535&te)+((1540483477*(te>>>16)&65535)<<16)^(D=1540483477*(65535&(D^=D>>>24))+((1540483477*(D>>>16)&65535)<<16)),j-=4,++ue;switch(j){case 3:te^=(255&R.charCodeAt(ue+2))<<16;case 2:te^=(255&R.charCodeAt(ue+1))<<8;case 1:te=1540483477*(65535&(te^=255&R.charCodeAt(ue)))+((1540483477*(te>>>16)&65535)<<16)}return te=1540483477*(65535&(te^=te>>>13))+((1540483477*(te>>>16)&65535)<<16),(te^=te>>>15)>>>0};var Ir=lr,oi=Dr.exports;zt.exports=Ir,zt.exports.murmur3=Ir,zt.exports.murmur2=oi;var ui=o(zt.exports);class qr{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(S,D,j,te){this.ids.push(Kr(S)),this.positions.push(D,j,te)}getPositions(S){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let D=Kr(S),j=0,te=this.ids.length-1;for(;j>1;this.ids[ve]>=D?te=ve:j=ve+1}let ue=[];for(;this.ids[j]===D;)ue.push({index:this.positions[3*j],start:this.positions[3*j+1],end:this.positions[3*j+2]}),j++;return ue}static serialize(S,D){let j=new Float64Array(S.ids),te=new Uint32Array(S.positions);return ii(j,te,0,j.length-1),D&&D.push(j.buffer,te.buffer),{ids:j,positions:te}}static deserialize(S){let D=new qr;return D.ids=S.ids,D.positions=S.positions,D.indexed=!0,D}}function Kr(R){let S=+R;return!isNaN(S)&&S<=Number.MAX_SAFE_INTEGER?S:ui(String(R))}function ii(R,S,D,j){for(;D>1],ue=D-1,ve=j+1;for(;;){do ue++;while(R[ue]te);if(ue>=ve)break;vi(R,ue,ve),vi(S,3*ue,3*ve),vi(S,3*ue+1,3*ve+1),vi(S,3*ue+2,3*ve+2)}ve-D`u_${te}`),this.type=j}setUniform(S,D,j){S.set(j.constantOr(this.value))}getBinding(S,D,j){return this.type==="color"?new dn(S,D):new Jr(S,D)}}class ya{constructor(S,D){this.uniformNames=D.map(j=>`u_${j}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(S,D){this.pixelRatioFrom=D.pixelRatio,this.pixelRatioTo=S.pixelRatio,this.patternFrom=D.tlbr,this.patternTo=S.tlbr}setUniform(S,D,j,te){let ue=te==="u_pattern_to"?this.patternTo:te==="u_pattern_from"?this.patternFrom:te==="u_pixel_ratio_to"?this.pixelRatioTo:te==="u_pixel_ratio_from"?this.pixelRatioFrom:null;ue&&S.set(ue)}getBinding(S,D,j){return j.substr(0,9)==="u_pattern"?new un(S,D):new Jr(S,D)}}class so{constructor(S,D,j,te){this.expression=S,this.type=j,this.maxValue=0,this.paintVertexAttributes=D.map(ue=>({name:`a_${ue}`,type:"Float32",components:j==="color"?2:1,offset:0})),this.paintVertexArray=new te}populatePaintArray(S,D,j,te,ue){let ve=this.paintVertexArray.length,De=this.expression.evaluate(new Ko(0),D,{},te,[],ue);this.paintVertexArray.resize(S),this._setPaintValue(ve,S,De)}updatePaintArray(S,D,j,te){let ue=this.expression.evaluate({zoom:0},j,te);this._setPaintValue(S,D,ue)}_setPaintValue(S,D,j){if(this.type==="color"){let te=Nn(j);for(let ue=S;ue`u_${De}_t`),this.type=j,this.useIntegerZoom=te,this.zoom=ue,this.maxValue=0,this.paintVertexAttributes=D.map(De=>({name:`a_${De}`,type:"Float32",components:j==="color"?4:2,offset:0})),this.paintVertexArray=new ve}populatePaintArray(S,D,j,te,ue){let ve=this.expression.evaluate(new Ko(this.zoom),D,{},te,[],ue),De=this.expression.evaluate(new Ko(this.zoom+1),D,{},te,[],ue),Ze=this.paintVertexArray.length;this.paintVertexArray.resize(S),this._setPaintValue(Ze,S,ve,De)}updatePaintArray(S,D,j,te){let ue=this.expression.evaluate({zoom:this.zoom},j,te),ve=this.expression.evaluate({zoom:this.zoom+1},j,te);this._setPaintValue(S,D,ue,ve)}_setPaintValue(S,D,j,te){if(this.type==="color"){let ue=Nn(j),ve=Nn(te);for(let De=S;De`#define HAS_UNIFORM_${te}`))}return S}getBinderAttributes(){let S=[];for(let D in this.binders){let j=this.binders[D];if(j instanceof so||j instanceof wa)for(let te=0;te!0){this.programConfigurations={};for(let te of S)this.programConfigurations[te.id]=new Ss(te,D,j);this.needsUpload=!1,this._featureMap=new qr,this._bufferOffset=0}populatePaintArrays(S,D,j,te,ue,ve){for(let De in this.programConfigurations)this.programConfigurations[De].populatePaintArrays(S,D,te,ue,ve);D.id!==void 0&&this._featureMap.add(D.id,j,this._bufferOffset,S),this._bufferOffset=S,this.needsUpload=!0}updatePaintArrays(S,D,j,te){for(let ue of j)this.needsUpload=this.programConfigurations[ue.id].updatePaintArrays(S,this._featureMap,D,ue,te)||this.needsUpload}get(S){return this.programConfigurations[S]}upload(S){if(this.needsUpload){for(let D in this.programConfigurations)this.programConfigurations[D].upload(S);this.needsUpload=!1}}destroy(){for(let S in this.programConfigurations)this.programConfigurations[S].destroy()}}function Ns(R,S){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[R]||[R.replace(`${S}-`,"").replace(/-/g,"_")]}function pn(R,S,D){let j={color:{source:Sr,composite:Li},number:{source:mr,composite:Sr}},te=function(ue){return{"line-pattern":{source:el,composite:el},"fill-pattern":{source:el,composite:el},"fill-extrusion-pattern":{source:el,composite:el}}[ue]}(R);return te&&te[D]||j[S][D]}mi("ConstantBinder",ga),mi("CrossFadedConstantBinder",ya),mi("SourceExpressionBinder",so),mi("CrossFadedCompositeBinder",io),mi("CompositeExpressionBinder",wa),mi("ProgramConfiguration",Ss,{omit:["_buffers"]}),mi("ProgramConfigurationSet",_s);let za=8192,Lo=Math.pow(2,14)-1,Fo=-Lo-1;function js(R){let S=za/R.extent,D=R.loadGeometry();for(let j=0;jve.x+1||Zeve.y+1)&&T("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return D}function xl(R,S){return{type:R.type,id:R.id,properties:R.properties,geometry:S?js(R):[]}}function fu(R,S,D,j,te){R.emplaceBack(2*S+(j+1)/2,2*D+(te+1)/2)}class dl{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new po,this.indexArray=new oe,this.segments=new We,this.programConfigurations=new _s(S.layers,S.zoom),this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){let te=this.layers[0],ue=[],ve=null,De=!1;te.type==="circle"&&(ve=te.layout.get("circle-sort-key"),De=!ve.isConstant());for(let{feature:Ze,id:at,index:Tt,sourceLayerIndex:Ft}of S){let Qt=this.layers[0]._featureFilter.needGeometry,sr=xl(Ze,Qt);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),sr,j))continue;let Tr=De?ve.evaluate(sr,{},j):void 0,Pr={id:at,properties:Ze.properties,type:Ze.type,sourceLayerIndex:Ft,index:Tt,geometry:Qt?sr.geometry:js(Ze),patterns:{},sortKey:Tr};ue.push(Pr)}De&&ue.sort((Ze,at)=>Ze.sortKey-at.sortKey);for(let Ze of ue){let{geometry:at,index:Tt,sourceLayerIndex:Ft}=Ze,Qt=S[Tt].feature;this.addFeature(Ze,at,Tt,j),D.featureIndex.insert(Qt,at,Tt,Ft,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Ue),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(S,D,j,te){for(let ue of D)for(let ve of ue){let De=ve.x,Ze=ve.y;if(De<0||De>=za||Ze<0||Ze>=za)continue;let at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,S.sortKey),Tt=at.vertexLength;fu(this.layoutVertexArray,De,Ze,-1,-1),fu(this.layoutVertexArray,De,Ze,1,-1),fu(this.layoutVertexArray,De,Ze,1,1),fu(this.layoutVertexArray,De,Ze,-1,1),this.indexArray.emplaceBack(Tt,Tt+1,Tt+2),this.indexArray.emplaceBack(Tt,Tt+3,Tt+2),at.vertexLength+=4,at.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,j,{},te)}}function xc(R,S){for(let D=0;D1){if(wi(R,S))return!0;for(let j=0;j1?D:D.sub(S)._mult(te)._add(S))}function cn(R,S){let D,j,te,ue=!1;for(let ve=0;veS.y!=te.y>S.y&&S.x<(te.x-j.x)*(S.y-j.y)/(te.y-j.y)+j.x&&(ue=!ue)}return ue}function On(R,S){let D=!1;for(let j=0,te=R.length-1;jS.y!=ve.y>S.y&&S.x<(ve.x-ue.x)*(S.y-ue.y)/(ve.y-ue.y)+ue.x&&(D=!D)}return D}function Bn(R,S,D){let j=D[0],te=D[2];if(R.xte.x&&S.x>te.x||R.yte.y&&S.y>te.y)return!1;let ue=F(R,S,D[0]);return ue!==F(R,S,D[1])||ue!==F(R,S,D[2])||ue!==F(R,S,D[3])}function yn(R,S,D){let j=S.paint.get(R).value;return j.kind==="constant"?j.value:D.programConfigurations.get(S.id).getMaxValue(R)}function to(R){return Math.sqrt(R[0]*R[0]+R[1]*R[1])}function Rn(R,S,D,j,te){if(!S[0]&&!S[1])return R;let ue=u.convert(S)._mult(te);D==="viewport"&&ue._rotate(-j);let ve=[];for(let De=0;Devn($r,Pr))}(at,Ze),sr=Ft?Tt*De:Tt;for(let Tr of te)for(let Pr of Tr){let $r=Ft?Pr:vn(Pr,Ze),ni=sr,Di=Za([],[Pr.x,Pr.y,0,1],Ze);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?ni*=Di[3]/ve.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(ni*=ve.cameraToCenterDistance/Di[3]),At(Qt,$r,ni))return!0}return!1}}function vn(R,S){let D=Za([],[R.x,R.y,0,1],S);return new u(D[0]/D[3],D[1]/D[3])}class Aa extends dl{}let aa;mi("HeatmapBucket",Aa,{omit:["layers"]});var Xn={get paint(){return aa=aa||new le({"heatmap-radius":new eo(ce.paint_heatmap["heatmap-radius"]),"heatmap-weight":new eo(ce.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Da(ce.paint_heatmap["heatmap-intensity"]),"heatmap-color":new _c(ce.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Da(ce.paint_heatmap["heatmap-opacity"])})}};function Vn(R,{width:S,height:D},j,te){if(te){if(te instanceof Uint8ClampedArray)te=new Uint8Array(te.buffer);else if(te.length!==S*D*j)throw new RangeError(`mismatched image size. expected: ${te.length} but got: ${S*D*j}`)}else te=new Uint8Array(S*D*j);return R.width=S,R.height=D,R.data=te,R}function ma(R,{width:S,height:D},j){if(S===R.width&&D===R.height)return;let te=Vn({},{width:S,height:D},j);ro(R,te,{x:0,y:0},{x:0,y:0},{width:Math.min(R.width,S),height:Math.min(R.height,D)},j),R.width=S,R.height=D,R.data=te.data}function ro(R,S,D,j,te,ue){if(te.width===0||te.height===0)return S;if(te.width>R.width||te.height>R.height||D.x>R.width-te.width||D.y>R.height-te.height)throw new RangeError("out of range source coordinates for image copy");if(te.width>S.width||te.height>S.height||j.x>S.width-te.width||j.y>S.height-te.height)throw new RangeError("out of range destination coordinates for image copy");let ve=R.data,De=S.data;if(ve===De)throw new Error("srcData equals dstData, so image is already copied");for(let Ze=0;Ze{S[R.evaluationKey]=Ze;let at=R.expression.evaluate(S);te.data[ve+De+0]=Math.floor(255*at.r/at.a),te.data[ve+De+1]=Math.floor(255*at.g/at.a),te.data[ve+De+2]=Math.floor(255*at.b/at.a),te.data[ve+De+3]=Math.floor(255*at.a)};if(R.clips)for(let ve=0,De=0;ve80*D){De=1/0,Ze=1/0;let Tt=-1/0,Ft=-1/0;for(let Qt=D;QtTt&&(Tt=sr),Tr>Ft&&(Ft=Tr)}at=Math.max(Tt-De,Ft-Ze),at=at!==0?32767/at:0}return yf(ue,ve,D,De,Ze,at,0),ve}function bc(R,S,D,j,te){let ue;if(te===function(ve,De,Ze,at){let Tt=0;for(let Ft=De,Qt=Ze-at;Ft0)for(let ve=S;ve=S;ve-=j)ue=Jt(ve/j|0,R[ve],R[ve+1],ue);return ue&&de(ue,ue.next)&&(vt(ue),ue=ue.next),ue}function wc(R,S){if(!R)return R;S||(S=R);let D,j=R;do if(D=!1,j.steiner||!de(j,j.next)&&pe(j.prev,j,j.next)!==0)j=j.next;else{if(vt(j),j=S=j.prev,j===j.next)break;D=!0}while(D||j!==S);return S}function yf(R,S,D,j,te,ue,ve){if(!R)return;!ve&&ue&&function(Ze,at,Tt,Ft){let Qt=Ze;do Qt.z===0&&(Qt.z=z(Qt.x,Qt.y,at,Tt,Ft)),Qt.prevZ=Qt.prev,Qt.nextZ=Qt.next,Qt=Qt.next;while(Qt!==Ze);Qt.prevZ.nextZ=null,Qt.prevZ=null,function(sr){let Tr,Pr=1;do{let $r,ni=sr;sr=null;let Di=null;for(Tr=0;ni;){Tr++;let pi=ni,ki=0;for(let ta=0;ta0||Zi>0&π)ki!==0&&(Zi===0||!pi||ni.z<=pi.z)?($r=ni,ni=ni.nextZ,ki--):($r=pi,pi=pi.nextZ,Zi--),Di?Di.nextZ=$r:sr=$r,$r.prevZ=Di,Di=$r;ni=pi}Di.nextZ=null,Pr*=2}while(Tr>1)}(Qt)}(R,j,te,ue);let De=R;for(;R.prev!==R.next;){let Ze=R.prev,at=R.next;if(ue?Fc(R,j,te,ue):Gl(R))S.push(Ze.i,R.i,at.i),vt(R),R=at.next,De=at.next;else if((R=at)===De){ve?ve===1?yf(R=ef(wc(R),S),S,D,j,te,ue,2):ve===2&&ls(R,S,D,j,te,ue):yf(wc(R),S,D,j,te,ue,1);break}}}function Gl(R){let S=R.prev,D=R,j=R.next;if(pe(S,D,j)>=0)return!1;let te=S.x,ue=D.x,ve=j.x,De=S.y,Ze=D.y,at=j.y,Tt=teue?te>ve?te:ve:ue>ve?ue:ve,sr=De>Ze?De>at?De:at:Ze>at?Ze:at,Tr=j.next;for(;Tr!==S;){if(Tr.x>=Tt&&Tr.x<=Qt&&Tr.y>=Ft&&Tr.y<=sr&&O(te,De,ue,Ze,ve,at,Tr.x,Tr.y)&&pe(Tr.prev,Tr,Tr.next)>=0)return!1;Tr=Tr.next}return!0}function Fc(R,S,D,j){let te=R.prev,ue=R,ve=R.next;if(pe(te,ue,ve)>=0)return!1;let De=te.x,Ze=ue.x,at=ve.x,Tt=te.y,Ft=ue.y,Qt=ve.y,sr=DeZe?De>at?De:at:Ze>at?Ze:at,$r=Tt>Ft?Tt>Qt?Tt:Qt:Ft>Qt?Ft:Qt,ni=z(sr,Tr,S,D,j),Di=z(Pr,$r,S,D,j),pi=R.prevZ,ki=R.nextZ;for(;pi&&pi.z>=ni&&ki&&ki.z<=Di;){if(pi.x>=sr&&pi.x<=Pr&&pi.y>=Tr&&pi.y<=$r&&pi!==te&&pi!==ve&&O(De,Tt,Ze,Ft,at,Qt,pi.x,pi.y)&&pe(pi.prev,pi,pi.next)>=0||(pi=pi.prevZ,ki.x>=sr&&ki.x<=Pr&&ki.y>=Tr&&ki.y<=$r&&ki!==te&&ki!==ve&&O(De,Tt,Ze,Ft,at,Qt,ki.x,ki.y)&&pe(ki.prev,ki,ki.next)>=0))return!1;ki=ki.nextZ}for(;pi&&pi.z>=ni;){if(pi.x>=sr&&pi.x<=Pr&&pi.y>=Tr&&pi.y<=$r&&pi!==te&&pi!==ve&&O(De,Tt,Ze,Ft,at,Qt,pi.x,pi.y)&&pe(pi.prev,pi,pi.next)>=0)return!1;pi=pi.prevZ}for(;ki&&ki.z<=Di;){if(ki.x>=sr&&ki.x<=Pr&&ki.y>=Tr&&ki.y<=$r&&ki!==te&&ki!==ve&&O(De,Tt,Ze,Ft,at,Qt,ki.x,ki.y)&&pe(ki.prev,ki,ki.next)>=0)return!1;ki=ki.nextZ}return!0}function ef(R,S){let D=R;do{let j=D.prev,te=D.next.next;!de(j,te)&&Ie(j,D,D.next,te)&&Kt(j,te)&&Kt(te,j)&&(S.push(j.i,D.i,te.i),vt(D),vt(D.next),D=R=te),D=D.next}while(D!==R);return wc(D)}function ls(R,S,D,j,te,ue){let ve=R;do{let De=ve.next.next;for(;De!==ve.prev;){if(ve.i!==De.i&&$(ve,De)){let Ze=ir(ve,De);return ve=wc(ve,ve.next),Ze=wc(Ze,Ze.next),yf(ve,S,D,j,te,ue,0),void yf(Ze,S,D,j,te,ue,0)}De=De.next}ve=ve.next}while(ve!==R)}function _f(R,S){return R.x-S.x}function ns(R,S){let D=function(te,ue){let ve=ue,De=te.x,Ze=te.y,at,Tt=-1/0;do{if(Ze<=ve.y&&Ze>=ve.next.y&&ve.next.y!==ve.y){let Pr=ve.x+(Ze-ve.y)*(ve.next.x-ve.x)/(ve.next.y-ve.y);if(Pr<=De&&Pr>Tt&&(Tt=Pr,at=ve.x=ve.x&&ve.x>=Qt&&De!==ve.x&&O(Zeat.x||ve.x===at.x&&Y(at,ve)))&&(at=ve,Tr=Pr)}ve=ve.next}while(ve!==Ft);return at}(R,S);if(!D)return S;let j=ir(D,R);return wc(j,j.next),wc(D,D.next)}function Y(R,S){return pe(R.prev,R,S.prev)<0&&pe(S.next,R,R.next)<0}function z(R,S,D,j,te){return(R=1431655765&((R=858993459&((R=252645135&((R=16711935&((R=(R-D)*te|0)|R<<8))|R<<4))|R<<2))|R<<1))|(S=1431655765&((S=858993459&((S=252645135&((S=16711935&((S=(S-j)*te|0)|S<<8))|S<<4))|S<<2))|S<<1))<<1}function K(R){let S=R,D=R;do(S.x=(R-ve)*(ue-De)&&(R-ve)*(j-De)>=(D-ve)*(S-De)&&(D-ve)*(ue-De)>=(te-ve)*(j-De)}function $(R,S){return R.next.i!==S.i&&R.prev.i!==S.i&&!function(D,j){let te=D;do{if(te.i!==D.i&&te.next.i!==D.i&&te.i!==j.i&&te.next.i!==j.i&&Ie(te,te.next,D,j))return!0;te=te.next}while(te!==D);return!1}(R,S)&&(Kt(R,S)&&Kt(S,R)&&function(D,j){let te=D,ue=!1,ve=(D.x+j.x)/2,De=(D.y+j.y)/2;do te.y>De!=te.next.y>De&&te.next.y!==te.y&&ve<(te.next.x-te.x)*(De-te.y)/(te.next.y-te.y)+te.x&&(ue=!ue),te=te.next;while(te!==D);return ue}(R,S)&&(pe(R.prev,R,S.prev)||pe(R,S.prev,S))||de(R,S)&&pe(R.prev,R,R.next)>0&&pe(S.prev,S,S.next)>0)}function pe(R,S,D){return(S.y-R.y)*(D.x-S.x)-(S.x-R.x)*(D.y-S.y)}function de(R,S){return R.x===S.x&&R.y===S.y}function Ie(R,S,D,j){let te=pt(pe(R,S,D)),ue=pt(pe(R,S,j)),ve=pt(pe(D,j,R)),De=pt(pe(D,j,S));return te!==ue&&ve!==De||!(te!==0||!$e(R,D,S))||!(ue!==0||!$e(R,j,S))||!(ve!==0||!$e(D,R,j))||!(De!==0||!$e(D,S,j))}function $e(R,S,D){return S.x<=Math.max(R.x,D.x)&&S.x>=Math.min(R.x,D.x)&&S.y<=Math.max(R.y,D.y)&&S.y>=Math.min(R.y,D.y)}function pt(R){return R>0?1:R<0?-1:0}function Kt(R,S){return pe(R.prev,R,R.next)<0?pe(R,S,R.next)>=0&&pe(R,R.prev,S)>=0:pe(R,S,R.prev)<0||pe(R,R.next,S)<0}function ir(R,S){let D=Pt(R.i,R.x,R.y),j=Pt(S.i,S.x,S.y),te=R.next,ue=S.prev;return R.next=S,S.prev=R,D.next=te,te.prev=D,j.next=D,D.prev=j,ue.next=j,j.prev=ue,j}function Jt(R,S,D,j){let te=Pt(R,S,D);return j?(te.next=j.next,te.prev=j,j.next.prev=te,j.next=te):(te.prev=te,te.next=te),te}function vt(R){R.next.prev=R.prev,R.prev.next=R.next,R.prevZ&&(R.prevZ.nextZ=R.nextZ),R.nextZ&&(R.nextZ.prevZ=R.prevZ)}function Pt(R,S,D){return{i:R,x:S,y:D,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Wt(R,S,D){let j=D.patternDependencies,te=!1;for(let ue of S){let ve=ue.paint.get(`${R}-pattern`);ve.isConstant()||(te=!0);let De=ve.constantOr(null);De&&(te=!0,j[De.to]=!0,j[De.from]=!0)}return te}function rr(R,S,D,j,te){let ue=te.patternDependencies;for(let ve of S){let De=ve.paint.get(`${R}-pattern`).value;if(De.kind!=="constant"){let Ze=De.evaluate({zoom:j-1},D,{},te.availableImages),at=De.evaluate({zoom:j},D,{},te.availableImages),Tt=De.evaluate({zoom:j+1},D,{},te.availableImages);Ze=Ze&&Ze.name?Ze.name:Ze,at=at&&at.name?at.name:at,Tt=Tt&&Tt.name?Tt.name:Tt,ue[Ze]=!0,ue[at]=!0,ue[Tt]=!0,D.patterns[ve.id]={min:Ze,mid:at,max:Tt}}}return D}class dr{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new _l,this.indexArray=new oe,this.indexArray2=new we,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.segments2=new We,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.hasPattern=Wt("fill",this.layers,D);let te=this.layers[0].layout.get("fill-sort-key"),ue=!te.isConstant(),ve=[];for(let{feature:De,id:Ze,index:at,sourceLayerIndex:Tt}of S){let Ft=this.layers[0]._featureFilter.needGeometry,Qt=xl(De,Ft);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),Qt,j))continue;let sr=ue?te.evaluate(Qt,{},j,D.availableImages):void 0,Tr={id:Ze,properties:De.properties,type:De.type,sourceLayerIndex:Tt,index:at,geometry:Ft?Qt.geometry:js(De),patterns:{},sortKey:sr};ve.push(Tr)}ue&&ve.sort((De,Ze)=>De.sortKey-Ze.sortKey);for(let De of ve){let{geometry:Ze,index:at,sourceLayerIndex:Tt}=De;if(this.hasPattern){let Ft=rr("fill",this.layers,De,this.zoom,D);this.patternFeatures.push(Ft)}else this.addFeature(De,Ze,at,j,{});D.featureIndex.insert(S[at].feature,Ze,at,Tt,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}addFeatures(S,D,j){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,D,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Qc),this.indexBuffer=S.createIndexBuffer(this.indexArray),this.indexBuffer2=S.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(S,D,j,te,ue){for(let ve of Of(D,500)){let De=0;for(let sr of ve)De+=sr.length;let Ze=this.segments.prepareSegment(De,this.layoutVertexArray,this.indexArray),at=Ze.vertexLength,Tt=[],Ft=[];for(let sr of ve){if(sr.length===0)continue;sr!==ve[0]&&Ft.push(Tt.length/2);let Tr=this.segments2.prepareSegment(sr.length,this.layoutVertexArray,this.indexArray2),Pr=Tr.vertexLength;this.layoutVertexArray.emplaceBack(sr[0].x,sr[0].y),this.indexArray2.emplaceBack(Pr+sr.length-1,Pr),Tt.push(sr[0].x),Tt.push(sr[0].y);for(let $r=1;$r>3}if(te--,j===1||j===2)ue+=R.readSVarint(),ve+=R.readSVarint(),j===1&&(S&&De.push(S),S=[]),S.push(new yi(ue,ve));else{if(j!==7)throw new Error("unknown command "+j);S&&S.push(S[0].clone())}}return S&&De.push(S),De},Ri.prototype.bbox=function(){var R=this._pbf;R.pos=this._geometry;for(var S=R.readVarint()+R.pos,D=1,j=0,te=0,ue=0,ve=1/0,De=-1/0,Ze=1/0,at=-1/0;R.pos>3}if(j--,D===1||D===2)(te+=R.readSVarint())De&&(De=te),(ue+=R.readSVarint())at&&(at=ue);else if(D!==7)throw new Error("unknown command "+D)}return[ve,Ze,De,at]},Ri.prototype.toGeoJSON=function(R,S,D){var j,te,ue=this.extent*Math.pow(2,D),ve=this.extent*R,De=this.extent*S,Ze=this.loadGeometry(),at=Ri.types[this.type];function Tt(sr){for(var Tr=0;Tr>3;te=ve===1?j.readString():ve===2?j.readFloat():ve===3?j.readDouble():ve===4?j.readVarint64():ve===5?j.readVarint():ve===6?j.readSVarint():ve===7?j.readBoolean():null}return te}(D))}bn.prototype.feature=function(R){if(R<0||R>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[R];var S=this._pbf.readVarint()+this._pbf.pos;return new qn(this._pbf,S,this.extent,this._keys,this._values)};var Gn=rn;function da(R,S,D){if(R===3){var j=new Gn(D,D.readVarint()+D.pos);j.length&&(S[j.name]=j)}}ei.VectorTile=function(R,S){this.layers=R.readFields(da,{},S)},ei.VectorTileFeature=tn,ei.VectorTileLayer=rn;let No=ei.VectorTileFeature.types,Do=Math.pow(2,13);function ps(R,S,D,j,te,ue,ve,De){R.emplaceBack(S,D,2*Math.floor(j*Do)+ve,te*Do*2,ue*Do*2,Math.round(De))}class fo{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new Hl,this.centroidVertexArray=new yo,this.indexArray=new oe,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.features=[],this.hasPattern=Wt("fill-extrusion",this.layers,D);for(let{feature:te,id:ue,index:ve,sourceLayerIndex:De}of S){let Ze=this.layers[0]._featureFilter.needGeometry,at=xl(te,Ze);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),at,j))continue;let Tt={id:ue,sourceLayerIndex:De,index:ve,geometry:Ze?at.geometry:js(te),properties:te.properties,type:te.type,patterns:{}};this.hasPattern?this.features.push(rr("fill-extrusion",this.layers,Tt,this.zoom,D)):this.addFeature(Tt,Tt.geometry,ve,j,{}),D.featureIndex.insert(te,Tt.geometry,ve,De,this.index,!0)}}addFeatures(S,D,j){for(let te of this.features){let{geometry:ue}=te;this.addFeature(te,ue,te.index,D,j)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Gr),this.centroidVertexBuffer=S.createVertexBuffer(this.centroidVertexArray,cr.members,!0),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(S,D,j,te,ue){for(let ve of Of(D,500)){let De={x:0,y:0,vertexCount:0},Ze=0;for(let Tr of ve)Ze+=Tr.length;let at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let Tr of ve){if(Tr.length===0||tl(Tr))continue;let Pr=0;for(let $r=0;$r=1){let Di=Tr[$r-1];if(!as(ni,Di)){at.vertexLength+4>We.MAX_VERTEX_ARRAY_LENGTH&&(at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let pi=ni.sub(Di)._perp()._unit(),ki=Di.dist(ni);Pr+ki>32768&&(Pr=0),ps(this.layoutVertexArray,ni.x,ni.y,pi.x,pi.y,0,0,Pr),ps(this.layoutVertexArray,ni.x,ni.y,pi.x,pi.y,0,1,Pr),De.x+=2*ni.x,De.y+=2*ni.y,De.vertexCount+=2,Pr+=ki,ps(this.layoutVertexArray,Di.x,Di.y,pi.x,pi.y,0,0,Pr),ps(this.layoutVertexArray,Di.x,Di.y,pi.x,pi.y,0,1,Pr),De.x+=2*Di.x,De.y+=2*Di.y,De.vertexCount+=2;let Zi=at.vertexLength;this.indexArray.emplaceBack(Zi,Zi+2,Zi+1),this.indexArray.emplaceBack(Zi+1,Zi+2,Zi+3),at.vertexLength+=4,at.primitiveLength+=2}}}}if(at.vertexLength+Ze>We.MAX_VERTEX_ARRAY_LENGTH&&(at=this.segments.prepareSegment(Ze,this.layoutVertexArray,this.indexArray)),No[S.type]!=="Polygon")continue;let Tt=[],Ft=[],Qt=at.vertexLength;for(let Tr of ve)if(Tr.length!==0){Tr!==ve[0]&&Ft.push(Tt.length/2);for(let Pr=0;Prza)||R.y===S.y&&(R.y<0||R.y>za)}function tl(R){return R.every(S=>S.x<0)||R.every(S=>S.x>za)||R.every(S=>S.y<0)||R.every(S=>S.y>za)}let zu;mi("FillExtrusionBucket",fo,{omit:["layers","features"]});var Mv={get paint(){return zu=zu||new le({"fill-extrusion-opacity":new Da(ce["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new eo(ce["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Da(ce["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Da(ce["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Jc(ce["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new eo(ce["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new eo(ce["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Da(ce["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Ev extends B{constructor(S){super(S,Mv)}createBucket(S){return new fo(S)}queryRadius(){return to(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(S,D,j,te,ue,ve,De,Ze){let at=Rn(S,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),ve.angle,De),Tt=this.paint.get("fill-extrusion-height").evaluate(D,j),Ft=this.paint.get("fill-extrusion-base").evaluate(D,j),Qt=function(Tr,Pr,$r,ni){let Di=[];for(let pi of Tr){let ki=[pi.x,pi.y,0,1];Za(ki,ki,Pr),Di.push(new u(ki[0]/ki[3],ki[1]/ki[3]))}return Di}(at,Ze),sr=function(Tr,Pr,$r,ni){let Di=[],pi=[],ki=ni[8]*Pr,Zi=ni[9]*Pr,ta=ni[10]*Pr,Va=ni[11]*Pr,Io=ni[8]*$r,La=ni[9]*$r,Hn=ni[10]*$r,lo=ni[11]*$r;for(let $a of Tr){let Xa=[],Tn=[];for(let bo of $a){let Ya=bo.x,Uo=bo.y,wu=ni[0]*Ya+ni[4]*Uo+ni[12],hu=ni[1]*Ya+ni[5]*Uo+ni[13],uh=ni[2]*Ya+ni[6]*Uo+ni[14],$v=ni[3]*Ya+ni[7]*Uo+ni[15],td=uh+ta,ch=$v+Va,Ud=wu+Io,Vd=hu+La,Hd=uh+Hn,rf=$v+lo,fh=new u((wu+ki)/ch,(hu+Zi)/ch);fh.z=td/ch,Xa.push(fh);let Td=new u(Ud/rf,Vd/rf);Td.z=Hd/rf,Tn.push(Td)}Di.push(Xa),pi.push(Tn)}return[Di,pi]}(te,Ft,Tt,Ze);return function(Tr,Pr,$r){let ni=1/0;Er($r,Pr)&&(ni=Yv($r,Pr[0]));for(let Di=0;DiD.id),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(D=>{this.gradients[D.id]={}}),this.layoutVertexArray=new Zu,this.layoutVertexArray2=new cu,this.indexArray=new oe,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.hasPattern=Wt("line",this.layers,D);let te=this.layers[0].layout.get("line-sort-key"),ue=!te.isConstant(),ve=[];for(let{feature:De,id:Ze,index:at,sourceLayerIndex:Tt}of S){let Ft=this.layers[0]._featureFilter.needGeometry,Qt=xl(De,Ft);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),Qt,j))continue;let sr=ue?te.evaluate(Qt,{},j):void 0,Tr={id:Ze,properties:De.properties,type:De.type,sourceLayerIndex:Tt,index:at,geometry:Ft?Qt.geometry:js(De),patterns:{},sortKey:sr};ve.push(Tr)}ue&&ve.sort((De,Ze)=>De.sortKey-Ze.sortKey);for(let De of ve){let{geometry:Ze,index:at,sourceLayerIndex:Tt}=De;if(this.hasPattern){let Ft=rr("line",this.layers,De,this.zoom,D);this.patternFeatures.push(Ft)}else this.addFeature(De,Ze,at,j,{});D.featureIndex.insert(S[at].feature,Ze,at,Tt,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}addFeatures(S,D,j){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,D,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=S.createVertexBuffer(this.layoutVertexArray2,pp)),this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,vp),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(S){if(S.properties&&Object.prototype.hasOwnProperty.call(S.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(S.properties,"mapbox_clip_end"))return{start:+S.properties.mapbox_clip_start,end:+S.properties.mapbox_clip_end}}addFeature(S,D,j,te,ue){let ve=this.layers[0].layout,De=ve.get("line-join").evaluate(S,{}),Ze=ve.get("line-cap"),at=ve.get("line-miter-limit"),Tt=ve.get("line-round-limit");this.lineClips=this.lineFeatureClips(S);for(let Ft of D)this.addLine(Ft,S,De,Ze,at,Tt);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,j,ue,te)}addLine(S,D,j,te,ue,ve){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let ni=0;ni=2&&S[Ze-1].equals(S[Ze-2]);)Ze--;let at=0;for(;at0;if(Va&&ni>at){let lo=Qt.dist(sr);if(lo>2*Tt){let $a=Qt.sub(Qt.sub(sr)._mult(Tt/lo)._round());this.updateDistance(sr,$a),this.addCurrentVertex($a,Pr,0,0,Ft),sr=$a}}let La=sr&&Tr,Hn=La?j:De?"butt":te;if(La&&Hn==="round"&&(Ziue&&(Hn="bevel"),Hn==="bevel"&&(Zi>2&&(Hn="flipbevel"),Zi100)Di=$r.mult(-1);else{let lo=Zi*Pr.add($r).mag()/Pr.sub($r).mag();Di._perp()._mult(lo*(Io?-1:1))}this.addCurrentVertex(Qt,Di,0,0,Ft),this.addCurrentVertex(Qt,Di.mult(-1),0,0,Ft)}else if(Hn==="bevel"||Hn==="fakeround"){let lo=-Math.sqrt(Zi*Zi-1),$a=Io?lo:0,Xa=Io?0:lo;if(sr&&this.addCurrentVertex(Qt,Pr,$a,Xa,Ft),Hn==="fakeround"){let Tn=Math.round(180*ta/Math.PI/20);for(let bo=1;bo2*Tt){let $a=Qt.add(Tr.sub(Qt)._mult(Tt/lo)._round());this.updateDistance(Qt,$a),this.addCurrentVertex($a,$r,0,0,Ft),Qt=$a}}}}addCurrentVertex(S,D,j,te,ue,ve=!1){let De=D.y*te-D.x,Ze=-D.y-D.x*te;this.addHalfVertex(S,D.x+D.y*j,D.y-D.x*j,ve,!1,j,ue),this.addHalfVertex(S,De,Ze,ve,!0,-te,ue),this.distance>kv/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(S,D,j,te,ue,ve))}addHalfVertex({x:S,y:D},j,te,ue,ve,De,Ze){let at=.5*(this.lineClips?this.scaledDistance*(kv-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((S<<1)+(ue?1:0),(D<<1)+(ve?1:0),Math.round(63*j)+128,Math.round(63*te)+128,1+(De===0?0:De<0?-1:1)|(63&at)<<2,at>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let Tt=Ze.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Tt),Ze.primitiveLength++),ve?this.e2=Tt:this.e1=Tt}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(S,D){this.distance+=S.dist(D),this.updateScaledDistance()}}let Cv,ny;mi("LineBucket",Kv,{omit:["layers","patternFeatures"]});var fg={get paint(){return ny=ny||new le({"line-opacity":new eo(ce.paint_line["line-opacity"]),"line-color":new eo(ce.paint_line["line-color"]),"line-translate":new Da(ce.paint_line["line-translate"]),"line-translate-anchor":new Da(ce.paint_line["line-translate-anchor"]),"line-width":new eo(ce.paint_line["line-width"]),"line-gap-width":new eo(ce.paint_line["line-gap-width"]),"line-offset":new eo(ce.paint_line["line-offset"]),"line-blur":new eo(ce.paint_line["line-blur"]),"line-dasharray":new yc(ce.paint_line["line-dasharray"]),"line-pattern":new Jc(ce.paint_line["line-pattern"]),"line-gradient":new _c(ce.paint_line["line-gradient"])})},get layout(){return Cv=Cv||new le({"line-cap":new Da(ce.layout_line["line-cap"]),"line-join":new eo(ce.layout_line["line-join"]),"line-miter-limit":new Da(ce.layout_line["line-miter-limit"]),"line-round-limit":new Da(ce.layout_line["line-round-limit"]),"line-sort-key":new eo(ce.layout_line["line-sort-key"])})}};class Hf extends eo{possiblyEvaluate(S,D){return D=new Ko(Math.floor(D.zoom),{now:D.now,fadeDuration:D.fadeDuration,zoomHistory:D.zoomHistory,transition:D.transition}),super.possiblyEvaluate(S,D)}evaluate(S,D,j,te){return D=L({},D,{zoom:Math.floor(D.zoom)}),super.evaluate(S,D,j,te)}}let hg;class ay extends B{constructor(S){super(S,fg),this.gradientVersion=0,hg||(hg=new Hf(fg.paint.properties["line-width"].specification),hg.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(S){if(S==="line-gradient"){let D=this.gradientExpression();this.stepInterpolant=!!function(j){return j._styleExpression!==void 0}(D)&&D._styleExpression.expression instanceof Ji,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(S,D){super.recalculate(S,D),this.paint._values["line-floorwidth"]=hg.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,S)}createBucket(S){return new Kv(S)}queryRadius(S){let D=S,j=Rh(yn("line-width",this,D),yn("line-gap-width",this,D)),te=yn("line-offset",this,D);return j/2+Math.abs(te)+to(this.paint.get("line-translate"))}queryIntersectsFeature(S,D,j,te,ue,ve,De){let Ze=Rn(S,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),ve.angle,De),at=De/2*Rh(this.paint.get("line-width").evaluate(D,j),this.paint.get("line-gap-width").evaluate(D,j)),Tt=this.paint.get("line-offset").evaluate(D,j);return Tt&&(te=function(Ft,Qt){let sr=[];for(let Tr=0;Tr=3){for(let $r=0;$r0?S+2*R:R}let rm=qe([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),w1=qe([{name:"a_projected_pos",components:3,type:"Float32"}],4);qe([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let T1=qe([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);qe([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let oy=qe([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),im=qe([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function nm(R,S,D){return R.sections.forEach(j=>{j.text=function(te,ue,ve){let De=ue.layout.get("text-transform").evaluate(ve,{});return De==="uppercase"?te=te.toLocaleUpperCase():De==="lowercase"&&(te=te.toLocaleLowerCase()),vs.applyArabicShaping&&(te=vs.applyArabicShaping(te)),te}(j.text,S,D)}),R}qe([{name:"triangle",components:3,type:"Uint16"}]),qe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),qe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),qe([{type:"Float32",name:"offsetX"}]),qe([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),qe([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let Fu={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var kl=24,bd=Kl,sy=function(R,S,D,j,te){var ue,ve,De=8*te-j-1,Ze=(1<>1,Tt=-7,Ft=D?te-1:0,Qt=D?-1:1,sr=R[S+Ft];for(Ft+=Qt,ue=sr&(1<<-Tt)-1,sr>>=-Tt,Tt+=De;Tt>0;ue=256*ue+R[S+Ft],Ft+=Qt,Tt-=8);for(ve=ue&(1<<-Tt)-1,ue>>=-Tt,Tt+=j;Tt>0;ve=256*ve+R[S+Ft],Ft+=Qt,Tt-=8);if(ue===0)ue=1-at;else{if(ue===Ze)return ve?NaN:1/0*(sr?-1:1);ve+=Math.pow(2,j),ue-=at}return(sr?-1:1)*ve*Math.pow(2,ue-j)},A1=function(R,S,D,j,te,ue){var ve,De,Ze,at=8*ue-te-1,Tt=(1<>1,Qt=te===23?Math.pow(2,-24)-Math.pow(2,-77):0,sr=j?0:ue-1,Tr=j?1:-1,Pr=S<0||S===0&&1/S<0?1:0;for(S=Math.abs(S),isNaN(S)||S===1/0?(De=isNaN(S)?1:0,ve=Tt):(ve=Math.floor(Math.log(S)/Math.LN2),S*(Ze=Math.pow(2,-ve))<1&&(ve--,Ze*=2),(S+=ve+Ft>=1?Qt/Ze:Qt*Math.pow(2,1-Ft))*Ze>=2&&(ve++,Ze/=2),ve+Ft>=Tt?(De=0,ve=Tt):ve+Ft>=1?(De=(S*Ze-1)*Math.pow(2,te),ve+=Ft):(De=S*Math.pow(2,Ft-1)*Math.pow(2,te),ve=0));te>=8;R[D+sr]=255&De,sr+=Tr,De/=256,te-=8);for(ve=ve<0;R[D+sr]=255&ve,sr+=Tr,ve/=256,at-=8);R[D+sr-Tr]|=128*Pr};function Kl(R){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(R)?R:new Uint8Array(R||0),this.pos=0,this.type=0,this.length=this.buf.length}Kl.Varint=0,Kl.Fixed64=1,Kl.Bytes=2,Kl.Fixed32=5;var Nx=4294967296,am=1/Nx,Mw=typeof TextDecoder=="undefined"?null:new TextDecoder("utf-8");function Lv(R){return R.type===Kl.Bytes?R.readVarint()+R.pos:R.pos+1}function om(R,S,D){return D?4294967296*S+(R>>>0):4294967296*(S>>>0)+(R>>>0)}function Ew(R,S,D){var j=S<=16383?1:S<=2097151?2:S<=268435455?3:Math.floor(Math.log(S)/(7*Math.LN2));D.realloc(j);for(var te=D.pos-1;te>=R;te--)D.buf[te+j]=D.buf[te]}function Ux(R,S){for(var D=0;D>>8,R[D+2]=S>>>16,R[D+3]=S>>>24}function cC(R,S){return(R[S]|R[S+1]<<8|R[S+2]<<16)+(R[S+3]<<24)}Kl.prototype={destroy:function(){this.buf=null},readFields:function(R,S,D){for(D=D||this.length;this.pos>3,ue=this.pos;this.type=7&j,R(te,S,this),this.pos===ue&&this.skip(j)}return S},readMessage:function(R,S){return this.readFields(R,S,this.readVarint()+this.pos)},readFixed32:function(){var R=ly(this.buf,this.pos);return this.pos+=4,R},readSFixed32:function(){var R=cC(this.buf,this.pos);return this.pos+=4,R},readFixed64:function(){var R=ly(this.buf,this.pos)+ly(this.buf,this.pos+4)*Nx;return this.pos+=8,R},readSFixed64:function(){var R=ly(this.buf,this.pos)+cC(this.buf,this.pos+4)*Nx;return this.pos+=8,R},readFloat:function(){var R=sy(this.buf,this.pos,!0,23,4);return this.pos+=4,R},readDouble:function(){var R=sy(this.buf,this.pos,!0,52,8);return this.pos+=8,R},readVarint:function(R){var S,D,j=this.buf;return S=127&(D=j[this.pos++]),D<128?S:(S|=(127&(D=j[this.pos++]))<<7,D<128?S:(S|=(127&(D=j[this.pos++]))<<14,D<128?S:(S|=(127&(D=j[this.pos++]))<<21,D<128?S:function(te,ue,ve){var De,Ze,at=ve.buf;if(De=(112&(Ze=at[ve.pos++]))>>4,Ze<128||(De|=(127&(Ze=at[ve.pos++]))<<3,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<10,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<17,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<24,Ze<128)||(De|=(1&(Ze=at[ve.pos++]))<<31,Ze<128))return om(te,De,ue);throw new Error("Expected varint not more than 10 bytes")}(S|=(15&(D=j[this.pos]))<<28,R,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var R=this.readVarint();return R%2==1?(R+1)/-2:R/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var R=this.readVarint()+this.pos,S=this.pos;return this.pos=R,R-S>=12&&Mw?function(D,j,te){return Mw.decode(D.subarray(j,te))}(this.buf,S,R):function(D,j,te){for(var ue="",ve=j;ve239?4:Tt>223?3:Tt>191?2:1;if(ve+Qt>te)break;Qt===1?Tt<128&&(Ft=Tt):Qt===2?(192&(De=D[ve+1]))==128&&(Ft=(31&Tt)<<6|63&De)<=127&&(Ft=null):Qt===3?(Ze=D[ve+2],(192&(De=D[ve+1]))==128&&(192&Ze)==128&&((Ft=(15&Tt)<<12|(63&De)<<6|63&Ze)<=2047||Ft>=55296&&Ft<=57343)&&(Ft=null)):Qt===4&&(Ze=D[ve+2],at=D[ve+3],(192&(De=D[ve+1]))==128&&(192&Ze)==128&&(192&at)==128&&((Ft=(15&Tt)<<18|(63&De)<<12|(63&Ze)<<6|63&at)<=65535||Ft>=1114112)&&(Ft=null)),Ft===null?(Ft=65533,Qt=1):Ft>65535&&(Ft-=65536,ue+=String.fromCharCode(Ft>>>10&1023|55296),Ft=56320|1023&Ft),ue+=String.fromCharCode(Ft),ve+=Qt}return ue}(this.buf,S,R)},readBytes:function(){var R=this.readVarint()+this.pos,S=this.buf.subarray(this.pos,R);return this.pos=R,S},readPackedVarint:function(R,S){if(this.type!==Kl.Bytes)return R.push(this.readVarint(S));var D=Lv(this);for(R=R||[];this.pos127;);else if(S===Kl.Bytes)this.pos=this.readVarint()+this.pos;else if(S===Kl.Fixed32)this.pos+=4;else{if(S!==Kl.Fixed64)throw new Error("Unimplemented type: "+S);this.pos+=8}},writeTag:function(R,S){this.writeVarint(R<<3|S)},realloc:function(R){for(var S=this.length||16;S268435455||R<0?function(S,D){var j,te;if(S>=0?(j=S%4294967296|0,te=S/4294967296|0):(te=~(-S/4294967296),4294967295^(j=~(-S%4294967296))?j=j+1|0:(j=0,te=te+1|0)),S>=18446744073709552e3||S<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");D.realloc(10),function(ue,ve,De){De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,De.buf[De.pos]=127&(ue>>>=7)}(j,0,D),function(ue,ve){var De=(7&ue)<<4;ve.buf[ve.pos++]|=De|((ue>>>=3)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue)))))}(te,D)}(R,this):(this.realloc(4),this.buf[this.pos++]=127&R|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=R>>>7&127))))},writeSVarint:function(R){this.writeVarint(R<0?2*-R-1:2*R)},writeBoolean:function(R){this.writeVarint(!!R)},writeString:function(R){R=String(R),this.realloc(4*R.length),this.pos++;var S=this.pos;this.pos=function(j,te,ue){for(var ve,De,Ze=0;Ze55295&&ve<57344){if(!De){ve>56319||Ze+1===te.length?(j[ue++]=239,j[ue++]=191,j[ue++]=189):De=ve;continue}if(ve<56320){j[ue++]=239,j[ue++]=191,j[ue++]=189,De=ve;continue}ve=De-55296<<10|ve-56320|65536,De=null}else De&&(j[ue++]=239,j[ue++]=191,j[ue++]=189,De=null);ve<128?j[ue++]=ve:(ve<2048?j[ue++]=ve>>6|192:(ve<65536?j[ue++]=ve>>12|224:(j[ue++]=ve>>18|240,j[ue++]=ve>>12&63|128),j[ue++]=ve>>6&63|128),j[ue++]=63&ve|128)}return ue}(this.buf,R,this.pos);var D=this.pos-S;D>=128&&Ew(S,D,this),this.pos=S-1,this.writeVarint(D),this.pos+=D},writeFloat:function(R){this.realloc(4),A1(this.buf,R,this.pos,!0,23,4),this.pos+=4},writeDouble:function(R){this.realloc(8),A1(this.buf,R,this.pos,!0,52,8),this.pos+=8},writeBytes:function(R){var S=R.length;this.writeVarint(S),this.realloc(S);for(var D=0;D=128&&Ew(D,j,this),this.pos=D-1,this.writeVarint(j),this.pos+=j},writeMessage:function(R,S,D){this.writeTag(R,Kl.Bytes),this.writeRawMessage(S,D)},writePackedVarint:function(R,S){S.length&&this.writeMessage(R,Ux,S)},writePackedSVarint:function(R,S){S.length&&this.writeMessage(R,P9,S)},writePackedBoolean:function(R,S){S.length&&this.writeMessage(R,D9,S)},writePackedFloat:function(R,S){S.length&&this.writeMessage(R,I9,S)},writePackedDouble:function(R,S){S.length&&this.writeMessage(R,R9,S)},writePackedFixed32:function(R,S){S.length&&this.writeMessage(R,mQ,S)},writePackedSFixed32:function(R,S){S.length&&this.writeMessage(R,z9,S)},writePackedFixed64:function(R,S){S.length&&this.writeMessage(R,F9,S)},writePackedSFixed64:function(R,S){S.length&&this.writeMessage(R,q9,S)},writeBytesField:function(R,S){this.writeTag(R,Kl.Bytes),this.writeBytes(S)},writeFixed32Field:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeFixed32(S)},writeSFixed32Field:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeSFixed32(S)},writeFixed64Field:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeFixed64(S)},writeSFixed64Field:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeSFixed64(S)},writeVarintField:function(R,S){this.writeTag(R,Kl.Varint),this.writeVarint(S)},writeSVarintField:function(R,S){this.writeTag(R,Kl.Varint),this.writeSVarint(S)},writeStringField:function(R,S){this.writeTag(R,Kl.Bytes),this.writeString(S)},writeFloatField:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeFloat(S)},writeDoubleField:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeDouble(S)},writeBooleanField:function(R,S){this.writeVarintField(R,!!S)}};var eS=o(bd);let tS=3;function yQ(R,S,D){R===1&&D.readMessage(O9,S)}function O9(R,S,D){if(R===3){let{id:j,bitmap:te,width:ue,height:ve,left:De,top:Ze,advance:at}=D.readMessage(fC,{});S.push({id:j,bitmap:new Ao({width:ue+2*tS,height:ve+2*tS},te),metrics:{width:ue,height:ve,left:De,top:Ze,advance:at}})}}function fC(R,S,D){R===1?S.id=D.readVarint():R===2?S.bitmap=D.readBytes():R===3?S.width=D.readVarint():R===4?S.height=D.readVarint():R===5?S.left=D.readSVarint():R===6?S.top=D.readSVarint():R===7&&(S.advance=D.readVarint())}let hC=tS;function rS(R){let S=0,D=0;for(let ve of R)S+=ve.w*ve.h,D=Math.max(D,ve.w);R.sort((ve,De)=>De.h-ve.h);let j=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(S/.95)),D),h:1/0}],te=0,ue=0;for(let ve of R)for(let De=j.length-1;De>=0;De--){let Ze=j[De];if(!(ve.w>Ze.w||ve.h>Ze.h)){if(ve.x=Ze.x,ve.y=Ze.y,ue=Math.max(ue,ve.y+ve.h),te=Math.max(te,ve.x+ve.w),ve.w===Ze.w&&ve.h===Ze.h){let at=j.pop();De=0&&j>=S&&Lw[this.text.charCodeAt(j)];j--)D--;this.text=this.text.substring(S,D),this.sectionIndex=this.sectionIndex.slice(S,D)}substring(S,D){let j=new S1;return j.text=this.text.substring(S,D),j.sectionIndex=this.sectionIndex.slice(S,D),j.sections=this.sections,j}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((S,D)=>Math.max(S,this.sections[D].scale),0)}addTextSection(S,D){this.text+=S.text,this.sections.push(Hx.forText(S.scale,S.fontStack||D));let j=this.sections.length-1;for(let te=0;te=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Gx(R,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr){let Pr=S1.fromFeature(R,te),$r;Ft===i.ah.vertical&&Pr.verticalizePunctuation();let{processBidirectionalText:ni,processStyledBidirectionalText:Di}=vs;if(ni&&Pr.sections.length===1){$r=[];let Zi=ni(Pr.toString(),M1(Pr,at,ue,S,j,sr));for(let ta of Zi){let Va=new S1;Va.text=ta,Va.sections=Pr.sections;for(let Io=0;Io0&&ep>xf&&(xf=ep)}else{let oc=Va[Cl.fontStack],If=oc&&oc[Tu];if(If&&If.rect)I1=If.rect,qc=If.metrics;else{let ep=ta[Cl.fontStack],gg=ep&&ep[Tu];if(!gg)continue;qc=gg.metrics}Rv=(fh-Cl.scale)*kl}Qv?(Zi.verticalizable=!0,Dh.push({glyph:Tu,imageName:p0,x:Uo,y:wu+Rv,vertical:Qv,scale:Cl.scale,fontStack:Cl.fontStack,sectionIndex:qu,metrics:qc,rect:I1}),Uo+=Gp*Cl.scale+Tn):(Dh.push({glyph:Tu,imageName:p0,x:Uo,y:wu+Rv,vertical:Qv,scale:Cl.scale,fontStack:Cl.fontStack,sectionIndex:qu,metrics:qc,rect:I1}),Uo+=qc.advance*Cl.scale+Tn)}Dh.length!==0&&(hu=Math.max(Uo-Tn,hu),sm(Dh,0,Dh.length-1,$v,xf)),Uo=0;let Iv=Hn*fh+xf;rd.lineOffset=Math.max(xf,Td),wu+=Iv,uh=Math.max(Iv,uh),++td}var ch;let Ud=wu-lh,{horizontalAlign:Vd,verticalAlign:Hd}=Iw(lo);(function(rf,fh,Td,rd,Dh,xf,Iv,lv,Cl){let qu=(fh-Td)*Dh,Tu=0;Tu=xf!==Iv?-lv*rd-lh:(-rd*Cl+.5)*Iv;for(let Rv of rf)for(let qc of Rv.positionedGlyphs)qc.x+=qu,qc.y+=Tu})(Zi.positionedLines,$v,Vd,Hd,hu,uh,Hn,Ud,La.length),Zi.top+=-Hd*Ud,Zi.bottom=Zi.top+Ud,Zi.left+=-Vd*hu,Zi.right=Zi.left+hu}(ki,S,D,j,$r,ve,De,Ze,Ft,at,Qt,Tr),!function(Zi){for(let ta of Zi)if(ta.positionedGlyphs.length!==0)return!1;return!0}(pi)&&ki}let Lw={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},B9={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},N9={40:!0};function dC(R,S,D,j,te,ue){if(S.imageName){let ve=j[S.imageName];return ve?ve.displaySize[0]*S.scale*kl/ue+te:0}{let ve=D[S.fontStack],De=ve&&ve[R];return De?De.metrics.advance*S.scale+te:0}}function vC(R,S,D,j){let te=Math.pow(R-S,2);return j?R=0,at=0;for(let Ft=0;Ftat){let Tt=Math.ceil(ue/at);te*=Tt/ve,ve=Tt}return{x1:j,y1:te,x2:j+ue,y2:te+ve}}function mC(R,S,D,j,te,ue){let ve=R.image,De;if(ve.content){let $r=ve.content,ni=ve.pixelRatio||1;De=[$r[0]/ni,$r[1]/ni,ve.displaySize[0]-$r[2]/ni,ve.displaySize[1]-$r[3]/ni]}let Ze=S.left*ue,at=S.right*ue,Tt,Ft,Qt,sr;D==="width"||D==="both"?(sr=te[0]+Ze-j[3],Ft=te[0]+at+j[1]):(sr=te[0]+(Ze+at-ve.displaySize[0])/2,Ft=sr+ve.displaySize[0]);let Tr=S.top*ue,Pr=S.bottom*ue;return D==="height"||D==="both"?(Tt=te[1]+Tr-j[0],Qt=te[1]+Pr+j[2]):(Tt=te[1]+(Tr+Pr-ve.displaySize[1])/2,Qt=Tt+ve.displaySize[1]),{image:ve,top:Tt,right:Ft,bottom:Qt,left:sr,collisionPadding:De}}let Wx=255,v0=128,lm=Wx*v0;function yC(R,S){let{expression:D}=S;if(D.kind==="constant")return{kind:"constant",layoutSize:D.evaluate(new Ko(R+1))};if(D.kind==="source")return{kind:"source"};{let{zoomStops:j,interpolationType:te}=D,ue=0;for(;ueve.id),this.index=S.index,this.pixelRatio=S.pixelRatio,this.sourceLayerIndex=S.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Un([]),this.placementViewportMatrix=Un([]);let D=this.layers[0]._unevaluatedLayout._values;this.textSizeData=yC(this.zoom,D["text-size"]),this.iconSizeData=yC(this.zoom,D["icon-size"]);let j=this.layers[0].layout,te=j.get("symbol-sort-key"),ue=j.get("symbol-z-order");this.canOverlap=iS(j,"text-overlap","text-allow-overlap")!=="never"||iS(j,"icon-overlap","icon-allow-overlap")!=="never"||j.get("text-ignore-placement")||j.get("icon-ignore-placement"),this.sortFeaturesByKey=ue!=="viewport-y"&&!te.isConstant(),this.sortFeaturesByY=(ue==="viewport-y"||ue==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,j.get("symbol-placement")==="point"&&(this.writingModes=j.get("text-writing-mode").map(ve=>i.ah[ve])),this.stateDependentLayerIds=this.layers.filter(ve=>ve.isStateDependent()).map(ve=>ve.id),this.sourceID=S.sourceID}createArrays(){this.text=new oS(new _s(this.layers,this.zoom,S=>/^text/.test(S))),this.icon=new oS(new _s(this.layers,this.zoom,S=>/^icon/.test(S))),this.glyphOffsetArray=new To,this.lineVertexArray=new Wa,this.symbolInstances=new Ga,this.textAnchorOffsets=new Ro}calculateGlyphDependencies(S,D,j,te,ue){for(let ve=0;ve0)&&(ve.value.kind!=="constant"||ve.value.value.length>0),Tt=Ze.value.kind!=="constant"||!!Ze.value.value||Object.keys(Ze.parameters).length>0,Ft=ue.get("symbol-sort-key");if(this.features=[],!at&&!Tt)return;let Qt=D.iconDependencies,sr=D.glyphDependencies,Tr=D.availableImages,Pr=new Ko(this.zoom);for(let{feature:$r,id:ni,index:Di,sourceLayerIndex:pi}of S){let ki=te._featureFilter.needGeometry,Zi=xl($r,ki);if(!te._featureFilter.filter(Pr,Zi,j))continue;let ta,Va;if(ki||(Zi.geometry=js($r)),at){let La=te.getValueAndResolveTokens("text-field",Zi,j,Tr),Hn=Zr.factory(La),lo=this.hasRTLText=this.hasRTLText||aS(Hn);(!lo||vs.getRTLTextPluginStatus()==="unavailable"||lo&&vs.isParsed())&&(ta=nm(Hn,te,Zi))}if(Tt){let La=te.getValueAndResolveTokens("icon-image",Zi,j,Tr);Va=La instanceof Mi?La:Mi.fromString(La)}if(!ta&&!Va)continue;let Io=this.sortFeaturesByKey?Ft.evaluate(Zi,{},j):void 0;if(this.features.push({id:ni,text:ta,icon:Va,index:Di,sourceLayerIndex:pi,geometry:Zi.geometry,properties:$r.properties,type:V9[$r.type],sortKey:Io}),Va&&(Qt[Va.name]=!0),ta){let La=ve.evaluate(Zi,{},j).join(","),Hn=ue.get("text-rotation-alignment")!=="viewport"&&ue.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(i.ah.vertical)>=0;for(let lo of ta.sections)if(lo.image)Qt[lo.image.name]=!0;else{let $a=Ua(ta.toString()),Xa=lo.fontStack||La,Tn=sr[Xa]=sr[Xa]||{};this.calculateGlyphDependencies(lo.text,Tn,Hn,this.allowVerticalPlacement,$a)}}}ue.get("symbol-placement")==="line"&&(this.features=function($r){let ni={},Di={},pi=[],ki=0;function Zi(La){pi.push($r[La]),ki++}function ta(La,Hn,lo){let $a=Di[La];return delete Di[La],Di[Hn]=$a,pi[$a].geometry[0].pop(),pi[$a].geometry[0]=pi[$a].geometry[0].concat(lo[0]),$a}function Va(La,Hn,lo){let $a=ni[Hn];return delete ni[Hn],ni[La]=$a,pi[$a].geometry[0].shift(),pi[$a].geometry[0]=lo[0].concat(pi[$a].geometry[0]),$a}function Io(La,Hn,lo){let $a=lo?Hn[0][Hn[0].length-1]:Hn[0][0];return`${La}:${$a.x}:${$a.y}`}for(let La=0;La<$r.length;La++){let Hn=$r[La],lo=Hn.geometry,$a=Hn.text?Hn.text.toString():null;if(!$a){Zi(La);continue}let Xa=Io($a,lo),Tn=Io($a,lo,!0);if(Xa in Di&&Tn in ni&&Di[Xa]!==ni[Tn]){let bo=Va(Xa,Tn,lo),Ya=ta(Xa,Tn,pi[bo].geometry);delete ni[Xa],delete Di[Tn],Di[Io($a,pi[Ya].geometry,!0)]=Ya,pi[bo].geometry=null}else Xa in Di?ta(Xa,Tn,lo):Tn in ni?Va(Xa,Tn,lo):(Zi(La),ni[Xa]=ki-1,Di[Tn]=ki-1)}return pi.filter(La=>La.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort(($r,ni)=>$r.sortKey-ni.sortKey)}update(S,D,j){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(S,D,this.layers,j),this.icon.programConfigurations.updatePaintArrays(S,D,this.layers,j))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(S){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(S),this.iconCollisionBox.upload(S)),this.text.upload(S,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(S,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(S,D){let j=this.lineVertexArray.length;if(S.segment!==void 0){let te=S.dist(D[S.segment+1]),ue=S.dist(D[S.segment]),ve={};for(let De=S.segment+1;De=0;De--)ve[De]={x:D[De].x,y:D[De].y,tileUnitDistanceFromAnchor:ue},De>0&&(ue+=D[De-1].dist(D[De]));for(let De=0;De0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(S,D){let j=S.placedSymbolArray.get(D),te=j.vertexStartIndex+4*j.numGlyphs;for(let ue=j.vertexStartIndex;uete[De]-te[Ze]||ue[Ze]-ue[De]),ve}addToSortKeyRanges(S,D){let j=this.sortKeyRanges[this.sortKeyRanges.length-1];j&&j.sortKey===D?j.symbolInstanceEnd=S+1:this.sortKeyRanges.push({sortKey:D,symbolInstanceStart:S,symbolInstanceEnd:S+1})}sortFeatures(S){if(this.sortFeaturesByY&&this.sortedAngle!==S&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(S),this.sortedAngle=S,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let D of this.symbolInstanceIndexes){let j=this.symbolInstances.get(D);this.featureSortOrder.push(j.featureIndex),[j.rightJustifiedTextSymbolIndex,j.centerJustifiedTextSymbolIndex,j.leftJustifiedTextSymbolIndex].forEach((te,ue,ve)=>{te>=0&&ve.indexOf(te)===ue&&this.addIndicesForPlacedSymbol(this.text,te)}),j.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,j.verticalPlacedTextSymbolIndex),j.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,j.placedIconSymbolIndex),j.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,j.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let tf,Zx;mi("SymbolBucket",E1,{omit:["layers","collisionBoxArray","features","compareText"]}),E1.MAX_GLYPHS=65535,E1.addDynamicAttributes=nS;var Dw={get paint(){return Zx=Zx||new le({"icon-opacity":new eo(ce.paint_symbol["icon-opacity"]),"icon-color":new eo(ce.paint_symbol["icon-color"]),"icon-halo-color":new eo(ce.paint_symbol["icon-halo-color"]),"icon-halo-width":new eo(ce.paint_symbol["icon-halo-width"]),"icon-halo-blur":new eo(ce.paint_symbol["icon-halo-blur"]),"icon-translate":new Da(ce.paint_symbol["icon-translate"]),"icon-translate-anchor":new Da(ce.paint_symbol["icon-translate-anchor"]),"text-opacity":new eo(ce.paint_symbol["text-opacity"]),"text-color":new eo(ce.paint_symbol["text-color"],{runtimeType:Ht,getOverride:R=>R.textColor,hasOverride:R=>!!R.textColor}),"text-halo-color":new eo(ce.paint_symbol["text-halo-color"]),"text-halo-width":new eo(ce.paint_symbol["text-halo-width"]),"text-halo-blur":new eo(ce.paint_symbol["text-halo-blur"]),"text-translate":new Da(ce.paint_symbol["text-translate"]),"text-translate-anchor":new Da(ce.paint_symbol["text-translate-anchor"])})},get layout(){return tf=tf||new le({"symbol-placement":new Da(ce.layout_symbol["symbol-placement"]),"symbol-spacing":new Da(ce.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Da(ce.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new eo(ce.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Da(ce.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Da(ce.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Da(ce.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Da(ce.layout_symbol["icon-ignore-placement"]),"icon-optional":new Da(ce.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Da(ce.layout_symbol["icon-rotation-alignment"]),"icon-size":new eo(ce.layout_symbol["icon-size"]),"icon-text-fit":new Da(ce.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Da(ce.layout_symbol["icon-text-fit-padding"]),"icon-image":new eo(ce.layout_symbol["icon-image"]),"icon-rotate":new eo(ce.layout_symbol["icon-rotate"]),"icon-padding":new eo(ce.layout_symbol["icon-padding"]),"icon-keep-upright":new Da(ce.layout_symbol["icon-keep-upright"]),"icon-offset":new eo(ce.layout_symbol["icon-offset"]),"icon-anchor":new eo(ce.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Da(ce.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Da(ce.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Da(ce.layout_symbol["text-rotation-alignment"]),"text-field":new eo(ce.layout_symbol["text-field"]),"text-font":new eo(ce.layout_symbol["text-font"]),"text-size":new eo(ce.layout_symbol["text-size"]),"text-max-width":new eo(ce.layout_symbol["text-max-width"]),"text-line-height":new Da(ce.layout_symbol["text-line-height"]),"text-letter-spacing":new eo(ce.layout_symbol["text-letter-spacing"]),"text-justify":new eo(ce.layout_symbol["text-justify"]),"text-radial-offset":new eo(ce.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Da(ce.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new eo(ce.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new eo(ce.layout_symbol["text-anchor"]),"text-max-angle":new Da(ce.layout_symbol["text-max-angle"]),"text-writing-mode":new Da(ce.layout_symbol["text-writing-mode"]),"text-rotate":new eo(ce.layout_symbol["text-rotate"]),"text-padding":new Da(ce.layout_symbol["text-padding"]),"text-keep-upright":new Da(ce.layout_symbol["text-keep-upright"]),"text-transform":new eo(ce.layout_symbol["text-transform"]),"text-offset":new eo(ce.layout_symbol["text-offset"]),"text-allow-overlap":new Da(ce.layout_symbol["text-allow-overlap"]),"text-overlap":new Da(ce.layout_symbol["text-overlap"]),"text-ignore-placement":new Da(ce.layout_symbol["text-ignore-placement"]),"text-optional":new Da(ce.layout_symbol["text-optional"])})}};class Xx{constructor(S){if(S.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=S.property.overrides?S.property.overrides.runtimeType:Lt,this.defaultValue=S}evaluate(S){if(S.formattedSection){let D=this.defaultValue.property.overrides;if(D&&D.hasOverride(S.formattedSection))return D.getOverride(S.formattedSection)}return S.feature&&S.featureState?this.defaultValue.evaluate(S.feature,S.featureState):this.defaultValue.property.specification.default}eachChild(S){this.defaultValue.isConstant()||S(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}mi("FormatSectionOverride",Xx,{omit:["defaultValue"]});class uy extends B{constructor(S){super(S,Dw)}recalculate(S,D){if(super.recalculate(S,D),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let j=this.layout.get("text-writing-mode");if(j){let te=[];for(let ue of j)te.indexOf(ue)<0&&te.push(ue);this.layout._values["text-writing-mode"]=te}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(S,D,j,te){let ue=this.layout.get(S).evaluate(D,{},j,te),ve=this._unevaluatedLayout._values[S];return ve.isDataDriven()||Lc(ve.value)||!ue?ue:function(De,Ze){return Ze.replace(/{([^{}]+)}/g,(at,Tt)=>De&&Tt in De?String(De[Tt]):"")}(D.properties,ue)}createBucket(S){return new E1(S)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let S of Dw.paint.overridableProperties){if(!uy.hasPaintOverride(this.layout,S))continue;let D=this.paint.get(S),j=new Xx(D),te=new Pu(j,D.property.specification),ue=null;ue=D.value.kind==="constant"||D.value.kind==="source"?new Xc("source",te):new ic("composite",te,D.value.zoomStops),this.paint._values[S]=new Du(D.property,ue,D.parameters)}}_handleOverridablePaintPropertyUpdate(S,D,j){return!(!this.layout||D.isDataDriven()||j.isDataDriven())&&uy.hasPaintOverride(this.layout,S)}static hasPaintOverride(S,D){let j=S.get("text-field"),te=Dw.paint.properties[D],ue=!1,ve=De=>{for(let Ze of De)if(te.overrides&&te.overrides.hasOverride(Ze))return void(ue=!0)};if(j.value.kind==="constant"&&j.value.value instanceof Zr)ve(j.value.value.sections);else if(j.value.kind==="source"){let De=at=>{ue||(at instanceof jn&&Ki(at.value)===Br?ve(at.value.sections):at instanceof Ql?ve(at.sections):at.eachChild(De))},Ze=j.value;Ze._styleExpression&&De(Ze._styleExpression.expression)}return ue}}let _C;var Yx={get paint(){return _C=_C||new le({"background-color":new Da(ce.paint_background["background-color"]),"background-pattern":new yc(ce.paint_background["background-pattern"]),"background-opacity":new Da(ce.paint_background["background-opacity"])})}};class G9 extends B{constructor(S){super(S,Yx)}}let sS;var xC={get paint(){return sS=sS||new le({"raster-opacity":new Da(ce.paint_raster["raster-opacity"]),"raster-hue-rotate":new Da(ce.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Da(ce.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Da(ce.paint_raster["raster-brightness-max"]),"raster-saturation":new Da(ce.paint_raster["raster-saturation"]),"raster-contrast":new Da(ce.paint_raster["raster-contrast"]),"raster-resampling":new Da(ce.paint_raster["raster-resampling"]),"raster-fade-duration":new Da(ce.paint_raster["raster-fade-duration"])})}};class Kx extends B{constructor(S){super(S,xC)}}class lS extends B{constructor(S){super(S,{}),this.onAdd=D=>{this.implementation.onAdd&&this.implementation.onAdd(D,D.painter.context.gl)},this.onRemove=D=>{this.implementation.onRemove&&this.implementation.onRemove(D,D.painter.context.gl)},this.implementation=S}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class uS{constructor(S){this._methodToThrottle=S,this._triggered=!1,typeof MessageChannel!="undefined"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let cS=63710088e-1;class dg{constructor(S,D){if(isNaN(S)||isNaN(D))throw new Error(`Invalid LngLat object: (${S}, ${D})`);if(this.lng=+S,this.lat=+D,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new dg(A(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(S){let D=Math.PI/180,j=this.lat*D,te=S.lat*D,ue=Math.sin(j)*Math.sin(te)+Math.cos(j)*Math.cos(te)*Math.cos((S.lng-this.lng)*D);return cS*Math.acos(Math.min(ue,1))}static convert(S){if(S instanceof dg)return S;if(Array.isArray(S)&&(S.length===2||S.length===3))return new dg(Number(S[0]),Number(S[1]));if(!Array.isArray(S)&&typeof S=="object"&&S!==null)return new dg(Number("lng"in S?S.lng:S.lon),Number(S.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let k1=2*Math.PI*cS;function bC(R){return k1*Math.cos(R*Math.PI/180)}function zw(R){return(180+R)/360}function wC(R){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R*Math.PI/360)))/360}function Fw(R,S){return R/bC(S)}function Jx(R){return 360/Math.PI*Math.atan(Math.exp((180-360*R)*Math.PI/180))-90}class $x{constructor(S,D,j=0){this.x=+S,this.y=+D,this.z=+j}static fromLngLat(S,D=0){let j=dg.convert(S);return new $x(zw(j.lng),wC(j.lat),Fw(D,j.lat))}toLngLat(){return new dg(360*this.x-180,Jx(this.y))}toAltitude(){return this.z*bC(Jx(this.y))}meterInMercatorCoordinateUnits(){return 1/k1*(S=Jx(this.y),1/Math.cos(S*Math.PI/180));var S}}function gp(R,S,D){var j=2*Math.PI*6378137/256/Math.pow(2,D);return[R*j-2*Math.PI*6378137/2,S*j-2*Math.PI*6378137/2]}class fS{constructor(S,D,j){if(!function(te,ue,ve){return!(te<0||te>25||ve<0||ve>=Math.pow(2,te)||ue<0||ue>=Math.pow(2,te))}(S,D,j))throw new Error(`x=${D}, y=${j}, z=${S} outside of bounds. 0<=x<${Math.pow(2,S)}, 0<=y<${Math.pow(2,S)} 0<=z<=25 `);this.z=S,this.x=D,this.y=j,this.key=Qx(0,S,S,D,j)}equals(S){return this.z===S.z&&this.x===S.x&&this.y===S.y}url(S,D,j){let te=(ve=this.y,De=this.z,Ze=gp(256*(ue=this.x),256*(ve=Math.pow(2,De)-ve-1),De),at=gp(256*(ue+1),256*(ve+1),De),Ze[0]+","+Ze[1]+","+at[0]+","+at[1]);var ue,ve,De,Ze,at;let Tt=function(Ft,Qt,sr){let Tr,Pr="";for(let $r=Ft;$r>0;$r--)Tr=1<<$r-1,Pr+=(Qt&Tr?1:0)+(sr&Tr?2:0);return Pr}(this.z,this.x,this.y);return S[(this.x+this.y)%S.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(j==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,D>1?"@2x":"").replace(/{quadkey}/g,Tt).replace(/{bbox-epsg-3857}/g,te)}isChildOf(S){let D=this.z-S.z;return D>0&&S.x===this.x>>D&&S.y===this.y>>D}getTilePoint(S){let D=Math.pow(2,this.z);return new u((S.x*D-this.x)*za,(S.y*D-this.y)*za)}toString(){return`${this.z}/${this.x}/${this.y}`}}class TC{constructor(S,D){this.wrap=S,this.canonical=D,this.key=Qx(S,D.z,D.z,D.x,D.y)}}class Jv{constructor(S,D,j,te,ue){if(S= z; overscaledZ = ${S}; z = ${j}`);this.overscaledZ=S,this.wrap=D,this.canonical=new fS(j,+te,+ue),this.key=Qx(D,S,j,te,ue)}clone(){return new Jv(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(S){return this.overscaledZ===S.overscaledZ&&this.wrap===S.wrap&&this.canonical.equals(S.canonical)}scaledTo(S){if(S>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${S}; overscaledZ = ${this.overscaledZ}`);let D=this.canonical.z-S;return S>this.canonical.z?new Jv(S,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Jv(S,this.wrap,S,this.canonical.x>>D,this.canonical.y>>D)}calculateScaledKey(S,D){if(S>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${S}; overscaledZ = ${this.overscaledZ}`);let j=this.canonical.z-S;return S>this.canonical.z?Qx(this.wrap*+D,S,this.canonical.z,this.canonical.x,this.canonical.y):Qx(this.wrap*+D,S,S,this.canonical.x>>j,this.canonical.y>>j)}isChildOf(S){if(S.wrap!==this.wrap)return!1;let D=this.canonical.z-S.canonical.z;return S.overscaledZ===0||S.overscaledZ>D&&S.canonical.y===this.canonical.y>>D}children(S){if(this.overscaledZ>=S)return[new Jv(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let D=this.canonical.z+1,j=2*this.canonical.x,te=2*this.canonical.y;return[new Jv(D,this.wrap,D,j,te),new Jv(D,this.wrap,D,j+1,te),new Jv(D,this.wrap,D,j,te+1),new Jv(D,this.wrap,D,j+1,te+1)]}isLessThan(S){return this.wrapS.wrap)&&(this.overscaledZS.overscaledZ)&&(this.canonical.xS.canonical.x)&&this.canonical.ythis.max&&(this.max=Ft),Ft=this.dim+1||D<-1||D>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(D+1)*this.stride+(S+1)}unpack(S,D,j){return S*this.redFactor+D*this.greenFactor+j*this.blueFactor-this.baseShift}getPixels(){return new Jn({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(S,D,j){if(this.dim!==S.dim)throw new Error("dem dimension mismatch");let te=D*this.dim,ue=D*this.dim+this.dim,ve=j*this.dim,De=j*this.dim+this.dim;switch(D){case-1:te=ue-1;break;case 1:ue=te+1}switch(j){case-1:ve=De-1;break;case 1:De=ve+1}let Ze=-D*this.dim,at=-j*this.dim;for(let Tt=ve;Tt=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${S} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[S]}}class hS{constructor(S,D,j,te,ue){this.type="Feature",this._vectorTileFeature=S,S._z=D,S._x=j,S._y=te,this.properties=S.properties,this.id=ue}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(S){this._geometry=S}toJSON(){let S={geometry:this.geometry};for(let D in this)D!=="_geometry"&&D!=="_vectorTileFeature"&&(S[D]=this[D]);return S}}class cy{constructor(S,D){this.tileID=S,this.x=S.canonical.x,this.y=S.canonical.y,this.z=S.canonical.z,this.grid=new qi(za,16,0),this.grid3D=new qi(za,16,0),this.featureIndexArray=new As,this.promoteId=D}insert(S,D,j,te,ue,ve){let De=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(j,te,ue);let Ze=ve?this.grid3D:this.grid;for(let at=0;at=0&&Ft[3]>=0&&Ze.insert(De,Ft[0],Ft[1],Ft[2],Ft[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new ei.VectorTile(new eS(this.rawTileData)).layers,this.sourceLayerCoder=new SC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(S,D,j,te){this.loadVTLayers();let ue=S.params||{},ve=za/S.tileSize/S.scale,De=Pc(ue.filter),Ze=S.queryGeometry,at=S.queryPadding*ve,Tt=EC(Ze),Ft=this.grid.query(Tt.minX-at,Tt.minY-at,Tt.maxX+at,Tt.maxY+at),Qt=EC(S.cameraQueryGeometry),sr=this.grid3D.query(Qt.minX-at,Qt.minY-at,Qt.maxX+at,Qt.maxY+at,($r,ni,Di,pi)=>function(ki,Zi,ta,Va,Io){for(let Hn of ki)if(Zi<=Hn.x&&ta<=Hn.y&&Va>=Hn.x&&Io>=Hn.y)return!0;let La=[new u(Zi,ta),new u(Zi,Io),new u(Va,Io),new u(Va,ta)];if(ki.length>2){for(let Hn of La)if(On(ki,Hn))return!0}for(let Hn=0;Hn(pi||(pi=js(ki)),Zi.queryIntersectsFeature(Ze,ki,ta,pi,this.z,S.transform,ve,S.pixelPosMatrix)))}return Tr}loadMatchingFeature(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft){let Qt=this.bucketLayerIDs[D];if(ve&&!function($r,ni){for(let Di=0;Di<$r.length;Di++)if(ni.indexOf($r[Di])>=0)return!0;return!1}(ve,Qt))return;let sr=this.sourceLayerCoder.decode(j),Tr=this.vtLayers[sr].feature(te);if(ue.needGeometry){let $r=xl(Tr,!0);if(!ue.filter(new Ko(this.tileID.overscaledZ),$r,this.tileID.canonical))return}else if(!ue.filter(new Ko(this.tileID.overscaledZ),Tr))return;let Pr=this.getId(Tr,sr);for(let $r=0;$r{let De=S instanceof Dc?S.get(ve):null;return De&&De.evaluate?De.evaluate(D,j,te):De})}function EC(R){let S=1/0,D=1/0,j=-1/0,te=-1/0;for(let ue of R)S=Math.min(S,ue.x),D=Math.min(D,ue.y),j=Math.max(j,ue.x),te=Math.max(te,ue.y);return{minX:S,minY:D,maxX:j,maxY:te}}function j9(R,S){return S-R}function kC(R,S,D,j,te){let ue=[];for(let ve=0;ve=j&&Ft.x>=j||(Tt.x>=j?Tt=new u(j,Tt.y+(j-Tt.x)/(Ft.x-Tt.x)*(Ft.y-Tt.y))._round():Ft.x>=j&&(Ft=new u(j,Tt.y+(j-Tt.x)/(Ft.x-Tt.x)*(Ft.y-Tt.y))._round()),Tt.y>=te&&Ft.y>=te||(Tt.y>=te?Tt=new u(Tt.x+(te-Tt.y)/(Ft.y-Tt.y)*(Ft.x-Tt.x),te)._round():Ft.y>=te&&(Ft=new u(Tt.x+(te-Tt.y)/(Ft.y-Tt.y)*(Ft.x-Tt.x),te)._round()),Ze&&Tt.equals(Ze[Ze.length-1])||(Ze=[Tt],ue.push(Ze)),Ze.push(Ft)))))}}return ue}mi("FeatureIndex",cy,{omit:["rawTileData","sourceLayerCoder"]});class vg extends u{constructor(S,D,j,te){super(S,D),this.angle=j,te!==void 0&&(this.segment=te)}clone(){return new vg(this.x,this.y,this.angle,this.segment)}}function dS(R,S,D,j,te){if(S.segment===void 0||D===0)return!0;let ue=S,ve=S.segment+1,De=0;for(;De>-D/2;){if(ve--,ve<0)return!1;De-=R[ve].dist(ue),ue=R[ve]}De+=R[ve].dist(R[ve+1]),ve++;let Ze=[],at=0;for(;Dej;)at-=Ze.shift().angleDelta;if(at>te)return!1;ve++,De+=Tt.dist(Ft)}return!0}function CC(R){let S=0;for(let D=0;Dat){let Tr=(at-Ze)/sr,Pr=Mo.number(Ft.x,Qt.x,Tr),$r=Mo.number(Ft.y,Qt.y,Tr),ni=new vg(Pr,$r,Qt.angleTo(Ft),Tt);return ni._round(),!ve||dS(R,ni,De,ve,S)?ni:void 0}Ze+=sr}}function Z9(R,S,D,j,te,ue,ve,De,Ze){let at=LC(j,ue,ve),Tt=PC(j,te),Ft=Tt*ve,Qt=R[0].x===0||R[0].x===Ze||R[0].y===0||R[0].y===Ze;return S-Ft=0&&ki=0&&Zi=0&&Qt+at<=Tt){let ta=new vg(ki,Zi,Di,Tr);ta._round(),j&&!dS(R,ta,ue,j,te)||sr.push(ta)}}Ft+=ni}return De||sr.length||ve||(sr=IC(R,Ft/2,D,j,te,ue,ve,!0,Ze)),sr}mi("Anchor",vg);let C1=wd;function RC(R,S,D,j){let te=[],ue=R.image,ve=ue.pixelRatio,De=ue.paddedRect.w-2*C1,Ze=ue.paddedRect.h-2*C1,at={x1:R.left,y1:R.top,x2:R.right,y2:R.bottom},Tt=ue.stretchX||[[0,De]],Ft=ue.stretchY||[[0,Ze]],Qt=(Tn,bo)=>Tn+bo[1]-bo[0],sr=Tt.reduce(Qt,0),Tr=Ft.reduce(Qt,0),Pr=De-sr,$r=Ze-Tr,ni=0,Di=sr,pi=0,ki=Tr,Zi=0,ta=Pr,Va=0,Io=$r;if(ue.content&&j){let Tn=ue.content,bo=Tn[2]-Tn[0],Ya=Tn[3]-Tn[1];(ue.textFitWidth||ue.textFitHeight)&&(at=gC(R)),ni=pg(Tt,0,Tn[0]),pi=pg(Ft,0,Tn[1]),Di=pg(Tt,Tn[0],Tn[2]),ki=pg(Ft,Tn[1],Tn[3]),Zi=Tn[0]-ni,Va=Tn[1]-pi,ta=bo-Di,Io=Ya-ki}let La=at.x1,Hn=at.y1,lo=at.x2-La,$a=at.y2-Hn,Xa=(Tn,bo,Ya,Uo)=>{let wu=qw(Tn.stretch-ni,Di,lo,La),hu=L1(Tn.fixed-Zi,ta,Tn.stretch,sr),uh=qw(bo.stretch-pi,ki,$a,Hn),$v=L1(bo.fixed-Va,Io,bo.stretch,Tr),td=qw(Ya.stretch-ni,Di,lo,La),ch=L1(Ya.fixed-Zi,ta,Ya.stretch,sr),Ud=qw(Uo.stretch-pi,ki,$a,Hn),Vd=L1(Uo.fixed-Va,Io,Uo.stretch,Tr),Hd=new u(wu,uh),rf=new u(td,uh),fh=new u(td,Ud),Td=new u(wu,Ud),rd=new u(hu/ve,$v/ve),Dh=new u(ch/ve,Vd/ve),xf=S*Math.PI/180;if(xf){let Cl=Math.sin(xf),qu=Math.cos(xf),Tu=[qu,-Cl,Cl,qu];Hd._matMult(Tu),rf._matMult(Tu),Td._matMult(Tu),fh._matMult(Tu)}let Iv=Tn.stretch+Tn.fixed,lv=bo.stretch+bo.fixed;return{tl:Hd,tr:rf,bl:Td,br:fh,tex:{x:ue.paddedRect.x+C1+Iv,y:ue.paddedRect.y+C1+lv,w:Ya.stretch+Ya.fixed-Iv,h:Uo.stretch+Uo.fixed-lv},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:rd,pixelOffsetBR:Dh,minFontScaleX:ta/ve/lo,minFontScaleY:Io/ve/$a,isSDF:D}};if(j&&(ue.stretchX||ue.stretchY)){let Tn=DC(Tt,Pr,sr),bo=DC(Ft,$r,Tr);for(let Ya=0;Ya0&&(Pr=Math.max(10,Pr),this.circleDiameter=Pr)}else{let Qt=!((Ft=ve.image)===null||Ft===void 0)&&Ft.content&&(ve.image.textFitWidth||ve.image.textFitHeight)?gC(ve):{x1:ve.left,y1:ve.top,x2:ve.right,y2:ve.bottom};Qt.y1=Qt.y1*De-Ze[0],Qt.y2=Qt.y2*De+Ze[2],Qt.x1=Qt.x1*De-Ze[3],Qt.x2=Qt.x2*De+Ze[1];let sr=ve.collisionPadding;if(sr&&(Qt.x1-=sr[0]*De,Qt.y1-=sr[1]*De,Qt.x2+=sr[2]*De,Qt.y2+=sr[3]*De),Tt){let Tr=new u(Qt.x1,Qt.y1),Pr=new u(Qt.x2,Qt.y1),$r=new u(Qt.x1,Qt.y2),ni=new u(Qt.x2,Qt.y2),Di=Tt*Math.PI/180;Tr._rotate(Di),Pr._rotate(Di),$r._rotate(Di),ni._rotate(Di),Qt.x1=Math.min(Tr.x,Pr.x,$r.x,ni.x),Qt.x2=Math.max(Tr.x,Pr.x,$r.x,ni.x),Qt.y1=Math.min(Tr.y,Pr.y,$r.y,ni.y),Qt.y2=Math.max(Tr.y,Pr.y,$r.y,ni.y)}S.emplaceBack(D.x,D.y,Qt.x1,Qt.y1,Qt.x2,Qt.y2,j,te,ue)}this.boxEndIndex=S.length}}class Hp{constructor(S=[],D=(j,te)=>jte?1:0){if(this.data=S,this.length=this.data.length,this.compare=D,this.length>0)for(let j=(this.length>>1)-1;j>=0;j--)this._down(j)}push(S){this.data.push(S),this._up(this.length++)}pop(){if(this.length===0)return;let S=this.data[0],D=this.data.pop();return--this.length>0&&(this.data[0]=D,this._down(0)),S}peek(){return this.data[0]}_up(S){let{data:D,compare:j}=this,te=D[S];for(;S>0;){let ue=S-1>>1,ve=D[ue];if(j(te,ve)>=0)break;D[S]=ve,S=ue}D[S]=te}_down(S){let{data:D,compare:j}=this,te=this.length>>1,ue=D[S];for(;S=0)break;D[S]=D[ve],S=ve}D[S]=ue}}function X9(R,S=1,D=!1){let j=1/0,te=1/0,ue=-1/0,ve=-1/0,De=R[0];for(let sr=0;srue)&&(ue=Tr.x),(!sr||Tr.y>ve)&&(ve=Tr.y)}let Ze=Math.min(ue-j,ve-te),at=Ze/2,Tt=new Hp([],Y9);if(Ze===0)return new u(j,te);for(let sr=j;srFt.d||!Ft.d)&&(Ft=sr,D&&console.log("found best %d after %d probes",Math.round(1e4*sr.d)/1e4,Qt)),sr.max-Ft.d<=S||(at=sr.h/2,Tt.push(new P1(sr.p.x-at,sr.p.y-at,at,R)),Tt.push(new P1(sr.p.x+at,sr.p.y-at,at,R)),Tt.push(new P1(sr.p.x-at,sr.p.y+at,at,R)),Tt.push(new P1(sr.p.x+at,sr.p.y+at,at,R)),Qt+=4)}return D&&(console.log(`num probes: ${Qt}`),console.log(`best distance: ${Ft.d}`)),Ft.p}function Y9(R,S){return S.max-R.max}function P1(R,S,D,j){this.p=new u(R,S),this.h=D,this.d=function(te,ue){let ve=!1,De=1/0;for(let Ze=0;Zete.y!=Tr.y>te.y&&te.x<(Tr.x-sr.x)*(te.y-sr.y)/(Tr.y-sr.y)+sr.x&&(ve=!ve),De=Math.min(De,Bi(te,sr,Tr))}}return(ve?1:-1)*Math.sqrt(De)}(this.p,j),this.max=this.d+this.h*Math.SQRT2}var ed;i.aq=void 0,(ed=i.aq||(i.aq={}))[ed.center=1]="center",ed[ed.left=2]="left",ed[ed.right=3]="right",ed[ed.top=4]="top",ed[ed.bottom=5]="bottom",ed[ed["top-left"]=6]="top-left",ed[ed["top-right"]=7]="top-right",ed[ed["bottom-left"]=8]="bottom-left",ed[ed["bottom-right"]=9]="bottom-right";let fm=7,fy=Number.POSITIVE_INFINITY;function vS(R,S){return S[1]!==fy?function(D,j,te){let ue=0,ve=0;switch(j=Math.abs(j),te=Math.abs(te),D){case"top-right":case"top-left":case"top":ve=te-fm;break;case"bottom-right":case"bottom-left":case"bottom":ve=-te+fm}switch(D){case"top-right":case"bottom-right":case"right":ue=-j;break;case"top-left":case"bottom-left":case"left":ue=j}return[ue,ve]}(R,S[0],S[1]):function(D,j){let te=0,ue=0;j<0&&(j=0);let ve=j/Math.SQRT2;switch(D){case"top-right":case"top-left":ue=ve-fm;break;case"bottom-right":case"bottom-left":ue=-ve+fm;break;case"bottom":ue=-j+fm;break;case"top":ue=j-fm}switch(D){case"top-right":case"bottom-right":te=-ve;break;case"top-left":case"bottom-left":te=ve;break;case"left":te=j;break;case"right":te=-j}return[te,ue]}(R,S[0])}function zC(R,S,D){var j;let te=R.layout,ue=(j=te.get("text-variable-anchor-offset"))===null||j===void 0?void 0:j.evaluate(S,{},D);if(ue){let De=ue.values,Ze=[];for(let at=0;atQt*kl);Tt.startsWith("top")?Ft[1]-=fm:Tt.startsWith("bottom")&&(Ft[1]+=fm),Ze[at+1]=Ft}return new Si(Ze)}let ve=te.get("text-variable-anchor");if(ve){let De;De=R._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[te.get("text-radial-offset").evaluate(S,{},D)*kl,fy]:te.get("text-offset").evaluate(S,{},D).map(at=>at*kl);let Ze=[];for(let at of ve)Ze.push(at,vS(at,De));return new Si(Ze)}return null}function pS(R){switch(R){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function K9(R,S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=ue.textMaxSize.evaluate(S,{});Ft===void 0&&(Ft=ve);let Qt=R.layers[0].layout,sr=Qt.get("icon-offset").evaluate(S,{},Tt),Tr=qC(D.horizontal),Pr=ve/24,$r=R.tilePixelRatio*Pr,ni=R.tilePixelRatio*Ft/24,Di=R.tilePixelRatio*De,pi=R.tilePixelRatio*Qt.get("symbol-spacing"),ki=Qt.get("text-padding")*R.tilePixelRatio,Zi=function(Tn,bo,Ya,Uo=1){let wu=Tn.get("icon-padding").evaluate(bo,{},Ya),hu=wu&&wu.values;return[hu[0]*Uo,hu[1]*Uo,hu[2]*Uo,hu[3]*Uo]}(Qt,S,Tt,R.tilePixelRatio),ta=Qt.get("text-max-angle")/180*Math.PI,Va=Qt.get("text-rotation-alignment")!=="viewport"&&Qt.get("symbol-placement")!=="point",Io=Qt.get("icon-rotation-alignment")==="map"&&Qt.get("symbol-placement")!=="point",La=Qt.get("symbol-placement"),Hn=pi/2,lo=Qt.get("icon-text-fit"),$a;j&&lo!=="none"&&(R.allowVerticalPlacement&&D.vertical&&($a=mC(j,D.vertical,lo,Qt.get("icon-text-fit-padding"),sr,Pr)),Tr&&(j=mC(j,Tr,lo,Qt.get("icon-text-fit-padding"),sr,Pr)));let Xa=(Tn,bo)=>{bo.x<0||bo.x>=za||bo.y<0||bo.y>=za||function(Ya,Uo,wu,hu,uh,$v,td,ch,Ud,Vd,Hd,rf,fh,Td,rd,Dh,xf,Iv,lv,Cl,qu,Tu,Rv,qc,I1){let p0=Ya.addToLineVertexArray(Uo,wu),Gp,Qv,oc,If,ep=0,gg=0,uv=0,R1=0,xS=-1,Uw=-1,g0={},hy=ui("");if(Ya.allowVerticalPlacement&&hu.vertical){let Ad=ch.layout.get("text-rotate").evaluate(qu,{},qc)+90;oc=new cm(Ud,Uo,Vd,Hd,rf,hu.vertical,fh,Td,rd,Ad),td&&(If=new cm(Ud,Uo,Vd,Hd,rf,td,xf,Iv,rd,Ad))}if(uh){let Ad=ch.layout.get("icon-rotate").evaluate(qu,{}),tp=ch.layout.get("icon-text-fit")!=="none",hm=RC(uh,Ad,Rv,tp),Gd=td?RC(td,Ad,Rv,tp):void 0;Qv=new cm(Ud,Uo,Vd,Hd,rf,uh,xf,Iv,!1,Ad),ep=4*hm.length;let Sd=Ya.iconSizeData,yp=null;Sd.kind==="source"?(yp=[v0*ch.layout.get("icon-size").evaluate(qu,{})],yp[0]>lm&&T(`${Ya.layerIds[0]}: Value for "icon-size" is >= ${Wx}. Reduce your "icon-size".`)):Sd.kind==="composite"&&(yp=[v0*Tu.compositeIconSizes[0].evaluate(qu,{},qc),v0*Tu.compositeIconSizes[1].evaluate(qu,{},qc)],(yp[0]>lm||yp[1]>lm)&&T(`${Ya.layerIds[0]}: Value for "icon-size" is >= ${Wx}. Reduce your "icon-size".`)),Ya.addSymbols(Ya.icon,hm,yp,Cl,lv,qu,i.ah.none,Uo,p0.lineStartIndex,p0.lineLength,-1,qc),xS=Ya.icon.placedSymbolArray.length-1,Gd&&(gg=4*Gd.length,Ya.addSymbols(Ya.icon,Gd,yp,Cl,lv,qu,i.ah.vertical,Uo,p0.lineStartIndex,p0.lineLength,-1,qc),Uw=Ya.icon.placedSymbolArray.length-1)}let zh=Object.keys(hu.horizontal);for(let Ad of zh){let tp=hu.horizontal[Ad];if(!Gp){hy=ui(tp.text);let Gd=ch.layout.get("text-rotate").evaluate(qu,{},qc);Gp=new cm(Ud,Uo,Vd,Hd,rf,tp,fh,Td,rd,Gd)}let hm=tp.positionedLines.length===1;if(uv+=FC(Ya,Uo,tp,$v,ch,rd,qu,Dh,p0,hu.vertical?i.ah.horizontal:i.ah.horizontalOnly,hm?zh:[Ad],g0,xS,Tu,qc),hm)break}hu.vertical&&(R1+=FC(Ya,Uo,hu.vertical,$v,ch,rd,qu,Dh,p0,i.ah.vertical,["vertical"],g0,Uw,Tu,qc));let Q9=Gp?Gp.boxStartIndex:Ya.collisionBoxArray.length,Vw=Gp?Gp.boxEndIndex:Ya.collisionBoxArray.length,m0=oc?oc.boxStartIndex:Ya.collisionBoxArray.length,cv=oc?oc.boxEndIndex:Ya.collisionBoxArray.length,UC=Qv?Qv.boxStartIndex:Ya.collisionBoxArray.length,eq=Qv?Qv.boxEndIndex:Ya.collisionBoxArray.length,VC=If?If.boxStartIndex:Ya.collisionBoxArray.length,tq=If?If.boxEndIndex:Ya.collisionBoxArray.length,mp=-1,rb=(Ad,tp)=>Ad&&Ad.circleDiameter?Math.max(Ad.circleDiameter,tp):tp;mp=rb(Gp,mp),mp=rb(oc,mp),mp=rb(Qv,mp),mp=rb(If,mp);let Hw=mp>-1?1:0;Hw&&(mp*=I1/kl),Ya.glyphOffsetArray.length>=E1.MAX_GLYPHS&&T("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),qu.sortKey!==void 0&&Ya.addToSortKeyRanges(Ya.symbolInstances.length,qu.sortKey);let bS=zC(ch,qu,qc),[rq,iq]=function(Ad,tp){let hm=Ad.length,Gd=tp==null?void 0:tp.values;if((Gd==null?void 0:Gd.length)>0)for(let Sd=0;Sd=0?g0.right:-1,g0.center>=0?g0.center:-1,g0.left>=0?g0.left:-1,g0.vertical||-1,xS,Uw,hy,Q9,Vw,m0,cv,UC,eq,VC,tq,Vd,uv,R1,ep,gg,Hw,0,fh,mp,rq,iq)}(R,bo,Tn,D,j,te,$a,R.layers[0],R.collisionBoxArray,S.index,S.sourceLayerIndex,R.index,$r,[ki,ki,ki,ki],Va,Ze,Di,Zi,Io,sr,S,ue,at,Tt,ve)};if(La==="line")for(let Tn of kC(S.geometry,0,0,za,za)){let bo=Z9(Tn,pi,ta,D.vertical||Tr,j,24,ni,R.overscaling,za);for(let Ya of bo)Tr&&J9(R,Tr.text,Hn,Ya)||Xa(Tn,Ya)}else if(La==="line-center"){for(let Tn of S.geometry)if(Tn.length>1){let bo=W9(Tn,ta,D.vertical||Tr,j,24,ni);bo&&Xa(Tn,bo)}}else if(S.type==="Polygon")for(let Tn of Of(S.geometry,0)){let bo=X9(Tn,16);Xa(Tn[0],new vg(bo.x,bo.y,0))}else if(S.type==="LineString")for(let Tn of S.geometry)Xa(Tn,new vg(Tn[0].x,Tn[0].y,0));else if(S.type==="Point")for(let Tn of S.geometry)for(let bo of Tn)Xa([bo],new vg(bo.x,bo.y,0))}function FC(R,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr){let Pr=function(Di,pi,ki,Zi,ta,Va,Io,La){let Hn=Zi.layout.get("text-rotate").evaluate(Va,{})*Math.PI/180,lo=[];for(let $a of pi.positionedLines)for(let Xa of $a.positionedGlyphs){if(!Xa.rect)continue;let Tn=Xa.rect||{},bo=hC+1,Ya=!0,Uo=1,wu=0,hu=(ta||La)&&Xa.vertical,uh=Xa.metrics.advance*Xa.scale/2;if(La&&pi.verticalizable&&(wu=$a.lineOffset/2-(Xa.imageName?-(kl-Xa.metrics.width*Xa.scale)/2:(Xa.scale-1)*kl)),Xa.imageName){let Cl=Io[Xa.imageName];Ya=Cl.sdf,Uo=Cl.pixelRatio,bo=wd/Uo}let $v=ta?[Xa.x+uh,Xa.y]:[0,0],td=ta?[0,0]:[Xa.x+uh+ki[0],Xa.y+ki[1]-wu],ch=[0,0];hu&&(ch=td,td=[0,0]);let Ud=Xa.metrics.isDoubleResolution?2:1,Vd=(Xa.metrics.left-bo)*Xa.scale-uh+td[0],Hd=(-Xa.metrics.top-bo)*Xa.scale+td[1],rf=Vd+Tn.w/Ud*Xa.scale/Uo,fh=Hd+Tn.h/Ud*Xa.scale/Uo,Td=new u(Vd,Hd),rd=new u(rf,Hd),Dh=new u(Vd,fh),xf=new u(rf,fh);if(hu){let Cl=new u(-uh,uh-lh),qu=-Math.PI/2,Tu=kl/2-uh,Rv=new u(5-lh-Tu,-(Xa.imageName?Tu:0)),qc=new u(...ch);Td._rotateAround(qu,Cl)._add(Rv)._add(qc),rd._rotateAround(qu,Cl)._add(Rv)._add(qc),Dh._rotateAround(qu,Cl)._add(Rv)._add(qc),xf._rotateAround(qu,Cl)._add(Rv)._add(qc)}if(Hn){let Cl=Math.sin(Hn),qu=Math.cos(Hn),Tu=[qu,-Cl,Cl,qu];Td._matMult(Tu),rd._matMult(Tu),Dh._matMult(Tu),xf._matMult(Tu)}let Iv=new u(0,0),lv=new u(0,0);lo.push({tl:Td,tr:rd,bl:Dh,br:xf,tex:Tn,writingMode:pi.writingMode,glyphOffset:$v,sectionIndex:Xa.sectionIndex,isSDF:Ya,pixelOffsetTL:Iv,pixelOffsetBR:lv,minFontScaleX:0,minFontScaleY:0})}return lo}(0,D,De,te,ue,ve,j,R.allowVerticalPlacement),$r=R.textSizeData,ni=null;$r.kind==="source"?(ni=[v0*te.layout.get("text-size").evaluate(ve,{})],ni[0]>lm&&T(`${R.layerIds[0]}: Value for "text-size" is >= ${Wx}. Reduce your "text-size".`)):$r.kind==="composite"&&(ni=[v0*sr.compositeTextSizes[0].evaluate(ve,{},Tr),v0*sr.compositeTextSizes[1].evaluate(ve,{},Tr)],(ni[0]>lm||ni[1]>lm)&&T(`${R.layerIds[0]}: Value for "text-size" is >= ${Wx}. Reduce your "text-size".`)),R.addSymbols(R.text,Pr,ni,De,ue,ve,at,S,Ze.lineStartIndex,Ze.lineLength,Qt,Tr);for(let Di of Tt)Ft[Di]=R.text.placedSymbolArray.length-1;return 4*Pr.length}function qC(R){for(let S in R)return R[S];return null}function J9(R,S,D,j){let te=R.compareText;if(S in te){let ue=te[S];for(let ve=ue.length-1;ve>=0;ve--)if(j.dist(ue[ve])>4;if(te!==1)throw new Error(`Got v${te} data when expected v1.`);let ue=OC[15&j];if(!ue)throw new Error("Unrecognized array type.");let[ve]=new Uint16Array(S,2,1),[De]=new Uint32Array(S,4,1);return new gS(De,ve,ue,S)}constructor(S,D=64,j=Float64Array,te){if(isNaN(S)||S<0)throw new Error(`Unpexpected numItems value: ${S}.`);this.numItems=+S,this.nodeSize=Math.min(Math.max(+D,2),65535),this.ArrayType=j,this.IndexArrayType=S<65536?Uint16Array:Uint32Array;let ue=OC.indexOf(this.ArrayType),ve=2*S*this.ArrayType.BYTES_PER_ELEMENT,De=S*this.IndexArrayType.BYTES_PER_ELEMENT,Ze=(8-De%8)%8;if(ue<0)throw new Error(`Unexpected typed array class: ${j}.`);te&&te instanceof ArrayBuffer?(this.data=te,this.ids=new this.IndexArrayType(this.data,8,S),this.coords=new this.ArrayType(this.data,8+De+Ze,2*S),this._pos=2*S,this._finished=!0):(this.data=new ArrayBuffer(8+ve+De+Ze),this.ids=new this.IndexArrayType(this.data,8,S),this.coords=new this.ArrayType(this.data,8+De+Ze,2*S),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+ue]),new Uint16Array(this.data,2,1)[0]=D,new Uint32Array(this.data,4,1)[0]=S)}add(S,D){let j=this._pos>>1;return this.ids[j]=j,this.coords[this._pos++]=S,this.coords[this._pos++]=D,j}finish(){let S=this._pos>>1;if(S!==this.numItems)throw new Error(`Added ${S} items when expected ${this.numItems}.`);return Ow(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(S,D,j,te){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:ue,coords:ve,nodeSize:De}=this,Ze=[0,ue.length-1,0],at=[];for(;Ze.length;){let Tt=Ze.pop()||0,Ft=Ze.pop()||0,Qt=Ze.pop()||0;if(Ft-Qt<=De){for(let $r=Qt;$r<=Ft;$r++){let ni=ve[2*$r],Di=ve[2*$r+1];ni>=S&&ni<=j&&Di>=D&&Di<=te&&at.push(ue[$r])}continue}let sr=Qt+Ft>>1,Tr=ve[2*sr],Pr=ve[2*sr+1];Tr>=S&&Tr<=j&&Pr>=D&&Pr<=te&&at.push(ue[sr]),(Tt===0?S<=Tr:D<=Pr)&&(Ze.push(Qt),Ze.push(sr-1),Ze.push(1-Tt)),(Tt===0?j>=Tr:te>=Pr)&&(Ze.push(sr+1),Ze.push(Ft),Ze.push(1-Tt))}return at}within(S,D,j){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:te,coords:ue,nodeSize:ve}=this,De=[0,te.length-1,0],Ze=[],at=j*j;for(;De.length;){let Tt=De.pop()||0,Ft=De.pop()||0,Qt=De.pop()||0;if(Ft-Qt<=ve){for(let $r=Qt;$r<=Ft;$r++)NC(ue[2*$r],ue[2*$r+1],S,D)<=at&&Ze.push(te[$r]);continue}let sr=Qt+Ft>>1,Tr=ue[2*sr],Pr=ue[2*sr+1];NC(Tr,Pr,S,D)<=at&&Ze.push(te[sr]),(Tt===0?S-j<=Tr:D-j<=Pr)&&(De.push(Qt),De.push(sr-1),De.push(1-Tt)),(Tt===0?S+j>=Tr:D+j>=Pr)&&(De.push(sr+1),De.push(Ft),De.push(1-Tt))}return Ze}}function Ow(R,S,D,j,te,ue){if(te-j<=D)return;let ve=j+te>>1;BC(R,S,ve,j,te,ue),Ow(R,S,D,j,ve-1,1-ue),Ow(R,S,D,ve+1,te,1-ue)}function BC(R,S,D,j,te,ue){for(;te>j;){if(te-j>600){let at=te-j+1,Tt=D-j+1,Ft=Math.log(at),Qt=.5*Math.exp(2*Ft/3),sr=.5*Math.sqrt(Ft*Qt*(at-Qt)/at)*(Tt-at/2<0?-1:1);BC(R,S,D,Math.max(j,Math.floor(D-Tt*Qt/at+sr)),Math.min(te,Math.floor(D+(at-Tt)*Qt/at+sr)),ue)}let ve=S[2*D+ue],De=j,Ze=te;for(eb(R,S,j,D),S[2*te+ue]>ve&&eb(R,S,j,te);Deve;)Ze--}S[2*j+ue]===ve?eb(R,S,j,Ze):(Ze++,eb(R,S,Ze,te)),Ze<=D&&(j=Ze+1),D<=Ze&&(te=Ze-1)}}function eb(R,S,D,j){mS(R,D,j),mS(S,2*D,2*j),mS(S,2*D+1,2*j+1)}function mS(R,S,D){let j=R[S];R[S]=R[D],R[D]=j}function NC(R,S,D,j){let te=R-D,ue=S-j;return te*te+ue*ue}var Bw;i.bg=void 0,(Bw=i.bg||(i.bg={})).create="create",Bw.load="load",Bw.fullLoad="fullLoad";let tb=null,Gf=[],yS=1e3/60,_S="loadTime",Nw="fullLoadTime",$9={mark(R){performance.mark(R)},frame(R){let S=R;tb!=null&&Gf.push(S-tb),tb=S},clearMetrics(){tb=null,Gf=[],performance.clearMeasures(_S),performance.clearMeasures(Nw);for(let R in i.bg)performance.clearMarks(i.bg[R])},getPerformanceMetrics(){performance.measure(_S,i.bg.create,i.bg.load),performance.measure(Nw,i.bg.create,i.bg.fullLoad);let R=performance.getEntriesByName(_S)[0].duration,S=performance.getEntriesByName(Nw)[0].duration,D=Gf.length,j=1/(Gf.reduce((ue,ve)=>ue+ve,0)/D/1e3),te=Gf.filter(ue=>ue>yS).reduce((ue,ve)=>ue+(ve-yS)/yS,0);return{loadTime:R,fullLoadTime:S,fps:j,percentDroppedFrames:te/(D+te)*100,totalFrames:D}}};i.$=class extends Ot{},i.A=Ln,i.B=Fi,i.C=function(R){if(V==null){let S=R.navigator?R.navigator.userAgent:null;V=!!R.safari||!(!S||!(/\b(iPad|iPhone|iPod)\b/.test(S)||S.match("Safari")&&!S.match("Chrome")))}return V},i.D=Da,i.E=Re,i.F=class{constructor(R,S){this.target=R,this.mapId=S,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new uS(()=>this.process()),this.subscription=function(D,j,te,ue){return D.addEventListener(j,te,!1),{unsubscribe:()=>{D.removeEventListener(j,te,!1)}}}(this.target,"message",D=>this.receive(D)),this.globalScope=q(self)?R:window}registerMessageHandler(R,S){this.messageHandlers[R]=S}sendAsync(R,S){return new Promise((D,j)=>{let te=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[te]={resolve:D,reject:j},S&&S.signal.addEventListener("abort",()=>{delete this.resolveRejects[te];let De={id:te,type:"",origin:location.origin,targetMapId:R.targetMapId,sourceMapId:this.mapId};this.target.postMessage(De)},{once:!0});let ue=[],ve=Object.assign(Object.assign({},R),{id:te,sourceMapId:this.mapId,origin:location.origin,data:Ea(R.data,ue)});this.target.postMessage(ve,{transfer:ue})})}receive(R){let S=R.data,D=S.id;if(!(S.origin!=="file://"&&location.origin!=="file://"&&S.origin!=="resource://android"&&location.origin!=="resource://android"&&S.origin!==location.origin||S.targetMapId&&this.mapId!==S.targetMapId)){if(S.type===""){delete this.tasks[D];let j=this.abortControllers[D];return delete this.abortControllers[D],void(j&&j.abort())}if(q(self)||S.mustQueue)return this.tasks[D]=S,this.taskQueue.push(D),void this.invoker.trigger();this.processTask(D,S)}}process(){if(this.taskQueue.length===0)return;let R=this.taskQueue.shift(),S=this.tasks[R];delete this.tasks[R],this.taskQueue.length>0&&this.invoker.trigger(),S&&this.processTask(R,S)}processTask(R,S){return a(this,void 0,void 0,function*(){if(S.type===""){let te=this.resolveRejects[R];return delete this.resolveRejects[R],te?void(S.error?te.reject(qa(S.error)):te.resolve(qa(S.data))):void 0}if(!this.messageHandlers[S.type])return void this.completeTask(R,new Error(`Could not find a registered handler for ${S.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let D=qa(S.data),j=new AbortController;this.abortControllers[R]=j;try{let te=yield this.messageHandlers[S.type](S.sourceMapId,D,j);this.completeTask(R,null,te)}catch(te){this.completeTask(R,te)}})}completeTask(R,S,D){let j=[];delete this.abortControllers[R];let te={id:R,type:"",sourceMapId:this.mapId,origin:location.origin,error:S?Ea(S):null,data:Ea(D,j)};this.target.postMessage(te,{transfer:j})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},i.G=ke,i.H=function(){var R=new Ln(16);return Ln!=Float32Array&&(R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[11]=0,R[12]=0,R[13]=0,R[14]=0),R[0]=1,R[5]=1,R[10]=1,R[15]=1,R},i.I=kw,i.J=function(R,S,D){var j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr=D[0],$r=D[1],ni=D[2];return S===R?(R[12]=S[0]*Pr+S[4]*$r+S[8]*ni+S[12],R[13]=S[1]*Pr+S[5]*$r+S[9]*ni+S[13],R[14]=S[2]*Pr+S[6]*$r+S[10]*ni+S[14],R[15]=S[3]*Pr+S[7]*$r+S[11]*ni+S[15]):(te=S[1],ue=S[2],ve=S[3],De=S[4],Ze=S[5],at=S[6],Tt=S[7],Ft=S[8],Qt=S[9],sr=S[10],Tr=S[11],R[0]=j=S[0],R[1]=te,R[2]=ue,R[3]=ve,R[4]=De,R[5]=Ze,R[6]=at,R[7]=Tt,R[8]=Ft,R[9]=Qt,R[10]=sr,R[11]=Tr,R[12]=j*Pr+De*$r+Ft*ni+S[12],R[13]=te*Pr+Ze*$r+Qt*ni+S[13],R[14]=ue*Pr+at*$r+sr*ni+S[14],R[15]=ve*Pr+Tt*$r+Tr*ni+S[15]),R},i.K=function(R,S,D){var j=D[0],te=D[1],ue=D[2];return R[0]=S[0]*j,R[1]=S[1]*j,R[2]=S[2]*j,R[3]=S[3]*j,R[4]=S[4]*te,R[5]=S[5]*te,R[6]=S[6]*te,R[7]=S[7]*te,R[8]=S[8]*ue,R[9]=S[9]*ue,R[10]=S[10]*ue,R[11]=S[11]*ue,R[12]=S[12],R[13]=S[13],R[14]=S[14],R[15]=S[15],R},i.L=gn,i.M=function(R,S){let D={};for(let j=0;j{let S=window.document.createElement("video");return S.muted=!0,new Promise(D=>{S.onloadstart=()=>{D(S)};for(let j of R){let te=window.document.createElement("source");Ee(j)||(S.crossOrigin="Anonymous"),te.src=j,S.appendChild(te)}})},i.a4=function(){return _++},i.a5=Qi,i.a6=E1,i.a7=Pc,i.a8=xl,i.a9=hS,i.aA=function(R){if(R.type==="custom")return new lS(R);switch(R.type){case"background":return new G9(R);case"circle":return new wn(R);case"fill":return new gr(R);case"fill-extrusion":return new Ev(R);case"heatmap":return new Po(R);case"hillshade":return new $c(R);case"line":return new ay(R);case"raster":return new Kx(R);case"symbol":return new uy(R)}},i.aB=g,i.aC=function(R,S){if(!R)return[{command:"setStyle",args:[S]}];let D=[];try{if(!ct(R.version,S.version))return[{command:"setStyle",args:[S]}];ct(R.center,S.center)||D.push({command:"setCenter",args:[S.center]}),ct(R.zoom,S.zoom)||D.push({command:"setZoom",args:[S.zoom]}),ct(R.bearing,S.bearing)||D.push({command:"setBearing",args:[S.bearing]}),ct(R.pitch,S.pitch)||D.push({command:"setPitch",args:[S.pitch]}),ct(R.sprite,S.sprite)||D.push({command:"setSprite",args:[S.sprite]}),ct(R.glyphs,S.glyphs)||D.push({command:"setGlyphs",args:[S.glyphs]}),ct(R.transition,S.transition)||D.push({command:"setTransition",args:[S.transition]}),ct(R.light,S.light)||D.push({command:"setLight",args:[S.light]}),ct(R.terrain,S.terrain)||D.push({command:"setTerrain",args:[S.terrain]}),ct(R.sky,S.sky)||D.push({command:"setSky",args:[S.sky]}),ct(R.projection,S.projection)||D.push({command:"setProjection",args:[S.projection]});let j={},te=[];(function(ve,De,Ze,at){let Tt;for(Tt in De=De||{},ve=ve||{})Object.prototype.hasOwnProperty.call(ve,Tt)&&(Object.prototype.hasOwnProperty.call(De,Tt)||ot(Tt,Ze,at));for(Tt in De)Object.prototype.hasOwnProperty.call(De,Tt)&&(Object.prototype.hasOwnProperty.call(ve,Tt)?ct(ve[Tt],De[Tt])||(ve[Tt].type==="geojson"&&De[Tt].type==="geojson"&&kt(ve,De,Tt)?qt(Ze,{command:"setGeoJSONSourceData",args:[Tt,De[Tt].data]}):Rt(Tt,De,Ze,at)):rt(Tt,De,Ze))})(R.sources,S.sources,te,j);let ue=[];R.layers&&R.layers.forEach(ve=>{"source"in ve&&j[ve.source]?D.push({command:"removeLayer",args:[ve.id]}):ue.push(ve)}),D=D.concat(te),function(ve,De,Ze){De=De||[];let at=(ve=ve||[]).map(Yt),Tt=De.map(Yt),Ft=ve.reduce(xr,{}),Qt=De.reduce(xr,{}),sr=at.slice(),Tr=Object.create(null),Pr,$r,ni,Di,pi;for(let ki=0,Zi=0;ki@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(D,j,te,ue)=>{let ve=te||ue;return S[j]=!ve||ve.toLowerCase(),""}),S["max-age"]){let D=parseInt(S["max-age"],10);isNaN(D)?delete S["max-age"]:S["max-age"]=D}return S},i.ab=function(R,S){let D=[];for(let j in R)j in S||D.push(j);return D},i.ac=k,i.ad=function(R,S,D){var j=Math.sin(D),te=Math.cos(D),ue=S[0],ve=S[1],De=S[2],Ze=S[3],at=S[4],Tt=S[5],Ft=S[6],Qt=S[7];return S!==R&&(R[8]=S[8],R[9]=S[9],R[10]=S[10],R[11]=S[11],R[12]=S[12],R[13]=S[13],R[14]=S[14],R[15]=S[15]),R[0]=ue*te+at*j,R[1]=ve*te+Tt*j,R[2]=De*te+Ft*j,R[3]=Ze*te+Qt*j,R[4]=at*te-ue*j,R[5]=Tt*te-ve*j,R[6]=Ft*te-De*j,R[7]=Qt*te-Ze*j,R},i.ae=function(R){var S=new Ln(16);return S[0]=R[0],S[1]=R[1],S[2]=R[2],S[3]=R[3],S[4]=R[4],S[5]=R[5],S[6]=R[6],S[7]=R[7],S[8]=R[8],S[9]=R[9],S[10]=R[10],S[11]=R[11],S[12]=R[12],S[13]=R[13],S[14]=R[14],S[15]=R[15],S},i.af=Za,i.ag=function(R,S){let D=0,j=0;if(R.kind==="constant")j=R.layoutSize;else if(R.kind!=="source"){let{interpolationType:te,minZoom:ue,maxZoom:ve}=R,De=te?k(xo.interpolationFactor(te,S,ue,ve),0,1):0;R.kind==="camera"?j=Mo.number(R.minSize,R.maxSize,De):D=De}return{uSizeT:D,uSize:j}},i.ai=function(R,{uSize:S,uSizeT:D},{lowerSize:j,upperSize:te}){return R.kind==="source"?j/v0:R.kind==="composite"?Mo.number(j/v0,te/v0,D):S},i.aj=nS,i.ak=function(R,S,D,j){let te=S.y-R.y,ue=S.x-R.x,ve=j.y-D.y,De=j.x-D.x,Ze=ve*ue-De*te;if(Ze===0)return null;let at=(De*(R.y-D.y)-ve*(R.x-D.x))/Ze;return new u(R.x+at*ue,R.y+at*te)},i.al=kC,i.am=xc,i.an=Un,i.ao=function(R){let S=1/0,D=1/0,j=-1/0,te=-1/0;for(let ue of R)S=Math.min(S,ue.x),D=Math.min(D,ue.y),j=Math.max(j,ue.x),te=Math.max(te,ue.y);return[S,D,j,te]},i.ap=kl,i.ar=iS,i.as=function(R,S){var D=S[0],j=S[1],te=S[2],ue=S[3],ve=S[4],De=S[5],Ze=S[6],at=S[7],Tt=S[8],Ft=S[9],Qt=S[10],sr=S[11],Tr=S[12],Pr=S[13],$r=S[14],ni=S[15],Di=D*De-j*ve,pi=D*Ze-te*ve,ki=D*at-ue*ve,Zi=j*Ze-te*De,ta=j*at-ue*De,Va=te*at-ue*Ze,Io=Tt*Pr-Ft*Tr,La=Tt*$r-Qt*Tr,Hn=Tt*ni-sr*Tr,lo=Ft*$r-Qt*Pr,$a=Ft*ni-sr*Pr,Xa=Qt*ni-sr*$r,Tn=Di*Xa-pi*$a+ki*lo+Zi*Hn-ta*La+Va*Io;return Tn?(R[0]=(De*Xa-Ze*$a+at*lo)*(Tn=1/Tn),R[1]=(te*$a-j*Xa-ue*lo)*Tn,R[2]=(Pr*Va-$r*ta+ni*Zi)*Tn,R[3]=(Qt*ta-Ft*Va-sr*Zi)*Tn,R[4]=(Ze*Hn-ve*Xa-at*La)*Tn,R[5]=(D*Xa-te*Hn+ue*La)*Tn,R[6]=($r*ki-Tr*Va-ni*pi)*Tn,R[7]=(Tt*Va-Qt*ki+sr*pi)*Tn,R[8]=(ve*$a-De*Hn+at*Io)*Tn,R[9]=(j*Hn-D*$a-ue*Io)*Tn,R[10]=(Tr*ta-Pr*ki+ni*Di)*Tn,R[11]=(Ft*ki-Tt*ta-sr*Di)*Tn,R[12]=(De*La-ve*lo-Ze*Io)*Tn,R[13]=(D*lo-j*La+te*Io)*Tn,R[14]=(Pr*pi-Tr*Zi-$r*Di)*Tn,R[15]=(Tt*Zi-Ft*pi+Qt*Di)*Tn,R):null},i.at=pS,i.au=Iw,i.av=gS,i.aw=function(){let R={},S=ce.$version;for(let D in ce.$root){let j=ce.$root[D];if(j.required){let te=null;te=D==="version"?S:j.type==="array"?[]:{},te!=null&&(R[D]=te)}}return R},i.ax=Cn,i.ay=ie,i.az=function(R){R=R.slice();let S=Object.create(null);for(let D=0;D25||j<0||j>=1||D<0||D>=1)},i.bc=function(R,S){return R[0]=S[0],R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=S[1],R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=S[2],R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R},i.bd=class extends yt{},i.be=cS,i.bf=$9,i.bh=ge,i.bi=function(R,S){_e.REGISTERED_PROTOCOLS[R]=S},i.bj=function(R){delete _e.REGISTERED_PROTOCOLS[R]},i.bk=function(R,S){let D={};for(let te=0;teXa*kl)}let La=ve?"center":D.get("text-justify").evaluate(at,{},R.canonical),Hn=D.get("symbol-placement")==="point"?D.get("text-max-width").evaluate(at,{},R.canonical)*kl:1/0,lo=()=>{R.bucket.allowVerticalPlacement&&Ua(ki)&&(Tr.vertical=Gx(Pr,R.glyphMap,R.glyphPositions,R.imagePositions,Tt,Hn,ue,Va,"left",ta,ni,i.ah.vertical,!0,Qt,Ft))};if(!ve&&Io){let $a=new Set;if(La==="auto")for(let Tn=0;Tna(void 0,void 0,void 0,function*(){if(R.byteLength===0)return createImageBitmap(new ImageData(1,1));let S=new Blob([new Uint8Array(R)],{type:"image/png"});try{return createImageBitmap(S)}catch(D){throw new Error(`Could not load image because of ${D.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),i.e=L,i.f=R=>new Promise((S,D)=>{let j=new Image;j.onload=()=>{S(j),URL.revokeObjectURL(j.src),j.onload=null,window.requestAnimationFrame(()=>{j.src=X})},j.onerror=()=>D(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));let te=new Blob([new Uint8Array(R)],{type:"image/png"});j.src=R.byteLength?URL.createObjectURL(te):X}),i.g=Me,i.h=(R,S)=>Te(L(R,{type:"json"}),S),i.i=q,i.j=me,i.k=Ce,i.l=(R,S)=>Te(L(R,{type:"arrayBuffer"}),S),i.m=Te,i.n=function(R){return new eS(R).readFields(yQ,[])},i.o=Ao,i.p=rS,i.q=le,i.r=xi,i.s=Ee,i.t=Ti,i.u=fi,i.v=ce,i.w=T,i.x=function([R,S,D]){return S+=90,S*=Math.PI/180,D*=Math.PI/180,{x:R*Math.cos(S)*Math.sin(D),y:R*Math.sin(S)*Math.sin(D),z:R*Math.cos(D)}},i.y=Mo,i.z=Ko}),r("worker",["./shared"],function(i){"use strict";class a{constructor(Ne){this.keyCache={},Ne&&this.replace(Ne)}replace(Ne){this._layerConfigs={},this._layers={},this.update(Ne,[])}update(Ne,Ye){for(let Xe of Ne){this._layerConfigs[Xe.id]=Xe;let ht=this._layers[Xe.id]=i.aA(Xe);ht._featureFilter=i.a7(ht.filter),this.keyCache[Xe.id]&&delete this.keyCache[Xe.id]}for(let Xe of Ye)delete this.keyCache[Xe],delete this._layerConfigs[Xe],delete this._layers[Xe];this.familiesBySource={};let Ve=i.bk(Object.values(this._layerConfigs),this.keyCache);for(let Xe of Ve){let ht=Xe.map(Vt=>this._layers[Vt.id]),Le=ht[0];if(Le.visibility==="none")continue;let xe=Le.source||"",Se=this.familiesBySource[xe];Se||(Se=this.familiesBySource[xe]={});let lt=Le.sourceLayer||"_geojsonTileLayer",Gt=Se[lt];Gt||(Gt=Se[lt]=[]),Gt.push(ht)}}}class o{constructor(Ne){let Ye={},Ve=[];for(let xe in Ne){let Se=Ne[xe],lt=Ye[xe]={};for(let Gt in Se){let Vt=Se[+Gt];if(!Vt||Vt.bitmap.width===0||Vt.bitmap.height===0)continue;let ar={x:0,y:0,w:Vt.bitmap.width+2,h:Vt.bitmap.height+2};Ve.push(ar),lt[Gt]={rect:ar,metrics:Vt.metrics}}}let{w:Xe,h:ht}=i.p(Ve),Le=new i.o({width:Xe||1,height:ht||1});for(let xe in Ne){let Se=Ne[xe];for(let lt in Se){let Gt=Se[+lt];if(!Gt||Gt.bitmap.width===0||Gt.bitmap.height===0)continue;let Vt=Ye[xe][lt].rect;i.o.copy(Gt.bitmap,Le,{x:0,y:0},{x:Vt.x+1,y:Vt.y+1},Gt.bitmap)}}this.image=Le,this.positions=Ye}}i.bl("GlyphAtlas",o);class s{constructor(Ne){this.tileID=new i.S(Ne.tileID.overscaledZ,Ne.tileID.wrap,Ne.tileID.canonical.z,Ne.tileID.canonical.x,Ne.tileID.canonical.y),this.uid=Ne.uid,this.zoom=Ne.zoom,this.pixelRatio=Ne.pixelRatio,this.tileSize=Ne.tileSize,this.source=Ne.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=Ne.showCollisionBoxes,this.collectResourceTiming=!!Ne.collectResourceTiming,this.returnDependencies=!!Ne.returnDependencies,this.promoteId=Ne.promoteId,this.inFlightDependencies=[]}parse(Ne,Ye,Ve,Xe){return i._(this,void 0,void 0,function*(){this.status="parsing",this.data=Ne,this.collisionBoxArray=new i.a5;let ht=new i.bm(Object.keys(Ne.layers).sort()),Le=new i.bn(this.tileID,this.promoteId);Le.bucketLayerIDs=[];let xe={},Se={featureIndex:Le,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:Ve},lt=Ye.familiesBySource[this.source];for(let _n in lt){let $i=Ne.layers[_n];if(!$i)continue;$i.version===1&&i.w(`Vector tile source "${this.source}" layer "${_n}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let zn=ht.encode(_n),Wn=[];for(let It=0;It<$i.length;It++){let ft=$i.feature(It),jt=Le.getId(ft,_n);Wn.push({feature:ft,id:jt,index:It,sourceLayerIndex:zn})}for(let It of lt[_n]){let ft=It[0];ft.source!==this.source&&i.w(`layer.source = ${ft.source} does not equal this.source = ${this.source}`),ft.minzoom&&this.zoom=ft.maxzoom||ft.visibility!=="none"&&(l(It,this.zoom,Ve),(xe[ft.id]=ft.createBucket({index:Le.bucketLayerIDs.length,layers:It,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:zn,sourceID:this.source})).populate(Wn,Se,this.tileID.canonical),Le.bucketLayerIDs.push(It.map(jt=>jt.id)))}}let Gt=i.aF(Se.glyphDependencies,_n=>Object.keys(_n).map(Number));this.inFlightDependencies.forEach(_n=>_n==null?void 0:_n.abort()),this.inFlightDependencies=[];let Vt=Promise.resolve({});if(Object.keys(Gt).length){let _n=new AbortController;this.inFlightDependencies.push(_n),Vt=Xe.sendAsync({type:"GG",data:{stacks:Gt,source:this.source,tileID:this.tileID,type:"glyphs"}},_n)}let ar=Object.keys(Se.iconDependencies),Qr=Promise.resolve({});if(ar.length){let _n=new AbortController;this.inFlightDependencies.push(_n),Qr=Xe.sendAsync({type:"GI",data:{icons:ar,source:this.source,tileID:this.tileID,type:"icons"}},_n)}let ai=Object.keys(Se.patternDependencies),jr=Promise.resolve({});if(ai.length){let _n=new AbortController;this.inFlightDependencies.push(_n),jr=Xe.sendAsync({type:"GI",data:{icons:ai,source:this.source,tileID:this.tileID,type:"patterns"}},_n)}let[ri,bi,nn]=yield Promise.all([Vt,Qr,jr]),Wi=new o(ri),Ni=new i.bo(bi,nn);for(let _n in xe){let $i=xe[_n];$i instanceof i.a6?(l($i.layers,this.zoom,Ve),i.bp({bucket:$i,glyphMap:ri,glyphPositions:Wi.positions,imageMap:bi,imagePositions:Ni.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):$i.hasPattern&&($i instanceof i.bq||$i instanceof i.br||$i instanceof i.bs)&&(l($i.layers,this.zoom,Ve),$i.addFeatures(Se,this.tileID.canonical,Ni.patternPositions))}return this.status="done",{buckets:Object.values(xe).filter(_n=>!_n.isEmpty()),featureIndex:Le,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:Wi.image,imageAtlas:Ni,glyphMap:this.returnDependencies?ri:null,iconMap:this.returnDependencies?bi:null,glyphPositions:this.returnDependencies?Wi.positions:null}})}}function l(ut,Ne,Ye){let Ve=new i.z(Ne);for(let Xe of ut)Xe.recalculate(Ve,Ye)}class u{constructor(Ne,Ye,Ve){this.actor=Ne,this.layerIndex=Ye,this.availableImages=Ve,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(Ne,Ye){return i._(this,void 0,void 0,function*(){let Ve=yield i.l(Ne.request,Ye);try{return{vectorTile:new i.bt.VectorTile(new i.bu(Ve.data)),rawData:Ve.data,cacheControl:Ve.cacheControl,expires:Ve.expires}}catch(Xe){let ht=new Uint8Array(Ve.data),Le=`Unable to parse the tile at ${Ne.request.url}, `;throw Le+=ht[0]===31&&ht[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${Xe.message}`,new Error(Le)}})}loadTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=Ne.uid,Ve=!!(Ne&&Ne.request&&Ne.request.collectResourceTiming)&&new i.bv(Ne.request),Xe=new s(Ne);this.loading[Ye]=Xe;let ht=new AbortController;Xe.abort=ht;try{let Le=yield this.loadVectorTile(Ne,ht);if(delete this.loading[Ye],!Le)return null;let xe=Le.rawData,Se={};Le.expires&&(Se.expires=Le.expires),Le.cacheControl&&(Se.cacheControl=Le.cacheControl);let lt={};if(Ve){let Vt=Ve.finish();Vt&&(lt.resourceTiming=JSON.parse(JSON.stringify(Vt)))}Xe.vectorTile=Le.vectorTile;let Gt=Xe.parse(Le.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[Ye]=Xe,this.fetching[Ye]={rawTileData:xe,cacheControl:Se,resourceTiming:lt};try{let Vt=yield Gt;return i.e({rawTileData:xe.slice(0)},Vt,Se,lt)}finally{delete this.fetching[Ye]}}catch(Le){throw delete this.loading[Ye],Xe.status="done",this.loaded[Ye]=Xe,Le}})}reloadTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=Ne.uid;if(!this.loaded||!this.loaded[Ye])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let Ve=this.loaded[Ye];if(Ve.showCollisionBoxes=Ne.showCollisionBoxes,Ve.status==="parsing"){let Xe=yield Ve.parse(Ve.vectorTile,this.layerIndex,this.availableImages,this.actor),ht;if(this.fetching[Ye]){let{rawTileData:Le,cacheControl:xe,resourceTiming:Se}=this.fetching[Ye];delete this.fetching[Ye],ht=i.e({rawTileData:Le.slice(0)},Xe,xe,Se)}else ht=Xe;return ht}if(Ve.status==="done"&&Ve.vectorTile)return Ve.parse(Ve.vectorTile,this.layerIndex,this.availableImages,this.actor)})}abortTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=this.loading,Ve=Ne.uid;Ye&&Ye[Ve]&&Ye[Ve].abort&&(Ye[Ve].abort.abort(),delete Ye[Ve])})}removeTile(Ne){return i._(this,void 0,void 0,function*(){this.loaded&&this.loaded[Ne.uid]&&delete this.loaded[Ne.uid]})}}class c{constructor(){this.loaded={}}loadTile(Ne){return i._(this,void 0,void 0,function*(){let{uid:Ye,encoding:Ve,rawImageData:Xe,redFactor:ht,greenFactor:Le,blueFactor:xe,baseShift:Se}=Ne,lt=Xe.width+2,Gt=Xe.height+2,Vt=i.b(Xe)?new i.R({width:lt,height:Gt},yield i.bw(Xe,-1,-1,lt,Gt)):Xe,ar=new i.bx(Ye,Vt,Ve,ht,Le,xe,Se);return this.loaded=this.loaded||{},this.loaded[Ye]=ar,ar})}removeTile(Ne){let Ye=this.loaded,Ve=Ne.uid;Ye&&Ye[Ve]&&delete Ye[Ve]}}function f(ut,Ne){if(ut.length!==0){h(ut[0],Ne);for(var Ye=1;Ye=Math.abs(xe)?Ye-Se+xe:xe-Se+Ye,Ye=Se}Ye+Ve>=0!=!!Ne&&ut.reverse()}var d=i.by(function ut(Ne,Ye){var Ve,Xe=Ne&&Ne.type;if(Xe==="FeatureCollection")for(Ve=0;Ve>31}function q(ut,Ne){for(var Ye=ut.loadGeometry(),Ve=ut.type,Xe=0,ht=0,Le=Ye.length,xe=0;xeut},G=Math.fround||(N=new Float32Array(1),ut=>(N[0]=+ut,N[0]));var N;let W=3,re=5,ae=6;class _e{constructor(Ne){this.options=Object.assign(Object.create(X),Ne),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(Ne){let{log:Ye,minZoom:Ve,maxZoom:Xe}=this.options;Ye&&console.time("total time");let ht=`prepare ${Ne.length} points`;Ye&&console.time(ht),this.points=Ne;let Le=[];for(let Se=0;Se=Ve;Se--){let lt=+Date.now();xe=this.trees[Se]=this._createTree(this._cluster(xe,Se)),Ye&&console.log("z%d: %d clusters in %dms",Se,xe.numItems,+Date.now()-lt)}return Ye&&console.timeEnd("total time"),this}getClusters(Ne,Ye){let Ve=((Ne[0]+180)%360+360)%360-180,Xe=Math.max(-90,Math.min(90,Ne[1])),ht=Ne[2]===180?180:((Ne[2]+180)%360+360)%360-180,Le=Math.max(-90,Math.min(90,Ne[3]));if(Ne[2]-Ne[0]>=360)Ve=-180,ht=180;else if(Ve>ht){let Vt=this.getClusters([Ve,Xe,180,Le],Ye),ar=this.getClusters([-180,Xe,ht,Le],Ye);return Vt.concat(ar)}let xe=this.trees[this._limitZoom(Ye)],Se=xe.range(ge(Ve),ie(Le),ge(ht),ie(Xe)),lt=xe.data,Gt=[];for(let Vt of Se){let ar=this.stride*Vt;Gt.push(lt[ar+re]>1?Me(lt,ar,this.clusterProps):this.points[lt[ar+W]])}return Gt}getChildren(Ne){let Ye=this._getOriginId(Ne),Ve=this._getOriginZoom(Ne),Xe="No cluster with the specified id.",ht=this.trees[Ve];if(!ht)throw new Error(Xe);let Le=ht.data;if(Ye*this.stride>=Le.length)throw new Error(Xe);let xe=this.options.radius/(this.options.extent*Math.pow(2,Ve-1)),Se=ht.within(Le[Ye*this.stride],Le[Ye*this.stride+1],xe),lt=[];for(let Gt of Se){let Vt=Gt*this.stride;Le[Vt+4]===Ne&<.push(Le[Vt+re]>1?Me(Le,Vt,this.clusterProps):this.points[Le[Vt+W]])}if(lt.length===0)throw new Error(Xe);return lt}getLeaves(Ne,Ye,Ve){let Xe=[];return this._appendLeaves(Xe,Ne,Ye=Ye||10,Ve=Ve||0,0),Xe}getTile(Ne,Ye,Ve){let Xe=this.trees[this._limitZoom(Ne)],ht=Math.pow(2,Ne),{extent:Le,radius:xe}=this.options,Se=xe/Le,lt=(Ve-Se)/ht,Gt=(Ve+1+Se)/ht,Vt={features:[]};return this._addTileFeatures(Xe.range((Ye-Se)/ht,lt,(Ye+1+Se)/ht,Gt),Xe.data,Ye,Ve,ht,Vt),Ye===0&&this._addTileFeatures(Xe.range(1-Se/ht,lt,1,Gt),Xe.data,ht,Ve,ht,Vt),Ye===ht-1&&this._addTileFeatures(Xe.range(0,lt,Se/ht,Gt),Xe.data,-1,Ve,ht,Vt),Vt.features.length?Vt:null}getClusterExpansionZoom(Ne){let Ye=this._getOriginZoom(Ne)-1;for(;Ye<=this.options.maxZoom;){let Ve=this.getChildren(Ne);if(Ye++,Ve.length!==1)break;Ne=Ve[0].properties.cluster_id}return Ye}_appendLeaves(Ne,Ye,Ve,Xe,ht){let Le=this.getChildren(Ye);for(let xe of Le){let Se=xe.properties;if(Se&&Se.cluster?ht+Se.point_count<=Xe?ht+=Se.point_count:ht=this._appendLeaves(Ne,Se.cluster_id,Ve,Xe,ht):ht1,Gt,Vt,ar;if(lt)Gt=ke(Ye,Se,this.clusterProps),Vt=Ye[Se],ar=Ye[Se+1];else{let jr=this.points[Ye[Se+W]];Gt=jr.properties;let[ri,bi]=jr.geometry.coordinates;Vt=ge(ri),ar=ie(bi)}let Qr={type:1,geometry:[[Math.round(this.options.extent*(Vt*ht-Ve)),Math.round(this.options.extent*(ar*ht-Xe))]],tags:Gt},ai;ai=lt||this.options.generateId?Ye[Se+W]:this.points[Ye[Se+W]].id,ai!==void 0&&(Qr.id=ai),Le.features.push(Qr)}}_limitZoom(Ne){return Math.max(this.options.minZoom,Math.min(Math.floor(+Ne),this.options.maxZoom+1))}_cluster(Ne,Ye){let{radius:Ve,extent:Xe,reduce:ht,minPoints:Le}=this.options,xe=Ve/(Xe*Math.pow(2,Ye)),Se=Ne.data,lt=[],Gt=this.stride;for(let Vt=0;VtYe&&(ri+=Se[nn+re])}if(ri>jr&&ri>=Le){let bi,nn=ar*jr,Wi=Qr*jr,Ni=-1,_n=((Vt/Gt|0)<<5)+(Ye+1)+this.points.length;for(let $i of ai){let zn=$i*Gt;if(Se[zn+2]<=Ye)continue;Se[zn+2]=Ye;let Wn=Se[zn+re];nn+=Se[zn]*Wn,Wi+=Se[zn+1]*Wn,Se[zn+4]=_n,ht&&(bi||(bi=this._map(Se,Vt,!0),Ni=this.clusterProps.length,this.clusterProps.push(bi)),ht(bi,this._map(Se,zn)))}Se[Vt+4]=_n,lt.push(nn/ri,Wi/ri,1/0,_n,-1,ri),ht&<.push(Ni)}else{for(let bi=0;bi1)for(let bi of ai){let nn=bi*Gt;if(!(Se[nn+2]<=Ye)){Se[nn+2]=Ye;for(let Wi=0;Wi>5}_getOriginZoom(Ne){return(Ne-this.points.length)%32}_map(Ne,Ye,Ve){if(Ne[Ye+re]>1){let Le=this.clusterProps[Ne[Ye+ae]];return Ve?Object.assign({},Le):Le}let Xe=this.points[Ne[Ye+W]].properties,ht=this.options.map(Xe);return Ve&&ht===Xe?Object.assign({},ht):ht}}function Me(ut,Ne,Ye){return{type:"Feature",id:ut[Ne+W],properties:ke(ut,Ne,Ye),geometry:{type:"Point",coordinates:[(Ve=ut[Ne],360*(Ve-.5)),Te(ut[Ne+1])]}};var Ve}function ke(ut,Ne,Ye){let Ve=ut[Ne+re],Xe=Ve>=1e4?`${Math.round(Ve/1e3)}k`:Ve>=1e3?Math.round(Ve/100)/10+"k":Ve,ht=ut[Ne+ae],Le=ht===-1?{}:Object.assign({},Ye[ht]);return Object.assign(Le,{cluster:!0,cluster_id:ut[Ne+W],point_count:Ve,point_count_abbreviated:Xe})}function ge(ut){return ut/360+.5}function ie(ut){let Ne=Math.sin(ut*Math.PI/180),Ye=.5-.25*Math.log((1+Ne)/(1-Ne))/Math.PI;return Ye<0?0:Ye>1?1:Ye}function Te(ut){let Ne=(180-360*ut)*Math.PI/180;return 360*Math.atan(Math.exp(Ne))/Math.PI-90}function Ee(ut,Ne,Ye,Ve){let Xe=Ve,ht=Ne+(Ye-Ne>>1),Le,xe=Ye-Ne,Se=ut[Ne],lt=ut[Ne+1],Gt=ut[Ye],Vt=ut[Ye+1];for(let ar=Ne+3;arXe)Le=ar,Xe=Qr;else if(Qr===Xe){let ai=Math.abs(ar-ht);aiVe&&(Le-Ne>3&&Ee(ut,Ne,Le,Ve),ut[Le+2]=Xe,Ye-Le>3&&Ee(ut,Le,Ye,Ve))}function Ae(ut,Ne,Ye,Ve,Xe,ht){let Le=Xe-Ye,xe=ht-Ve;if(Le!==0||xe!==0){let Se=((ut-Ye)*Le+(Ne-Ve)*xe)/(Le*Le+xe*xe);Se>1?(Ye=Xe,Ve=ht):Se>0&&(Ye+=Le*Se,Ve+=xe*Se)}return Le=ut-Ye,xe=Ne-Ve,Le*Le+xe*xe}function ze(ut,Ne,Ye,Ve){let Xe={id:ut==null?null:ut,type:Ne,geometry:Ye,tags:Ve,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(Ne==="Point"||Ne==="MultiPoint"||Ne==="LineString")Ce(Xe,Ye);else if(Ne==="Polygon")Ce(Xe,Ye[0]);else if(Ne==="MultiLineString")for(let ht of Ye)Ce(Xe,ht);else if(Ne==="MultiPolygon")for(let ht of Ye)Ce(Xe,ht[0]);return Xe}function Ce(ut,Ne){for(let Ye=0;Ye0&&(Le+=Ve?(Xe*Gt-lt*ht)/2:Math.sqrt(Math.pow(lt-Xe,2)+Math.pow(Gt-ht,2))),Xe=lt,ht=Gt}let xe=Ne.length-3;Ne[2]=1,Ee(Ne,0,xe,Ye),Ne[xe+2]=1,Ne.size=Math.abs(Le),Ne.start=0,Ne.end=Ne.size}function Ge(ut,Ne,Ye,Ve){for(let Xe=0;Xe1?1:Ye}function qt(ut,Ne,Ye,Ve,Xe,ht,Le,xe){if(Ve/=Ne,ht>=(Ye/=Ne)&&Le=Ve)return null;let Se=[];for(let lt of ut){let Gt=lt.geometry,Vt=lt.type,ar=Xe===0?lt.minX:lt.minY,Qr=Xe===0?lt.maxX:lt.maxY;if(ar>=Ye&&Qr=Ve)continue;let ai=[];if(Vt==="Point"||Vt==="MultiPoint")rt(Gt,ai,Ye,Ve,Xe);else if(Vt==="LineString")ot(Gt,ai,Ye,Ve,Xe,!1,xe.lineMetrics);else if(Vt==="MultiLineString")kt(Gt,ai,Ye,Ve,Xe,!1);else if(Vt==="Polygon")kt(Gt,ai,Ye,Ve,Xe,!0);else if(Vt==="MultiPolygon")for(let jr of Gt){let ri=[];kt(jr,ri,Ye,Ve,Xe,!0),ri.length&&ai.push(ri)}if(ai.length){if(xe.lineMetrics&&Vt==="LineString"){for(let jr of ai)Se.push(ze(lt.id,Vt,jr,lt.tags));continue}Vt!=="LineString"&&Vt!=="MultiLineString"||(ai.length===1?(Vt="LineString",ai=ai[0]):Vt="MultiLineString"),Vt!=="Point"&&Vt!=="MultiPoint"||(Vt=ai.length===3?"Point":"MultiPoint"),Se.push(ze(lt.id,Vt,ai,lt.tags))}}return Se.length?Se:null}function rt(ut,Ne,Ye,Ve,Xe){for(let ht=0;ht=Ye&&Le<=Ve&&Ct(Ne,ut[ht],ut[ht+1],ut[ht+2])}}function ot(ut,Ne,Ye,Ve,Xe,ht,Le){let xe=Rt(ut),Se=Xe===0?Yt:xr,lt,Gt,Vt=ut.start;for(let ri=0;riYe&&(Gt=Se(xe,bi,nn,Ni,_n,Ye),Le&&(xe.start=Vt+lt*Gt)):$i>Ve?zn=Ye&&(Gt=Se(xe,bi,nn,Ni,_n,Ye),Wn=!0),zn>Ve&&$i<=Ve&&(Gt=Se(xe,bi,nn,Ni,_n,Ve),Wn=!0),!ht&&Wn&&(Le&&(xe.end=Vt+lt*Gt),Ne.push(xe),xe=Rt(ut)),Le&&(Vt+=lt)}let ar=ut.length-3,Qr=ut[ar],ai=ut[ar+1],jr=Xe===0?Qr:ai;jr>=Ye&&jr<=Ve&&Ct(xe,Qr,ai,ut[ar+2]),ar=xe.length-3,ht&&ar>=3&&(xe[ar]!==xe[0]||xe[ar+1]!==xe[1])&&Ct(xe,xe[0],xe[1],xe[2]),xe.length&&Ne.push(xe)}function Rt(ut){let Ne=[];return Ne.size=ut.size,Ne.start=ut.start,Ne.end=ut.end,Ne}function kt(ut,Ne,Ye,Ve,Xe,ht){for(let Le of ut)ot(Le,Ne,Ye,Ve,Xe,ht,!1)}function Ct(ut,Ne,Ye,Ve){ut.push(Ne,Ye,Ve)}function Yt(ut,Ne,Ye,Ve,Xe,ht){let Le=(ht-Ne)/(Ve-Ne);return Ct(ut,ht,Ye+(Xe-Ye)*Le,1),Le}function xr(ut,Ne,Ye,Ve,Xe,ht){let Le=(ht-Ye)/(Xe-Ye);return Ct(ut,Ne+(Ve-Ne)*Le,ht,1),Le}function er(ut,Ne){let Ye=[];for(let Ve=0;Ve0&&Ne.size<(Xe?Le:Ve))return void(Ye.numPoints+=Ne.length/3);let xe=[];for(let Se=0;SeLe)&&(Ye.numSimplified++,xe.push(Ne[Se],Ne[Se+1])),Ye.numPoints++;Xe&&function(Se,lt){let Gt=0;for(let Vt=0,ar=Se.length,Qr=ar-2;Vt0===lt)for(let Vt=0,ar=Se.length;Vt24)throw new Error("maxZoom should be in the 0-24 range");if(Ye.promoteId&&Ye.generateId)throw new Error("promoteId and generateId cannot be used together.");let Xe=function(ht,Le){let xe=[];if(ht.type==="FeatureCollection")for(let Se=0;Se1&&console.time("creation"),Qr=this.tiles[ar]=Lt(Ne,Ye,Ve,Xe,lt),this.tileCoords.push({z:Ye,x:Ve,y:Xe}),Gt)){Gt>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",Ye,Ve,Xe,Qr.numFeatures,Qr.numPoints,Qr.numSimplified),console.timeEnd("creation"));let Wn=`z${Ye}`;this.stats[Wn]=(this.stats[Wn]||0)+1,this.total++}if(Qr.source=Ne,ht==null){if(Ye===lt.indexMaxZoom||Qr.numPoints<=lt.indexMaxPoints)continue}else{if(Ye===lt.maxZoom||Ye===ht)continue;if(ht!=null){let Wn=ht-Ye;if(Ve!==Le>>Wn||Xe!==xe>>Wn)continue}}if(Qr.source=null,Ne.length===0)continue;Gt>1&&console.time("clipping");let ai=.5*lt.buffer/lt.extent,jr=.5-ai,ri=.5+ai,bi=1+ai,nn=null,Wi=null,Ni=null,_n=null,$i=qt(Ne,Vt,Ve-ai,Ve+ri,0,Qr.minX,Qr.maxX,lt),zn=qt(Ne,Vt,Ve+jr,Ve+bi,0,Qr.minX,Qr.maxX,lt);Ne=null,$i&&(nn=qt($i,Vt,Xe-ai,Xe+ri,1,Qr.minY,Qr.maxY,lt),Wi=qt($i,Vt,Xe+jr,Xe+bi,1,Qr.minY,Qr.maxY,lt),$i=null),zn&&(Ni=qt(zn,Vt,Xe-ai,Xe+ri,1,Qr.minY,Qr.maxY,lt),_n=qt(zn,Vt,Xe+jr,Xe+bi,1,Qr.minY,Qr.maxY,lt),zn=null),Gt>1&&console.timeEnd("clipping"),Se.push(nn||[],Ye+1,2*Ve,2*Xe),Se.push(Wi||[],Ye+1,2*Ve,2*Xe+1),Se.push(Ni||[],Ye+1,2*Ve+1,2*Xe),Se.push(_n||[],Ye+1,2*Ve+1,2*Xe+1)}}getTile(Ne,Ye,Ve){Ne=+Ne,Ye=+Ye,Ve=+Ve;let Xe=this.options,{extent:ht,debug:Le}=Xe;if(Ne<0||Ne>24)return null;let xe=1<1&&console.log("drilling down to z%d-%d-%d",Ne,Ye,Ve);let lt,Gt=Ne,Vt=Ye,ar=Ve;for(;!lt&&Gt>0;)Gt--,Vt>>=1,ar>>=1,lt=this.tiles[$t(Gt,Vt,ar)];return lt&<.source?(Le>1&&(console.log("found parent tile z%d-%d-%d",Gt,Vt,ar),console.time("drilling down")),this.splitTile(lt.source,Gt,Vt,ar,Ne,Ye,Ve),Le>1&&console.timeEnd("drilling down"),this.tiles[Se]?xt(this.tiles[Se],ht):null):null}}function $t(ut,Ne,Ye){return 32*((1<{Vt.properties=Qr;let ai={};for(let jr of ar)ai[jr]=Se[jr].evaluate(Gt,Vt);return ai},Le.reduce=(Qr,ai)=>{Vt.properties=ai;for(let jr of ar)Gt.accumulated=Qr[jr],Qr[jr]=lt[jr].evaluate(Gt,Vt)},Le}(Ne)).load((yield this._pendingData).features):(Xe=yield this._pendingData,new Ht(Xe,Ne.geojsonVtOptions)),this.loaded={};let ht={};if(Ve){let Le=Ve.finish();Le&&(ht.resourceTiming={},ht.resourceTiming[Ne.source]=JSON.parse(JSON.stringify(Le)))}return ht}catch(ht){if(delete this._pendingRequest,i.bB(ht))return{abandoned:!0};throw ht}var Xe})}getData(){return i._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(Ne){let Ye=this.loaded;return Ye&&Ye[Ne.uid]?super.reloadTile(Ne):this.loadTile(Ne)}loadAndProcessGeoJSON(Ne,Ye){return i._(this,void 0,void 0,function*(){let Ve=yield this.loadGeoJSON(Ne,Ye);if(delete this._pendingRequest,typeof Ve!="object")throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`);if(d(Ve,!0),Ne.filter){let Xe=i.bC(Ne.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(Xe.result==="error")throw new Error(Xe.value.map(Le=>`${Le.key}: ${Le.message}`).join(", "));Ve={type:"FeatureCollection",features:Ve.features.filter(Le=>Xe.value.evaluate({zoom:0},Le))}}return Ve})}loadGeoJSON(Ne,Ye){return i._(this,void 0,void 0,function*(){let{promoteId:Ve}=Ne;if(Ne.request){let Xe=yield i.h(Ne.request,Ye);return this._dataUpdateable=_r(Xe.data,Ve)?Br(Xe.data,Ve):void 0,Xe.data}if(typeof Ne.data=="string")try{let Xe=JSON.parse(Ne.data);return this._dataUpdateable=_r(Xe,Ve)?Br(Xe,Ve):void 0,Xe}catch(Xe){throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`)}if(!Ne.dataDiff)throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${Ne.source}`);return function(Xe,ht,Le){var xe,Se,lt,Gt;if(ht.removeAll&&Xe.clear(),ht.remove)for(let Vt of ht.remove)Xe.delete(Vt);if(ht.add)for(let Vt of ht.add){let ar=fr(Vt,Le);ar!=null&&Xe.set(ar,Vt)}if(ht.update)for(let Vt of ht.update){let ar=Xe.get(Vt.id);if(ar==null)continue;let Qr=!Vt.removeAllProperties&&(((xe=Vt.removeProperties)===null||xe===void 0?void 0:xe.length)>0||((Se=Vt.addOrUpdateProperties)===null||Se===void 0?void 0:Se.length)>0);if((Vt.newGeometry||Vt.removeAllProperties||Qr)&&(ar=Object.assign({},ar),Xe.set(Vt.id,ar),Qr&&(ar.properties=Object.assign({},ar.properties))),Vt.newGeometry&&(ar.geometry=Vt.newGeometry),Vt.removeAllProperties)ar.properties={};else if(((lt=Vt.removeProperties)===null||lt===void 0?void 0:lt.length)>0)for(let ai of Vt.removeProperties)Object.prototype.hasOwnProperty.call(ar.properties,ai)&&delete ar.properties[ai];if(((Gt=Vt.addOrUpdateProperties)===null||Gt===void 0?void 0:Gt.length)>0)for(let{key:ai,value:jr}of Vt.addOrUpdateProperties)ar.properties[ai]=jr}}(this._dataUpdateable,Ne.dataDiff,Ve),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}})}removeSource(Ne){return i._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(Ne){return this._geoJSONIndex.getClusterExpansionZoom(Ne.clusterId)}getClusterChildren(Ne){return this._geoJSONIndex.getChildren(Ne.clusterId)}getClusterLeaves(Ne){return this._geoJSONIndex.getLeaves(Ne.clusterId,Ne.limit,Ne.offset)}}class Nr{constructor(Ne){this.self=Ne,this.actor=new i.F(Ne),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(Ye,Ve)=>{if(this.externalWorkerSourceTypes[Ye])throw new Error(`Worker source with name "${Ye}" already registered.`);this.externalWorkerSourceTypes[Ye]=Ve},this.self.addProtocol=i.bi,this.self.removeProtocol=i.bj,this.self.registerRTLTextPlugin=Ye=>{if(i.bD.isParsed())throw new Error("RTL text plugin already registered.");i.bD.setMethods(Ye)},this.actor.registerMessageHandler("LDT",(Ye,Ve)=>this._getDEMWorkerSource(Ye,Ve.source).loadTile(Ve)),this.actor.registerMessageHandler("RDT",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getDEMWorkerSource(Ye,Ve.source).removeTile(Ve)})),this.actor.registerMessageHandler("GCEZ",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterExpansionZoom(Ve)})),this.actor.registerMessageHandler("GCC",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterChildren(Ve)})),this.actor.registerMessageHandler("GCL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterLeaves(Ve)})),this.actor.registerMessageHandler("LD",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).loadData(Ve)),this.actor.registerMessageHandler("GD",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).getData()),this.actor.registerMessageHandler("LT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).loadTile(Ve)),this.actor.registerMessageHandler("RT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).reloadTile(Ve)),this.actor.registerMessageHandler("AT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).abortTile(Ve)),this.actor.registerMessageHandler("RMT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).removeTile(Ve)),this.actor.registerMessageHandler("RS",(Ye,Ve)=>i._(this,void 0,void 0,function*(){if(!this.workerSources[Ye]||!this.workerSources[Ye][Ve.type]||!this.workerSources[Ye][Ve.type][Ve.source])return;let Xe=this.workerSources[Ye][Ve.type][Ve.source];delete this.workerSources[Ye][Ve.type][Ve.source],Xe.removeSource!==void 0&&Xe.removeSource(Ve)})),this.actor.registerMessageHandler("RM",Ye=>i._(this,void 0,void 0,function*(){delete this.layerIndexes[Ye],delete this.availableImages[Ye],delete this.workerSources[Ye],delete this.demWorkerSources[Ye]})),this.actor.registerMessageHandler("SR",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this.referrer=Ve})),this.actor.registerMessageHandler("SRPS",(Ye,Ve)=>this._syncRTLPluginState(Ye,Ve)),this.actor.registerMessageHandler("IS",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this.self.importScripts(Ve)})),this.actor.registerMessageHandler("SI",(Ye,Ve)=>this._setImages(Ye,Ve)),this.actor.registerMessageHandler("UL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Ye).update(Ve.layers,Ve.removedIds)})),this.actor.registerMessageHandler("SL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Ye).replace(Ve)}))}_setImages(Ne,Ye){return i._(this,void 0,void 0,function*(){this.availableImages[Ne]=Ye;for(let Ve in this.workerSources[Ne]){let Xe=this.workerSources[Ne][Ve];for(let ht in Xe)Xe[ht].availableImages=Ye}})}_syncRTLPluginState(Ne,Ye){return i._(this,void 0,void 0,function*(){if(i.bD.isParsed())return i.bD.getState();if(Ye.pluginStatus!=="loading")return i.bD.setState(Ye),Ye;let Ve=Ye.pluginURL;if(this.self.importScripts(Ve),i.bD.isParsed()){let Xe={pluginStatus:"loaded",pluginURL:Ve};return i.bD.setState(Xe),Xe}throw i.bD.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${Ve}`)})}_getAvailableImages(Ne){let Ye=this.availableImages[Ne];return Ye||(Ye=[]),Ye}_getLayerIndex(Ne){let Ye=this.layerIndexes[Ne];return Ye||(Ye=this.layerIndexes[Ne]=new a),Ye}_getWorkerSource(Ne,Ye,Ve){if(this.workerSources[Ne]||(this.workerSources[Ne]={}),this.workerSources[Ne][Ye]||(this.workerSources[Ne][Ye]={}),!this.workerSources[Ne][Ye][Ve]){let Xe={sendAsync:(ht,Le)=>(ht.targetMapId=Ne,this.actor.sendAsync(ht,Le))};switch(Ye){case"vector":this.workerSources[Ne][Ye][Ve]=new u(Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne));break;case"geojson":this.workerSources[Ne][Ye][Ve]=new Or(Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne));break;default:this.workerSources[Ne][Ye][Ve]=new this.externalWorkerSourceTypes[Ye](Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne))}}return this.workerSources[Ne][Ye][Ve]}_getDEMWorkerSource(Ne,Ye){return this.demWorkerSources[Ne]||(this.demWorkerSources[Ne]={}),this.demWorkerSources[Ne][Ye]||(this.demWorkerSources[Ne][Ye]=new c),this.demWorkerSources[Ne][Ye]}}return i.i(self)&&(self.worker=new Nr(self)),Nr}),r("index",["exports","./shared"],function(i,a){"use strict";var o="4.7.1";let s,l,u={now:typeof performance!="undefined"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:le=>new Promise((w,B)=>{let Q=requestAnimationFrame(w);le.signal.addEventListener("abort",()=>{cancelAnimationFrame(Q),B(a.c())})}),getImageData(le,w=0){return this.getImageCanvasContext(le).getImageData(-w,-w,le.width+2*w,le.height+2*w)},getImageCanvasContext(le){let w=window.document.createElement("canvas"),B=w.getContext("2d",{willReadFrequently:!0});if(!B)throw new Error("failed to create canvas 2d context");return w.width=le.width,w.height=le.height,B.drawImage(le,0,0,le.width,le.height),B},resolveURL:le=>(s||(s=document.createElement("a")),s.href=le,s.href),hardwareConcurrency:typeof navigator!="undefined"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(l==null&&(l=matchMedia("(prefers-reduced-motion: reduce)")),l.matches)}};class c{static testProp(w){if(!c.docStyle)return w[0];for(let B=0;B{window.removeEventListener("click",c.suppressClickInternal,!0)},0)}static getScale(w){let B=w.getBoundingClientRect();return{x:B.width/w.offsetWidth||1,y:B.height/w.offsetHeight||1,boundingClientRect:B}}static getPoint(w,B,Q){let ee=B.boundingClientRect;return new a.P((Q.clientX-ee.left)/B.x-w.clientLeft,(Q.clientY-ee.top)/B.y-w.clientTop)}static mousePos(w,B){let Q=c.getScale(w);return c.getPoint(w,Q,B)}static touchPos(w,B){let Q=[],ee=c.getScale(w);for(let se=0;se{h&&b(h),h=null,x=!0},d.onerror=()=>{v=!0,h=null},d.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(le){let w,B,Q,ee;le.resetRequestQueue=()=>{w=[],B=0,Q=0,ee={}},le.addThrottleControl=it=>{let yt=Q++;return ee[yt]=it,yt},le.removeThrottleControl=it=>{delete ee[it],qe()},le.getImage=(it,yt,Ot=!0)=>new Promise((Nt,hr)=>{f.supported&&(it.headers||(it.headers={}),it.headers.accept="image/webp,*/*"),a.e(it,{type:"image"}),w.push({abortController:yt,requestParameters:it,supportImageRefresh:Ot,state:"queued",onError:Sr=>{hr(Sr)},onSuccess:Sr=>{Nt(Sr)}}),qe()});let se=it=>a._(this,void 0,void 0,function*(){it.state="running";let{requestParameters:yt,supportImageRefresh:Ot,onError:Nt,onSuccess:hr,abortController:Sr}=it,he=Ot===!1&&!a.i(self)&&!a.g(yt.url)&&(!yt.headers||Object.keys(yt.headers).reduce((Oe,Je)=>Oe&&Je==="accept",!0));B++;let be=he?je(yt,Sr):a.m(yt,Sr);try{let Oe=yield be;delete it.abortController,it.state="completed",Oe.data instanceof HTMLImageElement||a.b(Oe.data)?hr(Oe):Oe.data&&hr({data:yield(Pe=Oe.data,typeof createImageBitmap=="function"?a.d(Pe):a.f(Pe)),cacheControl:Oe.cacheControl,expires:Oe.expires})}catch(Oe){delete it.abortController,Nt(Oe)}finally{B--,qe()}var Pe}),qe=()=>{let it=(()=>{for(let yt of Object.keys(ee))if(ee[yt]())return!0;return!1})()?a.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:a.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let yt=B;yt0;yt++){let Ot=w.shift();Ot.abortController.signal.aborted?yt--:se(Ot)}},je=(it,yt)=>new Promise((Ot,Nt)=>{let hr=new Image,Sr=it.url,he=it.credentials;he&&he==="include"?hr.crossOrigin="use-credentials":(he&&he==="same-origin"||!a.s(Sr))&&(hr.crossOrigin="anonymous"),yt.signal.addEventListener("abort",()=>{hr.src="",Nt(a.c())}),hr.fetchPriority="high",hr.onload=()=>{hr.onerror=hr.onload=null,Ot({data:hr})},hr.onerror=()=>{hr.onerror=hr.onload=null,yt.signal.aborted||Nt(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},hr.src=Sr})}(p||(p={})),p.resetRequestQueue();class E{constructor(w){this._transformRequestFn=w}transformRequest(w,B){return this._transformRequestFn&&this._transformRequestFn(w,B)||{url:w}}setTransformRequest(w){this._transformRequestFn=w}}function k(le){var w=new a.A(3);return w[0]=le[0],w[1]=le[1],w[2]=le[2],w}var A,L=function(le,w,B){return le[0]=w[0]-B[0],le[1]=w[1]-B[1],le[2]=w[2]-B[2],le};A=new a.A(3),a.A!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0);var _=function(le){var w=le[0],B=le[1];return w*w+B*B};function C(le){let w=[];if(typeof le=="string")w.push({id:"default",url:le});else if(le&&le.length>0){let B=[];for(let{id:Q,url:ee}of le){let se=`${Q}${ee}`;B.indexOf(se)===-1&&(B.push(se),w.push({id:Q,url:ee}))}}return w}function M(le,w,B){let Q=le.split("?");return Q[0]+=`${w}${B}`,Q.join("?")}(function(){var le=new a.A(2);a.A!=Float32Array&&(le[0]=0,le[1]=0)})();class g{constructor(w,B,Q,ee){this.context=w,this.format=Q,this.texture=w.gl.createTexture(),this.update(B,ee)}update(w,B,Q){let{width:ee,height:se}=w,qe=!(this.size&&this.size[0]===ee&&this.size[1]===se||Q),{context:je}=this,{gl:it}=je;if(this.useMipmap=!!(B&&B.useMipmap),it.bindTexture(it.TEXTURE_2D,this.texture),je.pixelStoreUnpackFlipY.set(!1),je.pixelStoreUnpack.set(1),je.pixelStoreUnpackPremultiplyAlpha.set(this.format===it.RGBA&&(!B||B.premultiply!==!1)),qe)this.size=[ee,se],w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?it.texImage2D(it.TEXTURE_2D,0,this.format,this.format,it.UNSIGNED_BYTE,w):it.texImage2D(it.TEXTURE_2D,0,this.format,ee,se,0,this.format,it.UNSIGNED_BYTE,w.data);else{let{x:yt,y:Ot}=Q||{x:0,y:0};w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?it.texSubImage2D(it.TEXTURE_2D,0,yt,Ot,it.RGBA,it.UNSIGNED_BYTE,w):it.texSubImage2D(it.TEXTURE_2D,0,yt,Ot,ee,se,it.RGBA,it.UNSIGNED_BYTE,w.data)}this.useMipmap&&this.isSizePowerOfTwo()&&it.generateMipmap(it.TEXTURE_2D)}bind(w,B,Q){let{context:ee}=this,{gl:se}=ee;se.bindTexture(se.TEXTURE_2D,this.texture),Q!==se.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(Q=se.LINEAR),w!==this.filter&&(se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MAG_FILTER,w),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MIN_FILTER,Q||w),this.filter=w),B!==this.wrap&&(se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_S,B),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_T,B),this.wrap=B)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:w}=this.context;w.deleteTexture(this.texture),this.texture=null}}function P(le){let{userImage:w}=le;return!!(w&&w.render&&w.render())&&(le.data.replace(new Uint8Array(w.data.buffer)),!0)}class T extends a.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new a.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(w){if(this.loaded!==w&&(this.loaded=w,w)){for(let{ids:B,promiseResolve:Q}of this.requestors)Q(this._getImagesForIds(B));this.requestors=[]}}getImage(w){let B=this.images[w];if(B&&!B.data&&B.spriteData){let Q=B.spriteData;B.data=new a.R({width:Q.width,height:Q.height},Q.context.getImageData(Q.x,Q.y,Q.width,Q.height).data),B.spriteData=null}return B}addImage(w,B){if(this.images[w])throw new Error(`Image id ${w} already exist, use updateImage instead`);this._validate(w,B)&&(this.images[w]=B)}_validate(w,B){let Q=!0,ee=B.data||B.spriteData;return this._validateStretch(B.stretchX,ee&&ee.width)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchX" value`))),Q=!1),this._validateStretch(B.stretchY,ee&&ee.height)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchY" value`))),Q=!1),this._validateContent(B.content,B)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "content" value`))),Q=!1),Q}_validateStretch(w,B){if(!w)return!0;let Q=0;for(let ee of w){if(ee[0]{let ee=!0;if(!this.isLoaded())for(let se of w)this.images[se]||(ee=!1);this.isLoaded()||ee?B(this._getImagesForIds(w)):this.requestors.push({ids:w,promiseResolve:B})})}_getImagesForIds(w){let B={};for(let Q of w){let ee=this.getImage(Q);ee||(this.fire(new a.k("styleimagemissing",{id:Q})),ee=this.getImage(Q)),ee?B[Q]={data:ee.data.clone(),pixelRatio:ee.pixelRatio,sdf:ee.sdf,version:ee.version,stretchX:ee.stretchX,stretchY:ee.stretchY,content:ee.content,textFitWidth:ee.textFitWidth,textFitHeight:ee.textFitHeight,hasRenderCallback:!!(ee.userImage&&ee.userImage.render)}:a.w(`Image "${Q}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}return B}getPixelSize(){let{width:w,height:B}=this.atlasImage;return{width:w,height:B}}getPattern(w){let B=this.patterns[w],Q=this.getImage(w);if(!Q)return null;if(B&&B.position.version===Q.version)return B.position;if(B)B.position.version=Q.version;else{let ee={w:Q.data.width+2,h:Q.data.height+2,x:0,y:0},se=new a.I(ee,Q);this.patterns[w]={bin:ee,position:se}}return this._updatePatternAtlas(),this.patterns[w].position}bind(w){let B=w.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new g(w,this.atlasImage,B.RGBA),this.atlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE)}_updatePatternAtlas(){let w=[];for(let se in this.patterns)w.push(this.patterns[se].bin);let{w:B,h:Q}=a.p(w),ee=this.atlasImage;ee.resize({width:B||1,height:Q||1});for(let se in this.patterns){let{bin:qe}=this.patterns[se],je=qe.x+1,it=qe.y+1,yt=this.getImage(se).data,Ot=yt.width,Nt=yt.height;a.R.copy(yt,ee,{x:0,y:0},{x:je,y:it},{width:Ot,height:Nt}),a.R.copy(yt,ee,{x:0,y:Nt-1},{x:je,y:it-1},{width:Ot,height:1}),a.R.copy(yt,ee,{x:0,y:0},{x:je,y:it+Nt},{width:Ot,height:1}),a.R.copy(yt,ee,{x:Ot-1,y:0},{x:je-1,y:it},{width:1,height:Nt}),a.R.copy(yt,ee,{x:0,y:0},{x:je+Ot,y:it},{width:1,height:Nt})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(w){for(let B of w){if(this.callbackDispatchedThisFrame[B])continue;this.callbackDispatchedThisFrame[B]=!0;let Q=this.getImage(B);Q||a.w(`Image with ID: "${B}" was not found`),P(Q)&&this.updateImage(B,Q)}}}let F=1e20;function q(le,w,B,Q,ee,se,qe,je,it){for(let yt=w;yt-1);it++,se[it]=je,qe[it]=yt,qe[it+1]=F}for(let je=0,it=0;je65535)throw new Error("glyphs > 65535 not supported");if(Q.ranges[se])return{stack:w,id:B,glyph:ee};if(!this.url)throw new Error("glyphsUrl is not set");if(!Q.requests[se]){let je=H.loadGlyphRange(w,se,this.url,this.requestManager);Q.requests[se]=je}let qe=yield Q.requests[se];for(let je in qe)this._doesCharSupportLocalGlyph(+je)||(Q.glyphs[+je]=qe[+je]);return Q.ranges[se]=!0,{stack:w,id:B,glyph:qe[B]||null}})}_doesCharSupportLocalGlyph(w){return!!this.localIdeographFontFamily&&new RegExp("\\p{Ideo}|\\p{sc=Hang}|\\p{sc=Hira}|\\p{sc=Kana}","u").test(String.fromCodePoint(w))}_tinySDF(w,B,Q){let ee=this.localIdeographFontFamily;if(!ee||!this._doesCharSupportLocalGlyph(Q))return;let se=w.tinySDF;if(!se){let je="400";/bold/i.test(B)?je="900":/medium/i.test(B)?je="500":/light/i.test(B)&&(je="200"),se=w.tinySDF=new H.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:ee,fontWeight:je})}let qe=se.draw(String.fromCharCode(Q));return{id:Q,bitmap:new a.o({width:qe.width||60,height:qe.height||60},qe.data),metrics:{width:qe.glyphWidth/2||24,height:qe.glyphHeight/2||24,left:qe.glyphLeft/2+.5||0,top:qe.glyphTop/2-27.5||-8,advance:qe.glyphAdvance/2||24,isDoubleResolution:!0}}}}H.loadGlyphRange=function(le,w,B,Q){return a._(this,void 0,void 0,function*(){let ee=256*w,se=ee+255,qe=Q.transformRequest(B.replace("{fontstack}",le).replace("{range}",`${ee}-${se}`),"Glyphs"),je=yield a.l(qe,new AbortController);if(!je||!je.data)throw new Error(`Could not load glyph range. range: ${w}, ${ee}-${se}`);let it={};for(let yt of a.n(je.data))it[yt.id]=yt;return it})},H.TinySDF=class{constructor({fontSize:le=24,buffer:w=3,radius:B=8,cutoff:Q=.25,fontFamily:ee="sans-serif",fontWeight:se="normal",fontStyle:qe="normal"}={}){this.buffer=w,this.cutoff=Q,this.radius=B;let je=this.size=le+4*w,it=this._createCanvas(je),yt=this.ctx=it.getContext("2d",{willReadFrequently:!0});yt.font=`${qe} ${se} ${le}px ${ee}`,yt.textBaseline="alphabetic",yt.textAlign="left",yt.fillStyle="black",this.gridOuter=new Float64Array(je*je),this.gridInner=new Float64Array(je*je),this.f=new Float64Array(je),this.z=new Float64Array(je+1),this.v=new Uint16Array(je)}_createCanvas(le){let w=document.createElement("canvas");return w.width=w.height=le,w}draw(le){let{width:w,actualBoundingBoxAscent:B,actualBoundingBoxDescent:Q,actualBoundingBoxLeft:ee,actualBoundingBoxRight:se}=this.ctx.measureText(le),qe=Math.ceil(B),je=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(se-ee))),it=Math.min(this.size-this.buffer,qe+Math.ceil(Q)),yt=je+2*this.buffer,Ot=it+2*this.buffer,Nt=Math.max(yt*Ot,0),hr=new Uint8ClampedArray(Nt),Sr={data:hr,width:yt,height:Ot,glyphWidth:je,glyphHeight:it,glyphTop:qe,glyphLeft:0,glyphAdvance:w};if(je===0||it===0)return Sr;let{ctx:he,buffer:be,gridInner:Pe,gridOuter:Oe}=this;he.clearRect(be,be,je,it),he.fillText(le,be,be+qe);let Je=he.getImageData(be,be,je,it);Oe.fill(F,0,Nt),Pe.fill(0,0,Nt);for(let He=0;He0?Ut*Ut:0,Pe[Dt]=Ut<0?Ut*Ut:0}}q(Oe,0,0,yt,Ot,yt,this.f,this.v,this.z),q(Pe,be,be,je,it,yt,this.f,this.v,this.z);for(let He=0;He1&&(it=w[++je]);let Ot=Math.abs(yt-it.left),Nt=Math.abs(yt-it.right),hr=Math.min(Ot,Nt),Sr,he=se/Q*(ee+1);if(it.isDash){let be=ee-Math.abs(he);Sr=Math.sqrt(hr*hr+be*be)}else Sr=ee-Math.sqrt(hr*hr+he*he);this.data[qe+yt]=Math.max(0,Math.min(255,Sr+128))}}}addRegularDash(w){for(let je=w.length-1;je>=0;--je){let it=w[je],yt=w[je+1];it.zeroLength?w.splice(je,1):yt&&yt.isDash===it.isDash&&(yt.left=it.left,w.splice(je,1))}let B=w[0],Q=w[w.length-1];B.isDash===Q.isDash&&(B.left=Q.left-this.width,Q.right=B.right+this.width);let ee=this.width*this.nextRow,se=0,qe=w[se];for(let je=0;je1&&(qe=w[++se]);let it=Math.abs(je-qe.left),yt=Math.abs(je-qe.right),Ot=Math.min(it,yt);this.data[ee+je]=Math.max(0,Math.min(255,(qe.isDash?Ot:-Ot)+128))}}addDash(w,B){let Q=B?7:0,ee=2*Q+1;if(this.nextRow+ee>this.height)return a.w("LineAtlas out of space"),null;let se=0;for(let je=0;je{B.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[_e]}numActive(){return Object.keys(this.active).length}}let ke=Math.floor(u.hardwareConcurrency/2),ge,ie;function Te(){return ge||(ge=new Me),ge}Me.workerCount=a.C(globalThis)?Math.max(Math.min(ke,3),1):1;class Ee{constructor(w,B){this.workerPool=w,this.actors=[],this.currentActor=0,this.id=B;let Q=this.workerPool.acquire(B);for(let ee=0;ee{B.remove()}),this.actors=[],w&&this.workerPool.release(this.id)}registerMessageHandler(w,B){for(let Q of this.actors)Q.registerMessageHandler(w,B)}}function Ae(){return ie||(ie=new Ee(Te(),a.G),ie.registerMessageHandler("GR",(le,w,B)=>a.m(w,B))),ie}function ze(le,w){let B=a.H();return a.J(B,B,[1,1,0]),a.K(B,B,[.5*le.width,.5*le.height,1]),a.L(B,B,le.calculatePosMatrix(w.toUnwrapped()))}function Ce(le,w,B,Q,ee,se){let qe=function(Nt,hr,Sr){if(Nt)for(let he of Nt){let be=hr[he];if(be&&be.source===Sr&&be.type==="fill-extrusion")return!0}else for(let he in hr){let be=hr[he];if(be.source===Sr&&be.type==="fill-extrusion")return!0}return!1}(ee&&ee.layers,w,le.id),je=se.maxPitchScaleFactor(),it=le.tilesIn(Q,je,qe);it.sort(me);let yt=[];for(let Nt of it)yt.push({wrappedTileID:Nt.tileID.wrapped().key,queryResults:Nt.tile.queryRenderedFeatures(w,B,le._state,Nt.queryGeometry,Nt.cameraQueryGeometry,Nt.scale,ee,se,je,ze(le.transform,Nt.tileID))});let Ot=function(Nt){let hr={},Sr={};for(let he of Nt){let be=he.queryResults,Pe=he.wrappedTileID,Oe=Sr[Pe]=Sr[Pe]||{};for(let Je in be){let He=be[Je],et=Oe[Je]=Oe[Je]||{},Mt=hr[Je]=hr[Je]||[];for(let Dt of He)et[Dt.featureIndex]||(et[Dt.featureIndex]=!0,Mt.push(Dt))}}return hr}(yt);for(let Nt in Ot)Ot[Nt].forEach(hr=>{let Sr=hr.feature,he=le.getFeatureState(Sr.layer["source-layer"],Sr.id);Sr.source=Sr.layer.source,Sr.layer["source-layer"]&&(Sr.sourceLayer=Sr.layer["source-layer"]),Sr.state=he});return Ot}function me(le,w){let B=le.tileID,Q=w.tileID;return B.overscaledZ-Q.overscaledZ||B.canonical.y-Q.canonical.y||B.wrap-Q.wrap||B.canonical.x-Q.canonical.x}function Re(le,w,B){return a._(this,void 0,void 0,function*(){let Q=le;if(le.url?Q=(yield a.h(w.transformRequest(le.url,"Source"),B)).data:yield u.frameAsync(B),!Q)return null;let ee=a.M(a.e(Q,le),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in Q&&Q.vector_layers&&(ee.vectorLayerIds=Q.vector_layers.map(se=>se.id)),ee})}class ce{constructor(w,B){w&&(B?this.setSouthWest(w).setNorthEast(B):Array.isArray(w)&&(w.length===4?this.setSouthWest([w[0],w[1]]).setNorthEast([w[2],w[3]]):this.setSouthWest(w[0]).setNorthEast(w[1])))}setNorthEast(w){return this._ne=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}setSouthWest(w){return this._sw=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}extend(w){let B=this._sw,Q=this._ne,ee,se;if(w instanceof a.N)ee=w,se=w;else{if(!(w instanceof ce))return Array.isArray(w)?w.length===4||w.every(Array.isArray)?this.extend(ce.convert(w)):this.extend(a.N.convert(w)):w&&("lng"in w||"lon"in w)&&"lat"in w?this.extend(a.N.convert(w)):this;if(ee=w._sw,se=w._ne,!ee||!se)return this}return B||Q?(B.lng=Math.min(ee.lng,B.lng),B.lat=Math.min(ee.lat,B.lat),Q.lng=Math.max(se.lng,Q.lng),Q.lat=Math.max(se.lat,Q.lat)):(this._sw=new a.N(ee.lng,ee.lat),this._ne=new a.N(se.lng,se.lat)),this}getCenter(){return new a.N((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new a.N(this.getWest(),this.getNorth())}getSouthEast(){return new a.N(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(w){let{lng:B,lat:Q}=a.N.convert(w),ee=this._sw.lng<=B&&B<=this._ne.lng;return this._sw.lng>this._ne.lng&&(ee=this._sw.lng>=B&&B>=this._ne.lng),this._sw.lat<=Q&&Q<=this._ne.lat&&ee}static convert(w){return w instanceof ce?w:w&&new ce(w)}static fromLngLat(w,B=0){let Q=360*B/40075017,ee=Q/Math.cos(Math.PI/180*w.lat);return new ce(new a.N(w.lng-ee,w.lat-Q),new a.N(w.lng+ee,w.lat+Q))}adjustAntiMeridian(){let w=new a.N(this._sw.lng,this._sw.lat),B=new a.N(this._ne.lng,this._ne.lat);return new ce(w,w.lng>B.lng?new a.N(B.lng+360,B.lat):B)}}class Ge{constructor(w,B,Q){this.bounds=ce.convert(this.validateBounds(w)),this.minzoom=B||0,this.maxzoom=Q||24}validateBounds(w){return Array.isArray(w)&&w.length===4?[Math.max(-180,w[0]),Math.max(-90,w[1]),Math.min(180,w[2]),Math.min(90,w[3])]:[-180,-90,180,90]}contains(w){let B=Math.pow(2,w.z),Q=Math.floor(a.O(this.bounds.getWest())*B),ee=Math.floor(a.Q(this.bounds.getNorth())*B),se=Math.ceil(a.O(this.bounds.getEast())*B),qe=Math.ceil(a.Q(this.bounds.getSouth())*B);return w.x>=Q&&w.x=ee&&w.y{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return a.e({},this._options)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q={request:this.map._requestManager.transformRequest(B,"Tile"),uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,tileSize:this.tileSize*w.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};Q.request.collectResourceTiming=this._collectResourceTiming;let ee="RT";if(w.actor&&w.state!=="expired"){if(w.state==="loading")return new Promise((se,qe)=>{w.reloadPromise={resolve:se,reject:qe}})}else w.actor=this.dispatcher.getActor(),ee="LT";w.abortController=new AbortController;try{let se=yield w.actor.sendAsync({type:ee,data:Q},w.abortController);if(delete w.abortController,w.aborted)return;this._afterTileLoadWorkerResponse(w,se)}catch(se){if(delete w.abortController,w.aborted)return;if(se&&se.status!==404)throw se;this._afterTileLoadWorkerResponse(w,null)}})}_afterTileLoadWorkerResponse(w,B){if(B&&B.resourceTiming&&(w.resourceTiming=B.resourceTiming),B&&this.map._refreshExpiredTiles&&w.setExpiryData(B),w.loadVectorData(B,this.map.painter),w.reloadPromise){let Q=w.reloadPromise;w.reloadPromise=null,this.loadTile(w).then(Q.resolve).catch(Q.reject)}}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.actor&&(yield w.actor.sendAsync({type:"AT",data:{uid:w.uid,type:this.type,source:this.id}}))})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),w.actor&&(yield w.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class ct extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.setEventedParent(ee),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=a.e({type:"raster"},B),a.e(this,a.M(B,["url","scheme","tileSize"]))}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let w=yield Re(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,w&&(a.e(this,w),w.bounds&&(this.tileBounds=new Ge(w.bounds,this.minzoom,this.maxzoom)),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})))}catch(w){this._tileJSONRequest=null,this.fire(new a.j(w))}})}loaded(){return this._loaded}onAdd(w){this.map=w,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(w){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),w(),this.load()}setTiles(w){return this.setSourceProperty(()=>{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}serialize(){return a.e({},this._options)}hasTile(w){return!this.tileBounds||this.tileBounds.contains(w.canonical)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);w.abortController=new AbortController;try{let Q=yield p.getImage(this.map._requestManager.transformRequest(B,"Tile"),w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(Q&&Q.data){this.map._refreshExpiredTiles&&Q.cacheControl&&Q.expires&&w.setExpiryData({cacheControl:Q.cacheControl,expires:Q.expires});let ee=this.map.painter.context,se=ee.gl,qe=Q.data;w.texture=this.map.painter.getTileTexture(qe.width),w.texture?w.texture.update(qe,{useMipmap:!0}):(w.texture=new g(ee,qe,se.RGBA,{useMipmap:!0}),w.texture.bind(se.LINEAR,se.CLAMP_TO_EDGE,se.LINEAR_MIPMAP_NEAREST)),w.state="loaded"}}catch(Q){if(delete w.abortController,w.aborted)w.state="unloaded";else if(Q)throw w.state="errored",Q}})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController)})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.texture&&this.map.painter.saveTileTexture(w.texture)})}hasTransition(){return!1}}class qt extends ct{constructor(w,B,Q,ee){super(w,B,Q,ee),this.type="raster-dem",this.maxzoom=22,this._options=a.e({type:"raster-dem"},B),this.encoding=B.encoding||"mapbox",this.redFactor=B.redFactor,this.greenFactor=B.greenFactor,this.blueFactor=B.blueFactor,this.baseShift=B.baseShift}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q=this.map._requestManager.transformRequest(B,"Tile");w.neighboringTiles=this._getNeighboringTiles(w.tileID),w.abortController=new AbortController;try{let ee=yield p.getImage(Q,w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(ee&&ee.data){let se=ee.data;this.map._refreshExpiredTiles&&ee.cacheControl&&ee.expires&&w.setExpiryData({cacheControl:ee.cacheControl,expires:ee.expires});let qe=a.b(se)&&a.U()?se:yield this.readImageNow(se),je={type:this.type,uid:w.uid,source:this.id,rawImageData:qe,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!w.actor||w.state==="expired"){w.actor=this.dispatcher.getActor();let it=yield w.actor.sendAsync({type:"LDT",data:je});w.dem=it,w.needsHillshadePrepare=!0,w.needsTerrainPrepare=!0,w.state="loaded"}}}catch(ee){if(delete w.abortController,w.aborted)w.state="unloaded";else if(ee)throw w.state="errored",ee}})}readImageNow(w){return a._(this,void 0,void 0,function*(){if(typeof VideoFrame!="undefined"&&a.V()){let B=w.width+2,Q=w.height+2;try{return new a.R({width:B,height:Q},yield a.W(w,-1,-1,B,Q))}catch(ee){}}return u.getImageData(w,1)})}_getNeighboringTiles(w){let B=w.canonical,Q=Math.pow(2,B.z),ee=(B.x-1+Q)%Q,se=B.x===0?w.wrap-1:w.wrap,qe=(B.x+1+Q)%Q,je=B.x+1===Q?w.wrap+1:w.wrap,it={};return it[new a.S(w.overscaledZ,se,B.z,ee,B.y).key]={backfilled:!1},it[new a.S(w.overscaledZ,je,B.z,qe,B.y).key]={backfilled:!1},B.y>0&&(it[new a.S(w.overscaledZ,se,B.z,ee,B.y-1).key]={backfilled:!1},it[new a.S(w.overscaledZ,w.wrap,B.z,B.x,B.y-1).key]={backfilled:!1},it[new a.S(w.overscaledZ,je,B.z,qe,B.y-1).key]={backfilled:!1}),B.y+10&&a.e(se,{resourceTiming:ee}),this.fire(new a.k("data",Object.assign(Object.assign({},se),{sourceDataType:"metadata"}))),this.fire(new a.k("data",Object.assign(Object.assign({},se),{sourceDataType:"content"})))}catch(Q){if(this._pendingLoads--,this._removed)return void this.fire(new a.k("dataabort",{dataType:"source"}));this.fire(new a.j(Q))}})}loaded(){return this._pendingLoads===0}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.actor?"RT":"LT";w.actor=this.actor;let Q={type:this.type,uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};w.abortController=new AbortController;let ee=yield this.actor.sendAsync({type:B,data:Q},w.abortController);delete w.abortController,w.unloadVectorData(),w.aborted||w.loadVectorData(ee,this.map.painter,B==="RT")})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.aborted=!0})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return a.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var ot=a.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Rt extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.coordinates=B.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(ee),this.options=B}load(w){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let B=yield p.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,B&&B.data&&(this.image=B.data,w&&(this.coordinates=w),this._finishLoading())}catch(B){this._request=null,this._loaded=!0,this.fire(new a.j(B))}})}loaded(){return this._loaded}updateImage(w){return w.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=w.url,this.load(w.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(w){this.map=w,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(w){this.coordinates=w;let B=w.map(a.Z.fromLngLat);this.tileID=function(ee){let se=1/0,qe=1/0,je=-1/0,it=-1/0;for(let hr of ee)se=Math.min(se,hr.x),qe=Math.min(qe,hr.y),je=Math.max(je,hr.x),it=Math.max(it,hr.y);let yt=Math.max(je-se,it-qe),Ot=Math.max(0,Math.floor(-Math.log(yt)/Math.LN2)),Nt=Math.pow(2,Ot);return new a.a1(Ot,Math.floor((se+je)/2*Nt),Math.floor((qe+it)/2*Nt))}(B),this.minzoom=this.maxzoom=this.tileID.z;let Q=B.map(ee=>this.tileID.getTilePoint(ee)._round());return this._boundsArray=new a.$,this._boundsArray.emplaceBack(Q[0].x,Q[0].y,0,0),this._boundsArray.emplaceBack(Q[1].x,Q[1].y,a.X,0),this._boundsArray.emplaceBack(Q[3].x,Q[3].y,0,a.X),this._boundsArray.emplaceBack(Q[2].x,Q[2].y,a.X,a.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new g(w,this.image,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let se=this.tiles[ee];se.state!=="loaded"&&(se.state="loaded",se.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(w){return a._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(w.tileID.canonical)?(this.tiles[String(w.tileID.wrap)]=w,w.buckets={}):w.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class kt extends Rt{constructor(w,B,Q,ee){super(w,B,Q,ee),this.roundZoom=!0,this.type="video",this.options=B}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1;let w=this.options;this.urls=[];for(let B of w.urls)this.urls.push(this.map._requestManager.transformRequest(B,"Source").url);try{let B=yield a.a3(this.urls);if(this._loaded=!0,!B)return;this.video=B,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(B){this.fire(new a.j(B))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(w){if(this.video){let B=this.video.seekable;wB.end(0)?this.fire(new a.j(new a.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${B.start(0)} and ${B.end(0)}-second mark.`))):this.video.currentTime=w}}getVideo(){return this.video}onAdd(w){this.map||(this.map=w,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE),B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.video)):(this.texture=new g(w,this.video,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let se=this.tiles[ee];se.state!=="loaded"&&(se.state="loaded",se.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class Ct extends Rt{constructor(w,B,Q,ee){super(w,B,Q,ee),B.coordinates?Array.isArray(B.coordinates)&&B.coordinates.length===4&&!B.coordinates.some(se=>!Array.isArray(se)||se.length!==2||se.some(qe=>typeof qe!="number"))||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "coordinates"'))),B.animate&&typeof B.animate!="boolean"&&this.fire(new a.j(new a.a2(`sources.${w}`,null,'optional "animate" property must be a boolean value'))),B.canvas?typeof B.canvas=="string"||B.canvas instanceof HTMLCanvasElement||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "canvas"'))),this.options=B,this.animate=B.animate===void 0||B.animate}load(){return a._(this,void 0,void 0,function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new a.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())})}getCanvas(){return this.canvas}onAdd(w){this.map=w,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let w=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,w=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,w=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let B=this.map.painter.context,Q=B.gl;this.boundsBuffer||(this.boundsBuffer=B.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?(w||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new g(B,this.canvas,Q.RGBA,{premultiply:!0});let ee=!1;for(let se in this.tiles){let qe=this.tiles[se];qe.state!=="loaded"&&(qe.state="loaded",qe.texture=this.texture,ee=!0)}ee&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let w of[this.canvas.width,this.canvas.height])if(isNaN(w)||w<=0)return!0;return!1}}let Yt={},xr=le=>{switch(le){case"geojson":return rt;case"image":return Rt;case"raster":return ct;case"raster-dem":return qt;case"vector":return nt;case"video":return kt;case"canvas":return Ct}return Yt[le]},er="RTLPluginLoaded";class Ke extends a.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=Ae()}_syncState(w){return this.status=w,this.dispatcher.broadcast("SRPS",{pluginStatus:w,pluginURL:this.url}).catch(B=>{throw this.status="error",B})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(w){return a._(this,arguments,void 0,function*(B,Q=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=u.resolveURL(B),!this.url)throw new Error(`requested url ${B} is invalid`);if(this.status==="unavailable"){if(!Q)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return a._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new a.k(er))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let xt=null;function bt(){return xt||(xt=new Ke),xt}class Lt{constructor(w,B){this.timeAdded=0,this.fadeEndTime=0,this.tileID=w,this.uid=a.a4(),this.uses=0,this.tileSize=B,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(w){let B=w+this.timeAdded;Bse.getLayer(yt)).filter(Boolean);if(it.length!==0){je.layers=it,je.stateDependentLayerIds&&(je.stateDependentLayers=je.stateDependentLayerIds.map(yt=>it.filter(Ot=>Ot.id===yt)[0]));for(let yt of it)qe[yt.id]=je}}return qe}(w.buckets,B.style),this.hasSymbolBuckets=!1;for(let ee in this.buckets){let se=this.buckets[ee];if(se instanceof a.a6){if(this.hasSymbolBuckets=!0,!Q)break;se.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let ee in this.buckets){let se=this.buckets[ee];if(se instanceof a.a6&&se.hasRTLText){this.hasRTLText=!0,bt().lazyLoad();break}}this.queryPadding=0;for(let ee in this.buckets){let se=this.buckets[ee];this.queryPadding=Math.max(this.queryPadding,B.style.getLayer(ee).queryRadius(se))}w.imageAtlas&&(this.imageAtlas=w.imageAtlas),w.glyphAtlasImage&&(this.glyphAtlasImage=w.glyphAtlasImage)}else this.collisionBoxArray=new a.a5}unloadVectorData(){for(let w in this.buckets)this.buckets[w].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(w){return this.buckets[w.id]}upload(w){for(let Q in this.buckets){let ee=this.buckets[Q];ee.uploadPending()&&ee.upload(w)}let B=w.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new g(w,this.imageAtlas.image,B.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new g(w,this.glyphAtlasImage,B.ALPHA),this.glyphAtlasImage=null)}prepare(w){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(w,this.imageAtlasTexture)}queryRenderedFeatures(w,B,Q,ee,se,qe,je,it,yt,Ot){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:ee,cameraQueryGeometry:se,scale:qe,tileSize:this.tileSize,pixelPosMatrix:Ot,transform:it,params:je,queryPadding:this.queryPadding*yt},w,B,Q):{}}querySourceFeatures(w,B){let Q=this.latestFeatureIndex;if(!Q||!Q.rawTileData)return;let ee=Q.loadVTLayers(),se=B&&B.sourceLayer?B.sourceLayer:"",qe=ee._geojsonTileLayer||ee[se];if(!qe)return;let je=a.a7(B&&B.filter),{z:it,x:yt,y:Ot}=this.tileID.canonical,Nt={z:it,x:yt,y:Ot};for(let hr=0;hrQ)ee=!1;else if(B)if(this.expirationTime{this.remove(w,se)},Q)),this.data[ee].push(se),this.order.push(ee),this.order.length>this.max){let qe=this._getAndRemoveByKey(this.order[0]);qe&&this.onRemove(qe)}return this}has(w){return w.wrapped().key in this.data}getAndRemove(w){return this.has(w)?this._getAndRemoveByKey(w.wrapped().key):null}_getAndRemoveByKey(w){let B=this.data[w].shift();return B.timeout&&clearTimeout(B.timeout),this.data[w].length===0&&delete this.data[w],this.order.splice(this.order.indexOf(w),1),B.value}getByKey(w){let B=this.data[w];return B?B[0].value:null}get(w){return this.has(w)?this.data[w.wrapped().key][0].value:null}remove(w,B){if(!this.has(w))return this;let Q=w.wrapped().key,ee=B===void 0?0:this.data[Q].indexOf(B),se=this.data[Q][ee];return this.data[Q].splice(ee,1),se.timeout&&clearTimeout(se.timeout),this.data[Q].length===0&&delete this.data[Q],this.onRemove(se.value),this.order.splice(this.order.indexOf(Q),1),this}setMaxSize(w){for(this.max=w;this.order.length>this.max;){let B=this._getAndRemoveByKey(this.order[0]);B&&this.onRemove(B)}return this}filter(w){let B=[];for(let Q in this.data)for(let ee of this.data[Q])w(ee.value)||B.push(ee);for(let Q of B)this.remove(Q.value.tileID,Q)}}class Et{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(w,B,Q){let ee=String(B);if(this.stateChanges[w]=this.stateChanges[w]||{},this.stateChanges[w][ee]=this.stateChanges[w][ee]||{},a.e(this.stateChanges[w][ee],Q),this.deletedStates[w]===null){this.deletedStates[w]={};for(let se in this.state[w])se!==ee&&(this.deletedStates[w][se]=null)}else if(this.deletedStates[w]&&this.deletedStates[w][ee]===null){this.deletedStates[w][ee]={};for(let se in this.state[w][ee])Q[se]||(this.deletedStates[w][ee][se]=null)}else for(let se in Q)this.deletedStates[w]&&this.deletedStates[w][ee]&&this.deletedStates[w][ee][se]===null&&delete this.deletedStates[w][ee][se]}removeFeatureState(w,B,Q){if(this.deletedStates[w]===null)return;let ee=String(B);if(this.deletedStates[w]=this.deletedStates[w]||{},Q&&B!==void 0)this.deletedStates[w][ee]!==null&&(this.deletedStates[w][ee]=this.deletedStates[w][ee]||{},this.deletedStates[w][ee][Q]=null);else if(B!==void 0)if(this.stateChanges[w]&&this.stateChanges[w][ee])for(Q in this.deletedStates[w][ee]={},this.stateChanges[w][ee])this.deletedStates[w][ee][Q]=null;else this.deletedStates[w][ee]=null;else this.deletedStates[w]=null}getState(w,B){let Q=String(B),ee=a.e({},(this.state[w]||{})[Q],(this.stateChanges[w]||{})[Q]);if(this.deletedStates[w]===null)return{};if(this.deletedStates[w]){let se=this.deletedStates[w][B];if(se===null)return{};for(let qe in se)delete ee[qe]}return ee}initializeTileState(w,B){w.setFeatureState(this.state,B)}coalesceChanges(w,B){let Q={};for(let ee in this.stateChanges){this.state[ee]=this.state[ee]||{};let se={};for(let qe in this.stateChanges[ee])this.state[ee][qe]||(this.state[ee][qe]={}),a.e(this.state[ee][qe],this.stateChanges[ee][qe]),se[qe]=this.state[ee][qe];Q[ee]=se}for(let ee in this.deletedStates){this.state[ee]=this.state[ee]||{};let se={};if(this.deletedStates[ee]===null)for(let qe in this.state[ee])se[qe]={},this.state[ee][qe]={};else for(let qe in this.deletedStates[ee]){if(this.deletedStates[ee][qe]===null)this.state[ee][qe]={};else for(let je of Object.keys(this.deletedStates[ee][qe]))delete this.state[ee][qe][je];se[qe]=this.state[ee][qe]}Q[ee]=Q[ee]||{},a.e(Q[ee],se)}if(this.stateChanges={},this.deletedStates={},Object.keys(Q).length!==0)for(let ee in w)w[ee].setFeatureState(Q,B)}}class dt extends a.E{constructor(w,B,Q){super(),this.id=w,this.dispatcher=Q,this.on("data",ee=>this._dataHandler(ee)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((ee,se,qe,je)=>{let it=new(xr(se.type))(ee,se,qe,je);if(it.id!==ee)throw new Error(`Expected Source id to be ${ee} instead of ${it.id}`);return it})(w,B,Q,this),this._tiles={},this._cache=new St(0,ee=>this._unloadTile(ee)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Et,this._didEmitContent=!1,this._updated=!1}onAdd(w){this.map=w,this._maxTileCacheSize=w?w._maxTileCacheSize:null,this._maxTileCacheZoomLevels=w?w._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(w)}onRemove(w){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(w)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let w in this._tiles){let B=this._tiles[w];if(B.state!=="loaded"&&B.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let w=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,w&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(w,B,Q){return a._(this,void 0,void 0,function*(){try{yield this._source.loadTile(w),this._tileLoaded(w,B,Q)}catch(ee){w.state="errored",ee.status!==404?this._source.fire(new a.j(ee,{tile:w})):this.update(this.transform,this.terrain)}})}_unloadTile(w){this._source.unloadTile&&this._source.unloadTile(w)}_abortTile(w){this._source.abortTile&&this._source.abortTile(w),this._source.fire(new a.k("dataabort",{tile:w,coord:w.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(w){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let B in this._tiles){let Q=this._tiles[B];Q.upload(w),Q.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(w=>w.tileID).sort(Ht).map(w=>w.key)}getRenderableIds(w){let B=[];for(let Q in this._tiles)this._isIdRenderable(Q,w)&&B.push(this._tiles[Q]);return w?B.sort((Q,ee)=>{let se=Q.tileID,qe=ee.tileID,je=new a.P(se.canonical.x,se.canonical.y)._rotate(this.transform.angle),it=new a.P(qe.canonical.x,qe.canonical.y)._rotate(this.transform.angle);return se.overscaledZ-qe.overscaledZ||it.y-je.y||it.x-je.x}).map(Q=>Q.tileID.key):B.map(Q=>Q.tileID).sort(Ht).map(Q=>Q.key)}hasRenderableParent(w){let B=this.findLoadedParent(w,0);return!!B&&this._isIdRenderable(B.tileID.key)}_isIdRenderable(w,B){return this._tiles[w]&&this._tiles[w].hasData()&&!this._coveredTiles[w]&&(B||!this._tiles[w].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let w in this._tiles)this._tiles[w].state!=="errored"&&this._reloadTile(w,"reloading")}}_reloadTile(w,B){return a._(this,void 0,void 0,function*(){let Q=this._tiles[w];Q&&(Q.state!=="loading"&&(Q.state=B),yield this._loadTile(Q,w,B))})}_tileLoaded(w,B,Q){w.timeAdded=u.now(),Q==="expired"&&(w.refreshedUponExpiration=!0),this._setTileReloadTimer(B,w),this.getSource().type==="raster-dem"&&w.dem&&this._backfillDEM(w),this._state.initializeTileState(w,this.map?this.map.painter:null),w.aborted||this._source.fire(new a.k("data",{dataType:"source",tile:w,coord:w.tileID}))}_backfillDEM(w){let B=this.getRenderableIds();for(let ee=0;ee1||(Math.abs(qe)>1&&(Math.abs(qe+it)===1?qe+=it:Math.abs(qe-it)===1&&(qe-=it)),se.dem&&ee.dem&&(ee.dem.backfillBorder(se.dem,qe,je),ee.neighboringTiles&&ee.neighboringTiles[yt]&&(ee.neighboringTiles[yt].backfilled=!0)))}}getTile(w){return this.getTileByID(w.key)}getTileByID(w){return this._tiles[w]}_retainLoadedChildren(w,B,Q,ee){for(let se in this._tiles){let qe=this._tiles[se];if(ee[se]||!qe.hasData()||qe.tileID.overscaledZ<=B||qe.tileID.overscaledZ>Q)continue;let je=qe.tileID;for(;qe&&qe.tileID.overscaledZ>B+1;){let yt=qe.tileID.scaledTo(qe.tileID.overscaledZ-1);qe=this._tiles[yt.key],qe&&qe.hasData()&&(je=yt)}let it=je;for(;it.overscaledZ>B;)if(it=it.scaledTo(it.overscaledZ-1),w[it.key]){ee[je.key]=je;break}}}findLoadedParent(w,B){if(w.key in this._loadedParentTiles){let Q=this._loadedParentTiles[w.key];return Q&&Q.tileID.overscaledZ>=B?Q:null}for(let Q=w.overscaledZ-1;Q>=B;Q--){let ee=w.scaledTo(Q),se=this._getLoadedTile(ee);if(se)return se}}findLoadedSibling(w){return this._getLoadedTile(w)}_getLoadedTile(w){let B=this._tiles[w.key];return B&&B.hasData()?B:this._cache.getByKey(w.wrapped().key)}updateCacheSize(w){let B=Math.ceil(w.width/this._source.tileSize)+1,Q=Math.ceil(w.height/this._source.tileSize)+1,ee=Math.floor(B*Q*(this._maxTileCacheZoomLevels===null?a.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),se=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,ee):ee;this._cache.setMaxSize(se)}handleWrapJump(w){let B=Math.round((w-(this._prevLng===void 0?w:this._prevLng))/360);if(this._prevLng=w,B){let Q={};for(let ee in this._tiles){let se=this._tiles[ee];se.tileID=se.tileID.unwrapTo(se.tileID.wrap+B),Q[se.tileID.key]=se}this._tiles=Q;for(let ee in this._timers)clearTimeout(this._timers[ee]),delete this._timers[ee];for(let ee in this._tiles)this._setTileReloadTimer(ee,this._tiles[ee])}}_updateCoveredAndRetainedTiles(w,B,Q,ee,se,qe){let je={},it={},yt=Object.keys(w),Ot=u.now();for(let Nt of yt){let hr=w[Nt],Sr=this._tiles[Nt];if(!Sr||Sr.fadeEndTime!==0&&Sr.fadeEndTime<=Ot)continue;let he=this.findLoadedParent(hr,B),be=this.findLoadedSibling(hr),Pe=he||be||null;Pe&&(this._addTile(Pe.tileID),je[Pe.tileID.key]=Pe.tileID),it[Nt]=hr}this._retainLoadedChildren(it,ee,Q,w);for(let Nt in je)w[Nt]||(this._coveredTiles[Nt]=!0,w[Nt]=je[Nt]);if(qe){let Nt={},hr={};for(let Sr of se)this._tiles[Sr.key].hasData()?Nt[Sr.key]=Sr:hr[Sr.key]=Sr;for(let Sr in hr){let he=hr[Sr].children(this._source.maxzoom);this._tiles[he[0].key]&&this._tiles[he[1].key]&&this._tiles[he[2].key]&&this._tiles[he[3].key]&&(Nt[he[0].key]=w[he[0].key]=he[0],Nt[he[1].key]=w[he[1].key]=he[1],Nt[he[2].key]=w[he[2].key]=he[2],Nt[he[3].key]=w[he[3].key]=he[3],delete hr[Sr])}for(let Sr in hr){let he=hr[Sr],be=this.findLoadedParent(he,this._source.minzoom),Pe=this.findLoadedSibling(he),Oe=be||Pe||null;if(Oe){Nt[Oe.tileID.key]=w[Oe.tileID.key]=Oe.tileID;for(let Je in Nt)Nt[Je].isChildOf(Oe.tileID)&&delete Nt[Je]}}for(let Sr in this._tiles)Nt[Sr]||(this._coveredTiles[Sr]=!0)}}update(w,B){if(!this._sourceLoaded||this._paused)return;let Q;this.transform=w,this.terrain=B,this.updateCacheSize(w),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?Q=w.getVisibleUnwrappedCoordinates(this._source.tileID).map(Ot=>new a.S(Ot.canonical.z,Ot.wrap,Ot.canonical.z,Ot.canonical.x,Ot.canonical.y)):(Q=w.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:B}),this._source.hasTile&&(Q=Q.filter(Ot=>this._source.hasTile(Ot)))):Q=[];let ee=w.coveringZoomLevel(this._source),se=Math.max(ee-dt.maxOverzooming,this._source.minzoom),qe=Math.max(ee+dt.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let Ot={};for(let Nt of Q)if(Nt.canonical.z>this._source.minzoom){let hr=Nt.scaledTo(Nt.canonical.z-1);Ot[hr.key]=hr;let Sr=Nt.scaledTo(Math.max(this._source.minzoom,Math.min(Nt.canonical.z,5)));Ot[Sr.key]=Sr}Q=Q.concat(Object.values(Ot))}let je=Q.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,je&&this.fire(new a.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let it=this._updateRetainedTiles(Q,ee);$t(this._source.type)&&this._updateCoveredAndRetainedTiles(it,se,qe,ee,Q,B);for(let Ot in it)this._tiles[Ot].clearFadeHold();let yt=a.ab(this._tiles,it);for(let Ot of yt){let Nt=this._tiles[Ot];Nt.hasSymbolBuckets&&!Nt.holdingForFade()?Nt.setHoldDuration(this.map._fadeDuration):Nt.hasSymbolBuckets&&!Nt.symbolFadeFinished()||this._removeTile(Ot)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let w in this._tiles)this._tiles[w].holdingForFade()&&this._removeTile(w)}_updateRetainedTiles(w,B){var Q;let ee={},se={},qe=Math.max(B-dt.maxOverzooming,this._source.minzoom),je=Math.max(B+dt.maxUnderzooming,this._source.minzoom),it={};for(let yt of w){let Ot=this._addTile(yt);ee[yt.key]=yt,Ot.hasData()||Bthis._source.maxzoom){let hr=yt.children(this._source.maxzoom)[0],Sr=this.getTile(hr);if(Sr&&Sr.hasData()){ee[hr.key]=hr;continue}}else{let hr=yt.children(this._source.maxzoom);if(ee[hr[0].key]&&ee[hr[1].key]&&ee[hr[2].key]&&ee[hr[3].key])continue}let Nt=Ot.wasRequested();for(let hr=yt.overscaledZ-1;hr>=qe;--hr){let Sr=yt.scaledTo(hr);if(se[Sr.key])break;if(se[Sr.key]=!0,Ot=this.getTile(Sr),!Ot&&Nt&&(Ot=this._addTile(Sr)),Ot){let he=Ot.hasData();if((he||!(!((Q=this.map)===null||Q===void 0)&&Q.cancelPendingTileRequestsWhileZooming)||Nt)&&(ee[Sr.key]=Sr),Nt=Ot.wasRequested(),he)break}}}return ee}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let w in this._tiles){let B=[],Q,ee=this._tiles[w].tileID;for(;ee.overscaledZ>0;){if(ee.key in this._loadedParentTiles){Q=this._loadedParentTiles[ee.key];break}B.push(ee.key);let se=ee.scaledTo(ee.overscaledZ-1);if(Q=this._getLoadedTile(se),Q)break;ee=se}for(let se of B)this._loadedParentTiles[se]=Q}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let w in this._tiles){let B=this._tiles[w].tileID,Q=this._getLoadedTile(B);this._loadedSiblingTiles[B.key]=Q}}_addTile(w){let B=this._tiles[w.key];if(B)return B;B=this._cache.getAndRemove(w),B&&(this._setTileReloadTimer(w.key,B),B.tileID=w,this._state.initializeTileState(B,this.map?this.map.painter:null),this._cacheTimers[w.key]&&(clearTimeout(this._cacheTimers[w.key]),delete this._cacheTimers[w.key],this._setTileReloadTimer(w.key,B)));let Q=B;return B||(B=new Lt(w,this._source.tileSize*w.overscaleFactor()),this._loadTile(B,w.key,B.state)),B.uses++,this._tiles[w.key]=B,Q||this._source.fire(new a.k("dataloading",{tile:B,coord:B.tileID,dataType:"source"})),B}_setTileReloadTimer(w,B){w in this._timers&&(clearTimeout(this._timers[w]),delete this._timers[w]);let Q=B.getExpiryTimeout();Q&&(this._timers[w]=setTimeout(()=>{this._reloadTile(w,"expired"),delete this._timers[w]},Q))}_removeTile(w){let B=this._tiles[w];B&&(B.uses--,delete this._tiles[w],this._timers[w]&&(clearTimeout(this._timers[w]),delete this._timers[w]),B.uses>0||(B.hasData()&&B.state!=="reloading"?this._cache.add(B.tileID,B,B.getExpiryTimeout()):(B.aborted=!0,this._abortTile(B),this._unloadTile(B))))}_dataHandler(w){let B=w.sourceDataType;w.dataType==="source"&&B==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&w.dataType==="source"&&B==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let w in this._tiles)this._removeTile(w);this._cache.reset()}tilesIn(w,B,Q){let ee=[],se=this.transform;if(!se)return ee;let qe=Q?se.getCameraQueryGeometry(w):w,je=w.map(he=>se.pointCoordinate(he,this.terrain)),it=qe.map(he=>se.pointCoordinate(he,this.terrain)),yt=this.getIds(),Ot=1/0,Nt=1/0,hr=-1/0,Sr=-1/0;for(let he of it)Ot=Math.min(Ot,he.x),Nt=Math.min(Nt,he.y),hr=Math.max(hr,he.x),Sr=Math.max(Sr,he.y);for(let he=0;he=0&&He[1].y+Je>=0){let et=je.map(Dt=>Pe.getTilePoint(Dt)),Mt=it.map(Dt=>Pe.getTilePoint(Dt));ee.push({tile:be,tileID:Pe,queryGeometry:et,cameraQueryGeometry:Mt,scale:Oe})}}return ee}getVisibleCoordinates(w){let B=this.getRenderableIds(w).map(Q=>this._tiles[Q].tileID);for(let Q of B)Q.posMatrix=this.transform.calculatePosMatrix(Q.toUnwrapped());return B}hasTransition(){if(this._source.hasTransition())return!0;if($t(this._source.type)){let w=u.now();for(let B in this._tiles)if(this._tiles[B].fadeEndTime>=w)return!0}return!1}setFeatureState(w,B,Q){this._state.updateState(w=w||"_geojsonTileLayer",B,Q)}removeFeatureState(w,B,Q){this._state.removeFeatureState(w=w||"_geojsonTileLayer",B,Q)}getFeatureState(w,B){return this._state.getState(w=w||"_geojsonTileLayer",B)}setDependencies(w,B,Q){let ee=this._tiles[w];ee&&ee.setDependencies(B,Q)}reloadTilesForDependencies(w,B){for(let Q in this._tiles)this._tiles[Q].hasDependency(w,B)&&this._reloadTile(Q,"reloading");this._cache.filter(Q=>!Q.hasDependency(w,B))}}function Ht(le,w){let B=Math.abs(2*le.wrap)-+(le.wrap<0),Q=Math.abs(2*w.wrap)-+(w.wrap<0);return le.overscaledZ-w.overscaledZ||Q-B||w.canonical.y-le.canonical.y||w.canonical.x-le.canonical.x}function $t(le){return le==="raster"||le==="image"||le==="video"}dt.maxOverzooming=10,dt.maxUnderzooming=3;class fr{constructor(w,B){this.reset(w,B)}reset(w,B){this.points=w||[],this._distances=[0];for(let Q=1;Q0?(ee-qe)/je:0;return this.points[se].mult(1-it).add(this.points[B].mult(it))}}function _r(le,w){let B=!0;return le==="always"||le!=="never"&&w!=="never"||(B=!1),B}class Br{constructor(w,B,Q){let ee=this.boxCells=[],se=this.circleCells=[];this.xCellCount=Math.ceil(w/Q),this.yCellCount=Math.ceil(B/Q);for(let qe=0;qethis.width||ee<0||B>this.height)return[];let it=[];if(w<=0&&B<=0&&this.width<=Q&&this.height<=ee){if(se)return[{key:null,x1:w,y1:B,x2:Q,y2:ee}];for(let yt=0;yt0}hitTestCircle(w,B,Q,ee,se){let qe=w-Q,je=w+Q,it=B-Q,yt=B+Q;if(je<0||qe>this.width||yt<0||it>this.height)return!1;let Ot=[];return this._forEachCell(qe,it,je,yt,this._queryCellCircle,Ot,{hitTest:!0,overlapMode:ee,circle:{x:w,y:B,radius:Q},seenUids:{box:{},circle:{}}},se),Ot.length>0}_queryCell(w,B,Q,ee,se,qe,je,it){let{seenUids:yt,hitTest:Ot,overlapMode:Nt}=je,hr=this.boxCells[se];if(hr!==null){let he=this.bboxes;for(let be of hr)if(!yt.box[be]){yt.box[be]=!0;let Pe=4*be,Oe=this.boxKeys[be];if(w<=he[Pe+2]&&B<=he[Pe+3]&&Q>=he[Pe+0]&&ee>=he[Pe+1]&&(!it||it(Oe))&&(!Ot||!_r(Nt,Oe.overlapMode))&&(qe.push({key:Oe,x1:he[Pe],y1:he[Pe+1],x2:he[Pe+2],y2:he[Pe+3]}),Ot))return!0}}let Sr=this.circleCells[se];if(Sr!==null){let he=this.circles;for(let be of Sr)if(!yt.circle[be]){yt.circle[be]=!0;let Pe=3*be,Oe=this.circleKeys[be];if(this._circleAndRectCollide(he[Pe],he[Pe+1],he[Pe+2],w,B,Q,ee)&&(!it||it(Oe))&&(!Ot||!_r(Nt,Oe.overlapMode))){let Je=he[Pe],He=he[Pe+1],et=he[Pe+2];if(qe.push({key:Oe,x1:Je-et,y1:He-et,x2:Je+et,y2:He+et}),Ot)return!0}}}return!1}_queryCellCircle(w,B,Q,ee,se,qe,je,it){let{circle:yt,seenUids:Ot,overlapMode:Nt}=je,hr=this.boxCells[se];if(hr!==null){let he=this.bboxes;for(let be of hr)if(!Ot.box[be]){Ot.box[be]=!0;let Pe=4*be,Oe=this.boxKeys[be];if(this._circleAndRectCollide(yt.x,yt.y,yt.radius,he[Pe+0],he[Pe+1],he[Pe+2],he[Pe+3])&&(!it||it(Oe))&&!_r(Nt,Oe.overlapMode))return qe.push(!0),!0}}let Sr=this.circleCells[se];if(Sr!==null){let he=this.circles;for(let be of Sr)if(!Ot.circle[be]){Ot.circle[be]=!0;let Pe=3*be,Oe=this.circleKeys[be];if(this._circlesCollide(he[Pe],he[Pe+1],he[Pe+2],yt.x,yt.y,yt.radius)&&(!it||it(Oe))&&!_r(Nt,Oe.overlapMode))return qe.push(!0),!0}}}_forEachCell(w,B,Q,ee,se,qe,je,it){let yt=this._convertToXCellCoord(w),Ot=this._convertToYCellCoord(B),Nt=this._convertToXCellCoord(Q),hr=this._convertToYCellCoord(ee);for(let Sr=yt;Sr<=Nt;Sr++)for(let he=Ot;he<=hr;he++)if(se.call(this,w,B,Q,ee,this.xCellCount*he+Sr,qe,je,it))return}_convertToXCellCoord(w){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(w*this.xScale)))}_convertToYCellCoord(w){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(w*this.yScale)))}_circlesCollide(w,B,Q,ee,se,qe){let je=ee-w,it=se-B,yt=Q+qe;return yt*yt>je*je+it*it}_circleAndRectCollide(w,B,Q,ee,se,qe,je){let it=(qe-ee)/2,yt=Math.abs(w-(ee+it));if(yt>it+Q)return!1;let Ot=(je-se)/2,Nt=Math.abs(B-(se+Ot));if(Nt>Ot+Q)return!1;if(yt<=it||Nt<=Ot)return!0;let hr=yt-it,Sr=Nt-Ot;return hr*hr+Sr*Sr<=Q*Q}}function Or(le,w,B,Q,ee){let se=a.H();return w?(a.K(se,se,[1/ee,1/ee,1]),B||a.ad(se,se,Q.angle)):a.L(se,Q.labelPlaneMatrix,le),se}function Nr(le,w,B,Q,ee){if(w){let se=a.ae(le);return a.K(se,se,[ee,ee,1]),B||a.ad(se,se,-Q.angle),se}return Q.glCoordMatrix}function ut(le,w,B,Q){let ee;Q?(ee=[le,w,Q(le,w),1],a.af(ee,ee,B)):(ee=[le,w,0,1],jr(ee,ee,B));let se=ee[3];return{point:new a.P(ee[0]/se,ee[1]/se),signedDistanceFromCamera:se,isOccluded:!1}}function Ne(le,w){return .5+le/w*.5}function Ye(le,w){return le.x>=-w[0]&&le.x<=w[0]&&le.y>=-w[1]&&le.y<=w[1]}function Ve(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he){let be=Q?le.textSizeData:le.iconSizeData,Pe=a.ag(be,B.transform.zoom),Oe=[256/B.width*2+1,256/B.height*2+1],Je=Q?le.text.dynamicLayoutVertexArray:le.icon.dynamicLayoutVertexArray;Je.clear();let He=le.lineVertexArray,et=Q?le.text.placedSymbolArray:le.icon.placedSymbolArray,Mt=B.transform.width/B.transform.height,Dt=!1;for(let Ut=0;UtMath.abs(B.x-w.x)*Q?{useVertical:!0}:(le===a.ah.vertical?w.yB.x)?{needsFlipping:!0}:null}function Le(le,w,B,Q,ee,se,qe,je,it,yt,Ot){let Nt=B/24,hr=w.lineOffsetX*Nt,Sr=w.lineOffsetY*Nt,he;if(w.numGlyphs>1){let be=w.glyphStartIndex+w.numGlyphs,Pe=w.lineStartIndex,Oe=w.lineStartIndex+w.lineLength,Je=Xe(Nt,je,hr,Sr,Q,w,Ot,le);if(!Je)return{notEnoughRoom:!0};let He=ut(Je.first.point.x,Je.first.point.y,qe,le.getElevation).point,et=ut(Je.last.point.x,Je.last.point.y,qe,le.getElevation).point;if(ee&&!Q){let Mt=ht(w.writingMode,He,et,yt);if(Mt)return Mt}he=[Je.first];for(let Mt=w.glyphStartIndex+1;Mt0?He.point:function(Dt,Ut,tr,mr,Rr,zr){return xe(Dt,Ut,tr,1,Rr,zr)}(le.tileAnchorPoint,Je,Pe,0,se,le),Mt=ht(w.writingMode,Pe,et,yt);if(Mt)return Mt}let be=ar(Nt*je.getoffsetX(w.glyphStartIndex),hr,Sr,Q,w.segment,w.lineStartIndex,w.lineStartIndex+w.lineLength,le,Ot);if(!be||le.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};he=[be]}for(let be of he)a.aj(it,be.point,be.angle);return{}}function xe(le,w,B,Q,ee,se){let qe=le.add(le.sub(w)._unit()),je=ee!==void 0?ut(qe.x,qe.y,ee,se.getElevation).point:lt(qe.x,qe.y,se).point,it=B.sub(je);return B.add(it._mult(Q/it.mag()))}function Se(le,w,B){let Q=w.projectionCache;if(Q.projections[le])return Q.projections[le];let ee=new a.P(w.lineVertexArray.getx(le),w.lineVertexArray.gety(le)),se=lt(ee.x,ee.y,w);if(se.signedDistanceFromCamera>0)return Q.projections[le]=se.point,Q.anyProjectionOccluded=Q.anyProjectionOccluded||se.isOccluded,se.point;let qe=le-B.direction;return function(je,it,yt,Ot,Nt){return xe(je,it,yt,Ot,void 0,Nt)}(B.distanceFromAnchor===0?w.tileAnchorPoint:new a.P(w.lineVertexArray.getx(qe),w.lineVertexArray.gety(qe)),ee,B.previousVertex,B.absOffsetX-B.distanceFromAnchor+1,w)}function lt(le,w,B){let Q=le+B.translation[0],ee=w+B.translation[1],se;return!B.pitchWithMap&&B.projection.useSpecialProjectionForSymbols?(se=B.projection.projectTileCoordinates(Q,ee,B.unwrappedTileID,B.getElevation),se.point.x=(.5*se.point.x+.5)*B.width,se.point.y=(.5*-se.point.y+.5)*B.height):(se=ut(Q,ee,B.labelPlaneMatrix,B.getElevation),se.isOccluded=!1),se}function Gt(le,w,B){return le._unit()._perp()._mult(w*B)}function Vt(le,w,B,Q,ee,se,qe,je,it){if(je.projectionCache.offsets[le])return je.projectionCache.offsets[le];let yt=B.add(w);if(le+it.direction=ee)return je.projectionCache.offsets[le]=yt,yt;let Ot=Se(le+it.direction,je,it),Nt=Gt(Ot.sub(B),qe,it.direction),hr=B.add(Nt),Sr=Ot.add(Nt);return je.projectionCache.offsets[le]=a.ak(se,yt,hr,Sr)||yt,je.projectionCache.offsets[le]}function ar(le,w,B,Q,ee,se,qe,je,it){let yt=Q?le-w:le+w,Ot=yt>0?1:-1,Nt=0;Q&&(Ot*=-1,Nt=Math.PI),Ot<0&&(Nt+=Math.PI);let hr,Sr=Ot>0?se+ee:se+ee+1;je.projectionCache.cachedAnchorPoint?hr=je.projectionCache.cachedAnchorPoint:(hr=lt(je.tileAnchorPoint.x,je.tileAnchorPoint.y,je).point,je.projectionCache.cachedAnchorPoint=hr);let he,be,Pe=hr,Oe=hr,Je=0,He=0,et=Math.abs(yt),Mt=[],Dt;for(;Je+He<=et;){if(Sr+=Ot,Sr=qe)return null;Je+=He,Oe=Pe,be=he;let mr={absOffsetX:et,direction:Ot,distanceFromAnchor:Je,previousVertex:Oe};if(Pe=Se(Sr,je,mr),B===0)Mt.push(Oe),Dt=Pe.sub(Oe);else{let Rr,zr=Pe.sub(Oe);Rr=zr.mag()===0?Gt(Se(Sr+Ot,je,mr).sub(Pe),B,Ot):Gt(zr,B,Ot),be||(be=Oe.add(Rr)),he=Vt(Sr,Rr,Pe,se,qe,be,B,je,mr),Mt.push(be),Dt=he.sub(be)}He=Dt.mag()}let Ut=Dt._mult((et-Je)/He)._add(be||Oe),tr=Nt+Math.atan2(Pe.y-Oe.y,Pe.x-Oe.x);return Mt.push(Ut),{point:Ut,angle:it?tr:0,path:Mt}}let Qr=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ai(le,w){for(let B=0;B=1;ea--)Qi.push(Li.path[ea]);for(let ea=1;eaGa.signedDistanceFromCamera<=0)?[]:ea.map(Ga=>Ga.point)}let pa=[];if(Qi.length>0){let ea=Qi[0].clone(),Ga=Qi[0].clone();for(let To=1;To=zr.x&&Ga.x<=Xr.x&&ea.y>=zr.y&&Ga.y<=Xr.y?[Qi]:Ga.xXr.x||Ga.yXr.y?[]:a.al([Qi],zr.x,zr.y,Xr.x,Xr.y)}for(let ea of pa){di.reset(ea,.25*Rr);let Ga=0;Ga=di.length<=.5*Rr?1:Math.ceil(di.paddedLength/Mn)+1;for(let To=0;Tout(ee.x,ee.y,Q,B.getElevation))}queryRenderedSymbols(w){if(w.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let B=[],Q=1/0,ee=1/0,se=-1/0,qe=-1/0;for(let Ot of w){let Nt=new a.P(Ot.x+ri,Ot.y+ri);Q=Math.min(Q,Nt.x),ee=Math.min(ee,Nt.y),se=Math.max(se,Nt.x),qe=Math.max(qe,Nt.y),B.push(Nt)}let je=this.grid.query(Q,ee,se,qe).concat(this.ignoredGrid.query(Q,ee,se,qe)),it={},yt={};for(let Ot of je){let Nt=Ot.key;if(it[Nt.bucketInstanceId]===void 0&&(it[Nt.bucketInstanceId]={}),it[Nt.bucketInstanceId][Nt.featureIndex])continue;let hr=[new a.P(Ot.x1,Ot.y1),new a.P(Ot.x2,Ot.y1),new a.P(Ot.x2,Ot.y2),new a.P(Ot.x1,Ot.y2)];a.am(B,hr)&&(it[Nt.bucketInstanceId][Nt.featureIndex]=!0,yt[Nt.bucketInstanceId]===void 0&&(yt[Nt.bucketInstanceId]=[]),yt[Nt.bucketInstanceId].push(Nt.featureIndex))}return yt}insertCollisionBox(w,B,Q,ee,se,qe){(Q?this.ignoredGrid:this.grid).insert({bucketInstanceId:ee,featureIndex:se,collisionGroupID:qe,overlapMode:B},w[0],w[1],w[2],w[3])}insertCollisionCircles(w,B,Q,ee,se,qe){let je=Q?this.ignoredGrid:this.grid,it={bucketInstanceId:ee,featureIndex:se,collisionGroupID:qe,overlapMode:B};for(let yt=0;yt=this.screenRightBoundary||eethis.screenBottomBoundary}isInsideGrid(w,B,Q,ee){return Q>=0&&w=0&&Bthis.projectAndGetPerspectiveRatio(Q,Rr.x,Rr.y,ee,yt));tr=mr.some(Rr=>!Rr.isOccluded),Ut=mr.map(Rr=>Rr.point)}else tr=!0;return{box:a.ao(Ut),allPointsOccluded:!tr}}}function nn(le,w,B){return w*(a.X/(le.tileSize*Math.pow(2,B-le.tileID.overscaledZ)))}class Wi{constructor(w,B,Q,ee){this.opacity=w?Math.max(0,Math.min(1,w.opacity+(w.placed?B:-B))):ee&&Q?1:0,this.placed=Q}isHidden(){return this.opacity===0&&!this.placed}}class Ni{constructor(w,B,Q,ee,se){this.text=new Wi(w?w.text:null,B,Q,se),this.icon=new Wi(w?w.icon:null,B,ee,se)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class _n{constructor(w,B,Q){this.text=w,this.icon=B,this.skipFade=Q}}class $i{constructor(){this.invProjMatrix=a.H(),this.viewportMatrix=a.H(),this.circles=[]}}class zn{constructor(w,B,Q,ee,se){this.bucketInstanceId=w,this.featureIndex=B,this.sourceLayerIndex=Q,this.bucketIndex=ee,this.tileID=se}}class Wn{constructor(w){this.crossSourceCollisions=w,this.maxGroupID=0,this.collisionGroups={}}get(w){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[w]){let B=++this.maxGroupID;this.collisionGroups[w]={ID:B,predicate:Q=>Q.collisionGroupID===B}}return this.collisionGroups[w]}}function It(le,w,B,Q,ee){let{horizontalAlign:se,verticalAlign:qe}=a.au(le);return new a.P(-(se-.5)*w+Q[0]*ee,-(qe-.5)*B+Q[1]*ee)}class ft{constructor(w,B,Q,ee,se,qe){this.transform=w.clone(),this.terrain=Q,this.collisionIndex=new bi(this.transform,B),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=ee,this.retainedQueryData={},this.collisionGroups=new Wn(se),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=qe,qe&&(qe.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(w){let B=this.terrain;return B?(Q,ee)=>B.getElevation(w,Q,ee):null}getBucketParts(w,B,Q,ee){let se=Q.getBucket(B),qe=Q.latestFeatureIndex;if(!se||!qe||B.id!==se.layerIds[0])return;let je=Q.collisionBoxArray,it=se.layers[0].layout,yt=se.layers[0].paint,Ot=Math.pow(2,this.transform.zoom-Q.tileID.overscaledZ),Nt=Q.tileSize/a.X,hr=Q.tileID.toUnwrapped(),Sr=this.transform.calculatePosMatrix(hr),he=it.get("text-pitch-alignment")==="map",be=it.get("text-rotation-alignment")==="map",Pe=nn(Q,1,this.transform.zoom),Oe=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,yt.get("text-translate"),yt.get("text-translate-anchor")),Je=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,yt.get("icon-translate"),yt.get("icon-translate-anchor")),He=Or(Sr,he,be,this.transform,Pe),et=null;if(he){let Dt=Nr(Sr,he,be,this.transform,Pe);et=a.L([],this.transform.labelPlaneMatrix,Dt)}this.retainedQueryData[se.bucketInstanceId]=new zn(se.bucketInstanceId,qe,se.sourceLayerIndex,se.index,Q.tileID);let Mt={bucket:se,layout:it,translationText:Oe,translationIcon:Je,posMatrix:Sr,unwrappedTileID:hr,textLabelPlaneMatrix:He,labelToScreenMatrix:et,scale:Ot,textPixelRatio:Nt,holdingForFade:Q.holdingForFade(),collisionBoxArray:je,partiallyEvaluatedTextSize:a.ag(se.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(se.sourceID)};if(ee)for(let Dt of se.sortKeyRanges){let{sortKey:Ut,symbolInstanceStart:tr,symbolInstanceEnd:mr}=Dt;w.push({sortKey:Ut,symbolInstanceStart:tr,symbolInstanceEnd:mr,parameters:Mt})}else w.push({symbolInstanceStart:0,symbolInstanceEnd:se.symbolInstances.length,parameters:Mt})}attemptAnchorPlacement(w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he,be,Pe,Oe,Je,He){let et=a.aq[w.textAnchor],Mt=[w.textOffset0,w.textOffset1],Dt=It(et,Q,ee,Mt,se),Ut=this.collisionIndex.placeCollisionBox(B,hr,it,yt,Ot,je,qe,Pe,Nt.predicate,He,Dt);if((!Je||this.collisionIndex.placeCollisionBox(Je,hr,it,yt,Ot,je,qe,Oe,Nt.predicate,He,Dt).placeable)&&Ut.placeable){let tr;if(this.prevPlacement&&this.prevPlacement.variableOffsets[Sr.crossTileID]&&this.prevPlacement.placements[Sr.crossTileID]&&this.prevPlacement.placements[Sr.crossTileID].text&&(tr=this.prevPlacement.variableOffsets[Sr.crossTileID].anchor),Sr.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[Sr.crossTileID]={textOffset:Mt,width:Q,height:ee,anchor:et,textBoxScale:se,prevAnchor:tr},this.markUsedJustification(he,et,Sr,be),he.allowVerticalPlacement&&(this.markUsedOrientation(he,be,Sr),this.placedOrientations[Sr.crossTileID]=be),{shift:Dt,placedGlyphBoxes:Ut}}}placeLayerBucketPart(w,B,Q){let{bucket:ee,layout:se,translationText:qe,translationIcon:je,posMatrix:it,unwrappedTileID:yt,textLabelPlaneMatrix:Ot,labelToScreenMatrix:Nt,textPixelRatio:hr,holdingForFade:Sr,collisionBoxArray:he,partiallyEvaluatedTextSize:be,collisionGroup:Pe}=w.parameters,Oe=se.get("text-optional"),Je=se.get("icon-optional"),He=a.ar(se,"text-overlap","text-allow-overlap"),et=He==="always",Mt=a.ar(se,"icon-overlap","icon-allow-overlap"),Dt=Mt==="always",Ut=se.get("text-rotation-alignment")==="map",tr=se.get("text-pitch-alignment")==="map",mr=se.get("icon-text-fit")!=="none",Rr=se.get("symbol-z-order")==="viewport-y",zr=et&&(Dt||!ee.hasIconData()||Je),Xr=Dt&&(et||!ee.hasTextData()||Oe);!ee.collisionArrays&&he&&ee.deserializeCollisionBoxes(he);let di=this._getTerrainElevationFunc(this.retainedQueryData[ee.bucketInstanceId].tileID),Li=(Ci,Qi,Mn)=>{var pa,ea;if(B[Ci.crossTileID])return;if(Sr)return void(this.placements[Ci.crossTileID]=new _n(!1,!1,!1));let Ga=!1,To=!1,Wa=!0,co=null,Ro={box:null,placeable:!1,offscreen:null},Ds={box:null,placeable:!1,offscreen:null},As=null,yo=null,po=null,_l=0,Hl=0,Zu=0;Qi.textFeatureIndex?_l=Qi.textFeatureIndex:Ci.useRuntimeCollisionCircles&&(_l=Ci.featureIndex),Qi.verticalTextFeatureIndex&&(Hl=Qi.verticalTextFeatureIndex);let cu=Qi.textBox;if(cu){let zl=we=>{let Be=a.ah.horizontal;if(ee.allowVerticalPlacement&&!we&&this.prevPlacement){let Ue=this.prevPlacement.placedOrientations[Ci.crossTileID];Ue&&(this.placedOrientations[Ci.crossTileID]=Ue,Be=Ue,this.markUsedOrientation(ee,Be,Ci))}return Be},Fl=(we,Be)=>{if(ee.allowVerticalPlacement&&Ci.numVerticalGlyphVertices>0&&Qi.verticalTextBox){for(let Ue of ee.writingModes)if(Ue===a.ah.vertical?(Ro=Be(),Ds=Ro):Ro=we(),Ro&&Ro.placeable)break}else Ro=we()},Z=Ci.textAnchorOffsetStartIndex,oe=Ci.textAnchorOffsetEndIndex;if(oe===Z){let we=(Be,Ue)=>{let We=this.collisionIndex.placeCollisionBox(Be,He,hr,it,yt,tr,Ut,qe,Pe.predicate,di);return We&&We.placeable&&(this.markUsedOrientation(ee,Ue,Ci),this.placedOrientations[Ci.crossTileID]=Ue),We};Fl(()=>we(cu,a.ah.horizontal),()=>{let Be=Qi.verticalTextBox;return ee.allowVerticalPlacement&&Ci.numVerticalGlyphVertices>0&&Be?we(Be,a.ah.vertical):{box:null,offscreen:null}}),zl(Ro&&Ro.placeable)}else{let we=a.aq[(ea=(pa=this.prevPlacement)===null||pa===void 0?void 0:pa.variableOffsets[Ci.crossTileID])===null||ea===void 0?void 0:ea.anchor],Be=(We,wt,tt)=>{let zt=We.x2-We.x1,or=We.y2-We.y1,lr=Ci.textBoxScale,Dr=mr&&Mt==="never"?wt:null,Ir=null,oi=He==="never"?1:2,ui="never";we&&oi++;for(let qr=0;qrBe(cu,Qi.iconBox,a.ah.horizontal),()=>{let We=Qi.verticalTextBox;return ee.allowVerticalPlacement&&(!Ro||!Ro.placeable)&&Ci.numVerticalGlyphVertices>0&&We?Be(We,Qi.verticalIconBox,a.ah.vertical):{box:null,occluded:!0,offscreen:null}}),Ro&&(Ga=Ro.placeable,Wa=Ro.offscreen);let Ue=zl(Ro&&Ro.placeable);if(!Ga&&this.prevPlacement){let We=this.prevPlacement.variableOffsets[Ci.crossTileID];We&&(this.variableOffsets[Ci.crossTileID]=We,this.markUsedJustification(ee,We.anchor,Ci,Ue))}}}if(As=Ro,Ga=As&&As.placeable,Wa=As&&As.offscreen,Ci.useRuntimeCollisionCircles){let zl=ee.text.placedSymbolArray.get(Ci.centerJustifiedTextSymbolIndex),Fl=a.ai(ee.textSizeData,be,zl),Z=se.get("text-padding");yo=this.collisionIndex.placeCollisionCircles(He,zl,ee.lineVertexArray,ee.glyphOffsetArray,Fl,it,yt,Ot,Nt,Q,tr,Pe.predicate,Ci.collisionCircleDiameter,Z,qe,di),yo.circles.length&&yo.collisionDetected&&!Q&&a.w("Collisions detected, but collision boxes are not shown"),Ga=et||yo.circles.length>0&&!yo.collisionDetected,Wa=Wa&&yo.offscreen}if(Qi.iconFeatureIndex&&(Zu=Qi.iconFeatureIndex),Qi.iconBox){let zl=Fl=>this.collisionIndex.placeCollisionBox(Fl,Mt,hr,it,yt,tr,Ut,je,Pe.predicate,di,mr&&co?co:void 0);Ds&&Ds.placeable&&Qi.verticalIconBox?(po=zl(Qi.verticalIconBox),To=po.placeable):(po=zl(Qi.iconBox),To=po.placeable),Wa=Wa&&po.offscreen}let el=Oe||Ci.numHorizontalGlyphVertices===0&&Ci.numVerticalGlyphVertices===0,au=Je||Ci.numIconVertices===0;el||au?au?el||(To=To&&Ga):Ga=To&&Ga:To=Ga=To&&Ga;let zc=To&&po.placeable;if(Ga&&As.placeable&&this.collisionIndex.insertCollisionBox(As.box,He,se.get("text-ignore-placement"),ee.bucketInstanceId,Ds&&Ds.placeable&&Hl?Hl:_l,Pe.ID),zc&&this.collisionIndex.insertCollisionBox(po.box,Mt,se.get("icon-ignore-placement"),ee.bucketInstanceId,Zu,Pe.ID),yo&&Ga&&this.collisionIndex.insertCollisionCircles(yo.circles,He,se.get("text-ignore-placement"),ee.bucketInstanceId,_l,Pe.ID),Q&&this.storeCollisionData(ee.bucketInstanceId,Mn,Qi,As,po,yo),Ci.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(ee.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[Ci.crossTileID]=new _n(Ga||zr,To||Xr,Wa||ee.justReloaded),B[Ci.crossTileID]=!0};if(Rr){if(w.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let Ci=ee.getSortedSymbolIndexes(this.transform.angle);for(let Qi=Ci.length-1;Qi>=0;--Qi){let Mn=Ci[Qi];Li(ee.symbolInstances.get(Mn),ee.collisionArrays[Mn],Mn)}}else for(let Ci=w.symbolInstanceStart;Ci=0&&(w.text.placedSymbolArray.get(je).crossTileID=se>=0&&je!==se?0:Q.crossTileID)}markUsedOrientation(w,B,Q){let ee=B===a.ah.horizontal||B===a.ah.horizontalOnly?B:0,se=B===a.ah.vertical?B:0,qe=[Q.leftJustifiedTextSymbolIndex,Q.centerJustifiedTextSymbolIndex,Q.rightJustifiedTextSymbolIndex];for(let je of qe)w.text.placedSymbolArray.get(je).placedOrientation=ee;Q.verticalPlacedTextSymbolIndex&&(w.text.placedSymbolArray.get(Q.verticalPlacedTextSymbolIndex).placedOrientation=se)}commit(w){this.commitTime=w,this.zoomAtLastRecencyCheck=this.transform.zoom;let B=this.prevPlacement,Q=!1;this.prevZoomAdjustment=B?B.zoomAdjustment(this.transform.zoom):0;let ee=B?B.symbolFadeChange(w):1,se=B?B.opacities:{},qe=B?B.variableOffsets:{},je=B?B.placedOrientations:{};for(let it in this.placements){let yt=this.placements[it],Ot=se[it];Ot?(this.opacities[it]=new Ni(Ot,ee,yt.text,yt.icon),Q=Q||yt.text!==Ot.text.placed||yt.icon!==Ot.icon.placed):(this.opacities[it]=new Ni(null,ee,yt.text,yt.icon,yt.skipFade),Q=Q||yt.text||yt.icon)}for(let it in se){let yt=se[it];if(!this.opacities[it]){let Ot=new Ni(yt,ee,!1,!1);Ot.isHidden()||(this.opacities[it]=Ot,Q=Q||yt.text.placed||yt.icon.placed)}}for(let it in qe)this.variableOffsets[it]||!this.opacities[it]||this.opacities[it].isHidden()||(this.variableOffsets[it]=qe[it]);for(let it in je)this.placedOrientations[it]||!this.opacities[it]||this.opacities[it].isHidden()||(this.placedOrientations[it]=je[it]);if(B&&B.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");Q?this.lastPlacementChangeTime=w:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=B?B.lastPlacementChangeTime:w)}updateLayerOpacities(w,B){let Q={};for(let ee of B){let se=ee.getBucket(w);se&&ee.latestFeatureIndex&&w.id===se.layerIds[0]&&this.updateBucketOpacities(se,ee.tileID,Q,ee.collisionBoxArray)}}updateBucketOpacities(w,B,Q,ee){w.hasTextData()&&(w.text.opacityVertexArray.clear(),w.text.hasVisibleVertices=!1),w.hasIconData()&&(w.icon.opacityVertexArray.clear(),w.icon.hasVisibleVertices=!1),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexArray.clear(),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexArray.clear();let se=w.layers[0],qe=se.layout,je=new Ni(null,0,!1,!1,!0),it=qe.get("text-allow-overlap"),yt=qe.get("icon-allow-overlap"),Ot=se._unevaluatedLayout.hasValue("text-variable-anchor")||se._unevaluatedLayout.hasValue("text-variable-anchor-offset"),Nt=qe.get("text-rotation-alignment")==="map",hr=qe.get("text-pitch-alignment")==="map",Sr=qe.get("icon-text-fit")!=="none",he=new Ni(null,0,it&&(yt||!w.hasIconData()||qe.get("icon-optional")),yt&&(it||!w.hasTextData()||qe.get("text-optional")),!0);!w.collisionArrays&&ee&&(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData())&&w.deserializeCollisionBoxes(ee);let be=(Oe,Je,He)=>{for(let et=0;et0,tr=this.placedOrientations[Je.crossTileID],mr=tr===a.ah.vertical,Rr=tr===a.ah.horizontal||tr===a.ah.horizontalOnly;if(He>0||et>0){let Xr=Mi(Dt.text);be(w.text,He,mr?Pi:Xr),be(w.text,et,Rr?Pi:Xr);let di=Dt.text.isHidden();[Je.rightJustifiedTextSymbolIndex,Je.centerJustifiedTextSymbolIndex,Je.leftJustifiedTextSymbolIndex].forEach(Qi=>{Qi>=0&&(w.text.placedSymbolArray.get(Qi).hidden=di||mr?1:0)}),Je.verticalPlacedTextSymbolIndex>=0&&(w.text.placedSymbolArray.get(Je.verticalPlacedTextSymbolIndex).hidden=di||Rr?1:0);let Li=this.variableOffsets[Je.crossTileID];Li&&this.markUsedJustification(w,Li.anchor,Je,tr);let Ci=this.placedOrientations[Je.crossTileID];Ci&&(this.markUsedJustification(w,"left",Je,Ci),this.markUsedOrientation(w,Ci,Je))}if(Ut){let Xr=Mi(Dt.icon),di=!(Sr&&Je.verticalPlacedIconSymbolIndex&&mr);Je.placedIconSymbolIndex>=0&&(be(w.icon,Je.numIconVertices,di?Xr:Pi),w.icon.placedSymbolArray.get(Je.placedIconSymbolIndex).hidden=Dt.icon.isHidden()),Je.verticalPlacedIconSymbolIndex>=0&&(be(w.icon,Je.numVerticalIconVertices,di?Pi:Xr),w.icon.placedSymbolArray.get(Je.verticalPlacedIconSymbolIndex).hidden=Dt.icon.isHidden())}let zr=Pe&&Pe.has(Oe)?Pe.get(Oe):{text:null,icon:null};if(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData()){let Xr=w.collisionArrays[Oe];if(Xr){let di=new a.P(0,0);if(Xr.textBox||Xr.verticalTextBox){let Li=!0;if(Ot){let Ci=this.variableOffsets[Mt];Ci?(di=It(Ci.anchor,Ci.width,Ci.height,Ci.textOffset,Ci.textBoxScale),Nt&&di._rotate(hr?this.transform.angle:-this.transform.angle)):Li=!1}if(Xr.textBox||Xr.verticalTextBox){let Ci;Xr.textBox&&(Ci=mr),Xr.verticalTextBox&&(Ci=Rr),jt(w.textCollisionBox.collisionVertexArray,Dt.text.placed,!Li||Ci,zr.text,di.x,di.y)}}if(Xr.iconBox||Xr.verticalIconBox){let Li=!!(!Rr&&Xr.verticalIconBox),Ci;Xr.iconBox&&(Ci=Li),Xr.verticalIconBox&&(Ci=!Li),jt(w.iconCollisionBox.collisionVertexArray,Dt.icon.placed,Ci,zr.icon,Sr?di.x:0,Sr?di.y:0)}}}}if(w.sortFeatures(this.transform.angle),this.retainedQueryData[w.bucketInstanceId]&&(this.retainedQueryData[w.bucketInstanceId].featureSortOrder=w.featureSortOrder),w.hasTextData()&&w.text.opacityVertexBuffer&&w.text.opacityVertexBuffer.updateData(w.text.opacityVertexArray),w.hasIconData()&&w.icon.opacityVertexBuffer&&w.icon.opacityVertexBuffer.updateData(w.icon.opacityVertexArray),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexBuffer&&w.iconCollisionBox.collisionVertexBuffer.updateData(w.iconCollisionBox.collisionVertexArray),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexBuffer&&w.textCollisionBox.collisionVertexBuffer.updateData(w.textCollisionBox.collisionVertexArray),w.text.opacityVertexArray.length!==w.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${w.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${w.text.layoutVertexArray.length}) / 4`);if(w.icon.opacityVertexArray.length!==w.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${w.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${w.icon.layoutVertexArray.length}) / 4`);if(w.bucketInstanceId in this.collisionCircleArrays){let Oe=this.collisionCircleArrays[w.bucketInstanceId];w.placementInvProjMatrix=Oe.invProjMatrix,w.placementViewportMatrix=Oe.viewportMatrix,w.collisionCircleArray=Oe.circles,delete this.collisionCircleArrays[w.bucketInstanceId]}}symbolFadeChange(w){return this.fadeDuration===0?1:(w-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(w){return Math.max(0,(this.transform.zoom-w)/1.5)}hasTransitions(w){return this.stale||w-this.lastPlacementChangeTimew}setStale(){this.stale=!0}}function jt(le,w,B,Q,ee,se){Q&&Q.length!==0||(Q=[0,0,0,0]);let qe=Q[0]-ri,je=Q[1]-ri,it=Q[2]-ri,yt=Q[3]-ri;le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,qe,je),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,it,je),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,it,yt),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,qe,yt)}let Zt=Math.pow(2,25),yr=Math.pow(2,24),Fr=Math.pow(2,17),Zr=Math.pow(2,16),Vr=Math.pow(2,9),gi=Math.pow(2,8),Si=Math.pow(2,1);function Mi(le){if(le.opacity===0&&!le.placed)return 0;if(le.opacity===1&&le.placed)return 4294967295;let w=le.placed?1:0,B=Math.floor(127*le.opacity);return B*Zt+w*yr+B*Fr+w*Zr+B*Vr+w*gi+B*Si+w}let Pi=0;function Gi(){return{isOccluded:(le,w,B)=>!1,getPitchedTextCorrection:(le,w,B)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(le,w,B,Q){throw new Error("Not implemented.")},translatePosition:(le,w,B,Q)=>function(ee,se,qe,je,it=!1){if(!qe[0]&&!qe[1])return[0,0];let yt=it?je==="map"?ee.angle:0:je==="viewport"?-ee.angle:0;if(yt){let Ot=Math.sin(yt),Nt=Math.cos(yt);qe=[qe[0]*Nt-qe[1]*Ot,qe[0]*Ot+qe[1]*Nt]}return[it?qe[0]:nn(se,qe[0],ee.zoom),it?qe[1]:nn(se,qe[1],ee.zoom)]}(le,w,B,Q),getCircleRadiusCorrection:le=>1}}class Ki{constructor(w){this._sortAcrossTiles=w.layout.get("symbol-z-order")!=="viewport-y"&&!w.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(w,B,Q,ee,se){let qe=this._bucketParts;for(;this._currentTileIndexje.sortKey-it.sortKey));this._currentPartIndex!this._forceFullPlacement&&u.now()-ee>2;for(;this._currentPlacementIndex>=0;){let qe=B[w[this._currentPlacementIndex]],je=this.placement.collisionIndex.transform.zoom;if(qe.type==="symbol"&&(!qe.minzoom||qe.minzoom<=je)&&(!qe.maxzoom||qe.maxzoom>je)){if(this._inProgressLayer||(this._inProgressLayer=new Ki(qe)),this._inProgressLayer.continuePlacement(Q[qe.source],this.placement,this._showCollisionBoxes,qe,se))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(w){return this.placement.commit(w),this.placement}}let jn=512/a.X/2;class la{constructor(w,B,Q){this.tileID=w,this.bucketInstanceId=Q,this._symbolsByKey={};let ee=new Map;for(let se=0;se({x:Math.floor(it.anchorX*jn),y:Math.floor(it.anchorY*jn)})),crossTileIDs:qe.map(it=>it.crossTileID)};if(je.positions.length>128){let it=new a.av(je.positions.length,16,Uint16Array);for(let{x:yt,y:Ot}of je.positions)it.add(yt,Ot);it.finish(),delete je.positions,je.index=it}this._symbolsByKey[se]=je}}getScaledCoordinates(w,B){let{x:Q,y:ee,z:se}=this.tileID.canonical,{x:qe,y:je,z:it}=B.canonical,yt=jn/Math.pow(2,it-se),Ot=(je*a.X+w.anchorY)*yt,Nt=ee*a.X*jn;return{x:Math.floor((qe*a.X+w.anchorX)*yt-Q*a.X*jn),y:Math.floor(Ot-Nt)}}findMatches(w,B,Q){let ee=this.tileID.canonical.zw)}}class Fa{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class Ra{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(w){let B=Math.round((w-this.lng)/360);if(B!==0)for(let Q in this.indexes){let ee=this.indexes[Q],se={};for(let qe in ee){let je=ee[qe];je.tileID=je.tileID.unwrapTo(je.tileID.wrap+B),se[je.tileID.key]=je}this.indexes[Q]=se}this.lng=w}addBucket(w,B,Q){if(this.indexes[w.overscaledZ]&&this.indexes[w.overscaledZ][w.key]){if(this.indexes[w.overscaledZ][w.key].bucketInstanceId===B.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(w.overscaledZ,this.indexes[w.overscaledZ][w.key])}for(let se=0;sew.overscaledZ)for(let je in qe){let it=qe[je];it.tileID.isChildOf(w)&&it.findMatches(B.symbolInstances,w,ee)}else{let je=qe[w.scaledTo(Number(se)).key];je&&je.findMatches(B.symbolInstances,w,ee)}}for(let se=0;se{B[Q]=!0});for(let Q in this.layerIndexes)B[Q]||delete this.layerIndexes[Q]}}let oa=(le,w)=>a.t(le,w&&w.filter(B=>B.identifier!=="source.canvas")),Sn=a.aw();class Ha extends a.E{constructor(w,B={}){super(),this._rtlPluginLoaded=()=>{for(let Q in this.sourceCaches){let ee=this.sourceCaches[Q].getSource().type;ee!=="vector"&&ee!=="geojson"||this.sourceCaches[Q].reload()}},this.map=w,this.dispatcher=new Ee(Te(),w._getMapId()),this.dispatcher.registerMessageHandler("GG",(Q,ee)=>this.getGlyphs(Q,ee)),this.dispatcher.registerMessageHandler("GI",(Q,ee)=>this.getImages(Q,ee)),this.imageManager=new T,this.imageManager.setEventedParent(this),this.glyphManager=new H(w._requestManager,B.localIdeographFontFamily),this.lineAtlas=new ae(256,512),this.crossTileSymbolIndex=new jo,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new a.ax,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",a.ay()),bt().on(er,this._rtlPluginLoaded),this.on("data",Q=>{if(Q.dataType!=="source"||Q.sourceDataType!=="metadata")return;let ee=this.sourceCaches[Q.sourceId];if(!ee)return;let se=ee.getSource();if(se&&se.vectorLayerIds)for(let qe in this._layers){let je=this._layers[qe];je.source===se.id&&this._validateLayer(je)}})}loadURL(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),B.validate=typeof B.validate!="boolean"||B.validate;let ee=this.map._requestManager.transformRequest(w,"Style");this._loadStyleRequest=new AbortController;let se=this._loadStyleRequest;a.h(ee,this._loadStyleRequest).then(qe=>{this._loadStyleRequest=null,this._load(qe.data,B,Q)}).catch(qe=>{this._loadStyleRequest=null,qe&&!se.signal.aborted&&this.fire(new a.j(qe))})}loadJSON(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,B.validate=B.validate!==!1,this._load(w,B,Q)}).catch(()=>{})}loadEmpty(){this.fire(new a.k("dataloading",{dataType:"style"})),this._load(Sn,{validate:!1})}_load(w,B,Q){var ee;let se=B.transformStyle?B.transformStyle(Q,w):w;if(!B.validate||!oa(this,a.u(se))){this._loaded=!0,this.stylesheet=se;for(let qe in se.sources)this.addSource(qe,se.sources[qe],{validate:!1});se.sprite?this._loadSprite(se.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(se.glyphs),this._createLayers(),this.light=new N(this.stylesheet.light),this.sky=new re(this.stylesheet.sky),this.map.setTerrain((ee=this.stylesheet.terrain)!==null&&ee!==void 0?ee:null),this.fire(new a.k("data",{dataType:"style"})),this.fire(new a.k("style.load"))}}_createLayers(){let w=a.az(this.stylesheet.layers);this.dispatcher.broadcast("SL",w),this._order=w.map(B=>B.id),this._layers={},this._serializedLayers=null;for(let B of w){let Q=a.aA(B);Q.setEventedParent(this,{layer:{id:B.id}}),this._layers[B.id]=Q}}_loadSprite(w,B=!1,Q=void 0){let ee;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(se,qe,je,it){return a._(this,void 0,void 0,function*(){let yt=C(se),Ot=je>1?"@2x":"",Nt={},hr={};for(let{id:Sr,url:he}of yt){let be=qe.transformRequest(M(he,Ot,".json"),"SpriteJSON");Nt[Sr]=a.h(be,it);let Pe=qe.transformRequest(M(he,Ot,".png"),"SpriteImage");hr[Sr]=p.getImage(Pe,it)}return yield Promise.all([...Object.values(Nt),...Object.values(hr)]),function(Sr,he){return a._(this,void 0,void 0,function*(){let be={};for(let Pe in Sr){be[Pe]={};let Oe=u.getImageCanvasContext((yield he[Pe]).data),Je=(yield Sr[Pe]).data;for(let He in Je){let{width:et,height:Mt,x:Dt,y:Ut,sdf:tr,pixelRatio:mr,stretchX:Rr,stretchY:zr,content:Xr,textFitWidth:di,textFitHeight:Li}=Je[He];be[Pe][He]={data:null,pixelRatio:mr,sdf:tr,stretchX:Rr,stretchY:zr,content:Xr,textFitWidth:di,textFitHeight:Li,spriteData:{width:et,height:Mt,x:Dt,y:Ut,context:Oe}}}}return be})}(Nt,hr)})}(w,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(se=>{if(this._spriteRequest=null,se)for(let qe in se){this._spritesImagesIds[qe]=[];let je=this._spritesImagesIds[qe]?this._spritesImagesIds[qe].filter(it=>!(it in se)):[];for(let it of je)this.imageManager.removeImage(it),this._changedImages[it]=!0;for(let it in se[qe]){let yt=qe==="default"?it:`${qe}:${it}`;this._spritesImagesIds[qe].push(yt),yt in this.imageManager.images?this.imageManager.updateImage(yt,se[qe][it],!1):this.imageManager.addImage(yt,se[qe][it]),B&&(this._changedImages[yt]=!0)}}}).catch(se=>{this._spriteRequest=null,ee=se,this.fire(new a.j(ee))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),B&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"})),Q&&Q(ee)})}_unloadSprite(){for(let w of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(w),this._changedImages[w]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}_validateLayer(w){let B=this.sourceCaches[w.source];if(!B)return;let Q=w.sourceLayer;if(!Q)return;let ee=B.getSource();(ee.type==="geojson"||ee.vectorLayerIds&&ee.vectorLayerIds.indexOf(Q)===-1)&&this.fire(new a.j(new Error(`Source layer "${Q}" does not exist on source "${ee.id}" as specified by style layer "${w.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let w in this.sourceCaches)if(!this.sourceCaches[w].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(w,B=!1){let Q=this._serializedAllLayers();if(!w||w.length===0)return Object.values(B?a.aB(Q):Q);let ee=[];for(let se of w)if(Q[se]){let qe=B?a.aB(Q[se]):Q[se];ee.push(qe)}return ee}_serializedAllLayers(){let w=this._serializedLayers;if(w)return w;w=this._serializedLayers={};let B=Object.keys(this._layers);for(let Q of B){let ee=this._layers[Q];ee.type!=="custom"&&(w[Q]=ee.serialize())}return w}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let w in this.sourceCaches)if(this.sourceCaches[w].hasTransition())return!0;for(let w in this._layers)if(this._layers[w].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(w){if(!this._loaded)return;let B=this._changed;if(B){let ee=Object.keys(this._updatedLayers),se=Object.keys(this._removedLayers);(ee.length||se.length)&&this._updateWorkerLayers(ee,se);for(let qe in this._updatedSources){let je=this._updatedSources[qe];if(je==="reload")this._reloadSource(qe);else{if(je!=="clear")throw new Error(`Invalid action ${je}`);this._clearSource(qe)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let qe in this._updatedPaintProps)this._layers[qe].updateTransitions(w);this.light.updateTransitions(w),this.sky.updateTransitions(w),this._resetUpdates()}let Q={};for(let ee in this.sourceCaches){let se=this.sourceCaches[ee];Q[ee]=se.used,se.used=!1}for(let ee of this._order){let se=this._layers[ee];se.recalculate(w,this._availableImages),!se.isHidden(w.zoom)&&se.source&&(this.sourceCaches[se.source].used=!0)}for(let ee in Q){let se=this.sourceCaches[ee];!!Q[ee]!=!!se.used&&se.fire(new a.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:ee}))}this.light.recalculate(w),this.sky.recalculate(w),this.z=w.zoom,B&&this.fire(new a.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let w=Object.keys(this._changedImages);if(w.length){for(let B in this.sourceCaches)this.sourceCaches[B].reloadTilesForDependencies(["icons","patterns"],w);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let w in this.sourceCaches)this.sourceCaches[w].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(w,B){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(w,!1),removedIds:B})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(w,B={}){var Q;this._checkLoaded();let ee=this.serialize();if(w=B.transformStyle?B.transformStyle(ee,w):w,((Q=B.validate)===null||Q===void 0||Q)&&oa(this,a.u(w)))return!1;(w=a.aB(w)).layers=a.az(w.layers);let se=a.aC(ee,w),qe=this._getOperationsToPerform(se);if(qe.unimplemented.length>0)throw new Error(`Unimplemented: ${qe.unimplemented.join(", ")}.`);if(qe.operations.length===0)return!1;for(let je of qe.operations)je();return this.stylesheet=w,this._serializedLayers=null,!0}_getOperationsToPerform(w){let B=[],Q=[];for(let ee of w)switch(ee.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":B.push(()=>this.addLayer.apply(this,ee.args));break;case"removeLayer":B.push(()=>this.removeLayer.apply(this,ee.args));break;case"setPaintProperty":B.push(()=>this.setPaintProperty.apply(this,ee.args));break;case"setLayoutProperty":B.push(()=>this.setLayoutProperty.apply(this,ee.args));break;case"setFilter":B.push(()=>this.setFilter.apply(this,ee.args));break;case"addSource":B.push(()=>this.addSource.apply(this,ee.args));break;case"removeSource":B.push(()=>this.removeSource.apply(this,ee.args));break;case"setLayerZoomRange":B.push(()=>this.setLayerZoomRange.apply(this,ee.args));break;case"setLight":B.push(()=>this.setLight.apply(this,ee.args));break;case"setGeoJSONSourceData":B.push(()=>this.setGeoJSONSourceData.apply(this,ee.args));break;case"setGlyphs":B.push(()=>this.setGlyphs.apply(this,ee.args));break;case"setSprite":B.push(()=>this.setSprite.apply(this,ee.args));break;case"setSky":B.push(()=>this.setSky.apply(this,ee.args));break;case"setTerrain":B.push(()=>this.map.setTerrain.apply(this,ee.args));break;case"setTransition":B.push(()=>{});break;default:Q.push(ee.command)}return{operations:B,unimplemented:Q}}addImage(w,B){if(this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" already exists.`)));this.imageManager.addImage(w,B),this._afterImageUpdated(w)}updateImage(w,B){this.imageManager.updateImage(w,B)}getImage(w){return this.imageManager.getImage(w)}removeImage(w){if(!this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" does not exist.`)));this.imageManager.removeImage(w),this._afterImageUpdated(w)}_afterImageUpdated(w){this._availableImages=this.imageManager.listImages(),this._changedImages[w]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(w,B,Q={}){if(this._checkLoaded(),this.sourceCaches[w]!==void 0)throw new Error(`Source "${w}" already exists.`);if(!B.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(B).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(B.type)>=0&&this._validate(a.u.source,`sources.${w}`,B,null,Q))return;this.map&&this.map._collectResourceTiming&&(B.collectResourceTiming=!0);let ee=this.sourceCaches[w]=new dt(w,B,this.dispatcher);ee.style=this,ee.setEventedParent(this,()=>({isSourceLoaded:ee.loaded(),source:ee.serialize(),sourceId:w})),ee.onAdd(this.map),this._changed=!0}removeSource(w){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error("There is no source with this ID");for(let Q in this._layers)if(this._layers[Q].source===w)return this.fire(new a.j(new Error(`Source "${w}" cannot be removed while layer "${Q}" is using it.`)));let B=this.sourceCaches[w];delete this.sourceCaches[w],delete this._updatedSources[w],B.fire(new a.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:w})),B.setEventedParent(null),B.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(w,B){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error(`There is no source with this ID=${w}`);let Q=this.sourceCaches[w].getSource();if(Q.type!=="geojson")throw new Error(`geojsonSource.type is ${Q.type}, which is !== 'geojson`);Q.setData(B),this._changed=!0}getSource(w){return this.sourceCaches[w]&&this.sourceCaches[w].getSource()}addLayer(w,B,Q={}){this._checkLoaded();let ee=w.id;if(this.getLayer(ee))return void this.fire(new a.j(new Error(`Layer "${ee}" already exists on this map.`)));let se;if(w.type==="custom"){if(oa(this,a.aD(w)))return;se=a.aA(w)}else{if("source"in w&&typeof w.source=="object"&&(this.addSource(ee,w.source),w=a.aB(w),w=a.e(w,{source:ee})),this._validate(a.u.layer,`layers.${ee}`,w,{arrayIndex:-1},Q))return;se=a.aA(w),this._validateLayer(se),se.setEventedParent(this,{layer:{id:ee}})}let qe=B?this._order.indexOf(B):this._order.length;if(B&&qe===-1)this.fire(new a.j(new Error(`Cannot add layer "${ee}" before non-existing layer "${B}".`)));else{if(this._order.splice(qe,0,ee),this._layerOrderChanged=!0,this._layers[ee]=se,this._removedLayers[ee]&&se.source&&se.type!=="custom"){let je=this._removedLayers[ee];delete this._removedLayers[ee],je.type!==se.type?this._updatedSources[se.source]="clear":(this._updatedSources[se.source]="reload",this.sourceCaches[se.source].pause())}this._updateLayer(se),se.onAdd&&se.onAdd(this.map)}}moveLayer(w,B){if(this._checkLoaded(),this._changed=!0,!this._layers[w])return void this.fire(new a.j(new Error(`The layer '${w}' does not exist in the map's style and cannot be moved.`)));if(w===B)return;let Q=this._order.indexOf(w);this._order.splice(Q,1);let ee=B?this._order.indexOf(B):this._order.length;B&&ee===-1?this.fire(new a.j(new Error(`Cannot move layer "${w}" before non-existing layer "${B}".`))):(this._order.splice(ee,0,w),this._layerOrderChanged=!0)}removeLayer(w){this._checkLoaded();let B=this._layers[w];if(!B)return void this.fire(new a.j(new Error(`Cannot remove non-existing layer "${w}".`)));B.setEventedParent(null);let Q=this._order.indexOf(w);this._order.splice(Q,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[w]=B,delete this._layers[w],this._serializedLayers&&delete this._serializedLayers[w],delete this._updatedLayers[w],delete this._updatedPaintProps[w],B.onRemove&&B.onRemove(this.map)}getLayer(w){return this._layers[w]}getLayersOrder(){return[...this._order]}hasLayer(w){return w in this._layers}setLayerZoomRange(w,B,Q){this._checkLoaded();let ee=this.getLayer(w);ee?ee.minzoom===B&&ee.maxzoom===Q||(B!=null&&(ee.minzoom=B),Q!=null&&(ee.maxzoom=Q),this._updateLayer(ee)):this.fire(new a.j(new Error(`Cannot set the zoom range of non-existing layer "${w}".`)))}setFilter(w,B,Q={}){this._checkLoaded();let ee=this.getLayer(w);if(ee){if(!a.aE(ee.filter,B))return B==null?(ee.filter=void 0,void this._updateLayer(ee)):void(this._validate(a.u.filter,`layers.${ee.id}.filter`,B,null,Q)||(ee.filter=a.aB(B),this._updateLayer(ee)))}else this.fire(new a.j(new Error(`Cannot filter non-existing layer "${w}".`)))}getFilter(w){return a.aB(this.getLayer(w).filter)}setLayoutProperty(w,B,Q,ee={}){this._checkLoaded();let se=this.getLayer(w);se?a.aE(se.getLayoutProperty(B),Q)||(se.setLayoutProperty(B,Q,ee),this._updateLayer(se)):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getLayoutProperty(w,B){let Q=this.getLayer(w);if(Q)return Q.getLayoutProperty(B);this.fire(new a.j(new Error(`Cannot get style of non-existing layer "${w}".`)))}setPaintProperty(w,B,Q,ee={}){this._checkLoaded();let se=this.getLayer(w);se?a.aE(se.getPaintProperty(B),Q)||(se.setPaintProperty(B,Q,ee)&&this._updateLayer(se),this._changed=!0,this._updatedPaintProps[w]=!0,this._serializedLayers=null):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getPaintProperty(w,B){return this.getLayer(w).getPaintProperty(B)}setFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=w.sourceLayer,se=this.sourceCaches[Q];if(se===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let qe=se.getSource().type;qe==="geojson"&&ee?this.fire(new a.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):qe!=="vector"||ee?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),se.setFeatureState(ee,w.id,B)):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=this.sourceCaches[Q];if(ee===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let se=ee.getSource().type,qe=se==="vector"?w.sourceLayer:void 0;se!=="vector"||qe?B&&typeof w.id!="string"&&typeof w.id!="number"?this.fire(new a.j(new Error("A feature id is required to remove its specific state property."))):ee.removeFeatureState(qe,w.id,B):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(w){this._checkLoaded();let B=w.source,Q=w.sourceLayer,ee=this.sourceCaches[B];if(ee!==void 0)return ee.getSource().type!=="vector"||Q?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),ee.getFeatureState(Q,w.id)):void this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new a.j(new Error(`The source '${B}' does not exist in the map's style.`)))}getTransition(){return a.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let w=a.aF(this.sourceCaches,se=>se.serialize()),B=this._serializeByIds(this._order,!0),Q=this.map.getTerrain()||void 0,ee=this.stylesheet;return a.aG({version:ee.version,name:ee.name,metadata:ee.metadata,light:ee.light,sky:ee.sky,center:ee.center,zoom:ee.zoom,bearing:ee.bearing,pitch:ee.pitch,sprite:ee.sprite,glyphs:ee.glyphs,transition:ee.transition,sources:w,layers:B,terrain:Q},se=>se!==void 0)}_updateLayer(w){this._updatedLayers[w.id]=!0,w.source&&!this._updatedSources[w.source]&&this.sourceCaches[w.source].getSource().type!=="raster"&&(this._updatedSources[w.source]="reload",this.sourceCaches[w.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(w){let B=qe=>this._layers[qe].type==="fill-extrusion",Q={},ee=[];for(let qe=this._order.length-1;qe>=0;qe--){let je=this._order[qe];if(B(je)){Q[je]=qe;for(let it of w){let yt=it[je];if(yt)for(let Ot of yt)ee.push(Ot)}}}ee.sort((qe,je)=>je.intersectionZ-qe.intersectionZ);let se=[];for(let qe=this._order.length-1;qe>=0;qe--){let je=this._order[qe];if(B(je))for(let it=ee.length-1;it>=0;it--){let yt=ee[it].feature;if(Q[yt.layer.id]{let tr=Oe.featureSortOrder;if(tr){let mr=tr.indexOf(Dt.featureIndex);return tr.indexOf(Ut.featureIndex)-mr}return Ut.featureIndex-Dt.featureIndex});for(let Dt of Mt)et.push(Dt)}}for(let Oe in he)he[Oe].forEach(Je=>{let He=Je.feature,et=yt[je[Oe].source].getFeatureState(He.layer["source-layer"],He.id);He.source=He.layer.source,He.layer["source-layer"]&&(He.sourceLayer=He.layer["source-layer"]),He.state=et});return he}(this._layers,qe,this.sourceCaches,w,B,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(se)}querySourceFeatures(w,B){B&&B.filter&&this._validate(a.u.filter,"querySourceFeatures.filter",B.filter,null,B);let Q=this.sourceCaches[w];return Q?function(ee,se){let qe=ee.getRenderableIds().map(yt=>ee.getTileByID(yt)),je=[],it={};for(let yt=0;ythr.getTileByID(Sr)).sort((Sr,he)=>he.tileID.overscaledZ-Sr.tileID.overscaledZ||(Sr.tileID.isLessThan(he.tileID)?-1:1))}let Nt=this.crossTileSymbolIndex.addLayer(Ot,it[Ot.source],w.center.lng);qe=qe||Nt}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((se=se||this._layerOrderChanged||Q===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(u.now(),w.zoom))&&(this.pauseablePlacement=new ka(w,this.map.terrain,this._order,se,B,Q,ee,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,it),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(u.now()),je=!0),qe&&this.pauseablePlacement.placement.setStale()),je||qe)for(let yt of this._order){let Ot=this._layers[yt];Ot.type==="symbol"&&this.placement.updateLayerOpacities(Ot,it[Ot.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(u.now())}_releaseSymbolFadeTiles(){for(let w in this.sourceCaches)this.sourceCaches[w].releaseSymbolFadeTiles()}getImages(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.imageManager.getImages(B.icons);this._updateTilesForChangedImages();let ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,B.icons),Q})}getGlyphs(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.glyphManager.getGlyphs(B.stacks),ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,[""]),Q})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(w,B={}){this._checkLoaded(),w&&this._validate(a.u.glyphs,"glyphs",w,null,B)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=w,this.glyphManager.entries={},this.glyphManager.setURL(w))}addSprite(w,B,Q={},ee){this._checkLoaded();let se=[{id:w,url:B}],qe=[...C(this.stylesheet.sprite),...se];this._validate(a.u.sprite,"sprite",qe,null,Q)||(this.stylesheet.sprite=qe,this._loadSprite(se,!0,ee))}removeSprite(w){this._checkLoaded();let B=C(this.stylesheet.sprite);if(B.find(Q=>Q.id===w)){if(this._spritesImagesIds[w])for(let Q of this._spritesImagesIds[w])this.imageManager.removeImage(Q),this._changedImages[Q]=!0;B.splice(B.findIndex(Q=>Q.id===w),1),this.stylesheet.sprite=B.length>0?B:void 0,delete this._spritesImagesIds[w],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}else this.fire(new a.j(new Error(`Sprite "${w}" doesn't exists on this map.`)))}getSprite(){return C(this.stylesheet.sprite)}setSprite(w,B={},Q){this._checkLoaded(),w&&this._validate(a.u.sprite,"sprite",w,null,B)||(this.stylesheet.sprite=w,w?this._loadSprite(w,!0,Q):(this._unloadSprite(),Q&&Q(null)))}}var oo=a.Y([{name:"a_pos",type:"Int16",components:2}]);let xn={prelude:_t(`#ifdef GL_ES precision mediump float; #else #if !defined(lowp) @@ -3797,7 +3797,7 @@ uniform ${Ot} ${Nt} u_${hr}; #endif `}),staticAttributes:Q,staticUniforms:qe}}class br{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(w,B,Q,ee,se,qe,je,it,yt){this.context=w;let Ot=this.boundPaintVertexBuffers.length!==ee.length;for(let Nt=0;!Ot&&Nt({u_matrix:le,u_texture:0,u_ele_delta:w,u_fog_matrix:B,u_fog_color:Q?Q.properties.get("fog-color"):a.aM.white,u_fog_ground_blend:Q?Q.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:Q?Q.calculateFogBlendOpacity(ee):0,u_horizon_color:Q?Q.properties.get("horizon-color"):a.aM.white,u_horizon_fog_blend:Q?Q.properties.get("horizon-fog-blend"):1});function ti(le){let w=[];for(let B=0;B({u_depth:new a.aH(Dt,Ut.u_depth),u_terrain:new a.aH(Dt,Ut.u_terrain),u_terrain_dim:new a.aI(Dt,Ut.u_terrain_dim),u_terrain_matrix:new a.aJ(Dt,Ut.u_terrain_matrix),u_terrain_unpack:new a.aK(Dt,Ut.u_terrain_unpack),u_terrain_exaggeration:new a.aI(Dt,Ut.u_terrain_exaggeration)}))(w,Mt),this.binderUniforms=Q?Q.getUniforms(w,Mt):[]}draw(w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he,be,Pe,Oe,Je){let He=w.gl;if(this.failedToCreate)return;if(w.program.set(this.program),w.setDepthMode(Q),w.setStencilMode(ee),w.setColorMode(se),w.setCullFace(qe),it){w.activeTexture.set(He.TEXTURE2),He.bindTexture(He.TEXTURE_2D,it.depthTexture),w.activeTexture.set(He.TEXTURE3),He.bindTexture(He.TEXTURE_2D,it.texture);for(let Mt in this.terrainUniforms)this.terrainUniforms[Mt].set(it[Mt])}for(let Mt in this.fixedUniforms)this.fixedUniforms[Mt].set(je[Mt]);be&&be.setUniforms(w,this.binderUniforms,Sr,{zoom:he});let et=0;switch(B){case He.LINES:et=2;break;case He.TRIANGLES:et=3;break;case He.LINE_STRIP:et=1}for(let Mt of hr.get()){let Dt=Mt.vaos||(Mt.vaos={});(Dt[yt]||(Dt[yt]=new br)).bind(w,this,Ot,be?be.getPaintVertexBuffers():[],Nt,Mt.vertexOffset,Pe,Oe,Je),He.drawElements(B,Mt.primitiveLength*et,He.UNSIGNED_SHORT,Mt.primitiveOffset*et*2)}}}function Yi(le,w,B){let Q=1/nn(B,1,w.transform.tileZoom),ee=Math.pow(2,B.tileID.overscaledZ),se=B.tileSize*Math.pow(2,w.transform.tileZoom)/ee,qe=se*(B.tileID.canonical.x+B.tileID.wrap*ee),je=se*B.tileID.canonical.y;return{u_image:0,u_texsize:B.imageAtlasTexture.size,u_scale:[Q,le.fromScale,le.toScale],u_fade:le.t,u_pixel_coord_upper:[qe>>16,je>>16],u_pixel_coord_lower:[65535&qe,65535&je]}}let an=(le,w,B,Q)=>{let ee=w.style.light,se=ee.properties.get("position"),qe=[se.x,se.y,se.z],je=function(){var yt=new a.A(9);return a.A!=Float32Array&&(yt[1]=0,yt[2]=0,yt[3]=0,yt[5]=0,yt[6]=0,yt[7]=0),yt[0]=1,yt[4]=1,yt[8]=1,yt}();ee.properties.get("anchor")==="viewport"&&function(yt,Ot){var Nt=Math.sin(Ot),hr=Math.cos(Ot);yt[0]=hr,yt[1]=Nt,yt[2]=0,yt[3]=-Nt,yt[4]=hr,yt[5]=0,yt[6]=0,yt[7]=0,yt[8]=1}(je,-w.transform.angle),function(yt,Ot,Nt){var hr=Ot[0],Sr=Ot[1],he=Ot[2];yt[0]=hr*Nt[0]+Sr*Nt[3]+he*Nt[6],yt[1]=hr*Nt[1]+Sr*Nt[4]+he*Nt[7],yt[2]=hr*Nt[2]+Sr*Nt[5]+he*Nt[8]}(qe,qe,je);let it=ee.properties.get("color");return{u_matrix:le,u_lightpos:qe,u_lightintensity:ee.properties.get("intensity"),u_lightcolor:[it.r,it.g,it.b],u_vertical_gradient:+B,u_opacity:Q}},hi=(le,w,B,Q,ee,se,qe)=>a.e(an(le,w,B,Q),Yi(se,w,qe),{u_height_factor:-Math.pow(2,ee.overscaledZ)/qe.tileSize/8}),Ji=le=>({u_matrix:le}),ua=(le,w,B,Q)=>a.e(Ji(le),Yi(B,w,Q)),Fn=(le,w)=>({u_matrix:le,u_world:w}),Sa=(le,w,B,Q,ee)=>a.e(ua(le,w,B,Q),{u_world:ee}),go=(le,w,B,Q)=>{let ee=le.transform,se,qe;if(Q.paint.get("circle-pitch-alignment")==="map"){let je=nn(B,1,ee.zoom);se=!0,qe=[je,je]}else se=!1,qe=ee.pixelsToGLUnits;return{u_camera_to_center_distance:ee.cameraToCenterDistance,u_scale_with_map:+(Q.paint.get("circle-pitch-scale")==="map"),u_matrix:le.translatePosMatrix(w.posMatrix,B,Q.paint.get("circle-translate"),Q.paint.get("circle-translate-anchor")),u_pitch_with_map:+se,u_device_pixel_ratio:le.pixelRatio,u_extrude_scale:qe}},Oo=(le,w,B)=>({u_matrix:le,u_inv_matrix:w,u_camera_to_center_distance:B.cameraToCenterDistance,u_viewport_size:[B.width,B.height]}),ho=(le,w,B=1)=>({u_matrix:le,u_color:w,u_overlay:0,u_overlay_scale:B}),Mo=le=>({u_matrix:le}),xo=(le,w,B,Q)=>({u_matrix:le,u_extrude_scale:nn(w,1,B),u_intensity:Q}),zs=(le,w,B,Q)=>{let ee=a.H();a.aP(ee,0,le.width,le.height,0,0,1);let se=le.context.gl;return{u_matrix:ee,u_world:[se.drawingBufferWidth,se.drawingBufferHeight],u_image:B,u_color_ramp:Q,u_opacity:w.paint.get("heatmap-opacity")}};function ks(le,w){let B=Math.pow(2,w.canonical.z),Q=w.canonical.y;return[new a.Z(0,Q/B).toLngLat().lat,new a.Z(0,(Q+1)/B).toLngLat().lat]}let Zs=(le,w,B,Q)=>{let ee=le.transform;return{u_matrix:Cs(le,w,B,Q),u_ratio:1/nn(w,1,ee.zoom),u_device_pixel_ratio:le.pixelRatio,u_units_to_pixels:[1/ee.pixelsToGLUnits[0],1/ee.pixelsToGLUnits[1]]}},Xs=(le,w,B,Q,ee)=>a.e(Zs(le,w,B,ee),{u_image:0,u_image_height:Q}),wl=(le,w,B,Q,ee)=>{let se=le.transform,qe=cl(w,se);return{u_matrix:Cs(le,w,B,ee),u_texsize:w.imageAtlasTexture.size,u_ratio:1/nn(w,1,se.zoom),u_device_pixel_ratio:le.pixelRatio,u_image:0,u_scale:[qe,Q.fromScale,Q.toScale],u_fade:Q.t,u_units_to_pixels:[1/se.pixelsToGLUnits[0],1/se.pixelsToGLUnits[1]]}},os=(le,w,B,Q,ee,se)=>{let qe=le.lineAtlas,je=cl(w,le.transform),it=B.layout.get("line-cap")==="round",yt=qe.getDash(Q.from,it),Ot=qe.getDash(Q.to,it),Nt=yt.width*ee.fromScale,hr=Ot.width*ee.toScale;return a.e(Zs(le,w,B,se),{u_patternscale_a:[je/Nt,-yt.height/2],u_patternscale_b:[je/hr,-Ot.height/2],u_sdfgamma:qe.width/(256*Math.min(Nt,hr)*le.pixelRatio)/2,u_image:0,u_tex_y_a:yt.y,u_tex_y_b:Ot.y,u_mix:ee.t})};function cl(le,w){return 1/nn(le,1,w.tileZoom)}function Cs(le,w,B,Q){return le.translatePosMatrix(Q?Q.posMatrix:w.tileID.posMatrix,w,B.paint.get("line-translate"),B.paint.get("line-translate-anchor"))}let ml=(le,w,B,Q,ee)=>{return{u_matrix:le,u_tl_parent:w,u_scale_parent:B,u_buffer_scale:1,u_fade_t:Q.mix,u_opacity:Q.opacity*ee.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:ee.paint.get("raster-brightness-min"),u_brightness_high:ee.paint.get("raster-brightness-max"),u_saturation_factor:(qe=ee.paint.get("raster-saturation"),qe>0?1-1/(1.001-qe):-qe),u_contrast_factor:(se=ee.paint.get("raster-contrast"),se>0?1/(1-se):1+se),u_spin_weights:Ys(ee.paint.get("raster-hue-rotate"))};var se,qe};function Ys(le){le*=Math.PI/180;let w=Math.sin(le),B=Math.cos(le);return[(2*B+1)/3,(-Math.sqrt(3)*w-B+1)/3,(Math.sqrt(3)*w-B+1)/3]}let Hs=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr)=>{let he=qe.transform;return{u_is_size_zoom_constant:+(le==="constant"||le==="source"),u_is_size_feature_constant:+(le==="constant"||le==="camera"),u_size_t:w?w.uSizeT:0,u_size:w?w.uSize:0,u_camera_to_center_distance:he.cameraToCenterDistance,u_pitch:he.pitch/360*2*Math.PI,u_rotate_symbol:+B,u_aspect_ratio:he.width/he.height,u_fade_change:qe.options.fadeDuration?qe.symbolFadeChange:1,u_matrix:je,u_label_plane_matrix:it,u_coord_matrix:yt,u_is_text:+Nt,u_pitch_with_map:+Q,u_is_along_line:ee,u_is_variable_anchor:se,u_texsize:hr,u_texture:0,u_translation:Ot,u_pitched_scale:Sr}},Eo=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he)=>{let be=qe.transform;return a.e(Hs(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,he),{u_gamma_scale:Q?Math.cos(be._pitch)*be.cameraToCenterDistance:1,u_device_pixel_ratio:qe.pixelRatio,u_is_halo:+Sr})},fs=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr)=>a.e(Eo(le,w,B,Q,ee,se,qe,je,it,yt,Ot,!0,Nt,!0,Sr),{u_texsize_icon:hr,u_texture_icon:1}),$l=(le,w,B)=>({u_matrix:le,u_opacity:w,u_color:B}),Hu=(le,w,B,Q,ee,se)=>a.e(function(qe,je,it,yt){let Ot=it.imageManager.getPattern(qe.from.toString()),Nt=it.imageManager.getPattern(qe.to.toString()),{width:hr,height:Sr}=it.imageManager.getPixelSize(),he=Math.pow(2,yt.tileID.overscaledZ),be=yt.tileSize*Math.pow(2,it.transform.tileZoom)/he,Pe=be*(yt.tileID.canonical.x+yt.tileID.wrap*he),Oe=be*yt.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:Ot.tl,u_pattern_br_a:Ot.br,u_pattern_tl_b:Nt.tl,u_pattern_br_b:Nt.br,u_texsize:[hr,Sr],u_mix:je.t,u_pattern_size_a:Ot.displaySize,u_pattern_size_b:Nt.displaySize,u_scale_a:je.fromScale,u_scale_b:je.toScale,u_tile_units_to_pixels:1/nn(yt,1,it.transform.tileZoom),u_pixel_coord_upper:[Pe>>16,Oe>>16],u_pixel_coord_lower:[65535&Pe,65535&Oe]}}(Q,se,B,ee),{u_matrix:le,u_opacity:w}),fc={fillExtrusion:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_lightpos:new a.aN(le,w.u_lightpos),u_lightintensity:new a.aI(le,w.u_lightintensity),u_lightcolor:new a.aN(le,w.u_lightcolor),u_vertical_gradient:new a.aI(le,w.u_vertical_gradient),u_opacity:new a.aI(le,w.u_opacity)}),fillExtrusionPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_lightpos:new a.aN(le,w.u_lightpos),u_lightintensity:new a.aI(le,w.u_lightintensity),u_lightcolor:new a.aN(le,w.u_lightcolor),u_vertical_gradient:new a.aI(le,w.u_vertical_gradient),u_height_factor:new a.aI(le,w.u_height_factor),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade),u_opacity:new a.aI(le,w.u_opacity)}),fill:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix)}),fillPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),fillOutline:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world)}),fillOutlinePattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),circle:(le,w)=>({u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_scale_with_map:new a.aH(le,w.u_scale_with_map),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_extrude_scale:new a.aO(le,w.u_extrude_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_matrix:new a.aJ(le,w.u_matrix)}),collisionBox:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_pixel_extrude_scale:new a.aO(le,w.u_pixel_extrude_scale)}),collisionCircle:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_inv_matrix:new a.aJ(le,w.u_inv_matrix),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_viewport_size:new a.aO(le,w.u_viewport_size)}),debug:(le,w)=>({u_color:new a.aL(le,w.u_color),u_matrix:new a.aJ(le,w.u_matrix),u_overlay:new a.aH(le,w.u_overlay),u_overlay_scale:new a.aI(le,w.u_overlay_scale)}),clippingMask:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix)}),heatmap:(le,w)=>({u_extrude_scale:new a.aI(le,w.u_extrude_scale),u_intensity:new a.aI(le,w.u_intensity),u_matrix:new a.aJ(le,w.u_matrix)}),heatmapTexture:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world),u_image:new a.aH(le,w.u_image),u_color_ramp:new a.aH(le,w.u_color_ramp),u_opacity:new a.aI(le,w.u_opacity)}),hillshade:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_latrange:new a.aO(le,w.u_latrange),u_light:new a.aO(le,w.u_light),u_shadow:new a.aL(le,w.u_shadow),u_highlight:new a.aL(le,w.u_highlight),u_accent:new a.aL(le,w.u_accent)}),hillshadePrepare:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_dimension:new a.aO(le,w.u_dimension),u_zoom:new a.aI(le,w.u_zoom),u_unpack:new a.aK(le,w.u_unpack)}),line:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels)}),lineGradient:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_image:new a.aH(le,w.u_image),u_image_height:new a.aI(le,w.u_image_height)}),linePattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texsize:new a.aO(le,w.u_texsize),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_image:new a.aH(le,w.u_image),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),lineSDF:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_patternscale_a:new a.aO(le,w.u_patternscale_a),u_patternscale_b:new a.aO(le,w.u_patternscale_b),u_sdfgamma:new a.aI(le,w.u_sdfgamma),u_image:new a.aH(le,w.u_image),u_tex_y_a:new a.aI(le,w.u_tex_y_a),u_tex_y_b:new a.aI(le,w.u_tex_y_b),u_mix:new a.aI(le,w.u_mix)}),raster:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_tl_parent:new a.aO(le,w.u_tl_parent),u_scale_parent:new a.aI(le,w.u_scale_parent),u_buffer_scale:new a.aI(le,w.u_buffer_scale),u_fade_t:new a.aI(le,w.u_fade_t),u_opacity:new a.aI(le,w.u_opacity),u_image0:new a.aH(le,w.u_image0),u_image1:new a.aH(le,w.u_image1),u_brightness_low:new a.aI(le,w.u_brightness_low),u_brightness_high:new a.aI(le,w.u_brightness_high),u_saturation_factor:new a.aI(le,w.u_saturation_factor),u_contrast_factor:new a.aI(le,w.u_contrast_factor),u_spin_weights:new a.aN(le,w.u_spin_weights)}),symbolIcon:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texture:new a.aH(le,w.u_texture),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),symbolSDF:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texture:new a.aH(le,w.u_texture),u_gamma_scale:new a.aI(le,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_is_halo:new a.aH(le,w.u_is_halo),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),symbolTextAndIcon:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texsize_icon:new a.aO(le,w.u_texsize_icon),u_texture:new a.aH(le,w.u_texture),u_texture_icon:new a.aH(le,w.u_texture_icon),u_gamma_scale:new a.aI(le,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_is_halo:new a.aH(le,w.u_is_halo),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),background:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_opacity:new a.aI(le,w.u_opacity),u_color:new a.aL(le,w.u_color)}),backgroundPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_opacity:new a.aI(le,w.u_opacity),u_image:new a.aH(le,w.u_image),u_pattern_tl_a:new a.aO(le,w.u_pattern_tl_a),u_pattern_br_a:new a.aO(le,w.u_pattern_br_a),u_pattern_tl_b:new a.aO(le,w.u_pattern_tl_b),u_pattern_br_b:new a.aO(le,w.u_pattern_br_b),u_texsize:new a.aO(le,w.u_texsize),u_mix:new a.aI(le,w.u_mix),u_pattern_size_a:new a.aO(le,w.u_pattern_size_a),u_pattern_size_b:new a.aO(le,w.u_pattern_size_b),u_scale_a:new a.aI(le,w.u_scale_a),u_scale_b:new a.aI(le,w.u_scale_b),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_tile_units_to_pixels:new a.aI(le,w.u_tile_units_to_pixels)}),terrain:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texture:new a.aH(le,w.u_texture),u_ele_delta:new a.aI(le,w.u_ele_delta),u_fog_matrix:new a.aJ(le,w.u_fog_matrix),u_fog_color:new a.aL(le,w.u_fog_color),u_fog_ground_blend:new a.aI(le,w.u_fog_ground_blend),u_fog_ground_blend_opacity:new a.aI(le,w.u_fog_ground_blend_opacity),u_horizon_color:new a.aL(le,w.u_horizon_color),u_horizon_fog_blend:new a.aI(le,w.u_horizon_fog_blend)}),terrainDepth:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ele_delta:new a.aI(le,w.u_ele_delta)}),terrainCoords:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texture:new a.aH(le,w.u_texture),u_terrain_coords_id:new a.aI(le,w.u_terrain_coords_id),u_ele_delta:new a.aI(le,w.u_ele_delta)}),sky:(le,w)=>({u_sky_color:new a.aL(le,w.u_sky_color),u_horizon_color:new a.aL(le,w.u_horizon_color),u_horizon:new a.aI(le,w.u_horizon),u_sky_horizon_blend:new a.aI(le,w.u_sky_horizon_blend)})};class ms{constructor(w,B,Q){this.context=w;let ee=w.gl;this.buffer=ee.createBuffer(),this.dynamicDraw=!!Q,this.context.unbindVAO(),w.bindElementBuffer.set(this.buffer),ee.bufferData(ee.ELEMENT_ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?ee.DYNAMIC_DRAW:ee.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(w){let B=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),B.bufferSubData(B.ELEMENT_ARRAY_BUFFER,0,w.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let on={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class fa{constructor(w,B,Q,ee){this.length=B.length,this.attributes=Q,this.itemSize=B.bytesPerElement,this.dynamicDraw=ee,this.context=w;let se=w.gl;this.buffer=se.createBuffer(),w.bindVertexBuffer.set(this.buffer),se.bufferData(se.ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?se.DYNAMIC_DRAW:se.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(w){if(w.length!==this.length)throw new Error(`Length of new data is ${w.length}, which doesn't match current length of ${this.length}`);let B=this.context.gl;this.bind(),B.bufferSubData(B.ARRAY_BUFFER,0,w.arrayBuffer)}enableAttributes(w,B){for(let Q=0;Q0){let Dt=a.H();a.aQ(Dt,He.placementInvProjMatrix,le.transform.glCoordMatrix),a.aQ(Dt,Dt,He.placementViewportMatrix),it.push({circleArray:Mt,circleOffset:Ot,transform:Je.posMatrix,invTransform:Dt,coord:Je}),yt+=Mt.length/4,Ot=yt}et&&je.draw(se,qe.LINES,wo.disabled,$o.disabled,le.colorModeForRenderPass(),Ja.disabled,{u_matrix:Je.posMatrix,u_pixel_extrude_scale:[1/(Nt=le.transform).width,1/Nt.height]},le.style.map.terrain&&le.style.map.terrain.getTerrainData(Je),B.id,et.layoutVertexBuffer,et.indexBuffer,et.segments,null,le.transform.zoom,null,null,et.collisionVertexBuffer)}var Nt;if(!ee||!it.length)return;let hr=le.useProgram("collisionCircle"),Sr=new a.aR;Sr.resize(4*yt),Sr._trim();let he=0;for(let Oe of it)for(let Je=0;Je=0&&(Oe[He.associatedIconIndex]={shiftedAnchor:Mn,angle:pa})}else ai(He.numGlyphs,be)}if(yt){Pe.clear();let Je=le.icon.placedSymbolArray;for(let He=0;Hele.style.map.terrain.getElevation(zr,tt,zt):null,wt=B.layout.get("text-rotation-alignment")==="map";Ve(di,zr.posMatrix,le,ee,Vl,cu,Oe,yt,wt,be,zr.toUnwrapped(),he.width,he.height,el,We)}let Dl=zr.posMatrix,zl=ee&&tr||zc,Z=Je||zl?uu:Vl,oe=Zu,we=Qi&&B.paint.get(ee?"text-halo-width":"icon-halo-width").constantOr(1)!==0,Be;Be=Qi?di.iconsInText?fs(Mn.kind,Ga,He,Oe,Je,zl,le,Dl,Z,oe,el,Wa,As,Rr):Eo(Mn.kind,Ga,He,Oe,Je,zl,le,Dl,Z,oe,el,ee,Wa,!0,Rr):Hs(Mn.kind,Ga,He,Oe,Je,zl,le,Dl,Z,oe,el,ee,Wa,Rr);let Ue={program:ea,buffers:Li,uniformValues:Be,atlasTexture:co,atlasTextureIcon:yo,atlasInterpolation:Ro,atlasInterpolationIcon:Ds,isSDF:Qi,hasHalo:we};if(Mt&&di.canOverlap){Dt=!0;let We=Li.segments.get();for(let wt of We)mr.push({segments:new a.a0([wt]),sortKey:wt.sortKey,state:Ue,terrainData:To})}else mr.push({segments:Li.segments,sortKey:0,state:Ue,terrainData:To})}Dt&&mr.sort((zr,Xr)=>zr.sortKey-Xr.sortKey);for(let zr of mr){let Xr=zr.state;if(hr.activeTexture.set(Sr.TEXTURE0),Xr.atlasTexture.bind(Xr.atlasInterpolation,Sr.CLAMP_TO_EDGE),Xr.atlasTextureIcon&&(hr.activeTexture.set(Sr.TEXTURE1),Xr.atlasTextureIcon&&Xr.atlasTextureIcon.bind(Xr.atlasInterpolationIcon,Sr.CLAMP_TO_EDGE)),Xr.isSDF){let di=Xr.uniformValues;Xr.hasHalo&&(di.u_is_halo=1,Eh(Xr.buffers,zr.segments,B,le,Xr.program,Ut,Ot,Nt,di,zr.terrainData)),di.u_is_halo=0}Eh(Xr.buffers,zr.segments,B,le,Xr.program,Ut,Ot,Nt,Xr.uniformValues,zr.terrainData)}}function Eh(le,w,B,Q,ee,se,qe,je,it,yt){let Ot=Q.context;ee.draw(Ot,Ot.gl.TRIANGLES,se,qe,je,Ja.disabled,it,yt,B.id,le.layoutVertexBuffer,le.indexBuffer,w,B.paint,Q.transform.zoom,le.programConfigurations.get(B.id),le.dynamicLayoutVertexBuffer,le.opacityVertexBuffer)}function nh(le,w,B,Q){let ee=le.context,se=ee.gl,qe=$o.disabled,je=new Ps([se.ONE,se.ONE],a.aM.transparent,[!0,!0,!0,!0]),it=w.getBucket(B);if(!it)return;let yt=Q.key,Ot=B.heatmapFbos.get(yt);Ot||(Ot=kh(ee,w.tileSize,w.tileSize),B.heatmapFbos.set(yt,Ot)),ee.bindFramebuffer.set(Ot.framebuffer),ee.viewport.set([0,0,w.tileSize,w.tileSize]),ee.clear({color:a.aM.transparent});let Nt=it.programConfigurations.get(B.id),hr=le.useProgram("heatmap",Nt),Sr=le.style.map.terrain.getTerrainData(Q);hr.draw(ee,se.TRIANGLES,wo.disabled,qe,je,Ja.disabled,xo(Q.posMatrix,w,le.transform.zoom,B.paint.get("heatmap-intensity")),Sr,B.id,it.layoutVertexBuffer,it.indexBuffer,it.segments,B.paint,le.transform.zoom,Nt)}function hf(le,w,B){let Q=le.context,ee=Q.gl;Q.setColorMode(le.colorModeForRenderPass());let se=Kh(Q,w),qe=B.key,je=w.heatmapFbos.get(qe);je&&(Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,je.colorAttachment.get()),Q.activeTexture.set(ee.TEXTURE1),se.bind(ee.LINEAR,ee.CLAMP_TO_EDGE),le.useProgram("heatmapTexture").draw(Q,ee.TRIANGLES,wo.disabled,$o.disabled,le.colorModeForRenderPass(),Ja.disabled,zs(le,w,0,1),null,w.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments,w.paint,le.transform.zoom),je.destroy(),w.heatmapFbos.delete(qe))}function kh(le,w,B){var Q,ee;let se=le.gl,qe=se.createTexture();se.bindTexture(se.TEXTURE_2D,qe),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_S,se.CLAMP_TO_EDGE),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_T,se.CLAMP_TO_EDGE),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MIN_FILTER,se.LINEAR),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MAG_FILTER,se.LINEAR);let je=(Q=le.HALF_FLOAT)!==null&&Q!==void 0?Q:se.UNSIGNED_BYTE,it=(ee=le.RGBA16F)!==null&&ee!==void 0?ee:se.RGBA;se.texImage2D(se.TEXTURE_2D,0,it,w,B,0,se.RGBA,je,null);let yt=le.createFramebuffer(w,B,!1,!1);return yt.colorAttachment.set(qe),yt}function Kh(le,w){return w.colorRampTexture||(w.colorRampTexture=new p(le,w.colorRamp,le.gl.RGBA)),w.colorRampTexture}function rc(le,w,B,Q,ee){if(!B||!Q||!Q.imageAtlas)return;let se=Q.imageAtlas.patternPositions,qe=se[B.to.toString()],je=se[B.from.toString()];if(!qe&&je&&(qe=je),!je&&qe&&(je=qe),!qe||!je){let it=ee.getPaintProperty(w);qe=se[it],je=se[it]}qe&&je&&le.setConstantPatternPositions(qe,je)}function ah(le,w,B,Q,ee,se,qe){let je=le.context.gl,it="fill-pattern",yt=B.paint.get(it),Ot=yt&&yt.constantOr(1),Nt=B.getCrossfadeParameters(),hr,Sr,he,be,Pe;qe?(Sr=Ot&&!B.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",hr=je.LINES):(Sr=Ot?"fillPattern":"fill",hr=je.TRIANGLES);let Oe=yt.constantOr(null);for(let Je of Q){let He=w.getTile(Je);if(Ot&&!He.patternsLoaded())continue;let et=He.getBucket(B);if(!et)continue;let Mt=et.programConfigurations.get(B.id),Dt=le.useProgram(Sr,Mt),Ut=le.style.map.terrain&&le.style.map.terrain.getTerrainData(Je);Ot&&(le.context.activeTexture.set(je.TEXTURE0),He.imageAtlasTexture.bind(je.LINEAR,je.CLAMP_TO_EDGE),Mt.updatePaintBuffers(Nt)),rc(Mt,it,Oe,He,B);let tr=Ut?Je:null,mr=le.translatePosMatrix(tr?tr.posMatrix:Je.posMatrix,He,B.paint.get("fill-translate"),B.paint.get("fill-translate-anchor"));if(qe){be=et.indexBuffer2,Pe=et.segments2;let Rr=[je.drawingBufferWidth,je.drawingBufferHeight];he=Sr==="fillOutlinePattern"&&Ot?Sa(mr,le,Nt,He,Rr):Fn(mr,Rr)}else be=et.indexBuffer,Pe=et.segments,he=Ot?ua(mr,le,Nt,He):Ji(mr);Dt.draw(le.context,hr,ee,le.stencilModeForClipping(Je),se,Ja.disabled,he,Ut,B.id,et.layoutVertexBuffer,be,Pe,B.paint,le.transform.zoom,Mt)}}function Wc(le,w,B,Q,ee,se,qe){let je=le.context,it=je.gl,yt="fill-extrusion-pattern",Ot=B.paint.get(yt),Nt=Ot.constantOr(1),hr=B.getCrossfadeParameters(),Sr=B.paint.get("fill-extrusion-opacity"),he=Ot.constantOr(null);for(let be of Q){let Pe=w.getTile(be),Oe=Pe.getBucket(B);if(!Oe)continue;let Je=le.style.map.terrain&&le.style.map.terrain.getTerrainData(be),He=Oe.programConfigurations.get(B.id),et=le.useProgram(Nt?"fillExtrusionPattern":"fillExtrusion",He);Nt&&(le.context.activeTexture.set(it.TEXTURE0),Pe.imageAtlasTexture.bind(it.LINEAR,it.CLAMP_TO_EDGE),He.updatePaintBuffers(hr)),rc(He,yt,he,Pe,B);let Mt=le.translatePosMatrix(be.posMatrix,Pe,B.paint.get("fill-extrusion-translate"),B.paint.get("fill-extrusion-translate-anchor")),Dt=B.paint.get("fill-extrusion-vertical-gradient"),Ut=Nt?hi(Mt,le,Dt,Sr,be,hr,Pe):an(Mt,le,Dt,Sr);et.draw(je,je.gl.TRIANGLES,ee,se,qe,Ja.backCCW,Ut,Je,B.id,Oe.layoutVertexBuffer,Oe.indexBuffer,Oe.segments,B.paint,le.transform.zoom,He,le.style.map.terrain&&Oe.centroidVertexBuffer)}}function df(le,w,B,Q,ee,se,qe){let je=le.context,it=je.gl,yt=B.fbo;if(!yt)return;let Ot=le.useProgram("hillshade"),Nt=le.style.map.terrain&&le.style.map.terrain.getTerrainData(w);je.activeTexture.set(it.TEXTURE0),it.bindTexture(it.TEXTURE_2D,yt.colorAttachment.get()),Ot.draw(je,it.TRIANGLES,ee,se,qe,Ja.disabled,((hr,Sr,he,be)=>{let Pe=he.paint.get("hillshade-shadow-color"),Oe=he.paint.get("hillshade-highlight-color"),Je=he.paint.get("hillshade-accent-color"),He=he.paint.get("hillshade-illumination-direction")*(Math.PI/180);he.paint.get("hillshade-illumination-anchor")==="viewport"&&(He-=hr.transform.angle);let et=!hr.options.moving;return{u_matrix:be?be.posMatrix:hr.transform.calculatePosMatrix(Sr.tileID.toUnwrapped(),et),u_image:0,u_latrange:ks(0,Sr.tileID),u_light:[he.paint.get("hillshade-exaggeration"),He],u_shadow:Pe,u_highlight:Oe,u_accent:Je}})(le,B,Q,Nt?w:null),Nt,Q.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments)}function Cu(le,w,B,Q,ee,se){let qe=le.context,je=qe.gl,it=w.dem;if(it&&it.data){let yt=it.dim,Ot=it.stride,Nt=it.getPixels();if(qe.activeTexture.set(je.TEXTURE1),qe.pixelStoreUnpackPremultiplyAlpha.set(!1),w.demTexture=w.demTexture||le.getTileTexture(Ot),w.demTexture){let Sr=w.demTexture;Sr.update(Nt,{premultiply:!1}),Sr.bind(je.NEAREST,je.CLAMP_TO_EDGE)}else w.demTexture=new p(qe,Nt,je.RGBA,{premultiply:!1}),w.demTexture.bind(je.NEAREST,je.CLAMP_TO_EDGE);qe.activeTexture.set(je.TEXTURE0);let hr=w.fbo;if(!hr){let Sr=new p(qe,{width:yt,height:yt,data:null},je.RGBA);Sr.bind(je.LINEAR,je.CLAMP_TO_EDGE),hr=w.fbo=qe.createFramebuffer(yt,yt,!0,!1),hr.colorAttachment.set(Sr.texture)}qe.bindFramebuffer.set(hr.framebuffer),qe.viewport.set([0,0,yt,yt]),le.useProgram("hillshadePrepare").draw(qe,je.TRIANGLES,Q,ee,se,Ja.disabled,((Sr,he)=>{let be=he.stride,Pe=a.H();return a.aP(Pe,0,a.X,-a.X,0,0,1),a.J(Pe,Pe,[0,-a.X,0]),{u_matrix:Pe,u_image:1,u_dimension:[be,be],u_zoom:Sr.overscaledZ,u_unpack:he.getUnpackVector()}})(w.tileID,it),null,B.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments),w.needsHillshadePrepare=!1}}function Nf(le,w,B,Q,ee,se){let qe=Q.paint.get("raster-fade-duration");if(!se&&qe>0){let je=u.now(),it=(je-le.timeAdded)/qe,yt=w?(je-w.timeAdded)/qe:-1,Ot=B.getSource(),Nt=ee.coveringZoomLevel({tileSize:Ot.tileSize,roundZoom:Ot.roundZoom}),hr=!w||Math.abs(w.tileID.overscaledZ-Nt)>Math.abs(le.tileID.overscaledZ-Nt),Sr=hr&&le.refreshedUponExpiration?1:a.ac(hr?it:1-yt,0,1);return le.refreshedUponExpiration&&it>=1&&(le.refreshedUponExpiration=!1),w?{opacity:1,mix:1-Sr}:{opacity:Sr,mix:0}}return{opacity:1,mix:0}}let Zc=new a.aM(1,0,0,1),ds=new a.aM(0,1,0,1),Ch=new a.aM(0,0,1,1),Bd=new a.aM(1,0,1,1),Jh=new a.aM(0,1,1,1);function Cf(le,w,B,Q){Lu(le,0,w+B/2,le.transform.width,B,Q)}function pd(le,w,B,Q){Lu(le,w-B/2,0,B,le.transform.height,Q)}function Lu(le,w,B,Q,ee,se){let qe=le.context,je=qe.gl;je.enable(je.SCISSOR_TEST),je.scissor(w*le.pixelRatio,B*le.pixelRatio,Q*le.pixelRatio,ee*le.pixelRatio),qe.clear({color:se}),je.disable(je.SCISSOR_TEST)}function $h(le,w,B){let Q=le.context,ee=Q.gl,se=B.posMatrix,qe=le.useProgram("debug"),je=wo.disabled,it=$o.disabled,yt=le.colorModeForRenderPass(),Ot="$debug",Nt=le.style.map.terrain&&le.style.map.terrain.getTerrainData(B);Q.activeTexture.set(ee.TEXTURE0);let hr=w.getTileByID(B.key).latestRawTileData,Sr=Math.floor((hr&&hr.byteLength||0)/1024),he=w.getTile(B).tileSize,be=512/Math.min(he,512)*(B.overscaledZ/le.transform.zoom)*.5,Pe=B.canonical.toString();B.overscaledZ!==B.canonical.z&&(Pe+=` => ${B.overscaledZ}`),function(Oe,Je){Oe.initDebugOverlayCanvas();let He=Oe.debugOverlayCanvas,et=Oe.context.gl,Mt=Oe.debugOverlayCanvas.getContext("2d");Mt.clearRect(0,0,He.width,He.height),Mt.shadowColor="white",Mt.shadowBlur=2,Mt.lineWidth=1.5,Mt.strokeStyle="white",Mt.textBaseline="top",Mt.font="bold 36px Open Sans, sans-serif",Mt.fillText(Je,5,5),Mt.strokeText(Je,5,5),Oe.debugOverlayTexture.update(He),Oe.debugOverlayTexture.bind(et.LINEAR,et.CLAMP_TO_EDGE)}(le,`${Pe} ${Sr}kB`),qe.draw(Q,ee.TRIANGLES,je,it,Ps.alphaBlended,Ja.disabled,ho(se,a.aM.transparent,be),null,Ot,le.debugBuffer,le.quadTriangleIndexBuffer,le.debugSegments),qe.draw(Q,ee.LINE_STRIP,je,it,yt,Ja.disabled,ho(se,a.aM.red),Nt,Ot,le.debugBuffer,le.tileBorderIndexBuffer,le.debugSegments)}function eu(le,w,B){let Q=le.context,ee=Q.gl,se=le.colorModeForRenderPass(),qe=new wo(ee.LEQUAL,wo.ReadWrite,le.depthRangeFor3D),je=le.useProgram("terrain"),it=w.getTerrainMesh();Q.bindFramebuffer.set(null),Q.viewport.set([0,0,le.width,le.height]);for(let yt of B){let Ot=le.renderToTexture.getTexture(yt),Nt=w.getTerrainData(yt.tileID);Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,Ot.texture);let hr=le.transform.calculatePosMatrix(yt.tileID.toUnwrapped()),Sr=w.getMeshFrameDelta(le.transform.zoom),he=le.transform.calculateFogMatrix(yt.tileID.toUnwrapped()),be=Hr(hr,Sr,he,le.style.sky,le.transform.pitch);je.draw(Q,ee.TRIANGLES,qe,$o.disabled,se,Ja.backCCW,be,Nt,"terrain",it.vertexBuffer,it.indexBuffer,it.segments)}}class Pu{constructor(w,B,Q){this.vertexBuffer=w,this.indexBuffer=B,this.segments=Q}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class Lc{constructor(w,B){this.context=new ov(w),this.transform=B,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:a.an(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=dt.maxUnderzooming+dt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new jo}resize(w,B,Q){if(this.width=Math.floor(w*Q),this.height=Math.floor(B*Q),this.pixelRatio=Q,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let ee of this.style._order)this.style._layers[ee].resize()}setup(){let w=this.context,B=new a.aX;B.emplaceBack(0,0),B.emplaceBack(a.X,0),B.emplaceBack(0,a.X),B.emplaceBack(a.X,a.X),this.tileExtentBuffer=w.createVertexBuffer(B,oo.members),this.tileExtentSegments=a.a0.simpleSegment(0,0,4,2);let Q=new a.aX;Q.emplaceBack(0,0),Q.emplaceBack(a.X,0),Q.emplaceBack(0,a.X),Q.emplaceBack(a.X,a.X),this.debugBuffer=w.createVertexBuffer(Q,oo.members),this.debugSegments=a.a0.simpleSegment(0,0,4,5);let ee=new a.$;ee.emplaceBack(0,0,0,0),ee.emplaceBack(a.X,0,a.X,0),ee.emplaceBack(0,a.X,0,a.X),ee.emplaceBack(a.X,a.X,a.X,a.X),this.rasterBoundsBuffer=w.createVertexBuffer(ee,ot.members),this.rasterBoundsSegments=a.a0.simpleSegment(0,0,4,2);let se=new a.aX;se.emplaceBack(0,0),se.emplaceBack(1,0),se.emplaceBack(0,1),se.emplaceBack(1,1),this.viewportBuffer=w.createVertexBuffer(se,oo.members),this.viewportSegments=a.a0.simpleSegment(0,0,4,2);let qe=new a.aZ;qe.emplaceBack(0),qe.emplaceBack(1),qe.emplaceBack(3),qe.emplaceBack(2),qe.emplaceBack(0),this.tileBorderIndexBuffer=w.createIndexBuffer(qe);let je=new a.aY;je.emplaceBack(0,1,2),je.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=w.createIndexBuffer(je);let it=this.context.gl;this.stencilClearMode=new $o({func:it.ALWAYS,mask:0},0,255,it.ZERO,it.ZERO,it.ZERO)}clearStencil(){let w=this.context,B=w.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let Q=a.H();a.aP(Q,0,this.width,this.height,0,0,1),a.K(Q,Q,[B.drawingBufferWidth,B.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(w,B.TRIANGLES,wo.disabled,this.stencilClearMode,Ps.disabled,Ja.disabled,Mo(Q),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(w,B){if(this.currentStencilSource===w.source||!w.isTileClipped()||!B||!B.length)return;this.currentStencilSource=w.source;let Q=this.context,ee=Q.gl;this.nextStencilID+B.length>256&&this.clearStencil(),Q.setColorMode(Ps.disabled),Q.setDepthMode(wo.disabled);let se=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let qe of B){let je=this._tileClippingMaskIDs[qe.key]=this.nextStencilID++,it=this.style.map.terrain&&this.style.map.terrain.getTerrainData(qe);se.draw(Q,ee.TRIANGLES,wo.disabled,new $o({func:ee.ALWAYS,mask:0},je,255,ee.KEEP,ee.KEEP,ee.REPLACE),Ps.disabled,Ja.disabled,Mo(qe.posMatrix),it,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let w=this.nextStencilID++,B=this.context.gl;return new $o({func:B.NOTEQUAL,mask:255},w,255,B.KEEP,B.KEEP,B.REPLACE)}stencilModeForClipping(w){let B=this.context.gl;return new $o({func:B.EQUAL,mask:255},this._tileClippingMaskIDs[w.key],0,B.KEEP,B.KEEP,B.REPLACE)}stencilConfigForOverlap(w){let B=this.context.gl,Q=w.sort((qe,je)=>je.overscaledZ-qe.overscaledZ),ee=Q[Q.length-1].overscaledZ,se=Q[0].overscaledZ-ee+1;if(se>1){this.currentStencilSource=void 0,this.nextStencilID+se>256&&this.clearStencil();let qe={};for(let je=0;je({u_sky_color:Oe.properties.get("sky-color"),u_horizon_color:Oe.properties.get("horizon-color"),u_horizon:(Je.height/2+Je.getHorizon())*He,u_sky_horizon_blend:Oe.properties.get("sky-horizon-blend")*Je.height/2*He}))(yt,it.style.map.transform,it.pixelRatio),Sr=new wo(Nt.LEQUAL,wo.ReadWrite,[0,1]),he=$o.disabled,be=it.colorModeForRenderPass(),Pe=it.useProgram("sky");if(!yt.mesh){let Oe=new a.aX;Oe.emplaceBack(-1,-1),Oe.emplaceBack(1,-1),Oe.emplaceBack(1,1),Oe.emplaceBack(-1,1);let Je=new a.aY;Je.emplaceBack(0,1,2),Je.emplaceBack(0,2,3),yt.mesh=new Pu(Ot.createVertexBuffer(Oe,oo.members),Ot.createIndexBuffer(Je),a.a0.simpleSegment(0,0,Oe.length,Je.length))}Pe.draw(Ot,Nt.TRIANGLES,Sr,he,be,Ja.disabled,hr,void 0,"sky",yt.mesh.vertexBuffer,yt.mesh.indexBuffer,yt.mesh.segments)}(this,this.style.sky),this._showOverdrawInspector=B.showOverdrawInspector,this.depthRangeFor3D=[0,1-(w._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=Q.length-1;this.currentLayer>=0;this.currentLayer--){let it=this.style._layers[Q[this.currentLayer]],yt=ee[it.source],Ot=se[it.source];this._renderTileClippingMasks(it,Ot),this.renderLayer(this,yt,it,Ot)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerPe.source&&!Pe.isHidden(Ot)?[yt.sourceCaches[Pe.source]]:[]),Sr=hr.filter(Pe=>Pe.getSource().type==="vector"),he=hr.filter(Pe=>Pe.getSource().type!=="vector"),be=Pe=>{(!Nt||Nt.getSource().maxzoombe(Pe)),Nt||he.forEach(Pe=>be(Pe)),Nt}(this.style,this.transform.zoom);it&&function(yt,Ot,Nt){for(let hr=0;hr0),ee&&(a.b0(B,Q),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(se,qe){let je=se.context,it=je.gl,yt=Ps.unblended,Ot=new wo(it.LEQUAL,wo.ReadWrite,[0,1]),Nt=qe.getTerrainMesh(),hr=qe.sourceCache.getRenderableTiles(),Sr=se.useProgram("terrainDepth");je.bindFramebuffer.set(qe.getFramebuffer("depth").framebuffer),je.viewport.set([0,0,se.width/devicePixelRatio,se.height/devicePixelRatio]),je.clear({color:a.aM.transparent,depth:1});for(let he of hr){let be=qe.getTerrainData(he.tileID),Pe={u_matrix:se.transform.calculatePosMatrix(he.tileID.toUnwrapped()),u_ele_delta:qe.getMeshFrameDelta(se.transform.zoom)};Sr.draw(je,it.TRIANGLES,Ot,$o.disabled,yt,Ja.backCCW,Pe,be,"terrain",Nt.vertexBuffer,Nt.indexBuffer,Nt.segments)}je.bindFramebuffer.set(null),je.viewport.set([0,0,se.width,se.height])}(this,this.style.map.terrain),function(se,qe){let je=se.context,it=je.gl,yt=Ps.unblended,Ot=new wo(it.LEQUAL,wo.ReadWrite,[0,1]),Nt=qe.getTerrainMesh(),hr=qe.getCoordsTexture(),Sr=qe.sourceCache.getRenderableTiles(),he=se.useProgram("terrainCoords");je.bindFramebuffer.set(qe.getFramebuffer("coords").framebuffer),je.viewport.set([0,0,se.width/devicePixelRatio,se.height/devicePixelRatio]),je.clear({color:a.aM.transparent,depth:1}),qe.coordsIndex=[];for(let be of Sr){let Pe=qe.getTerrainData(be.tileID);je.activeTexture.set(it.TEXTURE0),it.bindTexture(it.TEXTURE_2D,hr.texture);let Oe={u_matrix:se.transform.calculatePosMatrix(be.tileID.toUnwrapped()),u_terrain_coords_id:(255-qe.coordsIndex.length)/255,u_texture:0,u_ele_delta:qe.getMeshFrameDelta(se.transform.zoom)};he.draw(je,it.TRIANGLES,Ot,$o.disabled,yt,Ja.backCCW,Oe,Pe,"terrain",Nt.vertexBuffer,Nt.indexBuffer,Nt.segments),qe.coordsIndex.push(be.tileID.key)}je.bindFramebuffer.set(null),je.viewport.set([0,0,se.width,se.height])}(this,this.style.map.terrain))}renderLayer(w,B,Q,ee){if(!Q.isHidden(this.transform.zoom)&&(Q.type==="background"||Q.type==="custom"||(ee||[]).length))switch(this.id=Q.id,Q.type){case"symbol":(function(se,qe,je,it,yt){if(se.renderPass!=="translucent")return;let Ot=$o.disabled,Nt=se.colorModeForRenderPass();(je._unevaluatedLayout.hasValue("text-variable-anchor")||je._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(hr,Sr,he,be,Pe,Oe,Je,He,et){let Mt=Sr.transform,Dt=Gi(),Ut=Pe==="map",tr=Oe==="map";for(let mr of hr){let Rr=be.getTile(mr),zr=Rr.getBucket(he);if(!zr||!zr.text||!zr.text.segments.get().length)continue;let Xr=a.ag(zr.textSizeData,Mt.zoom),di=nn(Rr,1,Sr.transform.zoom),Li=Or(mr.posMatrix,tr,Ut,Sr.transform,di),Ci=he.layout.get("icon-text-fit")!=="none"&&zr.hasIconData();if(Xr){let Qi=Math.pow(2,Mt.zoom-Rr.tileID.overscaledZ),Mn=Sr.style.map.terrain?(ea,Ga)=>Sr.style.map.terrain.getElevation(mr,ea,Ga):null,pa=Dt.translatePosition(Mt,Rr,Je,He);kf(zr,Ut,tr,et,Mt,Li,mr.posMatrix,Qi,Xr,Ci,Dt,pa,mr.toUnwrapped(),Mn)}}}(it,se,je,qe,je.layout.get("text-rotation-alignment"),je.layout.get("text-pitch-alignment"),je.paint.get("text-translate"),je.paint.get("text-translate-anchor"),yt),je.paint.get("icon-opacity").constantOr(1)!==0&&Yh(se,qe,je,it,!1,je.paint.get("icon-translate"),je.paint.get("icon-translate-anchor"),je.layout.get("icon-rotation-alignment"),je.layout.get("icon-pitch-alignment"),je.layout.get("icon-keep-upright"),Ot,Nt),je.paint.get("text-opacity").constantOr(1)!==0&&Yh(se,qe,je,it,!0,je.paint.get("text-translate"),je.paint.get("text-translate-anchor"),je.layout.get("text-rotation-alignment"),je.layout.get("text-pitch-alignment"),je.layout.get("text-keep-upright"),Ot,Nt),qe.map.showCollisionBoxes&&(tc(se,qe,je,it,!0),tc(se,qe,je,it,!1))})(w,B,Q,ee,this.style.placement.variableOffsets);break;case"circle":(function(se,qe,je,it){if(se.renderPass!=="translucent")return;let yt=je.paint.get("circle-opacity"),Ot=je.paint.get("circle-stroke-width"),Nt=je.paint.get("circle-stroke-opacity"),hr=!je.layout.get("circle-sort-key").isConstant();if(yt.constantOr(1)===0&&(Ot.constantOr(1)===0||Nt.constantOr(1)===0))return;let Sr=se.context,he=Sr.gl,be=se.depthModeForSublayer(0,wo.ReadOnly),Pe=$o.disabled,Oe=se.colorModeForRenderPass(),Je=[];for(let He=0;HeHe.sortKey-et.sortKey);for(let He of Je){let{programConfiguration:et,program:Mt,layoutVertexBuffer:Dt,indexBuffer:Ut,uniformValues:tr,terrainData:mr}=He.state;Mt.draw(Sr,he.TRIANGLES,be,Pe,Oe,Ja.disabled,tr,mr,je.id,Dt,Ut,He.segments,je.paint,se.transform.zoom,et)}})(w,B,Q,ee);break;case"heatmap":(function(se,qe,je,it){if(je.paint.get("heatmap-opacity")===0)return;let yt=se.context;if(se.style.map.terrain){for(let Ot of it){let Nt=qe.getTile(Ot);qe.hasRenderableParent(Ot)||(se.renderPass==="offscreen"?nh(se,Nt,je,Ot):se.renderPass==="translucent"&&hf(se,je,Ot))}yt.viewport.set([0,0,se.width,se.height])}else se.renderPass==="offscreen"?function(Ot,Nt,hr,Sr){let he=Ot.context,be=he.gl,Pe=$o.disabled,Oe=new Ps([be.ONE,be.ONE],a.aM.transparent,[!0,!0,!0,!0]);(function(Je,He,et){let Mt=Je.gl;Je.activeTexture.set(Mt.TEXTURE1),Je.viewport.set([0,0,He.width/4,He.height/4]);let Dt=et.heatmapFbos.get(a.aU);Dt?(Mt.bindTexture(Mt.TEXTURE_2D,Dt.colorAttachment.get()),Je.bindFramebuffer.set(Dt.framebuffer)):(Dt=kh(Je,He.width/4,He.height/4),et.heatmapFbos.set(a.aU,Dt))})(he,Ot,hr),he.clear({color:a.aM.transparent});for(let Je=0;Je20&&Ot.texParameterf(Ot.TEXTURE_2D,yt.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,yt.extTextureFilterAnisotropicMax);let zr=se.style.map.terrain&&se.style.map.terrain.getTerrainData(Je),Xr=zr?Je:null,di=Xr?Xr.posMatrix:se.transform.calculatePosMatrix(Je.toUnwrapped(),Oe),Li=ml(di,mr||[0,0],tr||1,Ut,je);Nt instanceof Rt?hr.draw(yt,Ot.TRIANGLES,He,$o.disabled,Sr,Ja.disabled,Li,zr,je.id,Nt.boundsBuffer,se.quadTriangleIndexBuffer,Nt.boundsSegments):hr.draw(yt,Ot.TRIANGLES,He,he[Je.overscaledZ],Sr,Ja.disabled,Li,zr,je.id,se.rasterBoundsBuffer,se.quadTriangleIndexBuffer,se.rasterBoundsSegments)}})(w,B,Q,ee);break;case"background":(function(se,qe,je,it){let yt=je.paint.get("background-color"),Ot=je.paint.get("background-opacity");if(Ot===0)return;let Nt=se.context,hr=Nt.gl,Sr=se.transform,he=Sr.tileSize,be=je.paint.get("background-pattern");if(se.isPatternMissing(be))return;let Pe=!be&&yt.a===1&&Ot===1&&se.opaquePassEnabledForLayer()?"opaque":"translucent";if(se.renderPass!==Pe)return;let Oe=$o.disabled,Je=se.depthModeForSublayer(0,Pe==="opaque"?wo.ReadWrite:wo.ReadOnly),He=se.colorModeForRenderPass(),et=se.useProgram(be?"backgroundPattern":"background"),Mt=it||Sr.coveringTiles({tileSize:he,terrain:se.style.map.terrain});be&&(Nt.activeTexture.set(hr.TEXTURE0),se.imageManager.bind(se.context));let Dt=je.getCrossfadeParameters();for(let Ut of Mt){let tr=it?Ut.posMatrix:se.transform.calculatePosMatrix(Ut.toUnwrapped()),mr=be?Hu(tr,Ot,se,be,{tileID:Ut,tileSize:he},Dt):$l(tr,Ot,yt),Rr=se.style.map.terrain&&se.style.map.terrain.getTerrainData(Ut);et.draw(Nt,hr.TRIANGLES,Je,Oe,He,Ja.disabled,mr,Rr,je.id,se.tileExtentBuffer,se.quadTriangleIndexBuffer,se.tileExtentSegments)}})(w,0,Q,ee);break;case"custom":(function(se,qe,je){let it=se.context,yt=je.implementation;if(se.renderPass==="offscreen"){let Ot=yt.prerender;Ot&&(se.setCustomLayerDefaults(),it.setColorMode(se.colorModeForRenderPass()),Ot.call(yt,it.gl,se.transform.customLayerMatrix()),it.setDirty(),se.setBaseState())}else if(se.renderPass==="translucent"){se.setCustomLayerDefaults(),it.setColorMode(se.colorModeForRenderPass()),it.setStencilMode($o.disabled);let Ot=yt.renderingMode==="3d"?new wo(se.context.gl.LEQUAL,wo.ReadWrite,se.depthRangeFor3D):se.depthModeForSublayer(0,wo.ReadOnly);it.setDepthMode(Ot),yt.render(it.gl,se.transform.customLayerMatrix(),{farZ:se.transform.farZ,nearZ:se.transform.nearZ,fov:se.transform._fov,modelViewProjectionMatrix:se.transform.modelViewProjectionMatrix,projectionMatrix:se.transform.projectionMatrix}),it.setDirty(),se.setBaseState(),it.bindFramebuffer.set(null)}})(w,0,Q)}}translatePosMatrix(w,B,Q,ee,se){if(!Q[0]&&!Q[1])return w;let qe=se?ee==="map"?this.transform.angle:0:ee==="viewport"?-this.transform.angle:0;if(qe){let yt=Math.sin(qe),Ot=Math.cos(qe);Q=[Q[0]*Ot-Q[1]*yt,Q[0]*yt+Q[1]*Ot]}let je=[se?Q[0]:nn(B,Q[0],this.transform.zoom),se?Q[1]:nn(B,Q[1],this.transform.zoom),0],it=new Float32Array(16);return a.J(it,w,je),it}saveTileTexture(w){let B=this._tileTextures[w.size[0]];B?B.push(w):this._tileTextures[w.size[0]]=[w]}getTileTexture(w){let B=this._tileTextures[w];return B&&B.length>0?B.pop():null}isPatternMissing(w){if(!w)return!1;if(!w.from||!w.to)return!0;let B=this.imageManager.getPattern(w.from.toString()),Q=this.imageManager.getPattern(w.to.toString());return!B||!Q}useProgram(w,B){this.cache=this.cache||{};let Q=w+(B?B.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[Q]||(this.cache[Q]=new zi(this.context,xn[w],B,fc[w],this._showOverdrawInspector,this.style.map.terrain)),this.cache[Q]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let w=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(w.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new p(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:w,drawingBufferHeight:B}=this.context.gl;return this.width!==w||this.height!==B}}class fl{constructor(w,B){this.points=w,this.planes=B}static fromInvProjectionMatrix(w,B,Q){let ee=Math.pow(2,Q),se=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(je=>{let it=1/(je=a.af([],je,w))[3]/B*ee;return a.b1(je,je,[it,it,1/je[3],it])}),qe=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(je=>{let it=function(hr,Sr){var he=Sr[0],be=Sr[1],Pe=Sr[2],Oe=he*he+be*be+Pe*Pe;return Oe>0&&(Oe=1/Math.sqrt(Oe)),hr[0]=Sr[0]*Oe,hr[1]=Sr[1]*Oe,hr[2]=Sr[2]*Oe,hr}([],function(hr,Sr,he){var be=Sr[0],Pe=Sr[1],Oe=Sr[2],Je=he[0],He=he[1],et=he[2];return hr[0]=Pe*et-Oe*He,hr[1]=Oe*Je-be*et,hr[2]=be*He-Pe*Je,hr}([],L([],se[je[0]],se[je[1]]),L([],se[je[2]],se[je[1]]))),yt=-((Ot=it)[0]*(Nt=se[je[1]])[0]+Ot[1]*Nt[1]+Ot[2]*Nt[2]);var Ot,Nt;return it.concat(yt)});return new fl(se,qe)}}class Xc{constructor(w,B){this.min=w,this.max=B,this.center=function(Q,ee,se){return Q[0]=.5*ee[0],Q[1]=.5*ee[1],Q[2]=.5*ee[2],Q}([],function(Q,ee,se){return Q[0]=ee[0]+se[0],Q[1]=ee[1]+se[1],Q[2]=ee[2]+se[2],Q}([],this.min,this.max))}quadrant(w){let B=[w%2==0,w<2],Q=k(this.min),ee=k(this.max);for(let se=0;se=0&&qe++;if(qe===0)return 0;qe!==B.length&&(Q=!1)}if(Q)return 2;for(let ee=0;ee<3;ee++){let se=Number.MAX_VALUE,qe=-Number.MAX_VALUE;for(let je=0;jethis.max[ee]-this.min[ee])return 0}return 1}}class ic{constructor(w=0,B=0,Q=0,ee=0){if(isNaN(w)||w<0||isNaN(B)||B<0||isNaN(Q)||Q<0||isNaN(ee)||ee<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=w,this.bottom=B,this.left=Q,this.right=ee}interpolate(w,B,Q){return B.top!=null&&w.top!=null&&(this.top=a.y.number(w.top,B.top,Q)),B.bottom!=null&&w.bottom!=null&&(this.bottom=a.y.number(w.bottom,B.bottom,Q)),B.left!=null&&w.left!=null&&(this.left=a.y.number(w.left,B.left,Q)),B.right!=null&&w.right!=null&&(this.right=a.y.number(w.right,B.right,Q)),this}getCenter(w,B){let Q=a.ac((this.left+w-this.right)/2,0,w),ee=a.ac((this.top+B-this.bottom)/2,0,B);return new a.P(Q,ee)}equals(w){return this.top===w.top&&this.bottom===w.bottom&&this.left===w.left&&this.right===w.right}clone(){return new ic(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let yu=85.051129;class Qs{constructor(w,B,Q,ee,se){this.tileSize=512,this._renderWorldCopies=se===void 0||!!se,this._minZoom=w||0,this._maxZoom=B||22,this._minPitch=Q==null?0:Q,this._maxPitch=ee==null?60:ee,this.setMaxBounds(),this.width=0,this.height=0,this._center=new a.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new ic,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let w=new Qs(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return w.apply(this),w}apply(w){this.tileSize=w.tileSize,this.latRange=w.latRange,this.lngRange=w.lngRange,this.width=w.width,this.height=w.height,this._center=w._center,this._elevation=w._elevation,this.minElevationForCurrentTile=w.minElevationForCurrentTile,this.zoom=w.zoom,this.angle=w.angle,this._fov=w._fov,this._pitch=w._pitch,this._unmodified=w._unmodified,this._edgeInsets=w._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(w){this._minZoom!==w&&(this._minZoom=w,this.zoom=Math.max(this.zoom,w))}get maxZoom(){return this._maxZoom}set maxZoom(w){this._maxZoom!==w&&(this._maxZoom=w,this.zoom=Math.min(this.zoom,w))}get minPitch(){return this._minPitch}set minPitch(w){this._minPitch!==w&&(this._minPitch=w,this.pitch=Math.max(this.pitch,w))}get maxPitch(){return this._maxPitch}set maxPitch(w){this._maxPitch!==w&&(this._maxPitch=w,this.pitch=Math.min(this.pitch,w))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(w){w===void 0?w=!0:w===null&&(w=!1),this._renderWorldCopies=w}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new a.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(w){let B=-a.b3(w,-180,180)*Math.PI/180;this.angle!==B&&(this._unmodified=!1,this.angle=B,this._calcMatrices(),this.rotationMatrix=function(){var Q=new a.A(4);return a.A!=Float32Array&&(Q[1]=0,Q[2]=0),Q[0]=1,Q[3]=1,Q}(),function(Q,ee,se){var qe=ee[0],je=ee[1],it=ee[2],yt=ee[3],Ot=Math.sin(se),Nt=Math.cos(se);Q[0]=qe*Nt+it*Ot,Q[1]=je*Nt+yt*Ot,Q[2]=qe*-Ot+it*Nt,Q[3]=je*-Ot+yt*Nt}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(w){let B=a.ac(w,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==B&&(this._unmodified=!1,this._pitch=B,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(w){w=Math.max(.01,Math.min(60,w)),this._fov!==w&&(this._unmodified=!1,this._fov=w/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(w){let B=Math.min(Math.max(w,this.minZoom),this.maxZoom);this._zoom!==B&&(this._unmodified=!1,this._zoom=B,this.tileZoom=Math.max(0,Math.floor(B)),this.scale=this.zoomScale(B),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(w){w.lat===this._center.lat&&w.lng===this._center.lng||(this._unmodified=!1,this._center=w,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(w){w!==this._elevation&&(this._elevation=w,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(w){this._edgeInsets.equals(w)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,w,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(w){return this._edgeInsets.equals(w)}interpolatePadding(w,B,Q){this._unmodified=!1,this._edgeInsets.interpolate(w,B,Q),this._constrain(),this._calcMatrices()}coveringZoomLevel(w){let B=(w.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/w.tileSize));return Math.max(0,B)}getVisibleUnwrappedCoordinates(w){let B=[new a.b4(0,w)];if(this._renderWorldCopies){let Q=this.pointCoordinate(new a.P(0,0)),ee=this.pointCoordinate(new a.P(this.width,0)),se=this.pointCoordinate(new a.P(this.width,this.height)),qe=this.pointCoordinate(new a.P(0,this.height)),je=Math.floor(Math.min(Q.x,ee.x,se.x,qe.x)),it=Math.floor(Math.max(Q.x,ee.x,se.x,qe.x)),yt=1;for(let Ot=je-yt;Ot<=it+yt;Ot++)Ot!==0&&B.push(new a.b4(Ot,w))}return B}coveringTiles(w){var B,Q;let ee=this.coveringZoomLevel(w),se=ee;if(w.minzoom!==void 0&&eew.maxzoom&&(ee=w.maxzoom);let qe=this.pointCoordinate(this.getCameraPoint()),je=a.Z.fromLngLat(this.center),it=Math.pow(2,ee),yt=[it*qe.x,it*qe.y,0],Ot=[it*je.x,it*je.y,0],Nt=fl.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,ee),hr=w.minzoom||0;!w.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(hr=ee);let Sr=w.terrain?2/Math.min(this.tileSize,w.tileSize)*this.tileSize:3,he=He=>({aabb:new Xc([He*it,0,0],[(He+1)*it,it,0]),zoom:0,x:0,y:0,wrap:He,fullyVisible:!1}),be=[],Pe=[],Oe=ee,Je=w.reparseOverscaled?se:ee;if(this._renderWorldCopies)for(let He=1;He<=3;He++)be.push(he(-He)),be.push(he(He));for(be.push(he(0));be.length>0;){let He=be.pop(),et=He.x,Mt=He.y,Dt=He.fullyVisible;if(!Dt){let zr=He.aabb.intersects(Nt);if(zr===0)continue;Dt=zr===2}let Ut=w.terrain?yt:Ot,tr=He.aabb.distanceX(Ut),mr=He.aabb.distanceY(Ut),Rr=Math.max(Math.abs(tr),Math.abs(mr));if(He.zoom===Oe||Rr>Sr+(1<=hr){let zr=Oe-He.zoom,Xr=yt[0]-.5-(et<>1),Li=He.zoom+1,Ci=He.aabb.quadrant(zr);if(w.terrain){let Qi=new a.S(Li,He.wrap,Li,Xr,di),Mn=w.terrain.getMinMaxElevation(Qi),pa=(B=Mn.minElevation)!==null&&B!==void 0?B:this.elevation,ea=(Q=Mn.maxElevation)!==null&&Q!==void 0?Q:this.elevation;Ci=new Xc([Ci.min[0],Ci.min[1],pa],[Ci.max[0],Ci.max[1],ea])}be.push({aabb:Ci,zoom:Li,x:Xr,y:di,wrap:He.wrap,fullyVisible:Dt})}}return Pe.sort((He,et)=>He.distanceSq-et.distanceSq).map(He=>He.tileID)}resize(w,B){this.width=w,this.height=B,this.pixelsToGLUnits=[2/w,-2/B],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(w){return Math.pow(2,w)}scaleZoom(w){return Math.log(w)/Math.LN2}project(w){let B=a.ac(w.lat,-85.051129,yu);return new a.P(a.O(w.lng)*this.worldSize,a.Q(B)*this.worldSize)}unproject(w){return new a.Z(w.x/this.worldSize,w.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(w){let B=this.elevation,Q=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,ee=this.pointLocation(this.centerPoint,w),se=w.getElevationForLngLatZoom(ee,this.tileZoom);if(!(this.elevation-se))return;let qe=Q+B-se,je=Math.cos(this._pitch)*this.cameraToCenterDistance/qe/a.b5(1,ee.lat),it=this.scaleZoom(je/this.tileSize);this._elevation=se,this._center=ee,this.zoom=it}setLocationAtPoint(w,B){let Q=this.pointCoordinate(B),ee=this.pointCoordinate(this.centerPoint),se=this.locationCoordinate(w),qe=new a.Z(se.x-(Q.x-ee.x),se.y-(Q.y-ee.y));this.center=this.coordinateLocation(qe),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(w,B){return B?this.coordinatePoint(this.locationCoordinate(w),B.getElevationForLngLatZoom(w,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(w))}pointLocation(w,B){return this.coordinateLocation(this.pointCoordinate(w,B))}locationCoordinate(w){return a.Z.fromLngLat(w)}coordinateLocation(w){return w&&w.toLngLat()}pointCoordinate(w,B){if(B){let hr=B.pointCoordinate(w);if(hr!=null)return hr}let Q=[w.x,w.y,0,1],ee=[w.x,w.y,1,1];a.af(Q,Q,this.pixelMatrixInverse),a.af(ee,ee,this.pixelMatrixInverse);let se=Q[3],qe=ee[3],je=Q[1]/se,it=ee[1]/qe,yt=Q[2]/se,Ot=ee[2]/qe,Nt=yt===Ot?0:(0-yt)/(Ot-yt);return new a.Z(a.y.number(Q[0]/se,ee[0]/qe,Nt)/this.worldSize,a.y.number(je,it,Nt)/this.worldSize)}coordinatePoint(w,B=0,Q=this.pixelMatrix){let ee=[w.x*this.worldSize,w.y*this.worldSize,B,1];return a.af(ee,ee,Q),new a.P(ee[0]/ee[3],ee[1]/ee[3])}getBounds(){let w=Math.max(0,this.height/2-this.getHorizon());return new ce().extend(this.pointLocation(new a.P(0,w))).extend(this.pointLocation(new a.P(this.width,w))).extend(this.pointLocation(new a.P(this.width,this.height))).extend(this.pointLocation(new a.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new ce([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(w){w?(this.lngRange=[w.getWest(),w.getEast()],this.latRange=[w.getSouth(),w.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,yu])}calculateTileMatrix(w){let B=w.canonical,Q=this.worldSize/this.zoomScale(B.z),ee=B.x+Math.pow(2,B.z)*w.wrap,se=a.an(new Float64Array(16));return a.J(se,se,[ee*Q,B.y*Q,0]),a.K(se,se,[Q/a.X,Q/a.X,1]),se}calculatePosMatrix(w,B=!1){let Q=w.key,ee=B?this._alignedPosMatrixCache:this._posMatrixCache;if(ee[Q])return ee[Q];let se=this.calculateTileMatrix(w);return a.L(se,B?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,se),ee[Q]=new Float32Array(se),ee[Q]}calculateFogMatrix(w){let B=w.key,Q=this._fogMatrixCache;if(Q[B])return Q[B];let ee=this.calculateTileMatrix(w);return a.L(ee,this.fogMatrix,ee),Q[B]=new Float32Array(ee),Q[B]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(w,B){B=a.ac(+B,this.minZoom,this.maxZoom);let Q={center:new a.N(w.lng,w.lat),zoom:B},ee=this.lngRange;if(!this._renderWorldCopies&&ee===null){let He=179.9999999999;ee=[-He,He]}let se=this.tileSize*this.zoomScale(Q.zoom),qe=0,je=se,it=0,yt=se,Ot=0,Nt=0,{x:hr,y:Sr}=this.size;if(this.latRange){let He=this.latRange;qe=a.Q(He[1])*se,je=a.Q(He[0])*se,je-qeje&&(Oe=je-He)}if(ee){let He=(it+yt)/2,et=he;this._renderWorldCopies&&(et=a.b3(he,He-se/2,He+se/2));let Mt=hr/2;et-Mtyt&&(Pe=yt-Mt)}if(Pe!==void 0||Oe!==void 0){let He=new a.P(Pe!=null?Pe:he,Oe!=null?Oe:be);Q.center=this.unproject.call({worldSize:se},He).wrap()}return Q}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let w=this._unmodified,{center:B,zoom:Q}=this.getConstrained(this.center,this.zoom);this.center=B,this.zoom=Q,this._unmodified=w,this._constraining=!1}_calcMatrices(){if(!this.height)return;let w=this.centerOffset,B=this.point.x,Q=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=a.b5(1,this.center.lat)*this.worldSize;let ee=a.an(new Float64Array(16));a.K(ee,ee,[this.width/2,-this.height/2,1]),a.J(ee,ee,[1,-1,0]),this.labelPlaneMatrix=ee,ee=a.an(new Float64Array(16)),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[-1,-1,0]),a.K(ee,ee,[2/this.width,2/this.height,1]),this.glCoordMatrix=ee;let se=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),qe=Math.min(this.elevation,this.minElevationForCurrentTile),je=se-qe*this._pixelPerMeter/Math.cos(this._pitch),it=qe<0?je:se,yt=Math.PI/2+this._pitch,Ot=this._fov*(.5+w.y/this.height),Nt=Math.sin(Ot)*it/Math.sin(a.ac(Math.PI-yt-Ot,.01,Math.PI-.01)),hr=this.getHorizon(),Sr=2*Math.atan(hr/this.cameraToCenterDistance)*(.5+w.y/(2*hr)),he=Math.sin(Sr)*it/Math.sin(a.ac(Math.PI-yt-Sr,.01,Math.PI-.01)),be=Math.min(Nt,he);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*be+it),this.nearZ=this.height/50,ee=new Float64Array(16),a.b6(ee,this._fov,this.width/this.height,this.nearZ,this.farZ),ee[8]=2*-w.x/this.width,ee[9]=2*w.y/this.height,this.projectionMatrix=a.ae(ee),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[0,0,-this.cameraToCenterDistance]),a.b7(ee,ee,this._pitch),a.ad(ee,ee,this.angle),a.J(ee,ee,[-B,-Q,0]),this.mercatorMatrix=a.K([],ee,[this.worldSize,this.worldSize,this.worldSize]),a.K(ee,ee,[1,1,this._pixelPerMeter]),this.pixelMatrix=a.L(new Float64Array(16),this.labelPlaneMatrix,ee),a.J(ee,ee,[0,0,-this.elevation]),this.modelViewProjectionMatrix=ee,this.invModelViewProjectionMatrix=a.as([],ee),this.fogMatrix=new Float64Array(16),a.b6(this.fogMatrix,this._fov,this.width/this.height,se,this.farZ),this.fogMatrix[8]=2*-w.x/this.width,this.fogMatrix[9]=2*w.y/this.height,a.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),a.b7(this.fogMatrix,this.fogMatrix,this._pitch),a.ad(this.fogMatrix,this.fogMatrix,this.angle),a.J(this.fogMatrix,this.fogMatrix,[-B,-Q,0]),a.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=a.L(new Float64Array(16),this.labelPlaneMatrix,ee);let Pe=this.width%2/2,Oe=this.height%2/2,Je=Math.cos(this.angle),He=Math.sin(this.angle),et=B-Math.round(B)+Je*Pe+He*Oe,Mt=Q-Math.round(Q)+Je*Oe+He*Pe,Dt=new Float64Array(ee);if(a.J(Dt,Dt,[et>.5?et-1:et,Mt>.5?Mt-1:Mt,0]),this.alignedModelViewProjectionMatrix=Dt,ee=a.as(new Float64Array(16),this.pixelMatrix),!ee)throw new Error("failed to invert matrix");this.pixelMatrixInverse=ee,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let w=this.pointCoordinate(new a.P(0,0)),B=[w.x*this.worldSize,w.y*this.worldSize,0,1];return a.af(B,B,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let w=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new a.P(0,w))}getCameraQueryGeometry(w){let B=this.getCameraPoint();if(w.length===1)return[w[0],B];{let Q=B.x,ee=B.y,se=B.x,qe=B.y;for(let je of w)Q=Math.min(Q,je.x),ee=Math.min(ee,je.y),se=Math.max(se,je.x),qe=Math.max(qe,je.y);return[new a.P(Q,ee),new a.P(se,ee),new a.P(se,qe),new a.P(Q,qe),new a.P(Q,ee)]}}lngLatToCameraDepth(w,B){let Q=this.locationCoordinate(w),ee=[Q.x*this.worldSize,Q.y*this.worldSize,B,1];return a.af(ee,ee,this.modelViewProjectionMatrix),ee[2]/ee[3]}}function Qh(le,w){let B,Q=!1,ee=null,se=null,qe=()=>{ee=null,Q&&(le.apply(se,B),ee=setTimeout(qe,w),Q=!1)};return(...je)=>(Q=!0,se=this,B=je,ee||qe(),ee)}class gd{constructor(w){this._getCurrentHash=()=>{let B=window.location.hash.replace("#","");if(this._hashName){let Q;return B.split("&").map(ee=>ee.split("=")).forEach(ee=>{ee[0]===this._hashName&&(Q=ee)}),(Q&&Q[1]||"").split("/")}return B.split("/")},this._onHashChange=()=>{let B=this._getCurrentHash();if(B.length>=3&&!B.some(Q=>isNaN(Q))){let Q=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(B[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+B[2],+B[1]],zoom:+B[0],bearing:Q,pitch:+(B[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let B=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,B)},this._removeHash=()=>{let B=this._getCurrentHash();if(B.length===0)return;let Q=B.join("/"),ee=Q;ee.split("&").length>0&&(ee=ee.split("&")[0]),this._hashName&&(ee=`${this._hashName}=${Q}`);let se=window.location.hash.replace(ee,"");se.startsWith("#&")?se=se.slice(0,1)+se.slice(2):se==="#"&&(se="");let qe=window.location.href.replace(/(#.+)?$/,se);qe=qe.replace("&&","&"),window.history.replaceState(window.history.state,null,qe)},this._updateHash=Qh(this._updateHashUnthrottled,300),this._hashName=w&&encodeURIComponent(w)}addTo(w){return this._map=w,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(w){let B=this._map.getCenter(),Q=Math.round(100*this._map.getZoom())/100,ee=Math.ceil((Q*Math.LN2+Math.log(512/360/.5))/Math.LN10),se=Math.pow(10,ee),qe=Math.round(B.lng*se)/se,je=Math.round(B.lat*se)/se,it=this._map.getBearing(),yt=this._map.getPitch(),Ot="";if(Ot+=w?`/${qe}/${je}/${Q}`:`${Q}/${je}/${qe}`,(it||yt)&&(Ot+="/"+Math.round(10*it)/10),yt&&(Ot+=`/${Math.round(yt)}`),this._hashName){let Nt=this._hashName,hr=!1,Sr=window.location.hash.slice(1).split("&").map(he=>{let be=he.split("=")[0];return be===Nt?(hr=!0,`${be}=${Ot}`):he}).filter(he=>he);return hr||Sr.push(`${Nt}=${Ot}`),`#${Sr.join("&")}`}return`#${Ot}`}}let Gu={linearity:.3,easing:a.b8(0,0,.3,1)},Pc=a.e({deceleration:2500,maxSpeed:1400},Gu),vc=a.e({deceleration:20,maxSpeed:1400},Gu),sv=a.e({deceleration:1e3,maxSpeed:360},Gu),Lf=a.e({deceleration:1e3,maxSpeed:90},Gu);class Uf{constructor(w){this._map=w,this.clear()}clear(){this._inertiaBuffer=[]}record(w){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:u.now(),settings:w})}_drainInertiaBuffer(){let w=this._inertiaBuffer,B=u.now();for(;w.length>0&&B-w[0].time>160;)w.shift()}_onMoveEnd(w){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let B={zoom:0,bearing:0,pitch:0,pan:new a.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:se}of this._inertiaBuffer)B.zoom+=se.zoomDelta||0,B.bearing+=se.bearingDelta||0,B.pitch+=se.pitchDelta||0,se.panDelta&&B.pan._add(se.panDelta),se.around&&(B.around=se.around),se.pinchAround&&(B.pinchAround=se.pinchAround);let Q=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,ee={};if(B.pan.mag()){let se=oh(B.pan.mag(),Q,a.e({},Pc,w||{}));ee.offset=B.pan.mult(se.amount/B.pan.mag()),ee.center=this._map.transform.center,Iu(ee,se)}if(B.zoom){let se=oh(B.zoom,Q,vc);ee.zoom=this._map.transform.zoom+se.amount,Iu(ee,se)}if(B.bearing){let se=oh(B.bearing,Q,sv);ee.bearing=this._map.transform.bearing+a.ac(se.amount,-179,179),Iu(ee,se)}if(B.pitch){let se=oh(B.pitch,Q,Lf);ee.pitch=this._map.transform.pitch+se.amount,Iu(ee,se)}if(ee.zoom||ee.bearing){let se=B.pinchAround===void 0?B.around:B.pinchAround;ee.around=se?this._map.unproject(se):this._map.getCenter()}return this.clear(),a.e(ee,{noMoveStart:!0})}}function Iu(le,w){(!le.duration||le.durationB.unproject(it)),je=se.reduce((it,yt,Ot,Nt)=>it.add(yt.div(Nt.length)),new a.P(0,0));super(w,{points:se,point:je,lngLats:qe,lngLat:B.unproject(je),originalEvent:Q}),this._defaultPrevented=!1}}class md extends a.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(w,B,Q){super(w,{originalEvent:Q}),this._defaultPrevented=!1}}class sh{constructor(w,B){this._map=w,this._clickTolerance=B.clickTolerance}reset(){delete this._mousedownPos}wheel(w){return this._firePreventable(new md(w.type,this._map,w))}mousedown(w,B){return this._mousedownPos=B,this._firePreventable(new tu(w.type,this._map,w))}mouseup(w){this._map.fire(new tu(w.type,this._map,w))}click(w,B){this._mousedownPos&&this._mousedownPos.dist(B)>=this._clickTolerance||this._map.fire(new tu(w.type,this._map,w))}dblclick(w){return this._firePreventable(new tu(w.type,this._map,w))}mouseover(w){this._map.fire(new tu(w.type,this._map,w))}mouseout(w){this._map.fire(new tu(w.type,this._map,w))}touchstart(w){return this._firePreventable(new vf(w.type,this._map,w))}touchmove(w){this._map.fire(new vf(w.type,this._map,w))}touchend(w){this._map.fire(new vf(w.type,this._map,w))}touchcancel(w){this._map.fire(new vf(w.type,this._map,w))}_firePreventable(w){if(this._map.fire(w),w.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Fs{constructor(w){this._map=w}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(w){this._map.fire(new tu(w.type,this._map,w))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new tu("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(w){this._delayContextMenu?this._contextMenuEvent=w:this._ignoreContextMenu||this._map.fire(new tu(w.type,this._map,w)),this._map.listens("contextmenu")&&w.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class _u{constructor(w){this._map=w}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(w){return this.transform.pointLocation(a.P.convert(w),this._map.terrain)}}class xu{constructor(w,B){this._map=w,this._tr=new _u(w),this._el=w.getCanvasContainer(),this._container=w.getContainer(),this._clickTolerance=B.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(w,B){this.isEnabled()&&w.shiftKey&&w.button===0&&(c.disableDrag(),this._startPos=this._lastPos=B,this._active=!0)}mousemoveWindow(w,B){if(!this._active)return;let Q=B;if(this._lastPos.equals(Q)||!this._box&&Q.dist(this._startPos)se.fitScreenCoordinates(Q,ee,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",w)}keydown(w){this._active&&w.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",w))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(w,B){return this._map.fire(new a.k(w,{originalEvent:B}))}}function Lh(le,w){if(le.length!==w.length)throw new Error(`The number of touches and points are not equal - touches ${le.length}, points ${w.length}`);let B={};for(let Q=0;Qthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=w.timeStamp),Q.length===this.numTouches&&(this.centroid=function(ee){let se=new a.P(0,0);for(let qe of ee)se._add(qe);return se.div(ee.length)}(B),this.touches=Lh(Q,B)))}touchmove(w,B,Q){if(this.aborted||!this.centroid)return;let ee=Lh(Q,B);for(let se in this.touches){let qe=ee[se];(!qe||qe.dist(this.touches[se])>30)&&(this.aborted=!0)}}touchend(w,B,Q){if((!this.centroid||w.timeStamp-this.startTime>500)&&(this.aborted=!0),Q.length===0){let ee=!this.aborted&&this.centroid;if(this.reset(),ee)return ee}}}class Pf{constructor(w){this.singleTap=new Is(w),this.numTaps=w.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(w,B,Q){this.singleTap.touchstart(w,B,Q)}touchmove(w,B,Q){this.singleTap.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this.singleTap.touchend(w,B,Q);if(ee){let se=w.timeStamp-this.lastTime<500,qe=!this.lastTap||this.lastTap.dist(ee)<30;if(se&&qe||this.reset(),this.count++,this.lastTime=w.timeStamp,this.lastTap=ee,this.count===this.numTaps)return this.reset(),ee}}}class Ic{constructor(w){this._tr=new _u(w),this._zoomIn=new Pf({numTouches:1,numTaps:2}),this._zoomOut=new Pf({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(w,B,Q){this._zoomIn.touchstart(w,B,Q),this._zoomOut.touchstart(w,B,Q)}touchmove(w,B,Q){this._zoomIn.touchmove(w,B,Q),this._zoomOut.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this._zoomIn.touchend(w,B,Q),se=this._zoomOut.touchend(w,B,Q),qe=this._tr;return ee?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:je=>je.easeTo({duration:300,zoom:qe.zoom+1,around:qe.unproject(ee)},{originalEvent:w})}):se?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:je=>je.easeTo({duration:300,zoom:qe.zoom-1,around:qe.unproject(se)},{originalEvent:w})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class ju{constructor(w){this._enabled=!!w.enable,this._moveStateManager=w.moveStateManager,this._clickTolerance=w.clickTolerance||1,this._moveFunction=w.move,this._activateOnStart=!!w.activateOnStart,w.assignEvents(this),this.reset()}reset(w){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(w)}_move(...w){let B=this._moveFunction(...w);if(B.bearingDelta||B.pitchDelta||B.around||B.panDelta)return this._active=!0,B}dragStart(w,B){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(w)&&(this._moveStateManager.startMove(w),this._lastPoint=B.length?B[0]:B,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(w,B){if(!this.isEnabled())return;let Q=this._lastPoint;if(!Q)return;if(w.preventDefault(),!this._moveStateManager.isValidMoveEvent(w))return void this.reset(w);let ee=B.length?B[0]:B;return!this._moved&&ee.dist(Q){le.mousedown=le.dragStart,le.mousemoveWindow=le.dragMove,le.mouseup=le.dragEnd,le.contextmenu=w=>{w.preventDefault()}},Rl=({enable:le,clickTolerance:w,bearingDegreesPerPixelMoved:B=.8})=>{let Q=new pc({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new ju({clickTolerance:w,move:(ee,se)=>({bearingDelta:(se.x-ee.x)*B}),moveStateManager:Q,enable:le,assignEvents:Ph})},Ih=({enable:le,clickTolerance:w,pitchDegreesPerPixelMoved:B=-.5})=>{let Q=new pc({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new ju({clickTolerance:w,move:(ee,se)=>({pitchDelta:(se.y-ee.y)*B}),moveStateManager:Q,enable:le,assignEvents:Ph})};class Wu{constructor(w,B){this._clickTolerance=w.clickTolerance||1,this._map=B,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new a.P(0,0)}_shouldBePrevented(w){return w<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(w,B,Q){return this._calculateTransform(w,B,Q)}touchmove(w,B,Q){if(this._active){if(!this._shouldBePrevented(Q.length))return w.preventDefault(),this._calculateTransform(w,B,Q);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",w)}}touchend(w,B,Q){this._calculateTransform(w,B,Q),this._active&&this._shouldBePrevented(Q.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(w,B,Q){Q.length>0&&(this._active=!0);let ee=Lh(Q,B),se=new a.P(0,0),qe=new a.P(0,0),je=0;for(let yt in ee){let Ot=ee[yt],Nt=this._touches[yt];Nt&&(se._add(Ot),qe._add(Ot.sub(Nt)),je++,ee[yt]=Ot)}if(this._touches=ee,this._shouldBePrevented(je)||!qe.mag())return;let it=qe.div(je);return this._sum._add(it),this._sum.mag()Math.abs(le.x)}class gf extends Rc{constructor(w){super(),this._currentTouchCount=0,this._map=w}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(w,B,Q){super.touchstart(w,B,Q),this._currentTouchCount=Q.length}_start(w){this._lastPoints=w,nc(w[0].sub(w[1]))&&(this._valid=!1)}_move(w,B,Q){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let ee=w[0].sub(this._lastPoints[0]),se=w[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(ee,se,Q.timeStamp),this._valid?(this._lastPoints=w,this._active=!0,{pitchDelta:(ee.y+se.y)/2*-.5}):void 0}gestureBeginsVertically(w,B,Q){if(this._valid!==void 0)return this._valid;let ee=w.mag()>=2,se=B.mag()>=2;if(!ee&&!se)return;if(!ee||!se)return this._firstMove===void 0&&(this._firstMove=Q),Q-this._firstMove<100&&void 0;let qe=w.y>0==B.y>0;return nc(w)&&nc(B)&&qe}}let gt={panStep:100,bearingStep:15,pitchStep:10};class Bt{constructor(w){this._tr=new _u(w);let B=gt;this._panStep=B.panStep,this._bearingStep=B.bearingStep,this._pitchStep=B.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(w){if(w.altKey||w.ctrlKey||w.metaKey)return;let B=0,Q=0,ee=0,se=0,qe=0;switch(w.keyCode){case 61:case 107:case 171:case 187:B=1;break;case 189:case 109:case 173:B=-1;break;case 37:w.shiftKey?Q=-1:(w.preventDefault(),se=-1);break;case 39:w.shiftKey?Q=1:(w.preventDefault(),se=1);break;case 38:w.shiftKey?ee=1:(w.preventDefault(),qe=-1);break;case 40:w.shiftKey?ee=-1:(w.preventDefault(),qe=1);break;default:return}return this._rotationDisabled&&(Q=0,ee=0),{cameraAnimation:je=>{let it=this._tr;je.easeTo({duration:300,easeId:"keyboardHandler",easing:wr,zoom:B?Math.round(it.zoom)+B*(w.shiftKey?2:1):it.zoom,bearing:it.bearing+Q*this._bearingStep,pitch:it.pitch+ee*this._pitchStep,offset:[-se*this._panStep,-qe*this._panStep],center:it.center},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function wr(le){return le*(2-le)}let vr=4.000244140625;class Ur{constructor(w,B){this._onTimeout=Q=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(Q)},this._map=w,this._tr=new _u(w),this._triggerRenderFrame=B,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(w){this._defaultZoomRate=w}setWheelZoomRate(w){this._wheelZoomRate=w}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(w){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!w&&w.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(w){return!!this._map.cooperativeGestures.isEnabled()&&!(w.ctrlKey||this._map.cooperativeGestures.isBypassed(w))}wheel(w){if(!this.isEnabled())return;if(this._shouldBePrevented(w))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",w);let B=w.deltaMode===WheelEvent.DOM_DELTA_LINE?40*w.deltaY:w.deltaY,Q=u.now(),ee=Q-(this._lastWheelEventTime||0);this._lastWheelEventTime=Q,B!==0&&B%vr==0?this._type="wheel":B!==0&&Math.abs(B)<4?this._type="trackpad":ee>400?(this._type=null,this._lastValue=B,this._timeout=setTimeout(this._onTimeout,40,w)):this._type||(this._type=Math.abs(ee*B)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,B+=this._lastValue)),w.shiftKey&&B&&(B/=4),this._type&&(this._lastWheelEvent=w,this._delta-=B,this._active||this._start(w)),w.preventDefault()}_start(w){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let B=c.mousePos(this._map.getCanvas(),w),Q=this._tr;this._around=B.y>Q.transform.height/2-Q.transform.getHorizon()?a.N.convert(this._aroundCenter?Q.center:Q.unproject(B)):a.N.convert(Q.center),this._aroundPoint=Q.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let w=this._tr.transform;if(this._delta!==0){let it=this._type==="wheel"&&Math.abs(this._delta)>vr?this._wheelZoomRate:this._defaultZoomRate,yt=2/(1+Math.exp(-Math.abs(this._delta*it)));this._delta<0&&yt!==0&&(yt=1/yt);let Ot=typeof this._targetZoom=="number"?w.zoomScale(this._targetZoom):w.scale;this._targetZoom=Math.min(w.maxZoom,Math.max(w.minZoom,w.scaleZoom(Ot*yt))),this._type==="wheel"&&(this._startZoom=w.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let B=typeof this._targetZoom=="number"?this._targetZoom:w.zoom,Q=this._startZoom,ee=this._easing,se,qe=!1,je=u.now()-this._lastWheelEventTime;if(this._type==="wheel"&&Q&&ee&&je){let it=Math.min(je/200,1),yt=ee(it);se=a.y.number(Q,B,yt),it<1?this._frameId||(this._frameId=!0):qe=!0}else se=B,qe=!0;return this._active=!0,qe&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!qe,zoomDelta:se-w.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(w){let B=a.b9;if(this._prevEase){let Q=this._prevEase,ee=(u.now()-Q.start)/Q.duration,se=Q.easing(ee+.01)-Q.easing(ee),qe=.27/Math.sqrt(se*se+1e-4)*.01,je=Math.sqrt(.0729-qe*qe);B=a.b8(qe,je,.25,1)}return this._prevEase={start:u.now(),duration:w,easing:B},B}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class fi{constructor(w,B){this._clickZoom=w,this._tapZoom=B}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class xi{constructor(w){this._tr=new _u(w),this.reset()}reset(){this._active=!1}dblclick(w,B){return w.preventDefault(),{cameraAnimation:Q=>{Q.easeTo({duration:300,zoom:this._tr.zoom+(w.shiftKey?-1:1),around:this._tr.unproject(B)},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fi{constructor(){this._tap=new Pf({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(w,B,Q){if(!this._swipePoint)if(this._tapTime){let ee=B[0],se=w.timeStamp-this._tapTime<500,qe=this._tapPoint.dist(ee)<30;se&&qe?Q.length>0&&(this._swipePoint=ee,this._swipeTouch=Q[0].identifier):this.reset()}else this._tap.touchstart(w,B,Q)}touchmove(w,B,Q){if(this._tapTime){if(this._swipePoint){if(Q[0].identifier!==this._swipeTouch)return;let ee=B[0],se=ee.y-this._swipePoint.y;return this._swipePoint=ee,w.preventDefault(),this._active=!0,{zoomDelta:se/128}}}else this._tap.touchmove(w,B,Q)}touchend(w,B,Q){if(this._tapTime)this._swipePoint&&Q.length===0&&this.reset();else{let ee=this._tap.touchend(w,B,Q);ee&&(this._tapTime=w.timeStamp,this._tapPoint=ee)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Xi{constructor(w,B,Q){this._el=w,this._mousePan=B,this._touchPan=Q}enable(w){this._inertiaOptions=w||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class hn{constructor(w,B,Q){this._pitchWithRotate=w.pitchWithRotate,this._mouseRotate=B,this._mousePitch=Q}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Ti{constructor(w,B,Q,ee){this._el=w,this._touchZoom=B,this._touchRotate=Q,this._tapDragZoom=ee,this._rotationDisabled=!1,this._enabled=!0}enable(w){this._touchZoom.enable(w),this._rotationDisabled||this._touchRotate.enable(w),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}class qi{constructor(w,B){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=w,this._options=B,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let w=this._map.getCanvasContainer();w.classList.add("maplibregl-cooperative-gestures"),this._container=c.create("div","maplibregl-cooperative-gesture-screen",w);let B=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(B=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let Q=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),ee=document.createElement("div");ee.className="maplibregl-desktop-message",ee.textContent=B,this._container.appendChild(ee);let se=document.createElement("div");se.className="maplibregl-mobile-message",se.textContent=Q,this._container.appendChild(se),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(c.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(w){return w[this._bypassKey]}notifyGestureBlocked(w,B){this._enabled&&(this._map.fire(new a.k("cooperativegestureprevented",{gestureType:w,originalEvent:B})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}let Ii=le=>le.zoom||le.drag||le.pitch||le.rotate;class mi extends a.k{}function Pn(le){return le.panDelta&&le.panDelta.mag()||le.zoomDelta||le.bearingDelta||le.pitchDelta}class Ma{constructor(w,B){this.handleWindowEvent=ee=>{this.handleEvent(ee,`${ee.type}Window`)},this.handleEvent=(ee,se)=>{if(ee.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let qe=ee.type==="renderFrame"?void 0:ee,je={needsRenderFrame:!1},it={},yt={},Ot=ee.touches,Nt=Ot?this._getMapTouches(Ot):void 0,hr=Nt?c.touchPos(this._map.getCanvas(),Nt):c.mousePos(this._map.getCanvas(),ee);for(let{handlerName:be,handler:Pe,allowed:Oe}of this._handlers){if(!Pe.isEnabled())continue;let Je;this._blockedByActive(yt,Oe,be)?Pe.reset():Pe[se||ee.type]&&(Je=Pe[se||ee.type](ee,hr,Nt),this.mergeHandlerResult(je,it,Je,be,qe),Je&&Je.needsRenderFrame&&this._triggerRenderFrame()),(Je||Pe.isActive())&&(yt[be]=Pe)}let Sr={};for(let be in this._previousActiveHandlers)yt[be]||(Sr[be]=qe);this._previousActiveHandlers=yt,(Object.keys(Sr).length||Pn(je))&&(this._changes.push([je,it,Sr]),this._triggerRenderFrame()),(Object.keys(yt).length||Pn(je))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:he}=je;he&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],he(this._map))},this._map=w,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Uf(w),this._bearingSnap=B.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(B);let Q=this._el;this._listeners=[[Q,"touchstart",{passive:!0}],[Q,"touchmove",{passive:!1}],[Q,"touchend",void 0],[Q,"touchcancel",void 0],[Q,"mousedown",void 0],[Q,"mousemove",void 0],[Q,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[Q,"mouseover",void 0],[Q,"mouseout",void 0],[Q,"dblclick",void 0],[Q,"click",void 0],[Q,"keydown",{capture:!1}],[Q,"keyup",void 0],[Q,"wheel",{passive:!1}],[Q,"contextmenu",void 0],[window,"blur",void 0]];for(let[ee,se,qe]of this._listeners)c.addEventListener(ee,se,ee===document?this.handleWindowEvent:this.handleEvent,qe)}destroy(){for(let[w,B,Q]of this._listeners)c.removeEventListener(w,B,w===document?this.handleWindowEvent:this.handleEvent,Q)}_addDefaultHandlers(w){let B=this._map,Q=B.getCanvasContainer();this._add("mapEvent",new sh(B,w));let ee=B.boxZoom=new xu(B,w);this._add("boxZoom",ee),w.interactive&&w.boxZoom&&ee.enable();let se=B.cooperativeGestures=new qi(B,w.cooperativeGestures);this._add("cooperativeGestures",se),w.cooperativeGestures&&se.enable();let qe=new Ic(B),je=new xi(B);B.doubleClickZoom=new fi(je,qe),this._add("tapZoom",qe),this._add("clickZoom",je),w.interactive&&w.doubleClickZoom&&B.doubleClickZoom.enable();let it=new Fi;this._add("tapDragZoom",it);let yt=B.touchPitch=new gf(B);this._add("touchPitch",yt),w.interactive&&w.touchPitch&&B.touchPitch.enable(w.touchPitch);let Ot=Rl(w),Nt=Ih(w);B.dragRotate=new hn(w,Ot,Nt),this._add("mouseRotate",Ot,["mousePitch"]),this._add("mousePitch",Nt,["mouseRotate"]),w.interactive&&w.dragRotate&&B.dragRotate.enable();let hr=(({enable:Je,clickTolerance:He})=>{let et=new pc({checkCorrectEvent:Mt=>c.mouseButton(Mt)===0&&!Mt.ctrlKey});return new ju({clickTolerance:He,move:(Mt,Dt)=>({around:Dt,panDelta:Dt.sub(Mt)}),activateOnStart:!0,moveStateManager:et,enable:Je,assignEvents:Ph})})(w),Sr=new Wu(w,B);B.dragPan=new Xi(Q,hr,Sr),this._add("mousePan",hr),this._add("touchPan",Sr,["touchZoom","touchRotate"]),w.interactive&&w.dragPan&&B.dragPan.enable(w.dragPan);let he=new Yc,be=new ru;B.touchZoomRotate=new Ti(Q,be,he,it),this._add("touchRotate",he,["touchPan","touchZoom"]),this._add("touchZoom",be,["touchPan","touchRotate"]),w.interactive&&w.touchZoomRotate&&B.touchZoomRotate.enable(w.touchZoomRotate);let Pe=B.scrollZoom=new Ur(B,()=>this._triggerRenderFrame());this._add("scrollZoom",Pe,["mousePan"]),w.interactive&&w.scrollZoom&&B.scrollZoom.enable(w.scrollZoom);let Oe=B.keyboard=new Bt(B);this._add("keyboard",Oe),w.interactive&&w.keyboard&&B.keyboard.enable(),this._add("blockableMapEvent",new Fs(B))}_add(w,B,Q){this._handlers.push({handlerName:w,handler:B,allowed:Q}),this._handlersById[w]=B}stop(w){if(!this._updatingCamera){for(let{handler:B}of this._handlers)B.reset();this._inertia.clear(),this._fireEvents({},{},w),this._changes=[]}}isActive(){for(let{handler:w}of this._handlers)if(w.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Ii(this._eventsInProgress)||this.isZooming()}_blockedByActive(w,B,Q){for(let ee in w)if(ee!==Q&&(!B||B.indexOf(ee)<0))return!0;return!1}_getMapTouches(w){let B=[];for(let Q of w)this._el.contains(Q.target)&&B.push(Q);return B}mergeHandlerResult(w,B,Q,ee,se){if(!Q)return;a.e(w,Q);let qe={handlerName:ee,originalEvent:Q.originalEvent||se};Q.zoomDelta!==void 0&&(B.zoom=qe),Q.panDelta!==void 0&&(B.drag=qe),Q.pitchDelta!==void 0&&(B.pitch=qe),Q.bearingDelta!==void 0&&(B.rotate=qe)}_applyChanges(){let w={},B={},Q={};for(let[ee,se,qe]of this._changes)ee.panDelta&&(w.panDelta=(w.panDelta||new a.P(0,0))._add(ee.panDelta)),ee.zoomDelta&&(w.zoomDelta=(w.zoomDelta||0)+ee.zoomDelta),ee.bearingDelta&&(w.bearingDelta=(w.bearingDelta||0)+ee.bearingDelta),ee.pitchDelta&&(w.pitchDelta=(w.pitchDelta||0)+ee.pitchDelta),ee.around!==void 0&&(w.around=ee.around),ee.pinchAround!==void 0&&(w.pinchAround=ee.pinchAround),ee.noInertia&&(w.noInertia=ee.noInertia),a.e(B,se),a.e(Q,qe);this._updateMapTransform(w,B,Q),this._changes=[]}_updateMapTransform(w,B,Q){let ee=this._map,se=ee._getTransformForUpdate(),qe=ee.terrain;if(!(Pn(w)||qe&&this._terrainMovement))return this._fireEvents(B,Q,!0);let{panDelta:je,zoomDelta:it,bearingDelta:yt,pitchDelta:Ot,around:Nt,pinchAround:hr}=w;hr!==void 0&&(Nt=hr),ee._stop(!0),Nt=Nt||ee.transform.centerPoint;let Sr=se.pointLocation(je?Nt.sub(je):Nt);yt&&(se.bearing+=yt),Ot&&(se.pitch+=Ot),it&&(se.zoom+=it),qe?this._terrainMovement||!B.drag&&!B.zoom?B.drag&&this._terrainMovement?se.center=se.pointLocation(se.centerPoint.sub(je)):se.setLocationAtPoint(Sr,Nt):(this._terrainMovement=!0,this._map._elevationFreeze=!0,se.setLocationAtPoint(Sr,Nt)):se.setLocationAtPoint(Sr,Nt),ee._applyUpdatedTransform(se),this._map._update(),w.noInertia||this._inertia.record(w),this._fireEvents(B,Q,!0)}_fireEvents(w,B,Q){let ee=Ii(this._eventsInProgress),se=Ii(w),qe={};for(let Nt in w){let{originalEvent:hr}=w[Nt];this._eventsInProgress[Nt]||(qe[`${Nt}start`]=hr),this._eventsInProgress[Nt]=w[Nt]}!ee&&se&&this._fireEvent("movestart",se.originalEvent);for(let Nt in qe)this._fireEvent(Nt,qe[Nt]);se&&this._fireEvent("move",se.originalEvent);for(let Nt in w){let{originalEvent:hr}=w[Nt];this._fireEvent(Nt,hr)}let je={},it;for(let Nt in this._eventsInProgress){let{handlerName:hr,originalEvent:Sr}=this._eventsInProgress[Nt];this._handlersById[hr].isActive()||(delete this._eventsInProgress[Nt],it=B[hr]||Sr,je[`${Nt}end`]=it)}for(let Nt in je)this._fireEvent(Nt,je[Nt]);let yt=Ii(this._eventsInProgress),Ot=(ee||se)&&!yt;if(Ot&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let Nt=this._map._getTransformForUpdate();Nt.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform(Nt)}if(Q&&Ot){this._updatingCamera=!0;let Nt=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),hr=Sr=>Sr!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new mi("renderFrame",{timeStamp:w})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Ta extends a.E{constructor(w,B){super(),this._renderFrameCallback=()=>{let Q=Math.min((u.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(Q)),Q<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=w,this._bearingSnap=B.bearingSnap,this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new a.N(this.transform.center.lng,this.transform.center.lat)}setCenter(w,B){return this.jumpTo({center:w},B)}panBy(w,B,Q){return w=a.P.convert(w).mult(-1),this.panTo(this.transform.center,a.e({offset:w},B),Q)}panTo(w,B,Q){return this.easeTo(a.e({center:w},B),Q)}getZoom(){return this.transform.zoom}setZoom(w,B){return this.jumpTo({zoom:w},B),this}zoomTo(w,B,Q){return this.easeTo(a.e({zoom:w},B),Q)}zoomIn(w,B){return this.zoomTo(this.getZoom()+1,w,B),this}zoomOut(w,B){return this.zoomTo(this.getZoom()-1,w,B),this}getBearing(){return this.transform.bearing}setBearing(w,B){return this.jumpTo({bearing:w},B),this}getPadding(){return this.transform.padding}setPadding(w,B){return this.jumpTo({padding:w},B),this}rotateTo(w,B,Q){return this.easeTo(a.e({bearing:w},B),Q)}resetNorth(w,B){return this.rotateTo(0,a.e({duration:1e3},w),B),this}resetNorthPitch(w,B){return this.easeTo(a.e({bearing:0,pitch:0,duration:1e3},w),B),this}snapToNorth(w,B){return Math.abs(this.getBearing()){if(this._zooming&&(ee.zoom=a.y.number(se,Pe,Ut)),this._rotating&&(ee.bearing=a.y.number(qe,yt,Ut)),this._pitching&&(ee.pitch=a.y.number(je,Ot,Ut)),this._padding&&(ee.interpolatePadding(it,Nt,Ut),Sr=ee.centerPoint.add(hr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Ut),et)ee.setLocationAtPoint(et,Mt);else{let tr=ee.zoomScale(ee.zoom-se),mr=Pe>se?Math.min(2,He):Math.max(.5,He),Rr=Math.pow(mr,1-Ut),zr=ee.unproject(Oe.add(Je.mult(Ut*Rr)).mult(tr));ee.setLocationAtPoint(ee.renderWorldCopies?zr.wrap():zr,Sr)}this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},Ut=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B,Ut)},w),this}_prepareEase(w,B,Q={}){this._moving=!0,B||Q.moving||this.fire(new a.k("movestart",w)),this._zooming&&!Q.zooming&&this.fire(new a.k("zoomstart",w)),this._rotating&&!Q.rotating&&this.fire(new a.k("rotatestart",w)),this._pitching&&!Q.pitching&&this.fire(new a.k("pitchstart",w))}_prepareElevation(w){this._elevationCenter=w,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(w,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(w){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let B=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(w<1&&B!==this._elevationTarget){let Q=this._elevationTarget-this._elevationStart;this._elevationStart+=w*(Q-(B-(Q*w+this._elevationStart))/(1-w)),this._elevationTarget=B}this.transform.elevation=a.y.number(this._elevationStart,this._elevationTarget,w)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(w){let B=w.getCameraPosition(),Q=this.terrain.getElevationForLngLatZoom(B.lngLat,w.zoom);if(B.altitudethis._elevateCameraIfInsideTerrain(ee)),this.transformCameraUpdate&&B.push(ee=>this.transformCameraUpdate(ee)),!B.length)return;let Q=w.clone();for(let ee of B){let se=Q.clone(),{center:qe,zoom:je,pitch:it,bearing:yt,elevation:Ot}=ee(se);qe&&(se.center=qe),je!==void 0&&(se.zoom=je),it!==void 0&&(se.pitch=it),yt!==void 0&&(se.bearing=yt),Ot!==void 0&&(se.elevation=Ot),Q.apply(se)}this.transform.apply(Q)}_fireMoveEvents(w){this.fire(new a.k("move",w)),this._zooming&&this.fire(new a.k("zoom",w)),this._rotating&&this.fire(new a.k("rotate",w)),this._pitching&&this.fire(new a.k("pitch",w))}_afterEase(w,B){if(this._easeId&&B&&this._easeId===B)return;delete this._easeId;let Q=this._zooming,ee=this._rotating,se=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,Q&&this.fire(new a.k("zoomend",w)),ee&&this.fire(new a.k("rotateend",w)),se&&this.fire(new a.k("pitchend",w)),this.fire(new a.k("moveend",w))}flyTo(w,B){var Q;if(!w.essential&&u.prefersReducedMotion){let Qi=a.M(w,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Qi,B)}this.stop(),w=a.e({offset:[0,0],speed:1.2,curve:1.42,easing:a.b9},w);let ee=this._getTransformForUpdate(),se=ee.zoom,qe=ee.bearing,je=ee.pitch,it=ee.padding,yt="bearing"in w?this._normalizeBearing(w.bearing,qe):qe,Ot="pitch"in w?+w.pitch:je,Nt="padding"in w?w.padding:ee.padding,hr=a.P.convert(w.offset),Sr=ee.centerPoint.add(hr),he=ee.pointLocation(Sr),{center:be,zoom:Pe}=ee.getConstrained(a.N.convert(w.center||he),(Q=w.zoom)!==null&&Q!==void 0?Q:se);this._normalizeCenter(be,ee);let Oe=ee.zoomScale(Pe-se),Je=ee.project(he),He=ee.project(be).sub(Je),et=w.curve,Mt=Math.max(ee.width,ee.height),Dt=Mt/Oe,Ut=He.mag();if("minZoom"in w){let Qi=a.ac(Math.min(w.minZoom,se,Pe),ee.minZoom,ee.maxZoom),Mn=Mt/ee.zoomScale(Qi-se);et=Math.sqrt(Mn/Ut*2)}let tr=et*et;function mr(Qi){let Mn=(Dt*Dt-Mt*Mt+(Qi?-1:1)*tr*tr*Ut*Ut)/(2*(Qi?Dt:Mt)*tr*Ut);return Math.log(Math.sqrt(Mn*Mn+1)-Mn)}function Rr(Qi){return(Math.exp(Qi)-Math.exp(-Qi))/2}function zr(Qi){return(Math.exp(Qi)+Math.exp(-Qi))/2}let Xr=mr(!1),di=function(Qi){return zr(Xr)/zr(Xr+et*Qi)},Li=function(Qi){return Mt*((zr(Xr)*(Rr(Mn=Xr+et*Qi)/zr(Mn))-Rr(Xr))/tr)/Ut;var Mn},Ci=(mr(!0)-Xr)/et;if(Math.abs(Ut)<1e-6||!isFinite(Ci)){if(Math.abs(Mt-Dt)<1e-6)return this.easeTo(w,B);let Qi=Dt0,di=Mn=>Math.exp(Qi*et*Mn)}return w.duration="duration"in w?+w.duration:1e3*Ci/("screenSpeed"in w?+w.screenSpeed/et:+w.speed),w.maxDuration&&w.duration>w.maxDuration&&(w.duration=0),this._zooming=!0,this._rotating=qe!==yt,this._pitching=Ot!==je,this._padding=!ee.isPaddingEqual(Nt),this._prepareEase(B,!1),this.terrain&&this._prepareElevation(be),this._ease(Qi=>{let Mn=Qi*Ci,pa=1/di(Mn);ee.zoom=Qi===1?Pe:se+ee.scaleZoom(pa),this._rotating&&(ee.bearing=a.y.number(qe,yt,Qi)),this._pitching&&(ee.pitch=a.y.number(je,Ot,Qi)),this._padding&&(ee.interpolatePadding(it,Nt,Qi),Sr=ee.centerPoint.add(hr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Qi);let ea=Qi===1?be:ee.unproject(Je.add(He.mult(Li(Mn))).mult(pa));ee.setLocationAtPoint(ee.renderWorldCopies?ea.wrap():ea,Sr),this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},()=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B)},w),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(w,B){var Q;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let ee=this._onEaseEnd;delete this._onEaseEnd,ee.call(this,B)}return w||(Q=this.handlers)===null||Q===void 0||Q.stop(!1),this}_ease(w,B,Q){Q.animate===!1||Q.duration===0?(w(1),B()):(this._easeStart=u.now(),this._easeOptions=Q,this._onEaseFrame=w,this._onEaseEnd=B,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(w,B){w=a.b3(w,-180,180);let Q=Math.abs(w-B);return Math.abs(w-360-B)180?-360:Q<-180?360:0}queryTerrainElevation(w){return this.terrain?this.terrain.getElevationForLngLatZoom(a.N.convert(w),this.transform.tileZoom)-this.transform.elevation:null}}let Ea={compact:!0,customAttribution:'MapLibre'};class qa{constructor(w=Ea){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=B=>{!B||B.sourceDataType!=="metadata"&&B.sourceDataType!=="visibility"&&B.dataType!=="style"&&B.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=w}getDefaultPosition(){return"bottom-right"}onAdd(w){return this._map=w,this._compact=this.options.compact,this._container=c.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=c.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=c.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(w,B){let Q=this._map._getUIString(`AttributionControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)}_updateAttributions(){if(!this._map.style)return;let w=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?w=w.concat(this.options.customAttribution.map(ee=>typeof ee!="string"?"":ee)):typeof this.options.customAttribution=="string"&&w.push(this.options.customAttribution)),this._map.style.stylesheet){let ee=this._map.style.stylesheet;this.styleOwner=ee.owner,this.styleId=ee.id}let B=this._map.style.sourceCaches;for(let ee in B){let se=B[ee];if(se.used||se.usedForTerrain){let qe=se.getSource();qe.attribution&&w.indexOf(qe.attribution)<0&&w.push(qe.attribution)}}w=w.filter(ee=>String(ee).trim()),w.sort((ee,se)=>ee.length-se.length),w=w.filter((ee,se)=>{for(let qe=se+1;qe=0)return!1;return!0});let Q=w.join(" | ");Q!==this._attribHTML&&(this._attribHTML=Q,w.length?(this._innerContainer.innerHTML=Q,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Cn{constructor(w={}){this._updateCompact=()=>{let B=this._container.children;if(B.length){let Q=B[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&Q.classList.add("maplibregl-compact"):Q.classList.remove("maplibregl-compact")}},this.options=w}getDefaultPosition(){return"bottom-left"}onAdd(w){this._map=w,this._compact=this.options&&this.options.compact,this._container=c.create("div","maplibregl-ctrl");let B=c.create("a","maplibregl-ctrl-logo");return B.target="_blank",B.rel="noopener nofollow",B.href="https://maplibre.org/",B.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),B.setAttribute("rel","noopener nofollow"),this._container.appendChild(B),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class sn{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(w){let B=++this._id;return this._queue.push({callback:w,id:B,cancelled:!1}),B}remove(w){let B=this._currentlyRunning,Q=B?this._queue.concat(B):this._queue;for(let ee of Q)if(ee.id===w)return void(ee.cancelled=!0)}run(w=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let B=this._currentlyRunning=this._queue;this._queue=[];for(let Q of B)if(!Q.cancelled&&(Q.callback(w),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var Ua=a.Y([{name:"a_pos3d",type:"Int16",components:3}]);class mo extends a.E{constructor(w){super(),this.sourceCache=w,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,w.usedForTerrain=!0,w.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(w,B){this.sourceCache.update(w,B),this._renderableTilesKeys=[];let Q={};for(let ee of w.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:B}))Q[ee.key]=!0,this._renderableTilesKeys.push(ee.key),this._tiles[ee.key]||(ee.posMatrix=new Float64Array(16),a.aP(ee.posMatrix,0,a.X,0,a.X,0,1),this._tiles[ee.key]=new Lt(ee,this.tileSize));for(let ee in this._tiles)Q[ee]||delete this._tiles[ee]}freeRtt(w){for(let B in this._tiles){let Q=this._tiles[B];(!w||Q.tileID.equals(w)||Q.tileID.isChildOf(w)||w.isChildOf(Q.tileID))&&(Q.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(w=>this.getTileByID(w))}getTileByID(w){return this._tiles[w]}getTerrainCoords(w){let B={};for(let Q of this._renderableTilesKeys){let ee=this._tiles[Q].tileID;if(ee.canonical.equals(w.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16),a.aP(se.posMatrix,0,a.X,0,a.X,0,1),B[Q]=se}else if(ee.canonical.isChildOf(w.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16);let qe=ee.canonical.z-w.canonical.z,je=ee.canonical.x-(ee.canonical.x>>qe<>qe<>qe;a.aP(se.posMatrix,0,yt,0,yt,0,1),a.J(se.posMatrix,se.posMatrix,[-je*yt,-it*yt,0]),B[Q]=se}else if(w.canonical.isChildOf(ee.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16);let qe=w.canonical.z-ee.canonical.z,je=w.canonical.x-(w.canonical.x>>qe<>qe<>qe;a.aP(se.posMatrix,0,a.X,0,a.X,0,1),a.J(se.posMatrix,se.posMatrix,[je*yt,it*yt,0]),a.K(se.posMatrix,se.posMatrix,[1/2**qe,1/2**qe,0]),B[Q]=se}}return B}getSourceTile(w,B){let Q=this.sourceCache._source,ee=w.overscaledZ-this.deltaZoom;if(ee>Q.maxzoom&&(ee=Q.maxzoom),ee=Q.minzoom&&(!se||!se.dem);)se=this.sourceCache.getTileByID(w.scaledTo(ee--).key);return se}tilesAfterTime(w=Date.now()){return Object.values(this._tiles).filter(B=>B.timeAdded>=w)}}class Xo{constructor(w,B,Q){this.painter=w,this.sourceCache=new mo(B),this.options=Q,this.exaggeration=typeof Q.exaggeration=="number"?Q.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(w,B,Q,ee=a.X){var se;if(!(B>=0&&B=0&&Qw.canonical.z&&(w.canonical.z>=ee?se=w.canonical.z-ee:a.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let qe=w.canonical.x-(w.canonical.x>>se<>se<>8<<4|se>>8,B[qe+3]=0;let Q=new a.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(B.buffer)),ee=new p(w,Q,w.gl.RGBA,{premultiply:!1});return ee.bind(w.gl.NEAREST,w.gl.CLAMP_TO_EDGE),this._coordsTexture=ee,ee}pointCoordinate(w){this.painter.maybeDrawDepthAndCoords(!0);let B=new Uint8Array(4),Q=this.painter.context,ee=Q.gl,se=Math.round(w.x*this.painter.pixelRatio/devicePixelRatio),qe=Math.round(w.y*this.painter.pixelRatio/devicePixelRatio),je=Math.round(this.painter.height/devicePixelRatio);Q.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),ee.readPixels(se,je-qe-1,1,1,ee.RGBA,ee.UNSIGNED_BYTE,B),Q.bindFramebuffer.set(null);let it=B[0]+(B[2]>>4<<8),yt=B[1]+((15&B[2])<<8),Ot=this.coordsIndex[255-B[3]],Nt=Ot&&this.sourceCache.getTileByID(Ot);if(!Nt)return null;let hr=this._coordsTextureSize,Sr=(1<w.id!==B),this._recentlyUsed.push(w.id)}stampObject(w){w.stamp=++this._stamp}getOrCreateFreeObject(){for(let B of this._recentlyUsed)if(!this._objects[B].inUse)return this._objects[B];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let w=this._createObject(this._objects.length);return this._objects.push(w),w}freeObject(w){w.inUse=!1}freeAllObjects(){for(let w of this._objects)this.freeObject(w)}isFull(){return!(this._objects.length!w.inUse)===!1}}let Qo={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ys{constructor(w,B){this.painter=w,this.terrain=B,this.pool=new Ts(w.context,30,B.sourceCache.tileSize*B.qualityFactor)}destruct(){this.pool.destruct()}getTexture(w){return this.pool.getObjectForId(w.rtt[this._stacks.length-1].id).texture}prepareForRender(w,B){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=w._order.filter(Q=>!w._layers[Q].isHidden(B)),this._coordsDescendingInv={};for(let Q in w.sourceCaches){this._coordsDescendingInv[Q]={};let ee=w.sourceCaches[Q].getVisibleCoordinates();for(let se of ee){let qe=this.terrain.sourceCache.getTerrainCoords(se);for(let je in qe)this._coordsDescendingInv[Q][je]||(this._coordsDescendingInv[Q][je]=[]),this._coordsDescendingInv[Q][je].push(qe[je])}}this._coordsDescendingInvStr={};for(let Q of w._order){let ee=w._layers[Q],se=ee.source;if(Qo[ee.type]&&!this._coordsDescendingInvStr[se]){this._coordsDescendingInvStr[se]={};for(let qe in this._coordsDescendingInv[se])this._coordsDescendingInvStr[se][qe]=this._coordsDescendingInv[se][qe].map(je=>je.key).sort().join()}}for(let Q of this._renderableTiles)for(let ee in this._coordsDescendingInvStr){let se=this._coordsDescendingInvStr[ee][Q.tileID.key];se&&se!==Q.rttCoords[ee]&&(Q.rtt=[])}}renderLayer(w){if(w.isHidden(this.painter.transform.zoom))return!1;let B=w.type,Q=this.painter,ee=this._renderableLayerIds[this._renderableLayerIds.length-1]===w.id;if(Qo[B]&&(this._prevType&&Qo[this._prevType]||this._stacks.push([]),this._prevType=B,this._stacks[this._stacks.length-1].push(w.id),!ee))return!0;if(Qo[this._prevType]||Qo[B]&&ee){this._prevType=B;let se=this._stacks.length-1,qe=this._stacks[se]||[];for(let je of this._renderableTiles){if(this.pool.isFull()&&(eu(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(je),je.rtt[se]){let yt=this.pool.getObjectForId(je.rtt[se].id);if(yt.stamp===je.rtt[se].stamp){this.pool.useObject(yt);continue}}let it=this.pool.getOrCreateFreeObject();this.pool.useObject(it),this.pool.stampObject(it),je.rtt[se]={id:it.id,stamp:it.stamp},Q.context.bindFramebuffer.set(it.fbo.framebuffer),Q.context.clear({color:a.aM.transparent,stencil:0}),Q.currentStencilSource=void 0;for(let yt=0;yt{le.touchstart=le.dragStart,le.touchmoveWindow=le.dragMove,le.touchend=le.dragEnd},ia={showCompass:!0,showZoom:!0,visualizePitch:!1};class Ka{constructor(w,B,Q=!1){this.mousedown=qe=>{this.startMouse(a.e({},qe,{ctrlKey:!0,preventDefault:()=>qe.preventDefault()}),c.mousePos(this.element,qe)),c.addEventListener(window,"mousemove",this.mousemove),c.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=qe=>{this.moveMouse(qe,c.mousePos(this.element,qe))},this.mouseup=qe=>{this.mouseRotate.dragEnd(qe),this.mousePitch&&this.mousePitch.dragEnd(qe),this.offTemp()},this.touchstart=qe=>{qe.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,qe.targetTouches)[0],this.startTouch(qe,this._startPos),c.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.addEventListener(window,"touchend",this.touchend))},this.touchmove=qe=>{qe.targetTouches.length!==1?this.reset():(this._lastPos=c.touchPos(this.element,qe.targetTouches)[0],this.moveTouch(qe,this._lastPos))},this.touchend=qe=>{qe.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let ee=w.dragRotate._mouseRotate.getClickTolerance(),se=w.dragRotate._mousePitch.getClickTolerance();this.element=B,this.mouseRotate=Rl({clickTolerance:ee,enable:!0}),this.touchRotate=(({enable:qe,clickTolerance:je,bearingDegreesPerPixelMoved:it=.8})=>{let yt=new pf;return new ju({clickTolerance:je,move:(Ot,Nt)=>({bearingDelta:(Nt.x-Ot.x)*it}),moveStateManager:yt,enable:qe,assignEvents:Rs})})({clickTolerance:ee,enable:!0}),this.map=w,Q&&(this.mousePitch=Ih({clickTolerance:se,enable:!0}),this.touchPitch=(({enable:qe,clickTolerance:je,pitchDegreesPerPixelMoved:it=-.5})=>{let yt=new pf;return new ju({clickTolerance:je,move:(Ot,Nt)=>({pitchDelta:(Nt.y-Ot.y)*it}),moveStateManager:yt,enable:qe,assignEvents:Rs})})({clickTolerance:se,enable:!0})),c.addEventListener(B,"mousedown",this.mousedown),c.addEventListener(B,"touchstart",this.touchstart,{passive:!1}),c.addEventListener(B,"touchcancel",this.reset)}startMouse(w,B){this.mouseRotate.dragStart(w,B),this.mousePitch&&this.mousePitch.dragStart(w,B),c.disableDrag()}startTouch(w,B){this.touchRotate.dragStart(w,B),this.touchPitch&&this.touchPitch.dragStart(w,B),c.disableDrag()}moveMouse(w,B){let Q=this.map,{bearingDelta:ee}=this.mouseRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.mousePitch){let{pitchDelta:se}=this.mousePitch.dragMove(w,B)||{};se&&Q.setPitch(Q.getPitch()+se)}}moveTouch(w,B){let Q=this.map,{bearingDelta:ee}=this.touchRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.touchPitch){let{pitchDelta:se}=this.touchPitch.dragMove(w,B)||{};se&&Q.setPitch(Q.getPitch()+se)}}off(){let w=this.element;c.removeEventListener(w,"mousedown",this.mousedown),c.removeEventListener(w,"touchstart",this.touchstart,{passive:!1}),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend),c.removeEventListener(w,"touchcancel",this.reset),this.offTemp()}offTemp(){c.enableDrag(),c.removeEventListener(window,"mousemove",this.mousemove),c.removeEventListener(window,"mouseup",this.mouseup),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend)}}let vs;function Ko(le,w,B){let Q=new a.N(le.lng,le.lat);if(le=new a.N(le.lng,le.lat),w){let ee=new a.N(le.lng-360,le.lat),se=new a.N(le.lng+360,le.lat),qe=B.locationPoint(le).distSqr(w);B.locationPoint(ee).distSqr(w)180;){let ee=B.locationPoint(le);if(ee.x>=0&&ee.y>=0&&ee.x<=B.width&&ee.y<=B.height)break;le.lng>B.center.lng?le.lng-=360:le.lng+=360}return le.lng!==Q.lng&&B.locationPoint(le).y>B.height/2-B.getHorizon()?le:Q}let iu={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ru(le,w,B){let Q=le.classList;for(let ee in iu)Q.remove(`maplibregl-${B}-anchor-${ee}`);Q.add(`maplibregl-${B}-anchor-${w}`)}class ac extends a.E{constructor(w){if(super(),this._onKeyPress=B=>{let Q=B.code,ee=B.charCode||B.keyCode;Q!=="Space"&&Q!=="Enter"&&ee!==32&&ee!==13||this.togglePopup()},this._onMapClick=B=>{let Q=B.originalEvent.target,ee=this._element;this._popup&&(Q===ee||ee.contains(Q))&&this.togglePopup()},this._update=B=>{var Q;if(!this._map)return;let ee=this._map.loaded()&&!this._map.isMoving();((B==null?void 0:B.type)==="terrain"||(B==null?void 0:B.type)==="render"&&!ee)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?Ko(this._lngLat,this._flatPos,this._map.transform):(Q=this._lngLat)===null||Q===void 0?void 0:Q.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let se="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?se=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(se=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let qe="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?qe="rotateX(0deg)":this._pitchAlignment==="map"&&(qe=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||B&&B.type!=="moveend"||(this._pos=this._pos.round()),c.setTransform(this._element,`${iu[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${qe} ${se}`),u.frameAsync(new AbortController).then(()=>{this._updateOpacity(B&&B.type==="moveend")}).catch(()=>{})},this._onMove=B=>{if(!this._isDragging){let Q=this._clickTolerance||this._map._clickTolerance;this._isDragging=B.point.dist(this._pointerdownPos)>=Q}this._isDragging&&(this._pos=B.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new a.k("dragstart"))),this.fire(new a.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new a.k("dragend")),this._state="inactive"},this._addDragHandler=B=>{this._element.contains(B.originalEvent.target)&&(B.preventDefault(),this._positionDelta=B.point.sub(this._pos).add(this._offset),this._pointerdownPos=B.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=w&&w.anchor||"center",this._color=w&&w.color||"#3FB1CE",this._scale=w&&w.scale||1,this._draggable=w&&w.draggable||!1,this._clickTolerance=w&&w.clickTolerance||0,this._subpixelPositioning=w&&w.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=w&&w.rotation||0,this._rotationAlignment=w&&w.rotationAlignment||"auto",this._pitchAlignment=w&&w.pitchAlignment&&w.pitchAlignment!=="auto"?w.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(w==null?void 0:w.opacity,w==null?void 0:w.opacityWhenCovered),w&&w.element)this._element=w.element,this._offset=a.P.convert(w&&w.offset||[0,0]);else{this._defaultMarker=!0,this._element=c.create("div");let B=c.createNS("http://www.w3.org/2000/svg","svg"),Q=41,ee=27;B.setAttributeNS(null,"display","block"),B.setAttributeNS(null,"height",`${Q}px`),B.setAttributeNS(null,"width",`${ee}px`),B.setAttributeNS(null,"viewBox",`0 0 ${ee} ${Q}`);let se=c.createNS("http://www.w3.org/2000/svg","g");se.setAttributeNS(null,"stroke","none"),se.setAttributeNS(null,"stroke-width","1"),se.setAttributeNS(null,"fill","none"),se.setAttributeNS(null,"fill-rule","evenodd");let qe=c.createNS("http://www.w3.org/2000/svg","g");qe.setAttributeNS(null,"fill-rule","nonzero");let je=c.createNS("http://www.w3.org/2000/svg","g");je.setAttributeNS(null,"transform","translate(3.0, 29.0)"),je.setAttributeNS(null,"fill","#000000");let it=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let Oe of it){let Je=c.createNS("http://www.w3.org/2000/svg","ellipse");Je.setAttributeNS(null,"opacity","0.04"),Je.setAttributeNS(null,"cx","10.5"),Je.setAttributeNS(null,"cy","5.80029008"),Je.setAttributeNS(null,"rx",Oe.rx),Je.setAttributeNS(null,"ry",Oe.ry),je.appendChild(Je)}let yt=c.createNS("http://www.w3.org/2000/svg","g");yt.setAttributeNS(null,"fill",this._color);let Ot=c.createNS("http://www.w3.org/2000/svg","path");Ot.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),yt.appendChild(Ot);let Nt=c.createNS("http://www.w3.org/2000/svg","g");Nt.setAttributeNS(null,"opacity","0.25"),Nt.setAttributeNS(null,"fill","#000000");let hr=c.createNS("http://www.w3.org/2000/svg","path");hr.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),Nt.appendChild(hr);let Sr=c.createNS("http://www.w3.org/2000/svg","g");Sr.setAttributeNS(null,"transform","translate(6.0, 7.0)"),Sr.setAttributeNS(null,"fill","#FFFFFF");let he=c.createNS("http://www.w3.org/2000/svg","g");he.setAttributeNS(null,"transform","translate(8.0, 8.0)");let be=c.createNS("http://www.w3.org/2000/svg","circle");be.setAttributeNS(null,"fill","#000000"),be.setAttributeNS(null,"opacity","0.25"),be.setAttributeNS(null,"cx","5.5"),be.setAttributeNS(null,"cy","5.5"),be.setAttributeNS(null,"r","5.4999962");let Pe=c.createNS("http://www.w3.org/2000/svg","circle");Pe.setAttributeNS(null,"fill","#FFFFFF"),Pe.setAttributeNS(null,"cx","5.5"),Pe.setAttributeNS(null,"cy","5.5"),Pe.setAttributeNS(null,"r","5.4999962"),he.appendChild(be),he.appendChild(Pe),qe.appendChild(je),qe.appendChild(yt),qe.appendChild(Nt),qe.appendChild(Sr),qe.appendChild(he),B.appendChild(qe),B.setAttributeNS(null,"height",Q*this._scale+"px"),B.setAttributeNS(null,"width",ee*this._scale+"px"),this._element.appendChild(B),this._offset=a.P.convert(w&&w.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",B=>{B.preventDefault()}),this._element.addEventListener("mousedown",B=>{B.preventDefault()}),Ru(this._element,this._anchor,"marker"),w&&w.className)for(let B of w.className.split(" "))this._element.classList.add(B);this._popup=null}addTo(w){return this.remove(),this._map=w,this._element.setAttribute("aria-label",w._getUIString("Marker.Title")),w.getCanvasContainer().appendChild(this._element),w.on("move",this._update),w.on("moveend",this._update),w.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(w){return this._lngLat=a.N.convert(w),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(w){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),w){if(!("offset"in w.options)){let ee=Math.abs(13.5)/Math.SQRT2;w.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[ee,-1*(38.1-13.5+ee)],"bottom-right":[-ee,-1*(38.1-13.5+ee)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=w,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(w){return this._subpixelPositioning=w,this}getPopup(){return this._popup}togglePopup(){let w=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:w?(w.isOpen()?w.remove():(w.setLngLat(this._lngLat),w.addTo(this._map)),this):this}_updateOpacity(w=!1){var B,Q;if(!(!((B=this._map)===null||B===void 0)&&B.terrain))return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(w)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}let ee=this._map,se=ee.terrain.depthAtPoint(this._pos),qe=ee.terrain.getElevationForLngLatZoom(this._lngLat,ee.transform.tileZoom);if(ee.transform.lngLatToCameraDepth(this._lngLat,qe)-se<.006)return void(this._element.style.opacity=this._opacity);let je=-this._offset.y/ee.transform._pixelPerMeter,it=Math.sin(ee.getPitch()*Math.PI/180)*je,yt=ee.terrain.depthAtPoint(new a.P(this._pos.x,this._pos.y-this._offset.y)),Ot=ee.transform.lngLatToCameraDepth(this._lngLat,qe+it)-yt>.006;!((Q=this._popup)===null||Q===void 0)&&Q.isOpen()&&Ot&&this._popup.remove(),this._element.style.opacity=Ot?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(w){return this._offset=a.P.convert(w),this._update(),this}addClassName(w){this._element.classList.add(w)}removeClassName(w){this._element.classList.remove(w)}toggleClassName(w){return this._element.classList.toggle(w)}setDraggable(w){return this._draggable=!!w,this._map&&(w?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(w){return this._rotation=w||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(w){return this._rotationAlignment=w||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(w){return this._pitchAlignment=w&&w!=="auto"?w:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(w,B){return w===void 0&&B===void 0&&(this._opacity="1",this._opacityWhenCovered="0.2"),w!==void 0&&(this._opacity=w),B!==void 0&&(this._opacityWhenCovered=B),this._map&&this._updateOpacity(!0),this}}let mf={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},bu=0,Kc=!1,Du={maxWidth:100,unit:"metric"};function Dc(le,w,B){let Q=B&&B.maxWidth||100,ee=le._container.clientHeight/2,se=le.unproject([0,ee]),qe=le.unproject([Q,ee]),je=se.distanceTo(qe);if(B&&B.unit==="imperial"){let it=3.2808*je;it>5280?Da(w,Q,it/5280,le._getUIString("ScaleControl.Miles")):Da(w,Q,it,le._getUIString("ScaleControl.Feet"))}else B&&B.unit==="nautical"?Da(w,Q,je/1852,le._getUIString("ScaleControl.NauticalMiles")):je>=1e3?Da(w,Q,je/1e3,le._getUIString("ScaleControl.Kilometers")):Da(w,Q,je,le._getUIString("ScaleControl.Meters"))}function Da(le,w,B,Q){let ee=function(se){let qe=Math.pow(10,`${Math.floor(se)}`.length-1),je=se/qe;return je=je>=10?10:je>=5?5:je>=3?3:je>=2?2:je>=1?1:function(it){let yt=Math.pow(10,Math.ceil(-Math.log(it)/Math.LN10));return Math.round(it*yt)/yt}(je),qe*je}(B);le.style.width=w*(ee/B)+"px",le.innerHTML=`${ee} ${Q}`}let eo={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},Jc=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function yc(le){if(le){if(typeof le=="number"){let w=Math.round(Math.abs(le)/Math.SQRT2);return{center:new a.P(0,0),top:new a.P(0,le),"top-left":new a.P(w,w),"top-right":new a.P(-w,w),bottom:new a.P(0,-le),"bottom-left":new a.P(w,-w),"bottom-right":new a.P(-w,-w),left:new a.P(le,0),right:new a.P(-le,0)}}if(le instanceof a.P||Array.isArray(le)){let w=a.P.convert(le);return{center:w,top:w,"top-left":w,"top-right":w,bottom:w,"bottom-left":w,"bottom-right":w,left:w,right:w}}return{center:a.P.convert(le.center||[0,0]),top:a.P.convert(le.top||[0,0]),"top-left":a.P.convert(le["top-left"]||[0,0]),"top-right":a.P.convert(le["top-right"]||[0,0]),bottom:a.P.convert(le.bottom||[0,0]),"bottom-left":a.P.convert(le["bottom-left"]||[0,0]),"bottom-right":a.P.convert(le["bottom-right"]||[0,0]),left:a.P.convert(le.left||[0,0]),right:a.P.convert(le.right||[0,0])}}return yc(new a.P(0,0))}let _c=o;i.AJAXError=a.bh,i.Evented=a.E,i.LngLat=a.N,i.MercatorCoordinate=a.Z,i.Point=a.P,i.addProtocol=a.bi,i.config=a.a,i.removeProtocol=a.bj,i.AttributionControl=qa,i.BoxZoomHandler=xu,i.CanvasSource=Ct,i.CooperativeGesturesHandler=qi,i.DoubleClickZoomHandler=fi,i.DragPanHandler=Xi,i.DragRotateHandler=hn,i.EdgeInsets=ic,i.FullscreenControl=class extends a.E{constructor(le={}){super(),this._onFullscreenChange=()=>{var w;let B=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;!((w=B==null?void 0:B.shadowRoot)===null||w===void 0)&&w.fullscreenElement;)B=B.shadowRoot.fullscreenElement;B===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,le&&le.container&&(le.container instanceof HTMLElement?this._container=le.container:a.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(le){return this._map=le,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let le=this._fullscreenButton=c.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);c.create("span","maplibregl-ctrl-icon",le).setAttribute("aria-hidden","true"),le.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let le=this._getTitle();this._fullscreenButton.setAttribute("aria-label",le),this._fullscreenButton.title=le}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new a.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new a.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},i.GeoJSONSource=rt,i.GeolocateControl=class extends a.E{constructor(le){super(),this._onSuccess=w=>{if(this._map){if(this._isOutOfMapMaxBounds(w))return this._setErrorState(),this.fire(new a.k("outofmaxbounds",w)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=w,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(w),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(w),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new a.k("geolocate",w)),this._finish()}},this._updateCamera=w=>{let B=new a.N(w.coords.longitude,w.coords.latitude),Q=w.coords.accuracy,ee=this._map.getBearing(),se=a.e({bearing:ee},this.options.fitBoundsOptions),qe=ce.fromLngLat(B,Q);this._map.fitBounds(qe,se,{geolocateSource:!0})},this._updateMarker=w=>{if(w){let B=new a.N(w.coords.longitude,w.coords.latitude);this._accuracyCircleMarker.setLngLat(B).addTo(this._map),this._userLocationDotMarker.setLngLat(B).addTo(this._map),this._accuracy=w.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=w=>{if(this._map){if(this.options.trackUserLocation)if(w.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(w.code===3&&Kc)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new a.k("error",w)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",w=>w.preventDefault()),this._geolocateButton=c.create("button","maplibregl-ctrl-geolocate",this._container),c.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=w=>{if(this._map){if(w===!1){a.w("Geolocation support is not available so the GeolocateControl will be disabled.");let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}else{let B=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=c.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new ac({element:this._dotElement}),this._circleElement=c.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new ac({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",B=>{B.geolocateSource||this._watchState!=="ACTIVE_LOCK"||B.originalEvent&&B.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new a.k("trackuserlocationend")),this.fire(new a.k("userlocationlostfocus")))})}},this.options=a.e({},mf,le)}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return a._(this,arguments,void 0,function*(w=!1){if(vs!==void 0&&!w)return vs;if(window.navigator.permissions===void 0)return vs=!!window.navigator.geolocation,vs;try{vs=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch(B){vs=!!window.navigator.geolocation}return vs})}().then(w=>this._finishSetupUI(w)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,bu=0,Kc=!1}_isOutOfMapMaxBounds(le){let w=this._map.getMaxBounds(),B=le.coords;return w&&(B.longitudew.getEast()||B.latitudew.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let le=this._map.getBounds(),w=le.getSouthEast(),B=le.getNorthEast(),Q=w.distanceTo(B),ee=Math.ceil(this._accuracy/(Q/this._map._container.clientHeight)*2);this._circleElement.style.width=`${ee}px`,this._circleElement.style.height=`${ee}px`}trigger(){if(!this._setup)return a.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new a.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":bu--,Kc=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new a.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new a.k("trackuserlocationstart")),this.fire(new a.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let le;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),bu++,bu>1?(le={maximumAge:6e5,timeout:0},Kc=!0):(le=this.options.positionOptions,Kc=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,le)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},i.Hash=gd,i.ImageSource=Rt,i.KeyboardHandler=Bt,i.LngLatBounds=ce,i.LogoControl=Cn,i.Map=class extends Ta{constructor(le){a.bf.mark(a.bg.create);let w=Object.assign(Object.assign({},Gs),le);if(w.minZoom!=null&&w.maxZoom!=null&&w.minZoom>w.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(w.minPitch!=null&&w.maxPitch!=null&&w.minPitch>w.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(w.minPitch!=null&&w.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(w.maxPitch!=null&&w.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new Qs(w.minZoom,w.maxZoom,w.minPitch,w.maxPitch,w.renderWorldCopies),{bearingSnap:w.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new sn,this._controls=[],this._mapId=a.a4(),this._contextLost=B=>{B.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new a.k("webglcontextlost",{originalEvent:B}))},this._contextRestored=B=>{this._setupPainter(),this.resize(),this._update(),this.fire(new a.k("webglcontextrestored",{originalEvent:B}))},this._onMapScroll=B=>{if(B.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=w.interactive,this._maxTileCacheSize=w.maxTileCacheSize,this._maxTileCacheZoomLevels=w.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=w.failIfMajorPerformanceCaveat===!0,this._preserveDrawingBuffer=w.preserveDrawingBuffer===!0,this._antialias=w.antialias===!0,this._trackResize=w.trackResize===!0,this._bearingSnap=w.bearingSnap,this._refreshExpiredTiles=w.refreshExpiredTiles===!0,this._fadeDuration=w.fadeDuration,this._crossSourceCollisions=w.crossSourceCollisions===!0,this._collectResourceTiming=w.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},Bo),w.locale),this._clickTolerance=w.clickTolerance,this._overridePixelRatio=w.pixelRatio,this._maxCanvasSize=w.maxCanvasSize,this.transformCameraUpdate=w.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=w.cancelPendingTileRequestsWhileZooming===!0,this._imageQueueHandle=g.addThrottleControl(()=>this.isMoving()),this._requestManager=new E(w.transformRequest),typeof w.container=="string"){if(this._container=document.getElementById(w.container),!this._container)throw new Error(`Container '${w.container}' not found.`)}else{if(!(w.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=w.container}if(w.maxBounds&&this.setMaxBounds(w.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)).on("moveend",()=>this._update(!1)).on("zoom",()=>this._update(!0)).on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}).once("idle",()=>{this._idleTriggered=!0}),typeof window!="undefined"){addEventListener("online",this._onWindowOnline,!1);let B=!1,Q=Qh(ee=>{this._trackResize&&!this._removed&&(this.resize(ee),this.redraw())},50);this._resizeObserver=new ResizeObserver(ee=>{B?Q(ee):B=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Ma(this,w),this._hash=w.hash&&new gd(typeof w.hash=="string"&&w.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:w.center,zoom:w.zoom,bearing:w.bearing,pitch:w.pitch}),w.bounds&&(this.resize(),this.fitBounds(w.bounds,a.e({},w.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=w.localIdeographFontFamily,this._validateStyle=w.validateStyle,w.style&&this.setStyle(w.style,{localIdeographFontFamily:w.localIdeographFontFamily}),w.attributionControl&&this.addControl(new qa(typeof w.attributionControl=="boolean"?void 0:w.attributionControl)),w.maplibreLogo&&this.addControl(new Cn,w.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",B=>{this._update(B.dataType==="style"),this.fire(new a.k(`${B.dataType}data`,B))}),this.on("dataloading",B=>{this.fire(new a.k(`${B.dataType}dataloading`,B))}),this.on("dataabort",B=>{this.fire(new a.k("sourcedataabort",B))})}_getMapId(){return this._mapId}addControl(le,w){if(w===void 0&&(w=le.getDefaultPosition?le.getDefaultPosition():"top-right"),!le||!le.onAdd)return this.fire(new a.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let B=le.onAdd(this);this._controls.push(le);let Q=this._controlPositions[w];return w.indexOf("bottom")!==-1?Q.insertBefore(B,Q.firstChild):Q.appendChild(B),this}removeControl(le){if(!le||!le.onRemove)return this.fire(new a.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let w=this._controls.indexOf(le);return w>-1&&this._controls.splice(w,1),le.onRemove(this),this}hasControl(le){return this._controls.indexOf(le)>-1}calculateCameraOptionsFromTo(le,w,B,Q){return Q==null&&this.terrain&&(Q=this.terrain.getElevationForLngLatZoom(B,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(le,w,B,Q)}resize(le){var w;let B=this._containerDimensions(),Q=B[0],ee=B[1],se=this._getClampedPixelRatio(Q,ee);if(this._resizeCanvas(Q,ee,se),this.painter.resize(Q,ee,se),this.painter.overLimit()){let je=this.painter.context.gl;this._maxCanvasSize=[je.drawingBufferWidth,je.drawingBufferHeight];let it=this._getClampedPixelRatio(Q,ee);this._resizeCanvas(Q,ee,it),this.painter.resize(Q,ee,it)}this.transform.resize(Q,ee),(w=this._requestedCameraState)===null||w===void 0||w.resize(Q,ee);let qe=!this._moving;return qe&&(this.stop(),this.fire(new a.k("movestart",le)).fire(new a.k("move",le))),this.fire(new a.k("resize",le)),qe&&this.fire(new a.k("moveend",le)),this}_getClampedPixelRatio(le,w){let{0:B,1:Q}=this._maxCanvasSize,ee=this.getPixelRatio(),se=le*ee,qe=w*ee;return Math.min(se>B?B/se:1,qe>Q?Q/qe:1)*ee}getPixelRatio(){var le;return(le=this._overridePixelRatio)!==null&&le!==void 0?le:devicePixelRatio}setPixelRatio(le){this._overridePixelRatio=le,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(le){return this.transform.setMaxBounds(ce.convert(le)),this._update()}setMinZoom(le){if((le=le==null?-2:le)>=-2&&le<=this.transform.maxZoom)return this.transform.minZoom=le,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=le,this._update(),this.getZoom()>le&&this.setZoom(le),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(le){if((le=le==null?0:le)<0)throw new Error("minPitch must be greater than or equal to 0");if(le>=0&&le<=this.transform.maxPitch)return this.transform.minPitch=le,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(le>=this.transform.minPitch)return this.transform.maxPitch=le,this._update(),this.getPitch()>le&&this.setPitch(le),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(le){return this.transform.renderWorldCopies=le,this._update()}project(le){return this.transform.locationPoint(a.N.convert(le),this.style&&this.terrain)}unproject(le){return this.transform.pointLocation(a.P.convert(le),this.terrain)}isMoving(){var le;return this._moving||((le=this.handlers)===null||le===void 0?void 0:le.isMoving())}isZooming(){var le;return this._zooming||((le=this.handlers)===null||le===void 0?void 0:le.isZooming())}isRotating(){var le;return this._rotating||((le=this.handlers)===null||le===void 0?void 0:le.isRotating())}_createDelegatedListener(le,w,B){if(le==="mouseenter"||le==="mouseover"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:se=>{let qe=w.filter(it=>this.getLayer(it)),je=qe.length!==0?this.queryRenderedFeatures(se.point,{layers:qe}):[];je.length?Q||(Q=!0,B.call(this,new tu(le,this,se.originalEvent,{features:je}))):Q=!1},mouseout:()=>{Q=!1}}}}if(le==="mouseleave"||le==="mouseout"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:qe=>{let je=w.filter(it=>this.getLayer(it));(je.length!==0?this.queryRenderedFeatures(qe.point,{layers:je}):[]).length?Q=!0:Q&&(Q=!1,B.call(this,new tu(le,this,qe.originalEvent)))},mouseout:qe=>{Q&&(Q=!1,B.call(this,new tu(le,this,qe.originalEvent)))}}}}{let Q=ee=>{let se=w.filter(je=>this.getLayer(je)),qe=se.length!==0?this.queryRenderedFeatures(ee.point,{layers:se}):[];qe.length&&(ee.features=qe,B.call(this,ee),delete ee.features)};return{layers:w,listener:B,delegates:{[le]:Q}}}}_saveDelegatedListener(le,w){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[le]=this._delegatedListeners[le]||[],this._delegatedListeners[le].push(w)}_removeDelegatedListener(le,w,B){if(!this._delegatedListeners||!this._delegatedListeners[le])return;let Q=this._delegatedListeners[le];for(let ee=0;eew.includes(qe))){for(let qe in se.delegates)this.off(qe,se.delegates[qe]);return void Q.splice(ee,1)}}}on(le,w,B){if(B===void 0)return super.on(le,w);let Q=this._createDelegatedListener(le,typeof w=="string"?[w]:w,B);this._saveDelegatedListener(le,Q);for(let ee in Q.delegates)this.on(ee,Q.delegates[ee]);return this}once(le,w,B){if(B===void 0)return super.once(le,w);let Q=typeof w=="string"?[w]:w,ee=this._createDelegatedListener(le,Q,B);for(let se in ee.delegates){let qe=ee.delegates[se];ee.delegates[se]=(...je)=>{this._removeDelegatedListener(le,Q,B),qe(...je)}}this._saveDelegatedListener(le,ee);for(let se in ee.delegates)this.once(se,ee.delegates[se]);return this}off(le,w,B){return B===void 0?super.off(le,w):(this._removeDelegatedListener(le,typeof w=="string"?[w]:w,B),this)}queryRenderedFeatures(le,w){if(!this.style)return[];let B,Q=le instanceof a.P||Array.isArray(le),ee=Q?le:[[0,0],[this.transform.width,this.transform.height]];if(w=w||(Q?{}:le)||{},ee instanceof a.P||typeof ee[0]=="number")B=[a.P.convert(ee)];else{let se=a.P.convert(ee[0]),qe=a.P.convert(ee[1]);B=[se,new a.P(qe.x,se.y),qe,new a.P(se.x,qe.y),se]}return this.style.queryRenderedFeatures(B,w,this.transform)}querySourceFeatures(le,w){return this.style.querySourceFeatures(le,w)}setStyle(le,w){return(w=a.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},w)).diff!==!1&&w.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&le?(this._diffStyle(le,w),this):(this._localIdeographFontFamily=w.localIdeographFontFamily,this._updateStyle(le,w))}setTransformRequest(le){return this._requestManager.setTransformRequest(le),this}_getUIString(le){let w=this._locale[le];if(w==null)throw new Error(`Missing UI string '${le}'`);return w}_updateStyle(le,w){if(w.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(le,w));let B=this.style&&w.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!le)),le?(this.style=new Ha(this,w||{}),this.style.setEventedParent(this,{style:this.style}),typeof le=="string"?this.style.loadURL(le,w,B):this.style.loadJSON(le,w,B),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Ha(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(le,w){if(typeof le=="string"){let B=this._requestManager.transformRequest(le,"Style");a.h(B,new AbortController).then(Q=>{this._updateDiff(Q.data,w)}).catch(Q=>{Q&&this.fire(new a.j(Q))})}else typeof le=="object"&&this._updateDiff(le,w)}_updateDiff(le,w){try{this.style.setState(le,w)&&this._update(!0)}catch(B){a.w(`Unable to perform style diff: ${B.message||B.error||B}. Rebuilding the style from scratch.`),this._updateStyle(le,w)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():a.w("There is no style added to the map.")}addSource(le,w){return this._lazyInitEmptyStyle(),this.style.addSource(le,w),this._update(!0)}isSourceLoaded(le){let w=this.style&&this.style.sourceCaches[le];if(w!==void 0)return w.loaded();this.fire(new a.j(new Error(`There is no source with ID '${le}'`)))}setTerrain(le){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),le){let w=this.style.sourceCaches[le.source];if(!w)throw new Error(`cannot load terrain, because there exists no source with ID: ${le.source}`);this.terrain===null&&w.reload();for(let B in this.style._layers){let Q=this.style._layers[B];Q.type==="hillshade"&&Q.source===le.source&&a.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Xo(this.painter,w,le),this.painter.renderToTexture=new ys(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=B=>{B.dataType==="style"?this.terrain.sourceCache.freeRtt():B.dataType==="source"&&B.tile&&(B.sourceId!==le.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(B.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new a.k("terrain",{terrain:le})),this}getTerrain(){var le,w;return(w=(le=this.terrain)===null||le===void 0?void 0:le.options)!==null&&w!==void 0?w:null}areTilesLoaded(){let le=this.style&&this.style.sourceCaches;for(let w in le){let B=le[w]._tiles;for(let Q in B){let ee=B[Q];if(ee.state!=="loaded"&&ee.state!=="errored")return!1}}return!0}removeSource(le){return this.style.removeSource(le),this._update(!0)}getSource(le){return this.style.getSource(le)}addImage(le,w,B={}){let{pixelRatio:Q=1,sdf:ee=!1,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt}=B;if(this._lazyInitEmptyStyle(),!(w instanceof HTMLImageElement||a.b(w))){if(w.width===void 0||w.height===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{let{width:Ot,height:Nt,data:hr}=w,Sr=w;return this.style.addImage(le,{data:new a.R({width:Ot,height:Nt},new Uint8Array(hr)),pixelRatio:Q,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt,sdf:ee,version:0,userImage:Sr}),Sr.onAdd&&Sr.onAdd(this,le),this}}{let{width:Ot,height:Nt,data:hr}=u.getImageData(w);this.style.addImage(le,{data:new a.R({width:Ot,height:Nt},hr),pixelRatio:Q,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt,sdf:ee,version:0})}}updateImage(le,w){let B=this.style.getImage(le);if(!B)return this.fire(new a.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let Q=w instanceof HTMLImageElement||a.b(w)?u.getImageData(w):w,{width:ee,height:se,data:qe}=Q;if(ee===void 0||se===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(ee!==B.data.width||se!==B.data.height)return this.fire(new a.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let je=!(w instanceof HTMLImageElement||a.b(w));return B.data.replace(qe,je),this.style.updateImage(le,B),this}getImage(le){return this.style.getImage(le)}hasImage(le){return le?!!this.style.getImage(le):(this.fire(new a.j(new Error("Missing required image id"))),!1)}removeImage(le){this.style.removeImage(le)}loadImage(le){return g.getImage(this._requestManager.transformRequest(le,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(le,w){return this._lazyInitEmptyStyle(),this.style.addLayer(le,w),this._update(!0)}moveLayer(le,w){return this.style.moveLayer(le,w),this._update(!0)}removeLayer(le){return this.style.removeLayer(le),this._update(!0)}getLayer(le){return this.style.getLayer(le)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(le,w,B){return this.style.setLayerZoomRange(le,w,B),this._update(!0)}setFilter(le,w,B={}){return this.style.setFilter(le,w,B),this._update(!0)}getFilter(le){return this.style.getFilter(le)}setPaintProperty(le,w,B,Q={}){return this.style.setPaintProperty(le,w,B,Q),this._update(!0)}getPaintProperty(le,w){return this.style.getPaintProperty(le,w)}setLayoutProperty(le,w,B,Q={}){return this.style.setLayoutProperty(le,w,B,Q),this._update(!0)}getLayoutProperty(le,w){return this.style.getLayoutProperty(le,w)}setGlyphs(le,w={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(le,w),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(le,w,B={}){return this._lazyInitEmptyStyle(),this.style.addSprite(le,w,B,Q=>{Q||this._update(!0)}),this}removeSprite(le){return this._lazyInitEmptyStyle(),this.style.removeSprite(le),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(le,w={}){return this._lazyInitEmptyStyle(),this.style.setSprite(le,w,B=>{B||this._update(!0)}),this}setLight(le,w={}){return this._lazyInitEmptyStyle(),this.style.setLight(le,w),this._update(!0)}getLight(){return this.style.getLight()}setSky(le){return this._lazyInitEmptyStyle(),this.style.setSky(le),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(le,w){return this.style.setFeatureState(le,w),this._update()}removeFeatureState(le,w){return this.style.removeFeatureState(le,w),this._update()}getFeatureState(le){return this.style.getFeatureState(le)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let le=0,w=0;return this._container&&(le=this._container.clientWidth||400,w=this._container.clientHeight||300),[le,w]}_setupContainer(){let le=this._container;le.classList.add("maplibregl-map");let w=this._canvasContainer=c.create("div","maplibregl-canvas-container",le);this._interactive&&w.classList.add("maplibregl-interactive"),this._canvas=c.create("canvas","maplibregl-canvas",w),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let B=this._containerDimensions(),Q=this._getClampedPixelRatio(B[0],B[1]);this._resizeCanvas(B[0],B[1],Q);let ee=this._controlContainer=c.create("div","maplibregl-control-container",le),se=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(qe=>{se[qe]=c.create("div",`maplibregl-ctrl-${qe} `,ee)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(le,w,B){this._canvas.width=Math.floor(B*le),this._canvas.height=Math.floor(B*w),this._canvas.style.width=`${le}px`,this._canvas.style.height=`${w}px`}_setupPainter(){let le={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},w=null;this._canvas.addEventListener("webglcontextcreationerror",Q=>{w={requestedAttributes:le},Q&&(w.statusMessage=Q.statusMessage,w.type=Q.type)},{once:!0});let B=this._canvas.getContext("webgl2",le)||this._canvas.getContext("webgl",le);if(!B){let Q="Failed to initialize WebGL";throw w?(w.message=Q,new Error(JSON.stringify(w))):new Error(Q)}this.painter=new Lc(B,this.transform),f.testSupport(B)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(le){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||le,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(le){return this._update(),this._renderTaskQueue.add(le)}_cancelRenderFrame(le){this._renderTaskQueue.remove(le)}_render(le){let w=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(le),this._removed)return;let B=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let ee=this.transform.zoom,se=u.now();this.style.zoomHistory.update(ee,se);let qe=new a.z(ee,{now:se,fadeDuration:w,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),je=qe.crossFadingFactor();je===1&&je===this._crossFadingFactor||(B=!0,this._crossFadingFactor=je),this.style.update(qe)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,w,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:w,showPadding:this.showPadding}),this.fire(new a.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,a.bf.mark(a.bg.load),this.fire(new a.k("load"))),this.style&&(this.style.hasTransitions()||B)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let Q=this._sourcesDirty||this._styleDirty||this._placementDirty;return Q||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new a.k("idle")),!this._loaded||this._fullyLoaded||Q||(this._fullyLoaded=!0,a.bf.mark(a.bg.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var le;this._hash&&this._hash.remove();for(let B of this._controls)B.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window!="undefined"&&removeEventListener("online",this._onWindowOnline,!1),g.removeThrottleControl(this._imageQueueHandle),(le=this._resizeObserver)===null||le===void 0||le.disconnect();let w=this.painter.context.gl.getExtension("WEBGL_lose_context");w!=null&&w.loseContext&&w.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),a.bf.clearMetrics(),this._removed=!0,this.fire(new a.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(le=>{a.bf.frame(le),this._frameRequest=null,this._render(le)}).catch(()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(le){this._showTileBoundaries!==le&&(this._showTileBoundaries=le,this._update())}get showPadding(){return!!this._showPadding}set showPadding(le){this._showPadding!==le&&(this._showPadding=le,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(le){this._showCollisionBoxes!==le&&(this._showCollisionBoxes=le,le?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(le){this._showOverdrawInspector!==le&&(this._showOverdrawInspector=le,this._update())}get repaint(){return!!this._repaint}set repaint(le){this._repaint!==le&&(this._repaint=le,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(le){this._vertices=le,this._update()}get version(){return yl}getCameraTargetElevation(){return this.transform.elevation}},i.MapMouseEvent=tu,i.MapTouchEvent=vf,i.MapWheelEvent=md,i.Marker=ac,i.NavigationControl=class{constructor(le){this._updateZoomButtons=()=>{let w=this._map.getZoom(),B=w===this._map.getMaxZoom(),Q=w===this._map.getMinZoom();this._zoomInButton.disabled=B,this._zoomOutButton.disabled=Q,this._zoomInButton.setAttribute("aria-disabled",B.toString()),this._zoomOutButton.setAttribute("aria-disabled",Q.toString())},this._rotateCompassArrow=()=>{let w=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=w},this._setButtonTitle=(w,B)=>{let Q=this._map._getUIString(`NavigationControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)},this.options=a.e({},ia,le),this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",w=>w.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",w=>this._map.zoomIn({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",w=>this._map.zoomOut({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",w=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:w}):this._map.resetNorth({},{originalEvent:w})}),this._compassIcon=c.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(le){return this._map=le,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Ka(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(le,w){let B=c.create("button",le,this._container);return B.type="button",B.addEventListener("click",w),B}},i.Popup=class extends a.E{constructor(le){super(),this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new a.k("close"))),this),this._onMouseUp=w=>{this._update(w.point)},this._onMouseMove=w=>{this._update(w.point)},this._onDrag=w=>{this._update(w.point)},this._update=w=>{var B;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create("div","maplibregl-popup",this._map.getContainer()),this._tip=c.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let je of this.options.className.split(" "))this._container.classList.add(je);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?Ko(this._lngLat,this._flatPos,this._map.transform):(B=this._lngLat)===null||B===void 0?void 0:B.wrap(),this._trackPointer&&!w)return;let Q=this._flatPos=this._pos=this._trackPointer&&w?w:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&w?w:this._map.transform.locationPoint(this._lngLat));let ee=this.options.anchor,se=yc(this.options.offset);if(!ee){let je=this._container.offsetWidth,it=this._container.offsetHeight,yt;yt=Q.y+se.bottom.ythis._map.transform.height-it?["bottom"]:[],Q.xthis._map.transform.width-je/2&&yt.push("right"),ee=yt.length===0?"bottom":yt.join("-")}let qe=Q.add(se[ee]);this.options.subpixelPositioning||(qe=qe.round()),c.setTransform(this._container,`${iu[ee]} translate(${qe.x}px,${qe.y}px)`),Ru(this._container,ee,"popup")},this._onClose=()=>{this.remove()},this.options=a.e(Object.create(eo),le)}addTo(le){return this._map&&this.remove(),this._map=le,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new a.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(le){return this._lngLat=a.N.convert(le),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(le){return this.setDOMContent(document.createTextNode(le))}setHTML(le){let w=document.createDocumentFragment(),B=document.createElement("body"),Q;for(B.innerHTML=le;Q=B.firstChild,Q;)w.appendChild(Q);return this.setDOMContent(w)}getMaxWidth(){var le;return(le=this._container)===null||le===void 0?void 0:le.style.maxWidth}setMaxWidth(le){return this.options.maxWidth=le,this._update(),this}setDOMContent(le){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(le),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(le){return this._container&&this._container.classList.add(le),this}removeClassName(le){return this._container&&this._container.classList.remove(le),this}setOffset(le){return this.options.offset=le,this._update(),this}toggleClassName(le){if(this._container)return this._container.classList.toggle(le)}setSubpixelPositioning(le){this.options.subpixelPositioning=le}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let le=this._container.querySelector(Jc);le&&le.focus()}},i.RasterDEMTileSource=qt,i.RasterTileSource=ct,i.ScaleControl=class{constructor(le){this._onMove=()=>{Dc(this._map,this._container,this.options)},this.setUnit=w=>{this.options.unit=w,Dc(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},Du),le)}getDefaultPosition(){return"bottom-left"}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-scale",le.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},i.ScrollZoomHandler=Ur,i.Style=Ha,i.TerrainControl=class{constructor(le){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=le}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=c.create("button","maplibregl-ctrl-terrain",this._container),c.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},i.TwoFingersTouchPitchHandler=gf,i.TwoFingersTouchRotateHandler=Yc,i.TwoFingersTouchZoomHandler=ru,i.TwoFingersTouchZoomRotateHandler=Ti,i.VectorTileSource=nt,i.VideoSource=kt,i.addSourceType=(le,w)=>a._(void 0,void 0,void 0,function*(){if(xr(le))throw new Error(`A source type called "${le}" already exists.`);((B,Q)=>{Yt[B]=Q})(le,w)}),i.clearPrewarmedResources=function(){let le=ge;le&&(le.isPreloaded()&&le.numActive()===1?(le.release(_e),ge=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},i.getMaxParallelImageRequests=function(){return a.a.MAX_PARALLEL_IMAGE_REQUESTS},i.getRTLTextPluginStatus=function(){return bt().getRTLTextPluginStatus()},i.getVersion=function(){return _c},i.getWorkerCount=function(){return Me.workerCount},i.getWorkerUrl=function(){return a.a.WORKER_URL},i.importScriptInWorkers=function(le){return Ae().broadcast("IS",le)},i.prewarm=function(){Te().acquire(_e)},i.setMaxParallelImageRequests=function(le){a.a.MAX_PARALLEL_IMAGE_REQUESTS=le},i.setRTLTextPlugin=function(le,w){return bt().setRTLTextPlugin(le,w)},i.setWorkerCount=function(le){Me.workerCount=le},i.setWorkerUrl=function(le){a.a.WORKER_URL=le}});var n=e;return n})});var VHe=ye((R1r,UHe)=>{"use strict";var iw=Mr(),sjt=Ll().sanitizeHTML,ljt=uJ(),OHe=bx();function BHe(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=OHe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ag=BHe.prototype;ag.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=i7(t)};ag.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ag.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ag.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ag.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ag.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ag.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!i7(e)){var r=ujt(e);t.addSource(this.idSource,r)}};ag.findFollowingMapLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function NHe(e){var t={},r={};switch(e.type){case"circle":iw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":iw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":iw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=ljt(n.textposition,n.iconsize);iw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),iw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":iw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function ujt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=sjt(e.sourceattribution)),n}UHe.exports=function(t,r,n){var i=new BHe(t,r);return i.update(n),i}});var KHe=ye((D1r,YHe)=>{"use strict";var pJ=qHe(),gJ=Mr(),jHe=ix(),HHe=ba(),cjt=Qa(),fjt=gv(),n7=Nc(),WHe=Sg(),hjt=WHe.drawMode,djt=WHe.selectMode,vjt=wf().prepSelect,pjt=wf().clearOutline,gjt=wf().clearSelectionsCache,mjt=wf().selectOnClick,nw=bx(),yjt=VHe();function ZHe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Sh=ZHe.prototype;Sh.plot=function(e,t,r){var n=this,i;n.map?i=new Promise(function(a,o){n.updateMap(e,t,a,o)}):i=new Promise(function(a,o){n.createMap(e,t,a,o)}),r.push(i)};Sh.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=XHe(a.style),s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new pJ.Map({container:i.div,style:o.style,center:mJ(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new pJ.AttributionControl({compact:!0})),c={};u.on("styleimagemissing",function(h){var d=h.id;if(!c[d]&&d.includes("-15")){c[d]=!0;var v=new Image(15,15);v.onload=function(){u.addImage(d,v)},v.crossOrigin="Anonymous",v.src="https://unpkg.com/maki@2.1.0/icons/"+d+".svg"}}),u.setTransformRequest(function(h){return h=h.replace("https://fonts.openmaptiles.org/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://tiles.basemaps.cartocdn.com/fonts/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://fonts.openmaptiles.org/Open Sans Regular,Arial Unicode MS Regular","https://fonts.openmaptiles.org/Klokantech Noto Sans Regular"),{url:h}}),u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var f=[];f.push(new Promise(function(h){u.once("load",h)})),f=f.concat(jHe.fetchTraceGeoData(e)),Promise.all(f).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Sh.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=XHe(o.style);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(jHe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Sh.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&mjt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&n7.click(n,l.originalEvent)}}};Sh.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=gJ.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),djt(a)||hjt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){vjt(l,u,c,t.dragOptions,a)},fjt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Sh.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Sh.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var yJ=Mr(),xjt=k_(),bjt=Zd(),JHe=Fk();$He.exports=function(t,r,n){xjt(t,r,n,{type:"map",attributes:JHe,handleDefaults:wjt,partition:"y"})};function wjt(e,t,r){r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var n=r("bounds.west"),i=r("bounds.east"),a=r("bounds.south"),o=r("bounds.north");(n===void 0||i===void 0||a===void 0||o===void 0)&&delete t.bounds,bjt(e,t,{name:"layers",handleItemDefaults:Tjt}),t._input=e}function Tjt(e,t){function r(l,u){return yJ.coerce(e,t,JHe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",yJ.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),yJ.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var o7=ye(l0=>{"use strict";var a7=Mr(),eGe=a7.strTranslate,Ajt=a7.strScale,Sjt=kd().getSubplotCalcData,Mjt=Zp(),Ejt=xa(),tGe=ao(),kjt=Ll(),Cjt=KHe(),wx="map";l0.name=wx;l0.attr="subplot";l0.idRoot=wx;l0.idRegex=l0.attrRegex=a7.counterRegex(wx);l0.attributes={subplot:{valType:"subplotid",dflt:"map",editType:"calc"}};l0.layoutAttributes=Fk();l0.supplyLayoutDefaults=QHe();l0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[wx],a=0;ax/2){var b=f.split("|").join("
");d.text(b).attr("data-unformatted",b).call(kjt.convertToTspans,e),v=tGe.bBox(d.node())}d.attr("transform",eGe(-3,-v.height+8)),h.insert("rect",".static-attribution").attr({x:-v.width-6,y:-v.height-3,width:v.width+6,height:v.height+3,fill:"rgba(255, 255, 255, 0.75)"});var g=1;v.width+6>x&&(g=x/(v.width+6));var E=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];h.attr("transform",eGe(E[0],E[1])+Ajt(g))}};l0.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[wx],n=0;n{"use strict";rGe.exports={attributes:JF(),supplyDefaults:pHe(),colorbar:Kd(),formatLabels:lJ(),calc:lz(),plot:CHe(),hoverPoints:r7().hoverPoints,eventData:RHe(),selectPoints:zHe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermap",basePlotModule:o7(),categories:["map","gl","symbols","showLegend","scatter-like"],meta:{}}});var aGe=ye((O1r,nGe)=>{"use strict";nGe.exports=iGe()});var _J=ye((B1r,oGe)=>{"use strict";var d1=J5(),Ljt=Kl(),Pjt=Wo().hovertemplateAttrs,Ijt=vl(),Tx=no().extendFlat;oGe.exports=Tx({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:Tx({},d1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:d1.text,hovertext:d1.hovertext,marker:{line:{color:Tx({},d1.marker.line.color,{editType:"plot"}),width:Tx({},d1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:Tx({},d1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:Tx({},d1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:Tx({},d1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:d1.hoverinfo,hovertemplate:Pjt({},{keys:["properties"]}),showlegend:Tx({},Ijt.showlegend,{dflt:!1})},Ljt("",{cLetter:"z",editTypeOverride:"calc"}))});var lGe=ye((N1r,sGe)=>{"use strict";var Nk=Mr(),Rjt=Uh(),Djt=_J();sGe.exports=function(t,r,n,i){function a(c,f){return Nk.coerce(t,r,Djt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!Nk.isArrayOrTypedArray(o)||!o.length||!Nk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||Nk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),Rjt(t,r,i,a,{prefix:"",cLetter:"z"}),Nk.coerceSelectionMarkerOpacity(r,a)}});var xJ=ye((U1r,fGe)=>{"use strict";var zjt=uo(),v1=Mr(),Fjt=Mu(),qjt=ao(),Ojt=tx().makeBlank,uGe=ix();function Bjt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:Ojt()};if(!r)return a;var o=uGe.extractTraceFeature(e);if(!o)return a;var s=Fjt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;v1.isArrayOrTypedArray(l.opacity)&&(c=function(E){var k=E.mo;return zjt(k)?+v1.constrain(k,0,1):0});var f;v1.isArrayOrTypedArray(u.color)&&(f=function(E){return E.mlc});var h;v1.isArrayOrTypedArray(u.width)&&(h=function(E){return E.mlw});for(var d=0;d{"use strict";var dGe=xJ().convert,Njt=xJ().convertOnSelect,hGe=bx().traceLayerPrefix;function vGe(e,t){this.type="choroplethmap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",hGe+t+"-fill"],["line",hGe+t+"-line"]],this.below=null}var EA=vGe.prototype;EA.update=function(e){this._update(dGe(e)),e[0].trace._glTrace=this};EA.updateOnSelect=function(e){this._update(Njt(e))};EA._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};EA.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};pGe.exports=function(t,r){var n=r[0].trace,i=new vGe(t,n.uid),a=i.sourceId,o=dGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var yGe=ye((H1r,mGe)=>{"use strict";mGe.exports={attributes:_J(),supplyDefaults:lGe(),colorbar:S_(),calc:Lz(),plot:gGe(),hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";_Ge.exports=yGe()});var wJ=ye((j1r,wGe)=>{"use strict";var Ujt=Kl(),Vjt=Wo().hovertemplateAttrs,bGe=vl(),s7=JF(),bJ=no().extendFlat;wGe.exports=bJ({lon:s7.lon,lat:s7.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:s7.text,hovertext:s7.hovertext,hoverinfo:bJ({},bGe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:Vjt(),showlegend:bJ({},bGe.showlegend,{dflt:!1})},Ujt("",{cLetter:"z",editTypeOverride:"calc"}))});var AGe=ye((W1r,TGe)=>{"use strict";var Hjt=Mr(),Gjt=Uh(),jjt=wJ();TGe.exports=function(t,r,n,i){function a(u,c){return Hjt.coerce(t,r,jjt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),Gjt(t,r,i,a,{prefix:"",cLetter:"z"})}});var EGe=ye((Z1r,MGe)=>{"use strict";var TJ=uo(),Wjt=Mr().isArrayOrTypedArray,AJ=es().BADNUM,Zjt=zv(),SGe=Mr()._;MGe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=Wjt(a)&&a.length,s=0;s{"use strict";var Xjt=uo(),SJ=Mr(),kGe=va(),CGe=Mu(),LGe=es().BADNUM,Yjt=tx().makeBlank;PGe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:Yjt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=SJ.isArrayOrTypedArray(l)&&l.length,f=SJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=CGe.extractOpts(r),g=b.reversescale?CGe.flipScale(b.colorscale):b.colorscale,E=g[0][1],k=kGe.opacity(E)<1?E:kGe.addOpacity(E,0),A=["interpolate",["linear"],["heatmap-density"],0,k];for(s=1;s{"use strict";var RGe=IGe(),Kjt=bx().traceLayerPrefix;function DGe(e,t){this.type="densitymap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",Kjt+t+"-heatmap"]],this.below=null}var l7=DGe.prototype;l7.update=function(e){var t=this.subplot,r=this.layerList,n=RGe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};l7.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};zGe.exports=function(t,r){var n=r[0].trace,i=new DGe(t,n.uid),a=i.sourceId,o=RGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var OGe=ye((K1r,qGe)=>{"use strict";var Jjt=Qa(),$jt=r7().hoverPoints,Qjt=r7().getExtraText;qGe.exports=function(t,r,n){var i=$jt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=Jjt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=Qjt(s,l,o[0].t.labels),[a]}}});var NGe=ye((J1r,BGe)=>{"use strict";BGe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var VGe=ye(($1r,UGe)=>{"use strict";UGe.exports={attributes:wJ(),supplyDefaults:AGe(),colorbar:S_(),formatLabels:lJ(),calc:EGe(),plot:FGe(),hoverPoints:OGe(),eventData:NGe(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";HGe.exports=VGe()});var EJ=ye((t_r,XGe)=>{"use strict";var eWt=Su(),tWt=vl(),jGe=dh(),MJ=i3(),rWt=Ju().attributes,WGe=Wo().hovertemplateAttrs,iWt=Kl(),nWt=Vs().templatedArray,aWt=Oc().descriptionOnlyNumbers,ZGe=no().extendFlat,oWt=Bu().overrideAll,e_r=XGe.exports=oWt({hoverinfo:ZGe({},tWt.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:MJ.hoverlabel,domain:rWt({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s",description:aWt("value")},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:eWt({autoShadowDflt:!0}),customdata:void 0,node:{label:{valType:"data_array",dflt:[]},groups:{valType:"info_array",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:"number",editType:"calc"}},x:{valType:"data_array",dflt:[]},y:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:jGe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:MJ.hoverlabel,hovertemplate:WGe({},{keys:["value","label"]}),align:{valType:"enumerated",values:["justify","left","right","center"],dflt:"justify"}},link:{arrowlen:{valType:"number",min:0,dflt:0},label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},hovercolor:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:jGe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:MJ.hoverlabel,hovertemplate:WGe({},{keys:["value","label"]}),colorscales:nWt("concentrationscales",{editType:"calc",label:{valType:"string",editType:"calc",dflt:""},cmax:{valType:"number",editType:"calc",dflt:1},cmin:{valType:"number",editType:"calc",dflt:0},colorscale:ZGe(iWt().colorscale,{dflt:[[0,"white"],[1,"black"]]})})}},"calc","nested")});var QGe=ye((r_r,$Ge)=>{"use strict";var kA=Mr(),u7=EJ(),sWt=va(),YGe=id(),lWt=Ju().defaults,KGe=oM(),JGe=Vs(),uWt=Zd();$Ge.exports=function(t,r,n,i){function a(A,L){return kA.coerce(t,r,u7,A,L)}var o=kA.extendDeep(i.hoverlabel,t.hoverlabel),s=t.node,l=JGe.newContainer(r,"node");function u(A,L){return kA.coerce(s,l,u7.node,A,L)}u("label"),u("groups"),u("x"),u("y"),u("pad"),u("thickness"),u("line.color"),u("line.width"),u("hoverinfo",t.hoverinfo),KGe(s,l,u,o),u("hovertemplate"),u("align");var c=i.colorway,f=function(A){return c[A%c.length]};u("color",l.label.map(function(A,L){return sWt.addOpacity(f(L),.8)})),u("customdata");var h=t.link||{},d=JGe.newContainer(r,"link");function v(A,L){return kA.coerce(h,d,u7.link,A,L)}v("label"),v("arrowlen"),v("source"),v("target"),v("value"),v("line.color"),v("line.width"),v("hoverinfo",t.hoverinfo),KGe(h,d,v,o),v("hovertemplate");var x=YGe(i.paper_bgcolor).getLuminance()<.333,b=x?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)",g=v("color",b);function E(A){var L=YGe(A);if(!L.isValid())return A;var _=L.getAlpha();return _<=.8?L.setAlpha(_+.2):L=x?L.brighten():L.darken(),L.toRgbString()}v("hovercolor",Array.isArray(g)?g.map(E):E(g)),v("customdata"),uWt(h,d,{name:"colorscales",handleItemDefaults:cWt}),lWt(r,i,a),a("orientation"),a("valueformat"),a("valuesuffix");var k;l.x.length&&l.y.length&&(k="freeform"),a("arrangement",k),kA.coerceFont(a,"textfont",i.font,{autoShadowDflt:!0}),r._length=null};function cWt(e,t){function r(n,i){return kA.coerce(e,t,u7.link.colorscales,n,i)}r("label"),r("cmin"),r("cmax"),r("colorscale")}});var kJ=ye((i_r,eje)=>{"use strict";eje.exports=fWt;function fWt(e){for(var t=e.length,r=new Array(t),n=new Array(t),i=new Array(t),a=new Array(t),o=new Array(t),s=new Array(t),l=0;l0;){b=E[E.length-1];var k=e[b];if(a[b]=0&&s[b].push(o[L])}a[b]=A}else{if(n[b]===r[b]){for(var _=[],C=[],M=0,A=g.length-1;A>=0;--A){var p=g[A];if(i[p]=!1,_.push(p),C.push(s[p]),M+=s[p].length,o[p]=c.length,p===b){g.length=A;break}}c.push(_);for(var P=new Array(M),A=0;A{"use strict";var hWt=kJ(),CA=Mr(),dWt=Km().wrap,Uk=CA.isArrayOrTypedArray,tje=CA.isIndex,rje=Mu();function vWt(e){var t=e.node,r=e.link,n=[],i=Uk(r.color),a=Uk(r.hovercolor),o=Uk(r.customdata),s={},l={},u=r.colorscales.length,c;for(c=0;cv&&(v=r.source[c]),r.target[c]>v&&(v=r.target[c]);var x=v+1;e.node._count=x;var b,g=e.node.groups,E={};for(c=0;c0&&tje(M,x)&&tje(p,x)&&!(E.hasOwnProperty(M)&&E.hasOwnProperty(p)&&E[M]===E[p])){E.hasOwnProperty(p)&&(p=E[p]),E.hasOwnProperty(M)&&(M=E[M]),M=+M,p=+p,s[M]=s[p]=!0;var P="";r.label&&r.label[c]&&(P=r.label[c]);var T=null;P&&l.hasOwnProperty(P)&&(T=l[P]),n.push({pointNumber:c,label:P,color:i?r.color[c]:r.color,hovercolor:a?r.hovercolor[c]:r.hovercolor,customdata:o?r.customdata[c]:r.customdata,concentrationscale:T,source:M,target:p,value:+C}),_.source.push(M),_.target.push(p)}}var F=x+g.length,q=Uk(t.color),V=Uk(t.customdata),H=[];for(c=0;cx-1,childrenNodes:[],pointNumber:c,label:X,color:q?t.color[c]:t.color,customdata:V?t.customdata[c]:t.customdata})}var G=!1;return pWt(F,_.source,_.target)&&(G=!0),{circular:G,links:n,nodes:H,groups:g,groupLookup:E}}function pWt(e,t,r){for(var n=CA.init2dArray(e,0),i=0;i1})}ije.exports=function(t,r){var n=vWt(r);return dWt({circular:n.circular,_nodes:n.nodes,_links:n.links,_groups:n.groups,_groupLookup:n.groupLookup})}});var oje=ye((c7,aje)=>{(function(e,t){typeof c7=="object"&&typeof aje!="undefined"?t(c7):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.d3=e.d3||{}))})(c7,function(e){"use strict";function t(C){var M=+this._x.call(null,C),p=+this._y.call(null,C);return r(this.cover(M,p),M,p,C)}function r(C,M,p,P){if(isNaN(M)||isNaN(p))return C;var T,F=C._root,q={data:P},V=C._x0,H=C._y0,X=C._x1,G=C._y1,N,W,re,ae,_e,Me,ke,ge;if(!F)return C._root=q,C;for(;F.length;)if((_e=M>=(N=(V+X)/2))?V=N:X=N,(Me=p>=(W=(H+G)/2))?H=W:G=W,T=F,!(F=F[ke=Me<<1|_e]))return T[ke]=q,C;if(re=+C._x.call(null,F.data),ae=+C._y.call(null,F.data),M===re&&p===ae)return q.next=F,T?T[ke]=q:C._root=q,C;do T=T?T[ke]=new Array(4):C._root=new Array(4),(_e=M>=(N=(V+X)/2))?V=N:X=N,(Me=p>=(W=(H+G)/2))?H=W:G=W;while((ke=Me<<1|_e)===(ge=(ae>=W)<<1|re>=N));return T[ge]=F,T[ke]=q,C}function n(C){var M,p,P=C.length,T,F,q=new Array(P),V=new Array(P),H=1/0,X=1/0,G=-1/0,N=-1/0;for(p=0;pG&&(G=T),FN&&(N=F));if(H>G||X>N)return this;for(this.cover(H,X).cover(G,N),p=0;pC||C>=T||P>M||M>=F;)switch(X=(MG||(V=ae.y0)>N||(H=ae.x1)=ke)<<1|C>=Me)&&(ae=W[W.length-1],W[W.length-1]=W[W.length-1-_e],W[W.length-1-_e]=ae)}else{var ge=C-+this._x.call(null,re.data),ie=M-+this._y.call(null,re.data),Te=ge*ge+ie*ie;if(Te=(W=(q+H)/2))?q=W:H=W,(_e=N>=(re=(V+X)/2))?V=re:X=re,M=p,!(p=p[Me=_e<<1|ae]))return this;if(!p.length)break;(M[Me+1&3]||M[Me+2&3]||M[Me+3&3])&&(P=M,ke=Me)}for(;p.data!==C;)if(T=p,!(p=p.next))return this;return(F=p.next)&&delete p.next,T?(F?T.next=F:delete T.next,this):M?(F?M[Me]=F:delete M[Me],(p=M[0]||M[1]||M[2]||M[3])&&p===(M[3]||M[2]||M[1]||M[0])&&!p.length&&(P?P[ke]=p:this._root=p),this):(this._root=F,this)}function c(C){for(var M=0,p=C.length;M{(function(e,t){typeof f7=="object"&&typeof sje!="undefined"?t(f7):typeof define=="function"&&define.amd?define(["exports"],t):t(e.d3=e.d3||{})})(f7,function(e){"use strict";var t="$";function r(){}r.prototype=n.prototype={constructor:r,has:function(x){return t+x in this},get:function(x){return this[t+x]},set:function(x,b){return this[t+x]=b,this},remove:function(x){var b=t+x;return b in this&&delete this[b]},clear:function(){for(var x in this)x[0]===t&&delete this[x]},keys:function(){var x=[];for(var b in this)b[0]===t&&x.push(b.slice(1));return x},values:function(){var x=[];for(var b in this)b[0]===t&&x.push(this[b]);return x},entries:function(){var x=[];for(var b in this)b[0]===t&&x.push({key:b.slice(1),value:this[b]});return x},size:function(){var x=0;for(var b in this)b[0]===t&&++x;return x},empty:function(){for(var x in this)if(x[0]===t)return!1;return!0},each:function(x){for(var b in this)b[0]===t&&x(this[b],b.slice(1),this)}};function n(x,b){var g=new r;if(x instanceof r)x.each(function(_,C){g.set(C,_)});else if(Array.isArray(x)){var E=-1,k=x.length,A;if(b==null)for(;++E=x.length)return g!=null&&_.sort(g),E!=null?E(_):_;for(var P=-1,T=_.length,F=x[C++],q,V,H=n(),X,G=M();++Px.length)return _;var M,p=b[C-1];return E!=null&&C>=x.length?M=_.entries():(M=[],_.each(function(P,T){M.push({key:T,values:L(P,C)})})),p!=null?M.sort(function(P,T){return p(P.key,T.key)}):M}return k={object:function(_){return A(_,0,a,o)},map:function(_){return A(_,0,s,l)},entries:function(_){return L(A(_,0,s,l),0)},key:function(_){return x.push(_),k},sortKeys:function(_){return b[x.length-1]=_,k},sortValues:function(_){return g=_,k},rollup:function(_){return E=_,k}}}function a(){return{}}function o(x,b,g){x[b]=g}function s(){return n()}function l(x,b,g){x.set(b,g)}function u(){}var c=n.prototype;u.prototype=f.prototype={constructor:u,has:c.has,add:function(x){return x+="",this[t+x]=x,this},remove:c.remove,clear:c.clear,values:c.keys,size:c.size,empty:c.empty,each:c.each};function f(x,b){var g=new u;if(x instanceof u)x.each(function(A){g.add(A)});else if(x){var E=-1,k=x.length;if(b==null)for(;++E{(function(e,t){typeof d7=="object"&&typeof lje!="undefined"?t(d7):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.d3=e.d3||{}))})(d7,function(e){"use strict";var t={value:function(){}};function r(){for(var s=0,l=arguments.length,u={},c;s=0&&(c=u.slice(f+1),u=u.slice(0,f)),u&&!l.hasOwnProperty(u))throw new Error("unknown type: "+u);return{type:u,name:c}})}n.prototype=r.prototype={constructor:n,on:function(s,l){var u=this._,c=i(s+"",u),f,h=-1,d=c.length;if(arguments.length<2){for(;++h0)for(var u=new Array(f),c=0,f,h;c{(function(e,t){typeof v7=="object"&&typeof cje!="undefined"?t(v7):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.d3=e.d3||{}))})(v7,function(e){"use strict";var t=0,r=0,n=0,i=1e3,a,o,s=0,l=0,u=0,c=typeof performance=="object"&&performance.now?performance:Date,f=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(C){setTimeout(C,17)};function h(){return l||(f(d),l=c.now()+u)}function d(){l=0}function v(){this._call=this._time=this._next=null}v.prototype=x.prototype={constructor:v,restart:function(C,M,p){if(typeof C!="function")throw new TypeError("callback is not a function");p=(p==null?h():+p)+(M==null?0:+M),!this._next&&o!==this&&(o?o._next=this:a=this,o=this),this._call=C,this._time=p,A()},stop:function(){this._call&&(this._call=null,this._time=1/0,A())}};function x(C,M,p){var P=new v;return P.restart(C,M,p),P}function b(){h(),++t;for(var C=a,M;C;)(M=l-C._time)>=0&&C._call.call(null,M),C=C._next;--t}function g(){l=(s=c.now())+u,t=r=0;try{b()}finally{t=0,k(),l=0}}function E(){var C=c.now(),M=C-s;M>i&&(u-=M,s=C)}function k(){for(var C,M=a,p,P=1/0;M;)M._call?(P>M._time&&(P=M._time),C=M,M=M._next):(p=M._next,M._next=null,M=C?C._next=p:a=p);o=C,A(P)}function A(C){if(!t){r&&(r=clearTimeout(r));var M=C-l;M>24?(C<1/0&&(r=setTimeout(g,C-c.now()-u)),n&&(n=clearInterval(n))):(n||(s=c.now(),n=setInterval(E,i)),t=1,f(g))}}function L(C,M,p){var P=new v;return M=M==null?0:+M,P.restart(function(T){P.stop(),C(T+M)},M,p),P}function _(C,M,p){var P=new v,T=M;return M==null?(P.restart(C,M,p),P):(M=+M,p=p==null?h():+p,P.restart(function F(q){q+=T,P.restart(F,T+=M,p),C(q)},M,p),P)}e.interval=_,e.now=h,e.timeout=L,e.timer=x,e.timerFlush=b,Object.defineProperty(e,"__esModule",{value:!0})})});var dje=ye((p7,hje)=>{(function(e,t){typeof p7=="object"&&typeof hje!="undefined"?t(p7,oje(),h7(),uje(),fje()):typeof define=="function"&&define.amd?define(["exports","d3-quadtree","d3-collection","d3-dispatch","d3-timer"],t):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,e.d3)})(p7,function(e,t,r,n,i){"use strict";function a(C,M){var p;C==null&&(C=0),M==null&&(M=0);function P(){var T,F=p.length,q,V=0,H=0;for(T=0;TN.index){var Re=W-ze.x-ze.vx,ce=re-ze.y-ze.vy,Ge=Re*Re+ce*ce;GeW+me||Eere+me||AeH.r&&(H.r=H[X].r)}function V(){if(M){var H,X=M.length,G;for(p=new Array(X),H=0;H1?(_e==null?V.remove(ae):V.set(ae,re(_e)),M):V.get(ae)},find:function(ae,_e,Me){var ke=0,ge=C.length,ie,Te,Ee,Ae,ze;for(Me==null?Me=1/0:Me*=Me,ke=0;ke1?(X.on(ae,_e),M):X.on(ae)}}}function k(){var C,M,p,P=o(-30),T,F=1,q=1/0,V=.81;function H(W){var re,ae=C.length,_e=t.quadtree(C,v,x).visitAfter(G);for(p=W,re=0;re=q)return;(W.data!==M||W.next)&&(Me===0&&(Me=s(),ie+=Me*Me),ke===0&&(ke=s(),ie+=ke*ke),ie{(function(e,t){typeof g7=="object"&&typeof vje!="undefined"?t(g7):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.d3=e.d3||{}))})(g7,function(e){"use strict";var t=Math.PI,r=2*t,n=1e-6,i=r-n;function a(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function o(){return new a}a.prototype=o.prototype={constructor:a,moveTo:function(s,l){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(s,l){this._+="L"+(this._x1=+s)+","+(this._y1=+l)},quadraticCurveTo:function(s,l,u,c){this._+="Q"+ +s+","+ +l+","+(this._x1=+u)+","+(this._y1=+c)},bezierCurveTo:function(s,l,u,c,f,h){this._+="C"+ +s+","+ +l+","+ +u+","+ +c+","+(this._x1=+f)+","+(this._y1=+h)},arcTo:function(s,l,u,c,f){s=+s,l=+l,u=+u,c=+c,f=+f;var h=this._x1,d=this._y1,v=u-s,x=c-l,b=h-s,g=d-l,E=b*b+g*g;if(f<0)throw new Error("negative radius: "+f);if(this._x1===null)this._+="M"+(this._x1=s)+","+(this._y1=l);else if(E>n)if(!(Math.abs(g*v-x*b)>n)||!f)this._+="L"+(this._x1=s)+","+(this._y1=l);else{var k=u-h,A=c-d,L=v*v+x*x,_=k*k+A*A,C=Math.sqrt(L),M=Math.sqrt(E),p=f*Math.tan((t-Math.acos((L+E-_)/(2*C*M)))/2),P=p/M,T=p/C;Math.abs(P-1)>n&&(this._+="L"+(s+P*b)+","+(l+P*g)),this._+="A"+f+","+f+",0,0,"+ +(g*k>b*A)+","+(this._x1=s+T*v)+","+(this._y1=l+T*x)}},arc:function(s,l,u,c,f,h){s=+s,l=+l,u=+u,h=!!h;var d=u*Math.cos(c),v=u*Math.sin(c),x=s+d,b=l+v,g=1^h,E=h?c-f:f-c;if(u<0)throw new Error("negative radius: "+u);this._x1===null?this._+="M"+x+","+b:(Math.abs(this._x1-x)>n||Math.abs(this._y1-b)>n)&&(this._+="L"+x+","+b),u&&(E<0&&(E=E%r+r),E>i?this._+="A"+u+","+u+",0,1,"+g+","+(s-d)+","+(l-v)+"A"+u+","+u+",0,1,"+g+","+(this._x1=x)+","+(this._y1=b):E>n&&(this._+="A"+u+","+u+",0,"+ +(E>=t)+","+g+","+(this._x1=s+u*Math.cos(f))+","+(this._y1=l+u*Math.sin(f))))},rect:function(s,l,u,c){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)+"h"+ +u+"v"+ +c+"h"+-u+"Z"},toString:function(){return this._}},e.path=o,Object.defineProperty(e,"__esModule",{value:!0})})});var CJ=ye((m7,gje)=>{(function(e,t){typeof m7=="object"&&typeof gje!="undefined"?t(m7,pje()):typeof define=="function"&&define.amd?define(["exports","d3-path"],t):(e=e||self,t(e.d3=e.d3||{},e.d3))})(m7,function(e,t){"use strict";function r(_t){return function(){return _t}}var n=Math.abs,i=Math.atan2,a=Math.cos,o=Math.max,s=Math.min,l=Math.sin,u=Math.sqrt,c=1e-12,f=Math.PI,h=f/2,d=2*f;function v(_t){return _t>1?0:_t<-1?f:Math.acos(_t)}function x(_t){return _t>=1?h:_t<=-1?-h:Math.asin(_t)}function b(_t){return _t.innerRadius}function g(_t){return _t.outerRadius}function E(_t){return _t.startAngle}function k(_t){return _t.endAngle}function A(_t){return _t&&_t.padAngle}function L(_t,br,Hr,ti,zi,Yi,an,hi){var Ji=Hr-_t,ua=ti-br,Fn=an-zi,Sa=hi-Yi,go=Sa*Ji-Fn*ua;if(!(go*go$l*$l+Hu*Hu&&(Cs=Ys,ml=Hs),{cx:Cs,cy:ml,x01:-Fn,y01:-Sa,x11:Cs*(zi/wl-1),y11:ml*(zi/wl-1)}}function C(){var _t=b,br=g,Hr=r(0),ti=null,zi=E,Yi=k,an=A,hi=null;function Ji(){var ua,Fn,Sa=+_t.apply(this,arguments),go=+br.apply(this,arguments),Oo=zi.apply(this,arguments)-h,ho=Yi.apply(this,arguments)-h,Mo=n(ho-Oo),xo=ho>Oo;if(hi||(hi=ua=t.path()),goc))hi.moveTo(0,0);else if(Mo>d-c)hi.moveTo(go*a(Oo),go*l(Oo)),hi.arc(0,0,go,Oo,ho,!xo),Sa>c&&(hi.moveTo(Sa*a(ho),Sa*l(ho)),hi.arc(0,0,Sa,ho,Oo,xo));else{var zs=Oo,ks=ho,Zs=Oo,Xs=ho,wl=Mo,os=Mo,cl=an.apply(this,arguments)/2,Cs=cl>c&&(ti?+ti.apply(this,arguments):u(Sa*Sa+go*go)),ml=s(n(go-Sa)/2,+Hr.apply(this,arguments)),Ys=ml,Hs=ml,Eo,fs;if(Cs>c){var $l=x(Cs/Sa*l(cl)),Hu=x(Cs/go*l(cl));(wl-=$l*2)>c?($l*=xo?1:-1,Zs+=$l,Xs-=$l):(wl=0,Zs=Xs=(Oo+ho)/2),(os-=Hu*2)>c?(Hu*=xo?1:-1,zs+=Hu,ks-=Hu):(os=0,zs=ks=(Oo+ho)/2)}var fc=go*a(zs),ms=go*l(zs),on=Sa*a(Xs),fa=Sa*l(Xs);if(ml>c){var Qu=go*a(ks),Il=go*l(ks),vo=Sa*a(Zs),Wl=Sa*l(Zs),Ks;if(Moc?Hs>c?(Eo=_(vo,Wl,fc,ms,go,Hs,xo),fs=_(Qu,Il,on,fa,go,Hs,xo),hi.moveTo(Eo.cx+Eo.x01,Eo.cy+Eo.y01),Hsc)||!(wl>c)?hi.lineTo(on,fa):Ys>c?(Eo=_(on,fa,Qu,Il,Sa,-Ys,xo),fs=_(fc,ms,vo,Wl,Sa,-Ys,xo),hi.lineTo(Eo.cx+Eo.x01,Eo.cy+Eo.y01),Ys=go;--Oo)hi.point(ks[Oo],Zs[Oo]);hi.lineEnd(),hi.areaEnd()}xo&&(ks[Sa]=+_t(Mo,Sa,Fn),Zs[Sa]=+Hr(Mo,Sa,Fn),hi.point(br?+br(Mo,Sa,Fn):ks[Sa],ti?+ti(Mo,Sa,Fn):Zs[Sa]))}if(zs)return hi=null,zs+""||null}function ua(){return F().defined(zi).curve(an).context(Yi)}return Ji.x=function(Fn){return arguments.length?(_t=typeof Fn=="function"?Fn:r(+Fn),br=null,Ji):_t},Ji.x0=function(Fn){return arguments.length?(_t=typeof Fn=="function"?Fn:r(+Fn),Ji):_t},Ji.x1=function(Fn){return arguments.length?(br=Fn==null?null:typeof Fn=="function"?Fn:r(+Fn),Ji):br},Ji.y=function(Fn){return arguments.length?(Hr=typeof Fn=="function"?Fn:r(+Fn),ti=null,Ji):Hr},Ji.y0=function(Fn){return arguments.length?(Hr=typeof Fn=="function"?Fn:r(+Fn),Ji):Hr},Ji.y1=function(Fn){return arguments.length?(ti=Fn==null?null:typeof Fn=="function"?Fn:r(+Fn),Ji):ti},Ji.lineX0=Ji.lineY0=function(){return ua().x(_t).y(Hr)},Ji.lineY1=function(){return ua().x(_t).y(ti)},Ji.lineX1=function(){return ua().x(br).y(Hr)},Ji.defined=function(Fn){return arguments.length?(zi=typeof Fn=="function"?Fn:r(!!Fn),Ji):zi},Ji.curve=function(Fn){return arguments.length?(an=Fn,Yi!=null&&(hi=an(Yi)),Ji):an},Ji.context=function(Fn){return arguments.length?(Fn==null?Yi=hi=null:hi=an(Yi=Fn),Ji):Yi},Ji}function V(_t,br){return br<_t?-1:br>_t?1:br>=_t?0:NaN}function H(_t){return _t}function X(){var _t=H,br=V,Hr=null,ti=r(0),zi=r(d),Yi=r(0);function an(hi){var Ji,ua=hi.length,Fn,Sa,go=0,Oo=new Array(ua),ho=new Array(ua),Mo=+ti.apply(this,arguments),xo=Math.min(d,Math.max(-d,zi.apply(this,arguments)-Mo)),zs,ks=Math.min(Math.abs(xo)/ua,Yi.apply(this,arguments)),Zs=ks*(xo<0?-1:1),Xs;for(Ji=0;Ji0&&(go+=Xs);for(br!=null?Oo.sort(function(wl,os){return br(ho[wl],ho[os])}):Hr!=null&&Oo.sort(function(wl,os){return Hr(hi[wl],hi[os])}),Ji=0,Sa=go?(xo-ua*Zs)/go:0;Ji0?Xs*Sa:0)+Zs,ho[Fn]={data:hi[Fn],index:Ji,value:Xs,startAngle:Mo,endAngle:zs,padAngle:ks};return ho}return an.value=function(hi){return arguments.length?(_t=typeof hi=="function"?hi:r(+hi),an):_t},an.sortValues=function(hi){return arguments.length?(br=hi,Hr=null,an):br},an.sort=function(hi){return arguments.length?(Hr=hi,br=null,an):Hr},an.startAngle=function(hi){return arguments.length?(ti=typeof hi=="function"?hi:r(+hi),an):ti},an.endAngle=function(hi){return arguments.length?(zi=typeof hi=="function"?hi:r(+hi),an):zi},an.padAngle=function(hi){return arguments.length?(Yi=typeof hi=="function"?hi:r(+hi),an):Yi},an}var G=W(p);function N(_t){this._curve=_t}N.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(_t,br){this._curve.point(br*Math.sin(_t),br*-Math.cos(_t))}};function W(_t){function br(Hr){return new N(_t(Hr))}return br._curve=_t,br}function re(_t){var br=_t.curve;return _t.angle=_t.x,delete _t.x,_t.radius=_t.y,delete _t.y,_t.curve=function(Hr){return arguments.length?br(W(Hr)):br()._curve},_t}function ae(){return re(F().curve(G))}function _e(){var _t=q().curve(G),br=_t.curve,Hr=_t.lineX0,ti=_t.lineX1,zi=_t.lineY0,Yi=_t.lineY1;return _t.angle=_t.x,delete _t.x,_t.startAngle=_t.x0,delete _t.x0,_t.endAngle=_t.x1,delete _t.x1,_t.radius=_t.y,delete _t.y,_t.innerRadius=_t.y0,delete _t.y0,_t.outerRadius=_t.y1,delete _t.y1,_t.lineStartAngle=function(){return re(Hr())},delete _t.lineX0,_t.lineEndAngle=function(){return re(ti())},delete _t.lineX1,_t.lineInnerRadius=function(){return re(zi())},delete _t.lineY0,_t.lineOuterRadius=function(){return re(Yi())},delete _t.lineY1,_t.curve=function(an){return arguments.length?br(W(an)):br()._curve},_t}function Me(_t,br){return[(br=+br)*Math.cos(_t-=Math.PI/2),br*Math.sin(_t)]}var ke=Array.prototype.slice;function ge(_t){return _t.source}function ie(_t){return _t.target}function Te(_t){var br=ge,Hr=ie,ti=P,zi=T,Yi=null;function an(){var hi,Ji=ke.call(arguments),ua=br.apply(this,Ji),Fn=Hr.apply(this,Ji);if(Yi||(Yi=hi=t.path()),_t(Yi,+ti.apply(this,(Ji[0]=ua,Ji)),+zi.apply(this,Ji),+ti.apply(this,(Ji[0]=Fn,Ji)),+zi.apply(this,Ji)),hi)return Yi=null,hi+""||null}return an.source=function(hi){return arguments.length?(br=hi,an):br},an.target=function(hi){return arguments.length?(Hr=hi,an):Hr},an.x=function(hi){return arguments.length?(ti=typeof hi=="function"?hi:r(+hi),an):ti},an.y=function(hi){return arguments.length?(zi=typeof hi=="function"?hi:r(+hi),an):zi},an.context=function(hi){return arguments.length?(Yi=hi==null?null:hi,an):Yi},an}function Ee(_t,br,Hr,ti,zi){_t.moveTo(br,Hr),_t.bezierCurveTo(br=(br+ti)/2,Hr,br,zi,ti,zi)}function Ae(_t,br,Hr,ti,zi){_t.moveTo(br,Hr),_t.bezierCurveTo(br,Hr=(Hr+zi)/2,ti,Hr,ti,zi)}function ze(_t,br,Hr,ti,zi){var Yi=Me(br,Hr),an=Me(br,Hr=(Hr+zi)/2),hi=Me(ti,Hr),Ji=Me(ti,zi);_t.moveTo(Yi[0],Yi[1]),_t.bezierCurveTo(an[0],an[1],hi[0],hi[1],Ji[0],Ji[1])}function Ce(){return Te(Ee)}function me(){return Te(Ae)}function Re(){var _t=Te(ze);return _t.angle=_t.x,delete _t.x,_t.radius=_t.y,delete _t.y,_t}var ce={draw:function(_t,br){var Hr=Math.sqrt(br/f);_t.moveTo(Hr,0),_t.arc(0,0,Hr,0,d)}},Ge={draw:function(_t,br){var Hr=Math.sqrt(br/5)/2;_t.moveTo(-3*Hr,-Hr),_t.lineTo(-Hr,-Hr),_t.lineTo(-Hr,-3*Hr),_t.lineTo(Hr,-3*Hr),_t.lineTo(Hr,-Hr),_t.lineTo(3*Hr,-Hr),_t.lineTo(3*Hr,Hr),_t.lineTo(Hr,Hr),_t.lineTo(Hr,3*Hr),_t.lineTo(-Hr,3*Hr),_t.lineTo(-Hr,Hr),_t.lineTo(-3*Hr,Hr),_t.closePath()}},nt=Math.sqrt(1/3),ct=nt*2,qt={draw:function(_t,br){var Hr=Math.sqrt(br/ct),ti=Hr*nt;_t.moveTo(0,-Hr),_t.lineTo(ti,0),_t.lineTo(0,Hr),_t.lineTo(-ti,0),_t.closePath()}},rt=.8908130915292852,ot=Math.sin(f/10)/Math.sin(7*f/10),Rt=Math.sin(d/10)*ot,kt=-Math.cos(d/10)*ot,Ct={draw:function(_t,br){var Hr=Math.sqrt(br*rt),ti=Rt*Hr,zi=kt*Hr;_t.moveTo(0,-Hr),_t.lineTo(ti,zi);for(var Yi=1;Yi<5;++Yi){var an=d*Yi/5,hi=Math.cos(an),Ji=Math.sin(an);_t.lineTo(Ji*Hr,-hi*Hr),_t.lineTo(hi*ti-Ji*zi,Ji*ti+hi*zi)}_t.closePath()}},Yt={draw:function(_t,br){var Hr=Math.sqrt(br),ti=-Hr/2;_t.rect(ti,ti,Hr,Hr)}},xr=Math.sqrt(3),er={draw:function(_t,br){var Hr=-Math.sqrt(br/(xr*3));_t.moveTo(0,Hr*2),_t.lineTo(-xr*Hr,-Hr),_t.lineTo(xr*Hr,-Hr),_t.closePath()}},Ke=-.5,xt=Math.sqrt(3)/2,bt=1/Math.sqrt(12),Lt=(bt/2+1)*3,St={draw:function(_t,br){var Hr=Math.sqrt(br/Lt),ti=Hr/2,zi=Hr*bt,Yi=ti,an=Hr*bt+Hr,hi=-Yi,Ji=an;_t.moveTo(ti,zi),_t.lineTo(Yi,an),_t.lineTo(hi,Ji),_t.lineTo(Ke*ti-xt*zi,xt*ti+Ke*zi),_t.lineTo(Ke*Yi-xt*an,xt*Yi+Ke*an),_t.lineTo(Ke*hi-xt*Ji,xt*hi+Ke*Ji),_t.lineTo(Ke*ti+xt*zi,Ke*zi-xt*ti),_t.lineTo(Ke*Yi+xt*an,Ke*an-xt*Yi),_t.lineTo(Ke*hi+xt*Ji,Ke*Ji-xt*hi),_t.closePath()}},Et=[ce,Ge,qt,Yt,Ct,er,St];function dt(){var _t=r(ce),br=r(64),Hr=null;function ti(){var zi;if(Hr||(Hr=zi=t.path()),_t.apply(this,arguments).draw(Hr,+br.apply(this,arguments)),zi)return Hr=null,zi+""||null}return ti.type=function(zi){return arguments.length?(_t=typeof zi=="function"?zi:r(zi),ti):_t},ti.size=function(zi){return arguments.length?(br=typeof zi=="function"?zi:r(+zi),ti):br},ti.context=function(zi){return arguments.length?(Hr=zi==null?null:zi,ti):Hr},ti}function Ht(){}function $t(_t,br,Hr){_t._context.bezierCurveTo((2*_t._x0+_t._x1)/3,(2*_t._y0+_t._y1)/3,(_t._x0+2*_t._x1)/3,(_t._y0+2*_t._y1)/3,(_t._x0+4*_t._x1+br)/6,(_t._y0+4*_t._y1+Hr)/6)}function fr(_t){this._context=_t}fr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:$t(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function _r(_t){return new fr(_t)}function Br(_t){this._context=_t}Br.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._x2=_t,this._y2=br;break;case 1:this._point=2,this._x3=_t,this._y3=br;break;case 2:this._point=3,this._x4=_t,this._y4=br,this._context.moveTo((this._x0+4*this._x1+_t)/6,(this._y0+4*this._y1+br)/6);break;default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function Or(_t){return new Br(_t)}function Nr(_t){this._context=_t}Nr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var Hr=(this._x0+4*this._x1+_t)/6,ti=(this._y0+4*this._y1+br)/6;this._line?this._context.lineTo(Hr,ti):this._context.moveTo(Hr,ti);break;case 3:this._point=4;default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function ut(_t){return new Nr(_t)}function Ne(_t,br){this._basis=new fr(_t),this._beta=br}Ne.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var _t=this._x,br=this._y,Hr=_t.length-1;if(Hr>0)for(var ti=_t[0],zi=br[0],Yi=_t[Hr]-ti,an=br[Hr]-zi,hi=-1,Ji;++hi<=Hr;)Ji=hi/Hr,this._basis.point(this._beta*_t[hi]+(1-this._beta)*(ti+Ji*Yi),this._beta*br[hi]+(1-this._beta)*(zi+Ji*an));this._x=this._y=null,this._basis.lineEnd()},point:function(_t,br){this._x.push(+_t),this._y.push(+br)}};var Ye=function _t(br){function Hr(ti){return br===1?new fr(ti):new Ne(ti,br)}return Hr.beta=function(ti){return _t(+ti)},Hr}(.85);function Ve(_t,br,Hr){_t._context.bezierCurveTo(_t._x1+_t._k*(_t._x2-_t._x0),_t._y1+_t._k*(_t._y2-_t._y0),_t._x2+_t._k*(_t._x1-br),_t._y2+_t._k*(_t._y1-Hr),_t._x2,_t._y2)}function Xe(_t,br){this._context=_t,this._k=(1-br)/6}Xe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ve(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2,this._x1=_t,this._y1=br;break;case 2:this._point=3;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ht=function _t(br){function Hr(ti){return new Xe(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Le(_t,br){this._context=_t,this._k=(1-br)/6}Le.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._x3=_t,this._y3=br;break;case 1:this._point=2,this._context.moveTo(this._x4=_t,this._y4=br);break;case 2:this._point=3,this._x5=_t,this._y5=br;break;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var xe=function _t(br){function Hr(ti){return new Le(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Se(_t,br){this._context=_t,this._k=(1-br)/6}Se.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var lt=function _t(br){function Hr(ti){return new Se(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Gt(_t,br,Hr){var ti=_t._x1,zi=_t._y1,Yi=_t._x2,an=_t._y2;if(_t._l01_a>c){var hi=2*_t._l01_2a+3*_t._l01_a*_t._l12_a+_t._l12_2a,Ji=3*_t._l01_a*(_t._l01_a+_t._l12_a);ti=(ti*hi-_t._x0*_t._l12_2a+_t._x2*_t._l01_2a)/Ji,zi=(zi*hi-_t._y0*_t._l12_2a+_t._y2*_t._l01_2a)/Ji}if(_t._l23_a>c){var ua=2*_t._l23_2a+3*_t._l23_a*_t._l12_a+_t._l12_2a,Fn=3*_t._l23_a*(_t._l23_a+_t._l12_a);Yi=(Yi*ua+_t._x1*_t._l23_2a-br*_t._l12_2a)/Fn,an=(an*ua+_t._y1*_t._l23_2a-Hr*_t._l12_2a)/Fn}_t._context.bezierCurveTo(ti,zi,Yi,an,_t._x2,_t._y2)}function Vt(_t,br){this._context=_t,this._alpha=br}Vt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ar=function _t(br){function Hr(ti){return br?new Vt(ti,br):new Xe(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function Qr(_t,br){this._context=_t,this._alpha=br}Qr.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=_t,this._y3=br;break;case 1:this._point=2,this._context.moveTo(this._x4=_t,this._y4=br);break;case 2:this._point=3,this._x5=_t,this._y5=br;break;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ai=function _t(br){function Hr(ti){return br?new Qr(ti,br):new Le(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function jr(_t,br){this._context=_t,this._alpha=br}jr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ri=function _t(br){function Hr(ti){return br?new jr(ti,br):new Se(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function bi(_t){this._context=_t}bi.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(_t,br){_t=+_t,br=+br,this._point?this._context.lineTo(_t,br):(this._point=1,this._context.moveTo(_t,br))}};function nn(_t){return new bi(_t)}function Wi(_t){return _t<0?-1:1}function Ni(_t,br,Hr){var ti=_t._x1-_t._x0,zi=br-_t._x1,Yi=(_t._y1-_t._y0)/(ti||zi<0&&-0),an=(Hr-_t._y1)/(zi||ti<0&&-0),hi=(Yi*zi+an*ti)/(ti+zi);return(Wi(Yi)+Wi(an))*Math.min(Math.abs(Yi),Math.abs(an),.5*Math.abs(hi))||0}function _n(_t,br){var Hr=_t._x1-_t._x0;return Hr?(3*(_t._y1-_t._y0)/Hr-br)/2:br}function $i(_t,br,Hr){var ti=_t._x0,zi=_t._y0,Yi=_t._x1,an=_t._y1,hi=(Yi-ti)/3;_t._context.bezierCurveTo(ti+hi,zi+hi*br,Yi-hi,an-hi*Hr,Yi,an)}function zn(_t){this._context=_t}zn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:$i(this,this._t0,_n(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){var Hr=NaN;if(_t=+_t,br=+br,!(_t===this._x1&&br===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3,$i(this,_n(this,Hr=Ni(this,_t,br)),Hr);break;default:$i(this,this._t0,Hr=Ni(this,_t,br));break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br,this._t0=Hr}}};function Wn(_t){this._context=new It(_t)}(Wn.prototype=Object.create(zn.prototype)).point=function(_t,br){zn.prototype.point.call(this,br,_t)};function It(_t){this._context=_t}It.prototype={moveTo:function(_t,br){this._context.moveTo(br,_t)},closePath:function(){this._context.closePath()},lineTo:function(_t,br){this._context.lineTo(br,_t)},bezierCurveTo:function(_t,br,Hr,ti,zi,Yi){this._context.bezierCurveTo(br,_t,ti,Hr,Yi,zi)}};function ft(_t){return new zn(_t)}function jt(_t){return new Wn(_t)}function Zt(_t){this._context=_t}Zt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var _t=this._x,br=this._y,Hr=_t.length;if(Hr)if(this._line?this._context.lineTo(_t[0],br[0]):this._context.moveTo(_t[0],br[0]),Hr===2)this._context.lineTo(_t[1],br[1]);else for(var ti=yr(_t),zi=yr(br),Yi=0,an=1;an=0;--br)zi[br]=(an[br]-zi[br+1])/Yi[br];for(Yi[Hr-1]=(_t[Hr]+zi[Hr-1])/2,br=0;br=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,br),this._context.lineTo(_t,br);else{var Hr=this._x*(1-this._t)+_t*this._t;this._context.lineTo(Hr,this._y),this._context.lineTo(Hr,br)}break}}this._x=_t,this._y=br}};function Vr(_t){return new Zr(_t,.5)}function gi(_t){return new Zr(_t,0)}function Si(_t){return new Zr(_t,1)}function Mi(_t,br){if((an=_t.length)>1)for(var Hr=1,ti,zi,Yi=_t[br[0]],an,hi=Yi.length;Hr=0;)Hr[br]=br;return Hr}function Gi(_t,br){return _t[br]}function Ki(){var _t=r([]),br=Pi,Hr=Mi,ti=Gi;function zi(Yi){var an=_t.apply(this,arguments),hi,Ji=Yi.length,ua=an.length,Fn=new Array(ua),Sa;for(hi=0;hi0){for(var Hr,ti,zi=0,Yi=_t[0].length,an;zi0)for(var Hr,ti=0,zi,Yi,an,hi,Ji,ua=_t[br[0]].length;ti0?(zi[0]=an,zi[1]=an+=Yi):Yi<0?(zi[1]=hi,zi[0]=hi+=Yi):(zi[0]=0,zi[1]=Yi)}function la(_t,br){if((zi=_t.length)>0){for(var Hr=0,ti=_t[br[0]],zi,Yi=ti.length;Hr0)||!((Yi=(zi=_t[br[0]]).length)>0))){for(var Hr=0,ti=1,zi,Yi,an;tiYi&&(Yi=zi,Hr=br);return Hr}function oa(_t){var br=_t.map(Sn);return Pi(_t).sort(function(Hr,ti){return br[Hr]-br[ti]})}function Sn(_t){for(var br=0,Hr=-1,ti=_t.length,zi;++Hr{(function(e,t){typeof y7=="object"&&typeof mje!="undefined"?t(y7,JE(),h7(),CJ()):typeof define=="function"&&define.amd?define(["exports","d3-array","d3-collection","d3-shape"],t):t(e.d3=e.d3||{},e.d3,e.d3,e.d3)})(y7,function(e,t,r,n){"use strict";function i(p){return p.target.depth}function a(p){return p.depth}function o(p,P){return P-1-p.height}function s(p,P){return p.sourceLinks.length?p.depth:P-1}function l(p){return p.targetLinks.length?p.depth:p.sourceLinks.length?t.min(p.sourceLinks,i)-1:0}function u(p){return function(){return p}}function c(p,P){return h(p.source,P.source)||p.index-P.index}function f(p,P){return h(p.target,P.target)||p.index-P.index}function h(p,P){return p.y0-P.y0}function d(p){return p.value}function v(p){return(p.y0+p.y1)/2}function x(p){return v(p.source)*p.value}function b(p){return v(p.target)*p.value}function g(p){return p.index}function E(p){return p.nodes}function k(p){return p.links}function A(p,P){var T=p.get(P);if(!T)throw new Error("missing: "+P);return T}var L=function(){var p=0,P=0,T=1,F=1,q=24,V=8,H=g,X=s,G=E,N=k,W=32,re=2/3;function ae(){var Te={nodes:G.apply(null,arguments),links:N.apply(null,arguments)};return _e(Te),Me(Te),ke(Te),ge(Te,W),ie(Te),Te}ae.update=function(Te){return ie(Te),Te},ae.nodeId=function(Te){return arguments.length?(H=typeof Te=="function"?Te:u(Te),ae):H},ae.nodeAlign=function(Te){return arguments.length?(X=typeof Te=="function"?Te:u(Te),ae):X},ae.nodeWidth=function(Te){return arguments.length?(q=+Te,ae):q},ae.nodePadding=function(Te){return arguments.length?(V=+Te,ae):V},ae.nodes=function(Te){return arguments.length?(G=typeof Te=="function"?Te:u(Te),ae):G},ae.links=function(Te){return arguments.length?(N=typeof Te=="function"?Te:u(Te),ae):N},ae.size=function(Te){return arguments.length?(p=P=0,T=+Te[0],F=+Te[1],ae):[T-p,F-P]},ae.extent=function(Te){return arguments.length?(p=+Te[0][0],T=+Te[1][0],P=+Te[0][1],F=+Te[1][1],ae):[[p,P],[T,F]]},ae.iterations=function(Te){return arguments.length?(W=+Te,ae):W};function _e(Te){Te.nodes.forEach(function(Ae,ze){Ae.index=ze,Ae.sourceLinks=[],Ae.targetLinks=[]});var Ee=r.map(Te.nodes,H);Te.links.forEach(function(Ae,ze){Ae.index=ze;var Ce=Ae.source,me=Ae.target;typeof Ce!="object"&&(Ce=Ae.source=A(Ee,Ce)),typeof me!="object"&&(me=Ae.target=A(Ee,me)),Ce.sourceLinks.push(Ae),me.targetLinks.push(Ae)})}function Me(Te){Te.nodes.forEach(function(Ee){Ee.value=Math.max(t.sum(Ee.sourceLinks,d),t.sum(Ee.targetLinks,d))})}function ke(Te){var Ee,Ae,ze;for(Ee=Te.nodes,Ae=[],ze=0;Ee.length;++ze,Ee=Ae,Ae=[])Ee.forEach(function(me){me.depth=ze,me.sourceLinks.forEach(function(Re){Ae.indexOf(Re.target)<0&&Ae.push(Re.target)})});for(Ee=Te.nodes,Ae=[],ze=0;Ee.length;++ze,Ee=Ae,Ae=[])Ee.forEach(function(me){me.height=ze,me.targetLinks.forEach(function(Re){Ae.indexOf(Re.source)<0&&Ae.push(Re.source)})});var Ce=(T-p-q)/(ze-1);Te.nodes.forEach(function(me){me.x1=(me.x0=p+Math.max(0,Math.min(ze-1,Math.floor(X.call(null,me,ze))))*Ce)+q})}function ge(Te){var Ee=r.nest().key(function(Ge){return Ge.x0}).sortKeys(t.ascending).entries(Te.nodes).map(function(Ge){return Ge.values});Ce(),ce();for(var Ae=1,ze=W;ze>0;--ze)Re(Ae*=.99),ce(),me(Ae),ce();function Ce(){var Ge=t.max(Ee,function(qt){return qt.length}),nt=re*(F-P)/(Ge-1);V>nt&&(V=nt);var ct=t.min(Ee,function(qt){return(F-P-(qt.length-1)*V)/t.sum(qt,d)});Ee.forEach(function(qt){qt.forEach(function(rt,ot){rt.y1=(rt.y0=ot)+rt.value*ct})}),Te.links.forEach(function(qt){qt.width=qt.value*ct})}function me(Ge){Ee.forEach(function(nt){nt.forEach(function(ct){if(ct.targetLinks.length){var qt=(t.sum(ct.targetLinks,x)/t.sum(ct.targetLinks,d)-v(ct))*Ge;ct.y0+=qt,ct.y1+=qt}})})}function Re(Ge){Ee.slice().reverse().forEach(function(nt){nt.forEach(function(ct){if(ct.sourceLinks.length){var qt=(t.sum(ct.sourceLinks,b)/t.sum(ct.sourceLinks,d)-v(ct))*Ge;ct.y0+=qt,ct.y1+=qt}})})}function ce(){Ee.forEach(function(Ge){var nt,ct,qt=P,rt=Ge.length,ot;for(Ge.sort(h),ot=0;ot0&&(nt.y0+=ct,nt.y1+=ct),qt=nt.y1+V;if(ct=qt-V-F,ct>0)for(qt=nt.y0-=ct,nt.y1-=ct,ot=rt-2;ot>=0;--ot)nt=Ge[ot],ct=nt.y1+V-qt,ct>0&&(nt.y0-=ct,nt.y1-=ct),qt=nt.y0})}}function ie(Te){Te.nodes.forEach(function(Ee){Ee.sourceLinks.sort(f),Ee.targetLinks.sort(c)}),Te.nodes.forEach(function(Ee){var Ae=Ee.y0,ze=Ae;Ee.sourceLinks.forEach(function(Ce){Ce.y0=Ae+Ce.width/2,Ae+=Ce.width}),Ee.targetLinks.forEach(function(Ce){Ce.y1=ze+Ce.width/2,ze+=Ce.width})})}return ae};function _(p){return[p.source.x1,p.y0]}function C(p){return[p.target.x0,p.y1]}var M=function(){return n.linkHorizontal().source(_).target(C)};e.sankey=L,e.sankeyCenter=l,e.sankeyLeft=a,e.sankeyRight=o,e.sankeyJustify=s,e.sankeyLinkHorizontal=M,Object.defineProperty(e,"__esModule",{value:!0})})});var xje=ye((a_r,_je)=>{var gWt=kJ();_je.exports=function(t,r){var n=[],i=[],a=[],o={},s=[],l;function u(k){a[k]=!1,o.hasOwnProperty(k)&&Object.keys(o[k]).forEach(function(A){delete o[k][A],a[A]&&u(A)})}function c(k){var A=!1;i.push(k),a[k]=!0;var L,_;for(L=0;L=k})}function d(k){h(k);for(var A=t,L=gWt(A),_=L.components.filter(function(q){return q.length>1}),C=1/0,M,p=0;p<_.length;p++)for(var P=0;P<_[p].length;P++)_[p][P]{(function(e,t){typeof _7=="object"&&typeof bje!="undefined"?t(_7,JE(),h7(),CJ(),xje()):typeof define=="function"&&define.amd?define(["exports","d3-array","d3-collection","d3-shape","elementary-circuits-directed-graph"],t):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,null)})(_7,function(e,t,r,n,i){"use strict";i=i&&i.hasOwnProperty("default")?i.default:i;function a(rt){return rt.target.depth}function o(rt){return rt.depth}function s(rt,ot){return ot-1-rt.height}function l(rt,ot){return rt.sourceLinks.length?rt.depth:ot-1}function u(rt){return rt.targetLinks.length?rt.depth:rt.sourceLinks.length?t.min(rt.sourceLinks,a)-1:0}function c(rt){return function(){return rt}}var f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(rt){return typeof rt}:function(rt){return rt&&typeof Symbol=="function"&&rt.constructor===Symbol&&rt!==Symbol.prototype?"symbol":typeof rt};function h(rt,ot){return v(rt.source,ot.source)||rt.index-ot.index}function d(rt,ot){return v(rt.target,ot.target)||rt.index-ot.index}function v(rt,ot){return rt.partOfCycle===ot.partOfCycle?rt.y0-ot.y0:rt.circularLinkType==="top"||ot.circularLinkType==="bottom"?-1:1}function x(rt){return rt.value}function b(rt){return(rt.y0+rt.y1)/2}function g(rt){return b(rt.source)}function E(rt){return b(rt.target)}function k(rt){return rt.index}function A(rt){return rt.nodes}function L(rt){return rt.links}function _(rt,ot){var Rt=rt.get(ot);if(!Rt)throw new Error("missing: "+ot);return Rt}function C(rt,ot){return ot(rt)}var M=25,p=10,P=.3;function T(){var rt=0,ot=0,Rt=1,kt=1,Ct=24,Yt,xr=k,er=l,Ke=A,xt=L,bt=32,Lt=2,St,Et=null;function dt(){var ut={nodes:Ke.apply(null,arguments),links:xt.apply(null,arguments)};Ht(ut),F(ut,xr,Et),$t(ut),Br(ut),q(ut,xr),Or(ut,bt,xr),Nr(ut);for(var Ne=4,Ye=0;Ye0?Ne+M+p:Ne,Ye=Ye>0?Ye+M+p:Ye,Ve=Ve>0?Ve+M+p:Ve,Xe=Xe>0?Xe+M+p:Xe,{top:Ne,bottom:Ye,left:Xe,right:Ve}}function _r(ut,Ne){var Ye=t.max(ut.nodes,function(lt){return lt.column}),Ve=Rt-rt,Xe=kt-ot,ht=Ve+Ne.right+Ne.left,Le=Xe+Ne.top+Ne.bottom,xe=Ve/ht,Se=Xe/Le;return rt=rt*xe+Ne.left,Rt=Ne.right==0?Rt:Rt*xe,ot=ot*Se+Ne.top,kt=kt*Se,ut.nodes.forEach(function(lt){lt.x0=rt+lt.column*((Rt-rt-Ct)/Ye),lt.x1=lt.x0+Ct}),Se}function Br(ut){var Ne,Ye,Ve;for(Ne=ut.nodes,Ye=[],Ve=0;Ne.length;++Ve,Ne=Ye,Ye=[])Ne.forEach(function(Xe){Xe.depth=Ve,Xe.sourceLinks.forEach(function(ht){Ye.indexOf(ht.target)<0&&!ht.circular&&Ye.push(ht.target)})});for(Ne=ut.nodes,Ye=[],Ve=0;Ne.length;++Ve,Ne=Ye,Ye=[])Ne.forEach(function(Xe){Xe.height=Ve,Xe.targetLinks.forEach(function(ht){Ye.indexOf(ht.source)<0&&!ht.circular&&Ye.push(ht.source)})});ut.nodes.forEach(function(Xe){Xe.column=Math.floor(er.call(null,Xe,Ve))})}function Or(ut,Ne,Ye){var Ve=r.nest().key(function(lt){return lt.column}).sortKeys(t.ascending).entries(ut.nodes).map(function(lt){return lt.values});Le(Ye),Se();for(var Xe=1,ht=Ne;ht>0;--ht)xe(Xe*=.99,Ye),Se();function Le(lt){if(St){var Gt=1/0;Ve.forEach(function(ai){var jr=kt*St/(ai.length+1);Gt=jr0))if(ai==0&&Qr==1)ri=jr.y1-jr.y0,jr.y0=kt/2-ri/2,jr.y1=kt/2+ri/2;else if(ai==Vt-1&&Qr==1)ri=jr.y1-jr.y0,jr.y0=kt/2-ri/2,jr.y1=kt/2+ri/2;else{var bi=0,nn=t.mean(jr.sourceLinks,E),Wi=t.mean(jr.targetLinks,g);nn&&Wi?bi=(nn+Wi)/2:bi=nn||Wi;var Ni=(bi-b(jr))*lt;jr.y0+=Ni,jr.y1+=Ni}})})}function Se(){Ve.forEach(function(lt){var Gt,Vt,ar=ot,Qr=lt.length,ai;for(lt.sort(v),ai=0;ai0&&(Gt.y0+=Vt,Gt.y1+=Vt),ar=Gt.y1+Yt;if(Vt=ar-Yt-kt,Vt>0)for(ar=Gt.y0-=Vt,Gt.y1-=Vt,ai=Qr-2;ai>=0;--ai)Gt=lt[ai],Vt=Gt.y1+Yt-ar,Vt>0&&(Gt.y0-=Vt,Gt.y1-=Vt),ar=Gt.y0})}}function Nr(ut){ut.nodes.forEach(function(Ne){Ne.sourceLinks.sort(d),Ne.targetLinks.sort(h)}),ut.nodes.forEach(function(Ne){var Ye=Ne.y0,Ve=Ye,Xe=Ne.y1,ht=Xe;Ne.sourceLinks.forEach(function(Le){Le.circular?(Le.y0=Xe-Le.width/2,Xe=Xe-Le.width):(Le.y0=Ye+Le.width/2,Ye+=Le.width)}),Ne.targetLinks.forEach(function(Le){Le.circular?(Le.y1=ht-Le.width/2,ht=ht-Le.width):(Le.y1=Ve+Le.width/2,Ve+=Le.width)})})}return dt}function F(rt,ot,Rt){var kt=0;if(Rt===null){for(var Ct=[],Yt=0;Ytot.source.column)}function X(rt,ot){var Rt=0;rt.sourceLinks.forEach(function(Ct){Rt=Ct.circular&&!ct(Ct,ot)?Rt+1:Rt});var kt=0;return rt.targetLinks.forEach(function(Ct){kt=Ct.circular&&!ct(Ct,ot)?kt+1:kt}),Rt+kt}function G(rt){var ot=rt.source.sourceLinks,Rt=0;ot.forEach(function(Yt){Rt=Yt.circular?Rt+1:Rt});var kt=rt.target.targetLinks,Ct=0;return kt.forEach(function(Yt){Ct=Yt.circular?Ct+1:Ct}),!(Rt>1||Ct>1)}function N(rt,ot,Rt){return rt.sort(ae),rt.forEach(function(kt,Ct){var Yt=0;if(ct(kt,Rt)&&G(kt))kt.circularPathData.verticalBuffer=Yt+kt.width/2;else{var xr=0;for(xr;xrYt?er:Yt}kt.circularPathData.verticalBuffer=Yt+kt.width/2}}),rt}function W(rt,ot,Rt,kt){var Ct=5,Yt=t.min(rt.links,function(Ke){return Ke.source.y0});rt.links.forEach(function(Ke){Ke.circular&&(Ke.circularPathData={})});var xr=rt.links.filter(function(Ke){return Ke.circularLinkType=="top"});N(xr,ot,kt);var er=rt.links.filter(function(Ke){return Ke.circularLinkType=="bottom"});N(er,ot,kt),rt.links.forEach(function(Ke){if(Ke.circular){if(Ke.circularPathData.arcRadius=Ke.width+p,Ke.circularPathData.leftNodeBuffer=Ct,Ke.circularPathData.rightNodeBuffer=Ct,Ke.circularPathData.sourceWidth=Ke.source.x1-Ke.source.x0,Ke.circularPathData.sourceX=Ke.source.x0+Ke.circularPathData.sourceWidth,Ke.circularPathData.targetX=Ke.target.x0,Ke.circularPathData.sourceY=Ke.y0,Ke.circularPathData.targetY=Ke.y1,ct(Ke,kt)&&G(Ke))Ke.circularPathData.leftSmallArcRadius=p+Ke.width/2,Ke.circularPathData.leftLargeArcRadius=p+Ke.width/2,Ke.circularPathData.rightSmallArcRadius=p+Ke.width/2,Ke.circularPathData.rightLargeArcRadius=p+Ke.width/2,Ke.circularLinkType=="bottom"?(Ke.circularPathData.verticalFullExtent=Ke.source.y1+M+Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.rightLargeArcRadius):(Ke.circularPathData.verticalFullExtent=Ke.source.y0-M-Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.rightLargeArcRadius);else{var xt=Ke.source.column,bt=Ke.circularLinkType,Lt=rt.links.filter(function(dt){return dt.source.column==xt&&dt.circularLinkType==bt});Ke.circularLinkType=="bottom"?Lt.sort(Me):Lt.sort(_e);var St=0;Lt.forEach(function(dt,Ht){dt.circularLinkID==Ke.circularLinkID&&(Ke.circularPathData.leftSmallArcRadius=p+Ke.width/2+St,Ke.circularPathData.leftLargeArcRadius=p+Ke.width/2+Ht*ot+St),St=St+dt.width}),xt=Ke.target.column,Lt=rt.links.filter(function(dt){return dt.target.column==xt&&dt.circularLinkType==bt}),Ke.circularLinkType=="bottom"?Lt.sort(ge):Lt.sort(ke),St=0,Lt.forEach(function(dt,Ht){dt.circularLinkID==Ke.circularLinkID&&(Ke.circularPathData.rightSmallArcRadius=p+Ke.width/2+St,Ke.circularPathData.rightLargeArcRadius=p+Ke.width/2+Ht*ot+St),St=St+dt.width}),Ke.circularLinkType=="bottom"?(Ke.circularPathData.verticalFullExtent=Math.max(Rt,Ke.source.y1,Ke.target.y1)+M+Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.rightLargeArcRadius):(Ke.circularPathData.verticalFullExtent=Yt-M-Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.rightLargeArcRadius)}Ke.circularPathData.leftInnerExtent=Ke.circularPathData.sourceX+Ke.circularPathData.leftNodeBuffer,Ke.circularPathData.rightInnerExtent=Ke.circularPathData.targetX-Ke.circularPathData.rightNodeBuffer,Ke.circularPathData.leftFullExtent=Ke.circularPathData.sourceX+Ke.circularPathData.leftLargeArcRadius+Ke.circularPathData.leftNodeBuffer,Ke.circularPathData.rightFullExtent=Ke.circularPathData.targetX-Ke.circularPathData.rightLargeArcRadius-Ke.circularPathData.rightNodeBuffer}if(Ke.circular)Ke.path=re(Ke);else{var Et=n.linkHorizontal().source(function(dt){var Ht=dt.source.x0+(dt.source.x1-dt.source.x0),$t=dt.y0;return[Ht,$t]}).target(function(dt){var Ht=dt.target.x0,$t=dt.y1;return[Ht,$t]});Ke.path=Et(Ke)}})}function re(rt){var ot="";return rt.circularLinkType=="top"?ot="M"+rt.circularPathData.sourceX+" "+rt.circularPathData.sourceY+" L"+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.sourceY+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftSmallArcRadius+" 0 0 0 "+rt.circularPathData.leftFullExtent+" "+(rt.circularPathData.sourceY-rt.circularPathData.leftSmallArcRadius)+" L"+rt.circularPathData.leftFullExtent+" "+rt.circularPathData.verticalLeftInnerExtent+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftLargeArcRadius+" 0 0 0 "+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.verticalFullExtent+" L"+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.verticalFullExtent+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightLargeArcRadius+" 0 0 0 "+rt.circularPathData.rightFullExtent+" "+rt.circularPathData.verticalRightInnerExtent+" L"+rt.circularPathData.rightFullExtent+" "+(rt.circularPathData.targetY-rt.circularPathData.rightSmallArcRadius)+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightSmallArcRadius+" 0 0 0 "+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.targetY+" L"+rt.circularPathData.targetX+" "+rt.circularPathData.targetY:ot="M"+rt.circularPathData.sourceX+" "+rt.circularPathData.sourceY+" L"+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.sourceY+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftSmallArcRadius+" 0 0 1 "+rt.circularPathData.leftFullExtent+" "+(rt.circularPathData.sourceY+rt.circularPathData.leftSmallArcRadius)+" L"+rt.circularPathData.leftFullExtent+" "+rt.circularPathData.verticalLeftInnerExtent+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftLargeArcRadius+" 0 0 1 "+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.verticalFullExtent+" L"+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.verticalFullExtent+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightLargeArcRadius+" 0 0 1 "+rt.circularPathData.rightFullExtent+" "+rt.circularPathData.verticalRightInnerExtent+" L"+rt.circularPathData.rightFullExtent+" "+(rt.circularPathData.targetY+rt.circularPathData.rightSmallArcRadius)+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightSmallArcRadius+" 0 0 1 "+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.targetY+" L"+rt.circularPathData.targetX+" "+rt.circularPathData.targetY,ot}function ae(rt,ot){return ie(rt)==ie(ot)?rt.circularLinkType=="bottom"?Me(rt,ot):_e(rt,ot):ie(ot)-ie(rt)}function _e(rt,ot){return rt.y0-ot.y0}function Me(rt,ot){return ot.y0-rt.y0}function ke(rt,ot){return rt.y1-ot.y1}function ge(rt,ot){return ot.y1-rt.y1}function ie(rt){return rt.target.column-rt.source.column}function Te(rt){return rt.target.x0-rt.source.x1}function Ee(rt,ot){var Rt=V(rt),kt=Te(ot)/Math.tan(Rt),Ct=nt(rt)=="up"?rt.y1+kt:rt.y1-kt;return Ct}function Ae(rt,ot){var Rt=V(rt),kt=Te(ot)/Math.tan(Rt),Ct=nt(rt)=="up"?rt.y1-kt:rt.y1+kt;return Ct}function ze(rt,ot,Rt,kt){rt.links.forEach(function(Ct){if(!Ct.circular&&Ct.target.column-Ct.source.column>1){var Yt=Ct.source.column+1,xr=Ct.target.column-1,er=1,Ke=xr-Yt+1;for(er=1;Yt<=xr;Yt++,er++)rt.nodes.forEach(function(xt){if(xt.column==Yt){var bt=er/(Ke+1),Lt=Math.pow(1-bt,3),St=3*bt*Math.pow(1-bt,2),Et=3*Math.pow(bt,2)*(1-bt),dt=Math.pow(bt,3),Ht=Lt*Ct.y0+St*Ct.y0+Et*Ct.y1+dt*Ct.y1,$t=Ht-Ct.width/2,fr=Ht+Ct.width/2,_r;$t>xt.y0&&$txt.y0&&frxt.y1&&me(Br,_r,ot,Rt)})):$txt.y1&&(_r=fr-xt.y0+10,xt=me(xt,_r,ot,Rt),rt.nodes.forEach(function(Br){C(Br,kt)==C(xt,kt)||Br.column!=xt.column||Br.y0xt.y1&&me(Br,_r,ot,Rt)}))}})}})}function Ce(rt,ot){return rt.y0>ot.y0&&rt.y0ot.y0&&rt.y1ot.y1}function me(rt,ot,Rt,kt){return rt.y0+ot>=Rt&&rt.y1+ot<=kt&&(rt.y0=rt.y0+ot,rt.y1=rt.y1+ot,rt.targetLinks.forEach(function(Ct){Ct.y1=Ct.y1+ot}),rt.sourceLinks.forEach(function(Ct){Ct.y0=Ct.y0+ot})),rt}function Re(rt,ot,Rt,kt){rt.nodes.forEach(function(Ct){kt&&Ct.y+(Ct.y1-Ct.y0)>ot&&(Ct.y=Ct.y-(Ct.y+(Ct.y1-Ct.y0)-ot));var Yt=rt.links.filter(function(Ke){return C(Ke.source,Rt)==C(Ct,Rt)}),xr=Yt.length;xr>1&&Yt.sort(function(Ke,xt){if(!Ke.circular&&!xt.circular){if(Ke.target.column==xt.target.column)return Ke.y1-xt.y1;if(Ge(Ke,xt)){if(Ke.target.column>xt.target.column){var bt=Ae(xt,Ke);return Ke.y1-bt}if(xt.target.column>Ke.target.column){var Lt=Ae(Ke,xt);return Lt-xt.y1}}else return Ke.y1-xt.y1}if(Ke.circular&&!xt.circular)return Ke.circularLinkType=="top"?-1:1;if(xt.circular&&!Ke.circular)return xt.circularLinkType=="top"?1:-1;if(Ke.circular&&xt.circular)return Ke.circularLinkType===xt.circularLinkType&&Ke.circularLinkType=="top"?Ke.target.column===xt.target.column?Ke.target.y1-xt.target.y1:xt.target.column-Ke.target.column:Ke.circularLinkType===xt.circularLinkType&&Ke.circularLinkType=="bottom"?Ke.target.column===xt.target.column?xt.target.y1-Ke.target.y1:Ke.target.column-xt.target.column:Ke.circularLinkType=="top"?-1:1});var er=Ct.y0;Yt.forEach(function(Ke){Ke.y0=er+Ke.width/2,er=er+Ke.width}),Yt.forEach(function(Ke,xt){if(Ke.circularLinkType=="bottom"){var bt=xt+1,Lt=0;for(bt;bt1&&Ct.sort(function(er,Ke){if(!er.circular&&!Ke.circular){if(er.source.column==Ke.source.column)return er.y0-Ke.y0;if(Ge(er,Ke)){if(Ke.source.column0?"up":"down"}function ct(rt,ot){return C(rt.source,ot)==C(rt.target,ot)}function qt(rt,ot,Rt){var kt=rt.nodes,Ct=rt.links,Yt=!1,xr=!1;if(Ct.forEach(function(St){St.circularLinkType=="top"?Yt=!0:St.circularLinkType=="bottom"&&(xr=!0)}),Yt==!1||xr==!1){var er=t.min(kt,function(St){return St.y0}),Ke=t.max(kt,function(St){return St.y1}),xt=Ke-er,bt=Rt-ot,Lt=bt/xt;kt.forEach(function(St){var Et=(St.y1-St.y0)*Lt;St.y0=(St.y0-er)*Lt,St.y1=St.y0+Et}),Ct.forEach(function(St){St.y0=(St.y0-er)*Lt,St.y1=(St.y1-er)*Lt,St.width=St.width*Lt})}}e.sankeyCircular=T,e.sankeyCenter=u,e.sankeyLeft=o,e.sankeyRight=s,e.sankeyJustify=l,Object.defineProperty(e,"__esModule",{value:!0})})});var LJ=ye((o_r,Tje)=>{"use strict";Tje.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}});var Fje=ye((s_r,zje)=>{"use strict";var Aje=dje(),mWt=(R2(),ab(I2)).interpolateNumber,LA=xa(),Vk=yje(),yWt=wje(),pu=LJ(),PA=id(),aw=va(),_Wt=ao(),p1=Mr(),RJ=p1.strTranslate,xWt=p1.strRotate,DJ=Km(),Hk=DJ.keyFun,x7=DJ.repeat,Lje=DJ.unwrap,Sje=Ll(),bWt=ba(),Pje=Nh(),wWt=Pje.CAP_SHIFT,TWt=Pje.LINE_SPACING,AWt=3;function SWt(e,t,r){var n=Lje(t),i=n.trace,a=i.domain,o=i.orientation==="h",s=i.node.pad,l=i.node.thickness,u={justify:Vk.sankeyJustify,left:Vk.sankeyLeft,right:Vk.sankeyRight,center:Vk.sankeyCenter}[i.node.align],c=e.width*(a.x[1]-a.x[0]),f=e.height*(a.y[1]-a.y[0]),h=n._nodes,d=n._links,v=n.circular,x;v?x=yWt.sankeyCircular().circularLinkGap(0):x=Vk.sankey(),x.iterations(pu.sankeyIterations).size(o?[c,f]:[f,c]).nodeWidth(l).nodePadding(s).nodeId(function(V){return V.pointNumber}).nodeAlign(u).nodes(h).links(d);var b=x();x.nodePadding()=N||(G=N-X.y0,G>1e-6&&(X.y0+=G,X.y1+=G)),N=X.y1+s})}function P(V){var H=V.map(function(_e,Me){return{x0:_e.x0,index:Me}}).sort(function(_e,Me){return _e.x0-Me.x0}),X=[],G=-1,N,W=-1/0,re;for(g=0;gW+l&&(G+=1,N=ae.x0),W=ae.x0,X[G]||(X[G]=[]),X[G].push(ae),re=N-ae.x0,ae.x0+=re,ae.x1+=re}return X}if(i.node.x.length&&i.node.y.length){for(g=0;g0?" L "+i.targetX+" "+i.targetY:"")+"Z"):(r="M "+(i.targetX-t)+" "+(i.targetY-n)+" L "+(i.rightInnerExtent-t)+" "+(i.targetY-n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightSmallArcRadius+n)+" 0 0 0 "+(i.rightFullExtent-n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" L "+(i.rightFullExtent-n-t)+" "+i.verticalRightInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-n-t)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent+n-t-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:a?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent-t-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.leftFullExtent+n+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent+n)+" L "+i.leftInnerExtent+" "+(i.verticalFullExtent+n)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent,r+=" L "+(i.leftFullExtent+n)+" "+(i.sourceY+i.leftSmallArcRadius)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftSmallArcRadius+n)+" 0 0 0 "+i.leftInnerExtent+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY+n)+" L "+i.leftInnerExtent+" "+(i.sourceY+n)+" A "+(i.leftLargeArcRadius-n)+" "+(i.leftSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n)+" "+(i.sourceY+i.leftSmallArcRadius)+" L "+(i.leftFullExtent-n)+" "+i.verticalLeftInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.rightFullExtent+n-t+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:a?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent-t-n)+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:r+=" A "+(i.leftLargeArcRadius-n)+" "+(i.leftLargeArcRadius-n)+" 0 0 1 "+i.leftInnerExtent+" "+(i.verticalFullExtent-n)+" L "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightLargeArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent,r+=" L "+(i.rightFullExtent+n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightInnerExtent-t)+" "+(i.targetY+n)+" L "+(i.targetX-t)+" "+(i.targetY+n)+(t>0?" L "+i.targetX+" "+i.targetY:"")+"Z"),r}function zJ(){var e=.5;function t(r){var n=r.linkArrowLength;if(r.link.circular)return EWt(r.link,n);var i=Math.abs((r.link.target.x0-r.link.source.x1)/2);n>i&&(n=i);var a=r.link.source.x1,o=r.link.target.x0-n,s=mWt(a,o),l=s(e),u=s(1-e),c=r.link.y0-r.link.width/2,f=r.link.y0+r.link.width/2,h=r.link.y1-r.link.width/2,d=r.link.y1+r.link.width/2,v="M"+a+","+c,x="C"+l+","+c+" "+u+","+h+" "+o+","+h,b="C"+u+","+d+" "+l+","+f+" "+a+","+f,g=n>0?"L"+(o+n)+","+(h+r.link.width/2):"";return g+="L"+o+","+d,v+x+g+b+"Z"}return t}function kWt(e,t){var r=PA(t.color),n=pu.nodePadAcross,i=e.nodePad/2;t.dx=t.x1-t.x0,t.dy=t.y1-t.y0;var a=t.dx,o=Math.max(.5,t.dy),s="node_"+t.pointNumber;return t.group&&(s=p1.randstr()),t.trace=e.trace,t.curveNumber=e.trace.index,{index:t.pointNumber,key:s,partOfGroup:t.partOfGroup||!1,group:t.group,traceId:e.key,trace:e.trace,node:t,nodePad:e.nodePad,nodeLineColor:e.nodeLineColor,nodeLineWidth:e.nodeLineWidth,textFont:e.textFont,size:e.horizontal?e.height:e.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:e.horizontal?t.dy/2+1:t.dx/2+1,left:t.originalLayer===1,sizeAcross:e.width,forceLayouts:e.forceLayouts,horizontal:e.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:aw.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:e.valueFormat,valueSuffix:e.valueSuffix,sankey:e.sankey,graph:e.graph,arrangement:e.arrangement,uniqueNodeLabelPathId:[e.guid,e.key,s].join("_"),interactionState:e.interactionState,figure:e}}function IJ(e){e.attr("transform",function(t){return RJ(t.node.x0.toFixed(3),t.node.y0.toFixed(3))})}function CWt(e){e.call(IJ)}function Ije(e,t){e.call(CWt),t.attr("d",zJ())}function Mje(e){e.attr("width",function(t){return t.node.x1-t.node.x0}).attr("height",function(t){return t.visibleHeight})}function PJ(e){return e.link.width>1||e.linkLineWidth>0}function Eje(e){var t=RJ(e.translateX,e.translateY);return t+(e.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function kje(e,t,r){e.on(".basic",null).on("mouseover.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.hover(this,n,t),n.interactionState.hovered=[this,n])}).on("mousemove.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.follow(this,n),n.interactionState.hovered=[this,n])}).on("mouseout.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.unhover(this,n,t),n.interactionState.hovered=!1)}).on("click.basic",function(n){n.interactionState.hovered&&(r.unhover(this,n,t),n.interactionState.hovered=!1),!n.interactionState.dragInProgress&&!n.partOfGroup&&r.select(this,n,t)})}function LWt(e,t,r,n){var i=LA.behavior.drag().origin(function(a){return{x:a.node.x0+a.visibleWidth/2,y:a.node.y0+a.visibleHeight/2}}).on("dragstart",function(a){if(a.arrangement!=="fixed"&&(p1.ensureSingle(n._fullLayout._infolayer,"g","dragcover",function(s){n._fullLayout._dragCover=s}),p1.raiseToTop(this),a.interactionState.dragInProgress=a.node,Cje(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),a.arrangement==="snap")){var o=a.traceId+"|"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):PWt(e,o,a,n),IWt(e,t,a,o,n)}}).on("drag",function(a){if(a.arrangement!=="fixed"){var o=LA.event.x,s=LA.event.y;a.arrangement==="snap"?(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2,a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2):(a.arrangement==="freeform"&&(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2),s=Math.max(0,Math.min(a.size-a.visibleHeight/2,s)),a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2),Cje(a.node),a.arrangement!=="snap"&&(a.sankey.update(a.graph),Ije(e.filter(Dje(a)),t))}}).on("dragend",function(a){if(a.arrangement!=="fixed"){a.interactionState.dragInProgress=!1;for(var o=0;o0)window.requestAnimationFrame(a);else{var l=r.node.originalX;r.node.x0=l-r.visibleWidth/2,r.node.x1=l+r.visibleWidth/2,Rje(r,i)}})}function RWt(e,t,r,n){return function(){for(var a=0,o=0;o0&&n.forceLayouts[t].alpha(0)}}function Rje(e,t){for(var r=[],n=[],i=0;i{"use strict";var Zv=xa(),qJ=Mr(),b7=qJ.numberFormat,qWt=Fje(),IA=Nc(),OWt=va(),Ax=LJ().cn,Gk=qJ._;function qje(e){return e!==""}function RA(e,t){return e.filter(function(r){return r.key===t.traceId})}function Oje(e,t){Zv.select(e).select("path").style("fill-opacity",t),Zv.select(e).select("rect").style("fill-opacity",t)}function Bje(e){Zv.select(e).select("text.name").style("fill","black")}function Nje(e){return function(t){return e.node.sourceLinks.indexOf(t.link)!==-1||e.node.targetLinks.indexOf(t.link)!==-1}}function Uje(e){return function(t){return t.node.sourceLinks.indexOf(e.link)!==-1||t.node.targetLinks.indexOf(e.link)!==-1}}function Vje(e,t,r){t&&r&&RA(r,t).selectAll("."+Ax.sankeyLink).filter(Nje(t)).call(Hje.bind(0,t,r,!1))}function FJ(e,t,r){t&&r&&RA(r,t).selectAll("."+Ax.sankeyLink).filter(Nje(t)).call(Gje.bind(0,t,r,!1))}function Hje(e,t,r,n){n.style("fill",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverHue}).style("fill-opacity",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverAlpha}),n.each(function(i){var a=i.link.label;a!==""&&RA(t,e).selectAll("."+Ax.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverHue}).style("fill-opacity",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverAlpha})}),r&&RA(t,e).selectAll("."+Ax.sankeyNode).filter(Uje(e)).call(Vje)}function Gje(e,t,r,n){n.style("fill",function(i){return i.tinyColorHue}).style("fill-opacity",function(i){return i.tinyColorAlpha}),n.each(function(i){var a=i.link.label;a!==""&&RA(t,e).selectAll("."+Ax.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){return o.tinyColorHue}).style("fill-opacity",function(o){return o.tinyColorAlpha})}),r&&RA(t,e).selectAll(Ax.sankeyNode).filter(Uje(e)).call(FJ)}function lf(e,t){var r=e.hoverlabel||{},n=qJ.nestedProperty(r,t).get();return Array.isArray(n)?!1:n}jje.exports=function(t,r){for(var n=t._fullLayout,i=n._paper,a=n._size,o=0;o"),color:lf(C,"bgcolor")||OWt.addOpacity(F.color,1),borderColor:lf(C,"bordercolor"),fontFamily:lf(C,"font.family"),fontSize:lf(C,"font.size"),fontColor:lf(C,"font.color"),fontWeight:lf(C,"font.weight"),fontStyle:lf(C,"font.style"),fontVariant:lf(C,"font.variant"),fontTextcase:lf(C,"font.textcase"),fontLineposition:lf(C,"font.lineposition"),fontShadow:lf(C,"font.shadow"),nameLength:lf(C,"namelength"),textAlign:lf(C,"align"),idealAlign:Zv.event.x"),color:lf(C,"bgcolor")||_.tinyColorHue,borderColor:lf(C,"bordercolor"),fontFamily:lf(C,"font.family"),fontSize:lf(C,"font.size"),fontColor:lf(C,"font.color"),fontWeight:lf(C,"font.weight"),fontStyle:lf(C,"font.style"),fontVariant:lf(C,"font.variant"),fontTextcase:lf(C,"font.textcase"),fontLineposition:lf(C,"font.lineposition"),fontShadow:lf(C,"font.shadow"),nameLength:lf(C,"namelength"),textAlign:lf(C,"align"),idealAlign:"left",hovertemplate:C.hovertemplate,hovertemplateLabels:V,eventData:[_.node]},{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:t});Oje(G,.85),Bje(G)}}},A=function(L,_,C){t._fullLayout.hovermode!==!1&&(Zv.select(L).call(FJ,_,C),_.node.trace.node.hoverinfo!=="skip"&&(_.node.fullData=_.node.trace,t.emit("plotly_unhover",{event:Zv.event,points:[_.node]})),IA.loneUnhover(n._hoverlayer.node()))};qWt(t,i,r,{width:a.w,height:a.h,margin:{t:a.t,r:a.r,b:a.b,l:a.l}},{linkEvents:{hover:u,follow:x,unhover:b,select:l},nodeEvents:{hover:E,follow:k,unhover:A,select:g}})}});var Wje=ye(ow=>{"use strict";var BWt=Bu().overrideAll,NWt=kd().getModuleCalcData,UWt=OJ(),VWt=B1(),HWt=Tg(),GWt=gv(),jWt=wf().prepSelect,BJ=Mr(),WWt=ba(),w7="sankey";ow.name=w7;ow.baseLayoutAttrOverrides=BWt({hoverlabel:VWt.hoverlabel},"plot","nested");ow.plot=function(e){var t=NWt(e.calcdata,w7)[0];UWt(e,t),ow.updateFx(e)};ow.clean=function(e,t,r,n){var i=n._has&&n._has(w7),a=t._has&&t._has(w7);i&&!a&&(n._paperdiv.selectAll(".sankey").remove(),n._paperdiv.selectAll(".bgsankey").remove())};ow.updateFx=function(e){for(var t=0;t{"use strict";Zje.exports=function(t,r){for(var n=t.cd,i=[],a=n[0].trace,o=a._sankey.graph.nodes,s=0;s{"use strict";Yje.exports={attributes:EJ(),supplyDefaults:QGe(),calc:nje(),plot:OJ(),moduleType:"trace",name:"sankey",basePlotModule:Wje(),selectPoints:Xje(),categories:["noOpacity"],meta:{}}});var $je=ye((h_r,Jje)=>{"use strict";Jje.exports=Kje()});var eWe=ye(DA=>{"use strict";var Qje=Xu();DA.name="indicator";DA.plot=function(e,t,r,n){Qje.plotBasePlot(DA.name,e,t,r,n)};DA.clean=function(e,t,r,n){Qje.cleanBasePlot(DA.name,e,t,r,n)}});var UJ=ye((v_r,oWe)=>{"use strict";var Sx=no().extendFlat,rWe=no().extendDeep,XWt=Bu().overrideAll,iWe=Su(),nWe=dh(),YWt=Ju().attributes,Sf=Cd(),KWt=Vs().templatedArray,T7=HT(),tWe=Oc().descriptionOnlyNumbers,NJ=iWe({editType:"plot",colorEditType:"plot"}),jk={color:{valType:"color",editType:"plot"},line:{color:{valType:"color",dflt:nWe.defaultLine,editType:"plot"},width:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},thickness:{valType:"number",min:0,max:1,dflt:1,editType:"plot"},editType:"calc"},aWe={valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},JWt=KWt("step",rWe({},jk,{range:aWe}));oWe.exports={mode:{valType:"flaglist",editType:"calc",flags:["number","delta","gauge"],dflt:"number"},value:{valType:"number",editType:"calc",anim:!0},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},domain:YWt({name:"indicator",trace:!0,editType:"calc"}),title:{text:{valType:"string",editType:"plot"},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},font:Sx({},NJ,{}),editType:"plot"},number:{valueformat:{valType:"string",dflt:"",editType:"plot",description:tWe("value")},font:Sx({},NJ,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"plot"},delta:{reference:{valType:"number",editType:"calc"},position:{valType:"enumerated",values:["top","bottom","left","right"],dflt:"bottom",editType:"plot"},relative:{valType:"boolean",editType:"plot",dflt:!1},valueformat:{valType:"string",editType:"plot",description:tWe("value")},increasing:{symbol:{valType:"string",dflt:T7.INCREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:T7.INCREASING.COLOR,editType:"plot"},editType:"plot"},decreasing:{symbol:{valType:"string",dflt:T7.DECREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:T7.DECREASING.COLOR,editType:"plot"},editType:"plot"},font:Sx({},NJ,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"calc"},gauge:{shape:{valType:"enumerated",editType:"plot",dflt:"angular",values:["angular","bullet"]},bar:rWe({},jk,{color:{dflt:"green"}}),bgcolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:nWe.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:1,editType:"plot"},axis:XWt({range:aWe,visible:Sx({},Sf.visible,{dflt:!0}),tickmode:Sf.minor.tickmode,nticks:Sf.nticks,tick0:Sf.tick0,dtick:Sf.dtick,tickvals:Sf.tickvals,ticktext:Sf.ticktext,ticks:Sx({},Sf.ticks,{dflt:"outside"}),ticklen:Sf.ticklen,tickwidth:Sf.tickwidth,tickcolor:Sf.tickcolor,ticklabelstep:Sf.ticklabelstep,showticklabels:Sf.showticklabels,labelalias:Sf.labelalias,tickfont:iWe({}),tickangle:Sf.tickangle,tickformat:Sf.tickformat,tickformatstops:Sf.tickformatstops,tickprefix:Sf.tickprefix,showtickprefix:Sf.showtickprefix,ticksuffix:Sf.ticksuffix,showticksuffix:Sf.showticksuffix,separatethousands:Sf.separatethousands,exponentformat:Sf.exponentformat,minexponent:Sf.minexponent,showexponent:Sf.showexponent,editType:"plot"},"plot"),steps:JWt,threshold:{line:{color:Sx({},jk.line.color,{}),width:Sx({},jk.line.width,{dflt:1}),editType:"plot"},thickness:Sx({},jk.thickness,{dflt:.85}),value:{valType:"number",editType:"calc",dflt:!1},editType:"plot"},editType:"plot"}}});var VJ=ye((p_r,sWe)=>{"use strict";sWe.exports={defaultNumberFontSize:80,bulletNumberDomainSize:.25,bulletPadding:.025,innerRadius:.75,valueThickness:.5,titlePadding:5,horizontalPadding:10}});var cWe=ye((g_r,uWe)=>{"use strict";var ey=Mr(),S7=UJ(),$Wt=Ju().defaults,lWe=Vs(),QWt=Zd(),A7=VJ(),eZt=xb(),tZt=T3(),rZt=e_(),iZt=t_();function nZt(e,t,r,n){function i(_,C){return ey.coerce(e,t,S7,_,C)}$Wt(t,n,i),i("mode"),t._hasNumber=t.mode.indexOf("number")!==-1,t._hasDelta=t.mode.indexOf("delta")!==-1,t._hasGauge=t.mode.indexOf("gauge")!==-1;var a=i("value");t._range=[0,typeof a=="number"?1.5*a:1];var o=new Array(2),s;if(t._hasNumber){i("number.valueformat");var l=ey.extendFlat({},n.font);l.size=void 0,ey.coerceFont(i,"number.font",l),t.number.font.size===void 0&&(t.number.font.size=A7.defaultNumberFontSize,o[0]=!0),i("number.prefix"),i("number.suffix"),s=t.number.font.size}var u;if(t._hasDelta){var c=ey.extendFlat({},n.font);c.size=void 0,ey.coerceFont(i,"delta.font",c),t.delta.font.size===void 0&&(t.delta.font.size=(t._hasNumber?.5:1)*(s||A7.defaultNumberFontSize),o[1]=!0),i("delta.reference",t.value),i("delta.relative"),i("delta.valueformat",t.delta.relative?"2%":""),i("delta.increasing.symbol"),i("delta.increasing.color"),i("delta.decreasing.symbol"),i("delta.decreasing.color"),i("delta.position"),i("delta.prefix"),i("delta.suffix"),u=t.delta.font.size}t._scaleNumbers=(!t._hasNumber||o[0])&&(!t._hasDelta||o[1])||!1;var f=ey.extendFlat({},n.font);f.size=.25*(s||u||A7.defaultNumberFontSize),ey.coerceFont(i,"title.font",f),i("title.text");var h,d,v,x;function b(_,C){return ey.coerce(h,d,S7.gauge,_,C)}function g(_,C){return ey.coerce(v,x,S7.gauge.axis,_,C)}if(t._hasGauge){h=e.gauge,h||(h={}),d=lWe.newContainer(t,"gauge"),b("shape");var E=t._isBullet=t.gauge.shape==="bullet";E||i("title.align","center");var k=t._isAngular=t.gauge.shape==="angular";k||i("align","center"),b("bgcolor",n.paper_bgcolor),b("borderwidth"),b("bordercolor"),b("bar.color"),b("bar.line.color"),b("bar.line.width");var A=A7.valueThickness*(t.gauge.shape==="bullet"?.5:1);b("bar.thickness",A),QWt(h,d,{name:"steps",handleItemDefaults:aZt}),b("threshold.value"),b("threshold.thickness"),b("threshold.line.width"),b("threshold.line.color"),v={},h&&(v=h.axis||{}),x=lWe.newContainer(d,"axis"),g("visible"),t._range=g("range",t._range);var L={font:n.font,noAutotickangles:!0,outerTicks:!0,noTicklabelshift:!0,noTicklabelstandoff:!0};eZt(v,x,g,"linear"),iZt(v,x,g,"linear",L),rZt(v,x,g,"linear",L),tZt(v,x,g,L)}else i("title.align","center"),i("align","center"),t._isAngular=t._isBullet=!1;t._length=null}function aZt(e,t){function r(n,i){return ey.coerce(e,t,S7.gauge.steps,n,i)}r("color"),r("line.color"),r("line.width"),r("range"),r("thickness")}uWe.exports={supplyDefaults:nZt}});var hWe=ye((m_r,fWe)=>{"use strict";function oZt(e,t){var r=[],n=t.value;typeof t._lastValue!="number"&&(t._lastValue=t.value);var i=t._lastValue,a=i;return t._hasDelta&&typeof t.delta.reference=="number"&&(a=t.delta.reference),r[0]={y:n,lastY:i,delta:n-a,relativeDelta:(n-a)/a},r}fWe.exports={calc:oZt}});var yWe=ye((y_r,mWe)=>{"use strict";var fw=xa(),sZt=(R2(),ab(I2)).interpolate,dWe=(R2(),ab(I2)).interpolateNumber,Mx=Mr(),lZt=Mx.strScale,Zk=Mx.strTranslate,uZt=Mx.rad2deg,cZt=Nh().MID_SHIFT,cw=ao(),sw=VJ(),E7=Ll(),av=Qa(),fZt=JM(),hZt=rI(),dZt=Cd(),zA=va(),HJ={left:"start",center:"middle",right:"end"},lw={left:0,center:.5,right:1},vWe=/[yzafpnΒ΅mkMGTPEZY]/;function Xk(e){return e&&e.duration>0}mWe.exports=function(t,r,n,i){var a=t._fullLayout,o;Xk(n)&&i&&(o=i()),Mx.makeTraceGroups(a._indicatorlayer,r,"trace").each(function(s){var l=s[0],u=l.trace,c=fw.select(this),f=u._hasGauge,h=u._isAngular,d=u._isBullet,v=u.domain,x={w:a._size.w*(v.x[1]-v.x[0]),h:a._size.h*(v.y[1]-v.y[0]),l:a._size.l+a._size.w*v.x[0],r:a._size.r+a._size.w*(1-v.x[1]),t:a._size.t+a._size.h*(1-v.y[1]),b:a._size.b+a._size.h*v.y[0]},b=x.l+x.w/2,g=x.t+x.h/2,E=Math.min(x.w/2,x.h),k=sw.innerRadius*E,A,L,_,C=u.align||"center";if(L=g,!f)A=x.l+lw[C]*x.w,_=function(G){return pWe(G,x.w,x.h)};else if(h&&(A=b,L=g+E/2,_=function(G){return yZt(G,.9*k)}),d){var M=sw.bulletPadding,p=1-sw.bulletNumberDomainSize+M;A=x.l+(p+(1-p)*lw[C])*x.w,_=function(G){return pWe(G,(sw.bulletNumberDomainSize-M)*x.w,x.h)}}gZt(t,c,s,{numbersX:A,numbersY:L,numbersScaler:_,transitionOpts:n,onComplete:o});var P,T;f&&(P={range:u.gauge.axis.range,color:u.gauge.bgcolor,line:{color:u.gauge.bordercolor,width:0},thickness:1},T={range:u.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:u.gauge.bordercolor,width:u.gauge.borderwidth},thickness:1});var F=c.selectAll("g.angular").data(h?s:[]);F.exit().remove();var q=c.selectAll("g.angularaxis").data(h?s:[]);q.exit().remove(),h&&pZt(t,c,s,{radius:E,innerRadius:k,gauge:F,layer:q,size:x,gaugeBg:P,gaugeOutline:T,transitionOpts:n,onComplete:o});var V=c.selectAll("g.bullet").data(d?s:[]);V.exit().remove();var H=c.selectAll("g.bulletaxis").data(d?s:[]);H.exit().remove(),d&&vZt(t,c,s,{gauge:V,layer:H,size:x,gaugeBg:P,gaugeOutline:T,transitionOpts:n,onComplete:o});var X=c.selectAll("text.title").data(s);X.exit().remove(),X.enter().append("text").classed("title",!0),X.attr("text-anchor",function(){return d?HJ.right:HJ[u.title.align]}).text(u.title.text).call(cw.font,u.title.font).call(E7.convertToTspans,t),X.attr("transform",function(){var G=x.l+x.w*lw[u.title.align],N,W=sw.titlePadding,re=cw.bBox(X.node());if(f){if(h)if(u.gauge.axis.visible){var ae=cw.bBox(q.node());N=ae.top-W-re.bottom}else N=x.t+x.h/2-E/2-re.bottom-W;d&&(N=L-(re.top+re.bottom)/2,G=x.l-sw.bulletPadding*x.w)}else N=u._numbersTop-W-re.bottom;return Zk(G,N)})})};function vZt(e,t,r,n){var i=r[0].trace,a=n.gauge,o=n.layer,s=n.gaugeBg,l=n.gaugeOutline,u=n.size,c=i.domain,f=n.transitionOpts,h=n.onComplete,d,v,x,b,g;a.enter().append("g").classed("bullet",!0),a.attr("transform",Zk(u.l,u.t)),o.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),o.selectAll("g.xbulletaxistick,path,text").remove();var E=u.h,k=i.gauge.bar.thickness*E,A=c.x[0],L=c.x[0]+(c.x[1]-c.x[0])*(i._hasNumber||i._hasDelta?1-sw.bulletNumberDomainSize:1);d=Wk(e,i.gauge.axis),d._id="xbulletaxis",d.domain=[A,L],d.setScale(),v=av.calcTicks(d),x=av.makeTransTickFn(d),b=av.getTickSigns(d)[2],g=u.t+u.h,d.visible&&(av.drawTicks(e,d,{vals:d.ticks==="inside"?av.clipEnds(d,v):v,layer:o,path:av.makeTickPath(d,g,b),transFn:x}),av.drawLabels(e,d,{vals:v,layer:o,transFn:x,labelFns:av.makeLabelFns(d,g)}));function _(q){q.attr("width",function(V){return Math.max(0,d.c2p(V.range[1])-d.c2p(V.range[0]))}).attr("x",function(V){return d.c2p(V.range[0])}).attr("y",function(V){return .5*(1-V.thickness)*E}).attr("height",function(V){return V.thickness*E})}var C=[s].concat(i.gauge.steps),M=a.selectAll("g.bg-bullet").data(C);M.enter().append("g").classed("bg-bullet",!0).append("rect"),M.select("rect").call(_).call(uw),M.exit().remove();var p=a.selectAll("g.value-bullet").data([i.gauge.bar]);p.enter().append("g").classed("value-bullet",!0).append("rect"),p.select("rect").attr("height",k).attr("y",(E-k)/2).call(uw),Xk(f)?p.select("rect").transition().duration(f.duration).ease(f.easing).each("end",function(){h&&h()}).each("interrupt",function(){h&&h()}).attr("width",Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y)))):p.select("rect").attr("width",typeof r[0].y=="number"?Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y))):0),p.exit().remove();var P=r.filter(function(){return i.gauge.threshold.value||i.gauge.threshold.value===0}),T=a.selectAll("g.threshold-bullet").data(P);T.enter().append("g").classed("threshold-bullet",!0).append("line"),T.select("line").attr("x1",d.c2p(i.gauge.threshold.value)).attr("x2",d.c2p(i.gauge.threshold.value)).attr("y1",(1-i.gauge.threshold.thickness)/2*E).attr("y2",(1-(1-i.gauge.threshold.thickness)/2)*E).call(zA.stroke,i.gauge.threshold.line.color).style("stroke-width",i.gauge.threshold.line.width),T.exit().remove();var F=a.selectAll("g.gauge-outline").data([l]);F.enter().append("g").classed("gauge-outline",!0).append("rect"),F.select("rect").call(_).call(uw),F.exit().remove()}function pZt(e,t,r,n){var i=r[0].trace,a=n.size,o=n.radius,s=n.innerRadius,l=n.gaugeBg,u=n.gaugeOutline,c=[a.l+a.w/2,a.t+a.h/2+o/2],f=n.gauge,h=n.layer,d=n.transitionOpts,v=n.onComplete,x=Math.PI/2;function b(_e){var Me=i.gauge.axis.range[0],ke=i.gauge.axis.range[1],ge=(_e-Me)/(ke-Me)*Math.PI-x;return ge<-x?-x:ge>x?x:ge}function g(_e){return fw.svg.arc().innerRadius((s+o)/2-_e/2*(o-s)).outerRadius((s+o)/2+_e/2*(o-s)).startAngle(-x)}function E(_e){_e.attr("d",function(Me){return g(Me.thickness).startAngle(b(Me.range[0])).endAngle(b(Me.range[1]))()})}var k,A,L,_;f.enter().append("g").classed("angular",!0),f.attr("transform",Zk(c[0],c[1])),h.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),h.selectAll("g.xangularaxistick,path,text").remove(),k=Wk(e,i.gauge.axis),k.type="linear",k.range=i.gauge.axis.range,k._id="xangularaxis",k.ticklabeloverflow="allow",k.setScale();var C=function(_e){return(k.range[0]-_e.x)/(k.range[1]-k.range[0])*Math.PI+Math.PI},M={},p=av.makeLabelFns(k,0),P=p.labelStandoff;M.xFn=function(_e){var Me=C(_e);return Math.cos(Me)*P},M.yFn=function(_e){var Me=C(_e),ke=Math.sin(Me)>0?.2:1;return-Math.sin(Me)*(P+_e.fontSize*ke)+Math.abs(Math.cos(Me))*(_e.fontSize*cZt)},M.anchorFn=function(_e){var Me=C(_e),ke=Math.cos(Me);return Math.abs(ke)<.1?"middle":ke>0?"start":"end"},M.heightFn=function(_e,Me,ke){var ge=C(_e);return-.5*(1+Math.sin(ge))*ke};var T=function(_e){return Zk(c[0]+o*Math.cos(_e),c[1]-o*Math.sin(_e))};L=function(_e){return T(C(_e))};var F=function(_e){var Me=C(_e);return T(Me)+"rotate("+-uZt(Me)+")"};if(A=av.calcTicks(k),_=av.getTickSigns(k)[2],k.visible){_=k.ticks==="inside"?-1:1;var q=(k.linewidth||1)/2;av.drawTicks(e,k,{vals:A,layer:h,path:"M"+_*q+",0h"+_*k.ticklen,transFn:F}),av.drawLabels(e,k,{vals:A,layer:h,transFn:L,labelFns:M})}var V=[l].concat(i.gauge.steps),H=f.selectAll("g.bg-arc").data(V);H.enter().append("g").classed("bg-arc",!0).append("path"),H.select("path").call(E).call(uw),H.exit().remove();var X=g(i.gauge.bar.thickness),G=f.selectAll("g.value-arc").data([i.gauge.bar]);G.enter().append("g").classed("value-arc",!0).append("path");var N=G.select("path");Xk(d)?(N.transition().duration(d.duration).ease(d.easing).each("end",function(){v&&v()}).each("interrupt",function(){v&&v()}).attrTween("d",mZt(X,b(r[0].lastY),b(r[0].y))),i._lastValue=r[0].y):N.attr("d",typeof r[0].y=="number"?X.endAngle(b(r[0].y)):"M0,0Z"),N.call(uw),G.exit().remove(),V=[];var W=i.gauge.threshold.value;(W||W===0)&&V.push({range:[W,W],color:i.gauge.threshold.color,line:{color:i.gauge.threshold.line.color,width:i.gauge.threshold.line.width},thickness:i.gauge.threshold.thickness});var re=f.selectAll("g.threshold-arc").data(V);re.enter().append("g").classed("threshold-arc",!0).append("path"),re.select("path").call(E).call(uw),re.exit().remove();var ae=f.selectAll("g.gauge-outline").data([u]);ae.enter().append("g").classed("gauge-outline",!0).append("path"),ae.select("path").call(E).call(uw),ae.exit().remove()}function gZt(e,t,r,n){var i=r[0].trace,a=n.numbersX,o=n.numbersY,s=i.align||"center",l=HJ[s],u=n.transitionOpts,c=n.onComplete,f=Mx.ensureSingle(t,"g","numbers"),h,d,v,x=[];i._hasNumber&&x.push("number"),i._hasDelta&&(x.push("delta"),i.delta.position==="left"&&x.reverse());var b=f.selectAll("text").data(x);b.enter().append("text"),b.attr("text-anchor",function(){return l}).attr("class",function(T){return T}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),b.exit().remove();function g(T,F,q,V){if(T.match("s")&&q>=0!=V>=0&&!F(q).slice(-1).match(vWe)&&!F(V).slice(-1).match(vWe)){var H=T.slice().replace("s","f").replace(/\d+/,function(G){return parseInt(G)-1}),X=Wk(e,{tickformat:H});return function(G){return Math.abs(G)<1?av.tickText(X,G).text:F(G)}}else return F}function E(){var T=Wk(e,{tickformat:i.number.valueformat},i._range);T.setScale(),av.prepTicks(T);var F=function(G){return av.tickText(T,G).text},q=i.number.suffix,V=i.number.prefix,H=f.select("text.number");function X(){var G=typeof r[0].y=="number"?V+F(r[0].y)+q:"-";H.text(G).call(cw.font,i.number.font).call(E7.convertToTspans,e)}return Xk(u)?H.transition().duration(u.duration).ease(u.easing).each("end",function(){X(),c&&c()}).each("interrupt",function(){X(),c&&c()}).attrTween("text",function(){var G=fw.select(this),N=dWe(r[0].lastY,r[0].y);i._lastValue=r[0].y;var W=g(i.number.valueformat,F,r[0].lastY,r[0].y);return function(re){G.text(V+W(N(re))+q)}}):X(),h=gWe(V+F(r[0].y)+q,i.number.font,l,e),H}function k(){var T=Wk(e,{tickformat:i.delta.valueformat},i._range);T.setScale(),av.prepTicks(T);var F=function(re){return av.tickText(T,re).text},q=i.delta.suffix,V=i.delta.prefix,H=function(re){var ae=i.delta.relative?re.relativeDelta:re.delta;return ae},X=function(re,ae){return re===0||typeof re!="number"||isNaN(re)?"-":(re>0?i.delta.increasing.symbol:i.delta.decreasing.symbol)+V+ae(re)+q},G=function(re){return re.delta>=0?i.delta.increasing.color:i.delta.decreasing.color};i._deltaLastValue===void 0&&(i._deltaLastValue=H(r[0]));var N=f.select("text.delta");N.call(cw.font,i.delta.font).call(zA.fill,G({delta:i._deltaLastValue}));function W(){N.text(X(H(r[0]),F)).call(zA.fill,G(r[0])).call(E7.convertToTspans,e)}return Xk(u)?N.transition().duration(u.duration).ease(u.easing).tween("text",function(){var re=fw.select(this),ae=H(r[0]),_e=i._deltaLastValue,Me=g(i.delta.valueformat,F,_e,ae),ke=dWe(_e,ae);return i._deltaLastValue=ae,function(ge){re.text(X(ke(ge),Me)),re.call(zA.fill,G({delta:ke(ge)}))}}).each("end",function(){W(),c&&c()}).each("interrupt",function(){W(),c&&c()}):W(),d=gWe(X(H(r[0]),F),i.delta.font,l,e),N}var A=i.mode+i.align,L;if(i._hasDelta&&(L=k(),A+=i.delta.position+i.delta.font.size+i.delta.font.family+i.delta.valueformat,A+=i.delta.increasing.symbol+i.delta.decreasing.symbol,v=d),i._hasNumber&&(E(),A+=i.number.font.size+i.number.font.family+i.number.valueformat+i.number.suffix+i.number.prefix,v=h),i._hasDelta&&i._hasNumber){var _=[(h.left+h.right)/2,(h.top+h.bottom)/2],C=[(d.left+d.right)/2,(d.top+d.bottom)/2],M,p,P=.75*i.delta.font.size;i.delta.position==="left"&&(M=M7(i,"deltaPos",0,-1*(h.width*lw[i.align]+d.width*(1-lw[i.align])+P),A,Math.min),p=_[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:d.left+M,right:h.right,top:Math.min(h.top,d.top+p),bottom:Math.max(h.bottom,d.bottom+p)}),i.delta.position==="right"&&(M=M7(i,"deltaPos",0,h.width*(1-lw[i.align])+d.width*lw[i.align]+P,A,Math.max),p=_[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:h.left,right:d.right+M,top:Math.min(h.top,d.top+p),bottom:Math.max(h.bottom,d.bottom+p)}),i.delta.position==="bottom"&&(M=null,p=d.height,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height,bottom:h.bottom+d.height}),i.delta.position==="top"&&(M=null,p=h.top,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height-d.height,bottom:h.bottom}),L.attr({dx:M,dy:p})}(i._hasNumber||i._hasDelta)&&f.attr("transform",function(){var T=n.numbersScaler(v);A+=T[2];var F=M7(i,"numbersScale",1,T[0],A,Math.min),q;i._scaleNumbers||(F=1),i._isAngular?q=o-F*v.bottom:q=o-F*(v.top+v.bottom)/2,i._numbersTop=F*v.top+q;var V=v[s];s==="center"&&(V=(v.left+v.right)/2);var H=a-F*V;return H=M7(i,"numbersTranslate",0,H,A,Math.max),Zk(H,q)+lZt(F)})}function uw(e){e.each(function(t){zA.stroke(fw.select(this),t.line.color)}).each(function(t){zA.fill(fw.select(this),t.color)}).style("stroke-width",function(t){return t.line.width})}function mZt(e,t,r){return function(){var n=sZt(t,r);return function(i){return e.endAngle(n(i))()}}}function Wk(e,t,r){var n=e._fullLayout,i=Mx.extendFlat({type:"linear",ticks:"outside",range:r,showline:!0},t),a={type:"linear",_id:"x"+t._id},o={letter:"x",font:n.font,noAutotickangles:!0,noHover:!0,noTickson:!0};function s(l,u){return Mx.coerce(i,a,dZt,l,u)}return fZt(i,a,s,o,n),hZt(i,a,s,o),a}function pWe(e,t,r){var n=Math.min(t/e.width,r/e.height);return[n,e,t+"x"+r]}function yZt(e,t){var r=Math.sqrt(e.width/2*(e.width/2)+e.height*e.height),n=t/r;return[n,e,t]}function gWe(e,t,r,n){var i=document.createElementNS("http://www.w3.org/2000/svg","text"),a=fw.select(i);return a.text(e).attr("x",0).attr("y",0).attr("text-anchor",r).attr("data-unformatted",e).call(E7.convertToTspans,n).call(cw.font,t),cw.bBox(a.node())}function M7(e,t,r,n,i,a){var o="_cache"+t;e[o]&&e[o].key===i||(e[o]={key:i,value:r});var s=Mx.aggNums(a,null,[e[o].value,n],2);return e[o].value=s,s}});var xWe=ye((__r,_We)=>{"use strict";_We.exports={moduleType:"trace",name:"indicator",basePlotModule:eWe(),categories:["svg","noOpacity","noHover"],animatable:!0,attributes:UJ(),supplyDefaults:cWe().supplyDefaults,calc:hWe().calc,plot:yWe(),meta:{}}});var wWe=ye((x_r,bWe)=>{"use strict";bWe.exports=xWe()});var GJ=ye((w_r,MWe)=>{"use strict";var TWe=Nb(),k7=no().extendFlat,_Zt=Bu().overrideAll,AWe=Su(),xZt=Ju().attributes,SWe=Oc().descriptionOnlyNumbers,b_r=MWe.exports=_Zt({domain:xZt({name:"table",trace:!0}),columnwidth:{valType:"number",arrayOk:!0,dflt:null},columnorder:{valType:"data_array"},header:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:SWe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:28},align:k7({},TWe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:k7({},AWe({arrayOk:!0}))},cells:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:SWe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:20},align:k7({},TWe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:k7({},AWe({arrayOk:!0}))}},"calc","from-root")});var kWe=ye((T_r,EWe)=>{"use strict";var jJ=Mr(),bZt=GJ(),wZt=Ju().defaults;function TZt(e,t){for(var r=e.columnorder||[],n=e.header.values.length,i=r.slice(0,n),a=i.slice().sort(function(l,u){return l-u}),o=i.map(function(l){return a.indexOf(l)}),s=o.length;s{"use strict";var AZt=Km().wrap;CWe.exports=function(){return AZt({})}});var WJ=ye((S_r,PWe)=>{"use strict";PWe.exports={cellPad:8,columnExtentOffset:10,columnTitleOffset:28,emptyHeaderHeight:16,latexCheck:/^\$.*\$$/,goldenRatio:1.618,lineBreaker:"
",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}});var NWe=ye((M_r,BWe)=>{"use strict";var IWe=WJ(),XJ=no().extendFlat,SZt=uo(),MZt=vv().isTypedArray,C7=vv().isArrayOrTypedArray;BWe.exports=function(t,r){var n=ZJ(r.cells.values),i=function(p){return p.slice(r.header.values.length,p.length)},a=ZJ(r.header.values);a.length&&!a[0].length&&(a[0]=[""],a=ZJ(a));var o=a.concat(i(n).map(function(){return OWe((a[0]||[""]).length)})),s=r.domain,l=Math.floor(t._fullLayout._size.w*(s.x[1]-s.x[0])),u=Math.floor(t._fullLayout._size.h*(s.y[1]-s.y[0])),c=r.header.values.length?o[0].map(function(){return r.header.height}):[IWe.emptyHeaderHeight],f=n.length?n[0].map(function(){return r.cells.height}):[],h=c.reduce(RWe,0),d=u-h,v=d+IWe.uplift,x=FWe(f,v),b=FWe(c,h),g=zWe(b,[]),E=zWe(x,g),k={},A=r._fullInput.columnorder;C7(A)&&(A=Array.from(A)),A=A.concat(i(n.map(function(p,P){return P})));var L=o.map(function(p,P){var T=C7(r.columnwidth)?r.columnwidth[Math.min(P,r.columnwidth.length-1)]:r.columnwidth;return SZt(T)?Number(T):1}),_=L.reduce(RWe,0);L=L.map(function(p){return p/_*l});var C=Math.max(YJ(r.header.line.width),YJ(r.cells.line.width)),M={key:r.uid+t._context.staticPlot,translateX:s.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-s.y[1]),size:t._fullLayout._size,width:l,maxLineWidth:C,height:u,columnOrder:A,groupHeight:u,rowBlocks:E,headerRowBlocks:g,scrollY:0,cells:XJ({},r.cells,{values:n}),headerCells:XJ({},r.header,{values:o}),gdColumns:o.map(function(p){return p[0]}),gdColumnsOriginalOrder:o.map(function(p){return p[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:o.map(function(p,P){var T=k[p];k[p]=(T||0)+1;var F=p+"__"+k[p];return{key:F,label:p,specIndex:P,xIndex:A[P],xScale:DWe,x:void 0,calcdata:void 0,columnWidth:L[P]}})};return M.columns.forEach(function(p){p.calcdata=M,p.x=DWe(p)}),M};function YJ(e){if(C7(e)){for(var t=0,r=0;r=t||u===e.length-1)&&(r[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=u,o=qWe(),i+=a,s=u+1,a=0);return r}function qWe(){return{firstRowIndex:null,lastRowIndex:null,rows:[]}}});var UWe=ye(KJ=>{"use strict";var L7=no().extendFlat;KJ.splitToPanels=function(e){var t=[0,0],r=L7({},e,{key:"header",type:"header",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!0,values:e.calcdata.headerCells.values[e.specIndex],rowBlocks:e.calcdata.headerRowBlocks,calcdata:L7({},e.calcdata,{cells:e.calcdata.headerCells})}),n=L7({},e,{key:"cells1",type:"cells",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks}),i=L7({},e,{key:"cells2",type:"cells",page:1,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks});return[n,i,r]};KJ.splitToCells=function(e){var t=EZt(e);return(e.values||[]).slice(t[0],t[1]).map(function(r,n){var i=typeof r=="string"&&r.match(/[<$&> ]/)?"_keybuster_"+Math.random():"";return{keyWithinBlock:n+i,key:t[0]+n,column:e,calcdata:e.calcdata,page:e.page,rowBlocks:e.rowBlocks,value:r}})};function EZt(e){var t=e.rowBlocks[e.page],r=t?t.rows[0].rowIndex:0,n=t?r+t.rows.length:0;return[r,n]}});var o$=ye((k_r,$We)=>{"use strict";var Ia=WJ(),Mc=xa(),JJ=Mr(),kZt=JJ.numberFormat,gu=Km(),$J=ao(),CZt=Ll(),LZt=Mr().raiseToTop,og=Mr().strTranslate,PZt=Mr().cancelTransition,IZt=NWe(),XWe=UWe(),VWe=va();$We.exports=function(t,r){var n=!t._context.staticPlot,i=t._fullLayout._paper.selectAll("."+Ia.cn.table).data(r.map(function(E){var k=gu.unwrap(E),A=k.trace;return IZt(t,A)}),gu.keyFun);i.exit().remove(),i.enter().append("g").classed(Ia.cn.table,!0).attr("overflow","visible").style("box-sizing","content-box").style("position","absolute").style("left",0).style("overflow","visible").style("shape-rendering","crispEdges").style("pointer-events","all"),i.attr("width",function(E){return E.width+E.size.l+E.size.r}).attr("height",function(E){return E.height+E.size.t+E.size.b}).attr("transform",function(E){return og(E.translateX,E.translateY)});var a=i.selectAll("."+Ia.cn.tableControlView).data(gu.repeat,gu.keyFun),o=a.enter().append("g").classed(Ia.cn.tableControlView,!0).style("box-sizing","content-box");if(n){var s="onwheel"in document?"wheel":"mousewheel";o.on("mousemove",function(E){a.filter(function(k){return E===k}).call(Yk,t)}).on(s,function(E){if(!E.scrollbarState.wheeling){E.scrollbarState.wheeling=!0;var k=E.scrollY+Mc.event.deltaY,A=I7(t,a,null,k)(E);A||(Mc.event.stopPropagation(),Mc.event.preventDefault()),E.scrollbarState.wheeling=!1}}).call(Yk,t,!0)}a.attr("transform",function(E){return og(E.size.l,E.size.t)});var l=a.selectAll("."+Ia.cn.scrollBackground).data(gu.repeat,gu.keyFun);l.enter().append("rect").classed(Ia.cn.scrollBackground,!0).attr("fill","none"),l.attr("width",function(E){return E.width}).attr("height",function(E){return E.height}),a.each(function(E){$J.setClipUrl(Mc.select(this),HWe(t,E),t)});var u=a.selectAll("."+Ia.cn.yColumn).data(function(E){return E.columns},gu.keyFun);u.enter().append("g").classed(Ia.cn.yColumn,!0),u.exit().remove(),u.attr("transform",function(E){return og(E.x,0)}),n&&u.call(Mc.behavior.drag().origin(function(E){var k=Mc.select(this);return WWe(k,E,-Ia.uplift),LZt(this),E.calcdata.columnDragInProgress=!0,Yk(a.filter(function(A){return E.calcdata.key===A.key}),t),E}).on("drag",function(E){var k=Mc.select(this),A=function(C){return(E===C?Mc.event.x:C.x)+C.columnWidth/2};E.x=Math.max(-Ia.overdrag,Math.min(E.calcdata.width+Ia.overdrag-E.columnWidth,Mc.event.x));var L=YWe(u).filter(function(C){return C.calcdata.key===E.calcdata.key}),_=L.sort(function(C,M){return A(C)-A(M)});_.forEach(function(C,M){C.xIndex=M,C.x=E===C?C.x:C.xScale(C)}),u.filter(function(C){return E!==C}).transition().ease(Ia.transitionEase).duration(Ia.transitionDuration).attr("transform",function(C){return og(C.x,0)}),k.call(PZt).attr("transform",og(E.x,-Ia.uplift))}).on("dragend",function(E){var k=Mc.select(this),A=E.calcdata;E.x=E.xScale(E),E.calcdata.columnDragInProgress=!1,WWe(k,E,0),VZt(t,A,A.columns.map(function(L){return L.xIndex}))})),u.each(function(E){$J.setClipUrl(Mc.select(this),GWe(t,E),t)});var c=u.selectAll("."+Ia.cn.columnBlock).data(XWe.splitToPanels,gu.keyFun);c.enter().append("g").classed(Ia.cn.columnBlock,!0).attr("id",function(E){return E.key}),c.style("cursor",function(E){return E.dragHandle?"ew-resize":E.calcdata.scrollbarState.barWiggleRoom?"ns-resize":"default"});var f=c.filter(HZt),h=c.filter(i$);n&&h.call(Mc.behavior.drag().origin(function(E){return Mc.event.stopPropagation(),E}).on("drag",I7(t,a,-1)).on("dragend",function(){})),QJ(t,a,f,c),QJ(t,a,h,c);var d=a.selectAll("."+Ia.cn.scrollAreaClip).data(gu.repeat,gu.keyFun);d.enter().append("clipPath").classed(Ia.cn.scrollAreaClip,!0).attr("id",function(E){return HWe(t,E)});var v=d.selectAll("."+Ia.cn.scrollAreaClipRect).data(gu.repeat,gu.keyFun);v.enter().append("rect").classed(Ia.cn.scrollAreaClipRect,!0).attr("x",-Ia.overdrag).attr("y",-Ia.uplift).attr("fill","none"),v.attr("width",function(E){return E.width+2*Ia.overdrag}).attr("height",function(E){return E.height+Ia.uplift});var x=u.selectAll("."+Ia.cn.columnBoundary).data(gu.repeat,gu.keyFun);x.enter().append("g").classed(Ia.cn.columnBoundary,!0);var b=u.selectAll("."+Ia.cn.columnBoundaryClippath).data(gu.repeat,gu.keyFun);b.enter().append("clipPath").classed(Ia.cn.columnBoundaryClippath,!0),b.attr("id",function(E){return GWe(t,E)});var g=b.selectAll("."+Ia.cn.columnBoundaryRect).data(gu.repeat,gu.keyFun);g.enter().append("rect").classed(Ia.cn.columnBoundaryRect,!0).attr("fill","none"),g.attr("width",function(E){return E.columnWidth+2*P7(E)}).attr("height",function(E){return E.calcdata.height+2*P7(E)+Ia.uplift}).attr("x",function(E){return-P7(E)}).attr("y",function(E){return-P7(E)}),n$(null,h,a)};function P7(e){return Math.ceil(e.calcdata.maxLineWidth/2)}function HWe(e,t){return"clip"+e._fullLayout._uid+"_scrollAreaBottomClip_"+t.key}function GWe(e,t){return"clip"+e._fullLayout._uid+"_columnBoundaryClippath_"+t.calcdata.key+"_"+t.specIndex}function YWe(e){return[].concat.apply([],e.map(function(t){return t})).map(function(t){return t.__data__})}function Yk(e,t,r){function n(u){var c=u.rowBlocks;return t$(c,c.length-1)+(c.length?R7(c[c.length-1],1/0):1)}var i=e.selectAll("."+Ia.cn.scrollbarKit).data(gu.repeat,gu.keyFun);i.enter().append("g").classed(Ia.cn.scrollbarKit,!0).style("shape-rendering","geometricPrecision"),i.each(function(u){var c=u.scrollbarState;c.totalHeight=n(u),c.scrollableAreaHeight=u.groupHeight-e$(u),c.currentlyVisibleHeight=Math.min(c.totalHeight,c.scrollableAreaHeight),c.ratio=c.currentlyVisibleHeight/c.totalHeight,c.barLength=Math.max(c.ratio*c.currentlyVisibleHeight,Ia.goldenRatio*Ia.scrollbarWidth),c.barWiggleRoom=c.currentlyVisibleHeight-c.barLength,c.wiggleRoom=Math.max(0,c.totalHeight-c.scrollableAreaHeight),c.topY=c.barWiggleRoom===0?0:u.scrollY/c.wiggleRoom*c.barWiggleRoom,c.bottomY=c.topY+c.barLength,c.dragMultiplier=c.wiggleRoom/c.barWiggleRoom}).attr("transform",function(u){var c=u.width+Ia.scrollbarWidth/2+Ia.scrollbarOffset;return og(c,e$(u))});var a=i.selectAll("."+Ia.cn.scrollbar).data(gu.repeat,gu.keyFun);a.enter().append("g").classed(Ia.cn.scrollbar,!0);var o=a.selectAll("."+Ia.cn.scrollbarSlider).data(gu.repeat,gu.keyFun);o.enter().append("g").classed(Ia.cn.scrollbarSlider,!0),o.attr("transform",function(u){return og(0,u.scrollbarState.topY||0)});var s=o.selectAll("."+Ia.cn.scrollbarGlyph).data(gu.repeat,gu.keyFun);s.enter().append("line").classed(Ia.cn.scrollbarGlyph,!0).attr("stroke","black").attr("stroke-width",Ia.scrollbarWidth).attr("stroke-linecap","round").attr("y1",Ia.scrollbarWidth/2),s.attr("y2",function(u){return u.scrollbarState.barLength-Ia.scrollbarWidth/2}).attr("stroke-opacity",function(u){return u.columnDragInProgress||!u.scrollbarState.barWiggleRoom||r?0:.4}),s.transition().delay(0).duration(0),s.transition().delay(Ia.scrollbarHideDelay).duration(Ia.scrollbarHideDuration).attr("stroke-opacity",0);var l=a.selectAll("."+Ia.cn.scrollbarCaptureZone).data(gu.repeat,gu.keyFun);l.enter().append("line").classed(Ia.cn.scrollbarCaptureZone,!0).attr("stroke","white").attr("stroke-opacity",.01).attr("stroke-width",Ia.scrollbarCaptureWidth).attr("stroke-linecap","butt").attr("y1",0).on("mousedown",function(u){var c=Mc.event.y,f=this.getBoundingClientRect(),h=u.scrollbarState,d=c-f.top,v=Mc.scale.linear().domain([0,h.scrollableAreaHeight]).range([0,h.totalHeight]).clamp(!0);h.topY<=d&&d<=h.bottomY||I7(t,e,null,v(d-h.barLength/2))(u)}).call(Mc.behavior.drag().origin(function(u){return Mc.event.stopPropagation(),u.scrollbarState.scrollbarScrollInProgress=!0,u}).on("drag",I7(t,e)).on("dragend",function(){})),l.attr("y2",function(u){return u.scrollbarState.scrollableAreaHeight}),t._context.staticPlot&&(s.remove(),l.remove())}function QJ(e,t,r,n){var i=RZt(r),a=DZt(i);OZt(a);var o=zZt(a);NZt(o);var s=qZt(a),l=FZt(s);BZt(l),KWe(l,t,n,e),a$(a)}function RZt(e){var t=e.selectAll("."+Ia.cn.columnCells).data(gu.repeat,gu.keyFun);return t.enter().append("g").classed(Ia.cn.columnCells,!0),t.exit().remove(),t}function DZt(e){var t=e.selectAll("."+Ia.cn.columnCell).data(XWe.splitToCells,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ia.cn.columnCell,!0),t.exit().remove(),t}function zZt(e){var t=e.selectAll("."+Ia.cn.cellRect).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("rect").classed(Ia.cn.cellRect,!0),t}function FZt(e){var t=e.selectAll("."+Ia.cn.cellText).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("text").classed(Ia.cn.cellText,!0).style("cursor",function(){return"auto"}).on("mousedown",function(){Mc.event.stopPropagation()}),t}function qZt(e){var t=e.selectAll("."+Ia.cn.cellTextHolder).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ia.cn.cellTextHolder,!0).style("shape-rendering","geometricPrecision"),t}function OZt(e){e.each(function(t,r){var n=t.calcdata.cells.font,i=t.column.specIndex,a={size:Xv(n.size,i,r),color:Xv(n.color,i,r),family:Xv(n.family,i,r),weight:Xv(n.weight,i,r),style:Xv(n.style,i,r),variant:Xv(n.variant,i,r),textcase:Xv(n.textcase,i,r),lineposition:Xv(n.lineposition,i,r),shadow:Xv(n.shadow,i,r)};t.rowNumber=t.key,t.align=Xv(t.calcdata.cells.align,i,r),t.cellBorderWidth=Xv(t.calcdata.cells.line.width,i,r),t.font=a})}function BZt(e){e.each(function(t){$J.font(Mc.select(this),t.font)})}function NZt(e){e.attr("width",function(t){return t.column.columnWidth}).attr("stroke-width",function(t){return t.cellBorderWidth}).each(function(t){var r=Mc.select(this);VWe.stroke(r,Xv(t.calcdata.cells.line.color,t.column.specIndex,t.rowNumber)),VWe.fill(r,Xv(t.calcdata.cells.fill.color,t.column.specIndex,t.rowNumber))})}function KWe(e,t,r,n){e.text(function(i){var a=i.column.specIndex,o=i.rowNumber,s=i.value,l=typeof s=="string",u=l&&s.match(/
/i),c=!l||u;i.mayHaveMarkup=l&&s.match(/[<&>]/);var f=UZt(s);i.latex=f;var h=f?"":Xv(i.calcdata.cells.prefix,a,o)||"",d=f?"":Xv(i.calcdata.cells.suffix,a,o)||"",v=f?null:Xv(i.calcdata.cells.format,a,o)||null,x=h+(v?kZt(v)(i.value):i.value)+d,b;i.wrappingNeeded=!i.wrapped&&!c&&!f&&(b=jWe(x)),i.cellHeightMayIncrease=u||f||i.mayHaveMarkup||(b===void 0?jWe(x):b),i.needsConvertToTspans=i.mayHaveMarkup||i.wrappingNeeded||i.latex;var g;if(i.wrappingNeeded){var E=Ia.wrapSplitCharacter===" "?x.replace(/i&&n.push(a),i+=l}return n}function n$(e,t,r){var n=YWe(t)[0];if(n!==void 0){var i=n.rowBlocks,a=n.calcdata,o=t$(i,i.length),s=n.calcdata.groupHeight-e$(n),l=a.scrollY=Math.max(0,Math.min(o-s,a.scrollY)),u=GZt(i,l,s);u.length===1&&(u[0]===i.length-1?u.unshift(u[0]-1):u.push(u[0]+1)),u[0]%2&&u.reverse(),t.each(function(c,f){c.page=u[f],c.scrollY=l}),t.attr("transform",function(c){var f=t$(c.rowBlocks,c.page)-c.scrollY;return og(0,f)}),e&&(ZWe(e,r,t,u,n.prevPages,n,0),ZWe(e,r,t,u,n.prevPages,n,1),Yk(r,e))}}function I7(e,t,r,n){return function(a){var o=a.calcdata?a.calcdata:a,s=t.filter(function(f){return o.key===f.key}),l=r||o.scrollbarState.dragMultiplier,u=o.scrollY;o.scrollY=n===void 0?o.scrollY+l*Mc.event.dy:n;var c=s.selectAll("."+Ia.cn.yColumn).selectAll("."+Ia.cn.columnBlock).filter(i$);return n$(e,c,s),o.scrollY===u}}function ZWe(e,t,r,n,i,a,o){var s=n[o]!==i[o];s&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout(function(){var l=r.filter(function(u,c){return c===o&&n[c]!==i[c]});QJ(e,t,l,r),i[o]=n[o]}))}function jZt(e,t,r,n){return function(){var a=Mc.select(t.parentNode);a.each(function(o){var s=o.fragments;a.selectAll("tspan.line").each(function(x,b){s[b].width=this.getComputedTextLength()});var l=s[s.length-1].width,u=s.slice(0,-1),c=[],f,h,d=0,v=o.column.columnWidth-2*Ia.cellPad;for(o.value="";u.length;)f=u.shift(),h=f.width+l,d+h>v&&(o.value+=c.join(Ia.wrapSpacer)+Ia.lineBreaker,c=[],d=0),c.push(f.text),d+=h;d&&(o.value+=c.join(Ia.wrapSpacer)),o.wrapped=!0}),a.selectAll("tspan.line").remove(),KWe(a.select("."+Ia.cn.cellText),r,e,n),Mc.select(t.parentNode.parentNode).call(a$)}}function WZt(e,t,r,n,i){return function(){if(!i.settledY){var o=Mc.select(t.parentNode),s=r$(i),l=i.key-s.firstRowIndex,u=s.rows[l].rowHeight,c=i.cellHeightMayIncrease?t.parentNode.getBoundingClientRect().height+2*Ia.cellPad:u,f=Math.max(c,u),h=f-s.rows[l].rowHeight;h&&(s.rows[l].rowHeight=f,e.selectAll("."+Ia.cn.columnCell).call(a$),n$(null,e.filter(i$),0),Yk(r,n,!0)),o.attr("transform",function(){var d=this,v=d.parentNode,x=v.getBoundingClientRect(),b=Mc.select(d.parentNode).select("."+Ia.cn.cellRect).node().getBoundingClientRect(),g=d.transform.baseVal.consolidate(),E=b.top-x.top+(g?g.matrix.f:Ia.cellPad);return og(JWe(i,Mc.select(d.parentNode).select("."+Ia.cn.cellTextHolder).node().getBoundingClientRect().width),E)}),i.settledY=!0}}}function JWe(e,t){switch(e.align){case"left":return Ia.cellPad;case"right":return e.column.columnWidth-(t||0)-Ia.cellPad;case"center":return(e.column.columnWidth-(t||0))/2;default:return Ia.cellPad}}function a$(e){e.attr("transform",function(t){var r=t.rowBlocks[0].auxiliaryBlocks.reduce(function(o,s){return o+R7(s,1/0)},0),n=r$(t),i=R7(n,t.key),a=i+r;return og(0,a)}).selectAll("."+Ia.cn.cellRect).attr("height",function(t){return XZt(r$(t),t.key).rowHeight})}function t$(e,t){for(var r=0,n=t-1;n>=0;n--)r+=ZZt(e[n]);return r}function R7(e,t){for(var r=0,n=0;n{"use strict";var YZt=kd().getModuleCalcData,KZt=o$(),D7="table";z7.name=D7;z7.plot=function(e){var t=YZt(e.calcdata,D7)[0];t.length&&KZt(e,t)};z7.clean=function(e,t,r,n){var i=n._has&&n._has(D7),a=t._has&&t._has(D7);i&&!a&&n._paperdiv.selectAll(".table").remove()}});var tZe=ye((L_r,eZe)=>{"use strict";eZe.exports={attributes:GJ(),supplyDefaults:kWe(),calc:LWe(),plot:o$(),moduleType:"trace",name:"table",basePlotModule:QWe(),categories:["noOpacity"],meta:{}}});var iZe=ye((P_r,rZe)=>{"use strict";rZe.exports=tZe()});var lZe=ye((I_r,sZe)=>{"use strict";var nZe=Su(),aZe=dh(),s$=Cd(),JZt=Oc().descriptionWithDates,$Zt=Bu().overrideAll,oZe=Ed().dash,l$=no().extendFlat;sZe.exports={color:{valType:"color",editType:"calc"},smoothing:{valType:"number",dflt:1,min:0,max:1.3,editType:"calc"},title:{text:{valType:"string",dflt:"",editType:"calc"},font:nZe({editType:"calc"}),offset:{valType:"number",dflt:10,editType:"calc"},editType:"calc"},type:{valType:"enumerated",values:["-","linear","date","category"],dflt:"-",editType:"calc"},autotypenumbers:s$.autotypenumbers,autorange:{valType:"enumerated",values:[!0,!1,"reversed"],dflt:!0,editType:"calc"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"calc"},range:{valType:"info_array",editType:"calc",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}]},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},cheatertype:{valType:"enumerated",values:["index","value"],dflt:"value",editType:"calc"},tickmode:{valType:"enumerated",values:["linear","array"],dflt:"array",editType:"calc"},nticks:{valType:"integer",min:0,dflt:0,editType:"calc"},tickvals:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},showticklabels:{valType:"enumerated",values:["start","end","both","none"],dflt:"start",editType:"calc"},labelalias:l$({},s$.labelalias,{editType:"calc"}),tickfont:nZe({editType:"calc"}),tickangle:{valType:"angle",dflt:"auto",editType:"calc"},tickprefix:{valType:"string",dflt:"",editType:"calc"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},ticksuffix:{valType:"string",dflt:"",editType:"calc"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B"],dflt:"B",editType:"calc"},minexponent:{valType:"number",dflt:3,min:0,editType:"calc"},separatethousands:{valType:"boolean",dflt:!1,editType:"calc"},tickformat:{valType:"string",dflt:"",editType:"calc",description:JZt("tick label")},tickformatstops:$Zt(s$.tickformatstops,"calc","from-root"),categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},labelpadding:{valType:"integer",dflt:10,editType:"calc"},labelprefix:{valType:"string",editType:"calc"},labelsuffix:{valType:"string",dflt:"",editType:"calc"},showline:{valType:"boolean",dflt:!1,editType:"calc"},linecolor:{valType:"color",dflt:aZe.defaultLine,editType:"calc"},linewidth:{valType:"number",min:0,dflt:1,editType:"calc"},gridcolor:{valType:"color",editType:"calc"},gridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},griddash:l$({},oZe,{editType:"calc"}),showgrid:{valType:"boolean",dflt:!0,editType:"calc"},minorgridcount:{valType:"integer",min:0,dflt:0,editType:"calc"},minorgridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},minorgriddash:l$({},oZe,{editType:"calc"}),minorgridcolor:{valType:"color",dflt:aZe.lightLine,editType:"calc"},startline:{valType:"boolean",editType:"calc"},startlinecolor:{valType:"color",editType:"calc"},startlinewidth:{valType:"number",dflt:1,editType:"calc"},endline:{valType:"boolean",editType:"calc"},endlinewidth:{valType:"number",dflt:1,editType:"calc"},endlinecolor:{valType:"color",editType:"calc"},tick0:{valType:"number",min:0,dflt:0,editType:"calc"},dtick:{valType:"number",min:0,dflt:1,editType:"calc"},arraytick0:{valType:"integer",min:0,dflt:0,editType:"calc"},arraydtick:{valType:"integer",min:1,dflt:1,editType:"calc"},editType:"calc"}});var q7=ye((R_r,fZe)=>{"use strict";var QZt=Su(),uZe=lZe(),cZe=dh(),F7=QZt({editType:"calc"}),eXt=Uc().zorder;F7.family.dflt='"Open Sans", verdana, arial, sans-serif';F7.size.dflt=12;F7.color.dflt=cZe.defaultLine;fZe.exports={carpet:{valType:"string",editType:"calc"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},a:{valType:"data_array",editType:"calc"},a0:{valType:"number",dflt:0,editType:"calc"},da:{valType:"number",dflt:1,editType:"calc"},b:{valType:"data_array",editType:"calc"},b0:{valType:"number",dflt:0,editType:"calc"},db:{valType:"number",dflt:1,editType:"calc"},cheaterslope:{valType:"number",dflt:1,editType:"calc"},aaxis:uZe,baxis:uZe,font:F7,color:{valType:"color",dflt:cZe.defaultLine,editType:"plot"},zorder:eXt}});var vZe=ye((D_r,dZe)=>{"use strict";var hZe=Mr().isArray1D;dZe.exports=function(t,r,n){var i=n("x"),a=i&&i.length,o=n("y"),s=o&&o.length;if(!a&&!s)return!1;if(r._cheater=!i,(!a||hZe(i))&&(!s||hZe(o))){var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),r.a&&r.a.length&&(l=Math.min(l,r.a.length)),r.b&&r.b.length&&(l=Math.min(l,r.b.length)),r._length=l}else r._length=null;return!0}});var mZe=ye((z_r,gZe)=>{"use strict";var tXt=q7(),pZe=va().addOpacity,rXt=ba(),Kk=Mr(),iXt=xb(),nXt=e_(),aXt=t_(),oXt=QP(),sXt=ym(),lXt=L3();gZe.exports=function(t,r,n){var i=n.letter,a=n.font||{},o=tXt[i+"axis"];function s(p,P){return Kk.coerce(t,r,o,p,P)}function l(p,P){return Kk.coerce2(t,r,o,p,P)}n.name&&(r._name=n.name,r._id=n.name),s("autotypenumbers",n.autotypenumbersDflt);var u=s("type");if(u==="-"&&(n.data&&uXt(r,n.data),r.type==="-"?r.type="linear":u=t.type=r.type),s("smoothing"),s("cheatertype"),s("showticklabels"),s("labelprefix",i+" = "),s("labelsuffix"),s("showtickprefix"),s("showticksuffix"),s("separatethousands"),s("tickformat"),s("exponentformat"),s("minexponent"),s("showexponent"),s("categoryorder"),s("tickmode"),s("tickvals"),s("ticktext"),s("tick0"),s("dtick"),r.tickmode==="array"&&(s("arraytick0"),s("arraydtick")),s("labelpadding"),r._hovertitle=i,u==="date"){var c=rXt.getComponentMethod("calendars","handleDefaults");c(t,r,"calendar",n.calendar)}sXt(r,n.fullLayout),r.c2p=Kk.identity;var f=s("color",n.dfltColor),h=f===t.color?f:a.color,d=s("title.text");d&&(Kk.coerceFont(s,"title.font",a,{overrideDflt:{size:Kk.bigFont(a.size),color:h}}),s("title.offset")),s("tickangle");var v=s("autorange",!r.isValidRange(t.range));v&&s("rangemode"),s("range"),r.cleanRange(),s("fixedrange"),iXt(t,r,s,u),aXt(t,r,s,u,n),nXt(t,r,s,u,n),oXt(t,r,s,{data:n.data,dataAttr:i});var x=l("gridcolor",pZe(f,.3)),b=l("gridwidth"),g=l("griddash"),E=s("showgrid");E||(delete r.gridcolor,delete r.gridwidth,delete r.griddash);var k=l("startlinecolor",f),A=l("startlinewidth",b),L=s("startline",r.showgrid||!!k||!!A);L||(delete r.startlinecolor,delete r.startlinewidth);var _=l("endlinecolor",f),C=l("endlinewidth",b),M=s("endline",r.showgrid||!!_||!!C);return M||(delete r.endlinecolor,delete r.endlinewidth),E?(s("minorgridcount"),s("minorgridwidth",b),s("minorgriddash",g),s("minorgridcolor",pZe(x,.06)),r.minorgridcount||(delete r.minorgridwidth,delete r.minorgriddash,delete r.minorgridcolor)):(delete r.gridcolor,delete r.gridwidth,delete r.griddash),r.showticklabels==="none"&&(delete r.tickfont,delete r.tickangle,delete r.showexponent,delete r.exponentformat,delete r.minexponent,delete r.tickformat,delete r.showticksuffix,delete r.showtickprefix),r.showticksuffix||delete r.ticksuffix,r.showtickprefix||delete r.tickprefix,s("tickmode"),r};function uXt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i=n+"calendar",a=e[i];e.type=lXt(t,a,{autotypenumbers:e.autotypenumbers})}}});var _Ze=ye((F_r,yZe)=>{"use strict";var cXt=mZe(),fXt=Vs();yZe.exports=function(t,r,n,i,a){var o=i("a");o||(i("da"),i("a0"));var s=i("b");s||(i("db"),i("b0")),hXt(t,r,n,a)};function hXt(e,t,r,n){var i=["aaxis","baxis"];i.forEach(function(a){var o=a.charAt(0),s=e[a]||{},l=fXt.newContainer(t,a),u={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,noTicklabelstep:!0,tickfont:"x",id:o+"axis",letter:o,font:t.font,name:a,data:e[o],calendar:t.calendar,dfltColor:n,bgColor:r.paper_bgcolor,autotypenumbersDflt:r.autotypenumbers,fullLayout:r};cXt(s,l,u),l._categories=l._categories||[],!e[a]&&s.type!=="-"&&(e[a]={type:s.type})})}});var wZe=ye((q_r,bZe)=>{"use strict";var xZe=Mr(),dXt=vZe(),vXt=_Ze(),pXt=q7(),gXt=dh();bZe.exports=function(t,r,n,i){function a(l,u){return xZe.coerce(t,r,pXt,l,u)}r._clipPathId="clip"+r.uid+"carpet";var o=a("color",gXt.defaultLine);if(xZe.coerceFont(a,"font",i.font),a("carpet"),vXt(t,r,i,a,o),!r.a||!r.b){r.visible=!1;return}r.a.length<3&&(r.aaxis.smoothing=0),r.b.length<3&&(r.baxis.smoothing=0);var s=dXt(t,r,a);s||(r.visible=!1),r._cheater&&a("cheaterslope"),a("zorder")}});var u$=ye((O_r,TZe)=>{"use strict";var mXt=Mr().isArrayOrTypedArray;TZe.exports=function(t,r,n){var i;for(mXt(t)?t.length>r.length&&(t=t.slice(0,r.length)):t=[],i=0;i{"use strict";AZe.exports=function(t,r,n){if(t.length===0)return"";var i,a=[],o=n?3:1;for(i=0;i{"use strict";SZe.exports=function(t,r,n,i,a,o){var s=a[0]*t.dpdx(r),l=a[1]*t.dpdy(n),u=1,c=1;if(o){var f=Math.sqrt(a[0]*a[0]+a[1]*a[1]),h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),d=(a[0]*o[0]+a[1]*o[1])/f/h;c=Math.max(0,d)}var v=Math.atan2(l,s)*180/Math.PI;return v<-90?(v+=180,u=-u):v>90&&(v-=180,u=-u),{angle:v,flip:u,p:t.c2p(i,r,n),offsetMultplier:c}}});var DZe=ye((U_r,RZe)=>{"use strict";var U7=xa(),O7=ao(),B7=u$(),CZe=c$(),Jk=MZe(),f$=Ll(),Up=Mr(),LZe=Up.strRotate,N7=Up.strTranslate,PZe=Nh();RZe.exports=function(t,r,n,i){var a=t._context.staticPlot,o=r.xaxis,s=r.yaxis,l=t._fullLayout,u=l._clips;Up.makeTraceGroups(i,n,"trace").each(function(c){var f=U7.select(this),h=c[0],d=h.trace,v=d.aaxis,x=d.baxis,b=Up.ensureSingle(f,"g","minorlayer"),g=Up.ensureSingle(f,"g","majorlayer"),E=Up.ensureSingle(f,"g","boundarylayer"),k=Up.ensureSingle(f,"g","labellayer");f.style("opacity",d.opacity),FA(o,s,g,v,"a",v._gridlines,!0,a),FA(o,s,g,x,"b",x._gridlines,!0,a),FA(o,s,b,v,"a",v._minorgridlines,!0,a),FA(o,s,b,x,"b",x._minorgridlines,!0,a),FA(o,s,E,v,"a-boundary",v._boundarylines,a),FA(o,s,E,x,"b-boundary",x._boundarylines,a);var A=EZe(t,o,s,d,h,k,v._labels,"a-label"),L=EZe(t,o,s,d,h,k,x._labels,"b-label");_Xt(t,k,d,h,o,s,A,L),yXt(d,h,u,o,s)})};function yXt(e,t,r,n,i){var a,o,s,l,u=r.select("#"+e._clipPathId);u.size()||(u=r.append("clipPath").classed("carpetclip",!0));var c=Up.ensureSingle(u,"path","carpetboundary"),f=t.clipsegments,h=[];for(l=0;l0?"start":"end","data-notex":1}).call(O7.font,f.font).text(f.text).call(f$.convertToTspans,e),g=O7.bBox(this);b.attr("transform",N7(d.p[0],d.p[1])+LZe(d.angle)+N7(f.axis.labelpadding*x,g.height*.3)),u=Math.max(u,g.width+f.axis.labelpadding)}),l.exit().remove(),c.maxExtent=u,c}function _Xt(e,t,r,n,i,a,o,s){var l,u,c,f,h=Up.aggNums(Math.min,null,r.a),d=Up.aggNums(Math.max,null,r.a),v=Up.aggNums(Math.min,null,r.b),x=Up.aggNums(Math.max,null,r.b);l=.5*(h+d),u=v,c=r.ab2xy(l,u,!0),f=r.dxyda_rough(l,u),o.angle===void 0&&Up.extendFlat(o,Jk(r,i,a,c,r.dxydb_rough(l,u))),kZe(e,t,r,n,c,f,r.aaxis,i,a,o,"a-title"),l=h,u=.5*(v+x),c=r.ab2xy(l,u,!0),f=r.dxydb_rough(l,u),s.angle===void 0&&Up.extendFlat(s,Jk(r,i,a,c,r.dxyda_rough(l,u))),kZe(e,t,r,n,c,f,r.baxis,i,a,s,"b-title")}var IZe=PZe.LINE_SPACING,xXt=(1-PZe.MID_SHIFT)/IZe+1;function kZe(e,t,r,n,i,a,o,s,l,u,c){var f=[];o.title.text&&f.push(o.title.text);var h=t.selectAll("text."+c).data(f),d=u.maxExtent;h.enter().append("text").classed(c,!0),h.each(function(){var v=Jk(r,s,l,i,a);["start","both"].indexOf(o.showticklabels)===-1&&(d=0);var x=o.title.font.size;d+=x+o.title.offset;var b=u.angle+(u.flip<0?180:0),g=(b-v.angle+450)%360,E=g>90&&g<270,k=U7.select(this);k.text(o.title.text).call(f$.convertToTspans,e),E&&(d=(-f$.lineCount(k)+xXt)*IZe*x-d),k.attr("transform",N7(v.p[0],v.p[1])+LZe(v.angle)+N7(0,d)).attr("text-anchor","middle").call(O7.font,o.title.font)}),h.exit().remove()}});var FZe=ye((V_r,zZe)=>{"use strict";var V7=Mr().isArrayOrTypedArray;zZe.exports=function(e,t,r){var n,i,a,o,s,l,u=[],c=V7(e)?e.length:e,f=V7(t)?t.length:t,h=V7(e)?e:null,d=V7(t)?t:null;h&&(a=(h.length-1)/(h[h.length-1]-h[0])/(c-1)),d&&(o=(d.length-1)/(d[d.length-1]-d[0])/(f-1));var v,x=1/0,b=-1/0;for(i=0;i{"use strict";var qZe=Mr().isArrayOrTypedArray;BZe.exports=function(e){return OZe(e,0)};function OZe(e,t){if(!qZe(e)||t>=10)return null;for(var r=1/0,n=-1/0,i=e.length,a=0;a{"use strict";var bXt=Qa(),Ex=no().extendFlat;UZe.exports=function(t,r,n){var i,a,o,s,l,u,c,f,h,d,v,x,b,g,E=t["_"+r],k=t[r+"axis"],A=k._gridlines=[],L=k._minorgridlines=[],_=k._boundarylines=[],C=t["_"+n],M=t[n+"axis"];k.tickmode==="array"&&(k.tickvals=E.slice());var p=t._xctrl,P=t._yctrl,T=p[0].length,F=p.length,q=t._a.length,V=t._b.length;bXt.prepTicks(k),k.tickmode==="array"&&delete k.tickvals;var H=k.smoothing?3:1;function X(N){var W,re,ae,_e,Me,ke,ge,ie,Te,Ee,Ae,ze,Ce=[],me=[],Re={};if(r==="b")for(re=t.b2j(N),ae=Math.floor(Math.max(0,Math.min(V-2,re))),_e=re-ae,Re.length=V,Re.crossLength=q,Re.xy=function(ce){return t.evalxy([],ce,re)},Re.dxy=function(ce,Ge){return t.dxydi([],ce,ae,Ge,_e)},W=0;W0&&(Te=t.dxydi([],W-1,ae,0,_e),Ce.push(Me[0]+Te[0]/3),me.push(Me[1]+Te[1]/3),Ee=t.dxydi([],W-1,ae,1,_e),Ce.push(ie[0]-Ee[0]/3),me.push(ie[1]-Ee[1]/3)),Ce.push(ie[0]),me.push(ie[1]),Me=ie;else for(W=t.a2i(N),ke=Math.floor(Math.max(0,Math.min(q-2,W))),ge=W-ke,Re.length=q,Re.crossLength=V,Re.xy=function(ce){return t.evalxy([],W,ce)},Re.dxy=function(ce,Ge){return t.dxydj([],ke,ce,ge,Ge)},re=0;re0&&(Ae=t.dxydj([],ke,re-1,ge,0),Ce.push(Me[0]+Ae[0]/3),me.push(Me[1]+Ae[1]/3),ze=t.dxydj([],ke,re-1,ge,1),Ce.push(ie[0]-ze[0]/3),me.push(ie[1]-ze[1]/3)),Ce.push(ie[0]),me.push(ie[1]),Me=ie;return Re.axisLetter=r,Re.axis=k,Re.crossAxis=M,Re.value=N,Re.constvar=n,Re.index=f,Re.x=Ce,Re.y=me,Re.smoothing=M.smoothing,Re}function G(N){var W,re,ae,_e,Me,ke=[],ge=[],ie={};if(ie.length=E.length,ie.crossLength=C.length,r==="b")for(ae=Math.max(0,Math.min(V-2,N)),Me=Math.min(1,Math.max(0,N-ae)),ie.xy=function(Te){return t.evalxy([],Te,N)},ie.dxy=function(Te,Ee){return t.dxydi([],Te,ae,Ee,Me)},W=0;WE.length-1)&&A.push(Ex(G(a),{color:k.gridcolor,width:k.gridwidth,dash:k.griddash}));for(f=u;fE.length-1)&&!(v<0||v>E.length-1))for(x=E[o],b=E[v],i=0;iE[E.length-1])&&L.push(Ex(X(d),{color:k.minorgridcolor,width:k.minorgridwidth,dash:k.minorgriddash})));k.startline&&_.push(Ex(G(0),{color:k.startlinecolor,width:k.startlinewidth})),k.endline&&_.push(Ex(G(E.length-1),{color:k.endlinecolor,width:k.endlinewidth}))}else{for(s=5e-15,l=[Math.floor((E[E.length-1]-k.tick0)/k.dtick*(1+s)),Math.ceil((E[0]-k.tick0)/k.dtick/(1+s))].sort(function(N,W){return N-W}),u=l[0],c=l[1],f=u;f<=c;f++)h=k.tick0+k.dtick*f,A.push(Ex(X(h),{color:k.gridcolor,width:k.gridwidth,dash:k.griddash}));for(f=u-1;fE[E.length-1])&&L.push(Ex(X(d),{color:k.minorgridcolor,width:k.minorgridwidth,dash:k.minorgriddash}));k.startline&&_.push(Ex(X(E[0]),{color:k.startlinecolor,width:k.startlinewidth})),k.endline&&_.push(Ex(X(E[E.length-1]),{color:k.endlinecolor,width:k.endlinewidth}))}}});var WZe=ye((j_r,jZe)=>{"use strict";var HZe=Qa(),GZe=no().extendFlat;jZe.exports=function(t,r){var n,i,a,o,s,l=r._labels=[],u=r._gridlines;for(n=0;n{"use strict";ZZe.exports=function(t,r,n,i){var a,o,s,l=[],u=!!n.smoothing,c=!!i.smoothing,f=t[0].length-1,h=t.length-1;for(a=0,o=[],s=[];a<=f;a++)o[a]=t[0][a],s[a]=r[0][a];for(l.push({x:o,y:s,bicubic:u}),a=0,o=[],s=[];a<=h;a++)o[a]=t[a][f],s[a]=r[a][f];for(l.push({x:o,y:s,bicubic:c}),a=f,o=[],s=[];a>=0;a--)o[f-a]=t[h][a],s[f-a]=r[h][a];for(l.push({x:o,y:s,bicubic:u}),a=h,o=[],s=[];a>=0;a--)o[h-a]=t[a][0],s[h-a]=r[a][0];return l.push({x:o,y:s,bicubic:c}),l}});var KZe=ye((Z_r,YZe)=>{"use strict";var wXt=Mr();YZe.exports=function(t,r,n){var i,a,o,s=[],l=[],u=t[0].length,c=t.length;function f(ae,_e){var Me=0,ke,ge=0;return ae>0&&(ke=t[_e][ae-1])!==void 0&&(ge++,Me+=ke),ae0&&(ke=t[_e-1][ae])!==void 0&&(ge++,Me+=ke),_e0&&a0&&iM);return wXt.log("Smoother converged to",p,"after",T,"iterations"),t}});var $Ze=ye((X_r,JZe)=>{"use strict";JZe.exports={RELATIVE_CULL_TOLERANCE:1e-6}});var tXe=ye((Y_r,eXe)=>{"use strict";var QZe=.5;eXe.exports=function(t,r,n,i){var a=t[0]-r[0],o=t[1]-r[1],s=n[0]-r[0],l=n[1]-r[1],u=Math.pow(a*a+o*o,QZe/2),c=Math.pow(s*s+l*l,QZe/2),f=(c*c*a-u*u*s)*i,h=(c*c*o-u*u*l)*i,d=c*(u+c)*3,v=u*(u+c)*3;return[[r[0]+(d&&f/d),r[1]+(d&&h/d)],[r[0]-(v&&f/v),r[1]-(v&&h/v)]]}});var iXe=ye((K_r,rXe)=>{"use strict";var h$=tXe(),H7=Mr().ensureArray;function qA(e,t,r){var n=-.5*r[0]+1.5*t[0],i=-.5*r[1]+1.5*t[1];return[(2*n+e[0])/3,(2*i+e[1])/3]}rXe.exports=function(t,r,n,i,a,o){var s,l,u,c,f,h,d,v,x,b,g=n[0].length,E=n.length,k=a?3*g-2:g,A=o?3*E-2:E;for(t=H7(t,A),r=H7(r,A),u=0;u{"use strict";nXe.exports=function(e,t,r,n,i){var a=t-2,o=r-2;return n&&i?function(s,l,u){s||(s=[]);var c,f,h,d,v,x,b=Math.max(0,Math.min(Math.floor(l),a)),g=Math.max(0,Math.min(Math.floor(u),o)),E=Math.max(0,Math.min(1,l-b)),k=Math.max(0,Math.min(1,u-g));b*=3,g*=3;var A=E*E,L=A*E,_=1-E,C=_*_,M=C*_,p=k*k,P=p*k,T=1-k,F=T*T,q=F*T;for(x=0;x{"use strict";oXe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,x=1-o,b=x*x,g=x*o*2,E=-3*b,k=3*(b-g),A=3*(g-v),L=3*v,_=s*s,C=_*s,M=1-s,p=M*M,P=p*M;for(d=0;d{"use strict";lXe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,x=v*o,b=1-o,g=b*b,E=g*b,k=s*s,A=1-s,L=A*A,_=A*s*2,C=-3*L,M=3*(L-_),p=3*(_-k),P=3*k;for(d=0;d{"use strict";var cXe=$Ze(),fXe=E6().findBin,TXt=iXe(),AXt=aXe(),SXt=sXe(),MXt=uXe();hXe.exports=function(t){var r=t._a,n=t._b,i=r.length,a=n.length,o=t.aaxis,s=t.baxis,l=r[0],u=r[i-1],c=n[0],f=n[a-1],h=r[r.length-1]-r[0],d=n[n.length-1]-n[0],v=h*cXe.RELATIVE_CULL_TOLERANCE,x=d*cXe.RELATIVE_CULL_TOLERANCE;l-=v,u+=v,c-=x,f+=x,t.isVisible=function(b,g){return b>l&&bc&&gu||gf},t.setScale=function(){var b=t._x,g=t._y,E=TXt(t._xctrl,t._yctrl,b,g,o.smoothing,s.smoothing);t._xctrl=E[0],t._yctrl=E[1],t.evalxy=AXt([t._xctrl,t._yctrl],i,a,o.smoothing,s.smoothing),t.dxydi=SXt([t._xctrl,t._yctrl],o.smoothing,s.smoothing),t.dxydj=MXt([t._xctrl,t._yctrl],o.smoothing,s.smoothing)},t.i2a=function(b){var g=Math.max(0,Math.floor(b[0]),i-2),E=b[0]-g;return(1-E)*r[g]+E*r[g+1]},t.j2b=function(b){var g=Math.max(0,Math.floor(b[1]),i-2),E=b[1]-g;return(1-E)*n[g]+E*n[g+1]},t.ij2ab=function(b){return[t.i2a(b[0]),t.j2b(b[1])]},t.a2i=function(b){var g=Math.max(0,Math.min(fXe(b,r),i-2)),E=r[g],k=r[g+1];return Math.max(0,Math.min(i-1,g+(b-E)/(k-E)))},t.b2j=function(b){var g=Math.max(0,Math.min(fXe(b,n),a-2)),E=n[g],k=n[g+1];return Math.max(0,Math.min(a-1,g+(b-E)/(k-E)))},t.ab2ij=function(b){return[t.a2i(b[0]),t.b2j(b[1])]},t.i2c=function(b,g){return t.evalxy([],b,g)},t.ab2xy=function(b,g,E){if(!E&&(br[i-1]|gn[a-1]))return[!1,!1];var k=t.a2i(b),A=t.b2j(g),L=t.evalxy([],k,A);if(E){var _=0,C=0,M=[],p,P,T,F;br[i-1]?(p=i-2,P=1,_=(b-r[i-1])/(r[i-1]-r[i-2])):(p=Math.max(0,Math.min(i-2,Math.floor(k))),P=k-p),gn[a-1]?(T=a-2,F=1,C=(g-n[a-1])/(n[a-1]-n[a-2])):(T=Math.max(0,Math.min(a-2,Math.floor(A))),F=A-T),_&&(t.dxydi(M,p,T,P,F),L[0]+=M[0]*_,L[1]+=M[1]*_),C&&(t.dxydj(M,p,T,P,F),L[0]+=M[0]*C,L[1]+=M[1]*C)}return L},t.c2p=function(b,g,E){return[g.c2p(b[0]),E.c2p(b[1])]},t.p2x=function(b,g,E){return[g.p2c(b[0]),E.p2c(b[1])]},t.dadi=function(b){var g=Math.max(0,Math.min(r.length-2,b));return r[g+1]-r[g]},t.dbdj=function(b){var g=Math.max(0,Math.min(n.length-2,b));return n[g+1]-n[g]},t.dxyda=function(b,g,E,k){var A=t.dxydi(null,b,g,E,k),L=t.dadi(b,E);return[A[0]/L,A[1]/L]},t.dxydb=function(b,g,E,k){var A=t.dxydj(null,b,g,E,k),L=t.dbdj(g,k);return[A[0]/L,A[1]/L]},t.dxyda_rough=function(b,g,E){var k=h*(E||.1),A=t.ab2xy(b+k,g,!0),L=t.ab2xy(b-k,g,!0);return[(A[0]-L[0])*.5/k,(A[1]-L[1])*.5/k]},t.dxydb_rough=function(b,g,E){var k=d*(E||.1),A=t.ab2xy(b,g+k,!0),L=t.ab2xy(b,g-k,!0);return[(A[0]-L[0])*.5/k,(A[1]-L[1])*.5/k]},t.dpdx=function(b){return b._m},t.dpdy=function(b){return b._m}}});var bXe=ye((txr,xXe)=>{"use strict";var G7=Qa(),vXe=Mr().isArray1D,EXt=FZe(),pXe=NZe(),gXe=VZe(),mXe=WZe(),kXt=XZe(),yXe=$I(),_Xe=KZe(),CXt=KI(),LXt=dXe();xXe.exports=function(t,r){var n=G7.getFromId(t,r.xaxis),i=G7.getFromId(t,r.yaxis),a=r.aaxis,o=r.baxis,s=r.x,l=r.y,u=[];s&&vXe(s)&&u.push("x"),l&&vXe(l)&&u.push("y"),u.length&&CXt(r,a,o,"a","b",u);var c=r._a=r._a||r.a,f=r._b=r._b||r.b;s=r._x||r.x,l=r._y||r.y;var h={};if(r._cheater){var d=a.cheatertype==="index"?c.length:c,v=o.cheatertype==="index"?f.length:f;s=EXt(d,v,r.cheaterslope)}r._x=s=yXe(s),r._y=l=yXe(l),_Xe(s,c,f),_Xe(l,c,f),LXt(r),r.setScale();var x=pXe(s),b=pXe(l),g=.5*(x[1]-x[0]),E=.5*(x[1]+x[0]),k=.5*(b[1]-b[0]),A=.5*(b[1]+b[0]),L=1.3;return x=[E-g*L,E+g*L],b=[A-k*L,A+k*L],r._extremes[n._id]=G7.findExtremes(n,x,{padded:!0}),r._extremes[i._id]=G7.findExtremes(i,b,{padded:!0}),gXe(r,"a","b"),gXe(r,"b","a"),mXe(r,a),mXe(r,o),h.clipsegments=kXt(r._xctrl,r._yctrl,a,o),h.x=s,h.y=l,h.a=c,h.b=f,[h]}});var TXe=ye((rxr,wXe)=>{"use strict";wXe.exports={attributes:q7(),supplyDefaults:wZe(),plot:DZe(),calc:bXe(),animatable:!0,isContainer:!0,moduleType:"trace",name:"carpet",basePlotModule:Jf(),categories:["cartesian","svg","carpet","carpetAxis","notLegendIsolatable","noMultiCategory","noHover","noSortingByValue"],meta:{}}});var SXe=ye((ixr,AXe)=>{"use strict";AXe.exports=TXe()});var d$=ye((nxr,EXe)=>{"use strict";var PXt=Eg(),u0=Uc(),IXt=vl(),RXt=Wo().hovertemplateAttrs,DXt=Wo().texttemplateAttrs,MXe=Kl(),kx=no().extendFlat,sg=u0.marker,OA=u0.line,zXt=sg.line;EXe.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:kx({},u0.mode,{dflt:"markers"}),text:kx({},u0.text,{}),texttemplate:DXt({editType:"plot"},{keys:["a","b","text"]}),hovertext:kx({},u0.hovertext,{}),line:{color:OA.color,width:OA.width,dash:OA.dash,backoff:OA.backoff,shape:kx({},OA.shape,{values:["linear","spline"]}),smoothing:OA.smoothing,editType:"calc"},connectgaps:u0.connectgaps,fill:kx({},u0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:PXt(),marker:kx({symbol:sg.symbol,opacity:sg.opacity,maxdisplayed:sg.maxdisplayed,angle:sg.angle,angleref:sg.angleref,standoff:sg.standoff,size:sg.size,sizeref:sg.sizeref,sizemin:sg.sizemin,sizemode:sg.sizemode,line:kx({width:zXt.width,editType:"calc"},MXe("marker.line")),gradient:sg.gradient,editType:"calc"},MXe("marker")),textfont:u0.textfont,textposition:u0.textposition,selected:u0.selected,unselected:u0.unselected,hoverinfo:kx({},IXt.hoverinfo,{flags:["a","b","text","name"]}),hoveron:u0.hoveron,hovertemplate:RXt(),zorder:u0.zorder}});var PXe=ye((axr,LXe)=>{"use strict";var kXe=Mr(),FXt=Sm(),BA=lu(),qXt=$p(),OXt=R0(),CXe=J3(),BXt=D0(),NXt=Ig(),UXt=d$();LXe.exports=function(t,r,n,i){function a(h,d){return kXe.coerce(t,r,UXt,h,d)}a("carpet"),r.xaxis="x",r.yaxis="y";var o=a("a"),s=a("b"),l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("text"),a("texttemplate"),a("hovertext");var u=l{"use strict";IXe.exports=function(t,r){var n={},i=r._carpet,a=i.ab2ij([t.a,t.b]),o=Math.floor(a[0]),s=a[0]-o,l=Math.floor(a[1]),u=a[1]-l,c=i.evalxy([],o,l,s,u);return n.yLabel=c[1].toFixed(3),n}});var j7=ye((sxr,DXe)=>{"use strict";DXe.exports=function(e,t){for(var r=e._fullData.length,n,i=0;i{"use strict";var zXe=uo(),VXt=z0(),HXt=km(),GXt=F0(),jXt=q0().calcMarkerSize,WXt=j7();FXe.exports=function(t,r){var n=r._carpetTrace=WXt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){var i;r.xaxis=n.xaxis,r.yaxis=n.yaxis;var a=r._length,o=new Array(a),s,l,u=!1;for(i=0;i{"use strict";var ZXt=iT(),OXe=Qa(),XXt=ao();BXe.exports=function(t,r,n,i){var a,o,s,l=n[0][0].carpet,u=OXe.getFromId(t,l.xaxis||"x"),c=OXe.getFromId(t,l.yaxis||"y"),f={xaxis:u,yaxis:c,plot:r.plot};for(a=0;a{"use strict";var YXt=sT(),KXt=Mr().fillText;UXe.exports=function(t,r,n,i){var a=YXt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index];o.a=f.a,o.b=f.b,o.xLabelVal=void 0,o.yLabelVal=void 0;var h=o.trace,d=h._carpet,v=h._module.formatLabels(f,h);o.yLabel=v.yLabel,delete o.text;var x=[];function b(k,A){var L;k.labelprefix&&k.labelprefix.length>0?L=k.labelprefix.replace(/ = $/,""):L=k._hovertitle,x.push(L+": "+A.toFixed(3)+k.labelsuffix)}if(!h.hovertemplate){var g=f.hi||h.hoverinfo,E=g.split("+");E.indexOf("all")!==-1&&(E=["a","b","text"]),E.indexOf("a")!==-1&&b(d.aaxis,f.a),E.indexOf("b")!==-1&&b(d.baxis,f.b),x.push("y: "+o.yLabel),E.indexOf("text")!==-1&&KXt(f,h,x),o.extraText=x.join("
")}return a}});var GXe=ye((fxr,HXe)=>{"use strict";HXe.exports=function(t,r,n,i,a){var o=i[a];return t.a=o.a,t.b=o.b,t.y=o.y,t}});var WXe=ye((hxr,jXe)=>{"use strict";jXe.exports={attributes:d$(),supplyDefaults:PXe(),colorbar:Kd(),formatLabels:RXe(),calc:qXe(),plot:NXe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:VXe(),selectPoints:lT(),eventData:GXe(),moduleType:"trace",name:"scattercarpet",basePlotModule:Jf(),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}});var XXe=ye((dxr,ZXe)=>{"use strict";ZXe.exports=WXe()});var v$=ye((vxr,YXe)=>{"use strict";var lg=ET(),g1=T4(),JXt=Kl(),$Xt=no().extendFlat,ty=g1.contours;YXe.exports=$Xt({carpet:{valType:"string",editType:"calc"},z:lg.z,a:lg.x,a0:lg.x0,da:lg.dx,b:lg.y,b0:lg.y0,db:lg.dy,text:lg.text,hovertext:lg.hovertext,transpose:lg.transpose,atype:lg.xtype,btype:lg.ytype,fillcolor:g1.fillcolor,autocontour:g1.autocontour,ncontours:g1.ncontours,contours:{type:ty.type,start:ty.start,end:ty.end,size:ty.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:ty.showlines,showlabels:ty.showlabels,labelfont:ty.labelfont,labelformat:ty.labelformat,operation:ty.operation,value:ty.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:g1.line.color,width:g1.line.width,dash:g1.line.dash,smoothing:g1.line.smoothing,editType:"plot"},zorder:g1.zorder},JXt("",{cLetter:"z",autoColorDflt:!1}))});var p$=ye((pxr,$Xe)=>{"use strict";var KXe=Mr(),QXt=ZI(),JXe=v$(),eYt=yH(),tYt=m8(),rYt=y8();$Xe.exports=function(t,r,n,i){function a(u,c){return KXe.coerce(t,r,JXe,u,c)}function o(u){return KXe.coerce2(t,r,JXe,u)}if(a("carpet"),t.a&&t.b){var s=QXt(t,r,a,i,"a","b");if(!s){r.visible=!1;return}a("text");var l=a("contours.type")==="constraint";l?eYt(t,r,a,i,n,{hasHover:!1}):(tYt(t,r,a,o),rYt(t,r,a,i,{hasHover:!1}))}else r._defaultColor=n,r._length=null;a("zorder")}});var rYe=ye((gxr,tYe)=>{"use strict";var iYt=zv(),QXe=Mr(),nYt=KI(),aYt=$I(),oYt=QI(),sYt=e8(),eYe=VV(),lYt=p$(),uYt=j7(),cYt=oH();tYe.exports=function(t,r){var n=r._carpetTrace=uYt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){if(!r.a||!r.b){var i=t.data[n.index],a=t.data[r.index];a.a||(a.a=i.a),a.b||(a.b=i.b),lYt(a,r,r._defaultColor,t._fullLayout)}var o=fYt(t,r);return cYt(r,r._z),o}};function fYt(e,t){var r=t._carpetTrace,n=r.aaxis,i=r.baxis,a,o,s,l,u,c,f;n._minDtick=0,i._minDtick=0,QXe.isArray1D(t.z)&&nYt(t,n,i,"a","b",["z"]),a=t._a=t._a||t.a,l=t._b=t._b||t.b,a=a?n.makeCalcdata(t,"_a"):[],l=l?i.makeCalcdata(t,"_b"):[],o=t.a0||0,s=t.da||1,u=t.b0||0,c=t.db||1,f=t._z=aYt(t._z||t.z,t.transpose),t._emptypoints=sYt(f),oYt(f,t._emptypoints);var h=QXe.maxRowLength(f),d=t.xtype==="scaled"?"":a,v=eYe(t,d,o,s,h,n),x=t.ytype==="scaled"?"":l,b=eYe(t,x,u,c,f.length,i),g={a:v,b,z:f};return t.contours.type==="levels"&&t.contours.coloring!=="none"&&iYt(e,t,{vals:f,containerStr:"",cLetter:"z"}),[g]}});var nYe=ye((mxr,iYe)=>{"use strict";var hYt=Mr().isArrayOrTypedArray;iYe.exports=function(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v,x,b,g=hYt(r)?"a":"b",E=g==="a"?e.aaxis:e.baxis,k=E.smoothing,A=g==="a"?e.a2i:e.b2j,L=g==="a"?r:n,_=g==="a"?n:r,C=g==="a"?t.a.length:t.b.length,M=g==="a"?t.b.length:t.a.length,p=Math.floor(g==="a"?e.b2j(_):e.a2i(_)),P=g==="a"?function(_e){return e.evalxy([],_e,p)}:function(_e){return e.evalxy([],p,_e)};k&&(o=Math.max(0,Math.min(M-2,p)),s=p-o,a=g==="a"?function(_e,Me){return e.dxydi([],_e,o,Me,s)}:function(_e,Me){return e.dxydj([],o,_e,s,Me)});var T=A(L[0]),F=A(L[1]),q=T0?Math.floor:Math.ceil,X=q>0?Math.ceil:Math.floor,G=q>0?Math.min:Math.max,N=q>0?Math.max:Math.min,W=H(T+V),re=X(F-V);c=P(T);var ae=[[c]];for(i=W;i*q{"use strict";var Z7=xa(),X7=u$(),uYe=c$(),$k=ao(),m1=Mr(),dYt=lH(),vYt=uH(),hw=b8(),W7=S4(),pYt=dH(),gYt=hH(),mYt=vH(),yYt=j7(),aYe=nYe();cYe.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;m1.makeTraceGroups(i,n,"contour").each(function(s){var l=Z7.select(this),u=s[0],c=u.trace,f=c._carpetTrace=yYt(t,c),h=t.calcdata[f.index][0];if(!f.visible||f.visible==="legendonly")return;var d=u.a,v=u.b,x=c.contours,b=gYt(x,r,u),g=x.type==="constraint",E=x._operation,k=g?E==="="?"lines":"fill":x.coloring;function A(H){var X=f.ab2xy(H[0],H[1],!0);return[a.c2p(X[0]),o.c2p(X[1])]}var L=[[d[0],v[v.length-1]],[d[d.length-1],v[v.length-1]],[d[d.length-1],v[0]],[d[0],v[0]]];dYt(b);var _=(d[d.length-1]-d[0])*1e-8,C=(v[v.length-1]-v[0])*1e-8;vYt(b,_,C);var M=b;x.type==="constraint"&&(M=pYt(b,E)),_Yt(b,A);var p,P,T,F,q=[];for(F=h.clipsegments.length-1;F>=0;F--)p=h.clipsegments[F],P=X7([],p.x,a.c2p),T=X7([],p.y,o.c2p),P.reverse(),T.reverse(),q.push(uYe(P,T,p.bicubic));var V="M"+q.join("L")+"Z";wYt(l,h.clipsegments,a,o,g,k),TYt(c,l,a,o,M,L,A,f,h,k,V),xYt(l,b,t,u,x,r,f),$k.setClipUrl(l,f._clipPathId,t)})};function _Yt(e,t){var r,n,i,a,o,s,l,u,c;for(r=0;rb&&(n.max=b),n.len=n.max-n.min}function oYe(e,t,r){var n=e.getPointAtLength(t),i=e.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function sYe(e){var t=Math.sqrt(e[0]*e[0]+e[1]*e[1]);return[e[0]/t,e[1]/t]}function lYe(e,t){var r=Math.abs(e[0]*t[0]+e[1]*t[1]),n=Math.sqrt(1-r*r);return n/r}function wYt(e,t,r,n,i,a){var o,s,l,u,c=m1.ensureSingle(e,"g","contourbg"),f=c.selectAll("path").data(a==="fill"&&!i?[0]:[]);f.enter().append("path"),f.exit().remove();var h=[];for(u=0;u=0&&(d=P,x=b):Math.abs(h[1]-d[1])=0&&(d=P,x=b):m1.log("endpt to newendpt is not vert. or horz.",h,d,P)}if(x>=0)break;u+=M(h,d),h=d}if(x===t.edgepaths.length){m1.log("unclosed perimeter path");break}l=x,f=c.indexOf(l)===-1,f&&(l=c[0],u+=M(h,d)+"Z",h=null)}for(l=0;l{"use strict";hYe.exports={attributes:v$(),supplyDefaults:p$(),colorbar:A8(),calc:rYe(),plot:fYe(),style:T8(),moduleType:"trace",name:"contourcarpet",basePlotModule:Jf(),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}});var pYe=ye((xxr,vYe)=>{"use strict";vYe.exports=dYe()});var K7=ye((bxr,xYe)=>{"use strict";var Y7=Mr().extendFlat,Qk=Uc(),gYe=Oc().axisHoverFormat,yYe=Ed().dash,SYt=i3(),_Ye=HT(),MYt=_Ye.INCREASING.COLOR,EYt=_Ye.DECREASING.COLOR,g$=Qk.line;function mYe(e){return{line:{color:Y7({},g$.color,{dflt:e}),width:g$.width,dash:yYe,editType:"style"},editType:"style"}}xYe.exports={xperiod:Qk.xperiod,xperiod0:Qk.xperiod0,xperiodalignment:Qk.xperiodalignment,xhoverformat:gYe("x"),yhoverformat:gYe("y"),x:{valType:"data_array",editType:"calc+clearAxisTypes"},open:{valType:"data_array",editType:"calc"},high:{valType:"data_array",editType:"calc"},low:{valType:"data_array",editType:"calc"},close:{valType:"data_array",editType:"calc"},line:{width:Y7({},g$.width,{}),dash:Y7({},yYe,{}),editType:"style"},increasing:mYe(MYt),decreasing:mYe(EYt),text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},tickwidth:{valType:"number",min:0,max:.5,dflt:.3,editType:"calc"},hoverlabel:Y7({},SYt.hoverlabel,{split:{valType:"boolean",dflt:!1,editType:"style"}}),zorder:Qk.zorder}});var m$=ye((wxr,bYe)=>{"use strict";var kYt=ba(),CYt=Mr();bYe.exports=function(t,r,n,i){var a=n("x"),o=n("open"),s=n("high"),l=n("low"),u=n("close");n("hoverlabel.split");var c=kYt.getComponentMethod("calendars","handleTraceDefaults");if(c(t,r,["x"],i),!!(o&&s&&l&&u)){var f=Math.min(o.length,s.length,l.length,u.length);return a&&(f=Math.min(f,CYt.minRowLength(a))),r._length=f,f}}});var AYe=ye((Txr,TYe)=>{"use strict";var LYt=Mr(),PYt=m$(),IYt=Pg(),RYt=K7();TYe.exports=function(t,r,n,i){function a(s,l){return LYt.coerce(t,r,RYt,s,l)}var o=PYt(t,r,a,i);if(!o){r.visible=!1;return}IYt(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),a("line.dash"),wYe(t,r,a,"increasing"),wYe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("tickwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function wYe(e,t,r,n){r(n+".line.color"),r(n+".line.width",t.line.width),r(n+".line.dash",t.line.dash)}});var y$=ye((Axr,MYe)=>{"use strict";var NA=Mr(),J7=NA._,$7=Qa(),DYt=Rg(),eC=es().BADNUM;function zYt(e,t){var r=$7.getFromId(e,t.xaxis),n=$7.getFromId(e,t.yaxis),i=qYt(e,r,t),a=t._minDiff;t._minDiff=null;var o=t._origX;t._origX=null;var s=t._xcalc;t._xcalc=null;var l=SYe(e,t,o,s,n,FYt);return t._extremes[r._id]=$7.findExtremes(r,s,{vpad:a/2}),l.length?(NA.extendFlat(l[0].t,{wHover:a/2,tickLen:i}),l):[{t:{empty:!0}}]}function FYt(e,t,r,n){return{o:e,h:t,l:r,c:n}}function SYe(e,t,r,n,i,a){for(var o=i.makeCalcdata(t,"open"),s=i.makeCalcdata(t,"high"),l=i.makeCalcdata(t,"low"),u=i.makeCalcdata(t,"close"),c=NA.isArrayOrTypedArray(t.text),f=NA.isArrayOrTypedArray(t.hovertext),h=!0,d=null,v=!!t.xperiodalignment,x=[],b=0;bd):h=L>E,d=L;var _=a(E,k,A,L);_.pos=g,_.yc=(E+L)/2,_.i=b,_.dir=h?"increasing":"decreasing",_.x=_.pos,_.y=[A,k],v&&(_.orig_p=r[b]),c&&(_.tx=t.text[b]),f&&(_.htx=t.hovertext[b]),x.push(_)}else x.push({pos:g,empty:!0})}return t._extremes[i._id]=$7.findExtremes(i,NA.concat(l,s),{padded:!0}),x.length&&(x[0].t={labels:{open:J7(e,"open:")+" ",high:J7(e,"high:")+" ",low:J7(e,"low:")+" ",close:J7(e,"close:")+" "}}),x}function qYt(e,t,r){var n=r._minDiff;if(!n){var i=e._fullData,a=[];n=1/0;var o;for(o=0;o{"use strict";var OYt=xa(),EYe=Mr();kYe.exports=function(t,r,n,i){var a=r.yaxis,o=r.xaxis,s=!!o.rangebreaks;EYe.makeTraceGroups(i,n,"trace ohlc").each(function(l){var u=OYt.select(this),c=l[0],f=c.t,h=c.trace;if(h.visible!==!0||f.empty){u.remove();return}var d=f.tickLen,v=u.selectAll("path").data(EYe.identity);v.enter().append("path"),v.exit().remove(),v.attr("d",function(x){if(x.empty)return"M0,0Z";var b=o.c2p(x.pos-d,!0),g=o.c2p(x.pos+d,!0),E=s?(b+g)/2:o.c2p(x.pos,!0),k=a.c2p(x.o,!0),A=a.c2p(x.h,!0),L=a.c2p(x.l,!0),_=a.c2p(x.c,!0);return"M"+b+","+k+"H"+E+"M"+E+","+A+"V"+L+"M"+g+","+_+"H"+E})})}});var PYe=ye((Mxr,LYe)=>{"use strict";var _$=xa(),BYt=ao(),NYt=va();LYe.exports=function(t,r,n){var i=n||_$.select(t).selectAll("g.ohlclayer").selectAll("g.trace");i.style("opacity",function(a){return a[0].trace.opacity}),i.each(function(a){var o=a[0].trace;_$.select(this).selectAll("path").each(function(s){if(!s.empty){var l=o[s.dir].line;_$.select(this).style("fill","none").call(NYt.stroke,l.color).call(BYt.dashLine,l.dash,l.width).style("opacity",o.selectedpoints&&!s.selected?.3:1)}})})}});var b$=ye((Exr,FYe)=>{"use strict";var x$=Qa(),UYt=Mr(),Q7=Nc(),VYt=va(),HYt=Mr().fillText,IYe=HT(),GYt={increasing:IYe.INCREASING.SYMBOL,decreasing:IYe.DECREASING.SYMBOL};function jYt(e,t,r,n){var i=e.cd,a=i[0].trace;return a.hoverlabel.split?DYe(e,t,r,n):zYe(e,t,r,n)}function RYe(e,t,r,n){var i=e.cd,a=e.xa,o=i[0].trace,s=i[0].t,l=o.type,u=l==="ohlc"?"l":"min",c=l==="ohlc"?"h":"max",f,h,d=s.bPos||0,v=function(P){return P.pos+d-t},x=s.bdPos||s.tickLen,b=s.wHover,g=Math.min(1,x/Math.abs(a.r2c(a.range[1])-a.r2c(a.range[0])));f=e.maxHoverDistance-g,h=e.maxSpikeDistance-g;function E(P){var T=v(P);return Q7.inbox(T-b,T+b,f)}function k(P){var T=P[u],F=P[c];return T===F||Q7.inbox(T-r,F-r,f)}function A(P){return(E(P)+k(P))/2}var L=Q7.getDistanceFunction(n,E,k,A);if(Q7.getClosest(i,L,e),e.index===!1)return null;var _=i[e.index];if(_.empty)return null;var C=_.dir,M=o[C],p=M.line.color;return VYt.opacity(p)&&M.line.width?e.color=p:e.color=M.fillcolor,e.x0=a.c2p(_.pos+d-x,!0),e.x1=a.c2p(_.pos+d+x,!0),e.xLabelVal=_.orig_p!==void 0?_.orig_p:_.pos,e.spikeDistance=A(_)*h/f,e.xSpike=a.c2p(_.pos,!0),e}function DYe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=[],u=RYe(e,t,r,n);if(!u)return[];var c=u.index,f=i[c],h=f.hi||o.hoverinfo,d=h.split("+"),v=h==="all",x=v||d.indexOf("y")!==-1;if(!x)return[];for(var b=["high","open","close","low"],g={},E=0;E"+s.labels[k]+x$.hoverLabelText(a,A,o.yhoverformat)):(_=UYt.extendFlat({},u),_.y0=_.y1=L,_.yLabelVal=A,_.yLabel=s.labels[k]+x$.hoverLabelText(a,A,o.yhoverformat),_.name="",l.push(_),g[A]=_)}return l}function zYe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=RYe(e,t,r,n);if(!l)return[];var u=l.index,c=i[u],f=l.index=c.i,h=c.dir;function d(A){return s.labels[A]+x$.hoverLabelText(a,o[A][f],o.yhoverformat)}var v=c.hi||o.hoverinfo,x=v.split("+"),b=v==="all",g=b||x.indexOf("y")!==-1,E=b||x.indexOf("text")!==-1,k=g?[d("open"),d("high"),d("low"),d("close")+" "+GYt[h]]:[];return E&&HYt(c,o,k),l.extraText=k.join("
"),l.y0=l.y1=a.c2p(c.yc,!0),[l]}FYe.exports={hoverPoints:jYt,hoverSplit:DYe,hoverOnPoints:zYe}});var w$=ye((kxr,qYe)=>{"use strict";qYe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l=n[0].t.bPos||0;if(r===!1)for(s=0;s{"use strict";OYe.exports={moduleType:"trace",name:"ohlc",basePlotModule:Jf(),categories:["cartesian","svg","showLegend"],meta:{},attributes:K7(),supplyDefaults:AYe(),calc:y$().calc,plot:CYe(),style:PYe(),hoverPoints:b$().hoverPoints,selectPoints:w$()}});var UYe=ye((Lxr,NYe)=>{"use strict";NYe.exports=BYe()});var A$=ye((Pxr,GYe)=>{"use strict";var T$=Mr().extendFlat,VYe=Oc().axisHoverFormat,c0=K7(),UA=v4();function HYe(e){return{line:{color:T$({},UA.line.color,{dflt:e}),width:UA.line.width,editType:"style"},fillcolor:UA.fillcolor,editType:"style"}}GYe.exports={xperiod:c0.xperiod,xperiod0:c0.xperiod0,xperiodalignment:c0.xperiodalignment,xhoverformat:VYe("x"),yhoverformat:VYe("y"),x:c0.x,open:c0.open,high:c0.high,low:c0.low,close:c0.close,line:{width:T$({},UA.line.width,{}),editType:"style"},increasing:HYe(c0.increasing.line.color.dflt),decreasing:HYe(c0.decreasing.line.color.dflt),text:c0.text,hovertext:c0.hovertext,whiskerwidth:T$({},UA.whiskerwidth,{dflt:0}),hoverlabel:c0.hoverlabel,zorder:UA.zorder}});var ZYe=ye((Ixr,WYe)=>{"use strict";var WYt=Mr(),ZYt=va(),XYt=m$(),YYt=Pg(),KYt=A$();WYe.exports=function(t,r,n,i){function a(s,l){return WYt.coerce(t,r,KYt,s,l)}var o=XYt(t,r,a,i);if(!o){r.visible=!1;return}YYt(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),jYe(t,r,a,"increasing"),jYe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("whiskerwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function jYe(e,t,r,n){var i=r(n+".line.color");r(n+".line.width",t.line.width),r(n+".fillcolor",ZYt.addOpacity(i,.5))}});var JYe=ye((Rxr,KYe)=>{"use strict";var XYe=Mr(),YYe=Qa(),JYt=Rg(),$Yt=y$().calcCommon;KYe.exports=function(e,t){var r=e._fullLayout,n=YYe.getFromId(e,t.xaxis),i=YYe.getFromId(e,t.yaxis),a=n.makeCalcdata(t,"x"),o=JYt(t,n,"x",a).vals,s=$Yt(e,t,a,o,i,QYt);return s.length?(XYe.extendFlat(s[0].t,{num:r._numBoxes,dPos:XYe.distinctVals(o).minDiff/2,posLetter:"x",valLetter:"y"}),r._numBoxes++,s):[{t:{empty:!0}}]};function QYt(e,t,r,n){return{min:r,q1:Math.min(e,n),med:n,q3:Math.max(e,n),max:t}}});var QYe=ye((Dxr,$Ye)=>{"use strict";$Ye.exports={moduleType:"trace",name:"candlestick",basePlotModule:Jf(),categories:["cartesian","svg","showLegend","candlestick","boxLayout"],meta:{},attributes:A$(),layoutAttributes:p4(),supplyLayoutDefaults:UI().supplyLayoutDefaults,crossTraceCalc:HI().crossTraceCalc,supplyDefaults:ZYe(),calc:JYe(),plot:GI().plot,layerName:"boxlayer",style:jI().style,hoverPoints:b$().hoverPoints,selectPoints:w$()}});var tKe=ye((zxr,eKe)=>{"use strict";eKe.exports=QYe()});var M$=ye((Fxr,rKe)=>{"use strict";var t9=Mr(),eKt=ym(),e9=t9.deg2rad,S$=t9.rad2deg;rKe.exports=function(t,r,n){switch(eKt(t,n),t._id){case"x":case"radialaxis":tKt(t,r);break;case"angularaxis":nKt(t,r);break}};function tKt(e,t){var r=t._subplot;e.setGeometry=function(){var n=e._rl[0],i=e._rl[1],a=r.innerRadius,o=(r.radius-a)/(i-n),s=a/o,l=n>i?function(u){return u<=0}:function(u){return u>=0};e.c2g=function(u){var c=e.c2l(u)-n;return(l(c)?c:0)+s},e.g2c=function(u){return e.l2c(u+n-s)},e.g2p=function(u){return u*o},e.c2p=function(u){return e.g2p(e.c2g(u))}}}function rKt(e,t){return t==="degrees"?e9(e):e}function iKt(e,t){return t==="degrees"?S$(e):e}function nKt(e,t){var r=e.type;if(r==="linear"){var n=e.d2c,i=e.c2d;e.d2c=function(a,o){return rKt(n(a),o)},e.c2d=function(a,o){return i(iKt(a,o))}}e.makeCalcdata=function(a,o){var s=a[o],l=a._length,u,c,f=function(b){return e.d2c(b,a.thetaunit)};if(s)for(u=new Array(l),c=0;c{"use strict";iKe.exports={attr:"subplot",name:"polar",axisNames:["angularaxis","radialaxis"],axisName2dataArray:{angularaxis:"theta",radialaxis:"r"},layerNames:["draglayer","plotbg","backplot","angular-grid","radial-grid","frontplot","angular-line","radial-line","angular-axis","radial-axis"],radialDragBoxSize:50,angularDragBoxSize:30,cornerLen:25,cornerHalfWidth:2,MINDRAG:8,MINZOOM:20,OFFEDGE:20}});var n9=ye((Oxr,lKe)=>{"use strict";var dw=Mr(),nKe=wM().tester,E$=dw.findIndexOfMin,oKe=dw.isAngleInsideSector,aKt=dw.angleDelta,aKe=dw.angleDist;function oKt(e,t,r,n,i){if(!oKe(t,n))return!1;var a,o;r[0]0?o:1/0},n=E$(t,r),i=dw.mod(n+1,t.length);return[t[n],t[i]]}function i9(e){return Math.abs(e)>1e-10?e:0}function k$(e,t,r){t=t||0,r=r||0;for(var n=e.length,i=new Array(n),a=0;a{"use strict";function uKe(e){return e<0?-1:e>0?1:0}function HA(e){var t=e[0],r=e[1];if(!isFinite(t)||!isFinite(r))return[1,0];var n=(t+1)*(t+1)+r*r;return[(t*t+r*r-1)/n,2*r/n]}function GA(e,t){var r=t[0],n=t[1];return[r*e.radius+e.cx,-n*e.radius+e.cy]}function cKe(e,t){return t*e.radius}function vKt(e,t,r,n){var i=GA(e,HA([r,t])),a=i[0],o=i[1],s=GA(e,HA([n,t])),l=s[0],u=s[1];if(t===0)return["M"+a+","+o,"L"+l+","+u].join(" ");var c=cKe(e,1/Math.abs(t));return["M"+a+","+o,"A"+c+","+c+" 0 0,"+(t<0?1:0)+" "+l+","+u].join(" ")}function pKt(e,t,r,n){var i=cKe(e,1/(t+1)),a=GA(e,HA([t,r])),o=a[0],s=a[1],l=GA(e,HA([t,n])),u=l[0],c=l[1];if(uKe(r)!==uKe(n)){var f=GA(e,HA([t,0])),h=f[0],d=f[1];return["M"+o+","+s,"A"+i+","+i+" 0 0,"+(0{"use strict";var vw=xa(),gKt=id(),gw=ba(),cc=Mr(),ry=cc.strRotate,dd=cc.strTranslate,L$=va(),tC=ao(),mKt=Xu(),dp=Qa(),yKt=ym(),_Kt=M$(),xKt=wg().doAutoRange,y1=DN(),s9=gv(),hKe=Nc(),bKt=Mb(),wKt=wf().prepSelect,TKt=wf().selectOnClick,P$=wf().clearOutline,dKe=Tg(),vKe=lM(),pKe=gM().redrawReglTraces,AKt=Nh().MID_SHIFT,Cx=r9(),_1=n9(),l9=C$(),a9=l9.smith,SKt=l9.reactanceArc,MKt=l9.resistanceArc,o9=l9.smithTransform,EKt=cc._,gKe=cc.mod,Lx=cc.deg2rad,pw=cc.rad2deg;function mKe(e,t,r){this.isSmith=r||!1,this.id=t,this.gd=e,this._hasClipOnAxisFalse=null,this.vangles=null,this.radialAxisAngle=null,this.traceHash={},this.layers={},this.clipPaths={},this.clipIds={},this.viewInitial={};var n=e._fullLayout,i="clip"+n._uid+t;this.clipIds.forTraces=i+"-for-traces",this.clipPaths.forTraces=n._clips.append("clipPath").attr("id",this.clipIds.forTraces),this.clipPaths.forTraces.append("path"),this.framework=n["_"+(r?"smith":"polar")+"layer"].append("g").attr("class",t),this.getHole=function(a){return this.isSmith?0:a.hole},this.getSector=function(a){return this.isSmith?[0,360]:a.sector},this.getRadial=function(a){return this.isSmith?a.realaxis:a.radialaxis},this.getAngular=function(a){return this.isSmith?a.imaginaryaxis:a.angularaxis},r||(this.radialTickLayout=null,this.angularTickLayout=null)}var Fd=mKe.prototype;xKe.exports=function(t,r,n){return new mKe(t,r,n)};Fd.plot=function(e,t){for(var r=this,n=t[r.id],i=!1,a=0;ab?(g=u,E=u*b,L=(c-E)/i.h/2,k=[s[0],s[1]],A=[l[0]+L,l[1]-L]):(g=c/b,E=c,L=(u-g)/i.w/2,k=[s[0]+L,s[1]-L],A=[l[0],l[1]]),r.xLength2=g,r.yLength2=E,r.xDomain2=k,r.yDomain2=A;var _=r.xOffset2=i.l+i.w*k[0],C=r.yOffset2=i.t+i.h*(1-A[1]),M=r.radius=g/d,p=r.innerRadius=r.getHole(t)*M,P=r.cx=_-M*h[0],T=r.cy=C+M*h[3],F=r.cxx=P-_,q=r.cyy=T-C,V=a.side,H;V==="counterclockwise"?(H=V,V="top"):V==="clockwise"&&(H=V,V="bottom"),r.radialAxis=r.mockAxis(e,t,a,{_id:"x",side:V,_trueSide:H,domain:[p/i.w,M/i.w]}),r.angularAxis=r.mockAxis(e,t,o,{side:"right",domain:[0,Math.PI],autorange:!1}),r.doAutoRange(e,t),r.updateAngularAxis(e,t),r.updateRadialAxis(e,t),r.updateRadialAxisTitle(e,t),r.xaxis=r.mockCartesianAxis(e,t,{_id:"x",domain:k}),r.yaxis=r.mockCartesianAxis(e,t,{_id:"y",domain:A});var X=r.pathSubplot();r.clipPaths.forTraces.select("path").attr("d",X).attr("transform",dd(F,q)),n.frontplot.attr("transform",dd(_,C)).call(tC.setClipUrl,r._hasClipOnAxisFalse?null:r.clipIds.forTraces,r.gd),n.bg.attr("d",X).attr("transform",dd(P,T)).call(L$.fill,t.bgcolor)};Fd.mockAxis=function(e,t,r,n){var i=cc.extendFlat({},r,n);return _Kt(i,t,e),i};Fd.mockCartesianAxis=function(e,t,r){var n=this,i=n.isSmith,a=r._id,o=cc.extendFlat({type:"linear"},r);yKt(o,e);var s={x:[0,2],y:[1,3]};return o.setRange=function(){var l=n.sectorBBox,u=s[a],c=n.radialAxis._rl,f=(c[1]-c[0])/(1-n.getHole(t));o.range=[l[u[0]]*f,l[u[1]]*f]},o.isPtWithinRange=a==="x"&&!i?function(l){return n.isPtInside(l)}:function(){return!0},o.setRange(),o.setScale(),o};Fd.doAutoRange=function(e,t){var r=this,n=r.gd,i=r.radialAxis,a=r.getRadial(t);xKt(n,i);var o=i.range;if(a.range=o.slice(),a._input.range=o.slice(),i._rl=[i.r2l(o[0],null,"gregorian"),i.r2l(o[1],null,"gregorian")],i.minallowed!==void 0){var s=i.r2l(i.minallowed);i._rl[0]>i._rl[1]?i._rl[1]=Math.max(i._rl[1],s):i._rl[0]=Math.max(i._rl[0],s)}if(i.maxallowed!==void 0){var l=i.r2l(i.maxallowed);i._rl[0]90&&c<=270&&(f.tickangle=180);var v=d?function(M){var p=o9(r,a9([M.x,0]));return dd(p[0]-s,p[1]-l)}:function(M){return dd(f.l2p(M.x)+o,0)},x=d?function(M){return MKt(r,M.x,-1/0,1/0)}:function(M){return r.pathArc(f.r2p(M.x)+o)},b=yKe(u);if(r.radialTickLayout!==b&&(i["radial-axis"].selectAll(".xtick").remove(),r.radialTickLayout=b),h){f.setScale();var g=0,E=d?(f.tickvals||[]).filter(function(M){return M>=0}).map(function(M){return dp.tickText(f,M,!0,!1)}):dp.calcTicks(f),k=d?E:dp.clipEnds(f,E),A=dp.getTickSigns(f)[2];d&&((f.ticks==="top"&&f.side==="bottom"||f.ticks==="bottom"&&f.side==="top")&&(A=-A),f.ticks==="top"&&f.side==="top"&&(g=-f.ticklen),f.ticks==="bottom"&&f.side==="bottom"&&(g=f.ticklen)),dp.drawTicks(n,f,{vals:E,layer:i["radial-axis"],path:dp.makeTickPath(f,0,A),transFn:v,crisp:!1}),dp.drawGrid(n,f,{vals:k,layer:i["radial-grid"],path:x,transFn:cc.noop,crisp:!1}),dp.drawLabels(n,f,{vals:E,layer:i["radial-axis"],transFn:v,labelFns:dp.makeLabelFns(f,g)})}var L=r.radialAxisAngle=r.vangles?pw(_Ke(Lx(u.angle),r.vangles)):u.angle,_=dd(s,l),C=_+ry(-L);rC(i["radial-axis"],h&&(u.showticklabels||u.ticks),{transform:C}),rC(i["radial-grid"],h&&u.showgrid,{transform:d?"":_}),rC(i["radial-line"].select("line"),h&&u.showline,{x1:d?-a:o,y1:0,x2:a,y2:0,transform:C}).attr("stroke-width",u.linewidth).call(L$.stroke,u.linecolor)};Fd.updateRadialAxisTitle=function(e,t,r){if(!this.isSmith){var n=this,i=n.gd,a=n.radius,o=n.cx,s=n.cy,l=n.getRadial(t),u=n.id+"title",c=0;if(l.title){var f=tC.bBox(n.layers["radial-axis"].node()).height,h=l.title.font.size,d=l.side;c=d==="top"?h:d==="counterclockwise"?-(f+h*.4):f+h*.8}var v=r!==void 0?r:n.radialAxisAngle,x=Lx(v),b=Math.cos(x),g=Math.sin(x),E=o+a/2*b+c*g,k=s-a/2*g+c*b;n.layers["radial-axis-title"]=bKt.draw(i,u,{propContainer:l,propName:n.id+".radialaxis.title",placeholder:EKt(i,"Click to enter radial axis title"),attributes:{x:E,y:k,"text-anchor":"middle"},transform:{rotate:-v}})}};Fd.updateAngularAxis=function(e,t){var r=this,n=r.gd,i=r.layers,a=r.radius,o=r.innerRadius,s=r.cx,l=r.cy,u=r.getAngular(t),c=r.angularAxis,f=r.isSmith;f||(r.fillViewInitialKey("angularaxis.rotation",u.rotation),c.setGeometry(),c.setScale());var h=f?function(p){var P=o9(r,a9([0,p.x]));return Math.atan2(P[0]-s,P[1]-l)-Math.PI/2}:function(p){return c.t2g(p.x)};c.type==="linear"&&c.thetaunit==="radians"&&(c.tick0=pw(c.tick0),c.dtick=pw(c.dtick));var d=function(p){return dd(s+a*Math.cos(p),l-a*Math.sin(p))},v=f?function(p){var P=o9(r,a9([0,p.x]));return dd(P[0],P[1])}:function(p){return d(h(p))},x=f?function(p){var P=o9(r,a9([0,p.x])),T=Math.atan2(P[0]-s,P[1]-l)-Math.PI/2;return dd(P[0],P[1])+ry(-pw(T))}:function(p){var P=h(p);return d(P)+ry(-pw(P))},b=f?function(p){return SKt(r,p.x,0,1/0)}:function(p){var P=h(p),T=Math.cos(P),F=Math.sin(P);return"M"+[s+o*T,l-o*F]+"L"+[s+a*T,l-a*F]},g=dp.makeLabelFns(c,0),E=g.labelStandoff,k={};k.xFn=function(p){var P=h(p);return Math.cos(P)*E},k.yFn=function(p){var P=h(p),T=Math.sin(P)>0?.2:1;return-Math.sin(P)*(E+p.fontSize*T)+Math.abs(Math.cos(P))*(p.fontSize*AKt)},k.anchorFn=function(p){var P=h(p),T=Math.cos(P);return Math.abs(T)<.1?"middle":T>0?"start":"end"},k.heightFn=function(p,P,T){var F=h(p);return-.5*(1+Math.sin(F))*T};var A=yKe(u);r.angularTickLayout!==A&&(i["angular-axis"].selectAll("."+c._id+"tick").remove(),r.angularTickLayout=A);var L=f?[1/0].concat(c.tickvals||[]).map(function(p){return dp.tickText(c,p,!0,!1)}):dp.calcTicks(c);f&&(L[0].text="\u221E",L[0].fontSize*=1.75);var _;if(t.gridshape==="linear"?(_=L.map(h),cc.angleDelta(_[0],_[1])<0&&(_=_.slice().reverse())):_=null,r.vangles=_,c.type==="category"&&(L=L.filter(function(p){return cc.isAngleInsideSector(h(p),r.sectorInRad)})),c.visible){var C=c.ticks==="inside"?-1:1,M=(c.linewidth||1)/2;dp.drawTicks(n,c,{vals:L,layer:i["angular-axis"],path:"M"+C*M+",0h"+C*c.ticklen,transFn:x,crisp:!1}),dp.drawGrid(n,c,{vals:L,layer:i["angular-grid"],path:b,transFn:cc.noop,crisp:!1}),dp.drawLabels(n,c,{vals:L,layer:i["angular-axis"],repositionOnUpdate:!0,transFn:v,labelFns:k})}rC(i["angular-line"].select("path"),u.showline,{d:r.pathSubplot(),transform:dd(s,l)}).attr("stroke-width",u.linewidth).call(L$.stroke,u.linecolor)};Fd.updateFx=function(e,t){if(!this.gd._context.staticPlot){var r=!this.isSmith;r&&(this.updateAngularDrag(e),this.updateRadialDrag(e,t,0),this.updateRadialDrag(e,t,1)),this.updateHoverAndMainDrag(e)}};Fd.updateHoverAndMainDrag=function(e){var t=this,r=t.isSmith,n=t.gd,i=t.layers,a=e._zoomlayer,o=Cx.MINZOOM,s=Cx.OFFEDGE,l=t.radius,u=t.innerRadius,c=t.cx,f=t.cy,h=t.cxx,d=t.cyy,v=t.sectorInRad,x=t.vangles,b=t.radialAxis,g=_1.clampTiny,E=_1.findXYatLength,k=_1.findEnclosingVertexAngles,A=Cx.cornerHalfWidth,L=Cx.cornerLen/2,_,C,M=y1.makeDragger(i,"path","maindrag",e.dragmode===!1?"none":"crosshair");vw.select(M).attr("d",t.pathSubplot()).attr("transform",dd(c,f)),M.onmousemove=function(ce){hKe.hover(n,ce,t.id),n._fullLayout._lasthover=M,n._fullLayout._hoversubplot=t.id},M.onmouseout=function(ce){n._dragging||s9.unhover(n,ce)};var p={element:M,gd:n,subplot:t.id,plotinfo:{id:t.id,xaxis:t.xaxis,yaxis:t.yaxis},xaxes:[t.xaxis],yaxes:[t.yaxis]},P,T,F,q,V,H,X,G,N;function W(ce,Ge){return Math.sqrt(ce*ce+Ge*Ge)}function re(ce,Ge){return W(ce-h,Ge-d)}function ae(ce,Ge){return Math.atan2(d-Ge,ce-h)}function _e(ce,Ge){return[ce*Math.cos(Ge),ce*Math.sin(-Ge)]}function Me(ce,Ge){if(ce===0)return t.pathSector(2*A);var nt=L/ce,ct=Ge-nt,qt=Ge+nt,rt=Math.max(0,Math.min(ce,l)),ot=rt-A,Rt=rt+A;return"M"+_e(ot,ct)+"A"+[ot,ot]+" 0,0,0 "+_e(ot,qt)+"L"+_e(Rt,qt)+"A"+[Rt,Rt]+" 0,0,1 "+_e(Rt,ct)+"Z"}function ke(ce,Ge,nt){if(ce===0)return t.pathSector(2*A);var ct=_e(ce,Ge),qt=_e(ce,nt),rt=g((ct[0]+qt[0])/2),ot=g((ct[1]+qt[1])/2),Rt,kt;if(rt&&ot){var Ct=ot/rt,Yt=-1/Ct,xr=E(A,Ct,rt,ot);Rt=E(L,Yt,xr[0][0],xr[0][1]),kt=E(L,Yt,xr[1][0],xr[1][1])}else{var er,Ke;ot?(er=L,Ke=A):(er=A,Ke=L),Rt=[[rt-er,ot-Ke],[rt+er,ot-Ke]],kt=[[rt-er,ot+Ke],[rt+er,ot+Ke]]}return"M"+Rt.join("L")+"L"+kt.reverse().join("L")+"Z"}function ge(){F=null,q=null,V=t.pathSubplot(),H=!1;var ce=n._fullLayout[t.id];X=gKt(ce.bgcolor).getLuminance(),G=y1.makeZoombox(a,X,c,f,V),G.attr("fill-rule","evenodd"),N=y1.makeCorners(a,c,f),P$(n)}function ie(ce,Ge){return Ge=Math.max(Math.min(Ge,l),u),ceo?(ce-1&&ce===1&&TKt(Ge,n,[t.xaxis],[t.yaxis],t.id,p),nt.indexOf("event")>-1&&hKe.click(n,Ge,t.id)}p.prepFn=function(ce,Ge,nt){var ct=n._fullLayout.dragmode,qt=M.getBoundingClientRect();n._fullLayout._calcInverseTransform(n);var rt=n._fullLayout._invTransform;_=n._fullLayout._invScaleX,C=n._fullLayout._invScaleY;var ot=cc.apply3DTransform(rt)(Ge-qt.left,nt-qt.top);if(P=ot[0],T=ot[1],x){var Rt=_1.findPolygonOffset(l,v[0],v[1],x);P+=h+Rt[0],T+=d+Rt[1]}switch(ct){case"zoom":p.clickFn=Re,r||(x?p.moveFn=ze:p.moveFn=Ee,p.doneFn=Ce,ge(ce,Ge,nt));break;case"select":case"lasso":wKt(ce,Ge,nt,p,ct);break}},s9.init(p)};Fd.updateRadialDrag=function(e,t,r){var n=this,i=n.gd,a=n.layers,o=n.radius,s=n.innerRadius,l=n.cx,u=n.cy,c=n.radialAxis,f=Cx.radialDragBoxSize,h=f/2;if(!c.visible)return;var d=Lx(n.radialAxisAngle),v=c._rl,x=v[0],b=v[1],g=v[r],E=.75*(v[1]-v[0])/(1-n.getHole(t))/o,k,A,L;r?(k=l+(o+h)*Math.cos(d),A=u-(o+h)*Math.sin(d),L="radialdrag"):(k=l+(s-h)*Math.cos(d),A=u-(s-h)*Math.sin(d),L="radialdrag-inner");var _=y1.makeRectDragger(a,L,"crosshair",-h,-h,f,f),C={element:_,gd:i};e.dragmode===!1&&(C.dragmode=!1),rC(vw.select(_),c.visible&&s0!=(r?P>x:P=90||i>90&&a>=450?d=1:s<=0&&u<=0?d=0:d=Math.max(s,u),i<=180&&a>=180||i>180&&a>=540?c=-1:o>=0&&l>=0?c=0:c=Math.min(o,l),i<=270&&a>=270||i>270&&a>=630?f=-1:s>=0&&u>=0?f=0:f=Math.min(s,u),a>=360?h=1:o<=0&&l<=0?h=0:h=Math.max(o,l),[c,f,h,d]}function _Ke(e,t){var r=function(i){return cc.angleDist(e,i)},n=cc.findIndexOfMin(t,r);return t[n]}function rC(e,t,r){return t?(e.attr("display",null),e.attr(r)):e&&e.attr("display","none"),e}});var R$=ye((Uxr,MKe)=>{"use strict";var CKt=dh(),Yo=Cd(),LKt=Ju().attributes,f0=Mr().extendFlat,bKe=Bu().overrideAll,wKe=bKe({color:Yo.color,showline:f0({},Yo.showline,{dflt:!0}),linecolor:Yo.linecolor,linewidth:Yo.linewidth,showgrid:f0({},Yo.showgrid,{dflt:!0}),gridcolor:Yo.gridcolor,gridwidth:Yo.gridwidth,griddash:Yo.griddash},"plot","from-root"),TKe=bKe({tickmode:Yo.minor.tickmode,nticks:Yo.nticks,tick0:Yo.tick0,dtick:Yo.dtick,tickvals:Yo.tickvals,ticktext:Yo.ticktext,ticks:Yo.ticks,ticklen:Yo.ticklen,tickwidth:Yo.tickwidth,tickcolor:Yo.tickcolor,ticklabelstep:Yo.ticklabelstep,showticklabels:Yo.showticklabels,labelalias:Yo.labelalias,showtickprefix:Yo.showtickprefix,tickprefix:Yo.tickprefix,showticksuffix:Yo.showticksuffix,ticksuffix:Yo.ticksuffix,showexponent:Yo.showexponent,exponentformat:Yo.exponentformat,minexponent:Yo.minexponent,separatethousands:Yo.separatethousands,tickfont:Yo.tickfont,tickangle:Yo.tickangle,tickformat:Yo.tickformat,tickformatstops:Yo.tickformatstops,layer:Yo.layer},"plot","from-root"),AKe={visible:f0({},Yo.visible,{dflt:!0}),type:f0({},Yo.type,{values:["-","linear","log","date","category"]}),autotypenumbers:Yo.autotypenumbers,autorangeoptions:{minallowed:Yo.autorangeoptions.minallowed,maxallowed:Yo.autorangeoptions.maxallowed,clipmin:Yo.autorangeoptions.clipmin,clipmax:Yo.autorangeoptions.clipmax,include:Yo.autorangeoptions.include,editType:"plot"},autorange:f0({},Yo.autorange,{editType:"plot"}),rangemode:{valType:"enumerated",values:["tozero","nonnegative","normal"],dflt:"tozero",editType:"calc"},minallowed:f0({},Yo.minallowed,{editType:"plot"}),maxallowed:f0({},Yo.maxallowed,{editType:"plot"}),range:f0({},Yo.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],editType:"plot"}),categoryorder:Yo.categoryorder,categoryarray:Yo.categoryarray,angle:{valType:"angle",editType:"plot"},autotickangles:Yo.autotickangles,side:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"clockwise",editType:"plot"},title:{text:f0({},Yo.title.text,{editType:"plot",dflt:""}),font:f0({},Yo.title.font,{editType:"plot"}),editType:"plot"},hoverformat:Yo.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(AKe,wKe,TKe);var SKe={visible:f0({},Yo.visible,{dflt:!0}),type:{valType:"enumerated",values:["-","linear","category"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:Yo.autotypenumbers,categoryorder:Yo.categoryorder,categoryarray:Yo.categoryarray,thetaunit:{valType:"enumerated",values:["radians","degrees"],dflt:"degrees",editType:"calc"},period:{valType:"number",editType:"calc",min:0},direction:{valType:"enumerated",values:["counterclockwise","clockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",editType:"calc"},hoverformat:Yo.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(SKe,wKe,TKe);MKe.exports={domain:LKt({name:"polar",editType:"plot"}),sector:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],dflt:[0,360],editType:"plot"},hole:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},bgcolor:{valType:"color",editType:"plot",dflt:CKt.background},radialaxis:AKe,angularaxis:SKe,gridshape:{valType:"enumerated",values:["circular","linear"],dflt:"circular",editType:"plot"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var LKe=ye((Vxr,CKe)=>{"use strict";var u9=Mr(),PKt=va(),IKt=Vs(),RKt=k_(),DKt=kd().getSubplotData,zKt=xb(),FKt=T3(),qKt=e_(),OKt=t_(),BKt=QP(),NKt=YM(),UKt=fB(),VKt=L3(),kKe=R$(),HKt=M$(),c9=r9(),EKe=c9.axisNames;function GKt(e,t,r,n){var i=r("bgcolor");n.bgColor=PKt.combine(i,n.paper_bgcolor);var a=r("sector");r("hole");var o=DKt(n.fullData,c9.name,n.id),s=n.layoutOut,l;function u(G,N){return r(l+"."+G,N)}for(var c=0;c{"use strict";var WKt=kd().getSubplotCalcData,ZKt=Mr().counterRegex,XKt=I$(),IKe=r9(),RKe=IKe.attr,mw=IKe.name,PKe=ZKt(mw),DKe={};DKe[RKe]={valType:"subplotid",dflt:mw,editType:"calc"};function YKt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[mw],i=0;i{"use strict";var JKt=Wo().hovertemplateAttrs,$Kt=Wo().texttemplateAttrs,h9=no().extendFlat,QKt=Eg(),h0=Uc(),eJt=vl(),jA=h0.line;FKe.exports={mode:h0.mode,r:{valType:"data_array",editType:"calc+clearAxisTypes"},theta:{valType:"data_array",editType:"calc+clearAxisTypes"},r0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dr:{valType:"number",dflt:1,editType:"calc"},theta0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dtheta:{valType:"number",editType:"calc"},thetaunit:{valType:"enumerated",values:["radians","degrees","gradians"],dflt:"degrees",editType:"calc+clearAxisTypes"},text:h0.text,texttemplate:$Kt({editType:"plot"},{keys:["r","theta","text"]}),hovertext:h0.hovertext,line:{color:jA.color,width:jA.width,dash:jA.dash,backoff:jA.backoff,shape:h9({},jA.shape,{values:["linear","spline"]}),smoothing:jA.smoothing,editType:"calc"},connectgaps:h0.connectgaps,marker:h0.marker,cliponaxis:h9({},h0.cliponaxis,{dflt:!1}),textposition:h0.textposition,textfont:h0.textfont,fill:h9({},h0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:QKt(),hoverinfo:h9({},eJt.hoverinfo,{flags:["r","theta","text","name"]}),hoveron:h0.hoveron,hovertemplate:JKt(),selected:h0.selected,unselected:h0.unselected}});var v9=ye((jxr,BKe)=>{"use strict";var d9=Mr(),WA=lu(),tJt=$p(),rJt=R0(),qKe=J3(),iJt=D0(),nJt=Ig(),aJt=Sm().PTS_LINESONLY,oJt=iC();function sJt(e,t,r,n){function i(s,l){return d9.coerce(e,t,oJt,s,l)}var a=OKe(e,t,n,i);if(!a){t.visible=!1;return}i("thetaunit"),i("mode",a{"use strict";var lJt=Mr(),NKe=Qa();UKe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o,s;a?(o=a.radialAxis,s=a.angularAxis):(a=n[r.subplot],o=a.radialaxis,s=a.angularaxis);var l=o.c2l(t.r);i.rLabel=NKe.tickText(o,l,!0).text;var u=s.thetaunit==="degrees"?lJt.rad2deg(t.theta):t.theta;return i.thetaLabel=NKe.tickText(s,u,!0).text,i}});var GKe=ye((Zxr,HKe)=>{"use strict";var VKe=uo(),uJt=es().BADNUM,cJt=Qa(),fJt=z0(),hJt=km(),dJt=F0(),vJt=q0().calcMarkerSize;HKe.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=a.makeCalcdata(r,"r"),l=o.makeCalcdata(r,"theta"),u=r._length,c=new Array(u),f=0;f{"use strict";var pJt=iT(),jKe=es().BADNUM;WKe.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=r.radialAxis,u=r.angularAxis,c=0;c{"use strict";var gJt=sT();function mJt(e,t,r,n){var i=gJt(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,XKe(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function XKe(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="r",a._hovertitle="\u03B8";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.rLabel=s.rLabel,n.thetaLabel=s.thetaLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["r","theta","text"]),f.indexOf("r")!==-1&&c(i,n.rLabel),f.indexOf("theta")!==-1&&c(a,n.thetaLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}YKe.exports={hoverPoints:mJt,makeHoverPointText:XKe}});var JKe=ye((Kxr,KKe)=>{"use strict";KKe.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:f9(),categories:["polar","symbols","showLegend","scatter-like"],attributes:iC(),supplyDefaults:v9().supplyDefaults,colorbar:Kd(),formatLabels:p9(),calc:GKe(),plot:ZKe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:g9().hoverPoints,selectPoints:lT(),meta:{}}});var QKe=ye((Jxr,$Ke)=>{"use strict";$Ke.exports=JKe()});var D$=ye(($xr,eJe)=>{"use strict";var Vp=iC(),x1=ek(),yJt=Wo().texttemplateAttrs;eJe.exports={mode:Vp.mode,r:Vp.r,theta:Vp.theta,r0:Vp.r0,dr:Vp.dr,theta0:Vp.theta0,dtheta:Vp.dtheta,thetaunit:Vp.thetaunit,text:Vp.text,texttemplate:yJt({editType:"plot"},{keys:["r","theta","text"]}),hovertext:Vp.hovertext,hovertemplate:Vp.hovertemplate,line:{color:x1.line.color,width:x1.line.width,dash:x1.line.dash,editType:"calc"},connectgaps:x1.connectgaps,marker:x1.marker,fill:x1.fill,fillcolor:x1.fillcolor,textposition:x1.textposition,textfont:x1.textfont,hoverinfo:Vp.hoverinfo,selected:Vp.selected,unselected:Vp.unselected}});var iJe=ye((Qxr,rJe)=>{"use strict";var tJe=Mr(),z$=lu(),_Jt=v9().handleRThetaDefaults,xJt=$p(),bJt=R0(),wJt=D0(),TJt=Ig(),AJt=Sm().PTS_LINESONLY,SJt=D$();rJe.exports=function(t,r,n,i){function a(s,l){return tJe.coerce(t,r,SJt,s,l)}var o=_Jt(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("mode",o{"use strict";var MJt=p9();nJe.exports=function(t,r,n){var i=t.i;return"r"in t||(t.r=r._r[i]),"theta"in t||(t.theta=r._theta[i]),MJt(t,r,n)}});var sJe=ye((tbr,oJe)=>{"use strict";var EJt=z0(),kJt=q0().calcMarkerSize,CJt=Y2(),LJt=Qa(),PJt=ox().TOO_MANY_POINTS;oJe.exports=function(t,r){var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=r._r=a.makeCalcdata(r,"r"),l=r._theta=o.makeCalcdata(r,"theta"),u=r._length,c={};u{"use strict";var IJt=zz(),RJt=g9().makeHoverPointText;function DJt(e,t,r,n){var i=e.cd,a=i[0].t,o=a.r,s=a.theta,l=IJt.hoverPoints(e,t,r,n);if(!(!l||l[0].index===!1)){var u=l[0];if(u.index===void 0)return l;var c=e.subplot,f=u.cd[u.index],h=u.trace;if(f.r=o[u.index],f.theta=s[u.index],!!c.isPtInside(f))return u.xLabelVal=void 0,u.yLabelVal=void 0,RJt(f,h,c,u),l}}lJe.exports={hoverPoints:DJt}});var fJe=ye((ibr,cJe)=>{"use strict";cJe.exports={moduleType:"trace",name:"scatterpolargl",basePlotModule:f9(),categories:["gl","regl","polar","symbols","showLegend","scatter-like"],attributes:D$(),supplyDefaults:iJe(),colorbar:Kd(),formatLabels:aJe(),calc:sJe(),hoverPoints:uJe().hoverPoints,selectPoints:KX(),meta:{}}});var hJe=ye((nbr,F$)=>{"use strict";var zJt=Oz(),FJt=uo(),qJt=QY(),OJt=ZX(),m9=Y2(),y9=Mr(),BJt=ox().TOO_MANY_POINTS,NJt={};F$.exports=function(t,r,n){if(n.length){var i=r.radialAxis,a=r.angularAxis,o=OJt(t,r);return n.forEach(function(s){if(!(!s||!s[0]||!s[0].trace)){var l=s[0],u=l.trace,c=l.t,f=u._length,h=c.r,d=c.theta,v=c.opts,x,b=h.slice(),g=d.slice();for(x=0;x=BJt&&(v.marker.cluster=c.tree),v.marker&&(v.markerSel.positions=v.markerUnsel.positions=v.marker.positions=E),v.line&&E.length>1&&y9.extendFlat(v.line,m9.linePositions(t,u,E)),v.text&&(y9.extendFlat(v.text,{positions:E},m9.textPosition(t,u,v.text,v.marker)),y9.extendFlat(v.textSel,{positions:E},m9.textPosition(t,u,v.text,v.markerSel)),y9.extendFlat(v.textUnsel,{positions:E},m9.textPosition(t,u,v.text,v.markerUnsel))),v.fill&&!o.fill2d&&(o.fill2d=!0),v.marker&&!o.scatter2d&&(o.scatter2d=!0),v.line&&!o.line2d&&(o.line2d=!0),v.text&&!o.glText&&(o.glText=!0),o.lineOptions.push(v.line),o.fillOptions.push(v.fill),o.markerOptions.push(v.marker),o.markerSelectedOptions.push(v.markerSel),o.markerUnselectedOptions.push(v.markerUnsel),o.textOptions.push(v.text),o.textSelectedOptions.push(v.textSel),o.textUnselectedOptions.push(v.textUnsel),o.selectBatch.push([]),o.unselectBatch.push([]),c.x=k,c.y=A,c.rawx=k,c.rawy=A,c.r=h,c.theta=d,c.positions=E,c._scene=o,c.index=o.count,o.count++}}),qJt(t,r,n)}};F$.exports.reglPrecompiled=NJt});var pJe=ye((abr,vJe)=>{"use strict";var dJe=fJe();dJe.plot=hJe();vJe.exports=dJe});var mJe=ye((obr,gJe)=>{"use strict";gJe.exports=pJe()});var q$=ye((sbr,yJe)=>{"use strict";var UJt=Wo().hovertemplateAttrs,ZA=no().extendFlat,Px=iC(),Ix=Lm();yJe.exports={r:Px.r,theta:Px.theta,r0:Px.r0,dr:Px.dr,theta0:Px.theta0,dtheta:Px.dtheta,thetaunit:Px.thetaunit,base:ZA({},Ix.base,{}),offset:ZA({},Ix.offset,{}),width:ZA({},Ix.width,{}),text:ZA({},Ix.text,{}),hovertext:ZA({},Ix.hovertext,{}),marker:VJt(),hoverinfo:Px.hoverinfo,hovertemplate:UJt(),selected:Ix.selected,unselected:Ix.unselected};function VJt(){var e=ZA({},Ix.marker);return delete e.cornerradius,e}});var O$=ye((lbr,_Je)=>{"use strict";_Je.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}});var wJe=ye((ubr,bJe)=>{"use strict";var xJe=Mr(),HJt=v9().handleRThetaDefaults,GJt=zI(),jJt=q$();bJe.exports=function(t,r,n,i){function a(s,l){return xJe.coerce(t,r,jJt,s,l)}var o=HJt(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("base"),a("offset"),a("width"),a("text"),a("hovertext"),a("hovertemplate"),GJt(t,r,a,n,i),xJe.coerceSelectionMarkerOpacity(r,a)}});var AJe=ye((cbr,TJe)=>{"use strict";var WJt=Mr(),ZJt=O$();TJe.exports=function(e,t,r){var n={},i;function a(l,u){return WJt.coerce(e[i]||{},t[i],ZJt,l,u)}for(var o=0;o{"use strict";var SJe=Dv().hasColorscale,MJe=zv(),XJt=Mr().isArrayOrTypedArray,YJt=c4(),KJt=Gb().setGroupPositions,JJt=F0(),$Jt=ba().traceIs,QJt=Mr().extendFlat;function e$t(e,t){for(var r=e._fullLayout,n=t.subplot,i=r[n].radialaxis,a=r[n].angularaxis,o=i.makeCalcdata(t,"r"),s=a.makeCalcdata(t,"theta"),l=t._length,u=new Array(l),c=o,f=s,h=0;h{"use strict";var kJe=xa(),_9=uo(),XA=Mr(),r$t=ao(),N$=n9();CJe.exports=function(t,r,n){var i=t._context.staticPlot,a=r.xaxis,o=r.yaxis,s=r.radialAxis,l=r.angularAxis,u=i$t(r),c=r.layers.frontplot.select("g.barlayer");XA.makeTraceGroups(c,n,"trace bars").each(function(){var f=kJe.select(this),h=XA.ensureSingle(f,"g","points"),d=h.selectAll("g.point").data(XA.identity);d.enter().append("g").style("vector-effect",i?"none":"non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),d.exit().remove(),d.each(function(v){var x=kJe.select(this),b=v.rp0=s.c2p(v.s0),g=v.rp1=s.c2p(v.s1),E=v.thetag0=l.c2g(v.p0),k=v.thetag1=l.c2g(v.p1),A;if(!_9(b)||!_9(g)||!_9(E)||!_9(k)||b===g||E===k)A="M0,0Z";else{var L=s.c2g(v.s1),_=(E+k)/2;v.ct=[a.c2p(L*Math.cos(_)),o.c2p(L*Math.sin(_))],A=u(b,g,E,k)}XA.ensureSingle(x,"path").attr("d",A)}),r$t.setClipUrl(f,r._hasClipOnAxisFalse?r.clipIds.forTraces:null,t)})};function i$t(e){var t=e.cxx,r=e.cyy;return e.vangles?function(n,i,a,o){var s,l;XA.angleDelta(a,o)>0?(s=a,l=o):(s=o,l=a);var u=N$.findEnclosingVertexAngles(s,e.vangles)[0],c=N$.findEnclosingVertexAngles(l,e.vangles)[1],f=[u,(s+l)/2,c];return N$.pathPolygonAnnulus(n,i,s,l,f,t,r)}:function(n,i,a,o){return XA.pathAnnulus(n,i,a,o,t,r)}}});var IJe=ye((dbr,PJe)=>{"use strict";var n$t=Nc(),U$=Mr(),a$t=TT().getTraceColor,o$t=U$.fillText,s$t=g9().makeHoverPointText,l$t=n9().isPtInsidePolygon;PJe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s=o.radialAxis,l=o.angularAxis,u=o.vangles,c=u?l$t:U$.isPtInsideSector,f=t.maxHoverDistance,h=l._period||2*Math.PI,d=Math.abs(s.g2p(Math.sqrt(r*r+n*n))),v=Math.atan2(n,r);s.range[0]>s.range[1]&&(v+=Math.PI);var x=function(k){return c(d,v,[k.rp0,k.rp1],[k.thetag0,k.thetag1],u)?f+Math.min(1,Math.abs(k.thetag1-k.thetag0)/h)-1+(k.rp1-d)/(k.rp1-k.rp0)-1:1/0};if(n$t.getClosest(i,x,t),t.index!==!1){var b=t.index,g=i[b];t.x0=t.x1=g.ct[0],t.y0=t.y1=g.ct[1];var E=U$.extendFlat({},g,{r:g.s,theta:g.p});return o$t(g,a,t),s$t(E,a,o,t),t.hovertemplate=a.hovertemplate,t.color=a$t(a,g),t.xLabelVal=t.yLabelVal=void 0,g.s<0&&(t.idealAlign="left"),[t]}}});var DJe=ye((vbr,RJe)=>{"use strict";RJe.exports={moduleType:"trace",name:"barpolar",basePlotModule:f9(),categories:["polar","bar","showLegend"],attributes:q$(),layoutAttributes:O$(),supplyDefaults:wJe(),supplyLayoutDefaults:AJe(),calc:B$().calc,crossTraceCalc:B$().crossTraceCalc,plot:LJe(),colorbar:Kd(),formatLabels:p9(),style:N0().style,styleOnSelect:N0().styleOnSelect,hoverPoints:IJe(),selectPoints:AT(),meta:{}}});var FJe=ye((pbr,zJe)=>{"use strict";zJe.exports=DJe()});var V$=ye((gbr,qJe)=>{"use strict";qJe.exports={attr:"subplot",name:"smith",axisNames:["realaxis","imaginaryaxis"],axisName2dataArray:{imaginaryaxis:"imag",realaxis:"real"}}});var H$=ye((mbr,UJe)=>{"use strict";var u$t=dh(),Mf=Cd(),c$t=Ju().attributes,Rx=Mr().extendFlat,OJe=Bu().overrideAll,BJe=OJe({color:Mf.color,showline:Rx({},Mf.showline,{dflt:!0}),linecolor:Mf.linecolor,linewidth:Mf.linewidth,showgrid:Rx({},Mf.showgrid,{dflt:!0}),gridcolor:Mf.gridcolor,gridwidth:Mf.gridwidth,griddash:Mf.griddash},"plot","from-root"),NJe=OJe({ticklen:Mf.ticklen,tickwidth:Rx({},Mf.tickwidth,{dflt:2}),tickcolor:Mf.tickcolor,showticklabels:Mf.showticklabels,labelalias:Mf.labelalias,showtickprefix:Mf.showtickprefix,tickprefix:Mf.tickprefix,showticksuffix:Mf.showticksuffix,ticksuffix:Mf.ticksuffix,tickfont:Mf.tickfont,tickformat:Mf.tickformat,hoverformat:Mf.hoverformat,layer:Mf.layer},"plot","from-root"),f$t=Rx({visible:Rx({},Mf.visible,{dflt:!0}),tickvals:{dflt:[.2,.5,1,2,5],valType:"data_array",editType:"plot"},tickangle:Rx({},Mf.tickangle,{dflt:90}),ticks:{valType:"enumerated",values:["top","bottom",""],editType:"ticks"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},editType:"calc"},BJe,NJe),h$t=Rx({visible:Rx({},Mf.visible,{dflt:!0}),tickvals:{valType:"data_array",editType:"plot"},ticks:Mf.ticks,editType:"calc"},BJe,NJe);UJe.exports={domain:c$t({name:"smith",editType:"plot"}),bgcolor:{valType:"color",editType:"plot",dflt:u$t.background},realaxis:f$t,imaginaryaxis:h$t,editType:"calc"}});var GJe=ye((ybr,HJe)=>{"use strict";var YA=Mr(),d$t=va(),v$t=Vs(),p$t=k_(),g$t=kd().getSubplotData,m$t=t_(),y$t=e_(),_$t=YM(),x$t=ym(),KA=H$(),G$=V$(),VJe=G$.axisNames,b$t=T$t(function(e){return YA.isTypedArray(e)&&(e=Array.from(e)),e.slice().reverse().map(function(t){return-t}).concat([0]).concat(e)},String);function w$t(e,t,r,n){var i=r("bgcolor");n.bgColor=d$t.combine(i,n.paper_bgcolor);var a=g$t(n.fullData,G$.name,n.id),o=n.layoutOut,s;function l(L,_){return r(s+"."+L,_)}for(var u=0;u{"use strict";var A$t=kd().getSubplotCalcData,S$t=Mr().counterRegex,M$t=I$(),WJe=V$(),ZJe=WJe.attr,yw=WJe.name,jJe=S$t(yw),XJe={};XJe[ZJe]={valType:"subplotid",dflt:yw,editType:"calc"};function E$t(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[yw],i=0;i{"use strict";var C$t=Wo().hovertemplateAttrs,L$t=Wo().texttemplateAttrs,x9=no().extendFlat,P$t=Eg(),d0=Uc(),I$t=vl(),JA=d0.line;JJe.exports={mode:d0.mode,real:{valType:"data_array",editType:"calc+clearAxisTypes"},imag:{valType:"data_array",editType:"calc+clearAxisTypes"},text:d0.text,texttemplate:L$t({editType:"plot"},{keys:["real","imag","text"]}),hovertext:d0.hovertext,line:{color:JA.color,width:JA.width,dash:JA.dash,backoff:JA.backoff,shape:x9({},JA.shape,{values:["linear","spline"]}),smoothing:JA.smoothing,editType:"calc"},connectgaps:d0.connectgaps,marker:d0.marker,cliponaxis:x9({},d0.cliponaxis,{dflt:!1}),textposition:d0.textposition,textfont:d0.textfont,fill:x9({},d0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:P$t(),hoverinfo:x9({},I$t.hoverinfo,{flags:["real","imag","text","name"]}),hoveron:d0.hoveron,hovertemplate:C$t(),selected:d0.selected,unselected:d0.unselected}});var e$e=ye((bbr,QJe)=>{"use strict";var b9=Mr(),$A=lu(),R$t=$p(),D$t=R0(),$Je=J3(),z$t=D0(),F$t=Ig(),q$t=Sm().PTS_LINESONLY,O$t=j$();QJe.exports=function(t,r,n,i){function a(l,u){return b9.coerce(t,r,O$t,l,u)}var o=B$t(t,r,i,a);if(!o){r.visible=!1;return}a("mode",o{"use strict";var t$e=Qa();r$e.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.realLabel=t$e.tickText(a.radialAxis,t.real,!0).text,i.imagLabel=t$e.tickText(a.angularAxis,t.imag,!0).text,i}});var o$e=ye((Tbr,a$e)=>{"use strict";var n$e=uo(),N$t=es().BADNUM,U$t=z0(),V$t=km(),H$t=F0(),G$t=q0().calcMarkerSize;a$e.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].realaxis,o=n[i].imaginaryaxis,s=a.makeCalcdata(r,"real"),l=o.makeCalcdata(r,"imag"),u=r._length,c=new Array(u),f=0;f{"use strict";var j$t=iT(),s$e=es().BADNUM,W$t=C$(),Z$t=W$t.smith;l$e.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=0;l{"use strict";var X$t=sT();function Y$t(e,t,r,n){var i=X$t(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,c$e(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function c$e(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="real",a._hovertitle="imag";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.realLabel=s.realLabel,n.imagLabel=s.imagLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["real","imag","text"]),f.indexOf("real")!==-1&&c(i,n.realLabel),f.indexOf("imag")!==-1&&c(a,n.imagLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}f$e.exports={hoverPoints:Y$t,makeHoverPointText:c$e}});var v$e=ye((Mbr,d$e)=>{"use strict";d$e.exports={moduleType:"trace",name:"scattersmith",basePlotModule:KJe(),categories:["smith","symbols","showLegend","scatter-like"],attributes:j$(),supplyDefaults:e$e(),colorbar:Kd(),formatLabels:i$e(),calc:o$e(),plot:u$e(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:h$e().hoverPoints,selectPoints:lT(),meta:{}}});var g$e=ye((Ebr,p$e)=>{"use strict";p$e.exports=v$e()});var Sv=ye((kbr,y$e)=>{var T9=bh();function m$e(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}T9(m$e.prototype,{instance:function(e,t){e=(e||"gregorian").toLowerCase(),t=t||"";var r=this._localCals[e+"-"+t];if(!r&&this.calendars[e]&&(r=new this.calendars[e](t),this._localCals[e+"-"+t]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,e);return r},newDate:function(e,t,r,n,i){return n=(e!=null&&e.year?e.calendar():typeof n=="string"?this.instance(n,i):n)||this.instance(),n.newDate(e,t,r)},substituteDigits:function(e){return function(t){return(t+"").replace(/[0-9]/g,function(r){return e[r]})}},substituteChineseDigits:function(e,t){return function(r){for(var n="",i=0;r>0;){var a=r%10;n=(a===0?"":e[a]+t[i])+n,i++,r=Math.floor(r/10)}return n.indexOf(e[1]+t[1])===0&&(n=n.substr(1)),n||e[0]}}});function W$(e,t,r,n){if(this._calendar=e,this._year=t,this._month=r,this._day=n,this._calendar._validateLevel===0&&!this._calendar.isValid(this._year,this._month,this._day))throw(Es.local.invalidDate||Es.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function w9(e,t){return e=""+e,"000000".substring(0,t-e.length)+e}T9(W$.prototype,{newDate:function(e,t,r){return this._calendar.newDate(e==null?this:e,t,r)},year:function(e){return arguments.length===0?this._year:this.set(e,"y")},month:function(e){return arguments.length===0?this._month:this.set(e,"m")},day:function(e){return arguments.length===0?this._day:this.set(e,"d")},date:function(e,t,r){if(!this._calendar.isValid(e,t,r))throw(Es.local.invalidDate||Es.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=e,this._month=t,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(e,t){return this._calendar.add(this,e,t)},set:function(e,t){return this._calendar.set(this,e,t)},compareTo:function(e){if(this._calendar.name!==e._calendar.name)throw(Es.local.differentCalendars||Es.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,e._calendar.local.name);var t=this._year!==e._year?this._year-e._year:this._month!==e._month?this.monthOfYear()-e.monthOfYear():this._day-e._day;return t===0?0:t<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(e){return this._calendar.fromJD(e)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(e){return this._calendar.fromJSDate(e)},toString:function(){return(this.year()<0?"-":"")+w9(Math.abs(this.year()),4)+"-"+w9(this.month(),2)+"-"+w9(this.day(),2)}});function Z$(){this.shortYearCutoff="+10"}T9(Z$.prototype,{_validateLevel:0,newDate:function(e,t,r){return e==null?this.today():(e.year&&(this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),r=e.day(),t=e.month(),e=e.year()),new W$(this,e,t,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return t.year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return(t.year()<0?"-":"")+w9(Math.abs(t.year()),4)},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear),12},monthOfYear:function(e,t){var r=this._validate(e,t,this.minDay,Es.local.invalidMonth||Es.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(e,t){var r=(t+this.firstMonth-2*this.minMonth)%this.monthsInYear(e)+this.minMonth;return this._validate(e,r,this.minDay,Es.local.invalidMonth||Es.regionalOptions[""].invalidMonth),r},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return this.leapYear(t)?366:365},dayOfYear:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(e,t,r){return this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),{}},add:function(e,t,r){return this._validate(e,this.minMonth,this.minDay,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),this._correctAdd(e,this._add(e,t,r),t,r)},_add:function(e,t,r){if(this._validateLevel++,r==="d"||r==="w"){var n=e.toJD()+t*(r==="w"?this.daysInWeek():1),i=e.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=e.year()+(r==="y"?t:0),o=e.monthOfYear()+(r==="m"?t:0),i=e.day(),s=function(c){for(;of-1+c.minMonth;)a++,o-=f,f=c.monthsInYear(a)};r==="y"?(e.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,e.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):r==="m"&&(s(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var l=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,l}catch(u){throw this._validateLevel--,u}},_correctAdd:function(e,t,r,n){if(!this.hasYearZero&&(n==="y"||n==="m")&&(t[0]===0||e.year()>0!=t[0]>0)){var i={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;t=this._add(e,r*i[0]+a*i[1],i[2])}return e.date(t[0],t[1],t[2])},set:function(e,t,r){this._validate(e,this.minMonth,this.minDay,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);var n=r==="y"?t:e.year(),i=r==="m"?t:e.month(),a=r==="d"?t:e.day();return(r==="y"||r==="m")&&(a=Math.min(a,this.daysInMonth(n,i))),e.date(n,i,a)},isValid:function(e,t,r){this._validateLevel++;var n=this.hasYearZero||e!==0;if(n){var i=this.newDate(e,t,this.minDay);n=t>=this.minMonth&&t-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),u=i-(l>2.5?4716:4715);return u<=0&&u--,this.newDate(u,l,s)},toJSDate:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(e){return this.newDate(e.getFullYear(),e.getMonth()+1,e.getDate())}});var Es=y$e.exports=new m$e;Es.cdate=W$;Es.baseCalendar=Z$;Es.calendars.gregorian=X$});var _$e=ye(()=>{var Y$=bh(),qd=Sv();Y$(qd.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"});qd.local=qd.regionalOptions[""];Y$(qd.cdate.prototype,{formatDate:function(e,t){return typeof e!="string"&&(t=e,e=""),this._calendar.formatDate(e||"",this,t)}});Y$(qd.baseCalendar.prototype,{UNIX_EPOCH:qd.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:24*60*60,TICKS_EPOCH:qd.instance().jdEpoch,TICKS_PER_DAY:24*60*60*1e7,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(e,t,r){if(typeof e!="string"&&(r=t,t=e,e=""),!t)return"";if(t.calendar()!==this)throw qd.local.invalidFormat||qd.regionalOptions[""].invalidFormat;e=e||this.local.dateFormat,r=r||{};for(var n=r.dayNamesShort||this.local.dayNamesShort,i=r.dayNames||this.local.dayNames,a=r.monthNumbers||this.local.monthNumbers,o=r.monthNamesShort||this.local.monthNamesShort,s=r.monthNames||this.local.monthNames,l=r.calculateWeek||this.local.calculateWeek,u=function(A,L){for(var _=1;k+_1},c=function(A,L,_,C){var M=""+L;if(u(A,C))for(;M.length<_;)M="0"+M;return M},f=function(A,L,_,C){return u(A)?C[L]:_[L]},h=this,d=function(A){return typeof a=="function"?a.call(h,A,u("m")):b(c("m",A.month(),2))},v=function(A,L){return L?typeof s=="function"?s.call(h,A):s[A.month()-h.minMonth]:typeof o=="function"?o.call(h,A):o[A.month()-h.minMonth]},x=this.local.digits,b=function(A){return r.localNumbers&&x?x(A):A},g="",E=!1,k=0;k1},E=function(F,q){var V=g(F,q),H=[2,3,V?4:2,V?4:2,10,11,20]["oyYJ@!".indexOf(F)+1],X=new RegExp("^-?\\d{1,"+H+"}"),G=t.substring(M).match(X);if(!G)throw(qd.local.missingNumberAt||qd.regionalOptions[""].missingNumberAt).replace(/\{0\}/,M);return M+=G[0].length,parseInt(G[0],10)},k=this,A=function(){if(typeof s=="function"){g("m");var F=s.call(k,t.substring(M));return M+=F.length,F}return E("m")},L=function(F,q,V,H){for(var X=g(F,H)?V:q,G=0;G-1){h=1,d=v;for(var T=this.daysInMonth(f,h);d>T;T=this.daysInMonth(f,h))h++,d-=T}return c>-1?this.fromJD(c):this.newDate(f,h,d)},determineDate:function(e,t,r,n,i){r&&typeof r!="object"&&(i=n,n=r,r=null),typeof n!="string"&&(i=n,n="");var a=this,o=function(s){try{return a.parseDate(n,s,i)}catch(f){}s=s.toLowerCase();for(var l=(s.match(/^c/)&&r?r.newDate():null)||a.today(),u=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,c=u.exec(s);c;)l.add(parseInt(c[1],10),c[2]||"d"),c=u.exec(s);return l};return t=t?t.newDate():null,e=e==null?t:typeof e=="string"?o(e):typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?t:a.today().add(e,"d"):a.newDate(e),e}})});var x$e=ye(()=>{var Dx=Sv(),K$t=bh(),K$=Dx.instance();function A9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}A9.prototype=new Dx.baseCalendar;K$t(A9.prototype,{name:"Chinese",jdEpoch:17214255e-1,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(e,t){if(typeof e=="string"){var r=e.match($$t);return r?r[0]:""}var n=this._validateYear(e),i=e.month(),a=""+this.toChineseMonth(n,i);return t&&a.length<2&&(a="0"+a),this.isIntercalaryMonth(n,i)&&(a+="i"),a},monthNames:function(e){if(typeof e=="string"){var t=e.match(Q$t);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},monthNamesShort:function(e){if(typeof e=="string"){var t=e.match(eQt);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},parseMonth:function(e,t){e=this._validateYear(e);var r=parseInt(t),n;if(isNaN(r))t[0]==="\u95F0"&&(n=!0,t=t.substring(1)),t[t.length-1]==="\u6708"&&(t=t.substring(0,t.length-1)),r=1+["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"].indexOf(t);else{var i=t[t.length-1];n=i==="i"||i==="I"}var a=this.toMonthIndex(e,r,n);return a},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(e,t){if(e.year&&(e=e.year()),typeof e!="number"||e<1888||e>2111)throw t.replace(/\{0\}/,this.local.name);return e},toMonthIndex:function(e,t,r){var n=this.intercalaryMonth(e),i=r&&t!==n;if(i||t<1||t>12)throw Dx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a;return n?!r&&t<=n?a=t-1:a=t:a=t-1,a},toChineseMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e),n=r?12:11;if(t<0||t>n)throw Dx.local.invalidMonth.replace(/\{0\}/,this.local.name);var i;return r?t>13;return r},isIntercalaryMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e);return!!r&&r===t},leapYear:function(e){return this.intercalaryMonth(e)!==0},weekOfYear:function(e,t,r){var n=this._validateYear(e,Dx.local.invalidyear),i=Fx[n-Fx[0]],a=i>>9&4095,o=i>>5&15,s=i&31,l;l=K$.newDate(a,o,s),l.add(4-(l.dayOfWeek()||7),"d");var u=this.toJD(e,t,r)-l.toJD();return 1+Math.floor(u/7)},monthsInYear:function(e){return this.leapYear(e)?13:12},daysInMonth:function(e,t){e.year&&(t=e.month(),e=e.year()),e=this._validateYear(e);var r=zx[e-zx[0]],n=r>>13,i=n?12:11;if(t>i)throw Dx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a=r&1<<12-t?30:29;return a},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,a,r,Dx.local.invalidDate);e=this._validateYear(n.year()),t=n.month(),r=n.day();var i=this.isIntercalaryMonth(e,t),a=this.toChineseMonth(e,t),o=rQt(e,a,r,i);return K$.toJD(o.year,o.month,o.day)},fromJD:function(e){var t=K$.fromJD(e),r=tQt(t.year(),t.month(),t.day()),n=this.toMonthIndex(r.year,r.month,r.isIntercalary);return this.newDate(r.year,n,r.day)},fromString:function(e){var t=e.match(J$t),r=this._validateYear(+t[1]),n=+t[2],i=!!t[3],a=this.toMonthIndex(r,n,i),o=+t[4];return this.newDate(r,a,o)},add:function(e,t,r){var n=e.year(),i=e.month(),a=this.isIntercalaryMonth(n,i),o=this.toChineseMonth(n,i),s=Object.getPrototypeOf(A9.prototype).add.call(this,e,t,r);if(r==="y"){var l=s.year(),u=s.month(),c=this.isIntercalaryMonth(l,o),f=a&&c?this.toMonthIndex(l,o,!0):this.toMonthIndex(l,o,!1);f!==u&&s.month(f)}return s}});var J$t=/^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m,$$t=/^\d?\d[iI]?/m,Q$t=/^ι—°?十?[δΈ€δΊŒδΈ‰ε››δΊ”ε…­δΈƒε…«δΉ]?月/m,eQt=/^ι—°?十?[δΈ€δΊŒδΈ‰ε››δΊ”ε…­δΈƒε…«δΉ]?/m;Dx.calendars.chinese=A9;var zx=[1887,5780,5802,19157,2742,50359,1198,2646,46378,7466,3412,30122,5482,67949,2396,5294,43597,6732,6954,36181,2772,4954,18781,2396,54427,5274,6730,47781,5800,6868,21210,4790,59703,2350,5270,46667,3402,3496,38325,1388,4782,18735,2350,52374,6804,7498,44457,2906,1388,29294,4700,63789,6442,6804,56138,5802,2772,38235,1210,4698,22827,5418,63125,3476,5802,43701,2484,5302,27223,2646,70954,7466,3412,54698,5482,2412,38062,5294,2636,32038,6954,60245,2772,4826,43357,2394,5274,39501,6730,72357,5800,5844,53978,4790,2358,38039,5270,87627,3402,3496,54708,5484,4782,43311,2350,3222,27978,7498,68965,2904,5484,45677,4700,6444,39573,6804,6986,19285,2772,62811,1210,4698,47403,5418,5780,38570,5546,76469,2420,5302,51799,2646,5414,36501,3412,5546,18869,2412,54446,5276,6732,48422,6822,2900,28010,4826,92509,2394,5274,55883,6730,6820,47956,5812,2778,18779,2358,62615,5270,5450,46757,3492,5556,27318,4718,67887,2350,3222,52554,7498,3428,38252,5468,4700,31022,6444,64149,6804,6986,43861,2772,5338,35421,2650,70955,5418,5780,54954,5546,2740,38074,5302,2646,29991,3366,61011,3412,5546,43445,2412,5294,35406,6732,72998,6820,6996,52586,2778,2396,38045,5274,6698,23333,6820,64338,5812,2746,43355,2358,5270,39499,5450,79525,3492,5548],Fx=[1887,966732,967231,967733,968265,968766,969297,969798,970298,970829,971330,971830,972362,972863,973395,973896,974397,974928,975428,975929,976461,976962,977462,977994,978494,979026,979526,980026,980558,981059,981559,982091,982593,983124,983624,984124,984656,985157,985656,986189,986690,987191,987722,988222,988753,989254,989754,990286,990788,991288,991819,992319,992851,993352,993851,994383,994885,995385,995917,996418,996918,997450,997949,998481,998982,999483,1000014,1000515,1001016,1001548,1002047,1002578,1003080,1003580,1004111,1004613,1005113,1005645,1006146,1006645,1007177,1007678,1008209,1008710,1009211,1009743,1010243,1010743,1011275,1011775,1012306,1012807,1013308,1013840,1014341,1014841,1015373,1015874,1016404,1016905,1017405,1017937,1018438,1018939,1019471,1019972,1020471,1021002,1021503,1022035,1022535,1023036,1023568,1024069,1024568,1025100,1025601,1026102,1026633,1027133,1027666,1028167,1028666,1029198,1029699,1030199,1030730,1031231,1031763,1032264,1032764,1033296,1033797,1034297,1034828,1035329,1035830,1036362,1036861,1037393,1037894,1038394,1038925,1039427,1039927,1040459,1040959,1041491,1041992,1042492,1043023,1043524,1044024,1044556,1045057,1045558,1046090,1046590,1047121,1047622,1048122,1048654,1049154,1049655,1050187,1050689,1051219,1051720,1052220,1052751,1053252,1053752,1054284,1054786,1055285,1055817,1056317,1056849,1057349,1057850,1058382,1058883,1059383,1059915,1060415,1060947,1061447,1061947,1062479,1062981,1063480,1064012,1064514,1065014,1065545,1066045,1066577,1067078,1067578,1068110,1068611,1069112,1069642,1070142,1070674,1071175,1071675,1072207,1072709,1073209,1073740,1074241,1074741,1075273,1075773,1076305,1076807,1077308,1077839,1078340,1078840,1079372,1079871,1080403,1080904];function tQt(e,t,r,n){var i,a;if(typeof e=="object")i=e,a=t||{};else{var o=typeof e=="number"&&e>=1888&&e<=2111;if(!o)throw new Error("Solar year outside range 1888-2111");var s=typeof t=="number"&&t>=1&&t<=12;if(!s)throw new Error("Solar month outside range 1 - 12");var l=typeof r=="number"&&r>=1&&r<=31;if(!l)throw new Error("Solar day outside range 1 - 31");i={year:e,month:t,day:r},a=n||{}}var u=Fx[i.year-Fx[0]],c=i.year<<9|i.month<<5|i.day;a.year=c>=u?i.year:i.year-1,u=Fx[a.year-Fx[0]];var f=u>>9&4095,h=u>>5&15,d=u&31,v,x=new Date(f,h-1,d),b=new Date(i.year,i.month-1,i.day);v=Math.round((b-x)/(24*3600*1e3));var g=zx[a.year-zx[0]],E;for(E=0;E<13;E++){var k=g&1<<12-E?30:29;if(v>13;return!A||E=1888&&e<=2111;if(!s)throw new Error("Lunar year outside range 1888-2111");var l=typeof t=="number"&&t>=1&&t<=12;if(!l)throw new Error("Lunar month outside range 1 - 12");var u=typeof r=="number"&&r>=1&&r<=30;if(!u)throw new Error("Lunar day outside range 1 - 30");var c;typeof n=="object"?(c=!1,a=n):(c=!!n,a=i||{}),o={year:e,month:t,day:r,isIntercalary:c}}var f;f=o.day-1;var h=zx[o.year-zx[0]],d=h>>13,v;d&&(o.month>d||o.isIntercalary)?v=o.month:v=o.month-1;for(var x=0;x>9&4095,k=g>>5&15,A=g&31,L=new Date(E,k-1,A+f);return a.year=L.getFullYear(),a.month=1+L.getMonth(),a.day=L.getDate(),a}});var b$e=ye(()=>{var _w=Sv(),iQt=bh();function J$(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}J$.prototype=new _w.baseCalendar;iQt(J$.prototype,{name:"Coptic",jdEpoch:18250295e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Coptic",epochs:["BAM","AM"],monthNames:["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],monthNamesShort:["Tho","Pao","Hath","Koi","Tob","Mesh","Pat","Pad","Pash","Pao","Epi","Meso","PiK"],dayNames:["Tkyriaka","Pesnau","Pshoment","Peftoou","Ptiou","Psoou","Psabbaton"],dayNamesShort:["Tky","Pes","Psh","Pef","Pti","Pso","Psa"],dayNamesMin:["Tk","Pes","Psh","Pef","Pt","Pso","Psa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,_w.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,_w.local.invalidYear||_w.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,_w.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,_w.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});_w.calendars.coptic=J$});var w$e=ye(()=>{var b1=Sv(),nQt=bh();function $$(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}$$.prototype=new b1.baseCalendar;nQt($$.prototype,{name:"Discworld",jdEpoch:17214255e-1,daysPerMonth:[16,32,32,32,32,32,32,32,32,32,32,32,32],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Discworld",epochs:["BUC","UC"],monthNames:["Ick","Offle","February","March","April","May","June","Grune","August","Spune","Sektober","Ember","December"],monthNamesShort:["Ick","Off","Feb","Mar","Apr","May","Jun","Gru","Aug","Spu","Sek","Emb","Dec"],dayNames:["Sunday","Octeday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Oct","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Oc","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:2,isRTL:!1}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),!1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),13},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),400},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/8)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,b1.local.invalidMonth);return this.daysPerMonth[r.month()-1]},daysInWeek:function(){return 8},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return(n.day()+1)%8},weekDay:function(e,t,r){var n=this.dayOfWeek(e,t,r);return n>=2&&n<=6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return{century:aQt[Math.floor((n.year()-1)/100)+1]||""}},toJD:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return e=n.year()+(n.year()<0?1:0),t=n.month(),r=n.day(),r+(t>1?16:0)+(t>2?(t-2)*32:0)+(e-1)*400+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e+.5)-Math.floor(this.jdEpoch)-1;var t=Math.floor(e/400)+1;e-=(t-1)*400,e+=e>15?16:0;var r=Math.floor(e/32)+1,n=e-(r-1)*32+1;return this.newDate(t<=0?t-1:t,r,n)}});var aQt={20:"Fruitbat",21:"Anchovy"};b1.calendars.discworld=$$});var T$e=ye(()=>{var xw=Sv(),oQt=bh();function Q$(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}Q$.prototype=new xw.baseCalendar;oQt(Q$.prototype,{name:"Ethiopian",jdEpoch:17242205e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,xw.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,xw.local.invalidYear||xw.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,xw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,xw.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});xw.calendars.ethiopian=Q$});var A$e=ye(()=>{var qx=Sv(),sQt=bh();function eQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}eQ.prototype=new qx.baseCalendar;sQt(eQ.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,qx.local.invalidYear);return this._leapYear(t.year())},_leapYear:function(e){return e=e<0?e+1:e,S9(e*7+1,19)<7},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,qx.local.invalidYear),this._leapYear(e.year?e.year():e)?13:12},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,qx.local.invalidYear);return e=t.year(),this.toJD(e===-1?1:e+1,7,1)-this.toJD(e,7,1)},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,qx.local.invalidMonth),t===12&&this.leapYear(e)||t===8&&S9(this.daysInYear(e),10)===5?30:t===9&&S9(this.daysInYear(e),10)===3?29:this.daysPerMonth[t-1]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,qx.local.invalidDate);return{yearType:(this.leapYear(n)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(n)%10-3]}},toJD:function(e,t,r){var n=this._validate(e,t,r,qx.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e<=0?e+1:e,a=this.jdEpoch+this._delay1(i)+this._delay2(i)+r+1;if(t<7){for(var o=7;o<=this.monthsInYear(e);o++)a+=this.daysInMonth(e,o);for(var o=1;o=this.toJD(t===-1?1:t+1,7,1);)t++;for(var r=ethis.toJD(t,r,this.daysInMonth(t,r));)r++;var n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});function S9(e,t){return e-t*Math.floor(e/t)}qx.calendars.hebrew=eQ});var S$e=ye(()=>{var nC=Sv(),lQt=bh();function tQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}tQ.prototype=new nC.baseCalendar;lQt(tQ.prototype,{name:"Islamic",jdEpoch:19484395e-1,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-kham\u012Bs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,nC.local.invalidYear);return(t.year()*11+14)%30<11},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){return this.leapYear(e)?355:354},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,nC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,nC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e=e<=0?e+1:e,r+Math.ceil(29.5*(t-1))+(e-1)*354+Math.floor((3+11*e)/30)+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=Math.floor((30*(e-this.jdEpoch)+10646)/10631);t=t<=0?t-1:t;var r=Math.min(12,Math.ceil((e-29-this.toJD(t,1,1))/29.5)+1),n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});nC.calendars.islamic=tQ});var M$e=ye(()=>{var aC=Sv(),uQt=bh();function rQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}rQ.prototype=new aC.baseCalendar;uQt(rQ.prototype,{name:"Julian",jdEpoch:17214235e-1,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,aC.local.invalidYear),r=t.year()<0?t.year()+1:t.year();return r%4===0},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(4-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,aC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,aC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e<0&&e++,t<=2&&(e--,t+=12),Math.floor(365.25*(e+4716))+Math.floor(30.6001*(t+1))+r-1524.5},fromJD:function(e){var t=Math.floor(e+.5),r=t+1524,n=Math.floor((r-122.1)/365.25),i=Math.floor(365.25*n),a=Math.floor((r-i)/30.6001),o=a-Math.floor(a<14?1:13),s=n-Math.floor(o>2?4716:4715),l=r-i-Math.floor(30.6001*a);return s<=0&&s--,this.newDate(s,o,l)}});aC.calendars.julian=rQ});var k$e=ye(()=>{var ug=Sv(),cQt=bh();function nQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}nQ.prototype=new ug.baseCalendar;cQt(nQ.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),!1},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear);e=t.year();var r=Math.floor(e/400);e=e%400,e+=e<0?400:0;var n=Math.floor(e/20);return r+"."+n+"."+e%20},forYear:function(e){if(e=e.split("."),e.length<3)throw"Invalid Mayan year";for(var t=0,r=0;r19||r>0&&n<0)throw"Invalid Mayan year";t=t*20+n}return t},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),18},weekOfYear:function(e,t,r){return this._validate(e,t,r,ug.local.invalidDate),0},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),360},daysInMonth:function(e,t){return this._validate(e,t,this.minDay,ug.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate);return n.day()},weekDay:function(e,t,r){return this._validate(e,t,r,ug.local.invalidDate),!0},extraInfo:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate),i=n.toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(e){e-=this.jdEpoch;var t=iQ(e+8+17*20,365);return[Math.floor(t/20)+1,iQ(t,20)]},_toTzolkin:function(e){return e-=this.jdEpoch,[E$e(e+20,20),E$e(e+4,13)]},toJD:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate);return n.day()+n.month()*20+n.year()*360+this.jdEpoch},fromJD:function(e){e=Math.floor(e)+.5-this.jdEpoch;var t=Math.floor(e/360);e=e%360,e+=e<0?360:0;var r=Math.floor(e/20),n=e%20;return this.newDate(t,r,n)}});function iQ(e,t){return e-t*Math.floor(e/t)}function E$e(e,t){return iQ(e-1,t)+1}ug.calendars.mayan=nQ});var L$e=ye(()=>{var bw=Sv(),fQt=bh();function aQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}aQ.prototype=new bw.baseCalendar;var C$e=bw.instance("gregorian");fQt(aQ.prototype,{name:"Nanakshahi",jdEpoch:22576735e-1,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,bw.local.invalidYear||bw.regionalOptions[""].invalidYear);return C$e.leapYear(t.year()+(t.year()<1?1:0)+1469)},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(1-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,bw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,bw.local.invalidMonth),i=n.year();i<0&&i++;for(var a=n.day(),o=1;o=this.toJD(t+1,1,1);)t++;for(var r=e-Math.floor(this.toJD(t,1,1)+.5)+1,n=1;r>this.daysInMonth(t,n);)r-=this.daysInMonth(t,n),n++;return this.newDate(t,n,r)}});bw.calendars.nanakshahi=aQ});var P$e=ye(()=>{var ww=Sv(),hQt=bh();function oQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}oQ.prototype=new ww.baseCalendar;hQt(oQ.prototype,{name:"Nepali",jdEpoch:17007095e-1,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(e){return this.daysInYear(e)!==this.daysPerYear},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,ww.local.invalidYear);if(e=t.year(),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined")return this.daysPerYear;for(var r=0,n=this.minMonth;n<=12;n++)r+=this.NEPALI_CALENDAR_DATA[e][n];return r},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,ww.local.invalidMonth),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined"?this.daysPerMonth[t-1]:this.NEPALI_CALENDAR_DATA[e][t]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},toJD:function(e,t,r){var n=this._validate(e,t,r,ww.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=ww.instance(),a=0,o=t,s=e;this._createMissingCalendarData(e);var l=e-(o>9||o===9&&r>=this.NEPALI_CALENDAR_DATA[s][0]?56:57);for(t!==9&&(a=r,o--);o!==9;)o<=0&&(o=12,s--),a+=this.NEPALI_CALENDAR_DATA[s][o],o--;return t===9?(a+=r-this.NEPALI_CALENDAR_DATA[s][0],a<0&&(a+=i.daysInYear(l))):a+=this.NEPALI_CALENDAR_DATA[s][9]-this.NEPALI_CALENDAR_DATA[s][0],i.newDate(l,1,1).add(a,"d").toJD()},fromJD:function(e){var t=ww.instance(),r=t.fromJD(e),n=r.year(),i=r.dayOfYear(),a=n+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)o++,o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var u=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,u)},_createMissingCalendarData:function(e){var t=this.daysPerMonth.slice(0);t.unshift(17);for(var r=e-1;r{var QA=Sv(),dQt=bh();function M9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}M9.prototype=new QA.baseCalendar;dQt(M9.prototype,{name:"Persian",jdEpoch:19483205e-1,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Persian",epochs:["BP","AP"],monthNames:["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Day","Bahman","Esfand"],monthNamesShort:["Far","Ord","Kho","Tir","Mor","Sha","Meh","Aba","Aza","Day","Bah","Esf"],dayNames:["Yekshambe","Doshambe","Seshambe","Ch\xE6harshambe","Panjshambe","Jom'e","Shambe"],dayNamesShort:["Yek","Do","Se","Ch\xE6","Panj","Jom","Sha"],dayNamesMin:["Ye","Do","Se","Ch","Pa","Jo","Sh"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,QA.local.invalidYear);return((t.year()-(t.year()>0?474:473))%2820+474+38)*682%2816<682},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-((n.dayOfWeek()+1)%7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,QA.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,QA.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e-(e>=0?474:473),a=474+sQ(i,2820);return r+(t<=7?(t-1)*31:(t-1)*30+6)+Math.floor((a*682-110)/2816)+(a-1)*365+Math.floor(i/2820)*1029983+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=e-this.toJD(475,1,1),r=Math.floor(t/1029983),n=sQ(t,1029983),i=2820;if(n!==1029982){var a=Math.floor(n/366),o=sQ(n,366);i=Math.floor((2134*a+2816*o+2815)/1028522)+a+1}var s=i+2820*r+474;s=s<=0?s-1:s;var l=e-this.toJD(s,1,1)+1,u=l<=186?Math.ceil(l/31):Math.ceil((l-6)/30),c=e-this.toJD(s,u,1)+1;return this.newDate(s,u,c)}});function sQ(e,t){return e-t*Math.floor(e/t)}QA.calendars.persian=M9;QA.calendars.jalali=M9});var R$e=ye(()=>{var Tw=Sv(),vQt=bh(),E9=Tw.instance();function lQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}lQ.prototype=new Tw.baseCalendar;vQt(lQ.prototype,{name:"Taiwan",jdEpoch:24194025e-1,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Tw.local.invalidYear),r=this._t2gYear(t.year());return E9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,Tw.local.invalidYear),i=this._t2gYear(n.year());return E9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Tw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Tw.local.invalidDate),i=this._t2gYear(n.year());return E9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=E9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)},_g2tYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)}});Tw.calendars.taiwan=lQ});var D$e=ye(()=>{var Aw=Sv(),pQt=bh(),k9=Aw.instance();function uQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}uQ.prototype=new Aw.baseCalendar;pQt(uQ.prototype,{name:"Thai",jdEpoch:15230985e-1,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Aw.local.invalidYear),r=this._t2gYear(t.year());return k9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,Aw.local.invalidYear),i=this._t2gYear(n.year());return k9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Aw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Aw.local.invalidDate),i=this._t2gYear(n.year());return k9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=k9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)},_g2tYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)}});Aw.calendars.thai=uQ});var z$e=ye(()=>{var Sw=Sv(),gQt=bh();function cQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}cQ.prototype=new Sw.baseCalendar;gQt(cQ.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thal\u0101th\u0101\u2019","Yawm al-Arba\u2018\u0101\u2019","Yawm al-Kham\u012Bs","Yawm al-Jum\u2018a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Sw.local.invalidYear);return this.daysInYear(t.year())===355},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){for(var t=0,r=1;r<=12;r++)t+=this.daysInMonth(e,r);return t},daysInMonth:function(e,t){for(var r=this._validate(e,t,this.minDay,Sw.local.invalidMonth),n=r.toJD()-24e5+.5,i=0,a=0;an)return Ox[i]-Ox[i-1];i++}return 30},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,Sw.local.invalidDate),i=12*(n.year()-1)+n.month()-15292,a=n.day()+Ox[i-1]-1;return a+24e5-.5},fromJD:function(e){for(var t=e-24e5+.5,r=0,n=0;nt);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),o=a+1,s=i-12*a,l=t-Ox[r-1]+1;return this.newDate(o,s,l)},isValid:function(e,t,r){var n=Sw.baseCalendar.prototype.isValid.apply(this,arguments);return n&&(e=e.year!=null?e.year:e,n=e>=1276&&e<=1500),n},_validate:function(e,t,r,n){var i=Sw.baseCalendar.prototype._validate.apply(this,arguments);if(i.year<1276||i.year>1500)throw n.replace(/\{0\}/,this.local.name);return i}});Sw.calendars.ummalqura=cQ;var Ox=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]});var q$e=ye((a2r,F$e)=>{"use strict";F$e.exports=Sv();_$e();x$e();b$e();w$e();T$e();A$e();S$e();M$e();k$e();L$e();P$e();I$e();R$e();D$e();z$e()});var G$e=ye((o2r,H$e)=>{"use strict";var B$e=q$e(),oC=Mr(),N$e=es(),mQt=N$e.EPOCHJD,yQt=N$e.ONEDAY,dQ={valType:"enumerated",values:oC.sortObjectKeys(B$e.calendars),editType:"calc",dflt:"gregorian"},U$e=function(e,t,r,n){var i={};return i[r]=dQ,oC.coerce(e,t,i,r,n)},_Qt=function(e,t,r,n){for(var i=0;i{"use strict";j$e.exports=G$e()});var SQt=ye((l2r,X$e)=>{var Z$e=Ume();Z$e.register([Hye(),L1e(),V_e(),lxe(),bxe(),mbe(),Lbe(),g2e(),j2e(),Mwe(),h3e(),N4e(),kEe(),yCe(),a6e(),z6e(),nLe(),IPe(),JPe(),pIe(),EIe(),UIe(),r8e(),y8e(),jRe(),fDe(),MOe(),MBe(),CNe(),eUe(),uVe(),AVe(),XVe(),aGe(),xGe(),GGe(),$je(),wWe(),iZe(),SXe(),XXe(),pYe(),UYe(),tKe(),QKe(),mJe(),FJe(),g$e(),W$e()]);X$e.exports=Z$e});return SQt();})(); +`),He=je.createShader(je.FRAGMENT_SHADER);if(je.isContextLost())return void(this.failedToCreate=!0);if(je.shaderSource(He,Oe),je.compileShader(He),!je.getShaderParameter(He,je.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${je.getShaderInfoLog(He)}`);je.attachShader(this.program,He);let et=je.createShader(je.VERTEX_SHADER);if(je.isContextLost())return void(this.failedToCreate=!0);if(je.shaderSource(et,Je),je.compileShader(et),!je.getShaderParameter(et,je.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${je.getShaderInfoLog(et)}`);je.attachShader(this.program,et),this.attributes={};let Mt={};this.numAttributes=Ot.length;for(let Dt=0;Dt({u_depth:new a.aH(Dt,Ut.u_depth),u_terrain:new a.aH(Dt,Ut.u_terrain),u_terrain_dim:new a.aI(Dt,Ut.u_terrain_dim),u_terrain_matrix:new a.aJ(Dt,Ut.u_terrain_matrix),u_terrain_unpack:new a.aK(Dt,Ut.u_terrain_unpack),u_terrain_exaggeration:new a.aI(Dt,Ut.u_terrain_exaggeration)}))(w,Mt),this.binderUniforms=Q?Q.getUniforms(w,Mt):[]}draw(w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he,be,Pe,Oe,Je){let He=w.gl;if(this.failedToCreate)return;if(w.program.set(this.program),w.setDepthMode(Q),w.setStencilMode(ee),w.setColorMode(se),w.setCullFace(qe),it){w.activeTexture.set(He.TEXTURE2),He.bindTexture(He.TEXTURE_2D,it.depthTexture),w.activeTexture.set(He.TEXTURE3),He.bindTexture(He.TEXTURE_2D,it.texture);for(let Mt in this.terrainUniforms)this.terrainUniforms[Mt].set(it[Mt])}for(let Mt in this.fixedUniforms)this.fixedUniforms[Mt].set(je[Mt]);be&&be.setUniforms(w,this.binderUniforms,Sr,{zoom:he});let et=0;switch(B){case He.LINES:et=2;break;case He.TRIANGLES:et=3;break;case He.LINE_STRIP:et=1}for(let Mt of hr.get()){let Dt=Mt.vaos||(Mt.vaos={});(Dt[yt]||(Dt[yt]=new br)).bind(w,this,Ot,be?be.getPaintVertexBuffers():[],Nt,Mt.vertexOffset,Pe,Oe,Je),He.drawElements(B,Mt.primitiveLength*et,He.UNSIGNED_SHORT,Mt.primitiveOffset*et*2)}}}function Yi(le,w,B){let Q=1/nn(B,1,w.transform.tileZoom),ee=Math.pow(2,B.tileID.overscaledZ),se=B.tileSize*Math.pow(2,w.transform.tileZoom)/ee,qe=se*(B.tileID.canonical.x+B.tileID.wrap*ee),je=se*B.tileID.canonical.y;return{u_image:0,u_texsize:B.imageAtlasTexture.size,u_scale:[Q,le.fromScale,le.toScale],u_fade:le.t,u_pixel_coord_upper:[qe>>16,je>>16],u_pixel_coord_lower:[65535&qe,65535&je]}}let an=(le,w,B,Q)=>{let ee=w.style.light,se=ee.properties.get("position"),qe=[se.x,se.y,se.z],je=function(){var yt=new a.A(9);return a.A!=Float32Array&&(yt[1]=0,yt[2]=0,yt[3]=0,yt[5]=0,yt[6]=0,yt[7]=0),yt[0]=1,yt[4]=1,yt[8]=1,yt}();ee.properties.get("anchor")==="viewport"&&function(yt,Ot){var Nt=Math.sin(Ot),hr=Math.cos(Ot);yt[0]=hr,yt[1]=Nt,yt[2]=0,yt[3]=-Nt,yt[4]=hr,yt[5]=0,yt[6]=0,yt[7]=0,yt[8]=1}(je,-w.transform.angle),function(yt,Ot,Nt){var hr=Ot[0],Sr=Ot[1],he=Ot[2];yt[0]=hr*Nt[0]+Sr*Nt[3]+he*Nt[6],yt[1]=hr*Nt[1]+Sr*Nt[4]+he*Nt[7],yt[2]=hr*Nt[2]+Sr*Nt[5]+he*Nt[8]}(qe,qe,je);let it=ee.properties.get("color");return{u_matrix:le,u_lightpos:qe,u_lightintensity:ee.properties.get("intensity"),u_lightcolor:[it.r,it.g,it.b],u_vertical_gradient:+B,u_opacity:Q}},hi=(le,w,B,Q,ee,se,qe)=>a.e(an(le,w,B,Q),Yi(se,w,qe),{u_height_factor:-Math.pow(2,ee.overscaledZ)/qe.tileSize/8}),Ji=le=>({u_matrix:le}),ua=(le,w,B,Q)=>a.e(Ji(le),Yi(B,w,Q)),Fn=(le,w)=>({u_matrix:le,u_world:w}),Sa=(le,w,B,Q,ee)=>a.e(ua(le,w,B,Q),{u_world:ee}),go=(le,w,B,Q)=>{let ee=le.transform,se,qe;if(Q.paint.get("circle-pitch-alignment")==="map"){let je=nn(B,1,ee.zoom);se=!0,qe=[je,je]}else se=!1,qe=ee.pixelsToGLUnits;return{u_camera_to_center_distance:ee.cameraToCenterDistance,u_scale_with_map:+(Q.paint.get("circle-pitch-scale")==="map"),u_matrix:le.translatePosMatrix(w.posMatrix,B,Q.paint.get("circle-translate"),Q.paint.get("circle-translate-anchor")),u_pitch_with_map:+se,u_device_pixel_ratio:le.pixelRatio,u_extrude_scale:qe}},Oo=(le,w,B)=>({u_matrix:le,u_inv_matrix:w,u_camera_to_center_distance:B.cameraToCenterDistance,u_viewport_size:[B.width,B.height]}),ho=(le,w,B=1)=>({u_matrix:le,u_color:w,u_overlay:0,u_overlay_scale:B}),Mo=le=>({u_matrix:le}),xo=(le,w,B,Q)=>({u_matrix:le,u_extrude_scale:nn(w,1,B),u_intensity:Q}),zs=(le,w,B,Q)=>{let ee=a.H();a.aP(ee,0,le.width,le.height,0,0,1);let se=le.context.gl;return{u_matrix:ee,u_world:[se.drawingBufferWidth,se.drawingBufferHeight],u_image:B,u_color_ramp:Q,u_opacity:w.paint.get("heatmap-opacity")}};function ks(le,w){let B=Math.pow(2,w.canonical.z),Q=w.canonical.y;return[new a.Z(0,Q/B).toLngLat().lat,new a.Z(0,(Q+1)/B).toLngLat().lat]}let Zs=(le,w,B,Q)=>{let ee=le.transform;return{u_matrix:Cs(le,w,B,Q),u_ratio:1/nn(w,1,ee.zoom),u_device_pixel_ratio:le.pixelRatio,u_units_to_pixels:[1/ee.pixelsToGLUnits[0],1/ee.pixelsToGLUnits[1]]}},Xs=(le,w,B,Q,ee)=>a.e(Zs(le,w,B,ee),{u_image:0,u_image_height:Q}),wl=(le,w,B,Q,ee)=>{let se=le.transform,qe=cl(w,se);return{u_matrix:Cs(le,w,B,ee),u_texsize:w.imageAtlasTexture.size,u_ratio:1/nn(w,1,se.zoom),u_device_pixel_ratio:le.pixelRatio,u_image:0,u_scale:[qe,Q.fromScale,Q.toScale],u_fade:Q.t,u_units_to_pixels:[1/se.pixelsToGLUnits[0],1/se.pixelsToGLUnits[1]]}},os=(le,w,B,Q,ee,se)=>{let qe=le.lineAtlas,je=cl(w,le.transform),it=B.layout.get("line-cap")==="round",yt=qe.getDash(Q.from,it),Ot=qe.getDash(Q.to,it),Nt=yt.width*ee.fromScale,hr=Ot.width*ee.toScale;return a.e(Zs(le,w,B,se),{u_patternscale_a:[je/Nt,-yt.height/2],u_patternscale_b:[je/hr,-Ot.height/2],u_sdfgamma:qe.width/(256*Math.min(Nt,hr)*le.pixelRatio)/2,u_image:0,u_tex_y_a:yt.y,u_tex_y_b:Ot.y,u_mix:ee.t})};function cl(le,w){return 1/nn(le,1,w.tileZoom)}function Cs(le,w,B,Q){return le.translatePosMatrix(Q?Q.posMatrix:w.tileID.posMatrix,w,B.paint.get("line-translate"),B.paint.get("line-translate-anchor"))}let ml=(le,w,B,Q,ee)=>{return{u_matrix:le,u_tl_parent:w,u_scale_parent:B,u_buffer_scale:1,u_fade_t:Q.mix,u_opacity:Q.opacity*ee.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:ee.paint.get("raster-brightness-min"),u_brightness_high:ee.paint.get("raster-brightness-max"),u_saturation_factor:(qe=ee.paint.get("raster-saturation"),qe>0?1-1/(1.001-qe):-qe),u_contrast_factor:(se=ee.paint.get("raster-contrast"),se>0?1/(1-se):1+se),u_spin_weights:Ys(ee.paint.get("raster-hue-rotate"))};var se,qe};function Ys(le){le*=Math.PI/180;let w=Math.sin(le),B=Math.cos(le);return[(2*B+1)/3,(-Math.sqrt(3)*w-B+1)/3,(Math.sqrt(3)*w-B+1)/3]}let Hs=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr)=>{let he=qe.transform;return{u_is_size_zoom_constant:+(le==="constant"||le==="source"),u_is_size_feature_constant:+(le==="constant"||le==="camera"),u_size_t:w?w.uSizeT:0,u_size:w?w.uSize:0,u_camera_to_center_distance:he.cameraToCenterDistance,u_pitch:he.pitch/360*2*Math.PI,u_rotate_symbol:+B,u_aspect_ratio:he.width/he.height,u_fade_change:qe.options.fadeDuration?qe.symbolFadeChange:1,u_matrix:je,u_label_plane_matrix:it,u_coord_matrix:yt,u_is_text:+Nt,u_pitch_with_map:+Q,u_is_along_line:ee,u_is_variable_anchor:se,u_texsize:hr,u_texture:0,u_translation:Ot,u_pitched_scale:Sr}},Eo=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he)=>{let be=qe.transform;return a.e(Hs(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,he),{u_gamma_scale:Q?Math.cos(be._pitch)*be.cameraToCenterDistance:1,u_device_pixel_ratio:qe.pixelRatio,u_is_halo:+Sr})},fs=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr)=>a.e(Eo(le,w,B,Q,ee,se,qe,je,it,yt,Ot,!0,Nt,!0,Sr),{u_texsize_icon:hr,u_texture_icon:1}),Ql=(le,w,B)=>({u_matrix:le,u_opacity:w,u_color:B}),Hu=(le,w,B,Q,ee,se)=>a.e(function(qe,je,it,yt){let Ot=it.imageManager.getPattern(qe.from.toString()),Nt=it.imageManager.getPattern(qe.to.toString()),{width:hr,height:Sr}=it.imageManager.getPixelSize(),he=Math.pow(2,yt.tileID.overscaledZ),be=yt.tileSize*Math.pow(2,it.transform.tileZoom)/he,Pe=be*(yt.tileID.canonical.x+yt.tileID.wrap*he),Oe=be*yt.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:Ot.tl,u_pattern_br_a:Ot.br,u_pattern_tl_b:Nt.tl,u_pattern_br_b:Nt.br,u_texsize:[hr,Sr],u_mix:je.t,u_pattern_size_a:Ot.displaySize,u_pattern_size_b:Nt.displaySize,u_scale_a:je.fromScale,u_scale_b:je.toScale,u_tile_units_to_pixels:1/nn(yt,1,it.transform.tileZoom),u_pixel_coord_upper:[Pe>>16,Oe>>16],u_pixel_coord_lower:[65535&Pe,65535&Oe]}}(Q,se,B,ee),{u_matrix:le,u_opacity:w}),fc={fillExtrusion:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_lightpos:new a.aN(le,w.u_lightpos),u_lightintensity:new a.aI(le,w.u_lightintensity),u_lightcolor:new a.aN(le,w.u_lightcolor),u_vertical_gradient:new a.aI(le,w.u_vertical_gradient),u_opacity:new a.aI(le,w.u_opacity)}),fillExtrusionPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_lightpos:new a.aN(le,w.u_lightpos),u_lightintensity:new a.aI(le,w.u_lightintensity),u_lightcolor:new a.aN(le,w.u_lightcolor),u_vertical_gradient:new a.aI(le,w.u_vertical_gradient),u_height_factor:new a.aI(le,w.u_height_factor),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade),u_opacity:new a.aI(le,w.u_opacity)}),fill:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix)}),fillPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),fillOutline:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world)}),fillOutlinePattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),circle:(le,w)=>({u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_scale_with_map:new a.aH(le,w.u_scale_with_map),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_extrude_scale:new a.aO(le,w.u_extrude_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_matrix:new a.aJ(le,w.u_matrix)}),collisionBox:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_pixel_extrude_scale:new a.aO(le,w.u_pixel_extrude_scale)}),collisionCircle:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_inv_matrix:new a.aJ(le,w.u_inv_matrix),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_viewport_size:new a.aO(le,w.u_viewport_size)}),debug:(le,w)=>({u_color:new a.aL(le,w.u_color),u_matrix:new a.aJ(le,w.u_matrix),u_overlay:new a.aH(le,w.u_overlay),u_overlay_scale:new a.aI(le,w.u_overlay_scale)}),clippingMask:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix)}),heatmap:(le,w)=>({u_extrude_scale:new a.aI(le,w.u_extrude_scale),u_intensity:new a.aI(le,w.u_intensity),u_matrix:new a.aJ(le,w.u_matrix)}),heatmapTexture:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world),u_image:new a.aH(le,w.u_image),u_color_ramp:new a.aH(le,w.u_color_ramp),u_opacity:new a.aI(le,w.u_opacity)}),hillshade:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_latrange:new a.aO(le,w.u_latrange),u_light:new a.aO(le,w.u_light),u_shadow:new a.aL(le,w.u_shadow),u_highlight:new a.aL(le,w.u_highlight),u_accent:new a.aL(le,w.u_accent)}),hillshadePrepare:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_dimension:new a.aO(le,w.u_dimension),u_zoom:new a.aI(le,w.u_zoom),u_unpack:new a.aK(le,w.u_unpack)}),line:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels)}),lineGradient:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_image:new a.aH(le,w.u_image),u_image_height:new a.aI(le,w.u_image_height)}),linePattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texsize:new a.aO(le,w.u_texsize),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_image:new a.aH(le,w.u_image),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),lineSDF:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_patternscale_a:new a.aO(le,w.u_patternscale_a),u_patternscale_b:new a.aO(le,w.u_patternscale_b),u_sdfgamma:new a.aI(le,w.u_sdfgamma),u_image:new a.aH(le,w.u_image),u_tex_y_a:new a.aI(le,w.u_tex_y_a),u_tex_y_b:new a.aI(le,w.u_tex_y_b),u_mix:new a.aI(le,w.u_mix)}),raster:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_tl_parent:new a.aO(le,w.u_tl_parent),u_scale_parent:new a.aI(le,w.u_scale_parent),u_buffer_scale:new a.aI(le,w.u_buffer_scale),u_fade_t:new a.aI(le,w.u_fade_t),u_opacity:new a.aI(le,w.u_opacity),u_image0:new a.aH(le,w.u_image0),u_image1:new a.aH(le,w.u_image1),u_brightness_low:new a.aI(le,w.u_brightness_low),u_brightness_high:new a.aI(le,w.u_brightness_high),u_saturation_factor:new a.aI(le,w.u_saturation_factor),u_contrast_factor:new a.aI(le,w.u_contrast_factor),u_spin_weights:new a.aN(le,w.u_spin_weights)}),symbolIcon:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texture:new a.aH(le,w.u_texture),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),symbolSDF:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texture:new a.aH(le,w.u_texture),u_gamma_scale:new a.aI(le,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_is_halo:new a.aH(le,w.u_is_halo),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),symbolTextAndIcon:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texsize_icon:new a.aO(le,w.u_texsize_icon),u_texture:new a.aH(le,w.u_texture),u_texture_icon:new a.aH(le,w.u_texture_icon),u_gamma_scale:new a.aI(le,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_is_halo:new a.aH(le,w.u_is_halo),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),background:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_opacity:new a.aI(le,w.u_opacity),u_color:new a.aL(le,w.u_color)}),backgroundPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_opacity:new a.aI(le,w.u_opacity),u_image:new a.aH(le,w.u_image),u_pattern_tl_a:new a.aO(le,w.u_pattern_tl_a),u_pattern_br_a:new a.aO(le,w.u_pattern_br_a),u_pattern_tl_b:new a.aO(le,w.u_pattern_tl_b),u_pattern_br_b:new a.aO(le,w.u_pattern_br_b),u_texsize:new a.aO(le,w.u_texsize),u_mix:new a.aI(le,w.u_mix),u_pattern_size_a:new a.aO(le,w.u_pattern_size_a),u_pattern_size_b:new a.aO(le,w.u_pattern_size_b),u_scale_a:new a.aI(le,w.u_scale_a),u_scale_b:new a.aI(le,w.u_scale_b),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_tile_units_to_pixels:new a.aI(le,w.u_tile_units_to_pixels)}),terrain:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texture:new a.aH(le,w.u_texture),u_ele_delta:new a.aI(le,w.u_ele_delta),u_fog_matrix:new a.aJ(le,w.u_fog_matrix),u_fog_color:new a.aL(le,w.u_fog_color),u_fog_ground_blend:new a.aI(le,w.u_fog_ground_blend),u_fog_ground_blend_opacity:new a.aI(le,w.u_fog_ground_blend_opacity),u_horizon_color:new a.aL(le,w.u_horizon_color),u_horizon_fog_blend:new a.aI(le,w.u_horizon_fog_blend)}),terrainDepth:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ele_delta:new a.aI(le,w.u_ele_delta)}),terrainCoords:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texture:new a.aH(le,w.u_texture),u_terrain_coords_id:new a.aI(le,w.u_terrain_coords_id),u_ele_delta:new a.aI(le,w.u_ele_delta)}),sky:(le,w)=>({u_sky_color:new a.aL(le,w.u_sky_color),u_horizon_color:new a.aL(le,w.u_horizon_color),u_horizon:new a.aI(le,w.u_horizon),u_sky_horizon_blend:new a.aI(le,w.u_sky_horizon_blend)})};class ms{constructor(w,B,Q){this.context=w;let ee=w.gl;this.buffer=ee.createBuffer(),this.dynamicDraw=!!Q,this.context.unbindVAO(),w.bindElementBuffer.set(this.buffer),ee.bufferData(ee.ELEMENT_ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?ee.DYNAMIC_DRAW:ee.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(w){let B=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),B.bufferSubData(B.ELEMENT_ARRAY_BUFFER,0,w.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let on={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class fa{constructor(w,B,Q,ee){this.length=B.length,this.attributes=Q,this.itemSize=B.bytesPerElement,this.dynamicDraw=ee,this.context=w;let se=w.gl;this.buffer=se.createBuffer(),w.bindVertexBuffer.set(this.buffer),se.bufferData(se.ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?se.DYNAMIC_DRAW:se.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(w){if(w.length!==this.length)throw new Error(`Length of new data is ${w.length}, which doesn't match current length of ${this.length}`);let B=this.context.gl;this.bind(),B.bufferSubData(B.ARRAY_BUFFER,0,w.arrayBuffer)}enableAttributes(w,B){for(let Q=0;Q0){let Dt=a.H();a.aQ(Dt,He.placementInvProjMatrix,le.transform.glCoordMatrix),a.aQ(Dt,Dt,He.placementViewportMatrix),it.push({circleArray:Mt,circleOffset:Ot,transform:Je.posMatrix,invTransform:Dt,coord:Je}),yt+=Mt.length/4,Ot=yt}et&&je.draw(se,qe.LINES,wo.disabled,$o.disabled,le.colorModeForRenderPass(),Ja.disabled,{u_matrix:Je.posMatrix,u_pixel_extrude_scale:[1/(Nt=le.transform).width,1/Nt.height]},le.style.map.terrain&&le.style.map.terrain.getTerrainData(Je),B.id,et.layoutVertexBuffer,et.indexBuffer,et.segments,null,le.transform.zoom,null,null,et.collisionVertexBuffer)}var Nt;if(!ee||!it.length)return;let hr=le.useProgram("collisionCircle"),Sr=new a.aR;Sr.resize(4*yt),Sr._trim();let he=0;for(let Oe of it)for(let Je=0;Je=0&&(Oe[He.associatedIconIndex]={shiftedAnchor:Mn,angle:pa})}else ai(He.numGlyphs,be)}if(yt){Pe.clear();let Je=le.icon.placedSymbolArray;for(let He=0;Hele.style.map.terrain.getElevation(zr,tt,zt):null,wt=B.layout.get("text-rotation-alignment")==="map";Ve(di,zr.posMatrix,le,ee,Hl,cu,Oe,yt,wt,be,zr.toUnwrapped(),he.width,he.height,el,We)}let zl=zr.posMatrix,Fl=ee&&tr||zc,Z=Je||Fl?uu:Hl,oe=Zu,we=Qi&&B.paint.get(ee?"text-halo-width":"icon-halo-width").constantOr(1)!==0,Be;Be=Qi?di.iconsInText?fs(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,Wa,As,Rr):Eo(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,ee,Wa,!0,Rr):Hs(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,ee,Wa,Rr);let Ue={program:ea,buffers:Li,uniformValues:Be,atlasTexture:co,atlasTextureIcon:yo,atlasInterpolation:Ro,atlasInterpolationIcon:Ds,isSDF:Qi,hasHalo:we};if(Mt&&di.canOverlap){Dt=!0;let We=Li.segments.get();for(let wt of We)mr.push({segments:new a.a0([wt]),sortKey:wt.sortKey,state:Ue,terrainData:To})}else mr.push({segments:Li.segments,sortKey:0,state:Ue,terrainData:To})}Dt&&mr.sort((zr,Xr)=>zr.sortKey-Xr.sortKey);for(let zr of mr){let Xr=zr.state;if(hr.activeTexture.set(Sr.TEXTURE0),Xr.atlasTexture.bind(Xr.atlasInterpolation,Sr.CLAMP_TO_EDGE),Xr.atlasTextureIcon&&(hr.activeTexture.set(Sr.TEXTURE1),Xr.atlasTextureIcon&&Xr.atlasTextureIcon.bind(Xr.atlasInterpolationIcon,Sr.CLAMP_TO_EDGE)),Xr.isSDF){let di=Xr.uniformValues;Xr.hasHalo&&(di.u_is_halo=1,Eh(Xr.buffers,zr.segments,B,le,Xr.program,Ut,Ot,Nt,di,zr.terrainData)),di.u_is_halo=0}Eh(Xr.buffers,zr.segments,B,le,Xr.program,Ut,Ot,Nt,Xr.uniformValues,zr.terrainData)}}function Eh(le,w,B,Q,ee,se,qe,je,it,yt){let Ot=Q.context;ee.draw(Ot,Ot.gl.TRIANGLES,se,qe,je,Ja.disabled,it,yt,B.id,le.layoutVertexBuffer,le.indexBuffer,w,B.paint,Q.transform.zoom,le.programConfigurations.get(B.id),le.dynamicLayoutVertexBuffer,le.opacityVertexBuffer)}function nh(le,w,B,Q){let ee=le.context,se=ee.gl,qe=$o.disabled,je=new Ps([se.ONE,se.ONE],a.aM.transparent,[!0,!0,!0,!0]),it=w.getBucket(B);if(!it)return;let yt=Q.key,Ot=B.heatmapFbos.get(yt);Ot||(Ot=kh(ee,w.tileSize,w.tileSize),B.heatmapFbos.set(yt,Ot)),ee.bindFramebuffer.set(Ot.framebuffer),ee.viewport.set([0,0,w.tileSize,w.tileSize]),ee.clear({color:a.aM.transparent});let Nt=it.programConfigurations.get(B.id),hr=le.useProgram("heatmap",Nt),Sr=le.style.map.terrain.getTerrainData(Q);hr.draw(ee,se.TRIANGLES,wo.disabled,qe,je,Ja.disabled,xo(Q.posMatrix,w,le.transform.zoom,B.paint.get("heatmap-intensity")),Sr,B.id,it.layoutVertexBuffer,it.indexBuffer,it.segments,B.paint,le.transform.zoom,Nt)}function hf(le,w,B){let Q=le.context,ee=Q.gl;Q.setColorMode(le.colorModeForRenderPass());let se=Kh(Q,w),qe=B.key,je=w.heatmapFbos.get(qe);je&&(Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,je.colorAttachment.get()),Q.activeTexture.set(ee.TEXTURE1),se.bind(ee.LINEAR,ee.CLAMP_TO_EDGE),le.useProgram("heatmapTexture").draw(Q,ee.TRIANGLES,wo.disabled,$o.disabled,le.colorModeForRenderPass(),Ja.disabled,zs(le,w,0,1),null,w.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments,w.paint,le.transform.zoom),je.destroy(),w.heatmapFbos.delete(qe))}function kh(le,w,B){var Q,ee;let se=le.gl,qe=se.createTexture();se.bindTexture(se.TEXTURE_2D,qe),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_S,se.CLAMP_TO_EDGE),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_T,se.CLAMP_TO_EDGE),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MIN_FILTER,se.LINEAR),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MAG_FILTER,se.LINEAR);let je=(Q=le.HALF_FLOAT)!==null&&Q!==void 0?Q:se.UNSIGNED_BYTE,it=(ee=le.RGBA16F)!==null&&ee!==void 0?ee:se.RGBA;se.texImage2D(se.TEXTURE_2D,0,it,w,B,0,se.RGBA,je,null);let yt=le.createFramebuffer(w,B,!1,!1);return yt.colorAttachment.set(qe),yt}function Kh(le,w){return w.colorRampTexture||(w.colorRampTexture=new g(le,w.colorRamp,le.gl.RGBA)),w.colorRampTexture}function rc(le,w,B,Q,ee){if(!B||!Q||!Q.imageAtlas)return;let se=Q.imageAtlas.patternPositions,qe=se[B.to.toString()],je=se[B.from.toString()];if(!qe&&je&&(qe=je),!je&&qe&&(je=qe),!qe||!je){let it=ee.getPaintProperty(w);qe=se[it],je=se[it]}qe&&je&&le.setConstantPatternPositions(qe,je)}function ah(le,w,B,Q,ee,se,qe){let je=le.context.gl,it="fill-pattern",yt=B.paint.get(it),Ot=yt&&yt.constantOr(1),Nt=B.getCrossfadeParameters(),hr,Sr,he,be,Pe;qe?(Sr=Ot&&!B.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",hr=je.LINES):(Sr=Ot?"fillPattern":"fill",hr=je.TRIANGLES);let Oe=yt.constantOr(null);for(let Je of Q){let He=w.getTile(Je);if(Ot&&!He.patternsLoaded())continue;let et=He.getBucket(B);if(!et)continue;let Mt=et.programConfigurations.get(B.id),Dt=le.useProgram(Sr,Mt),Ut=le.style.map.terrain&&le.style.map.terrain.getTerrainData(Je);Ot&&(le.context.activeTexture.set(je.TEXTURE0),He.imageAtlasTexture.bind(je.LINEAR,je.CLAMP_TO_EDGE),Mt.updatePaintBuffers(Nt)),rc(Mt,it,Oe,He,B);let tr=Ut?Je:null,mr=le.translatePosMatrix(tr?tr.posMatrix:Je.posMatrix,He,B.paint.get("fill-translate"),B.paint.get("fill-translate-anchor"));if(qe){be=et.indexBuffer2,Pe=et.segments2;let Rr=[je.drawingBufferWidth,je.drawingBufferHeight];he=Sr==="fillOutlinePattern"&&Ot?Sa(mr,le,Nt,He,Rr):Fn(mr,Rr)}else be=et.indexBuffer,Pe=et.segments,he=Ot?ua(mr,le,Nt,He):Ji(mr);Dt.draw(le.context,hr,ee,le.stencilModeForClipping(Je),se,Ja.disabled,he,Ut,B.id,et.layoutVertexBuffer,be,Pe,B.paint,le.transform.zoom,Mt)}}function Wc(le,w,B,Q,ee,se,qe){let je=le.context,it=je.gl,yt="fill-extrusion-pattern",Ot=B.paint.get(yt),Nt=Ot.constantOr(1),hr=B.getCrossfadeParameters(),Sr=B.paint.get("fill-extrusion-opacity"),he=Ot.constantOr(null);for(let be of Q){let Pe=w.getTile(be),Oe=Pe.getBucket(B);if(!Oe)continue;let Je=le.style.map.terrain&&le.style.map.terrain.getTerrainData(be),He=Oe.programConfigurations.get(B.id),et=le.useProgram(Nt?"fillExtrusionPattern":"fillExtrusion",He);Nt&&(le.context.activeTexture.set(it.TEXTURE0),Pe.imageAtlasTexture.bind(it.LINEAR,it.CLAMP_TO_EDGE),He.updatePaintBuffers(hr)),rc(He,yt,he,Pe,B);let Mt=le.translatePosMatrix(be.posMatrix,Pe,B.paint.get("fill-extrusion-translate"),B.paint.get("fill-extrusion-translate-anchor")),Dt=B.paint.get("fill-extrusion-vertical-gradient"),Ut=Nt?hi(Mt,le,Dt,Sr,be,hr,Pe):an(Mt,le,Dt,Sr);et.draw(je,je.gl.TRIANGLES,ee,se,qe,Ja.backCCW,Ut,Je,B.id,Oe.layoutVertexBuffer,Oe.indexBuffer,Oe.segments,B.paint,le.transform.zoom,He,le.style.map.terrain&&Oe.centroidVertexBuffer)}}function df(le,w,B,Q,ee,se,qe){let je=le.context,it=je.gl,yt=B.fbo;if(!yt)return;let Ot=le.useProgram("hillshade"),Nt=le.style.map.terrain&&le.style.map.terrain.getTerrainData(w);je.activeTexture.set(it.TEXTURE0),it.bindTexture(it.TEXTURE_2D,yt.colorAttachment.get()),Ot.draw(je,it.TRIANGLES,ee,se,qe,Ja.disabled,((hr,Sr,he,be)=>{let Pe=he.paint.get("hillshade-shadow-color"),Oe=he.paint.get("hillshade-highlight-color"),Je=he.paint.get("hillshade-accent-color"),He=he.paint.get("hillshade-illumination-direction")*(Math.PI/180);he.paint.get("hillshade-illumination-anchor")==="viewport"&&(He-=hr.transform.angle);let et=!hr.options.moving;return{u_matrix:be?be.posMatrix:hr.transform.calculatePosMatrix(Sr.tileID.toUnwrapped(),et),u_image:0,u_latrange:ks(0,Sr.tileID),u_light:[he.paint.get("hillshade-exaggeration"),He],u_shadow:Pe,u_highlight:Oe,u_accent:Je}})(le,B,Q,Nt?w:null),Nt,Q.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments)}function Cu(le,w,B,Q,ee,se){let qe=le.context,je=qe.gl,it=w.dem;if(it&&it.data){let yt=it.dim,Ot=it.stride,Nt=it.getPixels();if(qe.activeTexture.set(je.TEXTURE1),qe.pixelStoreUnpackPremultiplyAlpha.set(!1),w.demTexture=w.demTexture||le.getTileTexture(Ot),w.demTexture){let Sr=w.demTexture;Sr.update(Nt,{premultiply:!1}),Sr.bind(je.NEAREST,je.CLAMP_TO_EDGE)}else w.demTexture=new g(qe,Nt,je.RGBA,{premultiply:!1}),w.demTexture.bind(je.NEAREST,je.CLAMP_TO_EDGE);qe.activeTexture.set(je.TEXTURE0);let hr=w.fbo;if(!hr){let Sr=new g(qe,{width:yt,height:yt,data:null},je.RGBA);Sr.bind(je.LINEAR,je.CLAMP_TO_EDGE),hr=w.fbo=qe.createFramebuffer(yt,yt,!0,!1),hr.colorAttachment.set(Sr.texture)}qe.bindFramebuffer.set(hr.framebuffer),qe.viewport.set([0,0,yt,yt]),le.useProgram("hillshadePrepare").draw(qe,je.TRIANGLES,Q,ee,se,Ja.disabled,((Sr,he)=>{let be=he.stride,Pe=a.H();return a.aP(Pe,0,a.X,-a.X,0,0,1),a.J(Pe,Pe,[0,-a.X,0]),{u_matrix:Pe,u_image:1,u_dimension:[be,be],u_zoom:Sr.overscaledZ,u_unpack:he.getUnpackVector()}})(w.tileID,it),null,B.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments),w.needsHillshadePrepare=!1}}function Nf(le,w,B,Q,ee,se){let qe=Q.paint.get("raster-fade-duration");if(!se&&qe>0){let je=u.now(),it=(je-le.timeAdded)/qe,yt=w?(je-w.timeAdded)/qe:-1,Ot=B.getSource(),Nt=ee.coveringZoomLevel({tileSize:Ot.tileSize,roundZoom:Ot.roundZoom}),hr=!w||Math.abs(w.tileID.overscaledZ-Nt)>Math.abs(le.tileID.overscaledZ-Nt),Sr=hr&&le.refreshedUponExpiration?1:a.ac(hr?it:1-yt,0,1);return le.refreshedUponExpiration&&it>=1&&(le.refreshedUponExpiration=!1),w?{opacity:1,mix:1-Sr}:{opacity:Sr,mix:0}}return{opacity:1,mix:0}}let Zc=new a.aM(1,0,0,1),ds=new a.aM(0,1,0,1),Ch=new a.aM(0,0,1,1),Bd=new a.aM(1,0,1,1),Jh=new a.aM(0,1,1,1);function Cf(le,w,B,Q){Lu(le,0,w+B/2,le.transform.width,B,Q)}function pd(le,w,B,Q){Lu(le,w-B/2,0,B,le.transform.height,Q)}function Lu(le,w,B,Q,ee,se){let qe=le.context,je=qe.gl;je.enable(je.SCISSOR_TEST),je.scissor(w*le.pixelRatio,B*le.pixelRatio,Q*le.pixelRatio,ee*le.pixelRatio),qe.clear({color:se}),je.disable(je.SCISSOR_TEST)}function $h(le,w,B){let Q=le.context,ee=Q.gl,se=B.posMatrix,qe=le.useProgram("debug"),je=wo.disabled,it=$o.disabled,yt=le.colorModeForRenderPass(),Ot="$debug",Nt=le.style.map.terrain&&le.style.map.terrain.getTerrainData(B);Q.activeTexture.set(ee.TEXTURE0);let hr=w.getTileByID(B.key).latestRawTileData,Sr=Math.floor((hr&&hr.byteLength||0)/1024),he=w.getTile(B).tileSize,be=512/Math.min(he,512)*(B.overscaledZ/le.transform.zoom)*.5,Pe=B.canonical.toString();B.overscaledZ!==B.canonical.z&&(Pe+=` => ${B.overscaledZ}`),function(Oe,Je){Oe.initDebugOverlayCanvas();let He=Oe.debugOverlayCanvas,et=Oe.context.gl,Mt=Oe.debugOverlayCanvas.getContext("2d");Mt.clearRect(0,0,He.width,He.height),Mt.shadowColor="white",Mt.shadowBlur=2,Mt.lineWidth=1.5,Mt.strokeStyle="white",Mt.textBaseline="top",Mt.font="bold 36px Open Sans, sans-serif",Mt.fillText(Je,5,5),Mt.strokeText(Je,5,5),Oe.debugOverlayTexture.update(He),Oe.debugOverlayTexture.bind(et.LINEAR,et.CLAMP_TO_EDGE)}(le,`${Pe} ${Sr}kB`),qe.draw(Q,ee.TRIANGLES,je,it,Ps.alphaBlended,Ja.disabled,ho(se,a.aM.transparent,be),null,Ot,le.debugBuffer,le.quadTriangleIndexBuffer,le.debugSegments),qe.draw(Q,ee.LINE_STRIP,je,it,yt,Ja.disabled,ho(se,a.aM.red),Nt,Ot,le.debugBuffer,le.tileBorderIndexBuffer,le.debugSegments)}function tu(le,w,B){let Q=le.context,ee=Q.gl,se=le.colorModeForRenderPass(),qe=new wo(ee.LEQUAL,wo.ReadWrite,le.depthRangeFor3D),je=le.useProgram("terrain"),it=w.getTerrainMesh();Q.bindFramebuffer.set(null),Q.viewport.set([0,0,le.width,le.height]);for(let yt of B){let Ot=le.renderToTexture.getTexture(yt),Nt=w.getTerrainData(yt.tileID);Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,Ot.texture);let hr=le.transform.calculatePosMatrix(yt.tileID.toUnwrapped()),Sr=w.getMeshFrameDelta(le.transform.zoom),he=le.transform.calculateFogMatrix(yt.tileID.toUnwrapped()),be=Hr(hr,Sr,he,le.style.sky,le.transform.pitch);je.draw(Q,ee.TRIANGLES,qe,$o.disabled,se,Ja.backCCW,be,Nt,"terrain",it.vertexBuffer,it.indexBuffer,it.segments)}}class Pu{constructor(w,B,Q){this.vertexBuffer=w,this.indexBuffer=B,this.segments=Q}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class Lc{constructor(w,B){this.context=new ov(w),this.transform=B,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:a.an(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=dt.maxUnderzooming+dt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new jo}resize(w,B,Q){if(this.width=Math.floor(w*Q),this.height=Math.floor(B*Q),this.pixelRatio=Q,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let ee of this.style._order)this.style._layers[ee].resize()}setup(){let w=this.context,B=new a.aX;B.emplaceBack(0,0),B.emplaceBack(a.X,0),B.emplaceBack(0,a.X),B.emplaceBack(a.X,a.X),this.tileExtentBuffer=w.createVertexBuffer(B,oo.members),this.tileExtentSegments=a.a0.simpleSegment(0,0,4,2);let Q=new a.aX;Q.emplaceBack(0,0),Q.emplaceBack(a.X,0),Q.emplaceBack(0,a.X),Q.emplaceBack(a.X,a.X),this.debugBuffer=w.createVertexBuffer(Q,oo.members),this.debugSegments=a.a0.simpleSegment(0,0,4,5);let ee=new a.$;ee.emplaceBack(0,0,0,0),ee.emplaceBack(a.X,0,a.X,0),ee.emplaceBack(0,a.X,0,a.X),ee.emplaceBack(a.X,a.X,a.X,a.X),this.rasterBoundsBuffer=w.createVertexBuffer(ee,ot.members),this.rasterBoundsSegments=a.a0.simpleSegment(0,0,4,2);let se=new a.aX;se.emplaceBack(0,0),se.emplaceBack(1,0),se.emplaceBack(0,1),se.emplaceBack(1,1),this.viewportBuffer=w.createVertexBuffer(se,oo.members),this.viewportSegments=a.a0.simpleSegment(0,0,4,2);let qe=new a.aZ;qe.emplaceBack(0),qe.emplaceBack(1),qe.emplaceBack(3),qe.emplaceBack(2),qe.emplaceBack(0),this.tileBorderIndexBuffer=w.createIndexBuffer(qe);let je=new a.aY;je.emplaceBack(0,1,2),je.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=w.createIndexBuffer(je);let it=this.context.gl;this.stencilClearMode=new $o({func:it.ALWAYS,mask:0},0,255,it.ZERO,it.ZERO,it.ZERO)}clearStencil(){let w=this.context,B=w.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let Q=a.H();a.aP(Q,0,this.width,this.height,0,0,1),a.K(Q,Q,[B.drawingBufferWidth,B.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(w,B.TRIANGLES,wo.disabled,this.stencilClearMode,Ps.disabled,Ja.disabled,Mo(Q),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(w,B){if(this.currentStencilSource===w.source||!w.isTileClipped()||!B||!B.length)return;this.currentStencilSource=w.source;let Q=this.context,ee=Q.gl;this.nextStencilID+B.length>256&&this.clearStencil(),Q.setColorMode(Ps.disabled),Q.setDepthMode(wo.disabled);let se=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let qe of B){let je=this._tileClippingMaskIDs[qe.key]=this.nextStencilID++,it=this.style.map.terrain&&this.style.map.terrain.getTerrainData(qe);se.draw(Q,ee.TRIANGLES,wo.disabled,new $o({func:ee.ALWAYS,mask:0},je,255,ee.KEEP,ee.KEEP,ee.REPLACE),Ps.disabled,Ja.disabled,Mo(qe.posMatrix),it,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let w=this.nextStencilID++,B=this.context.gl;return new $o({func:B.NOTEQUAL,mask:255},w,255,B.KEEP,B.KEEP,B.REPLACE)}stencilModeForClipping(w){let B=this.context.gl;return new $o({func:B.EQUAL,mask:255},this._tileClippingMaskIDs[w.key],0,B.KEEP,B.KEEP,B.REPLACE)}stencilConfigForOverlap(w){let B=this.context.gl,Q=w.sort((qe,je)=>je.overscaledZ-qe.overscaledZ),ee=Q[Q.length-1].overscaledZ,se=Q[0].overscaledZ-ee+1;if(se>1){this.currentStencilSource=void 0,this.nextStencilID+se>256&&this.clearStencil();let qe={};for(let je=0;je({u_sky_color:Oe.properties.get("sky-color"),u_horizon_color:Oe.properties.get("horizon-color"),u_horizon:(Je.height/2+Je.getHorizon())*He,u_sky_horizon_blend:Oe.properties.get("sky-horizon-blend")*Je.height/2*He}))(yt,it.style.map.transform,it.pixelRatio),Sr=new wo(Nt.LEQUAL,wo.ReadWrite,[0,1]),he=$o.disabled,be=it.colorModeForRenderPass(),Pe=it.useProgram("sky");if(!yt.mesh){let Oe=new a.aX;Oe.emplaceBack(-1,-1),Oe.emplaceBack(1,-1),Oe.emplaceBack(1,1),Oe.emplaceBack(-1,1);let Je=new a.aY;Je.emplaceBack(0,1,2),Je.emplaceBack(0,2,3),yt.mesh=new Pu(Ot.createVertexBuffer(Oe,oo.members),Ot.createIndexBuffer(Je),a.a0.simpleSegment(0,0,Oe.length,Je.length))}Pe.draw(Ot,Nt.TRIANGLES,Sr,he,be,Ja.disabled,hr,void 0,"sky",yt.mesh.vertexBuffer,yt.mesh.indexBuffer,yt.mesh.segments)}(this,this.style.sky),this._showOverdrawInspector=B.showOverdrawInspector,this.depthRangeFor3D=[0,1-(w._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=Q.length-1;this.currentLayer>=0;this.currentLayer--){let it=this.style._layers[Q[this.currentLayer]],yt=ee[it.source],Ot=se[it.source];this._renderTileClippingMasks(it,Ot),this.renderLayer(this,yt,it,Ot)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerPe.source&&!Pe.isHidden(Ot)?[yt.sourceCaches[Pe.source]]:[]),Sr=hr.filter(Pe=>Pe.getSource().type==="vector"),he=hr.filter(Pe=>Pe.getSource().type!=="vector"),be=Pe=>{(!Nt||Nt.getSource().maxzoombe(Pe)),Nt||he.forEach(Pe=>be(Pe)),Nt}(this.style,this.transform.zoom);it&&function(yt,Ot,Nt){for(let hr=0;hr0),ee&&(a.b0(B,Q),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(se,qe){let je=se.context,it=je.gl,yt=Ps.unblended,Ot=new wo(it.LEQUAL,wo.ReadWrite,[0,1]),Nt=qe.getTerrainMesh(),hr=qe.sourceCache.getRenderableTiles(),Sr=se.useProgram("terrainDepth");je.bindFramebuffer.set(qe.getFramebuffer("depth").framebuffer),je.viewport.set([0,0,se.width/devicePixelRatio,se.height/devicePixelRatio]),je.clear({color:a.aM.transparent,depth:1});for(let he of hr){let be=qe.getTerrainData(he.tileID),Pe={u_matrix:se.transform.calculatePosMatrix(he.tileID.toUnwrapped()),u_ele_delta:qe.getMeshFrameDelta(se.transform.zoom)};Sr.draw(je,it.TRIANGLES,Ot,$o.disabled,yt,Ja.backCCW,Pe,be,"terrain",Nt.vertexBuffer,Nt.indexBuffer,Nt.segments)}je.bindFramebuffer.set(null),je.viewport.set([0,0,se.width,se.height])}(this,this.style.map.terrain),function(se,qe){let je=se.context,it=je.gl,yt=Ps.unblended,Ot=new wo(it.LEQUAL,wo.ReadWrite,[0,1]),Nt=qe.getTerrainMesh(),hr=qe.getCoordsTexture(),Sr=qe.sourceCache.getRenderableTiles(),he=se.useProgram("terrainCoords");je.bindFramebuffer.set(qe.getFramebuffer("coords").framebuffer),je.viewport.set([0,0,se.width/devicePixelRatio,se.height/devicePixelRatio]),je.clear({color:a.aM.transparent,depth:1}),qe.coordsIndex=[];for(let be of Sr){let Pe=qe.getTerrainData(be.tileID);je.activeTexture.set(it.TEXTURE0),it.bindTexture(it.TEXTURE_2D,hr.texture);let Oe={u_matrix:se.transform.calculatePosMatrix(be.tileID.toUnwrapped()),u_terrain_coords_id:(255-qe.coordsIndex.length)/255,u_texture:0,u_ele_delta:qe.getMeshFrameDelta(se.transform.zoom)};he.draw(je,it.TRIANGLES,Ot,$o.disabled,yt,Ja.backCCW,Oe,Pe,"terrain",Nt.vertexBuffer,Nt.indexBuffer,Nt.segments),qe.coordsIndex.push(be.tileID.key)}je.bindFramebuffer.set(null),je.viewport.set([0,0,se.width,se.height])}(this,this.style.map.terrain))}renderLayer(w,B,Q,ee){if(!Q.isHidden(this.transform.zoom)&&(Q.type==="background"||Q.type==="custom"||(ee||[]).length))switch(this.id=Q.id,Q.type){case"symbol":(function(se,qe,je,it,yt){if(se.renderPass!=="translucent")return;let Ot=$o.disabled,Nt=se.colorModeForRenderPass();(je._unevaluatedLayout.hasValue("text-variable-anchor")||je._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(hr,Sr,he,be,Pe,Oe,Je,He,et){let Mt=Sr.transform,Dt=Gi(),Ut=Pe==="map",tr=Oe==="map";for(let mr of hr){let Rr=be.getTile(mr),zr=Rr.getBucket(he);if(!zr||!zr.text||!zr.text.segments.get().length)continue;let Xr=a.ag(zr.textSizeData,Mt.zoom),di=nn(Rr,1,Sr.transform.zoom),Li=Or(mr.posMatrix,tr,Ut,Sr.transform,di),Ci=he.layout.get("icon-text-fit")!=="none"&&zr.hasIconData();if(Xr){let Qi=Math.pow(2,Mt.zoom-Rr.tileID.overscaledZ),Mn=Sr.style.map.terrain?(ea,Ga)=>Sr.style.map.terrain.getElevation(mr,ea,Ga):null,pa=Dt.translatePosition(Mt,Rr,Je,He);kf(zr,Ut,tr,et,Mt,Li,mr.posMatrix,Qi,Xr,Ci,Dt,pa,mr.toUnwrapped(),Mn)}}}(it,se,je,qe,je.layout.get("text-rotation-alignment"),je.layout.get("text-pitch-alignment"),je.paint.get("text-translate"),je.paint.get("text-translate-anchor"),yt),je.paint.get("icon-opacity").constantOr(1)!==0&&Yh(se,qe,je,it,!1,je.paint.get("icon-translate"),je.paint.get("icon-translate-anchor"),je.layout.get("icon-rotation-alignment"),je.layout.get("icon-pitch-alignment"),je.layout.get("icon-keep-upright"),Ot,Nt),je.paint.get("text-opacity").constantOr(1)!==0&&Yh(se,qe,je,it,!0,je.paint.get("text-translate"),je.paint.get("text-translate-anchor"),je.layout.get("text-rotation-alignment"),je.layout.get("text-pitch-alignment"),je.layout.get("text-keep-upright"),Ot,Nt),qe.map.showCollisionBoxes&&(tc(se,qe,je,it,!0),tc(se,qe,je,it,!1))})(w,B,Q,ee,this.style.placement.variableOffsets);break;case"circle":(function(se,qe,je,it){if(se.renderPass!=="translucent")return;let yt=je.paint.get("circle-opacity"),Ot=je.paint.get("circle-stroke-width"),Nt=je.paint.get("circle-stroke-opacity"),hr=!je.layout.get("circle-sort-key").isConstant();if(yt.constantOr(1)===0&&(Ot.constantOr(1)===0||Nt.constantOr(1)===0))return;let Sr=se.context,he=Sr.gl,be=se.depthModeForSublayer(0,wo.ReadOnly),Pe=$o.disabled,Oe=se.colorModeForRenderPass(),Je=[];for(let He=0;HeHe.sortKey-et.sortKey);for(let He of Je){let{programConfiguration:et,program:Mt,layoutVertexBuffer:Dt,indexBuffer:Ut,uniformValues:tr,terrainData:mr}=He.state;Mt.draw(Sr,he.TRIANGLES,be,Pe,Oe,Ja.disabled,tr,mr,je.id,Dt,Ut,He.segments,je.paint,se.transform.zoom,et)}})(w,B,Q,ee);break;case"heatmap":(function(se,qe,je,it){if(je.paint.get("heatmap-opacity")===0)return;let yt=se.context;if(se.style.map.terrain){for(let Ot of it){let Nt=qe.getTile(Ot);qe.hasRenderableParent(Ot)||(se.renderPass==="offscreen"?nh(se,Nt,je,Ot):se.renderPass==="translucent"&&hf(se,je,Ot))}yt.viewport.set([0,0,se.width,se.height])}else se.renderPass==="offscreen"?function(Ot,Nt,hr,Sr){let he=Ot.context,be=he.gl,Pe=$o.disabled,Oe=new Ps([be.ONE,be.ONE],a.aM.transparent,[!0,!0,!0,!0]);(function(Je,He,et){let Mt=Je.gl;Je.activeTexture.set(Mt.TEXTURE1),Je.viewport.set([0,0,He.width/4,He.height/4]);let Dt=et.heatmapFbos.get(a.aU);Dt?(Mt.bindTexture(Mt.TEXTURE_2D,Dt.colorAttachment.get()),Je.bindFramebuffer.set(Dt.framebuffer)):(Dt=kh(Je,He.width/4,He.height/4),et.heatmapFbos.set(a.aU,Dt))})(he,Ot,hr),he.clear({color:a.aM.transparent});for(let Je=0;Je20&&Ot.texParameterf(Ot.TEXTURE_2D,yt.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,yt.extTextureFilterAnisotropicMax);let zr=se.style.map.terrain&&se.style.map.terrain.getTerrainData(Je),Xr=zr?Je:null,di=Xr?Xr.posMatrix:se.transform.calculatePosMatrix(Je.toUnwrapped(),Oe),Li=ml(di,mr||[0,0],tr||1,Ut,je);Nt instanceof Rt?hr.draw(yt,Ot.TRIANGLES,He,$o.disabled,Sr,Ja.disabled,Li,zr,je.id,Nt.boundsBuffer,se.quadTriangleIndexBuffer,Nt.boundsSegments):hr.draw(yt,Ot.TRIANGLES,He,he[Je.overscaledZ],Sr,Ja.disabled,Li,zr,je.id,se.rasterBoundsBuffer,se.quadTriangleIndexBuffer,se.rasterBoundsSegments)}})(w,B,Q,ee);break;case"background":(function(se,qe,je,it){let yt=je.paint.get("background-color"),Ot=je.paint.get("background-opacity");if(Ot===0)return;let Nt=se.context,hr=Nt.gl,Sr=se.transform,he=Sr.tileSize,be=je.paint.get("background-pattern");if(se.isPatternMissing(be))return;let Pe=!be&&yt.a===1&&Ot===1&&se.opaquePassEnabledForLayer()?"opaque":"translucent";if(se.renderPass!==Pe)return;let Oe=$o.disabled,Je=se.depthModeForSublayer(0,Pe==="opaque"?wo.ReadWrite:wo.ReadOnly),He=se.colorModeForRenderPass(),et=se.useProgram(be?"backgroundPattern":"background"),Mt=it||Sr.coveringTiles({tileSize:he,terrain:se.style.map.terrain});be&&(Nt.activeTexture.set(hr.TEXTURE0),se.imageManager.bind(se.context));let Dt=je.getCrossfadeParameters();for(let Ut of Mt){let tr=it?Ut.posMatrix:se.transform.calculatePosMatrix(Ut.toUnwrapped()),mr=be?Hu(tr,Ot,se,be,{tileID:Ut,tileSize:he},Dt):Ql(tr,Ot,yt),Rr=se.style.map.terrain&&se.style.map.terrain.getTerrainData(Ut);et.draw(Nt,hr.TRIANGLES,Je,Oe,He,Ja.disabled,mr,Rr,je.id,se.tileExtentBuffer,se.quadTriangleIndexBuffer,se.tileExtentSegments)}})(w,0,Q,ee);break;case"custom":(function(se,qe,je){let it=se.context,yt=je.implementation;if(se.renderPass==="offscreen"){let Ot=yt.prerender;Ot&&(se.setCustomLayerDefaults(),it.setColorMode(se.colorModeForRenderPass()),Ot.call(yt,it.gl,se.transform.customLayerMatrix()),it.setDirty(),se.setBaseState())}else if(se.renderPass==="translucent"){se.setCustomLayerDefaults(),it.setColorMode(se.colorModeForRenderPass()),it.setStencilMode($o.disabled);let Ot=yt.renderingMode==="3d"?new wo(se.context.gl.LEQUAL,wo.ReadWrite,se.depthRangeFor3D):se.depthModeForSublayer(0,wo.ReadOnly);it.setDepthMode(Ot),yt.render(it.gl,se.transform.customLayerMatrix(),{farZ:se.transform.farZ,nearZ:se.transform.nearZ,fov:se.transform._fov,modelViewProjectionMatrix:se.transform.modelViewProjectionMatrix,projectionMatrix:se.transform.projectionMatrix}),it.setDirty(),se.setBaseState(),it.bindFramebuffer.set(null)}})(w,0,Q)}}translatePosMatrix(w,B,Q,ee,se){if(!Q[0]&&!Q[1])return w;let qe=se?ee==="map"?this.transform.angle:0:ee==="viewport"?-this.transform.angle:0;if(qe){let yt=Math.sin(qe),Ot=Math.cos(qe);Q=[Q[0]*Ot-Q[1]*yt,Q[0]*yt+Q[1]*Ot]}let je=[se?Q[0]:nn(B,Q[0],this.transform.zoom),se?Q[1]:nn(B,Q[1],this.transform.zoom),0],it=new Float32Array(16);return a.J(it,w,je),it}saveTileTexture(w){let B=this._tileTextures[w.size[0]];B?B.push(w):this._tileTextures[w.size[0]]=[w]}getTileTexture(w){let B=this._tileTextures[w];return B&&B.length>0?B.pop():null}isPatternMissing(w){if(!w)return!1;if(!w.from||!w.to)return!0;let B=this.imageManager.getPattern(w.from.toString()),Q=this.imageManager.getPattern(w.to.toString());return!B||!Q}useProgram(w,B){this.cache=this.cache||{};let Q=w+(B?B.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[Q]||(this.cache[Q]=new zi(this.context,xn[w],B,fc[w],this._showOverdrawInspector,this.style.map.terrain)),this.cache[Q]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let w=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(w.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new g(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:w,drawingBufferHeight:B}=this.context.gl;return this.width!==w||this.height!==B}}class fl{constructor(w,B){this.points=w,this.planes=B}static fromInvProjectionMatrix(w,B,Q){let ee=Math.pow(2,Q),se=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(je=>{let it=1/(je=a.af([],je,w))[3]/B*ee;return a.b1(je,je,[it,it,1/je[3],it])}),qe=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(je=>{let it=function(hr,Sr){var he=Sr[0],be=Sr[1],Pe=Sr[2],Oe=he*he+be*be+Pe*Pe;return Oe>0&&(Oe=1/Math.sqrt(Oe)),hr[0]=Sr[0]*Oe,hr[1]=Sr[1]*Oe,hr[2]=Sr[2]*Oe,hr}([],function(hr,Sr,he){var be=Sr[0],Pe=Sr[1],Oe=Sr[2],Je=he[0],He=he[1],et=he[2];return hr[0]=Pe*et-Oe*He,hr[1]=Oe*Je-be*et,hr[2]=be*He-Pe*Je,hr}([],L([],se[je[0]],se[je[1]]),L([],se[je[2]],se[je[1]]))),yt=-((Ot=it)[0]*(Nt=se[je[1]])[0]+Ot[1]*Nt[1]+Ot[2]*Nt[2]);var Ot,Nt;return it.concat(yt)});return new fl(se,qe)}}class Xc{constructor(w,B){this.min=w,this.max=B,this.center=function(Q,ee,se){return Q[0]=.5*ee[0],Q[1]=.5*ee[1],Q[2]=.5*ee[2],Q}([],function(Q,ee,se){return Q[0]=ee[0]+se[0],Q[1]=ee[1]+se[1],Q[2]=ee[2]+se[2],Q}([],this.min,this.max))}quadrant(w){let B=[w%2==0,w<2],Q=k(this.min),ee=k(this.max);for(let se=0;se=0&&qe++;if(qe===0)return 0;qe!==B.length&&(Q=!1)}if(Q)return 2;for(let ee=0;ee<3;ee++){let se=Number.MAX_VALUE,qe=-Number.MAX_VALUE;for(let je=0;jethis.max[ee]-this.min[ee])return 0}return 1}}class ic{constructor(w=0,B=0,Q=0,ee=0){if(isNaN(w)||w<0||isNaN(B)||B<0||isNaN(Q)||Q<0||isNaN(ee)||ee<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=w,this.bottom=B,this.left=Q,this.right=ee}interpolate(w,B,Q){return B.top!=null&&w.top!=null&&(this.top=a.y.number(w.top,B.top,Q)),B.bottom!=null&&w.bottom!=null&&(this.bottom=a.y.number(w.bottom,B.bottom,Q)),B.left!=null&&w.left!=null&&(this.left=a.y.number(w.left,B.left,Q)),B.right!=null&&w.right!=null&&(this.right=a.y.number(w.right,B.right,Q)),this}getCenter(w,B){let Q=a.ac((this.left+w-this.right)/2,0,w),ee=a.ac((this.top+B-this.bottom)/2,0,B);return new a.P(Q,ee)}equals(w){return this.top===w.top&&this.bottom===w.bottom&&this.left===w.left&&this.right===w.right}clone(){return new ic(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let yu=85.051129;class Qs{constructor(w,B,Q,ee,se){this.tileSize=512,this._renderWorldCopies=se===void 0||!!se,this._minZoom=w||0,this._maxZoom=B||22,this._minPitch=Q==null?0:Q,this._maxPitch=ee==null?60:ee,this.setMaxBounds(),this.width=0,this.height=0,this._center=new a.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new ic,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let w=new Qs(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return w.apply(this),w}apply(w){this.tileSize=w.tileSize,this.latRange=w.latRange,this.lngRange=w.lngRange,this.width=w.width,this.height=w.height,this._center=w._center,this._elevation=w._elevation,this.minElevationForCurrentTile=w.minElevationForCurrentTile,this.zoom=w.zoom,this.angle=w.angle,this._fov=w._fov,this._pitch=w._pitch,this._unmodified=w._unmodified,this._edgeInsets=w._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(w){this._minZoom!==w&&(this._minZoom=w,this.zoom=Math.max(this.zoom,w))}get maxZoom(){return this._maxZoom}set maxZoom(w){this._maxZoom!==w&&(this._maxZoom=w,this.zoom=Math.min(this.zoom,w))}get minPitch(){return this._minPitch}set minPitch(w){this._minPitch!==w&&(this._minPitch=w,this.pitch=Math.max(this.pitch,w))}get maxPitch(){return this._maxPitch}set maxPitch(w){this._maxPitch!==w&&(this._maxPitch=w,this.pitch=Math.min(this.pitch,w))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(w){w===void 0?w=!0:w===null&&(w=!1),this._renderWorldCopies=w}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new a.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(w){let B=-a.b3(w,-180,180)*Math.PI/180;this.angle!==B&&(this._unmodified=!1,this.angle=B,this._calcMatrices(),this.rotationMatrix=function(){var Q=new a.A(4);return a.A!=Float32Array&&(Q[1]=0,Q[2]=0),Q[0]=1,Q[3]=1,Q}(),function(Q,ee,se){var qe=ee[0],je=ee[1],it=ee[2],yt=ee[3],Ot=Math.sin(se),Nt=Math.cos(se);Q[0]=qe*Nt+it*Ot,Q[1]=je*Nt+yt*Ot,Q[2]=qe*-Ot+it*Nt,Q[3]=je*-Ot+yt*Nt}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(w){let B=a.ac(w,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==B&&(this._unmodified=!1,this._pitch=B,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(w){w=Math.max(.01,Math.min(60,w)),this._fov!==w&&(this._unmodified=!1,this._fov=w/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(w){let B=Math.min(Math.max(w,this.minZoom),this.maxZoom);this._zoom!==B&&(this._unmodified=!1,this._zoom=B,this.tileZoom=Math.max(0,Math.floor(B)),this.scale=this.zoomScale(B),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(w){w.lat===this._center.lat&&w.lng===this._center.lng||(this._unmodified=!1,this._center=w,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(w){w!==this._elevation&&(this._elevation=w,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(w){this._edgeInsets.equals(w)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,w,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(w){return this._edgeInsets.equals(w)}interpolatePadding(w,B,Q){this._unmodified=!1,this._edgeInsets.interpolate(w,B,Q),this._constrain(),this._calcMatrices()}coveringZoomLevel(w){let B=(w.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/w.tileSize));return Math.max(0,B)}getVisibleUnwrappedCoordinates(w){let B=[new a.b4(0,w)];if(this._renderWorldCopies){let Q=this.pointCoordinate(new a.P(0,0)),ee=this.pointCoordinate(new a.P(this.width,0)),se=this.pointCoordinate(new a.P(this.width,this.height)),qe=this.pointCoordinate(new a.P(0,this.height)),je=Math.floor(Math.min(Q.x,ee.x,se.x,qe.x)),it=Math.floor(Math.max(Q.x,ee.x,se.x,qe.x)),yt=1;for(let Ot=je-yt;Ot<=it+yt;Ot++)Ot!==0&&B.push(new a.b4(Ot,w))}return B}coveringTiles(w){var B,Q;let ee=this.coveringZoomLevel(w),se=ee;if(w.minzoom!==void 0&&eew.maxzoom&&(ee=w.maxzoom);let qe=this.pointCoordinate(this.getCameraPoint()),je=a.Z.fromLngLat(this.center),it=Math.pow(2,ee),yt=[it*qe.x,it*qe.y,0],Ot=[it*je.x,it*je.y,0],Nt=fl.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,ee),hr=w.minzoom||0;!w.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(hr=ee);let Sr=w.terrain?2/Math.min(this.tileSize,w.tileSize)*this.tileSize:3,he=He=>({aabb:new Xc([He*it,0,0],[(He+1)*it,it,0]),zoom:0,x:0,y:0,wrap:He,fullyVisible:!1}),be=[],Pe=[],Oe=ee,Je=w.reparseOverscaled?se:ee;if(this._renderWorldCopies)for(let He=1;He<=3;He++)be.push(he(-He)),be.push(he(He));for(be.push(he(0));be.length>0;){let He=be.pop(),et=He.x,Mt=He.y,Dt=He.fullyVisible;if(!Dt){let zr=He.aabb.intersects(Nt);if(zr===0)continue;Dt=zr===2}let Ut=w.terrain?yt:Ot,tr=He.aabb.distanceX(Ut),mr=He.aabb.distanceY(Ut),Rr=Math.max(Math.abs(tr),Math.abs(mr));if(He.zoom===Oe||Rr>Sr+(1<=hr){let zr=Oe-He.zoom,Xr=yt[0]-.5-(et<>1),Li=He.zoom+1,Ci=He.aabb.quadrant(zr);if(w.terrain){let Qi=new a.S(Li,He.wrap,Li,Xr,di),Mn=w.terrain.getMinMaxElevation(Qi),pa=(B=Mn.minElevation)!==null&&B!==void 0?B:this.elevation,ea=(Q=Mn.maxElevation)!==null&&Q!==void 0?Q:this.elevation;Ci=new Xc([Ci.min[0],Ci.min[1],pa],[Ci.max[0],Ci.max[1],ea])}be.push({aabb:Ci,zoom:Li,x:Xr,y:di,wrap:He.wrap,fullyVisible:Dt})}}return Pe.sort((He,et)=>He.distanceSq-et.distanceSq).map(He=>He.tileID)}resize(w,B){this.width=w,this.height=B,this.pixelsToGLUnits=[2/w,-2/B],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(w){return Math.pow(2,w)}scaleZoom(w){return Math.log(w)/Math.LN2}project(w){let B=a.ac(w.lat,-85.051129,yu);return new a.P(a.O(w.lng)*this.worldSize,a.Q(B)*this.worldSize)}unproject(w){return new a.Z(w.x/this.worldSize,w.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(w){let B=this.elevation,Q=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,ee=this.pointLocation(this.centerPoint,w),se=w.getElevationForLngLatZoom(ee,this.tileZoom);if(!(this.elevation-se))return;let qe=Q+B-se,je=Math.cos(this._pitch)*this.cameraToCenterDistance/qe/a.b5(1,ee.lat),it=this.scaleZoom(je/this.tileSize);this._elevation=se,this._center=ee,this.zoom=it}setLocationAtPoint(w,B){let Q=this.pointCoordinate(B),ee=this.pointCoordinate(this.centerPoint),se=this.locationCoordinate(w),qe=new a.Z(se.x-(Q.x-ee.x),se.y-(Q.y-ee.y));this.center=this.coordinateLocation(qe),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(w,B){return B?this.coordinatePoint(this.locationCoordinate(w),B.getElevationForLngLatZoom(w,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(w))}pointLocation(w,B){return this.coordinateLocation(this.pointCoordinate(w,B))}locationCoordinate(w){return a.Z.fromLngLat(w)}coordinateLocation(w){return w&&w.toLngLat()}pointCoordinate(w,B){if(B){let hr=B.pointCoordinate(w);if(hr!=null)return hr}let Q=[w.x,w.y,0,1],ee=[w.x,w.y,1,1];a.af(Q,Q,this.pixelMatrixInverse),a.af(ee,ee,this.pixelMatrixInverse);let se=Q[3],qe=ee[3],je=Q[1]/se,it=ee[1]/qe,yt=Q[2]/se,Ot=ee[2]/qe,Nt=yt===Ot?0:(0-yt)/(Ot-yt);return new a.Z(a.y.number(Q[0]/se,ee[0]/qe,Nt)/this.worldSize,a.y.number(je,it,Nt)/this.worldSize)}coordinatePoint(w,B=0,Q=this.pixelMatrix){let ee=[w.x*this.worldSize,w.y*this.worldSize,B,1];return a.af(ee,ee,Q),new a.P(ee[0]/ee[3],ee[1]/ee[3])}getBounds(){let w=Math.max(0,this.height/2-this.getHorizon());return new ce().extend(this.pointLocation(new a.P(0,w))).extend(this.pointLocation(new a.P(this.width,w))).extend(this.pointLocation(new a.P(this.width,this.height))).extend(this.pointLocation(new a.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new ce([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(w){w?(this.lngRange=[w.getWest(),w.getEast()],this.latRange=[w.getSouth(),w.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,yu])}calculateTileMatrix(w){let B=w.canonical,Q=this.worldSize/this.zoomScale(B.z),ee=B.x+Math.pow(2,B.z)*w.wrap,se=a.an(new Float64Array(16));return a.J(se,se,[ee*Q,B.y*Q,0]),a.K(se,se,[Q/a.X,Q/a.X,1]),se}calculatePosMatrix(w,B=!1){let Q=w.key,ee=B?this._alignedPosMatrixCache:this._posMatrixCache;if(ee[Q])return ee[Q];let se=this.calculateTileMatrix(w);return a.L(se,B?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,se),ee[Q]=new Float32Array(se),ee[Q]}calculateFogMatrix(w){let B=w.key,Q=this._fogMatrixCache;if(Q[B])return Q[B];let ee=this.calculateTileMatrix(w);return a.L(ee,this.fogMatrix,ee),Q[B]=new Float32Array(ee),Q[B]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(w,B){B=a.ac(+B,this.minZoom,this.maxZoom);let Q={center:new a.N(w.lng,w.lat),zoom:B},ee=this.lngRange;if(!this._renderWorldCopies&&ee===null){let He=179.9999999999;ee=[-He,He]}let se=this.tileSize*this.zoomScale(Q.zoom),qe=0,je=se,it=0,yt=se,Ot=0,Nt=0,{x:hr,y:Sr}=this.size;if(this.latRange){let He=this.latRange;qe=a.Q(He[1])*se,je=a.Q(He[0])*se,je-qeje&&(Oe=je-He)}if(ee){let He=(it+yt)/2,et=he;this._renderWorldCopies&&(et=a.b3(he,He-se/2,He+se/2));let Mt=hr/2;et-Mtyt&&(Pe=yt-Mt)}if(Pe!==void 0||Oe!==void 0){let He=new a.P(Pe!=null?Pe:he,Oe!=null?Oe:be);Q.center=this.unproject.call({worldSize:se},He).wrap()}return Q}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let w=this._unmodified,{center:B,zoom:Q}=this.getConstrained(this.center,this.zoom);this.center=B,this.zoom=Q,this._unmodified=w,this._constraining=!1}_calcMatrices(){if(!this.height)return;let w=this.centerOffset,B=this.point.x,Q=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=a.b5(1,this.center.lat)*this.worldSize;let ee=a.an(new Float64Array(16));a.K(ee,ee,[this.width/2,-this.height/2,1]),a.J(ee,ee,[1,-1,0]),this.labelPlaneMatrix=ee,ee=a.an(new Float64Array(16)),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[-1,-1,0]),a.K(ee,ee,[2/this.width,2/this.height,1]),this.glCoordMatrix=ee;let se=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),qe=Math.min(this.elevation,this.minElevationForCurrentTile),je=se-qe*this._pixelPerMeter/Math.cos(this._pitch),it=qe<0?je:se,yt=Math.PI/2+this._pitch,Ot=this._fov*(.5+w.y/this.height),Nt=Math.sin(Ot)*it/Math.sin(a.ac(Math.PI-yt-Ot,.01,Math.PI-.01)),hr=this.getHorizon(),Sr=2*Math.atan(hr/this.cameraToCenterDistance)*(.5+w.y/(2*hr)),he=Math.sin(Sr)*it/Math.sin(a.ac(Math.PI-yt-Sr,.01,Math.PI-.01)),be=Math.min(Nt,he);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*be+it),this.nearZ=this.height/50,ee=new Float64Array(16),a.b6(ee,this._fov,this.width/this.height,this.nearZ,this.farZ),ee[8]=2*-w.x/this.width,ee[9]=2*w.y/this.height,this.projectionMatrix=a.ae(ee),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[0,0,-this.cameraToCenterDistance]),a.b7(ee,ee,this._pitch),a.ad(ee,ee,this.angle),a.J(ee,ee,[-B,-Q,0]),this.mercatorMatrix=a.K([],ee,[this.worldSize,this.worldSize,this.worldSize]),a.K(ee,ee,[1,1,this._pixelPerMeter]),this.pixelMatrix=a.L(new Float64Array(16),this.labelPlaneMatrix,ee),a.J(ee,ee,[0,0,-this.elevation]),this.modelViewProjectionMatrix=ee,this.invModelViewProjectionMatrix=a.as([],ee),this.fogMatrix=new Float64Array(16),a.b6(this.fogMatrix,this._fov,this.width/this.height,se,this.farZ),this.fogMatrix[8]=2*-w.x/this.width,this.fogMatrix[9]=2*w.y/this.height,a.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),a.b7(this.fogMatrix,this.fogMatrix,this._pitch),a.ad(this.fogMatrix,this.fogMatrix,this.angle),a.J(this.fogMatrix,this.fogMatrix,[-B,-Q,0]),a.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=a.L(new Float64Array(16),this.labelPlaneMatrix,ee);let Pe=this.width%2/2,Oe=this.height%2/2,Je=Math.cos(this.angle),He=Math.sin(this.angle),et=B-Math.round(B)+Je*Pe+He*Oe,Mt=Q-Math.round(Q)+Je*Oe+He*Pe,Dt=new Float64Array(ee);if(a.J(Dt,Dt,[et>.5?et-1:et,Mt>.5?Mt-1:Mt,0]),this.alignedModelViewProjectionMatrix=Dt,ee=a.as(new Float64Array(16),this.pixelMatrix),!ee)throw new Error("failed to invert matrix");this.pixelMatrixInverse=ee,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let w=this.pointCoordinate(new a.P(0,0)),B=[w.x*this.worldSize,w.y*this.worldSize,0,1];return a.af(B,B,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let w=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new a.P(0,w))}getCameraQueryGeometry(w){let B=this.getCameraPoint();if(w.length===1)return[w[0],B];{let Q=B.x,ee=B.y,se=B.x,qe=B.y;for(let je of w)Q=Math.min(Q,je.x),ee=Math.min(ee,je.y),se=Math.max(se,je.x),qe=Math.max(qe,je.y);return[new a.P(Q,ee),new a.P(se,ee),new a.P(se,qe),new a.P(Q,qe),new a.P(Q,ee)]}}lngLatToCameraDepth(w,B){let Q=this.locationCoordinate(w),ee=[Q.x*this.worldSize,Q.y*this.worldSize,B,1];return a.af(ee,ee,this.modelViewProjectionMatrix),ee[2]/ee[3]}}function Qh(le,w){let B,Q=!1,ee=null,se=null,qe=()=>{ee=null,Q&&(le.apply(se,B),ee=setTimeout(qe,w),Q=!1)};return(...je)=>(Q=!0,se=this,B=je,ee||qe(),ee)}class gd{constructor(w){this._getCurrentHash=()=>{let B=window.location.hash.replace("#","");if(this._hashName){let Q;return B.split("&").map(ee=>ee.split("=")).forEach(ee=>{ee[0]===this._hashName&&(Q=ee)}),(Q&&Q[1]||"").split("/")}return B.split("/")},this._onHashChange=()=>{let B=this._getCurrentHash();if(B.length>=3&&!B.some(Q=>isNaN(Q))){let Q=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(B[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+B[2],+B[1]],zoom:+B[0],bearing:Q,pitch:+(B[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let B=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,B)},this._removeHash=()=>{let B=this._getCurrentHash();if(B.length===0)return;let Q=B.join("/"),ee=Q;ee.split("&").length>0&&(ee=ee.split("&")[0]),this._hashName&&(ee=`${this._hashName}=${Q}`);let se=window.location.hash.replace(ee,"");se.startsWith("#&")?se=se.slice(0,1)+se.slice(2):se==="#"&&(se="");let qe=window.location.href.replace(/(#.+)?$/,se);qe=qe.replace("&&","&"),window.history.replaceState(window.history.state,null,qe)},this._updateHash=Qh(this._updateHashUnthrottled,300),this._hashName=w&&encodeURIComponent(w)}addTo(w){return this._map=w,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(w){let B=this._map.getCenter(),Q=Math.round(100*this._map.getZoom())/100,ee=Math.ceil((Q*Math.LN2+Math.log(512/360/.5))/Math.LN10),se=Math.pow(10,ee),qe=Math.round(B.lng*se)/se,je=Math.round(B.lat*se)/se,it=this._map.getBearing(),yt=this._map.getPitch(),Ot="";if(Ot+=w?`/${qe}/${je}/${Q}`:`${Q}/${je}/${qe}`,(it||yt)&&(Ot+="/"+Math.round(10*it)/10),yt&&(Ot+=`/${Math.round(yt)}`),this._hashName){let Nt=this._hashName,hr=!1,Sr=window.location.hash.slice(1).split("&").map(he=>{let be=he.split("=")[0];return be===Nt?(hr=!0,`${be}=${Ot}`):he}).filter(he=>he);return hr||Sr.push(`${Nt}=${Ot}`),`#${Sr.join("&")}`}return`#${Ot}`}}let Gu={linearity:.3,easing:a.b8(0,0,.3,1)},Pc=a.e({deceleration:2500,maxSpeed:1400},Gu),vc=a.e({deceleration:20,maxSpeed:1400},Gu),sv=a.e({deceleration:1e3,maxSpeed:360},Gu),Lf=a.e({deceleration:1e3,maxSpeed:90},Gu);class Uf{constructor(w){this._map=w,this.clear()}clear(){this._inertiaBuffer=[]}record(w){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:u.now(),settings:w})}_drainInertiaBuffer(){let w=this._inertiaBuffer,B=u.now();for(;w.length>0&&B-w[0].time>160;)w.shift()}_onMoveEnd(w){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let B={zoom:0,bearing:0,pitch:0,pan:new a.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:se}of this._inertiaBuffer)B.zoom+=se.zoomDelta||0,B.bearing+=se.bearingDelta||0,B.pitch+=se.pitchDelta||0,se.panDelta&&B.pan._add(se.panDelta),se.around&&(B.around=se.around),se.pinchAround&&(B.pinchAround=se.pinchAround);let Q=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,ee={};if(B.pan.mag()){let se=oh(B.pan.mag(),Q,a.e({},Pc,w||{}));ee.offset=B.pan.mult(se.amount/B.pan.mag()),ee.center=this._map.transform.center,Iu(ee,se)}if(B.zoom){let se=oh(B.zoom,Q,vc);ee.zoom=this._map.transform.zoom+se.amount,Iu(ee,se)}if(B.bearing){let se=oh(B.bearing,Q,sv);ee.bearing=this._map.transform.bearing+a.ac(se.amount,-179,179),Iu(ee,se)}if(B.pitch){let se=oh(B.pitch,Q,Lf);ee.pitch=this._map.transform.pitch+se.amount,Iu(ee,se)}if(ee.zoom||ee.bearing){let se=B.pinchAround===void 0?B.around:B.pinchAround;ee.around=se?this._map.unproject(se):this._map.getCenter()}return this.clear(),a.e(ee,{noMoveStart:!0})}}function Iu(le,w){(!le.duration||le.durationB.unproject(it)),je=se.reduce((it,yt,Ot,Nt)=>it.add(yt.div(Nt.length)),new a.P(0,0));super(w,{points:se,point:je,lngLats:qe,lngLat:B.unproject(je),originalEvent:Q}),this._defaultPrevented=!1}}class md extends a.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(w,B,Q){super(w,{originalEvent:Q}),this._defaultPrevented=!1}}class sh{constructor(w,B){this._map=w,this._clickTolerance=B.clickTolerance}reset(){delete this._mousedownPos}wheel(w){return this._firePreventable(new md(w.type,this._map,w))}mousedown(w,B){return this._mousedownPos=B,this._firePreventable(new ru(w.type,this._map,w))}mouseup(w){this._map.fire(new ru(w.type,this._map,w))}click(w,B){this._mousedownPos&&this._mousedownPos.dist(B)>=this._clickTolerance||this._map.fire(new ru(w.type,this._map,w))}dblclick(w){return this._firePreventable(new ru(w.type,this._map,w))}mouseover(w){this._map.fire(new ru(w.type,this._map,w))}mouseout(w){this._map.fire(new ru(w.type,this._map,w))}touchstart(w){return this._firePreventable(new vf(w.type,this._map,w))}touchmove(w){this._map.fire(new vf(w.type,this._map,w))}touchend(w){this._map.fire(new vf(w.type,this._map,w))}touchcancel(w){this._map.fire(new vf(w.type,this._map,w))}_firePreventable(w){if(this._map.fire(w),w.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Fs{constructor(w){this._map=w}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(w){this._map.fire(new ru(w.type,this._map,w))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ru("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(w){this._delayContextMenu?this._contextMenuEvent=w:this._ignoreContextMenu||this._map.fire(new ru(w.type,this._map,w)),this._map.listens("contextmenu")&&w.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class _u{constructor(w){this._map=w}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(w){return this.transform.pointLocation(a.P.convert(w),this._map.terrain)}}class xu{constructor(w,B){this._map=w,this._tr=new _u(w),this._el=w.getCanvasContainer(),this._container=w.getContainer(),this._clickTolerance=B.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(w,B){this.isEnabled()&&w.shiftKey&&w.button===0&&(c.disableDrag(),this._startPos=this._lastPos=B,this._active=!0)}mousemoveWindow(w,B){if(!this._active)return;let Q=B;if(this._lastPos.equals(Q)||!this._box&&Q.dist(this._startPos)se.fitScreenCoordinates(Q,ee,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",w)}keydown(w){this._active&&w.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",w))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(w,B){return this._map.fire(new a.k(w,{originalEvent:B}))}}function Lh(le,w){if(le.length!==w.length)throw new Error(`The number of touches and points are not equal - touches ${le.length}, points ${w.length}`);let B={};for(let Q=0;Qthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=w.timeStamp),Q.length===this.numTouches&&(this.centroid=function(ee){let se=new a.P(0,0);for(let qe of ee)se._add(qe);return se.div(ee.length)}(B),this.touches=Lh(Q,B)))}touchmove(w,B,Q){if(this.aborted||!this.centroid)return;let ee=Lh(Q,B);for(let se in this.touches){let qe=ee[se];(!qe||qe.dist(this.touches[se])>30)&&(this.aborted=!0)}}touchend(w,B,Q){if((!this.centroid||w.timeStamp-this.startTime>500)&&(this.aborted=!0),Q.length===0){let ee=!this.aborted&&this.centroid;if(this.reset(),ee)return ee}}}class Pf{constructor(w){this.singleTap=new Is(w),this.numTaps=w.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(w,B,Q){this.singleTap.touchstart(w,B,Q)}touchmove(w,B,Q){this.singleTap.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this.singleTap.touchend(w,B,Q);if(ee){let se=w.timeStamp-this.lastTime<500,qe=!this.lastTap||this.lastTap.dist(ee)<30;if(se&&qe||this.reset(),this.count++,this.lastTime=w.timeStamp,this.lastTap=ee,this.count===this.numTaps)return this.reset(),ee}}}class Ic{constructor(w){this._tr=new _u(w),this._zoomIn=new Pf({numTouches:1,numTaps:2}),this._zoomOut=new Pf({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(w,B,Q){this._zoomIn.touchstart(w,B,Q),this._zoomOut.touchstart(w,B,Q)}touchmove(w,B,Q){this._zoomIn.touchmove(w,B,Q),this._zoomOut.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this._zoomIn.touchend(w,B,Q),se=this._zoomOut.touchend(w,B,Q),qe=this._tr;return ee?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:je=>je.easeTo({duration:300,zoom:qe.zoom+1,around:qe.unproject(ee)},{originalEvent:w})}):se?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:je=>je.easeTo({duration:300,zoom:qe.zoom-1,around:qe.unproject(se)},{originalEvent:w})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class ju{constructor(w){this._enabled=!!w.enable,this._moveStateManager=w.moveStateManager,this._clickTolerance=w.clickTolerance||1,this._moveFunction=w.move,this._activateOnStart=!!w.activateOnStart,w.assignEvents(this),this.reset()}reset(w){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(w)}_move(...w){let B=this._moveFunction(...w);if(B.bearingDelta||B.pitchDelta||B.around||B.panDelta)return this._active=!0,B}dragStart(w,B){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(w)&&(this._moveStateManager.startMove(w),this._lastPoint=B.length?B[0]:B,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(w,B){if(!this.isEnabled())return;let Q=this._lastPoint;if(!Q)return;if(w.preventDefault(),!this._moveStateManager.isValidMoveEvent(w))return void this.reset(w);let ee=B.length?B[0]:B;return!this._moved&&ee.dist(Q){le.mousedown=le.dragStart,le.mousemoveWindow=le.dragMove,le.mouseup=le.dragEnd,le.contextmenu=w=>{w.preventDefault()}},Dl=({enable:le,clickTolerance:w,bearingDegreesPerPixelMoved:B=.8})=>{let Q=new pc({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new ju({clickTolerance:w,move:(ee,se)=>({bearingDelta:(se.x-ee.x)*B}),moveStateManager:Q,enable:le,assignEvents:Ph})},Ih=({enable:le,clickTolerance:w,pitchDegreesPerPixelMoved:B=-.5})=>{let Q=new pc({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new ju({clickTolerance:w,move:(ee,se)=>({pitchDelta:(se.y-ee.y)*B}),moveStateManager:Q,enable:le,assignEvents:Ph})};class Wu{constructor(w,B){this._clickTolerance=w.clickTolerance||1,this._map=B,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new a.P(0,0)}_shouldBePrevented(w){return w<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(w,B,Q){return this._calculateTransform(w,B,Q)}touchmove(w,B,Q){if(this._active){if(!this._shouldBePrevented(Q.length))return w.preventDefault(),this._calculateTransform(w,B,Q);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",w)}}touchend(w,B,Q){this._calculateTransform(w,B,Q),this._active&&this._shouldBePrevented(Q.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(w,B,Q){Q.length>0&&(this._active=!0);let ee=Lh(Q,B),se=new a.P(0,0),qe=new a.P(0,0),je=0;for(let yt in ee){let Ot=ee[yt],Nt=this._touches[yt];Nt&&(se._add(Ot),qe._add(Ot.sub(Nt)),je++,ee[yt]=Ot)}if(this._touches=ee,this._shouldBePrevented(je)||!qe.mag())return;let it=qe.div(je);return this._sum._add(it),this._sum.mag()Math.abs(le.x)}class gf extends Rc{constructor(w){super(),this._currentTouchCount=0,this._map=w}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(w,B,Q){super.touchstart(w,B,Q),this._currentTouchCount=Q.length}_start(w){this._lastPoints=w,nc(w[0].sub(w[1]))&&(this._valid=!1)}_move(w,B,Q){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let ee=w[0].sub(this._lastPoints[0]),se=w[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(ee,se,Q.timeStamp),this._valid?(this._lastPoints=w,this._active=!0,{pitchDelta:(ee.y+se.y)/2*-.5}):void 0}gestureBeginsVertically(w,B,Q){if(this._valid!==void 0)return this._valid;let ee=w.mag()>=2,se=B.mag()>=2;if(!ee&&!se)return;if(!ee||!se)return this._firstMove===void 0&&(this._firstMove=Q),Q-this._firstMove<100&&void 0;let qe=w.y>0==B.y>0;return nc(w)&&nc(B)&&qe}}let gt={panStep:100,bearingStep:15,pitchStep:10};class Bt{constructor(w){this._tr=new _u(w);let B=gt;this._panStep=B.panStep,this._bearingStep=B.bearingStep,this._pitchStep=B.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(w){if(w.altKey||w.ctrlKey||w.metaKey)return;let B=0,Q=0,ee=0,se=0,qe=0;switch(w.keyCode){case 61:case 107:case 171:case 187:B=1;break;case 189:case 109:case 173:B=-1;break;case 37:w.shiftKey?Q=-1:(w.preventDefault(),se=-1);break;case 39:w.shiftKey?Q=1:(w.preventDefault(),se=1);break;case 38:w.shiftKey?ee=1:(w.preventDefault(),qe=-1);break;case 40:w.shiftKey?ee=-1:(w.preventDefault(),qe=1);break;default:return}return this._rotationDisabled&&(Q=0,ee=0),{cameraAnimation:je=>{let it=this._tr;je.easeTo({duration:300,easeId:"keyboardHandler",easing:wr,zoom:B?Math.round(it.zoom)+B*(w.shiftKey?2:1):it.zoom,bearing:it.bearing+Q*this._bearingStep,pitch:it.pitch+ee*this._pitchStep,offset:[-se*this._panStep,-qe*this._panStep],center:it.center},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function wr(le){return le*(2-le)}let vr=4.000244140625;class Ur{constructor(w,B){this._onTimeout=Q=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(Q)},this._map=w,this._tr=new _u(w),this._triggerRenderFrame=B,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(w){this._defaultZoomRate=w}setWheelZoomRate(w){this._wheelZoomRate=w}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(w){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!w&&w.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(w){return!!this._map.cooperativeGestures.isEnabled()&&!(w.ctrlKey||this._map.cooperativeGestures.isBypassed(w))}wheel(w){if(!this.isEnabled())return;if(this._shouldBePrevented(w))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",w);let B=w.deltaMode===WheelEvent.DOM_DELTA_LINE?40*w.deltaY:w.deltaY,Q=u.now(),ee=Q-(this._lastWheelEventTime||0);this._lastWheelEventTime=Q,B!==0&&B%vr==0?this._type="wheel":B!==0&&Math.abs(B)<4?this._type="trackpad":ee>400?(this._type=null,this._lastValue=B,this._timeout=setTimeout(this._onTimeout,40,w)):this._type||(this._type=Math.abs(ee*B)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,B+=this._lastValue)),w.shiftKey&&B&&(B/=4),this._type&&(this._lastWheelEvent=w,this._delta-=B,this._active||this._start(w)),w.preventDefault()}_start(w){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let B=c.mousePos(this._map.getCanvas(),w),Q=this._tr;this._around=B.y>Q.transform.height/2-Q.transform.getHorizon()?a.N.convert(this._aroundCenter?Q.center:Q.unproject(B)):a.N.convert(Q.center),this._aroundPoint=Q.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let w=this._tr.transform;if(this._delta!==0){let it=this._type==="wheel"&&Math.abs(this._delta)>vr?this._wheelZoomRate:this._defaultZoomRate,yt=2/(1+Math.exp(-Math.abs(this._delta*it)));this._delta<0&&yt!==0&&(yt=1/yt);let Ot=typeof this._targetZoom=="number"?w.zoomScale(this._targetZoom):w.scale;this._targetZoom=Math.min(w.maxZoom,Math.max(w.minZoom,w.scaleZoom(Ot*yt))),this._type==="wheel"&&(this._startZoom=w.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let B=typeof this._targetZoom=="number"?this._targetZoom:w.zoom,Q=this._startZoom,ee=this._easing,se,qe=!1,je=u.now()-this._lastWheelEventTime;if(this._type==="wheel"&&Q&&ee&&je){let it=Math.min(je/200,1),yt=ee(it);se=a.y.number(Q,B,yt),it<1?this._frameId||(this._frameId=!0):qe=!0}else se=B,qe=!0;return this._active=!0,qe&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!qe,zoomDelta:se-w.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(w){let B=a.b9;if(this._prevEase){let Q=this._prevEase,ee=(u.now()-Q.start)/Q.duration,se=Q.easing(ee+.01)-Q.easing(ee),qe=.27/Math.sqrt(se*se+1e-4)*.01,je=Math.sqrt(.0729-qe*qe);B=a.b8(qe,je,.25,1)}return this._prevEase={start:u.now(),duration:w,easing:B},B}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class fi{constructor(w,B){this._clickZoom=w,this._tapZoom=B}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class xi{constructor(w){this._tr=new _u(w),this.reset()}reset(){this._active=!1}dblclick(w,B){return w.preventDefault(),{cameraAnimation:Q=>{Q.easeTo({duration:300,zoom:this._tr.zoom+(w.shiftKey?-1:1),around:this._tr.unproject(B)},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fi{constructor(){this._tap=new Pf({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(w,B,Q){if(!this._swipePoint)if(this._tapTime){let ee=B[0],se=w.timeStamp-this._tapTime<500,qe=this._tapPoint.dist(ee)<30;se&&qe?Q.length>0&&(this._swipePoint=ee,this._swipeTouch=Q[0].identifier):this.reset()}else this._tap.touchstart(w,B,Q)}touchmove(w,B,Q){if(this._tapTime){if(this._swipePoint){if(Q[0].identifier!==this._swipeTouch)return;let ee=B[0],se=ee.y-this._swipePoint.y;return this._swipePoint=ee,w.preventDefault(),this._active=!0,{zoomDelta:se/128}}}else this._tap.touchmove(w,B,Q)}touchend(w,B,Q){if(this._tapTime)this._swipePoint&&Q.length===0&&this.reset();else{let ee=this._tap.touchend(w,B,Q);ee&&(this._tapTime=w.timeStamp,this._tapPoint=ee)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Xi{constructor(w,B,Q){this._el=w,this._mousePan=B,this._touchPan=Q}enable(w){this._inertiaOptions=w||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class hn{constructor(w,B,Q){this._pitchWithRotate=w.pitchWithRotate,this._mouseRotate=B,this._mousePitch=Q}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Ti{constructor(w,B,Q,ee){this._el=w,this._touchZoom=B,this._touchRotate=Q,this._tapDragZoom=ee,this._rotationDisabled=!1,this._enabled=!0}enable(w){this._touchZoom.enable(w),this._rotationDisabled||this._touchRotate.enable(w),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}class qi{constructor(w,B){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=w,this._options=B,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let w=this._map.getCanvasContainer();w.classList.add("maplibregl-cooperative-gestures"),this._container=c.create("div","maplibregl-cooperative-gesture-screen",w);let B=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(B=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let Q=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),ee=document.createElement("div");ee.className="maplibregl-desktop-message",ee.textContent=B,this._container.appendChild(ee);let se=document.createElement("div");se.className="maplibregl-mobile-message",se.textContent=Q,this._container.appendChild(se),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(c.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(w){return w[this._bypassKey]}notifyGestureBlocked(w,B){this._enabled&&(this._map.fire(new a.k("cooperativegestureprevented",{gestureType:w,originalEvent:B})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}let Ii=le=>le.zoom||le.drag||le.pitch||le.rotate;class mi extends a.k{}function Pn(le){return le.panDelta&&le.panDelta.mag()||le.zoomDelta||le.bearingDelta||le.pitchDelta}class Ma{constructor(w,B){this.handleWindowEvent=ee=>{this.handleEvent(ee,`${ee.type}Window`)},this.handleEvent=(ee,se)=>{if(ee.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let qe=ee.type==="renderFrame"?void 0:ee,je={needsRenderFrame:!1},it={},yt={},Ot=ee.touches,Nt=Ot?this._getMapTouches(Ot):void 0,hr=Nt?c.touchPos(this._map.getCanvas(),Nt):c.mousePos(this._map.getCanvas(),ee);for(let{handlerName:be,handler:Pe,allowed:Oe}of this._handlers){if(!Pe.isEnabled())continue;let Je;this._blockedByActive(yt,Oe,be)?Pe.reset():Pe[se||ee.type]&&(Je=Pe[se||ee.type](ee,hr,Nt),this.mergeHandlerResult(je,it,Je,be,qe),Je&&Je.needsRenderFrame&&this._triggerRenderFrame()),(Je||Pe.isActive())&&(yt[be]=Pe)}let Sr={};for(let be in this._previousActiveHandlers)yt[be]||(Sr[be]=qe);this._previousActiveHandlers=yt,(Object.keys(Sr).length||Pn(je))&&(this._changes.push([je,it,Sr]),this._triggerRenderFrame()),(Object.keys(yt).length||Pn(je))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:he}=je;he&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],he(this._map))},this._map=w,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Uf(w),this._bearingSnap=B.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(B);let Q=this._el;this._listeners=[[Q,"touchstart",{passive:!0}],[Q,"touchmove",{passive:!1}],[Q,"touchend",void 0],[Q,"touchcancel",void 0],[Q,"mousedown",void 0],[Q,"mousemove",void 0],[Q,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[Q,"mouseover",void 0],[Q,"mouseout",void 0],[Q,"dblclick",void 0],[Q,"click",void 0],[Q,"keydown",{capture:!1}],[Q,"keyup",void 0],[Q,"wheel",{passive:!1}],[Q,"contextmenu",void 0],[window,"blur",void 0]];for(let[ee,se,qe]of this._listeners)c.addEventListener(ee,se,ee===document?this.handleWindowEvent:this.handleEvent,qe)}destroy(){for(let[w,B,Q]of this._listeners)c.removeEventListener(w,B,w===document?this.handleWindowEvent:this.handleEvent,Q)}_addDefaultHandlers(w){let B=this._map,Q=B.getCanvasContainer();this._add("mapEvent",new sh(B,w));let ee=B.boxZoom=new xu(B,w);this._add("boxZoom",ee),w.interactive&&w.boxZoom&&ee.enable();let se=B.cooperativeGestures=new qi(B,w.cooperativeGestures);this._add("cooperativeGestures",se),w.cooperativeGestures&&se.enable();let qe=new Ic(B),je=new xi(B);B.doubleClickZoom=new fi(je,qe),this._add("tapZoom",qe),this._add("clickZoom",je),w.interactive&&w.doubleClickZoom&&B.doubleClickZoom.enable();let it=new Fi;this._add("tapDragZoom",it);let yt=B.touchPitch=new gf(B);this._add("touchPitch",yt),w.interactive&&w.touchPitch&&B.touchPitch.enable(w.touchPitch);let Ot=Dl(w),Nt=Ih(w);B.dragRotate=new hn(w,Ot,Nt),this._add("mouseRotate",Ot,["mousePitch"]),this._add("mousePitch",Nt,["mouseRotate"]),w.interactive&&w.dragRotate&&B.dragRotate.enable();let hr=(({enable:Je,clickTolerance:He})=>{let et=new pc({checkCorrectEvent:Mt=>c.mouseButton(Mt)===0&&!Mt.ctrlKey});return new ju({clickTolerance:He,move:(Mt,Dt)=>({around:Dt,panDelta:Dt.sub(Mt)}),activateOnStart:!0,moveStateManager:et,enable:Je,assignEvents:Ph})})(w),Sr=new Wu(w,B);B.dragPan=new Xi(Q,hr,Sr),this._add("mousePan",hr),this._add("touchPan",Sr,["touchZoom","touchRotate"]),w.interactive&&w.dragPan&&B.dragPan.enable(w.dragPan);let he=new Yc,be=new iu;B.touchZoomRotate=new Ti(Q,be,he,it),this._add("touchRotate",he,["touchPan","touchZoom"]),this._add("touchZoom",be,["touchPan","touchRotate"]),w.interactive&&w.touchZoomRotate&&B.touchZoomRotate.enable(w.touchZoomRotate);let Pe=B.scrollZoom=new Ur(B,()=>this._triggerRenderFrame());this._add("scrollZoom",Pe,["mousePan"]),w.interactive&&w.scrollZoom&&B.scrollZoom.enable(w.scrollZoom);let Oe=B.keyboard=new Bt(B);this._add("keyboard",Oe),w.interactive&&w.keyboard&&B.keyboard.enable(),this._add("blockableMapEvent",new Fs(B))}_add(w,B,Q){this._handlers.push({handlerName:w,handler:B,allowed:Q}),this._handlersById[w]=B}stop(w){if(!this._updatingCamera){for(let{handler:B}of this._handlers)B.reset();this._inertia.clear(),this._fireEvents({},{},w),this._changes=[]}}isActive(){for(let{handler:w}of this._handlers)if(w.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Ii(this._eventsInProgress)||this.isZooming()}_blockedByActive(w,B,Q){for(let ee in w)if(ee!==Q&&(!B||B.indexOf(ee)<0))return!0;return!1}_getMapTouches(w){let B=[];for(let Q of w)this._el.contains(Q.target)&&B.push(Q);return B}mergeHandlerResult(w,B,Q,ee,se){if(!Q)return;a.e(w,Q);let qe={handlerName:ee,originalEvent:Q.originalEvent||se};Q.zoomDelta!==void 0&&(B.zoom=qe),Q.panDelta!==void 0&&(B.drag=qe),Q.pitchDelta!==void 0&&(B.pitch=qe),Q.bearingDelta!==void 0&&(B.rotate=qe)}_applyChanges(){let w={},B={},Q={};for(let[ee,se,qe]of this._changes)ee.panDelta&&(w.panDelta=(w.panDelta||new a.P(0,0))._add(ee.panDelta)),ee.zoomDelta&&(w.zoomDelta=(w.zoomDelta||0)+ee.zoomDelta),ee.bearingDelta&&(w.bearingDelta=(w.bearingDelta||0)+ee.bearingDelta),ee.pitchDelta&&(w.pitchDelta=(w.pitchDelta||0)+ee.pitchDelta),ee.around!==void 0&&(w.around=ee.around),ee.pinchAround!==void 0&&(w.pinchAround=ee.pinchAround),ee.noInertia&&(w.noInertia=ee.noInertia),a.e(B,se),a.e(Q,qe);this._updateMapTransform(w,B,Q),this._changes=[]}_updateMapTransform(w,B,Q){let ee=this._map,se=ee._getTransformForUpdate(),qe=ee.terrain;if(!(Pn(w)||qe&&this._terrainMovement))return this._fireEvents(B,Q,!0);let{panDelta:je,zoomDelta:it,bearingDelta:yt,pitchDelta:Ot,around:Nt,pinchAround:hr}=w;hr!==void 0&&(Nt=hr),ee._stop(!0),Nt=Nt||ee.transform.centerPoint;let Sr=se.pointLocation(je?Nt.sub(je):Nt);yt&&(se.bearing+=yt),Ot&&(se.pitch+=Ot),it&&(se.zoom+=it),qe?this._terrainMovement||!B.drag&&!B.zoom?B.drag&&this._terrainMovement?se.center=se.pointLocation(se.centerPoint.sub(je)):se.setLocationAtPoint(Sr,Nt):(this._terrainMovement=!0,this._map._elevationFreeze=!0,se.setLocationAtPoint(Sr,Nt)):se.setLocationAtPoint(Sr,Nt),ee._applyUpdatedTransform(se),this._map._update(),w.noInertia||this._inertia.record(w),this._fireEvents(B,Q,!0)}_fireEvents(w,B,Q){let ee=Ii(this._eventsInProgress),se=Ii(w),qe={};for(let Nt in w){let{originalEvent:hr}=w[Nt];this._eventsInProgress[Nt]||(qe[`${Nt}start`]=hr),this._eventsInProgress[Nt]=w[Nt]}!ee&&se&&this._fireEvent("movestart",se.originalEvent);for(let Nt in qe)this._fireEvent(Nt,qe[Nt]);se&&this._fireEvent("move",se.originalEvent);for(let Nt in w){let{originalEvent:hr}=w[Nt];this._fireEvent(Nt,hr)}let je={},it;for(let Nt in this._eventsInProgress){let{handlerName:hr,originalEvent:Sr}=this._eventsInProgress[Nt];this._handlersById[hr].isActive()||(delete this._eventsInProgress[Nt],it=B[hr]||Sr,je[`${Nt}end`]=it)}for(let Nt in je)this._fireEvent(Nt,je[Nt]);let yt=Ii(this._eventsInProgress),Ot=(ee||se)&&!yt;if(Ot&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let Nt=this._map._getTransformForUpdate();Nt.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform(Nt)}if(Q&&Ot){this._updatingCamera=!0;let Nt=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),hr=Sr=>Sr!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new mi("renderFrame",{timeStamp:w})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Ta extends a.E{constructor(w,B){super(),this._renderFrameCallback=()=>{let Q=Math.min((u.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(Q)),Q<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=w,this._bearingSnap=B.bearingSnap,this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new a.N(this.transform.center.lng,this.transform.center.lat)}setCenter(w,B){return this.jumpTo({center:w},B)}panBy(w,B,Q){return w=a.P.convert(w).mult(-1),this.panTo(this.transform.center,a.e({offset:w},B),Q)}panTo(w,B,Q){return this.easeTo(a.e({center:w},B),Q)}getZoom(){return this.transform.zoom}setZoom(w,B){return this.jumpTo({zoom:w},B),this}zoomTo(w,B,Q){return this.easeTo(a.e({zoom:w},B),Q)}zoomIn(w,B){return this.zoomTo(this.getZoom()+1,w,B),this}zoomOut(w,B){return this.zoomTo(this.getZoom()-1,w,B),this}getBearing(){return this.transform.bearing}setBearing(w,B){return this.jumpTo({bearing:w},B),this}getPadding(){return this.transform.padding}setPadding(w,B){return this.jumpTo({padding:w},B),this}rotateTo(w,B,Q){return this.easeTo(a.e({bearing:w},B),Q)}resetNorth(w,B){return this.rotateTo(0,a.e({duration:1e3},w),B),this}resetNorthPitch(w,B){return this.easeTo(a.e({bearing:0,pitch:0,duration:1e3},w),B),this}snapToNorth(w,B){return Math.abs(this.getBearing()){if(this._zooming&&(ee.zoom=a.y.number(se,Pe,Ut)),this._rotating&&(ee.bearing=a.y.number(qe,yt,Ut)),this._pitching&&(ee.pitch=a.y.number(je,Ot,Ut)),this._padding&&(ee.interpolatePadding(it,Nt,Ut),Sr=ee.centerPoint.add(hr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Ut),et)ee.setLocationAtPoint(et,Mt);else{let tr=ee.zoomScale(ee.zoom-se),mr=Pe>se?Math.min(2,He):Math.max(.5,He),Rr=Math.pow(mr,1-Ut),zr=ee.unproject(Oe.add(Je.mult(Ut*Rr)).mult(tr));ee.setLocationAtPoint(ee.renderWorldCopies?zr.wrap():zr,Sr)}this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},Ut=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B,Ut)},w),this}_prepareEase(w,B,Q={}){this._moving=!0,B||Q.moving||this.fire(new a.k("movestart",w)),this._zooming&&!Q.zooming&&this.fire(new a.k("zoomstart",w)),this._rotating&&!Q.rotating&&this.fire(new a.k("rotatestart",w)),this._pitching&&!Q.pitching&&this.fire(new a.k("pitchstart",w))}_prepareElevation(w){this._elevationCenter=w,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(w,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(w){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let B=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(w<1&&B!==this._elevationTarget){let Q=this._elevationTarget-this._elevationStart;this._elevationStart+=w*(Q-(B-(Q*w+this._elevationStart))/(1-w)),this._elevationTarget=B}this.transform.elevation=a.y.number(this._elevationStart,this._elevationTarget,w)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(w){let B=w.getCameraPosition(),Q=this.terrain.getElevationForLngLatZoom(B.lngLat,w.zoom);if(B.altitudethis._elevateCameraIfInsideTerrain(ee)),this.transformCameraUpdate&&B.push(ee=>this.transformCameraUpdate(ee)),!B.length)return;let Q=w.clone();for(let ee of B){let se=Q.clone(),{center:qe,zoom:je,pitch:it,bearing:yt,elevation:Ot}=ee(se);qe&&(se.center=qe),je!==void 0&&(se.zoom=je),it!==void 0&&(se.pitch=it),yt!==void 0&&(se.bearing=yt),Ot!==void 0&&(se.elevation=Ot),Q.apply(se)}this.transform.apply(Q)}_fireMoveEvents(w){this.fire(new a.k("move",w)),this._zooming&&this.fire(new a.k("zoom",w)),this._rotating&&this.fire(new a.k("rotate",w)),this._pitching&&this.fire(new a.k("pitch",w))}_afterEase(w,B){if(this._easeId&&B&&this._easeId===B)return;delete this._easeId;let Q=this._zooming,ee=this._rotating,se=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,Q&&this.fire(new a.k("zoomend",w)),ee&&this.fire(new a.k("rotateend",w)),se&&this.fire(new a.k("pitchend",w)),this.fire(new a.k("moveend",w))}flyTo(w,B){var Q;if(!w.essential&&u.prefersReducedMotion){let Qi=a.M(w,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Qi,B)}this.stop(),w=a.e({offset:[0,0],speed:1.2,curve:1.42,easing:a.b9},w);let ee=this._getTransformForUpdate(),se=ee.zoom,qe=ee.bearing,je=ee.pitch,it=ee.padding,yt="bearing"in w?this._normalizeBearing(w.bearing,qe):qe,Ot="pitch"in w?+w.pitch:je,Nt="padding"in w?w.padding:ee.padding,hr=a.P.convert(w.offset),Sr=ee.centerPoint.add(hr),he=ee.pointLocation(Sr),{center:be,zoom:Pe}=ee.getConstrained(a.N.convert(w.center||he),(Q=w.zoom)!==null&&Q!==void 0?Q:se);this._normalizeCenter(be,ee);let Oe=ee.zoomScale(Pe-se),Je=ee.project(he),He=ee.project(be).sub(Je),et=w.curve,Mt=Math.max(ee.width,ee.height),Dt=Mt/Oe,Ut=He.mag();if("minZoom"in w){let Qi=a.ac(Math.min(w.minZoom,se,Pe),ee.minZoom,ee.maxZoom),Mn=Mt/ee.zoomScale(Qi-se);et=Math.sqrt(Mn/Ut*2)}let tr=et*et;function mr(Qi){let Mn=(Dt*Dt-Mt*Mt+(Qi?-1:1)*tr*tr*Ut*Ut)/(2*(Qi?Dt:Mt)*tr*Ut);return Math.log(Math.sqrt(Mn*Mn+1)-Mn)}function Rr(Qi){return(Math.exp(Qi)-Math.exp(-Qi))/2}function zr(Qi){return(Math.exp(Qi)+Math.exp(-Qi))/2}let Xr=mr(!1),di=function(Qi){return zr(Xr)/zr(Xr+et*Qi)},Li=function(Qi){return Mt*((zr(Xr)*(Rr(Mn=Xr+et*Qi)/zr(Mn))-Rr(Xr))/tr)/Ut;var Mn},Ci=(mr(!0)-Xr)/et;if(Math.abs(Ut)<1e-6||!isFinite(Ci)){if(Math.abs(Mt-Dt)<1e-6)return this.easeTo(w,B);let Qi=Dt0,di=Mn=>Math.exp(Qi*et*Mn)}return w.duration="duration"in w?+w.duration:1e3*Ci/("screenSpeed"in w?+w.screenSpeed/et:+w.speed),w.maxDuration&&w.duration>w.maxDuration&&(w.duration=0),this._zooming=!0,this._rotating=qe!==yt,this._pitching=Ot!==je,this._padding=!ee.isPaddingEqual(Nt),this._prepareEase(B,!1),this.terrain&&this._prepareElevation(be),this._ease(Qi=>{let Mn=Qi*Ci,pa=1/di(Mn);ee.zoom=Qi===1?Pe:se+ee.scaleZoom(pa),this._rotating&&(ee.bearing=a.y.number(qe,yt,Qi)),this._pitching&&(ee.pitch=a.y.number(je,Ot,Qi)),this._padding&&(ee.interpolatePadding(it,Nt,Qi),Sr=ee.centerPoint.add(hr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Qi);let ea=Qi===1?be:ee.unproject(Je.add(He.mult(Li(Mn))).mult(pa));ee.setLocationAtPoint(ee.renderWorldCopies?ea.wrap():ea,Sr),this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},()=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B)},w),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(w,B){var Q;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let ee=this._onEaseEnd;delete this._onEaseEnd,ee.call(this,B)}return w||(Q=this.handlers)===null||Q===void 0||Q.stop(!1),this}_ease(w,B,Q){Q.animate===!1||Q.duration===0?(w(1),B()):(this._easeStart=u.now(),this._easeOptions=Q,this._onEaseFrame=w,this._onEaseEnd=B,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(w,B){w=a.b3(w,-180,180);let Q=Math.abs(w-B);return Math.abs(w-360-B)180?-360:Q<-180?360:0}queryTerrainElevation(w){return this.terrain?this.terrain.getElevationForLngLatZoom(a.N.convert(w),this.transform.tileZoom)-this.transform.elevation:null}}let Ea={compact:!0,customAttribution:'
MapLibre'};class qa{constructor(w=Ea){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=B=>{!B||B.sourceDataType!=="metadata"&&B.sourceDataType!=="visibility"&&B.dataType!=="style"&&B.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=w}getDefaultPosition(){return"bottom-right"}onAdd(w){return this._map=w,this._compact=this.options.compact,this._container=c.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=c.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=c.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(w,B){let Q=this._map._getUIString(`AttributionControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)}_updateAttributions(){if(!this._map.style)return;let w=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?w=w.concat(this.options.customAttribution.map(ee=>typeof ee!="string"?"":ee)):typeof this.options.customAttribution=="string"&&w.push(this.options.customAttribution)),this._map.style.stylesheet){let ee=this._map.style.stylesheet;this.styleOwner=ee.owner,this.styleId=ee.id}let B=this._map.style.sourceCaches;for(let ee in B){let se=B[ee];if(se.used||se.usedForTerrain){let qe=se.getSource();qe.attribution&&w.indexOf(qe.attribution)<0&&w.push(qe.attribution)}}w=w.filter(ee=>String(ee).trim()),w.sort((ee,se)=>ee.length-se.length),w=w.filter((ee,se)=>{for(let qe=se+1;qe=0)return!1;return!0});let Q=w.join(" | ");Q!==this._attribHTML&&(this._attribHTML=Q,w.length?(this._innerContainer.innerHTML=Q,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Cn{constructor(w={}){this._updateCompact=()=>{let B=this._container.children;if(B.length){let Q=B[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&Q.classList.add("maplibregl-compact"):Q.classList.remove("maplibregl-compact")}},this.options=w}getDefaultPosition(){return"bottom-left"}onAdd(w){this._map=w,this._compact=this.options&&this.options.compact,this._container=c.create("div","maplibregl-ctrl");let B=c.create("a","maplibregl-ctrl-logo");return B.target="_blank",B.rel="noopener nofollow",B.href="https://maplibre.org/",B.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),B.setAttribute("rel","noopener nofollow"),this._container.appendChild(B),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class sn{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(w){let B=++this._id;return this._queue.push({callback:w,id:B,cancelled:!1}),B}remove(w){let B=this._currentlyRunning,Q=B?this._queue.concat(B):this._queue;for(let ee of Q)if(ee.id===w)return void(ee.cancelled=!0)}run(w=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let B=this._currentlyRunning=this._queue;this._queue=[];for(let Q of B)if(!Q.cancelled&&(Q.callback(w),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var Ua=a.Y([{name:"a_pos3d",type:"Int16",components:3}]);class mo extends a.E{constructor(w){super(),this.sourceCache=w,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,w.usedForTerrain=!0,w.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(w,B){this.sourceCache.update(w,B),this._renderableTilesKeys=[];let Q={};for(let ee of w.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:B}))Q[ee.key]=!0,this._renderableTilesKeys.push(ee.key),this._tiles[ee.key]||(ee.posMatrix=new Float64Array(16),a.aP(ee.posMatrix,0,a.X,0,a.X,0,1),this._tiles[ee.key]=new Lt(ee,this.tileSize));for(let ee in this._tiles)Q[ee]||delete this._tiles[ee]}freeRtt(w){for(let B in this._tiles){let Q=this._tiles[B];(!w||Q.tileID.equals(w)||Q.tileID.isChildOf(w)||w.isChildOf(Q.tileID))&&(Q.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(w=>this.getTileByID(w))}getTileByID(w){return this._tiles[w]}getTerrainCoords(w){let B={};for(let Q of this._renderableTilesKeys){let ee=this._tiles[Q].tileID;if(ee.canonical.equals(w.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16),a.aP(se.posMatrix,0,a.X,0,a.X,0,1),B[Q]=se}else if(ee.canonical.isChildOf(w.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16);let qe=ee.canonical.z-w.canonical.z,je=ee.canonical.x-(ee.canonical.x>>qe<>qe<>qe;a.aP(se.posMatrix,0,yt,0,yt,0,1),a.J(se.posMatrix,se.posMatrix,[-je*yt,-it*yt,0]),B[Q]=se}else if(w.canonical.isChildOf(ee.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16);let qe=w.canonical.z-ee.canonical.z,je=w.canonical.x-(w.canonical.x>>qe<>qe<>qe;a.aP(se.posMatrix,0,a.X,0,a.X,0,1),a.J(se.posMatrix,se.posMatrix,[je*yt,it*yt,0]),a.K(se.posMatrix,se.posMatrix,[1/2**qe,1/2**qe,0]),B[Q]=se}}return B}getSourceTile(w,B){let Q=this.sourceCache._source,ee=w.overscaledZ-this.deltaZoom;if(ee>Q.maxzoom&&(ee=Q.maxzoom),ee=Q.minzoom&&(!se||!se.dem);)se=this.sourceCache.getTileByID(w.scaledTo(ee--).key);return se}tilesAfterTime(w=Date.now()){return Object.values(this._tiles).filter(B=>B.timeAdded>=w)}}class Xo{constructor(w,B,Q){this.painter=w,this.sourceCache=new mo(B),this.options=Q,this.exaggeration=typeof Q.exaggeration=="number"?Q.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(w,B,Q,ee=a.X){var se;if(!(B>=0&&B=0&&Qw.canonical.z&&(w.canonical.z>=ee?se=w.canonical.z-ee:a.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let qe=w.canonical.x-(w.canonical.x>>se<>se<>8<<4|se>>8,B[qe+3]=0;let Q=new a.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(B.buffer)),ee=new g(w,Q,w.gl.RGBA,{premultiply:!1});return ee.bind(w.gl.NEAREST,w.gl.CLAMP_TO_EDGE),this._coordsTexture=ee,ee}pointCoordinate(w){this.painter.maybeDrawDepthAndCoords(!0);let B=new Uint8Array(4),Q=this.painter.context,ee=Q.gl,se=Math.round(w.x*this.painter.pixelRatio/devicePixelRatio),qe=Math.round(w.y*this.painter.pixelRatio/devicePixelRatio),je=Math.round(this.painter.height/devicePixelRatio);Q.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),ee.readPixels(se,je-qe-1,1,1,ee.RGBA,ee.UNSIGNED_BYTE,B),Q.bindFramebuffer.set(null);let it=B[0]+(B[2]>>4<<8),yt=B[1]+((15&B[2])<<8),Ot=this.coordsIndex[255-B[3]],Nt=Ot&&this.sourceCache.getTileByID(Ot);if(!Nt)return null;let hr=this._coordsTextureSize,Sr=(1<w.id!==B),this._recentlyUsed.push(w.id)}stampObject(w){w.stamp=++this._stamp}getOrCreateFreeObject(){for(let B of this._recentlyUsed)if(!this._objects[B].inUse)return this._objects[B];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let w=this._createObject(this._objects.length);return this._objects.push(w),w}freeObject(w){w.inUse=!1}freeAllObjects(){for(let w of this._objects)this.freeObject(w)}isFull(){return!(this._objects.length!w.inUse)===!1}}let Qo={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ys{constructor(w,B){this.painter=w,this.terrain=B,this.pool=new Ts(w.context,30,B.sourceCache.tileSize*B.qualityFactor)}destruct(){this.pool.destruct()}getTexture(w){return this.pool.getObjectForId(w.rtt[this._stacks.length-1].id).texture}prepareForRender(w,B){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=w._order.filter(Q=>!w._layers[Q].isHidden(B)),this._coordsDescendingInv={};for(let Q in w.sourceCaches){this._coordsDescendingInv[Q]={};let ee=w.sourceCaches[Q].getVisibleCoordinates();for(let se of ee){let qe=this.terrain.sourceCache.getTerrainCoords(se);for(let je in qe)this._coordsDescendingInv[Q][je]||(this._coordsDescendingInv[Q][je]=[]),this._coordsDescendingInv[Q][je].push(qe[je])}}this._coordsDescendingInvStr={};for(let Q of w._order){let ee=w._layers[Q],se=ee.source;if(Qo[ee.type]&&!this._coordsDescendingInvStr[se]){this._coordsDescendingInvStr[se]={};for(let qe in this._coordsDescendingInv[se])this._coordsDescendingInvStr[se][qe]=this._coordsDescendingInv[se][qe].map(je=>je.key).sort().join()}}for(let Q of this._renderableTiles)for(let ee in this._coordsDescendingInvStr){let se=this._coordsDescendingInvStr[ee][Q.tileID.key];se&&se!==Q.rttCoords[ee]&&(Q.rtt=[])}}renderLayer(w){if(w.isHidden(this.painter.transform.zoom))return!1;let B=w.type,Q=this.painter,ee=this._renderableLayerIds[this._renderableLayerIds.length-1]===w.id;if(Qo[B]&&(this._prevType&&Qo[this._prevType]||this._stacks.push([]),this._prevType=B,this._stacks[this._stacks.length-1].push(w.id),!ee))return!0;if(Qo[this._prevType]||Qo[B]&&ee){this._prevType=B;let se=this._stacks.length-1,qe=this._stacks[se]||[];for(let je of this._renderableTiles){if(this.pool.isFull()&&(tu(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(je),je.rtt[se]){let yt=this.pool.getObjectForId(je.rtt[se].id);if(yt.stamp===je.rtt[se].stamp){this.pool.useObject(yt);continue}}let it=this.pool.getOrCreateFreeObject();this.pool.useObject(it),this.pool.stampObject(it),je.rtt[se]={id:it.id,stamp:it.stamp},Q.context.bindFramebuffer.set(it.fbo.framebuffer),Q.context.clear({color:a.aM.transparent,stencil:0}),Q.currentStencilSource=void 0;for(let yt=0;yt{le.touchstart=le.dragStart,le.touchmoveWindow=le.dragMove,le.touchend=le.dragEnd},ia={showCompass:!0,showZoom:!0,visualizePitch:!1};class Ka{constructor(w,B,Q=!1){this.mousedown=qe=>{this.startMouse(a.e({},qe,{ctrlKey:!0,preventDefault:()=>qe.preventDefault()}),c.mousePos(this.element,qe)),c.addEventListener(window,"mousemove",this.mousemove),c.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=qe=>{this.moveMouse(qe,c.mousePos(this.element,qe))},this.mouseup=qe=>{this.mouseRotate.dragEnd(qe),this.mousePitch&&this.mousePitch.dragEnd(qe),this.offTemp()},this.touchstart=qe=>{qe.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,qe.targetTouches)[0],this.startTouch(qe,this._startPos),c.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.addEventListener(window,"touchend",this.touchend))},this.touchmove=qe=>{qe.targetTouches.length!==1?this.reset():(this._lastPos=c.touchPos(this.element,qe.targetTouches)[0],this.moveTouch(qe,this._lastPos))},this.touchend=qe=>{qe.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let ee=w.dragRotate._mouseRotate.getClickTolerance(),se=w.dragRotate._mousePitch.getClickTolerance();this.element=B,this.mouseRotate=Dl({clickTolerance:ee,enable:!0}),this.touchRotate=(({enable:qe,clickTolerance:je,bearingDegreesPerPixelMoved:it=.8})=>{let yt=new pf;return new ju({clickTolerance:je,move:(Ot,Nt)=>({bearingDelta:(Nt.x-Ot.x)*it}),moveStateManager:yt,enable:qe,assignEvents:Rs})})({clickTolerance:ee,enable:!0}),this.map=w,Q&&(this.mousePitch=Ih({clickTolerance:se,enable:!0}),this.touchPitch=(({enable:qe,clickTolerance:je,pitchDegreesPerPixelMoved:it=-.5})=>{let yt=new pf;return new ju({clickTolerance:je,move:(Ot,Nt)=>({pitchDelta:(Nt.y-Ot.y)*it}),moveStateManager:yt,enable:qe,assignEvents:Rs})})({clickTolerance:se,enable:!0})),c.addEventListener(B,"mousedown",this.mousedown),c.addEventListener(B,"touchstart",this.touchstart,{passive:!1}),c.addEventListener(B,"touchcancel",this.reset)}startMouse(w,B){this.mouseRotate.dragStart(w,B),this.mousePitch&&this.mousePitch.dragStart(w,B),c.disableDrag()}startTouch(w,B){this.touchRotate.dragStart(w,B),this.touchPitch&&this.touchPitch.dragStart(w,B),c.disableDrag()}moveMouse(w,B){let Q=this.map,{bearingDelta:ee}=this.mouseRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.mousePitch){let{pitchDelta:se}=this.mousePitch.dragMove(w,B)||{};se&&Q.setPitch(Q.getPitch()+se)}}moveTouch(w,B){let Q=this.map,{bearingDelta:ee}=this.touchRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.touchPitch){let{pitchDelta:se}=this.touchPitch.dragMove(w,B)||{};se&&Q.setPitch(Q.getPitch()+se)}}off(){let w=this.element;c.removeEventListener(w,"mousedown",this.mousedown),c.removeEventListener(w,"touchstart",this.touchstart,{passive:!1}),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend),c.removeEventListener(w,"touchcancel",this.reset),this.offTemp()}offTemp(){c.enableDrag(),c.removeEventListener(window,"mousemove",this.mousemove),c.removeEventListener(window,"mouseup",this.mouseup),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend)}}let vs;function Ko(le,w,B){let Q=new a.N(le.lng,le.lat);if(le=new a.N(le.lng,le.lat),w){let ee=new a.N(le.lng-360,le.lat),se=new a.N(le.lng+360,le.lat),qe=B.locationPoint(le).distSqr(w);B.locationPoint(ee).distSqr(w)180;){let ee=B.locationPoint(le);if(ee.x>=0&&ee.y>=0&&ee.x<=B.width&&ee.y<=B.height)break;le.lng>B.center.lng?le.lng-=360:le.lng+=360}return le.lng!==Q.lng&&B.locationPoint(le).y>B.height/2-B.getHorizon()?le:Q}let nu={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ru(le,w,B){let Q=le.classList;for(let ee in nu)Q.remove(`maplibregl-${B}-anchor-${ee}`);Q.add(`maplibregl-${B}-anchor-${w}`)}class ac extends a.E{constructor(w){if(super(),this._onKeyPress=B=>{let Q=B.code,ee=B.charCode||B.keyCode;Q!=="Space"&&Q!=="Enter"&&ee!==32&&ee!==13||this.togglePopup()},this._onMapClick=B=>{let Q=B.originalEvent.target,ee=this._element;this._popup&&(Q===ee||ee.contains(Q))&&this.togglePopup()},this._update=B=>{var Q;if(!this._map)return;let ee=this._map.loaded()&&!this._map.isMoving();((B==null?void 0:B.type)==="terrain"||(B==null?void 0:B.type)==="render"&&!ee)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?Ko(this._lngLat,this._flatPos,this._map.transform):(Q=this._lngLat)===null||Q===void 0?void 0:Q.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let se="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?se=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(se=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let qe="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?qe="rotateX(0deg)":this._pitchAlignment==="map"&&(qe=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||B&&B.type!=="moveend"||(this._pos=this._pos.round()),c.setTransform(this._element,`${nu[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${qe} ${se}`),u.frameAsync(new AbortController).then(()=>{this._updateOpacity(B&&B.type==="moveend")}).catch(()=>{})},this._onMove=B=>{if(!this._isDragging){let Q=this._clickTolerance||this._map._clickTolerance;this._isDragging=B.point.dist(this._pointerdownPos)>=Q}this._isDragging&&(this._pos=B.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new a.k("dragstart"))),this.fire(new a.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new a.k("dragend")),this._state="inactive"},this._addDragHandler=B=>{this._element.contains(B.originalEvent.target)&&(B.preventDefault(),this._positionDelta=B.point.sub(this._pos).add(this._offset),this._pointerdownPos=B.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=w&&w.anchor||"center",this._color=w&&w.color||"#3FB1CE",this._scale=w&&w.scale||1,this._draggable=w&&w.draggable||!1,this._clickTolerance=w&&w.clickTolerance||0,this._subpixelPositioning=w&&w.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=w&&w.rotation||0,this._rotationAlignment=w&&w.rotationAlignment||"auto",this._pitchAlignment=w&&w.pitchAlignment&&w.pitchAlignment!=="auto"?w.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(w==null?void 0:w.opacity,w==null?void 0:w.opacityWhenCovered),w&&w.element)this._element=w.element,this._offset=a.P.convert(w&&w.offset||[0,0]);else{this._defaultMarker=!0,this._element=c.create("div");let B=c.createNS("http://www.w3.org/2000/svg","svg"),Q=41,ee=27;B.setAttributeNS(null,"display","block"),B.setAttributeNS(null,"height",`${Q}px`),B.setAttributeNS(null,"width",`${ee}px`),B.setAttributeNS(null,"viewBox",`0 0 ${ee} ${Q}`);let se=c.createNS("http://www.w3.org/2000/svg","g");se.setAttributeNS(null,"stroke","none"),se.setAttributeNS(null,"stroke-width","1"),se.setAttributeNS(null,"fill","none"),se.setAttributeNS(null,"fill-rule","evenodd");let qe=c.createNS("http://www.w3.org/2000/svg","g");qe.setAttributeNS(null,"fill-rule","nonzero");let je=c.createNS("http://www.w3.org/2000/svg","g");je.setAttributeNS(null,"transform","translate(3.0, 29.0)"),je.setAttributeNS(null,"fill","#000000");let it=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let Oe of it){let Je=c.createNS("http://www.w3.org/2000/svg","ellipse");Je.setAttributeNS(null,"opacity","0.04"),Je.setAttributeNS(null,"cx","10.5"),Je.setAttributeNS(null,"cy","5.80029008"),Je.setAttributeNS(null,"rx",Oe.rx),Je.setAttributeNS(null,"ry",Oe.ry),je.appendChild(Je)}let yt=c.createNS("http://www.w3.org/2000/svg","g");yt.setAttributeNS(null,"fill",this._color);let Ot=c.createNS("http://www.w3.org/2000/svg","path");Ot.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),yt.appendChild(Ot);let Nt=c.createNS("http://www.w3.org/2000/svg","g");Nt.setAttributeNS(null,"opacity","0.25"),Nt.setAttributeNS(null,"fill","#000000");let hr=c.createNS("http://www.w3.org/2000/svg","path");hr.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),Nt.appendChild(hr);let Sr=c.createNS("http://www.w3.org/2000/svg","g");Sr.setAttributeNS(null,"transform","translate(6.0, 7.0)"),Sr.setAttributeNS(null,"fill","#FFFFFF");let he=c.createNS("http://www.w3.org/2000/svg","g");he.setAttributeNS(null,"transform","translate(8.0, 8.0)");let be=c.createNS("http://www.w3.org/2000/svg","circle");be.setAttributeNS(null,"fill","#000000"),be.setAttributeNS(null,"opacity","0.25"),be.setAttributeNS(null,"cx","5.5"),be.setAttributeNS(null,"cy","5.5"),be.setAttributeNS(null,"r","5.4999962");let Pe=c.createNS("http://www.w3.org/2000/svg","circle");Pe.setAttributeNS(null,"fill","#FFFFFF"),Pe.setAttributeNS(null,"cx","5.5"),Pe.setAttributeNS(null,"cy","5.5"),Pe.setAttributeNS(null,"r","5.4999962"),he.appendChild(be),he.appendChild(Pe),qe.appendChild(je),qe.appendChild(yt),qe.appendChild(Nt),qe.appendChild(Sr),qe.appendChild(he),B.appendChild(qe),B.setAttributeNS(null,"height",Q*this._scale+"px"),B.setAttributeNS(null,"width",ee*this._scale+"px"),this._element.appendChild(B),this._offset=a.P.convert(w&&w.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",B=>{B.preventDefault()}),this._element.addEventListener("mousedown",B=>{B.preventDefault()}),Ru(this._element,this._anchor,"marker"),w&&w.className)for(let B of w.className.split(" "))this._element.classList.add(B);this._popup=null}addTo(w){return this.remove(),this._map=w,this._element.setAttribute("aria-label",w._getUIString("Marker.Title")),w.getCanvasContainer().appendChild(this._element),w.on("move",this._update),w.on("moveend",this._update),w.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(w){return this._lngLat=a.N.convert(w),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(w){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),w){if(!("offset"in w.options)){let ee=Math.abs(13.5)/Math.SQRT2;w.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[ee,-1*(38.1-13.5+ee)],"bottom-right":[-ee,-1*(38.1-13.5+ee)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=w,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(w){return this._subpixelPositioning=w,this}getPopup(){return this._popup}togglePopup(){let w=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:w?(w.isOpen()?w.remove():(w.setLngLat(this._lngLat),w.addTo(this._map)),this):this}_updateOpacity(w=!1){var B,Q;if(!(!((B=this._map)===null||B===void 0)&&B.terrain))return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(w)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}let ee=this._map,se=ee.terrain.depthAtPoint(this._pos),qe=ee.terrain.getElevationForLngLatZoom(this._lngLat,ee.transform.tileZoom);if(ee.transform.lngLatToCameraDepth(this._lngLat,qe)-se<.006)return void(this._element.style.opacity=this._opacity);let je=-this._offset.y/ee.transform._pixelPerMeter,it=Math.sin(ee.getPitch()*Math.PI/180)*je,yt=ee.terrain.depthAtPoint(new a.P(this._pos.x,this._pos.y-this._offset.y)),Ot=ee.transform.lngLatToCameraDepth(this._lngLat,qe+it)-yt>.006;!((Q=this._popup)===null||Q===void 0)&&Q.isOpen()&&Ot&&this._popup.remove(),this._element.style.opacity=Ot?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(w){return this._offset=a.P.convert(w),this._update(),this}addClassName(w){this._element.classList.add(w)}removeClassName(w){this._element.classList.remove(w)}toggleClassName(w){return this._element.classList.toggle(w)}setDraggable(w){return this._draggable=!!w,this._map&&(w?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(w){return this._rotation=w||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(w){return this._rotationAlignment=w||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(w){return this._pitchAlignment=w&&w!=="auto"?w:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(w,B){return w===void 0&&B===void 0&&(this._opacity="1",this._opacityWhenCovered="0.2"),w!==void 0&&(this._opacity=w),B!==void 0&&(this._opacityWhenCovered=B),this._map&&this._updateOpacity(!0),this}}let mf={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},bu=0,Kc=!1,Du={maxWidth:100,unit:"metric"};function Dc(le,w,B){let Q=B&&B.maxWidth||100,ee=le._container.clientHeight/2,se=le.unproject([0,ee]),qe=le.unproject([Q,ee]),je=se.distanceTo(qe);if(B&&B.unit==="imperial"){let it=3.2808*je;it>5280?Da(w,Q,it/5280,le._getUIString("ScaleControl.Miles")):Da(w,Q,it,le._getUIString("ScaleControl.Feet"))}else B&&B.unit==="nautical"?Da(w,Q,je/1852,le._getUIString("ScaleControl.NauticalMiles")):je>=1e3?Da(w,Q,je/1e3,le._getUIString("ScaleControl.Kilometers")):Da(w,Q,je,le._getUIString("ScaleControl.Meters"))}function Da(le,w,B,Q){let ee=function(se){let qe=Math.pow(10,`${Math.floor(se)}`.length-1),je=se/qe;return je=je>=10?10:je>=5?5:je>=3?3:je>=2?2:je>=1?1:function(it){let yt=Math.pow(10,Math.ceil(-Math.log(it)/Math.LN10));return Math.round(it*yt)/yt}(je),qe*je}(B);le.style.width=w*(ee/B)+"px",le.innerHTML=`${ee} ${Q}`}let eo={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},Jc=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function yc(le){if(le){if(typeof le=="number"){let w=Math.round(Math.abs(le)/Math.SQRT2);return{center:new a.P(0,0),top:new a.P(0,le),"top-left":new a.P(w,w),"top-right":new a.P(-w,w),bottom:new a.P(0,-le),"bottom-left":new a.P(w,-w),"bottom-right":new a.P(-w,-w),left:new a.P(le,0),right:new a.P(-le,0)}}if(le instanceof a.P||Array.isArray(le)){let w=a.P.convert(le);return{center:w,top:w,"top-left":w,"top-right":w,bottom:w,"bottom-left":w,"bottom-right":w,left:w,right:w}}return{center:a.P.convert(le.center||[0,0]),top:a.P.convert(le.top||[0,0]),"top-left":a.P.convert(le["top-left"]||[0,0]),"top-right":a.P.convert(le["top-right"]||[0,0]),bottom:a.P.convert(le.bottom||[0,0]),"bottom-left":a.P.convert(le["bottom-left"]||[0,0]),"bottom-right":a.P.convert(le["bottom-right"]||[0,0]),left:a.P.convert(le.left||[0,0]),right:a.P.convert(le.right||[0,0])}}return yc(new a.P(0,0))}let _c=o;i.AJAXError=a.bh,i.Evented=a.E,i.LngLat=a.N,i.MercatorCoordinate=a.Z,i.Point=a.P,i.addProtocol=a.bi,i.config=a.a,i.removeProtocol=a.bj,i.AttributionControl=qa,i.BoxZoomHandler=xu,i.CanvasSource=Ct,i.CooperativeGesturesHandler=qi,i.DoubleClickZoomHandler=fi,i.DragPanHandler=Xi,i.DragRotateHandler=hn,i.EdgeInsets=ic,i.FullscreenControl=class extends a.E{constructor(le={}){super(),this._onFullscreenChange=()=>{var w;let B=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;!((w=B==null?void 0:B.shadowRoot)===null||w===void 0)&&w.fullscreenElement;)B=B.shadowRoot.fullscreenElement;B===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,le&&le.container&&(le.container instanceof HTMLElement?this._container=le.container:a.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(le){return this._map=le,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let le=this._fullscreenButton=c.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);c.create("span","maplibregl-ctrl-icon",le).setAttribute("aria-hidden","true"),le.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let le=this._getTitle();this._fullscreenButton.setAttribute("aria-label",le),this._fullscreenButton.title=le}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new a.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new a.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},i.GeoJSONSource=rt,i.GeolocateControl=class extends a.E{constructor(le){super(),this._onSuccess=w=>{if(this._map){if(this._isOutOfMapMaxBounds(w))return this._setErrorState(),this.fire(new a.k("outofmaxbounds",w)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=w,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(w),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(w),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new a.k("geolocate",w)),this._finish()}},this._updateCamera=w=>{let B=new a.N(w.coords.longitude,w.coords.latitude),Q=w.coords.accuracy,ee=this._map.getBearing(),se=a.e({bearing:ee},this.options.fitBoundsOptions),qe=ce.fromLngLat(B,Q);this._map.fitBounds(qe,se,{geolocateSource:!0})},this._updateMarker=w=>{if(w){let B=new a.N(w.coords.longitude,w.coords.latitude);this._accuracyCircleMarker.setLngLat(B).addTo(this._map),this._userLocationDotMarker.setLngLat(B).addTo(this._map),this._accuracy=w.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=w=>{if(this._map){if(this.options.trackUserLocation)if(w.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(w.code===3&&Kc)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new a.k("error",w)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",w=>w.preventDefault()),this._geolocateButton=c.create("button","maplibregl-ctrl-geolocate",this._container),c.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=w=>{if(this._map){if(w===!1){a.w("Geolocation support is not available so the GeolocateControl will be disabled.");let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}else{let B=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=c.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new ac({element:this._dotElement}),this._circleElement=c.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new ac({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",B=>{B.geolocateSource||this._watchState!=="ACTIVE_LOCK"||B.originalEvent&&B.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new a.k("trackuserlocationend")),this.fire(new a.k("userlocationlostfocus")))})}},this.options=a.e({},mf,le)}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return a._(this,arguments,void 0,function*(w=!1){if(vs!==void 0&&!w)return vs;if(window.navigator.permissions===void 0)return vs=!!window.navigator.geolocation,vs;try{vs=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch(B){vs=!!window.navigator.geolocation}return vs})}().then(w=>this._finishSetupUI(w)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,bu=0,Kc=!1}_isOutOfMapMaxBounds(le){let w=this._map.getMaxBounds(),B=le.coords;return w&&(B.longitudew.getEast()||B.latitudew.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let le=this._map.getBounds(),w=le.getSouthEast(),B=le.getNorthEast(),Q=w.distanceTo(B),ee=Math.ceil(this._accuracy/(Q/this._map._container.clientHeight)*2);this._circleElement.style.width=`${ee}px`,this._circleElement.style.height=`${ee}px`}trigger(){if(!this._setup)return a.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new a.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":bu--,Kc=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new a.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new a.k("trackuserlocationstart")),this.fire(new a.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let le;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),bu++,bu>1?(le={maximumAge:6e5,timeout:0},Kc=!0):(le=this.options.positionOptions,Kc=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,le)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},i.Hash=gd,i.ImageSource=Rt,i.KeyboardHandler=Bt,i.LngLatBounds=ce,i.LogoControl=Cn,i.Map=class extends Ta{constructor(le){a.bf.mark(a.bg.create);let w=Object.assign(Object.assign({},Gs),le);if(w.minZoom!=null&&w.maxZoom!=null&&w.minZoom>w.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(w.minPitch!=null&&w.maxPitch!=null&&w.minPitch>w.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(w.minPitch!=null&&w.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(w.maxPitch!=null&&w.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new Qs(w.minZoom,w.maxZoom,w.minPitch,w.maxPitch,w.renderWorldCopies),{bearingSnap:w.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new sn,this._controls=[],this._mapId=a.a4(),this._contextLost=B=>{B.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new a.k("webglcontextlost",{originalEvent:B}))},this._contextRestored=B=>{this._setupPainter(),this.resize(),this._update(),this.fire(new a.k("webglcontextrestored",{originalEvent:B}))},this._onMapScroll=B=>{if(B.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=w.interactive,this._maxTileCacheSize=w.maxTileCacheSize,this._maxTileCacheZoomLevels=w.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=w.failIfMajorPerformanceCaveat===!0,this._preserveDrawingBuffer=w.preserveDrawingBuffer===!0,this._antialias=w.antialias===!0,this._trackResize=w.trackResize===!0,this._bearingSnap=w.bearingSnap,this._refreshExpiredTiles=w.refreshExpiredTiles===!0,this._fadeDuration=w.fadeDuration,this._crossSourceCollisions=w.crossSourceCollisions===!0,this._collectResourceTiming=w.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},Bo),w.locale),this._clickTolerance=w.clickTolerance,this._overridePixelRatio=w.pixelRatio,this._maxCanvasSize=w.maxCanvasSize,this.transformCameraUpdate=w.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=w.cancelPendingTileRequestsWhileZooming===!0,this._imageQueueHandle=p.addThrottleControl(()=>this.isMoving()),this._requestManager=new E(w.transformRequest),typeof w.container=="string"){if(this._container=document.getElementById(w.container),!this._container)throw new Error(`Container '${w.container}' not found.`)}else{if(!(w.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=w.container}if(w.maxBounds&&this.setMaxBounds(w.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)).on("moveend",()=>this._update(!1)).on("zoom",()=>this._update(!0)).on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}).once("idle",()=>{this._idleTriggered=!0}),typeof window!="undefined"){addEventListener("online",this._onWindowOnline,!1);let B=!1,Q=Qh(ee=>{this._trackResize&&!this._removed&&(this.resize(ee),this.redraw())},50);this._resizeObserver=new ResizeObserver(ee=>{B?Q(ee):B=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Ma(this,w),this._hash=w.hash&&new gd(typeof w.hash=="string"&&w.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:w.center,zoom:w.zoom,bearing:w.bearing,pitch:w.pitch}),w.bounds&&(this.resize(),this.fitBounds(w.bounds,a.e({},w.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=w.localIdeographFontFamily,this._validateStyle=w.validateStyle,w.style&&this.setStyle(w.style,{localIdeographFontFamily:w.localIdeographFontFamily}),w.attributionControl&&this.addControl(new qa(typeof w.attributionControl=="boolean"?void 0:w.attributionControl)),w.maplibreLogo&&this.addControl(new Cn,w.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",B=>{this._update(B.dataType==="style"),this.fire(new a.k(`${B.dataType}data`,B))}),this.on("dataloading",B=>{this.fire(new a.k(`${B.dataType}dataloading`,B))}),this.on("dataabort",B=>{this.fire(new a.k("sourcedataabort",B))})}_getMapId(){return this._mapId}addControl(le,w){if(w===void 0&&(w=le.getDefaultPosition?le.getDefaultPosition():"top-right"),!le||!le.onAdd)return this.fire(new a.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let B=le.onAdd(this);this._controls.push(le);let Q=this._controlPositions[w];return w.indexOf("bottom")!==-1?Q.insertBefore(B,Q.firstChild):Q.appendChild(B),this}removeControl(le){if(!le||!le.onRemove)return this.fire(new a.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let w=this._controls.indexOf(le);return w>-1&&this._controls.splice(w,1),le.onRemove(this),this}hasControl(le){return this._controls.indexOf(le)>-1}calculateCameraOptionsFromTo(le,w,B,Q){return Q==null&&this.terrain&&(Q=this.terrain.getElevationForLngLatZoom(B,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(le,w,B,Q)}resize(le){var w;let B=this._containerDimensions(),Q=B[0],ee=B[1],se=this._getClampedPixelRatio(Q,ee);if(this._resizeCanvas(Q,ee,se),this.painter.resize(Q,ee,se),this.painter.overLimit()){let je=this.painter.context.gl;this._maxCanvasSize=[je.drawingBufferWidth,je.drawingBufferHeight];let it=this._getClampedPixelRatio(Q,ee);this._resizeCanvas(Q,ee,it),this.painter.resize(Q,ee,it)}this.transform.resize(Q,ee),(w=this._requestedCameraState)===null||w===void 0||w.resize(Q,ee);let qe=!this._moving;return qe&&(this.stop(),this.fire(new a.k("movestart",le)).fire(new a.k("move",le))),this.fire(new a.k("resize",le)),qe&&this.fire(new a.k("moveend",le)),this}_getClampedPixelRatio(le,w){let{0:B,1:Q}=this._maxCanvasSize,ee=this.getPixelRatio(),se=le*ee,qe=w*ee;return Math.min(se>B?B/se:1,qe>Q?Q/qe:1)*ee}getPixelRatio(){var le;return(le=this._overridePixelRatio)!==null&&le!==void 0?le:devicePixelRatio}setPixelRatio(le){this._overridePixelRatio=le,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(le){return this.transform.setMaxBounds(ce.convert(le)),this._update()}setMinZoom(le){if((le=le==null?-2:le)>=-2&&le<=this.transform.maxZoom)return this.transform.minZoom=le,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=le,this._update(),this.getZoom()>le&&this.setZoom(le),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(le){if((le=le==null?0:le)<0)throw new Error("minPitch must be greater than or equal to 0");if(le>=0&&le<=this.transform.maxPitch)return this.transform.minPitch=le,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(le>=this.transform.minPitch)return this.transform.maxPitch=le,this._update(),this.getPitch()>le&&this.setPitch(le),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(le){return this.transform.renderWorldCopies=le,this._update()}project(le){return this.transform.locationPoint(a.N.convert(le),this.style&&this.terrain)}unproject(le){return this.transform.pointLocation(a.P.convert(le),this.terrain)}isMoving(){var le;return this._moving||((le=this.handlers)===null||le===void 0?void 0:le.isMoving())}isZooming(){var le;return this._zooming||((le=this.handlers)===null||le===void 0?void 0:le.isZooming())}isRotating(){var le;return this._rotating||((le=this.handlers)===null||le===void 0?void 0:le.isRotating())}_createDelegatedListener(le,w,B){if(le==="mouseenter"||le==="mouseover"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:se=>{let qe=w.filter(it=>this.getLayer(it)),je=qe.length!==0?this.queryRenderedFeatures(se.point,{layers:qe}):[];je.length?Q||(Q=!0,B.call(this,new ru(le,this,se.originalEvent,{features:je}))):Q=!1},mouseout:()=>{Q=!1}}}}if(le==="mouseleave"||le==="mouseout"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:qe=>{let je=w.filter(it=>this.getLayer(it));(je.length!==0?this.queryRenderedFeatures(qe.point,{layers:je}):[]).length?Q=!0:Q&&(Q=!1,B.call(this,new ru(le,this,qe.originalEvent)))},mouseout:qe=>{Q&&(Q=!1,B.call(this,new ru(le,this,qe.originalEvent)))}}}}{let Q=ee=>{let se=w.filter(je=>this.getLayer(je)),qe=se.length!==0?this.queryRenderedFeatures(ee.point,{layers:se}):[];qe.length&&(ee.features=qe,B.call(this,ee),delete ee.features)};return{layers:w,listener:B,delegates:{[le]:Q}}}}_saveDelegatedListener(le,w){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[le]=this._delegatedListeners[le]||[],this._delegatedListeners[le].push(w)}_removeDelegatedListener(le,w,B){if(!this._delegatedListeners||!this._delegatedListeners[le])return;let Q=this._delegatedListeners[le];for(let ee=0;eew.includes(qe))){for(let qe in se.delegates)this.off(qe,se.delegates[qe]);return void Q.splice(ee,1)}}}on(le,w,B){if(B===void 0)return super.on(le,w);let Q=this._createDelegatedListener(le,typeof w=="string"?[w]:w,B);this._saveDelegatedListener(le,Q);for(let ee in Q.delegates)this.on(ee,Q.delegates[ee]);return this}once(le,w,B){if(B===void 0)return super.once(le,w);let Q=typeof w=="string"?[w]:w,ee=this._createDelegatedListener(le,Q,B);for(let se in ee.delegates){let qe=ee.delegates[se];ee.delegates[se]=(...je)=>{this._removeDelegatedListener(le,Q,B),qe(...je)}}this._saveDelegatedListener(le,ee);for(let se in ee.delegates)this.once(se,ee.delegates[se]);return this}off(le,w,B){return B===void 0?super.off(le,w):(this._removeDelegatedListener(le,typeof w=="string"?[w]:w,B),this)}queryRenderedFeatures(le,w){if(!this.style)return[];let B,Q=le instanceof a.P||Array.isArray(le),ee=Q?le:[[0,0],[this.transform.width,this.transform.height]];if(w=w||(Q?{}:le)||{},ee instanceof a.P||typeof ee[0]=="number")B=[a.P.convert(ee)];else{let se=a.P.convert(ee[0]),qe=a.P.convert(ee[1]);B=[se,new a.P(qe.x,se.y),qe,new a.P(se.x,qe.y),se]}return this.style.queryRenderedFeatures(B,w,this.transform)}querySourceFeatures(le,w){return this.style.querySourceFeatures(le,w)}setStyle(le,w){return(w=a.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},w)).diff!==!1&&w.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&le?(this._diffStyle(le,w),this):(this._localIdeographFontFamily=w.localIdeographFontFamily,this._updateStyle(le,w))}setTransformRequest(le){return this._requestManager.setTransformRequest(le),this}_getUIString(le){let w=this._locale[le];if(w==null)throw new Error(`Missing UI string '${le}'`);return w}_updateStyle(le,w){if(w.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(le,w));let B=this.style&&w.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!le)),le?(this.style=new Ha(this,w||{}),this.style.setEventedParent(this,{style:this.style}),typeof le=="string"?this.style.loadURL(le,w,B):this.style.loadJSON(le,w,B),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Ha(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(le,w){if(typeof le=="string"){let B=this._requestManager.transformRequest(le,"Style");a.h(B,new AbortController).then(Q=>{this._updateDiff(Q.data,w)}).catch(Q=>{Q&&this.fire(new a.j(Q))})}else typeof le=="object"&&this._updateDiff(le,w)}_updateDiff(le,w){try{this.style.setState(le,w)&&this._update(!0)}catch(B){a.w(`Unable to perform style diff: ${B.message||B.error||B}. Rebuilding the style from scratch.`),this._updateStyle(le,w)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():a.w("There is no style added to the map.")}addSource(le,w){return this._lazyInitEmptyStyle(),this.style.addSource(le,w),this._update(!0)}isSourceLoaded(le){let w=this.style&&this.style.sourceCaches[le];if(w!==void 0)return w.loaded();this.fire(new a.j(new Error(`There is no source with ID '${le}'`)))}setTerrain(le){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),le){let w=this.style.sourceCaches[le.source];if(!w)throw new Error(`cannot load terrain, because there exists no source with ID: ${le.source}`);this.terrain===null&&w.reload();for(let B in this.style._layers){let Q=this.style._layers[B];Q.type==="hillshade"&&Q.source===le.source&&a.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Xo(this.painter,w,le),this.painter.renderToTexture=new ys(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=B=>{B.dataType==="style"?this.terrain.sourceCache.freeRtt():B.dataType==="source"&&B.tile&&(B.sourceId!==le.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(B.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new a.k("terrain",{terrain:le})),this}getTerrain(){var le,w;return(w=(le=this.terrain)===null||le===void 0?void 0:le.options)!==null&&w!==void 0?w:null}areTilesLoaded(){let le=this.style&&this.style.sourceCaches;for(let w in le){let B=le[w]._tiles;for(let Q in B){let ee=B[Q];if(ee.state!=="loaded"&&ee.state!=="errored")return!1}}return!0}removeSource(le){return this.style.removeSource(le),this._update(!0)}getSource(le){return this.style.getSource(le)}addImage(le,w,B={}){let{pixelRatio:Q=1,sdf:ee=!1,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt}=B;if(this._lazyInitEmptyStyle(),!(w instanceof HTMLImageElement||a.b(w))){if(w.width===void 0||w.height===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{let{width:Ot,height:Nt,data:hr}=w,Sr=w;return this.style.addImage(le,{data:new a.R({width:Ot,height:Nt},new Uint8Array(hr)),pixelRatio:Q,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt,sdf:ee,version:0,userImage:Sr}),Sr.onAdd&&Sr.onAdd(this,le),this}}{let{width:Ot,height:Nt,data:hr}=u.getImageData(w);this.style.addImage(le,{data:new a.R({width:Ot,height:Nt},hr),pixelRatio:Q,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt,sdf:ee,version:0})}}updateImage(le,w){let B=this.style.getImage(le);if(!B)return this.fire(new a.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let Q=w instanceof HTMLImageElement||a.b(w)?u.getImageData(w):w,{width:ee,height:se,data:qe}=Q;if(ee===void 0||se===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(ee!==B.data.width||se!==B.data.height)return this.fire(new a.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let je=!(w instanceof HTMLImageElement||a.b(w));return B.data.replace(qe,je),this.style.updateImage(le,B),this}getImage(le){return this.style.getImage(le)}hasImage(le){return le?!!this.style.getImage(le):(this.fire(new a.j(new Error("Missing required image id"))),!1)}removeImage(le){this.style.removeImage(le)}loadImage(le){return p.getImage(this._requestManager.transformRequest(le,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(le,w){return this._lazyInitEmptyStyle(),this.style.addLayer(le,w),this._update(!0)}moveLayer(le,w){return this.style.moveLayer(le,w),this._update(!0)}removeLayer(le){return this.style.removeLayer(le),this._update(!0)}getLayer(le){return this.style.getLayer(le)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(le,w,B){return this.style.setLayerZoomRange(le,w,B),this._update(!0)}setFilter(le,w,B={}){return this.style.setFilter(le,w,B),this._update(!0)}getFilter(le){return this.style.getFilter(le)}setPaintProperty(le,w,B,Q={}){return this.style.setPaintProperty(le,w,B,Q),this._update(!0)}getPaintProperty(le,w){return this.style.getPaintProperty(le,w)}setLayoutProperty(le,w,B,Q={}){return this.style.setLayoutProperty(le,w,B,Q),this._update(!0)}getLayoutProperty(le,w){return this.style.getLayoutProperty(le,w)}setGlyphs(le,w={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(le,w),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(le,w,B={}){return this._lazyInitEmptyStyle(),this.style.addSprite(le,w,B,Q=>{Q||this._update(!0)}),this}removeSprite(le){return this._lazyInitEmptyStyle(),this.style.removeSprite(le),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(le,w={}){return this._lazyInitEmptyStyle(),this.style.setSprite(le,w,B=>{B||this._update(!0)}),this}setLight(le,w={}){return this._lazyInitEmptyStyle(),this.style.setLight(le,w),this._update(!0)}getLight(){return this.style.getLight()}setSky(le){return this._lazyInitEmptyStyle(),this.style.setSky(le),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(le,w){return this.style.setFeatureState(le,w),this._update()}removeFeatureState(le,w){return this.style.removeFeatureState(le,w),this._update()}getFeatureState(le){return this.style.getFeatureState(le)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let le=0,w=0;return this._container&&(le=this._container.clientWidth||400,w=this._container.clientHeight||300),[le,w]}_setupContainer(){let le=this._container;le.classList.add("maplibregl-map");let w=this._canvasContainer=c.create("div","maplibregl-canvas-container",le);this._interactive&&w.classList.add("maplibregl-interactive"),this._canvas=c.create("canvas","maplibregl-canvas",w),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let B=this._containerDimensions(),Q=this._getClampedPixelRatio(B[0],B[1]);this._resizeCanvas(B[0],B[1],Q);let ee=this._controlContainer=c.create("div","maplibregl-control-container",le),se=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(qe=>{se[qe]=c.create("div",`maplibregl-ctrl-${qe} `,ee)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(le,w,B){this._canvas.width=Math.floor(B*le),this._canvas.height=Math.floor(B*w),this._canvas.style.width=`${le}px`,this._canvas.style.height=`${w}px`}_setupPainter(){let le={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},w=null;this._canvas.addEventListener("webglcontextcreationerror",Q=>{w={requestedAttributes:le},Q&&(w.statusMessage=Q.statusMessage,w.type=Q.type)},{once:!0});let B=this._canvas.getContext("webgl2",le)||this._canvas.getContext("webgl",le);if(!B){let Q="Failed to initialize WebGL";throw w?(w.message=Q,new Error(JSON.stringify(w))):new Error(Q)}this.painter=new Lc(B,this.transform),f.testSupport(B)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(le){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||le,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(le){return this._update(),this._renderTaskQueue.add(le)}_cancelRenderFrame(le){this._renderTaskQueue.remove(le)}_render(le){let w=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(le),this._removed)return;let B=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let ee=this.transform.zoom,se=u.now();this.style.zoomHistory.update(ee,se);let qe=new a.z(ee,{now:se,fadeDuration:w,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),je=qe.crossFadingFactor();je===1&&je===this._crossFadingFactor||(B=!0,this._crossFadingFactor=je),this.style.update(qe)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,w,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:w,showPadding:this.showPadding}),this.fire(new a.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,a.bf.mark(a.bg.load),this.fire(new a.k("load"))),this.style&&(this.style.hasTransitions()||B)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let Q=this._sourcesDirty||this._styleDirty||this._placementDirty;return Q||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new a.k("idle")),!this._loaded||this._fullyLoaded||Q||(this._fullyLoaded=!0,a.bf.mark(a.bg.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var le;this._hash&&this._hash.remove();for(let B of this._controls)B.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window!="undefined"&&removeEventListener("online",this._onWindowOnline,!1),p.removeThrottleControl(this._imageQueueHandle),(le=this._resizeObserver)===null||le===void 0||le.disconnect();let w=this.painter.context.gl.getExtension("WEBGL_lose_context");w!=null&&w.loseContext&&w.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),a.bf.clearMetrics(),this._removed=!0,this.fire(new a.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(le=>{a.bf.frame(le),this._frameRequest=null,this._render(le)}).catch(()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(le){this._showTileBoundaries!==le&&(this._showTileBoundaries=le,this._update())}get showPadding(){return!!this._showPadding}set showPadding(le){this._showPadding!==le&&(this._showPadding=le,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(le){this._showCollisionBoxes!==le&&(this._showCollisionBoxes=le,le?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(le){this._showOverdrawInspector!==le&&(this._showOverdrawInspector=le,this._update())}get repaint(){return!!this._repaint}set repaint(le){this._repaint!==le&&(this._repaint=le,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(le){this._vertices=le,this._update()}get version(){return yl}getCameraTargetElevation(){return this.transform.elevation}},i.MapMouseEvent=ru,i.MapTouchEvent=vf,i.MapWheelEvent=md,i.Marker=ac,i.NavigationControl=class{constructor(le){this._updateZoomButtons=()=>{let w=this._map.getZoom(),B=w===this._map.getMaxZoom(),Q=w===this._map.getMinZoom();this._zoomInButton.disabled=B,this._zoomOutButton.disabled=Q,this._zoomInButton.setAttribute("aria-disabled",B.toString()),this._zoomOutButton.setAttribute("aria-disabled",Q.toString())},this._rotateCompassArrow=()=>{let w=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=w},this._setButtonTitle=(w,B)=>{let Q=this._map._getUIString(`NavigationControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)},this.options=a.e({},ia,le),this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",w=>w.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",w=>this._map.zoomIn({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",w=>this._map.zoomOut({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",w=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:w}):this._map.resetNorth({},{originalEvent:w})}),this._compassIcon=c.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(le){return this._map=le,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Ka(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(le,w){let B=c.create("button",le,this._container);return B.type="button",B.addEventListener("click",w),B}},i.Popup=class extends a.E{constructor(le){super(),this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new a.k("close"))),this),this._onMouseUp=w=>{this._update(w.point)},this._onMouseMove=w=>{this._update(w.point)},this._onDrag=w=>{this._update(w.point)},this._update=w=>{var B;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create("div","maplibregl-popup",this._map.getContainer()),this._tip=c.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let je of this.options.className.split(" "))this._container.classList.add(je);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?Ko(this._lngLat,this._flatPos,this._map.transform):(B=this._lngLat)===null||B===void 0?void 0:B.wrap(),this._trackPointer&&!w)return;let Q=this._flatPos=this._pos=this._trackPointer&&w?w:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&w?w:this._map.transform.locationPoint(this._lngLat));let ee=this.options.anchor,se=yc(this.options.offset);if(!ee){let je=this._container.offsetWidth,it=this._container.offsetHeight,yt;yt=Q.y+se.bottom.ythis._map.transform.height-it?["bottom"]:[],Q.xthis._map.transform.width-je/2&&yt.push("right"),ee=yt.length===0?"bottom":yt.join("-")}let qe=Q.add(se[ee]);this.options.subpixelPositioning||(qe=qe.round()),c.setTransform(this._container,`${nu[ee]} translate(${qe.x}px,${qe.y}px)`),Ru(this._container,ee,"popup")},this._onClose=()=>{this.remove()},this.options=a.e(Object.create(eo),le)}addTo(le){return this._map&&this.remove(),this._map=le,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new a.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(le){return this._lngLat=a.N.convert(le),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(le){return this.setDOMContent(document.createTextNode(le))}setHTML(le){let w=document.createDocumentFragment(),B=document.createElement("body"),Q;for(B.innerHTML=le;Q=B.firstChild,Q;)w.appendChild(Q);return this.setDOMContent(w)}getMaxWidth(){var le;return(le=this._container)===null||le===void 0?void 0:le.style.maxWidth}setMaxWidth(le){return this.options.maxWidth=le,this._update(),this}setDOMContent(le){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(le),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(le){return this._container&&this._container.classList.add(le),this}removeClassName(le){return this._container&&this._container.classList.remove(le),this}setOffset(le){return this.options.offset=le,this._update(),this}toggleClassName(le){if(this._container)return this._container.classList.toggle(le)}setSubpixelPositioning(le){this.options.subpixelPositioning=le}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let le=this._container.querySelector(Jc);le&&le.focus()}},i.RasterDEMTileSource=qt,i.RasterTileSource=ct,i.ScaleControl=class{constructor(le){this._onMove=()=>{Dc(this._map,this._container,this.options)},this.setUnit=w=>{this.options.unit=w,Dc(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},Du),le)}getDefaultPosition(){return"bottom-left"}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-scale",le.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},i.ScrollZoomHandler=Ur,i.Style=Ha,i.TerrainControl=class{constructor(le){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=le}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=c.create("button","maplibregl-ctrl-terrain",this._container),c.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},i.TwoFingersTouchPitchHandler=gf,i.TwoFingersTouchRotateHandler=Yc,i.TwoFingersTouchZoomHandler=iu,i.TwoFingersTouchZoomRotateHandler=Ti,i.VectorTileSource=nt,i.VideoSource=kt,i.addSourceType=(le,w)=>a._(void 0,void 0,void 0,function*(){if(xr(le))throw new Error(`A source type called "${le}" already exists.`);((B,Q)=>{Yt[B]=Q})(le,w)}),i.clearPrewarmedResources=function(){let le=ge;le&&(le.isPreloaded()&&le.numActive()===1?(le.release(_e),ge=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},i.getMaxParallelImageRequests=function(){return a.a.MAX_PARALLEL_IMAGE_REQUESTS},i.getRTLTextPluginStatus=function(){return bt().getRTLTextPluginStatus()},i.getVersion=function(){return _c},i.getWorkerCount=function(){return Me.workerCount},i.getWorkerUrl=function(){return a.a.WORKER_URL},i.importScriptInWorkers=function(le){return Ae().broadcast("IS",le)},i.prewarm=function(){Te().acquire(_e)},i.setMaxParallelImageRequests=function(le){a.a.MAX_PARALLEL_IMAGE_REQUESTS=le},i.setRTLTextPlugin=function(le,w){return bt().setRTLTextPlugin(le,w)},i.setWorkerCount=function(le){Me.workerCount=le},i.setWorkerUrl=function(le){a.a.WORKER_URL=le}});var n=e;return n})});var KHe=ye((Z1r,YHe)=>{"use strict";var iw=Mr(),gjt=Pl().sanitizeHTML,mjt=fJ(),WHe=wx();function ZHe(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=WHe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ag=ZHe.prototype;ag.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=n7(t)};ag.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ag.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ag.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ag.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ag.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ag.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!n7(e)){var r=yjt(e);t.addSource(this.idSource,r)}};ag.findFollowingMapLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function XHe(e){var t={},r={};switch(e.type){case"circle":iw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":iw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":iw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=mjt(n.textposition,n.iconsize);iw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),iw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":iw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function yjt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=gjt(e.sourceattribution)),n}YHe.exports=function(t,r,n){var i=new ZHe(t,r);return i.update(n),i}});var nGe=ye((X1r,iGe)=>{"use strict";var mJ=jHe(),yJ=Mr(),QHe=nx(),JHe=ba(),_jt=Qa(),xjt=gv(),a7=Nc(),eGe=Sg(),bjt=eGe.drawMode,wjt=eGe.selectMode,Tjt=wf().prepSelect,Ajt=wf().clearOutline,Sjt=wf().clearSelectionsCache,Mjt=wf().selectOnClick,nw=wx(),Ejt=KHe();function tGe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Sh=tGe.prototype;Sh.plot=function(e,t,r){var n=this,i;n.map?i=new Promise(function(a,o){n.updateMap(e,t,a,o)}):i=new Promise(function(a,o){n.createMap(e,t,a,o)}),r.push(i)};Sh.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=rGe(a.style),s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new mJ.Map({container:i.div,style:o.style,center:_J(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new mJ.AttributionControl({compact:!0})),c={};u.on("styleimagemissing",function(h){var d=h.id;if(!c[d]&&d.includes("-15")){c[d]=!0;var v=new Image(15,15);v.onload=function(){u.addImage(d,v)},v.crossOrigin="Anonymous",v.src="https://unpkg.com/maki@2.1.0/icons/"+d+".svg"}}),u.setTransformRequest(function(h){return h=h.replace("https://fonts.openmaptiles.org/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://tiles.basemaps.cartocdn.com/fonts/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://fonts.openmaptiles.org/Open Sans Regular,Arial Unicode MS Regular","https://fonts.openmaptiles.org/Klokantech Noto Sans Regular"),{url:h}}),u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var f=[];f.push(new Promise(function(h){u.once("load",h)})),f=f.concat(QHe.fetchTraceGeoData(e)),Promise.all(f).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Sh.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=rGe(o.style);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(QHe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Sh.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&Mjt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&a7.click(n,l.originalEvent)}}};Sh.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=yJ.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),wjt(a)||bjt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){Tjt(l,u,c,t.dragOptions,a)},xjt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Sh.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Sh.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var xJ=Mr(),Cjt=C_(),Ljt=Zd(),aGe=Ok();oGe.exports=function(t,r,n){Cjt(t,r,n,{type:"map",attributes:aGe,handleDefaults:Pjt,partition:"y"})};function Pjt(e,t,r){r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var n=r("bounds.west"),i=r("bounds.east"),a=r("bounds.south"),o=r("bounds.north");(n===void 0||i===void 0||a===void 0||o===void 0)&&delete t.bounds,Ljt(e,t,{name:"layers",handleItemDefaults:Ijt}),t._input=e}function Ijt(e,t){function r(l,u){return xJ.coerce(e,t,aGe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",xJ.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),xJ.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var s7=ye(l0=>{"use strict";var o7=Mr(),lGe=o7.strTranslate,Rjt=o7.strScale,Djt=kd().getSubplotCalcData,zjt=Zp(),Fjt=xa(),uGe=ao(),qjt=Pl(),Ojt=nGe(),Tx="map";l0.name=Tx;l0.attr="subplot";l0.idRoot=Tx;l0.idRegex=l0.attrRegex=o7.counterRegex(Tx);l0.attributes={subplot:{valType:"subplotid",dflt:"map",editType:"calc"}};l0.layoutAttributes=Ok();l0.supplyLayoutDefaults=sGe();l0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[Tx],a=0;ax/2){var b=f.split("|").join("
");d.text(b).attr("data-unformatted",b).call(qjt.convertToTspans,e),v=uGe.bBox(d.node())}d.attr("transform",lGe(-3,-v.height+8)),h.insert("rect",".static-attribution").attr({x:-v.width-6,y:-v.height-3,width:v.width+6,height:v.height+3,fill:"rgba(255, 255, 255, 0.75)"});var p=1;v.width+6>x&&(p=x/(v.width+6));var E=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];h.attr("transform",lGe(E[0],E[1])+Rjt(p))}};l0.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[Tx],n=0;n{"use strict";cGe.exports={attributes:$F(),supplyDefaults:THe(),colorbar:Kd(),formatLabels:cJ(),calc:lz(),plot:qHe(),hoverPoints:i7().hoverPoints,eventData:UHe(),selectPoints:HHe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermap",basePlotModule:s7(),categories:["map","gl","symbols","showLegend","scatter-like"],meta:{}}});var dGe=ye(($1r,hGe)=>{"use strict";hGe.exports=fGe()});var bJ=ye((Q1r,vGe)=>{"use strict";var d1=K5(),Bjt=Jl(),Njt=Wo().hovertemplateAttrs,Ujt=vl(),Ax=no().extendFlat;vGe.exports=Ax({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:Ax({},d1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:d1.text,hovertext:d1.hovertext,marker:{line:{color:Ax({},d1.marker.line.color,{editType:"plot"}),width:Ax({},d1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:Ax({},d1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:Ax({},d1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:Ax({},d1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:d1.hoverinfo,hovertemplate:Njt({},{keys:["properties"]}),showlegend:Ax({},Ujt.showlegend,{dflt:!1})},Bjt("",{cLetter:"z",editTypeOverride:"calc"}))});var gGe=ye((e_r,pGe)=>{"use strict";var Vk=Mr(),Vjt=Uh(),Hjt=bJ();pGe.exports=function(t,r,n,i){function a(c,f){return Vk.coerce(t,r,Hjt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!Vk.isArrayOrTypedArray(o)||!o.length||!Vk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||Vk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),Vjt(t,r,i,a,{prefix:"",cLetter:"z"}),Vk.coerceSelectionMarkerOpacity(r,a)}});var wJ=ye((t_r,_Ge)=>{"use strict";var Gjt=uo(),v1=Mr(),jjt=Mu(),Wjt=ao(),Zjt=rx().makeBlank,mGe=nx();function Xjt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:Zjt()};if(!r)return a;var o=mGe.extractTraceFeature(e);if(!o)return a;var s=jjt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;v1.isArrayOrTypedArray(l.opacity)&&(c=function(E){var k=E.mo;return Gjt(k)?+v1.constrain(k,0,1):0});var f;v1.isArrayOrTypedArray(u.color)&&(f=function(E){return E.mlc});var h;v1.isArrayOrTypedArray(u.width)&&(h=function(E){return E.mlw});for(var d=0;d{"use strict";var bGe=wJ().convert,Yjt=wJ().convertOnSelect,xGe=wx().traceLayerPrefix;function wGe(e,t){this.type="choroplethmap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",xGe+t+"-fill"],["line",xGe+t+"-line"]],this.below=null}var MA=wGe.prototype;MA.update=function(e){this._update(bGe(e)),e[0].trace._glTrace=this};MA.updateOnSelect=function(e){this._update(Yjt(e))};MA._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};MA.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};TGe.exports=function(t,r){var n=r[0].trace,i=new wGe(t,n.uid),a=i.sourceId,o=bGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var MGe=ye((i_r,SGe)=>{"use strict";SGe.exports={attributes:bJ(),supplyDefaults:gGe(),colorbar:M_(),calc:Lz(),plot:AGe(),hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";EGe.exports=MGe()});var AJ=ye((a_r,LGe)=>{"use strict";var Kjt=Jl(),Jjt=Wo().hovertemplateAttrs,CGe=vl(),l7=$F(),TJ=no().extendFlat;LGe.exports=TJ({lon:l7.lon,lat:l7.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:l7.text,hovertext:l7.hovertext,hoverinfo:TJ({},CGe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:Jjt(),showlegend:TJ({},CGe.showlegend,{dflt:!1})},Kjt("",{cLetter:"z",editTypeOverride:"calc"}))});var IGe=ye((o_r,PGe)=>{"use strict";var $jt=Mr(),Qjt=Uh(),eWt=AJ();PGe.exports=function(t,r,n,i){function a(u,c){return $jt.coerce(t,r,eWt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),Qjt(t,r,i,a,{prefix:"",cLetter:"z"})}});var zGe=ye((s_r,DGe)=>{"use strict";var SJ=uo(),tWt=Mr().isArrayOrTypedArray,MJ=es().BADNUM,rWt=zv(),RGe=Mr()._;DGe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=tWt(a)&&a.length,s=0;s{"use strict";var iWt=uo(),EJ=Mr(),FGe=va(),qGe=Mu(),OGe=es().BADNUM,nWt=rx().makeBlank;BGe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:nWt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=EJ.isArrayOrTypedArray(l)&&l.length,f=EJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=qGe.extractOpts(r),p=b.reversescale?qGe.flipScale(b.colorscale):b.colorscale,E=p[0][1],k=FGe.opacity(E)<1?E:FGe.addOpacity(E,0),A=["interpolate",["linear"],["heatmap-density"],0,k];for(s=1;s{"use strict";var UGe=NGe(),aWt=wx().traceLayerPrefix;function VGe(e,t){this.type="densitymap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",aWt+t+"-heatmap"]],this.below=null}var u7=VGe.prototype;u7.update=function(e){var t=this.subplot,r=this.layerList,n=UGe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};u7.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};HGe.exports=function(t,r){var n=r[0].trace,i=new VGe(t,n.uid),a=i.sourceId,o=UGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var WGe=ye((c_r,jGe)=>{"use strict";var oWt=Qa(),sWt=i7().hoverPoints,lWt=i7().getExtraText;jGe.exports=function(t,r,n){var i=sWt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=oWt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=lWt(s,l,o[0].t.labels),[a]}}});var XGe=ye((f_r,ZGe)=>{"use strict";ZGe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var KGe=ye((h_r,YGe)=>{"use strict";YGe.exports={attributes:AJ(),supplyDefaults:IGe(),colorbar:M_(),formatLabels:cJ(),calc:zGe(),plot:GGe(),hoverPoints:WGe(),eventData:XGe(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";JGe.exports=KGe()});var CJ=ye((p_r,rje)=>{"use strict";var uWt=Su(),cWt=vl(),QGe=dh(),kJ=i3(),fWt=Ju().attributes,eje=Wo().hovertemplateAttrs,hWt=Jl(),dWt=Vs().templatedArray,vWt=Oc().descriptionOnlyNumbers,tje=no().extendFlat,pWt=Bu().overrideAll,v_r=rje.exports=pWt({hoverinfo:tje({},cWt.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:kJ.hoverlabel,domain:fWt({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s",description:vWt("value")},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:uWt({autoShadowDflt:!0}),customdata:void 0,node:{label:{valType:"data_array",dflt:[]},groups:{valType:"info_array",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:"number",editType:"calc"}},x:{valType:"data_array",dflt:[]},y:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:QGe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:kJ.hoverlabel,hovertemplate:eje({},{keys:["value","label"]}),align:{valType:"enumerated",values:["justify","left","right","center"],dflt:"justify"}},link:{arrowlen:{valType:"number",min:0,dflt:0},label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},hovercolor:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:QGe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:kJ.hoverlabel,hovertemplate:eje({},{keys:["value","label"]}),colorscales:dWt("concentrationscales",{editType:"calc",label:{valType:"string",editType:"calc",dflt:""},cmax:{valType:"number",editType:"calc",dflt:1},cmin:{valType:"number",editType:"calc",dflt:0},colorscale:tje(hWt().colorscale,{dflt:[[0,"white"],[1,"black"]]})})}},"calc","nested")});var sje=ye((g_r,oje)=>{"use strict";var EA=Mr(),c7=CJ(),gWt=va(),ije=id(),mWt=Ju().defaults,nje=oM(),aje=Vs(),yWt=Zd();oje.exports=function(t,r,n,i){function a(A,L){return EA.coerce(t,r,c7,A,L)}var o=EA.extendDeep(i.hoverlabel,t.hoverlabel),s=t.node,l=aje.newContainer(r,"node");function u(A,L){return EA.coerce(s,l,c7.node,A,L)}u("label"),u("groups"),u("x"),u("y"),u("pad"),u("thickness"),u("line.color"),u("line.width"),u("hoverinfo",t.hoverinfo),nje(s,l,u,o),u("hovertemplate"),u("align");var c=i.colorway,f=function(A){return c[A%c.length]};u("color",l.label.map(function(A,L){return gWt.addOpacity(f(L),.8)})),u("customdata");var h=t.link||{},d=aje.newContainer(r,"link");function v(A,L){return EA.coerce(h,d,c7.link,A,L)}v("label"),v("arrowlen"),v("source"),v("target"),v("value"),v("line.color"),v("line.width"),v("hoverinfo",t.hoverinfo),nje(h,d,v,o),v("hovertemplate");var x=ije(i.paper_bgcolor).getLuminance()<.333,b=x?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)",p=v("color",b);function E(A){var L=ije(A);if(!L.isValid())return A;var _=L.getAlpha();return _<=.8?L.setAlpha(_+.2):L=x?L.brighten():L.darken(),L.toRgbString()}v("hovercolor",Array.isArray(p)?p.map(E):E(p)),v("customdata"),yWt(h,d,{name:"colorscales",handleItemDefaults:_Wt}),mWt(r,i,a),a("orientation"),a("valueformat"),a("valuesuffix");var k;l.x.length&&l.y.length&&(k="freeform"),a("arrangement",k),EA.coerceFont(a,"textfont",i.font,{autoShadowDflt:!0}),r._length=null};function _Wt(e,t){function r(n,i){return EA.coerce(e,t,c7.link.colorscales,n,i)}r("label"),r("cmin"),r("cmax"),r("colorscale")}});var LJ=ye((m_r,lje)=>{"use strict";lje.exports=xWt;function xWt(e){for(var t=e.length,r=new Array(t),n=new Array(t),i=new Array(t),a=new Array(t),o=new Array(t),s=new Array(t),l=0;l0;){b=E[E.length-1];var k=e[b];if(a[b]=0&&s[b].push(o[L])}a[b]=A}else{if(n[b]===r[b]){for(var _=[],C=[],M=0,A=p.length-1;A>=0;--A){var g=p[A];if(i[g]=!1,_.push(g),C.push(s[g]),M+=s[g].length,o[g]=c.length,g===b){p.length=A;break}}c.push(_);for(var P=new Array(M),A=0;A{"use strict";var bWt=LJ(),kA=Mr(),wWt=Km().wrap,Hk=kA.isArrayOrTypedArray,uje=kA.isIndex,cje=Mu();function TWt(e){var t=e.node,r=e.link,n=[],i=Hk(r.color),a=Hk(r.hovercolor),o=Hk(r.customdata),s={},l={},u=r.colorscales.length,c;for(c=0;cv&&(v=r.source[c]),r.target[c]>v&&(v=r.target[c]);var x=v+1;e.node._count=x;var b,p=e.node.groups,E={};for(c=0;c0&&uje(M,x)&&uje(g,x)&&!(E.hasOwnProperty(M)&&E.hasOwnProperty(g)&&E[M]===E[g])){E.hasOwnProperty(g)&&(g=E[g]),E.hasOwnProperty(M)&&(M=E[M]),M=+M,g=+g,s[M]=s[g]=!0;var P="";r.label&&r.label[c]&&(P=r.label[c]);var T=null;P&&l.hasOwnProperty(P)&&(T=l[P]),n.push({pointNumber:c,label:P,color:i?r.color[c]:r.color,hovercolor:a?r.hovercolor[c]:r.hovercolor,customdata:o?r.customdata[c]:r.customdata,concentrationscale:T,source:M,target:g,value:+C}),_.source.push(M),_.target.push(g)}}var F=x+p.length,q=Hk(t.color),V=Hk(t.customdata),H=[];for(c=0;cx-1,childrenNodes:[],pointNumber:c,label:X,color:q?t.color[c]:t.color,customdata:V?t.customdata[c]:t.customdata})}var G=!1;return AWt(F,_.source,_.target)&&(G=!0),{circular:G,links:n,nodes:H,groups:p,groupLookup:E}}function AWt(e,t,r){for(var n=kA.init2dArray(e,0),i=0;i1})}fje.exports=function(t,r){var n=TWt(r);return wWt({circular:n.circular,_nodes:n.nodes,_links:n.links,_groups:n.groups,_groupLookup:n.groupLookup})}});var vje=ye((f7,dje)=>{(function(e,t){typeof f7=="object"&&typeof dje!="undefined"?t(f7):(e=e||self,t(e.d3=e.d3||{}))})(f7,function(e){"use strict";function t(C){var M=+this._x.call(null,C),g=+this._y.call(null,C);return r(this.cover(M,g),M,g,C)}function r(C,M,g,P){if(isNaN(M)||isNaN(g))return C;var T,F=C._root,q={data:P},V=C._x0,H=C._y0,X=C._x1,G=C._y1,N,W,re,ae,_e,Me,ke,ge;if(!F)return C._root=q,C;for(;F.length;)if((_e=M>=(N=(V+X)/2))?V=N:X=N,(Me=g>=(W=(H+G)/2))?H=W:G=W,T=F,!(F=F[ke=Me<<1|_e]))return T[ke]=q,C;if(re=+C._x.call(null,F.data),ae=+C._y.call(null,F.data),M===re&&g===ae)return q.next=F,T?T[ke]=q:C._root=q,C;do T=T?T[ke]=new Array(4):C._root=new Array(4),(_e=M>=(N=(V+X)/2))?V=N:X=N,(Me=g>=(W=(H+G)/2))?H=W:G=W;while((ke=Me<<1|_e)===(ge=(ae>=W)<<1|re>=N));return T[ge]=F,T[ke]=q,C}function n(C){var M,g,P=C.length,T,F,q=new Array(P),V=new Array(P),H=1/0,X=1/0,G=-1/0,N=-1/0;for(g=0;gG&&(G=T),FN&&(N=F));if(H>G||X>N)return this;for(this.cover(H,X).cover(G,N),g=0;gC||C>=T||P>M||M>=F;)switch(X=(MG||(V=ae.y0)>N||(H=ae.x1)=ke)<<1|C>=Me)&&(ae=W[W.length-1],W[W.length-1]=W[W.length-1-_e],W[W.length-1-_e]=ae)}else{var ge=C-+this._x.call(null,re.data),ie=M-+this._y.call(null,re.data),Te=ge*ge+ie*ie;if(Te=(W=(q+H)/2))?q=W:H=W,(_e=N>=(re=(V+X)/2))?V=re:X=re,M=g,!(g=g[Me=_e<<1|ae]))return this;if(!g.length)break;(M[Me+1&3]||M[Me+2&3]||M[Me+3&3])&&(P=M,ke=Me)}for(;g.data!==C;)if(T=g,!(g=g.next))return this;return(F=g.next)&&delete g.next,T?(F?T.next=F:delete T.next,this):M?(F?M[Me]=F:delete M[Me],(g=M[0]||M[1]||M[2]||M[3])&&g===(M[3]||M[2]||M[1]||M[0])&&!g.length&&(P?P[ke]=g:this._root=g),this):(this._root=F,this)}function c(C){for(var M=0,g=C.length;M{(function(e,t){t(typeof h7=="object"&&typeof pje!="undefined"?h7:e.d3=e.d3||{})})(h7,function(e){"use strict";var t="$";function r(){}r.prototype=n.prototype={constructor:r,has:function(x){return t+x in this},get:function(x){return this[t+x]},set:function(x,b){return this[t+x]=b,this},remove:function(x){var b=t+x;return b in this&&delete this[b]},clear:function(){for(var x in this)x[0]===t&&delete this[x]},keys:function(){var x=[];for(var b in this)b[0]===t&&x.push(b.slice(1));return x},values:function(){var x=[];for(var b in this)b[0]===t&&x.push(this[b]);return x},entries:function(){var x=[];for(var b in this)b[0]===t&&x.push({key:b.slice(1),value:this[b]});return x},size:function(){var x=0;for(var b in this)b[0]===t&&++x;return x},empty:function(){for(var x in this)if(x[0]===t)return!1;return!0},each:function(x){for(var b in this)b[0]===t&&x(this[b],b.slice(1),this)}};function n(x,b){var p=new r;if(x instanceof r)x.each(function(_,C){p.set(C,_)});else if(Array.isArray(x)){var E=-1,k=x.length,A;if(b==null)for(;++E=x.length)return p!=null&&_.sort(p),E!=null?E(_):_;for(var P=-1,T=_.length,F=x[C++],q,V,H=n(),X,G=M();++Px.length)return _;var M,g=b[C-1];return E!=null&&C>=x.length?M=_.entries():(M=[],_.each(function(P,T){M.push({key:T,values:L(P,C)})})),g!=null?M.sort(function(P,T){return g(P.key,T.key)}):M}return k={object:function(_){return A(_,0,a,o)},map:function(_){return A(_,0,s,l)},entries:function(_){return L(A(_,0,s,l),0)},key:function(_){return x.push(_),k},sortKeys:function(_){return b[x.length-1]=_,k},sortValues:function(_){return p=_,k},rollup:function(_){return E=_,k}}}function a(){return{}}function o(x,b,p){x[b]=p}function s(){return n()}function l(x,b,p){x.set(b,p)}function u(){}var c=n.prototype;u.prototype=f.prototype={constructor:u,has:c.has,add:function(x){return x+="",this[t+x]=x,this},remove:c.remove,clear:c.clear,values:c.keys,size:c.size,empty:c.empty,each:c.each};function f(x,b){var p=new u;if(x instanceof u)x.each(function(A){p.add(A)});else if(x){var E=-1,k=x.length;if(b==null)for(;++E{(function(e,t){typeof v7=="object"&&typeof gje!="undefined"?t(v7):(e=e||self,t(e.d3=e.d3||{}))})(v7,function(e){"use strict";var t={value:function(){}};function r(){for(var s=0,l=arguments.length,u={},c;s=0&&(c=u.slice(f+1),u=u.slice(0,f)),u&&!l.hasOwnProperty(u))throw new Error("unknown type: "+u);return{type:u,name:c}})}n.prototype=r.prototype={constructor:n,on:function(s,l){var u=this._,c=i(s+"",u),f,h=-1,d=c.length;if(arguments.length<2){for(;++h0)for(var u=new Array(f),c=0,f,h;c{(function(e,t){typeof p7=="object"&&typeof yje!="undefined"?t(p7):(e=e||self,t(e.d3=e.d3||{}))})(p7,function(e){"use strict";var t=0,r=0,n=0,i=1e3,a,o,s=0,l=0,u=0,c=typeof performance=="object"&&performance.now?performance:Date,f=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(C){setTimeout(C,17)};function h(){return l||(f(d),l=c.now()+u)}function d(){l=0}function v(){this._call=this._time=this._next=null}v.prototype=x.prototype={constructor:v,restart:function(C,M,g){if(typeof C!="function")throw new TypeError("callback is not a function");g=(g==null?h():+g)+(M==null?0:+M),!this._next&&o!==this&&(o?o._next=this:a=this,o=this),this._call=C,this._time=g,A()},stop:function(){this._call&&(this._call=null,this._time=1/0,A())}};function x(C,M,g){var P=new v;return P.restart(C,M,g),P}function b(){h(),++t;for(var C=a,M;C;)(M=l-C._time)>=0&&C._call.call(null,M),C=C._next;--t}function p(){l=(s=c.now())+u,t=r=0;try{b()}finally{t=0,k(),l=0}}function E(){var C=c.now(),M=C-s;M>i&&(u-=M,s=C)}function k(){for(var C,M=a,g,P=1/0;M;)M._call?(P>M._time&&(P=M._time),C=M,M=M._next):(g=M._next,M._next=null,M=C?C._next=g:a=g);o=C,A(P)}function A(C){if(!t){r&&(r=clearTimeout(r));var M=C-l;M>24?(C<1/0&&(r=setTimeout(p,C-c.now()-u)),n&&(n=clearInterval(n))):(n||(s=c.now(),n=setInterval(E,i)),t=1,f(p))}}function L(C,M,g){var P=new v;return M=M==null?0:+M,P.restart(function(T){P.stop(),C(T+M)},M,g),P}function _(C,M,g){var P=new v,T=M;return M==null?(P.restart(C,M,g),P):(M=+M,g=g==null?h():+g,P.restart(function F(q){q+=T,P.restart(F,T+=M,g),C(q)},M,g),P)}e.interval=_,e.now=h,e.timeout=L,e.timer=x,e.timerFlush=b,Object.defineProperty(e,"__esModule",{value:!0})})});var bje=ye((g7,xje)=>{(function(e,t){typeof g7=="object"&&typeof xje!="undefined"?t(g7,vje(),d7(),mje(),_je()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,e.d3)})(g7,function(e,t,r,n,i){"use strict";function a(C,M){var g;C==null&&(C=0),M==null&&(M=0);function P(){var T,F=g.length,q,V=0,H=0;for(T=0;TN.index){var Re=W-ze.x-ze.vx,ce=re-ze.y-ze.vy,Ge=Re*Re+ce*ce;GeW+me||Eere+me||AeH.r&&(H.r=H[X].r)}function V(){if(M){var H,X=M.length,G;for(g=new Array(X),H=0;H1?(_e==null?V.remove(ae):V.set(ae,re(_e)),M):V.get(ae)},find:function(ae,_e,Me){var ke=0,ge=C.length,ie,Te,Ee,Ae,ze;for(Me==null?Me=1/0:Me*=Me,ke=0;ke1?(X.on(ae,_e),M):X.on(ae)}}}function k(){var C,M,g,P=o(-30),T,F=1,q=1/0,V=.81;function H(W){var re,ae=C.length,_e=t.quadtree(C,v,x).visitAfter(G);for(g=W,re=0;re=q)return;(W.data!==M||W.next)&&(Me===0&&(Me=s(),ie+=Me*Me),ke===0&&(ke=s(),ie+=ke*ke),ie{(function(e,t){typeof m7=="object"&&typeof wje!="undefined"?t(m7):(e=e||self,t(e.d3=e.d3||{}))})(m7,function(e){"use strict";var t=Math.PI,r=2*t,n=1e-6,i=r-n;function a(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function o(){return new a}a.prototype=o.prototype={constructor:a,moveTo:function(s,l){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(s,l){this._+="L"+(this._x1=+s)+","+(this._y1=+l)},quadraticCurveTo:function(s,l,u,c){this._+="Q"+ +s+","+ +l+","+(this._x1=+u)+","+(this._y1=+c)},bezierCurveTo:function(s,l,u,c,f,h){this._+="C"+ +s+","+ +l+","+ +u+","+ +c+","+(this._x1=+f)+","+(this._y1=+h)},arcTo:function(s,l,u,c,f){s=+s,l=+l,u=+u,c=+c,f=+f;var h=this._x1,d=this._y1,v=u-s,x=c-l,b=h-s,p=d-l,E=b*b+p*p;if(f<0)throw new Error("negative radius: "+f);if(this._x1===null)this._+="M"+(this._x1=s)+","+(this._y1=l);else if(E>n)if(!(Math.abs(p*v-x*b)>n)||!f)this._+="L"+(this._x1=s)+","+(this._y1=l);else{var k=u-h,A=c-d,L=v*v+x*x,_=k*k+A*A,C=Math.sqrt(L),M=Math.sqrt(E),g=f*Math.tan((t-Math.acos((L+E-_)/(2*C*M)))/2),P=g/M,T=g/C;Math.abs(P-1)>n&&(this._+="L"+(s+P*b)+","+(l+P*p)),this._+="A"+f+","+f+",0,0,"+ +(p*k>b*A)+","+(this._x1=s+T*v)+","+(this._y1=l+T*x)}},arc:function(s,l,u,c,f,h){s=+s,l=+l,u=+u,h=!!h;var d=u*Math.cos(c),v=u*Math.sin(c),x=s+d,b=l+v,p=1^h,E=h?c-f:f-c;if(u<0)throw new Error("negative radius: "+u);this._x1===null?this._+="M"+x+","+b:(Math.abs(this._x1-x)>n||Math.abs(this._y1-b)>n)&&(this._+="L"+x+","+b),u&&(E<0&&(E=E%r+r),E>i?this._+="A"+u+","+u+",0,1,"+p+","+(s-d)+","+(l-v)+"A"+u+","+u+",0,1,"+p+","+(this._x1=x)+","+(this._y1=b):E>n&&(this._+="A"+u+","+u+",0,"+ +(E>=t)+","+p+","+(this._x1=s+u*Math.cos(f))+","+(this._y1=l+u*Math.sin(f))))},rect:function(s,l,u,c){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)+"h"+ +u+"v"+ +c+"h"+-u+"Z"},toString:function(){return this._}},e.path=o,Object.defineProperty(e,"__esModule",{value:!0})})});var PJ=ye((y7,Aje)=>{(function(e,t){typeof y7=="object"&&typeof Aje!="undefined"?t(y7,Tje()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(y7,function(e,t){"use strict";function r(_t){return function(){return _t}}var n=Math.abs,i=Math.atan2,a=Math.cos,o=Math.max,s=Math.min,l=Math.sin,u=Math.sqrt,c=1e-12,f=Math.PI,h=f/2,d=2*f;function v(_t){return _t>1?0:_t<-1?f:Math.acos(_t)}function x(_t){return _t>=1?h:_t<=-1?-h:Math.asin(_t)}function b(_t){return _t.innerRadius}function p(_t){return _t.outerRadius}function E(_t){return _t.startAngle}function k(_t){return _t.endAngle}function A(_t){return _t&&_t.padAngle}function L(_t,br,Hr,ti,zi,Yi,an,hi){var Ji=Hr-_t,ua=ti-br,Fn=an-zi,Sa=hi-Yi,go=Sa*Ji-Fn*ua;if(!(go*goQl*Ql+Hu*Hu&&(Cs=Ys,ml=Hs),{cx:Cs,cy:ml,x01:-Fn,y01:-Sa,x11:Cs*(zi/wl-1),y11:ml*(zi/wl-1)}}function C(){var _t=b,br=p,Hr=r(0),ti=null,zi=E,Yi=k,an=A,hi=null;function Ji(){var ua,Fn,Sa=+_t.apply(this,arguments),go=+br.apply(this,arguments),Oo=zi.apply(this,arguments)-h,ho=Yi.apply(this,arguments)-h,Mo=n(ho-Oo),xo=ho>Oo;if(hi||(hi=ua=t.path()),goc))hi.moveTo(0,0);else if(Mo>d-c)hi.moveTo(go*a(Oo),go*l(Oo)),hi.arc(0,0,go,Oo,ho,!xo),Sa>c&&(hi.moveTo(Sa*a(ho),Sa*l(ho)),hi.arc(0,0,Sa,ho,Oo,xo));else{var zs=Oo,ks=ho,Zs=Oo,Xs=ho,wl=Mo,os=Mo,cl=an.apply(this,arguments)/2,Cs=cl>c&&(ti?+ti.apply(this,arguments):u(Sa*Sa+go*go)),ml=s(n(go-Sa)/2,+Hr.apply(this,arguments)),Ys=ml,Hs=ml,Eo,fs;if(Cs>c){var Ql=x(Cs/Sa*l(cl)),Hu=x(Cs/go*l(cl));(wl-=Ql*2)>c?(Ql*=xo?1:-1,Zs+=Ql,Xs-=Ql):(wl=0,Zs=Xs=(Oo+ho)/2),(os-=Hu*2)>c?(Hu*=xo?1:-1,zs+=Hu,ks-=Hu):(os=0,zs=ks=(Oo+ho)/2)}var fc=go*a(zs),ms=go*l(zs),on=Sa*a(Xs),fa=Sa*l(Xs);if(ml>c){var Qu=go*a(ks),Rl=go*l(ks),vo=Sa*a(Zs),Zl=Sa*l(Zs),Ks;if(Moc?Hs>c?(Eo=_(vo,Zl,fc,ms,go,Hs,xo),fs=_(Qu,Rl,on,fa,go,Hs,xo),hi.moveTo(Eo.cx+Eo.x01,Eo.cy+Eo.y01),Hsc)||!(wl>c)?hi.lineTo(on,fa):Ys>c?(Eo=_(on,fa,Qu,Rl,Sa,-Ys,xo),fs=_(fc,ms,vo,Zl,Sa,-Ys,xo),hi.lineTo(Eo.cx+Eo.x01,Eo.cy+Eo.y01),Ys=go;--Oo)hi.point(ks[Oo],Zs[Oo]);hi.lineEnd(),hi.areaEnd()}xo&&(ks[Sa]=+_t(Mo,Sa,Fn),Zs[Sa]=+Hr(Mo,Sa,Fn),hi.point(br?+br(Mo,Sa,Fn):ks[Sa],ti?+ti(Mo,Sa,Fn):Zs[Sa]))}if(zs)return hi=null,zs+""||null}function ua(){return F().defined(zi).curve(an).context(Yi)}return Ji.x=function(Fn){return arguments.length?(_t=typeof Fn=="function"?Fn:r(+Fn),br=null,Ji):_t},Ji.x0=function(Fn){return arguments.length?(_t=typeof Fn=="function"?Fn:r(+Fn),Ji):_t},Ji.x1=function(Fn){return arguments.length?(br=Fn==null?null:typeof Fn=="function"?Fn:r(+Fn),Ji):br},Ji.y=function(Fn){return arguments.length?(Hr=typeof Fn=="function"?Fn:r(+Fn),ti=null,Ji):Hr},Ji.y0=function(Fn){return arguments.length?(Hr=typeof Fn=="function"?Fn:r(+Fn),Ji):Hr},Ji.y1=function(Fn){return arguments.length?(ti=Fn==null?null:typeof Fn=="function"?Fn:r(+Fn),Ji):ti},Ji.lineX0=Ji.lineY0=function(){return ua().x(_t).y(Hr)},Ji.lineY1=function(){return ua().x(_t).y(ti)},Ji.lineX1=function(){return ua().x(br).y(Hr)},Ji.defined=function(Fn){return arguments.length?(zi=typeof Fn=="function"?Fn:r(!!Fn),Ji):zi},Ji.curve=function(Fn){return arguments.length?(an=Fn,Yi!=null&&(hi=an(Yi)),Ji):an},Ji.context=function(Fn){return arguments.length?(Fn==null?Yi=hi=null:hi=an(Yi=Fn),Ji):Yi},Ji}function V(_t,br){return br<_t?-1:br>_t?1:br>=_t?0:NaN}function H(_t){return _t}function X(){var _t=H,br=V,Hr=null,ti=r(0),zi=r(d),Yi=r(0);function an(hi){var Ji,ua=hi.length,Fn,Sa,go=0,Oo=new Array(ua),ho=new Array(ua),Mo=+ti.apply(this,arguments),xo=Math.min(d,Math.max(-d,zi.apply(this,arguments)-Mo)),zs,ks=Math.min(Math.abs(xo)/ua,Yi.apply(this,arguments)),Zs=ks*(xo<0?-1:1),Xs;for(Ji=0;Ji0&&(go+=Xs);for(br!=null?Oo.sort(function(wl,os){return br(ho[wl],ho[os])}):Hr!=null&&Oo.sort(function(wl,os){return Hr(hi[wl],hi[os])}),Ji=0,Sa=go?(xo-ua*Zs)/go:0;Ji0?Xs*Sa:0)+Zs,ho[Fn]={data:hi[Fn],index:Ji,value:Xs,startAngle:Mo,endAngle:zs,padAngle:ks};return ho}return an.value=function(hi){return arguments.length?(_t=typeof hi=="function"?hi:r(+hi),an):_t},an.sortValues=function(hi){return arguments.length?(br=hi,Hr=null,an):br},an.sort=function(hi){return arguments.length?(Hr=hi,br=null,an):Hr},an.startAngle=function(hi){return arguments.length?(ti=typeof hi=="function"?hi:r(+hi),an):ti},an.endAngle=function(hi){return arguments.length?(zi=typeof hi=="function"?hi:r(+hi),an):zi},an.padAngle=function(hi){return arguments.length?(Yi=typeof hi=="function"?hi:r(+hi),an):Yi},an}var G=W(g);function N(_t){this._curve=_t}N.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(_t,br){this._curve.point(br*Math.sin(_t),br*-Math.cos(_t))}};function W(_t){function br(Hr){return new N(_t(Hr))}return br._curve=_t,br}function re(_t){var br=_t.curve;return _t.angle=_t.x,delete _t.x,_t.radius=_t.y,delete _t.y,_t.curve=function(Hr){return arguments.length?br(W(Hr)):br()._curve},_t}function ae(){return re(F().curve(G))}function _e(){var _t=q().curve(G),br=_t.curve,Hr=_t.lineX0,ti=_t.lineX1,zi=_t.lineY0,Yi=_t.lineY1;return _t.angle=_t.x,delete _t.x,_t.startAngle=_t.x0,delete _t.x0,_t.endAngle=_t.x1,delete _t.x1,_t.radius=_t.y,delete _t.y,_t.innerRadius=_t.y0,delete _t.y0,_t.outerRadius=_t.y1,delete _t.y1,_t.lineStartAngle=function(){return re(Hr())},delete _t.lineX0,_t.lineEndAngle=function(){return re(ti())},delete _t.lineX1,_t.lineInnerRadius=function(){return re(zi())},delete _t.lineY0,_t.lineOuterRadius=function(){return re(Yi())},delete _t.lineY1,_t.curve=function(an){return arguments.length?br(W(an)):br()._curve},_t}function Me(_t,br){return[(br=+br)*Math.cos(_t-=Math.PI/2),br*Math.sin(_t)]}var ke=Array.prototype.slice;function ge(_t){return _t.source}function ie(_t){return _t.target}function Te(_t){var br=ge,Hr=ie,ti=P,zi=T,Yi=null;function an(){var hi,Ji=ke.call(arguments),ua=br.apply(this,Ji),Fn=Hr.apply(this,Ji);if(Yi||(Yi=hi=t.path()),_t(Yi,+ti.apply(this,(Ji[0]=ua,Ji)),+zi.apply(this,Ji),+ti.apply(this,(Ji[0]=Fn,Ji)),+zi.apply(this,Ji)),hi)return Yi=null,hi+""||null}return an.source=function(hi){return arguments.length?(br=hi,an):br},an.target=function(hi){return arguments.length?(Hr=hi,an):Hr},an.x=function(hi){return arguments.length?(ti=typeof hi=="function"?hi:r(+hi),an):ti},an.y=function(hi){return arguments.length?(zi=typeof hi=="function"?hi:r(+hi),an):zi},an.context=function(hi){return arguments.length?(Yi=hi==null?null:hi,an):Yi},an}function Ee(_t,br,Hr,ti,zi){_t.moveTo(br,Hr),_t.bezierCurveTo(br=(br+ti)/2,Hr,br,zi,ti,zi)}function Ae(_t,br,Hr,ti,zi){_t.moveTo(br,Hr),_t.bezierCurveTo(br,Hr=(Hr+zi)/2,ti,Hr,ti,zi)}function ze(_t,br,Hr,ti,zi){var Yi=Me(br,Hr),an=Me(br,Hr=(Hr+zi)/2),hi=Me(ti,Hr),Ji=Me(ti,zi);_t.moveTo(Yi[0],Yi[1]),_t.bezierCurveTo(an[0],an[1],hi[0],hi[1],Ji[0],Ji[1])}function Ce(){return Te(Ee)}function me(){return Te(Ae)}function Re(){var _t=Te(ze);return _t.angle=_t.x,delete _t.x,_t.radius=_t.y,delete _t.y,_t}var ce={draw:function(_t,br){var Hr=Math.sqrt(br/f);_t.moveTo(Hr,0),_t.arc(0,0,Hr,0,d)}},Ge={draw:function(_t,br){var Hr=Math.sqrt(br/5)/2;_t.moveTo(-3*Hr,-Hr),_t.lineTo(-Hr,-Hr),_t.lineTo(-Hr,-3*Hr),_t.lineTo(Hr,-3*Hr),_t.lineTo(Hr,-Hr),_t.lineTo(3*Hr,-Hr),_t.lineTo(3*Hr,Hr),_t.lineTo(Hr,Hr),_t.lineTo(Hr,3*Hr),_t.lineTo(-Hr,3*Hr),_t.lineTo(-Hr,Hr),_t.lineTo(-3*Hr,Hr),_t.closePath()}},nt=Math.sqrt(1/3),ct=nt*2,qt={draw:function(_t,br){var Hr=Math.sqrt(br/ct),ti=Hr*nt;_t.moveTo(0,-Hr),_t.lineTo(ti,0),_t.lineTo(0,Hr),_t.lineTo(-ti,0),_t.closePath()}},rt=.8908130915292852,ot=Math.sin(f/10)/Math.sin(7*f/10),Rt=Math.sin(d/10)*ot,kt=-Math.cos(d/10)*ot,Ct={draw:function(_t,br){var Hr=Math.sqrt(br*rt),ti=Rt*Hr,zi=kt*Hr;_t.moveTo(0,-Hr),_t.lineTo(ti,zi);for(var Yi=1;Yi<5;++Yi){var an=d*Yi/5,hi=Math.cos(an),Ji=Math.sin(an);_t.lineTo(Ji*Hr,-hi*Hr),_t.lineTo(hi*ti-Ji*zi,Ji*ti+hi*zi)}_t.closePath()}},Yt={draw:function(_t,br){var Hr=Math.sqrt(br),ti=-Hr/2;_t.rect(ti,ti,Hr,Hr)}},xr=Math.sqrt(3),er={draw:function(_t,br){var Hr=-Math.sqrt(br/(xr*3));_t.moveTo(0,Hr*2),_t.lineTo(-xr*Hr,-Hr),_t.lineTo(xr*Hr,-Hr),_t.closePath()}},Ke=-.5,xt=Math.sqrt(3)/2,bt=1/Math.sqrt(12),Lt=(bt/2+1)*3,St={draw:function(_t,br){var Hr=Math.sqrt(br/Lt),ti=Hr/2,zi=Hr*bt,Yi=ti,an=Hr*bt+Hr,hi=-Yi,Ji=an;_t.moveTo(ti,zi),_t.lineTo(Yi,an),_t.lineTo(hi,Ji),_t.lineTo(Ke*ti-xt*zi,xt*ti+Ke*zi),_t.lineTo(Ke*Yi-xt*an,xt*Yi+Ke*an),_t.lineTo(Ke*hi-xt*Ji,xt*hi+Ke*Ji),_t.lineTo(Ke*ti+xt*zi,Ke*zi-xt*ti),_t.lineTo(Ke*Yi+xt*an,Ke*an-xt*Yi),_t.lineTo(Ke*hi+xt*Ji,Ke*Ji-xt*hi),_t.closePath()}},Et=[ce,Ge,qt,Yt,Ct,er,St];function dt(){var _t=r(ce),br=r(64),Hr=null;function ti(){var zi;if(Hr||(Hr=zi=t.path()),_t.apply(this,arguments).draw(Hr,+br.apply(this,arguments)),zi)return Hr=null,zi+""||null}return ti.type=function(zi){return arguments.length?(_t=typeof zi=="function"?zi:r(zi),ti):_t},ti.size=function(zi){return arguments.length?(br=typeof zi=="function"?zi:r(+zi),ti):br},ti.context=function(zi){return arguments.length?(Hr=zi==null?null:zi,ti):Hr},ti}function Ht(){}function $t(_t,br,Hr){_t._context.bezierCurveTo((2*_t._x0+_t._x1)/3,(2*_t._y0+_t._y1)/3,(_t._x0+2*_t._x1)/3,(_t._y0+2*_t._y1)/3,(_t._x0+4*_t._x1+br)/6,(_t._y0+4*_t._y1+Hr)/6)}function fr(_t){this._context=_t}fr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:$t(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function _r(_t){return new fr(_t)}function Br(_t){this._context=_t}Br.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._x2=_t,this._y2=br;break;case 1:this._point=2,this._x3=_t,this._y3=br;break;case 2:this._point=3,this._x4=_t,this._y4=br,this._context.moveTo((this._x0+4*this._x1+_t)/6,(this._y0+4*this._y1+br)/6);break;default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function Or(_t){return new Br(_t)}function Nr(_t){this._context=_t}Nr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var Hr=(this._x0+4*this._x1+_t)/6,ti=(this._y0+4*this._y1+br)/6;this._line?this._context.lineTo(Hr,ti):this._context.moveTo(Hr,ti);break;case 3:this._point=4;default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function ut(_t){return new Nr(_t)}function Ne(_t,br){this._basis=new fr(_t),this._beta=br}Ne.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var _t=this._x,br=this._y,Hr=_t.length-1;if(Hr>0)for(var ti=_t[0],zi=br[0],Yi=_t[Hr]-ti,an=br[Hr]-zi,hi=-1,Ji;++hi<=Hr;)Ji=hi/Hr,this._basis.point(this._beta*_t[hi]+(1-this._beta)*(ti+Ji*Yi),this._beta*br[hi]+(1-this._beta)*(zi+Ji*an));this._x=this._y=null,this._basis.lineEnd()},point:function(_t,br){this._x.push(+_t),this._y.push(+br)}};var Ye=function _t(br){function Hr(ti){return br===1?new fr(ti):new Ne(ti,br)}return Hr.beta=function(ti){return _t(+ti)},Hr}(.85);function Ve(_t,br,Hr){_t._context.bezierCurveTo(_t._x1+_t._k*(_t._x2-_t._x0),_t._y1+_t._k*(_t._y2-_t._y0),_t._x2+_t._k*(_t._x1-br),_t._y2+_t._k*(_t._y1-Hr),_t._x2,_t._y2)}function Xe(_t,br){this._context=_t,this._k=(1-br)/6}Xe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ve(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2,this._x1=_t,this._y1=br;break;case 2:this._point=3;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ht=function _t(br){function Hr(ti){return new Xe(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Le(_t,br){this._context=_t,this._k=(1-br)/6}Le.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._x3=_t,this._y3=br;break;case 1:this._point=2,this._context.moveTo(this._x4=_t,this._y4=br);break;case 2:this._point=3,this._x5=_t,this._y5=br;break;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var xe=function _t(br){function Hr(ti){return new Le(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Se(_t,br){this._context=_t,this._k=(1-br)/6}Se.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var lt=function _t(br){function Hr(ti){return new Se(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Gt(_t,br,Hr){var ti=_t._x1,zi=_t._y1,Yi=_t._x2,an=_t._y2;if(_t._l01_a>c){var hi=2*_t._l01_2a+3*_t._l01_a*_t._l12_a+_t._l12_2a,Ji=3*_t._l01_a*(_t._l01_a+_t._l12_a);ti=(ti*hi-_t._x0*_t._l12_2a+_t._x2*_t._l01_2a)/Ji,zi=(zi*hi-_t._y0*_t._l12_2a+_t._y2*_t._l01_2a)/Ji}if(_t._l23_a>c){var ua=2*_t._l23_2a+3*_t._l23_a*_t._l12_a+_t._l12_2a,Fn=3*_t._l23_a*(_t._l23_a+_t._l12_a);Yi=(Yi*ua+_t._x1*_t._l23_2a-br*_t._l12_2a)/Fn,an=(an*ua+_t._y1*_t._l23_2a-Hr*_t._l12_2a)/Fn}_t._context.bezierCurveTo(ti,zi,Yi,an,_t._x2,_t._y2)}function Vt(_t,br){this._context=_t,this._alpha=br}Vt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ar=function _t(br){function Hr(ti){return br?new Vt(ti,br):new Xe(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function Qr(_t,br){this._context=_t,this._alpha=br}Qr.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=_t,this._y3=br;break;case 1:this._point=2,this._context.moveTo(this._x4=_t,this._y4=br);break;case 2:this._point=3,this._x5=_t,this._y5=br;break;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ai=function _t(br){function Hr(ti){return br?new Qr(ti,br):new Le(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function jr(_t,br){this._context=_t,this._alpha=br}jr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ri=function _t(br){function Hr(ti){return br?new jr(ti,br):new Se(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function bi(_t){this._context=_t}bi.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(_t,br){_t=+_t,br=+br,this._point?this._context.lineTo(_t,br):(this._point=1,this._context.moveTo(_t,br))}};function nn(_t){return new bi(_t)}function Wi(_t){return _t<0?-1:1}function Ni(_t,br,Hr){var ti=_t._x1-_t._x0,zi=br-_t._x1,Yi=(_t._y1-_t._y0)/(ti||zi<0&&-0),an=(Hr-_t._y1)/(zi||ti<0&&-0),hi=(Yi*zi+an*ti)/(ti+zi);return(Wi(Yi)+Wi(an))*Math.min(Math.abs(Yi),Math.abs(an),.5*Math.abs(hi))||0}function _n(_t,br){var Hr=_t._x1-_t._x0;return Hr?(3*(_t._y1-_t._y0)/Hr-br)/2:br}function $i(_t,br,Hr){var ti=_t._x0,zi=_t._y0,Yi=_t._x1,an=_t._y1,hi=(Yi-ti)/3;_t._context.bezierCurveTo(ti+hi,zi+hi*br,Yi-hi,an-hi*Hr,Yi,an)}function zn(_t){this._context=_t}zn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:$i(this,this._t0,_n(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){var Hr=NaN;if(_t=+_t,br=+br,!(_t===this._x1&&br===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3,$i(this,_n(this,Hr=Ni(this,_t,br)),Hr);break;default:$i(this,this._t0,Hr=Ni(this,_t,br));break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br,this._t0=Hr}}};function Wn(_t){this._context=new It(_t)}(Wn.prototype=Object.create(zn.prototype)).point=function(_t,br){zn.prototype.point.call(this,br,_t)};function It(_t){this._context=_t}It.prototype={moveTo:function(_t,br){this._context.moveTo(br,_t)},closePath:function(){this._context.closePath()},lineTo:function(_t,br){this._context.lineTo(br,_t)},bezierCurveTo:function(_t,br,Hr,ti,zi,Yi){this._context.bezierCurveTo(br,_t,ti,Hr,Yi,zi)}};function ft(_t){return new zn(_t)}function jt(_t){return new Wn(_t)}function Zt(_t){this._context=_t}Zt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var _t=this._x,br=this._y,Hr=_t.length;if(Hr)if(this._line?this._context.lineTo(_t[0],br[0]):this._context.moveTo(_t[0],br[0]),Hr===2)this._context.lineTo(_t[1],br[1]);else for(var ti=yr(_t),zi=yr(br),Yi=0,an=1;an=0;--br)zi[br]=(an[br]-zi[br+1])/Yi[br];for(Yi[Hr-1]=(_t[Hr]+zi[Hr-1])/2,br=0;br=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,br),this._context.lineTo(_t,br);else{var Hr=this._x*(1-this._t)+_t*this._t;this._context.lineTo(Hr,this._y),this._context.lineTo(Hr,br)}break}}this._x=_t,this._y=br}};function Vr(_t){return new Zr(_t,.5)}function gi(_t){return new Zr(_t,0)}function Si(_t){return new Zr(_t,1)}function Mi(_t,br){if((an=_t.length)>1)for(var Hr=1,ti,zi,Yi=_t[br[0]],an,hi=Yi.length;Hr=0;)Hr[br]=br;return Hr}function Gi(_t,br){return _t[br]}function Ki(){var _t=r([]),br=Pi,Hr=Mi,ti=Gi;function zi(Yi){var an=_t.apply(this,arguments),hi,Ji=Yi.length,ua=an.length,Fn=new Array(ua),Sa;for(hi=0;hi0){for(var Hr,ti,zi=0,Yi=_t[0].length,an;zi0)for(var Hr,ti=0,zi,Yi,an,hi,Ji,ua=_t[br[0]].length;ti0?(zi[0]=an,zi[1]=an+=Yi):Yi<0?(zi[1]=hi,zi[0]=hi+=Yi):(zi[0]=0,zi[1]=Yi)}function la(_t,br){if((zi=_t.length)>0){for(var Hr=0,ti=_t[br[0]],zi,Yi=ti.length;Hr0)||!((Yi=(zi=_t[br[0]]).length)>0))){for(var Hr=0,ti=1,zi,Yi,an;tiYi&&(Yi=zi,Hr=br);return Hr}function oa(_t){var br=_t.map(Sn);return Pi(_t).sort(function(Hr,ti){return br[Hr]-br[ti]})}function Sn(_t){for(var br=0,Hr=-1,ti=_t.length,zi;++Hr{(function(e,t){typeof _7=="object"&&typeof Sje!="undefined"?t(_7,$E(),d7(),PJ()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3)})(_7,function(e,t,r,n){"use strict";function i(g){return g.target.depth}function a(g){return g.depth}function o(g,P){return P-1-g.height}function s(g,P){return g.sourceLinks.length?g.depth:P-1}function l(g){return g.targetLinks.length?g.depth:g.sourceLinks.length?t.min(g.sourceLinks,i)-1:0}function u(g){return function(){return g}}function c(g,P){return h(g.source,P.source)||g.index-P.index}function f(g,P){return h(g.target,P.target)||g.index-P.index}function h(g,P){return g.y0-P.y0}function d(g){return g.value}function v(g){return(g.y0+g.y1)/2}function x(g){return v(g.source)*g.value}function b(g){return v(g.target)*g.value}function p(g){return g.index}function E(g){return g.nodes}function k(g){return g.links}function A(g,P){var T=g.get(P);if(!T)throw new Error("missing: "+P);return T}var L=function(){var g=0,P=0,T=1,F=1,q=24,V=8,H=p,X=s,G=E,N=k,W=32,re=2/3;function ae(){var Te={nodes:G.apply(null,arguments),links:N.apply(null,arguments)};return _e(Te),Me(Te),ke(Te),ge(Te,W),ie(Te),Te}ae.update=function(Te){return ie(Te),Te},ae.nodeId=function(Te){return arguments.length?(H=typeof Te=="function"?Te:u(Te),ae):H},ae.nodeAlign=function(Te){return arguments.length?(X=typeof Te=="function"?Te:u(Te),ae):X},ae.nodeWidth=function(Te){return arguments.length?(q=+Te,ae):q},ae.nodePadding=function(Te){return arguments.length?(V=+Te,ae):V},ae.nodes=function(Te){return arguments.length?(G=typeof Te=="function"?Te:u(Te),ae):G},ae.links=function(Te){return arguments.length?(N=typeof Te=="function"?Te:u(Te),ae):N},ae.size=function(Te){return arguments.length?(g=P=0,T=+Te[0],F=+Te[1],ae):[T-g,F-P]},ae.extent=function(Te){return arguments.length?(g=+Te[0][0],T=+Te[1][0],P=+Te[0][1],F=+Te[1][1],ae):[[g,P],[T,F]]},ae.iterations=function(Te){return arguments.length?(W=+Te,ae):W};function _e(Te){Te.nodes.forEach(function(Ae,ze){Ae.index=ze,Ae.sourceLinks=[],Ae.targetLinks=[]});var Ee=r.map(Te.nodes,H);Te.links.forEach(function(Ae,ze){Ae.index=ze;var Ce=Ae.source,me=Ae.target;typeof Ce!="object"&&(Ce=Ae.source=A(Ee,Ce)),typeof me!="object"&&(me=Ae.target=A(Ee,me)),Ce.sourceLinks.push(Ae),me.targetLinks.push(Ae)})}function Me(Te){Te.nodes.forEach(function(Ee){Ee.value=Math.max(t.sum(Ee.sourceLinks,d),t.sum(Ee.targetLinks,d))})}function ke(Te){var Ee,Ae,ze;for(Ee=Te.nodes,Ae=[],ze=0;Ee.length;++ze,Ee=Ae,Ae=[])Ee.forEach(function(me){me.depth=ze,me.sourceLinks.forEach(function(Re){Ae.indexOf(Re.target)<0&&Ae.push(Re.target)})});for(Ee=Te.nodes,Ae=[],ze=0;Ee.length;++ze,Ee=Ae,Ae=[])Ee.forEach(function(me){me.height=ze,me.targetLinks.forEach(function(Re){Ae.indexOf(Re.source)<0&&Ae.push(Re.source)})});var Ce=(T-g-q)/(ze-1);Te.nodes.forEach(function(me){me.x1=(me.x0=g+Math.max(0,Math.min(ze-1,Math.floor(X.call(null,me,ze))))*Ce)+q})}function ge(Te){var Ee=r.nest().key(function(Ge){return Ge.x0}).sortKeys(t.ascending).entries(Te.nodes).map(function(Ge){return Ge.values});Ce(),ce();for(var Ae=1,ze=W;ze>0;--ze)Re(Ae*=.99),ce(),me(Ae),ce();function Ce(){var Ge=t.max(Ee,function(qt){return qt.length}),nt=re*(F-P)/(Ge-1);V>nt&&(V=nt);var ct=t.min(Ee,function(qt){return(F-P-(qt.length-1)*V)/t.sum(qt,d)});Ee.forEach(function(qt){qt.forEach(function(rt,ot){rt.y1=(rt.y0=ot)+rt.value*ct})}),Te.links.forEach(function(qt){qt.width=qt.value*ct})}function me(Ge){Ee.forEach(function(nt){nt.forEach(function(ct){if(ct.targetLinks.length){var qt=(t.sum(ct.targetLinks,x)/t.sum(ct.targetLinks,d)-v(ct))*Ge;ct.y0+=qt,ct.y1+=qt}})})}function Re(Ge){Ee.slice().reverse().forEach(function(nt){nt.forEach(function(ct){if(ct.sourceLinks.length){var qt=(t.sum(ct.sourceLinks,b)/t.sum(ct.sourceLinks,d)-v(ct))*Ge;ct.y0+=qt,ct.y1+=qt}})})}function ce(){Ee.forEach(function(Ge){var nt,ct,qt=P,rt=Ge.length,ot;for(Ge.sort(h),ot=0;ot0&&(nt.y0+=ct,nt.y1+=ct),qt=nt.y1+V;if(ct=qt-V-F,ct>0)for(qt=nt.y0-=ct,nt.y1-=ct,ot=rt-2;ot>=0;--ot)nt=Ge[ot],ct=nt.y1+V-qt,ct>0&&(nt.y0-=ct,nt.y1-=ct),qt=nt.y0})}}function ie(Te){Te.nodes.forEach(function(Ee){Ee.sourceLinks.sort(f),Ee.targetLinks.sort(c)}),Te.nodes.forEach(function(Ee){var Ae=Ee.y0,ze=Ae;Ee.sourceLinks.forEach(function(Ce){Ce.y0=Ae+Ce.width/2,Ae+=Ce.width}),Ee.targetLinks.forEach(function(Ce){Ce.y1=ze+Ce.width/2,ze+=Ce.width})})}return ae};function _(g){return[g.source.x1,g.y0]}function C(g){return[g.target.x0,g.y1]}var M=function(){return n.linkHorizontal().source(_).target(C)};e.sankey=L,e.sankeyCenter=l,e.sankeyLeft=a,e.sankeyRight=o,e.sankeyJustify=s,e.sankeyLinkHorizontal=M,Object.defineProperty(e,"__esModule",{value:!0})})});var kje=ye((__r,Eje)=>{var SWt=LJ();Eje.exports=function(t,r){var n=[],i=[],a=[],o={},s=[],l;function u(k){a[k]=!1,o.hasOwnProperty(k)&&Object.keys(o[k]).forEach(function(A){delete o[k][A],a[A]&&u(A)})}function c(k){var A=!1;i.push(k),a[k]=!0;var L,_;for(L=0;L=k})}function d(k){h(k);for(var A=t,L=SWt(A),_=L.components.filter(function(q){return q.length>1}),C=1/0,M,g=0;g<_.length;g++)for(var P=0;P<_[g].length;P++)_[g][P]{(function(e,t){typeof x7=="object"&&typeof Cje!="undefined"?t(x7,$E(),d7(),PJ(),kje()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,null)})(x7,function(e,t,r,n,i){"use strict";i=i&&i.hasOwnProperty("default")?i.default:i;function a(rt){return rt.target.depth}function o(rt){return rt.depth}function s(rt,ot){return ot-1-rt.height}function l(rt,ot){return rt.sourceLinks.length?rt.depth:ot-1}function u(rt){return rt.targetLinks.length?rt.depth:rt.sourceLinks.length?t.min(rt.sourceLinks,a)-1:0}function c(rt){return function(){return rt}}var f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(rt){return typeof rt}:function(rt){return rt&&typeof Symbol=="function"&&rt.constructor===Symbol&&rt!==Symbol.prototype?"symbol":typeof rt};function h(rt,ot){return v(rt.source,ot.source)||rt.index-ot.index}function d(rt,ot){return v(rt.target,ot.target)||rt.index-ot.index}function v(rt,ot){return rt.partOfCycle===ot.partOfCycle?rt.y0-ot.y0:rt.circularLinkType==="top"||ot.circularLinkType==="bottom"?-1:1}function x(rt){return rt.value}function b(rt){return(rt.y0+rt.y1)/2}function p(rt){return b(rt.source)}function E(rt){return b(rt.target)}function k(rt){return rt.index}function A(rt){return rt.nodes}function L(rt){return rt.links}function _(rt,ot){var Rt=rt.get(ot);if(!Rt)throw new Error("missing: "+ot);return Rt}function C(rt,ot){return ot(rt)}var M=25,g=10,P=.3;function T(){var rt=0,ot=0,Rt=1,kt=1,Ct=24,Yt,xr=k,er=l,Ke=A,xt=L,bt=32,Lt=2,St,Et=null;function dt(){var ut={nodes:Ke.apply(null,arguments),links:xt.apply(null,arguments)};Ht(ut),F(ut,xr,Et),$t(ut),Br(ut),q(ut,xr),Or(ut,bt,xr),Nr(ut);for(var Ne=4,Ye=0;Ye0?Ne+M+g:Ne,Ye=Ye>0?Ye+M+g:Ye,Ve=Ve>0?Ve+M+g:Ve,Xe=Xe>0?Xe+M+g:Xe,{top:Ne,bottom:Ye,left:Xe,right:Ve}}function _r(ut,Ne){var Ye=t.max(ut.nodes,function(lt){return lt.column}),Ve=Rt-rt,Xe=kt-ot,ht=Ve+Ne.right+Ne.left,Le=Xe+Ne.top+Ne.bottom,xe=Ve/ht,Se=Xe/Le;return rt=rt*xe+Ne.left,Rt=Ne.right==0?Rt:Rt*xe,ot=ot*Se+Ne.top,kt=kt*Se,ut.nodes.forEach(function(lt){lt.x0=rt+lt.column*((Rt-rt-Ct)/Ye),lt.x1=lt.x0+Ct}),Se}function Br(ut){var Ne,Ye,Ve;for(Ne=ut.nodes,Ye=[],Ve=0;Ne.length;++Ve,Ne=Ye,Ye=[])Ne.forEach(function(Xe){Xe.depth=Ve,Xe.sourceLinks.forEach(function(ht){Ye.indexOf(ht.target)<0&&!ht.circular&&Ye.push(ht.target)})});for(Ne=ut.nodes,Ye=[],Ve=0;Ne.length;++Ve,Ne=Ye,Ye=[])Ne.forEach(function(Xe){Xe.height=Ve,Xe.targetLinks.forEach(function(ht){Ye.indexOf(ht.source)<0&&!ht.circular&&Ye.push(ht.source)})});ut.nodes.forEach(function(Xe){Xe.column=Math.floor(er.call(null,Xe,Ve))})}function Or(ut,Ne,Ye){var Ve=r.nest().key(function(lt){return lt.column}).sortKeys(t.ascending).entries(ut.nodes).map(function(lt){return lt.values});Le(Ye),Se();for(var Xe=1,ht=Ne;ht>0;--ht)xe(Xe*=.99,Ye),Se();function Le(lt){if(St){var Gt=1/0;Ve.forEach(function(ai){var jr=kt*St/(ai.length+1);Gt=jr0))if(ai==0&&Qr==1)ri=jr.y1-jr.y0,jr.y0=kt/2-ri/2,jr.y1=kt/2+ri/2;else if(ai==Vt-1&&Qr==1)ri=jr.y1-jr.y0,jr.y0=kt/2-ri/2,jr.y1=kt/2+ri/2;else{var bi=0,nn=t.mean(jr.sourceLinks,E),Wi=t.mean(jr.targetLinks,p);nn&&Wi?bi=(nn+Wi)/2:bi=nn||Wi;var Ni=(bi-b(jr))*lt;jr.y0+=Ni,jr.y1+=Ni}})})}function Se(){Ve.forEach(function(lt){var Gt,Vt,ar=ot,Qr=lt.length,ai;for(lt.sort(v),ai=0;ai0&&(Gt.y0+=Vt,Gt.y1+=Vt),ar=Gt.y1+Yt;if(Vt=ar-Yt-kt,Vt>0)for(ar=Gt.y0-=Vt,Gt.y1-=Vt,ai=Qr-2;ai>=0;--ai)Gt=lt[ai],Vt=Gt.y1+Yt-ar,Vt>0&&(Gt.y0-=Vt,Gt.y1-=Vt),ar=Gt.y0})}}function Nr(ut){ut.nodes.forEach(function(Ne){Ne.sourceLinks.sort(d),Ne.targetLinks.sort(h)}),ut.nodes.forEach(function(Ne){var Ye=Ne.y0,Ve=Ye,Xe=Ne.y1,ht=Xe;Ne.sourceLinks.forEach(function(Le){Le.circular?(Le.y0=Xe-Le.width/2,Xe=Xe-Le.width):(Le.y0=Ye+Le.width/2,Ye+=Le.width)}),Ne.targetLinks.forEach(function(Le){Le.circular?(Le.y1=ht-Le.width/2,ht=ht-Le.width):(Le.y1=Ve+Le.width/2,Ve+=Le.width)})})}return dt}function F(rt,ot,Rt){var kt=0;if(Rt===null){for(var Ct=[],Yt=0;Ytot.source.column)}function X(rt,ot){var Rt=0;rt.sourceLinks.forEach(function(Ct){Rt=Ct.circular&&!ct(Ct,ot)?Rt+1:Rt});var kt=0;return rt.targetLinks.forEach(function(Ct){kt=Ct.circular&&!ct(Ct,ot)?kt+1:kt}),Rt+kt}function G(rt){var ot=rt.source.sourceLinks,Rt=0;ot.forEach(function(Yt){Rt=Yt.circular?Rt+1:Rt});var kt=rt.target.targetLinks,Ct=0;return kt.forEach(function(Yt){Ct=Yt.circular?Ct+1:Ct}),!(Rt>1||Ct>1)}function N(rt,ot,Rt){return rt.sort(ae),rt.forEach(function(kt,Ct){var Yt=0;if(ct(kt,Rt)&&G(kt))kt.circularPathData.verticalBuffer=Yt+kt.width/2;else{var xr=0;for(xr;xrYt?er:Yt}kt.circularPathData.verticalBuffer=Yt+kt.width/2}}),rt}function W(rt,ot,Rt,kt){var Ct=5,Yt=t.min(rt.links,function(Ke){return Ke.source.y0});rt.links.forEach(function(Ke){Ke.circular&&(Ke.circularPathData={})});var xr=rt.links.filter(function(Ke){return Ke.circularLinkType=="top"});N(xr,ot,kt);var er=rt.links.filter(function(Ke){return Ke.circularLinkType=="bottom"});N(er,ot,kt),rt.links.forEach(function(Ke){if(Ke.circular){if(Ke.circularPathData.arcRadius=Ke.width+g,Ke.circularPathData.leftNodeBuffer=Ct,Ke.circularPathData.rightNodeBuffer=Ct,Ke.circularPathData.sourceWidth=Ke.source.x1-Ke.source.x0,Ke.circularPathData.sourceX=Ke.source.x0+Ke.circularPathData.sourceWidth,Ke.circularPathData.targetX=Ke.target.x0,Ke.circularPathData.sourceY=Ke.y0,Ke.circularPathData.targetY=Ke.y1,ct(Ke,kt)&&G(Ke))Ke.circularPathData.leftSmallArcRadius=g+Ke.width/2,Ke.circularPathData.leftLargeArcRadius=g+Ke.width/2,Ke.circularPathData.rightSmallArcRadius=g+Ke.width/2,Ke.circularPathData.rightLargeArcRadius=g+Ke.width/2,Ke.circularLinkType=="bottom"?(Ke.circularPathData.verticalFullExtent=Ke.source.y1+M+Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.rightLargeArcRadius):(Ke.circularPathData.verticalFullExtent=Ke.source.y0-M-Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.rightLargeArcRadius);else{var xt=Ke.source.column,bt=Ke.circularLinkType,Lt=rt.links.filter(function(dt){return dt.source.column==xt&&dt.circularLinkType==bt});Ke.circularLinkType=="bottom"?Lt.sort(Me):Lt.sort(_e);var St=0;Lt.forEach(function(dt,Ht){dt.circularLinkID==Ke.circularLinkID&&(Ke.circularPathData.leftSmallArcRadius=g+Ke.width/2+St,Ke.circularPathData.leftLargeArcRadius=g+Ke.width/2+Ht*ot+St),St=St+dt.width}),xt=Ke.target.column,Lt=rt.links.filter(function(dt){return dt.target.column==xt&&dt.circularLinkType==bt}),Ke.circularLinkType=="bottom"?Lt.sort(ge):Lt.sort(ke),St=0,Lt.forEach(function(dt,Ht){dt.circularLinkID==Ke.circularLinkID&&(Ke.circularPathData.rightSmallArcRadius=g+Ke.width/2+St,Ke.circularPathData.rightLargeArcRadius=g+Ke.width/2+Ht*ot+St),St=St+dt.width}),Ke.circularLinkType=="bottom"?(Ke.circularPathData.verticalFullExtent=Math.max(Rt,Ke.source.y1,Ke.target.y1)+M+Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.rightLargeArcRadius):(Ke.circularPathData.verticalFullExtent=Yt-M-Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.rightLargeArcRadius)}Ke.circularPathData.leftInnerExtent=Ke.circularPathData.sourceX+Ke.circularPathData.leftNodeBuffer,Ke.circularPathData.rightInnerExtent=Ke.circularPathData.targetX-Ke.circularPathData.rightNodeBuffer,Ke.circularPathData.leftFullExtent=Ke.circularPathData.sourceX+Ke.circularPathData.leftLargeArcRadius+Ke.circularPathData.leftNodeBuffer,Ke.circularPathData.rightFullExtent=Ke.circularPathData.targetX-Ke.circularPathData.rightLargeArcRadius-Ke.circularPathData.rightNodeBuffer}if(Ke.circular)Ke.path=re(Ke);else{var Et=n.linkHorizontal().source(function(dt){var Ht=dt.source.x0+(dt.source.x1-dt.source.x0),$t=dt.y0;return[Ht,$t]}).target(function(dt){var Ht=dt.target.x0,$t=dt.y1;return[Ht,$t]});Ke.path=Et(Ke)}})}function re(rt){var ot="";return rt.circularLinkType=="top"?ot="M"+rt.circularPathData.sourceX+" "+rt.circularPathData.sourceY+" L"+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.sourceY+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftSmallArcRadius+" 0 0 0 "+rt.circularPathData.leftFullExtent+" "+(rt.circularPathData.sourceY-rt.circularPathData.leftSmallArcRadius)+" L"+rt.circularPathData.leftFullExtent+" "+rt.circularPathData.verticalLeftInnerExtent+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftLargeArcRadius+" 0 0 0 "+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.verticalFullExtent+" L"+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.verticalFullExtent+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightLargeArcRadius+" 0 0 0 "+rt.circularPathData.rightFullExtent+" "+rt.circularPathData.verticalRightInnerExtent+" L"+rt.circularPathData.rightFullExtent+" "+(rt.circularPathData.targetY-rt.circularPathData.rightSmallArcRadius)+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightSmallArcRadius+" 0 0 0 "+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.targetY+" L"+rt.circularPathData.targetX+" "+rt.circularPathData.targetY:ot="M"+rt.circularPathData.sourceX+" "+rt.circularPathData.sourceY+" L"+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.sourceY+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftSmallArcRadius+" 0 0 1 "+rt.circularPathData.leftFullExtent+" "+(rt.circularPathData.sourceY+rt.circularPathData.leftSmallArcRadius)+" L"+rt.circularPathData.leftFullExtent+" "+rt.circularPathData.verticalLeftInnerExtent+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftLargeArcRadius+" 0 0 1 "+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.verticalFullExtent+" L"+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.verticalFullExtent+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightLargeArcRadius+" 0 0 1 "+rt.circularPathData.rightFullExtent+" "+rt.circularPathData.verticalRightInnerExtent+" L"+rt.circularPathData.rightFullExtent+" "+(rt.circularPathData.targetY+rt.circularPathData.rightSmallArcRadius)+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightSmallArcRadius+" 0 0 1 "+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.targetY+" L"+rt.circularPathData.targetX+" "+rt.circularPathData.targetY,ot}function ae(rt,ot){return ie(rt)==ie(ot)?rt.circularLinkType=="bottom"?Me(rt,ot):_e(rt,ot):ie(ot)-ie(rt)}function _e(rt,ot){return rt.y0-ot.y0}function Me(rt,ot){return ot.y0-rt.y0}function ke(rt,ot){return rt.y1-ot.y1}function ge(rt,ot){return ot.y1-rt.y1}function ie(rt){return rt.target.column-rt.source.column}function Te(rt){return rt.target.x0-rt.source.x1}function Ee(rt,ot){var Rt=V(rt),kt=Te(ot)/Math.tan(Rt),Ct=nt(rt)=="up"?rt.y1+kt:rt.y1-kt;return Ct}function Ae(rt,ot){var Rt=V(rt),kt=Te(ot)/Math.tan(Rt),Ct=nt(rt)=="up"?rt.y1-kt:rt.y1+kt;return Ct}function ze(rt,ot,Rt,kt){rt.links.forEach(function(Ct){if(!Ct.circular&&Ct.target.column-Ct.source.column>1){var Yt=Ct.source.column+1,xr=Ct.target.column-1,er=1,Ke=xr-Yt+1;for(er=1;Yt<=xr;Yt++,er++)rt.nodes.forEach(function(xt){if(xt.column==Yt){var bt=er/(Ke+1),Lt=Math.pow(1-bt,3),St=3*bt*Math.pow(1-bt,2),Et=3*Math.pow(bt,2)*(1-bt),dt=Math.pow(bt,3),Ht=Lt*Ct.y0+St*Ct.y0+Et*Ct.y1+dt*Ct.y1,$t=Ht-Ct.width/2,fr=Ht+Ct.width/2,_r;$t>xt.y0&&$txt.y0&&frxt.y1&&me(Br,_r,ot,Rt)})):$txt.y1&&(_r=fr-xt.y0+10,xt=me(xt,_r,ot,Rt),rt.nodes.forEach(function(Br){C(Br,kt)==C(xt,kt)||Br.column!=xt.column||Br.y0xt.y1&&me(Br,_r,ot,Rt)}))}})}})}function Ce(rt,ot){return rt.y0>ot.y0&&rt.y0ot.y0&&rt.y1ot.y1}function me(rt,ot,Rt,kt){return rt.y0+ot>=Rt&&rt.y1+ot<=kt&&(rt.y0=rt.y0+ot,rt.y1=rt.y1+ot,rt.targetLinks.forEach(function(Ct){Ct.y1=Ct.y1+ot}),rt.sourceLinks.forEach(function(Ct){Ct.y0=Ct.y0+ot})),rt}function Re(rt,ot,Rt,kt){rt.nodes.forEach(function(Ct){kt&&Ct.y+(Ct.y1-Ct.y0)>ot&&(Ct.y=Ct.y-(Ct.y+(Ct.y1-Ct.y0)-ot));var Yt=rt.links.filter(function(Ke){return C(Ke.source,Rt)==C(Ct,Rt)}),xr=Yt.length;xr>1&&Yt.sort(function(Ke,xt){if(!Ke.circular&&!xt.circular){if(Ke.target.column==xt.target.column)return Ke.y1-xt.y1;if(Ge(Ke,xt)){if(Ke.target.column>xt.target.column){var bt=Ae(xt,Ke);return Ke.y1-bt}if(xt.target.column>Ke.target.column){var Lt=Ae(Ke,xt);return Lt-xt.y1}}else return Ke.y1-xt.y1}if(Ke.circular&&!xt.circular)return Ke.circularLinkType=="top"?-1:1;if(xt.circular&&!Ke.circular)return xt.circularLinkType=="top"?1:-1;if(Ke.circular&&xt.circular)return Ke.circularLinkType===xt.circularLinkType&&Ke.circularLinkType=="top"?Ke.target.column===xt.target.column?Ke.target.y1-xt.target.y1:xt.target.column-Ke.target.column:Ke.circularLinkType===xt.circularLinkType&&Ke.circularLinkType=="bottom"?Ke.target.column===xt.target.column?xt.target.y1-Ke.target.y1:Ke.target.column-xt.target.column:Ke.circularLinkType=="top"?-1:1});var er=Ct.y0;Yt.forEach(function(Ke){Ke.y0=er+Ke.width/2,er=er+Ke.width}),Yt.forEach(function(Ke,xt){if(Ke.circularLinkType=="bottom"){var bt=xt+1,Lt=0;for(bt;bt1&&Ct.sort(function(er,Ke){if(!er.circular&&!Ke.circular){if(er.source.column==Ke.source.column)return er.y0-Ke.y0;if(Ge(er,Ke)){if(Ke.source.column0?"up":"down"}function ct(rt,ot){return C(rt.source,ot)==C(rt.target,ot)}function qt(rt,ot,Rt){var kt=rt.nodes,Ct=rt.links,Yt=!1,xr=!1;if(Ct.forEach(function(St){St.circularLinkType=="top"?Yt=!0:St.circularLinkType=="bottom"&&(xr=!0)}),Yt==!1||xr==!1){var er=t.min(kt,function(St){return St.y0}),Ke=t.max(kt,function(St){return St.y1}),xt=Ke-er,bt=Rt-ot,Lt=bt/xt;kt.forEach(function(St){var Et=(St.y1-St.y0)*Lt;St.y0=(St.y0-er)*Lt,St.y1=St.y0+Et}),Ct.forEach(function(St){St.y0=(St.y0-er)*Lt,St.y1=(St.y1-er)*Lt,St.width=St.width*Lt})}}e.sankeyCircular=T,e.sankeyCenter=u,e.sankeyLeft=o,e.sankeyRight=s,e.sankeyJustify=l,Object.defineProperty(e,"__esModule",{value:!0})})});var IJ=ye((x_r,Pje)=>{"use strict";Pje.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}});var Gje=ye((b_r,Hje)=>{"use strict";var Ije=bje(),MWt=(R2(),B1(I2)).interpolateNumber,CA=xa(),Gk=Mje(),EWt=Lje(),pu=IJ(),LA=id(),aw=va(),kWt=ao(),p1=Mr(),zJ=p1.strTranslate,CWt=p1.strRotate,FJ=Km(),jk=FJ.keyFun,b7=FJ.repeat,Oje=FJ.unwrap,Rje=Pl(),LWt=ba(),Bje=Nh(),PWt=Bje.CAP_SHIFT,IWt=Bje.LINE_SPACING,RWt=3;function DWt(e,t,r){var n=Oje(t),i=n.trace,a=i.domain,o=i.orientation==="h",s=i.node.pad,l=i.node.thickness,u={justify:Gk.sankeyJustify,left:Gk.sankeyLeft,right:Gk.sankeyRight,center:Gk.sankeyCenter}[i.node.align],c=e.width*(a.x[1]-a.x[0]),f=e.height*(a.y[1]-a.y[0]),h=n._nodes,d=n._links,v=n.circular,x;v?x=EWt.sankeyCircular().circularLinkGap(0):x=Gk.sankey(),x.iterations(pu.sankeyIterations).size(o?[c,f]:[f,c]).nodeWidth(l).nodePadding(s).nodeId(function(V){return V.pointNumber}).nodeAlign(u).nodes(h).links(d);var b=x();x.nodePadding()=N||(G=N-X.y0,G>1e-6&&(X.y0+=G,X.y1+=G)),N=X.y1+s})}function P(V){var H=V.map(function(_e,Me){return{x0:_e.x0,index:Me}}).sort(function(_e,Me){return _e.x0-Me.x0}),X=[],G=-1,N,W=-1/0,re;for(p=0;pW+l&&(G+=1,N=ae.x0),W=ae.x0,X[G]||(X[G]=[]),X[G].push(ae),re=N-ae.x0,ae.x0+=re,ae.x1+=re}return X}if(i.node.x.length&&i.node.y.length){for(p=0;p0?" L "+i.targetX+" "+i.targetY:"")+"Z"):(r="M "+(i.targetX-t)+" "+(i.targetY-n)+" L "+(i.rightInnerExtent-t)+" "+(i.targetY-n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightSmallArcRadius+n)+" 0 0 0 "+(i.rightFullExtent-n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" L "+(i.rightFullExtent-n-t)+" "+i.verticalRightInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-n-t)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent+n-t-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:a?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent-t-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.leftFullExtent+n+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent+n)+" L "+i.leftInnerExtent+" "+(i.verticalFullExtent+n)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent,r+=" L "+(i.leftFullExtent+n)+" "+(i.sourceY+i.leftSmallArcRadius)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftSmallArcRadius+n)+" 0 0 0 "+i.leftInnerExtent+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY+n)+" L "+i.leftInnerExtent+" "+(i.sourceY+n)+" A "+(i.leftLargeArcRadius-n)+" "+(i.leftSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n)+" "+(i.sourceY+i.leftSmallArcRadius)+" L "+(i.leftFullExtent-n)+" "+i.verticalLeftInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.rightFullExtent+n-t+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:a?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent-t-n)+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:r+=" A "+(i.leftLargeArcRadius-n)+" "+(i.leftLargeArcRadius-n)+" 0 0 1 "+i.leftInnerExtent+" "+(i.verticalFullExtent-n)+" L "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightLargeArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent,r+=" L "+(i.rightFullExtent+n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightInnerExtent-t)+" "+(i.targetY+n)+" L "+(i.targetX-t)+" "+(i.targetY+n)+(t>0?" L "+i.targetX+" "+i.targetY:"")+"Z"),r}function qJ(){var e=.5;function t(r){var n=r.linkArrowLength;if(r.link.circular)return FWt(r.link,n);var i=Math.abs((r.link.target.x0-r.link.source.x1)/2);n>i&&(n=i);var a=r.link.source.x1,o=r.link.target.x0-n,s=MWt(a,o),l=s(e),u=s(1-e),c=r.link.y0-r.link.width/2,f=r.link.y0+r.link.width/2,h=r.link.y1-r.link.width/2,d=r.link.y1+r.link.width/2,v="M"+a+","+c,x="C"+l+","+c+" "+u+","+h+" "+o+","+h,b="C"+u+","+d+" "+l+","+f+" "+a+","+f,p=n>0?"L"+(o+n)+","+(h+r.link.width/2):"";return p+="L"+o+","+d,v+x+p+b+"Z"}return t}function qWt(e,t){var r=LA(t.color),n=pu.nodePadAcross,i=e.nodePad/2;t.dx=t.x1-t.x0,t.dy=t.y1-t.y0;var a=t.dx,o=Math.max(.5,t.dy),s="node_"+t.pointNumber;return t.group&&(s=p1.randstr()),t.trace=e.trace,t.curveNumber=e.trace.index,{index:t.pointNumber,key:s,partOfGroup:t.partOfGroup||!1,group:t.group,traceId:e.key,trace:e.trace,node:t,nodePad:e.nodePad,nodeLineColor:e.nodeLineColor,nodeLineWidth:e.nodeLineWidth,textFont:e.textFont,size:e.horizontal?e.height:e.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:e.horizontal?t.dy/2+1:t.dx/2+1,left:t.originalLayer===1,sizeAcross:e.width,forceLayouts:e.forceLayouts,horizontal:e.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:aw.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:e.valueFormat,valueSuffix:e.valueSuffix,sankey:e.sankey,graph:e.graph,arrangement:e.arrangement,uniqueNodeLabelPathId:[e.guid,e.key,s].join("_"),interactionState:e.interactionState,figure:e}}function DJ(e){e.attr("transform",function(t){return zJ(t.node.x0.toFixed(3),t.node.y0.toFixed(3))})}function OWt(e){e.call(DJ)}function Nje(e,t){e.call(OWt),t.attr("d",qJ())}function Dje(e){e.attr("width",function(t){return t.node.x1-t.node.x0}).attr("height",function(t){return t.visibleHeight})}function RJ(e){return e.link.width>1||e.linkLineWidth>0}function zje(e){var t=zJ(e.translateX,e.translateY);return t+(e.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function Fje(e,t,r){e.on(".basic",null).on("mouseover.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.hover(this,n,t),n.interactionState.hovered=[this,n])}).on("mousemove.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.follow(this,n),n.interactionState.hovered=[this,n])}).on("mouseout.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.unhover(this,n,t),n.interactionState.hovered=!1)}).on("click.basic",function(n){n.interactionState.hovered&&(r.unhover(this,n,t),n.interactionState.hovered=!1),!n.interactionState.dragInProgress&&!n.partOfGroup&&r.select(this,n,t)})}function BWt(e,t,r,n){var i=CA.behavior.drag().origin(function(a){return{x:a.node.x0+a.visibleWidth/2,y:a.node.y0+a.visibleHeight/2}}).on("dragstart",function(a){if(a.arrangement!=="fixed"&&(p1.ensureSingle(n._fullLayout._infolayer,"g","dragcover",function(s){n._fullLayout._dragCover=s}),p1.raiseToTop(this),a.interactionState.dragInProgress=a.node,qje(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),a.arrangement==="snap")){var o=a.traceId+"|"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):NWt(e,o,a,n),UWt(e,t,a,o,n)}}).on("drag",function(a){if(a.arrangement!=="fixed"){var o=CA.event.x,s=CA.event.y;a.arrangement==="snap"?(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2,a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2):(a.arrangement==="freeform"&&(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2),s=Math.max(0,Math.min(a.size-a.visibleHeight/2,s)),a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2),qje(a.node),a.arrangement!=="snap"&&(a.sankey.update(a.graph),Nje(e.filter(Vje(a)),t))}}).on("dragend",function(a){if(a.arrangement!=="fixed"){a.interactionState.dragInProgress=!1;for(var o=0;o0)window.requestAnimationFrame(a);else{var l=r.node.originalX;r.node.x0=l-r.visibleWidth/2,r.node.x1=l+r.visibleWidth/2,Uje(r,i)}})}function VWt(e,t,r,n){return function(){for(var a=0,o=0;o0&&n.forceLayouts[t].alpha(0)}}function Uje(e,t){for(var r=[],n=[],i=0;i{"use strict";var Zv=xa(),BJ=Mr(),w7=BJ.numberFormat,WWt=Gje(),PA=Nc(),ZWt=va(),Sx=IJ().cn,Wk=BJ._;function jje(e){return e!==""}function IA(e,t){return e.filter(function(r){return r.key===t.traceId})}function Wje(e,t){Zv.select(e).select("path").style("fill-opacity",t),Zv.select(e).select("rect").style("fill-opacity",t)}function Zje(e){Zv.select(e).select("text.name").style("fill","black")}function Xje(e){return function(t){return e.node.sourceLinks.indexOf(t.link)!==-1||e.node.targetLinks.indexOf(t.link)!==-1}}function Yje(e){return function(t){return t.node.sourceLinks.indexOf(e.link)!==-1||t.node.targetLinks.indexOf(e.link)!==-1}}function Kje(e,t,r){t&&r&&IA(r,t).selectAll("."+Sx.sankeyLink).filter(Xje(t)).call(Jje.bind(0,t,r,!1))}function OJ(e,t,r){t&&r&&IA(r,t).selectAll("."+Sx.sankeyLink).filter(Xje(t)).call($je.bind(0,t,r,!1))}function Jje(e,t,r,n){n.style("fill",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverHue}).style("fill-opacity",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverAlpha}),n.each(function(i){var a=i.link.label;a!==""&&IA(t,e).selectAll("."+Sx.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverHue}).style("fill-opacity",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverAlpha})}),r&&IA(t,e).selectAll("."+Sx.sankeyNode).filter(Yje(e)).call(Kje)}function $je(e,t,r,n){n.style("fill",function(i){return i.tinyColorHue}).style("fill-opacity",function(i){return i.tinyColorAlpha}),n.each(function(i){var a=i.link.label;a!==""&&IA(t,e).selectAll("."+Sx.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){return o.tinyColorHue}).style("fill-opacity",function(o){return o.tinyColorAlpha})}),r&&IA(t,e).selectAll(Sx.sankeyNode).filter(Yje(e)).call(OJ)}function lf(e,t){var r=e.hoverlabel||{},n=BJ.nestedProperty(r,t).get();return Array.isArray(n)?!1:n}Qje.exports=function(t,r){for(var n=t._fullLayout,i=n._paper,a=n._size,o=0;o"),color:lf(C,"bgcolor")||ZWt.addOpacity(F.color,1),borderColor:lf(C,"bordercolor"),fontFamily:lf(C,"font.family"),fontSize:lf(C,"font.size"),fontColor:lf(C,"font.color"),fontWeight:lf(C,"font.weight"),fontStyle:lf(C,"font.style"),fontVariant:lf(C,"font.variant"),fontTextcase:lf(C,"font.textcase"),fontLineposition:lf(C,"font.lineposition"),fontShadow:lf(C,"font.shadow"),nameLength:lf(C,"namelength"),textAlign:lf(C,"align"),idealAlign:Zv.event.x"),color:lf(C,"bgcolor")||_.tinyColorHue,borderColor:lf(C,"bordercolor"),fontFamily:lf(C,"font.family"),fontSize:lf(C,"font.size"),fontColor:lf(C,"font.color"),fontWeight:lf(C,"font.weight"),fontStyle:lf(C,"font.style"),fontVariant:lf(C,"font.variant"),fontTextcase:lf(C,"font.textcase"),fontLineposition:lf(C,"font.lineposition"),fontShadow:lf(C,"font.shadow"),nameLength:lf(C,"namelength"),textAlign:lf(C,"align"),idealAlign:"left",hovertemplate:C.hovertemplate,hovertemplateLabels:V,eventData:[_.node]},{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:t});Wje(G,.85),Zje(G)}}},A=function(L,_,C){t._fullLayout.hovermode!==!1&&(Zv.select(L).call(OJ,_,C),_.node.trace.node.hoverinfo!=="skip"&&(_.node.fullData=_.node.trace,t.emit("plotly_unhover",{event:Zv.event,points:[_.node]})),PA.loneUnhover(n._hoverlayer.node()))};WWt(t,i,r,{width:a.w,height:a.h,margin:{t:a.t,r:a.r,b:a.b,l:a.l}},{linkEvents:{hover:u,follow:x,unhover:b,select:l},nodeEvents:{hover:E,follow:k,unhover:A,select:p}})}});var eWe=ye(ow=>{"use strict";var XWt=Bu().overrideAll,YWt=kd().getModuleCalcData,KWt=NJ(),JWt=N1(),$Wt=Tg(),QWt=gv(),eZt=wf().prepSelect,UJ=Mr(),tZt=ba(),T7="sankey";ow.name=T7;ow.baseLayoutAttrOverrides=XWt({hoverlabel:JWt.hoverlabel},"plot","nested");ow.plot=function(e){var t=YWt(e.calcdata,T7)[0];KWt(e,t),ow.updateFx(e)};ow.clean=function(e,t,r,n){var i=n._has&&n._has(T7),a=t._has&&t._has(T7);i&&!a&&(n._paperdiv.selectAll(".sankey").remove(),n._paperdiv.selectAll(".bgsankey").remove())};ow.updateFx=function(e){for(var t=0;t{"use strict";tWe.exports=function(t,r){for(var n=t.cd,i=[],a=n[0].trace,o=a._sankey.graph.nodes,s=0;s{"use strict";iWe.exports={attributes:CJ(),supplyDefaults:sje(),calc:hje(),plot:NJ(),moduleType:"trace",name:"sankey",basePlotModule:eWe(),selectPoints:rWe(),categories:["noOpacity"],meta:{}}});var oWe=ye((M_r,aWe)=>{"use strict";aWe.exports=nWe()});var lWe=ye(RA=>{"use strict";var sWe=Xu();RA.name="indicator";RA.plot=function(e,t,r,n){sWe.plotBasePlot(RA.name,e,t,r,n)};RA.clean=function(e,t,r,n){sWe.cleanBasePlot(RA.name,e,t,r,n)}});var HJ=ye((k_r,vWe)=>{"use strict";var Mx=no().extendFlat,cWe=no().extendDeep,iZt=Bu().overrideAll,fWe=Su(),hWe=dh(),nZt=Ju().attributes,Sf=Cd(),aZt=Vs().templatedArray,A7=HT(),uWe=Oc().descriptionOnlyNumbers,VJ=fWe({editType:"plot",colorEditType:"plot"}),Zk={color:{valType:"color",editType:"plot"},line:{color:{valType:"color",dflt:hWe.defaultLine,editType:"plot"},width:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},thickness:{valType:"number",min:0,max:1,dflt:1,editType:"plot"},editType:"calc"},dWe={valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},oZt=aZt("step",cWe({},Zk,{range:dWe}));vWe.exports={mode:{valType:"flaglist",editType:"calc",flags:["number","delta","gauge"],dflt:"number"},value:{valType:"number",editType:"calc",anim:!0},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},domain:nZt({name:"indicator",trace:!0,editType:"calc"}),title:{text:{valType:"string",editType:"plot"},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},font:Mx({},VJ,{}),editType:"plot"},number:{valueformat:{valType:"string",dflt:"",editType:"plot",description:uWe("value")},font:Mx({},VJ,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"plot"},delta:{reference:{valType:"number",editType:"calc"},position:{valType:"enumerated",values:["top","bottom","left","right"],dflt:"bottom",editType:"plot"},relative:{valType:"boolean",editType:"plot",dflt:!1},valueformat:{valType:"string",editType:"plot",description:uWe("value")},increasing:{symbol:{valType:"string",dflt:A7.INCREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:A7.INCREASING.COLOR,editType:"plot"},editType:"plot"},decreasing:{symbol:{valType:"string",dflt:A7.DECREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:A7.DECREASING.COLOR,editType:"plot"},editType:"plot"},font:Mx({},VJ,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"calc"},gauge:{shape:{valType:"enumerated",editType:"plot",dflt:"angular",values:["angular","bullet"]},bar:cWe({},Zk,{color:{dflt:"green"}}),bgcolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:hWe.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:1,editType:"plot"},axis:iZt({range:dWe,visible:Mx({},Sf.visible,{dflt:!0}),tickmode:Sf.minor.tickmode,nticks:Sf.nticks,tick0:Sf.tick0,dtick:Sf.dtick,tickvals:Sf.tickvals,ticktext:Sf.ticktext,ticks:Mx({},Sf.ticks,{dflt:"outside"}),ticklen:Sf.ticklen,tickwidth:Sf.tickwidth,tickcolor:Sf.tickcolor,ticklabelstep:Sf.ticklabelstep,showticklabels:Sf.showticklabels,labelalias:Sf.labelalias,tickfont:fWe({}),tickangle:Sf.tickangle,tickformat:Sf.tickformat,tickformatstops:Sf.tickformatstops,tickprefix:Sf.tickprefix,showtickprefix:Sf.showtickprefix,ticksuffix:Sf.ticksuffix,showticksuffix:Sf.showticksuffix,separatethousands:Sf.separatethousands,exponentformat:Sf.exponentformat,minexponent:Sf.minexponent,showexponent:Sf.showexponent,editType:"plot"},"plot"),steps:oZt,threshold:{line:{color:Mx({},Zk.line.color,{}),width:Mx({},Zk.line.width,{dflt:1}),editType:"plot"},thickness:Mx({},Zk.thickness,{dflt:.85}),value:{valType:"number",editType:"calc",dflt:!1},editType:"plot"},editType:"plot"}}});var GJ=ye((C_r,pWe)=>{"use strict";pWe.exports={defaultNumberFontSize:80,bulletNumberDomainSize:.25,bulletPadding:.025,innerRadius:.75,valueThickness:.5,titlePadding:5,horizontalPadding:10}});var yWe=ye((L_r,mWe)=>{"use strict";var ey=Mr(),M7=HJ(),sZt=Ju().defaults,gWe=Vs(),lZt=Zd(),S7=GJ(),uZt=xb(),cZt=T3(),fZt=t_(),hZt=r_();function dZt(e,t,r,n){function i(_,C){return ey.coerce(e,t,M7,_,C)}sZt(t,n,i),i("mode"),t._hasNumber=t.mode.indexOf("number")!==-1,t._hasDelta=t.mode.indexOf("delta")!==-1,t._hasGauge=t.mode.indexOf("gauge")!==-1;var a=i("value");t._range=[0,typeof a=="number"?1.5*a:1];var o=new Array(2),s;if(t._hasNumber){i("number.valueformat");var l=ey.extendFlat({},n.font);l.size=void 0,ey.coerceFont(i,"number.font",l),t.number.font.size===void 0&&(t.number.font.size=S7.defaultNumberFontSize,o[0]=!0),i("number.prefix"),i("number.suffix"),s=t.number.font.size}var u;if(t._hasDelta){var c=ey.extendFlat({},n.font);c.size=void 0,ey.coerceFont(i,"delta.font",c),t.delta.font.size===void 0&&(t.delta.font.size=(t._hasNumber?.5:1)*(s||S7.defaultNumberFontSize),o[1]=!0),i("delta.reference",t.value),i("delta.relative"),i("delta.valueformat",t.delta.relative?"2%":""),i("delta.increasing.symbol"),i("delta.increasing.color"),i("delta.decreasing.symbol"),i("delta.decreasing.color"),i("delta.position"),i("delta.prefix"),i("delta.suffix"),u=t.delta.font.size}t._scaleNumbers=(!t._hasNumber||o[0])&&(!t._hasDelta||o[1])||!1;var f=ey.extendFlat({},n.font);f.size=.25*(s||u||S7.defaultNumberFontSize),ey.coerceFont(i,"title.font",f),i("title.text");var h,d,v,x;function b(_,C){return ey.coerce(h,d,M7.gauge,_,C)}function p(_,C){return ey.coerce(v,x,M7.gauge.axis,_,C)}if(t._hasGauge){h=e.gauge,h||(h={}),d=gWe.newContainer(t,"gauge"),b("shape");var E=t._isBullet=t.gauge.shape==="bullet";E||i("title.align","center");var k=t._isAngular=t.gauge.shape==="angular";k||i("align","center"),b("bgcolor",n.paper_bgcolor),b("borderwidth"),b("bordercolor"),b("bar.color"),b("bar.line.color"),b("bar.line.width");var A=S7.valueThickness*(t.gauge.shape==="bullet"?.5:1);b("bar.thickness",A),lZt(h,d,{name:"steps",handleItemDefaults:vZt}),b("threshold.value"),b("threshold.thickness"),b("threshold.line.width"),b("threshold.line.color"),v={},h&&(v=h.axis||{}),x=gWe.newContainer(d,"axis"),p("visible"),t._range=p("range",t._range);var L={font:n.font,noAutotickangles:!0,outerTicks:!0,noTicklabelshift:!0,noTicklabelstandoff:!0};uZt(v,x,p,"linear"),hZt(v,x,p,"linear",L),fZt(v,x,p,"linear",L),cZt(v,x,p,L)}else i("title.align","center"),i("align","center"),t._isAngular=t._isBullet=!1;t._length=null}function vZt(e,t){function r(n,i){return ey.coerce(e,t,M7.gauge.steps,n,i)}r("color"),r("line.color"),r("line.width"),r("range"),r("thickness")}mWe.exports={supplyDefaults:dZt}});var xWe=ye((P_r,_We)=>{"use strict";function pZt(e,t){var r=[],n=t.value;typeof t._lastValue!="number"&&(t._lastValue=t.value);var i=t._lastValue,a=i;return t._hasDelta&&typeof t.delta.reference=="number"&&(a=t.delta.reference),r[0]={y:n,lastY:i,delta:n-a,relativeDelta:(n-a)/a},r}_We.exports={calc:pZt}});var MWe=ye((I_r,SWe)=>{"use strict";var fw=xa(),gZt=(R2(),B1(I2)).interpolate,bWe=(R2(),B1(I2)).interpolateNumber,Ex=Mr(),mZt=Ex.strScale,Yk=Ex.strTranslate,yZt=Ex.rad2deg,_Zt=Nh().MID_SHIFT,cw=ao(),sw=GJ(),k7=Pl(),av=Qa(),xZt=JM(),bZt=iI(),wZt=Cd(),DA=va(),jJ={left:"start",center:"middle",right:"end"},lw={left:0,center:.5,right:1},wWe=/[yzafpnΒ΅mkMGTPEZY]/;function Kk(e){return e&&e.duration>0}SWe.exports=function(t,r,n,i){var a=t._fullLayout,o;Kk(n)&&i&&(o=i()),Ex.makeTraceGroups(a._indicatorlayer,r,"trace").each(function(s){var l=s[0],u=l.trace,c=fw.select(this),f=u._hasGauge,h=u._isAngular,d=u._isBullet,v=u.domain,x={w:a._size.w*(v.x[1]-v.x[0]),h:a._size.h*(v.y[1]-v.y[0]),l:a._size.l+a._size.w*v.x[0],r:a._size.r+a._size.w*(1-v.x[1]),t:a._size.t+a._size.h*(1-v.y[1]),b:a._size.b+a._size.h*v.y[0]},b=x.l+x.w/2,p=x.t+x.h/2,E=Math.min(x.w/2,x.h),k=sw.innerRadius*E,A,L,_,C=u.align||"center";if(L=p,!f)A=x.l+lw[C]*x.w,_=function(G){return TWe(G,x.w,x.h)};else if(h&&(A=b,L=p+E/2,_=function(G){return EZt(G,.9*k)}),d){var M=sw.bulletPadding,g=1-sw.bulletNumberDomainSize+M;A=x.l+(g+(1-g)*lw[C])*x.w,_=function(G){return TWe(G,(sw.bulletNumberDomainSize-M)*x.w,x.h)}}SZt(t,c,s,{numbersX:A,numbersY:L,numbersScaler:_,transitionOpts:n,onComplete:o});var P,T;f&&(P={range:u.gauge.axis.range,color:u.gauge.bgcolor,line:{color:u.gauge.bordercolor,width:0},thickness:1},T={range:u.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:u.gauge.bordercolor,width:u.gauge.borderwidth},thickness:1});var F=c.selectAll("g.angular").data(h?s:[]);F.exit().remove();var q=c.selectAll("g.angularaxis").data(h?s:[]);q.exit().remove(),h&&AZt(t,c,s,{radius:E,innerRadius:k,gauge:F,layer:q,size:x,gaugeBg:P,gaugeOutline:T,transitionOpts:n,onComplete:o});var V=c.selectAll("g.bullet").data(d?s:[]);V.exit().remove();var H=c.selectAll("g.bulletaxis").data(d?s:[]);H.exit().remove(),d&&TZt(t,c,s,{gauge:V,layer:H,size:x,gaugeBg:P,gaugeOutline:T,transitionOpts:n,onComplete:o});var X=c.selectAll("text.title").data(s);X.exit().remove(),X.enter().append("text").classed("title",!0),X.attr("text-anchor",function(){return d?jJ.right:jJ[u.title.align]}).text(u.title.text).call(cw.font,u.title.font).call(k7.convertToTspans,t),X.attr("transform",function(){var G=x.l+x.w*lw[u.title.align],N,W=sw.titlePadding,re=cw.bBox(X.node());if(f){if(h)if(u.gauge.axis.visible){var ae=cw.bBox(q.node());N=ae.top-W-re.bottom}else N=x.t+x.h/2-E/2-re.bottom-W;d&&(N=L-(re.top+re.bottom)/2,G=x.l-sw.bulletPadding*x.w)}else N=u._numbersTop-W-re.bottom;return Yk(G,N)})})};function TZt(e,t,r,n){var i=r[0].trace,a=n.gauge,o=n.layer,s=n.gaugeBg,l=n.gaugeOutline,u=n.size,c=i.domain,f=n.transitionOpts,h=n.onComplete,d,v,x,b,p;a.enter().append("g").classed("bullet",!0),a.attr("transform",Yk(u.l,u.t)),o.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),o.selectAll("g.xbulletaxistick,path,text").remove();var E=u.h,k=i.gauge.bar.thickness*E,A=c.x[0],L=c.x[0]+(c.x[1]-c.x[0])*(i._hasNumber||i._hasDelta?1-sw.bulletNumberDomainSize:1);d=Xk(e,i.gauge.axis),d._id="xbulletaxis",d.domain=[A,L],d.setScale(),v=av.calcTicks(d),x=av.makeTransTickFn(d),b=av.getTickSigns(d)[2],p=u.t+u.h,d.visible&&(av.drawTicks(e,d,{vals:d.ticks==="inside"?av.clipEnds(d,v):v,layer:o,path:av.makeTickPath(d,p,b),transFn:x}),av.drawLabels(e,d,{vals:v,layer:o,transFn:x,labelFns:av.makeLabelFns(d,p)}));function _(q){q.attr("width",function(V){return Math.max(0,d.c2p(V.range[1])-d.c2p(V.range[0]))}).attr("x",function(V){return d.c2p(V.range[0])}).attr("y",function(V){return .5*(1-V.thickness)*E}).attr("height",function(V){return V.thickness*E})}var C=[s].concat(i.gauge.steps),M=a.selectAll("g.bg-bullet").data(C);M.enter().append("g").classed("bg-bullet",!0).append("rect"),M.select("rect").call(_).call(uw),M.exit().remove();var g=a.selectAll("g.value-bullet").data([i.gauge.bar]);g.enter().append("g").classed("value-bullet",!0).append("rect"),g.select("rect").attr("height",k).attr("y",(E-k)/2).call(uw),Kk(f)?g.select("rect").transition().duration(f.duration).ease(f.easing).each("end",function(){h&&h()}).each("interrupt",function(){h&&h()}).attr("width",Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y)))):g.select("rect").attr("width",typeof r[0].y=="number"?Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y))):0),g.exit().remove();var P=r.filter(function(){return i.gauge.threshold.value||i.gauge.threshold.value===0}),T=a.selectAll("g.threshold-bullet").data(P);T.enter().append("g").classed("threshold-bullet",!0).append("line"),T.select("line").attr("x1",d.c2p(i.gauge.threshold.value)).attr("x2",d.c2p(i.gauge.threshold.value)).attr("y1",(1-i.gauge.threshold.thickness)/2*E).attr("y2",(1-(1-i.gauge.threshold.thickness)/2)*E).call(DA.stroke,i.gauge.threshold.line.color).style("stroke-width",i.gauge.threshold.line.width),T.exit().remove();var F=a.selectAll("g.gauge-outline").data([l]);F.enter().append("g").classed("gauge-outline",!0).append("rect"),F.select("rect").call(_).call(uw),F.exit().remove()}function AZt(e,t,r,n){var i=r[0].trace,a=n.size,o=n.radius,s=n.innerRadius,l=n.gaugeBg,u=n.gaugeOutline,c=[a.l+a.w/2,a.t+a.h/2+o/2],f=n.gauge,h=n.layer,d=n.transitionOpts,v=n.onComplete,x=Math.PI/2;function b(_e){var Me=i.gauge.axis.range[0],ke=i.gauge.axis.range[1],ge=(_e-Me)/(ke-Me)*Math.PI-x;return ge<-x?-x:ge>x?x:ge}function p(_e){return fw.svg.arc().innerRadius((s+o)/2-_e/2*(o-s)).outerRadius((s+o)/2+_e/2*(o-s)).startAngle(-x)}function E(_e){_e.attr("d",function(Me){return p(Me.thickness).startAngle(b(Me.range[0])).endAngle(b(Me.range[1]))()})}var k,A,L,_;f.enter().append("g").classed("angular",!0),f.attr("transform",Yk(c[0],c[1])),h.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),h.selectAll("g.xangularaxistick,path,text").remove(),k=Xk(e,i.gauge.axis),k.type="linear",k.range=i.gauge.axis.range,k._id="xangularaxis",k.ticklabeloverflow="allow",k.setScale();var C=function(_e){return(k.range[0]-_e.x)/(k.range[1]-k.range[0])*Math.PI+Math.PI},M={},g=av.makeLabelFns(k,0),P=g.labelStandoff;M.xFn=function(_e){var Me=C(_e);return Math.cos(Me)*P},M.yFn=function(_e){var Me=C(_e),ke=Math.sin(Me)>0?.2:1;return-Math.sin(Me)*(P+_e.fontSize*ke)+Math.abs(Math.cos(Me))*(_e.fontSize*_Zt)},M.anchorFn=function(_e){var Me=C(_e),ke=Math.cos(Me);return Math.abs(ke)<.1?"middle":ke>0?"start":"end"},M.heightFn=function(_e,Me,ke){var ge=C(_e);return-.5*(1+Math.sin(ge))*ke};var T=function(_e){return Yk(c[0]+o*Math.cos(_e),c[1]-o*Math.sin(_e))};L=function(_e){return T(C(_e))};var F=function(_e){var Me=C(_e);return T(Me)+"rotate("+-yZt(Me)+")"};if(A=av.calcTicks(k),_=av.getTickSigns(k)[2],k.visible){_=k.ticks==="inside"?-1:1;var q=(k.linewidth||1)/2;av.drawTicks(e,k,{vals:A,layer:h,path:"M"+_*q+",0h"+_*k.ticklen,transFn:F}),av.drawLabels(e,k,{vals:A,layer:h,transFn:L,labelFns:M})}var V=[l].concat(i.gauge.steps),H=f.selectAll("g.bg-arc").data(V);H.enter().append("g").classed("bg-arc",!0).append("path"),H.select("path").call(E).call(uw),H.exit().remove();var X=p(i.gauge.bar.thickness),G=f.selectAll("g.value-arc").data([i.gauge.bar]);G.enter().append("g").classed("value-arc",!0).append("path");var N=G.select("path");Kk(d)?(N.transition().duration(d.duration).ease(d.easing).each("end",function(){v&&v()}).each("interrupt",function(){v&&v()}).attrTween("d",MZt(X,b(r[0].lastY),b(r[0].y))),i._lastValue=r[0].y):N.attr("d",typeof r[0].y=="number"?X.endAngle(b(r[0].y)):"M0,0Z"),N.call(uw),G.exit().remove(),V=[];var W=i.gauge.threshold.value;(W||W===0)&&V.push({range:[W,W],color:i.gauge.threshold.color,line:{color:i.gauge.threshold.line.color,width:i.gauge.threshold.line.width},thickness:i.gauge.threshold.thickness});var re=f.selectAll("g.threshold-arc").data(V);re.enter().append("g").classed("threshold-arc",!0).append("path"),re.select("path").call(E).call(uw),re.exit().remove();var ae=f.selectAll("g.gauge-outline").data([u]);ae.enter().append("g").classed("gauge-outline",!0).append("path"),ae.select("path").call(E).call(uw),ae.exit().remove()}function SZt(e,t,r,n){var i=r[0].trace,a=n.numbersX,o=n.numbersY,s=i.align||"center",l=jJ[s],u=n.transitionOpts,c=n.onComplete,f=Ex.ensureSingle(t,"g","numbers"),h,d,v,x=[];i._hasNumber&&x.push("number"),i._hasDelta&&(x.push("delta"),i.delta.position==="left"&&x.reverse());var b=f.selectAll("text").data(x);b.enter().append("text"),b.attr("text-anchor",function(){return l}).attr("class",function(T){return T}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),b.exit().remove();function p(T,F,q,V){if(T.match("s")&&q>=0!=V>=0&&!F(q).slice(-1).match(wWe)&&!F(V).slice(-1).match(wWe)){var H=T.slice().replace("s","f").replace(/\d+/,function(G){return parseInt(G)-1}),X=Xk(e,{tickformat:H});return function(G){return Math.abs(G)<1?av.tickText(X,G).text:F(G)}}else return F}function E(){var T=Xk(e,{tickformat:i.number.valueformat},i._range);T.setScale(),av.prepTicks(T);var F=function(G){return av.tickText(T,G).text},q=i.number.suffix,V=i.number.prefix,H=f.select("text.number");function X(){var G=typeof r[0].y=="number"?V+F(r[0].y)+q:"-";H.text(G).call(cw.font,i.number.font).call(k7.convertToTspans,e)}return Kk(u)?H.transition().duration(u.duration).ease(u.easing).each("end",function(){X(),c&&c()}).each("interrupt",function(){X(),c&&c()}).attrTween("text",function(){var G=fw.select(this),N=bWe(r[0].lastY,r[0].y);i._lastValue=r[0].y;var W=p(i.number.valueformat,F,r[0].lastY,r[0].y);return function(re){G.text(V+W(N(re))+q)}}):X(),h=AWe(V+F(r[0].y)+q,i.number.font,l,e),H}function k(){var T=Xk(e,{tickformat:i.delta.valueformat},i._range);T.setScale(),av.prepTicks(T);var F=function(re){return av.tickText(T,re).text},q=i.delta.suffix,V=i.delta.prefix,H=function(re){var ae=i.delta.relative?re.relativeDelta:re.delta;return ae},X=function(re,ae){return re===0||typeof re!="number"||isNaN(re)?"-":(re>0?i.delta.increasing.symbol:i.delta.decreasing.symbol)+V+ae(re)+q},G=function(re){return re.delta>=0?i.delta.increasing.color:i.delta.decreasing.color};i._deltaLastValue===void 0&&(i._deltaLastValue=H(r[0]));var N=f.select("text.delta");N.call(cw.font,i.delta.font).call(DA.fill,G({delta:i._deltaLastValue}));function W(){N.text(X(H(r[0]),F)).call(DA.fill,G(r[0])).call(k7.convertToTspans,e)}return Kk(u)?N.transition().duration(u.duration).ease(u.easing).tween("text",function(){var re=fw.select(this),ae=H(r[0]),_e=i._deltaLastValue,Me=p(i.delta.valueformat,F,_e,ae),ke=bWe(_e,ae);return i._deltaLastValue=ae,function(ge){re.text(X(ke(ge),Me)),re.call(DA.fill,G({delta:ke(ge)}))}}).each("end",function(){W(),c&&c()}).each("interrupt",function(){W(),c&&c()}):W(),d=AWe(X(H(r[0]),F),i.delta.font,l,e),N}var A=i.mode+i.align,L;if(i._hasDelta&&(L=k(),A+=i.delta.position+i.delta.font.size+i.delta.font.family+i.delta.valueformat,A+=i.delta.increasing.symbol+i.delta.decreasing.symbol,v=d),i._hasNumber&&(E(),A+=i.number.font.size+i.number.font.family+i.number.valueformat+i.number.suffix+i.number.prefix,v=h),i._hasDelta&&i._hasNumber){var _=[(h.left+h.right)/2,(h.top+h.bottom)/2],C=[(d.left+d.right)/2,(d.top+d.bottom)/2],M,g,P=.75*i.delta.font.size;i.delta.position==="left"&&(M=E7(i,"deltaPos",0,-1*(h.width*lw[i.align]+d.width*(1-lw[i.align])+P),A,Math.min),g=_[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:d.left+M,right:h.right,top:Math.min(h.top,d.top+g),bottom:Math.max(h.bottom,d.bottom+g)}),i.delta.position==="right"&&(M=E7(i,"deltaPos",0,h.width*(1-lw[i.align])+d.width*lw[i.align]+P,A,Math.max),g=_[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:h.left,right:d.right+M,top:Math.min(h.top,d.top+g),bottom:Math.max(h.bottom,d.bottom+g)}),i.delta.position==="bottom"&&(M=null,g=d.height,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height,bottom:h.bottom+d.height}),i.delta.position==="top"&&(M=null,g=h.top,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height-d.height,bottom:h.bottom}),L.attr({dx:M,dy:g})}(i._hasNumber||i._hasDelta)&&f.attr("transform",function(){var T=n.numbersScaler(v);A+=T[2];var F=E7(i,"numbersScale",1,T[0],A,Math.min),q;i._scaleNumbers||(F=1),i._isAngular?q=o-F*v.bottom:q=o-F*(v.top+v.bottom)/2,i._numbersTop=F*v.top+q;var V=v[s];s==="center"&&(V=(v.left+v.right)/2);var H=a-F*V;return H=E7(i,"numbersTranslate",0,H,A,Math.max),Yk(H,q)+mZt(F)})}function uw(e){e.each(function(t){DA.stroke(fw.select(this),t.line.color)}).each(function(t){DA.fill(fw.select(this),t.color)}).style("stroke-width",function(t){return t.line.width})}function MZt(e,t,r){return function(){var n=gZt(t,r);return function(i){return e.endAngle(n(i))()}}}function Xk(e,t,r){var n=e._fullLayout,i=Ex.extendFlat({type:"linear",ticks:"outside",range:r,showline:!0},t),a={type:"linear",_id:"x"+t._id},o={letter:"x",font:n.font,noAutotickangles:!0,noHover:!0,noTickson:!0};function s(l,u){return Ex.coerce(i,a,wZt,l,u)}return xZt(i,a,s,o,n),bZt(i,a,s,o),a}function TWe(e,t,r){var n=Math.min(t/e.width,r/e.height);return[n,e,t+"x"+r]}function EZt(e,t){var r=Math.sqrt(e.width/2*(e.width/2)+e.height*e.height),n=t/r;return[n,e,t]}function AWe(e,t,r,n){var i=document.createElementNS("http://www.w3.org/2000/svg","text"),a=fw.select(i);return a.text(e).attr("x",0).attr("y",0).attr("text-anchor",r).attr("data-unformatted",e).call(k7.convertToTspans,n).call(cw.font,t),cw.bBox(a.node())}function E7(e,t,r,n,i,a){var o="_cache"+t;e[o]&&e[o].key===i||(e[o]={key:i,value:r});var s=Ex.aggNums(a,null,[e[o].value,n],2);return e[o].value=s,s}});var kWe=ye((R_r,EWe)=>{"use strict";EWe.exports={moduleType:"trace",name:"indicator",basePlotModule:lWe(),categories:["svg","noOpacity","noHover"],animatable:!0,attributes:HJ(),supplyDefaults:yWe().supplyDefaults,calc:xWe().calc,plot:MWe(),meta:{}}});var LWe=ye((D_r,CWe)=>{"use strict";CWe.exports=kWe()});var WJ=ye((F_r,DWe)=>{"use strict";var PWe=Nb(),C7=no().extendFlat,kZt=Bu().overrideAll,IWe=Su(),CZt=Ju().attributes,RWe=Oc().descriptionOnlyNumbers,z_r=DWe.exports=kZt({domain:CZt({name:"table",trace:!0}),columnwidth:{valType:"number",arrayOk:!0,dflt:null},columnorder:{valType:"data_array"},header:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:RWe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:28},align:C7({},PWe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:C7({},IWe({arrayOk:!0}))},cells:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:RWe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:20},align:C7({},PWe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:C7({},IWe({arrayOk:!0}))}},"calc","from-root")});var FWe=ye((q_r,zWe)=>{"use strict";var ZJ=Mr(),LZt=WJ(),PZt=Ju().defaults;function IZt(e,t){for(var r=e.columnorder||[],n=e.header.values.length,i=r.slice(0,n),a=i.slice().sort(function(l,u){return l-u}),o=i.map(function(l){return a.indexOf(l)}),s=o.length;s{"use strict";var RZt=Km().wrap;qWe.exports=function(){return RZt({})}});var XJ=ye((B_r,BWe)=>{"use strict";BWe.exports={cellPad:8,columnExtentOffset:10,columnTitleOffset:28,emptyHeaderHeight:16,latexCheck:/^\$.*\$$/,goldenRatio:1.618,lineBreaker:"
",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}});var XWe=ye((N_r,ZWe)=>{"use strict";var NWe=XJ(),KJ=no().extendFlat,DZt=uo(),zZt=vv().isTypedArray,L7=vv().isArrayOrTypedArray;ZWe.exports=function(t,r){var n=YJ(r.cells.values),i=function(g){return g.slice(r.header.values.length,g.length)},a=YJ(r.header.values);a.length&&!a[0].length&&(a[0]=[""],a=YJ(a));var o=a.concat(i(n).map(function(){return WWe((a[0]||[""]).length)})),s=r.domain,l=Math.floor(t._fullLayout._size.w*(s.x[1]-s.x[0])),u=Math.floor(t._fullLayout._size.h*(s.y[1]-s.y[0])),c=r.header.values.length?o[0].map(function(){return r.header.height}):[NWe.emptyHeaderHeight],f=n.length?n[0].map(function(){return r.cells.height}):[],h=c.reduce(UWe,0),d=u-h,v=d+NWe.uplift,x=GWe(f,v),b=GWe(c,h),p=HWe(b,[]),E=HWe(x,p),k={},A=r._fullInput.columnorder;L7(A)&&(A=Array.from(A)),A=A.concat(i(n.map(function(g,P){return P})));var L=o.map(function(g,P){var T=L7(r.columnwidth)?r.columnwidth[Math.min(P,r.columnwidth.length-1)]:r.columnwidth;return DZt(T)?Number(T):1}),_=L.reduce(UWe,0);L=L.map(function(g){return g/_*l});var C=Math.max(JJ(r.header.line.width),JJ(r.cells.line.width)),M={key:r.uid+t._context.staticPlot,translateX:s.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-s.y[1]),size:t._fullLayout._size,width:l,maxLineWidth:C,height:u,columnOrder:A,groupHeight:u,rowBlocks:E,headerRowBlocks:p,scrollY:0,cells:KJ({},r.cells,{values:n}),headerCells:KJ({},r.header,{values:o}),gdColumns:o.map(function(g){return g[0]}),gdColumnsOriginalOrder:o.map(function(g){return g[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:o.map(function(g,P){var T=k[g];k[g]=(T||0)+1;var F=g+"__"+k[g];return{key:F,label:g,specIndex:P,xIndex:A[P],xScale:VWe,x:void 0,calcdata:void 0,columnWidth:L[P]}})};return M.columns.forEach(function(g){g.calcdata=M,g.x=VWe(g)}),M};function JJ(e){if(L7(e)){for(var t=0,r=0;r=t||u===e.length-1)&&(r[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=u,o=jWe(),i+=a,s=u+1,a=0);return r}function jWe(){return{firstRowIndex:null,lastRowIndex:null,rows:[]}}});var YWe=ye($J=>{"use strict";var P7=no().extendFlat;$J.splitToPanels=function(e){var t=[0,0],r=P7({},e,{key:"header",type:"header",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!0,values:e.calcdata.headerCells.values[e.specIndex],rowBlocks:e.calcdata.headerRowBlocks,calcdata:P7({},e.calcdata,{cells:e.calcdata.headerCells})}),n=P7({},e,{key:"cells1",type:"cells",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks}),i=P7({},e,{key:"cells2",type:"cells",page:1,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks});return[n,i,r]};$J.splitToCells=function(e){var t=FZt(e);return(e.values||[]).slice(t[0],t[1]).map(function(r,n){var i=typeof r=="string"&&r.match(/[<$&> ]/)?"_keybuster_"+Math.random():"";return{keyWithinBlock:n+i,key:t[0]+n,column:e,calcdata:e.calcdata,page:e.page,rowBlocks:e.rowBlocks,value:r}})};function FZt(e){var t=e.rowBlocks[e.page],r=t?t.rows[0].rowIndex:0,n=t?r+t.rows.length:0;return[r,n]}});var l$=ye((V_r,oZe)=>{"use strict";var Ia=XJ(),Mc=xa(),QJ=Mr(),qZt=QJ.numberFormat,gu=Km(),e$=ao(),OZt=Pl(),BZt=Mr().raiseToTop,og=Mr().strTranslate,NZt=Mr().cancelTransition,UZt=XWe(),rZe=YWe(),KWe=va();oZe.exports=function(t,r){var n=!t._context.staticPlot,i=t._fullLayout._paper.selectAll("."+Ia.cn.table).data(r.map(function(E){var k=gu.unwrap(E),A=k.trace;return UZt(t,A)}),gu.keyFun);i.exit().remove(),i.enter().append("g").classed(Ia.cn.table,!0).attr("overflow","visible").style("box-sizing","content-box").style("position","absolute").style("left",0).style("overflow","visible").style("shape-rendering","crispEdges").style("pointer-events","all"),i.attr("width",function(E){return E.width+E.size.l+E.size.r}).attr("height",function(E){return E.height+E.size.t+E.size.b}).attr("transform",function(E){return og(E.translateX,E.translateY)});var a=i.selectAll("."+Ia.cn.tableControlView).data(gu.repeat,gu.keyFun),o=a.enter().append("g").classed(Ia.cn.tableControlView,!0).style("box-sizing","content-box");if(n){var s="onwheel"in document?"wheel":"mousewheel";o.on("mousemove",function(E){a.filter(function(k){return E===k}).call(Jk,t)}).on(s,function(E){if(!E.scrollbarState.wheeling){E.scrollbarState.wheeling=!0;var k=E.scrollY+Mc.event.deltaY,A=R7(t,a,null,k)(E);A||(Mc.event.stopPropagation(),Mc.event.preventDefault()),E.scrollbarState.wheeling=!1}}).call(Jk,t,!0)}a.attr("transform",function(E){return og(E.size.l,E.size.t)});var l=a.selectAll("."+Ia.cn.scrollBackground).data(gu.repeat,gu.keyFun);l.enter().append("rect").classed(Ia.cn.scrollBackground,!0).attr("fill","none"),l.attr("width",function(E){return E.width}).attr("height",function(E){return E.height}),a.each(function(E){e$.setClipUrl(Mc.select(this),JWe(t,E),t)});var u=a.selectAll("."+Ia.cn.yColumn).data(function(E){return E.columns},gu.keyFun);u.enter().append("g").classed(Ia.cn.yColumn,!0),u.exit().remove(),u.attr("transform",function(E){return og(E.x,0)}),n&&u.call(Mc.behavior.drag().origin(function(E){var k=Mc.select(this);return eZe(k,E,-Ia.uplift),BZt(this),E.calcdata.columnDragInProgress=!0,Jk(a.filter(function(A){return E.calcdata.key===A.key}),t),E}).on("drag",function(E){var k=Mc.select(this),A=function(C){return(E===C?Mc.event.x:C.x)+C.columnWidth/2};E.x=Math.max(-Ia.overdrag,Math.min(E.calcdata.width+Ia.overdrag-E.columnWidth,Mc.event.x));var L=iZe(u).filter(function(C){return C.calcdata.key===E.calcdata.key}),_=L.sort(function(C,M){return A(C)-A(M)});_.forEach(function(C,M){C.xIndex=M,C.x=E===C?C.x:C.xScale(C)}),u.filter(function(C){return E!==C}).transition().ease(Ia.transitionEase).duration(Ia.transitionDuration).attr("transform",function(C){return og(C.x,0)}),k.call(NZt).attr("transform",og(E.x,-Ia.uplift))}).on("dragend",function(E){var k=Mc.select(this),A=E.calcdata;E.x=E.xScale(E),E.calcdata.columnDragInProgress=!1,eZe(k,E,0),JZt(t,A,A.columns.map(function(L){return L.xIndex}))})),u.each(function(E){e$.setClipUrl(Mc.select(this),$We(t,E),t)});var c=u.selectAll("."+Ia.cn.columnBlock).data(rZe.splitToPanels,gu.keyFun);c.enter().append("g").classed(Ia.cn.columnBlock,!0).attr("id",function(E){return E.key}),c.style("cursor",function(E){return E.dragHandle?"ew-resize":E.calcdata.scrollbarState.barWiggleRoom?"ns-resize":"default"});var f=c.filter($Zt),h=c.filter(a$);n&&h.call(Mc.behavior.drag().origin(function(E){return Mc.event.stopPropagation(),E}).on("drag",R7(t,a,-1)).on("dragend",function(){})),t$(t,a,f,c),t$(t,a,h,c);var d=a.selectAll("."+Ia.cn.scrollAreaClip).data(gu.repeat,gu.keyFun);d.enter().append("clipPath").classed(Ia.cn.scrollAreaClip,!0).attr("id",function(E){return JWe(t,E)});var v=d.selectAll("."+Ia.cn.scrollAreaClipRect).data(gu.repeat,gu.keyFun);v.enter().append("rect").classed(Ia.cn.scrollAreaClipRect,!0).attr("x",-Ia.overdrag).attr("y",-Ia.uplift).attr("fill","none"),v.attr("width",function(E){return E.width+2*Ia.overdrag}).attr("height",function(E){return E.height+Ia.uplift});var x=u.selectAll("."+Ia.cn.columnBoundary).data(gu.repeat,gu.keyFun);x.enter().append("g").classed(Ia.cn.columnBoundary,!0);var b=u.selectAll("."+Ia.cn.columnBoundaryClippath).data(gu.repeat,gu.keyFun);b.enter().append("clipPath").classed(Ia.cn.columnBoundaryClippath,!0),b.attr("id",function(E){return $We(t,E)});var p=b.selectAll("."+Ia.cn.columnBoundaryRect).data(gu.repeat,gu.keyFun);p.enter().append("rect").classed(Ia.cn.columnBoundaryRect,!0).attr("fill","none"),p.attr("width",function(E){return E.columnWidth+2*I7(E)}).attr("height",function(E){return E.calcdata.height+2*I7(E)+Ia.uplift}).attr("x",function(E){return-I7(E)}).attr("y",function(E){return-I7(E)}),o$(null,h,a)};function I7(e){return Math.ceil(e.calcdata.maxLineWidth/2)}function JWe(e,t){return"clip"+e._fullLayout._uid+"_scrollAreaBottomClip_"+t.key}function $We(e,t){return"clip"+e._fullLayout._uid+"_columnBoundaryClippath_"+t.calcdata.key+"_"+t.specIndex}function iZe(e){return[].concat.apply([],e.map(function(t){return t})).map(function(t){return t.__data__})}function Jk(e,t,r){function n(u){var c=u.rowBlocks;return i$(c,c.length-1)+(c.length?D7(c[c.length-1],1/0):1)}var i=e.selectAll("."+Ia.cn.scrollbarKit).data(gu.repeat,gu.keyFun);i.enter().append("g").classed(Ia.cn.scrollbarKit,!0).style("shape-rendering","geometricPrecision"),i.each(function(u){var c=u.scrollbarState;c.totalHeight=n(u),c.scrollableAreaHeight=u.groupHeight-r$(u),c.currentlyVisibleHeight=Math.min(c.totalHeight,c.scrollableAreaHeight),c.ratio=c.currentlyVisibleHeight/c.totalHeight,c.barLength=Math.max(c.ratio*c.currentlyVisibleHeight,Ia.goldenRatio*Ia.scrollbarWidth),c.barWiggleRoom=c.currentlyVisibleHeight-c.barLength,c.wiggleRoom=Math.max(0,c.totalHeight-c.scrollableAreaHeight),c.topY=c.barWiggleRoom===0?0:u.scrollY/c.wiggleRoom*c.barWiggleRoom,c.bottomY=c.topY+c.barLength,c.dragMultiplier=c.wiggleRoom/c.barWiggleRoom}).attr("transform",function(u){var c=u.width+Ia.scrollbarWidth/2+Ia.scrollbarOffset;return og(c,r$(u))});var a=i.selectAll("."+Ia.cn.scrollbar).data(gu.repeat,gu.keyFun);a.enter().append("g").classed(Ia.cn.scrollbar,!0);var o=a.selectAll("."+Ia.cn.scrollbarSlider).data(gu.repeat,gu.keyFun);o.enter().append("g").classed(Ia.cn.scrollbarSlider,!0),o.attr("transform",function(u){return og(0,u.scrollbarState.topY||0)});var s=o.selectAll("."+Ia.cn.scrollbarGlyph).data(gu.repeat,gu.keyFun);s.enter().append("line").classed(Ia.cn.scrollbarGlyph,!0).attr("stroke","black").attr("stroke-width",Ia.scrollbarWidth).attr("stroke-linecap","round").attr("y1",Ia.scrollbarWidth/2),s.attr("y2",function(u){return u.scrollbarState.barLength-Ia.scrollbarWidth/2}).attr("stroke-opacity",function(u){return u.columnDragInProgress||!u.scrollbarState.barWiggleRoom||r?0:.4}),s.transition().delay(0).duration(0),s.transition().delay(Ia.scrollbarHideDelay).duration(Ia.scrollbarHideDuration).attr("stroke-opacity",0);var l=a.selectAll("."+Ia.cn.scrollbarCaptureZone).data(gu.repeat,gu.keyFun);l.enter().append("line").classed(Ia.cn.scrollbarCaptureZone,!0).attr("stroke","white").attr("stroke-opacity",.01).attr("stroke-width",Ia.scrollbarCaptureWidth).attr("stroke-linecap","butt").attr("y1",0).on("mousedown",function(u){var c=Mc.event.y,f=this.getBoundingClientRect(),h=u.scrollbarState,d=c-f.top,v=Mc.scale.linear().domain([0,h.scrollableAreaHeight]).range([0,h.totalHeight]).clamp(!0);h.topY<=d&&d<=h.bottomY||R7(t,e,null,v(d-h.barLength/2))(u)}).call(Mc.behavior.drag().origin(function(u){return Mc.event.stopPropagation(),u.scrollbarState.scrollbarScrollInProgress=!0,u}).on("drag",R7(t,e)).on("dragend",function(){})),l.attr("y2",function(u){return u.scrollbarState.scrollableAreaHeight}),t._context.staticPlot&&(s.remove(),l.remove())}function t$(e,t,r,n){var i=VZt(r),a=HZt(i);ZZt(a);var o=GZt(a);YZt(o);var s=WZt(a),l=jZt(s);XZt(l),nZe(l,t,n,e),s$(a)}function VZt(e){var t=e.selectAll("."+Ia.cn.columnCells).data(gu.repeat,gu.keyFun);return t.enter().append("g").classed(Ia.cn.columnCells,!0),t.exit().remove(),t}function HZt(e){var t=e.selectAll("."+Ia.cn.columnCell).data(rZe.splitToCells,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ia.cn.columnCell,!0),t.exit().remove(),t}function GZt(e){var t=e.selectAll("."+Ia.cn.cellRect).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("rect").classed(Ia.cn.cellRect,!0),t}function jZt(e){var t=e.selectAll("."+Ia.cn.cellText).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("text").classed(Ia.cn.cellText,!0).style("cursor",function(){return"auto"}).on("mousedown",function(){Mc.event.stopPropagation()}),t}function WZt(e){var t=e.selectAll("."+Ia.cn.cellTextHolder).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ia.cn.cellTextHolder,!0).style("shape-rendering","geometricPrecision"),t}function ZZt(e){e.each(function(t,r){var n=t.calcdata.cells.font,i=t.column.specIndex,a={size:Xv(n.size,i,r),color:Xv(n.color,i,r),family:Xv(n.family,i,r),weight:Xv(n.weight,i,r),style:Xv(n.style,i,r),variant:Xv(n.variant,i,r),textcase:Xv(n.textcase,i,r),lineposition:Xv(n.lineposition,i,r),shadow:Xv(n.shadow,i,r)};t.rowNumber=t.key,t.align=Xv(t.calcdata.cells.align,i,r),t.cellBorderWidth=Xv(t.calcdata.cells.line.width,i,r),t.font=a})}function XZt(e){e.each(function(t){e$.font(Mc.select(this),t.font)})}function YZt(e){e.attr("width",function(t){return t.column.columnWidth}).attr("stroke-width",function(t){return t.cellBorderWidth}).each(function(t){var r=Mc.select(this);KWe.stroke(r,Xv(t.calcdata.cells.line.color,t.column.specIndex,t.rowNumber)),KWe.fill(r,Xv(t.calcdata.cells.fill.color,t.column.specIndex,t.rowNumber))})}function nZe(e,t,r,n){e.text(function(i){var a=i.column.specIndex,o=i.rowNumber,s=i.value,l=typeof s=="string",u=l&&s.match(/
/i),c=!l||u;i.mayHaveMarkup=l&&s.match(/[<&>]/);var f=KZt(s);i.latex=f;var h=f?"":Xv(i.calcdata.cells.prefix,a,o)||"",d=f?"":Xv(i.calcdata.cells.suffix,a,o)||"",v=f?null:Xv(i.calcdata.cells.format,a,o)||null,x=h+(v?qZt(v)(i.value):i.value)+d,b;i.wrappingNeeded=!i.wrapped&&!c&&!f&&(b=QWe(x)),i.cellHeightMayIncrease=u||f||i.mayHaveMarkup||(b===void 0?QWe(x):b),i.needsConvertToTspans=i.mayHaveMarkup||i.wrappingNeeded||i.latex;var p;if(i.wrappingNeeded){var E=Ia.wrapSplitCharacter===" "?x.replace(/i&&n.push(a),i+=l}return n}function o$(e,t,r){var n=iZe(t)[0];if(n!==void 0){var i=n.rowBlocks,a=n.calcdata,o=i$(i,i.length),s=n.calcdata.groupHeight-r$(n),l=a.scrollY=Math.max(0,Math.min(o-s,a.scrollY)),u=QZt(i,l,s);u.length===1&&(u[0]===i.length-1?u.unshift(u[0]-1):u.push(u[0]+1)),u[0]%2&&u.reverse(),t.each(function(c,f){c.page=u[f],c.scrollY=l}),t.attr("transform",function(c){var f=i$(c.rowBlocks,c.page)-c.scrollY;return og(0,f)}),e&&(tZe(e,r,t,u,n.prevPages,n,0),tZe(e,r,t,u,n.prevPages,n,1),Jk(r,e))}}function R7(e,t,r,n){return function(a){var o=a.calcdata?a.calcdata:a,s=t.filter(function(f){return o.key===f.key}),l=r||o.scrollbarState.dragMultiplier,u=o.scrollY;o.scrollY=n===void 0?o.scrollY+l*Mc.event.dy:n;var c=s.selectAll("."+Ia.cn.yColumn).selectAll("."+Ia.cn.columnBlock).filter(a$);return o$(e,c,s),o.scrollY===u}}function tZe(e,t,r,n,i,a,o){var s=n[o]!==i[o];s&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout(function(){var l=r.filter(function(u,c){return c===o&&n[c]!==i[c]});t$(e,t,l,r),i[o]=n[o]}))}function eXt(e,t,r,n){return function(){var a=Mc.select(t.parentNode);a.each(function(o){var s=o.fragments;a.selectAll("tspan.line").each(function(x,b){s[b].width=this.getComputedTextLength()});var l=s[s.length-1].width,u=s.slice(0,-1),c=[],f,h,d=0,v=o.column.columnWidth-2*Ia.cellPad;for(o.value="";u.length;)f=u.shift(),h=f.width+l,d+h>v&&(o.value+=c.join(Ia.wrapSpacer)+Ia.lineBreaker,c=[],d=0),c.push(f.text),d+=h;d&&(o.value+=c.join(Ia.wrapSpacer)),o.wrapped=!0}),a.selectAll("tspan.line").remove(),nZe(a.select("."+Ia.cn.cellText),r,e,n),Mc.select(t.parentNode.parentNode).call(s$)}}function tXt(e,t,r,n,i){return function(){if(!i.settledY){var o=Mc.select(t.parentNode),s=n$(i),l=i.key-s.firstRowIndex,u=s.rows[l].rowHeight,c=i.cellHeightMayIncrease?t.parentNode.getBoundingClientRect().height+2*Ia.cellPad:u,f=Math.max(c,u),h=f-s.rows[l].rowHeight;h&&(s.rows[l].rowHeight=f,e.selectAll("."+Ia.cn.columnCell).call(s$),o$(null,e.filter(a$),0),Jk(r,n,!0)),o.attr("transform",function(){var d=this,v=d.parentNode,x=v.getBoundingClientRect(),b=Mc.select(d.parentNode).select("."+Ia.cn.cellRect).node().getBoundingClientRect(),p=d.transform.baseVal.consolidate(),E=b.top-x.top+(p?p.matrix.f:Ia.cellPad);return og(aZe(i,Mc.select(d.parentNode).select("."+Ia.cn.cellTextHolder).node().getBoundingClientRect().width),E)}),i.settledY=!0}}}function aZe(e,t){switch(e.align){case"left":return Ia.cellPad;case"right":return e.column.columnWidth-(t||0)-Ia.cellPad;case"center":return(e.column.columnWidth-(t||0))/2;default:return Ia.cellPad}}function s$(e){e.attr("transform",function(t){var r=t.rowBlocks[0].auxiliaryBlocks.reduce(function(o,s){return o+D7(s,1/0)},0),n=n$(t),i=D7(n,t.key),a=i+r;return og(0,a)}).selectAll("."+Ia.cn.cellRect).attr("height",function(t){return iXt(n$(t),t.key).rowHeight})}function i$(e,t){for(var r=0,n=t-1;n>=0;n--)r+=rXt(e[n]);return r}function D7(e,t){for(var r=0,n=0;n{"use strict";var nXt=kd().getModuleCalcData,aXt=l$(),z7="table";F7.name=z7;F7.plot=function(e){var t=nXt(e.calcdata,z7)[0];t.length&&aXt(e,t)};F7.clean=function(e,t,r,n){var i=n._has&&n._has(z7),a=t._has&&t._has(z7);i&&!a&&n._paperdiv.selectAll(".table").remove()}});var uZe=ye((G_r,lZe)=>{"use strict";lZe.exports={attributes:WJ(),supplyDefaults:FWe(),calc:OWe(),plot:l$(),moduleType:"trace",name:"table",basePlotModule:sZe(),categories:["noOpacity"],meta:{}}});var fZe=ye((j_r,cZe)=>{"use strict";cZe.exports=uZe()});var gZe=ye((W_r,pZe)=>{"use strict";var hZe=Su(),dZe=dh(),u$=Cd(),oXt=Oc().descriptionWithDates,sXt=Bu().overrideAll,vZe=Ed().dash,c$=no().extendFlat;pZe.exports={color:{valType:"color",editType:"calc"},smoothing:{valType:"number",dflt:1,min:0,max:1.3,editType:"calc"},title:{text:{valType:"string",dflt:"",editType:"calc"},font:hZe({editType:"calc"}),offset:{valType:"number",dflt:10,editType:"calc"},editType:"calc"},type:{valType:"enumerated",values:["-","linear","date","category"],dflt:"-",editType:"calc"},autotypenumbers:u$.autotypenumbers,autorange:{valType:"enumerated",values:[!0,!1,"reversed"],dflt:!0,editType:"calc"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"calc"},range:{valType:"info_array",editType:"calc",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}]},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},cheatertype:{valType:"enumerated",values:["index","value"],dflt:"value",editType:"calc"},tickmode:{valType:"enumerated",values:["linear","array"],dflt:"array",editType:"calc"},nticks:{valType:"integer",min:0,dflt:0,editType:"calc"},tickvals:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},showticklabels:{valType:"enumerated",values:["start","end","both","none"],dflt:"start",editType:"calc"},labelalias:c$({},u$.labelalias,{editType:"calc"}),tickfont:hZe({editType:"calc"}),tickangle:{valType:"angle",dflt:"auto",editType:"calc"},tickprefix:{valType:"string",dflt:"",editType:"calc"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},ticksuffix:{valType:"string",dflt:"",editType:"calc"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B"],dflt:"B",editType:"calc"},minexponent:{valType:"number",dflt:3,min:0,editType:"calc"},separatethousands:{valType:"boolean",dflt:!1,editType:"calc"},tickformat:{valType:"string",dflt:"",editType:"calc",description:oXt("tick label")},tickformatstops:sXt(u$.tickformatstops,"calc","from-root"),categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},labelpadding:{valType:"integer",dflt:10,editType:"calc"},labelprefix:{valType:"string",editType:"calc"},labelsuffix:{valType:"string",dflt:"",editType:"calc"},showline:{valType:"boolean",dflt:!1,editType:"calc"},linecolor:{valType:"color",dflt:dZe.defaultLine,editType:"calc"},linewidth:{valType:"number",min:0,dflt:1,editType:"calc"},gridcolor:{valType:"color",editType:"calc"},gridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},griddash:c$({},vZe,{editType:"calc"}),showgrid:{valType:"boolean",dflt:!0,editType:"calc"},minorgridcount:{valType:"integer",min:0,dflt:0,editType:"calc"},minorgridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},minorgriddash:c$({},vZe,{editType:"calc"}),minorgridcolor:{valType:"color",dflt:dZe.lightLine,editType:"calc"},startline:{valType:"boolean",editType:"calc"},startlinecolor:{valType:"color",editType:"calc"},startlinewidth:{valType:"number",dflt:1,editType:"calc"},endline:{valType:"boolean",editType:"calc"},endlinewidth:{valType:"number",dflt:1,editType:"calc"},endlinecolor:{valType:"color",editType:"calc"},tick0:{valType:"number",min:0,dflt:0,editType:"calc"},dtick:{valType:"number",min:0,dflt:1,editType:"calc"},arraytick0:{valType:"integer",min:0,dflt:0,editType:"calc"},arraydtick:{valType:"integer",min:1,dflt:1,editType:"calc"},editType:"calc"}});var O7=ye((Z_r,_Ze)=>{"use strict";var lXt=Su(),mZe=gZe(),yZe=dh(),q7=lXt({editType:"calc"}),uXt=Uc().zorder;q7.family.dflt='"Open Sans", verdana, arial, sans-serif';q7.size.dflt=12;q7.color.dflt=yZe.defaultLine;_Ze.exports={carpet:{valType:"string",editType:"calc"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},a:{valType:"data_array",editType:"calc"},a0:{valType:"number",dflt:0,editType:"calc"},da:{valType:"number",dflt:1,editType:"calc"},b:{valType:"data_array",editType:"calc"},b0:{valType:"number",dflt:0,editType:"calc"},db:{valType:"number",dflt:1,editType:"calc"},cheaterslope:{valType:"number",dflt:1,editType:"calc"},aaxis:mZe,baxis:mZe,font:q7,color:{valType:"color",dflt:yZe.defaultLine,editType:"plot"},zorder:uXt}});var wZe=ye((X_r,bZe)=>{"use strict";var xZe=Mr().isArray1D;bZe.exports=function(t,r,n){var i=n("x"),a=i&&i.length,o=n("y"),s=o&&o.length;if(!a&&!s)return!1;if(r._cheater=!i,(!a||xZe(i))&&(!s||xZe(o))){var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),r.a&&r.a.length&&(l=Math.min(l,r.a.length)),r.b&&r.b.length&&(l=Math.min(l,r.b.length)),r._length=l}else r._length=null;return!0}});var SZe=ye((Y_r,AZe)=>{"use strict";var cXt=O7(),TZe=va().addOpacity,fXt=ba(),$k=Mr(),hXt=xb(),dXt=t_(),vXt=r_(),pXt=eI(),gXt=ym(),mXt=L3();AZe.exports=function(t,r,n){var i=n.letter,a=n.font||{},o=cXt[i+"axis"];function s(g,P){return $k.coerce(t,r,o,g,P)}function l(g,P){return $k.coerce2(t,r,o,g,P)}n.name&&(r._name=n.name,r._id=n.name),s("autotypenumbers",n.autotypenumbersDflt);var u=s("type");if(u==="-"&&(n.data&&yXt(r,n.data),r.type==="-"?r.type="linear":u=t.type=r.type),s("smoothing"),s("cheatertype"),s("showticklabels"),s("labelprefix",i+" = "),s("labelsuffix"),s("showtickprefix"),s("showticksuffix"),s("separatethousands"),s("tickformat"),s("exponentformat"),s("minexponent"),s("showexponent"),s("categoryorder"),s("tickmode"),s("tickvals"),s("ticktext"),s("tick0"),s("dtick"),r.tickmode==="array"&&(s("arraytick0"),s("arraydtick")),s("labelpadding"),r._hovertitle=i,u==="date"){var c=fXt.getComponentMethod("calendars","handleDefaults");c(t,r,"calendar",n.calendar)}gXt(r,n.fullLayout),r.c2p=$k.identity;var f=s("color",n.dfltColor),h=f===t.color?f:a.color,d=s("title.text");d&&($k.coerceFont(s,"title.font",a,{overrideDflt:{size:$k.bigFont(a.size),color:h}}),s("title.offset")),s("tickangle");var v=s("autorange",!r.isValidRange(t.range));v&&s("rangemode"),s("range"),r.cleanRange(),s("fixedrange"),hXt(t,r,s,u),vXt(t,r,s,u,n),dXt(t,r,s,u,n),pXt(t,r,s,{data:n.data,dataAttr:i});var x=l("gridcolor",TZe(f,.3)),b=l("gridwidth"),p=l("griddash"),E=s("showgrid");E||(delete r.gridcolor,delete r.gridwidth,delete r.griddash);var k=l("startlinecolor",f),A=l("startlinewidth",b),L=s("startline",r.showgrid||!!k||!!A);L||(delete r.startlinecolor,delete r.startlinewidth);var _=l("endlinecolor",f),C=l("endlinewidth",b),M=s("endline",r.showgrid||!!_||!!C);return M||(delete r.endlinecolor,delete r.endlinewidth),E?(s("minorgridcount"),s("minorgridwidth",b),s("minorgriddash",p),s("minorgridcolor",TZe(x,.06)),r.minorgridcount||(delete r.minorgridwidth,delete r.minorgriddash,delete r.minorgridcolor)):(delete r.gridcolor,delete r.gridwidth,delete r.griddash),r.showticklabels==="none"&&(delete r.tickfont,delete r.tickangle,delete r.showexponent,delete r.exponentformat,delete r.minexponent,delete r.tickformat,delete r.showticksuffix,delete r.showtickprefix),r.showticksuffix||delete r.ticksuffix,r.showtickprefix||delete r.tickprefix,s("tickmode"),r};function yXt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i=n+"calendar",a=e[i];e.type=mXt(t,a,{autotypenumbers:e.autotypenumbers})}}});var EZe=ye((K_r,MZe)=>{"use strict";var _Xt=SZe(),xXt=Vs();MZe.exports=function(t,r,n,i,a){var o=i("a");o||(i("da"),i("a0"));var s=i("b");s||(i("db"),i("b0")),bXt(t,r,n,a)};function bXt(e,t,r,n){var i=["aaxis","baxis"];i.forEach(function(a){var o=a.charAt(0),s=e[a]||{},l=xXt.newContainer(t,a),u={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,noTicklabelstep:!0,tickfont:"x",id:o+"axis",letter:o,font:t.font,name:a,data:e[o],calendar:t.calendar,dfltColor:n,bgColor:r.paper_bgcolor,autotypenumbersDflt:r.autotypenumbers,fullLayout:r};_Xt(s,l,u),l._categories=l._categories||[],!e[a]&&s.type!=="-"&&(e[a]={type:s.type})})}});var LZe=ye((J_r,CZe)=>{"use strict";var kZe=Mr(),wXt=wZe(),TXt=EZe(),AXt=O7(),SXt=dh();CZe.exports=function(t,r,n,i){function a(l,u){return kZe.coerce(t,r,AXt,l,u)}r._clipPathId="clip"+r.uid+"carpet";var o=a("color",SXt.defaultLine);if(kZe.coerceFont(a,"font",i.font),a("carpet"),TXt(t,r,i,a,o),!r.a||!r.b){r.visible=!1;return}r.a.length<3&&(r.aaxis.smoothing=0),r.b.length<3&&(r.baxis.smoothing=0);var s=wXt(t,r,a);s||(r.visible=!1),r._cheater&&a("cheaterslope"),a("zorder")}});var f$=ye(($_r,PZe)=>{"use strict";var MXt=Mr().isArrayOrTypedArray;PZe.exports=function(t,r,n){var i;for(MXt(t)?t.length>r.length&&(t=t.slice(0,r.length)):t=[],i=0;i{"use strict";IZe.exports=function(t,r,n){if(t.length===0)return"";var i,a=[],o=n?3:1;for(i=0;i{"use strict";RZe.exports=function(t,r,n,i,a,o){var s=a[0]*t.dpdx(r),l=a[1]*t.dpdy(n),u=1,c=1;if(o){var f=Math.sqrt(a[0]*a[0]+a[1]*a[1]),h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),d=(a[0]*o[0]+a[1]*o[1])/f/h;c=Math.max(0,d)}var v=Math.atan2(l,s)*180/Math.PI;return v<-90?(v+=180,u=-u):v>90&&(v-=180,u=-u),{angle:v,flip:u,p:t.c2p(i,r,n),offsetMultplier:c}}});var VZe=ye((txr,UZe)=>{"use strict";var V7=xa(),B7=ao(),N7=f$(),qZe=h$(),Qk=DZe(),d$=Pl(),Up=Mr(),OZe=Up.strRotate,U7=Up.strTranslate,BZe=Nh();UZe.exports=function(t,r,n,i){var a=t._context.staticPlot,o=r.xaxis,s=r.yaxis,l=t._fullLayout,u=l._clips;Up.makeTraceGroups(i,n,"trace").each(function(c){var f=V7.select(this),h=c[0],d=h.trace,v=d.aaxis,x=d.baxis,b=Up.ensureSingle(f,"g","minorlayer"),p=Up.ensureSingle(f,"g","majorlayer"),E=Up.ensureSingle(f,"g","boundarylayer"),k=Up.ensureSingle(f,"g","labellayer");f.style("opacity",d.opacity),zA(o,s,p,v,"a",v._gridlines,!0,a),zA(o,s,p,x,"b",x._gridlines,!0,a),zA(o,s,b,v,"a",v._minorgridlines,!0,a),zA(o,s,b,x,"b",x._minorgridlines,!0,a),zA(o,s,E,v,"a-boundary",v._boundarylines,a),zA(o,s,E,x,"b-boundary",x._boundarylines,a);var A=zZe(t,o,s,d,h,k,v._labels,"a-label"),L=zZe(t,o,s,d,h,k,x._labels,"b-label");kXt(t,k,d,h,o,s,A,L),EXt(d,h,u,o,s)})};function EXt(e,t,r,n,i){var a,o,s,l,u=r.select("#"+e._clipPathId);u.size()||(u=r.append("clipPath").classed("carpetclip",!0));var c=Up.ensureSingle(u,"path","carpetboundary"),f=t.clipsegments,h=[];for(l=0;l0?"start":"end","data-notex":1}).call(B7.font,f.font).text(f.text).call(d$.convertToTspans,e),p=B7.bBox(this);b.attr("transform",U7(d.p[0],d.p[1])+OZe(d.angle)+U7(f.axis.labelpadding*x,p.height*.3)),u=Math.max(u,p.width+f.axis.labelpadding)}),l.exit().remove(),c.maxExtent=u,c}function kXt(e,t,r,n,i,a,o,s){var l,u,c,f,h=Up.aggNums(Math.min,null,r.a),d=Up.aggNums(Math.max,null,r.a),v=Up.aggNums(Math.min,null,r.b),x=Up.aggNums(Math.max,null,r.b);l=.5*(h+d),u=v,c=r.ab2xy(l,u,!0),f=r.dxyda_rough(l,u),o.angle===void 0&&Up.extendFlat(o,Qk(r,i,a,c,r.dxydb_rough(l,u))),FZe(e,t,r,n,c,f,r.aaxis,i,a,o,"a-title"),l=h,u=.5*(v+x),c=r.ab2xy(l,u,!0),f=r.dxydb_rough(l,u),s.angle===void 0&&Up.extendFlat(s,Qk(r,i,a,c,r.dxyda_rough(l,u))),FZe(e,t,r,n,c,f,r.baxis,i,a,s,"b-title")}var NZe=BZe.LINE_SPACING,CXt=(1-BZe.MID_SHIFT)/NZe+1;function FZe(e,t,r,n,i,a,o,s,l,u,c){var f=[];o.title.text&&f.push(o.title.text);var h=t.selectAll("text."+c).data(f),d=u.maxExtent;h.enter().append("text").classed(c,!0),h.each(function(){var v=Qk(r,s,l,i,a);["start","both"].indexOf(o.showticklabels)===-1&&(d=0);var x=o.title.font.size;d+=x+o.title.offset;var b=u.angle+(u.flip<0?180:0),p=(b-v.angle+450)%360,E=p>90&&p<270,k=V7.select(this);k.text(o.title.text).call(d$.convertToTspans,e),E&&(d=(-d$.lineCount(k)+CXt)*NZe*x-d),k.attr("transform",U7(v.p[0],v.p[1])+OZe(v.angle)+U7(0,d)).attr("text-anchor","middle").call(B7.font,o.title.font)}),h.exit().remove()}});var GZe=ye((rxr,HZe)=>{"use strict";var H7=Mr().isArrayOrTypedArray;HZe.exports=function(e,t,r){var n,i,a,o,s,l,u=[],c=H7(e)?e.length:e,f=H7(t)?t.length:t,h=H7(e)?e:null,d=H7(t)?t:null;h&&(a=(h.length-1)/(h[h.length-1]-h[0])/(c-1)),d&&(o=(d.length-1)/(d[d.length-1]-d[0])/(f-1));var v,x=1/0,b=-1/0;for(i=0;i{"use strict";var jZe=Mr().isArrayOrTypedArray;ZZe.exports=function(e){return WZe(e,0)};function WZe(e,t){if(!jZe(e)||t>=10)return null;for(var r=1/0,n=-1/0,i=e.length,a=0;a{"use strict";var LXt=Qa(),kx=no().extendFlat;YZe.exports=function(t,r,n){var i,a,o,s,l,u,c,f,h,d,v,x,b,p,E=t["_"+r],k=t[r+"axis"],A=k._gridlines=[],L=k._minorgridlines=[],_=k._boundarylines=[],C=t["_"+n],M=t[n+"axis"];k.tickmode==="array"&&(k.tickvals=E.slice());var g=t._xctrl,P=t._yctrl,T=g[0].length,F=g.length,q=t._a.length,V=t._b.length;LXt.prepTicks(k),k.tickmode==="array"&&delete k.tickvals;var H=k.smoothing?3:1;function X(N){var W,re,ae,_e,Me,ke,ge,ie,Te,Ee,Ae,ze,Ce=[],me=[],Re={};if(r==="b")for(re=t.b2j(N),ae=Math.floor(Math.max(0,Math.min(V-2,re))),_e=re-ae,Re.length=V,Re.crossLength=q,Re.xy=function(ce){return t.evalxy([],ce,re)},Re.dxy=function(ce,Ge){return t.dxydi([],ce,ae,Ge,_e)},W=0;W0&&(Te=t.dxydi([],W-1,ae,0,_e),Ce.push(Me[0]+Te[0]/3),me.push(Me[1]+Te[1]/3),Ee=t.dxydi([],W-1,ae,1,_e),Ce.push(ie[0]-Ee[0]/3),me.push(ie[1]-Ee[1]/3)),Ce.push(ie[0]),me.push(ie[1]),Me=ie;else for(W=t.a2i(N),ke=Math.floor(Math.max(0,Math.min(q-2,W))),ge=W-ke,Re.length=q,Re.crossLength=V,Re.xy=function(ce){return t.evalxy([],W,ce)},Re.dxy=function(ce,Ge){return t.dxydj([],ke,ce,ge,Ge)},re=0;re0&&(Ae=t.dxydj([],ke,re-1,ge,0),Ce.push(Me[0]+Ae[0]/3),me.push(Me[1]+Ae[1]/3),ze=t.dxydj([],ke,re-1,ge,1),Ce.push(ie[0]-ze[0]/3),me.push(ie[1]-ze[1]/3)),Ce.push(ie[0]),me.push(ie[1]),Me=ie;return Re.axisLetter=r,Re.axis=k,Re.crossAxis=M,Re.value=N,Re.constvar=n,Re.index=f,Re.x=Ce,Re.y=me,Re.smoothing=M.smoothing,Re}function G(N){var W,re,ae,_e,Me,ke=[],ge=[],ie={};if(ie.length=E.length,ie.crossLength=C.length,r==="b")for(ae=Math.max(0,Math.min(V-2,N)),Me=Math.min(1,Math.max(0,N-ae)),ie.xy=function(Te){return t.evalxy([],Te,N)},ie.dxy=function(Te,Ee){return t.dxydi([],Te,ae,Ee,Me)},W=0;WE.length-1)&&A.push(kx(G(a),{color:k.gridcolor,width:k.gridwidth,dash:k.griddash}));for(f=u;fE.length-1)&&!(v<0||v>E.length-1))for(x=E[o],b=E[v],i=0;iE[E.length-1])&&L.push(kx(X(d),{color:k.minorgridcolor,width:k.minorgridwidth,dash:k.minorgriddash})));k.startline&&_.push(kx(G(0),{color:k.startlinecolor,width:k.startlinewidth})),k.endline&&_.push(kx(G(E.length-1),{color:k.endlinecolor,width:k.endlinewidth}))}else{for(s=5e-15,l=[Math.floor((E[E.length-1]-k.tick0)/k.dtick*(1+s)),Math.ceil((E[0]-k.tick0)/k.dtick/(1+s))].sort(function(N,W){return N-W}),u=l[0],c=l[1],f=u;f<=c;f++)h=k.tick0+k.dtick*f,A.push(kx(X(h),{color:k.gridcolor,width:k.gridwidth,dash:k.griddash}));for(f=u-1;fE[E.length-1])&&L.push(kx(X(d),{color:k.minorgridcolor,width:k.minorgridwidth,dash:k.minorgriddash}));k.startline&&_.push(kx(X(E[0]),{color:k.startlinecolor,width:k.startlinewidth})),k.endline&&_.push(kx(X(E[E.length-1]),{color:k.endlinecolor,width:k.endlinewidth}))}}});var eXe=ye((axr,QZe)=>{"use strict";var JZe=Qa(),$Ze=no().extendFlat;QZe.exports=function(t,r){var n,i,a,o,s,l=r._labels=[],u=r._gridlines;for(n=0;n{"use strict";tXe.exports=function(t,r,n,i){var a,o,s,l=[],u=!!n.smoothing,c=!!i.smoothing,f=t[0].length-1,h=t.length-1;for(a=0,o=[],s=[];a<=f;a++)o[a]=t[0][a],s[a]=r[0][a];for(l.push({x:o,y:s,bicubic:u}),a=0,o=[],s=[];a<=h;a++)o[a]=t[a][f],s[a]=r[a][f];for(l.push({x:o,y:s,bicubic:c}),a=f,o=[],s=[];a>=0;a--)o[f-a]=t[h][a],s[f-a]=r[h][a];for(l.push({x:o,y:s,bicubic:u}),a=h,o=[],s=[];a>=0;a--)o[h-a]=t[a][0],s[h-a]=r[a][0];return l.push({x:o,y:s,bicubic:c}),l}});var nXe=ye((sxr,iXe)=>{"use strict";var PXt=Mr();iXe.exports=function(t,r,n){var i,a,o,s=[],l=[],u=t[0].length,c=t.length;function f(ae,_e){var Me=0,ke,ge=0;return ae>0&&(ke=t[_e][ae-1])!==void 0&&(ge++,Me+=ke),ae0&&(ke=t[_e-1][ae])!==void 0&&(ge++,Me+=ke),_e0&&a0&&iM);return PXt.log("Smoother converged to",g,"after",T,"iterations"),t}});var oXe=ye((lxr,aXe)=>{"use strict";aXe.exports={RELATIVE_CULL_TOLERANCE:1e-6}});var uXe=ye((uxr,lXe)=>{"use strict";var sXe=.5;lXe.exports=function(t,r,n,i){var a=t[0]-r[0],o=t[1]-r[1],s=n[0]-r[0],l=n[1]-r[1],u=Math.pow(a*a+o*o,sXe/2),c=Math.pow(s*s+l*l,sXe/2),f=(c*c*a-u*u*s)*i,h=(c*c*o-u*u*l)*i,d=c*(u+c)*3,v=u*(u+c)*3;return[[r[0]+(d&&f/d),r[1]+(d&&h/d)],[r[0]-(v&&f/v),r[1]-(v&&h/v)]]}});var fXe=ye((cxr,cXe)=>{"use strict";var v$=uXe(),G7=Mr().ensureArray;function FA(e,t,r){var n=-.5*r[0]+1.5*t[0],i=-.5*r[1]+1.5*t[1];return[(2*n+e[0])/3,(2*i+e[1])/3]}cXe.exports=function(t,r,n,i,a,o){var s,l,u,c,f,h,d,v,x,b,p=n[0].length,E=n.length,k=a?3*p-2:p,A=o?3*E-2:E;for(t=G7(t,A),r=G7(r,A),u=0;u{"use strict";hXe.exports=function(e,t,r,n,i){var a=t-2,o=r-2;return n&&i?function(s,l,u){s||(s=[]);var c,f,h,d,v,x,b=Math.max(0,Math.min(Math.floor(l),a)),p=Math.max(0,Math.min(Math.floor(u),o)),E=Math.max(0,Math.min(1,l-b)),k=Math.max(0,Math.min(1,u-p));b*=3,p*=3;var A=E*E,L=A*E,_=1-E,C=_*_,M=C*_,g=k*k,P=g*k,T=1-k,F=T*T,q=F*T;for(x=0;x{"use strict";vXe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,x=1-o,b=x*x,p=x*o*2,E=-3*b,k=3*(b-p),A=3*(p-v),L=3*v,_=s*s,C=_*s,M=1-s,g=M*M,P=g*M;for(d=0;d{"use strict";gXe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,x=v*o,b=1-o,p=b*b,E=p*b,k=s*s,A=1-s,L=A*A,_=A*s*2,C=-3*L,M=3*(L-_),g=3*(_-k),P=3*k;for(d=0;d{"use strict";var yXe=oXe(),_Xe=k6().findBin,IXt=fXe(),RXt=dXe(),DXt=pXe(),zXt=mXe();xXe.exports=function(t){var r=t._a,n=t._b,i=r.length,a=n.length,o=t.aaxis,s=t.baxis,l=r[0],u=r[i-1],c=n[0],f=n[a-1],h=r[r.length-1]-r[0],d=n[n.length-1]-n[0],v=h*yXe.RELATIVE_CULL_TOLERANCE,x=d*yXe.RELATIVE_CULL_TOLERANCE;l-=v,u+=v,c-=x,f+=x,t.isVisible=function(b,p){return b>l&&bc&&pu||pf},t.setScale=function(){var b=t._x,p=t._y,E=IXt(t._xctrl,t._yctrl,b,p,o.smoothing,s.smoothing);t._xctrl=E[0],t._yctrl=E[1],t.evalxy=RXt([t._xctrl,t._yctrl],i,a,o.smoothing,s.smoothing),t.dxydi=DXt([t._xctrl,t._yctrl],o.smoothing,s.smoothing),t.dxydj=zXt([t._xctrl,t._yctrl],o.smoothing,s.smoothing)},t.i2a=function(b){var p=Math.max(0,Math.floor(b[0]),i-2),E=b[0]-p;return(1-E)*r[p]+E*r[p+1]},t.j2b=function(b){var p=Math.max(0,Math.floor(b[1]),i-2),E=b[1]-p;return(1-E)*n[p]+E*n[p+1]},t.ij2ab=function(b){return[t.i2a(b[0]),t.j2b(b[1])]},t.a2i=function(b){var p=Math.max(0,Math.min(_Xe(b,r),i-2)),E=r[p],k=r[p+1];return Math.max(0,Math.min(i-1,p+(b-E)/(k-E)))},t.b2j=function(b){var p=Math.max(0,Math.min(_Xe(b,n),a-2)),E=n[p],k=n[p+1];return Math.max(0,Math.min(a-1,p+(b-E)/(k-E)))},t.ab2ij=function(b){return[t.a2i(b[0]),t.b2j(b[1])]},t.i2c=function(b,p){return t.evalxy([],b,p)},t.ab2xy=function(b,p,E){if(!E&&(br[i-1]|pn[a-1]))return[!1,!1];var k=t.a2i(b),A=t.b2j(p),L=t.evalxy([],k,A);if(E){var _=0,C=0,M=[],g,P,T,F;br[i-1]?(g=i-2,P=1,_=(b-r[i-1])/(r[i-1]-r[i-2])):(g=Math.max(0,Math.min(i-2,Math.floor(k))),P=k-g),pn[a-1]?(T=a-2,F=1,C=(p-n[a-1])/(n[a-1]-n[a-2])):(T=Math.max(0,Math.min(a-2,Math.floor(A))),F=A-T),_&&(t.dxydi(M,g,T,P,F),L[0]+=M[0]*_,L[1]+=M[1]*_),C&&(t.dxydj(M,g,T,P,F),L[0]+=M[0]*C,L[1]+=M[1]*C)}return L},t.c2p=function(b,p,E){return[p.c2p(b[0]),E.c2p(b[1])]},t.p2x=function(b,p,E){return[p.p2c(b[0]),E.p2c(b[1])]},t.dadi=function(b){var p=Math.max(0,Math.min(r.length-2,b));return r[p+1]-r[p]},t.dbdj=function(b){var p=Math.max(0,Math.min(n.length-2,b));return n[p+1]-n[p]},t.dxyda=function(b,p,E,k){var A=t.dxydi(null,b,p,E,k),L=t.dadi(b,E);return[A[0]/L,A[1]/L]},t.dxydb=function(b,p,E,k){var A=t.dxydj(null,b,p,E,k),L=t.dbdj(p,k);return[A[0]/L,A[1]/L]},t.dxyda_rough=function(b,p,E){var k=h*(E||.1),A=t.ab2xy(b+k,p,!0),L=t.ab2xy(b-k,p,!0);return[(A[0]-L[0])*.5/k,(A[1]-L[1])*.5/k]},t.dxydb_rough=function(b,p,E){var k=d*(E||.1),A=t.ab2xy(b,p+k,!0),L=t.ab2xy(b,p-k,!0);return[(A[0]-L[0])*.5/k,(A[1]-L[1])*.5/k]},t.dpdx=function(b){return b._m},t.dpdy=function(b){return b._m}}});var CXe=ye((pxr,kXe)=>{"use strict";var j7=Qa(),wXe=Mr().isArray1D,FXt=GZe(),TXe=XZe(),AXe=KZe(),SXe=eXe(),qXt=rXe(),MXe=QI(),EXe=nXe(),OXt=JI(),BXt=bXe();kXe.exports=function(t,r){var n=j7.getFromId(t,r.xaxis),i=j7.getFromId(t,r.yaxis),a=r.aaxis,o=r.baxis,s=r.x,l=r.y,u=[];s&&wXe(s)&&u.push("x"),l&&wXe(l)&&u.push("y"),u.length&&OXt(r,a,o,"a","b",u);var c=r._a=r._a||r.a,f=r._b=r._b||r.b;s=r._x||r.x,l=r._y||r.y;var h={};if(r._cheater){var d=a.cheatertype==="index"?c.length:c,v=o.cheatertype==="index"?f.length:f;s=FXt(d,v,r.cheaterslope)}r._x=s=MXe(s),r._y=l=MXe(l),EXe(s,c,f),EXe(l,c,f),BXt(r),r.setScale();var x=TXe(s),b=TXe(l),p=.5*(x[1]-x[0]),E=.5*(x[1]+x[0]),k=.5*(b[1]-b[0]),A=.5*(b[1]+b[0]),L=1.3;return x=[E-p*L,E+p*L],b=[A-k*L,A+k*L],r._extremes[n._id]=j7.findExtremes(n,x,{padded:!0}),r._extremes[i._id]=j7.findExtremes(i,b,{padded:!0}),AXe(r,"a","b"),AXe(r,"b","a"),SXe(r,a),SXe(r,o),h.clipsegments=qXt(r._xctrl,r._yctrl,a,o),h.x=s,h.y=l,h.a=c,h.b=f,[h]}});var PXe=ye((gxr,LXe)=>{"use strict";LXe.exports={attributes:O7(),supplyDefaults:LZe(),plot:VZe(),calc:CXe(),animatable:!0,isContainer:!0,moduleType:"trace",name:"carpet",basePlotModule:Jf(),categories:["cartesian","svg","carpet","carpetAxis","notLegendIsolatable","noMultiCategory","noHover","noSortingByValue"],meta:{}}});var RXe=ye((mxr,IXe)=>{"use strict";IXe.exports=PXe()});var p$=ye((yxr,zXe)=>{"use strict";var NXt=Eg(),u0=Uc(),UXt=vl(),VXt=Wo().hovertemplateAttrs,HXt=Wo().texttemplateAttrs,DXe=Jl(),Cx=no().extendFlat,sg=u0.marker,qA=u0.line,GXt=sg.line;zXe.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:Cx({},u0.mode,{dflt:"markers"}),text:Cx({},u0.text,{}),texttemplate:HXt({editType:"plot"},{keys:["a","b","text"]}),hovertext:Cx({},u0.hovertext,{}),line:{color:qA.color,width:qA.width,dash:qA.dash,backoff:qA.backoff,shape:Cx({},qA.shape,{values:["linear","spline"]}),smoothing:qA.smoothing,editType:"calc"},connectgaps:u0.connectgaps,fill:Cx({},u0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:NXt(),marker:Cx({symbol:sg.symbol,opacity:sg.opacity,maxdisplayed:sg.maxdisplayed,angle:sg.angle,angleref:sg.angleref,standoff:sg.standoff,size:sg.size,sizeref:sg.sizeref,sizemin:sg.sizemin,sizemode:sg.sizemode,line:Cx({width:GXt.width,editType:"calc"},DXe("marker.line")),gradient:sg.gradient,editType:"calc"},DXe("marker")),textfont:u0.textfont,textposition:u0.textposition,selected:u0.selected,unselected:u0.unselected,hoverinfo:Cx({},UXt.hoverinfo,{flags:["a","b","text","name"]}),hoveron:u0.hoveron,hovertemplate:VXt(),zorder:u0.zorder}});var BXe=ye((_xr,OXe)=>{"use strict";var FXe=Mr(),jXt=Sm(),OA=lu(),WXt=$p(),ZXt=R0(),qXe=J3(),XXt=D0(),YXt=Ig(),KXt=p$();OXe.exports=function(t,r,n,i){function a(h,d){return FXe.coerce(t,r,KXt,h,d)}a("carpet"),r.xaxis="x",r.yaxis="y";var o=a("a"),s=a("b"),l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("text"),a("texttemplate"),a("hovertext");var u=l{"use strict";NXe.exports=function(t,r){var n={},i=r._carpet,a=i.ab2ij([t.a,t.b]),o=Math.floor(a[0]),s=a[0]-o,l=Math.floor(a[1]),u=a[1]-l,c=i.evalxy([],o,l,s,u);return n.yLabel=c[1].toFixed(3),n}});var W7=ye((bxr,VXe)=>{"use strict";VXe.exports=function(e,t){for(var r=e._fullData.length,n,i=0;i{"use strict";var HXe=uo(),JXt=z0(),$Xt=km(),QXt=F0(),eYt=q0().calcMarkerSize,tYt=W7();GXe.exports=function(t,r){var n=r._carpetTrace=tYt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){var i;r.xaxis=n.xaxis,r.yaxis=n.yaxis;var a=r._length,o=new Array(a),s,l,u=!1;for(i=0;i{"use strict";var rYt=iT(),WXe=Qa(),iYt=ao();ZXe.exports=function(t,r,n,i){var a,o,s,l=n[0][0].carpet,u=WXe.getFromId(t,l.xaxis||"x"),c=WXe.getFromId(t,l.yaxis||"y"),f={xaxis:u,yaxis:c,plot:r.plot};for(a=0;a{"use strict";var nYt=sT(),aYt=Mr().fillText;YXe.exports=function(t,r,n,i){var a=nYt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index];o.a=f.a,o.b=f.b,o.xLabelVal=void 0,o.yLabelVal=void 0;var h=o.trace,d=h._carpet,v=h._module.formatLabels(f,h);o.yLabel=v.yLabel,delete o.text;var x=[];function b(k,A){var L;k.labelprefix&&k.labelprefix.length>0?L=k.labelprefix.replace(/ = $/,""):L=k._hovertitle,x.push(L+": "+A.toFixed(3)+k.labelsuffix)}if(!h.hovertemplate){var p=f.hi||h.hoverinfo,E=p.split("+");E.indexOf("all")!==-1&&(E=["a","b","text"]),E.indexOf("a")!==-1&&b(d.aaxis,f.a),E.indexOf("b")!==-1&&b(d.baxis,f.b),x.push("y: "+o.yLabel),E.indexOf("text")!==-1&&aYt(f,h,x),o.extraText=x.join("
")}return a}});var $Xe=ye((Sxr,JXe)=>{"use strict";JXe.exports=function(t,r,n,i,a){var o=i[a];return t.a=o.a,t.b=o.b,t.y=o.y,t}});var eYe=ye((Mxr,QXe)=>{"use strict";QXe.exports={attributes:p$(),supplyDefaults:BXe(),colorbar:Kd(),formatLabels:UXe(),calc:jXe(),plot:XXe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:KXe(),selectPoints:lT(),eventData:$Xe(),moduleType:"trace",name:"scattercarpet",basePlotModule:Jf(),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}});var rYe=ye((Exr,tYe)=>{"use strict";tYe.exports=eYe()});var g$=ye((kxr,iYe)=>{"use strict";var lg=ET(),g1=T4(),oYt=Jl(),sYt=no().extendFlat,ty=g1.contours;iYe.exports=sYt({carpet:{valType:"string",editType:"calc"},z:lg.z,a:lg.x,a0:lg.x0,da:lg.dx,b:lg.y,b0:lg.y0,db:lg.dy,text:lg.text,hovertext:lg.hovertext,transpose:lg.transpose,atype:lg.xtype,btype:lg.ytype,fillcolor:g1.fillcolor,autocontour:g1.autocontour,ncontours:g1.ncontours,contours:{type:ty.type,start:ty.start,end:ty.end,size:ty.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:ty.showlines,showlabels:ty.showlabels,labelfont:ty.labelfont,labelformat:ty.labelformat,operation:ty.operation,value:ty.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:g1.line.color,width:g1.line.width,dash:g1.line.dash,smoothing:g1.line.smoothing,editType:"plot"},zorder:g1.zorder},oYt("",{cLetter:"z",autoColorDflt:!1}))});var m$=ye((Cxr,oYe)=>{"use strict";var nYe=Mr(),lYt=XI(),aYe=g$(),uYt=yH(),cYt=y8(),fYt=_8();oYe.exports=function(t,r,n,i){function a(u,c){return nYe.coerce(t,r,aYe,u,c)}function o(u){return nYe.coerce2(t,r,aYe,u)}if(a("carpet"),t.a&&t.b){var s=lYt(t,r,a,i,"a","b");if(!s){r.visible=!1;return}a("text");var l=a("contours.type")==="constraint";l?uYt(t,r,a,i,n,{hasHover:!1}):(cYt(t,r,a,o),fYt(t,r,a,i,{hasHover:!1}))}else r._defaultColor=n,r._length=null;a("zorder")}});var cYe=ye((Lxr,uYe)=>{"use strict";var hYt=zv(),sYe=Mr(),dYt=JI(),vYt=QI(),pYt=e8(),gYt=t8(),lYe=VV(),mYt=m$(),yYt=W7(),_Yt=oH();uYe.exports=function(t,r){var n=r._carpetTrace=yYt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){if(!r.a||!r.b){var i=t.data[n.index],a=t.data[r.index];a.a||(a.a=i.a),a.b||(a.b=i.b),mYt(a,r,r._defaultColor,t._fullLayout)}var o=xYt(t,r);return _Yt(r,r._z),o}};function xYt(e,t){var r=t._carpetTrace,n=r.aaxis,i=r.baxis,a,o,s,l,u,c,f;n._minDtick=0,i._minDtick=0,sYe.isArray1D(t.z)&&dYt(t,n,i,"a","b",["z"]),a=t._a=t._a||t.a,l=t._b=t._b||t.b,a=a?n.makeCalcdata(t,"_a"):[],l=l?i.makeCalcdata(t,"_b"):[],o=t.a0||0,s=t.da||1,u=t.b0||0,c=t.db||1,f=t._z=vYt(t._z||t.z,t.transpose),t._emptypoints=gYt(f),pYt(f,t._emptypoints);var h=sYe.maxRowLength(f),d=t.xtype==="scaled"?"":a,v=lYe(t,d,o,s,h,n),x=t.ytype==="scaled"?"":l,b=lYe(t,x,u,c,f.length,i),p={a:v,b,z:f};return t.contours.type==="levels"&&t.contours.coloring!=="none"&&hYt(e,t,{vals:f,containerStr:"",cLetter:"z"}),[p]}});var hYe=ye((Pxr,fYe)=>{"use strict";var bYt=Mr().isArrayOrTypedArray;fYe.exports=function(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v,x,b,p=bYt(r)?"a":"b",E=p==="a"?e.aaxis:e.baxis,k=E.smoothing,A=p==="a"?e.a2i:e.b2j,L=p==="a"?r:n,_=p==="a"?n:r,C=p==="a"?t.a.length:t.b.length,M=p==="a"?t.b.length:t.a.length,g=Math.floor(p==="a"?e.b2j(_):e.a2i(_)),P=p==="a"?function(_e){return e.evalxy([],_e,g)}:function(_e){return e.evalxy([],g,_e)};k&&(o=Math.max(0,Math.min(M-2,g)),s=g-o,a=p==="a"?function(_e,Me){return e.dxydi([],_e,o,Me,s)}:function(_e,Me){return e.dxydj([],o,_e,s,Me)});var T=A(L[0]),F=A(L[1]),q=T0?Math.floor:Math.ceil,X=q>0?Math.ceil:Math.floor,G=q>0?Math.min:Math.max,N=q>0?Math.max:Math.min,W=H(T+V),re=X(F-V);c=P(T);var ae=[[c]];for(i=W;i*q{"use strict";var X7=xa(),Y7=f$(),mYe=h$(),eC=ao(),m1=Mr(),wYt=lH(),TYt=uH(),hw=w8(),Z7=S4(),AYt=dH(),SYt=hH(),MYt=vH(),EYt=W7(),dYe=hYe();yYe.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;m1.makeTraceGroups(i,n,"contour").each(function(s){var l=X7.select(this),u=s[0],c=u.trace,f=c._carpetTrace=EYt(t,c),h=t.calcdata[f.index][0];if(!f.visible||f.visible==="legendonly")return;var d=u.a,v=u.b,x=c.contours,b=SYt(x,r,u),p=x.type==="constraint",E=x._operation,k=p?E==="="?"lines":"fill":x.coloring;function A(H){var X=f.ab2xy(H[0],H[1],!0);return[a.c2p(X[0]),o.c2p(X[1])]}var L=[[d[0],v[v.length-1]],[d[d.length-1],v[v.length-1]],[d[d.length-1],v[0]],[d[0],v[0]]];wYt(b);var _=(d[d.length-1]-d[0])*1e-8,C=(v[v.length-1]-v[0])*1e-8;TYt(b,_,C);var M=b;x.type==="constraint"&&(M=AYt(b,E)),kYt(b,A);var g,P,T,F,q=[];for(F=h.clipsegments.length-1;F>=0;F--)g=h.clipsegments[F],P=Y7([],g.x,a.c2p),T=Y7([],g.y,o.c2p),P.reverse(),T.reverse(),q.push(mYe(P,T,g.bicubic));var V="M"+q.join("L")+"Z";PYt(l,h.clipsegments,a,o,p,k),IYt(c,l,a,o,M,L,A,f,h,k,V),CYt(l,b,t,u,x,r,f),eC.setClipUrl(l,f._clipPathId,t)})};function kYt(e,t){var r,n,i,a,o,s,l,u,c;for(r=0;rb&&(n.max=b),n.len=n.max-n.min}function vYe(e,t,r){var n=e.getPointAtLength(t),i=e.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function pYe(e){var t=Math.sqrt(e[0]*e[0]+e[1]*e[1]);return[e[0]/t,e[1]/t]}function gYe(e,t){var r=Math.abs(e[0]*t[0]+e[1]*t[1]),n=Math.sqrt(1-r*r);return n/r}function PYt(e,t,r,n,i,a){var o,s,l,u,c=m1.ensureSingle(e,"g","contourbg"),f=c.selectAll("path").data(a==="fill"&&!i?[0]:[]);f.enter().append("path"),f.exit().remove();var h=[];for(u=0;u=0&&(d=P,x=b):Math.abs(h[1]-d[1])=0&&(d=P,x=b):m1.log("endpt to newendpt is not vert. or horz.",h,d,P)}if(x>=0)break;u+=M(h,d),h=d}if(x===t.edgepaths.length){m1.log("unclosed perimeter path");break}l=x,f=c.indexOf(l)===-1,f&&(l=c[0],u+=M(h,d)+"Z",h=null)}for(l=0;l{"use strict";xYe.exports={attributes:g$(),supplyDefaults:m$(),colorbar:S8(),calc:cYe(),plot:_Ye(),style:A8(),moduleType:"trace",name:"contourcarpet",basePlotModule:Jf(),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}});var TYe=ye((Dxr,wYe)=>{"use strict";wYe.exports=bYe()});var J7=ye((zxr,kYe)=>{"use strict";var K7=Mr().extendFlat,tC=Uc(),AYe=Oc().axisHoverFormat,MYe=Ed().dash,DYt=i3(),EYe=HT(),zYt=EYe.INCREASING.COLOR,FYt=EYe.DECREASING.COLOR,y$=tC.line;function SYe(e){return{line:{color:K7({},y$.color,{dflt:e}),width:y$.width,dash:MYe,editType:"style"},editType:"style"}}kYe.exports={xperiod:tC.xperiod,xperiod0:tC.xperiod0,xperiodalignment:tC.xperiodalignment,xhoverformat:AYe("x"),yhoverformat:AYe("y"),x:{valType:"data_array",editType:"calc+clearAxisTypes"},open:{valType:"data_array",editType:"calc"},high:{valType:"data_array",editType:"calc"},low:{valType:"data_array",editType:"calc"},close:{valType:"data_array",editType:"calc"},line:{width:K7({},y$.width,{}),dash:K7({},MYe,{}),editType:"style"},increasing:SYe(zYt),decreasing:SYe(FYt),text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},tickwidth:{valType:"number",min:0,max:.5,dflt:.3,editType:"calc"},hoverlabel:K7({},DYt.hoverlabel,{split:{valType:"boolean",dflt:!1,editType:"style"}}),zorder:tC.zorder}});var _$=ye((Fxr,CYe)=>{"use strict";var qYt=ba(),OYt=Mr();CYe.exports=function(t,r,n,i){var a=n("x"),o=n("open"),s=n("high"),l=n("low"),u=n("close");n("hoverlabel.split");var c=qYt.getComponentMethod("calendars","handleTraceDefaults");if(c(t,r,["x"],i),!!(o&&s&&l&&u)){var f=Math.min(o.length,s.length,l.length,u.length);return a&&(f=Math.min(f,OYt.minRowLength(a))),r._length=f,f}}});var IYe=ye((qxr,PYe)=>{"use strict";var BYt=Mr(),NYt=_$(),UYt=Pg(),VYt=J7();PYe.exports=function(t,r,n,i){function a(s,l){return BYt.coerce(t,r,VYt,s,l)}var o=NYt(t,r,a,i);if(!o){r.visible=!1;return}UYt(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),a("line.dash"),LYe(t,r,a,"increasing"),LYe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("tickwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function LYe(e,t,r,n){r(n+".line.color"),r(n+".line.width",t.line.width),r(n+".line.dash",t.line.dash)}});var x$=ye((Oxr,DYe)=>{"use strict";var BA=Mr(),$7=BA._,Q7=Qa(),HYt=Rg(),rC=es().BADNUM;function GYt(e,t){var r=Q7.getFromId(e,t.xaxis),n=Q7.getFromId(e,t.yaxis),i=WYt(e,r,t),a=t._minDiff;t._minDiff=null;var o=t._origX;t._origX=null;var s=t._xcalc;t._xcalc=null;var l=RYe(e,t,o,s,n,jYt);return t._extremes[r._id]=Q7.findExtremes(r,s,{vpad:a/2}),l.length?(BA.extendFlat(l[0].t,{wHover:a/2,tickLen:i}),l):[{t:{empty:!0}}]}function jYt(e,t,r,n){return{o:e,h:t,l:r,c:n}}function RYe(e,t,r,n,i,a){for(var o=i.makeCalcdata(t,"open"),s=i.makeCalcdata(t,"high"),l=i.makeCalcdata(t,"low"),u=i.makeCalcdata(t,"close"),c=BA.isArrayOrTypedArray(t.text),f=BA.isArrayOrTypedArray(t.hovertext),h=!0,d=null,v=!!t.xperiodalignment,x=[],b=0;bd):h=L>E,d=L;var _=a(E,k,A,L);_.pos=p,_.yc=(E+L)/2,_.i=b,_.dir=h?"increasing":"decreasing",_.x=_.pos,_.y=[A,k],v&&(_.orig_p=r[b]),c&&(_.tx=t.text[b]),f&&(_.htx=t.hovertext[b]),x.push(_)}else x.push({pos:p,empty:!0})}return t._extremes[i._id]=Q7.findExtremes(i,BA.concat(l,s),{padded:!0}),x.length&&(x[0].t={labels:{open:$7(e,"open:")+" ",high:$7(e,"high:")+" ",low:$7(e,"low:")+" ",close:$7(e,"close:")+" "}}),x}function WYt(e,t,r){var n=r._minDiff;if(!n){var i=e._fullData,a=[];n=1/0;var o;for(o=0;o{"use strict";var ZYt=xa(),zYe=Mr();FYe.exports=function(t,r,n,i){var a=r.yaxis,o=r.xaxis,s=!!o.rangebreaks;zYe.makeTraceGroups(i,n,"trace ohlc").each(function(l){var u=ZYt.select(this),c=l[0],f=c.t,h=c.trace;if(h.visible!==!0||f.empty){u.remove();return}var d=f.tickLen,v=u.selectAll("path").data(zYe.identity);v.enter().append("path"),v.exit().remove(),v.attr("d",function(x){if(x.empty)return"M0,0Z";var b=o.c2p(x.pos-d,!0),p=o.c2p(x.pos+d,!0),E=s?(b+p)/2:o.c2p(x.pos,!0),k=a.c2p(x.o,!0),A=a.c2p(x.h,!0),L=a.c2p(x.l,!0),_=a.c2p(x.c,!0);return"M"+b+","+k+"H"+E+"M"+E+","+A+"V"+L+"M"+p+","+_+"H"+E})})}});var BYe=ye((Nxr,OYe)=>{"use strict";var b$=xa(),XYt=ao(),YYt=va();OYe.exports=function(t,r,n){var i=n||b$.select(t).selectAll("g.ohlclayer").selectAll("g.trace");i.style("opacity",function(a){return a[0].trace.opacity}),i.each(function(a){var o=a[0].trace;b$.select(this).selectAll("path").each(function(s){if(!s.empty){var l=o[s.dir].line;b$.select(this).style("fill","none").call(YYt.stroke,l.color).call(XYt.dashLine,l.dash,l.width).style("opacity",o.selectedpoints&&!s.selected?.3:1)}})})}});var T$=ye((Uxr,GYe)=>{"use strict";var w$=Qa(),KYt=Mr(),e9=Nc(),JYt=va(),$Yt=Mr().fillText,NYe=HT(),QYt={increasing:NYe.INCREASING.SYMBOL,decreasing:NYe.DECREASING.SYMBOL};function eKt(e,t,r,n){var i=e.cd,a=i[0].trace;return a.hoverlabel.split?VYe(e,t,r,n):HYe(e,t,r,n)}function UYe(e,t,r,n){var i=e.cd,a=e.xa,o=i[0].trace,s=i[0].t,l=o.type,u=l==="ohlc"?"l":"min",c=l==="ohlc"?"h":"max",f,h,d=s.bPos||0,v=function(P){return P.pos+d-t},x=s.bdPos||s.tickLen,b=s.wHover,p=Math.min(1,x/Math.abs(a.r2c(a.range[1])-a.r2c(a.range[0])));f=e.maxHoverDistance-p,h=e.maxSpikeDistance-p;function E(P){var T=v(P);return e9.inbox(T-b,T+b,f)}function k(P){var T=P[u],F=P[c];return T===F||e9.inbox(T-r,F-r,f)}function A(P){return(E(P)+k(P))/2}var L=e9.getDistanceFunction(n,E,k,A);if(e9.getClosest(i,L,e),e.index===!1)return null;var _=i[e.index];if(_.empty)return null;var C=_.dir,M=o[C],g=M.line.color;return JYt.opacity(g)&&M.line.width?e.color=g:e.color=M.fillcolor,e.x0=a.c2p(_.pos+d-x,!0),e.x1=a.c2p(_.pos+d+x,!0),e.xLabelVal=_.orig_p!==void 0?_.orig_p:_.pos,e.spikeDistance=A(_)*h/f,e.xSpike=a.c2p(_.pos,!0),e}function VYe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=[],u=UYe(e,t,r,n);if(!u)return[];var c=u.index,f=i[c],h=f.hi||o.hoverinfo,d=h.split("+"),v=h==="all",x=v||d.indexOf("y")!==-1;if(!x)return[];for(var b=["high","open","close","low"],p={},E=0;E"+s.labels[k]+w$.hoverLabelText(a,A,o.yhoverformat)):(_=KYt.extendFlat({},u),_.y0=_.y1=L,_.yLabelVal=A,_.yLabel=s.labels[k]+w$.hoverLabelText(a,A,o.yhoverformat),_.name="",l.push(_),p[A]=_)}return l}function HYe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=UYe(e,t,r,n);if(!l)return[];var u=l.index,c=i[u],f=l.index=c.i,h=c.dir;function d(A){return s.labels[A]+w$.hoverLabelText(a,o[A][f],o.yhoverformat)}var v=c.hi||o.hoverinfo,x=v.split("+"),b=v==="all",p=b||x.indexOf("y")!==-1,E=b||x.indexOf("text")!==-1,k=p?[d("open"),d("high"),d("low"),d("close")+" "+QYt[h]]:[];return E&&$Yt(c,o,k),l.extraText=k.join("
"),l.y0=l.y1=a.c2p(c.yc,!0),[l]}GYe.exports={hoverPoints:eKt,hoverSplit:VYe,hoverOnPoints:HYe}});var A$=ye((Vxr,jYe)=>{"use strict";jYe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l=n[0].t.bPos||0;if(r===!1)for(s=0;s{"use strict";WYe.exports={moduleType:"trace",name:"ohlc",basePlotModule:Jf(),categories:["cartesian","svg","showLegend"],meta:{},attributes:J7(),supplyDefaults:IYe(),calc:x$().calc,plot:qYe(),style:BYe(),hoverPoints:T$().hoverPoints,selectPoints:A$()}});var YYe=ye((Gxr,XYe)=>{"use strict";XYe.exports=ZYe()});var M$=ye((jxr,$Ye)=>{"use strict";var S$=Mr().extendFlat,KYe=Oc().axisHoverFormat,c0=J7(),NA=v4();function JYe(e){return{line:{color:S$({},NA.line.color,{dflt:e}),width:NA.line.width,editType:"style"},fillcolor:NA.fillcolor,editType:"style"}}$Ye.exports={xperiod:c0.xperiod,xperiod0:c0.xperiod0,xperiodalignment:c0.xperiodalignment,xhoverformat:KYe("x"),yhoverformat:KYe("y"),x:c0.x,open:c0.open,high:c0.high,low:c0.low,close:c0.close,line:{width:S$({},NA.line.width,{}),editType:"style"},increasing:JYe(c0.increasing.line.color.dflt),decreasing:JYe(c0.decreasing.line.color.dflt),text:c0.text,hovertext:c0.hovertext,whiskerwidth:S$({},NA.whiskerwidth,{dflt:0}),hoverlabel:c0.hoverlabel,zorder:NA.zorder}});var tKe=ye((Wxr,eKe)=>{"use strict";var tKt=Mr(),rKt=va(),iKt=_$(),nKt=Pg(),aKt=M$();eKe.exports=function(t,r,n,i){function a(s,l){return tKt.coerce(t,r,aKt,s,l)}var o=iKt(t,r,a,i);if(!o){r.visible=!1;return}nKt(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),QYe(t,r,a,"increasing"),QYe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("whiskerwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function QYe(e,t,r,n){var i=r(n+".line.color");r(n+".line.width",t.line.width),r(n+".fillcolor",rKt.addOpacity(i,.5))}});var aKe=ye((Zxr,nKe)=>{"use strict";var rKe=Mr(),iKe=Qa(),oKt=Rg(),sKt=x$().calcCommon;nKe.exports=function(e,t){var r=e._fullLayout,n=iKe.getFromId(e,t.xaxis),i=iKe.getFromId(e,t.yaxis),a=n.makeCalcdata(t,"x"),o=oKt(t,n,"x",a).vals,s=sKt(e,t,a,o,i,lKt);return s.length?(rKe.extendFlat(s[0].t,{num:r._numBoxes,dPos:rKe.distinctVals(o).minDiff/2,posLetter:"x",valLetter:"y"}),r._numBoxes++,s):[{t:{empty:!0}}]};function lKt(e,t,r,n){return{min:r,q1:Math.min(e,n),med:n,q3:Math.max(e,n),max:t}}});var sKe=ye((Xxr,oKe)=>{"use strict";oKe.exports={moduleType:"trace",name:"candlestick",basePlotModule:Jf(),categories:["cartesian","svg","showLegend","candlestick","boxLayout"],meta:{},attributes:M$(),layoutAttributes:p4(),supplyLayoutDefaults:VI().supplyLayoutDefaults,crossTraceCalc:GI().crossTraceCalc,supplyDefaults:tKe(),calc:aKe(),plot:jI().plot,layerName:"boxlayer",style:WI().style,hoverPoints:T$().hoverPoints,selectPoints:A$()}});var uKe=ye((Yxr,lKe)=>{"use strict";lKe.exports=sKe()});var k$=ye((Kxr,cKe)=>{"use strict";var r9=Mr(),uKt=ym(),t9=r9.deg2rad,E$=r9.rad2deg;cKe.exports=function(t,r,n){switch(uKt(t,n),t._id){case"x":case"radialaxis":cKt(t,r);break;case"angularaxis":dKt(t,r);break}};function cKt(e,t){var r=t._subplot;e.setGeometry=function(){var n=e._rl[0],i=e._rl[1],a=r.innerRadius,o=(r.radius-a)/(i-n),s=a/o,l=n>i?function(u){return u<=0}:function(u){return u>=0};e.c2g=function(u){var c=e.c2l(u)-n;return(l(c)?c:0)+s},e.g2c=function(u){return e.l2c(u+n-s)},e.g2p=function(u){return u*o},e.c2p=function(u){return e.g2p(e.c2g(u))}}}function fKt(e,t){return t==="degrees"?t9(e):e}function hKt(e,t){return t==="degrees"?E$(e):e}function dKt(e,t){var r=e.type;if(r==="linear"){var n=e.d2c,i=e.c2d;e.d2c=function(a,o){return fKt(n(a),o)},e.c2d=function(a,o){return i(hKt(a,o))}}e.makeCalcdata=function(a,o){var s=a[o],l=a._length,u,c,f=function(b){return e.d2c(b,a.thetaunit)};if(s)for(u=new Array(l),c=0;c{"use strict";fKe.exports={attr:"subplot",name:"polar",axisNames:["angularaxis","radialaxis"],axisName2dataArray:{angularaxis:"theta",radialaxis:"r"},layerNames:["draglayer","plotbg","backplot","angular-grid","radial-grid","frontplot","angular-line","radial-line","angular-axis","radial-axis"],radialDragBoxSize:50,angularDragBoxSize:30,cornerLen:25,cornerHalfWidth:2,MINDRAG:8,MINZOOM:20,OFFEDGE:20}});var a9=ye(($xr,gKe)=>{"use strict";var dw=Mr(),hKe=wM().tester,C$=dw.findIndexOfMin,vKe=dw.isAngleInsideSector,vKt=dw.angleDelta,dKe=dw.angleDist;function pKt(e,t,r,n,i){if(!vKe(t,n))return!1;var a,o;r[0]0?o:1/0},n=C$(t,r),i=dw.mod(n+1,t.length);return[t[n],t[i]]}function n9(e){return Math.abs(e)>1e-10?e:0}function L$(e,t,r){t=t||0,r=r||0;for(var n=e.length,i=new Array(n),a=0;a{"use strict";function mKe(e){return e<0?-1:e>0?1:0}function VA(e){var t=e[0],r=e[1];if(!isFinite(t)||!isFinite(r))return[1,0];var n=(t+1)*(t+1)+r*r;return[(t*t+r*r-1)/n,2*r/n]}function HA(e,t){var r=t[0],n=t[1];return[r*e.radius+e.cx,-n*e.radius+e.cy]}function yKe(e,t){return t*e.radius}function TKt(e,t,r,n){var i=HA(e,VA([r,t])),a=i[0],o=i[1],s=HA(e,VA([n,t])),l=s[0],u=s[1];if(t===0)return["M"+a+","+o,"L"+l+","+u].join(" ");var c=yKe(e,1/Math.abs(t));return["M"+a+","+o,"A"+c+","+c+" 0 0,"+(t<0?1:0)+" "+l+","+u].join(" ")}function AKt(e,t,r,n){var i=yKe(e,1/(t+1)),a=HA(e,VA([t,r])),o=a[0],s=a[1],l=HA(e,VA([t,n])),u=l[0],c=l[1];if(mKe(r)!==mKe(n)){var f=HA(e,VA([t,0])),h=f[0],d=f[1];return["M"+o+","+s,"A"+i+","+i+" 0 0,"+(0{"use strict";var vw=xa(),SKt=id(),gw=ba(),cc=Mr(),ry=cc.strRotate,dd=cc.strTranslate,I$=va(),iC=ao(),MKt=Xu(),dp=Qa(),EKt=ym(),kKt=k$(),CKt=wg().doAutoRange,y1=DN(),l9=gv(),xKe=Nc(),LKt=Mb(),PKt=wf().prepSelect,IKt=wf().selectOnClick,R$=wf().clearOutline,bKe=Tg(),wKe=lM(),TKe=gM().redrawReglTraces,RKt=Nh().MID_SHIFT,Lx=i9(),_1=a9(),u9=P$(),o9=u9.smith,DKt=u9.reactanceArc,zKt=u9.resistanceArc,s9=u9.smithTransform,FKt=cc._,AKe=cc.mod,Px=cc.deg2rad,pw=cc.rad2deg;function SKe(e,t,r){this.isSmith=r||!1,this.id=t,this.gd=e,this._hasClipOnAxisFalse=null,this.vangles=null,this.radialAxisAngle=null,this.traceHash={},this.layers={},this.clipPaths={},this.clipIds={},this.viewInitial={};var n=e._fullLayout,i="clip"+n._uid+t;this.clipIds.forTraces=i+"-for-traces",this.clipPaths.forTraces=n._clips.append("clipPath").attr("id",this.clipIds.forTraces),this.clipPaths.forTraces.append("path"),this.framework=n["_"+(r?"smith":"polar")+"layer"].append("g").attr("class",t),this.getHole=function(a){return this.isSmith?0:a.hole},this.getSector=function(a){return this.isSmith?[0,360]:a.sector},this.getRadial=function(a){return this.isSmith?a.realaxis:a.radialaxis},this.getAngular=function(a){return this.isSmith?a.imaginaryaxis:a.angularaxis},r||(this.radialTickLayout=null,this.angularTickLayout=null)}var Fd=SKe.prototype;kKe.exports=function(t,r,n){return new SKe(t,r,n)};Fd.plot=function(e,t){for(var r=this,n=t[r.id],i=!1,a=0;ab?(p=u,E=u*b,L=(c-E)/i.h/2,k=[s[0],s[1]],A=[l[0]+L,l[1]-L]):(p=c/b,E=c,L=(u-p)/i.w/2,k=[s[0]+L,s[1]-L],A=[l[0],l[1]]),r.xLength2=p,r.yLength2=E,r.xDomain2=k,r.yDomain2=A;var _=r.xOffset2=i.l+i.w*k[0],C=r.yOffset2=i.t+i.h*(1-A[1]),M=r.radius=p/d,g=r.innerRadius=r.getHole(t)*M,P=r.cx=_-M*h[0],T=r.cy=C+M*h[3],F=r.cxx=P-_,q=r.cyy=T-C,V=a.side,H;V==="counterclockwise"?(H=V,V="top"):V==="clockwise"&&(H=V,V="bottom"),r.radialAxis=r.mockAxis(e,t,a,{_id:"x",side:V,_trueSide:H,domain:[g/i.w,M/i.w]}),r.angularAxis=r.mockAxis(e,t,o,{side:"right",domain:[0,Math.PI],autorange:!1}),r.doAutoRange(e,t),r.updateAngularAxis(e,t),r.updateRadialAxis(e,t),r.updateRadialAxisTitle(e,t),r.xaxis=r.mockCartesianAxis(e,t,{_id:"x",domain:k}),r.yaxis=r.mockCartesianAxis(e,t,{_id:"y",domain:A});var X=r.pathSubplot();r.clipPaths.forTraces.select("path").attr("d",X).attr("transform",dd(F,q)),n.frontplot.attr("transform",dd(_,C)).call(iC.setClipUrl,r._hasClipOnAxisFalse?null:r.clipIds.forTraces,r.gd),n.bg.attr("d",X).attr("transform",dd(P,T)).call(I$.fill,t.bgcolor)};Fd.mockAxis=function(e,t,r,n){var i=cc.extendFlat({},r,n);return kKt(i,t,e),i};Fd.mockCartesianAxis=function(e,t,r){var n=this,i=n.isSmith,a=r._id,o=cc.extendFlat({type:"linear"},r);EKt(o,e);var s={x:[0,2],y:[1,3]};return o.setRange=function(){var l=n.sectorBBox,u=s[a],c=n.radialAxis._rl,f=(c[1]-c[0])/(1-n.getHole(t));o.range=[l[u[0]]*f,l[u[1]]*f]},o.isPtWithinRange=a==="x"&&!i?function(l){return n.isPtInside(l)}:function(){return!0},o.setRange(),o.setScale(),o};Fd.doAutoRange=function(e,t){var r=this,n=r.gd,i=r.radialAxis,a=r.getRadial(t);CKt(n,i);var o=i.range;if(a.range=o.slice(),a._input.range=o.slice(),i._rl=[i.r2l(o[0],null,"gregorian"),i.r2l(o[1],null,"gregorian")],i.minallowed!==void 0){var s=i.r2l(i.minallowed);i._rl[0]>i._rl[1]?i._rl[1]=Math.max(i._rl[1],s):i._rl[0]=Math.max(i._rl[0],s)}if(i.maxallowed!==void 0){var l=i.r2l(i.maxallowed);i._rl[0]90&&c<=270&&(f.tickangle=180);var v=d?function(M){var g=s9(r,o9([M.x,0]));return dd(g[0]-s,g[1]-l)}:function(M){return dd(f.l2p(M.x)+o,0)},x=d?function(M){return zKt(r,M.x,-1/0,1/0)}:function(M){return r.pathArc(f.r2p(M.x)+o)},b=MKe(u);if(r.radialTickLayout!==b&&(i["radial-axis"].selectAll(".xtick").remove(),r.radialTickLayout=b),h){f.setScale();var p=0,E=d?(f.tickvals||[]).filter(function(M){return M>=0}).map(function(M){return dp.tickText(f,M,!0,!1)}):dp.calcTicks(f),k=d?E:dp.clipEnds(f,E),A=dp.getTickSigns(f)[2];d&&((f.ticks==="top"&&f.side==="bottom"||f.ticks==="bottom"&&f.side==="top")&&(A=-A),f.ticks==="top"&&f.side==="top"&&(p=-f.ticklen),f.ticks==="bottom"&&f.side==="bottom"&&(p=f.ticklen)),dp.drawTicks(n,f,{vals:E,layer:i["radial-axis"],path:dp.makeTickPath(f,0,A),transFn:v,crisp:!1}),dp.drawGrid(n,f,{vals:k,layer:i["radial-grid"],path:x,transFn:cc.noop,crisp:!1}),dp.drawLabels(n,f,{vals:E,layer:i["radial-axis"],transFn:v,labelFns:dp.makeLabelFns(f,p)})}var L=r.radialAxisAngle=r.vangles?pw(EKe(Px(u.angle),r.vangles)):u.angle,_=dd(s,l),C=_+ry(-L);nC(i["radial-axis"],h&&(u.showticklabels||u.ticks),{transform:C}),nC(i["radial-grid"],h&&u.showgrid,{transform:d?"":_}),nC(i["radial-line"].select("line"),h&&u.showline,{x1:d?-a:o,y1:0,x2:a,y2:0,transform:C}).attr("stroke-width",u.linewidth).call(I$.stroke,u.linecolor)};Fd.updateRadialAxisTitle=function(e,t,r){if(!this.isSmith){var n=this,i=n.gd,a=n.radius,o=n.cx,s=n.cy,l=n.getRadial(t),u=n.id+"title",c=0;if(l.title){var f=iC.bBox(n.layers["radial-axis"].node()).height,h=l.title.font.size,d=l.side;c=d==="top"?h:d==="counterclockwise"?-(f+h*.4):f+h*.8}var v=r!==void 0?r:n.radialAxisAngle,x=Px(v),b=Math.cos(x),p=Math.sin(x),E=o+a/2*b+c*p,k=s-a/2*p+c*b;n.layers["radial-axis-title"]=LKt.draw(i,u,{propContainer:l,propName:n.id+".radialaxis.title",placeholder:FKt(i,"Click to enter radial axis title"),attributes:{x:E,y:k,"text-anchor":"middle"},transform:{rotate:-v}})}};Fd.updateAngularAxis=function(e,t){var r=this,n=r.gd,i=r.layers,a=r.radius,o=r.innerRadius,s=r.cx,l=r.cy,u=r.getAngular(t),c=r.angularAxis,f=r.isSmith;f||(r.fillViewInitialKey("angularaxis.rotation",u.rotation),c.setGeometry(),c.setScale());var h=f?function(g){var P=s9(r,o9([0,g.x]));return Math.atan2(P[0]-s,P[1]-l)-Math.PI/2}:function(g){return c.t2g(g.x)};c.type==="linear"&&c.thetaunit==="radians"&&(c.tick0=pw(c.tick0),c.dtick=pw(c.dtick));var d=function(g){return dd(s+a*Math.cos(g),l-a*Math.sin(g))},v=f?function(g){var P=s9(r,o9([0,g.x]));return dd(P[0],P[1])}:function(g){return d(h(g))},x=f?function(g){var P=s9(r,o9([0,g.x])),T=Math.atan2(P[0]-s,P[1]-l)-Math.PI/2;return dd(P[0],P[1])+ry(-pw(T))}:function(g){var P=h(g);return d(P)+ry(-pw(P))},b=f?function(g){return DKt(r,g.x,0,1/0)}:function(g){var P=h(g),T=Math.cos(P),F=Math.sin(P);return"M"+[s+o*T,l-o*F]+"L"+[s+a*T,l-a*F]},p=dp.makeLabelFns(c,0),E=p.labelStandoff,k={};k.xFn=function(g){var P=h(g);return Math.cos(P)*E},k.yFn=function(g){var P=h(g),T=Math.sin(P)>0?.2:1;return-Math.sin(P)*(E+g.fontSize*T)+Math.abs(Math.cos(P))*(g.fontSize*RKt)},k.anchorFn=function(g){var P=h(g),T=Math.cos(P);return Math.abs(T)<.1?"middle":T>0?"start":"end"},k.heightFn=function(g,P,T){var F=h(g);return-.5*(1+Math.sin(F))*T};var A=MKe(u);r.angularTickLayout!==A&&(i["angular-axis"].selectAll("."+c._id+"tick").remove(),r.angularTickLayout=A);var L=f?[1/0].concat(c.tickvals||[]).map(function(g){return dp.tickText(c,g,!0,!1)}):dp.calcTicks(c);f&&(L[0].text="\u221E",L[0].fontSize*=1.75);var _;if(t.gridshape==="linear"?(_=L.map(h),cc.angleDelta(_[0],_[1])<0&&(_=_.slice().reverse())):_=null,r.vangles=_,c.type==="category"&&(L=L.filter(function(g){return cc.isAngleInsideSector(h(g),r.sectorInRad)})),c.visible){var C=c.ticks==="inside"?-1:1,M=(c.linewidth||1)/2;dp.drawTicks(n,c,{vals:L,layer:i["angular-axis"],path:"M"+C*M+",0h"+C*c.ticklen,transFn:x,crisp:!1}),dp.drawGrid(n,c,{vals:L,layer:i["angular-grid"],path:b,transFn:cc.noop,crisp:!1}),dp.drawLabels(n,c,{vals:L,layer:i["angular-axis"],repositionOnUpdate:!0,transFn:v,labelFns:k})}nC(i["angular-line"].select("path"),u.showline,{d:r.pathSubplot(),transform:dd(s,l)}).attr("stroke-width",u.linewidth).call(I$.stroke,u.linecolor)};Fd.updateFx=function(e,t){if(!this.gd._context.staticPlot){var r=!this.isSmith;r&&(this.updateAngularDrag(e),this.updateRadialDrag(e,t,0),this.updateRadialDrag(e,t,1)),this.updateHoverAndMainDrag(e)}};Fd.updateHoverAndMainDrag=function(e){var t=this,r=t.isSmith,n=t.gd,i=t.layers,a=e._zoomlayer,o=Lx.MINZOOM,s=Lx.OFFEDGE,l=t.radius,u=t.innerRadius,c=t.cx,f=t.cy,h=t.cxx,d=t.cyy,v=t.sectorInRad,x=t.vangles,b=t.radialAxis,p=_1.clampTiny,E=_1.findXYatLength,k=_1.findEnclosingVertexAngles,A=Lx.cornerHalfWidth,L=Lx.cornerLen/2,_,C,M=y1.makeDragger(i,"path","maindrag",e.dragmode===!1?"none":"crosshair");vw.select(M).attr("d",t.pathSubplot()).attr("transform",dd(c,f)),M.onmousemove=function(ce){xKe.hover(n,ce,t.id),n._fullLayout._lasthover=M,n._fullLayout._hoversubplot=t.id},M.onmouseout=function(ce){n._dragging||l9.unhover(n,ce)};var g={element:M,gd:n,subplot:t.id,plotinfo:{id:t.id,xaxis:t.xaxis,yaxis:t.yaxis},xaxes:[t.xaxis],yaxes:[t.yaxis]},P,T,F,q,V,H,X,G,N;function W(ce,Ge){return Math.sqrt(ce*ce+Ge*Ge)}function re(ce,Ge){return W(ce-h,Ge-d)}function ae(ce,Ge){return Math.atan2(d-Ge,ce-h)}function _e(ce,Ge){return[ce*Math.cos(Ge),ce*Math.sin(-Ge)]}function Me(ce,Ge){if(ce===0)return t.pathSector(2*A);var nt=L/ce,ct=Ge-nt,qt=Ge+nt,rt=Math.max(0,Math.min(ce,l)),ot=rt-A,Rt=rt+A;return"M"+_e(ot,ct)+"A"+[ot,ot]+" 0,0,0 "+_e(ot,qt)+"L"+_e(Rt,qt)+"A"+[Rt,Rt]+" 0,0,1 "+_e(Rt,ct)+"Z"}function ke(ce,Ge,nt){if(ce===0)return t.pathSector(2*A);var ct=_e(ce,Ge),qt=_e(ce,nt),rt=p((ct[0]+qt[0])/2),ot=p((ct[1]+qt[1])/2),Rt,kt;if(rt&&ot){var Ct=ot/rt,Yt=-1/Ct,xr=E(A,Ct,rt,ot);Rt=E(L,Yt,xr[0][0],xr[0][1]),kt=E(L,Yt,xr[1][0],xr[1][1])}else{var er,Ke;ot?(er=L,Ke=A):(er=A,Ke=L),Rt=[[rt-er,ot-Ke],[rt+er,ot-Ke]],kt=[[rt-er,ot+Ke],[rt+er,ot+Ke]]}return"M"+Rt.join("L")+"L"+kt.reverse().join("L")+"Z"}function ge(){F=null,q=null,V=t.pathSubplot(),H=!1;var ce=n._fullLayout[t.id];X=SKt(ce.bgcolor).getLuminance(),G=y1.makeZoombox(a,X,c,f,V),G.attr("fill-rule","evenodd"),N=y1.makeCorners(a,c,f),R$(n)}function ie(ce,Ge){return Ge=Math.max(Math.min(Ge,l),u),ceo?(ce-1&&ce===1&&IKt(Ge,n,[t.xaxis],[t.yaxis],t.id,g),nt.indexOf("event")>-1&&xKe.click(n,Ge,t.id)}g.prepFn=function(ce,Ge,nt){var ct=n._fullLayout.dragmode,qt=M.getBoundingClientRect();n._fullLayout._calcInverseTransform(n);var rt=n._fullLayout._invTransform;_=n._fullLayout._invScaleX,C=n._fullLayout._invScaleY;var ot=cc.apply3DTransform(rt)(Ge-qt.left,nt-qt.top);if(P=ot[0],T=ot[1],x){var Rt=_1.findPolygonOffset(l,v[0],v[1],x);P+=h+Rt[0],T+=d+Rt[1]}switch(ct){case"zoom":g.clickFn=Re,r||(x?g.moveFn=ze:g.moveFn=Ee,g.doneFn=Ce,ge(ce,Ge,nt));break;case"select":case"lasso":PKt(ce,Ge,nt,g,ct);break}},l9.init(g)};Fd.updateRadialDrag=function(e,t,r){var n=this,i=n.gd,a=n.layers,o=n.radius,s=n.innerRadius,l=n.cx,u=n.cy,c=n.radialAxis,f=Lx.radialDragBoxSize,h=f/2;if(!c.visible)return;var d=Px(n.radialAxisAngle),v=c._rl,x=v[0],b=v[1],p=v[r],E=.75*(v[1]-v[0])/(1-n.getHole(t))/o,k,A,L;r?(k=l+(o+h)*Math.cos(d),A=u-(o+h)*Math.sin(d),L="radialdrag"):(k=l+(s-h)*Math.cos(d),A=u-(s-h)*Math.sin(d),L="radialdrag-inner");var _=y1.makeRectDragger(a,L,"crosshair",-h,-h,f,f),C={element:_,gd:i};e.dragmode===!1&&(C.dragmode=!1),nC(vw.select(_),c.visible&&s0!=(r?P>x:P=90||i>90&&a>=450?d=1:s<=0&&u<=0?d=0:d=Math.max(s,u),i<=180&&a>=180||i>180&&a>=540?c=-1:o>=0&&l>=0?c=0:c=Math.min(o,l),i<=270&&a>=270||i>270&&a>=630?f=-1:s>=0&&u>=0?f=0:f=Math.min(s,u),a>=360?h=1:o<=0&&l<=0?h=0:h=Math.max(o,l),[c,f,h,d]}function EKe(e,t){var r=function(i){return cc.angleDist(e,i)},n=cc.findIndexOfMin(t,r);return t[n]}function nC(e,t,r){return t?(e.attr("display",null),e.attr(r)):e&&e.attr("display","none"),e}});var z$=ye((tbr,DKe)=>{"use strict";var OKt=dh(),Yo=Cd(),BKt=Ju().attributes,f0=Mr().extendFlat,CKe=Bu().overrideAll,LKe=CKe({color:Yo.color,showline:f0({},Yo.showline,{dflt:!0}),linecolor:Yo.linecolor,linewidth:Yo.linewidth,showgrid:f0({},Yo.showgrid,{dflt:!0}),gridcolor:Yo.gridcolor,gridwidth:Yo.gridwidth,griddash:Yo.griddash},"plot","from-root"),PKe=CKe({tickmode:Yo.minor.tickmode,nticks:Yo.nticks,tick0:Yo.tick0,dtick:Yo.dtick,tickvals:Yo.tickvals,ticktext:Yo.ticktext,ticks:Yo.ticks,ticklen:Yo.ticklen,tickwidth:Yo.tickwidth,tickcolor:Yo.tickcolor,ticklabelstep:Yo.ticklabelstep,showticklabels:Yo.showticklabels,labelalias:Yo.labelalias,showtickprefix:Yo.showtickprefix,tickprefix:Yo.tickprefix,showticksuffix:Yo.showticksuffix,ticksuffix:Yo.ticksuffix,showexponent:Yo.showexponent,exponentformat:Yo.exponentformat,minexponent:Yo.minexponent,separatethousands:Yo.separatethousands,tickfont:Yo.tickfont,tickangle:Yo.tickangle,tickformat:Yo.tickformat,tickformatstops:Yo.tickformatstops,layer:Yo.layer},"plot","from-root"),IKe={visible:f0({},Yo.visible,{dflt:!0}),type:f0({},Yo.type,{values:["-","linear","log","date","category"]}),autotypenumbers:Yo.autotypenumbers,autorangeoptions:{minallowed:Yo.autorangeoptions.minallowed,maxallowed:Yo.autorangeoptions.maxallowed,clipmin:Yo.autorangeoptions.clipmin,clipmax:Yo.autorangeoptions.clipmax,include:Yo.autorangeoptions.include,editType:"plot"},autorange:f0({},Yo.autorange,{editType:"plot"}),rangemode:{valType:"enumerated",values:["tozero","nonnegative","normal"],dflt:"tozero",editType:"calc"},minallowed:f0({},Yo.minallowed,{editType:"plot"}),maxallowed:f0({},Yo.maxallowed,{editType:"plot"}),range:f0({},Yo.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],editType:"plot"}),categoryorder:Yo.categoryorder,categoryarray:Yo.categoryarray,angle:{valType:"angle",editType:"plot"},autotickangles:Yo.autotickangles,side:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"clockwise",editType:"plot"},title:{text:f0({},Yo.title.text,{editType:"plot",dflt:""}),font:f0({},Yo.title.font,{editType:"plot"}),editType:"plot"},hoverformat:Yo.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(IKe,LKe,PKe);var RKe={visible:f0({},Yo.visible,{dflt:!0}),type:{valType:"enumerated",values:["-","linear","category"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:Yo.autotypenumbers,categoryorder:Yo.categoryorder,categoryarray:Yo.categoryarray,thetaunit:{valType:"enumerated",values:["radians","degrees"],dflt:"degrees",editType:"calc"},period:{valType:"number",editType:"calc",min:0},direction:{valType:"enumerated",values:["counterclockwise","clockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",editType:"calc"},hoverformat:Yo.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(RKe,LKe,PKe);DKe.exports={domain:BKt({name:"polar",editType:"plot"}),sector:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],dflt:[0,360],editType:"plot"},hole:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},bgcolor:{valType:"color",editType:"plot",dflt:OKt.background},radialaxis:IKe,angularaxis:RKe,gridshape:{valType:"enumerated",values:["circular","linear"],dflt:"circular",editType:"plot"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var OKe=ye((rbr,qKe)=>{"use strict";var c9=Mr(),NKt=va(),UKt=Vs(),VKt=C_(),HKt=kd().getSubplotData,GKt=xb(),jKt=T3(),WKt=t_(),ZKt=r_(),XKt=eI(),YKt=YM(),KKt=hB(),JKt=L3(),FKe=z$(),$Kt=k$(),f9=i9(),zKe=f9.axisNames;function QKt(e,t,r,n){var i=r("bgcolor");n.bgColor=NKt.combine(i,n.paper_bgcolor);var a=r("sector");r("hole");var o=HKt(n.fullData,f9.name,n.id),s=n.layoutOut,l;function u(G,N){return r(l+"."+G,N)}for(var c=0;c{"use strict";var tJt=kd().getSubplotCalcData,rJt=Mr().counterRegex,iJt=D$(),NKe=i9(),UKe=NKe.attr,mw=NKe.name,BKe=rJt(mw),VKe={};VKe[UKe]={valType:"subplotid",dflt:mw,editType:"calc"};function nJt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[mw],i=0;i{"use strict";var oJt=Wo().hovertemplateAttrs,sJt=Wo().texttemplateAttrs,d9=no().extendFlat,lJt=Eg(),h0=Uc(),uJt=vl(),GA=h0.line;GKe.exports={mode:h0.mode,r:{valType:"data_array",editType:"calc+clearAxisTypes"},theta:{valType:"data_array",editType:"calc+clearAxisTypes"},r0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dr:{valType:"number",dflt:1,editType:"calc"},theta0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dtheta:{valType:"number",editType:"calc"},thetaunit:{valType:"enumerated",values:["radians","degrees","gradians"],dflt:"degrees",editType:"calc+clearAxisTypes"},text:h0.text,texttemplate:sJt({editType:"plot"},{keys:["r","theta","text"]}),hovertext:h0.hovertext,line:{color:GA.color,width:GA.width,dash:GA.dash,backoff:GA.backoff,shape:d9({},GA.shape,{values:["linear","spline"]}),smoothing:GA.smoothing,editType:"calc"},connectgaps:h0.connectgaps,marker:h0.marker,cliponaxis:d9({},h0.cliponaxis,{dflt:!1}),textposition:h0.textposition,textfont:h0.textfont,fill:d9({},h0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:lJt(),hoverinfo:d9({},uJt.hoverinfo,{flags:["r","theta","text","name"]}),hoveron:h0.hoveron,hovertemplate:oJt(),selected:h0.selected,unselected:h0.unselected}});var p9=ye((abr,ZKe)=>{"use strict";var v9=Mr(),jA=lu(),cJt=$p(),fJt=R0(),jKe=J3(),hJt=D0(),dJt=Ig(),vJt=Sm().PTS_LINESONLY,pJt=aC();function gJt(e,t,r,n){function i(s,l){return v9.coerce(e,t,pJt,s,l)}var a=WKe(e,t,n,i);if(!a){t.visible=!1;return}i("thetaunit"),i("mode",a{"use strict";var mJt=Mr(),XKe=Qa();YKe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o,s;a?(o=a.radialAxis,s=a.angularAxis):(a=n[r.subplot],o=a.radialaxis,s=a.angularaxis);var l=o.c2l(t.r);i.rLabel=XKe.tickText(o,l,!0).text;var u=s.thetaunit==="degrees"?mJt.rad2deg(t.theta):t.theta;return i.thetaLabel=XKe.tickText(s,u,!0).text,i}});var $Ke=ye((sbr,JKe)=>{"use strict";var KKe=uo(),yJt=es().BADNUM,_Jt=Qa(),xJt=z0(),bJt=km(),wJt=F0(),TJt=q0().calcMarkerSize;JKe.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=a.makeCalcdata(r,"r"),l=o.makeCalcdata(r,"theta"),u=r._length,c=new Array(u),f=0;f{"use strict";var AJt=iT(),QKe=es().BADNUM;eJe.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=r.radialAxis,u=r.angularAxis,c=0;c{"use strict";var SJt=sT();function MJt(e,t,r,n){var i=SJt(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,rJe(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function rJe(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="r",a._hovertitle="\u03B8";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.rLabel=s.rLabel,n.thetaLabel=s.thetaLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["r","theta","text"]),f.indexOf("r")!==-1&&c(i,n.rLabel),f.indexOf("theta")!==-1&&c(a,n.thetaLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}iJe.exports={hoverPoints:MJt,makeHoverPointText:rJe}});var aJe=ye((cbr,nJe)=>{"use strict";nJe.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:h9(),categories:["polar","symbols","showLegend","scatter-like"],attributes:aC(),supplyDefaults:p9().supplyDefaults,colorbar:Kd(),formatLabels:g9(),calc:$Ke(),plot:tJe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:m9().hoverPoints,selectPoints:lT(),meta:{}}});var sJe=ye((fbr,oJe)=>{"use strict";oJe.exports=aJe()});var F$=ye((hbr,lJe)=>{"use strict";var Vp=aC(),x1=tk(),EJt=Wo().texttemplateAttrs;lJe.exports={mode:Vp.mode,r:Vp.r,theta:Vp.theta,r0:Vp.r0,dr:Vp.dr,theta0:Vp.theta0,dtheta:Vp.dtheta,thetaunit:Vp.thetaunit,text:Vp.text,texttemplate:EJt({editType:"plot"},{keys:["r","theta","text"]}),hovertext:Vp.hovertext,hovertemplate:Vp.hovertemplate,line:{color:x1.line.color,width:x1.line.width,dash:x1.line.dash,editType:"calc"},connectgaps:x1.connectgaps,marker:x1.marker,fill:x1.fill,fillcolor:x1.fillcolor,textposition:x1.textposition,textfont:x1.textfont,hoverinfo:Vp.hoverinfo,selected:Vp.selected,unselected:Vp.unselected}});var fJe=ye((dbr,cJe)=>{"use strict";var uJe=Mr(),q$=lu(),kJt=p9().handleRThetaDefaults,CJt=$p(),LJt=R0(),PJt=D0(),IJt=Ig(),RJt=Sm().PTS_LINESONLY,DJt=F$();cJe.exports=function(t,r,n,i){function a(s,l){return uJe.coerce(t,r,DJt,s,l)}var o=kJt(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("mode",o{"use strict";var zJt=g9();hJe.exports=function(t,r,n){var i=t.i;return"r"in t||(t.r=r._r[i]),"theta"in t||(t.theta=r._theta[i]),zJt(t,r,n)}});var pJe=ye((pbr,vJe)=>{"use strict";var FJt=z0(),qJt=q0().calcMarkerSize,OJt=Y2(),BJt=Qa(),NJt=sx().TOO_MANY_POINTS;vJe.exports=function(t,r){var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=r._r=a.makeCalcdata(r,"r"),l=r._theta=o.makeCalcdata(r,"theta"),u=r._length,c={};u{"use strict";var UJt=zz(),VJt=m9().makeHoverPointText;function HJt(e,t,r,n){var i=e.cd,a=i[0].t,o=a.r,s=a.theta,l=UJt.hoverPoints(e,t,r,n);if(!(!l||l[0].index===!1)){var u=l[0];if(u.index===void 0)return l;var c=e.subplot,f=u.cd[u.index],h=u.trace;if(f.r=o[u.index],f.theta=s[u.index],!!c.isPtInside(f))return u.xLabelVal=void 0,u.yLabelVal=void 0,VJt(f,h,c,u),l}}gJe.exports={hoverPoints:HJt}});var _Je=ye((mbr,yJe)=>{"use strict";yJe.exports={moduleType:"trace",name:"scatterpolargl",basePlotModule:h9(),categories:["gl","regl","polar","symbols","showLegend","scatter-like"],attributes:F$(),supplyDefaults:fJe(),colorbar:Kd(),formatLabels:dJe(),calc:pJe(),hoverPoints:mJe().hoverPoints,selectPoints:KX(),meta:{}}});var xJe=ye((ybr,O$)=>{"use strict";var GJt=Oz(),jJt=uo(),WJt=QY(),ZJt=ZX(),y9=Y2(),_9=Mr(),XJt=sx().TOO_MANY_POINTS,YJt={};O$.exports=function(t,r,n){if(n.length){var i=r.radialAxis,a=r.angularAxis,o=ZJt(t,r);return n.forEach(function(s){if(!(!s||!s[0]||!s[0].trace)){var l=s[0],u=l.trace,c=l.t,f=u._length,h=c.r,d=c.theta,v=c.opts,x,b=h.slice(),p=d.slice();for(x=0;x=XJt&&(v.marker.cluster=c.tree),v.marker&&(v.markerSel.positions=v.markerUnsel.positions=v.marker.positions=E),v.line&&E.length>1&&_9.extendFlat(v.line,y9.linePositions(t,u,E)),v.text&&(_9.extendFlat(v.text,{positions:E},y9.textPosition(t,u,v.text,v.marker)),_9.extendFlat(v.textSel,{positions:E},y9.textPosition(t,u,v.text,v.markerSel)),_9.extendFlat(v.textUnsel,{positions:E},y9.textPosition(t,u,v.text,v.markerUnsel))),v.fill&&!o.fill2d&&(o.fill2d=!0),v.marker&&!o.scatter2d&&(o.scatter2d=!0),v.line&&!o.line2d&&(o.line2d=!0),v.text&&!o.glText&&(o.glText=!0),o.lineOptions.push(v.line),o.fillOptions.push(v.fill),o.markerOptions.push(v.marker),o.markerSelectedOptions.push(v.markerSel),o.markerUnselectedOptions.push(v.markerUnsel),o.textOptions.push(v.text),o.textSelectedOptions.push(v.textSel),o.textUnselectedOptions.push(v.textUnsel),o.selectBatch.push([]),o.unselectBatch.push([]),c.x=k,c.y=A,c.rawx=k,c.rawy=A,c.r=h,c.theta=d,c.positions=E,c._scene=o,c.index=o.count,o.count++}}),WJt(t,r,n)}};O$.exports.reglPrecompiled=YJt});var TJe=ye((_br,wJe)=>{"use strict";var bJe=_Je();bJe.plot=xJe();wJe.exports=bJe});var SJe=ye((xbr,AJe)=>{"use strict";AJe.exports=TJe()});var B$=ye((bbr,MJe)=>{"use strict";var KJt=Wo().hovertemplateAttrs,WA=no().extendFlat,Ix=aC(),Rx=Lm();MJe.exports={r:Ix.r,theta:Ix.theta,r0:Ix.r0,dr:Ix.dr,theta0:Ix.theta0,dtheta:Ix.dtheta,thetaunit:Ix.thetaunit,base:WA({},Rx.base,{}),offset:WA({},Rx.offset,{}),width:WA({},Rx.width,{}),text:WA({},Rx.text,{}),hovertext:WA({},Rx.hovertext,{}),marker:JJt(),hoverinfo:Ix.hoverinfo,hovertemplate:KJt(),selected:Rx.selected,unselected:Rx.unselected};function JJt(){var e=WA({},Rx.marker);return delete e.cornerradius,e}});var N$=ye((wbr,EJe)=>{"use strict";EJe.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}});var LJe=ye((Tbr,CJe)=>{"use strict";var kJe=Mr(),$Jt=p9().handleRThetaDefaults,QJt=FI(),e$t=B$();CJe.exports=function(t,r,n,i){function a(s,l){return kJe.coerce(t,r,e$t,s,l)}var o=$Jt(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("base"),a("offset"),a("width"),a("text"),a("hovertext"),a("hovertemplate"),QJt(t,r,a,n,i),kJe.coerceSelectionMarkerOpacity(r,a)}});var IJe=ye((Abr,PJe)=>{"use strict";var t$t=Mr(),r$t=N$();PJe.exports=function(e,t,r){var n={},i;function a(l,u){return t$t.coerce(e[i]||{},t[i],r$t,l,u)}for(var o=0;o{"use strict";var RJe=Dv().hasColorscale,DJe=zv(),i$t=Mr().isArrayOrTypedArray,n$t=c4(),a$t=Gb().setGroupPositions,o$t=F0(),s$t=ba().traceIs,l$t=Mr().extendFlat;function u$t(e,t){for(var r=e._fullLayout,n=t.subplot,i=r[n].radialaxis,a=r[n].angularaxis,o=i.makeCalcdata(t,"r"),s=a.makeCalcdata(t,"theta"),l=t._length,u=new Array(l),c=o,f=s,h=0;h{"use strict";var FJe=xa(),x9=uo(),ZA=Mr(),f$t=ao(),V$=a9();qJe.exports=function(t,r,n){var i=t._context.staticPlot,a=r.xaxis,o=r.yaxis,s=r.radialAxis,l=r.angularAxis,u=h$t(r),c=r.layers.frontplot.select("g.barlayer");ZA.makeTraceGroups(c,n,"trace bars").each(function(){var f=FJe.select(this),h=ZA.ensureSingle(f,"g","points"),d=h.selectAll("g.point").data(ZA.identity);d.enter().append("g").style("vector-effect",i?"none":"non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),d.exit().remove(),d.each(function(v){var x=FJe.select(this),b=v.rp0=s.c2p(v.s0),p=v.rp1=s.c2p(v.s1),E=v.thetag0=l.c2g(v.p0),k=v.thetag1=l.c2g(v.p1),A;if(!x9(b)||!x9(p)||!x9(E)||!x9(k)||b===p||E===k)A="M0,0Z";else{var L=s.c2g(v.s1),_=(E+k)/2;v.ct=[a.c2p(L*Math.cos(_)),o.c2p(L*Math.sin(_))],A=u(b,p,E,k)}ZA.ensureSingle(x,"path").attr("d",A)}),f$t.setClipUrl(f,r._hasClipOnAxisFalse?r.clipIds.forTraces:null,t)})};function h$t(e){var t=e.cxx,r=e.cyy;return e.vangles?function(n,i,a,o){var s,l;ZA.angleDelta(a,o)>0?(s=a,l=o):(s=o,l=a);var u=V$.findEnclosingVertexAngles(s,e.vangles)[0],c=V$.findEnclosingVertexAngles(l,e.vangles)[1],f=[u,(s+l)/2,c];return V$.pathPolygonAnnulus(n,i,s,l,f,t,r)}:function(n,i,a,o){return ZA.pathAnnulus(n,i,a,o,t,r)}}});var NJe=ye((Ebr,BJe)=>{"use strict";var d$t=Nc(),H$=Mr(),v$t=TT().getTraceColor,p$t=H$.fillText,g$t=m9().makeHoverPointText,m$t=a9().isPtInsidePolygon;BJe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s=o.radialAxis,l=o.angularAxis,u=o.vangles,c=u?m$t:H$.isPtInsideSector,f=t.maxHoverDistance,h=l._period||2*Math.PI,d=Math.abs(s.g2p(Math.sqrt(r*r+n*n))),v=Math.atan2(n,r);s.range[0]>s.range[1]&&(v+=Math.PI);var x=function(k){return c(d,v,[k.rp0,k.rp1],[k.thetag0,k.thetag1],u)?f+Math.min(1,Math.abs(k.thetag1-k.thetag0)/h)-1+(k.rp1-d)/(k.rp1-k.rp0)-1:1/0};if(d$t.getClosest(i,x,t),t.index!==!1){var b=t.index,p=i[b];t.x0=t.x1=p.ct[0],t.y0=t.y1=p.ct[1];var E=H$.extendFlat({},p,{r:p.s,theta:p.p});return p$t(p,a,t),g$t(E,a,o,t),t.hovertemplate=a.hovertemplate,t.color=v$t(a,p),t.xLabelVal=t.yLabelVal=void 0,p.s<0&&(t.idealAlign="left"),[t]}}});var VJe=ye((kbr,UJe)=>{"use strict";UJe.exports={moduleType:"trace",name:"barpolar",basePlotModule:h9(),categories:["polar","bar","showLegend"],attributes:B$(),layoutAttributes:N$(),supplyDefaults:LJe(),supplyLayoutDefaults:IJe(),calc:U$().calc,crossTraceCalc:U$().crossTraceCalc,plot:OJe(),colorbar:Kd(),formatLabels:g9(),style:N0().style,styleOnSelect:N0().styleOnSelect,hoverPoints:NJe(),selectPoints:AT(),meta:{}}});var GJe=ye((Cbr,HJe)=>{"use strict";HJe.exports=VJe()});var G$=ye((Lbr,jJe)=>{"use strict";jJe.exports={attr:"subplot",name:"smith",axisNames:["realaxis","imaginaryaxis"],axisName2dataArray:{imaginaryaxis:"imag",realaxis:"real"}}});var j$=ye((Pbr,YJe)=>{"use strict";var y$t=dh(),Mf=Cd(),_$t=Ju().attributes,Dx=Mr().extendFlat,WJe=Bu().overrideAll,ZJe=WJe({color:Mf.color,showline:Dx({},Mf.showline,{dflt:!0}),linecolor:Mf.linecolor,linewidth:Mf.linewidth,showgrid:Dx({},Mf.showgrid,{dflt:!0}),gridcolor:Mf.gridcolor,gridwidth:Mf.gridwidth,griddash:Mf.griddash},"plot","from-root"),XJe=WJe({ticklen:Mf.ticklen,tickwidth:Dx({},Mf.tickwidth,{dflt:2}),tickcolor:Mf.tickcolor,showticklabels:Mf.showticklabels,labelalias:Mf.labelalias,showtickprefix:Mf.showtickprefix,tickprefix:Mf.tickprefix,showticksuffix:Mf.showticksuffix,ticksuffix:Mf.ticksuffix,tickfont:Mf.tickfont,tickformat:Mf.tickformat,hoverformat:Mf.hoverformat,layer:Mf.layer},"plot","from-root"),x$t=Dx({visible:Dx({},Mf.visible,{dflt:!0}),tickvals:{dflt:[.2,.5,1,2,5],valType:"data_array",editType:"plot"},tickangle:Dx({},Mf.tickangle,{dflt:90}),ticks:{valType:"enumerated",values:["top","bottom",""],editType:"ticks"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},editType:"calc"},ZJe,XJe),b$t=Dx({visible:Dx({},Mf.visible,{dflt:!0}),tickvals:{valType:"data_array",editType:"plot"},ticks:Mf.ticks,editType:"calc"},ZJe,XJe);YJe.exports={domain:_$t({name:"smith",editType:"plot"}),bgcolor:{valType:"color",editType:"plot",dflt:y$t.background},realaxis:x$t,imaginaryaxis:b$t,editType:"calc"}});var $Je=ye((Ibr,JJe)=>{"use strict";var XA=Mr(),w$t=va(),T$t=Vs(),A$t=C_(),S$t=kd().getSubplotData,M$t=r_(),E$t=t_(),k$t=YM(),C$t=ym(),YA=j$(),W$=G$(),KJe=W$.axisNames,L$t=I$t(function(e){return XA.isTypedArray(e)&&(e=Array.from(e)),e.slice().reverse().map(function(t){return-t}).concat([0]).concat(e)},String);function P$t(e,t,r,n){var i=r("bgcolor");n.bgColor=w$t.combine(i,n.paper_bgcolor);var a=S$t(n.fullData,W$.name,n.id),o=n.layoutOut,s;function l(L,_){return r(s+"."+L,_)}for(var u=0;u{"use strict";var R$t=kd().getSubplotCalcData,D$t=Mr().counterRegex,z$t=D$(),e$e=G$(),t$e=e$e.attr,yw=e$e.name,QJe=D$t(yw),r$e={};r$e[t$e]={valType:"subplotid",dflt:yw,editType:"calc"};function F$t(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[yw],i=0;i{"use strict";var O$t=Wo().hovertemplateAttrs,B$t=Wo().texttemplateAttrs,b9=no().extendFlat,N$t=Eg(),d0=Uc(),U$t=vl(),KA=d0.line;a$e.exports={mode:d0.mode,real:{valType:"data_array",editType:"calc+clearAxisTypes"},imag:{valType:"data_array",editType:"calc+clearAxisTypes"},text:d0.text,texttemplate:B$t({editType:"plot"},{keys:["real","imag","text"]}),hovertext:d0.hovertext,line:{color:KA.color,width:KA.width,dash:KA.dash,backoff:KA.backoff,shape:b9({},KA.shape,{values:["linear","spline"]}),smoothing:KA.smoothing,editType:"calc"},connectgaps:d0.connectgaps,marker:d0.marker,cliponaxis:b9({},d0.cliponaxis,{dflt:!1}),textposition:d0.textposition,textfont:d0.textfont,fill:b9({},d0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:N$t(),hoverinfo:b9({},U$t.hoverinfo,{flags:["real","imag","text","name"]}),hoveron:d0.hoveron,hovertemplate:O$t(),selected:d0.selected,unselected:d0.unselected}});var l$e=ye((zbr,s$e)=>{"use strict";var w9=Mr(),JA=lu(),V$t=$p(),H$t=R0(),o$e=J3(),G$t=D0(),j$t=Ig(),W$t=Sm().PTS_LINESONLY,Z$t=Z$();s$e.exports=function(t,r,n,i){function a(l,u){return w9.coerce(t,r,Z$t,l,u)}var o=X$t(t,r,i,a);if(!o){r.visible=!1;return}a("mode",o{"use strict";var u$e=Qa();c$e.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.realLabel=u$e.tickText(a.radialAxis,t.real,!0).text,i.imagLabel=u$e.tickText(a.angularAxis,t.imag,!0).text,i}});var v$e=ye((qbr,d$e)=>{"use strict";var h$e=uo(),Y$t=es().BADNUM,K$t=z0(),J$t=km(),$$t=F0(),Q$t=q0().calcMarkerSize;d$e.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].realaxis,o=n[i].imaginaryaxis,s=a.makeCalcdata(r,"real"),l=o.makeCalcdata(r,"imag"),u=r._length,c=new Array(u),f=0;f{"use strict";var eQt=iT(),p$e=es().BADNUM,tQt=P$(),rQt=tQt.smith;g$e.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=0;l{"use strict";var iQt=sT();function nQt(e,t,r,n){var i=iQt(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,y$e(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function y$e(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="real",a._hovertitle="imag";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.realLabel=s.realLabel,n.imagLabel=s.imagLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["real","imag","text"]),f.indexOf("real")!==-1&&c(i,n.realLabel),f.indexOf("imag")!==-1&&c(a,n.imagLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}_$e.exports={hoverPoints:nQt,makeHoverPointText:y$e}});var w$e=ye((Nbr,b$e)=>{"use strict";b$e.exports={moduleType:"trace",name:"scattersmith",basePlotModule:n$e(),categories:["smith","symbols","showLegend","scatter-like"],attributes:Z$(),supplyDefaults:l$e(),colorbar:Kd(),formatLabels:f$e(),calc:v$e(),plot:m$e(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:x$e().hoverPoints,selectPoints:lT(),meta:{}}});var A$e=ye((Ubr,T$e)=>{"use strict";T$e.exports=w$e()});var Sv=ye((Vbr,M$e)=>{var A9=bh();function S$e(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}A9(S$e.prototype,{instance:function(e,t){e=(e||"gregorian").toLowerCase(),t=t||"";var r=this._localCals[e+"-"+t];if(!r&&this.calendars[e]&&(r=new this.calendars[e](t),this._localCals[e+"-"+t]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,e);return r},newDate:function(e,t,r,n,i){return n=(e!=null&&e.year?e.calendar():typeof n=="string"?this.instance(n,i):n)||this.instance(),n.newDate(e,t,r)},substituteDigits:function(e){return function(t){return(t+"").replace(/[0-9]/g,function(r){return e[r]})}},substituteChineseDigits:function(e,t){return function(r){for(var n="",i=0;r>0;){var a=r%10;n=(a===0?"":e[a]+t[i])+n,i++,r=Math.floor(r/10)}return n.indexOf(e[1]+t[1])===0&&(n=n.substr(1)),n||e[0]}}});function X$(e,t,r,n){if(this._calendar=e,this._year=t,this._month=r,this._day=n,this._calendar._validateLevel===0&&!this._calendar.isValid(this._year,this._month,this._day))throw(Es.local.invalidDate||Es.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function T9(e,t){return e=""+e,"000000".substring(0,t-e.length)+e}A9(X$.prototype,{newDate:function(e,t,r){return this._calendar.newDate(e==null?this:e,t,r)},year:function(e){return arguments.length===0?this._year:this.set(e,"y")},month:function(e){return arguments.length===0?this._month:this.set(e,"m")},day:function(e){return arguments.length===0?this._day:this.set(e,"d")},date:function(e,t,r){if(!this._calendar.isValid(e,t,r))throw(Es.local.invalidDate||Es.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=e,this._month=t,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(e,t){return this._calendar.add(this,e,t)},set:function(e,t){return this._calendar.set(this,e,t)},compareTo:function(e){if(this._calendar.name!==e._calendar.name)throw(Es.local.differentCalendars||Es.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,e._calendar.local.name);var t=this._year!==e._year?this._year-e._year:this._month!==e._month?this.monthOfYear()-e.monthOfYear():this._day-e._day;return t===0?0:t<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(e){return this._calendar.fromJD(e)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(e){return this._calendar.fromJSDate(e)},toString:function(){return(this.year()<0?"-":"")+T9(Math.abs(this.year()),4)+"-"+T9(this.month(),2)+"-"+T9(this.day(),2)}});function Y$(){this.shortYearCutoff="+10"}A9(Y$.prototype,{_validateLevel:0,newDate:function(e,t,r){return e==null?this.today():(e.year&&(this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),r=e.day(),t=e.month(),e=e.year()),new X$(this,e,t,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return t.year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return(t.year()<0?"-":"")+T9(Math.abs(t.year()),4)},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear),12},monthOfYear:function(e,t){var r=this._validate(e,t,this.minDay,Es.local.invalidMonth||Es.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(e,t){var r=(t+this.firstMonth-2*this.minMonth)%this.monthsInYear(e)+this.minMonth;return this._validate(e,r,this.minDay,Es.local.invalidMonth||Es.regionalOptions[""].invalidMonth),r},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return this.leapYear(t)?366:365},dayOfYear:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(e,t,r){return this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),{}},add:function(e,t,r){return this._validate(e,this.minMonth,this.minDay,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),this._correctAdd(e,this._add(e,t,r),t,r)},_add:function(e,t,r){if(this._validateLevel++,r==="d"||r==="w"){var n=e.toJD()+t*(r==="w"?this.daysInWeek():1),i=e.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=e.year()+(r==="y"?t:0),o=e.monthOfYear()+(r==="m"?t:0),i=e.day(),s=function(c){for(;of-1+c.minMonth;)a++,o-=f,f=c.monthsInYear(a)};r==="y"?(e.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,e.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):r==="m"&&(s(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var l=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,l}catch(u){throw this._validateLevel--,u}},_correctAdd:function(e,t,r,n){if(!this.hasYearZero&&(n==="y"||n==="m")&&(t[0]===0||e.year()>0!=t[0]>0)){var i={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;t=this._add(e,r*i[0]+a*i[1],i[2])}return e.date(t[0],t[1],t[2])},set:function(e,t,r){this._validate(e,this.minMonth,this.minDay,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);var n=r==="y"?t:e.year(),i=r==="m"?t:e.month(),a=r==="d"?t:e.day();return(r==="y"||r==="m")&&(a=Math.min(a,this.daysInMonth(n,i))),e.date(n,i,a)},isValid:function(e,t,r){this._validateLevel++;var n=this.hasYearZero||e!==0;if(n){var i=this.newDate(e,t,this.minDay);n=t>=this.minMonth&&t-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),u=i-(l>2.5?4716:4715);return u<=0&&u--,this.newDate(u,l,s)},toJSDate:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(e){return this.newDate(e.getFullYear(),e.getMonth()+1,e.getDate())}});var Es=M$e.exports=new S$e;Es.cdate=X$;Es.baseCalendar=Y$;Es.calendars.gregorian=K$});var E$e=ye(()=>{var J$=bh(),qd=Sv();J$(qd.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"});qd.local=qd.regionalOptions[""];J$(qd.cdate.prototype,{formatDate:function(e,t){return typeof e!="string"&&(t=e,e=""),this._calendar.formatDate(e||"",this,t)}});J$(qd.baseCalendar.prototype,{UNIX_EPOCH:qd.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:24*60*60,TICKS_EPOCH:qd.instance().jdEpoch,TICKS_PER_DAY:24*60*60*1e7,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(e,t,r){if(typeof e!="string"&&(r=t,t=e,e=""),!t)return"";if(t.calendar()!==this)throw qd.local.invalidFormat||qd.regionalOptions[""].invalidFormat;e=e||this.local.dateFormat,r=r||{};for(var n=r.dayNamesShort||this.local.dayNamesShort,i=r.dayNames||this.local.dayNames,a=r.monthNumbers||this.local.monthNumbers,o=r.monthNamesShort||this.local.monthNamesShort,s=r.monthNames||this.local.monthNames,l=r.calculateWeek||this.local.calculateWeek,u=function(A,L){for(var _=1;k+_1},c=function(A,L,_,C){var M=""+L;if(u(A,C))for(;M.length<_;)M="0"+M;return M},f=function(A,L,_,C){return u(A)?C[L]:_[L]},h=this,d=function(A){return typeof a=="function"?a.call(h,A,u("m")):b(c("m",A.month(),2))},v=function(A,L){return L?typeof s=="function"?s.call(h,A):s[A.month()-h.minMonth]:typeof o=="function"?o.call(h,A):o[A.month()-h.minMonth]},x=this.local.digits,b=function(A){return r.localNumbers&&x?x(A):A},p="",E=!1,k=0;k1},E=function(F,q){var V=p(F,q),H=[2,3,V?4:2,V?4:2,10,11,20]["oyYJ@!".indexOf(F)+1],X=new RegExp("^-?\\d{1,"+H+"}"),G=t.substring(M).match(X);if(!G)throw(qd.local.missingNumberAt||qd.regionalOptions[""].missingNumberAt).replace(/\{0\}/,M);return M+=G[0].length,parseInt(G[0],10)},k=this,A=function(){if(typeof s=="function"){p("m");var F=s.call(k,t.substring(M));return M+=F.length,F}return E("m")},L=function(F,q,V,H){for(var X=p(F,H)?V:q,G=0;G-1){h=1,d=v;for(var T=this.daysInMonth(f,h);d>T;T=this.daysInMonth(f,h))h++,d-=T}return c>-1?this.fromJD(c):this.newDate(f,h,d)},determineDate:function(e,t,r,n,i){r&&typeof r!="object"&&(i=n,n=r,r=null),typeof n!="string"&&(i=n,n="");var a=this,o=function(s){try{return a.parseDate(n,s,i)}catch(f){}s=s.toLowerCase();for(var l=(s.match(/^c/)&&r?r.newDate():null)||a.today(),u=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,c=u.exec(s);c;)l.add(parseInt(c[1],10),c[2]||"d"),c=u.exec(s);return l};return t=t?t.newDate():null,e=e==null?t:typeof e=="string"?o(e):typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?t:a.today().add(e,"d"):a.newDate(e),e}})});var k$e=ye(()=>{var zx=Sv(),aQt=bh(),$$=zx.instance();function S9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}S9.prototype=new zx.baseCalendar;aQt(S9.prototype,{name:"Chinese",jdEpoch:17214255e-1,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(e,t){if(typeof e=="string"){var r=e.match(sQt);return r?r[0]:""}var n=this._validateYear(e),i=e.month(),a=""+this.toChineseMonth(n,i);return t&&a.length<2&&(a="0"+a),this.isIntercalaryMonth(n,i)&&(a+="i"),a},monthNames:function(e){if(typeof e=="string"){var t=e.match(lQt);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},monthNamesShort:function(e){if(typeof e=="string"){var t=e.match(uQt);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},parseMonth:function(e,t){e=this._validateYear(e);var r=parseInt(t),n;if(isNaN(r))t[0]==="\u95F0"&&(n=!0,t=t.substring(1)),t[t.length-1]==="\u6708"&&(t=t.substring(0,t.length-1)),r=1+["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"].indexOf(t);else{var i=t[t.length-1];n=i==="i"||i==="I"}var a=this.toMonthIndex(e,r,n);return a},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(e,t){if(e.year&&(e=e.year()),typeof e!="number"||e<1888||e>2111)throw t.replace(/\{0\}/,this.local.name);return e},toMonthIndex:function(e,t,r){var n=this.intercalaryMonth(e),i=r&&t!==n;if(i||t<1||t>12)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a;return n?!r&&t<=n?a=t-1:a=t:a=t-1,a},toChineseMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e),n=r?12:11;if(t<0||t>n)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var i;return r?t>13;return r},isIntercalaryMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e);return!!r&&r===t},leapYear:function(e){return this.intercalaryMonth(e)!==0},weekOfYear:function(e,t,r){var n=this._validateYear(e,zx.local.invalidyear),i=qx[n-qx[0]],a=i>>9&4095,o=i>>5&15,s=i&31,l;l=$$.newDate(a,o,s),l.add(4-(l.dayOfWeek()||7),"d");var u=this.toJD(e,t,r)-l.toJD();return 1+Math.floor(u/7)},monthsInYear:function(e){return this.leapYear(e)?13:12},daysInMonth:function(e,t){e.year&&(t=e.month(),e=e.year()),e=this._validateYear(e);var r=Fx[e-Fx[0]],n=r>>13,i=n?12:11;if(t>i)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a=r&1<<12-t?30:29;return a},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,a,r,zx.local.invalidDate);e=this._validateYear(n.year()),t=n.month(),r=n.day();var i=this.isIntercalaryMonth(e,t),a=this.toChineseMonth(e,t),o=fQt(e,a,r,i);return $$.toJD(o.year,o.month,o.day)},fromJD:function(e){var t=$$.fromJD(e),r=cQt(t.year(),t.month(),t.day()),n=this.toMonthIndex(r.year,r.month,r.isIntercalary);return this.newDate(r.year,n,r.day)},fromString:function(e){var t=e.match(oQt),r=this._validateYear(+t[1]),n=+t[2],i=!!t[3],a=this.toMonthIndex(r,n,i),o=+t[4];return this.newDate(r,a,o)},add:function(e,t,r){var n=e.year(),i=e.month(),a=this.isIntercalaryMonth(n,i),o=this.toChineseMonth(n,i),s=Object.getPrototypeOf(S9.prototype).add.call(this,e,t,r);if(r==="y"){var l=s.year(),u=s.month(),c=this.isIntercalaryMonth(l,o),f=a&&c?this.toMonthIndex(l,o,!0):this.toMonthIndex(l,o,!1);f!==u&&s.month(f)}return s}});var oQt=/^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m,sQt=/^\d?\d[iI]?/m,lQt=/^ι—°?十?[δΈ€δΊŒδΈ‰ε››δΊ”ε…­δΈƒε…«δΉ]?月/m,uQt=/^ι—°?十?[δΈ€δΊŒδΈ‰ε››δΊ”ε…­δΈƒε…«δΉ]?/m;zx.calendars.chinese=S9;var Fx=[1887,5780,5802,19157,2742,50359,1198,2646,46378,7466,3412,30122,5482,67949,2396,5294,43597,6732,6954,36181,2772,4954,18781,2396,54427,5274,6730,47781,5800,6868,21210,4790,59703,2350,5270,46667,3402,3496,38325,1388,4782,18735,2350,52374,6804,7498,44457,2906,1388,29294,4700,63789,6442,6804,56138,5802,2772,38235,1210,4698,22827,5418,63125,3476,5802,43701,2484,5302,27223,2646,70954,7466,3412,54698,5482,2412,38062,5294,2636,32038,6954,60245,2772,4826,43357,2394,5274,39501,6730,72357,5800,5844,53978,4790,2358,38039,5270,87627,3402,3496,54708,5484,4782,43311,2350,3222,27978,7498,68965,2904,5484,45677,4700,6444,39573,6804,6986,19285,2772,62811,1210,4698,47403,5418,5780,38570,5546,76469,2420,5302,51799,2646,5414,36501,3412,5546,18869,2412,54446,5276,6732,48422,6822,2900,28010,4826,92509,2394,5274,55883,6730,6820,47956,5812,2778,18779,2358,62615,5270,5450,46757,3492,5556,27318,4718,67887,2350,3222,52554,7498,3428,38252,5468,4700,31022,6444,64149,6804,6986,43861,2772,5338,35421,2650,70955,5418,5780,54954,5546,2740,38074,5302,2646,29991,3366,61011,3412,5546,43445,2412,5294,35406,6732,72998,6820,6996,52586,2778,2396,38045,5274,6698,23333,6820,64338,5812,2746,43355,2358,5270,39499,5450,79525,3492,5548],qx=[1887,966732,967231,967733,968265,968766,969297,969798,970298,970829,971330,971830,972362,972863,973395,973896,974397,974928,975428,975929,976461,976962,977462,977994,978494,979026,979526,980026,980558,981059,981559,982091,982593,983124,983624,984124,984656,985157,985656,986189,986690,987191,987722,988222,988753,989254,989754,990286,990788,991288,991819,992319,992851,993352,993851,994383,994885,995385,995917,996418,996918,997450,997949,998481,998982,999483,1000014,1000515,1001016,1001548,1002047,1002578,1003080,1003580,1004111,1004613,1005113,1005645,1006146,1006645,1007177,1007678,1008209,1008710,1009211,1009743,1010243,1010743,1011275,1011775,1012306,1012807,1013308,1013840,1014341,1014841,1015373,1015874,1016404,1016905,1017405,1017937,1018438,1018939,1019471,1019972,1020471,1021002,1021503,1022035,1022535,1023036,1023568,1024069,1024568,1025100,1025601,1026102,1026633,1027133,1027666,1028167,1028666,1029198,1029699,1030199,1030730,1031231,1031763,1032264,1032764,1033296,1033797,1034297,1034828,1035329,1035830,1036362,1036861,1037393,1037894,1038394,1038925,1039427,1039927,1040459,1040959,1041491,1041992,1042492,1043023,1043524,1044024,1044556,1045057,1045558,1046090,1046590,1047121,1047622,1048122,1048654,1049154,1049655,1050187,1050689,1051219,1051720,1052220,1052751,1053252,1053752,1054284,1054786,1055285,1055817,1056317,1056849,1057349,1057850,1058382,1058883,1059383,1059915,1060415,1060947,1061447,1061947,1062479,1062981,1063480,1064012,1064514,1065014,1065545,1066045,1066577,1067078,1067578,1068110,1068611,1069112,1069642,1070142,1070674,1071175,1071675,1072207,1072709,1073209,1073740,1074241,1074741,1075273,1075773,1076305,1076807,1077308,1077839,1078340,1078840,1079372,1079871,1080403,1080904];function cQt(e,t,r,n){var i,a;if(typeof e=="object")i=e,a=t||{};else{var o=typeof e=="number"&&e>=1888&&e<=2111;if(!o)throw new Error("Solar year outside range 1888-2111");var s=typeof t=="number"&&t>=1&&t<=12;if(!s)throw new Error("Solar month outside range 1 - 12");var l=typeof r=="number"&&r>=1&&r<=31;if(!l)throw new Error("Solar day outside range 1 - 31");i={year:e,month:t,day:r},a=n||{}}var u=qx[i.year-qx[0]],c=i.year<<9|i.month<<5|i.day;a.year=c>=u?i.year:i.year-1,u=qx[a.year-qx[0]];var f=u>>9&4095,h=u>>5&15,d=u&31,v,x=new Date(f,h-1,d),b=new Date(i.year,i.month-1,i.day);v=Math.round((b-x)/(24*3600*1e3));var p=Fx[a.year-Fx[0]],E;for(E=0;E<13;E++){var k=p&1<<12-E?30:29;if(v>13;return!A||E=1888&&e<=2111;if(!s)throw new Error("Lunar year outside range 1888-2111");var l=typeof t=="number"&&t>=1&&t<=12;if(!l)throw new Error("Lunar month outside range 1 - 12");var u=typeof r=="number"&&r>=1&&r<=30;if(!u)throw new Error("Lunar day outside range 1 - 30");var c;typeof n=="object"?(c=!1,a=n):(c=!!n,a=i||{}),o={year:e,month:t,day:r,isIntercalary:c}}var f;f=o.day-1;var h=Fx[o.year-Fx[0]],d=h>>13,v;d&&(o.month>d||o.isIntercalary)?v=o.month:v=o.month-1;for(var x=0;x>9&4095,k=p>>5&15,A=p&31,L=new Date(E,k-1,A+f);return a.year=L.getFullYear(),a.month=1+L.getMonth(),a.day=L.getDate(),a}});var C$e=ye(()=>{var _w=Sv(),hQt=bh();function Q$(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}Q$.prototype=new _w.baseCalendar;hQt(Q$.prototype,{name:"Coptic",jdEpoch:18250295e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Coptic",epochs:["BAM","AM"],monthNames:["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],monthNamesShort:["Tho","Pao","Hath","Koi","Tob","Mesh","Pat","Pad","Pash","Pao","Epi","Meso","PiK"],dayNames:["Tkyriaka","Pesnau","Pshoment","Peftoou","Ptiou","Psoou","Psabbaton"],dayNamesShort:["Tky","Pes","Psh","Pef","Pti","Pso","Psa"],dayNamesMin:["Tk","Pes","Psh","Pef","Pt","Pso","Psa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,_w.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,_w.local.invalidYear||_w.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,_w.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,_w.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});_w.calendars.coptic=Q$});var L$e=ye(()=>{var b1=Sv(),dQt=bh();function eQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}eQ.prototype=new b1.baseCalendar;dQt(eQ.prototype,{name:"Discworld",jdEpoch:17214255e-1,daysPerMonth:[16,32,32,32,32,32,32,32,32,32,32,32,32],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Discworld",epochs:["BUC","UC"],monthNames:["Ick","Offle","February","March","April","May","June","Grune","August","Spune","Sektober","Ember","December"],monthNamesShort:["Ick","Off","Feb","Mar","Apr","May","Jun","Gru","Aug","Spu","Sek","Emb","Dec"],dayNames:["Sunday","Octeday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Oct","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Oc","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:2,isRTL:!1}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),!1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),13},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),400},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/8)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,b1.local.invalidMonth);return this.daysPerMonth[r.month()-1]},daysInWeek:function(){return 8},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return(n.day()+1)%8},weekDay:function(e,t,r){var n=this.dayOfWeek(e,t,r);return n>=2&&n<=6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return{century:vQt[Math.floor((n.year()-1)/100)+1]||""}},toJD:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return e=n.year()+(n.year()<0?1:0),t=n.month(),r=n.day(),r+(t>1?16:0)+(t>2?(t-2)*32:0)+(e-1)*400+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e+.5)-Math.floor(this.jdEpoch)-1;var t=Math.floor(e/400)+1;e-=(t-1)*400,e+=e>15?16:0;var r=Math.floor(e/32)+1,n=e-(r-1)*32+1;return this.newDate(t<=0?t-1:t,r,n)}});var vQt={20:"Fruitbat",21:"Anchovy"};b1.calendars.discworld=eQ});var P$e=ye(()=>{var xw=Sv(),pQt=bh();function tQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}tQ.prototype=new xw.baseCalendar;pQt(tQ.prototype,{name:"Ethiopian",jdEpoch:17242205e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,xw.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,xw.local.invalidYear||xw.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,xw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,xw.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});xw.calendars.ethiopian=tQ});var I$e=ye(()=>{var Ox=Sv(),gQt=bh();function rQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}rQ.prototype=new Ox.baseCalendar;gQt(rQ.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear);return this._leapYear(t.year())},_leapYear:function(e){return e=e<0?e+1:e,M9(e*7+1,19)<7},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear),this._leapYear(e.year?e.year():e)?13:12},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear);return e=t.year(),this.toJD(e===-1?1:e+1,7,1)-this.toJD(e,7,1)},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,Ox.local.invalidMonth),t===12&&this.leapYear(e)||t===8&&M9(this.daysInYear(e),10)===5?30:t===9&&M9(this.daysInYear(e),10)===3?29:this.daysPerMonth[t-1]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,Ox.local.invalidDate);return{yearType:(this.leapYear(n)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(n)%10-3]}},toJD:function(e,t,r){var n=this._validate(e,t,r,Ox.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e<=0?e+1:e,a=this.jdEpoch+this._delay1(i)+this._delay2(i)+r+1;if(t<7){for(var o=7;o<=this.monthsInYear(e);o++)a+=this.daysInMonth(e,o);for(var o=1;o=this.toJD(t===-1?1:t+1,7,1);)t++;for(var r=ethis.toJD(t,r,this.daysInMonth(t,r));)r++;var n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});function M9(e,t){return e-t*Math.floor(e/t)}Ox.calendars.hebrew=rQ});var R$e=ye(()=>{var oC=Sv(),mQt=bh();function iQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}iQ.prototype=new oC.baseCalendar;mQt(iQ.prototype,{name:"Islamic",jdEpoch:19484395e-1,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-kham\u012Bs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,oC.local.invalidYear);return(t.year()*11+14)%30<11},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){return this.leapYear(e)?355:354},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,oC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,oC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e=e<=0?e+1:e,r+Math.ceil(29.5*(t-1))+(e-1)*354+Math.floor((3+11*e)/30)+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=Math.floor((30*(e-this.jdEpoch)+10646)/10631);t=t<=0?t-1:t;var r=Math.min(12,Math.ceil((e-29-this.toJD(t,1,1))/29.5)+1),n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});oC.calendars.islamic=iQ});var D$e=ye(()=>{var sC=Sv(),yQt=bh();function nQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}nQ.prototype=new sC.baseCalendar;yQt(nQ.prototype,{name:"Julian",jdEpoch:17214235e-1,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,sC.local.invalidYear),r=t.year()<0?t.year()+1:t.year();return r%4===0},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(4-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,sC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,sC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e<0&&e++,t<=2&&(e--,t+=12),Math.floor(365.25*(e+4716))+Math.floor(30.6001*(t+1))+r-1524.5},fromJD:function(e){var t=Math.floor(e+.5),r=t+1524,n=Math.floor((r-122.1)/365.25),i=Math.floor(365.25*n),a=Math.floor((r-i)/30.6001),o=a-Math.floor(a<14?1:13),s=n-Math.floor(o>2?4716:4715),l=r-i-Math.floor(30.6001*a);return s<=0&&s--,this.newDate(s,o,l)}});sC.calendars.julian=nQ});var F$e=ye(()=>{var ug=Sv(),_Qt=bh();function oQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}oQ.prototype=new ug.baseCalendar;_Qt(oQ.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),!1},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear);e=t.year();var r=Math.floor(e/400);e=e%400,e+=e<0?400:0;var n=Math.floor(e/20);return r+"."+n+"."+e%20},forYear:function(e){if(e=e.split("."),e.length<3)throw"Invalid Mayan year";for(var t=0,r=0;r19||r>0&&n<0)throw"Invalid Mayan year";t=t*20+n}return t},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),18},weekOfYear:function(e,t,r){return this._validate(e,t,r,ug.local.invalidDate),0},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),360},daysInMonth:function(e,t){return this._validate(e,t,this.minDay,ug.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate);return n.day()},weekDay:function(e,t,r){return this._validate(e,t,r,ug.local.invalidDate),!0},extraInfo:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate),i=n.toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(e){e-=this.jdEpoch;var t=aQ(e+8+17*20,365);return[Math.floor(t/20)+1,aQ(t,20)]},_toTzolkin:function(e){return e-=this.jdEpoch,[z$e(e+20,20),z$e(e+4,13)]},toJD:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate);return n.day()+n.month()*20+n.year()*360+this.jdEpoch},fromJD:function(e){e=Math.floor(e)+.5-this.jdEpoch;var t=Math.floor(e/360);e=e%360,e+=e<0?360:0;var r=Math.floor(e/20),n=e%20;return this.newDate(t,r,n)}});function aQ(e,t){return e-t*Math.floor(e/t)}function z$e(e,t){return aQ(e-1,t)+1}ug.calendars.mayan=oQ});var O$e=ye(()=>{var bw=Sv(),xQt=bh();function sQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}sQ.prototype=new bw.baseCalendar;var q$e=bw.instance("gregorian");xQt(sQ.prototype,{name:"Nanakshahi",jdEpoch:22576735e-1,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,bw.local.invalidYear||bw.regionalOptions[""].invalidYear);return q$e.leapYear(t.year()+(t.year()<1?1:0)+1469)},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(1-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,bw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,bw.local.invalidMonth),i=n.year();i<0&&i++;for(var a=n.day(),o=1;o=this.toJD(t+1,1,1);)t++;for(var r=e-Math.floor(this.toJD(t,1,1)+.5)+1,n=1;r>this.daysInMonth(t,n);)r-=this.daysInMonth(t,n),n++;return this.newDate(t,n,r)}});bw.calendars.nanakshahi=sQ});var B$e=ye(()=>{var ww=Sv(),bQt=bh();function lQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}lQ.prototype=new ww.baseCalendar;bQt(lQ.prototype,{name:"Nepali",jdEpoch:17007095e-1,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(e){return this.daysInYear(e)!==this.daysPerYear},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,ww.local.invalidYear);if(e=t.year(),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined")return this.daysPerYear;for(var r=0,n=this.minMonth;n<=12;n++)r+=this.NEPALI_CALENDAR_DATA[e][n];return r},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,ww.local.invalidMonth),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined"?this.daysPerMonth[t-1]:this.NEPALI_CALENDAR_DATA[e][t]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},toJD:function(e,t,r){var n=this._validate(e,t,r,ww.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=ww.instance(),a=0,o=t,s=e;this._createMissingCalendarData(e);var l=e-(o>9||o===9&&r>=this.NEPALI_CALENDAR_DATA[s][0]?56:57);for(t!==9&&(a=r,o--);o!==9;)o<=0&&(o=12,s--),a+=this.NEPALI_CALENDAR_DATA[s][o],o--;return t===9?(a+=r-this.NEPALI_CALENDAR_DATA[s][0],a<0&&(a+=i.daysInYear(l))):a+=this.NEPALI_CALENDAR_DATA[s][9]-this.NEPALI_CALENDAR_DATA[s][0],i.newDate(l,1,1).add(a,"d").toJD()},fromJD:function(e){var t=ww.instance(),r=t.fromJD(e),n=r.year(),i=r.dayOfYear(),a=n+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)o++,o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var u=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,u)},_createMissingCalendarData:function(e){var t=this.daysPerMonth.slice(0);t.unshift(17);for(var r=e-1;r{var $A=Sv(),wQt=bh();function E9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}E9.prototype=new $A.baseCalendar;wQt(E9.prototype,{name:"Persian",jdEpoch:19483205e-1,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Persian",epochs:["BP","AP"],monthNames:["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Day","Bahman","Esfand"],monthNamesShort:["Far","Ord","Kho","Tir","Mor","Sha","Meh","Aba","Aza","Day","Bah","Esf"],dayNames:["Yekshambe","Doshambe","Seshambe","Ch\xE6harshambe","Panjshambe","Jom'e","Shambe"],dayNamesShort:["Yek","Do","Se","Ch\xE6","Panj","Jom","Sha"],dayNamesMin:["Ye","Do","Se","Ch","Pa","Jo","Sh"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,$A.local.invalidYear);return((t.year()-(t.year()>0?474:473))%2820+474+38)*682%2816<682},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-((n.dayOfWeek()+1)%7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,$A.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,$A.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e-(e>=0?474:473),a=474+uQ(i,2820);return r+(t<=7?(t-1)*31:(t-1)*30+6)+Math.floor((a*682-110)/2816)+(a-1)*365+Math.floor(i/2820)*1029983+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=e-this.toJD(475,1,1),r=Math.floor(t/1029983),n=uQ(t,1029983),i=2820;if(n!==1029982){var a=Math.floor(n/366),o=uQ(n,366);i=Math.floor((2134*a+2816*o+2815)/1028522)+a+1}var s=i+2820*r+474;s=s<=0?s-1:s;var l=e-this.toJD(s,1,1)+1,u=l<=186?Math.ceil(l/31):Math.ceil((l-6)/30),c=e-this.toJD(s,u,1)+1;return this.newDate(s,u,c)}});function uQ(e,t){return e-t*Math.floor(e/t)}$A.calendars.persian=E9;$A.calendars.jalali=E9});var U$e=ye(()=>{var Tw=Sv(),TQt=bh(),k9=Tw.instance();function cQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}cQ.prototype=new Tw.baseCalendar;TQt(cQ.prototype,{name:"Taiwan",jdEpoch:24194025e-1,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Tw.local.invalidYear),r=this._t2gYear(t.year());return k9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,Tw.local.invalidYear),i=this._t2gYear(n.year());return k9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Tw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Tw.local.invalidDate),i=this._t2gYear(n.year());return k9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=k9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)},_g2tYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)}});Tw.calendars.taiwan=cQ});var V$e=ye(()=>{var Aw=Sv(),AQt=bh(),C9=Aw.instance();function fQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}fQ.prototype=new Aw.baseCalendar;AQt(fQ.prototype,{name:"Thai",jdEpoch:15230985e-1,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Aw.local.invalidYear),r=this._t2gYear(t.year());return C9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,Aw.local.invalidYear),i=this._t2gYear(n.year());return C9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Aw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Aw.local.invalidDate),i=this._t2gYear(n.year());return C9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=C9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)},_g2tYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)}});Aw.calendars.thai=fQ});var H$e=ye(()=>{var Sw=Sv(),SQt=bh();function hQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}hQ.prototype=new Sw.baseCalendar;SQt(hQ.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thal\u0101th\u0101\u2019","Yawm al-Arba\u2018\u0101\u2019","Yawm al-Kham\u012Bs","Yawm al-Jum\u2018a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Sw.local.invalidYear);return this.daysInYear(t.year())===355},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){for(var t=0,r=1;r<=12;r++)t+=this.daysInMonth(e,r);return t},daysInMonth:function(e,t){for(var r=this._validate(e,t,this.minDay,Sw.local.invalidMonth),n=r.toJD()-24e5+.5,i=0,a=0;an)return Bx[i]-Bx[i-1];i++}return 30},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,Sw.local.invalidDate),i=12*(n.year()-1)+n.month()-15292,a=n.day()+Bx[i-1]-1;return a+24e5-.5},fromJD:function(e){for(var t=e-24e5+.5,r=0,n=0;nt);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),o=a+1,s=i-12*a,l=t-Bx[r-1]+1;return this.newDate(o,s,l)},isValid:function(e,t,r){var n=Sw.baseCalendar.prototype.isValid.apply(this,arguments);return n&&(e=e.year!=null?e.year:e,n=e>=1276&&e<=1500),n},_validate:function(e,t,r,n){var i=Sw.baseCalendar.prototype._validate.apply(this,arguments);if(i.year<1276||i.year>1500)throw n.replace(/\{0\}/,this.local.name);return i}});Sw.calendars.ummalqura=hQ;var Bx=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]});var j$e=ye((_2r,G$e)=>{"use strict";G$e.exports=Sv();E$e();k$e();C$e();L$e();P$e();I$e();R$e();D$e();F$e();O$e();B$e();N$e();U$e();V$e();H$e()});var $$e=ye((x2r,J$e)=>{"use strict";var Z$e=j$e(),lC=Mr(),X$e=es(),MQt=X$e.EPOCHJD,EQt=X$e.ONEDAY,pQ={valType:"enumerated",values:lC.sortObjectKeys(Z$e.calendars),editType:"calc",dflt:"gregorian"},Y$e=function(e,t,r,n){var i={};return i[r]=pQ,lC.coerce(e,t,i,r,n)},kQt=function(e,t,r,n){for(var i=0;i{"use strict";Q$e.exports=$$e()});var DQt=ye((w2r,rQe)=>{var tQe=Wme();tQe.register([Xye(),z1e(),Z_e(),dxe(),Mxe(),wbe(),zbe(),b2e(),K2e(),Pwe(),m3e(),j4e(),REe(),TCe(),c6e(),N6e(),uLe(),RPe(),$Pe(),gIe(),kIe(),VIe(),i8e(),_8e(),WRe(),hDe(),EOe(),EBe(),qNe(),lUe(),mVe(),IVe(),rHe(),dGe(),kGe(),$Ge(),oWe(),LWe(),fZe(),RXe(),rYe(),TYe(),YYe(),uKe(),sJe(),SJe(),GJe(),A$e(),eQe()]);rQe.exports=tQe});return DQt();})(); /*! * The buffer module from node.js, for the browser. * diff --git a/packages/python/plotly/plotly/package_data/templates/ggplot2.json b/plotly/package_data/templates/ggplot2.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/ggplot2.json rename to plotly/package_data/templates/ggplot2.json diff --git a/packages/python/plotly/plotly/package_data/templates/gridon.json b/plotly/package_data/templates/gridon.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/gridon.json rename to plotly/package_data/templates/gridon.json diff --git a/packages/python/plotly/plotly/package_data/templates/plotly.json b/plotly/package_data/templates/plotly.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/plotly.json rename to plotly/package_data/templates/plotly.json diff --git a/packages/python/plotly/plotly/package_data/templates/plotly_dark.json b/plotly/package_data/templates/plotly_dark.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/plotly_dark.json rename to plotly/package_data/templates/plotly_dark.json diff --git a/packages/python/plotly/plotly/package_data/templates/plotly_white.json b/plotly/package_data/templates/plotly_white.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/plotly_white.json rename to plotly/package_data/templates/plotly_white.json diff --git a/packages/python/plotly/plotly/package_data/templates/presentation.json b/plotly/package_data/templates/presentation.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/presentation.json rename to plotly/package_data/templates/presentation.json diff --git a/packages/python/plotly/plotly/package_data/templates/seaborn.json b/plotly/package_data/templates/seaborn.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/seaborn.json rename to plotly/package_data/templates/seaborn.json diff --git a/packages/python/plotly/plotly/package_data/templates/simple_white.json b/plotly/package_data/templates/simple_white.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/simple_white.json rename to plotly/package_data/templates/simple_white.json diff --git a/packages/python/plotly/plotly/package_data/templates/xgridoff.json b/plotly/package_data/templates/xgridoff.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/xgridoff.json rename to plotly/package_data/templates/xgridoff.json diff --git a/packages/python/plotly/plotly/package_data/templates/ygridoff.json b/plotly/package_data/templates/ygridoff.json similarity index 100% rename from packages/python/plotly/plotly/package_data/templates/ygridoff.json rename to plotly/package_data/templates/ygridoff.json diff --git a/packages/python/plotly/plotly/serializers.py b/plotly/serializers.py similarity index 100% rename from packages/python/plotly/plotly/serializers.py rename to plotly/serializers.py diff --git a/packages/python/plotly/plotly/shapeannotation.py b/plotly/shapeannotation.py similarity index 100% rename from packages/python/plotly/plotly/shapeannotation.py rename to plotly/shapeannotation.py diff --git a/packages/python/plotly/plotly/subplots.py b/plotly/subplots.py similarity index 100% rename from packages/python/plotly/plotly/subplots.py rename to plotly/subplots.py diff --git a/packages/python/plotly/plotly/tools.py b/plotly/tools.py similarity index 99% rename from packages/python/plotly/plotly/tools.py rename to plotly/tools.py index cbfff43b9e7..4a4a6e136d4 100644 --- a/packages/python/plotly/plotly/tools.py +++ b/plotly/tools.py @@ -61,9 +61,6 @@ def warning_on_one_line(message, category, filename, lineno, file=None, line=Non warnings.formatwarning = warning_on_one_line -ipython_core_display = optional_imports.get_module("IPython.core.display") -sage_salvus = optional_imports.get_module("sage_salvus") - ### mpl-related tools ### def mpl_to_plotly(fig, resize=False, strip_style=False, verbose=False): diff --git a/packages/python/plotly/plotly/utils.py b/plotly/utils.py similarity index 100% rename from packages/python/plotly/plotly/utils.py rename to plotly/utils.py diff --git a/packages/python/plotly/plotly/validator_cache.py b/plotly/validator_cache.py similarity index 100% rename from packages/python/plotly/plotly/validator_cache.py rename to plotly/validator_cache.py diff --git a/packages/python/plotly/plotly/validators/__init__.py b/plotly/validators/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/__init__.py rename to plotly/validators/__init__.py diff --git a/packages/python/plotly/plotly/validators/_bar.py b/plotly/validators/_bar.py similarity index 100% rename from packages/python/plotly/plotly/validators/_bar.py rename to plotly/validators/_bar.py diff --git a/packages/python/plotly/plotly/validators/_barpolar.py b/plotly/validators/_barpolar.py similarity index 100% rename from packages/python/plotly/plotly/validators/_barpolar.py rename to plotly/validators/_barpolar.py diff --git a/packages/python/plotly/plotly/validators/_box.py b/plotly/validators/_box.py similarity index 100% rename from packages/python/plotly/plotly/validators/_box.py rename to plotly/validators/_box.py diff --git a/packages/python/plotly/plotly/validators/_candlestick.py b/plotly/validators/_candlestick.py similarity index 100% rename from packages/python/plotly/plotly/validators/_candlestick.py rename to plotly/validators/_candlestick.py diff --git a/packages/python/plotly/plotly/validators/_carpet.py b/plotly/validators/_carpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/_carpet.py rename to plotly/validators/_carpet.py diff --git a/packages/python/plotly/plotly/validators/_choropleth.py b/plotly/validators/_choropleth.py similarity index 100% rename from packages/python/plotly/plotly/validators/_choropleth.py rename to plotly/validators/_choropleth.py diff --git a/packages/python/plotly/plotly/validators/_choroplethmap.py b/plotly/validators/_choroplethmap.py similarity index 100% rename from packages/python/plotly/plotly/validators/_choroplethmap.py rename to plotly/validators/_choroplethmap.py diff --git a/packages/python/plotly/plotly/validators/_choroplethmapbox.py b/plotly/validators/_choroplethmapbox.py similarity index 100% rename from packages/python/plotly/plotly/validators/_choroplethmapbox.py rename to plotly/validators/_choroplethmapbox.py diff --git a/packages/python/plotly/plotly/validators/_cone.py b/plotly/validators/_cone.py similarity index 100% rename from packages/python/plotly/plotly/validators/_cone.py rename to plotly/validators/_cone.py diff --git a/packages/python/plotly/plotly/validators/_contour.py b/plotly/validators/_contour.py similarity index 100% rename from packages/python/plotly/plotly/validators/_contour.py rename to plotly/validators/_contour.py diff --git a/packages/python/plotly/plotly/validators/_contourcarpet.py b/plotly/validators/_contourcarpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/_contourcarpet.py rename to plotly/validators/_contourcarpet.py diff --git a/packages/python/plotly/plotly/validators/_data.py b/plotly/validators/_data.py similarity index 100% rename from packages/python/plotly/plotly/validators/_data.py rename to plotly/validators/_data.py diff --git a/packages/python/plotly/plotly/validators/_densitymap.py b/plotly/validators/_densitymap.py similarity index 100% rename from packages/python/plotly/plotly/validators/_densitymap.py rename to plotly/validators/_densitymap.py diff --git a/packages/python/plotly/plotly/validators/_densitymapbox.py b/plotly/validators/_densitymapbox.py similarity index 100% rename from packages/python/plotly/plotly/validators/_densitymapbox.py rename to plotly/validators/_densitymapbox.py diff --git a/packages/python/plotly/plotly/validators/_frames.py b/plotly/validators/_frames.py similarity index 100% rename from packages/python/plotly/plotly/validators/_frames.py rename to plotly/validators/_frames.py diff --git a/packages/python/plotly/plotly/validators/_funnel.py b/plotly/validators/_funnel.py similarity index 100% rename from packages/python/plotly/plotly/validators/_funnel.py rename to plotly/validators/_funnel.py diff --git a/packages/python/plotly/plotly/validators/_funnelarea.py b/plotly/validators/_funnelarea.py similarity index 100% rename from packages/python/plotly/plotly/validators/_funnelarea.py rename to plotly/validators/_funnelarea.py diff --git a/packages/python/plotly/plotly/validators/_heatmap.py b/plotly/validators/_heatmap.py similarity index 100% rename from packages/python/plotly/plotly/validators/_heatmap.py rename to plotly/validators/_heatmap.py diff --git a/packages/python/plotly/plotly/validators/_histogram.py b/plotly/validators/_histogram.py similarity index 100% rename from packages/python/plotly/plotly/validators/_histogram.py rename to plotly/validators/_histogram.py diff --git a/packages/python/plotly/plotly/validators/_histogram2d.py b/plotly/validators/_histogram2d.py similarity index 100% rename from packages/python/plotly/plotly/validators/_histogram2d.py rename to plotly/validators/_histogram2d.py diff --git a/packages/python/plotly/plotly/validators/_histogram2dcontour.py b/plotly/validators/_histogram2dcontour.py similarity index 100% rename from packages/python/plotly/plotly/validators/_histogram2dcontour.py rename to plotly/validators/_histogram2dcontour.py diff --git a/packages/python/plotly/plotly/validators/_icicle.py b/plotly/validators/_icicle.py similarity index 100% rename from packages/python/plotly/plotly/validators/_icicle.py rename to plotly/validators/_icicle.py diff --git a/packages/python/plotly/plotly/validators/_image.py b/plotly/validators/_image.py similarity index 100% rename from packages/python/plotly/plotly/validators/_image.py rename to plotly/validators/_image.py diff --git a/packages/python/plotly/plotly/validators/_indicator.py b/plotly/validators/_indicator.py similarity index 100% rename from packages/python/plotly/plotly/validators/_indicator.py rename to plotly/validators/_indicator.py diff --git a/packages/python/plotly/plotly/validators/_isosurface.py b/plotly/validators/_isosurface.py similarity index 100% rename from packages/python/plotly/plotly/validators/_isosurface.py rename to plotly/validators/_isosurface.py diff --git a/packages/python/plotly/plotly/validators/_layout.py b/plotly/validators/_layout.py similarity index 100% rename from packages/python/plotly/plotly/validators/_layout.py rename to plotly/validators/_layout.py diff --git a/packages/python/plotly/plotly/validators/_mesh3d.py b/plotly/validators/_mesh3d.py similarity index 100% rename from packages/python/plotly/plotly/validators/_mesh3d.py rename to plotly/validators/_mesh3d.py diff --git a/packages/python/plotly/plotly/validators/_ohlc.py b/plotly/validators/_ohlc.py similarity index 100% rename from packages/python/plotly/plotly/validators/_ohlc.py rename to plotly/validators/_ohlc.py diff --git a/packages/python/plotly/plotly/validators/_parcats.py b/plotly/validators/_parcats.py similarity index 100% rename from packages/python/plotly/plotly/validators/_parcats.py rename to plotly/validators/_parcats.py diff --git a/packages/python/plotly/plotly/validators/_parcoords.py b/plotly/validators/_parcoords.py similarity index 100% rename from packages/python/plotly/plotly/validators/_parcoords.py rename to plotly/validators/_parcoords.py diff --git a/packages/python/plotly/plotly/validators/_pie.py b/plotly/validators/_pie.py similarity index 100% rename from packages/python/plotly/plotly/validators/_pie.py rename to plotly/validators/_pie.py diff --git a/packages/python/plotly/plotly/validators/_sankey.py b/plotly/validators/_sankey.py similarity index 100% rename from packages/python/plotly/plotly/validators/_sankey.py rename to plotly/validators/_sankey.py diff --git a/packages/python/plotly/plotly/validators/_scatter.py b/plotly/validators/_scatter.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scatter.py rename to plotly/validators/_scatter.py diff --git a/packages/python/plotly/plotly/validators/_scatter3d.py b/plotly/validators/_scatter3d.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scatter3d.py rename to plotly/validators/_scatter3d.py diff --git a/packages/python/plotly/plotly/validators/_scattercarpet.py b/plotly/validators/_scattercarpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scattercarpet.py rename to plotly/validators/_scattercarpet.py diff --git a/packages/python/plotly/plotly/validators/_scattergeo.py b/plotly/validators/_scattergeo.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scattergeo.py rename to plotly/validators/_scattergeo.py diff --git a/packages/python/plotly/plotly/validators/_scattergl.py b/plotly/validators/_scattergl.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scattergl.py rename to plotly/validators/_scattergl.py diff --git a/packages/python/plotly/plotly/validators/_scattermap.py b/plotly/validators/_scattermap.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scattermap.py rename to plotly/validators/_scattermap.py diff --git a/packages/python/plotly/plotly/validators/_scattermapbox.py b/plotly/validators/_scattermapbox.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scattermapbox.py rename to plotly/validators/_scattermapbox.py diff --git a/packages/python/plotly/plotly/validators/_scatterpolar.py b/plotly/validators/_scatterpolar.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scatterpolar.py rename to plotly/validators/_scatterpolar.py diff --git a/packages/python/plotly/plotly/validators/_scatterpolargl.py b/plotly/validators/_scatterpolargl.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scatterpolargl.py rename to plotly/validators/_scatterpolargl.py diff --git a/packages/python/plotly/plotly/validators/_scattersmith.py b/plotly/validators/_scattersmith.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scattersmith.py rename to plotly/validators/_scattersmith.py diff --git a/packages/python/plotly/plotly/validators/_scatterternary.py b/plotly/validators/_scatterternary.py similarity index 100% rename from packages/python/plotly/plotly/validators/_scatterternary.py rename to plotly/validators/_scatterternary.py diff --git a/packages/python/plotly/plotly/validators/_splom.py b/plotly/validators/_splom.py similarity index 100% rename from packages/python/plotly/plotly/validators/_splom.py rename to plotly/validators/_splom.py diff --git a/packages/python/plotly/plotly/validators/_streamtube.py b/plotly/validators/_streamtube.py similarity index 100% rename from packages/python/plotly/plotly/validators/_streamtube.py rename to plotly/validators/_streamtube.py diff --git a/packages/python/plotly/plotly/validators/_sunburst.py b/plotly/validators/_sunburst.py similarity index 100% rename from packages/python/plotly/plotly/validators/_sunburst.py rename to plotly/validators/_sunburst.py diff --git a/packages/python/plotly/plotly/validators/_surface.py b/plotly/validators/_surface.py similarity index 100% rename from packages/python/plotly/plotly/validators/_surface.py rename to plotly/validators/_surface.py diff --git a/packages/python/plotly/plotly/validators/_table.py b/plotly/validators/_table.py similarity index 100% rename from packages/python/plotly/plotly/validators/_table.py rename to plotly/validators/_table.py diff --git a/packages/python/plotly/plotly/validators/_treemap.py b/plotly/validators/_treemap.py similarity index 100% rename from packages/python/plotly/plotly/validators/_treemap.py rename to plotly/validators/_treemap.py diff --git a/packages/python/plotly/plotly/validators/_violin.py b/plotly/validators/_violin.py similarity index 100% rename from packages/python/plotly/plotly/validators/_violin.py rename to plotly/validators/_violin.py diff --git a/packages/python/plotly/plotly/validators/_volume.py b/plotly/validators/_volume.py similarity index 100% rename from packages/python/plotly/plotly/validators/_volume.py rename to plotly/validators/_volume.py diff --git a/packages/python/plotly/plotly/validators/_waterfall.py b/plotly/validators/_waterfall.py similarity index 100% rename from packages/python/plotly/plotly/validators/_waterfall.py rename to plotly/validators/_waterfall.py diff --git a/packages/python/plotly/plotly/validators/bar/__init__.py b/plotly/validators/bar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/__init__.py rename to plotly/validators/bar/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/_alignmentgroup.py b/plotly/validators/bar/_alignmentgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_alignmentgroup.py rename to plotly/validators/bar/_alignmentgroup.py diff --git a/packages/python/plotly/plotly/validators/bar/_base.py b/plotly/validators/bar/_base.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_base.py rename to plotly/validators/bar/_base.py diff --git a/packages/python/plotly/plotly/validators/bar/_basesrc.py b/plotly/validators/bar/_basesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_basesrc.py rename to plotly/validators/bar/_basesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_cliponaxis.py b/plotly/validators/bar/_cliponaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_cliponaxis.py rename to plotly/validators/bar/_cliponaxis.py diff --git a/packages/python/plotly/plotly/validators/bar/_constraintext.py b/plotly/validators/bar/_constraintext.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_constraintext.py rename to plotly/validators/bar/_constraintext.py diff --git a/packages/python/plotly/plotly/validators/bar/_customdata.py b/plotly/validators/bar/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_customdata.py rename to plotly/validators/bar/_customdata.py diff --git a/packages/python/plotly/plotly/validators/bar/_customdatasrc.py b/plotly/validators/bar/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_customdatasrc.py rename to plotly/validators/bar/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_dx.py b/plotly/validators/bar/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_dx.py rename to plotly/validators/bar/_dx.py diff --git a/packages/python/plotly/plotly/validators/bar/_dy.py b/plotly/validators/bar/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_dy.py rename to plotly/validators/bar/_dy.py diff --git a/packages/python/plotly/plotly/validators/bar/_error_x.py b/plotly/validators/bar/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_error_x.py rename to plotly/validators/bar/_error_x.py diff --git a/packages/python/plotly/plotly/validators/bar/_error_y.py b/plotly/validators/bar/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_error_y.py rename to plotly/validators/bar/_error_y.py diff --git a/packages/python/plotly/plotly/validators/bar/_hoverinfo.py b/plotly/validators/bar/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_hoverinfo.py rename to plotly/validators/bar/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/bar/_hoverinfosrc.py b/plotly/validators/bar/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_hoverinfosrc.py rename to plotly/validators/bar/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_hoverlabel.py b/plotly/validators/bar/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_hoverlabel.py rename to plotly/validators/bar/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/bar/_hovertemplate.py b/plotly/validators/bar/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_hovertemplate.py rename to plotly/validators/bar/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/bar/_hovertemplatesrc.py b/plotly/validators/bar/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_hovertemplatesrc.py rename to plotly/validators/bar/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_hovertext.py b/plotly/validators/bar/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_hovertext.py rename to plotly/validators/bar/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/bar/_hovertextsrc.py b/plotly/validators/bar/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_hovertextsrc.py rename to plotly/validators/bar/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_ids.py b/plotly/validators/bar/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_ids.py rename to plotly/validators/bar/_ids.py diff --git a/packages/python/plotly/plotly/validators/bar/_idssrc.py b/plotly/validators/bar/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_idssrc.py rename to plotly/validators/bar/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_insidetextanchor.py b/plotly/validators/bar/_insidetextanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_insidetextanchor.py rename to plotly/validators/bar/_insidetextanchor.py diff --git a/packages/python/plotly/plotly/validators/bar/_insidetextfont.py b/plotly/validators/bar/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_insidetextfont.py rename to plotly/validators/bar/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/bar/_legend.py b/plotly/validators/bar/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_legend.py rename to plotly/validators/bar/_legend.py diff --git a/packages/python/plotly/plotly/validators/bar/_legendgroup.py b/plotly/validators/bar/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_legendgroup.py rename to plotly/validators/bar/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/bar/_legendgrouptitle.py b/plotly/validators/bar/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_legendgrouptitle.py rename to plotly/validators/bar/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/bar/_legendrank.py b/plotly/validators/bar/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_legendrank.py rename to plotly/validators/bar/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/bar/_legendwidth.py b/plotly/validators/bar/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_legendwidth.py rename to plotly/validators/bar/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/bar/_marker.py b/plotly/validators/bar/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_marker.py rename to plotly/validators/bar/_marker.py diff --git a/packages/python/plotly/plotly/validators/bar/_meta.py b/plotly/validators/bar/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_meta.py rename to plotly/validators/bar/_meta.py diff --git a/packages/python/plotly/plotly/validators/bar/_metasrc.py b/plotly/validators/bar/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_metasrc.py rename to plotly/validators/bar/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_name.py b/plotly/validators/bar/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_name.py rename to plotly/validators/bar/_name.py diff --git a/packages/python/plotly/plotly/validators/bar/_offset.py b/plotly/validators/bar/_offset.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_offset.py rename to plotly/validators/bar/_offset.py diff --git a/packages/python/plotly/plotly/validators/bar/_offsetgroup.py b/plotly/validators/bar/_offsetgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_offsetgroup.py rename to plotly/validators/bar/_offsetgroup.py diff --git a/packages/python/plotly/plotly/validators/bar/_offsetsrc.py b/plotly/validators/bar/_offsetsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_offsetsrc.py rename to plotly/validators/bar/_offsetsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_opacity.py b/plotly/validators/bar/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_opacity.py rename to plotly/validators/bar/_opacity.py diff --git a/packages/python/plotly/plotly/validators/bar/_orientation.py b/plotly/validators/bar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_orientation.py rename to plotly/validators/bar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/bar/_outsidetextfont.py b/plotly/validators/bar/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_outsidetextfont.py rename to plotly/validators/bar/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/validators/bar/_selected.py b/plotly/validators/bar/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_selected.py rename to plotly/validators/bar/_selected.py diff --git a/packages/python/plotly/plotly/validators/bar/_selectedpoints.py b/plotly/validators/bar/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_selectedpoints.py rename to plotly/validators/bar/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/bar/_showlegend.py b/plotly/validators/bar/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_showlegend.py rename to plotly/validators/bar/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/bar/_stream.py b/plotly/validators/bar/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_stream.py rename to plotly/validators/bar/_stream.py diff --git a/packages/python/plotly/plotly/validators/bar/_text.py b/plotly/validators/bar/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_text.py rename to plotly/validators/bar/_text.py diff --git a/packages/python/plotly/plotly/validators/bar/_textangle.py b/plotly/validators/bar/_textangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_textangle.py rename to plotly/validators/bar/_textangle.py diff --git a/packages/python/plotly/plotly/validators/bar/_textfont.py b/plotly/validators/bar/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_textfont.py rename to plotly/validators/bar/_textfont.py diff --git a/packages/python/plotly/plotly/validators/bar/_textposition.py b/plotly/validators/bar/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_textposition.py rename to plotly/validators/bar/_textposition.py diff --git a/packages/python/plotly/plotly/validators/bar/_textpositionsrc.py b/plotly/validators/bar/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_textpositionsrc.py rename to plotly/validators/bar/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_textsrc.py b/plotly/validators/bar/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_textsrc.py rename to plotly/validators/bar/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_texttemplate.py b/plotly/validators/bar/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_texttemplate.py rename to plotly/validators/bar/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/bar/_texttemplatesrc.py b/plotly/validators/bar/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_texttemplatesrc.py rename to plotly/validators/bar/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_uid.py b/plotly/validators/bar/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_uid.py rename to plotly/validators/bar/_uid.py diff --git a/packages/python/plotly/plotly/validators/bar/_uirevision.py b/plotly/validators/bar/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_uirevision.py rename to plotly/validators/bar/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/bar/_unselected.py b/plotly/validators/bar/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_unselected.py rename to plotly/validators/bar/_unselected.py diff --git a/packages/python/plotly/plotly/validators/bar/_visible.py b/plotly/validators/bar/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_visible.py rename to plotly/validators/bar/_visible.py diff --git a/packages/python/plotly/plotly/validators/bar/_width.py b/plotly/validators/bar/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_width.py rename to plotly/validators/bar/_width.py diff --git a/packages/python/plotly/plotly/validators/bar/_widthsrc.py b/plotly/validators/bar/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_widthsrc.py rename to plotly/validators/bar/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_x.py b/plotly/validators/bar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_x.py rename to plotly/validators/bar/_x.py diff --git a/packages/python/plotly/plotly/validators/bar/_x0.py b/plotly/validators/bar/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_x0.py rename to plotly/validators/bar/_x0.py diff --git a/packages/python/plotly/plotly/validators/bar/_xaxis.py b/plotly/validators/bar/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_xaxis.py rename to plotly/validators/bar/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/bar/_xcalendar.py b/plotly/validators/bar/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_xcalendar.py rename to plotly/validators/bar/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/bar/_xhoverformat.py b/plotly/validators/bar/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_xhoverformat.py rename to plotly/validators/bar/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/bar/_xperiod.py b/plotly/validators/bar/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_xperiod.py rename to plotly/validators/bar/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/bar/_xperiod0.py b/plotly/validators/bar/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_xperiod0.py rename to plotly/validators/bar/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/bar/_xperiodalignment.py b/plotly/validators/bar/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_xperiodalignment.py rename to plotly/validators/bar/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/bar/_xsrc.py b/plotly/validators/bar/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_xsrc.py rename to plotly/validators/bar/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_y.py b/plotly/validators/bar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_y.py rename to plotly/validators/bar/_y.py diff --git a/packages/python/plotly/plotly/validators/bar/_y0.py b/plotly/validators/bar/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_y0.py rename to plotly/validators/bar/_y0.py diff --git a/packages/python/plotly/plotly/validators/bar/_yaxis.py b/plotly/validators/bar/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_yaxis.py rename to plotly/validators/bar/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/bar/_ycalendar.py b/plotly/validators/bar/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_ycalendar.py rename to plotly/validators/bar/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/bar/_yhoverformat.py b/plotly/validators/bar/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_yhoverformat.py rename to plotly/validators/bar/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/bar/_yperiod.py b/plotly/validators/bar/_yperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_yperiod.py rename to plotly/validators/bar/_yperiod.py diff --git a/packages/python/plotly/plotly/validators/bar/_yperiod0.py b/plotly/validators/bar/_yperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_yperiod0.py rename to plotly/validators/bar/_yperiod0.py diff --git a/packages/python/plotly/plotly/validators/bar/_yperiodalignment.py b/plotly/validators/bar/_yperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_yperiodalignment.py rename to plotly/validators/bar/_yperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/bar/_ysrc.py b/plotly/validators/bar/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_ysrc.py rename to plotly/validators/bar/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/_zorder.py b/plotly/validators/bar/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/_zorder.py rename to plotly/validators/bar/_zorder.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/__init__.py b/plotly/validators/bar/error_x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/__init__.py rename to plotly/validators/bar/error_x/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_array.py b/plotly/validators/bar/error_x/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_array.py rename to plotly/validators/bar/error_x/_array.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_arrayminus.py b/plotly/validators/bar/error_x/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_arrayminus.py rename to plotly/validators/bar/error_x/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_arrayminussrc.py b/plotly/validators/bar/error_x/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_arrayminussrc.py rename to plotly/validators/bar/error_x/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_arraysrc.py b/plotly/validators/bar/error_x/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_arraysrc.py rename to plotly/validators/bar/error_x/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_color.py b/plotly/validators/bar/error_x/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_color.py rename to plotly/validators/bar/error_x/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_copy_ystyle.py b/plotly/validators/bar/error_x/_copy_ystyle.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_copy_ystyle.py rename to plotly/validators/bar/error_x/_copy_ystyle.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_symmetric.py b/plotly/validators/bar/error_x/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_symmetric.py rename to plotly/validators/bar/error_x/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_thickness.py b/plotly/validators/bar/error_x/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_thickness.py rename to plotly/validators/bar/error_x/_thickness.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_traceref.py b/plotly/validators/bar/error_x/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_traceref.py rename to plotly/validators/bar/error_x/_traceref.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_tracerefminus.py b/plotly/validators/bar/error_x/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_tracerefminus.py rename to plotly/validators/bar/error_x/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_type.py b/plotly/validators/bar/error_x/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_type.py rename to plotly/validators/bar/error_x/_type.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_value.py b/plotly/validators/bar/error_x/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_value.py rename to plotly/validators/bar/error_x/_value.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_valueminus.py b/plotly/validators/bar/error_x/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_valueminus.py rename to plotly/validators/bar/error_x/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_visible.py b/plotly/validators/bar/error_x/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_visible.py rename to plotly/validators/bar/error_x/_visible.py diff --git a/packages/python/plotly/plotly/validators/bar/error_x/_width.py b/plotly/validators/bar/error_x/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_x/_width.py rename to plotly/validators/bar/error_x/_width.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/__init__.py b/plotly/validators/bar/error_y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/__init__.py rename to plotly/validators/bar/error_y/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_array.py b/plotly/validators/bar/error_y/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_array.py rename to plotly/validators/bar/error_y/_array.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_arrayminus.py b/plotly/validators/bar/error_y/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_arrayminus.py rename to plotly/validators/bar/error_y/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_arrayminussrc.py b/plotly/validators/bar/error_y/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_arrayminussrc.py rename to plotly/validators/bar/error_y/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_arraysrc.py b/plotly/validators/bar/error_y/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_arraysrc.py rename to plotly/validators/bar/error_y/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_color.py b/plotly/validators/bar/error_y/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_color.py rename to plotly/validators/bar/error_y/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_symmetric.py b/plotly/validators/bar/error_y/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_symmetric.py rename to plotly/validators/bar/error_y/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_thickness.py b/plotly/validators/bar/error_y/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_thickness.py rename to plotly/validators/bar/error_y/_thickness.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_traceref.py b/plotly/validators/bar/error_y/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_traceref.py rename to plotly/validators/bar/error_y/_traceref.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_tracerefminus.py b/plotly/validators/bar/error_y/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_tracerefminus.py rename to plotly/validators/bar/error_y/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_type.py b/plotly/validators/bar/error_y/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_type.py rename to plotly/validators/bar/error_y/_type.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_value.py b/plotly/validators/bar/error_y/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_value.py rename to plotly/validators/bar/error_y/_value.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_valueminus.py b/plotly/validators/bar/error_y/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_valueminus.py rename to plotly/validators/bar/error_y/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_visible.py b/plotly/validators/bar/error_y/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_visible.py rename to plotly/validators/bar/error_y/_visible.py diff --git a/packages/python/plotly/plotly/validators/bar/error_y/_width.py b/plotly/validators/bar/error_y/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/error_y/_width.py rename to plotly/validators/bar/error_y/_width.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/__init__.py b/plotly/validators/bar/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/__init__.py rename to plotly/validators/bar/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_align.py b/plotly/validators/bar/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_align.py rename to plotly/validators/bar/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_alignsrc.py b/plotly/validators/bar/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_alignsrc.py rename to plotly/validators/bar/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_bgcolor.py b/plotly/validators/bar/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_bgcolor.py rename to plotly/validators/bar/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_bgcolorsrc.py b/plotly/validators/bar/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_bgcolorsrc.py rename to plotly/validators/bar/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_bordercolor.py b/plotly/validators/bar/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_bordercolor.py rename to plotly/validators/bar/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_bordercolorsrc.py b/plotly/validators/bar/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_bordercolorsrc.py rename to plotly/validators/bar/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_font.py b/plotly/validators/bar/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_font.py rename to plotly/validators/bar/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_namelength.py b/plotly/validators/bar/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_namelength.py rename to plotly/validators/bar/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/_namelengthsrc.py b/plotly/validators/bar/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/_namelengthsrc.py rename to plotly/validators/bar/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/__init__.py b/plotly/validators/bar/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/__init__.py rename to plotly/validators/bar/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_color.py b/plotly/validators/bar/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_color.py rename to plotly/validators/bar/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_colorsrc.py b/plotly/validators/bar/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_colorsrc.py rename to plotly/validators/bar/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_family.py b/plotly/validators/bar/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_family.py rename to plotly/validators/bar/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_familysrc.py b/plotly/validators/bar/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_familysrc.py rename to plotly/validators/bar/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_lineposition.py b/plotly/validators/bar/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_lineposition.py rename to plotly/validators/bar/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_linepositionsrc.py b/plotly/validators/bar/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/bar/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_shadow.py b/plotly/validators/bar/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_shadow.py rename to plotly/validators/bar/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_shadowsrc.py b/plotly/validators/bar/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_shadowsrc.py rename to plotly/validators/bar/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_size.py b/plotly/validators/bar/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_size.py rename to plotly/validators/bar/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_sizesrc.py b/plotly/validators/bar/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_sizesrc.py rename to plotly/validators/bar/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_style.py b/plotly/validators/bar/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_style.py rename to plotly/validators/bar/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_stylesrc.py b/plotly/validators/bar/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_stylesrc.py rename to plotly/validators/bar/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_textcase.py b/plotly/validators/bar/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_textcase.py rename to plotly/validators/bar/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_textcasesrc.py b/plotly/validators/bar/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_textcasesrc.py rename to plotly/validators/bar/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_variant.py b/plotly/validators/bar/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_variant.py rename to plotly/validators/bar/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_variantsrc.py b/plotly/validators/bar/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_variantsrc.py rename to plotly/validators/bar/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_weight.py b/plotly/validators/bar/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_weight.py rename to plotly/validators/bar/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/bar/hoverlabel/font/_weightsrc.py b/plotly/validators/bar/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/hoverlabel/font/_weightsrc.py rename to plotly/validators/bar/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/__init__.py b/plotly/validators/bar/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/__init__.py rename to plotly/validators/bar/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_color.py b/plotly/validators/bar/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_color.py rename to plotly/validators/bar/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_colorsrc.py b/plotly/validators/bar/insidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_colorsrc.py rename to plotly/validators/bar/insidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_family.py b/plotly/validators/bar/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_family.py rename to plotly/validators/bar/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_familysrc.py b/plotly/validators/bar/insidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_familysrc.py rename to plotly/validators/bar/insidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_lineposition.py b/plotly/validators/bar/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_lineposition.py rename to plotly/validators/bar/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_linepositionsrc.py b/plotly/validators/bar/insidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_linepositionsrc.py rename to plotly/validators/bar/insidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_shadow.py b/plotly/validators/bar/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_shadow.py rename to plotly/validators/bar/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_shadowsrc.py b/plotly/validators/bar/insidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_shadowsrc.py rename to plotly/validators/bar/insidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_size.py b/plotly/validators/bar/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_size.py rename to plotly/validators/bar/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_sizesrc.py b/plotly/validators/bar/insidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_sizesrc.py rename to plotly/validators/bar/insidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_style.py b/plotly/validators/bar/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_style.py rename to plotly/validators/bar/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_stylesrc.py b/plotly/validators/bar/insidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_stylesrc.py rename to plotly/validators/bar/insidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_textcase.py b/plotly/validators/bar/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_textcase.py rename to plotly/validators/bar/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_textcasesrc.py b/plotly/validators/bar/insidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_textcasesrc.py rename to plotly/validators/bar/insidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_variant.py b/plotly/validators/bar/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_variant.py rename to plotly/validators/bar/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_variantsrc.py b/plotly/validators/bar/insidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_variantsrc.py rename to plotly/validators/bar/insidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_weight.py b/plotly/validators/bar/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_weight.py rename to plotly/validators/bar/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/bar/insidetextfont/_weightsrc.py b/plotly/validators/bar/insidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/insidetextfont/_weightsrc.py rename to plotly/validators/bar/insidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/__init__.py b/plotly/validators/bar/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/__init__.py rename to plotly/validators/bar/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/_font.py b/plotly/validators/bar/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/_font.py rename to plotly/validators/bar/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/_text.py b/plotly/validators/bar/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/_text.py rename to plotly/validators/bar/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/__init__.py b/plotly/validators/bar/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/__init__.py rename to plotly/validators/bar/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_color.py b/plotly/validators/bar/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_color.py rename to plotly/validators/bar/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_family.py b/plotly/validators/bar/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_family.py rename to plotly/validators/bar/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_lineposition.py b/plotly/validators/bar/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_lineposition.py rename to plotly/validators/bar/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_shadow.py b/plotly/validators/bar/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_shadow.py rename to plotly/validators/bar/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_size.py b/plotly/validators/bar/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_size.py rename to plotly/validators/bar/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_style.py b/plotly/validators/bar/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_style.py rename to plotly/validators/bar/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_textcase.py b/plotly/validators/bar/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_textcase.py rename to plotly/validators/bar/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_variant.py b/plotly/validators/bar/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_variant.py rename to plotly/validators/bar/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_weight.py b/plotly/validators/bar/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/legendgrouptitle/font/_weight.py rename to plotly/validators/bar/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/__init__.py b/plotly/validators/bar/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/__init__.py rename to plotly/validators/bar/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_autocolorscale.py b/plotly/validators/bar/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_autocolorscale.py rename to plotly/validators/bar/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_cauto.py b/plotly/validators/bar/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_cauto.py rename to plotly/validators/bar/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_cmax.py b/plotly/validators/bar/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_cmax.py rename to plotly/validators/bar/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_cmid.py b/plotly/validators/bar/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_cmid.py rename to plotly/validators/bar/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_cmin.py b/plotly/validators/bar/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_cmin.py rename to plotly/validators/bar/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_color.py b/plotly/validators/bar/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_color.py rename to plotly/validators/bar/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_coloraxis.py b/plotly/validators/bar/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_coloraxis.py rename to plotly/validators/bar/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_colorbar.py b/plotly/validators/bar/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_colorbar.py rename to plotly/validators/bar/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_colorscale.py b/plotly/validators/bar/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_colorscale.py rename to plotly/validators/bar/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_colorsrc.py b/plotly/validators/bar/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_colorsrc.py rename to plotly/validators/bar/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_cornerradius.py b/plotly/validators/bar/marker/_cornerradius.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_cornerradius.py rename to plotly/validators/bar/marker/_cornerradius.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_line.py b/plotly/validators/bar/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_line.py rename to plotly/validators/bar/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_opacity.py b/plotly/validators/bar/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_opacity.py rename to plotly/validators/bar/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_opacitysrc.py b/plotly/validators/bar/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_opacitysrc.py rename to plotly/validators/bar/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_pattern.py b/plotly/validators/bar/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_pattern.py rename to plotly/validators/bar/marker/_pattern.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_reversescale.py b/plotly/validators/bar/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_reversescale.py rename to plotly/validators/bar/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/_showscale.py b/plotly/validators/bar/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/_showscale.py rename to plotly/validators/bar/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/__init__.py b/plotly/validators/bar/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/__init__.py rename to plotly/validators/bar/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_bgcolor.py b/plotly/validators/bar/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_bgcolor.py rename to plotly/validators/bar/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_bordercolor.py b/plotly/validators/bar/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_bordercolor.py rename to plotly/validators/bar/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_borderwidth.py b/plotly/validators/bar/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_borderwidth.py rename to plotly/validators/bar/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_dtick.py b/plotly/validators/bar/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_dtick.py rename to plotly/validators/bar/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_exponentformat.py b/plotly/validators/bar/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_exponentformat.py rename to plotly/validators/bar/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_labelalias.py b/plotly/validators/bar/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_labelalias.py rename to plotly/validators/bar/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_len.py b/plotly/validators/bar/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_len.py rename to plotly/validators/bar/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_lenmode.py b/plotly/validators/bar/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_lenmode.py rename to plotly/validators/bar/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_minexponent.py b/plotly/validators/bar/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_minexponent.py rename to plotly/validators/bar/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_nticks.py b/plotly/validators/bar/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_nticks.py rename to plotly/validators/bar/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_orientation.py b/plotly/validators/bar/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_orientation.py rename to plotly/validators/bar/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_outlinecolor.py b/plotly/validators/bar/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_outlinecolor.py rename to plotly/validators/bar/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_outlinewidth.py b/plotly/validators/bar/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_outlinewidth.py rename to plotly/validators/bar/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_separatethousands.py b/plotly/validators/bar/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_separatethousands.py rename to plotly/validators/bar/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_showexponent.py b/plotly/validators/bar/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_showexponent.py rename to plotly/validators/bar/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_showticklabels.py b/plotly/validators/bar/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_showticklabels.py rename to plotly/validators/bar/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_showtickprefix.py b/plotly/validators/bar/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_showtickprefix.py rename to plotly/validators/bar/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_showticksuffix.py b/plotly/validators/bar/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_showticksuffix.py rename to plotly/validators/bar/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_thickness.py b/plotly/validators/bar/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_thickness.py rename to plotly/validators/bar/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_thicknessmode.py b/plotly/validators/bar/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_thicknessmode.py rename to plotly/validators/bar/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tick0.py b/plotly/validators/bar/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tick0.py rename to plotly/validators/bar/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickangle.py b/plotly/validators/bar/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickangle.py rename to plotly/validators/bar/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickcolor.py b/plotly/validators/bar/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickcolor.py rename to plotly/validators/bar/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickfont.py b/plotly/validators/bar/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickfont.py rename to plotly/validators/bar/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickformat.py b/plotly/validators/bar/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickformat.py rename to plotly/validators/bar/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/bar/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/bar/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickformatstops.py b/plotly/validators/bar/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickformatstops.py rename to plotly/validators/bar/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/bar/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/bar/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticklabelposition.py b/plotly/validators/bar/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticklabelposition.py rename to plotly/validators/bar/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticklabelstep.py b/plotly/validators/bar/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticklabelstep.py rename to plotly/validators/bar/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticklen.py b/plotly/validators/bar/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticklen.py rename to plotly/validators/bar/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickmode.py b/plotly/validators/bar/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickmode.py rename to plotly/validators/bar/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickprefix.py b/plotly/validators/bar/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickprefix.py rename to plotly/validators/bar/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticks.py b/plotly/validators/bar/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticks.py rename to plotly/validators/bar/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticksuffix.py b/plotly/validators/bar/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticksuffix.py rename to plotly/validators/bar/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticktext.py b/plotly/validators/bar/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticktext.py rename to plotly/validators/bar/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticktextsrc.py b/plotly/validators/bar/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ticktextsrc.py rename to plotly/validators/bar/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickvals.py b/plotly/validators/bar/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickvals.py rename to plotly/validators/bar/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickvalssrc.py b/plotly/validators/bar/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickvalssrc.py rename to plotly/validators/bar/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickwidth.py b/plotly/validators/bar/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_tickwidth.py rename to plotly/validators/bar/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_title.py b/plotly/validators/bar/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_title.py rename to plotly/validators/bar/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_x.py b/plotly/validators/bar/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_x.py rename to plotly/validators/bar/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_xanchor.py b/plotly/validators/bar/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_xanchor.py rename to plotly/validators/bar/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_xpad.py b/plotly/validators/bar/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_xpad.py rename to plotly/validators/bar/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_xref.py b/plotly/validators/bar/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_xref.py rename to plotly/validators/bar/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_y.py b/plotly/validators/bar/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_y.py rename to plotly/validators/bar/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_yanchor.py b/plotly/validators/bar/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_yanchor.py rename to plotly/validators/bar/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_ypad.py b/plotly/validators/bar/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_ypad.py rename to plotly/validators/bar/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/_yref.py b/plotly/validators/bar/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/_yref.py rename to plotly/validators/bar/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/__init__.py b/plotly/validators/bar/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/__init__.py rename to plotly/validators/bar/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_color.py b/plotly/validators/bar/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_color.py rename to plotly/validators/bar/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_family.py b/plotly/validators/bar/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_family.py rename to plotly/validators/bar/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/bar/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/bar/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_shadow.py b/plotly/validators/bar/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/bar/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_size.py b/plotly/validators/bar/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_size.py rename to plotly/validators/bar/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_style.py b/plotly/validators/bar/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_style.py rename to plotly/validators/bar/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_textcase.py b/plotly/validators/bar/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/bar/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_variant.py b/plotly/validators/bar/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_variant.py rename to plotly/validators/bar/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_weight.py b/plotly/validators/bar/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickfont/_weight.py rename to plotly/validators/bar/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/bar/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/bar/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/bar/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/bar/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/bar/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/bar/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_name.py b/plotly/validators/bar/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/bar/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/bar/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/bar/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_value.py b/plotly/validators/bar/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/bar/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/__init__.py b/plotly/validators/bar/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/__init__.py rename to plotly/validators/bar/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/_font.py b/plotly/validators/bar/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/_font.py rename to plotly/validators/bar/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/_side.py b/plotly/validators/bar/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/_side.py rename to plotly/validators/bar/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/_text.py b/plotly/validators/bar/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/_text.py rename to plotly/validators/bar/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/__init__.py b/plotly/validators/bar/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/__init__.py rename to plotly/validators/bar/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_color.py b/plotly/validators/bar/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_color.py rename to plotly/validators/bar/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_family.py b/plotly/validators/bar/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_family.py rename to plotly/validators/bar/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_lineposition.py b/plotly/validators/bar/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/bar/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_shadow.py b/plotly/validators/bar/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_shadow.py rename to plotly/validators/bar/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_size.py b/plotly/validators/bar/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_size.py rename to plotly/validators/bar/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_style.py b/plotly/validators/bar/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_style.py rename to plotly/validators/bar/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_textcase.py b/plotly/validators/bar/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_textcase.py rename to plotly/validators/bar/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_variant.py b/plotly/validators/bar/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_variant.py rename to plotly/validators/bar/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_weight.py b/plotly/validators/bar/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/colorbar/title/font/_weight.py rename to plotly/validators/bar/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/__init__.py b/plotly/validators/bar/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/__init__.py rename to plotly/validators/bar/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_autocolorscale.py b/plotly/validators/bar/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_autocolorscale.py rename to plotly/validators/bar/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_cauto.py b/plotly/validators/bar/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_cauto.py rename to plotly/validators/bar/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_cmax.py b/plotly/validators/bar/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_cmax.py rename to plotly/validators/bar/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_cmid.py b/plotly/validators/bar/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_cmid.py rename to plotly/validators/bar/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_cmin.py b/plotly/validators/bar/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_cmin.py rename to plotly/validators/bar/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_color.py b/plotly/validators/bar/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_color.py rename to plotly/validators/bar/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_coloraxis.py b/plotly/validators/bar/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_coloraxis.py rename to plotly/validators/bar/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_colorscale.py b/plotly/validators/bar/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_colorscale.py rename to plotly/validators/bar/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_colorsrc.py b/plotly/validators/bar/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_colorsrc.py rename to plotly/validators/bar/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_reversescale.py b/plotly/validators/bar/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_reversescale.py rename to plotly/validators/bar/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_width.py b/plotly/validators/bar/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_width.py rename to plotly/validators/bar/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/line/_widthsrc.py b/plotly/validators/bar/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/line/_widthsrc.py rename to plotly/validators/bar/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/__init__.py b/plotly/validators/bar/marker/pattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/__init__.py rename to plotly/validators/bar/marker/pattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_bgcolor.py b/plotly/validators/bar/marker/pattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_bgcolor.py rename to plotly/validators/bar/marker/pattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_bgcolorsrc.py b/plotly/validators/bar/marker/pattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_bgcolorsrc.py rename to plotly/validators/bar/marker/pattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_fgcolor.py b/plotly/validators/bar/marker/pattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_fgcolor.py rename to plotly/validators/bar/marker/pattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_fgcolorsrc.py b/plotly/validators/bar/marker/pattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_fgcolorsrc.py rename to plotly/validators/bar/marker/pattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_fgopacity.py b/plotly/validators/bar/marker/pattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_fgopacity.py rename to plotly/validators/bar/marker/pattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_fillmode.py b/plotly/validators/bar/marker/pattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_fillmode.py rename to plotly/validators/bar/marker/pattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_shape.py b/plotly/validators/bar/marker/pattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_shape.py rename to plotly/validators/bar/marker/pattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_shapesrc.py b/plotly/validators/bar/marker/pattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_shapesrc.py rename to plotly/validators/bar/marker/pattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_size.py b/plotly/validators/bar/marker/pattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_size.py rename to plotly/validators/bar/marker/pattern/_size.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_sizesrc.py b/plotly/validators/bar/marker/pattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_sizesrc.py rename to plotly/validators/bar/marker/pattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_solidity.py b/plotly/validators/bar/marker/pattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_solidity.py rename to plotly/validators/bar/marker/pattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/bar/marker/pattern/_soliditysrc.py b/plotly/validators/bar/marker/pattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/marker/pattern/_soliditysrc.py rename to plotly/validators/bar/marker/pattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/__init__.py b/plotly/validators/bar/outsidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/__init__.py rename to plotly/validators/bar/outsidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_color.py b/plotly/validators/bar/outsidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_color.py rename to plotly/validators/bar/outsidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_colorsrc.py b/plotly/validators/bar/outsidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_colorsrc.py rename to plotly/validators/bar/outsidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_family.py b/plotly/validators/bar/outsidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_family.py rename to plotly/validators/bar/outsidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_familysrc.py b/plotly/validators/bar/outsidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_familysrc.py rename to plotly/validators/bar/outsidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_lineposition.py b/plotly/validators/bar/outsidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_lineposition.py rename to plotly/validators/bar/outsidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_linepositionsrc.py b/plotly/validators/bar/outsidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_linepositionsrc.py rename to plotly/validators/bar/outsidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_shadow.py b/plotly/validators/bar/outsidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_shadow.py rename to plotly/validators/bar/outsidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_shadowsrc.py b/plotly/validators/bar/outsidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_shadowsrc.py rename to plotly/validators/bar/outsidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_size.py b/plotly/validators/bar/outsidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_size.py rename to plotly/validators/bar/outsidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_sizesrc.py b/plotly/validators/bar/outsidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_sizesrc.py rename to plotly/validators/bar/outsidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_style.py b/plotly/validators/bar/outsidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_style.py rename to plotly/validators/bar/outsidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_stylesrc.py b/plotly/validators/bar/outsidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_stylesrc.py rename to plotly/validators/bar/outsidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_textcase.py b/plotly/validators/bar/outsidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_textcase.py rename to plotly/validators/bar/outsidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_textcasesrc.py b/plotly/validators/bar/outsidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_textcasesrc.py rename to plotly/validators/bar/outsidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_variant.py b/plotly/validators/bar/outsidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_variant.py rename to plotly/validators/bar/outsidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_variantsrc.py b/plotly/validators/bar/outsidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_variantsrc.py rename to plotly/validators/bar/outsidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_weight.py b/plotly/validators/bar/outsidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_weight.py rename to plotly/validators/bar/outsidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/bar/outsidetextfont/_weightsrc.py b/plotly/validators/bar/outsidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/outsidetextfont/_weightsrc.py rename to plotly/validators/bar/outsidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/selected/__init__.py b/plotly/validators/bar/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/selected/__init__.py rename to plotly/validators/bar/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/selected/_marker.py b/plotly/validators/bar/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/selected/_marker.py rename to plotly/validators/bar/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/bar/selected/_textfont.py b/plotly/validators/bar/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/selected/_textfont.py rename to plotly/validators/bar/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/bar/selected/marker/__init__.py b/plotly/validators/bar/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/selected/marker/__init__.py rename to plotly/validators/bar/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/selected/marker/_color.py b/plotly/validators/bar/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/selected/marker/_color.py rename to plotly/validators/bar/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/selected/marker/_opacity.py b/plotly/validators/bar/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/selected/marker/_opacity.py rename to plotly/validators/bar/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/bar/selected/textfont/__init__.py b/plotly/validators/bar/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/selected/textfont/__init__.py rename to plotly/validators/bar/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/selected/textfont/_color.py b/plotly/validators/bar/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/selected/textfont/_color.py rename to plotly/validators/bar/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/stream/__init__.py b/plotly/validators/bar/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/stream/__init__.py rename to plotly/validators/bar/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/stream/_maxpoints.py b/plotly/validators/bar/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/stream/_maxpoints.py rename to plotly/validators/bar/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/bar/stream/_token.py b/plotly/validators/bar/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/stream/_token.py rename to plotly/validators/bar/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/__init__.py b/plotly/validators/bar/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/__init__.py rename to plotly/validators/bar/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_color.py b/plotly/validators/bar/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_color.py rename to plotly/validators/bar/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_colorsrc.py b/plotly/validators/bar/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_colorsrc.py rename to plotly/validators/bar/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_family.py b/plotly/validators/bar/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_family.py rename to plotly/validators/bar/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_familysrc.py b/plotly/validators/bar/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_familysrc.py rename to plotly/validators/bar/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_lineposition.py b/plotly/validators/bar/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_lineposition.py rename to plotly/validators/bar/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_linepositionsrc.py b/plotly/validators/bar/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_linepositionsrc.py rename to plotly/validators/bar/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_shadow.py b/plotly/validators/bar/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_shadow.py rename to plotly/validators/bar/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_shadowsrc.py b/plotly/validators/bar/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_shadowsrc.py rename to plotly/validators/bar/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_size.py b/plotly/validators/bar/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_size.py rename to plotly/validators/bar/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_sizesrc.py b/plotly/validators/bar/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_sizesrc.py rename to plotly/validators/bar/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_style.py b/plotly/validators/bar/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_style.py rename to plotly/validators/bar/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_stylesrc.py b/plotly/validators/bar/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_stylesrc.py rename to plotly/validators/bar/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_textcase.py b/plotly/validators/bar/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_textcase.py rename to plotly/validators/bar/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_textcasesrc.py b/plotly/validators/bar/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_textcasesrc.py rename to plotly/validators/bar/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_variant.py b/plotly/validators/bar/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_variant.py rename to plotly/validators/bar/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_variantsrc.py b/plotly/validators/bar/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_variantsrc.py rename to plotly/validators/bar/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_weight.py b/plotly/validators/bar/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_weight.py rename to plotly/validators/bar/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/bar/textfont/_weightsrc.py b/plotly/validators/bar/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/textfont/_weightsrc.py rename to plotly/validators/bar/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/bar/unselected/__init__.py b/plotly/validators/bar/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/unselected/__init__.py rename to plotly/validators/bar/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/unselected/_marker.py b/plotly/validators/bar/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/unselected/_marker.py rename to plotly/validators/bar/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/bar/unselected/_textfont.py b/plotly/validators/bar/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/unselected/_textfont.py rename to plotly/validators/bar/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/bar/unselected/marker/__init__.py b/plotly/validators/bar/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/unselected/marker/__init__.py rename to plotly/validators/bar/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/unselected/marker/_color.py b/plotly/validators/bar/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/unselected/marker/_color.py rename to plotly/validators/bar/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/bar/unselected/marker/_opacity.py b/plotly/validators/bar/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/unselected/marker/_opacity.py rename to plotly/validators/bar/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/bar/unselected/textfont/__init__.py b/plotly/validators/bar/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/unselected/textfont/__init__.py rename to plotly/validators/bar/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/bar/unselected/textfont/_color.py b/plotly/validators/bar/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/bar/unselected/textfont/_color.py rename to plotly/validators/bar/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/__init__.py b/plotly/validators/barpolar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/__init__.py rename to plotly/validators/barpolar/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_base.py b/plotly/validators/barpolar/_base.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_base.py rename to plotly/validators/barpolar/_base.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_basesrc.py b/plotly/validators/barpolar/_basesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_basesrc.py rename to plotly/validators/barpolar/_basesrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_customdata.py b/plotly/validators/barpolar/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_customdata.py rename to plotly/validators/barpolar/_customdata.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_customdatasrc.py b/plotly/validators/barpolar/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_customdatasrc.py rename to plotly/validators/barpolar/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_dr.py b/plotly/validators/barpolar/_dr.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_dr.py rename to plotly/validators/barpolar/_dr.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_dtheta.py b/plotly/validators/barpolar/_dtheta.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_dtheta.py rename to plotly/validators/barpolar/_dtheta.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_hoverinfo.py b/plotly/validators/barpolar/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_hoverinfo.py rename to plotly/validators/barpolar/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_hoverinfosrc.py b/plotly/validators/barpolar/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_hoverinfosrc.py rename to plotly/validators/barpolar/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_hoverlabel.py b/plotly/validators/barpolar/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_hoverlabel.py rename to plotly/validators/barpolar/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_hovertemplate.py b/plotly/validators/barpolar/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_hovertemplate.py rename to plotly/validators/barpolar/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_hovertemplatesrc.py b/plotly/validators/barpolar/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_hovertemplatesrc.py rename to plotly/validators/barpolar/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_hovertext.py b/plotly/validators/barpolar/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_hovertext.py rename to plotly/validators/barpolar/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_hovertextsrc.py b/plotly/validators/barpolar/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_hovertextsrc.py rename to plotly/validators/barpolar/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_ids.py b/plotly/validators/barpolar/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_ids.py rename to plotly/validators/barpolar/_ids.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_idssrc.py b/plotly/validators/barpolar/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_idssrc.py rename to plotly/validators/barpolar/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_legend.py b/plotly/validators/barpolar/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_legend.py rename to plotly/validators/barpolar/_legend.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_legendgroup.py b/plotly/validators/barpolar/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_legendgroup.py rename to plotly/validators/barpolar/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_legendgrouptitle.py b/plotly/validators/barpolar/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_legendgrouptitle.py rename to plotly/validators/barpolar/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_legendrank.py b/plotly/validators/barpolar/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_legendrank.py rename to plotly/validators/barpolar/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_legendwidth.py b/plotly/validators/barpolar/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_legendwidth.py rename to plotly/validators/barpolar/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_marker.py b/plotly/validators/barpolar/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_marker.py rename to plotly/validators/barpolar/_marker.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_meta.py b/plotly/validators/barpolar/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_meta.py rename to plotly/validators/barpolar/_meta.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_metasrc.py b/plotly/validators/barpolar/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_metasrc.py rename to plotly/validators/barpolar/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_name.py b/plotly/validators/barpolar/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_name.py rename to plotly/validators/barpolar/_name.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_offset.py b/plotly/validators/barpolar/_offset.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_offset.py rename to plotly/validators/barpolar/_offset.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_offsetsrc.py b/plotly/validators/barpolar/_offsetsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_offsetsrc.py rename to plotly/validators/barpolar/_offsetsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_opacity.py b/plotly/validators/barpolar/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_opacity.py rename to plotly/validators/barpolar/_opacity.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_r.py b/plotly/validators/barpolar/_r.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_r.py rename to plotly/validators/barpolar/_r.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_r0.py b/plotly/validators/barpolar/_r0.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_r0.py rename to plotly/validators/barpolar/_r0.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_rsrc.py b/plotly/validators/barpolar/_rsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_rsrc.py rename to plotly/validators/barpolar/_rsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_selected.py b/plotly/validators/barpolar/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_selected.py rename to plotly/validators/barpolar/_selected.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_selectedpoints.py b/plotly/validators/barpolar/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_selectedpoints.py rename to plotly/validators/barpolar/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_showlegend.py b/plotly/validators/barpolar/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_showlegend.py rename to plotly/validators/barpolar/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_stream.py b/plotly/validators/barpolar/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_stream.py rename to plotly/validators/barpolar/_stream.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_subplot.py b/plotly/validators/barpolar/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_subplot.py rename to plotly/validators/barpolar/_subplot.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_text.py b/plotly/validators/barpolar/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_text.py rename to plotly/validators/barpolar/_text.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_textsrc.py b/plotly/validators/barpolar/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_textsrc.py rename to plotly/validators/barpolar/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_theta.py b/plotly/validators/barpolar/_theta.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_theta.py rename to plotly/validators/barpolar/_theta.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_theta0.py b/plotly/validators/barpolar/_theta0.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_theta0.py rename to plotly/validators/barpolar/_theta0.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_thetasrc.py b/plotly/validators/barpolar/_thetasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_thetasrc.py rename to plotly/validators/barpolar/_thetasrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_thetaunit.py b/plotly/validators/barpolar/_thetaunit.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_thetaunit.py rename to plotly/validators/barpolar/_thetaunit.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_uid.py b/plotly/validators/barpolar/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_uid.py rename to plotly/validators/barpolar/_uid.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_uirevision.py b/plotly/validators/barpolar/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_uirevision.py rename to plotly/validators/barpolar/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_unselected.py b/plotly/validators/barpolar/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_unselected.py rename to plotly/validators/barpolar/_unselected.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_visible.py b/plotly/validators/barpolar/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_visible.py rename to plotly/validators/barpolar/_visible.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_width.py b/plotly/validators/barpolar/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_width.py rename to plotly/validators/barpolar/_width.py diff --git a/packages/python/plotly/plotly/validators/barpolar/_widthsrc.py b/plotly/validators/barpolar/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/_widthsrc.py rename to plotly/validators/barpolar/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/__init__.py b/plotly/validators/barpolar/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/__init__.py rename to plotly/validators/barpolar/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_align.py b/plotly/validators/barpolar/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_align.py rename to plotly/validators/barpolar/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_alignsrc.py b/plotly/validators/barpolar/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_alignsrc.py rename to plotly/validators/barpolar/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_bgcolor.py b/plotly/validators/barpolar/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_bgcolor.py rename to plotly/validators/barpolar/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_bgcolorsrc.py b/plotly/validators/barpolar/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_bgcolorsrc.py rename to plotly/validators/barpolar/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_bordercolor.py b/plotly/validators/barpolar/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_bordercolor.py rename to plotly/validators/barpolar/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_bordercolorsrc.py b/plotly/validators/barpolar/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_bordercolorsrc.py rename to plotly/validators/barpolar/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_font.py b/plotly/validators/barpolar/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_font.py rename to plotly/validators/barpolar/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_namelength.py b/plotly/validators/barpolar/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_namelength.py rename to plotly/validators/barpolar/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/_namelengthsrc.py b/plotly/validators/barpolar/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/_namelengthsrc.py rename to plotly/validators/barpolar/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/__init__.py b/plotly/validators/barpolar/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/__init__.py rename to plotly/validators/barpolar/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_color.py b/plotly/validators/barpolar/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_color.py rename to plotly/validators/barpolar/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_colorsrc.py b/plotly/validators/barpolar/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_colorsrc.py rename to plotly/validators/barpolar/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_family.py b/plotly/validators/barpolar/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_family.py rename to plotly/validators/barpolar/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_familysrc.py b/plotly/validators/barpolar/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_familysrc.py rename to plotly/validators/barpolar/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_lineposition.py b/plotly/validators/barpolar/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_lineposition.py rename to plotly/validators/barpolar/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_linepositionsrc.py b/plotly/validators/barpolar/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/barpolar/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_shadow.py b/plotly/validators/barpolar/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_shadow.py rename to plotly/validators/barpolar/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_shadowsrc.py b/plotly/validators/barpolar/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_shadowsrc.py rename to plotly/validators/barpolar/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_size.py b/plotly/validators/barpolar/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_size.py rename to plotly/validators/barpolar/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_sizesrc.py b/plotly/validators/barpolar/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_sizesrc.py rename to plotly/validators/barpolar/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_style.py b/plotly/validators/barpolar/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_style.py rename to plotly/validators/barpolar/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_stylesrc.py b/plotly/validators/barpolar/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_stylesrc.py rename to plotly/validators/barpolar/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_textcase.py b/plotly/validators/barpolar/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_textcase.py rename to plotly/validators/barpolar/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_textcasesrc.py b/plotly/validators/barpolar/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_textcasesrc.py rename to plotly/validators/barpolar/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_variant.py b/plotly/validators/barpolar/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_variant.py rename to plotly/validators/barpolar/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_variantsrc.py b/plotly/validators/barpolar/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_variantsrc.py rename to plotly/validators/barpolar/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_weight.py b/plotly/validators/barpolar/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_weight.py rename to plotly/validators/barpolar/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_weightsrc.py b/plotly/validators/barpolar/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/hoverlabel/font/_weightsrc.py rename to plotly/validators/barpolar/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/__init__.py b/plotly/validators/barpolar/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/__init__.py rename to plotly/validators/barpolar/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/_font.py b/plotly/validators/barpolar/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/_font.py rename to plotly/validators/barpolar/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/_text.py b/plotly/validators/barpolar/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/_text.py rename to plotly/validators/barpolar/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/__init__.py b/plotly/validators/barpolar/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/__init__.py rename to plotly/validators/barpolar/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_color.py b/plotly/validators/barpolar/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_color.py rename to plotly/validators/barpolar/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_family.py b/plotly/validators/barpolar/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_family.py rename to plotly/validators/barpolar/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_lineposition.py b/plotly/validators/barpolar/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_lineposition.py rename to plotly/validators/barpolar/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_shadow.py b/plotly/validators/barpolar/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_shadow.py rename to plotly/validators/barpolar/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_size.py b/plotly/validators/barpolar/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_size.py rename to plotly/validators/barpolar/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_style.py b/plotly/validators/barpolar/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_style.py rename to plotly/validators/barpolar/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_textcase.py b/plotly/validators/barpolar/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_textcase.py rename to plotly/validators/barpolar/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_variant.py b/plotly/validators/barpolar/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_variant.py rename to plotly/validators/barpolar/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_weight.py b/plotly/validators/barpolar/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/legendgrouptitle/font/_weight.py rename to plotly/validators/barpolar/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/__init__.py b/plotly/validators/barpolar/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/__init__.py rename to plotly/validators/barpolar/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_autocolorscale.py b/plotly/validators/barpolar/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_autocolorscale.py rename to plotly/validators/barpolar/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_cauto.py b/plotly/validators/barpolar/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_cauto.py rename to plotly/validators/barpolar/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_cmax.py b/plotly/validators/barpolar/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_cmax.py rename to plotly/validators/barpolar/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_cmid.py b/plotly/validators/barpolar/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_cmid.py rename to plotly/validators/barpolar/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_cmin.py b/plotly/validators/barpolar/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_cmin.py rename to plotly/validators/barpolar/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_color.py b/plotly/validators/barpolar/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_color.py rename to plotly/validators/barpolar/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_coloraxis.py b/plotly/validators/barpolar/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_coloraxis.py rename to plotly/validators/barpolar/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_colorbar.py b/plotly/validators/barpolar/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_colorbar.py rename to plotly/validators/barpolar/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_colorscale.py b/plotly/validators/barpolar/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_colorscale.py rename to plotly/validators/barpolar/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_colorsrc.py b/plotly/validators/barpolar/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_colorsrc.py rename to plotly/validators/barpolar/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_line.py b/plotly/validators/barpolar/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_line.py rename to plotly/validators/barpolar/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_opacity.py b/plotly/validators/barpolar/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_opacity.py rename to plotly/validators/barpolar/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_opacitysrc.py b/plotly/validators/barpolar/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_opacitysrc.py rename to plotly/validators/barpolar/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_pattern.py b/plotly/validators/barpolar/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_pattern.py rename to plotly/validators/barpolar/marker/_pattern.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_reversescale.py b/plotly/validators/barpolar/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_reversescale.py rename to plotly/validators/barpolar/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/_showscale.py b/plotly/validators/barpolar/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/_showscale.py rename to plotly/validators/barpolar/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/__init__.py b/plotly/validators/barpolar/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/__init__.py rename to plotly/validators/barpolar/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_bgcolor.py b/plotly/validators/barpolar/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_bgcolor.py rename to plotly/validators/barpolar/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_bordercolor.py b/plotly/validators/barpolar/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_bordercolor.py rename to plotly/validators/barpolar/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_borderwidth.py b/plotly/validators/barpolar/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_borderwidth.py rename to plotly/validators/barpolar/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_dtick.py b/plotly/validators/barpolar/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_dtick.py rename to plotly/validators/barpolar/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_exponentformat.py b/plotly/validators/barpolar/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_exponentformat.py rename to plotly/validators/barpolar/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_labelalias.py b/plotly/validators/barpolar/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_labelalias.py rename to plotly/validators/barpolar/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_len.py b/plotly/validators/barpolar/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_len.py rename to plotly/validators/barpolar/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_lenmode.py b/plotly/validators/barpolar/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_lenmode.py rename to plotly/validators/barpolar/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_minexponent.py b/plotly/validators/barpolar/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_minexponent.py rename to plotly/validators/barpolar/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_nticks.py b/plotly/validators/barpolar/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_nticks.py rename to plotly/validators/barpolar/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_orientation.py b/plotly/validators/barpolar/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_orientation.py rename to plotly/validators/barpolar/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_outlinecolor.py b/plotly/validators/barpolar/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_outlinecolor.py rename to plotly/validators/barpolar/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_outlinewidth.py b/plotly/validators/barpolar/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_outlinewidth.py rename to plotly/validators/barpolar/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_separatethousands.py b/plotly/validators/barpolar/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_separatethousands.py rename to plotly/validators/barpolar/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_showexponent.py b/plotly/validators/barpolar/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_showexponent.py rename to plotly/validators/barpolar/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_showticklabels.py b/plotly/validators/barpolar/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_showticklabels.py rename to plotly/validators/barpolar/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_showtickprefix.py b/plotly/validators/barpolar/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_showtickprefix.py rename to plotly/validators/barpolar/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_showticksuffix.py b/plotly/validators/barpolar/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_showticksuffix.py rename to plotly/validators/barpolar/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_thickness.py b/plotly/validators/barpolar/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_thickness.py rename to plotly/validators/barpolar/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_thicknessmode.py b/plotly/validators/barpolar/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_thicknessmode.py rename to plotly/validators/barpolar/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tick0.py b/plotly/validators/barpolar/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tick0.py rename to plotly/validators/barpolar/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickangle.py b/plotly/validators/barpolar/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickangle.py rename to plotly/validators/barpolar/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickcolor.py b/plotly/validators/barpolar/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickcolor.py rename to plotly/validators/barpolar/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickfont.py b/plotly/validators/barpolar/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickfont.py rename to plotly/validators/barpolar/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickformat.py b/plotly/validators/barpolar/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickformat.py rename to plotly/validators/barpolar/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/barpolar/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/barpolar/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickformatstops.py b/plotly/validators/barpolar/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickformatstops.py rename to plotly/validators/barpolar/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/barpolar/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/barpolar/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticklabelposition.py b/plotly/validators/barpolar/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticklabelposition.py rename to plotly/validators/barpolar/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticklabelstep.py b/plotly/validators/barpolar/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticklabelstep.py rename to plotly/validators/barpolar/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticklen.py b/plotly/validators/barpolar/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticklen.py rename to plotly/validators/barpolar/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickmode.py b/plotly/validators/barpolar/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickmode.py rename to plotly/validators/barpolar/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickprefix.py b/plotly/validators/barpolar/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickprefix.py rename to plotly/validators/barpolar/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticks.py b/plotly/validators/barpolar/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticks.py rename to plotly/validators/barpolar/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticksuffix.py b/plotly/validators/barpolar/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticksuffix.py rename to plotly/validators/barpolar/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticktext.py b/plotly/validators/barpolar/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticktext.py rename to plotly/validators/barpolar/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticktextsrc.py b/plotly/validators/barpolar/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ticktextsrc.py rename to plotly/validators/barpolar/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickvals.py b/plotly/validators/barpolar/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickvals.py rename to plotly/validators/barpolar/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickvalssrc.py b/plotly/validators/barpolar/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickvalssrc.py rename to plotly/validators/barpolar/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickwidth.py b/plotly/validators/barpolar/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_tickwidth.py rename to plotly/validators/barpolar/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_title.py b/plotly/validators/barpolar/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_title.py rename to plotly/validators/barpolar/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_x.py b/plotly/validators/barpolar/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_x.py rename to plotly/validators/barpolar/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_xanchor.py b/plotly/validators/barpolar/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_xanchor.py rename to plotly/validators/barpolar/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_xpad.py b/plotly/validators/barpolar/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_xpad.py rename to plotly/validators/barpolar/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_xref.py b/plotly/validators/barpolar/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_xref.py rename to plotly/validators/barpolar/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_y.py b/plotly/validators/barpolar/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_y.py rename to plotly/validators/barpolar/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_yanchor.py b/plotly/validators/barpolar/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_yanchor.py rename to plotly/validators/barpolar/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ypad.py b/plotly/validators/barpolar/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_ypad.py rename to plotly/validators/barpolar/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_yref.py b/plotly/validators/barpolar/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/_yref.py rename to plotly/validators/barpolar/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/__init__.py b/plotly/validators/barpolar/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/__init__.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_color.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_color.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_family.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_family.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_shadow.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_size.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_size.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_style.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_style.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_textcase.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_variant.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_variant.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_weight.py b/plotly/validators/barpolar/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickfont/_weight.py rename to plotly/validators/barpolar/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/barpolar/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/barpolar/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/barpolar/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/barpolar/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/barpolar/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/barpolar/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_name.py b/plotly/validators/barpolar/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/barpolar/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/barpolar/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/barpolar/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_value.py b/plotly/validators/barpolar/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/barpolar/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/__init__.py b/plotly/validators/barpolar/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/__init__.py rename to plotly/validators/barpolar/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/_font.py b/plotly/validators/barpolar/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/_font.py rename to plotly/validators/barpolar/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/_side.py b/plotly/validators/barpolar/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/_side.py rename to plotly/validators/barpolar/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/_text.py b/plotly/validators/barpolar/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/_text.py rename to plotly/validators/barpolar/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/__init__.py b/plotly/validators/barpolar/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/__init__.py rename to plotly/validators/barpolar/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_color.py b/plotly/validators/barpolar/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_color.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_family.py b/plotly/validators/barpolar/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_family.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_lineposition.py b/plotly/validators/barpolar/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_shadow.py b/plotly/validators/barpolar/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_shadow.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_size.py b/plotly/validators/barpolar/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_size.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_style.py b/plotly/validators/barpolar/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_style.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_textcase.py b/plotly/validators/barpolar/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_textcase.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_variant.py b/plotly/validators/barpolar/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_variant.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_weight.py b/plotly/validators/barpolar/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/colorbar/title/font/_weight.py rename to plotly/validators/barpolar/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/__init__.py b/plotly/validators/barpolar/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/__init__.py rename to plotly/validators/barpolar/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_autocolorscale.py b/plotly/validators/barpolar/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_autocolorscale.py rename to plotly/validators/barpolar/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_cauto.py b/plotly/validators/barpolar/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_cauto.py rename to plotly/validators/barpolar/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_cmax.py b/plotly/validators/barpolar/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_cmax.py rename to plotly/validators/barpolar/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_cmid.py b/plotly/validators/barpolar/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_cmid.py rename to plotly/validators/barpolar/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_cmin.py b/plotly/validators/barpolar/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_cmin.py rename to plotly/validators/barpolar/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_color.py b/plotly/validators/barpolar/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_color.py rename to plotly/validators/barpolar/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_coloraxis.py b/plotly/validators/barpolar/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_coloraxis.py rename to plotly/validators/barpolar/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_colorscale.py b/plotly/validators/barpolar/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_colorscale.py rename to plotly/validators/barpolar/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_colorsrc.py b/plotly/validators/barpolar/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_colorsrc.py rename to plotly/validators/barpolar/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_reversescale.py b/plotly/validators/barpolar/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_reversescale.py rename to plotly/validators/barpolar/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_width.py b/plotly/validators/barpolar/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_width.py rename to plotly/validators/barpolar/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/line/_widthsrc.py b/plotly/validators/barpolar/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/line/_widthsrc.py rename to plotly/validators/barpolar/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/__init__.py b/plotly/validators/barpolar/marker/pattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/__init__.py rename to plotly/validators/barpolar/marker/pattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_bgcolor.py b/plotly/validators/barpolar/marker/pattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_bgcolor.py rename to plotly/validators/barpolar/marker/pattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_bgcolorsrc.py b/plotly/validators/barpolar/marker/pattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_bgcolorsrc.py rename to plotly/validators/barpolar/marker/pattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_fgcolor.py b/plotly/validators/barpolar/marker/pattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_fgcolor.py rename to plotly/validators/barpolar/marker/pattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_fgcolorsrc.py b/plotly/validators/barpolar/marker/pattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_fgcolorsrc.py rename to plotly/validators/barpolar/marker/pattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_fgopacity.py b/plotly/validators/barpolar/marker/pattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_fgopacity.py rename to plotly/validators/barpolar/marker/pattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_fillmode.py b/plotly/validators/barpolar/marker/pattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_fillmode.py rename to plotly/validators/barpolar/marker/pattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_shape.py b/plotly/validators/barpolar/marker/pattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_shape.py rename to plotly/validators/barpolar/marker/pattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_shapesrc.py b/plotly/validators/barpolar/marker/pattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_shapesrc.py rename to plotly/validators/barpolar/marker/pattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_size.py b/plotly/validators/barpolar/marker/pattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_size.py rename to plotly/validators/barpolar/marker/pattern/_size.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_sizesrc.py b/plotly/validators/barpolar/marker/pattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_sizesrc.py rename to plotly/validators/barpolar/marker/pattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_solidity.py b/plotly/validators/barpolar/marker/pattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_solidity.py rename to plotly/validators/barpolar/marker/pattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/barpolar/marker/pattern/_soliditysrc.py b/plotly/validators/barpolar/marker/pattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/marker/pattern/_soliditysrc.py rename to plotly/validators/barpolar/marker/pattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/barpolar/selected/__init__.py b/plotly/validators/barpolar/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/selected/__init__.py rename to plotly/validators/barpolar/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/selected/_marker.py b/plotly/validators/barpolar/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/selected/_marker.py rename to plotly/validators/barpolar/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/barpolar/selected/_textfont.py b/plotly/validators/barpolar/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/selected/_textfont.py rename to plotly/validators/barpolar/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/barpolar/selected/marker/__init__.py b/plotly/validators/barpolar/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/selected/marker/__init__.py rename to plotly/validators/barpolar/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/selected/marker/_color.py b/plotly/validators/barpolar/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/selected/marker/_color.py rename to plotly/validators/barpolar/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/selected/marker/_opacity.py b/plotly/validators/barpolar/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/selected/marker/_opacity.py rename to plotly/validators/barpolar/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/barpolar/selected/textfont/__init__.py b/plotly/validators/barpolar/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/selected/textfont/__init__.py rename to plotly/validators/barpolar/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/selected/textfont/_color.py b/plotly/validators/barpolar/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/selected/textfont/_color.py rename to plotly/validators/barpolar/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/stream/__init__.py b/plotly/validators/barpolar/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/stream/__init__.py rename to plotly/validators/barpolar/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/stream/_maxpoints.py b/plotly/validators/barpolar/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/stream/_maxpoints.py rename to plotly/validators/barpolar/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/barpolar/stream/_token.py b/plotly/validators/barpolar/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/stream/_token.py rename to plotly/validators/barpolar/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/barpolar/unselected/__init__.py b/plotly/validators/barpolar/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/unselected/__init__.py rename to plotly/validators/barpolar/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/unselected/_marker.py b/plotly/validators/barpolar/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/unselected/_marker.py rename to plotly/validators/barpolar/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/barpolar/unselected/_textfont.py b/plotly/validators/barpolar/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/unselected/_textfont.py rename to plotly/validators/barpolar/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/barpolar/unselected/marker/__init__.py b/plotly/validators/barpolar/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/unselected/marker/__init__.py rename to plotly/validators/barpolar/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/unselected/marker/_color.py b/plotly/validators/barpolar/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/unselected/marker/_color.py rename to plotly/validators/barpolar/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/barpolar/unselected/marker/_opacity.py b/plotly/validators/barpolar/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/unselected/marker/_opacity.py rename to plotly/validators/barpolar/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/barpolar/unselected/textfont/__init__.py b/plotly/validators/barpolar/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/unselected/textfont/__init__.py rename to plotly/validators/barpolar/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/barpolar/unselected/textfont/_color.py b/plotly/validators/barpolar/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/barpolar/unselected/textfont/_color.py rename to plotly/validators/barpolar/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/box/__init__.py b/plotly/validators/box/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/__init__.py rename to plotly/validators/box/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/_alignmentgroup.py b/plotly/validators/box/_alignmentgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_alignmentgroup.py rename to plotly/validators/box/_alignmentgroup.py diff --git a/packages/python/plotly/plotly/validators/box/_boxmean.py b/plotly/validators/box/_boxmean.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_boxmean.py rename to plotly/validators/box/_boxmean.py diff --git a/packages/python/plotly/plotly/validators/box/_boxpoints.py b/plotly/validators/box/_boxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_boxpoints.py rename to plotly/validators/box/_boxpoints.py diff --git a/packages/python/plotly/plotly/validators/box/_customdata.py b/plotly/validators/box/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_customdata.py rename to plotly/validators/box/_customdata.py diff --git a/packages/python/plotly/plotly/validators/box/_customdatasrc.py b/plotly/validators/box/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_customdatasrc.py rename to plotly/validators/box/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/box/_dx.py b/plotly/validators/box/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_dx.py rename to plotly/validators/box/_dx.py diff --git a/packages/python/plotly/plotly/validators/box/_dy.py b/plotly/validators/box/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_dy.py rename to plotly/validators/box/_dy.py diff --git a/packages/python/plotly/plotly/validators/box/_fillcolor.py b/plotly/validators/box/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_fillcolor.py rename to plotly/validators/box/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/box/_hoverinfo.py b/plotly/validators/box/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_hoverinfo.py rename to plotly/validators/box/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/box/_hoverinfosrc.py b/plotly/validators/box/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_hoverinfosrc.py rename to plotly/validators/box/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/box/_hoverlabel.py b/plotly/validators/box/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_hoverlabel.py rename to plotly/validators/box/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/box/_hoveron.py b/plotly/validators/box/_hoveron.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_hoveron.py rename to plotly/validators/box/_hoveron.py diff --git a/packages/python/plotly/plotly/validators/box/_hovertemplate.py b/plotly/validators/box/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_hovertemplate.py rename to plotly/validators/box/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/box/_hovertemplatesrc.py b/plotly/validators/box/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_hovertemplatesrc.py rename to plotly/validators/box/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/box/_hovertext.py b/plotly/validators/box/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_hovertext.py rename to plotly/validators/box/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/box/_hovertextsrc.py b/plotly/validators/box/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_hovertextsrc.py rename to plotly/validators/box/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/box/_ids.py b/plotly/validators/box/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_ids.py rename to plotly/validators/box/_ids.py diff --git a/packages/python/plotly/plotly/validators/box/_idssrc.py b/plotly/validators/box/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_idssrc.py rename to plotly/validators/box/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/box/_jitter.py b/plotly/validators/box/_jitter.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_jitter.py rename to plotly/validators/box/_jitter.py diff --git a/packages/python/plotly/plotly/validators/box/_legend.py b/plotly/validators/box/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_legend.py rename to plotly/validators/box/_legend.py diff --git a/packages/python/plotly/plotly/validators/box/_legendgroup.py b/plotly/validators/box/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_legendgroup.py rename to plotly/validators/box/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/box/_legendgrouptitle.py b/plotly/validators/box/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_legendgrouptitle.py rename to plotly/validators/box/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/box/_legendrank.py b/plotly/validators/box/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_legendrank.py rename to plotly/validators/box/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/box/_legendwidth.py b/plotly/validators/box/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_legendwidth.py rename to plotly/validators/box/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/box/_line.py b/plotly/validators/box/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_line.py rename to plotly/validators/box/_line.py diff --git a/packages/python/plotly/plotly/validators/box/_lowerfence.py b/plotly/validators/box/_lowerfence.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_lowerfence.py rename to plotly/validators/box/_lowerfence.py diff --git a/packages/python/plotly/plotly/validators/box/_lowerfencesrc.py b/plotly/validators/box/_lowerfencesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_lowerfencesrc.py rename to plotly/validators/box/_lowerfencesrc.py diff --git a/packages/python/plotly/plotly/validators/box/_marker.py b/plotly/validators/box/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_marker.py rename to plotly/validators/box/_marker.py diff --git a/packages/python/plotly/plotly/validators/box/_mean.py b/plotly/validators/box/_mean.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_mean.py rename to plotly/validators/box/_mean.py diff --git a/packages/python/plotly/plotly/validators/box/_meansrc.py b/plotly/validators/box/_meansrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_meansrc.py rename to plotly/validators/box/_meansrc.py diff --git a/packages/python/plotly/plotly/validators/box/_median.py b/plotly/validators/box/_median.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_median.py rename to plotly/validators/box/_median.py diff --git a/packages/python/plotly/plotly/validators/box/_mediansrc.py b/plotly/validators/box/_mediansrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_mediansrc.py rename to plotly/validators/box/_mediansrc.py diff --git a/packages/python/plotly/plotly/validators/box/_meta.py b/plotly/validators/box/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_meta.py rename to plotly/validators/box/_meta.py diff --git a/packages/python/plotly/plotly/validators/box/_metasrc.py b/plotly/validators/box/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_metasrc.py rename to plotly/validators/box/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/box/_name.py b/plotly/validators/box/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_name.py rename to plotly/validators/box/_name.py diff --git a/packages/python/plotly/plotly/validators/box/_notched.py b/plotly/validators/box/_notched.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_notched.py rename to plotly/validators/box/_notched.py diff --git a/packages/python/plotly/plotly/validators/box/_notchspan.py b/plotly/validators/box/_notchspan.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_notchspan.py rename to plotly/validators/box/_notchspan.py diff --git a/packages/python/plotly/plotly/validators/box/_notchspansrc.py b/plotly/validators/box/_notchspansrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_notchspansrc.py rename to plotly/validators/box/_notchspansrc.py diff --git a/packages/python/plotly/plotly/validators/box/_notchwidth.py b/plotly/validators/box/_notchwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_notchwidth.py rename to plotly/validators/box/_notchwidth.py diff --git a/packages/python/plotly/plotly/validators/box/_offsetgroup.py b/plotly/validators/box/_offsetgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_offsetgroup.py rename to plotly/validators/box/_offsetgroup.py diff --git a/packages/python/plotly/plotly/validators/box/_opacity.py b/plotly/validators/box/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_opacity.py rename to plotly/validators/box/_opacity.py diff --git a/packages/python/plotly/plotly/validators/box/_orientation.py b/plotly/validators/box/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_orientation.py rename to plotly/validators/box/_orientation.py diff --git a/packages/python/plotly/plotly/validators/box/_pointpos.py b/plotly/validators/box/_pointpos.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_pointpos.py rename to plotly/validators/box/_pointpos.py diff --git a/packages/python/plotly/plotly/validators/box/_q1.py b/plotly/validators/box/_q1.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_q1.py rename to plotly/validators/box/_q1.py diff --git a/packages/python/plotly/plotly/validators/box/_q1src.py b/plotly/validators/box/_q1src.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_q1src.py rename to plotly/validators/box/_q1src.py diff --git a/packages/python/plotly/plotly/validators/box/_q3.py b/plotly/validators/box/_q3.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_q3.py rename to plotly/validators/box/_q3.py diff --git a/packages/python/plotly/plotly/validators/box/_q3src.py b/plotly/validators/box/_q3src.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_q3src.py rename to plotly/validators/box/_q3src.py diff --git a/packages/python/plotly/plotly/validators/box/_quartilemethod.py b/plotly/validators/box/_quartilemethod.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_quartilemethod.py rename to plotly/validators/box/_quartilemethod.py diff --git a/packages/python/plotly/plotly/validators/box/_sd.py b/plotly/validators/box/_sd.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_sd.py rename to plotly/validators/box/_sd.py diff --git a/packages/python/plotly/plotly/validators/box/_sdmultiple.py b/plotly/validators/box/_sdmultiple.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_sdmultiple.py rename to plotly/validators/box/_sdmultiple.py diff --git a/packages/python/plotly/plotly/validators/box/_sdsrc.py b/plotly/validators/box/_sdsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_sdsrc.py rename to plotly/validators/box/_sdsrc.py diff --git a/packages/python/plotly/plotly/validators/box/_selected.py b/plotly/validators/box/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_selected.py rename to plotly/validators/box/_selected.py diff --git a/packages/python/plotly/plotly/validators/box/_selectedpoints.py b/plotly/validators/box/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_selectedpoints.py rename to plotly/validators/box/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/box/_showlegend.py b/plotly/validators/box/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_showlegend.py rename to plotly/validators/box/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/box/_showwhiskers.py b/plotly/validators/box/_showwhiskers.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_showwhiskers.py rename to plotly/validators/box/_showwhiskers.py diff --git a/packages/python/plotly/plotly/validators/box/_sizemode.py b/plotly/validators/box/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_sizemode.py rename to plotly/validators/box/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/box/_stream.py b/plotly/validators/box/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_stream.py rename to plotly/validators/box/_stream.py diff --git a/packages/python/plotly/plotly/validators/box/_text.py b/plotly/validators/box/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_text.py rename to plotly/validators/box/_text.py diff --git a/packages/python/plotly/plotly/validators/box/_textsrc.py b/plotly/validators/box/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_textsrc.py rename to plotly/validators/box/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/box/_uid.py b/plotly/validators/box/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_uid.py rename to plotly/validators/box/_uid.py diff --git a/packages/python/plotly/plotly/validators/box/_uirevision.py b/plotly/validators/box/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_uirevision.py rename to plotly/validators/box/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/box/_unselected.py b/plotly/validators/box/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_unselected.py rename to plotly/validators/box/_unselected.py diff --git a/packages/python/plotly/plotly/validators/box/_upperfence.py b/plotly/validators/box/_upperfence.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_upperfence.py rename to plotly/validators/box/_upperfence.py diff --git a/packages/python/plotly/plotly/validators/box/_upperfencesrc.py b/plotly/validators/box/_upperfencesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_upperfencesrc.py rename to plotly/validators/box/_upperfencesrc.py diff --git a/packages/python/plotly/plotly/validators/box/_visible.py b/plotly/validators/box/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_visible.py rename to plotly/validators/box/_visible.py diff --git a/packages/python/plotly/plotly/validators/box/_whiskerwidth.py b/plotly/validators/box/_whiskerwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_whiskerwidth.py rename to plotly/validators/box/_whiskerwidth.py diff --git a/packages/python/plotly/plotly/validators/box/_width.py b/plotly/validators/box/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_width.py rename to plotly/validators/box/_width.py diff --git a/packages/python/plotly/plotly/validators/box/_x.py b/plotly/validators/box/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_x.py rename to plotly/validators/box/_x.py diff --git a/packages/python/plotly/plotly/validators/box/_x0.py b/plotly/validators/box/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_x0.py rename to plotly/validators/box/_x0.py diff --git a/packages/python/plotly/plotly/validators/box/_xaxis.py b/plotly/validators/box/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_xaxis.py rename to plotly/validators/box/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/box/_xcalendar.py b/plotly/validators/box/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_xcalendar.py rename to plotly/validators/box/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/box/_xhoverformat.py b/plotly/validators/box/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_xhoverformat.py rename to plotly/validators/box/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/box/_xperiod.py b/plotly/validators/box/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_xperiod.py rename to plotly/validators/box/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/box/_xperiod0.py b/plotly/validators/box/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_xperiod0.py rename to plotly/validators/box/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/box/_xperiodalignment.py b/plotly/validators/box/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_xperiodalignment.py rename to plotly/validators/box/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/box/_xsrc.py b/plotly/validators/box/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_xsrc.py rename to plotly/validators/box/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/box/_y.py b/plotly/validators/box/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_y.py rename to plotly/validators/box/_y.py diff --git a/packages/python/plotly/plotly/validators/box/_y0.py b/plotly/validators/box/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_y0.py rename to plotly/validators/box/_y0.py diff --git a/packages/python/plotly/plotly/validators/box/_yaxis.py b/plotly/validators/box/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_yaxis.py rename to plotly/validators/box/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/box/_ycalendar.py b/plotly/validators/box/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_ycalendar.py rename to plotly/validators/box/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/box/_yhoverformat.py b/plotly/validators/box/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_yhoverformat.py rename to plotly/validators/box/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/box/_yperiod.py b/plotly/validators/box/_yperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_yperiod.py rename to plotly/validators/box/_yperiod.py diff --git a/packages/python/plotly/plotly/validators/box/_yperiod0.py b/plotly/validators/box/_yperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_yperiod0.py rename to plotly/validators/box/_yperiod0.py diff --git a/packages/python/plotly/plotly/validators/box/_yperiodalignment.py b/plotly/validators/box/_yperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_yperiodalignment.py rename to plotly/validators/box/_yperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/box/_ysrc.py b/plotly/validators/box/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_ysrc.py rename to plotly/validators/box/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/box/_zorder.py b/plotly/validators/box/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/_zorder.py rename to plotly/validators/box/_zorder.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/__init__.py b/plotly/validators/box/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/__init__.py rename to plotly/validators/box/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_align.py b/plotly/validators/box/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_align.py rename to plotly/validators/box/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_alignsrc.py b/plotly/validators/box/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_alignsrc.py rename to plotly/validators/box/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_bgcolor.py b/plotly/validators/box/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_bgcolor.py rename to plotly/validators/box/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_bgcolorsrc.py b/plotly/validators/box/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_bgcolorsrc.py rename to plotly/validators/box/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_bordercolor.py b/plotly/validators/box/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_bordercolor.py rename to plotly/validators/box/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_bordercolorsrc.py b/plotly/validators/box/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_bordercolorsrc.py rename to plotly/validators/box/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_font.py b/plotly/validators/box/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_font.py rename to plotly/validators/box/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_namelength.py b/plotly/validators/box/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_namelength.py rename to plotly/validators/box/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/_namelengthsrc.py b/plotly/validators/box/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/_namelengthsrc.py rename to plotly/validators/box/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/__init__.py b/plotly/validators/box/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/__init__.py rename to plotly/validators/box/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_color.py b/plotly/validators/box/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_color.py rename to plotly/validators/box/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_colorsrc.py b/plotly/validators/box/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_colorsrc.py rename to plotly/validators/box/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_family.py b/plotly/validators/box/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_family.py rename to plotly/validators/box/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_familysrc.py b/plotly/validators/box/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_familysrc.py rename to plotly/validators/box/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_lineposition.py b/plotly/validators/box/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_lineposition.py rename to plotly/validators/box/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_linepositionsrc.py b/plotly/validators/box/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/box/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_shadow.py b/plotly/validators/box/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_shadow.py rename to plotly/validators/box/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_shadowsrc.py b/plotly/validators/box/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_shadowsrc.py rename to plotly/validators/box/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_size.py b/plotly/validators/box/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_size.py rename to plotly/validators/box/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_sizesrc.py b/plotly/validators/box/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_sizesrc.py rename to plotly/validators/box/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_style.py b/plotly/validators/box/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_style.py rename to plotly/validators/box/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_stylesrc.py b/plotly/validators/box/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_stylesrc.py rename to plotly/validators/box/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_textcase.py b/plotly/validators/box/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_textcase.py rename to plotly/validators/box/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_textcasesrc.py b/plotly/validators/box/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_textcasesrc.py rename to plotly/validators/box/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_variant.py b/plotly/validators/box/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_variant.py rename to plotly/validators/box/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_variantsrc.py b/plotly/validators/box/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_variantsrc.py rename to plotly/validators/box/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_weight.py b/plotly/validators/box/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_weight.py rename to plotly/validators/box/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/box/hoverlabel/font/_weightsrc.py b/plotly/validators/box/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/hoverlabel/font/_weightsrc.py rename to plotly/validators/box/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/__init__.py b/plotly/validators/box/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/__init__.py rename to plotly/validators/box/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/_font.py b/plotly/validators/box/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/_font.py rename to plotly/validators/box/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/_text.py b/plotly/validators/box/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/_text.py rename to plotly/validators/box/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/__init__.py b/plotly/validators/box/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/__init__.py rename to plotly/validators/box/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_color.py b/plotly/validators/box/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_color.py rename to plotly/validators/box/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_family.py b/plotly/validators/box/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_family.py rename to plotly/validators/box/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_lineposition.py b/plotly/validators/box/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_lineposition.py rename to plotly/validators/box/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_shadow.py b/plotly/validators/box/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_shadow.py rename to plotly/validators/box/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_size.py b/plotly/validators/box/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_size.py rename to plotly/validators/box/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_style.py b/plotly/validators/box/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_style.py rename to plotly/validators/box/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_textcase.py b/plotly/validators/box/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_textcase.py rename to plotly/validators/box/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_variant.py b/plotly/validators/box/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_variant.py rename to plotly/validators/box/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_weight.py b/plotly/validators/box/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/legendgrouptitle/font/_weight.py rename to plotly/validators/box/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/box/line/__init__.py b/plotly/validators/box/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/line/__init__.py rename to plotly/validators/box/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/line/_color.py b/plotly/validators/box/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/line/_color.py rename to plotly/validators/box/line/_color.py diff --git a/packages/python/plotly/plotly/validators/box/line/_width.py b/plotly/validators/box/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/line/_width.py rename to plotly/validators/box/line/_width.py diff --git a/packages/python/plotly/plotly/validators/box/marker/__init__.py b/plotly/validators/box/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/__init__.py rename to plotly/validators/box/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/marker/_angle.py b/plotly/validators/box/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/_angle.py rename to plotly/validators/box/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/box/marker/_color.py b/plotly/validators/box/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/_color.py rename to plotly/validators/box/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/box/marker/_line.py b/plotly/validators/box/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/_line.py rename to plotly/validators/box/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/box/marker/_opacity.py b/plotly/validators/box/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/_opacity.py rename to plotly/validators/box/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/box/marker/_outliercolor.py b/plotly/validators/box/marker/_outliercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/_outliercolor.py rename to plotly/validators/box/marker/_outliercolor.py diff --git a/packages/python/plotly/plotly/validators/box/marker/_size.py b/plotly/validators/box/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/_size.py rename to plotly/validators/box/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/box/marker/_symbol.py b/plotly/validators/box/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/_symbol.py rename to plotly/validators/box/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/box/marker/line/__init__.py b/plotly/validators/box/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/line/__init__.py rename to plotly/validators/box/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/marker/line/_color.py b/plotly/validators/box/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/line/_color.py rename to plotly/validators/box/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/box/marker/line/_outliercolor.py b/plotly/validators/box/marker/line/_outliercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/line/_outliercolor.py rename to plotly/validators/box/marker/line/_outliercolor.py diff --git a/packages/python/plotly/plotly/validators/box/marker/line/_outlierwidth.py b/plotly/validators/box/marker/line/_outlierwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/line/_outlierwidth.py rename to plotly/validators/box/marker/line/_outlierwidth.py diff --git a/packages/python/plotly/plotly/validators/box/marker/line/_width.py b/plotly/validators/box/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/marker/line/_width.py rename to plotly/validators/box/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/box/selected/__init__.py b/plotly/validators/box/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/selected/__init__.py rename to plotly/validators/box/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/selected/_marker.py b/plotly/validators/box/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/selected/_marker.py rename to plotly/validators/box/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/box/selected/marker/__init__.py b/plotly/validators/box/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/selected/marker/__init__.py rename to plotly/validators/box/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/selected/marker/_color.py b/plotly/validators/box/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/selected/marker/_color.py rename to plotly/validators/box/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/box/selected/marker/_opacity.py b/plotly/validators/box/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/selected/marker/_opacity.py rename to plotly/validators/box/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/box/selected/marker/_size.py b/plotly/validators/box/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/selected/marker/_size.py rename to plotly/validators/box/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/box/stream/__init__.py b/plotly/validators/box/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/stream/__init__.py rename to plotly/validators/box/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/stream/_maxpoints.py b/plotly/validators/box/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/stream/_maxpoints.py rename to plotly/validators/box/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/box/stream/_token.py b/plotly/validators/box/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/stream/_token.py rename to plotly/validators/box/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/box/unselected/__init__.py b/plotly/validators/box/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/unselected/__init__.py rename to plotly/validators/box/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/unselected/_marker.py b/plotly/validators/box/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/unselected/_marker.py rename to plotly/validators/box/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/box/unselected/marker/__init__.py b/plotly/validators/box/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/unselected/marker/__init__.py rename to plotly/validators/box/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/box/unselected/marker/_color.py b/plotly/validators/box/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/unselected/marker/_color.py rename to plotly/validators/box/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/box/unselected/marker/_opacity.py b/plotly/validators/box/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/unselected/marker/_opacity.py rename to plotly/validators/box/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/box/unselected/marker/_size.py b/plotly/validators/box/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/box/unselected/marker/_size.py rename to plotly/validators/box/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/candlestick/__init__.py b/plotly/validators/candlestick/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/__init__.py rename to plotly/validators/candlestick/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_close.py b/plotly/validators/candlestick/_close.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_close.py rename to plotly/validators/candlestick/_close.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_closesrc.py b/plotly/validators/candlestick/_closesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_closesrc.py rename to plotly/validators/candlestick/_closesrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_customdata.py b/plotly/validators/candlestick/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_customdata.py rename to plotly/validators/candlestick/_customdata.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_customdatasrc.py b/plotly/validators/candlestick/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_customdatasrc.py rename to plotly/validators/candlestick/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_decreasing.py b/plotly/validators/candlestick/_decreasing.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_decreasing.py rename to plotly/validators/candlestick/_decreasing.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_high.py b/plotly/validators/candlestick/_high.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_high.py rename to plotly/validators/candlestick/_high.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_highsrc.py b/plotly/validators/candlestick/_highsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_highsrc.py rename to plotly/validators/candlestick/_highsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_hoverinfo.py b/plotly/validators/candlestick/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_hoverinfo.py rename to plotly/validators/candlestick/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_hoverinfosrc.py b/plotly/validators/candlestick/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_hoverinfosrc.py rename to plotly/validators/candlestick/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_hoverlabel.py b/plotly/validators/candlestick/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_hoverlabel.py rename to plotly/validators/candlestick/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_hovertext.py b/plotly/validators/candlestick/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_hovertext.py rename to plotly/validators/candlestick/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_hovertextsrc.py b/plotly/validators/candlestick/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_hovertextsrc.py rename to plotly/validators/candlestick/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_ids.py b/plotly/validators/candlestick/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_ids.py rename to plotly/validators/candlestick/_ids.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_idssrc.py b/plotly/validators/candlestick/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_idssrc.py rename to plotly/validators/candlestick/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_increasing.py b/plotly/validators/candlestick/_increasing.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_increasing.py rename to plotly/validators/candlestick/_increasing.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_legend.py b/plotly/validators/candlestick/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_legend.py rename to plotly/validators/candlestick/_legend.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_legendgroup.py b/plotly/validators/candlestick/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_legendgroup.py rename to plotly/validators/candlestick/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_legendgrouptitle.py b/plotly/validators/candlestick/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_legendgrouptitle.py rename to plotly/validators/candlestick/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_legendrank.py b/plotly/validators/candlestick/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_legendrank.py rename to plotly/validators/candlestick/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_legendwidth.py b/plotly/validators/candlestick/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_legendwidth.py rename to plotly/validators/candlestick/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_line.py b/plotly/validators/candlestick/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_line.py rename to plotly/validators/candlestick/_line.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_low.py b/plotly/validators/candlestick/_low.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_low.py rename to plotly/validators/candlestick/_low.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_lowsrc.py b/plotly/validators/candlestick/_lowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_lowsrc.py rename to plotly/validators/candlestick/_lowsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_meta.py b/plotly/validators/candlestick/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_meta.py rename to plotly/validators/candlestick/_meta.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_metasrc.py b/plotly/validators/candlestick/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_metasrc.py rename to plotly/validators/candlestick/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_name.py b/plotly/validators/candlestick/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_name.py rename to plotly/validators/candlestick/_name.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_opacity.py b/plotly/validators/candlestick/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_opacity.py rename to plotly/validators/candlestick/_opacity.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_open.py b/plotly/validators/candlestick/_open.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_open.py rename to plotly/validators/candlestick/_open.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_opensrc.py b/plotly/validators/candlestick/_opensrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_opensrc.py rename to plotly/validators/candlestick/_opensrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_selectedpoints.py b/plotly/validators/candlestick/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_selectedpoints.py rename to plotly/validators/candlestick/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_showlegend.py b/plotly/validators/candlestick/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_showlegend.py rename to plotly/validators/candlestick/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_stream.py b/plotly/validators/candlestick/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_stream.py rename to plotly/validators/candlestick/_stream.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_text.py b/plotly/validators/candlestick/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_text.py rename to plotly/validators/candlestick/_text.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_textsrc.py b/plotly/validators/candlestick/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_textsrc.py rename to plotly/validators/candlestick/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_uid.py b/plotly/validators/candlestick/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_uid.py rename to plotly/validators/candlestick/_uid.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_uirevision.py b/plotly/validators/candlestick/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_uirevision.py rename to plotly/validators/candlestick/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_visible.py b/plotly/validators/candlestick/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_visible.py rename to plotly/validators/candlestick/_visible.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_whiskerwidth.py b/plotly/validators/candlestick/_whiskerwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_whiskerwidth.py rename to plotly/validators/candlestick/_whiskerwidth.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_x.py b/plotly/validators/candlestick/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_x.py rename to plotly/validators/candlestick/_x.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_xaxis.py b/plotly/validators/candlestick/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_xaxis.py rename to plotly/validators/candlestick/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_xcalendar.py b/plotly/validators/candlestick/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_xcalendar.py rename to plotly/validators/candlestick/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_xhoverformat.py b/plotly/validators/candlestick/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_xhoverformat.py rename to plotly/validators/candlestick/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_xperiod.py b/plotly/validators/candlestick/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_xperiod.py rename to plotly/validators/candlestick/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_xperiod0.py b/plotly/validators/candlestick/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_xperiod0.py rename to plotly/validators/candlestick/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_xperiodalignment.py b/plotly/validators/candlestick/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_xperiodalignment.py rename to plotly/validators/candlestick/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_xsrc.py b/plotly/validators/candlestick/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_xsrc.py rename to plotly/validators/candlestick/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_yaxis.py b/plotly/validators/candlestick/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_yaxis.py rename to plotly/validators/candlestick/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_yhoverformat.py b/plotly/validators/candlestick/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_yhoverformat.py rename to plotly/validators/candlestick/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/candlestick/_zorder.py b/plotly/validators/candlestick/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/_zorder.py rename to plotly/validators/candlestick/_zorder.py diff --git a/packages/python/plotly/plotly/validators/candlestick/decreasing/__init__.py b/plotly/validators/candlestick/decreasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/decreasing/__init__.py rename to plotly/validators/candlestick/decreasing/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/decreasing/_fillcolor.py b/plotly/validators/candlestick/decreasing/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/decreasing/_fillcolor.py rename to plotly/validators/candlestick/decreasing/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/candlestick/decreasing/_line.py b/plotly/validators/candlestick/decreasing/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/decreasing/_line.py rename to plotly/validators/candlestick/decreasing/_line.py diff --git a/packages/python/plotly/plotly/validators/candlestick/decreasing/line/__init__.py b/plotly/validators/candlestick/decreasing/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/decreasing/line/__init__.py rename to plotly/validators/candlestick/decreasing/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/decreasing/line/_color.py b/plotly/validators/candlestick/decreasing/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/decreasing/line/_color.py rename to plotly/validators/candlestick/decreasing/line/_color.py diff --git a/packages/python/plotly/plotly/validators/candlestick/decreasing/line/_width.py b/plotly/validators/candlestick/decreasing/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/decreasing/line/_width.py rename to plotly/validators/candlestick/decreasing/line/_width.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/__init__.py b/plotly/validators/candlestick/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/__init__.py rename to plotly/validators/candlestick/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_align.py b/plotly/validators/candlestick/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_align.py rename to plotly/validators/candlestick/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_alignsrc.py b/plotly/validators/candlestick/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_alignsrc.py rename to plotly/validators/candlestick/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_bgcolor.py b/plotly/validators/candlestick/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_bgcolor.py rename to plotly/validators/candlestick/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_bgcolorsrc.py b/plotly/validators/candlestick/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_bgcolorsrc.py rename to plotly/validators/candlestick/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_bordercolor.py b/plotly/validators/candlestick/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_bordercolor.py rename to plotly/validators/candlestick/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_bordercolorsrc.py b/plotly/validators/candlestick/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_bordercolorsrc.py rename to plotly/validators/candlestick/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_font.py b/plotly/validators/candlestick/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_font.py rename to plotly/validators/candlestick/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_namelength.py b/plotly/validators/candlestick/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_namelength.py rename to plotly/validators/candlestick/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_namelengthsrc.py b/plotly/validators/candlestick/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_namelengthsrc.py rename to plotly/validators/candlestick/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/_split.py b/plotly/validators/candlestick/hoverlabel/_split.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/_split.py rename to plotly/validators/candlestick/hoverlabel/_split.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/__init__.py b/plotly/validators/candlestick/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/__init__.py rename to plotly/validators/candlestick/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_color.py b/plotly/validators/candlestick/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_color.py rename to plotly/validators/candlestick/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_colorsrc.py b/plotly/validators/candlestick/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_colorsrc.py rename to plotly/validators/candlestick/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_family.py b/plotly/validators/candlestick/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_family.py rename to plotly/validators/candlestick/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_familysrc.py b/plotly/validators/candlestick/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_familysrc.py rename to plotly/validators/candlestick/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_lineposition.py b/plotly/validators/candlestick/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_lineposition.py rename to plotly/validators/candlestick/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_linepositionsrc.py b/plotly/validators/candlestick/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/candlestick/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_shadow.py b/plotly/validators/candlestick/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_shadow.py rename to plotly/validators/candlestick/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_shadowsrc.py b/plotly/validators/candlestick/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_shadowsrc.py rename to plotly/validators/candlestick/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_size.py b/plotly/validators/candlestick/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_size.py rename to plotly/validators/candlestick/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_sizesrc.py b/plotly/validators/candlestick/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_sizesrc.py rename to plotly/validators/candlestick/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_style.py b/plotly/validators/candlestick/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_style.py rename to plotly/validators/candlestick/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_stylesrc.py b/plotly/validators/candlestick/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_stylesrc.py rename to plotly/validators/candlestick/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_textcase.py b/plotly/validators/candlestick/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_textcase.py rename to plotly/validators/candlestick/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_textcasesrc.py b/plotly/validators/candlestick/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_textcasesrc.py rename to plotly/validators/candlestick/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_variant.py b/plotly/validators/candlestick/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_variant.py rename to plotly/validators/candlestick/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_variantsrc.py b/plotly/validators/candlestick/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_variantsrc.py rename to plotly/validators/candlestick/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_weight.py b/plotly/validators/candlestick/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_weight.py rename to plotly/validators/candlestick/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_weightsrc.py b/plotly/validators/candlestick/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/hoverlabel/font/_weightsrc.py rename to plotly/validators/candlestick/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/candlestick/increasing/__init__.py b/plotly/validators/candlestick/increasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/increasing/__init__.py rename to plotly/validators/candlestick/increasing/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/increasing/_fillcolor.py b/plotly/validators/candlestick/increasing/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/increasing/_fillcolor.py rename to plotly/validators/candlestick/increasing/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/candlestick/increasing/_line.py b/plotly/validators/candlestick/increasing/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/increasing/_line.py rename to plotly/validators/candlestick/increasing/_line.py diff --git a/packages/python/plotly/plotly/validators/candlestick/increasing/line/__init__.py b/plotly/validators/candlestick/increasing/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/increasing/line/__init__.py rename to plotly/validators/candlestick/increasing/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/increasing/line/_color.py b/plotly/validators/candlestick/increasing/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/increasing/line/_color.py rename to plotly/validators/candlestick/increasing/line/_color.py diff --git a/packages/python/plotly/plotly/validators/candlestick/increasing/line/_width.py b/plotly/validators/candlestick/increasing/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/increasing/line/_width.py rename to plotly/validators/candlestick/increasing/line/_width.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/__init__.py b/plotly/validators/candlestick/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/__init__.py rename to plotly/validators/candlestick/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/_font.py b/plotly/validators/candlestick/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/_font.py rename to plotly/validators/candlestick/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/_text.py b/plotly/validators/candlestick/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/_text.py rename to plotly/validators/candlestick/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/__init__.py b/plotly/validators/candlestick/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/__init__.py rename to plotly/validators/candlestick/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_color.py b/plotly/validators/candlestick/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_color.py rename to plotly/validators/candlestick/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_family.py b/plotly/validators/candlestick/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_family.py rename to plotly/validators/candlestick/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_lineposition.py b/plotly/validators/candlestick/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_lineposition.py rename to plotly/validators/candlestick/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_shadow.py b/plotly/validators/candlestick/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_shadow.py rename to plotly/validators/candlestick/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_size.py b/plotly/validators/candlestick/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_size.py rename to plotly/validators/candlestick/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_style.py b/plotly/validators/candlestick/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_style.py rename to plotly/validators/candlestick/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_textcase.py b/plotly/validators/candlestick/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_textcase.py rename to plotly/validators/candlestick/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_variant.py b/plotly/validators/candlestick/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_variant.py rename to plotly/validators/candlestick/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_weight.py b/plotly/validators/candlestick/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/legendgrouptitle/font/_weight.py rename to plotly/validators/candlestick/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/candlestick/line/__init__.py b/plotly/validators/candlestick/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/line/__init__.py rename to plotly/validators/candlestick/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/line/_width.py b/plotly/validators/candlestick/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/line/_width.py rename to plotly/validators/candlestick/line/_width.py diff --git a/packages/python/plotly/plotly/validators/candlestick/stream/__init__.py b/plotly/validators/candlestick/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/stream/__init__.py rename to plotly/validators/candlestick/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/candlestick/stream/_maxpoints.py b/plotly/validators/candlestick/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/stream/_maxpoints.py rename to plotly/validators/candlestick/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/candlestick/stream/_token.py b/plotly/validators/candlestick/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/candlestick/stream/_token.py rename to plotly/validators/candlestick/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/carpet/__init__.py b/plotly/validators/carpet/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/__init__.py rename to plotly/validators/carpet/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/_a.py b/plotly/validators/carpet/_a.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_a.py rename to plotly/validators/carpet/_a.py diff --git a/packages/python/plotly/plotly/validators/carpet/_a0.py b/plotly/validators/carpet/_a0.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_a0.py rename to plotly/validators/carpet/_a0.py diff --git a/packages/python/plotly/plotly/validators/carpet/_aaxis.py b/plotly/validators/carpet/_aaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_aaxis.py rename to plotly/validators/carpet/_aaxis.py diff --git a/packages/python/plotly/plotly/validators/carpet/_asrc.py b/plotly/validators/carpet/_asrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_asrc.py rename to plotly/validators/carpet/_asrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/_b.py b/plotly/validators/carpet/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_b.py rename to plotly/validators/carpet/_b.py diff --git a/packages/python/plotly/plotly/validators/carpet/_b0.py b/plotly/validators/carpet/_b0.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_b0.py rename to plotly/validators/carpet/_b0.py diff --git a/packages/python/plotly/plotly/validators/carpet/_baxis.py b/plotly/validators/carpet/_baxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_baxis.py rename to plotly/validators/carpet/_baxis.py diff --git a/packages/python/plotly/plotly/validators/carpet/_bsrc.py b/plotly/validators/carpet/_bsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_bsrc.py rename to plotly/validators/carpet/_bsrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/_carpet.py b/plotly/validators/carpet/_carpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_carpet.py rename to plotly/validators/carpet/_carpet.py diff --git a/packages/python/plotly/plotly/validators/carpet/_cheaterslope.py b/plotly/validators/carpet/_cheaterslope.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_cheaterslope.py rename to plotly/validators/carpet/_cheaterslope.py diff --git a/packages/python/plotly/plotly/validators/carpet/_color.py b/plotly/validators/carpet/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_color.py rename to plotly/validators/carpet/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/_customdata.py b/plotly/validators/carpet/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_customdata.py rename to plotly/validators/carpet/_customdata.py diff --git a/packages/python/plotly/plotly/validators/carpet/_customdatasrc.py b/plotly/validators/carpet/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_customdatasrc.py rename to plotly/validators/carpet/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/_da.py b/plotly/validators/carpet/_da.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_da.py rename to plotly/validators/carpet/_da.py diff --git a/packages/python/plotly/plotly/validators/carpet/_db.py b/plotly/validators/carpet/_db.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_db.py rename to plotly/validators/carpet/_db.py diff --git a/packages/python/plotly/plotly/validators/carpet/_font.py b/plotly/validators/carpet/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_font.py rename to plotly/validators/carpet/_font.py diff --git a/packages/python/plotly/plotly/validators/carpet/_ids.py b/plotly/validators/carpet/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_ids.py rename to plotly/validators/carpet/_ids.py diff --git a/packages/python/plotly/plotly/validators/carpet/_idssrc.py b/plotly/validators/carpet/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_idssrc.py rename to plotly/validators/carpet/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/_legend.py b/plotly/validators/carpet/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_legend.py rename to plotly/validators/carpet/_legend.py diff --git a/packages/python/plotly/plotly/validators/carpet/_legendgrouptitle.py b/plotly/validators/carpet/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_legendgrouptitle.py rename to plotly/validators/carpet/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/carpet/_legendrank.py b/plotly/validators/carpet/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_legendrank.py rename to plotly/validators/carpet/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/carpet/_legendwidth.py b/plotly/validators/carpet/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_legendwidth.py rename to plotly/validators/carpet/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/_meta.py b/plotly/validators/carpet/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_meta.py rename to plotly/validators/carpet/_meta.py diff --git a/packages/python/plotly/plotly/validators/carpet/_metasrc.py b/plotly/validators/carpet/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_metasrc.py rename to plotly/validators/carpet/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/_name.py b/plotly/validators/carpet/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_name.py rename to plotly/validators/carpet/_name.py diff --git a/packages/python/plotly/plotly/validators/carpet/_opacity.py b/plotly/validators/carpet/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_opacity.py rename to plotly/validators/carpet/_opacity.py diff --git a/packages/python/plotly/plotly/validators/carpet/_stream.py b/plotly/validators/carpet/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_stream.py rename to plotly/validators/carpet/_stream.py diff --git a/packages/python/plotly/plotly/validators/carpet/_uid.py b/plotly/validators/carpet/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_uid.py rename to plotly/validators/carpet/_uid.py diff --git a/packages/python/plotly/plotly/validators/carpet/_uirevision.py b/plotly/validators/carpet/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_uirevision.py rename to plotly/validators/carpet/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/carpet/_visible.py b/plotly/validators/carpet/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_visible.py rename to plotly/validators/carpet/_visible.py diff --git a/packages/python/plotly/plotly/validators/carpet/_x.py b/plotly/validators/carpet/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_x.py rename to plotly/validators/carpet/_x.py diff --git a/packages/python/plotly/plotly/validators/carpet/_xaxis.py b/plotly/validators/carpet/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_xaxis.py rename to plotly/validators/carpet/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/carpet/_xsrc.py b/plotly/validators/carpet/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_xsrc.py rename to plotly/validators/carpet/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/_y.py b/plotly/validators/carpet/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_y.py rename to plotly/validators/carpet/_y.py diff --git a/packages/python/plotly/plotly/validators/carpet/_yaxis.py b/plotly/validators/carpet/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_yaxis.py rename to plotly/validators/carpet/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/carpet/_ysrc.py b/plotly/validators/carpet/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_ysrc.py rename to plotly/validators/carpet/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/_zorder.py b/plotly/validators/carpet/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/_zorder.py rename to plotly/validators/carpet/_zorder.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/__init__.py b/plotly/validators/carpet/aaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/__init__.py rename to plotly/validators/carpet/aaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_arraydtick.py b/plotly/validators/carpet/aaxis/_arraydtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_arraydtick.py rename to plotly/validators/carpet/aaxis/_arraydtick.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_arraytick0.py b/plotly/validators/carpet/aaxis/_arraytick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_arraytick0.py rename to plotly/validators/carpet/aaxis/_arraytick0.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_autorange.py b/plotly/validators/carpet/aaxis/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_autorange.py rename to plotly/validators/carpet/aaxis/_autorange.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_autotypenumbers.py b/plotly/validators/carpet/aaxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_autotypenumbers.py rename to plotly/validators/carpet/aaxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_categoryarray.py b/plotly/validators/carpet/aaxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_categoryarray.py rename to plotly/validators/carpet/aaxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_categoryarraysrc.py b/plotly/validators/carpet/aaxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_categoryarraysrc.py rename to plotly/validators/carpet/aaxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_categoryorder.py b/plotly/validators/carpet/aaxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_categoryorder.py rename to plotly/validators/carpet/aaxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_cheatertype.py b/plotly/validators/carpet/aaxis/_cheatertype.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_cheatertype.py rename to plotly/validators/carpet/aaxis/_cheatertype.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_color.py b/plotly/validators/carpet/aaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_color.py rename to plotly/validators/carpet/aaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_dtick.py b/plotly/validators/carpet/aaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_dtick.py rename to plotly/validators/carpet/aaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_endline.py b/plotly/validators/carpet/aaxis/_endline.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_endline.py rename to plotly/validators/carpet/aaxis/_endline.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_endlinecolor.py b/plotly/validators/carpet/aaxis/_endlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_endlinecolor.py rename to plotly/validators/carpet/aaxis/_endlinecolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_endlinewidth.py b/plotly/validators/carpet/aaxis/_endlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_endlinewidth.py rename to plotly/validators/carpet/aaxis/_endlinewidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_exponentformat.py b/plotly/validators/carpet/aaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_exponentformat.py rename to plotly/validators/carpet/aaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_fixedrange.py b/plotly/validators/carpet/aaxis/_fixedrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_fixedrange.py rename to plotly/validators/carpet/aaxis/_fixedrange.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_gridcolor.py b/plotly/validators/carpet/aaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_gridcolor.py rename to plotly/validators/carpet/aaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_griddash.py b/plotly/validators/carpet/aaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_griddash.py rename to plotly/validators/carpet/aaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_gridwidth.py b/plotly/validators/carpet/aaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_gridwidth.py rename to plotly/validators/carpet/aaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_labelalias.py b/plotly/validators/carpet/aaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_labelalias.py rename to plotly/validators/carpet/aaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_labelpadding.py b/plotly/validators/carpet/aaxis/_labelpadding.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_labelpadding.py rename to plotly/validators/carpet/aaxis/_labelpadding.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_labelprefix.py b/plotly/validators/carpet/aaxis/_labelprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_labelprefix.py rename to plotly/validators/carpet/aaxis/_labelprefix.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_labelsuffix.py b/plotly/validators/carpet/aaxis/_labelsuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_labelsuffix.py rename to plotly/validators/carpet/aaxis/_labelsuffix.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_linecolor.py b/plotly/validators/carpet/aaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_linecolor.py rename to plotly/validators/carpet/aaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_linewidth.py b/plotly/validators/carpet/aaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_linewidth.py rename to plotly/validators/carpet/aaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_minexponent.py b/plotly/validators/carpet/aaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_minexponent.py rename to plotly/validators/carpet/aaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_minorgridcolor.py b/plotly/validators/carpet/aaxis/_minorgridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_minorgridcolor.py rename to plotly/validators/carpet/aaxis/_minorgridcolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_minorgridcount.py b/plotly/validators/carpet/aaxis/_minorgridcount.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_minorgridcount.py rename to plotly/validators/carpet/aaxis/_minorgridcount.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_minorgriddash.py b/plotly/validators/carpet/aaxis/_minorgriddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_minorgriddash.py rename to plotly/validators/carpet/aaxis/_minorgriddash.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_minorgridwidth.py b/plotly/validators/carpet/aaxis/_minorgridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_minorgridwidth.py rename to plotly/validators/carpet/aaxis/_minorgridwidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_nticks.py b/plotly/validators/carpet/aaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_nticks.py rename to plotly/validators/carpet/aaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_range.py b/plotly/validators/carpet/aaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_range.py rename to plotly/validators/carpet/aaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_rangemode.py b/plotly/validators/carpet/aaxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_rangemode.py rename to plotly/validators/carpet/aaxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_separatethousands.py b/plotly/validators/carpet/aaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_separatethousands.py rename to plotly/validators/carpet/aaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_showexponent.py b/plotly/validators/carpet/aaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_showexponent.py rename to plotly/validators/carpet/aaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_showgrid.py b/plotly/validators/carpet/aaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_showgrid.py rename to plotly/validators/carpet/aaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_showline.py b/plotly/validators/carpet/aaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_showline.py rename to plotly/validators/carpet/aaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_showticklabels.py b/plotly/validators/carpet/aaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_showticklabels.py rename to plotly/validators/carpet/aaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_showtickprefix.py b/plotly/validators/carpet/aaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_showtickprefix.py rename to plotly/validators/carpet/aaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_showticksuffix.py b/plotly/validators/carpet/aaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_showticksuffix.py rename to plotly/validators/carpet/aaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_smoothing.py b/plotly/validators/carpet/aaxis/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_smoothing.py rename to plotly/validators/carpet/aaxis/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_startline.py b/plotly/validators/carpet/aaxis/_startline.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_startline.py rename to plotly/validators/carpet/aaxis/_startline.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_startlinecolor.py b/plotly/validators/carpet/aaxis/_startlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_startlinecolor.py rename to plotly/validators/carpet/aaxis/_startlinecolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_startlinewidth.py b/plotly/validators/carpet/aaxis/_startlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_startlinewidth.py rename to plotly/validators/carpet/aaxis/_startlinewidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tick0.py b/plotly/validators/carpet/aaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tick0.py rename to plotly/validators/carpet/aaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickangle.py b/plotly/validators/carpet/aaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickangle.py rename to plotly/validators/carpet/aaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickfont.py b/plotly/validators/carpet/aaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickfont.py rename to plotly/validators/carpet/aaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickformat.py b/plotly/validators/carpet/aaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickformat.py rename to plotly/validators/carpet/aaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickformatstopdefaults.py b/plotly/validators/carpet/aaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickformatstopdefaults.py rename to plotly/validators/carpet/aaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickformatstops.py b/plotly/validators/carpet/aaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickformatstops.py rename to plotly/validators/carpet/aaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickmode.py b/plotly/validators/carpet/aaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickmode.py rename to plotly/validators/carpet/aaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickprefix.py b/plotly/validators/carpet/aaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickprefix.py rename to plotly/validators/carpet/aaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_ticksuffix.py b/plotly/validators/carpet/aaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_ticksuffix.py rename to plotly/validators/carpet/aaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_ticktext.py b/plotly/validators/carpet/aaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_ticktext.py rename to plotly/validators/carpet/aaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_ticktextsrc.py b/plotly/validators/carpet/aaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_ticktextsrc.py rename to plotly/validators/carpet/aaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickvals.py b/plotly/validators/carpet/aaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickvals.py rename to plotly/validators/carpet/aaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_tickvalssrc.py b/plotly/validators/carpet/aaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_tickvalssrc.py rename to plotly/validators/carpet/aaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_title.py b/plotly/validators/carpet/aaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_title.py rename to plotly/validators/carpet/aaxis/_title.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/_type.py b/plotly/validators/carpet/aaxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/_type.py rename to plotly/validators/carpet/aaxis/_type.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/__init__.py b/plotly/validators/carpet/aaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/__init__.py rename to plotly/validators/carpet/aaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_color.py b/plotly/validators/carpet/aaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_color.py rename to plotly/validators/carpet/aaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_family.py b/plotly/validators/carpet/aaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_family.py rename to plotly/validators/carpet/aaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_lineposition.py b/plotly/validators/carpet/aaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_lineposition.py rename to plotly/validators/carpet/aaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_shadow.py b/plotly/validators/carpet/aaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_shadow.py rename to plotly/validators/carpet/aaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_size.py b/plotly/validators/carpet/aaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_size.py rename to plotly/validators/carpet/aaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_style.py b/plotly/validators/carpet/aaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_style.py rename to plotly/validators/carpet/aaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_textcase.py b/plotly/validators/carpet/aaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_textcase.py rename to plotly/validators/carpet/aaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_variant.py b/plotly/validators/carpet/aaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_variant.py rename to plotly/validators/carpet/aaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_weight.py b/plotly/validators/carpet/aaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickfont/_weight.py rename to plotly/validators/carpet/aaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/__init__.py b/plotly/validators/carpet/aaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/__init__.py rename to plotly/validators/carpet/aaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_dtickrange.py b/plotly/validators/carpet/aaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_dtickrange.py rename to plotly/validators/carpet/aaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_enabled.py b/plotly/validators/carpet/aaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_enabled.py rename to plotly/validators/carpet/aaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_name.py b/plotly/validators/carpet/aaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_name.py rename to plotly/validators/carpet/aaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_templateitemname.py b/plotly/validators/carpet/aaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_templateitemname.py rename to plotly/validators/carpet/aaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_value.py b/plotly/validators/carpet/aaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/tickformatstop/_value.py rename to plotly/validators/carpet/aaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/__init__.py b/plotly/validators/carpet/aaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/__init__.py rename to plotly/validators/carpet/aaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/_font.py b/plotly/validators/carpet/aaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/_font.py rename to plotly/validators/carpet/aaxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/_offset.py b/plotly/validators/carpet/aaxis/title/_offset.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/_offset.py rename to plotly/validators/carpet/aaxis/title/_offset.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/_text.py b/plotly/validators/carpet/aaxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/_text.py rename to plotly/validators/carpet/aaxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/__init__.py b/plotly/validators/carpet/aaxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/__init__.py rename to plotly/validators/carpet/aaxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_color.py b/plotly/validators/carpet/aaxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_color.py rename to plotly/validators/carpet/aaxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_family.py b/plotly/validators/carpet/aaxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_family.py rename to plotly/validators/carpet/aaxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_lineposition.py b/plotly/validators/carpet/aaxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_lineposition.py rename to plotly/validators/carpet/aaxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_shadow.py b/plotly/validators/carpet/aaxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_shadow.py rename to plotly/validators/carpet/aaxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_size.py b/plotly/validators/carpet/aaxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_size.py rename to plotly/validators/carpet/aaxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_style.py b/plotly/validators/carpet/aaxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_style.py rename to plotly/validators/carpet/aaxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_textcase.py b/plotly/validators/carpet/aaxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_textcase.py rename to plotly/validators/carpet/aaxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_variant.py b/plotly/validators/carpet/aaxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_variant.py rename to plotly/validators/carpet/aaxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_weight.py b/plotly/validators/carpet/aaxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/aaxis/title/font/_weight.py rename to plotly/validators/carpet/aaxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/__init__.py b/plotly/validators/carpet/baxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/__init__.py rename to plotly/validators/carpet/baxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_arraydtick.py b/plotly/validators/carpet/baxis/_arraydtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_arraydtick.py rename to plotly/validators/carpet/baxis/_arraydtick.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_arraytick0.py b/plotly/validators/carpet/baxis/_arraytick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_arraytick0.py rename to plotly/validators/carpet/baxis/_arraytick0.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_autorange.py b/plotly/validators/carpet/baxis/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_autorange.py rename to plotly/validators/carpet/baxis/_autorange.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_autotypenumbers.py b/plotly/validators/carpet/baxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_autotypenumbers.py rename to plotly/validators/carpet/baxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_categoryarray.py b/plotly/validators/carpet/baxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_categoryarray.py rename to plotly/validators/carpet/baxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_categoryarraysrc.py b/plotly/validators/carpet/baxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_categoryarraysrc.py rename to plotly/validators/carpet/baxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_categoryorder.py b/plotly/validators/carpet/baxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_categoryorder.py rename to plotly/validators/carpet/baxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_cheatertype.py b/plotly/validators/carpet/baxis/_cheatertype.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_cheatertype.py rename to plotly/validators/carpet/baxis/_cheatertype.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_color.py b/plotly/validators/carpet/baxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_color.py rename to plotly/validators/carpet/baxis/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_dtick.py b/plotly/validators/carpet/baxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_dtick.py rename to plotly/validators/carpet/baxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_endline.py b/plotly/validators/carpet/baxis/_endline.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_endline.py rename to plotly/validators/carpet/baxis/_endline.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_endlinecolor.py b/plotly/validators/carpet/baxis/_endlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_endlinecolor.py rename to plotly/validators/carpet/baxis/_endlinecolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_endlinewidth.py b/plotly/validators/carpet/baxis/_endlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_endlinewidth.py rename to plotly/validators/carpet/baxis/_endlinewidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_exponentformat.py b/plotly/validators/carpet/baxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_exponentformat.py rename to plotly/validators/carpet/baxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_fixedrange.py b/plotly/validators/carpet/baxis/_fixedrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_fixedrange.py rename to plotly/validators/carpet/baxis/_fixedrange.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_gridcolor.py b/plotly/validators/carpet/baxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_gridcolor.py rename to plotly/validators/carpet/baxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_griddash.py b/plotly/validators/carpet/baxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_griddash.py rename to plotly/validators/carpet/baxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_gridwidth.py b/plotly/validators/carpet/baxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_gridwidth.py rename to plotly/validators/carpet/baxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_labelalias.py b/plotly/validators/carpet/baxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_labelalias.py rename to plotly/validators/carpet/baxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_labelpadding.py b/plotly/validators/carpet/baxis/_labelpadding.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_labelpadding.py rename to plotly/validators/carpet/baxis/_labelpadding.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_labelprefix.py b/plotly/validators/carpet/baxis/_labelprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_labelprefix.py rename to plotly/validators/carpet/baxis/_labelprefix.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_labelsuffix.py b/plotly/validators/carpet/baxis/_labelsuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_labelsuffix.py rename to plotly/validators/carpet/baxis/_labelsuffix.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_linecolor.py b/plotly/validators/carpet/baxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_linecolor.py rename to plotly/validators/carpet/baxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_linewidth.py b/plotly/validators/carpet/baxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_linewidth.py rename to plotly/validators/carpet/baxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_minexponent.py b/plotly/validators/carpet/baxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_minexponent.py rename to plotly/validators/carpet/baxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_minorgridcolor.py b/plotly/validators/carpet/baxis/_minorgridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_minorgridcolor.py rename to plotly/validators/carpet/baxis/_minorgridcolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_minorgridcount.py b/plotly/validators/carpet/baxis/_minorgridcount.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_minorgridcount.py rename to plotly/validators/carpet/baxis/_minorgridcount.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_minorgriddash.py b/plotly/validators/carpet/baxis/_minorgriddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_minorgriddash.py rename to plotly/validators/carpet/baxis/_minorgriddash.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_minorgridwidth.py b/plotly/validators/carpet/baxis/_minorgridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_minorgridwidth.py rename to plotly/validators/carpet/baxis/_minorgridwidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_nticks.py b/plotly/validators/carpet/baxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_nticks.py rename to plotly/validators/carpet/baxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_range.py b/plotly/validators/carpet/baxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_range.py rename to plotly/validators/carpet/baxis/_range.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_rangemode.py b/plotly/validators/carpet/baxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_rangemode.py rename to plotly/validators/carpet/baxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_separatethousands.py b/plotly/validators/carpet/baxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_separatethousands.py rename to plotly/validators/carpet/baxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_showexponent.py b/plotly/validators/carpet/baxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_showexponent.py rename to plotly/validators/carpet/baxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_showgrid.py b/plotly/validators/carpet/baxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_showgrid.py rename to plotly/validators/carpet/baxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_showline.py b/plotly/validators/carpet/baxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_showline.py rename to plotly/validators/carpet/baxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_showticklabels.py b/plotly/validators/carpet/baxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_showticklabels.py rename to plotly/validators/carpet/baxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_showtickprefix.py b/plotly/validators/carpet/baxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_showtickprefix.py rename to plotly/validators/carpet/baxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_showticksuffix.py b/plotly/validators/carpet/baxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_showticksuffix.py rename to plotly/validators/carpet/baxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_smoothing.py b/plotly/validators/carpet/baxis/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_smoothing.py rename to plotly/validators/carpet/baxis/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_startline.py b/plotly/validators/carpet/baxis/_startline.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_startline.py rename to plotly/validators/carpet/baxis/_startline.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_startlinecolor.py b/plotly/validators/carpet/baxis/_startlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_startlinecolor.py rename to plotly/validators/carpet/baxis/_startlinecolor.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_startlinewidth.py b/plotly/validators/carpet/baxis/_startlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_startlinewidth.py rename to plotly/validators/carpet/baxis/_startlinewidth.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tick0.py b/plotly/validators/carpet/baxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tick0.py rename to plotly/validators/carpet/baxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickangle.py b/plotly/validators/carpet/baxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickangle.py rename to plotly/validators/carpet/baxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickfont.py b/plotly/validators/carpet/baxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickfont.py rename to plotly/validators/carpet/baxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickformat.py b/plotly/validators/carpet/baxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickformat.py rename to plotly/validators/carpet/baxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickformatstopdefaults.py b/plotly/validators/carpet/baxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickformatstopdefaults.py rename to plotly/validators/carpet/baxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickformatstops.py b/plotly/validators/carpet/baxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickformatstops.py rename to plotly/validators/carpet/baxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickmode.py b/plotly/validators/carpet/baxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickmode.py rename to plotly/validators/carpet/baxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickprefix.py b/plotly/validators/carpet/baxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickprefix.py rename to plotly/validators/carpet/baxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_ticksuffix.py b/plotly/validators/carpet/baxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_ticksuffix.py rename to plotly/validators/carpet/baxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_ticktext.py b/plotly/validators/carpet/baxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_ticktext.py rename to plotly/validators/carpet/baxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_ticktextsrc.py b/plotly/validators/carpet/baxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_ticktextsrc.py rename to plotly/validators/carpet/baxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickvals.py b/plotly/validators/carpet/baxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickvals.py rename to plotly/validators/carpet/baxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_tickvalssrc.py b/plotly/validators/carpet/baxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_tickvalssrc.py rename to plotly/validators/carpet/baxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_title.py b/plotly/validators/carpet/baxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_title.py rename to plotly/validators/carpet/baxis/_title.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/_type.py b/plotly/validators/carpet/baxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/_type.py rename to plotly/validators/carpet/baxis/_type.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/__init__.py b/plotly/validators/carpet/baxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/__init__.py rename to plotly/validators/carpet/baxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_color.py b/plotly/validators/carpet/baxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_color.py rename to plotly/validators/carpet/baxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_family.py b/plotly/validators/carpet/baxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_family.py rename to plotly/validators/carpet/baxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_lineposition.py b/plotly/validators/carpet/baxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_lineposition.py rename to plotly/validators/carpet/baxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_shadow.py b/plotly/validators/carpet/baxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_shadow.py rename to plotly/validators/carpet/baxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_size.py b/plotly/validators/carpet/baxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_size.py rename to plotly/validators/carpet/baxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_style.py b/plotly/validators/carpet/baxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_style.py rename to plotly/validators/carpet/baxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_textcase.py b/plotly/validators/carpet/baxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_textcase.py rename to plotly/validators/carpet/baxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_variant.py b/plotly/validators/carpet/baxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_variant.py rename to plotly/validators/carpet/baxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_weight.py b/plotly/validators/carpet/baxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickfont/_weight.py rename to plotly/validators/carpet/baxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/__init__.py b/plotly/validators/carpet/baxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/__init__.py rename to plotly/validators/carpet/baxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_dtickrange.py b/plotly/validators/carpet/baxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_dtickrange.py rename to plotly/validators/carpet/baxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_enabled.py b/plotly/validators/carpet/baxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_enabled.py rename to plotly/validators/carpet/baxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_name.py b/plotly/validators/carpet/baxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_name.py rename to plotly/validators/carpet/baxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_templateitemname.py b/plotly/validators/carpet/baxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_templateitemname.py rename to plotly/validators/carpet/baxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_value.py b/plotly/validators/carpet/baxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/tickformatstop/_value.py rename to plotly/validators/carpet/baxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/__init__.py b/plotly/validators/carpet/baxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/__init__.py rename to plotly/validators/carpet/baxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/_font.py b/plotly/validators/carpet/baxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/_font.py rename to plotly/validators/carpet/baxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/_offset.py b/plotly/validators/carpet/baxis/title/_offset.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/_offset.py rename to plotly/validators/carpet/baxis/title/_offset.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/_text.py b/plotly/validators/carpet/baxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/_text.py rename to plotly/validators/carpet/baxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/__init__.py b/plotly/validators/carpet/baxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/__init__.py rename to plotly/validators/carpet/baxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_color.py b/plotly/validators/carpet/baxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_color.py rename to plotly/validators/carpet/baxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_family.py b/plotly/validators/carpet/baxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_family.py rename to plotly/validators/carpet/baxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_lineposition.py b/plotly/validators/carpet/baxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_lineposition.py rename to plotly/validators/carpet/baxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_shadow.py b/plotly/validators/carpet/baxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_shadow.py rename to plotly/validators/carpet/baxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_size.py b/plotly/validators/carpet/baxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_size.py rename to plotly/validators/carpet/baxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_style.py b/plotly/validators/carpet/baxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_style.py rename to plotly/validators/carpet/baxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_textcase.py b/plotly/validators/carpet/baxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_textcase.py rename to plotly/validators/carpet/baxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_variant.py b/plotly/validators/carpet/baxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_variant.py rename to plotly/validators/carpet/baxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/carpet/baxis/title/font/_weight.py b/plotly/validators/carpet/baxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/baxis/title/font/_weight.py rename to plotly/validators/carpet/baxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/__init__.py b/plotly/validators/carpet/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/__init__.py rename to plotly/validators/carpet/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_color.py b/plotly/validators/carpet/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_color.py rename to plotly/validators/carpet/font/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_family.py b/plotly/validators/carpet/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_family.py rename to plotly/validators/carpet/font/_family.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_lineposition.py b/plotly/validators/carpet/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_lineposition.py rename to plotly/validators/carpet/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_shadow.py b/plotly/validators/carpet/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_shadow.py rename to plotly/validators/carpet/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_size.py b/plotly/validators/carpet/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_size.py rename to plotly/validators/carpet/font/_size.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_style.py b/plotly/validators/carpet/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_style.py rename to plotly/validators/carpet/font/_style.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_textcase.py b/plotly/validators/carpet/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_textcase.py rename to plotly/validators/carpet/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_variant.py b/plotly/validators/carpet/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_variant.py rename to plotly/validators/carpet/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/carpet/font/_weight.py b/plotly/validators/carpet/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/font/_weight.py rename to plotly/validators/carpet/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/__init__.py b/plotly/validators/carpet/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/__init__.py rename to plotly/validators/carpet/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/_font.py b/plotly/validators/carpet/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/_font.py rename to plotly/validators/carpet/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/_text.py b/plotly/validators/carpet/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/_text.py rename to plotly/validators/carpet/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/__init__.py b/plotly/validators/carpet/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/__init__.py rename to plotly/validators/carpet/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_color.py b/plotly/validators/carpet/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_color.py rename to plotly/validators/carpet/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_family.py b/plotly/validators/carpet/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_family.py rename to plotly/validators/carpet/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_lineposition.py b/plotly/validators/carpet/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_lineposition.py rename to plotly/validators/carpet/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_shadow.py b/plotly/validators/carpet/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_shadow.py rename to plotly/validators/carpet/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_size.py b/plotly/validators/carpet/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_size.py rename to plotly/validators/carpet/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_style.py b/plotly/validators/carpet/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_style.py rename to plotly/validators/carpet/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_textcase.py b/plotly/validators/carpet/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_textcase.py rename to plotly/validators/carpet/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_variant.py b/plotly/validators/carpet/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_variant.py rename to plotly/validators/carpet/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_weight.py b/plotly/validators/carpet/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/legendgrouptitle/font/_weight.py rename to plotly/validators/carpet/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/carpet/stream/__init__.py b/plotly/validators/carpet/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/stream/__init__.py rename to plotly/validators/carpet/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/carpet/stream/_maxpoints.py b/plotly/validators/carpet/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/stream/_maxpoints.py rename to plotly/validators/carpet/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/carpet/stream/_token.py b/plotly/validators/carpet/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/carpet/stream/_token.py rename to plotly/validators/carpet/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/choropleth/__init__.py b/plotly/validators/choropleth/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/__init__.py rename to plotly/validators/choropleth/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_autocolorscale.py b/plotly/validators/choropleth/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_autocolorscale.py rename to plotly/validators/choropleth/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_coloraxis.py b/plotly/validators/choropleth/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_coloraxis.py rename to plotly/validators/choropleth/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_colorbar.py b/plotly/validators/choropleth/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_colorbar.py rename to plotly/validators/choropleth/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_colorscale.py b/plotly/validators/choropleth/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_colorscale.py rename to plotly/validators/choropleth/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_customdata.py b/plotly/validators/choropleth/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_customdata.py rename to plotly/validators/choropleth/_customdata.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_customdatasrc.py b/plotly/validators/choropleth/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_customdatasrc.py rename to plotly/validators/choropleth/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_featureidkey.py b/plotly/validators/choropleth/_featureidkey.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_featureidkey.py rename to plotly/validators/choropleth/_featureidkey.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_geo.py b/plotly/validators/choropleth/_geo.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_geo.py rename to plotly/validators/choropleth/_geo.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_geojson.py b/plotly/validators/choropleth/_geojson.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_geojson.py rename to plotly/validators/choropleth/_geojson.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_hoverinfo.py b/plotly/validators/choropleth/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_hoverinfo.py rename to plotly/validators/choropleth/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_hoverinfosrc.py b/plotly/validators/choropleth/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_hoverinfosrc.py rename to plotly/validators/choropleth/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_hoverlabel.py b/plotly/validators/choropleth/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_hoverlabel.py rename to plotly/validators/choropleth/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_hovertemplate.py b/plotly/validators/choropleth/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_hovertemplate.py rename to plotly/validators/choropleth/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_hovertemplatesrc.py b/plotly/validators/choropleth/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_hovertemplatesrc.py rename to plotly/validators/choropleth/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_hovertext.py b/plotly/validators/choropleth/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_hovertext.py rename to plotly/validators/choropleth/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_hovertextsrc.py b/plotly/validators/choropleth/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_hovertextsrc.py rename to plotly/validators/choropleth/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_ids.py b/plotly/validators/choropleth/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_ids.py rename to plotly/validators/choropleth/_ids.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_idssrc.py b/plotly/validators/choropleth/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_idssrc.py rename to plotly/validators/choropleth/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_legend.py b/plotly/validators/choropleth/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_legend.py rename to plotly/validators/choropleth/_legend.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_legendgroup.py b/plotly/validators/choropleth/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_legendgroup.py rename to plotly/validators/choropleth/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_legendgrouptitle.py b/plotly/validators/choropleth/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_legendgrouptitle.py rename to plotly/validators/choropleth/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_legendrank.py b/plotly/validators/choropleth/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_legendrank.py rename to plotly/validators/choropleth/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_legendwidth.py b/plotly/validators/choropleth/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_legendwidth.py rename to plotly/validators/choropleth/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_locationmode.py b/plotly/validators/choropleth/_locationmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_locationmode.py rename to plotly/validators/choropleth/_locationmode.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_locations.py b/plotly/validators/choropleth/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_locations.py rename to plotly/validators/choropleth/_locations.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_locationssrc.py b/plotly/validators/choropleth/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_locationssrc.py rename to plotly/validators/choropleth/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_marker.py b/plotly/validators/choropleth/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_marker.py rename to plotly/validators/choropleth/_marker.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_meta.py b/plotly/validators/choropleth/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_meta.py rename to plotly/validators/choropleth/_meta.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_metasrc.py b/plotly/validators/choropleth/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_metasrc.py rename to plotly/validators/choropleth/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_name.py b/plotly/validators/choropleth/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_name.py rename to plotly/validators/choropleth/_name.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_reversescale.py b/plotly/validators/choropleth/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_reversescale.py rename to plotly/validators/choropleth/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_selected.py b/plotly/validators/choropleth/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_selected.py rename to plotly/validators/choropleth/_selected.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_selectedpoints.py b/plotly/validators/choropleth/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_selectedpoints.py rename to plotly/validators/choropleth/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_showlegend.py b/plotly/validators/choropleth/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_showlegend.py rename to plotly/validators/choropleth/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_showscale.py b/plotly/validators/choropleth/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_showscale.py rename to plotly/validators/choropleth/_showscale.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_stream.py b/plotly/validators/choropleth/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_stream.py rename to plotly/validators/choropleth/_stream.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_text.py b/plotly/validators/choropleth/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_text.py rename to plotly/validators/choropleth/_text.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_textsrc.py b/plotly/validators/choropleth/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_textsrc.py rename to plotly/validators/choropleth/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_uid.py b/plotly/validators/choropleth/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_uid.py rename to plotly/validators/choropleth/_uid.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_uirevision.py b/plotly/validators/choropleth/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_uirevision.py rename to plotly/validators/choropleth/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_unselected.py b/plotly/validators/choropleth/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_unselected.py rename to plotly/validators/choropleth/_unselected.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_visible.py b/plotly/validators/choropleth/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_visible.py rename to plotly/validators/choropleth/_visible.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_z.py b/plotly/validators/choropleth/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_z.py rename to plotly/validators/choropleth/_z.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_zauto.py b/plotly/validators/choropleth/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_zauto.py rename to plotly/validators/choropleth/_zauto.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_zmax.py b/plotly/validators/choropleth/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_zmax.py rename to plotly/validators/choropleth/_zmax.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_zmid.py b/plotly/validators/choropleth/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_zmid.py rename to plotly/validators/choropleth/_zmid.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_zmin.py b/plotly/validators/choropleth/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_zmin.py rename to plotly/validators/choropleth/_zmin.py diff --git a/packages/python/plotly/plotly/validators/choropleth/_zsrc.py b/plotly/validators/choropleth/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/_zsrc.py rename to plotly/validators/choropleth/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/__init__.py b/plotly/validators/choropleth/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/__init__.py rename to plotly/validators/choropleth/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_bgcolor.py b/plotly/validators/choropleth/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_bgcolor.py rename to plotly/validators/choropleth/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_bordercolor.py b/plotly/validators/choropleth/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_bordercolor.py rename to plotly/validators/choropleth/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_borderwidth.py b/plotly/validators/choropleth/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_borderwidth.py rename to plotly/validators/choropleth/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_dtick.py b/plotly/validators/choropleth/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_dtick.py rename to plotly/validators/choropleth/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_exponentformat.py b/plotly/validators/choropleth/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_exponentformat.py rename to plotly/validators/choropleth/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_labelalias.py b/plotly/validators/choropleth/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_labelalias.py rename to plotly/validators/choropleth/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_len.py b/plotly/validators/choropleth/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_len.py rename to plotly/validators/choropleth/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_lenmode.py b/plotly/validators/choropleth/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_lenmode.py rename to plotly/validators/choropleth/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_minexponent.py b/plotly/validators/choropleth/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_minexponent.py rename to plotly/validators/choropleth/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_nticks.py b/plotly/validators/choropleth/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_nticks.py rename to plotly/validators/choropleth/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_orientation.py b/plotly/validators/choropleth/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_orientation.py rename to plotly/validators/choropleth/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_outlinecolor.py b/plotly/validators/choropleth/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_outlinecolor.py rename to plotly/validators/choropleth/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_outlinewidth.py b/plotly/validators/choropleth/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_outlinewidth.py rename to plotly/validators/choropleth/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_separatethousands.py b/plotly/validators/choropleth/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_separatethousands.py rename to plotly/validators/choropleth/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_showexponent.py b/plotly/validators/choropleth/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_showexponent.py rename to plotly/validators/choropleth/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_showticklabels.py b/plotly/validators/choropleth/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_showticklabels.py rename to plotly/validators/choropleth/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_showtickprefix.py b/plotly/validators/choropleth/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_showtickprefix.py rename to plotly/validators/choropleth/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_showticksuffix.py b/plotly/validators/choropleth/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_showticksuffix.py rename to plotly/validators/choropleth/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_thickness.py b/plotly/validators/choropleth/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_thickness.py rename to plotly/validators/choropleth/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_thicknessmode.py b/plotly/validators/choropleth/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_thicknessmode.py rename to plotly/validators/choropleth/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tick0.py b/plotly/validators/choropleth/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tick0.py rename to plotly/validators/choropleth/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickangle.py b/plotly/validators/choropleth/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickangle.py rename to plotly/validators/choropleth/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickcolor.py b/plotly/validators/choropleth/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickcolor.py rename to plotly/validators/choropleth/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickfont.py b/plotly/validators/choropleth/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickfont.py rename to plotly/validators/choropleth/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickformat.py b/plotly/validators/choropleth/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickformat.py rename to plotly/validators/choropleth/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickformatstopdefaults.py b/plotly/validators/choropleth/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickformatstopdefaults.py rename to plotly/validators/choropleth/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickformatstops.py b/plotly/validators/choropleth/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickformatstops.py rename to plotly/validators/choropleth/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ticklabeloverflow.py b/plotly/validators/choropleth/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ticklabeloverflow.py rename to plotly/validators/choropleth/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ticklabelposition.py b/plotly/validators/choropleth/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ticklabelposition.py rename to plotly/validators/choropleth/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ticklabelstep.py b/plotly/validators/choropleth/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ticklabelstep.py rename to plotly/validators/choropleth/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ticklen.py b/plotly/validators/choropleth/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ticklen.py rename to plotly/validators/choropleth/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickmode.py b/plotly/validators/choropleth/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickmode.py rename to plotly/validators/choropleth/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickprefix.py b/plotly/validators/choropleth/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickprefix.py rename to plotly/validators/choropleth/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ticks.py b/plotly/validators/choropleth/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ticks.py rename to plotly/validators/choropleth/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ticksuffix.py b/plotly/validators/choropleth/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ticksuffix.py rename to plotly/validators/choropleth/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ticktext.py b/plotly/validators/choropleth/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ticktext.py rename to plotly/validators/choropleth/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ticktextsrc.py b/plotly/validators/choropleth/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ticktextsrc.py rename to plotly/validators/choropleth/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickvals.py b/plotly/validators/choropleth/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickvals.py rename to plotly/validators/choropleth/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickvalssrc.py b/plotly/validators/choropleth/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickvalssrc.py rename to plotly/validators/choropleth/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_tickwidth.py b/plotly/validators/choropleth/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_tickwidth.py rename to plotly/validators/choropleth/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_title.py b/plotly/validators/choropleth/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_title.py rename to plotly/validators/choropleth/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_x.py b/plotly/validators/choropleth/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_x.py rename to plotly/validators/choropleth/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_xanchor.py b/plotly/validators/choropleth/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_xanchor.py rename to plotly/validators/choropleth/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_xpad.py b/plotly/validators/choropleth/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_xpad.py rename to plotly/validators/choropleth/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_xref.py b/plotly/validators/choropleth/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_xref.py rename to plotly/validators/choropleth/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_y.py b/plotly/validators/choropleth/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_y.py rename to plotly/validators/choropleth/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_yanchor.py b/plotly/validators/choropleth/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_yanchor.py rename to plotly/validators/choropleth/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_ypad.py b/plotly/validators/choropleth/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_ypad.py rename to plotly/validators/choropleth/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/_yref.py b/plotly/validators/choropleth/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/_yref.py rename to plotly/validators/choropleth/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/__init__.py b/plotly/validators/choropleth/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/__init__.py rename to plotly/validators/choropleth/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_color.py b/plotly/validators/choropleth/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_color.py rename to plotly/validators/choropleth/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_family.py b/plotly/validators/choropleth/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_family.py rename to plotly/validators/choropleth/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_lineposition.py b/plotly/validators/choropleth/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_lineposition.py rename to plotly/validators/choropleth/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_shadow.py b/plotly/validators/choropleth/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_shadow.py rename to plotly/validators/choropleth/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_size.py b/plotly/validators/choropleth/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_size.py rename to plotly/validators/choropleth/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_style.py b/plotly/validators/choropleth/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_style.py rename to plotly/validators/choropleth/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_textcase.py b/plotly/validators/choropleth/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_textcase.py rename to plotly/validators/choropleth/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_variant.py b/plotly/validators/choropleth/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_variant.py rename to plotly/validators/choropleth/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_weight.py b/plotly/validators/choropleth/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickfont/_weight.py rename to plotly/validators/choropleth/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/__init__.py b/plotly/validators/choropleth/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/__init__.py rename to plotly/validators/choropleth/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/choropleth/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/choropleth/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_enabled.py b/plotly/validators/choropleth/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_enabled.py rename to plotly/validators/choropleth/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_name.py b/plotly/validators/choropleth/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_name.py rename to plotly/validators/choropleth/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/choropleth/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/choropleth/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_value.py b/plotly/validators/choropleth/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/tickformatstop/_value.py rename to plotly/validators/choropleth/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/__init__.py b/plotly/validators/choropleth/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/__init__.py rename to plotly/validators/choropleth/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/_font.py b/plotly/validators/choropleth/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/_font.py rename to plotly/validators/choropleth/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/_side.py b/plotly/validators/choropleth/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/_side.py rename to plotly/validators/choropleth/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/_text.py b/plotly/validators/choropleth/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/_text.py rename to plotly/validators/choropleth/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/__init__.py b/plotly/validators/choropleth/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/__init__.py rename to plotly/validators/choropleth/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_color.py b/plotly/validators/choropleth/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_color.py rename to plotly/validators/choropleth/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_family.py b/plotly/validators/choropleth/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_family.py rename to plotly/validators/choropleth/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_lineposition.py b/plotly/validators/choropleth/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_lineposition.py rename to plotly/validators/choropleth/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_shadow.py b/plotly/validators/choropleth/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_shadow.py rename to plotly/validators/choropleth/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_size.py b/plotly/validators/choropleth/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_size.py rename to plotly/validators/choropleth/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_style.py b/plotly/validators/choropleth/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_style.py rename to plotly/validators/choropleth/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_textcase.py b/plotly/validators/choropleth/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_textcase.py rename to plotly/validators/choropleth/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_variant.py b/plotly/validators/choropleth/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_variant.py rename to plotly/validators/choropleth/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_weight.py b/plotly/validators/choropleth/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/colorbar/title/font/_weight.py rename to plotly/validators/choropleth/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/__init__.py b/plotly/validators/choropleth/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/__init__.py rename to plotly/validators/choropleth/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_align.py b/plotly/validators/choropleth/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_align.py rename to plotly/validators/choropleth/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_alignsrc.py b/plotly/validators/choropleth/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_alignsrc.py rename to plotly/validators/choropleth/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_bgcolor.py b/plotly/validators/choropleth/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_bgcolor.py rename to plotly/validators/choropleth/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_bgcolorsrc.py b/plotly/validators/choropleth/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_bgcolorsrc.py rename to plotly/validators/choropleth/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_bordercolor.py b/plotly/validators/choropleth/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_bordercolor.py rename to plotly/validators/choropleth/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_bordercolorsrc.py b/plotly/validators/choropleth/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_bordercolorsrc.py rename to plotly/validators/choropleth/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_font.py b/plotly/validators/choropleth/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_font.py rename to plotly/validators/choropleth/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_namelength.py b/plotly/validators/choropleth/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_namelength.py rename to plotly/validators/choropleth/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/_namelengthsrc.py b/plotly/validators/choropleth/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/_namelengthsrc.py rename to plotly/validators/choropleth/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/__init__.py b/plotly/validators/choropleth/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/__init__.py rename to plotly/validators/choropleth/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_color.py b/plotly/validators/choropleth/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_color.py rename to plotly/validators/choropleth/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_colorsrc.py b/plotly/validators/choropleth/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_colorsrc.py rename to plotly/validators/choropleth/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_family.py b/plotly/validators/choropleth/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_family.py rename to plotly/validators/choropleth/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_familysrc.py b/plotly/validators/choropleth/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_familysrc.py rename to plotly/validators/choropleth/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_lineposition.py b/plotly/validators/choropleth/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_lineposition.py rename to plotly/validators/choropleth/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_linepositionsrc.py b/plotly/validators/choropleth/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/choropleth/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_shadow.py b/plotly/validators/choropleth/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_shadow.py rename to plotly/validators/choropleth/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_shadowsrc.py b/plotly/validators/choropleth/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_shadowsrc.py rename to plotly/validators/choropleth/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_size.py b/plotly/validators/choropleth/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_size.py rename to plotly/validators/choropleth/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_sizesrc.py b/plotly/validators/choropleth/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_sizesrc.py rename to plotly/validators/choropleth/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_style.py b/plotly/validators/choropleth/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_style.py rename to plotly/validators/choropleth/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_stylesrc.py b/plotly/validators/choropleth/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_stylesrc.py rename to plotly/validators/choropleth/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_textcase.py b/plotly/validators/choropleth/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_textcase.py rename to plotly/validators/choropleth/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_textcasesrc.py b/plotly/validators/choropleth/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_textcasesrc.py rename to plotly/validators/choropleth/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_variant.py b/plotly/validators/choropleth/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_variant.py rename to plotly/validators/choropleth/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_variantsrc.py b/plotly/validators/choropleth/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_variantsrc.py rename to plotly/validators/choropleth/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_weight.py b/plotly/validators/choropleth/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_weight.py rename to plotly/validators/choropleth/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_weightsrc.py b/plotly/validators/choropleth/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/hoverlabel/font/_weightsrc.py rename to plotly/validators/choropleth/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/__init__.py b/plotly/validators/choropleth/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/__init__.py rename to plotly/validators/choropleth/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/_font.py b/plotly/validators/choropleth/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/_font.py rename to plotly/validators/choropleth/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/_text.py b/plotly/validators/choropleth/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/_text.py rename to plotly/validators/choropleth/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/__init__.py b/plotly/validators/choropleth/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/__init__.py rename to plotly/validators/choropleth/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_color.py b/plotly/validators/choropleth/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_color.py rename to plotly/validators/choropleth/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_family.py b/plotly/validators/choropleth/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_family.py rename to plotly/validators/choropleth/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_lineposition.py b/plotly/validators/choropleth/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_lineposition.py rename to plotly/validators/choropleth/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_shadow.py b/plotly/validators/choropleth/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_shadow.py rename to plotly/validators/choropleth/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_size.py b/plotly/validators/choropleth/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_size.py rename to plotly/validators/choropleth/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_style.py b/plotly/validators/choropleth/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_style.py rename to plotly/validators/choropleth/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_textcase.py b/plotly/validators/choropleth/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_textcase.py rename to plotly/validators/choropleth/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_variant.py b/plotly/validators/choropleth/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_variant.py rename to plotly/validators/choropleth/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_weight.py b/plotly/validators/choropleth/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/legendgrouptitle/font/_weight.py rename to plotly/validators/choropleth/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/__init__.py b/plotly/validators/choropleth/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/__init__.py rename to plotly/validators/choropleth/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/_line.py b/plotly/validators/choropleth/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/_line.py rename to plotly/validators/choropleth/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/_opacity.py b/plotly/validators/choropleth/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/_opacity.py rename to plotly/validators/choropleth/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/_opacitysrc.py b/plotly/validators/choropleth/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/_opacitysrc.py rename to plotly/validators/choropleth/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/line/__init__.py b/plotly/validators/choropleth/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/line/__init__.py rename to plotly/validators/choropleth/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/line/_color.py b/plotly/validators/choropleth/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/line/_color.py rename to plotly/validators/choropleth/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/line/_colorsrc.py b/plotly/validators/choropleth/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/line/_colorsrc.py rename to plotly/validators/choropleth/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/line/_width.py b/plotly/validators/choropleth/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/line/_width.py rename to plotly/validators/choropleth/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/choropleth/marker/line/_widthsrc.py b/plotly/validators/choropleth/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/marker/line/_widthsrc.py rename to plotly/validators/choropleth/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/choropleth/selected/__init__.py b/plotly/validators/choropleth/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/selected/__init__.py rename to plotly/validators/choropleth/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/selected/_marker.py b/plotly/validators/choropleth/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/selected/_marker.py rename to plotly/validators/choropleth/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/choropleth/selected/marker/__init__.py b/plotly/validators/choropleth/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/selected/marker/__init__.py rename to plotly/validators/choropleth/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/selected/marker/_opacity.py b/plotly/validators/choropleth/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/selected/marker/_opacity.py rename to plotly/validators/choropleth/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/choropleth/stream/__init__.py b/plotly/validators/choropleth/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/stream/__init__.py rename to plotly/validators/choropleth/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/stream/_maxpoints.py b/plotly/validators/choropleth/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/stream/_maxpoints.py rename to plotly/validators/choropleth/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/choropleth/stream/_token.py b/plotly/validators/choropleth/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/stream/_token.py rename to plotly/validators/choropleth/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/choropleth/unselected/__init__.py b/plotly/validators/choropleth/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/unselected/__init__.py rename to plotly/validators/choropleth/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/unselected/_marker.py b/plotly/validators/choropleth/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/unselected/_marker.py rename to plotly/validators/choropleth/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/choropleth/unselected/marker/__init__.py b/plotly/validators/choropleth/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/unselected/marker/__init__.py rename to plotly/validators/choropleth/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choropleth/unselected/marker/_opacity.py b/plotly/validators/choropleth/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choropleth/unselected/marker/_opacity.py rename to plotly/validators/choropleth/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/__init__.py b/plotly/validators/choroplethmap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/__init__.py rename to plotly/validators/choroplethmap/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_autocolorscale.py b/plotly/validators/choroplethmap/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_autocolorscale.py rename to plotly/validators/choroplethmap/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_below.py b/plotly/validators/choroplethmap/_below.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_below.py rename to plotly/validators/choroplethmap/_below.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_coloraxis.py b/plotly/validators/choroplethmap/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_coloraxis.py rename to plotly/validators/choroplethmap/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_colorbar.py b/plotly/validators/choroplethmap/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_colorbar.py rename to plotly/validators/choroplethmap/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_colorscale.py b/plotly/validators/choroplethmap/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_colorscale.py rename to plotly/validators/choroplethmap/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_customdata.py b/plotly/validators/choroplethmap/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_customdata.py rename to plotly/validators/choroplethmap/_customdata.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_customdatasrc.py b/plotly/validators/choroplethmap/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_customdatasrc.py rename to plotly/validators/choroplethmap/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_featureidkey.py b/plotly/validators/choroplethmap/_featureidkey.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_featureidkey.py rename to plotly/validators/choroplethmap/_featureidkey.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_geojson.py b/plotly/validators/choroplethmap/_geojson.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_geojson.py rename to plotly/validators/choroplethmap/_geojson.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_hoverinfo.py b/plotly/validators/choroplethmap/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_hoverinfo.py rename to plotly/validators/choroplethmap/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_hoverinfosrc.py b/plotly/validators/choroplethmap/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_hoverinfosrc.py rename to plotly/validators/choroplethmap/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_hoverlabel.py b/plotly/validators/choroplethmap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_hoverlabel.py rename to plotly/validators/choroplethmap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_hovertemplate.py b/plotly/validators/choroplethmap/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_hovertemplate.py rename to plotly/validators/choroplethmap/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_hovertemplatesrc.py b/plotly/validators/choroplethmap/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_hovertemplatesrc.py rename to plotly/validators/choroplethmap/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_hovertext.py b/plotly/validators/choroplethmap/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_hovertext.py rename to plotly/validators/choroplethmap/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_hovertextsrc.py b/plotly/validators/choroplethmap/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_hovertextsrc.py rename to plotly/validators/choroplethmap/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_ids.py b/plotly/validators/choroplethmap/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_ids.py rename to plotly/validators/choroplethmap/_ids.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_idssrc.py b/plotly/validators/choroplethmap/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_idssrc.py rename to plotly/validators/choroplethmap/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_legend.py b/plotly/validators/choroplethmap/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_legend.py rename to plotly/validators/choroplethmap/_legend.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_legendgroup.py b/plotly/validators/choroplethmap/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_legendgroup.py rename to plotly/validators/choroplethmap/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_legendgrouptitle.py b/plotly/validators/choroplethmap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_legendgrouptitle.py rename to plotly/validators/choroplethmap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_legendrank.py b/plotly/validators/choroplethmap/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_legendrank.py rename to plotly/validators/choroplethmap/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_legendwidth.py b/plotly/validators/choroplethmap/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_legendwidth.py rename to plotly/validators/choroplethmap/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_locations.py b/plotly/validators/choroplethmap/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_locations.py rename to plotly/validators/choroplethmap/_locations.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_locationssrc.py b/plotly/validators/choroplethmap/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_locationssrc.py rename to plotly/validators/choroplethmap/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_marker.py b/plotly/validators/choroplethmap/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_marker.py rename to plotly/validators/choroplethmap/_marker.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_meta.py b/plotly/validators/choroplethmap/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_meta.py rename to plotly/validators/choroplethmap/_meta.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_metasrc.py b/plotly/validators/choroplethmap/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_metasrc.py rename to plotly/validators/choroplethmap/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_name.py b/plotly/validators/choroplethmap/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_name.py rename to plotly/validators/choroplethmap/_name.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_reversescale.py b/plotly/validators/choroplethmap/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_reversescale.py rename to plotly/validators/choroplethmap/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_selected.py b/plotly/validators/choroplethmap/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_selected.py rename to plotly/validators/choroplethmap/_selected.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_selectedpoints.py b/plotly/validators/choroplethmap/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_selectedpoints.py rename to plotly/validators/choroplethmap/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_showlegend.py b/plotly/validators/choroplethmap/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_showlegend.py rename to plotly/validators/choroplethmap/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_showscale.py b/plotly/validators/choroplethmap/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_showscale.py rename to plotly/validators/choroplethmap/_showscale.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_stream.py b/plotly/validators/choroplethmap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_stream.py rename to plotly/validators/choroplethmap/_stream.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_subplot.py b/plotly/validators/choroplethmap/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_subplot.py rename to plotly/validators/choroplethmap/_subplot.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_text.py b/plotly/validators/choroplethmap/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_text.py rename to plotly/validators/choroplethmap/_text.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_textsrc.py b/plotly/validators/choroplethmap/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_textsrc.py rename to plotly/validators/choroplethmap/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_uid.py b/plotly/validators/choroplethmap/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_uid.py rename to plotly/validators/choroplethmap/_uid.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_uirevision.py b/plotly/validators/choroplethmap/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_uirevision.py rename to plotly/validators/choroplethmap/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_unselected.py b/plotly/validators/choroplethmap/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_unselected.py rename to plotly/validators/choroplethmap/_unselected.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_visible.py b/plotly/validators/choroplethmap/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_visible.py rename to plotly/validators/choroplethmap/_visible.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_z.py b/plotly/validators/choroplethmap/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_z.py rename to plotly/validators/choroplethmap/_z.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_zauto.py b/plotly/validators/choroplethmap/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_zauto.py rename to plotly/validators/choroplethmap/_zauto.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_zmax.py b/plotly/validators/choroplethmap/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_zmax.py rename to plotly/validators/choroplethmap/_zmax.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_zmid.py b/plotly/validators/choroplethmap/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_zmid.py rename to plotly/validators/choroplethmap/_zmid.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_zmin.py b/plotly/validators/choroplethmap/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_zmin.py rename to plotly/validators/choroplethmap/_zmin.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/_zsrc.py b/plotly/validators/choroplethmap/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/_zsrc.py rename to plotly/validators/choroplethmap/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/__init__.py b/plotly/validators/choroplethmap/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/__init__.py rename to plotly/validators/choroplethmap/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_bgcolor.py b/plotly/validators/choroplethmap/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_bgcolor.py rename to plotly/validators/choroplethmap/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_bordercolor.py b/plotly/validators/choroplethmap/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_bordercolor.py rename to plotly/validators/choroplethmap/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_borderwidth.py b/plotly/validators/choroplethmap/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_borderwidth.py rename to plotly/validators/choroplethmap/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_dtick.py b/plotly/validators/choroplethmap/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_dtick.py rename to plotly/validators/choroplethmap/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_exponentformat.py b/plotly/validators/choroplethmap/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_exponentformat.py rename to plotly/validators/choroplethmap/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_labelalias.py b/plotly/validators/choroplethmap/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_labelalias.py rename to plotly/validators/choroplethmap/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_len.py b/plotly/validators/choroplethmap/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_len.py rename to plotly/validators/choroplethmap/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_lenmode.py b/plotly/validators/choroplethmap/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_lenmode.py rename to plotly/validators/choroplethmap/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_minexponent.py b/plotly/validators/choroplethmap/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_minexponent.py rename to plotly/validators/choroplethmap/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_nticks.py b/plotly/validators/choroplethmap/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_nticks.py rename to plotly/validators/choroplethmap/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_orientation.py b/plotly/validators/choroplethmap/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_orientation.py rename to plotly/validators/choroplethmap/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_outlinecolor.py b/plotly/validators/choroplethmap/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_outlinecolor.py rename to plotly/validators/choroplethmap/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_outlinewidth.py b/plotly/validators/choroplethmap/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_outlinewidth.py rename to plotly/validators/choroplethmap/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_separatethousands.py b/plotly/validators/choroplethmap/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_separatethousands.py rename to plotly/validators/choroplethmap/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_showexponent.py b/plotly/validators/choroplethmap/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_showexponent.py rename to plotly/validators/choroplethmap/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_showticklabels.py b/plotly/validators/choroplethmap/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_showticklabels.py rename to plotly/validators/choroplethmap/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_showtickprefix.py b/plotly/validators/choroplethmap/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_showtickprefix.py rename to plotly/validators/choroplethmap/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_showticksuffix.py b/plotly/validators/choroplethmap/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_showticksuffix.py rename to plotly/validators/choroplethmap/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_thickness.py b/plotly/validators/choroplethmap/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_thickness.py rename to plotly/validators/choroplethmap/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_thicknessmode.py b/plotly/validators/choroplethmap/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_thicknessmode.py rename to plotly/validators/choroplethmap/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tick0.py b/plotly/validators/choroplethmap/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tick0.py rename to plotly/validators/choroplethmap/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickangle.py b/plotly/validators/choroplethmap/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickangle.py rename to plotly/validators/choroplethmap/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickcolor.py b/plotly/validators/choroplethmap/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickcolor.py rename to plotly/validators/choroplethmap/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickfont.py b/plotly/validators/choroplethmap/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickfont.py rename to plotly/validators/choroplethmap/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickformat.py b/plotly/validators/choroplethmap/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickformat.py rename to plotly/validators/choroplethmap/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickformatstopdefaults.py b/plotly/validators/choroplethmap/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickformatstopdefaults.py rename to plotly/validators/choroplethmap/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickformatstops.py b/plotly/validators/choroplethmap/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickformatstops.py rename to plotly/validators/choroplethmap/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticklabeloverflow.py b/plotly/validators/choroplethmap/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticklabeloverflow.py rename to plotly/validators/choroplethmap/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticklabelposition.py b/plotly/validators/choroplethmap/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticklabelposition.py rename to plotly/validators/choroplethmap/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticklabelstep.py b/plotly/validators/choroplethmap/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticklabelstep.py rename to plotly/validators/choroplethmap/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticklen.py b/plotly/validators/choroplethmap/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticklen.py rename to plotly/validators/choroplethmap/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickmode.py b/plotly/validators/choroplethmap/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickmode.py rename to plotly/validators/choroplethmap/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickprefix.py b/plotly/validators/choroplethmap/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickprefix.py rename to plotly/validators/choroplethmap/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticks.py b/plotly/validators/choroplethmap/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticks.py rename to plotly/validators/choroplethmap/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticksuffix.py b/plotly/validators/choroplethmap/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticksuffix.py rename to plotly/validators/choroplethmap/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticktext.py b/plotly/validators/choroplethmap/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticktext.py rename to plotly/validators/choroplethmap/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticktextsrc.py b/plotly/validators/choroplethmap/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ticktextsrc.py rename to plotly/validators/choroplethmap/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickvals.py b/plotly/validators/choroplethmap/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickvals.py rename to plotly/validators/choroplethmap/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickvalssrc.py b/plotly/validators/choroplethmap/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickvalssrc.py rename to plotly/validators/choroplethmap/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickwidth.py b/plotly/validators/choroplethmap/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_tickwidth.py rename to plotly/validators/choroplethmap/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_title.py b/plotly/validators/choroplethmap/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_title.py rename to plotly/validators/choroplethmap/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_x.py b/plotly/validators/choroplethmap/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_x.py rename to plotly/validators/choroplethmap/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_xanchor.py b/plotly/validators/choroplethmap/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_xanchor.py rename to plotly/validators/choroplethmap/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_xpad.py b/plotly/validators/choroplethmap/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_xpad.py rename to plotly/validators/choroplethmap/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_xref.py b/plotly/validators/choroplethmap/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_xref.py rename to plotly/validators/choroplethmap/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_y.py b/plotly/validators/choroplethmap/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_y.py rename to plotly/validators/choroplethmap/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_yanchor.py b/plotly/validators/choroplethmap/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_yanchor.py rename to plotly/validators/choroplethmap/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ypad.py b/plotly/validators/choroplethmap/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_ypad.py rename to plotly/validators/choroplethmap/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/_yref.py b/plotly/validators/choroplethmap/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/_yref.py rename to plotly/validators/choroplethmap/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/__init__.py b/plotly/validators/choroplethmap/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/__init__.py rename to plotly/validators/choroplethmap/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_color.py b/plotly/validators/choroplethmap/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_color.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_family.py b/plotly/validators/choroplethmap/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_family.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_lineposition.py b/plotly/validators/choroplethmap/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_lineposition.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_shadow.py b/plotly/validators/choroplethmap/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_shadow.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_size.py b/plotly/validators/choroplethmap/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_size.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_style.py b/plotly/validators/choroplethmap/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_style.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_textcase.py b/plotly/validators/choroplethmap/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_textcase.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_variant.py b/plotly/validators/choroplethmap/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_variant.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_weight.py b/plotly/validators/choroplethmap/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickfont/_weight.py rename to plotly/validators/choroplethmap/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/__init__.py b/plotly/validators/choroplethmap/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/__init__.py rename to plotly/validators/choroplethmap/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/choroplethmap/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/choroplethmap/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_enabled.py b/plotly/validators/choroplethmap/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_enabled.py rename to plotly/validators/choroplethmap/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_name.py b/plotly/validators/choroplethmap/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_name.py rename to plotly/validators/choroplethmap/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/choroplethmap/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/choroplethmap/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_value.py b/plotly/validators/choroplethmap/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/tickformatstop/_value.py rename to plotly/validators/choroplethmap/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/__init__.py b/plotly/validators/choroplethmap/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/__init__.py rename to plotly/validators/choroplethmap/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/_font.py b/plotly/validators/choroplethmap/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/_font.py rename to plotly/validators/choroplethmap/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/_side.py b/plotly/validators/choroplethmap/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/_side.py rename to plotly/validators/choroplethmap/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/_text.py b/plotly/validators/choroplethmap/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/_text.py rename to plotly/validators/choroplethmap/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/__init__.py b/plotly/validators/choroplethmap/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/__init__.py rename to plotly/validators/choroplethmap/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_color.py b/plotly/validators/choroplethmap/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_color.py rename to plotly/validators/choroplethmap/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_family.py b/plotly/validators/choroplethmap/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_family.py rename to plotly/validators/choroplethmap/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_lineposition.py b/plotly/validators/choroplethmap/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_lineposition.py rename to plotly/validators/choroplethmap/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_shadow.py b/plotly/validators/choroplethmap/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_shadow.py rename to plotly/validators/choroplethmap/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_size.py b/plotly/validators/choroplethmap/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_size.py rename to plotly/validators/choroplethmap/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_style.py b/plotly/validators/choroplethmap/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_style.py rename to plotly/validators/choroplethmap/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_textcase.py b/plotly/validators/choroplethmap/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_textcase.py rename to plotly/validators/choroplethmap/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_variant.py b/plotly/validators/choroplethmap/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_variant.py rename to plotly/validators/choroplethmap/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_weight.py b/plotly/validators/choroplethmap/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/colorbar/title/font/_weight.py rename to plotly/validators/choroplethmap/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/__init__.py b/plotly/validators/choroplethmap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/__init__.py rename to plotly/validators/choroplethmap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_align.py b/plotly/validators/choroplethmap/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_align.py rename to plotly/validators/choroplethmap/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_alignsrc.py b/plotly/validators/choroplethmap/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_alignsrc.py rename to plotly/validators/choroplethmap/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_bgcolor.py b/plotly/validators/choroplethmap/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_bgcolor.py rename to plotly/validators/choroplethmap/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_bgcolorsrc.py b/plotly/validators/choroplethmap/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_bgcolorsrc.py rename to plotly/validators/choroplethmap/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_bordercolor.py b/plotly/validators/choroplethmap/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_bordercolor.py rename to plotly/validators/choroplethmap/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_bordercolorsrc.py b/plotly/validators/choroplethmap/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_bordercolorsrc.py rename to plotly/validators/choroplethmap/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_font.py b/plotly/validators/choroplethmap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_font.py rename to plotly/validators/choroplethmap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_namelength.py b/plotly/validators/choroplethmap/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_namelength.py rename to plotly/validators/choroplethmap/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_namelengthsrc.py b/plotly/validators/choroplethmap/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/_namelengthsrc.py rename to plotly/validators/choroplethmap/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/__init__.py b/plotly/validators/choroplethmap/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/__init__.py rename to plotly/validators/choroplethmap/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_color.py b/plotly/validators/choroplethmap/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_color.py rename to plotly/validators/choroplethmap/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_colorsrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_colorsrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_family.py b/plotly/validators/choroplethmap/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_family.py rename to plotly/validators/choroplethmap/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_familysrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_familysrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_lineposition.py b/plotly/validators/choroplethmap/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_lineposition.py rename to plotly/validators/choroplethmap/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_linepositionsrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_shadow.py b/plotly/validators/choroplethmap/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_shadow.py rename to plotly/validators/choroplethmap/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_shadowsrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_shadowsrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_size.py b/plotly/validators/choroplethmap/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_size.py rename to plotly/validators/choroplethmap/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_sizesrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_sizesrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_style.py b/plotly/validators/choroplethmap/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_style.py rename to plotly/validators/choroplethmap/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_stylesrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_stylesrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_textcase.py b/plotly/validators/choroplethmap/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_textcase.py rename to plotly/validators/choroplethmap/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_textcasesrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_textcasesrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_variant.py b/plotly/validators/choroplethmap/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_variant.py rename to plotly/validators/choroplethmap/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_variantsrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_variantsrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_weight.py b/plotly/validators/choroplethmap/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_weight.py rename to plotly/validators/choroplethmap/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_weightsrc.py b/plotly/validators/choroplethmap/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/hoverlabel/font/_weightsrc.py rename to plotly/validators/choroplethmap/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/__init__.py b/plotly/validators/choroplethmap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/__init__.py rename to plotly/validators/choroplethmap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/_font.py b/plotly/validators/choroplethmap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/_font.py rename to plotly/validators/choroplethmap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/_text.py b/plotly/validators/choroplethmap/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/_text.py rename to plotly/validators/choroplethmap/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/__init__.py b/plotly/validators/choroplethmap/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/__init__.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_color.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_color.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_family.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_family.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_lineposition.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_lineposition.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_shadow.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_shadow.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_size.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_size.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_style.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_style.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_textcase.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_textcase.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_variant.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_variant.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_weight.py b/plotly/validators/choroplethmap/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/legendgrouptitle/font/_weight.py rename to plotly/validators/choroplethmap/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/__init__.py b/plotly/validators/choroplethmap/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/__init__.py rename to plotly/validators/choroplethmap/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/_line.py b/plotly/validators/choroplethmap/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/_line.py rename to plotly/validators/choroplethmap/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/_opacity.py b/plotly/validators/choroplethmap/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/_opacity.py rename to plotly/validators/choroplethmap/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/_opacitysrc.py b/plotly/validators/choroplethmap/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/_opacitysrc.py rename to plotly/validators/choroplethmap/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/line/__init__.py b/plotly/validators/choroplethmap/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/line/__init__.py rename to plotly/validators/choroplethmap/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/line/_color.py b/plotly/validators/choroplethmap/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/line/_color.py rename to plotly/validators/choroplethmap/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/line/_colorsrc.py b/plotly/validators/choroplethmap/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/line/_colorsrc.py rename to plotly/validators/choroplethmap/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/line/_width.py b/plotly/validators/choroplethmap/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/line/_width.py rename to plotly/validators/choroplethmap/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/marker/line/_widthsrc.py b/plotly/validators/choroplethmap/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/marker/line/_widthsrc.py rename to plotly/validators/choroplethmap/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/selected/__init__.py b/plotly/validators/choroplethmap/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/selected/__init__.py rename to plotly/validators/choroplethmap/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/selected/_marker.py b/plotly/validators/choroplethmap/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/selected/_marker.py rename to plotly/validators/choroplethmap/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/selected/marker/__init__.py b/plotly/validators/choroplethmap/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/selected/marker/__init__.py rename to plotly/validators/choroplethmap/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/selected/marker/_opacity.py b/plotly/validators/choroplethmap/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/selected/marker/_opacity.py rename to plotly/validators/choroplethmap/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/stream/__init__.py b/plotly/validators/choroplethmap/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/stream/__init__.py rename to plotly/validators/choroplethmap/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/stream/_maxpoints.py b/plotly/validators/choroplethmap/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/stream/_maxpoints.py rename to plotly/validators/choroplethmap/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/stream/_token.py b/plotly/validators/choroplethmap/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/stream/_token.py rename to plotly/validators/choroplethmap/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/unselected/__init__.py b/plotly/validators/choroplethmap/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/unselected/__init__.py rename to plotly/validators/choroplethmap/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/unselected/_marker.py b/plotly/validators/choroplethmap/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/unselected/_marker.py rename to plotly/validators/choroplethmap/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/unselected/marker/__init__.py b/plotly/validators/choroplethmap/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/unselected/marker/__init__.py rename to plotly/validators/choroplethmap/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmap/unselected/marker/_opacity.py b/plotly/validators/choroplethmap/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmap/unselected/marker/_opacity.py rename to plotly/validators/choroplethmap/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/__init__.py b/plotly/validators/choroplethmapbox/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/__init__.py rename to plotly/validators/choroplethmapbox/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_autocolorscale.py b/plotly/validators/choroplethmapbox/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_autocolorscale.py rename to plotly/validators/choroplethmapbox/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_below.py b/plotly/validators/choroplethmapbox/_below.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_below.py rename to plotly/validators/choroplethmapbox/_below.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_coloraxis.py b/plotly/validators/choroplethmapbox/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_coloraxis.py rename to plotly/validators/choroplethmapbox/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_colorbar.py b/plotly/validators/choroplethmapbox/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_colorbar.py rename to plotly/validators/choroplethmapbox/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_colorscale.py b/plotly/validators/choroplethmapbox/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_colorscale.py rename to plotly/validators/choroplethmapbox/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_customdata.py b/plotly/validators/choroplethmapbox/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_customdata.py rename to plotly/validators/choroplethmapbox/_customdata.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_customdatasrc.py b/plotly/validators/choroplethmapbox/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_customdatasrc.py rename to plotly/validators/choroplethmapbox/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_featureidkey.py b/plotly/validators/choroplethmapbox/_featureidkey.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_featureidkey.py rename to plotly/validators/choroplethmapbox/_featureidkey.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_geojson.py b/plotly/validators/choroplethmapbox/_geojson.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_geojson.py rename to plotly/validators/choroplethmapbox/_geojson.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_hoverinfo.py b/plotly/validators/choroplethmapbox/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_hoverinfo.py rename to plotly/validators/choroplethmapbox/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_hoverinfosrc.py b/plotly/validators/choroplethmapbox/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_hoverinfosrc.py rename to plotly/validators/choroplethmapbox/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_hoverlabel.py b/plotly/validators/choroplethmapbox/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_hoverlabel.py rename to plotly/validators/choroplethmapbox/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_hovertemplate.py b/plotly/validators/choroplethmapbox/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_hovertemplate.py rename to plotly/validators/choroplethmapbox/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_hovertemplatesrc.py b/plotly/validators/choroplethmapbox/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_hovertemplatesrc.py rename to plotly/validators/choroplethmapbox/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_hovertext.py b/plotly/validators/choroplethmapbox/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_hovertext.py rename to plotly/validators/choroplethmapbox/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_hovertextsrc.py b/plotly/validators/choroplethmapbox/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_hovertextsrc.py rename to plotly/validators/choroplethmapbox/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_ids.py b/plotly/validators/choroplethmapbox/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_ids.py rename to plotly/validators/choroplethmapbox/_ids.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_idssrc.py b/plotly/validators/choroplethmapbox/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_idssrc.py rename to plotly/validators/choroplethmapbox/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_legend.py b/plotly/validators/choroplethmapbox/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_legend.py rename to plotly/validators/choroplethmapbox/_legend.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_legendgroup.py b/plotly/validators/choroplethmapbox/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_legendgroup.py rename to plotly/validators/choroplethmapbox/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_legendgrouptitle.py b/plotly/validators/choroplethmapbox/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_legendgrouptitle.py rename to plotly/validators/choroplethmapbox/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_legendrank.py b/plotly/validators/choroplethmapbox/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_legendrank.py rename to plotly/validators/choroplethmapbox/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_legendwidth.py b/plotly/validators/choroplethmapbox/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_legendwidth.py rename to plotly/validators/choroplethmapbox/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_locations.py b/plotly/validators/choroplethmapbox/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_locations.py rename to plotly/validators/choroplethmapbox/_locations.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_locationssrc.py b/plotly/validators/choroplethmapbox/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_locationssrc.py rename to plotly/validators/choroplethmapbox/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_marker.py b/plotly/validators/choroplethmapbox/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_marker.py rename to plotly/validators/choroplethmapbox/_marker.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_meta.py b/plotly/validators/choroplethmapbox/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_meta.py rename to plotly/validators/choroplethmapbox/_meta.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_metasrc.py b/plotly/validators/choroplethmapbox/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_metasrc.py rename to plotly/validators/choroplethmapbox/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_name.py b/plotly/validators/choroplethmapbox/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_name.py rename to plotly/validators/choroplethmapbox/_name.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_reversescale.py b/plotly/validators/choroplethmapbox/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_reversescale.py rename to plotly/validators/choroplethmapbox/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_selected.py b/plotly/validators/choroplethmapbox/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_selected.py rename to plotly/validators/choroplethmapbox/_selected.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_selectedpoints.py b/plotly/validators/choroplethmapbox/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_selectedpoints.py rename to plotly/validators/choroplethmapbox/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_showlegend.py b/plotly/validators/choroplethmapbox/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_showlegend.py rename to plotly/validators/choroplethmapbox/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_showscale.py b/plotly/validators/choroplethmapbox/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_showscale.py rename to plotly/validators/choroplethmapbox/_showscale.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_stream.py b/plotly/validators/choroplethmapbox/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_stream.py rename to plotly/validators/choroplethmapbox/_stream.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_subplot.py b/plotly/validators/choroplethmapbox/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_subplot.py rename to plotly/validators/choroplethmapbox/_subplot.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_text.py b/plotly/validators/choroplethmapbox/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_text.py rename to plotly/validators/choroplethmapbox/_text.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_textsrc.py b/plotly/validators/choroplethmapbox/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_textsrc.py rename to plotly/validators/choroplethmapbox/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_uid.py b/plotly/validators/choroplethmapbox/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_uid.py rename to plotly/validators/choroplethmapbox/_uid.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_uirevision.py b/plotly/validators/choroplethmapbox/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_uirevision.py rename to plotly/validators/choroplethmapbox/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_unselected.py b/plotly/validators/choroplethmapbox/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_unselected.py rename to plotly/validators/choroplethmapbox/_unselected.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_visible.py b/plotly/validators/choroplethmapbox/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_visible.py rename to plotly/validators/choroplethmapbox/_visible.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_z.py b/plotly/validators/choroplethmapbox/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_z.py rename to plotly/validators/choroplethmapbox/_z.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_zauto.py b/plotly/validators/choroplethmapbox/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_zauto.py rename to plotly/validators/choroplethmapbox/_zauto.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_zmax.py b/plotly/validators/choroplethmapbox/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_zmax.py rename to plotly/validators/choroplethmapbox/_zmax.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_zmid.py b/plotly/validators/choroplethmapbox/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_zmid.py rename to plotly/validators/choroplethmapbox/_zmid.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_zmin.py b/plotly/validators/choroplethmapbox/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_zmin.py rename to plotly/validators/choroplethmapbox/_zmin.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/_zsrc.py b/plotly/validators/choroplethmapbox/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/_zsrc.py rename to plotly/validators/choroplethmapbox/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/__init__.py b/plotly/validators/choroplethmapbox/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/__init__.py rename to plotly/validators/choroplethmapbox/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_bgcolor.py b/plotly/validators/choroplethmapbox/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_bgcolor.py rename to plotly/validators/choroplethmapbox/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_bordercolor.py b/plotly/validators/choroplethmapbox/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_bordercolor.py rename to plotly/validators/choroplethmapbox/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_borderwidth.py b/plotly/validators/choroplethmapbox/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_borderwidth.py rename to plotly/validators/choroplethmapbox/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_dtick.py b/plotly/validators/choroplethmapbox/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_dtick.py rename to plotly/validators/choroplethmapbox/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_exponentformat.py b/plotly/validators/choroplethmapbox/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_exponentformat.py rename to plotly/validators/choroplethmapbox/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_labelalias.py b/plotly/validators/choroplethmapbox/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_labelalias.py rename to plotly/validators/choroplethmapbox/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_len.py b/plotly/validators/choroplethmapbox/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_len.py rename to plotly/validators/choroplethmapbox/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_lenmode.py b/plotly/validators/choroplethmapbox/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_lenmode.py rename to plotly/validators/choroplethmapbox/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_minexponent.py b/plotly/validators/choroplethmapbox/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_minexponent.py rename to plotly/validators/choroplethmapbox/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_nticks.py b/plotly/validators/choroplethmapbox/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_nticks.py rename to plotly/validators/choroplethmapbox/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_orientation.py b/plotly/validators/choroplethmapbox/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_orientation.py rename to plotly/validators/choroplethmapbox/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_outlinecolor.py b/plotly/validators/choroplethmapbox/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_outlinecolor.py rename to plotly/validators/choroplethmapbox/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_outlinewidth.py b/plotly/validators/choroplethmapbox/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_outlinewidth.py rename to plotly/validators/choroplethmapbox/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_separatethousands.py b/plotly/validators/choroplethmapbox/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_separatethousands.py rename to plotly/validators/choroplethmapbox/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_showexponent.py b/plotly/validators/choroplethmapbox/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_showexponent.py rename to plotly/validators/choroplethmapbox/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_showticklabels.py b/plotly/validators/choroplethmapbox/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_showticklabels.py rename to plotly/validators/choroplethmapbox/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_showtickprefix.py b/plotly/validators/choroplethmapbox/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_showtickprefix.py rename to plotly/validators/choroplethmapbox/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_showticksuffix.py b/plotly/validators/choroplethmapbox/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_showticksuffix.py rename to plotly/validators/choroplethmapbox/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_thickness.py b/plotly/validators/choroplethmapbox/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_thickness.py rename to plotly/validators/choroplethmapbox/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_thicknessmode.py b/plotly/validators/choroplethmapbox/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_thicknessmode.py rename to plotly/validators/choroplethmapbox/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tick0.py b/plotly/validators/choroplethmapbox/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tick0.py rename to plotly/validators/choroplethmapbox/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickangle.py b/plotly/validators/choroplethmapbox/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickangle.py rename to plotly/validators/choroplethmapbox/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickcolor.py b/plotly/validators/choroplethmapbox/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickcolor.py rename to plotly/validators/choroplethmapbox/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickfont.py b/plotly/validators/choroplethmapbox/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickfont.py rename to plotly/validators/choroplethmapbox/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickformat.py b/plotly/validators/choroplethmapbox/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickformat.py rename to plotly/validators/choroplethmapbox/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickformatstopdefaults.py b/plotly/validators/choroplethmapbox/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickformatstopdefaults.py rename to plotly/validators/choroplethmapbox/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickformatstops.py b/plotly/validators/choroplethmapbox/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickformatstops.py rename to plotly/validators/choroplethmapbox/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticklabeloverflow.py b/plotly/validators/choroplethmapbox/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticklabeloverflow.py rename to plotly/validators/choroplethmapbox/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticklabelposition.py b/plotly/validators/choroplethmapbox/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticklabelposition.py rename to plotly/validators/choroplethmapbox/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticklabelstep.py b/plotly/validators/choroplethmapbox/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticklabelstep.py rename to plotly/validators/choroplethmapbox/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticklen.py b/plotly/validators/choroplethmapbox/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticklen.py rename to plotly/validators/choroplethmapbox/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickmode.py b/plotly/validators/choroplethmapbox/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickmode.py rename to plotly/validators/choroplethmapbox/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickprefix.py b/plotly/validators/choroplethmapbox/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickprefix.py rename to plotly/validators/choroplethmapbox/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticks.py b/plotly/validators/choroplethmapbox/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticks.py rename to plotly/validators/choroplethmapbox/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticksuffix.py b/plotly/validators/choroplethmapbox/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticksuffix.py rename to plotly/validators/choroplethmapbox/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticktext.py b/plotly/validators/choroplethmapbox/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticktext.py rename to plotly/validators/choroplethmapbox/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticktextsrc.py b/plotly/validators/choroplethmapbox/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ticktextsrc.py rename to plotly/validators/choroplethmapbox/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickvals.py b/plotly/validators/choroplethmapbox/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickvals.py rename to plotly/validators/choroplethmapbox/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickvalssrc.py b/plotly/validators/choroplethmapbox/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickvalssrc.py rename to plotly/validators/choroplethmapbox/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickwidth.py b/plotly/validators/choroplethmapbox/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_tickwidth.py rename to plotly/validators/choroplethmapbox/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_title.py b/plotly/validators/choroplethmapbox/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_title.py rename to plotly/validators/choroplethmapbox/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_x.py b/plotly/validators/choroplethmapbox/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_x.py rename to plotly/validators/choroplethmapbox/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_xanchor.py b/plotly/validators/choroplethmapbox/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_xanchor.py rename to plotly/validators/choroplethmapbox/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_xpad.py b/plotly/validators/choroplethmapbox/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_xpad.py rename to plotly/validators/choroplethmapbox/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_xref.py b/plotly/validators/choroplethmapbox/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_xref.py rename to plotly/validators/choroplethmapbox/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_y.py b/plotly/validators/choroplethmapbox/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_y.py rename to plotly/validators/choroplethmapbox/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_yanchor.py b/plotly/validators/choroplethmapbox/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_yanchor.py rename to plotly/validators/choroplethmapbox/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ypad.py b/plotly/validators/choroplethmapbox/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_ypad.py rename to plotly/validators/choroplethmapbox/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_yref.py b/plotly/validators/choroplethmapbox/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/_yref.py rename to plotly/validators/choroplethmapbox/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/__init__.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/__init__.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_color.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_color.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_family.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_family.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_lineposition.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_lineposition.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_shadow.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_shadow.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_size.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_size.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_style.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_style.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_textcase.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_textcase.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_variant.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_variant.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_weight.py b/plotly/validators/choroplethmapbox/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickfont/_weight.py rename to plotly/validators/choroplethmapbox/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/__init__.py b/plotly/validators/choroplethmapbox/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/__init__.py rename to plotly/validators/choroplethmapbox/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/choroplethmapbox/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_enabled.py b/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_enabled.py rename to plotly/validators/choroplethmapbox/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_name.py b/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_name.py rename to plotly/validators/choroplethmapbox/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/choroplethmapbox/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_value.py b/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/tickformatstop/_value.py rename to plotly/validators/choroplethmapbox/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/__init__.py b/plotly/validators/choroplethmapbox/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/__init__.py rename to plotly/validators/choroplethmapbox/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/_font.py b/plotly/validators/choroplethmapbox/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/_font.py rename to plotly/validators/choroplethmapbox/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/_side.py b/plotly/validators/choroplethmapbox/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/_side.py rename to plotly/validators/choroplethmapbox/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/_text.py b/plotly/validators/choroplethmapbox/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/_text.py rename to plotly/validators/choroplethmapbox/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/__init__.py b/plotly/validators/choroplethmapbox/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/__init__.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_color.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_color.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_family.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_family.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_lineposition.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_lineposition.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_shadow.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_shadow.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_size.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_size.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_style.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_style.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_textcase.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_textcase.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_variant.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_variant.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_weight.py b/plotly/validators/choroplethmapbox/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/colorbar/title/font/_weight.py rename to plotly/validators/choroplethmapbox/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/__init__.py b/plotly/validators/choroplethmapbox/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/__init__.py rename to plotly/validators/choroplethmapbox/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_align.py b/plotly/validators/choroplethmapbox/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_align.py rename to plotly/validators/choroplethmapbox/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_alignsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_alignsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_bgcolor.py b/plotly/validators/choroplethmapbox/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_bgcolor.py rename to plotly/validators/choroplethmapbox/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_bgcolorsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_bgcolorsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_bordercolor.py b/plotly/validators/choroplethmapbox/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_bordercolor.py rename to plotly/validators/choroplethmapbox/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_bordercolorsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_bordercolorsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_font.py b/plotly/validators/choroplethmapbox/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_font.py rename to plotly/validators/choroplethmapbox/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_namelength.py b/plotly/validators/choroplethmapbox/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_namelength.py rename to plotly/validators/choroplethmapbox/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_namelengthsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/_namelengthsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/__init__.py b/plotly/validators/choroplethmapbox/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/__init__.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_color.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_color.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_colorsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_colorsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_family.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_family.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_familysrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_familysrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_lineposition.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_lineposition.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_linepositionsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_shadow.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_shadow.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_shadowsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_shadowsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_size.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_size.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_sizesrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_sizesrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_style.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_style.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_stylesrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_stylesrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_textcase.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_textcase.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_textcasesrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_textcasesrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_variant.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_variant.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_variantsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_variantsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_weight.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_weight.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_weightsrc.py b/plotly/validators/choroplethmapbox/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/hoverlabel/font/_weightsrc.py rename to plotly/validators/choroplethmapbox/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/__init__.py b/plotly/validators/choroplethmapbox/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/__init__.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/_font.py b/plotly/validators/choroplethmapbox/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/_font.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/_text.py b/plotly/validators/choroplethmapbox/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/_text.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/__init__.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/__init__.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_color.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_color.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_family.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_family.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_lineposition.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_lineposition.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_shadow.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_shadow.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_size.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_size.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_style.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_style.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_textcase.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_textcase.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_variant.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_variant.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_weight.py b/plotly/validators/choroplethmapbox/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/legendgrouptitle/font/_weight.py rename to plotly/validators/choroplethmapbox/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/__init__.py b/plotly/validators/choroplethmapbox/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/__init__.py rename to plotly/validators/choroplethmapbox/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/_line.py b/plotly/validators/choroplethmapbox/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/_line.py rename to plotly/validators/choroplethmapbox/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/_opacity.py b/plotly/validators/choroplethmapbox/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/_opacity.py rename to plotly/validators/choroplethmapbox/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/_opacitysrc.py b/plotly/validators/choroplethmapbox/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/_opacitysrc.py rename to plotly/validators/choroplethmapbox/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/__init__.py b/plotly/validators/choroplethmapbox/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/__init__.py rename to plotly/validators/choroplethmapbox/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/_color.py b/plotly/validators/choroplethmapbox/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/_color.py rename to plotly/validators/choroplethmapbox/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/_colorsrc.py b/plotly/validators/choroplethmapbox/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/_colorsrc.py rename to plotly/validators/choroplethmapbox/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/_width.py b/plotly/validators/choroplethmapbox/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/_width.py rename to plotly/validators/choroplethmapbox/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/_widthsrc.py b/plotly/validators/choroplethmapbox/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/marker/line/_widthsrc.py rename to plotly/validators/choroplethmapbox/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/selected/__init__.py b/plotly/validators/choroplethmapbox/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/selected/__init__.py rename to plotly/validators/choroplethmapbox/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/selected/_marker.py b/plotly/validators/choroplethmapbox/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/selected/_marker.py rename to plotly/validators/choroplethmapbox/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/selected/marker/__init__.py b/plotly/validators/choroplethmapbox/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/selected/marker/__init__.py rename to plotly/validators/choroplethmapbox/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/selected/marker/_opacity.py b/plotly/validators/choroplethmapbox/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/selected/marker/_opacity.py rename to plotly/validators/choroplethmapbox/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/stream/__init__.py b/plotly/validators/choroplethmapbox/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/stream/__init__.py rename to plotly/validators/choroplethmapbox/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/stream/_maxpoints.py b/plotly/validators/choroplethmapbox/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/stream/_maxpoints.py rename to plotly/validators/choroplethmapbox/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/stream/_token.py b/plotly/validators/choroplethmapbox/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/stream/_token.py rename to plotly/validators/choroplethmapbox/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/unselected/__init__.py b/plotly/validators/choroplethmapbox/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/unselected/__init__.py rename to plotly/validators/choroplethmapbox/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/unselected/_marker.py b/plotly/validators/choroplethmapbox/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/unselected/_marker.py rename to plotly/validators/choroplethmapbox/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/unselected/marker/__init__.py b/plotly/validators/choroplethmapbox/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/unselected/marker/__init__.py rename to plotly/validators/choroplethmapbox/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/choroplethmapbox/unselected/marker/_opacity.py b/plotly/validators/choroplethmapbox/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/choroplethmapbox/unselected/marker/_opacity.py rename to plotly/validators/choroplethmapbox/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/cone/__init__.py b/plotly/validators/cone/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/__init__.py rename to plotly/validators/cone/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/_anchor.py b/plotly/validators/cone/_anchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_anchor.py rename to plotly/validators/cone/_anchor.py diff --git a/packages/python/plotly/plotly/validators/cone/_autocolorscale.py b/plotly/validators/cone/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_autocolorscale.py rename to plotly/validators/cone/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/cone/_cauto.py b/plotly/validators/cone/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_cauto.py rename to plotly/validators/cone/_cauto.py diff --git a/packages/python/plotly/plotly/validators/cone/_cmax.py b/plotly/validators/cone/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_cmax.py rename to plotly/validators/cone/_cmax.py diff --git a/packages/python/plotly/plotly/validators/cone/_cmid.py b/plotly/validators/cone/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_cmid.py rename to plotly/validators/cone/_cmid.py diff --git a/packages/python/plotly/plotly/validators/cone/_cmin.py b/plotly/validators/cone/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_cmin.py rename to plotly/validators/cone/_cmin.py diff --git a/packages/python/plotly/plotly/validators/cone/_coloraxis.py b/plotly/validators/cone/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_coloraxis.py rename to plotly/validators/cone/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/cone/_colorbar.py b/plotly/validators/cone/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_colorbar.py rename to plotly/validators/cone/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/cone/_colorscale.py b/plotly/validators/cone/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_colorscale.py rename to plotly/validators/cone/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/cone/_customdata.py b/plotly/validators/cone/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_customdata.py rename to plotly/validators/cone/_customdata.py diff --git a/packages/python/plotly/plotly/validators/cone/_customdatasrc.py b/plotly/validators/cone/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_customdatasrc.py rename to plotly/validators/cone/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_hoverinfo.py b/plotly/validators/cone/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_hoverinfo.py rename to plotly/validators/cone/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/cone/_hoverinfosrc.py b/plotly/validators/cone/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_hoverinfosrc.py rename to plotly/validators/cone/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_hoverlabel.py b/plotly/validators/cone/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_hoverlabel.py rename to plotly/validators/cone/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/cone/_hovertemplate.py b/plotly/validators/cone/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_hovertemplate.py rename to plotly/validators/cone/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/cone/_hovertemplatesrc.py b/plotly/validators/cone/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_hovertemplatesrc.py rename to plotly/validators/cone/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_hovertext.py b/plotly/validators/cone/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_hovertext.py rename to plotly/validators/cone/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/cone/_hovertextsrc.py b/plotly/validators/cone/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_hovertextsrc.py rename to plotly/validators/cone/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_ids.py b/plotly/validators/cone/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_ids.py rename to plotly/validators/cone/_ids.py diff --git a/packages/python/plotly/plotly/validators/cone/_idssrc.py b/plotly/validators/cone/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_idssrc.py rename to plotly/validators/cone/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_legend.py b/plotly/validators/cone/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_legend.py rename to plotly/validators/cone/_legend.py diff --git a/packages/python/plotly/plotly/validators/cone/_legendgroup.py b/plotly/validators/cone/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_legendgroup.py rename to plotly/validators/cone/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/cone/_legendgrouptitle.py b/plotly/validators/cone/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_legendgrouptitle.py rename to plotly/validators/cone/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/cone/_legendrank.py b/plotly/validators/cone/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_legendrank.py rename to plotly/validators/cone/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/cone/_legendwidth.py b/plotly/validators/cone/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_legendwidth.py rename to plotly/validators/cone/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/cone/_lighting.py b/plotly/validators/cone/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_lighting.py rename to plotly/validators/cone/_lighting.py diff --git a/packages/python/plotly/plotly/validators/cone/_lightposition.py b/plotly/validators/cone/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_lightposition.py rename to plotly/validators/cone/_lightposition.py diff --git a/packages/python/plotly/plotly/validators/cone/_meta.py b/plotly/validators/cone/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_meta.py rename to plotly/validators/cone/_meta.py diff --git a/packages/python/plotly/plotly/validators/cone/_metasrc.py b/plotly/validators/cone/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_metasrc.py rename to plotly/validators/cone/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_name.py b/plotly/validators/cone/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_name.py rename to plotly/validators/cone/_name.py diff --git a/packages/python/plotly/plotly/validators/cone/_opacity.py b/plotly/validators/cone/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_opacity.py rename to plotly/validators/cone/_opacity.py diff --git a/packages/python/plotly/plotly/validators/cone/_reversescale.py b/plotly/validators/cone/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_reversescale.py rename to plotly/validators/cone/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/cone/_scene.py b/plotly/validators/cone/_scene.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_scene.py rename to plotly/validators/cone/_scene.py diff --git a/packages/python/plotly/plotly/validators/cone/_showlegend.py b/plotly/validators/cone/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_showlegend.py rename to plotly/validators/cone/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/cone/_showscale.py b/plotly/validators/cone/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_showscale.py rename to plotly/validators/cone/_showscale.py diff --git a/packages/python/plotly/plotly/validators/cone/_sizemode.py b/plotly/validators/cone/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_sizemode.py rename to plotly/validators/cone/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/cone/_sizeref.py b/plotly/validators/cone/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_sizeref.py rename to plotly/validators/cone/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/cone/_stream.py b/plotly/validators/cone/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_stream.py rename to plotly/validators/cone/_stream.py diff --git a/packages/python/plotly/plotly/validators/cone/_text.py b/plotly/validators/cone/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_text.py rename to plotly/validators/cone/_text.py diff --git a/packages/python/plotly/plotly/validators/cone/_textsrc.py b/plotly/validators/cone/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_textsrc.py rename to plotly/validators/cone/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_u.py b/plotly/validators/cone/_u.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_u.py rename to plotly/validators/cone/_u.py diff --git a/packages/python/plotly/plotly/validators/cone/_uhoverformat.py b/plotly/validators/cone/_uhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_uhoverformat.py rename to plotly/validators/cone/_uhoverformat.py diff --git a/packages/python/plotly/plotly/validators/cone/_uid.py b/plotly/validators/cone/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_uid.py rename to plotly/validators/cone/_uid.py diff --git a/packages/python/plotly/plotly/validators/cone/_uirevision.py b/plotly/validators/cone/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_uirevision.py rename to plotly/validators/cone/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/cone/_usrc.py b/plotly/validators/cone/_usrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_usrc.py rename to plotly/validators/cone/_usrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_v.py b/plotly/validators/cone/_v.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_v.py rename to plotly/validators/cone/_v.py diff --git a/packages/python/plotly/plotly/validators/cone/_vhoverformat.py b/plotly/validators/cone/_vhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_vhoverformat.py rename to plotly/validators/cone/_vhoverformat.py diff --git a/packages/python/plotly/plotly/validators/cone/_visible.py b/plotly/validators/cone/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_visible.py rename to plotly/validators/cone/_visible.py diff --git a/packages/python/plotly/plotly/validators/cone/_vsrc.py b/plotly/validators/cone/_vsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_vsrc.py rename to plotly/validators/cone/_vsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_w.py b/plotly/validators/cone/_w.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_w.py rename to plotly/validators/cone/_w.py diff --git a/packages/python/plotly/plotly/validators/cone/_whoverformat.py b/plotly/validators/cone/_whoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_whoverformat.py rename to plotly/validators/cone/_whoverformat.py diff --git a/packages/python/plotly/plotly/validators/cone/_wsrc.py b/plotly/validators/cone/_wsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_wsrc.py rename to plotly/validators/cone/_wsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_x.py b/plotly/validators/cone/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_x.py rename to plotly/validators/cone/_x.py diff --git a/packages/python/plotly/plotly/validators/cone/_xhoverformat.py b/plotly/validators/cone/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_xhoverformat.py rename to plotly/validators/cone/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/cone/_xsrc.py b/plotly/validators/cone/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_xsrc.py rename to plotly/validators/cone/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_y.py b/plotly/validators/cone/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_y.py rename to plotly/validators/cone/_y.py diff --git a/packages/python/plotly/plotly/validators/cone/_yhoverformat.py b/plotly/validators/cone/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_yhoverformat.py rename to plotly/validators/cone/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/cone/_ysrc.py b/plotly/validators/cone/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_ysrc.py rename to plotly/validators/cone/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/cone/_z.py b/plotly/validators/cone/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_z.py rename to plotly/validators/cone/_z.py diff --git a/packages/python/plotly/plotly/validators/cone/_zhoverformat.py b/plotly/validators/cone/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_zhoverformat.py rename to plotly/validators/cone/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/cone/_zsrc.py b/plotly/validators/cone/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/_zsrc.py rename to plotly/validators/cone/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/__init__.py b/plotly/validators/cone/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/__init__.py rename to plotly/validators/cone/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_bgcolor.py b/plotly/validators/cone/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_bgcolor.py rename to plotly/validators/cone/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_bordercolor.py b/plotly/validators/cone/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_bordercolor.py rename to plotly/validators/cone/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_borderwidth.py b/plotly/validators/cone/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_borderwidth.py rename to plotly/validators/cone/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_dtick.py b/plotly/validators/cone/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_dtick.py rename to plotly/validators/cone/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_exponentformat.py b/plotly/validators/cone/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_exponentformat.py rename to plotly/validators/cone/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_labelalias.py b/plotly/validators/cone/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_labelalias.py rename to plotly/validators/cone/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_len.py b/plotly/validators/cone/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_len.py rename to plotly/validators/cone/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_lenmode.py b/plotly/validators/cone/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_lenmode.py rename to plotly/validators/cone/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_minexponent.py b/plotly/validators/cone/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_minexponent.py rename to plotly/validators/cone/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_nticks.py b/plotly/validators/cone/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_nticks.py rename to plotly/validators/cone/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_orientation.py b/plotly/validators/cone/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_orientation.py rename to plotly/validators/cone/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_outlinecolor.py b/plotly/validators/cone/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_outlinecolor.py rename to plotly/validators/cone/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_outlinewidth.py b/plotly/validators/cone/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_outlinewidth.py rename to plotly/validators/cone/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_separatethousands.py b/plotly/validators/cone/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_separatethousands.py rename to plotly/validators/cone/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_showexponent.py b/plotly/validators/cone/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_showexponent.py rename to plotly/validators/cone/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_showticklabels.py b/plotly/validators/cone/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_showticklabels.py rename to plotly/validators/cone/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_showtickprefix.py b/plotly/validators/cone/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_showtickprefix.py rename to plotly/validators/cone/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_showticksuffix.py b/plotly/validators/cone/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_showticksuffix.py rename to plotly/validators/cone/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_thickness.py b/plotly/validators/cone/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_thickness.py rename to plotly/validators/cone/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_thicknessmode.py b/plotly/validators/cone/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_thicknessmode.py rename to plotly/validators/cone/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tick0.py b/plotly/validators/cone/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tick0.py rename to plotly/validators/cone/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickangle.py b/plotly/validators/cone/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickangle.py rename to plotly/validators/cone/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickcolor.py b/plotly/validators/cone/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickcolor.py rename to plotly/validators/cone/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickfont.py b/plotly/validators/cone/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickfont.py rename to plotly/validators/cone/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickformat.py b/plotly/validators/cone/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickformat.py rename to plotly/validators/cone/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickformatstopdefaults.py b/plotly/validators/cone/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickformatstopdefaults.py rename to plotly/validators/cone/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickformatstops.py b/plotly/validators/cone/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickformatstops.py rename to plotly/validators/cone/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ticklabeloverflow.py b/plotly/validators/cone/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ticklabeloverflow.py rename to plotly/validators/cone/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ticklabelposition.py b/plotly/validators/cone/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ticklabelposition.py rename to plotly/validators/cone/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ticklabelstep.py b/plotly/validators/cone/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ticklabelstep.py rename to plotly/validators/cone/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ticklen.py b/plotly/validators/cone/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ticklen.py rename to plotly/validators/cone/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickmode.py b/plotly/validators/cone/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickmode.py rename to plotly/validators/cone/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickprefix.py b/plotly/validators/cone/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickprefix.py rename to plotly/validators/cone/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ticks.py b/plotly/validators/cone/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ticks.py rename to plotly/validators/cone/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ticksuffix.py b/plotly/validators/cone/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ticksuffix.py rename to plotly/validators/cone/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ticktext.py b/plotly/validators/cone/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ticktext.py rename to plotly/validators/cone/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ticktextsrc.py b/plotly/validators/cone/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ticktextsrc.py rename to plotly/validators/cone/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickvals.py b/plotly/validators/cone/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickvals.py rename to plotly/validators/cone/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickvalssrc.py b/plotly/validators/cone/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickvalssrc.py rename to plotly/validators/cone/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_tickwidth.py b/plotly/validators/cone/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_tickwidth.py rename to plotly/validators/cone/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_title.py b/plotly/validators/cone/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_title.py rename to plotly/validators/cone/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_x.py b/plotly/validators/cone/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_x.py rename to plotly/validators/cone/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_xanchor.py b/plotly/validators/cone/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_xanchor.py rename to plotly/validators/cone/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_xpad.py b/plotly/validators/cone/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_xpad.py rename to plotly/validators/cone/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_xref.py b/plotly/validators/cone/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_xref.py rename to plotly/validators/cone/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_y.py b/plotly/validators/cone/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_y.py rename to plotly/validators/cone/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_yanchor.py b/plotly/validators/cone/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_yanchor.py rename to plotly/validators/cone/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_ypad.py b/plotly/validators/cone/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_ypad.py rename to plotly/validators/cone/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/_yref.py b/plotly/validators/cone/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/_yref.py rename to plotly/validators/cone/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/__init__.py b/plotly/validators/cone/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/__init__.py rename to plotly/validators/cone/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_color.py b/plotly/validators/cone/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_color.py rename to plotly/validators/cone/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_family.py b/plotly/validators/cone/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_family.py rename to plotly/validators/cone/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_lineposition.py b/plotly/validators/cone/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_lineposition.py rename to plotly/validators/cone/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_shadow.py b/plotly/validators/cone/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_shadow.py rename to plotly/validators/cone/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_size.py b/plotly/validators/cone/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_size.py rename to plotly/validators/cone/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_style.py b/plotly/validators/cone/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_style.py rename to plotly/validators/cone/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_textcase.py b/plotly/validators/cone/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_textcase.py rename to plotly/validators/cone/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_variant.py b/plotly/validators/cone/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_variant.py rename to plotly/validators/cone/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_weight.py b/plotly/validators/cone/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickfont/_weight.py rename to plotly/validators/cone/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/__init__.py b/plotly/validators/cone/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/__init__.py rename to plotly/validators/cone/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/cone/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/cone/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_enabled.py b/plotly/validators/cone/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_enabled.py rename to plotly/validators/cone/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_name.py b/plotly/validators/cone/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_name.py rename to plotly/validators/cone/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/cone/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/cone/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_value.py b/plotly/validators/cone/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/tickformatstop/_value.py rename to plotly/validators/cone/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/__init__.py b/plotly/validators/cone/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/__init__.py rename to plotly/validators/cone/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/_font.py b/plotly/validators/cone/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/_font.py rename to plotly/validators/cone/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/_side.py b/plotly/validators/cone/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/_side.py rename to plotly/validators/cone/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/_text.py b/plotly/validators/cone/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/_text.py rename to plotly/validators/cone/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/__init__.py b/plotly/validators/cone/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/__init__.py rename to plotly/validators/cone/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_color.py b/plotly/validators/cone/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_color.py rename to plotly/validators/cone/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_family.py b/plotly/validators/cone/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_family.py rename to plotly/validators/cone/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_lineposition.py b/plotly/validators/cone/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_lineposition.py rename to plotly/validators/cone/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_shadow.py b/plotly/validators/cone/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_shadow.py rename to plotly/validators/cone/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_size.py b/plotly/validators/cone/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_size.py rename to plotly/validators/cone/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_style.py b/plotly/validators/cone/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_style.py rename to plotly/validators/cone/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_textcase.py b/plotly/validators/cone/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_textcase.py rename to plotly/validators/cone/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_variant.py b/plotly/validators/cone/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_variant.py rename to plotly/validators/cone/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/cone/colorbar/title/font/_weight.py b/plotly/validators/cone/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/colorbar/title/font/_weight.py rename to plotly/validators/cone/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/__init__.py b/plotly/validators/cone/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/__init__.py rename to plotly/validators/cone/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_align.py b/plotly/validators/cone/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_align.py rename to plotly/validators/cone/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_alignsrc.py b/plotly/validators/cone/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_alignsrc.py rename to plotly/validators/cone/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_bgcolor.py b/plotly/validators/cone/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_bgcolor.py rename to plotly/validators/cone/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_bgcolorsrc.py b/plotly/validators/cone/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_bgcolorsrc.py rename to plotly/validators/cone/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_bordercolor.py b/plotly/validators/cone/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_bordercolor.py rename to plotly/validators/cone/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_bordercolorsrc.py b/plotly/validators/cone/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_bordercolorsrc.py rename to plotly/validators/cone/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_font.py b/plotly/validators/cone/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_font.py rename to plotly/validators/cone/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_namelength.py b/plotly/validators/cone/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_namelength.py rename to plotly/validators/cone/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/_namelengthsrc.py b/plotly/validators/cone/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/_namelengthsrc.py rename to plotly/validators/cone/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/__init__.py b/plotly/validators/cone/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/__init__.py rename to plotly/validators/cone/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_color.py b/plotly/validators/cone/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_color.py rename to plotly/validators/cone/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_colorsrc.py b/plotly/validators/cone/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_colorsrc.py rename to plotly/validators/cone/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_family.py b/plotly/validators/cone/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_family.py rename to plotly/validators/cone/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_familysrc.py b/plotly/validators/cone/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_familysrc.py rename to plotly/validators/cone/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_lineposition.py b/plotly/validators/cone/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_lineposition.py rename to plotly/validators/cone/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_linepositionsrc.py b/plotly/validators/cone/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/cone/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_shadow.py b/plotly/validators/cone/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_shadow.py rename to plotly/validators/cone/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_shadowsrc.py b/plotly/validators/cone/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_shadowsrc.py rename to plotly/validators/cone/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_size.py b/plotly/validators/cone/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_size.py rename to plotly/validators/cone/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_sizesrc.py b/plotly/validators/cone/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_sizesrc.py rename to plotly/validators/cone/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_style.py b/plotly/validators/cone/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_style.py rename to plotly/validators/cone/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_stylesrc.py b/plotly/validators/cone/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_stylesrc.py rename to plotly/validators/cone/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_textcase.py b/plotly/validators/cone/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_textcase.py rename to plotly/validators/cone/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_textcasesrc.py b/plotly/validators/cone/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_textcasesrc.py rename to plotly/validators/cone/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_variant.py b/plotly/validators/cone/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_variant.py rename to plotly/validators/cone/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_variantsrc.py b/plotly/validators/cone/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_variantsrc.py rename to plotly/validators/cone/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_weight.py b/plotly/validators/cone/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_weight.py rename to plotly/validators/cone/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/cone/hoverlabel/font/_weightsrc.py b/plotly/validators/cone/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/hoverlabel/font/_weightsrc.py rename to plotly/validators/cone/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/__init__.py b/plotly/validators/cone/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/__init__.py rename to plotly/validators/cone/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/_font.py b/plotly/validators/cone/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/_font.py rename to plotly/validators/cone/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/_text.py b/plotly/validators/cone/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/_text.py rename to plotly/validators/cone/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/__init__.py b/plotly/validators/cone/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/__init__.py rename to plotly/validators/cone/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_color.py b/plotly/validators/cone/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_color.py rename to plotly/validators/cone/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_family.py b/plotly/validators/cone/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_family.py rename to plotly/validators/cone/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_lineposition.py b/plotly/validators/cone/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_lineposition.py rename to plotly/validators/cone/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_shadow.py b/plotly/validators/cone/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_shadow.py rename to plotly/validators/cone/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_size.py b/plotly/validators/cone/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_size.py rename to plotly/validators/cone/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_style.py b/plotly/validators/cone/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_style.py rename to plotly/validators/cone/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_textcase.py b/plotly/validators/cone/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_textcase.py rename to plotly/validators/cone/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_variant.py b/plotly/validators/cone/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_variant.py rename to plotly/validators/cone/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_weight.py b/plotly/validators/cone/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/legendgrouptitle/font/_weight.py rename to plotly/validators/cone/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/cone/lighting/__init__.py b/plotly/validators/cone/lighting/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lighting/__init__.py rename to plotly/validators/cone/lighting/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/lighting/_ambient.py b/plotly/validators/cone/lighting/_ambient.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lighting/_ambient.py rename to plotly/validators/cone/lighting/_ambient.py diff --git a/packages/python/plotly/plotly/validators/cone/lighting/_diffuse.py b/plotly/validators/cone/lighting/_diffuse.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lighting/_diffuse.py rename to plotly/validators/cone/lighting/_diffuse.py diff --git a/packages/python/plotly/plotly/validators/cone/lighting/_facenormalsepsilon.py b/plotly/validators/cone/lighting/_facenormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lighting/_facenormalsepsilon.py rename to plotly/validators/cone/lighting/_facenormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/cone/lighting/_fresnel.py b/plotly/validators/cone/lighting/_fresnel.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lighting/_fresnel.py rename to plotly/validators/cone/lighting/_fresnel.py diff --git a/packages/python/plotly/plotly/validators/cone/lighting/_roughness.py b/plotly/validators/cone/lighting/_roughness.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lighting/_roughness.py rename to plotly/validators/cone/lighting/_roughness.py diff --git a/packages/python/plotly/plotly/validators/cone/lighting/_specular.py b/plotly/validators/cone/lighting/_specular.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lighting/_specular.py rename to plotly/validators/cone/lighting/_specular.py diff --git a/packages/python/plotly/plotly/validators/cone/lighting/_vertexnormalsepsilon.py b/plotly/validators/cone/lighting/_vertexnormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lighting/_vertexnormalsepsilon.py rename to plotly/validators/cone/lighting/_vertexnormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/cone/lightposition/__init__.py b/plotly/validators/cone/lightposition/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lightposition/__init__.py rename to plotly/validators/cone/lightposition/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/lightposition/_x.py b/plotly/validators/cone/lightposition/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lightposition/_x.py rename to plotly/validators/cone/lightposition/_x.py diff --git a/packages/python/plotly/plotly/validators/cone/lightposition/_y.py b/plotly/validators/cone/lightposition/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lightposition/_y.py rename to plotly/validators/cone/lightposition/_y.py diff --git a/packages/python/plotly/plotly/validators/cone/lightposition/_z.py b/plotly/validators/cone/lightposition/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/lightposition/_z.py rename to plotly/validators/cone/lightposition/_z.py diff --git a/packages/python/plotly/plotly/validators/cone/stream/__init__.py b/plotly/validators/cone/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/stream/__init__.py rename to plotly/validators/cone/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/cone/stream/_maxpoints.py b/plotly/validators/cone/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/stream/_maxpoints.py rename to plotly/validators/cone/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/cone/stream/_token.py b/plotly/validators/cone/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/cone/stream/_token.py rename to plotly/validators/cone/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/contour/__init__.py b/plotly/validators/contour/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/__init__.py rename to plotly/validators/contour/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/_autocolorscale.py b/plotly/validators/contour/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_autocolorscale.py rename to plotly/validators/contour/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/contour/_autocontour.py b/plotly/validators/contour/_autocontour.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_autocontour.py rename to plotly/validators/contour/_autocontour.py diff --git a/packages/python/plotly/plotly/validators/contour/_coloraxis.py b/plotly/validators/contour/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_coloraxis.py rename to plotly/validators/contour/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/contour/_colorbar.py b/plotly/validators/contour/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_colorbar.py rename to plotly/validators/contour/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/contour/_colorscale.py b/plotly/validators/contour/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_colorscale.py rename to plotly/validators/contour/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/contour/_connectgaps.py b/plotly/validators/contour/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_connectgaps.py rename to plotly/validators/contour/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/contour/_contours.py b/plotly/validators/contour/_contours.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_contours.py rename to plotly/validators/contour/_contours.py diff --git a/packages/python/plotly/plotly/validators/contour/_customdata.py b/plotly/validators/contour/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_customdata.py rename to plotly/validators/contour/_customdata.py diff --git a/packages/python/plotly/plotly/validators/contour/_customdatasrc.py b/plotly/validators/contour/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_customdatasrc.py rename to plotly/validators/contour/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_dx.py b/plotly/validators/contour/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_dx.py rename to plotly/validators/contour/_dx.py diff --git a/packages/python/plotly/plotly/validators/contour/_dy.py b/plotly/validators/contour/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_dy.py rename to plotly/validators/contour/_dy.py diff --git a/packages/python/plotly/plotly/validators/contour/_fillcolor.py b/plotly/validators/contour/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_fillcolor.py rename to plotly/validators/contour/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/contour/_hoverinfo.py b/plotly/validators/contour/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_hoverinfo.py rename to plotly/validators/contour/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/contour/_hoverinfosrc.py b/plotly/validators/contour/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_hoverinfosrc.py rename to plotly/validators/contour/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_hoverlabel.py b/plotly/validators/contour/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_hoverlabel.py rename to plotly/validators/contour/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/contour/_hoverongaps.py b/plotly/validators/contour/_hoverongaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_hoverongaps.py rename to plotly/validators/contour/_hoverongaps.py diff --git a/packages/python/plotly/plotly/validators/contour/_hovertemplate.py b/plotly/validators/contour/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_hovertemplate.py rename to plotly/validators/contour/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/contour/_hovertemplatesrc.py b/plotly/validators/contour/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_hovertemplatesrc.py rename to plotly/validators/contour/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_hovertext.py b/plotly/validators/contour/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_hovertext.py rename to plotly/validators/contour/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/contour/_hovertextsrc.py b/plotly/validators/contour/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_hovertextsrc.py rename to plotly/validators/contour/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_ids.py b/plotly/validators/contour/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_ids.py rename to plotly/validators/contour/_ids.py diff --git a/packages/python/plotly/plotly/validators/contour/_idssrc.py b/plotly/validators/contour/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_idssrc.py rename to plotly/validators/contour/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_legend.py b/plotly/validators/contour/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_legend.py rename to plotly/validators/contour/_legend.py diff --git a/packages/python/plotly/plotly/validators/contour/_legendgroup.py b/plotly/validators/contour/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_legendgroup.py rename to plotly/validators/contour/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/contour/_legendgrouptitle.py b/plotly/validators/contour/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_legendgrouptitle.py rename to plotly/validators/contour/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/contour/_legendrank.py b/plotly/validators/contour/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_legendrank.py rename to plotly/validators/contour/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/contour/_legendwidth.py b/plotly/validators/contour/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_legendwidth.py rename to plotly/validators/contour/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/contour/_line.py b/plotly/validators/contour/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_line.py rename to plotly/validators/contour/_line.py diff --git a/packages/python/plotly/plotly/validators/contour/_meta.py b/plotly/validators/contour/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_meta.py rename to plotly/validators/contour/_meta.py diff --git a/packages/python/plotly/plotly/validators/contour/_metasrc.py b/plotly/validators/contour/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_metasrc.py rename to plotly/validators/contour/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_name.py b/plotly/validators/contour/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_name.py rename to plotly/validators/contour/_name.py diff --git a/packages/python/plotly/plotly/validators/contour/_ncontours.py b/plotly/validators/contour/_ncontours.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_ncontours.py rename to plotly/validators/contour/_ncontours.py diff --git a/packages/python/plotly/plotly/validators/contour/_opacity.py b/plotly/validators/contour/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_opacity.py rename to plotly/validators/contour/_opacity.py diff --git a/packages/python/plotly/plotly/validators/contour/_reversescale.py b/plotly/validators/contour/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_reversescale.py rename to plotly/validators/contour/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/contour/_showlegend.py b/plotly/validators/contour/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_showlegend.py rename to plotly/validators/contour/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/contour/_showscale.py b/plotly/validators/contour/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_showscale.py rename to plotly/validators/contour/_showscale.py diff --git a/packages/python/plotly/plotly/validators/contour/_stream.py b/plotly/validators/contour/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_stream.py rename to plotly/validators/contour/_stream.py diff --git a/packages/python/plotly/plotly/validators/contour/_text.py b/plotly/validators/contour/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_text.py rename to plotly/validators/contour/_text.py diff --git a/packages/python/plotly/plotly/validators/contour/_textfont.py b/plotly/validators/contour/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_textfont.py rename to plotly/validators/contour/_textfont.py diff --git a/packages/python/plotly/plotly/validators/contour/_textsrc.py b/plotly/validators/contour/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_textsrc.py rename to plotly/validators/contour/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_texttemplate.py b/plotly/validators/contour/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_texttemplate.py rename to plotly/validators/contour/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/contour/_transpose.py b/plotly/validators/contour/_transpose.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_transpose.py rename to plotly/validators/contour/_transpose.py diff --git a/packages/python/plotly/plotly/validators/contour/_uid.py b/plotly/validators/contour/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_uid.py rename to plotly/validators/contour/_uid.py diff --git a/packages/python/plotly/plotly/validators/contour/_uirevision.py b/plotly/validators/contour/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_uirevision.py rename to plotly/validators/contour/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/contour/_visible.py b/plotly/validators/contour/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_visible.py rename to plotly/validators/contour/_visible.py diff --git a/packages/python/plotly/plotly/validators/contour/_x.py b/plotly/validators/contour/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_x.py rename to plotly/validators/contour/_x.py diff --git a/packages/python/plotly/plotly/validators/contour/_x0.py b/plotly/validators/contour/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_x0.py rename to plotly/validators/contour/_x0.py diff --git a/packages/python/plotly/plotly/validators/contour/_xaxis.py b/plotly/validators/contour/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_xaxis.py rename to plotly/validators/contour/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/contour/_xcalendar.py b/plotly/validators/contour/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_xcalendar.py rename to plotly/validators/contour/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/contour/_xhoverformat.py b/plotly/validators/contour/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_xhoverformat.py rename to plotly/validators/contour/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/contour/_xperiod.py b/plotly/validators/contour/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_xperiod.py rename to plotly/validators/contour/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/contour/_xperiod0.py b/plotly/validators/contour/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_xperiod0.py rename to plotly/validators/contour/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/contour/_xperiodalignment.py b/plotly/validators/contour/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_xperiodalignment.py rename to plotly/validators/contour/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/contour/_xsrc.py b/plotly/validators/contour/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_xsrc.py rename to plotly/validators/contour/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_xtype.py b/plotly/validators/contour/_xtype.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_xtype.py rename to plotly/validators/contour/_xtype.py diff --git a/packages/python/plotly/plotly/validators/contour/_y.py b/plotly/validators/contour/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_y.py rename to plotly/validators/contour/_y.py diff --git a/packages/python/plotly/plotly/validators/contour/_y0.py b/plotly/validators/contour/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_y0.py rename to plotly/validators/contour/_y0.py diff --git a/packages/python/plotly/plotly/validators/contour/_yaxis.py b/plotly/validators/contour/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_yaxis.py rename to plotly/validators/contour/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/contour/_ycalendar.py b/plotly/validators/contour/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_ycalendar.py rename to plotly/validators/contour/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/contour/_yhoverformat.py b/plotly/validators/contour/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_yhoverformat.py rename to plotly/validators/contour/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/contour/_yperiod.py b/plotly/validators/contour/_yperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_yperiod.py rename to plotly/validators/contour/_yperiod.py diff --git a/packages/python/plotly/plotly/validators/contour/_yperiod0.py b/plotly/validators/contour/_yperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_yperiod0.py rename to plotly/validators/contour/_yperiod0.py diff --git a/packages/python/plotly/plotly/validators/contour/_yperiodalignment.py b/plotly/validators/contour/_yperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_yperiodalignment.py rename to plotly/validators/contour/_yperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/contour/_ysrc.py b/plotly/validators/contour/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_ysrc.py rename to plotly/validators/contour/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/contour/_ytype.py b/plotly/validators/contour/_ytype.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_ytype.py rename to plotly/validators/contour/_ytype.py diff --git a/packages/python/plotly/plotly/validators/contour/_z.py b/plotly/validators/contour/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_z.py rename to plotly/validators/contour/_z.py diff --git a/packages/python/plotly/plotly/validators/contour/_zauto.py b/plotly/validators/contour/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_zauto.py rename to plotly/validators/contour/_zauto.py diff --git a/packages/python/plotly/plotly/validators/contour/_zhoverformat.py b/plotly/validators/contour/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_zhoverformat.py rename to plotly/validators/contour/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/contour/_zmax.py b/plotly/validators/contour/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_zmax.py rename to plotly/validators/contour/_zmax.py diff --git a/packages/python/plotly/plotly/validators/contour/_zmid.py b/plotly/validators/contour/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_zmid.py rename to plotly/validators/contour/_zmid.py diff --git a/packages/python/plotly/plotly/validators/contour/_zmin.py b/plotly/validators/contour/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_zmin.py rename to plotly/validators/contour/_zmin.py diff --git a/packages/python/plotly/plotly/validators/contour/_zorder.py b/plotly/validators/contour/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_zorder.py rename to plotly/validators/contour/_zorder.py diff --git a/packages/python/plotly/plotly/validators/contour/_zsrc.py b/plotly/validators/contour/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/_zsrc.py rename to plotly/validators/contour/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/__init__.py b/plotly/validators/contour/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/__init__.py rename to plotly/validators/contour/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_bgcolor.py b/plotly/validators/contour/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_bgcolor.py rename to plotly/validators/contour/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_bordercolor.py b/plotly/validators/contour/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_bordercolor.py rename to plotly/validators/contour/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_borderwidth.py b/plotly/validators/contour/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_borderwidth.py rename to plotly/validators/contour/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_dtick.py b/plotly/validators/contour/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_dtick.py rename to plotly/validators/contour/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_exponentformat.py b/plotly/validators/contour/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_exponentformat.py rename to plotly/validators/contour/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_labelalias.py b/plotly/validators/contour/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_labelalias.py rename to plotly/validators/contour/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_len.py b/plotly/validators/contour/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_len.py rename to plotly/validators/contour/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_lenmode.py b/plotly/validators/contour/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_lenmode.py rename to plotly/validators/contour/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_minexponent.py b/plotly/validators/contour/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_minexponent.py rename to plotly/validators/contour/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_nticks.py b/plotly/validators/contour/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_nticks.py rename to plotly/validators/contour/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_orientation.py b/plotly/validators/contour/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_orientation.py rename to plotly/validators/contour/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_outlinecolor.py b/plotly/validators/contour/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_outlinecolor.py rename to plotly/validators/contour/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_outlinewidth.py b/plotly/validators/contour/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_outlinewidth.py rename to plotly/validators/contour/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_separatethousands.py b/plotly/validators/contour/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_separatethousands.py rename to plotly/validators/contour/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_showexponent.py b/plotly/validators/contour/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_showexponent.py rename to plotly/validators/contour/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_showticklabels.py b/plotly/validators/contour/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_showticklabels.py rename to plotly/validators/contour/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_showtickprefix.py b/plotly/validators/contour/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_showtickprefix.py rename to plotly/validators/contour/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_showticksuffix.py b/plotly/validators/contour/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_showticksuffix.py rename to plotly/validators/contour/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_thickness.py b/plotly/validators/contour/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_thickness.py rename to plotly/validators/contour/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_thicknessmode.py b/plotly/validators/contour/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_thicknessmode.py rename to plotly/validators/contour/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tick0.py b/plotly/validators/contour/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tick0.py rename to plotly/validators/contour/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickangle.py b/plotly/validators/contour/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickangle.py rename to plotly/validators/contour/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickcolor.py b/plotly/validators/contour/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickcolor.py rename to plotly/validators/contour/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickfont.py b/plotly/validators/contour/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickfont.py rename to plotly/validators/contour/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickformat.py b/plotly/validators/contour/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickformat.py rename to plotly/validators/contour/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickformatstopdefaults.py b/plotly/validators/contour/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickformatstopdefaults.py rename to plotly/validators/contour/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickformatstops.py b/plotly/validators/contour/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickformatstops.py rename to plotly/validators/contour/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ticklabeloverflow.py b/plotly/validators/contour/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ticklabeloverflow.py rename to plotly/validators/contour/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ticklabelposition.py b/plotly/validators/contour/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ticklabelposition.py rename to plotly/validators/contour/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ticklabelstep.py b/plotly/validators/contour/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ticklabelstep.py rename to plotly/validators/contour/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ticklen.py b/plotly/validators/contour/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ticklen.py rename to plotly/validators/contour/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickmode.py b/plotly/validators/contour/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickmode.py rename to plotly/validators/contour/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickprefix.py b/plotly/validators/contour/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickprefix.py rename to plotly/validators/contour/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ticks.py b/plotly/validators/contour/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ticks.py rename to plotly/validators/contour/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ticksuffix.py b/plotly/validators/contour/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ticksuffix.py rename to plotly/validators/contour/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ticktext.py b/plotly/validators/contour/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ticktext.py rename to plotly/validators/contour/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ticktextsrc.py b/plotly/validators/contour/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ticktextsrc.py rename to plotly/validators/contour/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickvals.py b/plotly/validators/contour/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickvals.py rename to plotly/validators/contour/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickvalssrc.py b/plotly/validators/contour/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickvalssrc.py rename to plotly/validators/contour/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_tickwidth.py b/plotly/validators/contour/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_tickwidth.py rename to plotly/validators/contour/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_title.py b/plotly/validators/contour/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_title.py rename to plotly/validators/contour/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_x.py b/plotly/validators/contour/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_x.py rename to plotly/validators/contour/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_xanchor.py b/plotly/validators/contour/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_xanchor.py rename to plotly/validators/contour/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_xpad.py b/plotly/validators/contour/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_xpad.py rename to plotly/validators/contour/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_xref.py b/plotly/validators/contour/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_xref.py rename to plotly/validators/contour/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_y.py b/plotly/validators/contour/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_y.py rename to plotly/validators/contour/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_yanchor.py b/plotly/validators/contour/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_yanchor.py rename to plotly/validators/contour/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_ypad.py b/plotly/validators/contour/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_ypad.py rename to plotly/validators/contour/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/_yref.py b/plotly/validators/contour/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/_yref.py rename to plotly/validators/contour/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/__init__.py b/plotly/validators/contour/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/__init__.py rename to plotly/validators/contour/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_color.py b/plotly/validators/contour/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_color.py rename to plotly/validators/contour/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_family.py b/plotly/validators/contour/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_family.py rename to plotly/validators/contour/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_lineposition.py b/plotly/validators/contour/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_lineposition.py rename to plotly/validators/contour/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_shadow.py b/plotly/validators/contour/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_shadow.py rename to plotly/validators/contour/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_size.py b/plotly/validators/contour/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_size.py rename to plotly/validators/contour/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_style.py b/plotly/validators/contour/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_style.py rename to plotly/validators/contour/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_textcase.py b/plotly/validators/contour/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_textcase.py rename to plotly/validators/contour/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_variant.py b/plotly/validators/contour/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_variant.py rename to plotly/validators/contour/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_weight.py b/plotly/validators/contour/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickfont/_weight.py rename to plotly/validators/contour/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/__init__.py b/plotly/validators/contour/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/__init__.py rename to plotly/validators/contour/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/contour/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/contour/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_enabled.py b/plotly/validators/contour/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_enabled.py rename to plotly/validators/contour/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_name.py b/plotly/validators/contour/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_name.py rename to plotly/validators/contour/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/contour/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/contour/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_value.py b/plotly/validators/contour/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/tickformatstop/_value.py rename to plotly/validators/contour/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/__init__.py b/plotly/validators/contour/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/__init__.py rename to plotly/validators/contour/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/_font.py b/plotly/validators/contour/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/_font.py rename to plotly/validators/contour/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/_side.py b/plotly/validators/contour/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/_side.py rename to plotly/validators/contour/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/_text.py b/plotly/validators/contour/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/_text.py rename to plotly/validators/contour/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/__init__.py b/plotly/validators/contour/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/__init__.py rename to plotly/validators/contour/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_color.py b/plotly/validators/contour/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_color.py rename to plotly/validators/contour/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_family.py b/plotly/validators/contour/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_family.py rename to plotly/validators/contour/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_lineposition.py b/plotly/validators/contour/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_lineposition.py rename to plotly/validators/contour/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_shadow.py b/plotly/validators/contour/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_shadow.py rename to plotly/validators/contour/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_size.py b/plotly/validators/contour/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_size.py rename to plotly/validators/contour/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_style.py b/plotly/validators/contour/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_style.py rename to plotly/validators/contour/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_textcase.py b/plotly/validators/contour/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_textcase.py rename to plotly/validators/contour/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_variant.py b/plotly/validators/contour/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_variant.py rename to plotly/validators/contour/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/contour/colorbar/title/font/_weight.py b/plotly/validators/contour/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/colorbar/title/font/_weight.py rename to plotly/validators/contour/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/__init__.py b/plotly/validators/contour/contours/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/__init__.py rename to plotly/validators/contour/contours/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_coloring.py b/plotly/validators/contour/contours/_coloring.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_coloring.py rename to plotly/validators/contour/contours/_coloring.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_end.py b/plotly/validators/contour/contours/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_end.py rename to plotly/validators/contour/contours/_end.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_labelfont.py b/plotly/validators/contour/contours/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_labelfont.py rename to plotly/validators/contour/contours/_labelfont.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_labelformat.py b/plotly/validators/contour/contours/_labelformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_labelformat.py rename to plotly/validators/contour/contours/_labelformat.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_operation.py b/plotly/validators/contour/contours/_operation.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_operation.py rename to plotly/validators/contour/contours/_operation.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_showlabels.py b/plotly/validators/contour/contours/_showlabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_showlabels.py rename to plotly/validators/contour/contours/_showlabels.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_showlines.py b/plotly/validators/contour/contours/_showlines.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_showlines.py rename to plotly/validators/contour/contours/_showlines.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_size.py b/plotly/validators/contour/contours/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_size.py rename to plotly/validators/contour/contours/_size.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_start.py b/plotly/validators/contour/contours/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_start.py rename to plotly/validators/contour/contours/_start.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_type.py b/plotly/validators/contour/contours/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_type.py rename to plotly/validators/contour/contours/_type.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/_value.py b/plotly/validators/contour/contours/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/_value.py rename to plotly/validators/contour/contours/_value.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/__init__.py b/plotly/validators/contour/contours/labelfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/__init__.py rename to plotly/validators/contour/contours/labelfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_color.py b/plotly/validators/contour/contours/labelfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_color.py rename to plotly/validators/contour/contours/labelfont/_color.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_family.py b/plotly/validators/contour/contours/labelfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_family.py rename to plotly/validators/contour/contours/labelfont/_family.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_lineposition.py b/plotly/validators/contour/contours/labelfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_lineposition.py rename to plotly/validators/contour/contours/labelfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_shadow.py b/plotly/validators/contour/contours/labelfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_shadow.py rename to plotly/validators/contour/contours/labelfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_size.py b/plotly/validators/contour/contours/labelfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_size.py rename to plotly/validators/contour/contours/labelfont/_size.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_style.py b/plotly/validators/contour/contours/labelfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_style.py rename to plotly/validators/contour/contours/labelfont/_style.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_textcase.py b/plotly/validators/contour/contours/labelfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_textcase.py rename to plotly/validators/contour/contours/labelfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_variant.py b/plotly/validators/contour/contours/labelfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_variant.py rename to plotly/validators/contour/contours/labelfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/contour/contours/labelfont/_weight.py b/plotly/validators/contour/contours/labelfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/contours/labelfont/_weight.py rename to plotly/validators/contour/contours/labelfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/__init__.py b/plotly/validators/contour/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/__init__.py rename to plotly/validators/contour/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_align.py b/plotly/validators/contour/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_align.py rename to plotly/validators/contour/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_alignsrc.py b/plotly/validators/contour/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_alignsrc.py rename to plotly/validators/contour/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_bgcolor.py b/plotly/validators/contour/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_bgcolor.py rename to plotly/validators/contour/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_bgcolorsrc.py b/plotly/validators/contour/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_bgcolorsrc.py rename to plotly/validators/contour/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_bordercolor.py b/plotly/validators/contour/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_bordercolor.py rename to plotly/validators/contour/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_bordercolorsrc.py b/plotly/validators/contour/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_bordercolorsrc.py rename to plotly/validators/contour/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_font.py b/plotly/validators/contour/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_font.py rename to plotly/validators/contour/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_namelength.py b/plotly/validators/contour/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_namelength.py rename to plotly/validators/contour/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/_namelengthsrc.py b/plotly/validators/contour/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/_namelengthsrc.py rename to plotly/validators/contour/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/__init__.py b/plotly/validators/contour/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/__init__.py rename to plotly/validators/contour/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_color.py b/plotly/validators/contour/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_color.py rename to plotly/validators/contour/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_colorsrc.py b/plotly/validators/contour/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_colorsrc.py rename to plotly/validators/contour/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_family.py b/plotly/validators/contour/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_family.py rename to plotly/validators/contour/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_familysrc.py b/plotly/validators/contour/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_familysrc.py rename to plotly/validators/contour/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_lineposition.py b/plotly/validators/contour/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_lineposition.py rename to plotly/validators/contour/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_linepositionsrc.py b/plotly/validators/contour/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/contour/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_shadow.py b/plotly/validators/contour/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_shadow.py rename to plotly/validators/contour/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_shadowsrc.py b/plotly/validators/contour/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_shadowsrc.py rename to plotly/validators/contour/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_size.py b/plotly/validators/contour/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_size.py rename to plotly/validators/contour/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_sizesrc.py b/plotly/validators/contour/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_sizesrc.py rename to plotly/validators/contour/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_style.py b/plotly/validators/contour/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_style.py rename to plotly/validators/contour/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_stylesrc.py b/plotly/validators/contour/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_stylesrc.py rename to plotly/validators/contour/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_textcase.py b/plotly/validators/contour/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_textcase.py rename to plotly/validators/contour/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_textcasesrc.py b/plotly/validators/contour/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_textcasesrc.py rename to plotly/validators/contour/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_variant.py b/plotly/validators/contour/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_variant.py rename to plotly/validators/contour/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_variantsrc.py b/plotly/validators/contour/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_variantsrc.py rename to plotly/validators/contour/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_weight.py b/plotly/validators/contour/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_weight.py rename to plotly/validators/contour/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/contour/hoverlabel/font/_weightsrc.py b/plotly/validators/contour/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/hoverlabel/font/_weightsrc.py rename to plotly/validators/contour/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/__init__.py b/plotly/validators/contour/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/__init__.py rename to plotly/validators/contour/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/_font.py b/plotly/validators/contour/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/_font.py rename to plotly/validators/contour/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/_text.py b/plotly/validators/contour/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/_text.py rename to plotly/validators/contour/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/__init__.py b/plotly/validators/contour/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/__init__.py rename to plotly/validators/contour/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_color.py b/plotly/validators/contour/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_color.py rename to plotly/validators/contour/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_family.py b/plotly/validators/contour/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_family.py rename to plotly/validators/contour/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_lineposition.py b/plotly/validators/contour/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_lineposition.py rename to plotly/validators/contour/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_shadow.py b/plotly/validators/contour/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_shadow.py rename to plotly/validators/contour/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_size.py b/plotly/validators/contour/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_size.py rename to plotly/validators/contour/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_style.py b/plotly/validators/contour/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_style.py rename to plotly/validators/contour/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_textcase.py b/plotly/validators/contour/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_textcase.py rename to plotly/validators/contour/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_variant.py b/plotly/validators/contour/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_variant.py rename to plotly/validators/contour/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_weight.py b/plotly/validators/contour/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/legendgrouptitle/font/_weight.py rename to plotly/validators/contour/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/contour/line/__init__.py b/plotly/validators/contour/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/line/__init__.py rename to plotly/validators/contour/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/line/_color.py b/plotly/validators/contour/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/line/_color.py rename to plotly/validators/contour/line/_color.py diff --git a/packages/python/plotly/plotly/validators/contour/line/_dash.py b/plotly/validators/contour/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/line/_dash.py rename to plotly/validators/contour/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/contour/line/_smoothing.py b/plotly/validators/contour/line/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/line/_smoothing.py rename to plotly/validators/contour/line/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/contour/line/_width.py b/plotly/validators/contour/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/line/_width.py rename to plotly/validators/contour/line/_width.py diff --git a/packages/python/plotly/plotly/validators/contour/stream/__init__.py b/plotly/validators/contour/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/stream/__init__.py rename to plotly/validators/contour/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/stream/_maxpoints.py b/plotly/validators/contour/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/stream/_maxpoints.py rename to plotly/validators/contour/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/contour/stream/_token.py b/plotly/validators/contour/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/stream/_token.py rename to plotly/validators/contour/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/__init__.py b/plotly/validators/contour/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/__init__.py rename to plotly/validators/contour/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_color.py b/plotly/validators/contour/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_color.py rename to plotly/validators/contour/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_family.py b/plotly/validators/contour/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_family.py rename to plotly/validators/contour/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_lineposition.py b/plotly/validators/contour/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_lineposition.py rename to plotly/validators/contour/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_shadow.py b/plotly/validators/contour/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_shadow.py rename to plotly/validators/contour/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_size.py b/plotly/validators/contour/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_size.py rename to plotly/validators/contour/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_style.py b/plotly/validators/contour/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_style.py rename to plotly/validators/contour/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_textcase.py b/plotly/validators/contour/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_textcase.py rename to plotly/validators/contour/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_variant.py b/plotly/validators/contour/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_variant.py rename to plotly/validators/contour/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/contour/textfont/_weight.py b/plotly/validators/contour/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contour/textfont/_weight.py rename to plotly/validators/contour/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/__init__.py b/plotly/validators/contourcarpet/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/__init__.py rename to plotly/validators/contourcarpet/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_a.py b/plotly/validators/contourcarpet/_a.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_a.py rename to plotly/validators/contourcarpet/_a.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_a0.py b/plotly/validators/contourcarpet/_a0.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_a0.py rename to plotly/validators/contourcarpet/_a0.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_asrc.py b/plotly/validators/contourcarpet/_asrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_asrc.py rename to plotly/validators/contourcarpet/_asrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_atype.py b/plotly/validators/contourcarpet/_atype.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_atype.py rename to plotly/validators/contourcarpet/_atype.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_autocolorscale.py b/plotly/validators/contourcarpet/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_autocolorscale.py rename to plotly/validators/contourcarpet/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_autocontour.py b/plotly/validators/contourcarpet/_autocontour.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_autocontour.py rename to plotly/validators/contourcarpet/_autocontour.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_b.py b/plotly/validators/contourcarpet/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_b.py rename to plotly/validators/contourcarpet/_b.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_b0.py b/plotly/validators/contourcarpet/_b0.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_b0.py rename to plotly/validators/contourcarpet/_b0.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_bsrc.py b/plotly/validators/contourcarpet/_bsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_bsrc.py rename to plotly/validators/contourcarpet/_bsrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_btype.py b/plotly/validators/contourcarpet/_btype.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_btype.py rename to plotly/validators/contourcarpet/_btype.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_carpet.py b/plotly/validators/contourcarpet/_carpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_carpet.py rename to plotly/validators/contourcarpet/_carpet.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_coloraxis.py b/plotly/validators/contourcarpet/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_coloraxis.py rename to plotly/validators/contourcarpet/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_colorbar.py b/plotly/validators/contourcarpet/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_colorbar.py rename to plotly/validators/contourcarpet/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_colorscale.py b/plotly/validators/contourcarpet/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_colorscale.py rename to plotly/validators/contourcarpet/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_contours.py b/plotly/validators/contourcarpet/_contours.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_contours.py rename to plotly/validators/contourcarpet/_contours.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_customdata.py b/plotly/validators/contourcarpet/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_customdata.py rename to plotly/validators/contourcarpet/_customdata.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_customdatasrc.py b/plotly/validators/contourcarpet/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_customdatasrc.py rename to plotly/validators/contourcarpet/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_da.py b/plotly/validators/contourcarpet/_da.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_da.py rename to plotly/validators/contourcarpet/_da.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_db.py b/plotly/validators/contourcarpet/_db.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_db.py rename to plotly/validators/contourcarpet/_db.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_fillcolor.py b/plotly/validators/contourcarpet/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_fillcolor.py rename to plotly/validators/contourcarpet/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_hovertext.py b/plotly/validators/contourcarpet/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_hovertext.py rename to plotly/validators/contourcarpet/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_hovertextsrc.py b/plotly/validators/contourcarpet/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_hovertextsrc.py rename to plotly/validators/contourcarpet/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_ids.py b/plotly/validators/contourcarpet/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_ids.py rename to plotly/validators/contourcarpet/_ids.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_idssrc.py b/plotly/validators/contourcarpet/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_idssrc.py rename to plotly/validators/contourcarpet/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_legend.py b/plotly/validators/contourcarpet/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_legend.py rename to plotly/validators/contourcarpet/_legend.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_legendgroup.py b/plotly/validators/contourcarpet/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_legendgroup.py rename to plotly/validators/contourcarpet/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_legendgrouptitle.py b/plotly/validators/contourcarpet/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_legendgrouptitle.py rename to plotly/validators/contourcarpet/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_legendrank.py b/plotly/validators/contourcarpet/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_legendrank.py rename to plotly/validators/contourcarpet/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_legendwidth.py b/plotly/validators/contourcarpet/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_legendwidth.py rename to plotly/validators/contourcarpet/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_line.py b/plotly/validators/contourcarpet/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_line.py rename to plotly/validators/contourcarpet/_line.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_meta.py b/plotly/validators/contourcarpet/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_meta.py rename to plotly/validators/contourcarpet/_meta.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_metasrc.py b/plotly/validators/contourcarpet/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_metasrc.py rename to plotly/validators/contourcarpet/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_name.py b/plotly/validators/contourcarpet/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_name.py rename to plotly/validators/contourcarpet/_name.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_ncontours.py b/plotly/validators/contourcarpet/_ncontours.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_ncontours.py rename to plotly/validators/contourcarpet/_ncontours.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_opacity.py b/plotly/validators/contourcarpet/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_opacity.py rename to plotly/validators/contourcarpet/_opacity.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_reversescale.py b/plotly/validators/contourcarpet/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_reversescale.py rename to plotly/validators/contourcarpet/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_showlegend.py b/plotly/validators/contourcarpet/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_showlegend.py rename to plotly/validators/contourcarpet/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_showscale.py b/plotly/validators/contourcarpet/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_showscale.py rename to plotly/validators/contourcarpet/_showscale.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_stream.py b/plotly/validators/contourcarpet/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_stream.py rename to plotly/validators/contourcarpet/_stream.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_text.py b/plotly/validators/contourcarpet/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_text.py rename to plotly/validators/contourcarpet/_text.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_textsrc.py b/plotly/validators/contourcarpet/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_textsrc.py rename to plotly/validators/contourcarpet/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_transpose.py b/plotly/validators/contourcarpet/_transpose.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_transpose.py rename to plotly/validators/contourcarpet/_transpose.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_uid.py b/plotly/validators/contourcarpet/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_uid.py rename to plotly/validators/contourcarpet/_uid.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_uirevision.py b/plotly/validators/contourcarpet/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_uirevision.py rename to plotly/validators/contourcarpet/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_visible.py b/plotly/validators/contourcarpet/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_visible.py rename to plotly/validators/contourcarpet/_visible.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_xaxis.py b/plotly/validators/contourcarpet/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_xaxis.py rename to plotly/validators/contourcarpet/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_yaxis.py b/plotly/validators/contourcarpet/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_yaxis.py rename to plotly/validators/contourcarpet/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_z.py b/plotly/validators/contourcarpet/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_z.py rename to plotly/validators/contourcarpet/_z.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_zauto.py b/plotly/validators/contourcarpet/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_zauto.py rename to plotly/validators/contourcarpet/_zauto.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_zmax.py b/plotly/validators/contourcarpet/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_zmax.py rename to plotly/validators/contourcarpet/_zmax.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_zmid.py b/plotly/validators/contourcarpet/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_zmid.py rename to plotly/validators/contourcarpet/_zmid.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_zmin.py b/plotly/validators/contourcarpet/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_zmin.py rename to plotly/validators/contourcarpet/_zmin.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_zorder.py b/plotly/validators/contourcarpet/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_zorder.py rename to plotly/validators/contourcarpet/_zorder.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/_zsrc.py b/plotly/validators/contourcarpet/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/_zsrc.py rename to plotly/validators/contourcarpet/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/__init__.py b/plotly/validators/contourcarpet/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/__init__.py rename to plotly/validators/contourcarpet/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_bgcolor.py b/plotly/validators/contourcarpet/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_bgcolor.py rename to plotly/validators/contourcarpet/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_bordercolor.py b/plotly/validators/contourcarpet/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_bordercolor.py rename to plotly/validators/contourcarpet/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_borderwidth.py b/plotly/validators/contourcarpet/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_borderwidth.py rename to plotly/validators/contourcarpet/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_dtick.py b/plotly/validators/contourcarpet/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_dtick.py rename to plotly/validators/contourcarpet/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_exponentformat.py b/plotly/validators/contourcarpet/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_exponentformat.py rename to plotly/validators/contourcarpet/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_labelalias.py b/plotly/validators/contourcarpet/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_labelalias.py rename to plotly/validators/contourcarpet/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_len.py b/plotly/validators/contourcarpet/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_len.py rename to plotly/validators/contourcarpet/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_lenmode.py b/plotly/validators/contourcarpet/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_lenmode.py rename to plotly/validators/contourcarpet/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_minexponent.py b/plotly/validators/contourcarpet/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_minexponent.py rename to plotly/validators/contourcarpet/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_nticks.py b/plotly/validators/contourcarpet/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_nticks.py rename to plotly/validators/contourcarpet/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_orientation.py b/plotly/validators/contourcarpet/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_orientation.py rename to plotly/validators/contourcarpet/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_outlinecolor.py b/plotly/validators/contourcarpet/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_outlinecolor.py rename to plotly/validators/contourcarpet/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_outlinewidth.py b/plotly/validators/contourcarpet/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_outlinewidth.py rename to plotly/validators/contourcarpet/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_separatethousands.py b/plotly/validators/contourcarpet/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_separatethousands.py rename to plotly/validators/contourcarpet/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_showexponent.py b/plotly/validators/contourcarpet/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_showexponent.py rename to plotly/validators/contourcarpet/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_showticklabels.py b/plotly/validators/contourcarpet/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_showticklabels.py rename to plotly/validators/contourcarpet/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_showtickprefix.py b/plotly/validators/contourcarpet/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_showtickprefix.py rename to plotly/validators/contourcarpet/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_showticksuffix.py b/plotly/validators/contourcarpet/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_showticksuffix.py rename to plotly/validators/contourcarpet/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_thickness.py b/plotly/validators/contourcarpet/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_thickness.py rename to plotly/validators/contourcarpet/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_thicknessmode.py b/plotly/validators/contourcarpet/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_thicknessmode.py rename to plotly/validators/contourcarpet/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tick0.py b/plotly/validators/contourcarpet/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tick0.py rename to plotly/validators/contourcarpet/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickangle.py b/plotly/validators/contourcarpet/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickangle.py rename to plotly/validators/contourcarpet/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickcolor.py b/plotly/validators/contourcarpet/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickcolor.py rename to plotly/validators/contourcarpet/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickfont.py b/plotly/validators/contourcarpet/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickfont.py rename to plotly/validators/contourcarpet/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickformat.py b/plotly/validators/contourcarpet/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickformat.py rename to plotly/validators/contourcarpet/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickformatstopdefaults.py b/plotly/validators/contourcarpet/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickformatstopdefaults.py rename to plotly/validators/contourcarpet/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickformatstops.py b/plotly/validators/contourcarpet/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickformatstops.py rename to plotly/validators/contourcarpet/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticklabeloverflow.py b/plotly/validators/contourcarpet/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticklabeloverflow.py rename to plotly/validators/contourcarpet/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticklabelposition.py b/plotly/validators/contourcarpet/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticklabelposition.py rename to plotly/validators/contourcarpet/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticklabelstep.py b/plotly/validators/contourcarpet/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticklabelstep.py rename to plotly/validators/contourcarpet/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticklen.py b/plotly/validators/contourcarpet/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticklen.py rename to plotly/validators/contourcarpet/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickmode.py b/plotly/validators/contourcarpet/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickmode.py rename to plotly/validators/contourcarpet/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickprefix.py b/plotly/validators/contourcarpet/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickprefix.py rename to plotly/validators/contourcarpet/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticks.py b/plotly/validators/contourcarpet/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticks.py rename to plotly/validators/contourcarpet/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticksuffix.py b/plotly/validators/contourcarpet/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticksuffix.py rename to plotly/validators/contourcarpet/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticktext.py b/plotly/validators/contourcarpet/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticktext.py rename to plotly/validators/contourcarpet/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticktextsrc.py b/plotly/validators/contourcarpet/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ticktextsrc.py rename to plotly/validators/contourcarpet/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickvals.py b/plotly/validators/contourcarpet/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickvals.py rename to plotly/validators/contourcarpet/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickvalssrc.py b/plotly/validators/contourcarpet/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickvalssrc.py rename to plotly/validators/contourcarpet/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickwidth.py b/plotly/validators/contourcarpet/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_tickwidth.py rename to plotly/validators/contourcarpet/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_title.py b/plotly/validators/contourcarpet/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_title.py rename to plotly/validators/contourcarpet/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_x.py b/plotly/validators/contourcarpet/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_x.py rename to plotly/validators/contourcarpet/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_xanchor.py b/plotly/validators/contourcarpet/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_xanchor.py rename to plotly/validators/contourcarpet/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_xpad.py b/plotly/validators/contourcarpet/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_xpad.py rename to plotly/validators/contourcarpet/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_xref.py b/plotly/validators/contourcarpet/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_xref.py rename to plotly/validators/contourcarpet/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_y.py b/plotly/validators/contourcarpet/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_y.py rename to plotly/validators/contourcarpet/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_yanchor.py b/plotly/validators/contourcarpet/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_yanchor.py rename to plotly/validators/contourcarpet/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ypad.py b/plotly/validators/contourcarpet/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_ypad.py rename to plotly/validators/contourcarpet/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/_yref.py b/plotly/validators/contourcarpet/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/_yref.py rename to plotly/validators/contourcarpet/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/__init__.py b/plotly/validators/contourcarpet/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/__init__.py rename to plotly/validators/contourcarpet/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_color.py b/plotly/validators/contourcarpet/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_color.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_family.py b/plotly/validators/contourcarpet/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_family.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_lineposition.py b/plotly/validators/contourcarpet/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_lineposition.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_shadow.py b/plotly/validators/contourcarpet/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_shadow.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_size.py b/plotly/validators/contourcarpet/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_size.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_style.py b/plotly/validators/contourcarpet/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_style.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_textcase.py b/plotly/validators/contourcarpet/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_textcase.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_variant.py b/plotly/validators/contourcarpet/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_variant.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_weight.py b/plotly/validators/contourcarpet/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickfont/_weight.py rename to plotly/validators/contourcarpet/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/__init__.py b/plotly/validators/contourcarpet/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/__init__.py rename to plotly/validators/contourcarpet/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/contourcarpet/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/contourcarpet/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_enabled.py b/plotly/validators/contourcarpet/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_enabled.py rename to plotly/validators/contourcarpet/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_name.py b/plotly/validators/contourcarpet/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_name.py rename to plotly/validators/contourcarpet/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/contourcarpet/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/contourcarpet/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_value.py b/plotly/validators/contourcarpet/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/tickformatstop/_value.py rename to plotly/validators/contourcarpet/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/__init__.py b/plotly/validators/contourcarpet/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/__init__.py rename to plotly/validators/contourcarpet/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/_font.py b/plotly/validators/contourcarpet/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/_font.py rename to plotly/validators/contourcarpet/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/_side.py b/plotly/validators/contourcarpet/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/_side.py rename to plotly/validators/contourcarpet/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/_text.py b/plotly/validators/contourcarpet/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/_text.py rename to plotly/validators/contourcarpet/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/__init__.py b/plotly/validators/contourcarpet/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/__init__.py rename to plotly/validators/contourcarpet/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_color.py b/plotly/validators/contourcarpet/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_color.py rename to plotly/validators/contourcarpet/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_family.py b/plotly/validators/contourcarpet/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_family.py rename to plotly/validators/contourcarpet/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_lineposition.py b/plotly/validators/contourcarpet/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_lineposition.py rename to plotly/validators/contourcarpet/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_shadow.py b/plotly/validators/contourcarpet/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_shadow.py rename to plotly/validators/contourcarpet/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_size.py b/plotly/validators/contourcarpet/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_size.py rename to plotly/validators/contourcarpet/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_style.py b/plotly/validators/contourcarpet/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_style.py rename to plotly/validators/contourcarpet/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_textcase.py b/plotly/validators/contourcarpet/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_textcase.py rename to plotly/validators/contourcarpet/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_variant.py b/plotly/validators/contourcarpet/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_variant.py rename to plotly/validators/contourcarpet/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_weight.py b/plotly/validators/contourcarpet/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/colorbar/title/font/_weight.py rename to plotly/validators/contourcarpet/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/__init__.py b/plotly/validators/contourcarpet/contours/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/__init__.py rename to plotly/validators/contourcarpet/contours/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_coloring.py b/plotly/validators/contourcarpet/contours/_coloring.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_coloring.py rename to plotly/validators/contourcarpet/contours/_coloring.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_end.py b/plotly/validators/contourcarpet/contours/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_end.py rename to plotly/validators/contourcarpet/contours/_end.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_labelfont.py b/plotly/validators/contourcarpet/contours/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_labelfont.py rename to plotly/validators/contourcarpet/contours/_labelfont.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_labelformat.py b/plotly/validators/contourcarpet/contours/_labelformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_labelformat.py rename to plotly/validators/contourcarpet/contours/_labelformat.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_operation.py b/plotly/validators/contourcarpet/contours/_operation.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_operation.py rename to plotly/validators/contourcarpet/contours/_operation.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_showlabels.py b/plotly/validators/contourcarpet/contours/_showlabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_showlabels.py rename to plotly/validators/contourcarpet/contours/_showlabels.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_showlines.py b/plotly/validators/contourcarpet/contours/_showlines.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_showlines.py rename to plotly/validators/contourcarpet/contours/_showlines.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_size.py b/plotly/validators/contourcarpet/contours/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_size.py rename to plotly/validators/contourcarpet/contours/_size.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_start.py b/plotly/validators/contourcarpet/contours/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_start.py rename to plotly/validators/contourcarpet/contours/_start.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_type.py b/plotly/validators/contourcarpet/contours/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_type.py rename to plotly/validators/contourcarpet/contours/_type.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/_value.py b/plotly/validators/contourcarpet/contours/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/_value.py rename to plotly/validators/contourcarpet/contours/_value.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/__init__.py b/plotly/validators/contourcarpet/contours/labelfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/__init__.py rename to plotly/validators/contourcarpet/contours/labelfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_color.py b/plotly/validators/contourcarpet/contours/labelfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_color.py rename to plotly/validators/contourcarpet/contours/labelfont/_color.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_family.py b/plotly/validators/contourcarpet/contours/labelfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_family.py rename to plotly/validators/contourcarpet/contours/labelfont/_family.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_lineposition.py b/plotly/validators/contourcarpet/contours/labelfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_lineposition.py rename to plotly/validators/contourcarpet/contours/labelfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_shadow.py b/plotly/validators/contourcarpet/contours/labelfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_shadow.py rename to plotly/validators/contourcarpet/contours/labelfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_size.py b/plotly/validators/contourcarpet/contours/labelfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_size.py rename to plotly/validators/contourcarpet/contours/labelfont/_size.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_style.py b/plotly/validators/contourcarpet/contours/labelfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_style.py rename to plotly/validators/contourcarpet/contours/labelfont/_style.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_textcase.py b/plotly/validators/contourcarpet/contours/labelfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_textcase.py rename to plotly/validators/contourcarpet/contours/labelfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_variant.py b/plotly/validators/contourcarpet/contours/labelfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_variant.py rename to plotly/validators/contourcarpet/contours/labelfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_weight.py b/plotly/validators/contourcarpet/contours/labelfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/contours/labelfont/_weight.py rename to plotly/validators/contourcarpet/contours/labelfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/__init__.py b/plotly/validators/contourcarpet/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/__init__.py rename to plotly/validators/contourcarpet/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/_font.py b/plotly/validators/contourcarpet/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/_font.py rename to plotly/validators/contourcarpet/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/_text.py b/plotly/validators/contourcarpet/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/_text.py rename to plotly/validators/contourcarpet/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/__init__.py b/plotly/validators/contourcarpet/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/__init__.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_color.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_color.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_family.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_family.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_lineposition.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_lineposition.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_shadow.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_shadow.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_size.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_size.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_style.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_style.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_textcase.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_textcase.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_variant.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_variant.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_weight.py b/plotly/validators/contourcarpet/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/legendgrouptitle/font/_weight.py rename to plotly/validators/contourcarpet/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/line/__init__.py b/plotly/validators/contourcarpet/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/line/__init__.py rename to plotly/validators/contourcarpet/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/line/_color.py b/plotly/validators/contourcarpet/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/line/_color.py rename to plotly/validators/contourcarpet/line/_color.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/line/_dash.py b/plotly/validators/contourcarpet/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/line/_dash.py rename to plotly/validators/contourcarpet/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/line/_smoothing.py b/plotly/validators/contourcarpet/line/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/line/_smoothing.py rename to plotly/validators/contourcarpet/line/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/line/_width.py b/plotly/validators/contourcarpet/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/line/_width.py rename to plotly/validators/contourcarpet/line/_width.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/stream/__init__.py b/plotly/validators/contourcarpet/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/stream/__init__.py rename to plotly/validators/contourcarpet/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/stream/_maxpoints.py b/plotly/validators/contourcarpet/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/stream/_maxpoints.py rename to plotly/validators/contourcarpet/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/contourcarpet/stream/_token.py b/plotly/validators/contourcarpet/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/contourcarpet/stream/_token.py rename to plotly/validators/contourcarpet/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/densitymap/__init__.py b/plotly/validators/densitymap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/__init__.py rename to plotly/validators/densitymap/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_autocolorscale.py b/plotly/validators/densitymap/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_autocolorscale.py rename to plotly/validators/densitymap/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_below.py b/plotly/validators/densitymap/_below.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_below.py rename to plotly/validators/densitymap/_below.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_coloraxis.py b/plotly/validators/densitymap/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_coloraxis.py rename to plotly/validators/densitymap/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_colorbar.py b/plotly/validators/densitymap/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_colorbar.py rename to plotly/validators/densitymap/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_colorscale.py b/plotly/validators/densitymap/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_colorscale.py rename to plotly/validators/densitymap/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_customdata.py b/plotly/validators/densitymap/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_customdata.py rename to plotly/validators/densitymap/_customdata.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_customdatasrc.py b/plotly/validators/densitymap/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_customdatasrc.py rename to plotly/validators/densitymap/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_hoverinfo.py b/plotly/validators/densitymap/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_hoverinfo.py rename to plotly/validators/densitymap/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_hoverinfosrc.py b/plotly/validators/densitymap/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_hoverinfosrc.py rename to plotly/validators/densitymap/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_hoverlabel.py b/plotly/validators/densitymap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_hoverlabel.py rename to plotly/validators/densitymap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_hovertemplate.py b/plotly/validators/densitymap/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_hovertemplate.py rename to plotly/validators/densitymap/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_hovertemplatesrc.py b/plotly/validators/densitymap/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_hovertemplatesrc.py rename to plotly/validators/densitymap/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_hovertext.py b/plotly/validators/densitymap/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_hovertext.py rename to plotly/validators/densitymap/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_hovertextsrc.py b/plotly/validators/densitymap/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_hovertextsrc.py rename to plotly/validators/densitymap/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_ids.py b/plotly/validators/densitymap/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_ids.py rename to plotly/validators/densitymap/_ids.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_idssrc.py b/plotly/validators/densitymap/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_idssrc.py rename to plotly/validators/densitymap/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_lat.py b/plotly/validators/densitymap/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_lat.py rename to plotly/validators/densitymap/_lat.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_latsrc.py b/plotly/validators/densitymap/_latsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_latsrc.py rename to plotly/validators/densitymap/_latsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_legend.py b/plotly/validators/densitymap/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_legend.py rename to plotly/validators/densitymap/_legend.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_legendgroup.py b/plotly/validators/densitymap/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_legendgroup.py rename to plotly/validators/densitymap/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_legendgrouptitle.py b/plotly/validators/densitymap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_legendgrouptitle.py rename to plotly/validators/densitymap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_legendrank.py b/plotly/validators/densitymap/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_legendrank.py rename to plotly/validators/densitymap/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_legendwidth.py b/plotly/validators/densitymap/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_legendwidth.py rename to plotly/validators/densitymap/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_lon.py b/plotly/validators/densitymap/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_lon.py rename to plotly/validators/densitymap/_lon.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_lonsrc.py b/plotly/validators/densitymap/_lonsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_lonsrc.py rename to plotly/validators/densitymap/_lonsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_meta.py b/plotly/validators/densitymap/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_meta.py rename to plotly/validators/densitymap/_meta.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_metasrc.py b/plotly/validators/densitymap/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_metasrc.py rename to plotly/validators/densitymap/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_name.py b/plotly/validators/densitymap/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_name.py rename to plotly/validators/densitymap/_name.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_opacity.py b/plotly/validators/densitymap/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_opacity.py rename to plotly/validators/densitymap/_opacity.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_radius.py b/plotly/validators/densitymap/_radius.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_radius.py rename to plotly/validators/densitymap/_radius.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_radiussrc.py b/plotly/validators/densitymap/_radiussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_radiussrc.py rename to plotly/validators/densitymap/_radiussrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_reversescale.py b/plotly/validators/densitymap/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_reversescale.py rename to plotly/validators/densitymap/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_showlegend.py b/plotly/validators/densitymap/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_showlegend.py rename to plotly/validators/densitymap/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_showscale.py b/plotly/validators/densitymap/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_showscale.py rename to plotly/validators/densitymap/_showscale.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_stream.py b/plotly/validators/densitymap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_stream.py rename to plotly/validators/densitymap/_stream.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_subplot.py b/plotly/validators/densitymap/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_subplot.py rename to plotly/validators/densitymap/_subplot.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_text.py b/plotly/validators/densitymap/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_text.py rename to plotly/validators/densitymap/_text.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_textsrc.py b/plotly/validators/densitymap/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_textsrc.py rename to plotly/validators/densitymap/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_uid.py b/plotly/validators/densitymap/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_uid.py rename to plotly/validators/densitymap/_uid.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_uirevision.py b/plotly/validators/densitymap/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_uirevision.py rename to plotly/validators/densitymap/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_visible.py b/plotly/validators/densitymap/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_visible.py rename to plotly/validators/densitymap/_visible.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_z.py b/plotly/validators/densitymap/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_z.py rename to plotly/validators/densitymap/_z.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_zauto.py b/plotly/validators/densitymap/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_zauto.py rename to plotly/validators/densitymap/_zauto.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_zmax.py b/plotly/validators/densitymap/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_zmax.py rename to plotly/validators/densitymap/_zmax.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_zmid.py b/plotly/validators/densitymap/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_zmid.py rename to plotly/validators/densitymap/_zmid.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_zmin.py b/plotly/validators/densitymap/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_zmin.py rename to plotly/validators/densitymap/_zmin.py diff --git a/packages/python/plotly/plotly/validators/densitymap/_zsrc.py b/plotly/validators/densitymap/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/_zsrc.py rename to plotly/validators/densitymap/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/__init__.py b/plotly/validators/densitymap/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/__init__.py rename to plotly/validators/densitymap/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_bgcolor.py b/plotly/validators/densitymap/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_bgcolor.py rename to plotly/validators/densitymap/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_bordercolor.py b/plotly/validators/densitymap/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_bordercolor.py rename to plotly/validators/densitymap/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_borderwidth.py b/plotly/validators/densitymap/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_borderwidth.py rename to plotly/validators/densitymap/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_dtick.py b/plotly/validators/densitymap/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_dtick.py rename to plotly/validators/densitymap/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_exponentformat.py b/plotly/validators/densitymap/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_exponentformat.py rename to plotly/validators/densitymap/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_labelalias.py b/plotly/validators/densitymap/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_labelalias.py rename to plotly/validators/densitymap/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_len.py b/plotly/validators/densitymap/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_len.py rename to plotly/validators/densitymap/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_lenmode.py b/plotly/validators/densitymap/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_lenmode.py rename to plotly/validators/densitymap/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_minexponent.py b/plotly/validators/densitymap/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_minexponent.py rename to plotly/validators/densitymap/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_nticks.py b/plotly/validators/densitymap/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_nticks.py rename to plotly/validators/densitymap/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_orientation.py b/plotly/validators/densitymap/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_orientation.py rename to plotly/validators/densitymap/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_outlinecolor.py b/plotly/validators/densitymap/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_outlinecolor.py rename to plotly/validators/densitymap/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_outlinewidth.py b/plotly/validators/densitymap/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_outlinewidth.py rename to plotly/validators/densitymap/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_separatethousands.py b/plotly/validators/densitymap/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_separatethousands.py rename to plotly/validators/densitymap/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_showexponent.py b/plotly/validators/densitymap/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_showexponent.py rename to plotly/validators/densitymap/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_showticklabels.py b/plotly/validators/densitymap/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_showticklabels.py rename to plotly/validators/densitymap/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_showtickprefix.py b/plotly/validators/densitymap/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_showtickprefix.py rename to plotly/validators/densitymap/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_showticksuffix.py b/plotly/validators/densitymap/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_showticksuffix.py rename to plotly/validators/densitymap/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_thickness.py b/plotly/validators/densitymap/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_thickness.py rename to plotly/validators/densitymap/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_thicknessmode.py b/plotly/validators/densitymap/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_thicknessmode.py rename to plotly/validators/densitymap/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tick0.py b/plotly/validators/densitymap/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tick0.py rename to plotly/validators/densitymap/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickangle.py b/plotly/validators/densitymap/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickangle.py rename to plotly/validators/densitymap/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickcolor.py b/plotly/validators/densitymap/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickcolor.py rename to plotly/validators/densitymap/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickfont.py b/plotly/validators/densitymap/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickfont.py rename to plotly/validators/densitymap/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickformat.py b/plotly/validators/densitymap/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickformat.py rename to plotly/validators/densitymap/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickformatstopdefaults.py b/plotly/validators/densitymap/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickformatstopdefaults.py rename to plotly/validators/densitymap/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickformatstops.py b/plotly/validators/densitymap/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickformatstops.py rename to plotly/validators/densitymap/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ticklabeloverflow.py b/plotly/validators/densitymap/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ticklabeloverflow.py rename to plotly/validators/densitymap/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ticklabelposition.py b/plotly/validators/densitymap/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ticklabelposition.py rename to plotly/validators/densitymap/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ticklabelstep.py b/plotly/validators/densitymap/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ticklabelstep.py rename to plotly/validators/densitymap/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ticklen.py b/plotly/validators/densitymap/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ticklen.py rename to plotly/validators/densitymap/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickmode.py b/plotly/validators/densitymap/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickmode.py rename to plotly/validators/densitymap/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickprefix.py b/plotly/validators/densitymap/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickprefix.py rename to plotly/validators/densitymap/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ticks.py b/plotly/validators/densitymap/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ticks.py rename to plotly/validators/densitymap/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ticksuffix.py b/plotly/validators/densitymap/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ticksuffix.py rename to plotly/validators/densitymap/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ticktext.py b/plotly/validators/densitymap/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ticktext.py rename to plotly/validators/densitymap/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ticktextsrc.py b/plotly/validators/densitymap/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ticktextsrc.py rename to plotly/validators/densitymap/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickvals.py b/plotly/validators/densitymap/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickvals.py rename to plotly/validators/densitymap/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickvalssrc.py b/plotly/validators/densitymap/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickvalssrc.py rename to plotly/validators/densitymap/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_tickwidth.py b/plotly/validators/densitymap/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_tickwidth.py rename to plotly/validators/densitymap/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_title.py b/plotly/validators/densitymap/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_title.py rename to plotly/validators/densitymap/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_x.py b/plotly/validators/densitymap/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_x.py rename to plotly/validators/densitymap/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_xanchor.py b/plotly/validators/densitymap/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_xanchor.py rename to plotly/validators/densitymap/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_xpad.py b/plotly/validators/densitymap/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_xpad.py rename to plotly/validators/densitymap/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_xref.py b/plotly/validators/densitymap/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_xref.py rename to plotly/validators/densitymap/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_y.py b/plotly/validators/densitymap/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_y.py rename to plotly/validators/densitymap/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_yanchor.py b/plotly/validators/densitymap/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_yanchor.py rename to plotly/validators/densitymap/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_ypad.py b/plotly/validators/densitymap/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_ypad.py rename to plotly/validators/densitymap/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/_yref.py b/plotly/validators/densitymap/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/_yref.py rename to plotly/validators/densitymap/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/__init__.py b/plotly/validators/densitymap/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/__init__.py rename to plotly/validators/densitymap/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_color.py b/plotly/validators/densitymap/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_color.py rename to plotly/validators/densitymap/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_family.py b/plotly/validators/densitymap/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_family.py rename to plotly/validators/densitymap/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_lineposition.py b/plotly/validators/densitymap/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_lineposition.py rename to plotly/validators/densitymap/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_shadow.py b/plotly/validators/densitymap/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_shadow.py rename to plotly/validators/densitymap/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_size.py b/plotly/validators/densitymap/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_size.py rename to plotly/validators/densitymap/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_style.py b/plotly/validators/densitymap/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_style.py rename to plotly/validators/densitymap/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_textcase.py b/plotly/validators/densitymap/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_textcase.py rename to plotly/validators/densitymap/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_variant.py b/plotly/validators/densitymap/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_variant.py rename to plotly/validators/densitymap/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_weight.py b/plotly/validators/densitymap/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickfont/_weight.py rename to plotly/validators/densitymap/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/__init__.py b/plotly/validators/densitymap/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/__init__.py rename to plotly/validators/densitymap/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/densitymap/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/densitymap/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_enabled.py b/plotly/validators/densitymap/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_enabled.py rename to plotly/validators/densitymap/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_name.py b/plotly/validators/densitymap/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_name.py rename to plotly/validators/densitymap/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/densitymap/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/densitymap/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_value.py b/plotly/validators/densitymap/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/tickformatstop/_value.py rename to plotly/validators/densitymap/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/__init__.py b/plotly/validators/densitymap/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/__init__.py rename to plotly/validators/densitymap/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/_font.py b/plotly/validators/densitymap/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/_font.py rename to plotly/validators/densitymap/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/_side.py b/plotly/validators/densitymap/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/_side.py rename to plotly/validators/densitymap/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/_text.py b/plotly/validators/densitymap/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/_text.py rename to plotly/validators/densitymap/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/__init__.py b/plotly/validators/densitymap/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/__init__.py rename to plotly/validators/densitymap/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_color.py b/plotly/validators/densitymap/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_color.py rename to plotly/validators/densitymap/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_family.py b/plotly/validators/densitymap/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_family.py rename to plotly/validators/densitymap/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_lineposition.py b/plotly/validators/densitymap/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_lineposition.py rename to plotly/validators/densitymap/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_shadow.py b/plotly/validators/densitymap/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_shadow.py rename to plotly/validators/densitymap/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_size.py b/plotly/validators/densitymap/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_size.py rename to plotly/validators/densitymap/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_style.py b/plotly/validators/densitymap/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_style.py rename to plotly/validators/densitymap/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_textcase.py b/plotly/validators/densitymap/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_textcase.py rename to plotly/validators/densitymap/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_variant.py b/plotly/validators/densitymap/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_variant.py rename to plotly/validators/densitymap/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_weight.py b/plotly/validators/densitymap/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/colorbar/title/font/_weight.py rename to plotly/validators/densitymap/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/__init__.py b/plotly/validators/densitymap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/__init__.py rename to plotly/validators/densitymap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_align.py b/plotly/validators/densitymap/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_align.py rename to plotly/validators/densitymap/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_alignsrc.py b/plotly/validators/densitymap/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_alignsrc.py rename to plotly/validators/densitymap/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_bgcolor.py b/plotly/validators/densitymap/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_bgcolor.py rename to plotly/validators/densitymap/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_bgcolorsrc.py b/plotly/validators/densitymap/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_bgcolorsrc.py rename to plotly/validators/densitymap/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_bordercolor.py b/plotly/validators/densitymap/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_bordercolor.py rename to plotly/validators/densitymap/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_bordercolorsrc.py b/plotly/validators/densitymap/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_bordercolorsrc.py rename to plotly/validators/densitymap/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_font.py b/plotly/validators/densitymap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_font.py rename to plotly/validators/densitymap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_namelength.py b/plotly/validators/densitymap/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_namelength.py rename to plotly/validators/densitymap/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/_namelengthsrc.py b/plotly/validators/densitymap/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/_namelengthsrc.py rename to plotly/validators/densitymap/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/__init__.py b/plotly/validators/densitymap/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/__init__.py rename to plotly/validators/densitymap/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_color.py b/plotly/validators/densitymap/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_color.py rename to plotly/validators/densitymap/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_colorsrc.py b/plotly/validators/densitymap/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_colorsrc.py rename to plotly/validators/densitymap/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_family.py b/plotly/validators/densitymap/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_family.py rename to plotly/validators/densitymap/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_familysrc.py b/plotly/validators/densitymap/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_familysrc.py rename to plotly/validators/densitymap/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_lineposition.py b/plotly/validators/densitymap/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_lineposition.py rename to plotly/validators/densitymap/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_linepositionsrc.py b/plotly/validators/densitymap/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/densitymap/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_shadow.py b/plotly/validators/densitymap/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_shadow.py rename to plotly/validators/densitymap/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_shadowsrc.py b/plotly/validators/densitymap/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_shadowsrc.py rename to plotly/validators/densitymap/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_size.py b/plotly/validators/densitymap/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_size.py rename to plotly/validators/densitymap/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_sizesrc.py b/plotly/validators/densitymap/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_sizesrc.py rename to plotly/validators/densitymap/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_style.py b/plotly/validators/densitymap/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_style.py rename to plotly/validators/densitymap/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_stylesrc.py b/plotly/validators/densitymap/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_stylesrc.py rename to plotly/validators/densitymap/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_textcase.py b/plotly/validators/densitymap/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_textcase.py rename to plotly/validators/densitymap/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_textcasesrc.py b/plotly/validators/densitymap/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_textcasesrc.py rename to plotly/validators/densitymap/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_variant.py b/plotly/validators/densitymap/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_variant.py rename to plotly/validators/densitymap/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_variantsrc.py b/plotly/validators/densitymap/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_variantsrc.py rename to plotly/validators/densitymap/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_weight.py b/plotly/validators/densitymap/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_weight.py rename to plotly/validators/densitymap/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_weightsrc.py b/plotly/validators/densitymap/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/hoverlabel/font/_weightsrc.py rename to plotly/validators/densitymap/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/__init__.py b/plotly/validators/densitymap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/__init__.py rename to plotly/validators/densitymap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/_font.py b/plotly/validators/densitymap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/_font.py rename to plotly/validators/densitymap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/_text.py b/plotly/validators/densitymap/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/_text.py rename to plotly/validators/densitymap/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/__init__.py b/plotly/validators/densitymap/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/__init__.py rename to plotly/validators/densitymap/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_color.py b/plotly/validators/densitymap/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_color.py rename to plotly/validators/densitymap/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_family.py b/plotly/validators/densitymap/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_family.py rename to plotly/validators/densitymap/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_lineposition.py b/plotly/validators/densitymap/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_lineposition.py rename to plotly/validators/densitymap/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_shadow.py b/plotly/validators/densitymap/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_shadow.py rename to plotly/validators/densitymap/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_size.py b/plotly/validators/densitymap/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_size.py rename to plotly/validators/densitymap/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_style.py b/plotly/validators/densitymap/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_style.py rename to plotly/validators/densitymap/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_textcase.py b/plotly/validators/densitymap/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_textcase.py rename to plotly/validators/densitymap/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_variant.py b/plotly/validators/densitymap/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_variant.py rename to plotly/validators/densitymap/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_weight.py b/plotly/validators/densitymap/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/legendgrouptitle/font/_weight.py rename to plotly/validators/densitymap/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/densitymap/stream/__init__.py b/plotly/validators/densitymap/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/stream/__init__.py rename to plotly/validators/densitymap/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymap/stream/_maxpoints.py b/plotly/validators/densitymap/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/stream/_maxpoints.py rename to plotly/validators/densitymap/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/densitymap/stream/_token.py b/plotly/validators/densitymap/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymap/stream/_token.py rename to plotly/validators/densitymap/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/__init__.py b/plotly/validators/densitymapbox/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/__init__.py rename to plotly/validators/densitymapbox/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_autocolorscale.py b/plotly/validators/densitymapbox/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_autocolorscale.py rename to plotly/validators/densitymapbox/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_below.py b/plotly/validators/densitymapbox/_below.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_below.py rename to plotly/validators/densitymapbox/_below.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_coloraxis.py b/plotly/validators/densitymapbox/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_coloraxis.py rename to plotly/validators/densitymapbox/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_colorbar.py b/plotly/validators/densitymapbox/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_colorbar.py rename to plotly/validators/densitymapbox/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_colorscale.py b/plotly/validators/densitymapbox/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_colorscale.py rename to plotly/validators/densitymapbox/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_customdata.py b/plotly/validators/densitymapbox/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_customdata.py rename to plotly/validators/densitymapbox/_customdata.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_customdatasrc.py b/plotly/validators/densitymapbox/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_customdatasrc.py rename to plotly/validators/densitymapbox/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_hoverinfo.py b/plotly/validators/densitymapbox/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_hoverinfo.py rename to plotly/validators/densitymapbox/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_hoverinfosrc.py b/plotly/validators/densitymapbox/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_hoverinfosrc.py rename to plotly/validators/densitymapbox/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_hoverlabel.py b/plotly/validators/densitymapbox/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_hoverlabel.py rename to plotly/validators/densitymapbox/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_hovertemplate.py b/plotly/validators/densitymapbox/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_hovertemplate.py rename to plotly/validators/densitymapbox/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_hovertemplatesrc.py b/plotly/validators/densitymapbox/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_hovertemplatesrc.py rename to plotly/validators/densitymapbox/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_hovertext.py b/plotly/validators/densitymapbox/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_hovertext.py rename to plotly/validators/densitymapbox/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_hovertextsrc.py b/plotly/validators/densitymapbox/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_hovertextsrc.py rename to plotly/validators/densitymapbox/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_ids.py b/plotly/validators/densitymapbox/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_ids.py rename to plotly/validators/densitymapbox/_ids.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_idssrc.py b/plotly/validators/densitymapbox/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_idssrc.py rename to plotly/validators/densitymapbox/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_lat.py b/plotly/validators/densitymapbox/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_lat.py rename to plotly/validators/densitymapbox/_lat.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_latsrc.py b/plotly/validators/densitymapbox/_latsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_latsrc.py rename to plotly/validators/densitymapbox/_latsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_legend.py b/plotly/validators/densitymapbox/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_legend.py rename to plotly/validators/densitymapbox/_legend.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_legendgroup.py b/plotly/validators/densitymapbox/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_legendgroup.py rename to plotly/validators/densitymapbox/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_legendgrouptitle.py b/plotly/validators/densitymapbox/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_legendgrouptitle.py rename to plotly/validators/densitymapbox/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_legendrank.py b/plotly/validators/densitymapbox/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_legendrank.py rename to plotly/validators/densitymapbox/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_legendwidth.py b/plotly/validators/densitymapbox/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_legendwidth.py rename to plotly/validators/densitymapbox/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_lon.py b/plotly/validators/densitymapbox/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_lon.py rename to plotly/validators/densitymapbox/_lon.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_lonsrc.py b/plotly/validators/densitymapbox/_lonsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_lonsrc.py rename to plotly/validators/densitymapbox/_lonsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_meta.py b/plotly/validators/densitymapbox/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_meta.py rename to plotly/validators/densitymapbox/_meta.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_metasrc.py b/plotly/validators/densitymapbox/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_metasrc.py rename to plotly/validators/densitymapbox/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_name.py b/plotly/validators/densitymapbox/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_name.py rename to plotly/validators/densitymapbox/_name.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_opacity.py b/plotly/validators/densitymapbox/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_opacity.py rename to plotly/validators/densitymapbox/_opacity.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_radius.py b/plotly/validators/densitymapbox/_radius.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_radius.py rename to plotly/validators/densitymapbox/_radius.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_radiussrc.py b/plotly/validators/densitymapbox/_radiussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_radiussrc.py rename to plotly/validators/densitymapbox/_radiussrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_reversescale.py b/plotly/validators/densitymapbox/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_reversescale.py rename to plotly/validators/densitymapbox/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_showlegend.py b/plotly/validators/densitymapbox/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_showlegend.py rename to plotly/validators/densitymapbox/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_showscale.py b/plotly/validators/densitymapbox/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_showscale.py rename to plotly/validators/densitymapbox/_showscale.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_stream.py b/plotly/validators/densitymapbox/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_stream.py rename to plotly/validators/densitymapbox/_stream.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_subplot.py b/plotly/validators/densitymapbox/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_subplot.py rename to plotly/validators/densitymapbox/_subplot.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_text.py b/plotly/validators/densitymapbox/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_text.py rename to plotly/validators/densitymapbox/_text.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_textsrc.py b/plotly/validators/densitymapbox/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_textsrc.py rename to plotly/validators/densitymapbox/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_uid.py b/plotly/validators/densitymapbox/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_uid.py rename to plotly/validators/densitymapbox/_uid.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_uirevision.py b/plotly/validators/densitymapbox/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_uirevision.py rename to plotly/validators/densitymapbox/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_visible.py b/plotly/validators/densitymapbox/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_visible.py rename to plotly/validators/densitymapbox/_visible.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_z.py b/plotly/validators/densitymapbox/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_z.py rename to plotly/validators/densitymapbox/_z.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_zauto.py b/plotly/validators/densitymapbox/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_zauto.py rename to plotly/validators/densitymapbox/_zauto.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_zmax.py b/plotly/validators/densitymapbox/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_zmax.py rename to plotly/validators/densitymapbox/_zmax.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_zmid.py b/plotly/validators/densitymapbox/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_zmid.py rename to plotly/validators/densitymapbox/_zmid.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_zmin.py b/plotly/validators/densitymapbox/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_zmin.py rename to plotly/validators/densitymapbox/_zmin.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/_zsrc.py b/plotly/validators/densitymapbox/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/_zsrc.py rename to plotly/validators/densitymapbox/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/__init__.py b/plotly/validators/densitymapbox/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/__init__.py rename to plotly/validators/densitymapbox/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_bgcolor.py b/plotly/validators/densitymapbox/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_bgcolor.py rename to plotly/validators/densitymapbox/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_bordercolor.py b/plotly/validators/densitymapbox/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_bordercolor.py rename to plotly/validators/densitymapbox/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_borderwidth.py b/plotly/validators/densitymapbox/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_borderwidth.py rename to plotly/validators/densitymapbox/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_dtick.py b/plotly/validators/densitymapbox/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_dtick.py rename to plotly/validators/densitymapbox/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_exponentformat.py b/plotly/validators/densitymapbox/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_exponentformat.py rename to plotly/validators/densitymapbox/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_labelalias.py b/plotly/validators/densitymapbox/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_labelalias.py rename to plotly/validators/densitymapbox/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_len.py b/plotly/validators/densitymapbox/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_len.py rename to plotly/validators/densitymapbox/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_lenmode.py b/plotly/validators/densitymapbox/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_lenmode.py rename to plotly/validators/densitymapbox/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_minexponent.py b/plotly/validators/densitymapbox/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_minexponent.py rename to plotly/validators/densitymapbox/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_nticks.py b/plotly/validators/densitymapbox/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_nticks.py rename to plotly/validators/densitymapbox/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_orientation.py b/plotly/validators/densitymapbox/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_orientation.py rename to plotly/validators/densitymapbox/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_outlinecolor.py b/plotly/validators/densitymapbox/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_outlinecolor.py rename to plotly/validators/densitymapbox/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_outlinewidth.py b/plotly/validators/densitymapbox/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_outlinewidth.py rename to plotly/validators/densitymapbox/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_separatethousands.py b/plotly/validators/densitymapbox/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_separatethousands.py rename to plotly/validators/densitymapbox/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_showexponent.py b/plotly/validators/densitymapbox/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_showexponent.py rename to plotly/validators/densitymapbox/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_showticklabels.py b/plotly/validators/densitymapbox/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_showticklabels.py rename to plotly/validators/densitymapbox/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_showtickprefix.py b/plotly/validators/densitymapbox/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_showtickprefix.py rename to plotly/validators/densitymapbox/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_showticksuffix.py b/plotly/validators/densitymapbox/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_showticksuffix.py rename to plotly/validators/densitymapbox/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_thickness.py b/plotly/validators/densitymapbox/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_thickness.py rename to plotly/validators/densitymapbox/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_thicknessmode.py b/plotly/validators/densitymapbox/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_thicknessmode.py rename to plotly/validators/densitymapbox/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tick0.py b/plotly/validators/densitymapbox/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tick0.py rename to plotly/validators/densitymapbox/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickangle.py b/plotly/validators/densitymapbox/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickangle.py rename to plotly/validators/densitymapbox/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickcolor.py b/plotly/validators/densitymapbox/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickcolor.py rename to plotly/validators/densitymapbox/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickfont.py b/plotly/validators/densitymapbox/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickfont.py rename to plotly/validators/densitymapbox/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickformat.py b/plotly/validators/densitymapbox/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickformat.py rename to plotly/validators/densitymapbox/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickformatstopdefaults.py b/plotly/validators/densitymapbox/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickformatstopdefaults.py rename to plotly/validators/densitymapbox/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickformatstops.py b/plotly/validators/densitymapbox/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickformatstops.py rename to plotly/validators/densitymapbox/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticklabeloverflow.py b/plotly/validators/densitymapbox/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticklabeloverflow.py rename to plotly/validators/densitymapbox/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticklabelposition.py b/plotly/validators/densitymapbox/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticklabelposition.py rename to plotly/validators/densitymapbox/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticklabelstep.py b/plotly/validators/densitymapbox/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticklabelstep.py rename to plotly/validators/densitymapbox/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticklen.py b/plotly/validators/densitymapbox/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticklen.py rename to plotly/validators/densitymapbox/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickmode.py b/plotly/validators/densitymapbox/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickmode.py rename to plotly/validators/densitymapbox/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickprefix.py b/plotly/validators/densitymapbox/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickprefix.py rename to plotly/validators/densitymapbox/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticks.py b/plotly/validators/densitymapbox/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticks.py rename to plotly/validators/densitymapbox/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticksuffix.py b/plotly/validators/densitymapbox/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticksuffix.py rename to plotly/validators/densitymapbox/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticktext.py b/plotly/validators/densitymapbox/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticktext.py rename to plotly/validators/densitymapbox/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticktextsrc.py b/plotly/validators/densitymapbox/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ticktextsrc.py rename to plotly/validators/densitymapbox/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickvals.py b/plotly/validators/densitymapbox/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickvals.py rename to plotly/validators/densitymapbox/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickvalssrc.py b/plotly/validators/densitymapbox/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickvalssrc.py rename to plotly/validators/densitymapbox/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickwidth.py b/plotly/validators/densitymapbox/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_tickwidth.py rename to plotly/validators/densitymapbox/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_title.py b/plotly/validators/densitymapbox/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_title.py rename to plotly/validators/densitymapbox/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_x.py b/plotly/validators/densitymapbox/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_x.py rename to plotly/validators/densitymapbox/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_xanchor.py b/plotly/validators/densitymapbox/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_xanchor.py rename to plotly/validators/densitymapbox/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_xpad.py b/plotly/validators/densitymapbox/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_xpad.py rename to plotly/validators/densitymapbox/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_xref.py b/plotly/validators/densitymapbox/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_xref.py rename to plotly/validators/densitymapbox/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_y.py b/plotly/validators/densitymapbox/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_y.py rename to plotly/validators/densitymapbox/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_yanchor.py b/plotly/validators/densitymapbox/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_yanchor.py rename to plotly/validators/densitymapbox/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ypad.py b/plotly/validators/densitymapbox/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_ypad.py rename to plotly/validators/densitymapbox/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/_yref.py b/plotly/validators/densitymapbox/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/_yref.py rename to plotly/validators/densitymapbox/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/__init__.py b/plotly/validators/densitymapbox/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/__init__.py rename to plotly/validators/densitymapbox/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_color.py b/plotly/validators/densitymapbox/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_color.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_family.py b/plotly/validators/densitymapbox/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_family.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_lineposition.py b/plotly/validators/densitymapbox/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_lineposition.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_shadow.py b/plotly/validators/densitymapbox/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_shadow.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_size.py b/plotly/validators/densitymapbox/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_size.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_style.py b/plotly/validators/densitymapbox/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_style.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_textcase.py b/plotly/validators/densitymapbox/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_textcase.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_variant.py b/plotly/validators/densitymapbox/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_variant.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_weight.py b/plotly/validators/densitymapbox/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickfont/_weight.py rename to plotly/validators/densitymapbox/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/__init__.py b/plotly/validators/densitymapbox/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/__init__.py rename to plotly/validators/densitymapbox/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/densitymapbox/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/densitymapbox/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_enabled.py b/plotly/validators/densitymapbox/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_enabled.py rename to plotly/validators/densitymapbox/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_name.py b/plotly/validators/densitymapbox/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_name.py rename to plotly/validators/densitymapbox/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/densitymapbox/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/densitymapbox/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_value.py b/plotly/validators/densitymapbox/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/tickformatstop/_value.py rename to plotly/validators/densitymapbox/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/__init__.py b/plotly/validators/densitymapbox/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/__init__.py rename to plotly/validators/densitymapbox/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/_font.py b/plotly/validators/densitymapbox/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/_font.py rename to plotly/validators/densitymapbox/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/_side.py b/plotly/validators/densitymapbox/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/_side.py rename to plotly/validators/densitymapbox/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/_text.py b/plotly/validators/densitymapbox/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/_text.py rename to plotly/validators/densitymapbox/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/__init__.py b/plotly/validators/densitymapbox/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/__init__.py rename to plotly/validators/densitymapbox/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_color.py b/plotly/validators/densitymapbox/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_color.py rename to plotly/validators/densitymapbox/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_family.py b/plotly/validators/densitymapbox/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_family.py rename to plotly/validators/densitymapbox/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_lineposition.py b/plotly/validators/densitymapbox/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_lineposition.py rename to plotly/validators/densitymapbox/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_shadow.py b/plotly/validators/densitymapbox/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_shadow.py rename to plotly/validators/densitymapbox/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_size.py b/plotly/validators/densitymapbox/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_size.py rename to plotly/validators/densitymapbox/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_style.py b/plotly/validators/densitymapbox/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_style.py rename to plotly/validators/densitymapbox/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_textcase.py b/plotly/validators/densitymapbox/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_textcase.py rename to plotly/validators/densitymapbox/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_variant.py b/plotly/validators/densitymapbox/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_variant.py rename to plotly/validators/densitymapbox/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_weight.py b/plotly/validators/densitymapbox/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/colorbar/title/font/_weight.py rename to plotly/validators/densitymapbox/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/__init__.py b/plotly/validators/densitymapbox/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/__init__.py rename to plotly/validators/densitymapbox/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_align.py b/plotly/validators/densitymapbox/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_align.py rename to plotly/validators/densitymapbox/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_alignsrc.py b/plotly/validators/densitymapbox/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_alignsrc.py rename to plotly/validators/densitymapbox/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_bgcolor.py b/plotly/validators/densitymapbox/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_bgcolor.py rename to plotly/validators/densitymapbox/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_bgcolorsrc.py b/plotly/validators/densitymapbox/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_bgcolorsrc.py rename to plotly/validators/densitymapbox/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_bordercolor.py b/plotly/validators/densitymapbox/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_bordercolor.py rename to plotly/validators/densitymapbox/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_bordercolorsrc.py b/plotly/validators/densitymapbox/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_bordercolorsrc.py rename to plotly/validators/densitymapbox/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_font.py b/plotly/validators/densitymapbox/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_font.py rename to plotly/validators/densitymapbox/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_namelength.py b/plotly/validators/densitymapbox/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_namelength.py rename to plotly/validators/densitymapbox/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_namelengthsrc.py b/plotly/validators/densitymapbox/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/_namelengthsrc.py rename to plotly/validators/densitymapbox/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/__init__.py b/plotly/validators/densitymapbox/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/__init__.py rename to plotly/validators/densitymapbox/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_color.py b/plotly/validators/densitymapbox/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_color.py rename to plotly/validators/densitymapbox/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_colorsrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_colorsrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_family.py b/plotly/validators/densitymapbox/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_family.py rename to plotly/validators/densitymapbox/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_familysrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_familysrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_lineposition.py b/plotly/validators/densitymapbox/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_lineposition.py rename to plotly/validators/densitymapbox/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_linepositionsrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_shadow.py b/plotly/validators/densitymapbox/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_shadow.py rename to plotly/validators/densitymapbox/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_shadowsrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_shadowsrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_size.py b/plotly/validators/densitymapbox/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_size.py rename to plotly/validators/densitymapbox/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_sizesrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_sizesrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_style.py b/plotly/validators/densitymapbox/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_style.py rename to plotly/validators/densitymapbox/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_stylesrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_stylesrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_textcase.py b/plotly/validators/densitymapbox/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_textcase.py rename to plotly/validators/densitymapbox/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_textcasesrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_textcasesrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_variant.py b/plotly/validators/densitymapbox/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_variant.py rename to plotly/validators/densitymapbox/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_variantsrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_variantsrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_weight.py b/plotly/validators/densitymapbox/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_weight.py rename to plotly/validators/densitymapbox/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_weightsrc.py b/plotly/validators/densitymapbox/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/hoverlabel/font/_weightsrc.py rename to plotly/validators/densitymapbox/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/__init__.py b/plotly/validators/densitymapbox/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/__init__.py rename to plotly/validators/densitymapbox/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/_font.py b/plotly/validators/densitymapbox/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/_font.py rename to plotly/validators/densitymapbox/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/_text.py b/plotly/validators/densitymapbox/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/_text.py rename to plotly/validators/densitymapbox/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/__init__.py b/plotly/validators/densitymapbox/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/__init__.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_color.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_color.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_family.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_family.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_lineposition.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_lineposition.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_shadow.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_shadow.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_size.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_size.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_style.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_style.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_textcase.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_textcase.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_variant.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_variant.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_weight.py b/plotly/validators/densitymapbox/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/legendgrouptitle/font/_weight.py rename to plotly/validators/densitymapbox/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/stream/__init__.py b/plotly/validators/densitymapbox/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/stream/__init__.py rename to plotly/validators/densitymapbox/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/stream/_maxpoints.py b/plotly/validators/densitymapbox/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/stream/_maxpoints.py rename to plotly/validators/densitymapbox/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/densitymapbox/stream/_token.py b/plotly/validators/densitymapbox/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/densitymapbox/stream/_token.py rename to plotly/validators/densitymapbox/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/frame/__init__.py b/plotly/validators/frame/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/frame/__init__.py rename to plotly/validators/frame/__init__.py diff --git a/packages/python/plotly/plotly/validators/frame/_baseframe.py b/plotly/validators/frame/_baseframe.py similarity index 100% rename from packages/python/plotly/plotly/validators/frame/_baseframe.py rename to plotly/validators/frame/_baseframe.py diff --git a/packages/python/plotly/plotly/validators/frame/_data.py b/plotly/validators/frame/_data.py similarity index 100% rename from packages/python/plotly/plotly/validators/frame/_data.py rename to plotly/validators/frame/_data.py diff --git a/packages/python/plotly/plotly/validators/frame/_group.py b/plotly/validators/frame/_group.py similarity index 100% rename from packages/python/plotly/plotly/validators/frame/_group.py rename to plotly/validators/frame/_group.py diff --git a/packages/python/plotly/plotly/validators/frame/_layout.py b/plotly/validators/frame/_layout.py similarity index 100% rename from packages/python/plotly/plotly/validators/frame/_layout.py rename to plotly/validators/frame/_layout.py diff --git a/packages/python/plotly/plotly/validators/frame/_name.py b/plotly/validators/frame/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/frame/_name.py rename to plotly/validators/frame/_name.py diff --git a/packages/python/plotly/plotly/validators/frame/_traces.py b/plotly/validators/frame/_traces.py similarity index 100% rename from packages/python/plotly/plotly/validators/frame/_traces.py rename to plotly/validators/frame/_traces.py diff --git a/packages/python/plotly/plotly/validators/funnel/__init__.py b/plotly/validators/funnel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/__init__.py rename to plotly/validators/funnel/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/_alignmentgroup.py b/plotly/validators/funnel/_alignmentgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_alignmentgroup.py rename to plotly/validators/funnel/_alignmentgroup.py diff --git a/packages/python/plotly/plotly/validators/funnel/_cliponaxis.py b/plotly/validators/funnel/_cliponaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_cliponaxis.py rename to plotly/validators/funnel/_cliponaxis.py diff --git a/packages/python/plotly/plotly/validators/funnel/_connector.py b/plotly/validators/funnel/_connector.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_connector.py rename to plotly/validators/funnel/_connector.py diff --git a/packages/python/plotly/plotly/validators/funnel/_constraintext.py b/plotly/validators/funnel/_constraintext.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_constraintext.py rename to plotly/validators/funnel/_constraintext.py diff --git a/packages/python/plotly/plotly/validators/funnel/_customdata.py b/plotly/validators/funnel/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_customdata.py rename to plotly/validators/funnel/_customdata.py diff --git a/packages/python/plotly/plotly/validators/funnel/_customdatasrc.py b/plotly/validators/funnel/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_customdatasrc.py rename to plotly/validators/funnel/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_dx.py b/plotly/validators/funnel/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_dx.py rename to plotly/validators/funnel/_dx.py diff --git a/packages/python/plotly/plotly/validators/funnel/_dy.py b/plotly/validators/funnel/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_dy.py rename to plotly/validators/funnel/_dy.py diff --git a/packages/python/plotly/plotly/validators/funnel/_hoverinfo.py b/plotly/validators/funnel/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_hoverinfo.py rename to plotly/validators/funnel/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/funnel/_hoverinfosrc.py b/plotly/validators/funnel/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_hoverinfosrc.py rename to plotly/validators/funnel/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_hoverlabel.py b/plotly/validators/funnel/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_hoverlabel.py rename to plotly/validators/funnel/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/funnel/_hovertemplate.py b/plotly/validators/funnel/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_hovertemplate.py rename to plotly/validators/funnel/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/funnel/_hovertemplatesrc.py b/plotly/validators/funnel/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_hovertemplatesrc.py rename to plotly/validators/funnel/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_hovertext.py b/plotly/validators/funnel/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_hovertext.py rename to plotly/validators/funnel/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/funnel/_hovertextsrc.py b/plotly/validators/funnel/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_hovertextsrc.py rename to plotly/validators/funnel/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_ids.py b/plotly/validators/funnel/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_ids.py rename to plotly/validators/funnel/_ids.py diff --git a/packages/python/plotly/plotly/validators/funnel/_idssrc.py b/plotly/validators/funnel/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_idssrc.py rename to plotly/validators/funnel/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_insidetextanchor.py b/plotly/validators/funnel/_insidetextanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_insidetextanchor.py rename to plotly/validators/funnel/_insidetextanchor.py diff --git a/packages/python/plotly/plotly/validators/funnel/_insidetextfont.py b/plotly/validators/funnel/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_insidetextfont.py rename to plotly/validators/funnel/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/funnel/_legend.py b/plotly/validators/funnel/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_legend.py rename to plotly/validators/funnel/_legend.py diff --git a/packages/python/plotly/plotly/validators/funnel/_legendgroup.py b/plotly/validators/funnel/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_legendgroup.py rename to plotly/validators/funnel/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/funnel/_legendgrouptitle.py b/plotly/validators/funnel/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_legendgrouptitle.py rename to plotly/validators/funnel/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/funnel/_legendrank.py b/plotly/validators/funnel/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_legendrank.py rename to plotly/validators/funnel/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/funnel/_legendwidth.py b/plotly/validators/funnel/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_legendwidth.py rename to plotly/validators/funnel/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/funnel/_marker.py b/plotly/validators/funnel/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_marker.py rename to plotly/validators/funnel/_marker.py diff --git a/packages/python/plotly/plotly/validators/funnel/_meta.py b/plotly/validators/funnel/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_meta.py rename to plotly/validators/funnel/_meta.py diff --git a/packages/python/plotly/plotly/validators/funnel/_metasrc.py b/plotly/validators/funnel/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_metasrc.py rename to plotly/validators/funnel/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_name.py b/plotly/validators/funnel/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_name.py rename to plotly/validators/funnel/_name.py diff --git a/packages/python/plotly/plotly/validators/funnel/_offset.py b/plotly/validators/funnel/_offset.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_offset.py rename to plotly/validators/funnel/_offset.py diff --git a/packages/python/plotly/plotly/validators/funnel/_offsetgroup.py b/plotly/validators/funnel/_offsetgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_offsetgroup.py rename to plotly/validators/funnel/_offsetgroup.py diff --git a/packages/python/plotly/plotly/validators/funnel/_opacity.py b/plotly/validators/funnel/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_opacity.py rename to plotly/validators/funnel/_opacity.py diff --git a/packages/python/plotly/plotly/validators/funnel/_orientation.py b/plotly/validators/funnel/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_orientation.py rename to plotly/validators/funnel/_orientation.py diff --git a/packages/python/plotly/plotly/validators/funnel/_outsidetextfont.py b/plotly/validators/funnel/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_outsidetextfont.py rename to plotly/validators/funnel/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/validators/funnel/_selectedpoints.py b/plotly/validators/funnel/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_selectedpoints.py rename to plotly/validators/funnel/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/funnel/_showlegend.py b/plotly/validators/funnel/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_showlegend.py rename to plotly/validators/funnel/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/funnel/_stream.py b/plotly/validators/funnel/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_stream.py rename to plotly/validators/funnel/_stream.py diff --git a/packages/python/plotly/plotly/validators/funnel/_text.py b/plotly/validators/funnel/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_text.py rename to plotly/validators/funnel/_text.py diff --git a/packages/python/plotly/plotly/validators/funnel/_textangle.py b/plotly/validators/funnel/_textangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_textangle.py rename to plotly/validators/funnel/_textangle.py diff --git a/packages/python/plotly/plotly/validators/funnel/_textfont.py b/plotly/validators/funnel/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_textfont.py rename to plotly/validators/funnel/_textfont.py diff --git a/packages/python/plotly/plotly/validators/funnel/_textinfo.py b/plotly/validators/funnel/_textinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_textinfo.py rename to plotly/validators/funnel/_textinfo.py diff --git a/packages/python/plotly/plotly/validators/funnel/_textposition.py b/plotly/validators/funnel/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_textposition.py rename to plotly/validators/funnel/_textposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/_textpositionsrc.py b/plotly/validators/funnel/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_textpositionsrc.py rename to plotly/validators/funnel/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_textsrc.py b/plotly/validators/funnel/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_textsrc.py rename to plotly/validators/funnel/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_texttemplate.py b/plotly/validators/funnel/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_texttemplate.py rename to plotly/validators/funnel/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/funnel/_texttemplatesrc.py b/plotly/validators/funnel/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_texttemplatesrc.py rename to plotly/validators/funnel/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_uid.py b/plotly/validators/funnel/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_uid.py rename to plotly/validators/funnel/_uid.py diff --git a/packages/python/plotly/plotly/validators/funnel/_uirevision.py b/plotly/validators/funnel/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_uirevision.py rename to plotly/validators/funnel/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/funnel/_visible.py b/plotly/validators/funnel/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_visible.py rename to plotly/validators/funnel/_visible.py diff --git a/packages/python/plotly/plotly/validators/funnel/_width.py b/plotly/validators/funnel/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_width.py rename to plotly/validators/funnel/_width.py diff --git a/packages/python/plotly/plotly/validators/funnel/_x.py b/plotly/validators/funnel/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_x.py rename to plotly/validators/funnel/_x.py diff --git a/packages/python/plotly/plotly/validators/funnel/_x0.py b/plotly/validators/funnel/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_x0.py rename to plotly/validators/funnel/_x0.py diff --git a/packages/python/plotly/plotly/validators/funnel/_xaxis.py b/plotly/validators/funnel/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_xaxis.py rename to plotly/validators/funnel/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/funnel/_xhoverformat.py b/plotly/validators/funnel/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_xhoverformat.py rename to plotly/validators/funnel/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/funnel/_xperiod.py b/plotly/validators/funnel/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_xperiod.py rename to plotly/validators/funnel/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/funnel/_xperiod0.py b/plotly/validators/funnel/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_xperiod0.py rename to plotly/validators/funnel/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/funnel/_xperiodalignment.py b/plotly/validators/funnel/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_xperiodalignment.py rename to plotly/validators/funnel/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/funnel/_xsrc.py b/plotly/validators/funnel/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_xsrc.py rename to plotly/validators/funnel/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_y.py b/plotly/validators/funnel/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_y.py rename to plotly/validators/funnel/_y.py diff --git a/packages/python/plotly/plotly/validators/funnel/_y0.py b/plotly/validators/funnel/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_y0.py rename to plotly/validators/funnel/_y0.py diff --git a/packages/python/plotly/plotly/validators/funnel/_yaxis.py b/plotly/validators/funnel/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_yaxis.py rename to plotly/validators/funnel/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/funnel/_yhoverformat.py b/plotly/validators/funnel/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_yhoverformat.py rename to plotly/validators/funnel/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/funnel/_yperiod.py b/plotly/validators/funnel/_yperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_yperiod.py rename to plotly/validators/funnel/_yperiod.py diff --git a/packages/python/plotly/plotly/validators/funnel/_yperiod0.py b/plotly/validators/funnel/_yperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_yperiod0.py rename to plotly/validators/funnel/_yperiod0.py diff --git a/packages/python/plotly/plotly/validators/funnel/_yperiodalignment.py b/plotly/validators/funnel/_yperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_yperiodalignment.py rename to plotly/validators/funnel/_yperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/funnel/_ysrc.py b/plotly/validators/funnel/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_ysrc.py rename to plotly/validators/funnel/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/_zorder.py b/plotly/validators/funnel/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/_zorder.py rename to plotly/validators/funnel/_zorder.py diff --git a/packages/python/plotly/plotly/validators/funnel/connector/__init__.py b/plotly/validators/funnel/connector/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/connector/__init__.py rename to plotly/validators/funnel/connector/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/connector/_fillcolor.py b/plotly/validators/funnel/connector/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/connector/_fillcolor.py rename to plotly/validators/funnel/connector/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/funnel/connector/_line.py b/plotly/validators/funnel/connector/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/connector/_line.py rename to plotly/validators/funnel/connector/_line.py diff --git a/packages/python/plotly/plotly/validators/funnel/connector/_visible.py b/plotly/validators/funnel/connector/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/connector/_visible.py rename to plotly/validators/funnel/connector/_visible.py diff --git a/packages/python/plotly/plotly/validators/funnel/connector/line/__init__.py b/plotly/validators/funnel/connector/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/connector/line/__init__.py rename to plotly/validators/funnel/connector/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/connector/line/_color.py b/plotly/validators/funnel/connector/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/connector/line/_color.py rename to plotly/validators/funnel/connector/line/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/connector/line/_dash.py b/plotly/validators/funnel/connector/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/connector/line/_dash.py rename to plotly/validators/funnel/connector/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/funnel/connector/line/_width.py b/plotly/validators/funnel/connector/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/connector/line/_width.py rename to plotly/validators/funnel/connector/line/_width.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/__init__.py b/plotly/validators/funnel/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/__init__.py rename to plotly/validators/funnel/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_align.py b/plotly/validators/funnel/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_align.py rename to plotly/validators/funnel/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_alignsrc.py b/plotly/validators/funnel/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_alignsrc.py rename to plotly/validators/funnel/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_bgcolor.py b/plotly/validators/funnel/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_bgcolor.py rename to plotly/validators/funnel/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_bgcolorsrc.py b/plotly/validators/funnel/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_bgcolorsrc.py rename to plotly/validators/funnel/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_bordercolor.py b/plotly/validators/funnel/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_bordercolor.py rename to plotly/validators/funnel/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_bordercolorsrc.py b/plotly/validators/funnel/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_bordercolorsrc.py rename to plotly/validators/funnel/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_font.py b/plotly/validators/funnel/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_font.py rename to plotly/validators/funnel/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_namelength.py b/plotly/validators/funnel/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_namelength.py rename to plotly/validators/funnel/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/_namelengthsrc.py b/plotly/validators/funnel/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/_namelengthsrc.py rename to plotly/validators/funnel/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/__init__.py b/plotly/validators/funnel/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/__init__.py rename to plotly/validators/funnel/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_color.py b/plotly/validators/funnel/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_color.py rename to plotly/validators/funnel/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_colorsrc.py b/plotly/validators/funnel/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_colorsrc.py rename to plotly/validators/funnel/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_family.py b/plotly/validators/funnel/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_family.py rename to plotly/validators/funnel/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_familysrc.py b/plotly/validators/funnel/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_familysrc.py rename to plotly/validators/funnel/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_lineposition.py b/plotly/validators/funnel/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_lineposition.py rename to plotly/validators/funnel/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_linepositionsrc.py b/plotly/validators/funnel/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/funnel/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_shadow.py b/plotly/validators/funnel/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_shadow.py rename to plotly/validators/funnel/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_shadowsrc.py b/plotly/validators/funnel/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_shadowsrc.py rename to plotly/validators/funnel/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_size.py b/plotly/validators/funnel/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_size.py rename to plotly/validators/funnel/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_sizesrc.py b/plotly/validators/funnel/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_sizesrc.py rename to plotly/validators/funnel/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_style.py b/plotly/validators/funnel/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_style.py rename to plotly/validators/funnel/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_stylesrc.py b/plotly/validators/funnel/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_stylesrc.py rename to plotly/validators/funnel/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_textcase.py b/plotly/validators/funnel/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_textcase.py rename to plotly/validators/funnel/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_textcasesrc.py b/plotly/validators/funnel/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_textcasesrc.py rename to plotly/validators/funnel/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_variant.py b/plotly/validators/funnel/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_variant.py rename to plotly/validators/funnel/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_variantsrc.py b/plotly/validators/funnel/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_variantsrc.py rename to plotly/validators/funnel/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_weight.py b/plotly/validators/funnel/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_weight.py rename to plotly/validators/funnel/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_weightsrc.py b/plotly/validators/funnel/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/hoverlabel/font/_weightsrc.py rename to plotly/validators/funnel/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/__init__.py b/plotly/validators/funnel/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/__init__.py rename to plotly/validators/funnel/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_color.py b/plotly/validators/funnel/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_color.py rename to plotly/validators/funnel/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_colorsrc.py b/plotly/validators/funnel/insidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_colorsrc.py rename to plotly/validators/funnel/insidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_family.py b/plotly/validators/funnel/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_family.py rename to plotly/validators/funnel/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_familysrc.py b/plotly/validators/funnel/insidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_familysrc.py rename to plotly/validators/funnel/insidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_lineposition.py b/plotly/validators/funnel/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_lineposition.py rename to plotly/validators/funnel/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_linepositionsrc.py b/plotly/validators/funnel/insidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_linepositionsrc.py rename to plotly/validators/funnel/insidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_shadow.py b/plotly/validators/funnel/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_shadow.py rename to plotly/validators/funnel/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_shadowsrc.py b/plotly/validators/funnel/insidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_shadowsrc.py rename to plotly/validators/funnel/insidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_size.py b/plotly/validators/funnel/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_size.py rename to plotly/validators/funnel/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_sizesrc.py b/plotly/validators/funnel/insidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_sizesrc.py rename to plotly/validators/funnel/insidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_style.py b/plotly/validators/funnel/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_style.py rename to plotly/validators/funnel/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_stylesrc.py b/plotly/validators/funnel/insidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_stylesrc.py rename to plotly/validators/funnel/insidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_textcase.py b/plotly/validators/funnel/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_textcase.py rename to plotly/validators/funnel/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_textcasesrc.py b/plotly/validators/funnel/insidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_textcasesrc.py rename to plotly/validators/funnel/insidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_variant.py b/plotly/validators/funnel/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_variant.py rename to plotly/validators/funnel/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_variantsrc.py b/plotly/validators/funnel/insidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_variantsrc.py rename to plotly/validators/funnel/insidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_weight.py b/plotly/validators/funnel/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_weight.py rename to plotly/validators/funnel/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnel/insidetextfont/_weightsrc.py b/plotly/validators/funnel/insidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/insidetextfont/_weightsrc.py rename to plotly/validators/funnel/insidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/__init__.py b/plotly/validators/funnel/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/__init__.py rename to plotly/validators/funnel/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/_font.py b/plotly/validators/funnel/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/_font.py rename to plotly/validators/funnel/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/_text.py b/plotly/validators/funnel/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/_text.py rename to plotly/validators/funnel/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/__init__.py b/plotly/validators/funnel/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/__init__.py rename to plotly/validators/funnel/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_color.py b/plotly/validators/funnel/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_color.py rename to plotly/validators/funnel/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_family.py b/plotly/validators/funnel/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_family.py rename to plotly/validators/funnel/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_lineposition.py b/plotly/validators/funnel/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_lineposition.py rename to plotly/validators/funnel/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_shadow.py b/plotly/validators/funnel/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_shadow.py rename to plotly/validators/funnel/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_size.py b/plotly/validators/funnel/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_size.py rename to plotly/validators/funnel/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_style.py b/plotly/validators/funnel/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_style.py rename to plotly/validators/funnel/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_textcase.py b/plotly/validators/funnel/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_textcase.py rename to plotly/validators/funnel/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_variant.py b/plotly/validators/funnel/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_variant.py rename to plotly/validators/funnel/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_weight.py b/plotly/validators/funnel/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/legendgrouptitle/font/_weight.py rename to plotly/validators/funnel/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/__init__.py b/plotly/validators/funnel/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/__init__.py rename to plotly/validators/funnel/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_autocolorscale.py b/plotly/validators/funnel/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_autocolorscale.py rename to plotly/validators/funnel/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_cauto.py b/plotly/validators/funnel/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_cauto.py rename to plotly/validators/funnel/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_cmax.py b/plotly/validators/funnel/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_cmax.py rename to plotly/validators/funnel/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_cmid.py b/plotly/validators/funnel/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_cmid.py rename to plotly/validators/funnel/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_cmin.py b/plotly/validators/funnel/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_cmin.py rename to plotly/validators/funnel/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_color.py b/plotly/validators/funnel/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_color.py rename to plotly/validators/funnel/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_coloraxis.py b/plotly/validators/funnel/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_coloraxis.py rename to plotly/validators/funnel/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_colorbar.py b/plotly/validators/funnel/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_colorbar.py rename to plotly/validators/funnel/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_colorscale.py b/plotly/validators/funnel/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_colorscale.py rename to plotly/validators/funnel/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_colorsrc.py b/plotly/validators/funnel/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_colorsrc.py rename to plotly/validators/funnel/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_line.py b/plotly/validators/funnel/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_line.py rename to plotly/validators/funnel/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_opacity.py b/plotly/validators/funnel/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_opacity.py rename to plotly/validators/funnel/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_opacitysrc.py b/plotly/validators/funnel/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_opacitysrc.py rename to plotly/validators/funnel/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_reversescale.py b/plotly/validators/funnel/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_reversescale.py rename to plotly/validators/funnel/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/_showscale.py b/plotly/validators/funnel/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/_showscale.py rename to plotly/validators/funnel/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/__init__.py b/plotly/validators/funnel/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/__init__.py rename to plotly/validators/funnel/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_bgcolor.py b/plotly/validators/funnel/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_bgcolor.py rename to plotly/validators/funnel/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_bordercolor.py b/plotly/validators/funnel/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_bordercolor.py rename to plotly/validators/funnel/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_borderwidth.py b/plotly/validators/funnel/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_borderwidth.py rename to plotly/validators/funnel/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_dtick.py b/plotly/validators/funnel/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_dtick.py rename to plotly/validators/funnel/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_exponentformat.py b/plotly/validators/funnel/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_exponentformat.py rename to plotly/validators/funnel/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_labelalias.py b/plotly/validators/funnel/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_labelalias.py rename to plotly/validators/funnel/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_len.py b/plotly/validators/funnel/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_len.py rename to plotly/validators/funnel/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_lenmode.py b/plotly/validators/funnel/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_lenmode.py rename to plotly/validators/funnel/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_minexponent.py b/plotly/validators/funnel/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_minexponent.py rename to plotly/validators/funnel/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_nticks.py b/plotly/validators/funnel/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_nticks.py rename to plotly/validators/funnel/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_orientation.py b/plotly/validators/funnel/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_orientation.py rename to plotly/validators/funnel/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_outlinecolor.py b/plotly/validators/funnel/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_outlinecolor.py rename to plotly/validators/funnel/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_outlinewidth.py b/plotly/validators/funnel/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_outlinewidth.py rename to plotly/validators/funnel/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_separatethousands.py b/plotly/validators/funnel/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_separatethousands.py rename to plotly/validators/funnel/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_showexponent.py b/plotly/validators/funnel/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_showexponent.py rename to plotly/validators/funnel/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_showticklabels.py b/plotly/validators/funnel/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_showticklabels.py rename to plotly/validators/funnel/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_showtickprefix.py b/plotly/validators/funnel/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_showtickprefix.py rename to plotly/validators/funnel/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_showticksuffix.py b/plotly/validators/funnel/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_showticksuffix.py rename to plotly/validators/funnel/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_thickness.py b/plotly/validators/funnel/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_thickness.py rename to plotly/validators/funnel/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_thicknessmode.py b/plotly/validators/funnel/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_thicknessmode.py rename to plotly/validators/funnel/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tick0.py b/plotly/validators/funnel/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tick0.py rename to plotly/validators/funnel/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickangle.py b/plotly/validators/funnel/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickangle.py rename to plotly/validators/funnel/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickcolor.py b/plotly/validators/funnel/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickcolor.py rename to plotly/validators/funnel/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickfont.py b/plotly/validators/funnel/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickfont.py rename to plotly/validators/funnel/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickformat.py b/plotly/validators/funnel/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickformat.py rename to plotly/validators/funnel/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/funnel/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/funnel/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickformatstops.py b/plotly/validators/funnel/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickformatstops.py rename to plotly/validators/funnel/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/funnel/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/funnel/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticklabelposition.py b/plotly/validators/funnel/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticklabelposition.py rename to plotly/validators/funnel/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticklabelstep.py b/plotly/validators/funnel/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticklabelstep.py rename to plotly/validators/funnel/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticklen.py b/plotly/validators/funnel/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticklen.py rename to plotly/validators/funnel/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickmode.py b/plotly/validators/funnel/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickmode.py rename to plotly/validators/funnel/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickprefix.py b/plotly/validators/funnel/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickprefix.py rename to plotly/validators/funnel/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticks.py b/plotly/validators/funnel/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticks.py rename to plotly/validators/funnel/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticksuffix.py b/plotly/validators/funnel/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticksuffix.py rename to plotly/validators/funnel/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticktext.py b/plotly/validators/funnel/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticktext.py rename to plotly/validators/funnel/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticktextsrc.py b/plotly/validators/funnel/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ticktextsrc.py rename to plotly/validators/funnel/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickvals.py b/plotly/validators/funnel/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickvals.py rename to plotly/validators/funnel/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickvalssrc.py b/plotly/validators/funnel/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickvalssrc.py rename to plotly/validators/funnel/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickwidth.py b/plotly/validators/funnel/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_tickwidth.py rename to plotly/validators/funnel/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_title.py b/plotly/validators/funnel/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_title.py rename to plotly/validators/funnel/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_x.py b/plotly/validators/funnel/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_x.py rename to plotly/validators/funnel/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_xanchor.py b/plotly/validators/funnel/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_xanchor.py rename to plotly/validators/funnel/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_xpad.py b/plotly/validators/funnel/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_xpad.py rename to plotly/validators/funnel/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_xref.py b/plotly/validators/funnel/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_xref.py rename to plotly/validators/funnel/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_y.py b/plotly/validators/funnel/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_y.py rename to plotly/validators/funnel/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_yanchor.py b/plotly/validators/funnel/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_yanchor.py rename to plotly/validators/funnel/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ypad.py b/plotly/validators/funnel/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_ypad.py rename to plotly/validators/funnel/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/_yref.py b/plotly/validators/funnel/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/_yref.py rename to plotly/validators/funnel/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/__init__.py b/plotly/validators/funnel/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/__init__.py rename to plotly/validators/funnel/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_color.py b/plotly/validators/funnel/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_color.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_family.py b/plotly/validators/funnel/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_family.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/funnel/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_shadow.py b/plotly/validators/funnel/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_size.py b/plotly/validators/funnel/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_size.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_style.py b/plotly/validators/funnel/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_style.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_textcase.py b/plotly/validators/funnel/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_variant.py b/plotly/validators/funnel/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_variant.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_weight.py b/plotly/validators/funnel/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickfont/_weight.py rename to plotly/validators/funnel/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/funnel/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/funnel/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/funnel/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/funnel/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/funnel/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/funnel/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_name.py b/plotly/validators/funnel/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/funnel/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/funnel/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/funnel/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_value.py b/plotly/validators/funnel/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/funnel/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/__init__.py b/plotly/validators/funnel/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/__init__.py rename to plotly/validators/funnel/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/_font.py b/plotly/validators/funnel/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/_font.py rename to plotly/validators/funnel/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/_side.py b/plotly/validators/funnel/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/_side.py rename to plotly/validators/funnel/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/_text.py b/plotly/validators/funnel/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/_text.py rename to plotly/validators/funnel/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/__init__.py b/plotly/validators/funnel/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/__init__.py rename to plotly/validators/funnel/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_color.py b/plotly/validators/funnel/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_color.py rename to plotly/validators/funnel/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_family.py b/plotly/validators/funnel/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_family.py rename to plotly/validators/funnel/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_lineposition.py b/plotly/validators/funnel/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/funnel/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_shadow.py b/plotly/validators/funnel/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_shadow.py rename to plotly/validators/funnel/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_size.py b/plotly/validators/funnel/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_size.py rename to plotly/validators/funnel/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_style.py b/plotly/validators/funnel/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_style.py rename to plotly/validators/funnel/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_textcase.py b/plotly/validators/funnel/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_textcase.py rename to plotly/validators/funnel/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_variant.py b/plotly/validators/funnel/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_variant.py rename to plotly/validators/funnel/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_weight.py b/plotly/validators/funnel/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/colorbar/title/font/_weight.py rename to plotly/validators/funnel/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/__init__.py b/plotly/validators/funnel/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/__init__.py rename to plotly/validators/funnel/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_autocolorscale.py b/plotly/validators/funnel/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_autocolorscale.py rename to plotly/validators/funnel/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_cauto.py b/plotly/validators/funnel/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_cauto.py rename to plotly/validators/funnel/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_cmax.py b/plotly/validators/funnel/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_cmax.py rename to plotly/validators/funnel/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_cmid.py b/plotly/validators/funnel/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_cmid.py rename to plotly/validators/funnel/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_cmin.py b/plotly/validators/funnel/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_cmin.py rename to plotly/validators/funnel/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_color.py b/plotly/validators/funnel/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_color.py rename to plotly/validators/funnel/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_coloraxis.py b/plotly/validators/funnel/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_coloraxis.py rename to plotly/validators/funnel/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_colorscale.py b/plotly/validators/funnel/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_colorscale.py rename to plotly/validators/funnel/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_colorsrc.py b/plotly/validators/funnel/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_colorsrc.py rename to plotly/validators/funnel/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_reversescale.py b/plotly/validators/funnel/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_reversescale.py rename to plotly/validators/funnel/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_width.py b/plotly/validators/funnel/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_width.py rename to plotly/validators/funnel/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/funnel/marker/line/_widthsrc.py b/plotly/validators/funnel/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/marker/line/_widthsrc.py rename to plotly/validators/funnel/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/__init__.py b/plotly/validators/funnel/outsidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/__init__.py rename to plotly/validators/funnel/outsidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_color.py b/plotly/validators/funnel/outsidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_color.py rename to plotly/validators/funnel/outsidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_colorsrc.py b/plotly/validators/funnel/outsidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_colorsrc.py rename to plotly/validators/funnel/outsidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_family.py b/plotly/validators/funnel/outsidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_family.py rename to plotly/validators/funnel/outsidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_familysrc.py b/plotly/validators/funnel/outsidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_familysrc.py rename to plotly/validators/funnel/outsidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_lineposition.py b/plotly/validators/funnel/outsidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_lineposition.py rename to plotly/validators/funnel/outsidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_linepositionsrc.py b/plotly/validators/funnel/outsidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_linepositionsrc.py rename to plotly/validators/funnel/outsidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_shadow.py b/plotly/validators/funnel/outsidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_shadow.py rename to plotly/validators/funnel/outsidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_shadowsrc.py b/plotly/validators/funnel/outsidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_shadowsrc.py rename to plotly/validators/funnel/outsidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_size.py b/plotly/validators/funnel/outsidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_size.py rename to plotly/validators/funnel/outsidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_sizesrc.py b/plotly/validators/funnel/outsidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_sizesrc.py rename to plotly/validators/funnel/outsidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_style.py b/plotly/validators/funnel/outsidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_style.py rename to plotly/validators/funnel/outsidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_stylesrc.py b/plotly/validators/funnel/outsidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_stylesrc.py rename to plotly/validators/funnel/outsidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_textcase.py b/plotly/validators/funnel/outsidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_textcase.py rename to plotly/validators/funnel/outsidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_textcasesrc.py b/plotly/validators/funnel/outsidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_textcasesrc.py rename to plotly/validators/funnel/outsidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_variant.py b/plotly/validators/funnel/outsidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_variant.py rename to plotly/validators/funnel/outsidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_variantsrc.py b/plotly/validators/funnel/outsidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_variantsrc.py rename to plotly/validators/funnel/outsidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_weight.py b/plotly/validators/funnel/outsidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_weight.py rename to plotly/validators/funnel/outsidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnel/outsidetextfont/_weightsrc.py b/plotly/validators/funnel/outsidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/outsidetextfont/_weightsrc.py rename to plotly/validators/funnel/outsidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/stream/__init__.py b/plotly/validators/funnel/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/stream/__init__.py rename to plotly/validators/funnel/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/stream/_maxpoints.py b/plotly/validators/funnel/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/stream/_maxpoints.py rename to plotly/validators/funnel/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/funnel/stream/_token.py b/plotly/validators/funnel/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/stream/_token.py rename to plotly/validators/funnel/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/__init__.py b/plotly/validators/funnel/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/__init__.py rename to plotly/validators/funnel/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_color.py b/plotly/validators/funnel/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_color.py rename to plotly/validators/funnel/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_colorsrc.py b/plotly/validators/funnel/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_colorsrc.py rename to plotly/validators/funnel/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_family.py b/plotly/validators/funnel/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_family.py rename to plotly/validators/funnel/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_familysrc.py b/plotly/validators/funnel/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_familysrc.py rename to plotly/validators/funnel/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_lineposition.py b/plotly/validators/funnel/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_lineposition.py rename to plotly/validators/funnel/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_linepositionsrc.py b/plotly/validators/funnel/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_linepositionsrc.py rename to plotly/validators/funnel/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_shadow.py b/plotly/validators/funnel/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_shadow.py rename to plotly/validators/funnel/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_shadowsrc.py b/plotly/validators/funnel/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_shadowsrc.py rename to plotly/validators/funnel/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_size.py b/plotly/validators/funnel/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_size.py rename to plotly/validators/funnel/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_sizesrc.py b/plotly/validators/funnel/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_sizesrc.py rename to plotly/validators/funnel/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_style.py b/plotly/validators/funnel/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_style.py rename to plotly/validators/funnel/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_stylesrc.py b/plotly/validators/funnel/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_stylesrc.py rename to plotly/validators/funnel/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_textcase.py b/plotly/validators/funnel/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_textcase.py rename to plotly/validators/funnel/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_textcasesrc.py b/plotly/validators/funnel/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_textcasesrc.py rename to plotly/validators/funnel/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_variant.py b/plotly/validators/funnel/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_variant.py rename to plotly/validators/funnel/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_variantsrc.py b/plotly/validators/funnel/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_variantsrc.py rename to plotly/validators/funnel/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_weight.py b/plotly/validators/funnel/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_weight.py rename to plotly/validators/funnel/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnel/textfont/_weightsrc.py b/plotly/validators/funnel/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnel/textfont/_weightsrc.py rename to plotly/validators/funnel/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/__init__.py b/plotly/validators/funnelarea/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/__init__.py rename to plotly/validators/funnelarea/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_aspectratio.py b/plotly/validators/funnelarea/_aspectratio.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_aspectratio.py rename to plotly/validators/funnelarea/_aspectratio.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_baseratio.py b/plotly/validators/funnelarea/_baseratio.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_baseratio.py rename to plotly/validators/funnelarea/_baseratio.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_customdata.py b/plotly/validators/funnelarea/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_customdata.py rename to plotly/validators/funnelarea/_customdata.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_customdatasrc.py b/plotly/validators/funnelarea/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_customdatasrc.py rename to plotly/validators/funnelarea/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_dlabel.py b/plotly/validators/funnelarea/_dlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_dlabel.py rename to plotly/validators/funnelarea/_dlabel.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_domain.py b/plotly/validators/funnelarea/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_domain.py rename to plotly/validators/funnelarea/_domain.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_hoverinfo.py b/plotly/validators/funnelarea/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_hoverinfo.py rename to plotly/validators/funnelarea/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_hoverinfosrc.py b/plotly/validators/funnelarea/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_hoverinfosrc.py rename to plotly/validators/funnelarea/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_hoverlabel.py b/plotly/validators/funnelarea/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_hoverlabel.py rename to plotly/validators/funnelarea/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_hovertemplate.py b/plotly/validators/funnelarea/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_hovertemplate.py rename to plotly/validators/funnelarea/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_hovertemplatesrc.py b/plotly/validators/funnelarea/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_hovertemplatesrc.py rename to plotly/validators/funnelarea/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_hovertext.py b/plotly/validators/funnelarea/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_hovertext.py rename to plotly/validators/funnelarea/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_hovertextsrc.py b/plotly/validators/funnelarea/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_hovertextsrc.py rename to plotly/validators/funnelarea/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_ids.py b/plotly/validators/funnelarea/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_ids.py rename to plotly/validators/funnelarea/_ids.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_idssrc.py b/plotly/validators/funnelarea/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_idssrc.py rename to plotly/validators/funnelarea/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_insidetextfont.py b/plotly/validators/funnelarea/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_insidetextfont.py rename to plotly/validators/funnelarea/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_label0.py b/plotly/validators/funnelarea/_label0.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_label0.py rename to plotly/validators/funnelarea/_label0.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_labels.py b/plotly/validators/funnelarea/_labels.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_labels.py rename to plotly/validators/funnelarea/_labels.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_labelssrc.py b/plotly/validators/funnelarea/_labelssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_labelssrc.py rename to plotly/validators/funnelarea/_labelssrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_legend.py b/plotly/validators/funnelarea/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_legend.py rename to plotly/validators/funnelarea/_legend.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_legendgroup.py b/plotly/validators/funnelarea/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_legendgroup.py rename to plotly/validators/funnelarea/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_legendgrouptitle.py b/plotly/validators/funnelarea/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_legendgrouptitle.py rename to plotly/validators/funnelarea/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_legendrank.py b/plotly/validators/funnelarea/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_legendrank.py rename to plotly/validators/funnelarea/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_legendwidth.py b/plotly/validators/funnelarea/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_legendwidth.py rename to plotly/validators/funnelarea/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_marker.py b/plotly/validators/funnelarea/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_marker.py rename to plotly/validators/funnelarea/_marker.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_meta.py b/plotly/validators/funnelarea/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_meta.py rename to plotly/validators/funnelarea/_meta.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_metasrc.py b/plotly/validators/funnelarea/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_metasrc.py rename to plotly/validators/funnelarea/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_name.py b/plotly/validators/funnelarea/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_name.py rename to plotly/validators/funnelarea/_name.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_opacity.py b/plotly/validators/funnelarea/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_opacity.py rename to plotly/validators/funnelarea/_opacity.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_scalegroup.py b/plotly/validators/funnelarea/_scalegroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_scalegroup.py rename to plotly/validators/funnelarea/_scalegroup.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_showlegend.py b/plotly/validators/funnelarea/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_showlegend.py rename to plotly/validators/funnelarea/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_stream.py b/plotly/validators/funnelarea/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_stream.py rename to plotly/validators/funnelarea/_stream.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_text.py b/plotly/validators/funnelarea/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_text.py rename to plotly/validators/funnelarea/_text.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_textfont.py b/plotly/validators/funnelarea/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_textfont.py rename to plotly/validators/funnelarea/_textfont.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_textinfo.py b/plotly/validators/funnelarea/_textinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_textinfo.py rename to plotly/validators/funnelarea/_textinfo.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_textposition.py b/plotly/validators/funnelarea/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_textposition.py rename to plotly/validators/funnelarea/_textposition.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_textpositionsrc.py b/plotly/validators/funnelarea/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_textpositionsrc.py rename to plotly/validators/funnelarea/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_textsrc.py b/plotly/validators/funnelarea/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_textsrc.py rename to plotly/validators/funnelarea/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_texttemplate.py b/plotly/validators/funnelarea/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_texttemplate.py rename to plotly/validators/funnelarea/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_texttemplatesrc.py b/plotly/validators/funnelarea/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_texttemplatesrc.py rename to plotly/validators/funnelarea/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_title.py b/plotly/validators/funnelarea/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_title.py rename to plotly/validators/funnelarea/_title.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_uid.py b/plotly/validators/funnelarea/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_uid.py rename to plotly/validators/funnelarea/_uid.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_uirevision.py b/plotly/validators/funnelarea/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_uirevision.py rename to plotly/validators/funnelarea/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_values.py b/plotly/validators/funnelarea/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_values.py rename to plotly/validators/funnelarea/_values.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_valuessrc.py b/plotly/validators/funnelarea/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_valuessrc.py rename to plotly/validators/funnelarea/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/_visible.py b/plotly/validators/funnelarea/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/_visible.py rename to plotly/validators/funnelarea/_visible.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/domain/__init__.py b/plotly/validators/funnelarea/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/domain/__init__.py rename to plotly/validators/funnelarea/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/domain/_column.py b/plotly/validators/funnelarea/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/domain/_column.py rename to plotly/validators/funnelarea/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/domain/_row.py b/plotly/validators/funnelarea/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/domain/_row.py rename to plotly/validators/funnelarea/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/domain/_x.py b/plotly/validators/funnelarea/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/domain/_x.py rename to plotly/validators/funnelarea/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/domain/_y.py b/plotly/validators/funnelarea/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/domain/_y.py rename to plotly/validators/funnelarea/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/__init__.py b/plotly/validators/funnelarea/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/__init__.py rename to plotly/validators/funnelarea/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_align.py b/plotly/validators/funnelarea/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_align.py rename to plotly/validators/funnelarea/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_alignsrc.py b/plotly/validators/funnelarea/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_alignsrc.py rename to plotly/validators/funnelarea/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_bgcolor.py b/plotly/validators/funnelarea/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_bgcolor.py rename to plotly/validators/funnelarea/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_bgcolorsrc.py b/plotly/validators/funnelarea/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_bgcolorsrc.py rename to plotly/validators/funnelarea/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_bordercolor.py b/plotly/validators/funnelarea/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_bordercolor.py rename to plotly/validators/funnelarea/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_bordercolorsrc.py b/plotly/validators/funnelarea/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_bordercolorsrc.py rename to plotly/validators/funnelarea/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_font.py b/plotly/validators/funnelarea/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_font.py rename to plotly/validators/funnelarea/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_namelength.py b/plotly/validators/funnelarea/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_namelength.py rename to plotly/validators/funnelarea/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_namelengthsrc.py b/plotly/validators/funnelarea/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/_namelengthsrc.py rename to plotly/validators/funnelarea/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/__init__.py b/plotly/validators/funnelarea/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/__init__.py rename to plotly/validators/funnelarea/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_color.py b/plotly/validators/funnelarea/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_color.py rename to plotly/validators/funnelarea/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_colorsrc.py b/plotly/validators/funnelarea/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_colorsrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_family.py b/plotly/validators/funnelarea/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_family.py rename to plotly/validators/funnelarea/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_familysrc.py b/plotly/validators/funnelarea/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_familysrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_lineposition.py b/plotly/validators/funnelarea/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_lineposition.py rename to plotly/validators/funnelarea/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_linepositionsrc.py b/plotly/validators/funnelarea/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_shadow.py b/plotly/validators/funnelarea/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_shadow.py rename to plotly/validators/funnelarea/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_shadowsrc.py b/plotly/validators/funnelarea/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_shadowsrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_size.py b/plotly/validators/funnelarea/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_size.py rename to plotly/validators/funnelarea/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_sizesrc.py b/plotly/validators/funnelarea/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_sizesrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_style.py b/plotly/validators/funnelarea/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_style.py rename to plotly/validators/funnelarea/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_stylesrc.py b/plotly/validators/funnelarea/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_stylesrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_textcase.py b/plotly/validators/funnelarea/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_textcase.py rename to plotly/validators/funnelarea/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_textcasesrc.py b/plotly/validators/funnelarea/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_textcasesrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_variant.py b/plotly/validators/funnelarea/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_variant.py rename to plotly/validators/funnelarea/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_variantsrc.py b/plotly/validators/funnelarea/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_variantsrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_weight.py b/plotly/validators/funnelarea/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_weight.py rename to plotly/validators/funnelarea/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_weightsrc.py b/plotly/validators/funnelarea/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/hoverlabel/font/_weightsrc.py rename to plotly/validators/funnelarea/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/__init__.py b/plotly/validators/funnelarea/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/__init__.py rename to plotly/validators/funnelarea/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_color.py b/plotly/validators/funnelarea/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_color.py rename to plotly/validators/funnelarea/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_colorsrc.py b/plotly/validators/funnelarea/insidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_colorsrc.py rename to plotly/validators/funnelarea/insidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_family.py b/plotly/validators/funnelarea/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_family.py rename to plotly/validators/funnelarea/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_familysrc.py b/plotly/validators/funnelarea/insidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_familysrc.py rename to plotly/validators/funnelarea/insidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_lineposition.py b/plotly/validators/funnelarea/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_lineposition.py rename to plotly/validators/funnelarea/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_linepositionsrc.py b/plotly/validators/funnelarea/insidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_linepositionsrc.py rename to plotly/validators/funnelarea/insidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_shadow.py b/plotly/validators/funnelarea/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_shadow.py rename to plotly/validators/funnelarea/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_shadowsrc.py b/plotly/validators/funnelarea/insidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_shadowsrc.py rename to plotly/validators/funnelarea/insidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_size.py b/plotly/validators/funnelarea/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_size.py rename to plotly/validators/funnelarea/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_sizesrc.py b/plotly/validators/funnelarea/insidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_sizesrc.py rename to plotly/validators/funnelarea/insidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_style.py b/plotly/validators/funnelarea/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_style.py rename to plotly/validators/funnelarea/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_stylesrc.py b/plotly/validators/funnelarea/insidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_stylesrc.py rename to plotly/validators/funnelarea/insidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_textcase.py b/plotly/validators/funnelarea/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_textcase.py rename to plotly/validators/funnelarea/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_textcasesrc.py b/plotly/validators/funnelarea/insidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_textcasesrc.py rename to plotly/validators/funnelarea/insidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_variant.py b/plotly/validators/funnelarea/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_variant.py rename to plotly/validators/funnelarea/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_variantsrc.py b/plotly/validators/funnelarea/insidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_variantsrc.py rename to plotly/validators/funnelarea/insidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_weight.py b/plotly/validators/funnelarea/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_weight.py rename to plotly/validators/funnelarea/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_weightsrc.py b/plotly/validators/funnelarea/insidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/insidetextfont/_weightsrc.py rename to plotly/validators/funnelarea/insidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/__init__.py b/plotly/validators/funnelarea/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/__init__.py rename to plotly/validators/funnelarea/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/_font.py b/plotly/validators/funnelarea/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/_font.py rename to plotly/validators/funnelarea/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/_text.py b/plotly/validators/funnelarea/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/_text.py rename to plotly/validators/funnelarea/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/__init__.py b/plotly/validators/funnelarea/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/__init__.py rename to plotly/validators/funnelarea/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_color.py b/plotly/validators/funnelarea/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_color.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_family.py b/plotly/validators/funnelarea/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_family.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_lineposition.py b/plotly/validators/funnelarea/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_lineposition.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_shadow.py b/plotly/validators/funnelarea/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_shadow.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_size.py b/plotly/validators/funnelarea/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_size.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_style.py b/plotly/validators/funnelarea/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_style.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_textcase.py b/plotly/validators/funnelarea/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_textcase.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_variant.py b/plotly/validators/funnelarea/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_variant.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_weight.py b/plotly/validators/funnelarea/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/legendgrouptitle/font/_weight.py rename to plotly/validators/funnelarea/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/__init__.py b/plotly/validators/funnelarea/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/__init__.py rename to plotly/validators/funnelarea/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/_colors.py b/plotly/validators/funnelarea/marker/_colors.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/_colors.py rename to plotly/validators/funnelarea/marker/_colors.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/_colorssrc.py b/plotly/validators/funnelarea/marker/_colorssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/_colorssrc.py rename to plotly/validators/funnelarea/marker/_colorssrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/_line.py b/plotly/validators/funnelarea/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/_line.py rename to plotly/validators/funnelarea/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/_pattern.py b/plotly/validators/funnelarea/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/_pattern.py rename to plotly/validators/funnelarea/marker/_pattern.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/line/__init__.py b/plotly/validators/funnelarea/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/line/__init__.py rename to plotly/validators/funnelarea/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/line/_color.py b/plotly/validators/funnelarea/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/line/_color.py rename to plotly/validators/funnelarea/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/line/_colorsrc.py b/plotly/validators/funnelarea/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/line/_colorsrc.py rename to plotly/validators/funnelarea/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/line/_width.py b/plotly/validators/funnelarea/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/line/_width.py rename to plotly/validators/funnelarea/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/line/_widthsrc.py b/plotly/validators/funnelarea/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/line/_widthsrc.py rename to plotly/validators/funnelarea/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/__init__.py b/plotly/validators/funnelarea/marker/pattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/__init__.py rename to plotly/validators/funnelarea/marker/pattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_bgcolor.py b/plotly/validators/funnelarea/marker/pattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_bgcolor.py rename to plotly/validators/funnelarea/marker/pattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_bgcolorsrc.py b/plotly/validators/funnelarea/marker/pattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_bgcolorsrc.py rename to plotly/validators/funnelarea/marker/pattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_fgcolor.py b/plotly/validators/funnelarea/marker/pattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_fgcolor.py rename to plotly/validators/funnelarea/marker/pattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_fgcolorsrc.py b/plotly/validators/funnelarea/marker/pattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_fgcolorsrc.py rename to plotly/validators/funnelarea/marker/pattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_fgopacity.py b/plotly/validators/funnelarea/marker/pattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_fgopacity.py rename to plotly/validators/funnelarea/marker/pattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_fillmode.py b/plotly/validators/funnelarea/marker/pattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_fillmode.py rename to plotly/validators/funnelarea/marker/pattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_shape.py b/plotly/validators/funnelarea/marker/pattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_shape.py rename to plotly/validators/funnelarea/marker/pattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_shapesrc.py b/plotly/validators/funnelarea/marker/pattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_shapesrc.py rename to plotly/validators/funnelarea/marker/pattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_size.py b/plotly/validators/funnelarea/marker/pattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_size.py rename to plotly/validators/funnelarea/marker/pattern/_size.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_sizesrc.py b/plotly/validators/funnelarea/marker/pattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_sizesrc.py rename to plotly/validators/funnelarea/marker/pattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_solidity.py b/plotly/validators/funnelarea/marker/pattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_solidity.py rename to plotly/validators/funnelarea/marker/pattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_soliditysrc.py b/plotly/validators/funnelarea/marker/pattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/marker/pattern/_soliditysrc.py rename to plotly/validators/funnelarea/marker/pattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/stream/__init__.py b/plotly/validators/funnelarea/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/stream/__init__.py rename to plotly/validators/funnelarea/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/stream/_maxpoints.py b/plotly/validators/funnelarea/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/stream/_maxpoints.py rename to plotly/validators/funnelarea/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/stream/_token.py b/plotly/validators/funnelarea/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/stream/_token.py rename to plotly/validators/funnelarea/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/__init__.py b/plotly/validators/funnelarea/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/__init__.py rename to plotly/validators/funnelarea/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_color.py b/plotly/validators/funnelarea/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_color.py rename to plotly/validators/funnelarea/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_colorsrc.py b/plotly/validators/funnelarea/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_colorsrc.py rename to plotly/validators/funnelarea/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_family.py b/plotly/validators/funnelarea/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_family.py rename to plotly/validators/funnelarea/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_familysrc.py b/plotly/validators/funnelarea/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_familysrc.py rename to plotly/validators/funnelarea/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_lineposition.py b/plotly/validators/funnelarea/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_lineposition.py rename to plotly/validators/funnelarea/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_linepositionsrc.py b/plotly/validators/funnelarea/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_linepositionsrc.py rename to plotly/validators/funnelarea/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_shadow.py b/plotly/validators/funnelarea/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_shadow.py rename to plotly/validators/funnelarea/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_shadowsrc.py b/plotly/validators/funnelarea/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_shadowsrc.py rename to plotly/validators/funnelarea/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_size.py b/plotly/validators/funnelarea/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_size.py rename to plotly/validators/funnelarea/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_sizesrc.py b/plotly/validators/funnelarea/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_sizesrc.py rename to plotly/validators/funnelarea/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_style.py b/plotly/validators/funnelarea/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_style.py rename to plotly/validators/funnelarea/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_stylesrc.py b/plotly/validators/funnelarea/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_stylesrc.py rename to plotly/validators/funnelarea/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_textcase.py b/plotly/validators/funnelarea/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_textcase.py rename to plotly/validators/funnelarea/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_textcasesrc.py b/plotly/validators/funnelarea/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_textcasesrc.py rename to plotly/validators/funnelarea/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_variant.py b/plotly/validators/funnelarea/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_variant.py rename to plotly/validators/funnelarea/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_variantsrc.py b/plotly/validators/funnelarea/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_variantsrc.py rename to plotly/validators/funnelarea/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_weight.py b/plotly/validators/funnelarea/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_weight.py rename to plotly/validators/funnelarea/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/textfont/_weightsrc.py b/plotly/validators/funnelarea/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/textfont/_weightsrc.py rename to plotly/validators/funnelarea/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/__init__.py b/plotly/validators/funnelarea/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/__init__.py rename to plotly/validators/funnelarea/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/_font.py b/plotly/validators/funnelarea/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/_font.py rename to plotly/validators/funnelarea/title/_font.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/_position.py b/plotly/validators/funnelarea/title/_position.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/_position.py rename to plotly/validators/funnelarea/title/_position.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/_text.py b/plotly/validators/funnelarea/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/_text.py rename to plotly/validators/funnelarea/title/_text.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/__init__.py b/plotly/validators/funnelarea/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/__init__.py rename to plotly/validators/funnelarea/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_color.py b/plotly/validators/funnelarea/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_color.py rename to plotly/validators/funnelarea/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_colorsrc.py b/plotly/validators/funnelarea/title/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_colorsrc.py rename to plotly/validators/funnelarea/title/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_family.py b/plotly/validators/funnelarea/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_family.py rename to plotly/validators/funnelarea/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_familysrc.py b/plotly/validators/funnelarea/title/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_familysrc.py rename to plotly/validators/funnelarea/title/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_lineposition.py b/plotly/validators/funnelarea/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_lineposition.py rename to plotly/validators/funnelarea/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_linepositionsrc.py b/plotly/validators/funnelarea/title/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_linepositionsrc.py rename to plotly/validators/funnelarea/title/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_shadow.py b/plotly/validators/funnelarea/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_shadow.py rename to plotly/validators/funnelarea/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_shadowsrc.py b/plotly/validators/funnelarea/title/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_shadowsrc.py rename to plotly/validators/funnelarea/title/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_size.py b/plotly/validators/funnelarea/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_size.py rename to plotly/validators/funnelarea/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_sizesrc.py b/plotly/validators/funnelarea/title/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_sizesrc.py rename to plotly/validators/funnelarea/title/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_style.py b/plotly/validators/funnelarea/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_style.py rename to plotly/validators/funnelarea/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_stylesrc.py b/plotly/validators/funnelarea/title/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_stylesrc.py rename to plotly/validators/funnelarea/title/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_textcase.py b/plotly/validators/funnelarea/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_textcase.py rename to plotly/validators/funnelarea/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_textcasesrc.py b/plotly/validators/funnelarea/title/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_textcasesrc.py rename to plotly/validators/funnelarea/title/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_variant.py b/plotly/validators/funnelarea/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_variant.py rename to plotly/validators/funnelarea/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_variantsrc.py b/plotly/validators/funnelarea/title/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_variantsrc.py rename to plotly/validators/funnelarea/title/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_weight.py b/plotly/validators/funnelarea/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_weight.py rename to plotly/validators/funnelarea/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/funnelarea/title/font/_weightsrc.py b/plotly/validators/funnelarea/title/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/funnelarea/title/font/_weightsrc.py rename to plotly/validators/funnelarea/title/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/__init__.py b/plotly/validators/heatmap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/__init__.py rename to plotly/validators/heatmap/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_autocolorscale.py b/plotly/validators/heatmap/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_autocolorscale.py rename to plotly/validators/heatmap/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_coloraxis.py b/plotly/validators/heatmap/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_coloraxis.py rename to plotly/validators/heatmap/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_colorbar.py b/plotly/validators/heatmap/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_colorbar.py rename to plotly/validators/heatmap/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_colorscale.py b/plotly/validators/heatmap/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_colorscale.py rename to plotly/validators/heatmap/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_connectgaps.py b/plotly/validators/heatmap/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_connectgaps.py rename to plotly/validators/heatmap/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_customdata.py b/plotly/validators/heatmap/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_customdata.py rename to plotly/validators/heatmap/_customdata.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_customdatasrc.py b/plotly/validators/heatmap/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_customdatasrc.py rename to plotly/validators/heatmap/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_dx.py b/plotly/validators/heatmap/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_dx.py rename to plotly/validators/heatmap/_dx.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_dy.py b/plotly/validators/heatmap/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_dy.py rename to plotly/validators/heatmap/_dy.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_hoverinfo.py b/plotly/validators/heatmap/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_hoverinfo.py rename to plotly/validators/heatmap/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_hoverinfosrc.py b/plotly/validators/heatmap/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_hoverinfosrc.py rename to plotly/validators/heatmap/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_hoverlabel.py b/plotly/validators/heatmap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_hoverlabel.py rename to plotly/validators/heatmap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_hoverongaps.py b/plotly/validators/heatmap/_hoverongaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_hoverongaps.py rename to plotly/validators/heatmap/_hoverongaps.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_hovertemplate.py b/plotly/validators/heatmap/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_hovertemplate.py rename to plotly/validators/heatmap/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_hovertemplatesrc.py b/plotly/validators/heatmap/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_hovertemplatesrc.py rename to plotly/validators/heatmap/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_hovertext.py b/plotly/validators/heatmap/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_hovertext.py rename to plotly/validators/heatmap/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_hovertextsrc.py b/plotly/validators/heatmap/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_hovertextsrc.py rename to plotly/validators/heatmap/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_ids.py b/plotly/validators/heatmap/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_ids.py rename to plotly/validators/heatmap/_ids.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_idssrc.py b/plotly/validators/heatmap/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_idssrc.py rename to plotly/validators/heatmap/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_legend.py b/plotly/validators/heatmap/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_legend.py rename to plotly/validators/heatmap/_legend.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_legendgroup.py b/plotly/validators/heatmap/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_legendgroup.py rename to plotly/validators/heatmap/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_legendgrouptitle.py b/plotly/validators/heatmap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_legendgrouptitle.py rename to plotly/validators/heatmap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_legendrank.py b/plotly/validators/heatmap/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_legendrank.py rename to plotly/validators/heatmap/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_legendwidth.py b/plotly/validators/heatmap/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_legendwidth.py rename to plotly/validators/heatmap/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_meta.py b/plotly/validators/heatmap/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_meta.py rename to plotly/validators/heatmap/_meta.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_metasrc.py b/plotly/validators/heatmap/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_metasrc.py rename to plotly/validators/heatmap/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_name.py b/plotly/validators/heatmap/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_name.py rename to plotly/validators/heatmap/_name.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_opacity.py b/plotly/validators/heatmap/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_opacity.py rename to plotly/validators/heatmap/_opacity.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_reversescale.py b/plotly/validators/heatmap/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_reversescale.py rename to plotly/validators/heatmap/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_showlegend.py b/plotly/validators/heatmap/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_showlegend.py rename to plotly/validators/heatmap/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_showscale.py b/plotly/validators/heatmap/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_showscale.py rename to plotly/validators/heatmap/_showscale.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_stream.py b/plotly/validators/heatmap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_stream.py rename to plotly/validators/heatmap/_stream.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_text.py b/plotly/validators/heatmap/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_text.py rename to plotly/validators/heatmap/_text.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_textfont.py b/plotly/validators/heatmap/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_textfont.py rename to plotly/validators/heatmap/_textfont.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_textsrc.py b/plotly/validators/heatmap/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_textsrc.py rename to plotly/validators/heatmap/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_texttemplate.py b/plotly/validators/heatmap/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_texttemplate.py rename to plotly/validators/heatmap/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_transpose.py b/plotly/validators/heatmap/_transpose.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_transpose.py rename to plotly/validators/heatmap/_transpose.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_uid.py b/plotly/validators/heatmap/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_uid.py rename to plotly/validators/heatmap/_uid.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_uirevision.py b/plotly/validators/heatmap/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_uirevision.py rename to plotly/validators/heatmap/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_visible.py b/plotly/validators/heatmap/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_visible.py rename to plotly/validators/heatmap/_visible.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_x.py b/plotly/validators/heatmap/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_x.py rename to plotly/validators/heatmap/_x.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_x0.py b/plotly/validators/heatmap/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_x0.py rename to plotly/validators/heatmap/_x0.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xaxis.py b/plotly/validators/heatmap/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xaxis.py rename to plotly/validators/heatmap/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xcalendar.py b/plotly/validators/heatmap/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xcalendar.py rename to plotly/validators/heatmap/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xgap.py b/plotly/validators/heatmap/_xgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xgap.py rename to plotly/validators/heatmap/_xgap.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xhoverformat.py b/plotly/validators/heatmap/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xhoverformat.py rename to plotly/validators/heatmap/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xperiod.py b/plotly/validators/heatmap/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xperiod.py rename to plotly/validators/heatmap/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xperiod0.py b/plotly/validators/heatmap/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xperiod0.py rename to plotly/validators/heatmap/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xperiodalignment.py b/plotly/validators/heatmap/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xperiodalignment.py rename to plotly/validators/heatmap/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xsrc.py b/plotly/validators/heatmap/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xsrc.py rename to plotly/validators/heatmap/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_xtype.py b/plotly/validators/heatmap/_xtype.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_xtype.py rename to plotly/validators/heatmap/_xtype.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_y.py b/plotly/validators/heatmap/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_y.py rename to plotly/validators/heatmap/_y.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_y0.py b/plotly/validators/heatmap/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_y0.py rename to plotly/validators/heatmap/_y0.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_yaxis.py b/plotly/validators/heatmap/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_yaxis.py rename to plotly/validators/heatmap/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_ycalendar.py b/plotly/validators/heatmap/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_ycalendar.py rename to plotly/validators/heatmap/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_ygap.py b/plotly/validators/heatmap/_ygap.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_ygap.py rename to plotly/validators/heatmap/_ygap.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_yhoverformat.py b/plotly/validators/heatmap/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_yhoverformat.py rename to plotly/validators/heatmap/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_yperiod.py b/plotly/validators/heatmap/_yperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_yperiod.py rename to plotly/validators/heatmap/_yperiod.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_yperiod0.py b/plotly/validators/heatmap/_yperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_yperiod0.py rename to plotly/validators/heatmap/_yperiod0.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_yperiodalignment.py b/plotly/validators/heatmap/_yperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_yperiodalignment.py rename to plotly/validators/heatmap/_yperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_ysrc.py b/plotly/validators/heatmap/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_ysrc.py rename to plotly/validators/heatmap/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_ytype.py b/plotly/validators/heatmap/_ytype.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_ytype.py rename to plotly/validators/heatmap/_ytype.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_z.py b/plotly/validators/heatmap/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_z.py rename to plotly/validators/heatmap/_z.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_zauto.py b/plotly/validators/heatmap/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_zauto.py rename to plotly/validators/heatmap/_zauto.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_zhoverformat.py b/plotly/validators/heatmap/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_zhoverformat.py rename to plotly/validators/heatmap/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_zmax.py b/plotly/validators/heatmap/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_zmax.py rename to plotly/validators/heatmap/_zmax.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_zmid.py b/plotly/validators/heatmap/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_zmid.py rename to plotly/validators/heatmap/_zmid.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_zmin.py b/plotly/validators/heatmap/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_zmin.py rename to plotly/validators/heatmap/_zmin.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_zorder.py b/plotly/validators/heatmap/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_zorder.py rename to plotly/validators/heatmap/_zorder.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_zsmooth.py b/plotly/validators/heatmap/_zsmooth.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_zsmooth.py rename to plotly/validators/heatmap/_zsmooth.py diff --git a/packages/python/plotly/plotly/validators/heatmap/_zsrc.py b/plotly/validators/heatmap/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/_zsrc.py rename to plotly/validators/heatmap/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/__init__.py b/plotly/validators/heatmap/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/__init__.py rename to plotly/validators/heatmap/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_bgcolor.py b/plotly/validators/heatmap/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_bgcolor.py rename to plotly/validators/heatmap/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_bordercolor.py b/plotly/validators/heatmap/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_bordercolor.py rename to plotly/validators/heatmap/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_borderwidth.py b/plotly/validators/heatmap/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_borderwidth.py rename to plotly/validators/heatmap/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_dtick.py b/plotly/validators/heatmap/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_dtick.py rename to plotly/validators/heatmap/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_exponentformat.py b/plotly/validators/heatmap/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_exponentformat.py rename to plotly/validators/heatmap/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_labelalias.py b/plotly/validators/heatmap/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_labelalias.py rename to plotly/validators/heatmap/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_len.py b/plotly/validators/heatmap/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_len.py rename to plotly/validators/heatmap/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_lenmode.py b/plotly/validators/heatmap/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_lenmode.py rename to plotly/validators/heatmap/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_minexponent.py b/plotly/validators/heatmap/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_minexponent.py rename to plotly/validators/heatmap/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_nticks.py b/plotly/validators/heatmap/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_nticks.py rename to plotly/validators/heatmap/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_orientation.py b/plotly/validators/heatmap/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_orientation.py rename to plotly/validators/heatmap/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_outlinecolor.py b/plotly/validators/heatmap/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_outlinecolor.py rename to plotly/validators/heatmap/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_outlinewidth.py b/plotly/validators/heatmap/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_outlinewidth.py rename to plotly/validators/heatmap/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_separatethousands.py b/plotly/validators/heatmap/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_separatethousands.py rename to plotly/validators/heatmap/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_showexponent.py b/plotly/validators/heatmap/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_showexponent.py rename to plotly/validators/heatmap/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_showticklabels.py b/plotly/validators/heatmap/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_showticklabels.py rename to plotly/validators/heatmap/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_showtickprefix.py b/plotly/validators/heatmap/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_showtickprefix.py rename to plotly/validators/heatmap/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_showticksuffix.py b/plotly/validators/heatmap/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_showticksuffix.py rename to plotly/validators/heatmap/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_thickness.py b/plotly/validators/heatmap/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_thickness.py rename to plotly/validators/heatmap/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_thicknessmode.py b/plotly/validators/heatmap/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_thicknessmode.py rename to plotly/validators/heatmap/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tick0.py b/plotly/validators/heatmap/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tick0.py rename to plotly/validators/heatmap/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickangle.py b/plotly/validators/heatmap/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickangle.py rename to plotly/validators/heatmap/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickcolor.py b/plotly/validators/heatmap/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickcolor.py rename to plotly/validators/heatmap/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickfont.py b/plotly/validators/heatmap/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickfont.py rename to plotly/validators/heatmap/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickformat.py b/plotly/validators/heatmap/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickformat.py rename to plotly/validators/heatmap/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickformatstopdefaults.py b/plotly/validators/heatmap/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickformatstopdefaults.py rename to plotly/validators/heatmap/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickformatstops.py b/plotly/validators/heatmap/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickformatstops.py rename to plotly/validators/heatmap/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ticklabeloverflow.py b/plotly/validators/heatmap/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ticklabeloverflow.py rename to plotly/validators/heatmap/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ticklabelposition.py b/plotly/validators/heatmap/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ticklabelposition.py rename to plotly/validators/heatmap/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ticklabelstep.py b/plotly/validators/heatmap/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ticklabelstep.py rename to plotly/validators/heatmap/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ticklen.py b/plotly/validators/heatmap/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ticklen.py rename to plotly/validators/heatmap/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickmode.py b/plotly/validators/heatmap/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickmode.py rename to plotly/validators/heatmap/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickprefix.py b/plotly/validators/heatmap/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickprefix.py rename to plotly/validators/heatmap/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ticks.py b/plotly/validators/heatmap/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ticks.py rename to plotly/validators/heatmap/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ticksuffix.py b/plotly/validators/heatmap/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ticksuffix.py rename to plotly/validators/heatmap/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ticktext.py b/plotly/validators/heatmap/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ticktext.py rename to plotly/validators/heatmap/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ticktextsrc.py b/plotly/validators/heatmap/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ticktextsrc.py rename to plotly/validators/heatmap/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickvals.py b/plotly/validators/heatmap/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickvals.py rename to plotly/validators/heatmap/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickvalssrc.py b/plotly/validators/heatmap/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickvalssrc.py rename to plotly/validators/heatmap/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_tickwidth.py b/plotly/validators/heatmap/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_tickwidth.py rename to plotly/validators/heatmap/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_title.py b/plotly/validators/heatmap/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_title.py rename to plotly/validators/heatmap/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_x.py b/plotly/validators/heatmap/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_x.py rename to plotly/validators/heatmap/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_xanchor.py b/plotly/validators/heatmap/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_xanchor.py rename to plotly/validators/heatmap/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_xpad.py b/plotly/validators/heatmap/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_xpad.py rename to plotly/validators/heatmap/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_xref.py b/plotly/validators/heatmap/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_xref.py rename to plotly/validators/heatmap/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_y.py b/plotly/validators/heatmap/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_y.py rename to plotly/validators/heatmap/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_yanchor.py b/plotly/validators/heatmap/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_yanchor.py rename to plotly/validators/heatmap/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_ypad.py b/plotly/validators/heatmap/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_ypad.py rename to plotly/validators/heatmap/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/_yref.py b/plotly/validators/heatmap/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/_yref.py rename to plotly/validators/heatmap/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/__init__.py b/plotly/validators/heatmap/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/__init__.py rename to plotly/validators/heatmap/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_color.py b/plotly/validators/heatmap/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_color.py rename to plotly/validators/heatmap/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_family.py b/plotly/validators/heatmap/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_family.py rename to plotly/validators/heatmap/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_lineposition.py b/plotly/validators/heatmap/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_lineposition.py rename to plotly/validators/heatmap/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_shadow.py b/plotly/validators/heatmap/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_shadow.py rename to plotly/validators/heatmap/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_size.py b/plotly/validators/heatmap/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_size.py rename to plotly/validators/heatmap/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_style.py b/plotly/validators/heatmap/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_style.py rename to plotly/validators/heatmap/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_textcase.py b/plotly/validators/heatmap/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_textcase.py rename to plotly/validators/heatmap/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_variant.py b/plotly/validators/heatmap/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_variant.py rename to plotly/validators/heatmap/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_weight.py b/plotly/validators/heatmap/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickfont/_weight.py rename to plotly/validators/heatmap/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/__init__.py b/plotly/validators/heatmap/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/__init__.py rename to plotly/validators/heatmap/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/heatmap/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/heatmap/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_enabled.py b/plotly/validators/heatmap/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_enabled.py rename to plotly/validators/heatmap/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_name.py b/plotly/validators/heatmap/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_name.py rename to plotly/validators/heatmap/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/heatmap/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/heatmap/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_value.py b/plotly/validators/heatmap/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/tickformatstop/_value.py rename to plotly/validators/heatmap/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/__init__.py b/plotly/validators/heatmap/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/__init__.py rename to plotly/validators/heatmap/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/_font.py b/plotly/validators/heatmap/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/_font.py rename to plotly/validators/heatmap/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/_side.py b/plotly/validators/heatmap/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/_side.py rename to plotly/validators/heatmap/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/_text.py b/plotly/validators/heatmap/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/_text.py rename to plotly/validators/heatmap/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/__init__.py b/plotly/validators/heatmap/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/__init__.py rename to plotly/validators/heatmap/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_color.py b/plotly/validators/heatmap/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_color.py rename to plotly/validators/heatmap/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_family.py b/plotly/validators/heatmap/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_family.py rename to plotly/validators/heatmap/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_lineposition.py b/plotly/validators/heatmap/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_lineposition.py rename to plotly/validators/heatmap/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_shadow.py b/plotly/validators/heatmap/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_shadow.py rename to plotly/validators/heatmap/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_size.py b/plotly/validators/heatmap/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_size.py rename to plotly/validators/heatmap/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_style.py b/plotly/validators/heatmap/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_style.py rename to plotly/validators/heatmap/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_textcase.py b/plotly/validators/heatmap/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_textcase.py rename to plotly/validators/heatmap/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_variant.py b/plotly/validators/heatmap/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_variant.py rename to plotly/validators/heatmap/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_weight.py b/plotly/validators/heatmap/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/colorbar/title/font/_weight.py rename to plotly/validators/heatmap/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/__init__.py b/plotly/validators/heatmap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/__init__.py rename to plotly/validators/heatmap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_align.py b/plotly/validators/heatmap/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_align.py rename to plotly/validators/heatmap/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_alignsrc.py b/plotly/validators/heatmap/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_alignsrc.py rename to plotly/validators/heatmap/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_bgcolor.py b/plotly/validators/heatmap/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_bgcolor.py rename to plotly/validators/heatmap/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_bgcolorsrc.py b/plotly/validators/heatmap/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_bgcolorsrc.py rename to plotly/validators/heatmap/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_bordercolor.py b/plotly/validators/heatmap/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_bordercolor.py rename to plotly/validators/heatmap/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_bordercolorsrc.py b/plotly/validators/heatmap/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_bordercolorsrc.py rename to plotly/validators/heatmap/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_font.py b/plotly/validators/heatmap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_font.py rename to plotly/validators/heatmap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_namelength.py b/plotly/validators/heatmap/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_namelength.py rename to plotly/validators/heatmap/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/_namelengthsrc.py b/plotly/validators/heatmap/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/_namelengthsrc.py rename to plotly/validators/heatmap/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/__init__.py b/plotly/validators/heatmap/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/__init__.py rename to plotly/validators/heatmap/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_color.py b/plotly/validators/heatmap/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_color.py rename to plotly/validators/heatmap/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_colorsrc.py b/plotly/validators/heatmap/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_colorsrc.py rename to plotly/validators/heatmap/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_family.py b/plotly/validators/heatmap/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_family.py rename to plotly/validators/heatmap/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_familysrc.py b/plotly/validators/heatmap/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_familysrc.py rename to plotly/validators/heatmap/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_lineposition.py b/plotly/validators/heatmap/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_lineposition.py rename to plotly/validators/heatmap/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_linepositionsrc.py b/plotly/validators/heatmap/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/heatmap/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_shadow.py b/plotly/validators/heatmap/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_shadow.py rename to plotly/validators/heatmap/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_shadowsrc.py b/plotly/validators/heatmap/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_shadowsrc.py rename to plotly/validators/heatmap/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_size.py b/plotly/validators/heatmap/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_size.py rename to plotly/validators/heatmap/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_sizesrc.py b/plotly/validators/heatmap/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_sizesrc.py rename to plotly/validators/heatmap/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_style.py b/plotly/validators/heatmap/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_style.py rename to plotly/validators/heatmap/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_stylesrc.py b/plotly/validators/heatmap/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_stylesrc.py rename to plotly/validators/heatmap/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_textcase.py b/plotly/validators/heatmap/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_textcase.py rename to plotly/validators/heatmap/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_textcasesrc.py b/plotly/validators/heatmap/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_textcasesrc.py rename to plotly/validators/heatmap/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_variant.py b/plotly/validators/heatmap/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_variant.py rename to plotly/validators/heatmap/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_variantsrc.py b/plotly/validators/heatmap/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_variantsrc.py rename to plotly/validators/heatmap/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_weight.py b/plotly/validators/heatmap/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_weight.py rename to plotly/validators/heatmap/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_weightsrc.py b/plotly/validators/heatmap/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/hoverlabel/font/_weightsrc.py rename to plotly/validators/heatmap/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/__init__.py b/plotly/validators/heatmap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/__init__.py rename to plotly/validators/heatmap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/_font.py b/plotly/validators/heatmap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/_font.py rename to plotly/validators/heatmap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/_text.py b/plotly/validators/heatmap/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/_text.py rename to plotly/validators/heatmap/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/__init__.py b/plotly/validators/heatmap/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/__init__.py rename to plotly/validators/heatmap/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_color.py b/plotly/validators/heatmap/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_color.py rename to plotly/validators/heatmap/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_family.py b/plotly/validators/heatmap/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_family.py rename to plotly/validators/heatmap/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_lineposition.py b/plotly/validators/heatmap/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_lineposition.py rename to plotly/validators/heatmap/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_shadow.py b/plotly/validators/heatmap/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_shadow.py rename to plotly/validators/heatmap/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_size.py b/plotly/validators/heatmap/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_size.py rename to plotly/validators/heatmap/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_style.py b/plotly/validators/heatmap/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_style.py rename to plotly/validators/heatmap/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_textcase.py b/plotly/validators/heatmap/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_textcase.py rename to plotly/validators/heatmap/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_variant.py b/plotly/validators/heatmap/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_variant.py rename to plotly/validators/heatmap/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_weight.py b/plotly/validators/heatmap/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/legendgrouptitle/font/_weight.py rename to plotly/validators/heatmap/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/heatmap/stream/__init__.py b/plotly/validators/heatmap/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/stream/__init__.py rename to plotly/validators/heatmap/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/stream/_maxpoints.py b/plotly/validators/heatmap/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/stream/_maxpoints.py rename to plotly/validators/heatmap/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/heatmap/stream/_token.py b/plotly/validators/heatmap/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/stream/_token.py rename to plotly/validators/heatmap/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/__init__.py b/plotly/validators/heatmap/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/__init__.py rename to plotly/validators/heatmap/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_color.py b/plotly/validators/heatmap/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_color.py rename to plotly/validators/heatmap/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_family.py b/plotly/validators/heatmap/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_family.py rename to plotly/validators/heatmap/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_lineposition.py b/plotly/validators/heatmap/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_lineposition.py rename to plotly/validators/heatmap/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_shadow.py b/plotly/validators/heatmap/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_shadow.py rename to plotly/validators/heatmap/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_size.py b/plotly/validators/heatmap/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_size.py rename to plotly/validators/heatmap/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_style.py b/plotly/validators/heatmap/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_style.py rename to plotly/validators/heatmap/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_textcase.py b/plotly/validators/heatmap/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_textcase.py rename to plotly/validators/heatmap/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_variant.py b/plotly/validators/heatmap/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_variant.py rename to plotly/validators/heatmap/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/heatmap/textfont/_weight.py b/plotly/validators/heatmap/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/heatmap/textfont/_weight.py rename to plotly/validators/heatmap/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram/__init__.py b/plotly/validators/histogram/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/__init__.py rename to plotly/validators/histogram/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/_alignmentgroup.py b/plotly/validators/histogram/_alignmentgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_alignmentgroup.py rename to plotly/validators/histogram/_alignmentgroup.py diff --git a/packages/python/plotly/plotly/validators/histogram/_autobinx.py b/plotly/validators/histogram/_autobinx.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_autobinx.py rename to plotly/validators/histogram/_autobinx.py diff --git a/packages/python/plotly/plotly/validators/histogram/_autobiny.py b/plotly/validators/histogram/_autobiny.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_autobiny.py rename to plotly/validators/histogram/_autobiny.py diff --git a/packages/python/plotly/plotly/validators/histogram/_bingroup.py b/plotly/validators/histogram/_bingroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_bingroup.py rename to plotly/validators/histogram/_bingroup.py diff --git a/packages/python/plotly/plotly/validators/histogram/_cliponaxis.py b/plotly/validators/histogram/_cliponaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_cliponaxis.py rename to plotly/validators/histogram/_cliponaxis.py diff --git a/packages/python/plotly/plotly/validators/histogram/_constraintext.py b/plotly/validators/histogram/_constraintext.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_constraintext.py rename to plotly/validators/histogram/_constraintext.py diff --git a/packages/python/plotly/plotly/validators/histogram/_cumulative.py b/plotly/validators/histogram/_cumulative.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_cumulative.py rename to plotly/validators/histogram/_cumulative.py diff --git a/packages/python/plotly/plotly/validators/histogram/_customdata.py b/plotly/validators/histogram/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_customdata.py rename to plotly/validators/histogram/_customdata.py diff --git a/packages/python/plotly/plotly/validators/histogram/_customdatasrc.py b/plotly/validators/histogram/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_customdatasrc.py rename to plotly/validators/histogram/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_error_x.py b/plotly/validators/histogram/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_error_x.py rename to plotly/validators/histogram/_error_x.py diff --git a/packages/python/plotly/plotly/validators/histogram/_error_y.py b/plotly/validators/histogram/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_error_y.py rename to plotly/validators/histogram/_error_y.py diff --git a/packages/python/plotly/plotly/validators/histogram/_histfunc.py b/plotly/validators/histogram/_histfunc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_histfunc.py rename to plotly/validators/histogram/_histfunc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_histnorm.py b/plotly/validators/histogram/_histnorm.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_histnorm.py rename to plotly/validators/histogram/_histnorm.py diff --git a/packages/python/plotly/plotly/validators/histogram/_hoverinfo.py b/plotly/validators/histogram/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_hoverinfo.py rename to plotly/validators/histogram/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/histogram/_hoverinfosrc.py b/plotly/validators/histogram/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_hoverinfosrc.py rename to plotly/validators/histogram/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_hoverlabel.py b/plotly/validators/histogram/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_hoverlabel.py rename to plotly/validators/histogram/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/histogram/_hovertemplate.py b/plotly/validators/histogram/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_hovertemplate.py rename to plotly/validators/histogram/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/histogram/_hovertemplatesrc.py b/plotly/validators/histogram/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_hovertemplatesrc.py rename to plotly/validators/histogram/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_hovertext.py b/plotly/validators/histogram/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_hovertext.py rename to plotly/validators/histogram/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/histogram/_hovertextsrc.py b/plotly/validators/histogram/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_hovertextsrc.py rename to plotly/validators/histogram/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_ids.py b/plotly/validators/histogram/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_ids.py rename to plotly/validators/histogram/_ids.py diff --git a/packages/python/plotly/plotly/validators/histogram/_idssrc.py b/plotly/validators/histogram/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_idssrc.py rename to plotly/validators/histogram/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_insidetextanchor.py b/plotly/validators/histogram/_insidetextanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_insidetextanchor.py rename to plotly/validators/histogram/_insidetextanchor.py diff --git a/packages/python/plotly/plotly/validators/histogram/_insidetextfont.py b/plotly/validators/histogram/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_insidetextfont.py rename to plotly/validators/histogram/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/histogram/_legend.py b/plotly/validators/histogram/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_legend.py rename to plotly/validators/histogram/_legend.py diff --git a/packages/python/plotly/plotly/validators/histogram/_legendgroup.py b/plotly/validators/histogram/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_legendgroup.py rename to plotly/validators/histogram/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/histogram/_legendgrouptitle.py b/plotly/validators/histogram/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_legendgrouptitle.py rename to plotly/validators/histogram/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/histogram/_legendrank.py b/plotly/validators/histogram/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_legendrank.py rename to plotly/validators/histogram/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/histogram/_legendwidth.py b/plotly/validators/histogram/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_legendwidth.py rename to plotly/validators/histogram/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram/_marker.py b/plotly/validators/histogram/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_marker.py rename to plotly/validators/histogram/_marker.py diff --git a/packages/python/plotly/plotly/validators/histogram/_meta.py b/plotly/validators/histogram/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_meta.py rename to plotly/validators/histogram/_meta.py diff --git a/packages/python/plotly/plotly/validators/histogram/_metasrc.py b/plotly/validators/histogram/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_metasrc.py rename to plotly/validators/histogram/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_name.py b/plotly/validators/histogram/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_name.py rename to plotly/validators/histogram/_name.py diff --git a/packages/python/plotly/plotly/validators/histogram/_nbinsx.py b/plotly/validators/histogram/_nbinsx.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_nbinsx.py rename to plotly/validators/histogram/_nbinsx.py diff --git a/packages/python/plotly/plotly/validators/histogram/_nbinsy.py b/plotly/validators/histogram/_nbinsy.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_nbinsy.py rename to plotly/validators/histogram/_nbinsy.py diff --git a/packages/python/plotly/plotly/validators/histogram/_offsetgroup.py b/plotly/validators/histogram/_offsetgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_offsetgroup.py rename to plotly/validators/histogram/_offsetgroup.py diff --git a/packages/python/plotly/plotly/validators/histogram/_opacity.py b/plotly/validators/histogram/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_opacity.py rename to plotly/validators/histogram/_opacity.py diff --git a/packages/python/plotly/plotly/validators/histogram/_orientation.py b/plotly/validators/histogram/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_orientation.py rename to plotly/validators/histogram/_orientation.py diff --git a/packages/python/plotly/plotly/validators/histogram/_outsidetextfont.py b/plotly/validators/histogram/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_outsidetextfont.py rename to plotly/validators/histogram/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/validators/histogram/_selected.py b/plotly/validators/histogram/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_selected.py rename to plotly/validators/histogram/_selected.py diff --git a/packages/python/plotly/plotly/validators/histogram/_selectedpoints.py b/plotly/validators/histogram/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_selectedpoints.py rename to plotly/validators/histogram/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/histogram/_showlegend.py b/plotly/validators/histogram/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_showlegend.py rename to plotly/validators/histogram/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/histogram/_stream.py b/plotly/validators/histogram/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_stream.py rename to plotly/validators/histogram/_stream.py diff --git a/packages/python/plotly/plotly/validators/histogram/_text.py b/plotly/validators/histogram/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_text.py rename to plotly/validators/histogram/_text.py diff --git a/packages/python/plotly/plotly/validators/histogram/_textangle.py b/plotly/validators/histogram/_textangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_textangle.py rename to plotly/validators/histogram/_textangle.py diff --git a/packages/python/plotly/plotly/validators/histogram/_textfont.py b/plotly/validators/histogram/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_textfont.py rename to plotly/validators/histogram/_textfont.py diff --git a/packages/python/plotly/plotly/validators/histogram/_textposition.py b/plotly/validators/histogram/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_textposition.py rename to plotly/validators/histogram/_textposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/_textsrc.py b/plotly/validators/histogram/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_textsrc.py rename to plotly/validators/histogram/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_texttemplate.py b/plotly/validators/histogram/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_texttemplate.py rename to plotly/validators/histogram/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/histogram/_uid.py b/plotly/validators/histogram/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_uid.py rename to plotly/validators/histogram/_uid.py diff --git a/packages/python/plotly/plotly/validators/histogram/_uirevision.py b/plotly/validators/histogram/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_uirevision.py rename to plotly/validators/histogram/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/histogram/_unselected.py b/plotly/validators/histogram/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_unselected.py rename to plotly/validators/histogram/_unselected.py diff --git a/packages/python/plotly/plotly/validators/histogram/_visible.py b/plotly/validators/histogram/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_visible.py rename to plotly/validators/histogram/_visible.py diff --git a/packages/python/plotly/plotly/validators/histogram/_x.py b/plotly/validators/histogram/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_x.py rename to plotly/validators/histogram/_x.py diff --git a/packages/python/plotly/plotly/validators/histogram/_xaxis.py b/plotly/validators/histogram/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_xaxis.py rename to plotly/validators/histogram/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/histogram/_xbins.py b/plotly/validators/histogram/_xbins.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_xbins.py rename to plotly/validators/histogram/_xbins.py diff --git a/packages/python/plotly/plotly/validators/histogram/_xcalendar.py b/plotly/validators/histogram/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_xcalendar.py rename to plotly/validators/histogram/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/histogram/_xhoverformat.py b/plotly/validators/histogram/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_xhoverformat.py rename to plotly/validators/histogram/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/histogram/_xsrc.py b/plotly/validators/histogram/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_xsrc.py rename to plotly/validators/histogram/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_y.py b/plotly/validators/histogram/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_y.py rename to plotly/validators/histogram/_y.py diff --git a/packages/python/plotly/plotly/validators/histogram/_yaxis.py b/plotly/validators/histogram/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_yaxis.py rename to plotly/validators/histogram/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/histogram/_ybins.py b/plotly/validators/histogram/_ybins.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_ybins.py rename to plotly/validators/histogram/_ybins.py diff --git a/packages/python/plotly/plotly/validators/histogram/_ycalendar.py b/plotly/validators/histogram/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_ycalendar.py rename to plotly/validators/histogram/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/histogram/_yhoverformat.py b/plotly/validators/histogram/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_yhoverformat.py rename to plotly/validators/histogram/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/histogram/_ysrc.py b/plotly/validators/histogram/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_ysrc.py rename to plotly/validators/histogram/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/_zorder.py b/plotly/validators/histogram/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/_zorder.py rename to plotly/validators/histogram/_zorder.py diff --git a/packages/python/plotly/plotly/validators/histogram/cumulative/__init__.py b/plotly/validators/histogram/cumulative/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/cumulative/__init__.py rename to plotly/validators/histogram/cumulative/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/cumulative/_currentbin.py b/plotly/validators/histogram/cumulative/_currentbin.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/cumulative/_currentbin.py rename to plotly/validators/histogram/cumulative/_currentbin.py diff --git a/packages/python/plotly/plotly/validators/histogram/cumulative/_direction.py b/plotly/validators/histogram/cumulative/_direction.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/cumulative/_direction.py rename to plotly/validators/histogram/cumulative/_direction.py diff --git a/packages/python/plotly/plotly/validators/histogram/cumulative/_enabled.py b/plotly/validators/histogram/cumulative/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/cumulative/_enabled.py rename to plotly/validators/histogram/cumulative/_enabled.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/__init__.py b/plotly/validators/histogram/error_x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/__init__.py rename to plotly/validators/histogram/error_x/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_array.py b/plotly/validators/histogram/error_x/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_array.py rename to plotly/validators/histogram/error_x/_array.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_arrayminus.py b/plotly/validators/histogram/error_x/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_arrayminus.py rename to plotly/validators/histogram/error_x/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_arrayminussrc.py b/plotly/validators/histogram/error_x/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_arrayminussrc.py rename to plotly/validators/histogram/error_x/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_arraysrc.py b/plotly/validators/histogram/error_x/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_arraysrc.py rename to plotly/validators/histogram/error_x/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_color.py b/plotly/validators/histogram/error_x/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_color.py rename to plotly/validators/histogram/error_x/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_copy_ystyle.py b/plotly/validators/histogram/error_x/_copy_ystyle.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_copy_ystyle.py rename to plotly/validators/histogram/error_x/_copy_ystyle.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_symmetric.py b/plotly/validators/histogram/error_x/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_symmetric.py rename to plotly/validators/histogram/error_x/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_thickness.py b/plotly/validators/histogram/error_x/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_thickness.py rename to plotly/validators/histogram/error_x/_thickness.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_traceref.py b/plotly/validators/histogram/error_x/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_traceref.py rename to plotly/validators/histogram/error_x/_traceref.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_tracerefminus.py b/plotly/validators/histogram/error_x/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_tracerefminus.py rename to plotly/validators/histogram/error_x/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_type.py b/plotly/validators/histogram/error_x/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_type.py rename to plotly/validators/histogram/error_x/_type.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_value.py b/plotly/validators/histogram/error_x/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_value.py rename to plotly/validators/histogram/error_x/_value.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_valueminus.py b/plotly/validators/histogram/error_x/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_valueminus.py rename to plotly/validators/histogram/error_x/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_visible.py b/plotly/validators/histogram/error_x/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_visible.py rename to plotly/validators/histogram/error_x/_visible.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_x/_width.py b/plotly/validators/histogram/error_x/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_x/_width.py rename to plotly/validators/histogram/error_x/_width.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/__init__.py b/plotly/validators/histogram/error_y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/__init__.py rename to plotly/validators/histogram/error_y/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_array.py b/plotly/validators/histogram/error_y/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_array.py rename to plotly/validators/histogram/error_y/_array.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_arrayminus.py b/plotly/validators/histogram/error_y/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_arrayminus.py rename to plotly/validators/histogram/error_y/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_arrayminussrc.py b/plotly/validators/histogram/error_y/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_arrayminussrc.py rename to plotly/validators/histogram/error_y/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_arraysrc.py b/plotly/validators/histogram/error_y/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_arraysrc.py rename to plotly/validators/histogram/error_y/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_color.py b/plotly/validators/histogram/error_y/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_color.py rename to plotly/validators/histogram/error_y/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_symmetric.py b/plotly/validators/histogram/error_y/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_symmetric.py rename to plotly/validators/histogram/error_y/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_thickness.py b/plotly/validators/histogram/error_y/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_thickness.py rename to plotly/validators/histogram/error_y/_thickness.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_traceref.py b/plotly/validators/histogram/error_y/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_traceref.py rename to plotly/validators/histogram/error_y/_traceref.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_tracerefminus.py b/plotly/validators/histogram/error_y/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_tracerefminus.py rename to plotly/validators/histogram/error_y/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_type.py b/plotly/validators/histogram/error_y/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_type.py rename to plotly/validators/histogram/error_y/_type.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_value.py b/plotly/validators/histogram/error_y/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_value.py rename to plotly/validators/histogram/error_y/_value.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_valueminus.py b/plotly/validators/histogram/error_y/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_valueminus.py rename to plotly/validators/histogram/error_y/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_visible.py b/plotly/validators/histogram/error_y/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_visible.py rename to plotly/validators/histogram/error_y/_visible.py diff --git a/packages/python/plotly/plotly/validators/histogram/error_y/_width.py b/plotly/validators/histogram/error_y/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/error_y/_width.py rename to plotly/validators/histogram/error_y/_width.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/__init__.py b/plotly/validators/histogram/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/__init__.py rename to plotly/validators/histogram/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_align.py b/plotly/validators/histogram/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_align.py rename to plotly/validators/histogram/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_alignsrc.py b/plotly/validators/histogram/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_alignsrc.py rename to plotly/validators/histogram/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_bgcolor.py b/plotly/validators/histogram/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_bgcolor.py rename to plotly/validators/histogram/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_bgcolorsrc.py b/plotly/validators/histogram/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_bgcolorsrc.py rename to plotly/validators/histogram/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_bordercolor.py b/plotly/validators/histogram/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_bordercolor.py rename to plotly/validators/histogram/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_bordercolorsrc.py b/plotly/validators/histogram/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_bordercolorsrc.py rename to plotly/validators/histogram/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_font.py b/plotly/validators/histogram/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_font.py rename to plotly/validators/histogram/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_namelength.py b/plotly/validators/histogram/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_namelength.py rename to plotly/validators/histogram/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/_namelengthsrc.py b/plotly/validators/histogram/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/_namelengthsrc.py rename to plotly/validators/histogram/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/__init__.py b/plotly/validators/histogram/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/__init__.py rename to plotly/validators/histogram/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_color.py b/plotly/validators/histogram/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_color.py rename to plotly/validators/histogram/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_colorsrc.py b/plotly/validators/histogram/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_colorsrc.py rename to plotly/validators/histogram/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_family.py b/plotly/validators/histogram/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_family.py rename to plotly/validators/histogram/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_familysrc.py b/plotly/validators/histogram/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_familysrc.py rename to plotly/validators/histogram/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_lineposition.py b/plotly/validators/histogram/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_lineposition.py rename to plotly/validators/histogram/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_linepositionsrc.py b/plotly/validators/histogram/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/histogram/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_shadow.py b/plotly/validators/histogram/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_shadow.py rename to plotly/validators/histogram/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_shadowsrc.py b/plotly/validators/histogram/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_shadowsrc.py rename to plotly/validators/histogram/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_size.py b/plotly/validators/histogram/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_size.py rename to plotly/validators/histogram/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_sizesrc.py b/plotly/validators/histogram/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_sizesrc.py rename to plotly/validators/histogram/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_style.py b/plotly/validators/histogram/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_style.py rename to plotly/validators/histogram/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_stylesrc.py b/plotly/validators/histogram/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_stylesrc.py rename to plotly/validators/histogram/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_textcase.py b/plotly/validators/histogram/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_textcase.py rename to plotly/validators/histogram/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_textcasesrc.py b/plotly/validators/histogram/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_textcasesrc.py rename to plotly/validators/histogram/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_variant.py b/plotly/validators/histogram/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_variant.py rename to plotly/validators/histogram/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_variantsrc.py b/plotly/validators/histogram/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_variantsrc.py rename to plotly/validators/histogram/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_weight.py b/plotly/validators/histogram/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_weight.py rename to plotly/validators/histogram/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_weightsrc.py b/plotly/validators/histogram/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/hoverlabel/font/_weightsrc.py rename to plotly/validators/histogram/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/__init__.py b/plotly/validators/histogram/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/__init__.py rename to plotly/validators/histogram/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_color.py b/plotly/validators/histogram/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_color.py rename to plotly/validators/histogram/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_family.py b/plotly/validators/histogram/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_family.py rename to plotly/validators/histogram/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_lineposition.py b/plotly/validators/histogram/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_lineposition.py rename to plotly/validators/histogram/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_shadow.py b/plotly/validators/histogram/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_shadow.py rename to plotly/validators/histogram/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_size.py b/plotly/validators/histogram/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_size.py rename to plotly/validators/histogram/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_style.py b/plotly/validators/histogram/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_style.py rename to plotly/validators/histogram/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_textcase.py b/plotly/validators/histogram/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_textcase.py rename to plotly/validators/histogram/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_variant.py b/plotly/validators/histogram/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_variant.py rename to plotly/validators/histogram/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram/insidetextfont/_weight.py b/plotly/validators/histogram/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/insidetextfont/_weight.py rename to plotly/validators/histogram/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/__init__.py b/plotly/validators/histogram/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/__init__.py rename to plotly/validators/histogram/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/_font.py b/plotly/validators/histogram/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/_font.py rename to plotly/validators/histogram/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/_text.py b/plotly/validators/histogram/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/_text.py rename to plotly/validators/histogram/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/__init__.py b/plotly/validators/histogram/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/__init__.py rename to plotly/validators/histogram/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_color.py b/plotly/validators/histogram/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_color.py rename to plotly/validators/histogram/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_family.py b/plotly/validators/histogram/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_family.py rename to plotly/validators/histogram/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_lineposition.py b/plotly/validators/histogram/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_lineposition.py rename to plotly/validators/histogram/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_shadow.py b/plotly/validators/histogram/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_shadow.py rename to plotly/validators/histogram/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_size.py b/plotly/validators/histogram/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_size.py rename to plotly/validators/histogram/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_style.py b/plotly/validators/histogram/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_style.py rename to plotly/validators/histogram/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_textcase.py b/plotly/validators/histogram/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_textcase.py rename to plotly/validators/histogram/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_variant.py b/plotly/validators/histogram/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_variant.py rename to plotly/validators/histogram/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_weight.py b/plotly/validators/histogram/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/legendgrouptitle/font/_weight.py rename to plotly/validators/histogram/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/__init__.py b/plotly/validators/histogram/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/__init__.py rename to plotly/validators/histogram/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_autocolorscale.py b/plotly/validators/histogram/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_autocolorscale.py rename to plotly/validators/histogram/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_cauto.py b/plotly/validators/histogram/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_cauto.py rename to plotly/validators/histogram/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_cmax.py b/plotly/validators/histogram/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_cmax.py rename to plotly/validators/histogram/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_cmid.py b/plotly/validators/histogram/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_cmid.py rename to plotly/validators/histogram/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_cmin.py b/plotly/validators/histogram/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_cmin.py rename to plotly/validators/histogram/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_color.py b/plotly/validators/histogram/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_color.py rename to plotly/validators/histogram/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_coloraxis.py b/plotly/validators/histogram/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_coloraxis.py rename to plotly/validators/histogram/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_colorbar.py b/plotly/validators/histogram/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_colorbar.py rename to plotly/validators/histogram/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_colorscale.py b/plotly/validators/histogram/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_colorscale.py rename to plotly/validators/histogram/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_colorsrc.py b/plotly/validators/histogram/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_colorsrc.py rename to plotly/validators/histogram/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_cornerradius.py b/plotly/validators/histogram/marker/_cornerradius.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_cornerradius.py rename to plotly/validators/histogram/marker/_cornerradius.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_line.py b/plotly/validators/histogram/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_line.py rename to plotly/validators/histogram/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_opacity.py b/plotly/validators/histogram/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_opacity.py rename to plotly/validators/histogram/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_opacitysrc.py b/plotly/validators/histogram/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_opacitysrc.py rename to plotly/validators/histogram/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_pattern.py b/plotly/validators/histogram/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_pattern.py rename to plotly/validators/histogram/marker/_pattern.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_reversescale.py b/plotly/validators/histogram/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_reversescale.py rename to plotly/validators/histogram/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/_showscale.py b/plotly/validators/histogram/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/_showscale.py rename to plotly/validators/histogram/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/__init__.py b/plotly/validators/histogram/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/__init__.py rename to plotly/validators/histogram/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_bgcolor.py b/plotly/validators/histogram/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_bgcolor.py rename to plotly/validators/histogram/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_bordercolor.py b/plotly/validators/histogram/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_bordercolor.py rename to plotly/validators/histogram/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_borderwidth.py b/plotly/validators/histogram/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_borderwidth.py rename to plotly/validators/histogram/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_dtick.py b/plotly/validators/histogram/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_dtick.py rename to plotly/validators/histogram/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_exponentformat.py b/plotly/validators/histogram/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_exponentformat.py rename to plotly/validators/histogram/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_labelalias.py b/plotly/validators/histogram/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_labelalias.py rename to plotly/validators/histogram/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_len.py b/plotly/validators/histogram/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_len.py rename to plotly/validators/histogram/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_lenmode.py b/plotly/validators/histogram/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_lenmode.py rename to plotly/validators/histogram/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_minexponent.py b/plotly/validators/histogram/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_minexponent.py rename to plotly/validators/histogram/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_nticks.py b/plotly/validators/histogram/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_nticks.py rename to plotly/validators/histogram/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_orientation.py b/plotly/validators/histogram/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_orientation.py rename to plotly/validators/histogram/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_outlinecolor.py b/plotly/validators/histogram/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_outlinecolor.py rename to plotly/validators/histogram/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_outlinewidth.py b/plotly/validators/histogram/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_outlinewidth.py rename to plotly/validators/histogram/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_separatethousands.py b/plotly/validators/histogram/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_separatethousands.py rename to plotly/validators/histogram/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_showexponent.py b/plotly/validators/histogram/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_showexponent.py rename to plotly/validators/histogram/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_showticklabels.py b/plotly/validators/histogram/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_showticklabels.py rename to plotly/validators/histogram/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_showtickprefix.py b/plotly/validators/histogram/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_showtickprefix.py rename to plotly/validators/histogram/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_showticksuffix.py b/plotly/validators/histogram/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_showticksuffix.py rename to plotly/validators/histogram/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_thickness.py b/plotly/validators/histogram/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_thickness.py rename to plotly/validators/histogram/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_thicknessmode.py b/plotly/validators/histogram/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_thicknessmode.py rename to plotly/validators/histogram/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tick0.py b/plotly/validators/histogram/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tick0.py rename to plotly/validators/histogram/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickangle.py b/plotly/validators/histogram/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickangle.py rename to plotly/validators/histogram/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickcolor.py b/plotly/validators/histogram/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickcolor.py rename to plotly/validators/histogram/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickfont.py b/plotly/validators/histogram/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickfont.py rename to plotly/validators/histogram/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickformat.py b/plotly/validators/histogram/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickformat.py rename to plotly/validators/histogram/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/histogram/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/histogram/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickformatstops.py b/plotly/validators/histogram/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickformatstops.py rename to plotly/validators/histogram/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/histogram/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/histogram/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticklabelposition.py b/plotly/validators/histogram/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticklabelposition.py rename to plotly/validators/histogram/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticklabelstep.py b/plotly/validators/histogram/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticklabelstep.py rename to plotly/validators/histogram/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticklen.py b/plotly/validators/histogram/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticklen.py rename to plotly/validators/histogram/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickmode.py b/plotly/validators/histogram/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickmode.py rename to plotly/validators/histogram/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickprefix.py b/plotly/validators/histogram/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickprefix.py rename to plotly/validators/histogram/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticks.py b/plotly/validators/histogram/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticks.py rename to plotly/validators/histogram/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticksuffix.py b/plotly/validators/histogram/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticksuffix.py rename to plotly/validators/histogram/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticktext.py b/plotly/validators/histogram/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticktext.py rename to plotly/validators/histogram/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticktextsrc.py b/plotly/validators/histogram/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ticktextsrc.py rename to plotly/validators/histogram/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickvals.py b/plotly/validators/histogram/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickvals.py rename to plotly/validators/histogram/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickvalssrc.py b/plotly/validators/histogram/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickvalssrc.py rename to plotly/validators/histogram/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickwidth.py b/plotly/validators/histogram/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_tickwidth.py rename to plotly/validators/histogram/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_title.py b/plotly/validators/histogram/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_title.py rename to plotly/validators/histogram/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_x.py b/plotly/validators/histogram/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_x.py rename to plotly/validators/histogram/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_xanchor.py b/plotly/validators/histogram/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_xanchor.py rename to plotly/validators/histogram/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_xpad.py b/plotly/validators/histogram/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_xpad.py rename to plotly/validators/histogram/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_xref.py b/plotly/validators/histogram/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_xref.py rename to plotly/validators/histogram/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_y.py b/plotly/validators/histogram/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_y.py rename to plotly/validators/histogram/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_yanchor.py b/plotly/validators/histogram/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_yanchor.py rename to plotly/validators/histogram/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ypad.py b/plotly/validators/histogram/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_ypad.py rename to plotly/validators/histogram/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/_yref.py b/plotly/validators/histogram/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/_yref.py rename to plotly/validators/histogram/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/__init__.py b/plotly/validators/histogram/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/__init__.py rename to plotly/validators/histogram/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_color.py b/plotly/validators/histogram/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_color.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_family.py b/plotly/validators/histogram/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_family.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/histogram/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_shadow.py b/plotly/validators/histogram/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_size.py b/plotly/validators/histogram/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_size.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_style.py b/plotly/validators/histogram/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_style.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_textcase.py b/plotly/validators/histogram/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_variant.py b/plotly/validators/histogram/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_variant.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_weight.py b/plotly/validators/histogram/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickfont/_weight.py rename to plotly/validators/histogram/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/histogram/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/histogram/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/histogram/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/histogram/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/histogram/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/histogram/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_name.py b/plotly/validators/histogram/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/histogram/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/histogram/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/histogram/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_value.py b/plotly/validators/histogram/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/histogram/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/__init__.py b/plotly/validators/histogram/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/__init__.py rename to plotly/validators/histogram/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/_font.py b/plotly/validators/histogram/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/_font.py rename to plotly/validators/histogram/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/_side.py b/plotly/validators/histogram/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/_side.py rename to plotly/validators/histogram/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/_text.py b/plotly/validators/histogram/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/_text.py rename to plotly/validators/histogram/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/__init__.py b/plotly/validators/histogram/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/__init__.py rename to plotly/validators/histogram/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_color.py b/plotly/validators/histogram/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_color.py rename to plotly/validators/histogram/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_family.py b/plotly/validators/histogram/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_family.py rename to plotly/validators/histogram/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_lineposition.py b/plotly/validators/histogram/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/histogram/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_shadow.py b/plotly/validators/histogram/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_shadow.py rename to plotly/validators/histogram/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_size.py b/plotly/validators/histogram/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_size.py rename to plotly/validators/histogram/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_style.py b/plotly/validators/histogram/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_style.py rename to plotly/validators/histogram/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_textcase.py b/plotly/validators/histogram/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_textcase.py rename to plotly/validators/histogram/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_variant.py b/plotly/validators/histogram/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_variant.py rename to plotly/validators/histogram/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_weight.py b/plotly/validators/histogram/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/colorbar/title/font/_weight.py rename to plotly/validators/histogram/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/__init__.py b/plotly/validators/histogram/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/__init__.py rename to plotly/validators/histogram/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_autocolorscale.py b/plotly/validators/histogram/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_autocolorscale.py rename to plotly/validators/histogram/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_cauto.py b/plotly/validators/histogram/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_cauto.py rename to plotly/validators/histogram/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_cmax.py b/plotly/validators/histogram/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_cmax.py rename to plotly/validators/histogram/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_cmid.py b/plotly/validators/histogram/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_cmid.py rename to plotly/validators/histogram/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_cmin.py b/plotly/validators/histogram/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_cmin.py rename to plotly/validators/histogram/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_color.py b/plotly/validators/histogram/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_color.py rename to plotly/validators/histogram/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_coloraxis.py b/plotly/validators/histogram/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_coloraxis.py rename to plotly/validators/histogram/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_colorscale.py b/plotly/validators/histogram/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_colorscale.py rename to plotly/validators/histogram/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_colorsrc.py b/plotly/validators/histogram/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_colorsrc.py rename to plotly/validators/histogram/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_reversescale.py b/plotly/validators/histogram/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_reversescale.py rename to plotly/validators/histogram/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_width.py b/plotly/validators/histogram/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_width.py rename to plotly/validators/histogram/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/line/_widthsrc.py b/plotly/validators/histogram/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/line/_widthsrc.py rename to plotly/validators/histogram/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/__init__.py b/plotly/validators/histogram/marker/pattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/__init__.py rename to plotly/validators/histogram/marker/pattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_bgcolor.py b/plotly/validators/histogram/marker/pattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_bgcolor.py rename to plotly/validators/histogram/marker/pattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_bgcolorsrc.py b/plotly/validators/histogram/marker/pattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_bgcolorsrc.py rename to plotly/validators/histogram/marker/pattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_fgcolor.py b/plotly/validators/histogram/marker/pattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_fgcolor.py rename to plotly/validators/histogram/marker/pattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_fgcolorsrc.py b/plotly/validators/histogram/marker/pattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_fgcolorsrc.py rename to plotly/validators/histogram/marker/pattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_fgopacity.py b/plotly/validators/histogram/marker/pattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_fgopacity.py rename to plotly/validators/histogram/marker/pattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_fillmode.py b/plotly/validators/histogram/marker/pattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_fillmode.py rename to plotly/validators/histogram/marker/pattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_shape.py b/plotly/validators/histogram/marker/pattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_shape.py rename to plotly/validators/histogram/marker/pattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_shapesrc.py b/plotly/validators/histogram/marker/pattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_shapesrc.py rename to plotly/validators/histogram/marker/pattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_size.py b/plotly/validators/histogram/marker/pattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_size.py rename to plotly/validators/histogram/marker/pattern/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_sizesrc.py b/plotly/validators/histogram/marker/pattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_sizesrc.py rename to plotly/validators/histogram/marker/pattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_solidity.py b/plotly/validators/histogram/marker/pattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_solidity.py rename to plotly/validators/histogram/marker/pattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/histogram/marker/pattern/_soliditysrc.py b/plotly/validators/histogram/marker/pattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/marker/pattern/_soliditysrc.py rename to plotly/validators/histogram/marker/pattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/__init__.py b/plotly/validators/histogram/outsidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/__init__.py rename to plotly/validators/histogram/outsidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_color.py b/plotly/validators/histogram/outsidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_color.py rename to plotly/validators/histogram/outsidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_family.py b/plotly/validators/histogram/outsidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_family.py rename to plotly/validators/histogram/outsidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_lineposition.py b/plotly/validators/histogram/outsidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_lineposition.py rename to plotly/validators/histogram/outsidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_shadow.py b/plotly/validators/histogram/outsidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_shadow.py rename to plotly/validators/histogram/outsidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_size.py b/plotly/validators/histogram/outsidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_size.py rename to plotly/validators/histogram/outsidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_style.py b/plotly/validators/histogram/outsidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_style.py rename to plotly/validators/histogram/outsidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_textcase.py b/plotly/validators/histogram/outsidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_textcase.py rename to plotly/validators/histogram/outsidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_variant.py b/plotly/validators/histogram/outsidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_variant.py rename to plotly/validators/histogram/outsidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram/outsidetextfont/_weight.py b/plotly/validators/histogram/outsidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/outsidetextfont/_weight.py rename to plotly/validators/histogram/outsidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram/selected/__init__.py b/plotly/validators/histogram/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/selected/__init__.py rename to plotly/validators/histogram/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/selected/_marker.py b/plotly/validators/histogram/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/selected/_marker.py rename to plotly/validators/histogram/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/histogram/selected/_textfont.py b/plotly/validators/histogram/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/selected/_textfont.py rename to plotly/validators/histogram/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/histogram/selected/marker/__init__.py b/plotly/validators/histogram/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/selected/marker/__init__.py rename to plotly/validators/histogram/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/selected/marker/_color.py b/plotly/validators/histogram/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/selected/marker/_color.py rename to plotly/validators/histogram/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/selected/marker/_opacity.py b/plotly/validators/histogram/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/selected/marker/_opacity.py rename to plotly/validators/histogram/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/histogram/selected/textfont/__init__.py b/plotly/validators/histogram/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/selected/textfont/__init__.py rename to plotly/validators/histogram/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/selected/textfont/_color.py b/plotly/validators/histogram/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/selected/textfont/_color.py rename to plotly/validators/histogram/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/stream/__init__.py b/plotly/validators/histogram/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/stream/__init__.py rename to plotly/validators/histogram/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/stream/_maxpoints.py b/plotly/validators/histogram/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/stream/_maxpoints.py rename to plotly/validators/histogram/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/histogram/stream/_token.py b/plotly/validators/histogram/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/stream/_token.py rename to plotly/validators/histogram/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/__init__.py b/plotly/validators/histogram/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/__init__.py rename to plotly/validators/histogram/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_color.py b/plotly/validators/histogram/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_color.py rename to plotly/validators/histogram/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_family.py b/plotly/validators/histogram/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_family.py rename to plotly/validators/histogram/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_lineposition.py b/plotly/validators/histogram/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_lineposition.py rename to plotly/validators/histogram/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_shadow.py b/plotly/validators/histogram/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_shadow.py rename to plotly/validators/histogram/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_size.py b/plotly/validators/histogram/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_size.py rename to plotly/validators/histogram/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_style.py b/plotly/validators/histogram/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_style.py rename to plotly/validators/histogram/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_textcase.py b/plotly/validators/histogram/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_textcase.py rename to plotly/validators/histogram/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_variant.py b/plotly/validators/histogram/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_variant.py rename to plotly/validators/histogram/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram/textfont/_weight.py b/plotly/validators/histogram/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/textfont/_weight.py rename to plotly/validators/histogram/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram/unselected/__init__.py b/plotly/validators/histogram/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/unselected/__init__.py rename to plotly/validators/histogram/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/unselected/_marker.py b/plotly/validators/histogram/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/unselected/_marker.py rename to plotly/validators/histogram/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/histogram/unselected/_textfont.py b/plotly/validators/histogram/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/unselected/_textfont.py rename to plotly/validators/histogram/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/histogram/unselected/marker/__init__.py b/plotly/validators/histogram/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/unselected/marker/__init__.py rename to plotly/validators/histogram/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/unselected/marker/_color.py b/plotly/validators/histogram/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/unselected/marker/_color.py rename to plotly/validators/histogram/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/unselected/marker/_opacity.py b/plotly/validators/histogram/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/unselected/marker/_opacity.py rename to plotly/validators/histogram/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/histogram/unselected/textfont/__init__.py b/plotly/validators/histogram/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/unselected/textfont/__init__.py rename to plotly/validators/histogram/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/unselected/textfont/_color.py b/plotly/validators/histogram/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/unselected/textfont/_color.py rename to plotly/validators/histogram/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram/xbins/__init__.py b/plotly/validators/histogram/xbins/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/xbins/__init__.py rename to plotly/validators/histogram/xbins/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/xbins/_end.py b/plotly/validators/histogram/xbins/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/xbins/_end.py rename to plotly/validators/histogram/xbins/_end.py diff --git a/packages/python/plotly/plotly/validators/histogram/xbins/_size.py b/plotly/validators/histogram/xbins/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/xbins/_size.py rename to plotly/validators/histogram/xbins/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/xbins/_start.py b/plotly/validators/histogram/xbins/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/xbins/_start.py rename to plotly/validators/histogram/xbins/_start.py diff --git a/packages/python/plotly/plotly/validators/histogram/ybins/__init__.py b/plotly/validators/histogram/ybins/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/ybins/__init__.py rename to plotly/validators/histogram/ybins/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram/ybins/_end.py b/plotly/validators/histogram/ybins/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/ybins/_end.py rename to plotly/validators/histogram/ybins/_end.py diff --git a/packages/python/plotly/plotly/validators/histogram/ybins/_size.py b/plotly/validators/histogram/ybins/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/ybins/_size.py rename to plotly/validators/histogram/ybins/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram/ybins/_start.py b/plotly/validators/histogram/ybins/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram/ybins/_start.py rename to plotly/validators/histogram/ybins/_start.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/__init__.py b/plotly/validators/histogram2d/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/__init__.py rename to plotly/validators/histogram2d/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_autobinx.py b/plotly/validators/histogram2d/_autobinx.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_autobinx.py rename to plotly/validators/histogram2d/_autobinx.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_autobiny.py b/plotly/validators/histogram2d/_autobiny.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_autobiny.py rename to plotly/validators/histogram2d/_autobiny.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_autocolorscale.py b/plotly/validators/histogram2d/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_autocolorscale.py rename to plotly/validators/histogram2d/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_bingroup.py b/plotly/validators/histogram2d/_bingroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_bingroup.py rename to plotly/validators/histogram2d/_bingroup.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_coloraxis.py b/plotly/validators/histogram2d/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_coloraxis.py rename to plotly/validators/histogram2d/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_colorbar.py b/plotly/validators/histogram2d/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_colorbar.py rename to plotly/validators/histogram2d/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_colorscale.py b/plotly/validators/histogram2d/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_colorscale.py rename to plotly/validators/histogram2d/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_customdata.py b/plotly/validators/histogram2d/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_customdata.py rename to plotly/validators/histogram2d/_customdata.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_customdatasrc.py b/plotly/validators/histogram2d/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_customdatasrc.py rename to plotly/validators/histogram2d/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_histfunc.py b/plotly/validators/histogram2d/_histfunc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_histfunc.py rename to plotly/validators/histogram2d/_histfunc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_histnorm.py b/plotly/validators/histogram2d/_histnorm.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_histnorm.py rename to plotly/validators/histogram2d/_histnorm.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_hoverinfo.py b/plotly/validators/histogram2d/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_hoverinfo.py rename to plotly/validators/histogram2d/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_hoverinfosrc.py b/plotly/validators/histogram2d/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_hoverinfosrc.py rename to plotly/validators/histogram2d/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_hoverlabel.py b/plotly/validators/histogram2d/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_hoverlabel.py rename to plotly/validators/histogram2d/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_hovertemplate.py b/plotly/validators/histogram2d/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_hovertemplate.py rename to plotly/validators/histogram2d/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_hovertemplatesrc.py b/plotly/validators/histogram2d/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_hovertemplatesrc.py rename to plotly/validators/histogram2d/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_ids.py b/plotly/validators/histogram2d/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_ids.py rename to plotly/validators/histogram2d/_ids.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_idssrc.py b/plotly/validators/histogram2d/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_idssrc.py rename to plotly/validators/histogram2d/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_legend.py b/plotly/validators/histogram2d/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_legend.py rename to plotly/validators/histogram2d/_legend.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_legendgroup.py b/plotly/validators/histogram2d/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_legendgroup.py rename to plotly/validators/histogram2d/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_legendgrouptitle.py b/plotly/validators/histogram2d/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_legendgrouptitle.py rename to plotly/validators/histogram2d/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_legendrank.py b/plotly/validators/histogram2d/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_legendrank.py rename to plotly/validators/histogram2d/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_legendwidth.py b/plotly/validators/histogram2d/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_legendwidth.py rename to plotly/validators/histogram2d/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_marker.py b/plotly/validators/histogram2d/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_marker.py rename to plotly/validators/histogram2d/_marker.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_meta.py b/plotly/validators/histogram2d/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_meta.py rename to plotly/validators/histogram2d/_meta.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_metasrc.py b/plotly/validators/histogram2d/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_metasrc.py rename to plotly/validators/histogram2d/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_name.py b/plotly/validators/histogram2d/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_name.py rename to plotly/validators/histogram2d/_name.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_nbinsx.py b/plotly/validators/histogram2d/_nbinsx.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_nbinsx.py rename to plotly/validators/histogram2d/_nbinsx.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_nbinsy.py b/plotly/validators/histogram2d/_nbinsy.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_nbinsy.py rename to plotly/validators/histogram2d/_nbinsy.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_opacity.py b/plotly/validators/histogram2d/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_opacity.py rename to plotly/validators/histogram2d/_opacity.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_reversescale.py b/plotly/validators/histogram2d/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_reversescale.py rename to plotly/validators/histogram2d/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_showlegend.py b/plotly/validators/histogram2d/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_showlegend.py rename to plotly/validators/histogram2d/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_showscale.py b/plotly/validators/histogram2d/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_showscale.py rename to plotly/validators/histogram2d/_showscale.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_stream.py b/plotly/validators/histogram2d/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_stream.py rename to plotly/validators/histogram2d/_stream.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_textfont.py b/plotly/validators/histogram2d/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_textfont.py rename to plotly/validators/histogram2d/_textfont.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_texttemplate.py b/plotly/validators/histogram2d/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_texttemplate.py rename to plotly/validators/histogram2d/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_uid.py b/plotly/validators/histogram2d/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_uid.py rename to plotly/validators/histogram2d/_uid.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_uirevision.py b/plotly/validators/histogram2d/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_uirevision.py rename to plotly/validators/histogram2d/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_visible.py b/plotly/validators/histogram2d/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_visible.py rename to plotly/validators/histogram2d/_visible.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_x.py b/plotly/validators/histogram2d/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_x.py rename to plotly/validators/histogram2d/_x.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_xaxis.py b/plotly/validators/histogram2d/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_xaxis.py rename to plotly/validators/histogram2d/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_xbingroup.py b/plotly/validators/histogram2d/_xbingroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_xbingroup.py rename to plotly/validators/histogram2d/_xbingroup.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_xbins.py b/plotly/validators/histogram2d/_xbins.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_xbins.py rename to plotly/validators/histogram2d/_xbins.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_xcalendar.py b/plotly/validators/histogram2d/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_xcalendar.py rename to plotly/validators/histogram2d/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_xgap.py b/plotly/validators/histogram2d/_xgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_xgap.py rename to plotly/validators/histogram2d/_xgap.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_xhoverformat.py b/plotly/validators/histogram2d/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_xhoverformat.py rename to plotly/validators/histogram2d/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_xsrc.py b/plotly/validators/histogram2d/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_xsrc.py rename to plotly/validators/histogram2d/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_y.py b/plotly/validators/histogram2d/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_y.py rename to plotly/validators/histogram2d/_y.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_yaxis.py b/plotly/validators/histogram2d/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_yaxis.py rename to plotly/validators/histogram2d/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_ybingroup.py b/plotly/validators/histogram2d/_ybingroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_ybingroup.py rename to plotly/validators/histogram2d/_ybingroup.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_ybins.py b/plotly/validators/histogram2d/_ybins.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_ybins.py rename to plotly/validators/histogram2d/_ybins.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_ycalendar.py b/plotly/validators/histogram2d/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_ycalendar.py rename to plotly/validators/histogram2d/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_ygap.py b/plotly/validators/histogram2d/_ygap.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_ygap.py rename to plotly/validators/histogram2d/_ygap.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_yhoverformat.py b/plotly/validators/histogram2d/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_yhoverformat.py rename to plotly/validators/histogram2d/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_ysrc.py b/plotly/validators/histogram2d/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_ysrc.py rename to plotly/validators/histogram2d/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_z.py b/plotly/validators/histogram2d/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_z.py rename to plotly/validators/histogram2d/_z.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_zauto.py b/plotly/validators/histogram2d/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_zauto.py rename to plotly/validators/histogram2d/_zauto.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_zhoverformat.py b/plotly/validators/histogram2d/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_zhoverformat.py rename to plotly/validators/histogram2d/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_zmax.py b/plotly/validators/histogram2d/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_zmax.py rename to plotly/validators/histogram2d/_zmax.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_zmid.py b/plotly/validators/histogram2d/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_zmid.py rename to plotly/validators/histogram2d/_zmid.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_zmin.py b/plotly/validators/histogram2d/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_zmin.py rename to plotly/validators/histogram2d/_zmin.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_zsmooth.py b/plotly/validators/histogram2d/_zsmooth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_zsmooth.py rename to plotly/validators/histogram2d/_zsmooth.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/_zsrc.py b/plotly/validators/histogram2d/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/_zsrc.py rename to plotly/validators/histogram2d/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/__init__.py b/plotly/validators/histogram2d/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/__init__.py rename to plotly/validators/histogram2d/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_bgcolor.py b/plotly/validators/histogram2d/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_bgcolor.py rename to plotly/validators/histogram2d/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_bordercolor.py b/plotly/validators/histogram2d/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_bordercolor.py rename to plotly/validators/histogram2d/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_borderwidth.py b/plotly/validators/histogram2d/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_borderwidth.py rename to plotly/validators/histogram2d/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_dtick.py b/plotly/validators/histogram2d/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_dtick.py rename to plotly/validators/histogram2d/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_exponentformat.py b/plotly/validators/histogram2d/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_exponentformat.py rename to plotly/validators/histogram2d/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_labelalias.py b/plotly/validators/histogram2d/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_labelalias.py rename to plotly/validators/histogram2d/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_len.py b/plotly/validators/histogram2d/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_len.py rename to plotly/validators/histogram2d/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_lenmode.py b/plotly/validators/histogram2d/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_lenmode.py rename to plotly/validators/histogram2d/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_minexponent.py b/plotly/validators/histogram2d/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_minexponent.py rename to plotly/validators/histogram2d/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_nticks.py b/plotly/validators/histogram2d/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_nticks.py rename to plotly/validators/histogram2d/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_orientation.py b/plotly/validators/histogram2d/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_orientation.py rename to plotly/validators/histogram2d/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_outlinecolor.py b/plotly/validators/histogram2d/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_outlinecolor.py rename to plotly/validators/histogram2d/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_outlinewidth.py b/plotly/validators/histogram2d/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_outlinewidth.py rename to plotly/validators/histogram2d/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_separatethousands.py b/plotly/validators/histogram2d/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_separatethousands.py rename to plotly/validators/histogram2d/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_showexponent.py b/plotly/validators/histogram2d/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_showexponent.py rename to plotly/validators/histogram2d/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_showticklabels.py b/plotly/validators/histogram2d/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_showticklabels.py rename to plotly/validators/histogram2d/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_showtickprefix.py b/plotly/validators/histogram2d/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_showtickprefix.py rename to plotly/validators/histogram2d/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_showticksuffix.py b/plotly/validators/histogram2d/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_showticksuffix.py rename to plotly/validators/histogram2d/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_thickness.py b/plotly/validators/histogram2d/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_thickness.py rename to plotly/validators/histogram2d/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_thicknessmode.py b/plotly/validators/histogram2d/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_thicknessmode.py rename to plotly/validators/histogram2d/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tick0.py b/plotly/validators/histogram2d/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tick0.py rename to plotly/validators/histogram2d/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickangle.py b/plotly/validators/histogram2d/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickangle.py rename to plotly/validators/histogram2d/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickcolor.py b/plotly/validators/histogram2d/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickcolor.py rename to plotly/validators/histogram2d/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickfont.py b/plotly/validators/histogram2d/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickfont.py rename to plotly/validators/histogram2d/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickformat.py b/plotly/validators/histogram2d/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickformat.py rename to plotly/validators/histogram2d/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickformatstopdefaults.py b/plotly/validators/histogram2d/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickformatstopdefaults.py rename to plotly/validators/histogram2d/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickformatstops.py b/plotly/validators/histogram2d/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickformatstops.py rename to plotly/validators/histogram2d/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticklabeloverflow.py b/plotly/validators/histogram2d/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticklabeloverflow.py rename to plotly/validators/histogram2d/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticklabelposition.py b/plotly/validators/histogram2d/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticklabelposition.py rename to plotly/validators/histogram2d/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticklabelstep.py b/plotly/validators/histogram2d/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticklabelstep.py rename to plotly/validators/histogram2d/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticklen.py b/plotly/validators/histogram2d/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticklen.py rename to plotly/validators/histogram2d/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickmode.py b/plotly/validators/histogram2d/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickmode.py rename to plotly/validators/histogram2d/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickprefix.py b/plotly/validators/histogram2d/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickprefix.py rename to plotly/validators/histogram2d/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticks.py b/plotly/validators/histogram2d/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticks.py rename to plotly/validators/histogram2d/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticksuffix.py b/plotly/validators/histogram2d/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticksuffix.py rename to plotly/validators/histogram2d/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticktext.py b/plotly/validators/histogram2d/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticktext.py rename to plotly/validators/histogram2d/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticktextsrc.py b/plotly/validators/histogram2d/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ticktextsrc.py rename to plotly/validators/histogram2d/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickvals.py b/plotly/validators/histogram2d/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickvals.py rename to plotly/validators/histogram2d/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickvalssrc.py b/plotly/validators/histogram2d/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickvalssrc.py rename to plotly/validators/histogram2d/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickwidth.py b/plotly/validators/histogram2d/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_tickwidth.py rename to plotly/validators/histogram2d/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_title.py b/plotly/validators/histogram2d/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_title.py rename to plotly/validators/histogram2d/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_x.py b/plotly/validators/histogram2d/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_x.py rename to plotly/validators/histogram2d/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_xanchor.py b/plotly/validators/histogram2d/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_xanchor.py rename to plotly/validators/histogram2d/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_xpad.py b/plotly/validators/histogram2d/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_xpad.py rename to plotly/validators/histogram2d/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_xref.py b/plotly/validators/histogram2d/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_xref.py rename to plotly/validators/histogram2d/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_y.py b/plotly/validators/histogram2d/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_y.py rename to plotly/validators/histogram2d/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_yanchor.py b/plotly/validators/histogram2d/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_yanchor.py rename to plotly/validators/histogram2d/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_ypad.py b/plotly/validators/histogram2d/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_ypad.py rename to plotly/validators/histogram2d/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/_yref.py b/plotly/validators/histogram2d/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/_yref.py rename to plotly/validators/histogram2d/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/__init__.py b/plotly/validators/histogram2d/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/__init__.py rename to plotly/validators/histogram2d/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_color.py b/plotly/validators/histogram2d/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_color.py rename to plotly/validators/histogram2d/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_family.py b/plotly/validators/histogram2d/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_family.py rename to plotly/validators/histogram2d/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_lineposition.py b/plotly/validators/histogram2d/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_lineposition.py rename to plotly/validators/histogram2d/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_shadow.py b/plotly/validators/histogram2d/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_shadow.py rename to plotly/validators/histogram2d/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_size.py b/plotly/validators/histogram2d/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_size.py rename to plotly/validators/histogram2d/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_style.py b/plotly/validators/histogram2d/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_style.py rename to plotly/validators/histogram2d/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_textcase.py b/plotly/validators/histogram2d/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_textcase.py rename to plotly/validators/histogram2d/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_variant.py b/plotly/validators/histogram2d/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_variant.py rename to plotly/validators/histogram2d/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_weight.py b/plotly/validators/histogram2d/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickfont/_weight.py rename to plotly/validators/histogram2d/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/__init__.py b/plotly/validators/histogram2d/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/__init__.py rename to plotly/validators/histogram2d/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/histogram2d/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/histogram2d/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_enabled.py b/plotly/validators/histogram2d/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_enabled.py rename to plotly/validators/histogram2d/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_name.py b/plotly/validators/histogram2d/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_name.py rename to plotly/validators/histogram2d/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/histogram2d/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/histogram2d/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_value.py b/plotly/validators/histogram2d/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/tickformatstop/_value.py rename to plotly/validators/histogram2d/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/__init__.py b/plotly/validators/histogram2d/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/__init__.py rename to plotly/validators/histogram2d/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/_font.py b/plotly/validators/histogram2d/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/_font.py rename to plotly/validators/histogram2d/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/_side.py b/plotly/validators/histogram2d/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/_side.py rename to plotly/validators/histogram2d/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/_text.py b/plotly/validators/histogram2d/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/_text.py rename to plotly/validators/histogram2d/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/__init__.py b/plotly/validators/histogram2d/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/__init__.py rename to plotly/validators/histogram2d/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_color.py b/plotly/validators/histogram2d/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_color.py rename to plotly/validators/histogram2d/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_family.py b/plotly/validators/histogram2d/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_family.py rename to plotly/validators/histogram2d/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_lineposition.py b/plotly/validators/histogram2d/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_lineposition.py rename to plotly/validators/histogram2d/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_shadow.py b/plotly/validators/histogram2d/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_shadow.py rename to plotly/validators/histogram2d/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_size.py b/plotly/validators/histogram2d/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_size.py rename to plotly/validators/histogram2d/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_style.py b/plotly/validators/histogram2d/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_style.py rename to plotly/validators/histogram2d/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_textcase.py b/plotly/validators/histogram2d/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_textcase.py rename to plotly/validators/histogram2d/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_variant.py b/plotly/validators/histogram2d/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_variant.py rename to plotly/validators/histogram2d/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_weight.py b/plotly/validators/histogram2d/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/colorbar/title/font/_weight.py rename to plotly/validators/histogram2d/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/__init__.py b/plotly/validators/histogram2d/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/__init__.py rename to plotly/validators/histogram2d/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_align.py b/plotly/validators/histogram2d/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_align.py rename to plotly/validators/histogram2d/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_alignsrc.py b/plotly/validators/histogram2d/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_alignsrc.py rename to plotly/validators/histogram2d/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_bgcolor.py b/plotly/validators/histogram2d/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_bgcolor.py rename to plotly/validators/histogram2d/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_bgcolorsrc.py b/plotly/validators/histogram2d/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_bgcolorsrc.py rename to plotly/validators/histogram2d/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_bordercolor.py b/plotly/validators/histogram2d/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_bordercolor.py rename to plotly/validators/histogram2d/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_bordercolorsrc.py b/plotly/validators/histogram2d/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_bordercolorsrc.py rename to plotly/validators/histogram2d/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_font.py b/plotly/validators/histogram2d/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_font.py rename to plotly/validators/histogram2d/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_namelength.py b/plotly/validators/histogram2d/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_namelength.py rename to plotly/validators/histogram2d/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_namelengthsrc.py b/plotly/validators/histogram2d/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/_namelengthsrc.py rename to plotly/validators/histogram2d/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/__init__.py b/plotly/validators/histogram2d/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/__init__.py rename to plotly/validators/histogram2d/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_color.py b/plotly/validators/histogram2d/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_color.py rename to plotly/validators/histogram2d/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_colorsrc.py b/plotly/validators/histogram2d/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_colorsrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_family.py b/plotly/validators/histogram2d/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_family.py rename to plotly/validators/histogram2d/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_familysrc.py b/plotly/validators/histogram2d/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_familysrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_lineposition.py b/plotly/validators/histogram2d/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_lineposition.py rename to plotly/validators/histogram2d/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_linepositionsrc.py b/plotly/validators/histogram2d/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_shadow.py b/plotly/validators/histogram2d/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_shadow.py rename to plotly/validators/histogram2d/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_shadowsrc.py b/plotly/validators/histogram2d/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_shadowsrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_size.py b/plotly/validators/histogram2d/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_size.py rename to plotly/validators/histogram2d/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_sizesrc.py b/plotly/validators/histogram2d/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_sizesrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_style.py b/plotly/validators/histogram2d/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_style.py rename to plotly/validators/histogram2d/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_stylesrc.py b/plotly/validators/histogram2d/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_stylesrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_textcase.py b/plotly/validators/histogram2d/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_textcase.py rename to plotly/validators/histogram2d/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_textcasesrc.py b/plotly/validators/histogram2d/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_textcasesrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_variant.py b/plotly/validators/histogram2d/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_variant.py rename to plotly/validators/histogram2d/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_variantsrc.py b/plotly/validators/histogram2d/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_variantsrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_weight.py b/plotly/validators/histogram2d/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_weight.py rename to plotly/validators/histogram2d/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_weightsrc.py b/plotly/validators/histogram2d/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/hoverlabel/font/_weightsrc.py rename to plotly/validators/histogram2d/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/__init__.py b/plotly/validators/histogram2d/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/__init__.py rename to plotly/validators/histogram2d/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/_font.py b/plotly/validators/histogram2d/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/_font.py rename to plotly/validators/histogram2d/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/_text.py b/plotly/validators/histogram2d/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/_text.py rename to plotly/validators/histogram2d/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/__init__.py b/plotly/validators/histogram2d/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/__init__.py rename to plotly/validators/histogram2d/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_color.py b/plotly/validators/histogram2d/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_color.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_family.py b/plotly/validators/histogram2d/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_family.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_lineposition.py b/plotly/validators/histogram2d/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_lineposition.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_shadow.py b/plotly/validators/histogram2d/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_shadow.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_size.py b/plotly/validators/histogram2d/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_size.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_style.py b/plotly/validators/histogram2d/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_style.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_textcase.py b/plotly/validators/histogram2d/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_textcase.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_variant.py b/plotly/validators/histogram2d/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_variant.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_weight.py b/plotly/validators/histogram2d/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/legendgrouptitle/font/_weight.py rename to plotly/validators/histogram2d/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/marker/__init__.py b/plotly/validators/histogram2d/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/marker/__init__.py rename to plotly/validators/histogram2d/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/marker/_color.py b/plotly/validators/histogram2d/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/marker/_color.py rename to plotly/validators/histogram2d/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/marker/_colorsrc.py b/plotly/validators/histogram2d/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/marker/_colorsrc.py rename to plotly/validators/histogram2d/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/stream/__init__.py b/plotly/validators/histogram2d/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/stream/__init__.py rename to plotly/validators/histogram2d/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/stream/_maxpoints.py b/plotly/validators/histogram2d/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/stream/_maxpoints.py rename to plotly/validators/histogram2d/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/stream/_token.py b/plotly/validators/histogram2d/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/stream/_token.py rename to plotly/validators/histogram2d/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/__init__.py b/plotly/validators/histogram2d/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/__init__.py rename to plotly/validators/histogram2d/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_color.py b/plotly/validators/histogram2d/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_color.py rename to plotly/validators/histogram2d/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_family.py b/plotly/validators/histogram2d/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_family.py rename to plotly/validators/histogram2d/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_lineposition.py b/plotly/validators/histogram2d/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_lineposition.py rename to plotly/validators/histogram2d/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_shadow.py b/plotly/validators/histogram2d/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_shadow.py rename to plotly/validators/histogram2d/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_size.py b/plotly/validators/histogram2d/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_size.py rename to plotly/validators/histogram2d/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_style.py b/plotly/validators/histogram2d/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_style.py rename to plotly/validators/histogram2d/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_textcase.py b/plotly/validators/histogram2d/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_textcase.py rename to plotly/validators/histogram2d/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_variant.py b/plotly/validators/histogram2d/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_variant.py rename to plotly/validators/histogram2d/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/textfont/_weight.py b/plotly/validators/histogram2d/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/textfont/_weight.py rename to plotly/validators/histogram2d/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/xbins/__init__.py b/plotly/validators/histogram2d/xbins/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/xbins/__init__.py rename to plotly/validators/histogram2d/xbins/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/xbins/_end.py b/plotly/validators/histogram2d/xbins/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/xbins/_end.py rename to plotly/validators/histogram2d/xbins/_end.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/xbins/_size.py b/plotly/validators/histogram2d/xbins/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/xbins/_size.py rename to plotly/validators/histogram2d/xbins/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/xbins/_start.py b/plotly/validators/histogram2d/xbins/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/xbins/_start.py rename to plotly/validators/histogram2d/xbins/_start.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/ybins/__init__.py b/plotly/validators/histogram2d/ybins/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/ybins/__init__.py rename to plotly/validators/histogram2d/ybins/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/ybins/_end.py b/plotly/validators/histogram2d/ybins/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/ybins/_end.py rename to plotly/validators/histogram2d/ybins/_end.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/ybins/_size.py b/plotly/validators/histogram2d/ybins/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/ybins/_size.py rename to plotly/validators/histogram2d/ybins/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2d/ybins/_start.py b/plotly/validators/histogram2d/ybins/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2d/ybins/_start.py rename to plotly/validators/histogram2d/ybins/_start.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/__init__.py b/plotly/validators/histogram2dcontour/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/__init__.py rename to plotly/validators/histogram2dcontour/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_autobinx.py b/plotly/validators/histogram2dcontour/_autobinx.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_autobinx.py rename to plotly/validators/histogram2dcontour/_autobinx.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_autobiny.py b/plotly/validators/histogram2dcontour/_autobiny.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_autobiny.py rename to plotly/validators/histogram2dcontour/_autobiny.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_autocolorscale.py b/plotly/validators/histogram2dcontour/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_autocolorscale.py rename to plotly/validators/histogram2dcontour/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_autocontour.py b/plotly/validators/histogram2dcontour/_autocontour.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_autocontour.py rename to plotly/validators/histogram2dcontour/_autocontour.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_bingroup.py b/plotly/validators/histogram2dcontour/_bingroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_bingroup.py rename to plotly/validators/histogram2dcontour/_bingroup.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_coloraxis.py b/plotly/validators/histogram2dcontour/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_coloraxis.py rename to plotly/validators/histogram2dcontour/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_colorbar.py b/plotly/validators/histogram2dcontour/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_colorbar.py rename to plotly/validators/histogram2dcontour/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_colorscale.py b/plotly/validators/histogram2dcontour/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_colorscale.py rename to plotly/validators/histogram2dcontour/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_contours.py b/plotly/validators/histogram2dcontour/_contours.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_contours.py rename to plotly/validators/histogram2dcontour/_contours.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_customdata.py b/plotly/validators/histogram2dcontour/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_customdata.py rename to plotly/validators/histogram2dcontour/_customdata.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_customdatasrc.py b/plotly/validators/histogram2dcontour/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_customdatasrc.py rename to plotly/validators/histogram2dcontour/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_histfunc.py b/plotly/validators/histogram2dcontour/_histfunc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_histfunc.py rename to plotly/validators/histogram2dcontour/_histfunc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_histnorm.py b/plotly/validators/histogram2dcontour/_histnorm.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_histnorm.py rename to plotly/validators/histogram2dcontour/_histnorm.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_hoverinfo.py b/plotly/validators/histogram2dcontour/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_hoverinfo.py rename to plotly/validators/histogram2dcontour/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_hoverinfosrc.py b/plotly/validators/histogram2dcontour/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_hoverinfosrc.py rename to plotly/validators/histogram2dcontour/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_hoverlabel.py b/plotly/validators/histogram2dcontour/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_hoverlabel.py rename to plotly/validators/histogram2dcontour/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_hovertemplate.py b/plotly/validators/histogram2dcontour/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_hovertemplate.py rename to plotly/validators/histogram2dcontour/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_hovertemplatesrc.py b/plotly/validators/histogram2dcontour/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_hovertemplatesrc.py rename to plotly/validators/histogram2dcontour/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_ids.py b/plotly/validators/histogram2dcontour/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_ids.py rename to plotly/validators/histogram2dcontour/_ids.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_idssrc.py b/plotly/validators/histogram2dcontour/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_idssrc.py rename to plotly/validators/histogram2dcontour/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_legend.py b/plotly/validators/histogram2dcontour/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_legend.py rename to plotly/validators/histogram2dcontour/_legend.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_legendgroup.py b/plotly/validators/histogram2dcontour/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_legendgroup.py rename to plotly/validators/histogram2dcontour/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_legendgrouptitle.py b/plotly/validators/histogram2dcontour/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_legendgrouptitle.py rename to plotly/validators/histogram2dcontour/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_legendrank.py b/plotly/validators/histogram2dcontour/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_legendrank.py rename to plotly/validators/histogram2dcontour/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_legendwidth.py b/plotly/validators/histogram2dcontour/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_legendwidth.py rename to plotly/validators/histogram2dcontour/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_line.py b/plotly/validators/histogram2dcontour/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_line.py rename to plotly/validators/histogram2dcontour/_line.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_marker.py b/plotly/validators/histogram2dcontour/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_marker.py rename to plotly/validators/histogram2dcontour/_marker.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_meta.py b/plotly/validators/histogram2dcontour/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_meta.py rename to plotly/validators/histogram2dcontour/_meta.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_metasrc.py b/plotly/validators/histogram2dcontour/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_metasrc.py rename to plotly/validators/histogram2dcontour/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_name.py b/plotly/validators/histogram2dcontour/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_name.py rename to plotly/validators/histogram2dcontour/_name.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_nbinsx.py b/plotly/validators/histogram2dcontour/_nbinsx.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_nbinsx.py rename to plotly/validators/histogram2dcontour/_nbinsx.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_nbinsy.py b/plotly/validators/histogram2dcontour/_nbinsy.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_nbinsy.py rename to plotly/validators/histogram2dcontour/_nbinsy.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_ncontours.py b/plotly/validators/histogram2dcontour/_ncontours.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_ncontours.py rename to plotly/validators/histogram2dcontour/_ncontours.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_opacity.py b/plotly/validators/histogram2dcontour/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_opacity.py rename to plotly/validators/histogram2dcontour/_opacity.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_reversescale.py b/plotly/validators/histogram2dcontour/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_reversescale.py rename to plotly/validators/histogram2dcontour/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_showlegend.py b/plotly/validators/histogram2dcontour/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_showlegend.py rename to plotly/validators/histogram2dcontour/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_showscale.py b/plotly/validators/histogram2dcontour/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_showscale.py rename to plotly/validators/histogram2dcontour/_showscale.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_stream.py b/plotly/validators/histogram2dcontour/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_stream.py rename to plotly/validators/histogram2dcontour/_stream.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_textfont.py b/plotly/validators/histogram2dcontour/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_textfont.py rename to plotly/validators/histogram2dcontour/_textfont.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_texttemplate.py b/plotly/validators/histogram2dcontour/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_texttemplate.py rename to plotly/validators/histogram2dcontour/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_uid.py b/plotly/validators/histogram2dcontour/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_uid.py rename to plotly/validators/histogram2dcontour/_uid.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_uirevision.py b/plotly/validators/histogram2dcontour/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_uirevision.py rename to plotly/validators/histogram2dcontour/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_visible.py b/plotly/validators/histogram2dcontour/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_visible.py rename to plotly/validators/histogram2dcontour/_visible.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_x.py b/plotly/validators/histogram2dcontour/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_x.py rename to plotly/validators/histogram2dcontour/_x.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_xaxis.py b/plotly/validators/histogram2dcontour/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_xaxis.py rename to plotly/validators/histogram2dcontour/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_xbingroup.py b/plotly/validators/histogram2dcontour/_xbingroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_xbingroup.py rename to plotly/validators/histogram2dcontour/_xbingroup.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_xbins.py b/plotly/validators/histogram2dcontour/_xbins.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_xbins.py rename to plotly/validators/histogram2dcontour/_xbins.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_xcalendar.py b/plotly/validators/histogram2dcontour/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_xcalendar.py rename to plotly/validators/histogram2dcontour/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_xhoverformat.py b/plotly/validators/histogram2dcontour/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_xhoverformat.py rename to plotly/validators/histogram2dcontour/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_xsrc.py b/plotly/validators/histogram2dcontour/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_xsrc.py rename to plotly/validators/histogram2dcontour/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_y.py b/plotly/validators/histogram2dcontour/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_y.py rename to plotly/validators/histogram2dcontour/_y.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_yaxis.py b/plotly/validators/histogram2dcontour/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_yaxis.py rename to plotly/validators/histogram2dcontour/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_ybingroup.py b/plotly/validators/histogram2dcontour/_ybingroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_ybingroup.py rename to plotly/validators/histogram2dcontour/_ybingroup.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_ybins.py b/plotly/validators/histogram2dcontour/_ybins.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_ybins.py rename to plotly/validators/histogram2dcontour/_ybins.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_ycalendar.py b/plotly/validators/histogram2dcontour/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_ycalendar.py rename to plotly/validators/histogram2dcontour/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_yhoverformat.py b/plotly/validators/histogram2dcontour/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_yhoverformat.py rename to plotly/validators/histogram2dcontour/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_ysrc.py b/plotly/validators/histogram2dcontour/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_ysrc.py rename to plotly/validators/histogram2dcontour/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_z.py b/plotly/validators/histogram2dcontour/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_z.py rename to plotly/validators/histogram2dcontour/_z.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_zauto.py b/plotly/validators/histogram2dcontour/_zauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_zauto.py rename to plotly/validators/histogram2dcontour/_zauto.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_zhoverformat.py b/plotly/validators/histogram2dcontour/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_zhoverformat.py rename to plotly/validators/histogram2dcontour/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_zmax.py b/plotly/validators/histogram2dcontour/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_zmax.py rename to plotly/validators/histogram2dcontour/_zmax.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_zmid.py b/plotly/validators/histogram2dcontour/_zmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_zmid.py rename to plotly/validators/histogram2dcontour/_zmid.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_zmin.py b/plotly/validators/histogram2dcontour/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_zmin.py rename to plotly/validators/histogram2dcontour/_zmin.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/_zsrc.py b/plotly/validators/histogram2dcontour/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/_zsrc.py rename to plotly/validators/histogram2dcontour/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/__init__.py b/plotly/validators/histogram2dcontour/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/__init__.py rename to plotly/validators/histogram2dcontour/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_bgcolor.py b/plotly/validators/histogram2dcontour/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_bgcolor.py rename to plotly/validators/histogram2dcontour/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_bordercolor.py b/plotly/validators/histogram2dcontour/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_bordercolor.py rename to plotly/validators/histogram2dcontour/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_borderwidth.py b/plotly/validators/histogram2dcontour/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_borderwidth.py rename to plotly/validators/histogram2dcontour/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_dtick.py b/plotly/validators/histogram2dcontour/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_dtick.py rename to plotly/validators/histogram2dcontour/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_exponentformat.py b/plotly/validators/histogram2dcontour/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_exponentformat.py rename to plotly/validators/histogram2dcontour/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_labelalias.py b/plotly/validators/histogram2dcontour/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_labelalias.py rename to plotly/validators/histogram2dcontour/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_len.py b/plotly/validators/histogram2dcontour/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_len.py rename to plotly/validators/histogram2dcontour/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_lenmode.py b/plotly/validators/histogram2dcontour/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_lenmode.py rename to plotly/validators/histogram2dcontour/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_minexponent.py b/plotly/validators/histogram2dcontour/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_minexponent.py rename to plotly/validators/histogram2dcontour/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_nticks.py b/plotly/validators/histogram2dcontour/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_nticks.py rename to plotly/validators/histogram2dcontour/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_orientation.py b/plotly/validators/histogram2dcontour/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_orientation.py rename to plotly/validators/histogram2dcontour/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_outlinecolor.py b/plotly/validators/histogram2dcontour/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_outlinecolor.py rename to plotly/validators/histogram2dcontour/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_outlinewidth.py b/plotly/validators/histogram2dcontour/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_outlinewidth.py rename to plotly/validators/histogram2dcontour/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_separatethousands.py b/plotly/validators/histogram2dcontour/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_separatethousands.py rename to plotly/validators/histogram2dcontour/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_showexponent.py b/plotly/validators/histogram2dcontour/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_showexponent.py rename to plotly/validators/histogram2dcontour/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_showticklabels.py b/plotly/validators/histogram2dcontour/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_showticklabels.py rename to plotly/validators/histogram2dcontour/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_showtickprefix.py b/plotly/validators/histogram2dcontour/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_showtickprefix.py rename to plotly/validators/histogram2dcontour/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_showticksuffix.py b/plotly/validators/histogram2dcontour/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_showticksuffix.py rename to plotly/validators/histogram2dcontour/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_thickness.py b/plotly/validators/histogram2dcontour/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_thickness.py rename to plotly/validators/histogram2dcontour/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_thicknessmode.py b/plotly/validators/histogram2dcontour/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_thicknessmode.py rename to plotly/validators/histogram2dcontour/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tick0.py b/plotly/validators/histogram2dcontour/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tick0.py rename to plotly/validators/histogram2dcontour/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickangle.py b/plotly/validators/histogram2dcontour/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickangle.py rename to plotly/validators/histogram2dcontour/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickcolor.py b/plotly/validators/histogram2dcontour/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickcolor.py rename to plotly/validators/histogram2dcontour/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickfont.py b/plotly/validators/histogram2dcontour/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickfont.py rename to plotly/validators/histogram2dcontour/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickformat.py b/plotly/validators/histogram2dcontour/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickformat.py rename to plotly/validators/histogram2dcontour/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickformatstopdefaults.py b/plotly/validators/histogram2dcontour/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickformatstopdefaults.py rename to plotly/validators/histogram2dcontour/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickformatstops.py b/plotly/validators/histogram2dcontour/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickformatstops.py rename to plotly/validators/histogram2dcontour/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticklabeloverflow.py b/plotly/validators/histogram2dcontour/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticklabeloverflow.py rename to plotly/validators/histogram2dcontour/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticklabelposition.py b/plotly/validators/histogram2dcontour/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticklabelposition.py rename to plotly/validators/histogram2dcontour/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticklabelstep.py b/plotly/validators/histogram2dcontour/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticklabelstep.py rename to plotly/validators/histogram2dcontour/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticklen.py b/plotly/validators/histogram2dcontour/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticklen.py rename to plotly/validators/histogram2dcontour/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickmode.py b/plotly/validators/histogram2dcontour/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickmode.py rename to plotly/validators/histogram2dcontour/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickprefix.py b/plotly/validators/histogram2dcontour/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickprefix.py rename to plotly/validators/histogram2dcontour/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticks.py b/plotly/validators/histogram2dcontour/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticks.py rename to plotly/validators/histogram2dcontour/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticksuffix.py b/plotly/validators/histogram2dcontour/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticksuffix.py rename to plotly/validators/histogram2dcontour/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticktext.py b/plotly/validators/histogram2dcontour/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticktext.py rename to plotly/validators/histogram2dcontour/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticktextsrc.py b/plotly/validators/histogram2dcontour/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ticktextsrc.py rename to plotly/validators/histogram2dcontour/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickvals.py b/plotly/validators/histogram2dcontour/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickvals.py rename to plotly/validators/histogram2dcontour/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickvalssrc.py b/plotly/validators/histogram2dcontour/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickvalssrc.py rename to plotly/validators/histogram2dcontour/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickwidth.py b/plotly/validators/histogram2dcontour/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_tickwidth.py rename to plotly/validators/histogram2dcontour/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_title.py b/plotly/validators/histogram2dcontour/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_title.py rename to plotly/validators/histogram2dcontour/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_x.py b/plotly/validators/histogram2dcontour/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_x.py rename to plotly/validators/histogram2dcontour/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_xanchor.py b/plotly/validators/histogram2dcontour/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_xanchor.py rename to plotly/validators/histogram2dcontour/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_xpad.py b/plotly/validators/histogram2dcontour/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_xpad.py rename to plotly/validators/histogram2dcontour/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_xref.py b/plotly/validators/histogram2dcontour/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_xref.py rename to plotly/validators/histogram2dcontour/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_y.py b/plotly/validators/histogram2dcontour/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_y.py rename to plotly/validators/histogram2dcontour/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_yanchor.py b/plotly/validators/histogram2dcontour/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_yanchor.py rename to plotly/validators/histogram2dcontour/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ypad.py b/plotly/validators/histogram2dcontour/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_ypad.py rename to plotly/validators/histogram2dcontour/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_yref.py b/plotly/validators/histogram2dcontour/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/_yref.py rename to plotly/validators/histogram2dcontour/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/__init__.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/__init__.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_color.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_color.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_family.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_family.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_lineposition.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_lineposition.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_shadow.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_shadow.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_size.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_size.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_style.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_style.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_textcase.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_textcase.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_variant.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_variant.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_weight.py b/plotly/validators/histogram2dcontour/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickfont/_weight.py rename to plotly/validators/histogram2dcontour/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/__init__.py b/plotly/validators/histogram2dcontour/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/__init__.py rename to plotly/validators/histogram2dcontour/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/histogram2dcontour/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_enabled.py b/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_enabled.py rename to plotly/validators/histogram2dcontour/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_name.py b/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_name.py rename to plotly/validators/histogram2dcontour/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/histogram2dcontour/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_value.py b/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/tickformatstop/_value.py rename to plotly/validators/histogram2dcontour/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/__init__.py b/plotly/validators/histogram2dcontour/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/__init__.py rename to plotly/validators/histogram2dcontour/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/_font.py b/plotly/validators/histogram2dcontour/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/_font.py rename to plotly/validators/histogram2dcontour/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/_side.py b/plotly/validators/histogram2dcontour/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/_side.py rename to plotly/validators/histogram2dcontour/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/_text.py b/plotly/validators/histogram2dcontour/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/_text.py rename to plotly/validators/histogram2dcontour/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/__init__.py b/plotly/validators/histogram2dcontour/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/__init__.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_color.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_color.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_family.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_family.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_lineposition.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_lineposition.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_shadow.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_shadow.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_size.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_size.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_style.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_style.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_textcase.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_textcase.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_variant.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_variant.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_weight.py b/plotly/validators/histogram2dcontour/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/colorbar/title/font/_weight.py rename to plotly/validators/histogram2dcontour/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/__init__.py b/plotly/validators/histogram2dcontour/contours/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/__init__.py rename to plotly/validators/histogram2dcontour/contours/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_coloring.py b/plotly/validators/histogram2dcontour/contours/_coloring.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_coloring.py rename to plotly/validators/histogram2dcontour/contours/_coloring.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_end.py b/plotly/validators/histogram2dcontour/contours/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_end.py rename to plotly/validators/histogram2dcontour/contours/_end.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_labelfont.py b/plotly/validators/histogram2dcontour/contours/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_labelfont.py rename to plotly/validators/histogram2dcontour/contours/_labelfont.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_labelformat.py b/plotly/validators/histogram2dcontour/contours/_labelformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_labelformat.py rename to plotly/validators/histogram2dcontour/contours/_labelformat.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_operation.py b/plotly/validators/histogram2dcontour/contours/_operation.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_operation.py rename to plotly/validators/histogram2dcontour/contours/_operation.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_showlabels.py b/plotly/validators/histogram2dcontour/contours/_showlabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_showlabels.py rename to plotly/validators/histogram2dcontour/contours/_showlabels.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_showlines.py b/plotly/validators/histogram2dcontour/contours/_showlines.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_showlines.py rename to plotly/validators/histogram2dcontour/contours/_showlines.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_size.py b/plotly/validators/histogram2dcontour/contours/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_size.py rename to plotly/validators/histogram2dcontour/contours/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_start.py b/plotly/validators/histogram2dcontour/contours/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_start.py rename to plotly/validators/histogram2dcontour/contours/_start.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_type.py b/plotly/validators/histogram2dcontour/contours/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_type.py rename to plotly/validators/histogram2dcontour/contours/_type.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/_value.py b/plotly/validators/histogram2dcontour/contours/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/_value.py rename to plotly/validators/histogram2dcontour/contours/_value.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/__init__.py b/plotly/validators/histogram2dcontour/contours/labelfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/__init__.py rename to plotly/validators/histogram2dcontour/contours/labelfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_color.py b/plotly/validators/histogram2dcontour/contours/labelfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_color.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_family.py b/plotly/validators/histogram2dcontour/contours/labelfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_family.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_lineposition.py b/plotly/validators/histogram2dcontour/contours/labelfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_lineposition.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_shadow.py b/plotly/validators/histogram2dcontour/contours/labelfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_shadow.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_size.py b/plotly/validators/histogram2dcontour/contours/labelfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_size.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_style.py b/plotly/validators/histogram2dcontour/contours/labelfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_style.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_textcase.py b/plotly/validators/histogram2dcontour/contours/labelfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_textcase.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_variant.py b/plotly/validators/histogram2dcontour/contours/labelfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_variant.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_weight.py b/plotly/validators/histogram2dcontour/contours/labelfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/contours/labelfont/_weight.py rename to plotly/validators/histogram2dcontour/contours/labelfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/__init__.py b/plotly/validators/histogram2dcontour/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/__init__.py rename to plotly/validators/histogram2dcontour/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_align.py b/plotly/validators/histogram2dcontour/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_align.py rename to plotly/validators/histogram2dcontour/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_alignsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_alignsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_bgcolor.py b/plotly/validators/histogram2dcontour/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_bgcolor.py rename to plotly/validators/histogram2dcontour/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_bgcolorsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_bgcolorsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_bordercolor.py b/plotly/validators/histogram2dcontour/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_bordercolor.py rename to plotly/validators/histogram2dcontour/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_bordercolorsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_bordercolorsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_font.py b/plotly/validators/histogram2dcontour/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_font.py rename to plotly/validators/histogram2dcontour/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_namelength.py b/plotly/validators/histogram2dcontour/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_namelength.py rename to plotly/validators/histogram2dcontour/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_namelengthsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/_namelengthsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/__init__.py b/plotly/validators/histogram2dcontour/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/__init__.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_color.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_color.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_colorsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_colorsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_family.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_family.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_familysrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_familysrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_lineposition.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_lineposition.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_linepositionsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_shadow.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_shadow.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_shadowsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_shadowsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_size.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_size.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_sizesrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_sizesrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_style.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_style.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_stylesrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_stylesrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_textcase.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_textcase.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_textcasesrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_textcasesrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_variant.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_variant.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_variantsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_variantsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_weight.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_weight.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_weightsrc.py b/plotly/validators/histogram2dcontour/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/hoverlabel/font/_weightsrc.py rename to plotly/validators/histogram2dcontour/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/__init__.py b/plotly/validators/histogram2dcontour/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/__init__.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/_font.py b/plotly/validators/histogram2dcontour/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/_font.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/_text.py b/plotly/validators/histogram2dcontour/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/_text.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/__init__.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/__init__.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_color.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_color.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_family.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_family.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_lineposition.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_lineposition.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_shadow.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_shadow.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_size.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_size.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_style.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_style.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_textcase.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_textcase.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_variant.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_variant.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_weight.py b/plotly/validators/histogram2dcontour/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/legendgrouptitle/font/_weight.py rename to plotly/validators/histogram2dcontour/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/line/__init__.py b/plotly/validators/histogram2dcontour/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/line/__init__.py rename to plotly/validators/histogram2dcontour/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/line/_color.py b/plotly/validators/histogram2dcontour/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/line/_color.py rename to plotly/validators/histogram2dcontour/line/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/line/_dash.py b/plotly/validators/histogram2dcontour/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/line/_dash.py rename to plotly/validators/histogram2dcontour/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/line/_smoothing.py b/plotly/validators/histogram2dcontour/line/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/line/_smoothing.py rename to plotly/validators/histogram2dcontour/line/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/line/_width.py b/plotly/validators/histogram2dcontour/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/line/_width.py rename to plotly/validators/histogram2dcontour/line/_width.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/marker/__init__.py b/plotly/validators/histogram2dcontour/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/marker/__init__.py rename to plotly/validators/histogram2dcontour/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/marker/_color.py b/plotly/validators/histogram2dcontour/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/marker/_color.py rename to plotly/validators/histogram2dcontour/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/marker/_colorsrc.py b/plotly/validators/histogram2dcontour/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/marker/_colorsrc.py rename to plotly/validators/histogram2dcontour/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/stream/__init__.py b/plotly/validators/histogram2dcontour/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/stream/__init__.py rename to plotly/validators/histogram2dcontour/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/stream/_maxpoints.py b/plotly/validators/histogram2dcontour/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/stream/_maxpoints.py rename to plotly/validators/histogram2dcontour/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/stream/_token.py b/plotly/validators/histogram2dcontour/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/stream/_token.py rename to plotly/validators/histogram2dcontour/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/__init__.py b/plotly/validators/histogram2dcontour/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/__init__.py rename to plotly/validators/histogram2dcontour/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_color.py b/plotly/validators/histogram2dcontour/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_color.py rename to plotly/validators/histogram2dcontour/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_family.py b/plotly/validators/histogram2dcontour/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_family.py rename to plotly/validators/histogram2dcontour/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_lineposition.py b/plotly/validators/histogram2dcontour/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_lineposition.py rename to plotly/validators/histogram2dcontour/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_shadow.py b/plotly/validators/histogram2dcontour/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_shadow.py rename to plotly/validators/histogram2dcontour/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_size.py b/plotly/validators/histogram2dcontour/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_size.py rename to plotly/validators/histogram2dcontour/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_style.py b/plotly/validators/histogram2dcontour/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_style.py rename to plotly/validators/histogram2dcontour/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_textcase.py b/plotly/validators/histogram2dcontour/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_textcase.py rename to plotly/validators/histogram2dcontour/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_variant.py b/plotly/validators/histogram2dcontour/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_variant.py rename to plotly/validators/histogram2dcontour/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_weight.py b/plotly/validators/histogram2dcontour/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/textfont/_weight.py rename to plotly/validators/histogram2dcontour/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/xbins/__init__.py b/plotly/validators/histogram2dcontour/xbins/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/xbins/__init__.py rename to plotly/validators/histogram2dcontour/xbins/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/xbins/_end.py b/plotly/validators/histogram2dcontour/xbins/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/xbins/_end.py rename to plotly/validators/histogram2dcontour/xbins/_end.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/xbins/_size.py b/plotly/validators/histogram2dcontour/xbins/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/xbins/_size.py rename to plotly/validators/histogram2dcontour/xbins/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/xbins/_start.py b/plotly/validators/histogram2dcontour/xbins/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/xbins/_start.py rename to plotly/validators/histogram2dcontour/xbins/_start.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/ybins/__init__.py b/plotly/validators/histogram2dcontour/ybins/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/ybins/__init__.py rename to plotly/validators/histogram2dcontour/ybins/__init__.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/ybins/_end.py b/plotly/validators/histogram2dcontour/ybins/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/ybins/_end.py rename to plotly/validators/histogram2dcontour/ybins/_end.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/ybins/_size.py b/plotly/validators/histogram2dcontour/ybins/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/ybins/_size.py rename to plotly/validators/histogram2dcontour/ybins/_size.py diff --git a/packages/python/plotly/plotly/validators/histogram2dcontour/ybins/_start.py b/plotly/validators/histogram2dcontour/ybins/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/histogram2dcontour/ybins/_start.py rename to plotly/validators/histogram2dcontour/ybins/_start.py diff --git a/packages/python/plotly/plotly/validators/icicle/__init__.py b/plotly/validators/icicle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/__init__.py rename to plotly/validators/icicle/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/_branchvalues.py b/plotly/validators/icicle/_branchvalues.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_branchvalues.py rename to plotly/validators/icicle/_branchvalues.py diff --git a/packages/python/plotly/plotly/validators/icicle/_count.py b/plotly/validators/icicle/_count.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_count.py rename to plotly/validators/icicle/_count.py diff --git a/packages/python/plotly/plotly/validators/icicle/_customdata.py b/plotly/validators/icicle/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_customdata.py rename to plotly/validators/icicle/_customdata.py diff --git a/packages/python/plotly/plotly/validators/icicle/_customdatasrc.py b/plotly/validators/icicle/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_customdatasrc.py rename to plotly/validators/icicle/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_domain.py b/plotly/validators/icicle/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_domain.py rename to plotly/validators/icicle/_domain.py diff --git a/packages/python/plotly/plotly/validators/icicle/_hoverinfo.py b/plotly/validators/icicle/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_hoverinfo.py rename to plotly/validators/icicle/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/icicle/_hoverinfosrc.py b/plotly/validators/icicle/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_hoverinfosrc.py rename to plotly/validators/icicle/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_hoverlabel.py b/plotly/validators/icicle/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_hoverlabel.py rename to plotly/validators/icicle/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/icicle/_hovertemplate.py b/plotly/validators/icicle/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_hovertemplate.py rename to plotly/validators/icicle/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/icicle/_hovertemplatesrc.py b/plotly/validators/icicle/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_hovertemplatesrc.py rename to plotly/validators/icicle/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_hovertext.py b/plotly/validators/icicle/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_hovertext.py rename to plotly/validators/icicle/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/icicle/_hovertextsrc.py b/plotly/validators/icicle/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_hovertextsrc.py rename to plotly/validators/icicle/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_ids.py b/plotly/validators/icicle/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_ids.py rename to plotly/validators/icicle/_ids.py diff --git a/packages/python/plotly/plotly/validators/icicle/_idssrc.py b/plotly/validators/icicle/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_idssrc.py rename to plotly/validators/icicle/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_insidetextfont.py b/plotly/validators/icicle/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_insidetextfont.py rename to plotly/validators/icicle/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/icicle/_labels.py b/plotly/validators/icicle/_labels.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_labels.py rename to plotly/validators/icicle/_labels.py diff --git a/packages/python/plotly/plotly/validators/icicle/_labelssrc.py b/plotly/validators/icicle/_labelssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_labelssrc.py rename to plotly/validators/icicle/_labelssrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_leaf.py b/plotly/validators/icicle/_leaf.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_leaf.py rename to plotly/validators/icicle/_leaf.py diff --git a/packages/python/plotly/plotly/validators/icicle/_legend.py b/plotly/validators/icicle/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_legend.py rename to plotly/validators/icicle/_legend.py diff --git a/packages/python/plotly/plotly/validators/icicle/_legendgrouptitle.py b/plotly/validators/icicle/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_legendgrouptitle.py rename to plotly/validators/icicle/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/icicle/_legendrank.py b/plotly/validators/icicle/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_legendrank.py rename to plotly/validators/icicle/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/icicle/_legendwidth.py b/plotly/validators/icicle/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_legendwidth.py rename to plotly/validators/icicle/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/icicle/_level.py b/plotly/validators/icicle/_level.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_level.py rename to plotly/validators/icicle/_level.py diff --git a/packages/python/plotly/plotly/validators/icicle/_marker.py b/plotly/validators/icicle/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_marker.py rename to plotly/validators/icicle/_marker.py diff --git a/packages/python/plotly/plotly/validators/icicle/_maxdepth.py b/plotly/validators/icicle/_maxdepth.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_maxdepth.py rename to plotly/validators/icicle/_maxdepth.py diff --git a/packages/python/plotly/plotly/validators/icicle/_meta.py b/plotly/validators/icicle/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_meta.py rename to plotly/validators/icicle/_meta.py diff --git a/packages/python/plotly/plotly/validators/icicle/_metasrc.py b/plotly/validators/icicle/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_metasrc.py rename to plotly/validators/icicle/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_name.py b/plotly/validators/icicle/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_name.py rename to plotly/validators/icicle/_name.py diff --git a/packages/python/plotly/plotly/validators/icicle/_opacity.py b/plotly/validators/icicle/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_opacity.py rename to plotly/validators/icicle/_opacity.py diff --git a/packages/python/plotly/plotly/validators/icicle/_outsidetextfont.py b/plotly/validators/icicle/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_outsidetextfont.py rename to plotly/validators/icicle/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/validators/icicle/_parents.py b/plotly/validators/icicle/_parents.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_parents.py rename to plotly/validators/icicle/_parents.py diff --git a/packages/python/plotly/plotly/validators/icicle/_parentssrc.py b/plotly/validators/icicle/_parentssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_parentssrc.py rename to plotly/validators/icicle/_parentssrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_pathbar.py b/plotly/validators/icicle/_pathbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_pathbar.py rename to plotly/validators/icicle/_pathbar.py diff --git a/packages/python/plotly/plotly/validators/icicle/_root.py b/plotly/validators/icicle/_root.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_root.py rename to plotly/validators/icicle/_root.py diff --git a/packages/python/plotly/plotly/validators/icicle/_sort.py b/plotly/validators/icicle/_sort.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_sort.py rename to plotly/validators/icicle/_sort.py diff --git a/packages/python/plotly/plotly/validators/icicle/_stream.py b/plotly/validators/icicle/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_stream.py rename to plotly/validators/icicle/_stream.py diff --git a/packages/python/plotly/plotly/validators/icicle/_text.py b/plotly/validators/icicle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_text.py rename to plotly/validators/icicle/_text.py diff --git a/packages/python/plotly/plotly/validators/icicle/_textfont.py b/plotly/validators/icicle/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_textfont.py rename to plotly/validators/icicle/_textfont.py diff --git a/packages/python/plotly/plotly/validators/icicle/_textinfo.py b/plotly/validators/icicle/_textinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_textinfo.py rename to plotly/validators/icicle/_textinfo.py diff --git a/packages/python/plotly/plotly/validators/icicle/_textposition.py b/plotly/validators/icicle/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_textposition.py rename to plotly/validators/icicle/_textposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/_textsrc.py b/plotly/validators/icicle/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_textsrc.py rename to plotly/validators/icicle/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_texttemplate.py b/plotly/validators/icicle/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_texttemplate.py rename to plotly/validators/icicle/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/icicle/_texttemplatesrc.py b/plotly/validators/icicle/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_texttemplatesrc.py rename to plotly/validators/icicle/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_tiling.py b/plotly/validators/icicle/_tiling.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_tiling.py rename to plotly/validators/icicle/_tiling.py diff --git a/packages/python/plotly/plotly/validators/icicle/_uid.py b/plotly/validators/icicle/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_uid.py rename to plotly/validators/icicle/_uid.py diff --git a/packages/python/plotly/plotly/validators/icicle/_uirevision.py b/plotly/validators/icicle/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_uirevision.py rename to plotly/validators/icicle/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/icicle/_values.py b/plotly/validators/icicle/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_values.py rename to plotly/validators/icicle/_values.py diff --git a/packages/python/plotly/plotly/validators/icicle/_valuessrc.py b/plotly/validators/icicle/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_valuessrc.py rename to plotly/validators/icicle/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/_visible.py b/plotly/validators/icicle/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/_visible.py rename to plotly/validators/icicle/_visible.py diff --git a/packages/python/plotly/plotly/validators/icicle/domain/__init__.py b/plotly/validators/icicle/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/domain/__init__.py rename to plotly/validators/icicle/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/domain/_column.py b/plotly/validators/icicle/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/domain/_column.py rename to plotly/validators/icicle/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/icicle/domain/_row.py b/plotly/validators/icicle/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/domain/_row.py rename to plotly/validators/icicle/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/icicle/domain/_x.py b/plotly/validators/icicle/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/domain/_x.py rename to plotly/validators/icicle/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/icicle/domain/_y.py b/plotly/validators/icicle/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/domain/_y.py rename to plotly/validators/icicle/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/__init__.py b/plotly/validators/icicle/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/__init__.py rename to plotly/validators/icicle/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_align.py b/plotly/validators/icicle/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_align.py rename to plotly/validators/icicle/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_alignsrc.py b/plotly/validators/icicle/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_alignsrc.py rename to plotly/validators/icicle/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_bgcolor.py b/plotly/validators/icicle/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_bgcolor.py rename to plotly/validators/icicle/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_bgcolorsrc.py b/plotly/validators/icicle/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_bgcolorsrc.py rename to plotly/validators/icicle/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_bordercolor.py b/plotly/validators/icicle/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_bordercolor.py rename to plotly/validators/icicle/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_bordercolorsrc.py b/plotly/validators/icicle/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_bordercolorsrc.py rename to plotly/validators/icicle/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_font.py b/plotly/validators/icicle/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_font.py rename to plotly/validators/icicle/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_namelength.py b/plotly/validators/icicle/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_namelength.py rename to plotly/validators/icicle/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/_namelengthsrc.py b/plotly/validators/icicle/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/_namelengthsrc.py rename to plotly/validators/icicle/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/__init__.py b/plotly/validators/icicle/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/__init__.py rename to plotly/validators/icicle/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_color.py b/plotly/validators/icicle/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_color.py rename to plotly/validators/icicle/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_colorsrc.py b/plotly/validators/icicle/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_colorsrc.py rename to plotly/validators/icicle/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_family.py b/plotly/validators/icicle/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_family.py rename to plotly/validators/icicle/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_familysrc.py b/plotly/validators/icicle/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_familysrc.py rename to plotly/validators/icicle/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_lineposition.py b/plotly/validators/icicle/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_lineposition.py rename to plotly/validators/icicle/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_linepositionsrc.py b/plotly/validators/icicle/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/icicle/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_shadow.py b/plotly/validators/icicle/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_shadow.py rename to plotly/validators/icicle/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_shadowsrc.py b/plotly/validators/icicle/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_shadowsrc.py rename to plotly/validators/icicle/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_size.py b/plotly/validators/icicle/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_size.py rename to plotly/validators/icicle/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_sizesrc.py b/plotly/validators/icicle/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_sizesrc.py rename to plotly/validators/icicle/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_style.py b/plotly/validators/icicle/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_style.py rename to plotly/validators/icicle/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_stylesrc.py b/plotly/validators/icicle/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_stylesrc.py rename to plotly/validators/icicle/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_textcase.py b/plotly/validators/icicle/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_textcase.py rename to plotly/validators/icicle/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_textcasesrc.py b/plotly/validators/icicle/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_textcasesrc.py rename to plotly/validators/icicle/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_variant.py b/plotly/validators/icicle/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_variant.py rename to plotly/validators/icicle/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_variantsrc.py b/plotly/validators/icicle/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_variantsrc.py rename to plotly/validators/icicle/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_weight.py b/plotly/validators/icicle/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_weight.py rename to plotly/validators/icicle/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_weightsrc.py b/plotly/validators/icicle/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/hoverlabel/font/_weightsrc.py rename to plotly/validators/icicle/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/__init__.py b/plotly/validators/icicle/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/__init__.py rename to plotly/validators/icicle/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_color.py b/plotly/validators/icicle/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_color.py rename to plotly/validators/icicle/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_colorsrc.py b/plotly/validators/icicle/insidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_colorsrc.py rename to plotly/validators/icicle/insidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_family.py b/plotly/validators/icicle/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_family.py rename to plotly/validators/icicle/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_familysrc.py b/plotly/validators/icicle/insidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_familysrc.py rename to plotly/validators/icicle/insidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_lineposition.py b/plotly/validators/icicle/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_lineposition.py rename to plotly/validators/icicle/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_linepositionsrc.py b/plotly/validators/icicle/insidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_linepositionsrc.py rename to plotly/validators/icicle/insidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_shadow.py b/plotly/validators/icicle/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_shadow.py rename to plotly/validators/icicle/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_shadowsrc.py b/plotly/validators/icicle/insidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_shadowsrc.py rename to plotly/validators/icicle/insidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_size.py b/plotly/validators/icicle/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_size.py rename to plotly/validators/icicle/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_sizesrc.py b/plotly/validators/icicle/insidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_sizesrc.py rename to plotly/validators/icicle/insidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_style.py b/plotly/validators/icicle/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_style.py rename to plotly/validators/icicle/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_stylesrc.py b/plotly/validators/icicle/insidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_stylesrc.py rename to plotly/validators/icicle/insidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_textcase.py b/plotly/validators/icicle/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_textcase.py rename to plotly/validators/icicle/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_textcasesrc.py b/plotly/validators/icicle/insidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_textcasesrc.py rename to plotly/validators/icicle/insidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_variant.py b/plotly/validators/icicle/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_variant.py rename to plotly/validators/icicle/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_variantsrc.py b/plotly/validators/icicle/insidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_variantsrc.py rename to plotly/validators/icicle/insidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_weight.py b/plotly/validators/icicle/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_weight.py rename to plotly/validators/icicle/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/icicle/insidetextfont/_weightsrc.py b/plotly/validators/icicle/insidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/insidetextfont/_weightsrc.py rename to plotly/validators/icicle/insidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/leaf/__init__.py b/plotly/validators/icicle/leaf/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/leaf/__init__.py rename to plotly/validators/icicle/leaf/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/leaf/_opacity.py b/plotly/validators/icicle/leaf/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/leaf/_opacity.py rename to plotly/validators/icicle/leaf/_opacity.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/__init__.py b/plotly/validators/icicle/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/__init__.py rename to plotly/validators/icicle/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/_font.py b/plotly/validators/icicle/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/_font.py rename to plotly/validators/icicle/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/_text.py b/plotly/validators/icicle/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/_text.py rename to plotly/validators/icicle/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/__init__.py b/plotly/validators/icicle/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/__init__.py rename to plotly/validators/icicle/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_color.py b/plotly/validators/icicle/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_color.py rename to plotly/validators/icicle/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_family.py b/plotly/validators/icicle/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_family.py rename to plotly/validators/icicle/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_lineposition.py b/plotly/validators/icicle/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_lineposition.py rename to plotly/validators/icicle/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_shadow.py b/plotly/validators/icicle/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_shadow.py rename to plotly/validators/icicle/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_size.py b/plotly/validators/icicle/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_size.py rename to plotly/validators/icicle/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_style.py b/plotly/validators/icicle/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_style.py rename to plotly/validators/icicle/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_textcase.py b/plotly/validators/icicle/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_textcase.py rename to plotly/validators/icicle/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_variant.py b/plotly/validators/icicle/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_variant.py rename to plotly/validators/icicle/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_weight.py b/plotly/validators/icicle/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/legendgrouptitle/font/_weight.py rename to plotly/validators/icicle/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/__init__.py b/plotly/validators/icicle/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/__init__.py rename to plotly/validators/icicle/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_autocolorscale.py b/plotly/validators/icicle/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_autocolorscale.py rename to plotly/validators/icicle/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_cauto.py b/plotly/validators/icicle/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_cauto.py rename to plotly/validators/icicle/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_cmax.py b/plotly/validators/icicle/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_cmax.py rename to plotly/validators/icicle/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_cmid.py b/plotly/validators/icicle/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_cmid.py rename to plotly/validators/icicle/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_cmin.py b/plotly/validators/icicle/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_cmin.py rename to plotly/validators/icicle/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_coloraxis.py b/plotly/validators/icicle/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_coloraxis.py rename to plotly/validators/icicle/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_colorbar.py b/plotly/validators/icicle/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_colorbar.py rename to plotly/validators/icicle/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_colors.py b/plotly/validators/icicle/marker/_colors.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_colors.py rename to plotly/validators/icicle/marker/_colors.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_colorscale.py b/plotly/validators/icicle/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_colorscale.py rename to plotly/validators/icicle/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_colorssrc.py b/plotly/validators/icicle/marker/_colorssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_colorssrc.py rename to plotly/validators/icicle/marker/_colorssrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_line.py b/plotly/validators/icicle/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_line.py rename to plotly/validators/icicle/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_pattern.py b/plotly/validators/icicle/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_pattern.py rename to plotly/validators/icicle/marker/_pattern.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_reversescale.py b/plotly/validators/icicle/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_reversescale.py rename to plotly/validators/icicle/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/_showscale.py b/plotly/validators/icicle/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/_showscale.py rename to plotly/validators/icicle/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/__init__.py b/plotly/validators/icicle/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/__init__.py rename to plotly/validators/icicle/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_bgcolor.py b/plotly/validators/icicle/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_bgcolor.py rename to plotly/validators/icicle/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_bordercolor.py b/plotly/validators/icicle/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_bordercolor.py rename to plotly/validators/icicle/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_borderwidth.py b/plotly/validators/icicle/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_borderwidth.py rename to plotly/validators/icicle/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_dtick.py b/plotly/validators/icicle/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_dtick.py rename to plotly/validators/icicle/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_exponentformat.py b/plotly/validators/icicle/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_exponentformat.py rename to plotly/validators/icicle/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_labelalias.py b/plotly/validators/icicle/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_labelalias.py rename to plotly/validators/icicle/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_len.py b/plotly/validators/icicle/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_len.py rename to plotly/validators/icicle/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_lenmode.py b/plotly/validators/icicle/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_lenmode.py rename to plotly/validators/icicle/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_minexponent.py b/plotly/validators/icicle/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_minexponent.py rename to plotly/validators/icicle/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_nticks.py b/plotly/validators/icicle/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_nticks.py rename to plotly/validators/icicle/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_orientation.py b/plotly/validators/icicle/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_orientation.py rename to plotly/validators/icicle/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_outlinecolor.py b/plotly/validators/icicle/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_outlinecolor.py rename to plotly/validators/icicle/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_outlinewidth.py b/plotly/validators/icicle/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_outlinewidth.py rename to plotly/validators/icicle/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_separatethousands.py b/plotly/validators/icicle/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_separatethousands.py rename to plotly/validators/icicle/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_showexponent.py b/plotly/validators/icicle/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_showexponent.py rename to plotly/validators/icicle/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_showticklabels.py b/plotly/validators/icicle/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_showticklabels.py rename to plotly/validators/icicle/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_showtickprefix.py b/plotly/validators/icicle/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_showtickprefix.py rename to plotly/validators/icicle/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_showticksuffix.py b/plotly/validators/icicle/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_showticksuffix.py rename to plotly/validators/icicle/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_thickness.py b/plotly/validators/icicle/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_thickness.py rename to plotly/validators/icicle/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_thicknessmode.py b/plotly/validators/icicle/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_thicknessmode.py rename to plotly/validators/icicle/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tick0.py b/plotly/validators/icicle/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tick0.py rename to plotly/validators/icicle/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickangle.py b/plotly/validators/icicle/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickangle.py rename to plotly/validators/icicle/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickcolor.py b/plotly/validators/icicle/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickcolor.py rename to plotly/validators/icicle/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickfont.py b/plotly/validators/icicle/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickfont.py rename to plotly/validators/icicle/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickformat.py b/plotly/validators/icicle/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickformat.py rename to plotly/validators/icicle/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/icicle/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/icicle/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickformatstops.py b/plotly/validators/icicle/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickformatstops.py rename to plotly/validators/icicle/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/icicle/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/icicle/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticklabelposition.py b/plotly/validators/icicle/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticklabelposition.py rename to plotly/validators/icicle/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticklabelstep.py b/plotly/validators/icicle/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticklabelstep.py rename to plotly/validators/icicle/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticklen.py b/plotly/validators/icicle/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticklen.py rename to plotly/validators/icicle/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickmode.py b/plotly/validators/icicle/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickmode.py rename to plotly/validators/icicle/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickprefix.py b/plotly/validators/icicle/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickprefix.py rename to plotly/validators/icicle/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticks.py b/plotly/validators/icicle/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticks.py rename to plotly/validators/icicle/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticksuffix.py b/plotly/validators/icicle/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticksuffix.py rename to plotly/validators/icicle/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticktext.py b/plotly/validators/icicle/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticktext.py rename to plotly/validators/icicle/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticktextsrc.py b/plotly/validators/icicle/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ticktextsrc.py rename to plotly/validators/icicle/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickvals.py b/plotly/validators/icicle/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickvals.py rename to plotly/validators/icicle/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickvalssrc.py b/plotly/validators/icicle/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickvalssrc.py rename to plotly/validators/icicle/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickwidth.py b/plotly/validators/icicle/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_tickwidth.py rename to plotly/validators/icicle/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_title.py b/plotly/validators/icicle/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_title.py rename to plotly/validators/icicle/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_x.py b/plotly/validators/icicle/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_x.py rename to plotly/validators/icicle/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_xanchor.py b/plotly/validators/icicle/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_xanchor.py rename to plotly/validators/icicle/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_xpad.py b/plotly/validators/icicle/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_xpad.py rename to plotly/validators/icicle/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_xref.py b/plotly/validators/icicle/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_xref.py rename to plotly/validators/icicle/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_y.py b/plotly/validators/icicle/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_y.py rename to plotly/validators/icicle/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_yanchor.py b/plotly/validators/icicle/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_yanchor.py rename to plotly/validators/icicle/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ypad.py b/plotly/validators/icicle/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_ypad.py rename to plotly/validators/icicle/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/_yref.py b/plotly/validators/icicle/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/_yref.py rename to plotly/validators/icicle/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/__init__.py b/plotly/validators/icicle/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/__init__.py rename to plotly/validators/icicle/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_color.py b/plotly/validators/icicle/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_color.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_family.py b/plotly/validators/icicle/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_family.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/icicle/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_shadow.py b/plotly/validators/icicle/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_size.py b/plotly/validators/icicle/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_size.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_style.py b/plotly/validators/icicle/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_style.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_textcase.py b/plotly/validators/icicle/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_variant.py b/plotly/validators/icicle/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_variant.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_weight.py b/plotly/validators/icicle/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickfont/_weight.py rename to plotly/validators/icicle/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/icicle/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/icicle/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/icicle/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/icicle/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/icicle/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/icicle/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_name.py b/plotly/validators/icicle/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/icicle/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/icicle/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/icicle/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_value.py b/plotly/validators/icicle/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/icicle/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/__init__.py b/plotly/validators/icicle/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/__init__.py rename to plotly/validators/icicle/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/_font.py b/plotly/validators/icicle/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/_font.py rename to plotly/validators/icicle/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/_side.py b/plotly/validators/icicle/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/_side.py rename to plotly/validators/icicle/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/_text.py b/plotly/validators/icicle/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/_text.py rename to plotly/validators/icicle/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/__init__.py b/plotly/validators/icicle/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/__init__.py rename to plotly/validators/icicle/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_color.py b/plotly/validators/icicle/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_color.py rename to plotly/validators/icicle/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_family.py b/plotly/validators/icicle/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_family.py rename to plotly/validators/icicle/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_lineposition.py b/plotly/validators/icicle/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/icicle/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_shadow.py b/plotly/validators/icicle/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_shadow.py rename to plotly/validators/icicle/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_size.py b/plotly/validators/icicle/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_size.py rename to plotly/validators/icicle/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_style.py b/plotly/validators/icicle/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_style.py rename to plotly/validators/icicle/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_textcase.py b/plotly/validators/icicle/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_textcase.py rename to plotly/validators/icicle/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_variant.py b/plotly/validators/icicle/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_variant.py rename to plotly/validators/icicle/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_weight.py b/plotly/validators/icicle/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/colorbar/title/font/_weight.py rename to plotly/validators/icicle/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/line/__init__.py b/plotly/validators/icicle/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/line/__init__.py rename to plotly/validators/icicle/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/line/_color.py b/plotly/validators/icicle/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/line/_color.py rename to plotly/validators/icicle/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/line/_colorsrc.py b/plotly/validators/icicle/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/line/_colorsrc.py rename to plotly/validators/icicle/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/line/_width.py b/plotly/validators/icicle/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/line/_width.py rename to plotly/validators/icicle/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/line/_widthsrc.py b/plotly/validators/icicle/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/line/_widthsrc.py rename to plotly/validators/icicle/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/__init__.py b/plotly/validators/icicle/marker/pattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/__init__.py rename to plotly/validators/icicle/marker/pattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_bgcolor.py b/plotly/validators/icicle/marker/pattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_bgcolor.py rename to plotly/validators/icicle/marker/pattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_bgcolorsrc.py b/plotly/validators/icicle/marker/pattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_bgcolorsrc.py rename to plotly/validators/icicle/marker/pattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_fgcolor.py b/plotly/validators/icicle/marker/pattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_fgcolor.py rename to plotly/validators/icicle/marker/pattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_fgcolorsrc.py b/plotly/validators/icicle/marker/pattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_fgcolorsrc.py rename to plotly/validators/icicle/marker/pattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_fgopacity.py b/plotly/validators/icicle/marker/pattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_fgopacity.py rename to plotly/validators/icicle/marker/pattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_fillmode.py b/plotly/validators/icicle/marker/pattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_fillmode.py rename to plotly/validators/icicle/marker/pattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_shape.py b/plotly/validators/icicle/marker/pattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_shape.py rename to plotly/validators/icicle/marker/pattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_shapesrc.py b/plotly/validators/icicle/marker/pattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_shapesrc.py rename to plotly/validators/icicle/marker/pattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_size.py b/plotly/validators/icicle/marker/pattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_size.py rename to plotly/validators/icicle/marker/pattern/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_sizesrc.py b/plotly/validators/icicle/marker/pattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_sizesrc.py rename to plotly/validators/icicle/marker/pattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_solidity.py b/plotly/validators/icicle/marker/pattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_solidity.py rename to plotly/validators/icicle/marker/pattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/icicle/marker/pattern/_soliditysrc.py b/plotly/validators/icicle/marker/pattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/marker/pattern/_soliditysrc.py rename to plotly/validators/icicle/marker/pattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/__init__.py b/plotly/validators/icicle/outsidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/__init__.py rename to plotly/validators/icicle/outsidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_color.py b/plotly/validators/icicle/outsidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_color.py rename to plotly/validators/icicle/outsidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_colorsrc.py b/plotly/validators/icicle/outsidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_colorsrc.py rename to plotly/validators/icicle/outsidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_family.py b/plotly/validators/icicle/outsidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_family.py rename to plotly/validators/icicle/outsidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_familysrc.py b/plotly/validators/icicle/outsidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_familysrc.py rename to plotly/validators/icicle/outsidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_lineposition.py b/plotly/validators/icicle/outsidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_lineposition.py rename to plotly/validators/icicle/outsidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_linepositionsrc.py b/plotly/validators/icicle/outsidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_linepositionsrc.py rename to plotly/validators/icicle/outsidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_shadow.py b/plotly/validators/icicle/outsidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_shadow.py rename to plotly/validators/icicle/outsidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_shadowsrc.py b/plotly/validators/icicle/outsidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_shadowsrc.py rename to plotly/validators/icicle/outsidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_size.py b/plotly/validators/icicle/outsidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_size.py rename to plotly/validators/icicle/outsidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_sizesrc.py b/plotly/validators/icicle/outsidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_sizesrc.py rename to plotly/validators/icicle/outsidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_style.py b/plotly/validators/icicle/outsidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_style.py rename to plotly/validators/icicle/outsidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_stylesrc.py b/plotly/validators/icicle/outsidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_stylesrc.py rename to plotly/validators/icicle/outsidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_textcase.py b/plotly/validators/icicle/outsidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_textcase.py rename to plotly/validators/icicle/outsidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_textcasesrc.py b/plotly/validators/icicle/outsidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_textcasesrc.py rename to plotly/validators/icicle/outsidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_variant.py b/plotly/validators/icicle/outsidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_variant.py rename to plotly/validators/icicle/outsidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_variantsrc.py b/plotly/validators/icicle/outsidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_variantsrc.py rename to plotly/validators/icicle/outsidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_weight.py b/plotly/validators/icicle/outsidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_weight.py rename to plotly/validators/icicle/outsidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/icicle/outsidetextfont/_weightsrc.py b/plotly/validators/icicle/outsidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/outsidetextfont/_weightsrc.py rename to plotly/validators/icicle/outsidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/__init__.py b/plotly/validators/icicle/pathbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/__init__.py rename to plotly/validators/icicle/pathbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/_edgeshape.py b/plotly/validators/icicle/pathbar/_edgeshape.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/_edgeshape.py rename to plotly/validators/icicle/pathbar/_edgeshape.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/_side.py b/plotly/validators/icicle/pathbar/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/_side.py rename to plotly/validators/icicle/pathbar/_side.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/_textfont.py b/plotly/validators/icicle/pathbar/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/_textfont.py rename to plotly/validators/icicle/pathbar/_textfont.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/_thickness.py b/plotly/validators/icicle/pathbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/_thickness.py rename to plotly/validators/icicle/pathbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/_visible.py b/plotly/validators/icicle/pathbar/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/_visible.py rename to plotly/validators/icicle/pathbar/_visible.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/__init__.py b/plotly/validators/icicle/pathbar/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/__init__.py rename to plotly/validators/icicle/pathbar/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_color.py b/plotly/validators/icicle/pathbar/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_color.py rename to plotly/validators/icicle/pathbar/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_colorsrc.py b/plotly/validators/icicle/pathbar/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_colorsrc.py rename to plotly/validators/icicle/pathbar/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_family.py b/plotly/validators/icicle/pathbar/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_family.py rename to plotly/validators/icicle/pathbar/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_familysrc.py b/plotly/validators/icicle/pathbar/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_familysrc.py rename to plotly/validators/icicle/pathbar/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_lineposition.py b/plotly/validators/icicle/pathbar/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_lineposition.py rename to plotly/validators/icicle/pathbar/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_linepositionsrc.py b/plotly/validators/icicle/pathbar/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_linepositionsrc.py rename to plotly/validators/icicle/pathbar/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_shadow.py b/plotly/validators/icicle/pathbar/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_shadow.py rename to plotly/validators/icicle/pathbar/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_shadowsrc.py b/plotly/validators/icicle/pathbar/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_shadowsrc.py rename to plotly/validators/icicle/pathbar/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_size.py b/plotly/validators/icicle/pathbar/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_size.py rename to plotly/validators/icicle/pathbar/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_sizesrc.py b/plotly/validators/icicle/pathbar/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_sizesrc.py rename to plotly/validators/icicle/pathbar/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_style.py b/plotly/validators/icicle/pathbar/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_style.py rename to plotly/validators/icicle/pathbar/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_stylesrc.py b/plotly/validators/icicle/pathbar/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_stylesrc.py rename to plotly/validators/icicle/pathbar/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_textcase.py b/plotly/validators/icicle/pathbar/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_textcase.py rename to plotly/validators/icicle/pathbar/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_textcasesrc.py b/plotly/validators/icicle/pathbar/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_textcasesrc.py rename to plotly/validators/icicle/pathbar/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_variant.py b/plotly/validators/icicle/pathbar/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_variant.py rename to plotly/validators/icicle/pathbar/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_variantsrc.py b/plotly/validators/icicle/pathbar/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_variantsrc.py rename to plotly/validators/icicle/pathbar/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_weight.py b/plotly/validators/icicle/pathbar/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_weight.py rename to plotly/validators/icicle/pathbar/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_weightsrc.py b/plotly/validators/icicle/pathbar/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/pathbar/textfont/_weightsrc.py rename to plotly/validators/icicle/pathbar/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/root/__init__.py b/plotly/validators/icicle/root/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/root/__init__.py rename to plotly/validators/icicle/root/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/root/_color.py b/plotly/validators/icicle/root/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/root/_color.py rename to plotly/validators/icicle/root/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/stream/__init__.py b/plotly/validators/icicle/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/stream/__init__.py rename to plotly/validators/icicle/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/stream/_maxpoints.py b/plotly/validators/icicle/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/stream/_maxpoints.py rename to plotly/validators/icicle/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/icicle/stream/_token.py b/plotly/validators/icicle/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/stream/_token.py rename to plotly/validators/icicle/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/__init__.py b/plotly/validators/icicle/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/__init__.py rename to plotly/validators/icicle/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_color.py b/plotly/validators/icicle/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_color.py rename to plotly/validators/icicle/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_colorsrc.py b/plotly/validators/icicle/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_colorsrc.py rename to plotly/validators/icicle/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_family.py b/plotly/validators/icicle/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_family.py rename to plotly/validators/icicle/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_familysrc.py b/plotly/validators/icicle/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_familysrc.py rename to plotly/validators/icicle/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_lineposition.py b/plotly/validators/icicle/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_lineposition.py rename to plotly/validators/icicle/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_linepositionsrc.py b/plotly/validators/icicle/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_linepositionsrc.py rename to plotly/validators/icicle/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_shadow.py b/plotly/validators/icicle/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_shadow.py rename to plotly/validators/icicle/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_shadowsrc.py b/plotly/validators/icicle/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_shadowsrc.py rename to plotly/validators/icicle/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_size.py b/plotly/validators/icicle/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_size.py rename to plotly/validators/icicle/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_sizesrc.py b/plotly/validators/icicle/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_sizesrc.py rename to plotly/validators/icicle/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_style.py b/plotly/validators/icicle/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_style.py rename to plotly/validators/icicle/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_stylesrc.py b/plotly/validators/icicle/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_stylesrc.py rename to plotly/validators/icicle/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_textcase.py b/plotly/validators/icicle/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_textcase.py rename to plotly/validators/icicle/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_textcasesrc.py b/plotly/validators/icicle/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_textcasesrc.py rename to plotly/validators/icicle/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_variant.py b/plotly/validators/icicle/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_variant.py rename to plotly/validators/icicle/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_variantsrc.py b/plotly/validators/icicle/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_variantsrc.py rename to plotly/validators/icicle/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_weight.py b/plotly/validators/icicle/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_weight.py rename to plotly/validators/icicle/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/icicle/textfont/_weightsrc.py b/plotly/validators/icicle/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/textfont/_weightsrc.py rename to plotly/validators/icicle/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/icicle/tiling/__init__.py b/plotly/validators/icicle/tiling/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/tiling/__init__.py rename to plotly/validators/icicle/tiling/__init__.py diff --git a/packages/python/plotly/plotly/validators/icicle/tiling/_flip.py b/plotly/validators/icicle/tiling/_flip.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/tiling/_flip.py rename to plotly/validators/icicle/tiling/_flip.py diff --git a/packages/python/plotly/plotly/validators/icicle/tiling/_orientation.py b/plotly/validators/icicle/tiling/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/tiling/_orientation.py rename to plotly/validators/icicle/tiling/_orientation.py diff --git a/packages/python/plotly/plotly/validators/icicle/tiling/_pad.py b/plotly/validators/icicle/tiling/_pad.py similarity index 100% rename from packages/python/plotly/plotly/validators/icicle/tiling/_pad.py rename to plotly/validators/icicle/tiling/_pad.py diff --git a/packages/python/plotly/plotly/validators/image/__init__.py b/plotly/validators/image/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/__init__.py rename to plotly/validators/image/__init__.py diff --git a/packages/python/plotly/plotly/validators/image/_colormodel.py b/plotly/validators/image/_colormodel.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_colormodel.py rename to plotly/validators/image/_colormodel.py diff --git a/packages/python/plotly/plotly/validators/image/_customdata.py b/plotly/validators/image/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_customdata.py rename to plotly/validators/image/_customdata.py diff --git a/packages/python/plotly/plotly/validators/image/_customdatasrc.py b/plotly/validators/image/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_customdatasrc.py rename to plotly/validators/image/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/image/_dx.py b/plotly/validators/image/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_dx.py rename to plotly/validators/image/_dx.py diff --git a/packages/python/plotly/plotly/validators/image/_dy.py b/plotly/validators/image/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_dy.py rename to plotly/validators/image/_dy.py diff --git a/packages/python/plotly/plotly/validators/image/_hoverinfo.py b/plotly/validators/image/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_hoverinfo.py rename to plotly/validators/image/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/image/_hoverinfosrc.py b/plotly/validators/image/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_hoverinfosrc.py rename to plotly/validators/image/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/image/_hoverlabel.py b/plotly/validators/image/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_hoverlabel.py rename to plotly/validators/image/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/image/_hovertemplate.py b/plotly/validators/image/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_hovertemplate.py rename to plotly/validators/image/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/image/_hovertemplatesrc.py b/plotly/validators/image/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_hovertemplatesrc.py rename to plotly/validators/image/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/image/_hovertext.py b/plotly/validators/image/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_hovertext.py rename to plotly/validators/image/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/image/_hovertextsrc.py b/plotly/validators/image/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_hovertextsrc.py rename to plotly/validators/image/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/image/_ids.py b/plotly/validators/image/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_ids.py rename to plotly/validators/image/_ids.py diff --git a/packages/python/plotly/plotly/validators/image/_idssrc.py b/plotly/validators/image/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_idssrc.py rename to plotly/validators/image/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/image/_legend.py b/plotly/validators/image/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_legend.py rename to plotly/validators/image/_legend.py diff --git a/packages/python/plotly/plotly/validators/image/_legendgrouptitle.py b/plotly/validators/image/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_legendgrouptitle.py rename to plotly/validators/image/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/image/_legendrank.py b/plotly/validators/image/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_legendrank.py rename to plotly/validators/image/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/image/_legendwidth.py b/plotly/validators/image/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_legendwidth.py rename to plotly/validators/image/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/image/_meta.py b/plotly/validators/image/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_meta.py rename to plotly/validators/image/_meta.py diff --git a/packages/python/plotly/plotly/validators/image/_metasrc.py b/plotly/validators/image/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_metasrc.py rename to plotly/validators/image/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/image/_name.py b/plotly/validators/image/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_name.py rename to plotly/validators/image/_name.py diff --git a/packages/python/plotly/plotly/validators/image/_opacity.py b/plotly/validators/image/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_opacity.py rename to plotly/validators/image/_opacity.py diff --git a/packages/python/plotly/plotly/validators/image/_source.py b/plotly/validators/image/_source.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_source.py rename to plotly/validators/image/_source.py diff --git a/packages/python/plotly/plotly/validators/image/_stream.py b/plotly/validators/image/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_stream.py rename to plotly/validators/image/_stream.py diff --git a/packages/python/plotly/plotly/validators/image/_text.py b/plotly/validators/image/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_text.py rename to plotly/validators/image/_text.py diff --git a/packages/python/plotly/plotly/validators/image/_textsrc.py b/plotly/validators/image/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_textsrc.py rename to plotly/validators/image/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/image/_uid.py b/plotly/validators/image/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_uid.py rename to plotly/validators/image/_uid.py diff --git a/packages/python/plotly/plotly/validators/image/_uirevision.py b/plotly/validators/image/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_uirevision.py rename to plotly/validators/image/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/image/_visible.py b/plotly/validators/image/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_visible.py rename to plotly/validators/image/_visible.py diff --git a/packages/python/plotly/plotly/validators/image/_x0.py b/plotly/validators/image/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_x0.py rename to plotly/validators/image/_x0.py diff --git a/packages/python/plotly/plotly/validators/image/_xaxis.py b/plotly/validators/image/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_xaxis.py rename to plotly/validators/image/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/image/_y0.py b/plotly/validators/image/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_y0.py rename to plotly/validators/image/_y0.py diff --git a/packages/python/plotly/plotly/validators/image/_yaxis.py b/plotly/validators/image/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_yaxis.py rename to plotly/validators/image/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/image/_z.py b/plotly/validators/image/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_z.py rename to plotly/validators/image/_z.py diff --git a/packages/python/plotly/plotly/validators/image/_zmax.py b/plotly/validators/image/_zmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_zmax.py rename to plotly/validators/image/_zmax.py diff --git a/packages/python/plotly/plotly/validators/image/_zmin.py b/plotly/validators/image/_zmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_zmin.py rename to plotly/validators/image/_zmin.py diff --git a/packages/python/plotly/plotly/validators/image/_zorder.py b/plotly/validators/image/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_zorder.py rename to plotly/validators/image/_zorder.py diff --git a/packages/python/plotly/plotly/validators/image/_zsmooth.py b/plotly/validators/image/_zsmooth.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_zsmooth.py rename to plotly/validators/image/_zsmooth.py diff --git a/packages/python/plotly/plotly/validators/image/_zsrc.py b/plotly/validators/image/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/_zsrc.py rename to plotly/validators/image/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/__init__.py b/plotly/validators/image/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/__init__.py rename to plotly/validators/image/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_align.py b/plotly/validators/image/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_align.py rename to plotly/validators/image/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_alignsrc.py b/plotly/validators/image/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_alignsrc.py rename to plotly/validators/image/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_bgcolor.py b/plotly/validators/image/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_bgcolor.py rename to plotly/validators/image/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_bgcolorsrc.py b/plotly/validators/image/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_bgcolorsrc.py rename to plotly/validators/image/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_bordercolor.py b/plotly/validators/image/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_bordercolor.py rename to plotly/validators/image/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_bordercolorsrc.py b/plotly/validators/image/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_bordercolorsrc.py rename to plotly/validators/image/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_font.py b/plotly/validators/image/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_font.py rename to plotly/validators/image/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_namelength.py b/plotly/validators/image/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_namelength.py rename to plotly/validators/image/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/_namelengthsrc.py b/plotly/validators/image/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/_namelengthsrc.py rename to plotly/validators/image/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/__init__.py b/plotly/validators/image/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/__init__.py rename to plotly/validators/image/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_color.py b/plotly/validators/image/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_color.py rename to plotly/validators/image/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_colorsrc.py b/plotly/validators/image/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_colorsrc.py rename to plotly/validators/image/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_family.py b/plotly/validators/image/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_family.py rename to plotly/validators/image/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_familysrc.py b/plotly/validators/image/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_familysrc.py rename to plotly/validators/image/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_lineposition.py b/plotly/validators/image/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_lineposition.py rename to plotly/validators/image/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_linepositionsrc.py b/plotly/validators/image/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/image/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_shadow.py b/plotly/validators/image/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_shadow.py rename to plotly/validators/image/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_shadowsrc.py b/plotly/validators/image/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_shadowsrc.py rename to plotly/validators/image/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_size.py b/plotly/validators/image/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_size.py rename to plotly/validators/image/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_sizesrc.py b/plotly/validators/image/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_sizesrc.py rename to plotly/validators/image/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_style.py b/plotly/validators/image/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_style.py rename to plotly/validators/image/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_stylesrc.py b/plotly/validators/image/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_stylesrc.py rename to plotly/validators/image/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_textcase.py b/plotly/validators/image/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_textcase.py rename to plotly/validators/image/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_textcasesrc.py b/plotly/validators/image/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_textcasesrc.py rename to plotly/validators/image/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_variant.py b/plotly/validators/image/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_variant.py rename to plotly/validators/image/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_variantsrc.py b/plotly/validators/image/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_variantsrc.py rename to plotly/validators/image/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_weight.py b/plotly/validators/image/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_weight.py rename to plotly/validators/image/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/image/hoverlabel/font/_weightsrc.py b/plotly/validators/image/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/hoverlabel/font/_weightsrc.py rename to plotly/validators/image/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/__init__.py b/plotly/validators/image/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/__init__.py rename to plotly/validators/image/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/_font.py b/plotly/validators/image/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/_font.py rename to plotly/validators/image/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/_text.py b/plotly/validators/image/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/_text.py rename to plotly/validators/image/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/__init__.py b/plotly/validators/image/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/__init__.py rename to plotly/validators/image/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_color.py b/plotly/validators/image/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_color.py rename to plotly/validators/image/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_family.py b/plotly/validators/image/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_family.py rename to plotly/validators/image/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_lineposition.py b/plotly/validators/image/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_lineposition.py rename to plotly/validators/image/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_shadow.py b/plotly/validators/image/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_shadow.py rename to plotly/validators/image/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_size.py b/plotly/validators/image/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_size.py rename to plotly/validators/image/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_style.py b/plotly/validators/image/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_style.py rename to plotly/validators/image/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_textcase.py b/plotly/validators/image/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_textcase.py rename to plotly/validators/image/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_variant.py b/plotly/validators/image/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_variant.py rename to plotly/validators/image/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_weight.py b/plotly/validators/image/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/legendgrouptitle/font/_weight.py rename to plotly/validators/image/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/image/stream/__init__.py b/plotly/validators/image/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/stream/__init__.py rename to plotly/validators/image/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/image/stream/_maxpoints.py b/plotly/validators/image/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/stream/_maxpoints.py rename to plotly/validators/image/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/image/stream/_token.py b/plotly/validators/image/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/image/stream/_token.py rename to plotly/validators/image/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/indicator/__init__.py b/plotly/validators/indicator/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/__init__.py rename to plotly/validators/indicator/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/_align.py b/plotly/validators/indicator/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_align.py rename to plotly/validators/indicator/_align.py diff --git a/packages/python/plotly/plotly/validators/indicator/_customdata.py b/plotly/validators/indicator/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_customdata.py rename to plotly/validators/indicator/_customdata.py diff --git a/packages/python/plotly/plotly/validators/indicator/_customdatasrc.py b/plotly/validators/indicator/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_customdatasrc.py rename to plotly/validators/indicator/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/indicator/_delta.py b/plotly/validators/indicator/_delta.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_delta.py rename to plotly/validators/indicator/_delta.py diff --git a/packages/python/plotly/plotly/validators/indicator/_domain.py b/plotly/validators/indicator/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_domain.py rename to plotly/validators/indicator/_domain.py diff --git a/packages/python/plotly/plotly/validators/indicator/_gauge.py b/plotly/validators/indicator/_gauge.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_gauge.py rename to plotly/validators/indicator/_gauge.py diff --git a/packages/python/plotly/plotly/validators/indicator/_ids.py b/plotly/validators/indicator/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_ids.py rename to plotly/validators/indicator/_ids.py diff --git a/packages/python/plotly/plotly/validators/indicator/_idssrc.py b/plotly/validators/indicator/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_idssrc.py rename to plotly/validators/indicator/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/indicator/_legend.py b/plotly/validators/indicator/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_legend.py rename to plotly/validators/indicator/_legend.py diff --git a/packages/python/plotly/plotly/validators/indicator/_legendgrouptitle.py b/plotly/validators/indicator/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_legendgrouptitle.py rename to plotly/validators/indicator/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/indicator/_legendrank.py b/plotly/validators/indicator/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_legendrank.py rename to plotly/validators/indicator/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/indicator/_legendwidth.py b/plotly/validators/indicator/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_legendwidth.py rename to plotly/validators/indicator/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/indicator/_meta.py b/plotly/validators/indicator/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_meta.py rename to plotly/validators/indicator/_meta.py diff --git a/packages/python/plotly/plotly/validators/indicator/_metasrc.py b/plotly/validators/indicator/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_metasrc.py rename to plotly/validators/indicator/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/indicator/_mode.py b/plotly/validators/indicator/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_mode.py rename to plotly/validators/indicator/_mode.py diff --git a/packages/python/plotly/plotly/validators/indicator/_name.py b/plotly/validators/indicator/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_name.py rename to plotly/validators/indicator/_name.py diff --git a/packages/python/plotly/plotly/validators/indicator/_number.py b/plotly/validators/indicator/_number.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_number.py rename to plotly/validators/indicator/_number.py diff --git a/packages/python/plotly/plotly/validators/indicator/_stream.py b/plotly/validators/indicator/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_stream.py rename to plotly/validators/indicator/_stream.py diff --git a/packages/python/plotly/plotly/validators/indicator/_title.py b/plotly/validators/indicator/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_title.py rename to plotly/validators/indicator/_title.py diff --git a/packages/python/plotly/plotly/validators/indicator/_uid.py b/plotly/validators/indicator/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_uid.py rename to plotly/validators/indicator/_uid.py diff --git a/packages/python/plotly/plotly/validators/indicator/_uirevision.py b/plotly/validators/indicator/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_uirevision.py rename to plotly/validators/indicator/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/indicator/_value.py b/plotly/validators/indicator/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_value.py rename to plotly/validators/indicator/_value.py diff --git a/packages/python/plotly/plotly/validators/indicator/_visible.py b/plotly/validators/indicator/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/_visible.py rename to plotly/validators/indicator/_visible.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/__init__.py b/plotly/validators/indicator/delta/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/__init__.py rename to plotly/validators/indicator/delta/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_decreasing.py b/plotly/validators/indicator/delta/_decreasing.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_decreasing.py rename to plotly/validators/indicator/delta/_decreasing.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_font.py b/plotly/validators/indicator/delta/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_font.py rename to plotly/validators/indicator/delta/_font.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_increasing.py b/plotly/validators/indicator/delta/_increasing.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_increasing.py rename to plotly/validators/indicator/delta/_increasing.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_position.py b/plotly/validators/indicator/delta/_position.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_position.py rename to plotly/validators/indicator/delta/_position.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_prefix.py b/plotly/validators/indicator/delta/_prefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_prefix.py rename to plotly/validators/indicator/delta/_prefix.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_reference.py b/plotly/validators/indicator/delta/_reference.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_reference.py rename to plotly/validators/indicator/delta/_reference.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_relative.py b/plotly/validators/indicator/delta/_relative.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_relative.py rename to plotly/validators/indicator/delta/_relative.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_suffix.py b/plotly/validators/indicator/delta/_suffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_suffix.py rename to plotly/validators/indicator/delta/_suffix.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/_valueformat.py b/plotly/validators/indicator/delta/_valueformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/_valueformat.py rename to plotly/validators/indicator/delta/_valueformat.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/decreasing/__init__.py b/plotly/validators/indicator/delta/decreasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/decreasing/__init__.py rename to plotly/validators/indicator/delta/decreasing/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/decreasing/_color.py b/plotly/validators/indicator/delta/decreasing/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/decreasing/_color.py rename to plotly/validators/indicator/delta/decreasing/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/decreasing/_symbol.py b/plotly/validators/indicator/delta/decreasing/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/decreasing/_symbol.py rename to plotly/validators/indicator/delta/decreasing/_symbol.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/__init__.py b/plotly/validators/indicator/delta/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/__init__.py rename to plotly/validators/indicator/delta/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_color.py b/plotly/validators/indicator/delta/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_color.py rename to plotly/validators/indicator/delta/font/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_family.py b/plotly/validators/indicator/delta/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_family.py rename to plotly/validators/indicator/delta/font/_family.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_lineposition.py b/plotly/validators/indicator/delta/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_lineposition.py rename to plotly/validators/indicator/delta/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_shadow.py b/plotly/validators/indicator/delta/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_shadow.py rename to plotly/validators/indicator/delta/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_size.py b/plotly/validators/indicator/delta/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_size.py rename to plotly/validators/indicator/delta/font/_size.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_style.py b/plotly/validators/indicator/delta/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_style.py rename to plotly/validators/indicator/delta/font/_style.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_textcase.py b/plotly/validators/indicator/delta/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_textcase.py rename to plotly/validators/indicator/delta/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_variant.py b/plotly/validators/indicator/delta/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_variant.py rename to plotly/validators/indicator/delta/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/font/_weight.py b/plotly/validators/indicator/delta/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/font/_weight.py rename to plotly/validators/indicator/delta/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/increasing/__init__.py b/plotly/validators/indicator/delta/increasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/increasing/__init__.py rename to plotly/validators/indicator/delta/increasing/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/increasing/_color.py b/plotly/validators/indicator/delta/increasing/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/increasing/_color.py rename to plotly/validators/indicator/delta/increasing/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/delta/increasing/_symbol.py b/plotly/validators/indicator/delta/increasing/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/delta/increasing/_symbol.py rename to plotly/validators/indicator/delta/increasing/_symbol.py diff --git a/packages/python/plotly/plotly/validators/indicator/domain/__init__.py b/plotly/validators/indicator/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/domain/__init__.py rename to plotly/validators/indicator/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/domain/_column.py b/plotly/validators/indicator/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/domain/_column.py rename to plotly/validators/indicator/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/indicator/domain/_row.py b/plotly/validators/indicator/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/domain/_row.py rename to plotly/validators/indicator/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/indicator/domain/_x.py b/plotly/validators/indicator/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/domain/_x.py rename to plotly/validators/indicator/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/indicator/domain/_y.py b/plotly/validators/indicator/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/domain/_y.py rename to plotly/validators/indicator/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/__init__.py b/plotly/validators/indicator/gauge/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/__init__.py rename to plotly/validators/indicator/gauge/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_axis.py b/plotly/validators/indicator/gauge/_axis.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_axis.py rename to plotly/validators/indicator/gauge/_axis.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_bar.py b/plotly/validators/indicator/gauge/_bar.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_bar.py rename to plotly/validators/indicator/gauge/_bar.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_bgcolor.py b/plotly/validators/indicator/gauge/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_bgcolor.py rename to plotly/validators/indicator/gauge/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_bordercolor.py b/plotly/validators/indicator/gauge/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_bordercolor.py rename to plotly/validators/indicator/gauge/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_borderwidth.py b/plotly/validators/indicator/gauge/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_borderwidth.py rename to plotly/validators/indicator/gauge/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_shape.py b/plotly/validators/indicator/gauge/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_shape.py rename to plotly/validators/indicator/gauge/_shape.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_stepdefaults.py b/plotly/validators/indicator/gauge/_stepdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_stepdefaults.py rename to plotly/validators/indicator/gauge/_stepdefaults.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_steps.py b/plotly/validators/indicator/gauge/_steps.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_steps.py rename to plotly/validators/indicator/gauge/_steps.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/_threshold.py b/plotly/validators/indicator/gauge/_threshold.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/_threshold.py rename to plotly/validators/indicator/gauge/_threshold.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/__init__.py b/plotly/validators/indicator/gauge/axis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/__init__.py rename to plotly/validators/indicator/gauge/axis/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_dtick.py b/plotly/validators/indicator/gauge/axis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_dtick.py rename to plotly/validators/indicator/gauge/axis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_exponentformat.py b/plotly/validators/indicator/gauge/axis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_exponentformat.py rename to plotly/validators/indicator/gauge/axis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_labelalias.py b/plotly/validators/indicator/gauge/axis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_labelalias.py rename to plotly/validators/indicator/gauge/axis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_minexponent.py b/plotly/validators/indicator/gauge/axis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_minexponent.py rename to plotly/validators/indicator/gauge/axis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_nticks.py b/plotly/validators/indicator/gauge/axis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_nticks.py rename to plotly/validators/indicator/gauge/axis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_range.py b/plotly/validators/indicator/gauge/axis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_range.py rename to plotly/validators/indicator/gauge/axis/_range.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_separatethousands.py b/plotly/validators/indicator/gauge/axis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_separatethousands.py rename to plotly/validators/indicator/gauge/axis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_showexponent.py b/plotly/validators/indicator/gauge/axis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_showexponent.py rename to plotly/validators/indicator/gauge/axis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_showticklabels.py b/plotly/validators/indicator/gauge/axis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_showticklabels.py rename to plotly/validators/indicator/gauge/axis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_showtickprefix.py b/plotly/validators/indicator/gauge/axis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_showtickprefix.py rename to plotly/validators/indicator/gauge/axis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_showticksuffix.py b/plotly/validators/indicator/gauge/axis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_showticksuffix.py rename to plotly/validators/indicator/gauge/axis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tick0.py b/plotly/validators/indicator/gauge/axis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tick0.py rename to plotly/validators/indicator/gauge/axis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickangle.py b/plotly/validators/indicator/gauge/axis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickangle.py rename to plotly/validators/indicator/gauge/axis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickcolor.py b/plotly/validators/indicator/gauge/axis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickcolor.py rename to plotly/validators/indicator/gauge/axis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickfont.py b/plotly/validators/indicator/gauge/axis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickfont.py rename to plotly/validators/indicator/gauge/axis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickformat.py b/plotly/validators/indicator/gauge/axis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickformat.py rename to plotly/validators/indicator/gauge/axis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickformatstopdefaults.py b/plotly/validators/indicator/gauge/axis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickformatstopdefaults.py rename to plotly/validators/indicator/gauge/axis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickformatstops.py b/plotly/validators/indicator/gauge/axis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickformatstops.py rename to plotly/validators/indicator/gauge/axis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticklabelstep.py b/plotly/validators/indicator/gauge/axis/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticklabelstep.py rename to plotly/validators/indicator/gauge/axis/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticklen.py b/plotly/validators/indicator/gauge/axis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticklen.py rename to plotly/validators/indicator/gauge/axis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickmode.py b/plotly/validators/indicator/gauge/axis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickmode.py rename to plotly/validators/indicator/gauge/axis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickprefix.py b/plotly/validators/indicator/gauge/axis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickprefix.py rename to plotly/validators/indicator/gauge/axis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticks.py b/plotly/validators/indicator/gauge/axis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticks.py rename to plotly/validators/indicator/gauge/axis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticksuffix.py b/plotly/validators/indicator/gauge/axis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticksuffix.py rename to plotly/validators/indicator/gauge/axis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticktext.py b/plotly/validators/indicator/gauge/axis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticktext.py rename to plotly/validators/indicator/gauge/axis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticktextsrc.py b/plotly/validators/indicator/gauge/axis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_ticktextsrc.py rename to plotly/validators/indicator/gauge/axis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickvals.py b/plotly/validators/indicator/gauge/axis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickvals.py rename to plotly/validators/indicator/gauge/axis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickvalssrc.py b/plotly/validators/indicator/gauge/axis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickvalssrc.py rename to plotly/validators/indicator/gauge/axis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickwidth.py b/plotly/validators/indicator/gauge/axis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_tickwidth.py rename to plotly/validators/indicator/gauge/axis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/_visible.py b/plotly/validators/indicator/gauge/axis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/_visible.py rename to plotly/validators/indicator/gauge/axis/_visible.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/__init__.py b/plotly/validators/indicator/gauge/axis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/__init__.py rename to plotly/validators/indicator/gauge/axis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_color.py b/plotly/validators/indicator/gauge/axis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_color.py rename to plotly/validators/indicator/gauge/axis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_family.py b/plotly/validators/indicator/gauge/axis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_family.py rename to plotly/validators/indicator/gauge/axis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_lineposition.py b/plotly/validators/indicator/gauge/axis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_lineposition.py rename to plotly/validators/indicator/gauge/axis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_shadow.py b/plotly/validators/indicator/gauge/axis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_shadow.py rename to plotly/validators/indicator/gauge/axis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_size.py b/plotly/validators/indicator/gauge/axis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_size.py rename to plotly/validators/indicator/gauge/axis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_style.py b/plotly/validators/indicator/gauge/axis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_style.py rename to plotly/validators/indicator/gauge/axis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_textcase.py b/plotly/validators/indicator/gauge/axis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_textcase.py rename to plotly/validators/indicator/gauge/axis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_variant.py b/plotly/validators/indicator/gauge/axis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_variant.py rename to plotly/validators/indicator/gauge/axis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_weight.py b/plotly/validators/indicator/gauge/axis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickfont/_weight.py rename to plotly/validators/indicator/gauge/axis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/__init__.py b/plotly/validators/indicator/gauge/axis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/__init__.py rename to plotly/validators/indicator/gauge/axis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_dtickrange.py b/plotly/validators/indicator/gauge/axis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_dtickrange.py rename to plotly/validators/indicator/gauge/axis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_enabled.py b/plotly/validators/indicator/gauge/axis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_enabled.py rename to plotly/validators/indicator/gauge/axis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_name.py b/plotly/validators/indicator/gauge/axis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_name.py rename to plotly/validators/indicator/gauge/axis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_templateitemname.py b/plotly/validators/indicator/gauge/axis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_templateitemname.py rename to plotly/validators/indicator/gauge/axis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_value.py b/plotly/validators/indicator/gauge/axis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/axis/tickformatstop/_value.py rename to plotly/validators/indicator/gauge/axis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/bar/__init__.py b/plotly/validators/indicator/gauge/bar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/bar/__init__.py rename to plotly/validators/indicator/gauge/bar/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/bar/_color.py b/plotly/validators/indicator/gauge/bar/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/bar/_color.py rename to plotly/validators/indicator/gauge/bar/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/bar/_line.py b/plotly/validators/indicator/gauge/bar/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/bar/_line.py rename to plotly/validators/indicator/gauge/bar/_line.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/bar/_thickness.py b/plotly/validators/indicator/gauge/bar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/bar/_thickness.py rename to plotly/validators/indicator/gauge/bar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/bar/line/__init__.py b/plotly/validators/indicator/gauge/bar/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/bar/line/__init__.py rename to plotly/validators/indicator/gauge/bar/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/bar/line/_color.py b/plotly/validators/indicator/gauge/bar/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/bar/line/_color.py rename to plotly/validators/indicator/gauge/bar/line/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/bar/line/_width.py b/plotly/validators/indicator/gauge/bar/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/bar/line/_width.py rename to plotly/validators/indicator/gauge/bar/line/_width.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/__init__.py b/plotly/validators/indicator/gauge/step/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/__init__.py rename to plotly/validators/indicator/gauge/step/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/_color.py b/plotly/validators/indicator/gauge/step/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/_color.py rename to plotly/validators/indicator/gauge/step/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/_line.py b/plotly/validators/indicator/gauge/step/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/_line.py rename to plotly/validators/indicator/gauge/step/_line.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/_name.py b/plotly/validators/indicator/gauge/step/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/_name.py rename to plotly/validators/indicator/gauge/step/_name.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/_range.py b/plotly/validators/indicator/gauge/step/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/_range.py rename to plotly/validators/indicator/gauge/step/_range.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/_templateitemname.py b/plotly/validators/indicator/gauge/step/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/_templateitemname.py rename to plotly/validators/indicator/gauge/step/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/_thickness.py b/plotly/validators/indicator/gauge/step/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/_thickness.py rename to plotly/validators/indicator/gauge/step/_thickness.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/line/__init__.py b/plotly/validators/indicator/gauge/step/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/line/__init__.py rename to plotly/validators/indicator/gauge/step/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/line/_color.py b/plotly/validators/indicator/gauge/step/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/line/_color.py rename to plotly/validators/indicator/gauge/step/line/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/step/line/_width.py b/plotly/validators/indicator/gauge/step/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/step/line/_width.py rename to plotly/validators/indicator/gauge/step/line/_width.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/threshold/__init__.py b/plotly/validators/indicator/gauge/threshold/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/threshold/__init__.py rename to plotly/validators/indicator/gauge/threshold/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/threshold/_line.py b/plotly/validators/indicator/gauge/threshold/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/threshold/_line.py rename to plotly/validators/indicator/gauge/threshold/_line.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/threshold/_thickness.py b/plotly/validators/indicator/gauge/threshold/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/threshold/_thickness.py rename to plotly/validators/indicator/gauge/threshold/_thickness.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/threshold/_value.py b/plotly/validators/indicator/gauge/threshold/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/threshold/_value.py rename to plotly/validators/indicator/gauge/threshold/_value.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/threshold/line/__init__.py b/plotly/validators/indicator/gauge/threshold/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/threshold/line/__init__.py rename to plotly/validators/indicator/gauge/threshold/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/threshold/line/_color.py b/plotly/validators/indicator/gauge/threshold/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/threshold/line/_color.py rename to plotly/validators/indicator/gauge/threshold/line/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/gauge/threshold/line/_width.py b/plotly/validators/indicator/gauge/threshold/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/gauge/threshold/line/_width.py rename to plotly/validators/indicator/gauge/threshold/line/_width.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/__init__.py b/plotly/validators/indicator/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/__init__.py rename to plotly/validators/indicator/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/_font.py b/plotly/validators/indicator/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/_font.py rename to plotly/validators/indicator/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/_text.py b/plotly/validators/indicator/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/_text.py rename to plotly/validators/indicator/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/__init__.py b/plotly/validators/indicator/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/__init__.py rename to plotly/validators/indicator/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_color.py b/plotly/validators/indicator/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_color.py rename to plotly/validators/indicator/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_family.py b/plotly/validators/indicator/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_family.py rename to plotly/validators/indicator/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_lineposition.py b/plotly/validators/indicator/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_lineposition.py rename to plotly/validators/indicator/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_shadow.py b/plotly/validators/indicator/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_shadow.py rename to plotly/validators/indicator/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_size.py b/plotly/validators/indicator/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_size.py rename to plotly/validators/indicator/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_style.py b/plotly/validators/indicator/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_style.py rename to plotly/validators/indicator/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_textcase.py b/plotly/validators/indicator/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_textcase.py rename to plotly/validators/indicator/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_variant.py b/plotly/validators/indicator/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_variant.py rename to plotly/validators/indicator/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_weight.py b/plotly/validators/indicator/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/legendgrouptitle/font/_weight.py rename to plotly/validators/indicator/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/__init__.py b/plotly/validators/indicator/number/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/__init__.py rename to plotly/validators/indicator/number/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/_font.py b/plotly/validators/indicator/number/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/_font.py rename to plotly/validators/indicator/number/_font.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/_prefix.py b/plotly/validators/indicator/number/_prefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/_prefix.py rename to plotly/validators/indicator/number/_prefix.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/_suffix.py b/plotly/validators/indicator/number/_suffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/_suffix.py rename to plotly/validators/indicator/number/_suffix.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/_valueformat.py b/plotly/validators/indicator/number/_valueformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/_valueformat.py rename to plotly/validators/indicator/number/_valueformat.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/__init__.py b/plotly/validators/indicator/number/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/__init__.py rename to plotly/validators/indicator/number/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_color.py b/plotly/validators/indicator/number/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_color.py rename to plotly/validators/indicator/number/font/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_family.py b/plotly/validators/indicator/number/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_family.py rename to plotly/validators/indicator/number/font/_family.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_lineposition.py b/plotly/validators/indicator/number/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_lineposition.py rename to plotly/validators/indicator/number/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_shadow.py b/plotly/validators/indicator/number/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_shadow.py rename to plotly/validators/indicator/number/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_size.py b/plotly/validators/indicator/number/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_size.py rename to plotly/validators/indicator/number/font/_size.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_style.py b/plotly/validators/indicator/number/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_style.py rename to plotly/validators/indicator/number/font/_style.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_textcase.py b/plotly/validators/indicator/number/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_textcase.py rename to plotly/validators/indicator/number/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_variant.py b/plotly/validators/indicator/number/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_variant.py rename to plotly/validators/indicator/number/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/indicator/number/font/_weight.py b/plotly/validators/indicator/number/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/number/font/_weight.py rename to plotly/validators/indicator/number/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/indicator/stream/__init__.py b/plotly/validators/indicator/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/stream/__init__.py rename to plotly/validators/indicator/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/stream/_maxpoints.py b/plotly/validators/indicator/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/stream/_maxpoints.py rename to plotly/validators/indicator/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/indicator/stream/_token.py b/plotly/validators/indicator/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/stream/_token.py rename to plotly/validators/indicator/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/__init__.py b/plotly/validators/indicator/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/__init__.py rename to plotly/validators/indicator/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/_align.py b/plotly/validators/indicator/title/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/_align.py rename to plotly/validators/indicator/title/_align.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/_font.py b/plotly/validators/indicator/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/_font.py rename to plotly/validators/indicator/title/_font.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/_text.py b/plotly/validators/indicator/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/_text.py rename to plotly/validators/indicator/title/_text.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/__init__.py b/plotly/validators/indicator/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/__init__.py rename to plotly/validators/indicator/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_color.py b/plotly/validators/indicator/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_color.py rename to plotly/validators/indicator/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_family.py b/plotly/validators/indicator/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_family.py rename to plotly/validators/indicator/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_lineposition.py b/plotly/validators/indicator/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_lineposition.py rename to plotly/validators/indicator/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_shadow.py b/plotly/validators/indicator/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_shadow.py rename to plotly/validators/indicator/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_size.py b/plotly/validators/indicator/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_size.py rename to plotly/validators/indicator/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_style.py b/plotly/validators/indicator/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_style.py rename to plotly/validators/indicator/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_textcase.py b/plotly/validators/indicator/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_textcase.py rename to plotly/validators/indicator/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_variant.py b/plotly/validators/indicator/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_variant.py rename to plotly/validators/indicator/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/indicator/title/font/_weight.py b/plotly/validators/indicator/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/indicator/title/font/_weight.py rename to plotly/validators/indicator/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/isosurface/__init__.py b/plotly/validators/isosurface/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/__init__.py rename to plotly/validators/isosurface/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_autocolorscale.py b/plotly/validators/isosurface/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_autocolorscale.py rename to plotly/validators/isosurface/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_caps.py b/plotly/validators/isosurface/_caps.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_caps.py rename to plotly/validators/isosurface/_caps.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_cauto.py b/plotly/validators/isosurface/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_cauto.py rename to plotly/validators/isosurface/_cauto.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_cmax.py b/plotly/validators/isosurface/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_cmax.py rename to plotly/validators/isosurface/_cmax.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_cmid.py b/plotly/validators/isosurface/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_cmid.py rename to plotly/validators/isosurface/_cmid.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_cmin.py b/plotly/validators/isosurface/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_cmin.py rename to plotly/validators/isosurface/_cmin.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_coloraxis.py b/plotly/validators/isosurface/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_coloraxis.py rename to plotly/validators/isosurface/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_colorbar.py b/plotly/validators/isosurface/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_colorbar.py rename to plotly/validators/isosurface/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_colorscale.py b/plotly/validators/isosurface/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_colorscale.py rename to plotly/validators/isosurface/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_contour.py b/plotly/validators/isosurface/_contour.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_contour.py rename to plotly/validators/isosurface/_contour.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_customdata.py b/plotly/validators/isosurface/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_customdata.py rename to plotly/validators/isosurface/_customdata.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_customdatasrc.py b/plotly/validators/isosurface/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_customdatasrc.py rename to plotly/validators/isosurface/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_flatshading.py b/plotly/validators/isosurface/_flatshading.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_flatshading.py rename to plotly/validators/isosurface/_flatshading.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_hoverinfo.py b/plotly/validators/isosurface/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_hoverinfo.py rename to plotly/validators/isosurface/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_hoverinfosrc.py b/plotly/validators/isosurface/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_hoverinfosrc.py rename to plotly/validators/isosurface/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_hoverlabel.py b/plotly/validators/isosurface/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_hoverlabel.py rename to plotly/validators/isosurface/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_hovertemplate.py b/plotly/validators/isosurface/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_hovertemplate.py rename to plotly/validators/isosurface/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_hovertemplatesrc.py b/plotly/validators/isosurface/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_hovertemplatesrc.py rename to plotly/validators/isosurface/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_hovertext.py b/plotly/validators/isosurface/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_hovertext.py rename to plotly/validators/isosurface/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_hovertextsrc.py b/plotly/validators/isosurface/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_hovertextsrc.py rename to plotly/validators/isosurface/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_ids.py b/plotly/validators/isosurface/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_ids.py rename to plotly/validators/isosurface/_ids.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_idssrc.py b/plotly/validators/isosurface/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_idssrc.py rename to plotly/validators/isosurface/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_isomax.py b/plotly/validators/isosurface/_isomax.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_isomax.py rename to plotly/validators/isosurface/_isomax.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_isomin.py b/plotly/validators/isosurface/_isomin.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_isomin.py rename to plotly/validators/isosurface/_isomin.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_legend.py b/plotly/validators/isosurface/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_legend.py rename to plotly/validators/isosurface/_legend.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_legendgroup.py b/plotly/validators/isosurface/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_legendgroup.py rename to plotly/validators/isosurface/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_legendgrouptitle.py b/plotly/validators/isosurface/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_legendgrouptitle.py rename to plotly/validators/isosurface/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_legendrank.py b/plotly/validators/isosurface/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_legendrank.py rename to plotly/validators/isosurface/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_legendwidth.py b/plotly/validators/isosurface/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_legendwidth.py rename to plotly/validators/isosurface/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_lighting.py b/plotly/validators/isosurface/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_lighting.py rename to plotly/validators/isosurface/_lighting.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_lightposition.py b/plotly/validators/isosurface/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_lightposition.py rename to plotly/validators/isosurface/_lightposition.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_meta.py b/plotly/validators/isosurface/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_meta.py rename to plotly/validators/isosurface/_meta.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_metasrc.py b/plotly/validators/isosurface/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_metasrc.py rename to plotly/validators/isosurface/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_name.py b/plotly/validators/isosurface/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_name.py rename to plotly/validators/isosurface/_name.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_opacity.py b/plotly/validators/isosurface/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_opacity.py rename to plotly/validators/isosurface/_opacity.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_reversescale.py b/plotly/validators/isosurface/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_reversescale.py rename to plotly/validators/isosurface/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_scene.py b/plotly/validators/isosurface/_scene.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_scene.py rename to plotly/validators/isosurface/_scene.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_showlegend.py b/plotly/validators/isosurface/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_showlegend.py rename to plotly/validators/isosurface/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_showscale.py b/plotly/validators/isosurface/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_showscale.py rename to plotly/validators/isosurface/_showscale.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_slices.py b/plotly/validators/isosurface/_slices.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_slices.py rename to plotly/validators/isosurface/_slices.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_spaceframe.py b/plotly/validators/isosurface/_spaceframe.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_spaceframe.py rename to plotly/validators/isosurface/_spaceframe.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_stream.py b/plotly/validators/isosurface/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_stream.py rename to plotly/validators/isosurface/_stream.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_surface.py b/plotly/validators/isosurface/_surface.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_surface.py rename to plotly/validators/isosurface/_surface.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_text.py b/plotly/validators/isosurface/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_text.py rename to plotly/validators/isosurface/_text.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_textsrc.py b/plotly/validators/isosurface/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_textsrc.py rename to plotly/validators/isosurface/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_uid.py b/plotly/validators/isosurface/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_uid.py rename to plotly/validators/isosurface/_uid.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_uirevision.py b/plotly/validators/isosurface/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_uirevision.py rename to plotly/validators/isosurface/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_value.py b/plotly/validators/isosurface/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_value.py rename to plotly/validators/isosurface/_value.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_valuehoverformat.py b/plotly/validators/isosurface/_valuehoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_valuehoverformat.py rename to plotly/validators/isosurface/_valuehoverformat.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_valuesrc.py b/plotly/validators/isosurface/_valuesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_valuesrc.py rename to plotly/validators/isosurface/_valuesrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_visible.py b/plotly/validators/isosurface/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_visible.py rename to plotly/validators/isosurface/_visible.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_x.py b/plotly/validators/isosurface/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_x.py rename to plotly/validators/isosurface/_x.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_xhoverformat.py b/plotly/validators/isosurface/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_xhoverformat.py rename to plotly/validators/isosurface/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_xsrc.py b/plotly/validators/isosurface/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_xsrc.py rename to plotly/validators/isosurface/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_y.py b/plotly/validators/isosurface/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_y.py rename to plotly/validators/isosurface/_y.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_yhoverformat.py b/plotly/validators/isosurface/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_yhoverformat.py rename to plotly/validators/isosurface/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_ysrc.py b/plotly/validators/isosurface/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_ysrc.py rename to plotly/validators/isosurface/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_z.py b/plotly/validators/isosurface/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_z.py rename to plotly/validators/isosurface/_z.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_zhoverformat.py b/plotly/validators/isosurface/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_zhoverformat.py rename to plotly/validators/isosurface/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/isosurface/_zsrc.py b/plotly/validators/isosurface/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/_zsrc.py rename to plotly/validators/isosurface/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/__init__.py b/plotly/validators/isosurface/caps/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/__init__.py rename to plotly/validators/isosurface/caps/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/_x.py b/plotly/validators/isosurface/caps/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/_x.py rename to plotly/validators/isosurface/caps/_x.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/_y.py b/plotly/validators/isosurface/caps/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/_y.py rename to plotly/validators/isosurface/caps/_y.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/_z.py b/plotly/validators/isosurface/caps/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/_z.py rename to plotly/validators/isosurface/caps/_z.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/x/__init__.py b/plotly/validators/isosurface/caps/x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/x/__init__.py rename to plotly/validators/isosurface/caps/x/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/x/_fill.py b/plotly/validators/isosurface/caps/x/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/x/_fill.py rename to plotly/validators/isosurface/caps/x/_fill.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/x/_show.py b/plotly/validators/isosurface/caps/x/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/x/_show.py rename to plotly/validators/isosurface/caps/x/_show.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/y/__init__.py b/plotly/validators/isosurface/caps/y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/y/__init__.py rename to plotly/validators/isosurface/caps/y/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/y/_fill.py b/plotly/validators/isosurface/caps/y/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/y/_fill.py rename to plotly/validators/isosurface/caps/y/_fill.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/y/_show.py b/plotly/validators/isosurface/caps/y/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/y/_show.py rename to plotly/validators/isosurface/caps/y/_show.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/z/__init__.py b/plotly/validators/isosurface/caps/z/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/z/__init__.py rename to plotly/validators/isosurface/caps/z/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/z/_fill.py b/plotly/validators/isosurface/caps/z/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/z/_fill.py rename to plotly/validators/isosurface/caps/z/_fill.py diff --git a/packages/python/plotly/plotly/validators/isosurface/caps/z/_show.py b/plotly/validators/isosurface/caps/z/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/caps/z/_show.py rename to plotly/validators/isosurface/caps/z/_show.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/__init__.py b/plotly/validators/isosurface/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/__init__.py rename to plotly/validators/isosurface/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_bgcolor.py b/plotly/validators/isosurface/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_bgcolor.py rename to plotly/validators/isosurface/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_bordercolor.py b/plotly/validators/isosurface/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_bordercolor.py rename to plotly/validators/isosurface/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_borderwidth.py b/plotly/validators/isosurface/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_borderwidth.py rename to plotly/validators/isosurface/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_dtick.py b/plotly/validators/isosurface/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_dtick.py rename to plotly/validators/isosurface/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_exponentformat.py b/plotly/validators/isosurface/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_exponentformat.py rename to plotly/validators/isosurface/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_labelalias.py b/plotly/validators/isosurface/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_labelalias.py rename to plotly/validators/isosurface/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_len.py b/plotly/validators/isosurface/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_len.py rename to plotly/validators/isosurface/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_lenmode.py b/plotly/validators/isosurface/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_lenmode.py rename to plotly/validators/isosurface/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_minexponent.py b/plotly/validators/isosurface/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_minexponent.py rename to plotly/validators/isosurface/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_nticks.py b/plotly/validators/isosurface/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_nticks.py rename to plotly/validators/isosurface/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_orientation.py b/plotly/validators/isosurface/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_orientation.py rename to plotly/validators/isosurface/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_outlinecolor.py b/plotly/validators/isosurface/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_outlinecolor.py rename to plotly/validators/isosurface/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_outlinewidth.py b/plotly/validators/isosurface/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_outlinewidth.py rename to plotly/validators/isosurface/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_separatethousands.py b/plotly/validators/isosurface/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_separatethousands.py rename to plotly/validators/isosurface/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_showexponent.py b/plotly/validators/isosurface/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_showexponent.py rename to plotly/validators/isosurface/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_showticklabels.py b/plotly/validators/isosurface/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_showticklabels.py rename to plotly/validators/isosurface/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_showtickprefix.py b/plotly/validators/isosurface/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_showtickprefix.py rename to plotly/validators/isosurface/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_showticksuffix.py b/plotly/validators/isosurface/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_showticksuffix.py rename to plotly/validators/isosurface/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_thickness.py b/plotly/validators/isosurface/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_thickness.py rename to plotly/validators/isosurface/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_thicknessmode.py b/plotly/validators/isosurface/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_thicknessmode.py rename to plotly/validators/isosurface/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tick0.py b/plotly/validators/isosurface/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tick0.py rename to plotly/validators/isosurface/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickangle.py b/plotly/validators/isosurface/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickangle.py rename to plotly/validators/isosurface/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickcolor.py b/plotly/validators/isosurface/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickcolor.py rename to plotly/validators/isosurface/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickfont.py b/plotly/validators/isosurface/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickfont.py rename to plotly/validators/isosurface/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickformat.py b/plotly/validators/isosurface/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickformat.py rename to plotly/validators/isosurface/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickformatstopdefaults.py b/plotly/validators/isosurface/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickformatstopdefaults.py rename to plotly/validators/isosurface/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickformatstops.py b/plotly/validators/isosurface/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickformatstops.py rename to plotly/validators/isosurface/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ticklabeloverflow.py b/plotly/validators/isosurface/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ticklabeloverflow.py rename to plotly/validators/isosurface/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ticklabelposition.py b/plotly/validators/isosurface/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ticklabelposition.py rename to plotly/validators/isosurface/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ticklabelstep.py b/plotly/validators/isosurface/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ticklabelstep.py rename to plotly/validators/isosurface/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ticklen.py b/plotly/validators/isosurface/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ticklen.py rename to plotly/validators/isosurface/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickmode.py b/plotly/validators/isosurface/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickmode.py rename to plotly/validators/isosurface/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickprefix.py b/plotly/validators/isosurface/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickprefix.py rename to plotly/validators/isosurface/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ticks.py b/plotly/validators/isosurface/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ticks.py rename to plotly/validators/isosurface/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ticksuffix.py b/plotly/validators/isosurface/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ticksuffix.py rename to plotly/validators/isosurface/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ticktext.py b/plotly/validators/isosurface/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ticktext.py rename to plotly/validators/isosurface/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ticktextsrc.py b/plotly/validators/isosurface/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ticktextsrc.py rename to plotly/validators/isosurface/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickvals.py b/plotly/validators/isosurface/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickvals.py rename to plotly/validators/isosurface/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickvalssrc.py b/plotly/validators/isosurface/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickvalssrc.py rename to plotly/validators/isosurface/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_tickwidth.py b/plotly/validators/isosurface/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_tickwidth.py rename to plotly/validators/isosurface/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_title.py b/plotly/validators/isosurface/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_title.py rename to plotly/validators/isosurface/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_x.py b/plotly/validators/isosurface/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_x.py rename to plotly/validators/isosurface/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_xanchor.py b/plotly/validators/isosurface/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_xanchor.py rename to plotly/validators/isosurface/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_xpad.py b/plotly/validators/isosurface/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_xpad.py rename to plotly/validators/isosurface/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_xref.py b/plotly/validators/isosurface/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_xref.py rename to plotly/validators/isosurface/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_y.py b/plotly/validators/isosurface/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_y.py rename to plotly/validators/isosurface/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_yanchor.py b/plotly/validators/isosurface/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_yanchor.py rename to plotly/validators/isosurface/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_ypad.py b/plotly/validators/isosurface/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_ypad.py rename to plotly/validators/isosurface/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/_yref.py b/plotly/validators/isosurface/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/_yref.py rename to plotly/validators/isosurface/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/__init__.py b/plotly/validators/isosurface/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/__init__.py rename to plotly/validators/isosurface/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_color.py b/plotly/validators/isosurface/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_color.py rename to plotly/validators/isosurface/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_family.py b/plotly/validators/isosurface/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_family.py rename to plotly/validators/isosurface/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_lineposition.py b/plotly/validators/isosurface/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_lineposition.py rename to plotly/validators/isosurface/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_shadow.py b/plotly/validators/isosurface/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_shadow.py rename to plotly/validators/isosurface/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_size.py b/plotly/validators/isosurface/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_size.py rename to plotly/validators/isosurface/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_style.py b/plotly/validators/isosurface/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_style.py rename to plotly/validators/isosurface/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_textcase.py b/plotly/validators/isosurface/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_textcase.py rename to plotly/validators/isosurface/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_variant.py b/plotly/validators/isosurface/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_variant.py rename to plotly/validators/isosurface/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_weight.py b/plotly/validators/isosurface/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickfont/_weight.py rename to plotly/validators/isosurface/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/__init__.py b/plotly/validators/isosurface/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/__init__.py rename to plotly/validators/isosurface/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/isosurface/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/isosurface/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_enabled.py b/plotly/validators/isosurface/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_enabled.py rename to plotly/validators/isosurface/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_name.py b/plotly/validators/isosurface/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_name.py rename to plotly/validators/isosurface/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/isosurface/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/isosurface/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_value.py b/plotly/validators/isosurface/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/tickformatstop/_value.py rename to plotly/validators/isosurface/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/__init__.py b/plotly/validators/isosurface/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/__init__.py rename to plotly/validators/isosurface/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/_font.py b/plotly/validators/isosurface/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/_font.py rename to plotly/validators/isosurface/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/_side.py b/plotly/validators/isosurface/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/_side.py rename to plotly/validators/isosurface/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/_text.py b/plotly/validators/isosurface/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/_text.py rename to plotly/validators/isosurface/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/__init__.py b/plotly/validators/isosurface/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/__init__.py rename to plotly/validators/isosurface/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_color.py b/plotly/validators/isosurface/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_color.py rename to plotly/validators/isosurface/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_family.py b/plotly/validators/isosurface/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_family.py rename to plotly/validators/isosurface/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_lineposition.py b/plotly/validators/isosurface/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_lineposition.py rename to plotly/validators/isosurface/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_shadow.py b/plotly/validators/isosurface/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_shadow.py rename to plotly/validators/isosurface/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_size.py b/plotly/validators/isosurface/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_size.py rename to plotly/validators/isosurface/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_style.py b/plotly/validators/isosurface/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_style.py rename to plotly/validators/isosurface/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_textcase.py b/plotly/validators/isosurface/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_textcase.py rename to plotly/validators/isosurface/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_variant.py b/plotly/validators/isosurface/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_variant.py rename to plotly/validators/isosurface/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_weight.py b/plotly/validators/isosurface/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/colorbar/title/font/_weight.py rename to plotly/validators/isosurface/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/isosurface/contour/__init__.py b/plotly/validators/isosurface/contour/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/contour/__init__.py rename to plotly/validators/isosurface/contour/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/contour/_color.py b/plotly/validators/isosurface/contour/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/contour/_color.py rename to plotly/validators/isosurface/contour/_color.py diff --git a/packages/python/plotly/plotly/validators/isosurface/contour/_show.py b/plotly/validators/isosurface/contour/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/contour/_show.py rename to plotly/validators/isosurface/contour/_show.py diff --git a/packages/python/plotly/plotly/validators/isosurface/contour/_width.py b/plotly/validators/isosurface/contour/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/contour/_width.py rename to plotly/validators/isosurface/contour/_width.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/__init__.py b/plotly/validators/isosurface/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/__init__.py rename to plotly/validators/isosurface/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_align.py b/plotly/validators/isosurface/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_align.py rename to plotly/validators/isosurface/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_alignsrc.py b/plotly/validators/isosurface/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_alignsrc.py rename to plotly/validators/isosurface/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_bgcolor.py b/plotly/validators/isosurface/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_bgcolor.py rename to plotly/validators/isosurface/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_bgcolorsrc.py b/plotly/validators/isosurface/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_bgcolorsrc.py rename to plotly/validators/isosurface/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_bordercolor.py b/plotly/validators/isosurface/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_bordercolor.py rename to plotly/validators/isosurface/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_bordercolorsrc.py b/plotly/validators/isosurface/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_bordercolorsrc.py rename to plotly/validators/isosurface/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_font.py b/plotly/validators/isosurface/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_font.py rename to plotly/validators/isosurface/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_namelength.py b/plotly/validators/isosurface/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_namelength.py rename to plotly/validators/isosurface/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/_namelengthsrc.py b/plotly/validators/isosurface/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/_namelengthsrc.py rename to plotly/validators/isosurface/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/__init__.py b/plotly/validators/isosurface/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/__init__.py rename to plotly/validators/isosurface/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_color.py b/plotly/validators/isosurface/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_color.py rename to plotly/validators/isosurface/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_colorsrc.py b/plotly/validators/isosurface/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_colorsrc.py rename to plotly/validators/isosurface/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_family.py b/plotly/validators/isosurface/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_family.py rename to plotly/validators/isosurface/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_familysrc.py b/plotly/validators/isosurface/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_familysrc.py rename to plotly/validators/isosurface/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_lineposition.py b/plotly/validators/isosurface/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_lineposition.py rename to plotly/validators/isosurface/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_linepositionsrc.py b/plotly/validators/isosurface/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/isosurface/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_shadow.py b/plotly/validators/isosurface/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_shadow.py rename to plotly/validators/isosurface/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_shadowsrc.py b/plotly/validators/isosurface/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_shadowsrc.py rename to plotly/validators/isosurface/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_size.py b/plotly/validators/isosurface/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_size.py rename to plotly/validators/isosurface/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_sizesrc.py b/plotly/validators/isosurface/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_sizesrc.py rename to plotly/validators/isosurface/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_style.py b/plotly/validators/isosurface/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_style.py rename to plotly/validators/isosurface/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_stylesrc.py b/plotly/validators/isosurface/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_stylesrc.py rename to plotly/validators/isosurface/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_textcase.py b/plotly/validators/isosurface/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_textcase.py rename to plotly/validators/isosurface/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_textcasesrc.py b/plotly/validators/isosurface/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_textcasesrc.py rename to plotly/validators/isosurface/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_variant.py b/plotly/validators/isosurface/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_variant.py rename to plotly/validators/isosurface/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_variantsrc.py b/plotly/validators/isosurface/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_variantsrc.py rename to plotly/validators/isosurface/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_weight.py b/plotly/validators/isosurface/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_weight.py rename to plotly/validators/isosurface/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_weightsrc.py b/plotly/validators/isosurface/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/hoverlabel/font/_weightsrc.py rename to plotly/validators/isosurface/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/__init__.py b/plotly/validators/isosurface/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/__init__.py rename to plotly/validators/isosurface/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/_font.py b/plotly/validators/isosurface/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/_font.py rename to plotly/validators/isosurface/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/_text.py b/plotly/validators/isosurface/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/_text.py rename to plotly/validators/isosurface/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/__init__.py b/plotly/validators/isosurface/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/__init__.py rename to plotly/validators/isosurface/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_color.py b/plotly/validators/isosurface/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_color.py rename to plotly/validators/isosurface/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_family.py b/plotly/validators/isosurface/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_family.py rename to plotly/validators/isosurface/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_lineposition.py b/plotly/validators/isosurface/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_lineposition.py rename to plotly/validators/isosurface/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_shadow.py b/plotly/validators/isosurface/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_shadow.py rename to plotly/validators/isosurface/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_size.py b/plotly/validators/isosurface/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_size.py rename to plotly/validators/isosurface/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_style.py b/plotly/validators/isosurface/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_style.py rename to plotly/validators/isosurface/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_textcase.py b/plotly/validators/isosurface/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_textcase.py rename to plotly/validators/isosurface/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_variant.py b/plotly/validators/isosurface/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_variant.py rename to plotly/validators/isosurface/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_weight.py b/plotly/validators/isosurface/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/legendgrouptitle/font/_weight.py rename to plotly/validators/isosurface/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lighting/__init__.py b/plotly/validators/isosurface/lighting/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lighting/__init__.py rename to plotly/validators/isosurface/lighting/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lighting/_ambient.py b/plotly/validators/isosurface/lighting/_ambient.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lighting/_ambient.py rename to plotly/validators/isosurface/lighting/_ambient.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lighting/_diffuse.py b/plotly/validators/isosurface/lighting/_diffuse.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lighting/_diffuse.py rename to plotly/validators/isosurface/lighting/_diffuse.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lighting/_facenormalsepsilon.py b/plotly/validators/isosurface/lighting/_facenormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lighting/_facenormalsepsilon.py rename to plotly/validators/isosurface/lighting/_facenormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lighting/_fresnel.py b/plotly/validators/isosurface/lighting/_fresnel.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lighting/_fresnel.py rename to plotly/validators/isosurface/lighting/_fresnel.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lighting/_roughness.py b/plotly/validators/isosurface/lighting/_roughness.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lighting/_roughness.py rename to plotly/validators/isosurface/lighting/_roughness.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lighting/_specular.py b/plotly/validators/isosurface/lighting/_specular.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lighting/_specular.py rename to plotly/validators/isosurface/lighting/_specular.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lighting/_vertexnormalsepsilon.py b/plotly/validators/isosurface/lighting/_vertexnormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lighting/_vertexnormalsepsilon.py rename to plotly/validators/isosurface/lighting/_vertexnormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lightposition/__init__.py b/plotly/validators/isosurface/lightposition/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lightposition/__init__.py rename to plotly/validators/isosurface/lightposition/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lightposition/_x.py b/plotly/validators/isosurface/lightposition/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lightposition/_x.py rename to plotly/validators/isosurface/lightposition/_x.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lightposition/_y.py b/plotly/validators/isosurface/lightposition/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lightposition/_y.py rename to plotly/validators/isosurface/lightposition/_y.py diff --git a/packages/python/plotly/plotly/validators/isosurface/lightposition/_z.py b/plotly/validators/isosurface/lightposition/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/lightposition/_z.py rename to plotly/validators/isosurface/lightposition/_z.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/__init__.py b/plotly/validators/isosurface/slices/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/__init__.py rename to plotly/validators/isosurface/slices/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/_x.py b/plotly/validators/isosurface/slices/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/_x.py rename to plotly/validators/isosurface/slices/_x.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/_y.py b/plotly/validators/isosurface/slices/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/_y.py rename to plotly/validators/isosurface/slices/_y.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/_z.py b/plotly/validators/isosurface/slices/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/_z.py rename to plotly/validators/isosurface/slices/_z.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/x/__init__.py b/plotly/validators/isosurface/slices/x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/x/__init__.py rename to plotly/validators/isosurface/slices/x/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/x/_fill.py b/plotly/validators/isosurface/slices/x/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/x/_fill.py rename to plotly/validators/isosurface/slices/x/_fill.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/x/_locations.py b/plotly/validators/isosurface/slices/x/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/x/_locations.py rename to plotly/validators/isosurface/slices/x/_locations.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/x/_locationssrc.py b/plotly/validators/isosurface/slices/x/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/x/_locationssrc.py rename to plotly/validators/isosurface/slices/x/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/x/_show.py b/plotly/validators/isosurface/slices/x/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/x/_show.py rename to plotly/validators/isosurface/slices/x/_show.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/y/__init__.py b/plotly/validators/isosurface/slices/y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/y/__init__.py rename to plotly/validators/isosurface/slices/y/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/y/_fill.py b/plotly/validators/isosurface/slices/y/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/y/_fill.py rename to plotly/validators/isosurface/slices/y/_fill.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/y/_locations.py b/plotly/validators/isosurface/slices/y/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/y/_locations.py rename to plotly/validators/isosurface/slices/y/_locations.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/y/_locationssrc.py b/plotly/validators/isosurface/slices/y/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/y/_locationssrc.py rename to plotly/validators/isosurface/slices/y/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/y/_show.py b/plotly/validators/isosurface/slices/y/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/y/_show.py rename to plotly/validators/isosurface/slices/y/_show.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/z/__init__.py b/plotly/validators/isosurface/slices/z/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/z/__init__.py rename to plotly/validators/isosurface/slices/z/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/z/_fill.py b/plotly/validators/isosurface/slices/z/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/z/_fill.py rename to plotly/validators/isosurface/slices/z/_fill.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/z/_locations.py b/plotly/validators/isosurface/slices/z/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/z/_locations.py rename to plotly/validators/isosurface/slices/z/_locations.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/z/_locationssrc.py b/plotly/validators/isosurface/slices/z/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/z/_locationssrc.py rename to plotly/validators/isosurface/slices/z/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/isosurface/slices/z/_show.py b/plotly/validators/isosurface/slices/z/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/slices/z/_show.py rename to plotly/validators/isosurface/slices/z/_show.py diff --git a/packages/python/plotly/plotly/validators/isosurface/spaceframe/__init__.py b/plotly/validators/isosurface/spaceframe/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/spaceframe/__init__.py rename to plotly/validators/isosurface/spaceframe/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/spaceframe/_fill.py b/plotly/validators/isosurface/spaceframe/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/spaceframe/_fill.py rename to plotly/validators/isosurface/spaceframe/_fill.py diff --git a/packages/python/plotly/plotly/validators/isosurface/spaceframe/_show.py b/plotly/validators/isosurface/spaceframe/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/spaceframe/_show.py rename to plotly/validators/isosurface/spaceframe/_show.py diff --git a/packages/python/plotly/plotly/validators/isosurface/stream/__init__.py b/plotly/validators/isosurface/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/stream/__init__.py rename to plotly/validators/isosurface/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/stream/_maxpoints.py b/plotly/validators/isosurface/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/stream/_maxpoints.py rename to plotly/validators/isosurface/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/isosurface/stream/_token.py b/plotly/validators/isosurface/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/stream/_token.py rename to plotly/validators/isosurface/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/isosurface/surface/__init__.py b/plotly/validators/isosurface/surface/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/surface/__init__.py rename to plotly/validators/isosurface/surface/__init__.py diff --git a/packages/python/plotly/plotly/validators/isosurface/surface/_count.py b/plotly/validators/isosurface/surface/_count.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/surface/_count.py rename to plotly/validators/isosurface/surface/_count.py diff --git a/packages/python/plotly/plotly/validators/isosurface/surface/_fill.py b/plotly/validators/isosurface/surface/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/surface/_fill.py rename to plotly/validators/isosurface/surface/_fill.py diff --git a/packages/python/plotly/plotly/validators/isosurface/surface/_pattern.py b/plotly/validators/isosurface/surface/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/surface/_pattern.py rename to plotly/validators/isosurface/surface/_pattern.py diff --git a/packages/python/plotly/plotly/validators/isosurface/surface/_show.py b/plotly/validators/isosurface/surface/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/isosurface/surface/_show.py rename to plotly/validators/isosurface/surface/_show.py diff --git a/packages/python/plotly/plotly/validators/layout/__init__.py b/plotly/validators/layout/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/__init__.py rename to plotly/validators/layout/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/_activeselection.py b/plotly/validators/layout/_activeselection.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_activeselection.py rename to plotly/validators/layout/_activeselection.py diff --git a/packages/python/plotly/plotly/validators/layout/_activeshape.py b/plotly/validators/layout/_activeshape.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_activeshape.py rename to plotly/validators/layout/_activeshape.py diff --git a/packages/python/plotly/plotly/validators/layout/_annotationdefaults.py b/plotly/validators/layout/_annotationdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_annotationdefaults.py rename to plotly/validators/layout/_annotationdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/_annotations.py b/plotly/validators/layout/_annotations.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_annotations.py rename to plotly/validators/layout/_annotations.py diff --git a/packages/python/plotly/plotly/validators/layout/_autosize.py b/plotly/validators/layout/_autosize.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_autosize.py rename to plotly/validators/layout/_autosize.py diff --git a/packages/python/plotly/plotly/validators/layout/_autotypenumbers.py b/plotly/validators/layout/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_autotypenumbers.py rename to plotly/validators/layout/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/layout/_barcornerradius.py b/plotly/validators/layout/_barcornerradius.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_barcornerradius.py rename to plotly/validators/layout/_barcornerradius.py diff --git a/packages/python/plotly/plotly/validators/layout/_bargap.py b/plotly/validators/layout/_bargap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_bargap.py rename to plotly/validators/layout/_bargap.py diff --git a/packages/python/plotly/plotly/validators/layout/_bargroupgap.py b/plotly/validators/layout/_bargroupgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_bargroupgap.py rename to plotly/validators/layout/_bargroupgap.py diff --git a/packages/python/plotly/plotly/validators/layout/_barmode.py b/plotly/validators/layout/_barmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_barmode.py rename to plotly/validators/layout/_barmode.py diff --git a/packages/python/plotly/plotly/validators/layout/_barnorm.py b/plotly/validators/layout/_barnorm.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_barnorm.py rename to plotly/validators/layout/_barnorm.py diff --git a/packages/python/plotly/plotly/validators/layout/_boxgap.py b/plotly/validators/layout/_boxgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_boxgap.py rename to plotly/validators/layout/_boxgap.py diff --git a/packages/python/plotly/plotly/validators/layout/_boxgroupgap.py b/plotly/validators/layout/_boxgroupgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_boxgroupgap.py rename to plotly/validators/layout/_boxgroupgap.py diff --git a/packages/python/plotly/plotly/validators/layout/_boxmode.py b/plotly/validators/layout/_boxmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_boxmode.py rename to plotly/validators/layout/_boxmode.py diff --git a/packages/python/plotly/plotly/validators/layout/_calendar.py b/plotly/validators/layout/_calendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_calendar.py rename to plotly/validators/layout/_calendar.py diff --git a/packages/python/plotly/plotly/validators/layout/_clickmode.py b/plotly/validators/layout/_clickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_clickmode.py rename to plotly/validators/layout/_clickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/_coloraxis.py b/plotly/validators/layout/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_coloraxis.py rename to plotly/validators/layout/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/layout/_colorscale.py b/plotly/validators/layout/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_colorscale.py rename to plotly/validators/layout/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/layout/_colorway.py b/plotly/validators/layout/_colorway.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_colorway.py rename to plotly/validators/layout/_colorway.py diff --git a/packages/python/plotly/plotly/validators/layout/_computed.py b/plotly/validators/layout/_computed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_computed.py rename to plotly/validators/layout/_computed.py diff --git a/packages/python/plotly/plotly/validators/layout/_datarevision.py b/plotly/validators/layout/_datarevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_datarevision.py rename to plotly/validators/layout/_datarevision.py diff --git a/packages/python/plotly/plotly/validators/layout/_dragmode.py b/plotly/validators/layout/_dragmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_dragmode.py rename to plotly/validators/layout/_dragmode.py diff --git a/packages/python/plotly/plotly/validators/layout/_editrevision.py b/plotly/validators/layout/_editrevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_editrevision.py rename to plotly/validators/layout/_editrevision.py diff --git a/packages/python/plotly/plotly/validators/layout/_extendfunnelareacolors.py b/plotly/validators/layout/_extendfunnelareacolors.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_extendfunnelareacolors.py rename to plotly/validators/layout/_extendfunnelareacolors.py diff --git a/packages/python/plotly/plotly/validators/layout/_extendiciclecolors.py b/plotly/validators/layout/_extendiciclecolors.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_extendiciclecolors.py rename to plotly/validators/layout/_extendiciclecolors.py diff --git a/packages/python/plotly/plotly/validators/layout/_extendpiecolors.py b/plotly/validators/layout/_extendpiecolors.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_extendpiecolors.py rename to plotly/validators/layout/_extendpiecolors.py diff --git a/packages/python/plotly/plotly/validators/layout/_extendsunburstcolors.py b/plotly/validators/layout/_extendsunburstcolors.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_extendsunburstcolors.py rename to plotly/validators/layout/_extendsunburstcolors.py diff --git a/packages/python/plotly/plotly/validators/layout/_extendtreemapcolors.py b/plotly/validators/layout/_extendtreemapcolors.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_extendtreemapcolors.py rename to plotly/validators/layout/_extendtreemapcolors.py diff --git a/packages/python/plotly/plotly/validators/layout/_font.py b/plotly/validators/layout/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_font.py rename to plotly/validators/layout/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/_funnelareacolorway.py b/plotly/validators/layout/_funnelareacolorway.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_funnelareacolorway.py rename to plotly/validators/layout/_funnelareacolorway.py diff --git a/packages/python/plotly/plotly/validators/layout/_funnelgap.py b/plotly/validators/layout/_funnelgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_funnelgap.py rename to plotly/validators/layout/_funnelgap.py diff --git a/packages/python/plotly/plotly/validators/layout/_funnelgroupgap.py b/plotly/validators/layout/_funnelgroupgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_funnelgroupgap.py rename to plotly/validators/layout/_funnelgroupgap.py diff --git a/packages/python/plotly/plotly/validators/layout/_funnelmode.py b/plotly/validators/layout/_funnelmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_funnelmode.py rename to plotly/validators/layout/_funnelmode.py diff --git a/packages/python/plotly/plotly/validators/layout/_geo.py b/plotly/validators/layout/_geo.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_geo.py rename to plotly/validators/layout/_geo.py diff --git a/packages/python/plotly/plotly/validators/layout/_grid.py b/plotly/validators/layout/_grid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_grid.py rename to plotly/validators/layout/_grid.py diff --git a/packages/python/plotly/plotly/validators/layout/_height.py b/plotly/validators/layout/_height.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_height.py rename to plotly/validators/layout/_height.py diff --git a/packages/python/plotly/plotly/validators/layout/_hiddenlabels.py b/plotly/validators/layout/_hiddenlabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_hiddenlabels.py rename to plotly/validators/layout/_hiddenlabels.py diff --git a/packages/python/plotly/plotly/validators/layout/_hiddenlabelssrc.py b/plotly/validators/layout/_hiddenlabelssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_hiddenlabelssrc.py rename to plotly/validators/layout/_hiddenlabelssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/_hidesources.py b/plotly/validators/layout/_hidesources.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_hidesources.py rename to plotly/validators/layout/_hidesources.py diff --git a/packages/python/plotly/plotly/validators/layout/_hoverdistance.py b/plotly/validators/layout/_hoverdistance.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_hoverdistance.py rename to plotly/validators/layout/_hoverdistance.py diff --git a/packages/python/plotly/plotly/validators/layout/_hoverlabel.py b/plotly/validators/layout/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_hoverlabel.py rename to plotly/validators/layout/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/layout/_hovermode.py b/plotly/validators/layout/_hovermode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_hovermode.py rename to plotly/validators/layout/_hovermode.py diff --git a/packages/python/plotly/plotly/validators/layout/_hoversubplots.py b/plotly/validators/layout/_hoversubplots.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_hoversubplots.py rename to plotly/validators/layout/_hoversubplots.py diff --git a/packages/python/plotly/plotly/validators/layout/_iciclecolorway.py b/plotly/validators/layout/_iciclecolorway.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_iciclecolorway.py rename to plotly/validators/layout/_iciclecolorway.py diff --git a/packages/python/plotly/plotly/validators/layout/_imagedefaults.py b/plotly/validators/layout/_imagedefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_imagedefaults.py rename to plotly/validators/layout/_imagedefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/_images.py b/plotly/validators/layout/_images.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_images.py rename to plotly/validators/layout/_images.py diff --git a/packages/python/plotly/plotly/validators/layout/_legend.py b/plotly/validators/layout/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_legend.py rename to plotly/validators/layout/_legend.py diff --git a/packages/python/plotly/plotly/validators/layout/_map.py b/plotly/validators/layout/_map.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_map.py rename to plotly/validators/layout/_map.py diff --git a/packages/python/plotly/plotly/validators/layout/_mapbox.py b/plotly/validators/layout/_mapbox.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_mapbox.py rename to plotly/validators/layout/_mapbox.py diff --git a/packages/python/plotly/plotly/validators/layout/_margin.py b/plotly/validators/layout/_margin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_margin.py rename to plotly/validators/layout/_margin.py diff --git a/packages/python/plotly/plotly/validators/layout/_meta.py b/plotly/validators/layout/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_meta.py rename to plotly/validators/layout/_meta.py diff --git a/packages/python/plotly/plotly/validators/layout/_metasrc.py b/plotly/validators/layout/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_metasrc.py rename to plotly/validators/layout/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/layout/_minreducedheight.py b/plotly/validators/layout/_minreducedheight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_minreducedheight.py rename to plotly/validators/layout/_minreducedheight.py diff --git a/packages/python/plotly/plotly/validators/layout/_minreducedwidth.py b/plotly/validators/layout/_minreducedwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_minreducedwidth.py rename to plotly/validators/layout/_minreducedwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/_modebar.py b/plotly/validators/layout/_modebar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_modebar.py rename to plotly/validators/layout/_modebar.py diff --git a/packages/python/plotly/plotly/validators/layout/_newselection.py b/plotly/validators/layout/_newselection.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_newselection.py rename to plotly/validators/layout/_newselection.py diff --git a/packages/python/plotly/plotly/validators/layout/_newshape.py b/plotly/validators/layout/_newshape.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_newshape.py rename to plotly/validators/layout/_newshape.py diff --git a/packages/python/plotly/plotly/validators/layout/_paper_bgcolor.py b/plotly/validators/layout/_paper_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_paper_bgcolor.py rename to plotly/validators/layout/_paper_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/_piecolorway.py b/plotly/validators/layout/_piecolorway.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_piecolorway.py rename to plotly/validators/layout/_piecolorway.py diff --git a/packages/python/plotly/plotly/validators/layout/_plot_bgcolor.py b/plotly/validators/layout/_plot_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_plot_bgcolor.py rename to plotly/validators/layout/_plot_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/_polar.py b/plotly/validators/layout/_polar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_polar.py rename to plotly/validators/layout/_polar.py diff --git a/packages/python/plotly/plotly/validators/layout/_scattergap.py b/plotly/validators/layout/_scattergap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_scattergap.py rename to plotly/validators/layout/_scattergap.py diff --git a/packages/python/plotly/plotly/validators/layout/_scattermode.py b/plotly/validators/layout/_scattermode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_scattermode.py rename to plotly/validators/layout/_scattermode.py diff --git a/packages/python/plotly/plotly/validators/layout/_scene.py b/plotly/validators/layout/_scene.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_scene.py rename to plotly/validators/layout/_scene.py diff --git a/packages/python/plotly/plotly/validators/layout/_selectdirection.py b/plotly/validators/layout/_selectdirection.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_selectdirection.py rename to plotly/validators/layout/_selectdirection.py diff --git a/packages/python/plotly/plotly/validators/layout/_selectiondefaults.py b/plotly/validators/layout/_selectiondefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_selectiondefaults.py rename to plotly/validators/layout/_selectiondefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/_selectionrevision.py b/plotly/validators/layout/_selectionrevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_selectionrevision.py rename to plotly/validators/layout/_selectionrevision.py diff --git a/packages/python/plotly/plotly/validators/layout/_selections.py b/plotly/validators/layout/_selections.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_selections.py rename to plotly/validators/layout/_selections.py diff --git a/packages/python/plotly/plotly/validators/layout/_separators.py b/plotly/validators/layout/_separators.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_separators.py rename to plotly/validators/layout/_separators.py diff --git a/packages/python/plotly/plotly/validators/layout/_shapedefaults.py b/plotly/validators/layout/_shapedefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_shapedefaults.py rename to plotly/validators/layout/_shapedefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/_shapes.py b/plotly/validators/layout/_shapes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_shapes.py rename to plotly/validators/layout/_shapes.py diff --git a/packages/python/plotly/plotly/validators/layout/_showlegend.py b/plotly/validators/layout/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_showlegend.py rename to plotly/validators/layout/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/layout/_sliderdefaults.py b/plotly/validators/layout/_sliderdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_sliderdefaults.py rename to plotly/validators/layout/_sliderdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/_sliders.py b/plotly/validators/layout/_sliders.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_sliders.py rename to plotly/validators/layout/_sliders.py diff --git a/packages/python/plotly/plotly/validators/layout/_smith.py b/plotly/validators/layout/_smith.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_smith.py rename to plotly/validators/layout/_smith.py diff --git a/packages/python/plotly/plotly/validators/layout/_spikedistance.py b/plotly/validators/layout/_spikedistance.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_spikedistance.py rename to plotly/validators/layout/_spikedistance.py diff --git a/packages/python/plotly/plotly/validators/layout/_sunburstcolorway.py b/plotly/validators/layout/_sunburstcolorway.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_sunburstcolorway.py rename to plotly/validators/layout/_sunburstcolorway.py diff --git a/packages/python/plotly/plotly/validators/layout/_template.py b/plotly/validators/layout/_template.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_template.py rename to plotly/validators/layout/_template.py diff --git a/packages/python/plotly/plotly/validators/layout/_ternary.py b/plotly/validators/layout/_ternary.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_ternary.py rename to plotly/validators/layout/_ternary.py diff --git a/packages/python/plotly/plotly/validators/layout/_title.py b/plotly/validators/layout/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_title.py rename to plotly/validators/layout/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/_transition.py b/plotly/validators/layout/_transition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_transition.py rename to plotly/validators/layout/_transition.py diff --git a/packages/python/plotly/plotly/validators/layout/_treemapcolorway.py b/plotly/validators/layout/_treemapcolorway.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_treemapcolorway.py rename to plotly/validators/layout/_treemapcolorway.py diff --git a/packages/python/plotly/plotly/validators/layout/_uirevision.py b/plotly/validators/layout/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_uirevision.py rename to plotly/validators/layout/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/_uniformtext.py b/plotly/validators/layout/_uniformtext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_uniformtext.py rename to plotly/validators/layout/_uniformtext.py diff --git a/packages/python/plotly/plotly/validators/layout/_updatemenudefaults.py b/plotly/validators/layout/_updatemenudefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_updatemenudefaults.py rename to plotly/validators/layout/_updatemenudefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/_updatemenus.py b/plotly/validators/layout/_updatemenus.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_updatemenus.py rename to plotly/validators/layout/_updatemenus.py diff --git a/packages/python/plotly/plotly/validators/layout/_violingap.py b/plotly/validators/layout/_violingap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_violingap.py rename to plotly/validators/layout/_violingap.py diff --git a/packages/python/plotly/plotly/validators/layout/_violingroupgap.py b/plotly/validators/layout/_violingroupgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_violingroupgap.py rename to plotly/validators/layout/_violingroupgap.py diff --git a/packages/python/plotly/plotly/validators/layout/_violinmode.py b/plotly/validators/layout/_violinmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_violinmode.py rename to plotly/validators/layout/_violinmode.py diff --git a/packages/python/plotly/plotly/validators/layout/_waterfallgap.py b/plotly/validators/layout/_waterfallgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_waterfallgap.py rename to plotly/validators/layout/_waterfallgap.py diff --git a/packages/python/plotly/plotly/validators/layout/_waterfallgroupgap.py b/plotly/validators/layout/_waterfallgroupgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_waterfallgroupgap.py rename to plotly/validators/layout/_waterfallgroupgap.py diff --git a/packages/python/plotly/plotly/validators/layout/_waterfallmode.py b/plotly/validators/layout/_waterfallmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_waterfallmode.py rename to plotly/validators/layout/_waterfallmode.py diff --git a/packages/python/plotly/plotly/validators/layout/_width.py b/plotly/validators/layout/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_width.py rename to plotly/validators/layout/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/_xaxis.py b/plotly/validators/layout/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_xaxis.py rename to plotly/validators/layout/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/_yaxis.py b/plotly/validators/layout/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/_yaxis.py rename to plotly/validators/layout/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/activeselection/__init__.py b/plotly/validators/layout/activeselection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/activeselection/__init__.py rename to plotly/validators/layout/activeselection/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/activeselection/_fillcolor.py b/plotly/validators/layout/activeselection/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/activeselection/_fillcolor.py rename to plotly/validators/layout/activeselection/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/activeselection/_opacity.py b/plotly/validators/layout/activeselection/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/activeselection/_opacity.py rename to plotly/validators/layout/activeselection/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/activeshape/__init__.py b/plotly/validators/layout/activeshape/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/activeshape/__init__.py rename to plotly/validators/layout/activeshape/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/activeshape/_fillcolor.py b/plotly/validators/layout/activeshape/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/activeshape/_fillcolor.py rename to plotly/validators/layout/activeshape/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/activeshape/_opacity.py b/plotly/validators/layout/activeshape/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/activeshape/_opacity.py rename to plotly/validators/layout/activeshape/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/__init__.py b/plotly/validators/layout/annotation/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/__init__.py rename to plotly/validators/layout/annotation/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_align.py b/plotly/validators/layout/annotation/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_align.py rename to plotly/validators/layout/annotation/_align.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_arrowcolor.py b/plotly/validators/layout/annotation/_arrowcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_arrowcolor.py rename to plotly/validators/layout/annotation/_arrowcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_arrowhead.py b/plotly/validators/layout/annotation/_arrowhead.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_arrowhead.py rename to plotly/validators/layout/annotation/_arrowhead.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_arrowside.py b/plotly/validators/layout/annotation/_arrowside.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_arrowside.py rename to plotly/validators/layout/annotation/_arrowside.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_arrowsize.py b/plotly/validators/layout/annotation/_arrowsize.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_arrowsize.py rename to plotly/validators/layout/annotation/_arrowsize.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_arrowwidth.py b/plotly/validators/layout/annotation/_arrowwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_arrowwidth.py rename to plotly/validators/layout/annotation/_arrowwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_ax.py b/plotly/validators/layout/annotation/_ax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_ax.py rename to plotly/validators/layout/annotation/_ax.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_axref.py b/plotly/validators/layout/annotation/_axref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_axref.py rename to plotly/validators/layout/annotation/_axref.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_ay.py b/plotly/validators/layout/annotation/_ay.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_ay.py rename to plotly/validators/layout/annotation/_ay.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_ayref.py b/plotly/validators/layout/annotation/_ayref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_ayref.py rename to plotly/validators/layout/annotation/_ayref.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_bgcolor.py b/plotly/validators/layout/annotation/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_bgcolor.py rename to plotly/validators/layout/annotation/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_bordercolor.py b/plotly/validators/layout/annotation/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_bordercolor.py rename to plotly/validators/layout/annotation/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_borderpad.py b/plotly/validators/layout/annotation/_borderpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_borderpad.py rename to plotly/validators/layout/annotation/_borderpad.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_borderwidth.py b/plotly/validators/layout/annotation/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_borderwidth.py rename to plotly/validators/layout/annotation/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_captureevents.py b/plotly/validators/layout/annotation/_captureevents.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_captureevents.py rename to plotly/validators/layout/annotation/_captureevents.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_clicktoshow.py b/plotly/validators/layout/annotation/_clicktoshow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_clicktoshow.py rename to plotly/validators/layout/annotation/_clicktoshow.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_font.py b/plotly/validators/layout/annotation/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_font.py rename to plotly/validators/layout/annotation/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_height.py b/plotly/validators/layout/annotation/_height.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_height.py rename to plotly/validators/layout/annotation/_height.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_hoverlabel.py b/plotly/validators/layout/annotation/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_hoverlabel.py rename to plotly/validators/layout/annotation/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_hovertext.py b/plotly/validators/layout/annotation/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_hovertext.py rename to plotly/validators/layout/annotation/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_name.py b/plotly/validators/layout/annotation/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_name.py rename to plotly/validators/layout/annotation/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_opacity.py b/plotly/validators/layout/annotation/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_opacity.py rename to plotly/validators/layout/annotation/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_showarrow.py b/plotly/validators/layout/annotation/_showarrow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_showarrow.py rename to plotly/validators/layout/annotation/_showarrow.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_standoff.py b/plotly/validators/layout/annotation/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_standoff.py rename to plotly/validators/layout/annotation/_standoff.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_startarrowhead.py b/plotly/validators/layout/annotation/_startarrowhead.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_startarrowhead.py rename to plotly/validators/layout/annotation/_startarrowhead.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_startarrowsize.py b/plotly/validators/layout/annotation/_startarrowsize.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_startarrowsize.py rename to plotly/validators/layout/annotation/_startarrowsize.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_startstandoff.py b/plotly/validators/layout/annotation/_startstandoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_startstandoff.py rename to plotly/validators/layout/annotation/_startstandoff.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_templateitemname.py b/plotly/validators/layout/annotation/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_templateitemname.py rename to plotly/validators/layout/annotation/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_text.py b/plotly/validators/layout/annotation/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_text.py rename to plotly/validators/layout/annotation/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_textangle.py b/plotly/validators/layout/annotation/_textangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_textangle.py rename to plotly/validators/layout/annotation/_textangle.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_valign.py b/plotly/validators/layout/annotation/_valign.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_valign.py rename to plotly/validators/layout/annotation/_valign.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_visible.py b/plotly/validators/layout/annotation/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_visible.py rename to plotly/validators/layout/annotation/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_width.py b/plotly/validators/layout/annotation/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_width.py rename to plotly/validators/layout/annotation/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_x.py b/plotly/validators/layout/annotation/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_x.py rename to plotly/validators/layout/annotation/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_xanchor.py b/plotly/validators/layout/annotation/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_xanchor.py rename to plotly/validators/layout/annotation/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_xclick.py b/plotly/validators/layout/annotation/_xclick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_xclick.py rename to plotly/validators/layout/annotation/_xclick.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_xref.py b/plotly/validators/layout/annotation/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_xref.py rename to plotly/validators/layout/annotation/_xref.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_xshift.py b/plotly/validators/layout/annotation/_xshift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_xshift.py rename to plotly/validators/layout/annotation/_xshift.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_y.py b/plotly/validators/layout/annotation/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_y.py rename to plotly/validators/layout/annotation/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_yanchor.py b/plotly/validators/layout/annotation/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_yanchor.py rename to plotly/validators/layout/annotation/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_yclick.py b/plotly/validators/layout/annotation/_yclick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_yclick.py rename to plotly/validators/layout/annotation/_yclick.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_yref.py b/plotly/validators/layout/annotation/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_yref.py rename to plotly/validators/layout/annotation/_yref.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/_yshift.py b/plotly/validators/layout/annotation/_yshift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/_yshift.py rename to plotly/validators/layout/annotation/_yshift.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/__init__.py b/plotly/validators/layout/annotation/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/__init__.py rename to plotly/validators/layout/annotation/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_color.py b/plotly/validators/layout/annotation/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_color.py rename to plotly/validators/layout/annotation/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_family.py b/plotly/validators/layout/annotation/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_family.py rename to plotly/validators/layout/annotation/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_lineposition.py b/plotly/validators/layout/annotation/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_lineposition.py rename to plotly/validators/layout/annotation/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_shadow.py b/plotly/validators/layout/annotation/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_shadow.py rename to plotly/validators/layout/annotation/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_size.py b/plotly/validators/layout/annotation/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_size.py rename to plotly/validators/layout/annotation/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_style.py b/plotly/validators/layout/annotation/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_style.py rename to plotly/validators/layout/annotation/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_textcase.py b/plotly/validators/layout/annotation/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_textcase.py rename to plotly/validators/layout/annotation/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_variant.py b/plotly/validators/layout/annotation/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_variant.py rename to plotly/validators/layout/annotation/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/font/_weight.py b/plotly/validators/layout/annotation/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/font/_weight.py rename to plotly/validators/layout/annotation/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/__init__.py b/plotly/validators/layout/annotation/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/__init__.py rename to plotly/validators/layout/annotation/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/_bgcolor.py b/plotly/validators/layout/annotation/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/_bgcolor.py rename to plotly/validators/layout/annotation/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/_bordercolor.py b/plotly/validators/layout/annotation/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/_bordercolor.py rename to plotly/validators/layout/annotation/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/_font.py b/plotly/validators/layout/annotation/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/_font.py rename to plotly/validators/layout/annotation/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/__init__.py b/plotly/validators/layout/annotation/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/__init__.py rename to plotly/validators/layout/annotation/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_color.py b/plotly/validators/layout/annotation/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_color.py rename to plotly/validators/layout/annotation/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_family.py b/plotly/validators/layout/annotation/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_family.py rename to plotly/validators/layout/annotation/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_lineposition.py b/plotly/validators/layout/annotation/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_lineposition.py rename to plotly/validators/layout/annotation/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_shadow.py b/plotly/validators/layout/annotation/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_shadow.py rename to plotly/validators/layout/annotation/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_size.py b/plotly/validators/layout/annotation/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_size.py rename to plotly/validators/layout/annotation/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_style.py b/plotly/validators/layout/annotation/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_style.py rename to plotly/validators/layout/annotation/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_textcase.py b/plotly/validators/layout/annotation/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_textcase.py rename to plotly/validators/layout/annotation/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_variant.py b/plotly/validators/layout/annotation/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_variant.py rename to plotly/validators/layout/annotation/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_weight.py b/plotly/validators/layout/annotation/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/annotation/hoverlabel/font/_weight.py rename to plotly/validators/layout/annotation/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/__init__.py b/plotly/validators/layout/coloraxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/__init__.py rename to plotly/validators/layout/coloraxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_autocolorscale.py b/plotly/validators/layout/coloraxis/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_autocolorscale.py rename to plotly/validators/layout/coloraxis/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_cauto.py b/plotly/validators/layout/coloraxis/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_cauto.py rename to plotly/validators/layout/coloraxis/_cauto.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_cmax.py b/plotly/validators/layout/coloraxis/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_cmax.py rename to plotly/validators/layout/coloraxis/_cmax.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_cmid.py b/plotly/validators/layout/coloraxis/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_cmid.py rename to plotly/validators/layout/coloraxis/_cmid.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_cmin.py b/plotly/validators/layout/coloraxis/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_cmin.py rename to plotly/validators/layout/coloraxis/_cmin.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_colorbar.py b/plotly/validators/layout/coloraxis/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_colorbar.py rename to plotly/validators/layout/coloraxis/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_colorscale.py b/plotly/validators/layout/coloraxis/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_colorscale.py rename to plotly/validators/layout/coloraxis/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_reversescale.py b/plotly/validators/layout/coloraxis/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_reversescale.py rename to plotly/validators/layout/coloraxis/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/_showscale.py b/plotly/validators/layout/coloraxis/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/_showscale.py rename to plotly/validators/layout/coloraxis/_showscale.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/__init__.py b/plotly/validators/layout/coloraxis/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/__init__.py rename to plotly/validators/layout/coloraxis/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_bgcolor.py b/plotly/validators/layout/coloraxis/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_bgcolor.py rename to plotly/validators/layout/coloraxis/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_bordercolor.py b/plotly/validators/layout/coloraxis/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_bordercolor.py rename to plotly/validators/layout/coloraxis/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_borderwidth.py b/plotly/validators/layout/coloraxis/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_borderwidth.py rename to plotly/validators/layout/coloraxis/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_dtick.py b/plotly/validators/layout/coloraxis/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_dtick.py rename to plotly/validators/layout/coloraxis/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_exponentformat.py b/plotly/validators/layout/coloraxis/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_exponentformat.py rename to plotly/validators/layout/coloraxis/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_labelalias.py b/plotly/validators/layout/coloraxis/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_labelalias.py rename to plotly/validators/layout/coloraxis/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_len.py b/plotly/validators/layout/coloraxis/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_len.py rename to plotly/validators/layout/coloraxis/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_lenmode.py b/plotly/validators/layout/coloraxis/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_lenmode.py rename to plotly/validators/layout/coloraxis/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_minexponent.py b/plotly/validators/layout/coloraxis/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_minexponent.py rename to plotly/validators/layout/coloraxis/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_nticks.py b/plotly/validators/layout/coloraxis/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_nticks.py rename to plotly/validators/layout/coloraxis/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_orientation.py b/plotly/validators/layout/coloraxis/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_orientation.py rename to plotly/validators/layout/coloraxis/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_outlinecolor.py b/plotly/validators/layout/coloraxis/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_outlinecolor.py rename to plotly/validators/layout/coloraxis/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_outlinewidth.py b/plotly/validators/layout/coloraxis/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_outlinewidth.py rename to plotly/validators/layout/coloraxis/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_separatethousands.py b/plotly/validators/layout/coloraxis/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_separatethousands.py rename to plotly/validators/layout/coloraxis/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_showexponent.py b/plotly/validators/layout/coloraxis/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_showexponent.py rename to plotly/validators/layout/coloraxis/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_showticklabels.py b/plotly/validators/layout/coloraxis/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_showticklabels.py rename to plotly/validators/layout/coloraxis/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_showtickprefix.py b/plotly/validators/layout/coloraxis/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_showtickprefix.py rename to plotly/validators/layout/coloraxis/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_showticksuffix.py b/plotly/validators/layout/coloraxis/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_showticksuffix.py rename to plotly/validators/layout/coloraxis/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_thickness.py b/plotly/validators/layout/coloraxis/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_thickness.py rename to plotly/validators/layout/coloraxis/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_thicknessmode.py b/plotly/validators/layout/coloraxis/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_thicknessmode.py rename to plotly/validators/layout/coloraxis/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tick0.py b/plotly/validators/layout/coloraxis/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tick0.py rename to plotly/validators/layout/coloraxis/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickangle.py b/plotly/validators/layout/coloraxis/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickangle.py rename to plotly/validators/layout/coloraxis/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickcolor.py b/plotly/validators/layout/coloraxis/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickcolor.py rename to plotly/validators/layout/coloraxis/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickfont.py b/plotly/validators/layout/coloraxis/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickfont.py rename to plotly/validators/layout/coloraxis/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickformat.py b/plotly/validators/layout/coloraxis/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickformat.py rename to plotly/validators/layout/coloraxis/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickformatstopdefaults.py b/plotly/validators/layout/coloraxis/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickformatstopdefaults.py rename to plotly/validators/layout/coloraxis/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickformatstops.py b/plotly/validators/layout/coloraxis/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickformatstops.py rename to plotly/validators/layout/coloraxis/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticklabeloverflow.py b/plotly/validators/layout/coloraxis/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticklabeloverflow.py rename to plotly/validators/layout/coloraxis/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticklabelposition.py b/plotly/validators/layout/coloraxis/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticklabelposition.py rename to plotly/validators/layout/coloraxis/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticklabelstep.py b/plotly/validators/layout/coloraxis/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticklabelstep.py rename to plotly/validators/layout/coloraxis/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticklen.py b/plotly/validators/layout/coloraxis/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticklen.py rename to plotly/validators/layout/coloraxis/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickmode.py b/plotly/validators/layout/coloraxis/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickmode.py rename to plotly/validators/layout/coloraxis/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickprefix.py b/plotly/validators/layout/coloraxis/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickprefix.py rename to plotly/validators/layout/coloraxis/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticks.py b/plotly/validators/layout/coloraxis/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticks.py rename to plotly/validators/layout/coloraxis/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticksuffix.py b/plotly/validators/layout/coloraxis/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticksuffix.py rename to plotly/validators/layout/coloraxis/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticktext.py b/plotly/validators/layout/coloraxis/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticktext.py rename to plotly/validators/layout/coloraxis/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticktextsrc.py b/plotly/validators/layout/coloraxis/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ticktextsrc.py rename to plotly/validators/layout/coloraxis/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickvals.py b/plotly/validators/layout/coloraxis/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickvals.py rename to plotly/validators/layout/coloraxis/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickvalssrc.py b/plotly/validators/layout/coloraxis/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickvalssrc.py rename to plotly/validators/layout/coloraxis/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickwidth.py b/plotly/validators/layout/coloraxis/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_tickwidth.py rename to plotly/validators/layout/coloraxis/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_title.py b/plotly/validators/layout/coloraxis/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_title.py rename to plotly/validators/layout/coloraxis/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_x.py b/plotly/validators/layout/coloraxis/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_x.py rename to plotly/validators/layout/coloraxis/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_xanchor.py b/plotly/validators/layout/coloraxis/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_xanchor.py rename to plotly/validators/layout/coloraxis/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_xpad.py b/plotly/validators/layout/coloraxis/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_xpad.py rename to plotly/validators/layout/coloraxis/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_xref.py b/plotly/validators/layout/coloraxis/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_xref.py rename to plotly/validators/layout/coloraxis/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_y.py b/plotly/validators/layout/coloraxis/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_y.py rename to plotly/validators/layout/coloraxis/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_yanchor.py b/plotly/validators/layout/coloraxis/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_yanchor.py rename to plotly/validators/layout/coloraxis/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ypad.py b/plotly/validators/layout/coloraxis/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_ypad.py rename to plotly/validators/layout/coloraxis/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_yref.py b/plotly/validators/layout/coloraxis/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/_yref.py rename to plotly/validators/layout/coloraxis/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/__init__.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/__init__.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_color.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_color.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_family.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_family.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_lineposition.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_lineposition.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_shadow.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_shadow.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_size.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_size.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_style.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_style.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_textcase.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_textcase.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_variant.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_variant.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_weight.py b/plotly/validators/layout/coloraxis/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickfont/_weight.py rename to plotly/validators/layout/coloraxis/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/__init__.py b/plotly/validators/layout/coloraxis/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/__init__.py rename to plotly/validators/layout/coloraxis/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/layout/coloraxis/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_enabled.py b/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_enabled.py rename to plotly/validators/layout/coloraxis/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_name.py b/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_name.py rename to plotly/validators/layout/coloraxis/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/layout/coloraxis/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_value.py b/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/tickformatstop/_value.py rename to plotly/validators/layout/coloraxis/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/__init__.py b/plotly/validators/layout/coloraxis/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/__init__.py rename to plotly/validators/layout/coloraxis/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/_font.py b/plotly/validators/layout/coloraxis/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/_font.py rename to plotly/validators/layout/coloraxis/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/_side.py b/plotly/validators/layout/coloraxis/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/_side.py rename to plotly/validators/layout/coloraxis/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/_text.py b/plotly/validators/layout/coloraxis/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/_text.py rename to plotly/validators/layout/coloraxis/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/__init__.py b/plotly/validators/layout/coloraxis/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/__init__.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_color.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_color.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_family.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_family.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_lineposition.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_lineposition.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_shadow.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_shadow.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_size.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_size.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_style.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_style.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_textcase.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_textcase.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_variant.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_variant.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_weight.py b/plotly/validators/layout/coloraxis/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/coloraxis/colorbar/title/font/_weight.py rename to plotly/validators/layout/coloraxis/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/colorscale/__init__.py b/plotly/validators/layout/colorscale/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/colorscale/__init__.py rename to plotly/validators/layout/colorscale/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/colorscale/_diverging.py b/plotly/validators/layout/colorscale/_diverging.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/colorscale/_diverging.py rename to plotly/validators/layout/colorscale/_diverging.py diff --git a/packages/python/plotly/plotly/validators/layout/colorscale/_sequential.py b/plotly/validators/layout/colorscale/_sequential.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/colorscale/_sequential.py rename to plotly/validators/layout/colorscale/_sequential.py diff --git a/packages/python/plotly/plotly/validators/layout/colorscale/_sequentialminus.py b/plotly/validators/layout/colorscale/_sequentialminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/colorscale/_sequentialminus.py rename to plotly/validators/layout/colorscale/_sequentialminus.py diff --git a/packages/python/plotly/plotly/validators/layout/font/__init__.py b/plotly/validators/layout/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/__init__.py rename to plotly/validators/layout/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_color.py b/plotly/validators/layout/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_color.py rename to plotly/validators/layout/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_family.py b/plotly/validators/layout/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_family.py rename to plotly/validators/layout/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_lineposition.py b/plotly/validators/layout/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_lineposition.py rename to plotly/validators/layout/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_shadow.py b/plotly/validators/layout/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_shadow.py rename to plotly/validators/layout/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_size.py b/plotly/validators/layout/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_size.py rename to plotly/validators/layout/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_style.py b/plotly/validators/layout/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_style.py rename to plotly/validators/layout/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_textcase.py b/plotly/validators/layout/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_textcase.py rename to plotly/validators/layout/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_variant.py b/plotly/validators/layout/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_variant.py rename to plotly/validators/layout/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/font/_weight.py b/plotly/validators/layout/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/font/_weight.py rename to plotly/validators/layout/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/__init__.py b/plotly/validators/layout/geo/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/__init__.py rename to plotly/validators/layout/geo/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_bgcolor.py b/plotly/validators/layout/geo/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_bgcolor.py rename to plotly/validators/layout/geo/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_center.py b/plotly/validators/layout/geo/_center.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_center.py rename to plotly/validators/layout/geo/_center.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_coastlinecolor.py b/plotly/validators/layout/geo/_coastlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_coastlinecolor.py rename to plotly/validators/layout/geo/_coastlinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_coastlinewidth.py b/plotly/validators/layout/geo/_coastlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_coastlinewidth.py rename to plotly/validators/layout/geo/_coastlinewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_countrycolor.py b/plotly/validators/layout/geo/_countrycolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_countrycolor.py rename to plotly/validators/layout/geo/_countrycolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_countrywidth.py b/plotly/validators/layout/geo/_countrywidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_countrywidth.py rename to plotly/validators/layout/geo/_countrywidth.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_domain.py b/plotly/validators/layout/geo/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_domain.py rename to plotly/validators/layout/geo/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_fitbounds.py b/plotly/validators/layout/geo/_fitbounds.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_fitbounds.py rename to plotly/validators/layout/geo/_fitbounds.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_framecolor.py b/plotly/validators/layout/geo/_framecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_framecolor.py rename to plotly/validators/layout/geo/_framecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_framewidth.py b/plotly/validators/layout/geo/_framewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_framewidth.py rename to plotly/validators/layout/geo/_framewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_lakecolor.py b/plotly/validators/layout/geo/_lakecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_lakecolor.py rename to plotly/validators/layout/geo/_lakecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_landcolor.py b/plotly/validators/layout/geo/_landcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_landcolor.py rename to plotly/validators/layout/geo/_landcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_lataxis.py b/plotly/validators/layout/geo/_lataxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_lataxis.py rename to plotly/validators/layout/geo/_lataxis.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_lonaxis.py b/plotly/validators/layout/geo/_lonaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_lonaxis.py rename to plotly/validators/layout/geo/_lonaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_oceancolor.py b/plotly/validators/layout/geo/_oceancolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_oceancolor.py rename to plotly/validators/layout/geo/_oceancolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_projection.py b/plotly/validators/layout/geo/_projection.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_projection.py rename to plotly/validators/layout/geo/_projection.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_resolution.py b/plotly/validators/layout/geo/_resolution.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_resolution.py rename to plotly/validators/layout/geo/_resolution.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_rivercolor.py b/plotly/validators/layout/geo/_rivercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_rivercolor.py rename to plotly/validators/layout/geo/_rivercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_riverwidth.py b/plotly/validators/layout/geo/_riverwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_riverwidth.py rename to plotly/validators/layout/geo/_riverwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_scope.py b/plotly/validators/layout/geo/_scope.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_scope.py rename to plotly/validators/layout/geo/_scope.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_showcoastlines.py b/plotly/validators/layout/geo/_showcoastlines.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_showcoastlines.py rename to plotly/validators/layout/geo/_showcoastlines.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_showcountries.py b/plotly/validators/layout/geo/_showcountries.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_showcountries.py rename to plotly/validators/layout/geo/_showcountries.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_showframe.py b/plotly/validators/layout/geo/_showframe.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_showframe.py rename to plotly/validators/layout/geo/_showframe.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_showlakes.py b/plotly/validators/layout/geo/_showlakes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_showlakes.py rename to plotly/validators/layout/geo/_showlakes.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_showland.py b/plotly/validators/layout/geo/_showland.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_showland.py rename to plotly/validators/layout/geo/_showland.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_showocean.py b/plotly/validators/layout/geo/_showocean.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_showocean.py rename to plotly/validators/layout/geo/_showocean.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_showrivers.py b/plotly/validators/layout/geo/_showrivers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_showrivers.py rename to plotly/validators/layout/geo/_showrivers.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_showsubunits.py b/plotly/validators/layout/geo/_showsubunits.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_showsubunits.py rename to plotly/validators/layout/geo/_showsubunits.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_subunitcolor.py b/plotly/validators/layout/geo/_subunitcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_subunitcolor.py rename to plotly/validators/layout/geo/_subunitcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_subunitwidth.py b/plotly/validators/layout/geo/_subunitwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_subunitwidth.py rename to plotly/validators/layout/geo/_subunitwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_uirevision.py b/plotly/validators/layout/geo/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_uirevision.py rename to plotly/validators/layout/geo/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/_visible.py b/plotly/validators/layout/geo/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/_visible.py rename to plotly/validators/layout/geo/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/center/__init__.py b/plotly/validators/layout/geo/center/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/center/__init__.py rename to plotly/validators/layout/geo/center/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/center/_lat.py b/plotly/validators/layout/geo/center/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/center/_lat.py rename to plotly/validators/layout/geo/center/_lat.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/center/_lon.py b/plotly/validators/layout/geo/center/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/center/_lon.py rename to plotly/validators/layout/geo/center/_lon.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/domain/__init__.py b/plotly/validators/layout/geo/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/domain/__init__.py rename to plotly/validators/layout/geo/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/domain/_column.py b/plotly/validators/layout/geo/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/domain/_column.py rename to plotly/validators/layout/geo/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/domain/_row.py b/plotly/validators/layout/geo/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/domain/_row.py rename to plotly/validators/layout/geo/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/domain/_x.py b/plotly/validators/layout/geo/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/domain/_x.py rename to plotly/validators/layout/geo/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/domain/_y.py b/plotly/validators/layout/geo/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/domain/_y.py rename to plotly/validators/layout/geo/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lataxis/__init__.py b/plotly/validators/layout/geo/lataxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lataxis/__init__.py rename to plotly/validators/layout/geo/lataxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lataxis/_dtick.py b/plotly/validators/layout/geo/lataxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lataxis/_dtick.py rename to plotly/validators/layout/geo/lataxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lataxis/_gridcolor.py b/plotly/validators/layout/geo/lataxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lataxis/_gridcolor.py rename to plotly/validators/layout/geo/lataxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lataxis/_griddash.py b/plotly/validators/layout/geo/lataxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lataxis/_griddash.py rename to plotly/validators/layout/geo/lataxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lataxis/_gridwidth.py b/plotly/validators/layout/geo/lataxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lataxis/_gridwidth.py rename to plotly/validators/layout/geo/lataxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lataxis/_range.py b/plotly/validators/layout/geo/lataxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lataxis/_range.py rename to plotly/validators/layout/geo/lataxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lataxis/_showgrid.py b/plotly/validators/layout/geo/lataxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lataxis/_showgrid.py rename to plotly/validators/layout/geo/lataxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lataxis/_tick0.py b/plotly/validators/layout/geo/lataxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lataxis/_tick0.py rename to plotly/validators/layout/geo/lataxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lonaxis/__init__.py b/plotly/validators/layout/geo/lonaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lonaxis/__init__.py rename to plotly/validators/layout/geo/lonaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lonaxis/_dtick.py b/plotly/validators/layout/geo/lonaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lonaxis/_dtick.py rename to plotly/validators/layout/geo/lonaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lonaxis/_gridcolor.py b/plotly/validators/layout/geo/lonaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lonaxis/_gridcolor.py rename to plotly/validators/layout/geo/lonaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lonaxis/_griddash.py b/plotly/validators/layout/geo/lonaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lonaxis/_griddash.py rename to plotly/validators/layout/geo/lonaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lonaxis/_gridwidth.py b/plotly/validators/layout/geo/lonaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lonaxis/_gridwidth.py rename to plotly/validators/layout/geo/lonaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lonaxis/_range.py b/plotly/validators/layout/geo/lonaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lonaxis/_range.py rename to plotly/validators/layout/geo/lonaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lonaxis/_showgrid.py b/plotly/validators/layout/geo/lonaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lonaxis/_showgrid.py rename to plotly/validators/layout/geo/lonaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/lonaxis/_tick0.py b/plotly/validators/layout/geo/lonaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/lonaxis/_tick0.py rename to plotly/validators/layout/geo/lonaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/__init__.py b/plotly/validators/layout/geo/projection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/__init__.py rename to plotly/validators/layout/geo/projection/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/_distance.py b/plotly/validators/layout/geo/projection/_distance.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/_distance.py rename to plotly/validators/layout/geo/projection/_distance.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/_parallels.py b/plotly/validators/layout/geo/projection/_parallels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/_parallels.py rename to plotly/validators/layout/geo/projection/_parallels.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/_rotation.py b/plotly/validators/layout/geo/projection/_rotation.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/_rotation.py rename to plotly/validators/layout/geo/projection/_rotation.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/_scale.py b/plotly/validators/layout/geo/projection/_scale.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/_scale.py rename to plotly/validators/layout/geo/projection/_scale.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/_tilt.py b/plotly/validators/layout/geo/projection/_tilt.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/_tilt.py rename to plotly/validators/layout/geo/projection/_tilt.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/_type.py b/plotly/validators/layout/geo/projection/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/_type.py rename to plotly/validators/layout/geo/projection/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/rotation/__init__.py b/plotly/validators/layout/geo/projection/rotation/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/rotation/__init__.py rename to plotly/validators/layout/geo/projection/rotation/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/rotation/_lat.py b/plotly/validators/layout/geo/projection/rotation/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/rotation/_lat.py rename to plotly/validators/layout/geo/projection/rotation/_lat.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/rotation/_lon.py b/plotly/validators/layout/geo/projection/rotation/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/rotation/_lon.py rename to plotly/validators/layout/geo/projection/rotation/_lon.py diff --git a/packages/python/plotly/plotly/validators/layout/geo/projection/rotation/_roll.py b/plotly/validators/layout/geo/projection/rotation/_roll.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/geo/projection/rotation/_roll.py rename to plotly/validators/layout/geo/projection/rotation/_roll.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/__init__.py b/plotly/validators/layout/grid/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/__init__.py rename to plotly/validators/layout/grid/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_columns.py b/plotly/validators/layout/grid/_columns.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_columns.py rename to plotly/validators/layout/grid/_columns.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_domain.py b/plotly/validators/layout/grid/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_domain.py rename to plotly/validators/layout/grid/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_pattern.py b/plotly/validators/layout/grid/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_pattern.py rename to plotly/validators/layout/grid/_pattern.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_roworder.py b/plotly/validators/layout/grid/_roworder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_roworder.py rename to plotly/validators/layout/grid/_roworder.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_rows.py b/plotly/validators/layout/grid/_rows.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_rows.py rename to plotly/validators/layout/grid/_rows.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_subplots.py b/plotly/validators/layout/grid/_subplots.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_subplots.py rename to plotly/validators/layout/grid/_subplots.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_xaxes.py b/plotly/validators/layout/grid/_xaxes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_xaxes.py rename to plotly/validators/layout/grid/_xaxes.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_xgap.py b/plotly/validators/layout/grid/_xgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_xgap.py rename to plotly/validators/layout/grid/_xgap.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_xside.py b/plotly/validators/layout/grid/_xside.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_xside.py rename to plotly/validators/layout/grid/_xside.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_yaxes.py b/plotly/validators/layout/grid/_yaxes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_yaxes.py rename to plotly/validators/layout/grid/_yaxes.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_ygap.py b/plotly/validators/layout/grid/_ygap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_ygap.py rename to plotly/validators/layout/grid/_ygap.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/_yside.py b/plotly/validators/layout/grid/_yside.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/_yside.py rename to plotly/validators/layout/grid/_yside.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/domain/__init__.py b/plotly/validators/layout/grid/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/domain/__init__.py rename to plotly/validators/layout/grid/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/domain/_x.py b/plotly/validators/layout/grid/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/domain/_x.py rename to plotly/validators/layout/grid/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/grid/domain/_y.py b/plotly/validators/layout/grid/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/grid/domain/_y.py rename to plotly/validators/layout/grid/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/__init__.py b/plotly/validators/layout/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/__init__.py rename to plotly/validators/layout/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/_align.py b/plotly/validators/layout/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/_align.py rename to plotly/validators/layout/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/_bgcolor.py b/plotly/validators/layout/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/_bgcolor.py rename to plotly/validators/layout/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/_bordercolor.py b/plotly/validators/layout/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/_bordercolor.py rename to plotly/validators/layout/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/_font.py b/plotly/validators/layout/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/_font.py rename to plotly/validators/layout/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/_grouptitlefont.py b/plotly/validators/layout/hoverlabel/_grouptitlefont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/_grouptitlefont.py rename to plotly/validators/layout/hoverlabel/_grouptitlefont.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/_namelength.py b/plotly/validators/layout/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/_namelength.py rename to plotly/validators/layout/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/__init__.py b/plotly/validators/layout/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/__init__.py rename to plotly/validators/layout/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_color.py b/plotly/validators/layout/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_color.py rename to plotly/validators/layout/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_family.py b/plotly/validators/layout/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_family.py rename to plotly/validators/layout/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_lineposition.py b/plotly/validators/layout/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_lineposition.py rename to plotly/validators/layout/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_shadow.py b/plotly/validators/layout/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_shadow.py rename to plotly/validators/layout/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_size.py b/plotly/validators/layout/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_size.py rename to plotly/validators/layout/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_style.py b/plotly/validators/layout/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_style.py rename to plotly/validators/layout/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_textcase.py b/plotly/validators/layout/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_textcase.py rename to plotly/validators/layout/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_variant.py b/plotly/validators/layout/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_variant.py rename to plotly/validators/layout/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/font/_weight.py b/plotly/validators/layout/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/font/_weight.py rename to plotly/validators/layout/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/__init__.py b/plotly/validators/layout/hoverlabel/grouptitlefont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/__init__.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_color.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_color.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_family.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_family.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_lineposition.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_lineposition.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_shadow.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_shadow.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_size.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_size.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_style.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_style.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_textcase.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_textcase.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_variant.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_variant.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_weight.py b/plotly/validators/layout/hoverlabel/grouptitlefont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/hoverlabel/grouptitlefont/_weight.py rename to plotly/validators/layout/hoverlabel/grouptitlefont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/image/__init__.py b/plotly/validators/layout/image/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/__init__.py rename to plotly/validators/layout/image/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_layer.py b/plotly/validators/layout/image/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_layer.py rename to plotly/validators/layout/image/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_name.py b/plotly/validators/layout/image/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_name.py rename to plotly/validators/layout/image/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_opacity.py b/plotly/validators/layout/image/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_opacity.py rename to plotly/validators/layout/image/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_sizex.py b/plotly/validators/layout/image/_sizex.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_sizex.py rename to plotly/validators/layout/image/_sizex.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_sizey.py b/plotly/validators/layout/image/_sizey.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_sizey.py rename to plotly/validators/layout/image/_sizey.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_sizing.py b/plotly/validators/layout/image/_sizing.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_sizing.py rename to plotly/validators/layout/image/_sizing.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_source.py b/plotly/validators/layout/image/_source.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_source.py rename to plotly/validators/layout/image/_source.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_templateitemname.py b/plotly/validators/layout/image/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_templateitemname.py rename to plotly/validators/layout/image/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_visible.py b/plotly/validators/layout/image/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_visible.py rename to plotly/validators/layout/image/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_x.py b/plotly/validators/layout/image/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_x.py rename to plotly/validators/layout/image/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_xanchor.py b/plotly/validators/layout/image/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_xanchor.py rename to plotly/validators/layout/image/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_xref.py b/plotly/validators/layout/image/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_xref.py rename to plotly/validators/layout/image/_xref.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_y.py b/plotly/validators/layout/image/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_y.py rename to plotly/validators/layout/image/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_yanchor.py b/plotly/validators/layout/image/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_yanchor.py rename to plotly/validators/layout/image/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/image/_yref.py b/plotly/validators/layout/image/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/image/_yref.py rename to plotly/validators/layout/image/_yref.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/__init__.py b/plotly/validators/layout/legend/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/__init__.py rename to plotly/validators/layout/legend/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_bgcolor.py b/plotly/validators/layout/legend/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_bgcolor.py rename to plotly/validators/layout/legend/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_bordercolor.py b/plotly/validators/layout/legend/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_bordercolor.py rename to plotly/validators/layout/legend/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_borderwidth.py b/plotly/validators/layout/legend/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_borderwidth.py rename to plotly/validators/layout/legend/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_entrywidth.py b/plotly/validators/layout/legend/_entrywidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_entrywidth.py rename to plotly/validators/layout/legend/_entrywidth.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_entrywidthmode.py b/plotly/validators/layout/legend/_entrywidthmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_entrywidthmode.py rename to plotly/validators/layout/legend/_entrywidthmode.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_font.py b/plotly/validators/layout/legend/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_font.py rename to plotly/validators/layout/legend/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_groupclick.py b/plotly/validators/layout/legend/_groupclick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_groupclick.py rename to plotly/validators/layout/legend/_groupclick.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_grouptitlefont.py b/plotly/validators/layout/legend/_grouptitlefont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_grouptitlefont.py rename to plotly/validators/layout/legend/_grouptitlefont.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_indentation.py b/plotly/validators/layout/legend/_indentation.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_indentation.py rename to plotly/validators/layout/legend/_indentation.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_itemclick.py b/plotly/validators/layout/legend/_itemclick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_itemclick.py rename to plotly/validators/layout/legend/_itemclick.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_itemdoubleclick.py b/plotly/validators/layout/legend/_itemdoubleclick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_itemdoubleclick.py rename to plotly/validators/layout/legend/_itemdoubleclick.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_itemsizing.py b/plotly/validators/layout/legend/_itemsizing.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_itemsizing.py rename to plotly/validators/layout/legend/_itemsizing.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_itemwidth.py b/plotly/validators/layout/legend/_itemwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_itemwidth.py rename to plotly/validators/layout/legend/_itemwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_orientation.py b/plotly/validators/layout/legend/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_orientation.py rename to plotly/validators/layout/legend/_orientation.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_title.py b/plotly/validators/layout/legend/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_title.py rename to plotly/validators/layout/legend/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_tracegroupgap.py b/plotly/validators/layout/legend/_tracegroupgap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_tracegroupgap.py rename to plotly/validators/layout/legend/_tracegroupgap.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_traceorder.py b/plotly/validators/layout/legend/_traceorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_traceorder.py rename to plotly/validators/layout/legend/_traceorder.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_uirevision.py b/plotly/validators/layout/legend/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_uirevision.py rename to plotly/validators/layout/legend/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_valign.py b/plotly/validators/layout/legend/_valign.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_valign.py rename to plotly/validators/layout/legend/_valign.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_visible.py b/plotly/validators/layout/legend/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_visible.py rename to plotly/validators/layout/legend/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_x.py b/plotly/validators/layout/legend/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_x.py rename to plotly/validators/layout/legend/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_xanchor.py b/plotly/validators/layout/legend/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_xanchor.py rename to plotly/validators/layout/legend/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_xref.py b/plotly/validators/layout/legend/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_xref.py rename to plotly/validators/layout/legend/_xref.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_y.py b/plotly/validators/layout/legend/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_y.py rename to plotly/validators/layout/legend/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_yanchor.py b/plotly/validators/layout/legend/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_yanchor.py rename to plotly/validators/layout/legend/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/_yref.py b/plotly/validators/layout/legend/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/_yref.py rename to plotly/validators/layout/legend/_yref.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/__init__.py b/plotly/validators/layout/legend/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/__init__.py rename to plotly/validators/layout/legend/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_color.py b/plotly/validators/layout/legend/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_color.py rename to plotly/validators/layout/legend/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_family.py b/plotly/validators/layout/legend/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_family.py rename to plotly/validators/layout/legend/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_lineposition.py b/plotly/validators/layout/legend/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_lineposition.py rename to plotly/validators/layout/legend/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_shadow.py b/plotly/validators/layout/legend/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_shadow.py rename to plotly/validators/layout/legend/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_size.py b/plotly/validators/layout/legend/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_size.py rename to plotly/validators/layout/legend/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_style.py b/plotly/validators/layout/legend/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_style.py rename to plotly/validators/layout/legend/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_textcase.py b/plotly/validators/layout/legend/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_textcase.py rename to plotly/validators/layout/legend/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_variant.py b/plotly/validators/layout/legend/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_variant.py rename to plotly/validators/layout/legend/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/font/_weight.py b/plotly/validators/layout/legend/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/font/_weight.py rename to plotly/validators/layout/legend/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/__init__.py b/plotly/validators/layout/legend/grouptitlefont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/__init__.py rename to plotly/validators/layout/legend/grouptitlefont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_color.py b/plotly/validators/layout/legend/grouptitlefont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_color.py rename to plotly/validators/layout/legend/grouptitlefont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_family.py b/plotly/validators/layout/legend/grouptitlefont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_family.py rename to plotly/validators/layout/legend/grouptitlefont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_lineposition.py b/plotly/validators/layout/legend/grouptitlefont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_lineposition.py rename to plotly/validators/layout/legend/grouptitlefont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_shadow.py b/plotly/validators/layout/legend/grouptitlefont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_shadow.py rename to plotly/validators/layout/legend/grouptitlefont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_size.py b/plotly/validators/layout/legend/grouptitlefont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_size.py rename to plotly/validators/layout/legend/grouptitlefont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_style.py b/plotly/validators/layout/legend/grouptitlefont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_style.py rename to plotly/validators/layout/legend/grouptitlefont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_textcase.py b/plotly/validators/layout/legend/grouptitlefont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_textcase.py rename to plotly/validators/layout/legend/grouptitlefont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_variant.py b/plotly/validators/layout/legend/grouptitlefont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_variant.py rename to plotly/validators/layout/legend/grouptitlefont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_weight.py b/plotly/validators/layout/legend/grouptitlefont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/grouptitlefont/_weight.py rename to plotly/validators/layout/legend/grouptitlefont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/__init__.py b/plotly/validators/layout/legend/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/__init__.py rename to plotly/validators/layout/legend/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/_font.py b/plotly/validators/layout/legend/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/_font.py rename to plotly/validators/layout/legend/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/_side.py b/plotly/validators/layout/legend/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/_side.py rename to plotly/validators/layout/legend/title/_side.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/_text.py b/plotly/validators/layout/legend/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/_text.py rename to plotly/validators/layout/legend/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/__init__.py b/plotly/validators/layout/legend/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/__init__.py rename to plotly/validators/layout/legend/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_color.py b/plotly/validators/layout/legend/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_color.py rename to plotly/validators/layout/legend/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_family.py b/plotly/validators/layout/legend/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_family.py rename to plotly/validators/layout/legend/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_lineposition.py b/plotly/validators/layout/legend/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_lineposition.py rename to plotly/validators/layout/legend/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_shadow.py b/plotly/validators/layout/legend/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_shadow.py rename to plotly/validators/layout/legend/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_size.py b/plotly/validators/layout/legend/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_size.py rename to plotly/validators/layout/legend/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_style.py b/plotly/validators/layout/legend/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_style.py rename to plotly/validators/layout/legend/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_textcase.py b/plotly/validators/layout/legend/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_textcase.py rename to plotly/validators/layout/legend/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_variant.py b/plotly/validators/layout/legend/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_variant.py rename to plotly/validators/layout/legend/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/legend/title/font/_weight.py b/plotly/validators/layout/legend/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/legend/title/font/_weight.py rename to plotly/validators/layout/legend/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/map/__init__.py b/plotly/validators/layout/map/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/__init__.py rename to plotly/validators/layout/map/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_bearing.py b/plotly/validators/layout/map/_bearing.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_bearing.py rename to plotly/validators/layout/map/_bearing.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_bounds.py b/plotly/validators/layout/map/_bounds.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_bounds.py rename to plotly/validators/layout/map/_bounds.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_center.py b/plotly/validators/layout/map/_center.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_center.py rename to plotly/validators/layout/map/_center.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_domain.py b/plotly/validators/layout/map/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_domain.py rename to plotly/validators/layout/map/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_layerdefaults.py b/plotly/validators/layout/map/_layerdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_layerdefaults.py rename to plotly/validators/layout/map/_layerdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_layers.py b/plotly/validators/layout/map/_layers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_layers.py rename to plotly/validators/layout/map/_layers.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_pitch.py b/plotly/validators/layout/map/_pitch.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_pitch.py rename to plotly/validators/layout/map/_pitch.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_style.py b/plotly/validators/layout/map/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_style.py rename to plotly/validators/layout/map/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_uirevision.py b/plotly/validators/layout/map/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_uirevision.py rename to plotly/validators/layout/map/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/map/_zoom.py b/plotly/validators/layout/map/_zoom.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/_zoom.py rename to plotly/validators/layout/map/_zoom.py diff --git a/packages/python/plotly/plotly/validators/layout/map/bounds/__init__.py b/plotly/validators/layout/map/bounds/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/bounds/__init__.py rename to plotly/validators/layout/map/bounds/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/bounds/_east.py b/plotly/validators/layout/map/bounds/_east.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/bounds/_east.py rename to plotly/validators/layout/map/bounds/_east.py diff --git a/packages/python/plotly/plotly/validators/layout/map/bounds/_north.py b/plotly/validators/layout/map/bounds/_north.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/bounds/_north.py rename to plotly/validators/layout/map/bounds/_north.py diff --git a/packages/python/plotly/plotly/validators/layout/map/bounds/_south.py b/plotly/validators/layout/map/bounds/_south.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/bounds/_south.py rename to plotly/validators/layout/map/bounds/_south.py diff --git a/packages/python/plotly/plotly/validators/layout/map/bounds/_west.py b/plotly/validators/layout/map/bounds/_west.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/bounds/_west.py rename to plotly/validators/layout/map/bounds/_west.py diff --git a/packages/python/plotly/plotly/validators/layout/map/center/__init__.py b/plotly/validators/layout/map/center/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/center/__init__.py rename to plotly/validators/layout/map/center/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/center/_lat.py b/plotly/validators/layout/map/center/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/center/_lat.py rename to plotly/validators/layout/map/center/_lat.py diff --git a/packages/python/plotly/plotly/validators/layout/map/center/_lon.py b/plotly/validators/layout/map/center/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/center/_lon.py rename to plotly/validators/layout/map/center/_lon.py diff --git a/packages/python/plotly/plotly/validators/layout/map/domain/__init__.py b/plotly/validators/layout/map/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/domain/__init__.py rename to plotly/validators/layout/map/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/domain/_column.py b/plotly/validators/layout/map/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/domain/_column.py rename to plotly/validators/layout/map/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/layout/map/domain/_row.py b/plotly/validators/layout/map/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/domain/_row.py rename to plotly/validators/layout/map/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/layout/map/domain/_x.py b/plotly/validators/layout/map/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/domain/_x.py rename to plotly/validators/layout/map/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/map/domain/_y.py b/plotly/validators/layout/map/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/domain/_y.py rename to plotly/validators/layout/map/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/__init__.py b/plotly/validators/layout/map/layer/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/__init__.py rename to plotly/validators/layout/map/layer/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_below.py b/plotly/validators/layout/map/layer/_below.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_below.py rename to plotly/validators/layout/map/layer/_below.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_circle.py b/plotly/validators/layout/map/layer/_circle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_circle.py rename to plotly/validators/layout/map/layer/_circle.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_color.py b/plotly/validators/layout/map/layer/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_color.py rename to plotly/validators/layout/map/layer/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_coordinates.py b/plotly/validators/layout/map/layer/_coordinates.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_coordinates.py rename to plotly/validators/layout/map/layer/_coordinates.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_fill.py b/plotly/validators/layout/map/layer/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_fill.py rename to plotly/validators/layout/map/layer/_fill.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_line.py b/plotly/validators/layout/map/layer/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_line.py rename to plotly/validators/layout/map/layer/_line.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_maxzoom.py b/plotly/validators/layout/map/layer/_maxzoom.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_maxzoom.py rename to plotly/validators/layout/map/layer/_maxzoom.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_minzoom.py b/plotly/validators/layout/map/layer/_minzoom.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_minzoom.py rename to plotly/validators/layout/map/layer/_minzoom.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_name.py b/plotly/validators/layout/map/layer/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_name.py rename to plotly/validators/layout/map/layer/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_opacity.py b/plotly/validators/layout/map/layer/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_opacity.py rename to plotly/validators/layout/map/layer/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_source.py b/plotly/validators/layout/map/layer/_source.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_source.py rename to plotly/validators/layout/map/layer/_source.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_sourceattribution.py b/plotly/validators/layout/map/layer/_sourceattribution.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_sourceattribution.py rename to plotly/validators/layout/map/layer/_sourceattribution.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_sourcelayer.py b/plotly/validators/layout/map/layer/_sourcelayer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_sourcelayer.py rename to plotly/validators/layout/map/layer/_sourcelayer.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_sourcetype.py b/plotly/validators/layout/map/layer/_sourcetype.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_sourcetype.py rename to plotly/validators/layout/map/layer/_sourcetype.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_symbol.py b/plotly/validators/layout/map/layer/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_symbol.py rename to plotly/validators/layout/map/layer/_symbol.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_templateitemname.py b/plotly/validators/layout/map/layer/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_templateitemname.py rename to plotly/validators/layout/map/layer/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_type.py b/plotly/validators/layout/map/layer/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_type.py rename to plotly/validators/layout/map/layer/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/_visible.py b/plotly/validators/layout/map/layer/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/_visible.py rename to plotly/validators/layout/map/layer/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/circle/__init__.py b/plotly/validators/layout/map/layer/circle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/circle/__init__.py rename to plotly/validators/layout/map/layer/circle/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/circle/_radius.py b/plotly/validators/layout/map/layer/circle/_radius.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/circle/_radius.py rename to plotly/validators/layout/map/layer/circle/_radius.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/fill/__init__.py b/plotly/validators/layout/map/layer/fill/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/fill/__init__.py rename to plotly/validators/layout/map/layer/fill/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/fill/_outlinecolor.py b/plotly/validators/layout/map/layer/fill/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/fill/_outlinecolor.py rename to plotly/validators/layout/map/layer/fill/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/line/__init__.py b/plotly/validators/layout/map/layer/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/line/__init__.py rename to plotly/validators/layout/map/layer/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/line/_dash.py b/plotly/validators/layout/map/layer/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/line/_dash.py rename to plotly/validators/layout/map/layer/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/line/_dashsrc.py b/plotly/validators/layout/map/layer/line/_dashsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/line/_dashsrc.py rename to plotly/validators/layout/map/layer/line/_dashsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/line/_width.py b/plotly/validators/layout/map/layer/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/line/_width.py rename to plotly/validators/layout/map/layer/line/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/__init__.py b/plotly/validators/layout/map/layer/symbol/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/__init__.py rename to plotly/validators/layout/map/layer/symbol/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/_icon.py b/plotly/validators/layout/map/layer/symbol/_icon.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/_icon.py rename to plotly/validators/layout/map/layer/symbol/_icon.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/_iconsize.py b/plotly/validators/layout/map/layer/symbol/_iconsize.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/_iconsize.py rename to plotly/validators/layout/map/layer/symbol/_iconsize.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/_placement.py b/plotly/validators/layout/map/layer/symbol/_placement.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/_placement.py rename to plotly/validators/layout/map/layer/symbol/_placement.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/_text.py b/plotly/validators/layout/map/layer/symbol/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/_text.py rename to plotly/validators/layout/map/layer/symbol/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/_textfont.py b/plotly/validators/layout/map/layer/symbol/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/_textfont.py rename to plotly/validators/layout/map/layer/symbol/_textfont.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/_textposition.py b/plotly/validators/layout/map/layer/symbol/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/_textposition.py rename to plotly/validators/layout/map/layer/symbol/_textposition.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/__init__.py b/plotly/validators/layout/map/layer/symbol/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/__init__.py rename to plotly/validators/layout/map/layer/symbol/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_color.py b/plotly/validators/layout/map/layer/symbol/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_color.py rename to plotly/validators/layout/map/layer/symbol/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_family.py b/plotly/validators/layout/map/layer/symbol/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_family.py rename to plotly/validators/layout/map/layer/symbol/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_size.py b/plotly/validators/layout/map/layer/symbol/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_size.py rename to plotly/validators/layout/map/layer/symbol/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_style.py b/plotly/validators/layout/map/layer/symbol/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_style.py rename to plotly/validators/layout/map/layer/symbol/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_weight.py b/plotly/validators/layout/map/layer/symbol/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/map/layer/symbol/textfont/_weight.py rename to plotly/validators/layout/map/layer/symbol/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/__init__.py b/plotly/validators/layout/mapbox/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/__init__.py rename to plotly/validators/layout/mapbox/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_accesstoken.py b/plotly/validators/layout/mapbox/_accesstoken.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_accesstoken.py rename to plotly/validators/layout/mapbox/_accesstoken.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_bearing.py b/plotly/validators/layout/mapbox/_bearing.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_bearing.py rename to plotly/validators/layout/mapbox/_bearing.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_bounds.py b/plotly/validators/layout/mapbox/_bounds.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_bounds.py rename to plotly/validators/layout/mapbox/_bounds.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_center.py b/plotly/validators/layout/mapbox/_center.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_center.py rename to plotly/validators/layout/mapbox/_center.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_domain.py b/plotly/validators/layout/mapbox/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_domain.py rename to plotly/validators/layout/mapbox/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_layerdefaults.py b/plotly/validators/layout/mapbox/_layerdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_layerdefaults.py rename to plotly/validators/layout/mapbox/_layerdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_layers.py b/plotly/validators/layout/mapbox/_layers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_layers.py rename to plotly/validators/layout/mapbox/_layers.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_pitch.py b/plotly/validators/layout/mapbox/_pitch.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_pitch.py rename to plotly/validators/layout/mapbox/_pitch.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_style.py b/plotly/validators/layout/mapbox/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_style.py rename to plotly/validators/layout/mapbox/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_uirevision.py b/plotly/validators/layout/mapbox/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_uirevision.py rename to plotly/validators/layout/mapbox/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/_zoom.py b/plotly/validators/layout/mapbox/_zoom.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/_zoom.py rename to plotly/validators/layout/mapbox/_zoom.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/bounds/__init__.py b/plotly/validators/layout/mapbox/bounds/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/bounds/__init__.py rename to plotly/validators/layout/mapbox/bounds/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/bounds/_east.py b/plotly/validators/layout/mapbox/bounds/_east.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/bounds/_east.py rename to plotly/validators/layout/mapbox/bounds/_east.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/bounds/_north.py b/plotly/validators/layout/mapbox/bounds/_north.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/bounds/_north.py rename to plotly/validators/layout/mapbox/bounds/_north.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/bounds/_south.py b/plotly/validators/layout/mapbox/bounds/_south.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/bounds/_south.py rename to plotly/validators/layout/mapbox/bounds/_south.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/bounds/_west.py b/plotly/validators/layout/mapbox/bounds/_west.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/bounds/_west.py rename to plotly/validators/layout/mapbox/bounds/_west.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/center/__init__.py b/plotly/validators/layout/mapbox/center/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/center/__init__.py rename to plotly/validators/layout/mapbox/center/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/center/_lat.py b/plotly/validators/layout/mapbox/center/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/center/_lat.py rename to plotly/validators/layout/mapbox/center/_lat.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/center/_lon.py b/plotly/validators/layout/mapbox/center/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/center/_lon.py rename to plotly/validators/layout/mapbox/center/_lon.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/domain/__init__.py b/plotly/validators/layout/mapbox/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/domain/__init__.py rename to plotly/validators/layout/mapbox/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/domain/_column.py b/plotly/validators/layout/mapbox/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/domain/_column.py rename to plotly/validators/layout/mapbox/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/domain/_row.py b/plotly/validators/layout/mapbox/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/domain/_row.py rename to plotly/validators/layout/mapbox/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/domain/_x.py b/plotly/validators/layout/mapbox/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/domain/_x.py rename to plotly/validators/layout/mapbox/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/domain/_y.py b/plotly/validators/layout/mapbox/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/domain/_y.py rename to plotly/validators/layout/mapbox/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/__init__.py b/plotly/validators/layout/mapbox/layer/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/__init__.py rename to plotly/validators/layout/mapbox/layer/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_below.py b/plotly/validators/layout/mapbox/layer/_below.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_below.py rename to plotly/validators/layout/mapbox/layer/_below.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_circle.py b/plotly/validators/layout/mapbox/layer/_circle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_circle.py rename to plotly/validators/layout/mapbox/layer/_circle.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_color.py b/plotly/validators/layout/mapbox/layer/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_color.py rename to plotly/validators/layout/mapbox/layer/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_coordinates.py b/plotly/validators/layout/mapbox/layer/_coordinates.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_coordinates.py rename to plotly/validators/layout/mapbox/layer/_coordinates.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_fill.py b/plotly/validators/layout/mapbox/layer/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_fill.py rename to plotly/validators/layout/mapbox/layer/_fill.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_line.py b/plotly/validators/layout/mapbox/layer/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_line.py rename to plotly/validators/layout/mapbox/layer/_line.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_maxzoom.py b/plotly/validators/layout/mapbox/layer/_maxzoom.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_maxzoom.py rename to plotly/validators/layout/mapbox/layer/_maxzoom.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_minzoom.py b/plotly/validators/layout/mapbox/layer/_minzoom.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_minzoom.py rename to plotly/validators/layout/mapbox/layer/_minzoom.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_name.py b/plotly/validators/layout/mapbox/layer/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_name.py rename to plotly/validators/layout/mapbox/layer/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_opacity.py b/plotly/validators/layout/mapbox/layer/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_opacity.py rename to plotly/validators/layout/mapbox/layer/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_source.py b/plotly/validators/layout/mapbox/layer/_source.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_source.py rename to plotly/validators/layout/mapbox/layer/_source.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_sourceattribution.py b/plotly/validators/layout/mapbox/layer/_sourceattribution.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_sourceattribution.py rename to plotly/validators/layout/mapbox/layer/_sourceattribution.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_sourcelayer.py b/plotly/validators/layout/mapbox/layer/_sourcelayer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_sourcelayer.py rename to plotly/validators/layout/mapbox/layer/_sourcelayer.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_sourcetype.py b/plotly/validators/layout/mapbox/layer/_sourcetype.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_sourcetype.py rename to plotly/validators/layout/mapbox/layer/_sourcetype.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_symbol.py b/plotly/validators/layout/mapbox/layer/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_symbol.py rename to plotly/validators/layout/mapbox/layer/_symbol.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_templateitemname.py b/plotly/validators/layout/mapbox/layer/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_templateitemname.py rename to plotly/validators/layout/mapbox/layer/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_type.py b/plotly/validators/layout/mapbox/layer/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_type.py rename to plotly/validators/layout/mapbox/layer/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/_visible.py b/plotly/validators/layout/mapbox/layer/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/_visible.py rename to plotly/validators/layout/mapbox/layer/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/circle/__init__.py b/plotly/validators/layout/mapbox/layer/circle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/circle/__init__.py rename to plotly/validators/layout/mapbox/layer/circle/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/circle/_radius.py b/plotly/validators/layout/mapbox/layer/circle/_radius.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/circle/_radius.py rename to plotly/validators/layout/mapbox/layer/circle/_radius.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/fill/__init__.py b/plotly/validators/layout/mapbox/layer/fill/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/fill/__init__.py rename to plotly/validators/layout/mapbox/layer/fill/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/fill/_outlinecolor.py b/plotly/validators/layout/mapbox/layer/fill/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/fill/_outlinecolor.py rename to plotly/validators/layout/mapbox/layer/fill/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/line/__init__.py b/plotly/validators/layout/mapbox/layer/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/line/__init__.py rename to plotly/validators/layout/mapbox/layer/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/line/_dash.py b/plotly/validators/layout/mapbox/layer/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/line/_dash.py rename to plotly/validators/layout/mapbox/layer/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/line/_dashsrc.py b/plotly/validators/layout/mapbox/layer/line/_dashsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/line/_dashsrc.py rename to plotly/validators/layout/mapbox/layer/line/_dashsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/line/_width.py b/plotly/validators/layout/mapbox/layer/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/line/_width.py rename to plotly/validators/layout/mapbox/layer/line/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/__init__.py b/plotly/validators/layout/mapbox/layer/symbol/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/__init__.py rename to plotly/validators/layout/mapbox/layer/symbol/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_icon.py b/plotly/validators/layout/mapbox/layer/symbol/_icon.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_icon.py rename to plotly/validators/layout/mapbox/layer/symbol/_icon.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_iconsize.py b/plotly/validators/layout/mapbox/layer/symbol/_iconsize.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_iconsize.py rename to plotly/validators/layout/mapbox/layer/symbol/_iconsize.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_placement.py b/plotly/validators/layout/mapbox/layer/symbol/_placement.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_placement.py rename to plotly/validators/layout/mapbox/layer/symbol/_placement.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_text.py b/plotly/validators/layout/mapbox/layer/symbol/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_text.py rename to plotly/validators/layout/mapbox/layer/symbol/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_textfont.py b/plotly/validators/layout/mapbox/layer/symbol/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_textfont.py rename to plotly/validators/layout/mapbox/layer/symbol/_textfont.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_textposition.py b/plotly/validators/layout/mapbox/layer/symbol/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/_textposition.py rename to plotly/validators/layout/mapbox/layer/symbol/_textposition.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/__init__.py b/plotly/validators/layout/mapbox/layer/symbol/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/__init__.py rename to plotly/validators/layout/mapbox/layer/symbol/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_color.py b/plotly/validators/layout/mapbox/layer/symbol/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_color.py rename to plotly/validators/layout/mapbox/layer/symbol/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_family.py b/plotly/validators/layout/mapbox/layer/symbol/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_family.py rename to plotly/validators/layout/mapbox/layer/symbol/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_size.py b/plotly/validators/layout/mapbox/layer/symbol/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_size.py rename to plotly/validators/layout/mapbox/layer/symbol/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_style.py b/plotly/validators/layout/mapbox/layer/symbol/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_style.py rename to plotly/validators/layout/mapbox/layer/symbol/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_weight.py b/plotly/validators/layout/mapbox/layer/symbol/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/mapbox/layer/symbol/textfont/_weight.py rename to plotly/validators/layout/mapbox/layer/symbol/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/margin/__init__.py b/plotly/validators/layout/margin/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/margin/__init__.py rename to plotly/validators/layout/margin/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/margin/_autoexpand.py b/plotly/validators/layout/margin/_autoexpand.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/margin/_autoexpand.py rename to plotly/validators/layout/margin/_autoexpand.py diff --git a/packages/python/plotly/plotly/validators/layout/margin/_b.py b/plotly/validators/layout/margin/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/margin/_b.py rename to plotly/validators/layout/margin/_b.py diff --git a/packages/python/plotly/plotly/validators/layout/margin/_l.py b/plotly/validators/layout/margin/_l.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/margin/_l.py rename to plotly/validators/layout/margin/_l.py diff --git a/packages/python/plotly/plotly/validators/layout/margin/_pad.py b/plotly/validators/layout/margin/_pad.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/margin/_pad.py rename to plotly/validators/layout/margin/_pad.py diff --git a/packages/python/plotly/plotly/validators/layout/margin/_r.py b/plotly/validators/layout/margin/_r.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/margin/_r.py rename to plotly/validators/layout/margin/_r.py diff --git a/packages/python/plotly/plotly/validators/layout/margin/_t.py b/plotly/validators/layout/margin/_t.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/margin/_t.py rename to plotly/validators/layout/margin/_t.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/__init__.py b/plotly/validators/layout/modebar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/__init__.py rename to plotly/validators/layout/modebar/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_activecolor.py b/plotly/validators/layout/modebar/_activecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_activecolor.py rename to plotly/validators/layout/modebar/_activecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_add.py b/plotly/validators/layout/modebar/_add.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_add.py rename to plotly/validators/layout/modebar/_add.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_addsrc.py b/plotly/validators/layout/modebar/_addsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_addsrc.py rename to plotly/validators/layout/modebar/_addsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_bgcolor.py b/plotly/validators/layout/modebar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_bgcolor.py rename to plotly/validators/layout/modebar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_color.py b/plotly/validators/layout/modebar/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_color.py rename to plotly/validators/layout/modebar/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_orientation.py b/plotly/validators/layout/modebar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_orientation.py rename to plotly/validators/layout/modebar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_remove.py b/plotly/validators/layout/modebar/_remove.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_remove.py rename to plotly/validators/layout/modebar/_remove.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_removesrc.py b/plotly/validators/layout/modebar/_removesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_removesrc.py rename to plotly/validators/layout/modebar/_removesrc.py diff --git a/packages/python/plotly/plotly/validators/layout/modebar/_uirevision.py b/plotly/validators/layout/modebar/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/modebar/_uirevision.py rename to plotly/validators/layout/modebar/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/newselection/__init__.py b/plotly/validators/layout/newselection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newselection/__init__.py rename to plotly/validators/layout/newselection/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/newselection/_line.py b/plotly/validators/layout/newselection/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newselection/_line.py rename to plotly/validators/layout/newselection/_line.py diff --git a/packages/python/plotly/plotly/validators/layout/newselection/_mode.py b/plotly/validators/layout/newselection/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newselection/_mode.py rename to plotly/validators/layout/newselection/_mode.py diff --git a/packages/python/plotly/plotly/validators/layout/newselection/line/__init__.py b/plotly/validators/layout/newselection/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newselection/line/__init__.py rename to plotly/validators/layout/newselection/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/newselection/line/_color.py b/plotly/validators/layout/newselection/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newselection/line/_color.py rename to plotly/validators/layout/newselection/line/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/newselection/line/_dash.py b/plotly/validators/layout/newselection/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newselection/line/_dash.py rename to plotly/validators/layout/newselection/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/layout/newselection/line/_width.py b/plotly/validators/layout/newselection/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newselection/line/_width.py rename to plotly/validators/layout/newselection/line/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/__init__.py b/plotly/validators/layout/newshape/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/__init__.py rename to plotly/validators/layout/newshape/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_drawdirection.py b/plotly/validators/layout/newshape/_drawdirection.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_drawdirection.py rename to plotly/validators/layout/newshape/_drawdirection.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_fillcolor.py b/plotly/validators/layout/newshape/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_fillcolor.py rename to plotly/validators/layout/newshape/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_fillrule.py b/plotly/validators/layout/newshape/_fillrule.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_fillrule.py rename to plotly/validators/layout/newshape/_fillrule.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_label.py b/plotly/validators/layout/newshape/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_label.py rename to plotly/validators/layout/newshape/_label.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_layer.py b/plotly/validators/layout/newshape/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_layer.py rename to plotly/validators/layout/newshape/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_legend.py b/plotly/validators/layout/newshape/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_legend.py rename to plotly/validators/layout/newshape/_legend.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_legendgroup.py b/plotly/validators/layout/newshape/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_legendgroup.py rename to plotly/validators/layout/newshape/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_legendgrouptitle.py b/plotly/validators/layout/newshape/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_legendgrouptitle.py rename to plotly/validators/layout/newshape/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_legendrank.py b/plotly/validators/layout/newshape/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_legendrank.py rename to plotly/validators/layout/newshape/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_legendwidth.py b/plotly/validators/layout/newshape/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_legendwidth.py rename to plotly/validators/layout/newshape/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_line.py b/plotly/validators/layout/newshape/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_line.py rename to plotly/validators/layout/newshape/_line.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_name.py b/plotly/validators/layout/newshape/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_name.py rename to plotly/validators/layout/newshape/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_opacity.py b/plotly/validators/layout/newshape/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_opacity.py rename to plotly/validators/layout/newshape/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_showlegend.py b/plotly/validators/layout/newshape/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_showlegend.py rename to plotly/validators/layout/newshape/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/_visible.py b/plotly/validators/layout/newshape/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/_visible.py rename to plotly/validators/layout/newshape/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/__init__.py b/plotly/validators/layout/newshape/label/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/__init__.py rename to plotly/validators/layout/newshape/label/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/_font.py b/plotly/validators/layout/newshape/label/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/_font.py rename to plotly/validators/layout/newshape/label/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/_padding.py b/plotly/validators/layout/newshape/label/_padding.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/_padding.py rename to plotly/validators/layout/newshape/label/_padding.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/_text.py b/plotly/validators/layout/newshape/label/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/_text.py rename to plotly/validators/layout/newshape/label/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/_textangle.py b/plotly/validators/layout/newshape/label/_textangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/_textangle.py rename to plotly/validators/layout/newshape/label/_textangle.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/_textposition.py b/plotly/validators/layout/newshape/label/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/_textposition.py rename to plotly/validators/layout/newshape/label/_textposition.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/_texttemplate.py b/plotly/validators/layout/newshape/label/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/_texttemplate.py rename to plotly/validators/layout/newshape/label/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/_xanchor.py b/plotly/validators/layout/newshape/label/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/_xanchor.py rename to plotly/validators/layout/newshape/label/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/_yanchor.py b/plotly/validators/layout/newshape/label/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/_yanchor.py rename to plotly/validators/layout/newshape/label/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/__init__.py b/plotly/validators/layout/newshape/label/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/__init__.py rename to plotly/validators/layout/newshape/label/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_color.py b/plotly/validators/layout/newshape/label/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_color.py rename to plotly/validators/layout/newshape/label/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_family.py b/plotly/validators/layout/newshape/label/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_family.py rename to plotly/validators/layout/newshape/label/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_lineposition.py b/plotly/validators/layout/newshape/label/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_lineposition.py rename to plotly/validators/layout/newshape/label/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_shadow.py b/plotly/validators/layout/newshape/label/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_shadow.py rename to plotly/validators/layout/newshape/label/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_size.py b/plotly/validators/layout/newshape/label/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_size.py rename to plotly/validators/layout/newshape/label/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_style.py b/plotly/validators/layout/newshape/label/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_style.py rename to plotly/validators/layout/newshape/label/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_textcase.py b/plotly/validators/layout/newshape/label/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_textcase.py rename to plotly/validators/layout/newshape/label/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_variant.py b/plotly/validators/layout/newshape/label/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_variant.py rename to plotly/validators/layout/newshape/label/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/label/font/_weight.py b/plotly/validators/layout/newshape/label/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/label/font/_weight.py rename to plotly/validators/layout/newshape/label/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/__init__.py b/plotly/validators/layout/newshape/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/__init__.py rename to plotly/validators/layout/newshape/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/_font.py b/plotly/validators/layout/newshape/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/_font.py rename to plotly/validators/layout/newshape/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/_text.py b/plotly/validators/layout/newshape/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/_text.py rename to plotly/validators/layout/newshape/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/__init__.py b/plotly/validators/layout/newshape/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/__init__.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_color.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_color.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_family.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_family.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_lineposition.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_lineposition.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_shadow.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_shadow.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_size.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_size.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_style.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_style.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_textcase.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_textcase.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_variant.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_variant.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_weight.py b/plotly/validators/layout/newshape/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/legendgrouptitle/font/_weight.py rename to plotly/validators/layout/newshape/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/line/__init__.py b/plotly/validators/layout/newshape/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/line/__init__.py rename to plotly/validators/layout/newshape/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/line/_color.py b/plotly/validators/layout/newshape/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/line/_color.py rename to plotly/validators/layout/newshape/line/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/line/_dash.py b/plotly/validators/layout/newshape/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/line/_dash.py rename to plotly/validators/layout/newshape/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/layout/newshape/line/_width.py b/plotly/validators/layout/newshape/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/newshape/line/_width.py rename to plotly/validators/layout/newshape/line/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/__init__.py b/plotly/validators/layout/polar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/__init__.py rename to plotly/validators/layout/polar/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_angularaxis.py b/plotly/validators/layout/polar/_angularaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_angularaxis.py rename to plotly/validators/layout/polar/_angularaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_bargap.py b/plotly/validators/layout/polar/_bargap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_bargap.py rename to plotly/validators/layout/polar/_bargap.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_barmode.py b/plotly/validators/layout/polar/_barmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_barmode.py rename to plotly/validators/layout/polar/_barmode.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_bgcolor.py b/plotly/validators/layout/polar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_bgcolor.py rename to plotly/validators/layout/polar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_domain.py b/plotly/validators/layout/polar/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_domain.py rename to plotly/validators/layout/polar/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_gridshape.py b/plotly/validators/layout/polar/_gridshape.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_gridshape.py rename to plotly/validators/layout/polar/_gridshape.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_hole.py b/plotly/validators/layout/polar/_hole.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_hole.py rename to plotly/validators/layout/polar/_hole.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_radialaxis.py b/plotly/validators/layout/polar/_radialaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_radialaxis.py rename to plotly/validators/layout/polar/_radialaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_sector.py b/plotly/validators/layout/polar/_sector.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_sector.py rename to plotly/validators/layout/polar/_sector.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/_uirevision.py b/plotly/validators/layout/polar/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/_uirevision.py rename to plotly/validators/layout/polar/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/__init__.py b/plotly/validators/layout/polar/angularaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/__init__.py rename to plotly/validators/layout/polar/angularaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_autotypenumbers.py b/plotly/validators/layout/polar/angularaxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_autotypenumbers.py rename to plotly/validators/layout/polar/angularaxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_categoryarray.py b/plotly/validators/layout/polar/angularaxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_categoryarray.py rename to plotly/validators/layout/polar/angularaxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_categoryarraysrc.py b/plotly/validators/layout/polar/angularaxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_categoryarraysrc.py rename to plotly/validators/layout/polar/angularaxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_categoryorder.py b/plotly/validators/layout/polar/angularaxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_categoryorder.py rename to plotly/validators/layout/polar/angularaxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_color.py b/plotly/validators/layout/polar/angularaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_color.py rename to plotly/validators/layout/polar/angularaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_direction.py b/plotly/validators/layout/polar/angularaxis/_direction.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_direction.py rename to plotly/validators/layout/polar/angularaxis/_direction.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_dtick.py b/plotly/validators/layout/polar/angularaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_dtick.py rename to plotly/validators/layout/polar/angularaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_exponentformat.py b/plotly/validators/layout/polar/angularaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_exponentformat.py rename to plotly/validators/layout/polar/angularaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_gridcolor.py b/plotly/validators/layout/polar/angularaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_gridcolor.py rename to plotly/validators/layout/polar/angularaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_griddash.py b/plotly/validators/layout/polar/angularaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_griddash.py rename to plotly/validators/layout/polar/angularaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_gridwidth.py b/plotly/validators/layout/polar/angularaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_gridwidth.py rename to plotly/validators/layout/polar/angularaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_hoverformat.py b/plotly/validators/layout/polar/angularaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_hoverformat.py rename to plotly/validators/layout/polar/angularaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_labelalias.py b/plotly/validators/layout/polar/angularaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_labelalias.py rename to plotly/validators/layout/polar/angularaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_layer.py b/plotly/validators/layout/polar/angularaxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_layer.py rename to plotly/validators/layout/polar/angularaxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_linecolor.py b/plotly/validators/layout/polar/angularaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_linecolor.py rename to plotly/validators/layout/polar/angularaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_linewidth.py b/plotly/validators/layout/polar/angularaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_linewidth.py rename to plotly/validators/layout/polar/angularaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_minexponent.py b/plotly/validators/layout/polar/angularaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_minexponent.py rename to plotly/validators/layout/polar/angularaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_nticks.py b/plotly/validators/layout/polar/angularaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_nticks.py rename to plotly/validators/layout/polar/angularaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_period.py b/plotly/validators/layout/polar/angularaxis/_period.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_period.py rename to plotly/validators/layout/polar/angularaxis/_period.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_rotation.py b/plotly/validators/layout/polar/angularaxis/_rotation.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_rotation.py rename to plotly/validators/layout/polar/angularaxis/_rotation.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_separatethousands.py b/plotly/validators/layout/polar/angularaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_separatethousands.py rename to plotly/validators/layout/polar/angularaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showexponent.py b/plotly/validators/layout/polar/angularaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showexponent.py rename to plotly/validators/layout/polar/angularaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showgrid.py b/plotly/validators/layout/polar/angularaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showgrid.py rename to plotly/validators/layout/polar/angularaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showline.py b/plotly/validators/layout/polar/angularaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showline.py rename to plotly/validators/layout/polar/angularaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showticklabels.py b/plotly/validators/layout/polar/angularaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showticklabels.py rename to plotly/validators/layout/polar/angularaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showtickprefix.py b/plotly/validators/layout/polar/angularaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showtickprefix.py rename to plotly/validators/layout/polar/angularaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showticksuffix.py b/plotly/validators/layout/polar/angularaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_showticksuffix.py rename to plotly/validators/layout/polar/angularaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_thetaunit.py b/plotly/validators/layout/polar/angularaxis/_thetaunit.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_thetaunit.py rename to plotly/validators/layout/polar/angularaxis/_thetaunit.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tick0.py b/plotly/validators/layout/polar/angularaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tick0.py rename to plotly/validators/layout/polar/angularaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickangle.py b/plotly/validators/layout/polar/angularaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickangle.py rename to plotly/validators/layout/polar/angularaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickcolor.py b/plotly/validators/layout/polar/angularaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickcolor.py rename to plotly/validators/layout/polar/angularaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickfont.py b/plotly/validators/layout/polar/angularaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickfont.py rename to plotly/validators/layout/polar/angularaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickformat.py b/plotly/validators/layout/polar/angularaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickformat.py rename to plotly/validators/layout/polar/angularaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickformatstopdefaults.py b/plotly/validators/layout/polar/angularaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickformatstopdefaults.py rename to plotly/validators/layout/polar/angularaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickformatstops.py b/plotly/validators/layout/polar/angularaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickformatstops.py rename to plotly/validators/layout/polar/angularaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticklabelstep.py b/plotly/validators/layout/polar/angularaxis/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticklabelstep.py rename to plotly/validators/layout/polar/angularaxis/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticklen.py b/plotly/validators/layout/polar/angularaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticklen.py rename to plotly/validators/layout/polar/angularaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickmode.py b/plotly/validators/layout/polar/angularaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickmode.py rename to plotly/validators/layout/polar/angularaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickprefix.py b/plotly/validators/layout/polar/angularaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickprefix.py rename to plotly/validators/layout/polar/angularaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticks.py b/plotly/validators/layout/polar/angularaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticks.py rename to plotly/validators/layout/polar/angularaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticksuffix.py b/plotly/validators/layout/polar/angularaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticksuffix.py rename to plotly/validators/layout/polar/angularaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticktext.py b/plotly/validators/layout/polar/angularaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticktext.py rename to plotly/validators/layout/polar/angularaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticktextsrc.py b/plotly/validators/layout/polar/angularaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_ticktextsrc.py rename to plotly/validators/layout/polar/angularaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickvals.py b/plotly/validators/layout/polar/angularaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickvals.py rename to plotly/validators/layout/polar/angularaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickvalssrc.py b/plotly/validators/layout/polar/angularaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickvalssrc.py rename to plotly/validators/layout/polar/angularaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickwidth.py b/plotly/validators/layout/polar/angularaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_tickwidth.py rename to plotly/validators/layout/polar/angularaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_type.py b/plotly/validators/layout/polar/angularaxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_type.py rename to plotly/validators/layout/polar/angularaxis/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_uirevision.py b/plotly/validators/layout/polar/angularaxis/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_uirevision.py rename to plotly/validators/layout/polar/angularaxis/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/_visible.py b/plotly/validators/layout/polar/angularaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/_visible.py rename to plotly/validators/layout/polar/angularaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/__init__.py b/plotly/validators/layout/polar/angularaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/__init__.py rename to plotly/validators/layout/polar/angularaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_color.py b/plotly/validators/layout/polar/angularaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_color.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_family.py b/plotly/validators/layout/polar/angularaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_family.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_lineposition.py b/plotly/validators/layout/polar/angularaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_lineposition.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_shadow.py b/plotly/validators/layout/polar/angularaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_shadow.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_size.py b/plotly/validators/layout/polar/angularaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_size.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_style.py b/plotly/validators/layout/polar/angularaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_style.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_textcase.py b/plotly/validators/layout/polar/angularaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_textcase.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_variant.py b/plotly/validators/layout/polar/angularaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_variant.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_weight.py b/plotly/validators/layout/polar/angularaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickfont/_weight.py rename to plotly/validators/layout/polar/angularaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/__init__.py b/plotly/validators/layout/polar/angularaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/__init__.py rename to plotly/validators/layout/polar/angularaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/polar/angularaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/polar/angularaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_enabled.py b/plotly/validators/layout/polar/angularaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_enabled.py rename to plotly/validators/layout/polar/angularaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_name.py b/plotly/validators/layout/polar/angularaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_name.py rename to plotly/validators/layout/polar/angularaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/polar/angularaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/polar/angularaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_value.py b/plotly/validators/layout/polar/angularaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/angularaxis/tickformatstop/_value.py rename to plotly/validators/layout/polar/angularaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/domain/__init__.py b/plotly/validators/layout/polar/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/domain/__init__.py rename to plotly/validators/layout/polar/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/domain/_column.py b/plotly/validators/layout/polar/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/domain/_column.py rename to plotly/validators/layout/polar/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/domain/_row.py b/plotly/validators/layout/polar/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/domain/_row.py rename to plotly/validators/layout/polar/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/domain/_x.py b/plotly/validators/layout/polar/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/domain/_x.py rename to plotly/validators/layout/polar/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/domain/_y.py b/plotly/validators/layout/polar/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/domain/_y.py rename to plotly/validators/layout/polar/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/__init__.py b/plotly/validators/layout/polar/radialaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/__init__.py rename to plotly/validators/layout/polar/radialaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_angle.py b/plotly/validators/layout/polar/radialaxis/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_angle.py rename to plotly/validators/layout/polar/radialaxis/_angle.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_autorange.py b/plotly/validators/layout/polar/radialaxis/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_autorange.py rename to plotly/validators/layout/polar/radialaxis/_autorange.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_autorangeoptions.py b/plotly/validators/layout/polar/radialaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_autorangeoptions.py rename to plotly/validators/layout/polar/radialaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_autotickangles.py b/plotly/validators/layout/polar/radialaxis/_autotickangles.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_autotickangles.py rename to plotly/validators/layout/polar/radialaxis/_autotickangles.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_autotypenumbers.py b/plotly/validators/layout/polar/radialaxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_autotypenumbers.py rename to plotly/validators/layout/polar/radialaxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_calendar.py b/plotly/validators/layout/polar/radialaxis/_calendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_calendar.py rename to plotly/validators/layout/polar/radialaxis/_calendar.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_categoryarray.py b/plotly/validators/layout/polar/radialaxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_categoryarray.py rename to plotly/validators/layout/polar/radialaxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_categoryarraysrc.py b/plotly/validators/layout/polar/radialaxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_categoryarraysrc.py rename to plotly/validators/layout/polar/radialaxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_categoryorder.py b/plotly/validators/layout/polar/radialaxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_categoryorder.py rename to plotly/validators/layout/polar/radialaxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_color.py b/plotly/validators/layout/polar/radialaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_color.py rename to plotly/validators/layout/polar/radialaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_dtick.py b/plotly/validators/layout/polar/radialaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_dtick.py rename to plotly/validators/layout/polar/radialaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_exponentformat.py b/plotly/validators/layout/polar/radialaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_exponentformat.py rename to plotly/validators/layout/polar/radialaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_gridcolor.py b/plotly/validators/layout/polar/radialaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_gridcolor.py rename to plotly/validators/layout/polar/radialaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_griddash.py b/plotly/validators/layout/polar/radialaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_griddash.py rename to plotly/validators/layout/polar/radialaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_gridwidth.py b/plotly/validators/layout/polar/radialaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_gridwidth.py rename to plotly/validators/layout/polar/radialaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_hoverformat.py b/plotly/validators/layout/polar/radialaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_hoverformat.py rename to plotly/validators/layout/polar/radialaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_labelalias.py b/plotly/validators/layout/polar/radialaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_labelalias.py rename to plotly/validators/layout/polar/radialaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_layer.py b/plotly/validators/layout/polar/radialaxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_layer.py rename to plotly/validators/layout/polar/radialaxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_linecolor.py b/plotly/validators/layout/polar/radialaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_linecolor.py rename to plotly/validators/layout/polar/radialaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_linewidth.py b/plotly/validators/layout/polar/radialaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_linewidth.py rename to plotly/validators/layout/polar/radialaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_maxallowed.py b/plotly/validators/layout/polar/radialaxis/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_maxallowed.py rename to plotly/validators/layout/polar/radialaxis/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_minallowed.py b/plotly/validators/layout/polar/radialaxis/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_minallowed.py rename to plotly/validators/layout/polar/radialaxis/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_minexponent.py b/plotly/validators/layout/polar/radialaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_minexponent.py rename to plotly/validators/layout/polar/radialaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_nticks.py b/plotly/validators/layout/polar/radialaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_nticks.py rename to plotly/validators/layout/polar/radialaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_range.py b/plotly/validators/layout/polar/radialaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_range.py rename to plotly/validators/layout/polar/radialaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_rangemode.py b/plotly/validators/layout/polar/radialaxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_rangemode.py rename to plotly/validators/layout/polar/radialaxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_separatethousands.py b/plotly/validators/layout/polar/radialaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_separatethousands.py rename to plotly/validators/layout/polar/radialaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showexponent.py b/plotly/validators/layout/polar/radialaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showexponent.py rename to plotly/validators/layout/polar/radialaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showgrid.py b/plotly/validators/layout/polar/radialaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showgrid.py rename to plotly/validators/layout/polar/radialaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showline.py b/plotly/validators/layout/polar/radialaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showline.py rename to plotly/validators/layout/polar/radialaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showticklabels.py b/plotly/validators/layout/polar/radialaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showticklabels.py rename to plotly/validators/layout/polar/radialaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showtickprefix.py b/plotly/validators/layout/polar/radialaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showtickprefix.py rename to plotly/validators/layout/polar/radialaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showticksuffix.py b/plotly/validators/layout/polar/radialaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_showticksuffix.py rename to plotly/validators/layout/polar/radialaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_side.py b/plotly/validators/layout/polar/radialaxis/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_side.py rename to plotly/validators/layout/polar/radialaxis/_side.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tick0.py b/plotly/validators/layout/polar/radialaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tick0.py rename to plotly/validators/layout/polar/radialaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickangle.py b/plotly/validators/layout/polar/radialaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickangle.py rename to plotly/validators/layout/polar/radialaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickcolor.py b/plotly/validators/layout/polar/radialaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickcolor.py rename to plotly/validators/layout/polar/radialaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickfont.py b/plotly/validators/layout/polar/radialaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickfont.py rename to plotly/validators/layout/polar/radialaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickformat.py b/plotly/validators/layout/polar/radialaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickformat.py rename to plotly/validators/layout/polar/radialaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickformatstopdefaults.py b/plotly/validators/layout/polar/radialaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickformatstopdefaults.py rename to plotly/validators/layout/polar/radialaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickformatstops.py b/plotly/validators/layout/polar/radialaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickformatstops.py rename to plotly/validators/layout/polar/radialaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticklabelstep.py b/plotly/validators/layout/polar/radialaxis/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticklabelstep.py rename to plotly/validators/layout/polar/radialaxis/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticklen.py b/plotly/validators/layout/polar/radialaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticklen.py rename to plotly/validators/layout/polar/radialaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickmode.py b/plotly/validators/layout/polar/radialaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickmode.py rename to plotly/validators/layout/polar/radialaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickprefix.py b/plotly/validators/layout/polar/radialaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickprefix.py rename to plotly/validators/layout/polar/radialaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticks.py b/plotly/validators/layout/polar/radialaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticks.py rename to plotly/validators/layout/polar/radialaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticksuffix.py b/plotly/validators/layout/polar/radialaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticksuffix.py rename to plotly/validators/layout/polar/radialaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticktext.py b/plotly/validators/layout/polar/radialaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticktext.py rename to plotly/validators/layout/polar/radialaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticktextsrc.py b/plotly/validators/layout/polar/radialaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_ticktextsrc.py rename to plotly/validators/layout/polar/radialaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickvals.py b/plotly/validators/layout/polar/radialaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickvals.py rename to plotly/validators/layout/polar/radialaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickvalssrc.py b/plotly/validators/layout/polar/radialaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickvalssrc.py rename to plotly/validators/layout/polar/radialaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickwidth.py b/plotly/validators/layout/polar/radialaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_tickwidth.py rename to plotly/validators/layout/polar/radialaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_title.py b/plotly/validators/layout/polar/radialaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_title.py rename to plotly/validators/layout/polar/radialaxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_type.py b/plotly/validators/layout/polar/radialaxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_type.py rename to plotly/validators/layout/polar/radialaxis/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_uirevision.py b/plotly/validators/layout/polar/radialaxis/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_uirevision.py rename to plotly/validators/layout/polar/radialaxis/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/_visible.py b/plotly/validators/layout/polar/radialaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/_visible.py rename to plotly/validators/layout/polar/radialaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/__init__.py b/plotly/validators/layout/polar/radialaxis/autorangeoptions/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/__init__.py rename to plotly/validators/layout/polar/radialaxis/autorangeoptions/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_clipmax.py b/plotly/validators/layout/polar/radialaxis/autorangeoptions/_clipmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_clipmax.py rename to plotly/validators/layout/polar/radialaxis/autorangeoptions/_clipmax.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_clipmin.py b/plotly/validators/layout/polar/radialaxis/autorangeoptions/_clipmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_clipmin.py rename to plotly/validators/layout/polar/radialaxis/autorangeoptions/_clipmin.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_include.py b/plotly/validators/layout/polar/radialaxis/autorangeoptions/_include.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_include.py rename to plotly/validators/layout/polar/radialaxis/autorangeoptions/_include.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_includesrc.py b/plotly/validators/layout/polar/radialaxis/autorangeoptions/_includesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_includesrc.py rename to plotly/validators/layout/polar/radialaxis/autorangeoptions/_includesrc.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_maxallowed.py b/plotly/validators/layout/polar/radialaxis/autorangeoptions/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_maxallowed.py rename to plotly/validators/layout/polar/radialaxis/autorangeoptions/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_minallowed.py b/plotly/validators/layout/polar/radialaxis/autorangeoptions/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/autorangeoptions/_minallowed.py rename to plotly/validators/layout/polar/radialaxis/autorangeoptions/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/__init__.py b/plotly/validators/layout/polar/radialaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/__init__.py rename to plotly/validators/layout/polar/radialaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_color.py b/plotly/validators/layout/polar/radialaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_color.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_family.py b/plotly/validators/layout/polar/radialaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_family.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_lineposition.py b/plotly/validators/layout/polar/radialaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_lineposition.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_shadow.py b/plotly/validators/layout/polar/radialaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_shadow.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_size.py b/plotly/validators/layout/polar/radialaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_size.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_style.py b/plotly/validators/layout/polar/radialaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_style.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_textcase.py b/plotly/validators/layout/polar/radialaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_textcase.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_variant.py b/plotly/validators/layout/polar/radialaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_variant.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_weight.py b/plotly/validators/layout/polar/radialaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickfont/_weight.py rename to plotly/validators/layout/polar/radialaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/__init__.py b/plotly/validators/layout/polar/radialaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/__init__.py rename to plotly/validators/layout/polar/radialaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/polar/radialaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/polar/radialaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_enabled.py b/plotly/validators/layout/polar/radialaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_enabled.py rename to plotly/validators/layout/polar/radialaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_name.py b/plotly/validators/layout/polar/radialaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_name.py rename to plotly/validators/layout/polar/radialaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/polar/radialaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/polar/radialaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_value.py b/plotly/validators/layout/polar/radialaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/tickformatstop/_value.py rename to plotly/validators/layout/polar/radialaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/__init__.py b/plotly/validators/layout/polar/radialaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/__init__.py rename to plotly/validators/layout/polar/radialaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/_font.py b/plotly/validators/layout/polar/radialaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/_font.py rename to plotly/validators/layout/polar/radialaxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/_text.py b/plotly/validators/layout/polar/radialaxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/_text.py rename to plotly/validators/layout/polar/radialaxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/__init__.py b/plotly/validators/layout/polar/radialaxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/__init__.py rename to plotly/validators/layout/polar/radialaxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_color.py b/plotly/validators/layout/polar/radialaxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_color.py rename to plotly/validators/layout/polar/radialaxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_family.py b/plotly/validators/layout/polar/radialaxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_family.py rename to plotly/validators/layout/polar/radialaxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_lineposition.py b/plotly/validators/layout/polar/radialaxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_lineposition.py rename to plotly/validators/layout/polar/radialaxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_shadow.py b/plotly/validators/layout/polar/radialaxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_shadow.py rename to plotly/validators/layout/polar/radialaxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_size.py b/plotly/validators/layout/polar/radialaxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_size.py rename to plotly/validators/layout/polar/radialaxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_style.py b/plotly/validators/layout/polar/radialaxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_style.py rename to plotly/validators/layout/polar/radialaxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_textcase.py b/plotly/validators/layout/polar/radialaxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_textcase.py rename to plotly/validators/layout/polar/radialaxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_variant.py b/plotly/validators/layout/polar/radialaxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_variant.py rename to plotly/validators/layout/polar/radialaxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_weight.py b/plotly/validators/layout/polar/radialaxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/polar/radialaxis/title/font/_weight.py rename to plotly/validators/layout/polar/radialaxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/__init__.py b/plotly/validators/layout/scene/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/__init__.py rename to plotly/validators/layout/scene/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_annotationdefaults.py b/plotly/validators/layout/scene/_annotationdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_annotationdefaults.py rename to plotly/validators/layout/scene/_annotationdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_annotations.py b/plotly/validators/layout/scene/_annotations.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_annotations.py rename to plotly/validators/layout/scene/_annotations.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_aspectmode.py b/plotly/validators/layout/scene/_aspectmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_aspectmode.py rename to plotly/validators/layout/scene/_aspectmode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_aspectratio.py b/plotly/validators/layout/scene/_aspectratio.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_aspectratio.py rename to plotly/validators/layout/scene/_aspectratio.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_bgcolor.py b/plotly/validators/layout/scene/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_bgcolor.py rename to plotly/validators/layout/scene/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_camera.py b/plotly/validators/layout/scene/_camera.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_camera.py rename to plotly/validators/layout/scene/_camera.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_domain.py b/plotly/validators/layout/scene/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_domain.py rename to plotly/validators/layout/scene/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_dragmode.py b/plotly/validators/layout/scene/_dragmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_dragmode.py rename to plotly/validators/layout/scene/_dragmode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_hovermode.py b/plotly/validators/layout/scene/_hovermode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_hovermode.py rename to plotly/validators/layout/scene/_hovermode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_uirevision.py b/plotly/validators/layout/scene/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_uirevision.py rename to plotly/validators/layout/scene/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_xaxis.py b/plotly/validators/layout/scene/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_xaxis.py rename to plotly/validators/layout/scene/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_yaxis.py b/plotly/validators/layout/scene/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_yaxis.py rename to plotly/validators/layout/scene/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/_zaxis.py b/plotly/validators/layout/scene/_zaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/_zaxis.py rename to plotly/validators/layout/scene/_zaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/__init__.py b/plotly/validators/layout/scene/annotation/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/__init__.py rename to plotly/validators/layout/scene/annotation/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_align.py b/plotly/validators/layout/scene/annotation/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_align.py rename to plotly/validators/layout/scene/annotation/_align.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowcolor.py b/plotly/validators/layout/scene/annotation/_arrowcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowcolor.py rename to plotly/validators/layout/scene/annotation/_arrowcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowhead.py b/plotly/validators/layout/scene/annotation/_arrowhead.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowhead.py rename to plotly/validators/layout/scene/annotation/_arrowhead.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowside.py b/plotly/validators/layout/scene/annotation/_arrowside.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowside.py rename to plotly/validators/layout/scene/annotation/_arrowside.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowsize.py b/plotly/validators/layout/scene/annotation/_arrowsize.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowsize.py rename to plotly/validators/layout/scene/annotation/_arrowsize.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowwidth.py b/plotly/validators/layout/scene/annotation/_arrowwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_arrowwidth.py rename to plotly/validators/layout/scene/annotation/_arrowwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_ax.py b/plotly/validators/layout/scene/annotation/_ax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_ax.py rename to plotly/validators/layout/scene/annotation/_ax.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_ay.py b/plotly/validators/layout/scene/annotation/_ay.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_ay.py rename to plotly/validators/layout/scene/annotation/_ay.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_bgcolor.py b/plotly/validators/layout/scene/annotation/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_bgcolor.py rename to plotly/validators/layout/scene/annotation/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_bordercolor.py b/plotly/validators/layout/scene/annotation/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_bordercolor.py rename to plotly/validators/layout/scene/annotation/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_borderpad.py b/plotly/validators/layout/scene/annotation/_borderpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_borderpad.py rename to plotly/validators/layout/scene/annotation/_borderpad.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_borderwidth.py b/plotly/validators/layout/scene/annotation/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_borderwidth.py rename to plotly/validators/layout/scene/annotation/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_captureevents.py b/plotly/validators/layout/scene/annotation/_captureevents.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_captureevents.py rename to plotly/validators/layout/scene/annotation/_captureevents.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_font.py b/plotly/validators/layout/scene/annotation/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_font.py rename to plotly/validators/layout/scene/annotation/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_height.py b/plotly/validators/layout/scene/annotation/_height.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_height.py rename to plotly/validators/layout/scene/annotation/_height.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_hoverlabel.py b/plotly/validators/layout/scene/annotation/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_hoverlabel.py rename to plotly/validators/layout/scene/annotation/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_hovertext.py b/plotly/validators/layout/scene/annotation/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_hovertext.py rename to plotly/validators/layout/scene/annotation/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_name.py b/plotly/validators/layout/scene/annotation/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_name.py rename to plotly/validators/layout/scene/annotation/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_opacity.py b/plotly/validators/layout/scene/annotation/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_opacity.py rename to plotly/validators/layout/scene/annotation/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_showarrow.py b/plotly/validators/layout/scene/annotation/_showarrow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_showarrow.py rename to plotly/validators/layout/scene/annotation/_showarrow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_standoff.py b/plotly/validators/layout/scene/annotation/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_standoff.py rename to plotly/validators/layout/scene/annotation/_standoff.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_startarrowhead.py b/plotly/validators/layout/scene/annotation/_startarrowhead.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_startarrowhead.py rename to plotly/validators/layout/scene/annotation/_startarrowhead.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_startarrowsize.py b/plotly/validators/layout/scene/annotation/_startarrowsize.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_startarrowsize.py rename to plotly/validators/layout/scene/annotation/_startarrowsize.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_startstandoff.py b/plotly/validators/layout/scene/annotation/_startstandoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_startstandoff.py rename to plotly/validators/layout/scene/annotation/_startstandoff.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_templateitemname.py b/plotly/validators/layout/scene/annotation/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_templateitemname.py rename to plotly/validators/layout/scene/annotation/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_text.py b/plotly/validators/layout/scene/annotation/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_text.py rename to plotly/validators/layout/scene/annotation/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_textangle.py b/plotly/validators/layout/scene/annotation/_textangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_textangle.py rename to plotly/validators/layout/scene/annotation/_textangle.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_valign.py b/plotly/validators/layout/scene/annotation/_valign.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_valign.py rename to plotly/validators/layout/scene/annotation/_valign.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_visible.py b/plotly/validators/layout/scene/annotation/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_visible.py rename to plotly/validators/layout/scene/annotation/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_width.py b/plotly/validators/layout/scene/annotation/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_width.py rename to plotly/validators/layout/scene/annotation/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_x.py b/plotly/validators/layout/scene/annotation/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_x.py rename to plotly/validators/layout/scene/annotation/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_xanchor.py b/plotly/validators/layout/scene/annotation/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_xanchor.py rename to plotly/validators/layout/scene/annotation/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_xshift.py b/plotly/validators/layout/scene/annotation/_xshift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_xshift.py rename to plotly/validators/layout/scene/annotation/_xshift.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_y.py b/plotly/validators/layout/scene/annotation/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_y.py rename to plotly/validators/layout/scene/annotation/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_yanchor.py b/plotly/validators/layout/scene/annotation/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_yanchor.py rename to plotly/validators/layout/scene/annotation/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_yshift.py b/plotly/validators/layout/scene/annotation/_yshift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_yshift.py rename to plotly/validators/layout/scene/annotation/_yshift.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/_z.py b/plotly/validators/layout/scene/annotation/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/_z.py rename to plotly/validators/layout/scene/annotation/_z.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/__init__.py b/plotly/validators/layout/scene/annotation/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/__init__.py rename to plotly/validators/layout/scene/annotation/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_color.py b/plotly/validators/layout/scene/annotation/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_color.py rename to plotly/validators/layout/scene/annotation/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_family.py b/plotly/validators/layout/scene/annotation/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_family.py rename to plotly/validators/layout/scene/annotation/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_lineposition.py b/plotly/validators/layout/scene/annotation/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_lineposition.py rename to plotly/validators/layout/scene/annotation/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_shadow.py b/plotly/validators/layout/scene/annotation/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_shadow.py rename to plotly/validators/layout/scene/annotation/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_size.py b/plotly/validators/layout/scene/annotation/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_size.py rename to plotly/validators/layout/scene/annotation/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_style.py b/plotly/validators/layout/scene/annotation/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_style.py rename to plotly/validators/layout/scene/annotation/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_textcase.py b/plotly/validators/layout/scene/annotation/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_textcase.py rename to plotly/validators/layout/scene/annotation/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_variant.py b/plotly/validators/layout/scene/annotation/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_variant.py rename to plotly/validators/layout/scene/annotation/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/font/_weight.py b/plotly/validators/layout/scene/annotation/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/font/_weight.py rename to plotly/validators/layout/scene/annotation/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/__init__.py b/plotly/validators/layout/scene/annotation/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/__init__.py rename to plotly/validators/layout/scene/annotation/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/_bgcolor.py b/plotly/validators/layout/scene/annotation/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/_bgcolor.py rename to plotly/validators/layout/scene/annotation/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/_bordercolor.py b/plotly/validators/layout/scene/annotation/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/_bordercolor.py rename to plotly/validators/layout/scene/annotation/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/_font.py b/plotly/validators/layout/scene/annotation/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/_font.py rename to plotly/validators/layout/scene/annotation/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/__init__.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/__init__.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_color.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_color.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_family.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_family.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_lineposition.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_lineposition.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_shadow.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_shadow.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_size.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_size.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_style.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_style.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_textcase.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_textcase.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_variant.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_variant.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_weight.py b/plotly/validators/layout/scene/annotation/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/annotation/hoverlabel/font/_weight.py rename to plotly/validators/layout/scene/annotation/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/aspectratio/__init__.py b/plotly/validators/layout/scene/aspectratio/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/aspectratio/__init__.py rename to plotly/validators/layout/scene/aspectratio/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/aspectratio/_x.py b/plotly/validators/layout/scene/aspectratio/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/aspectratio/_x.py rename to plotly/validators/layout/scene/aspectratio/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/aspectratio/_y.py b/plotly/validators/layout/scene/aspectratio/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/aspectratio/_y.py rename to plotly/validators/layout/scene/aspectratio/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/aspectratio/_z.py b/plotly/validators/layout/scene/aspectratio/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/aspectratio/_z.py rename to plotly/validators/layout/scene/aspectratio/_z.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/__init__.py b/plotly/validators/layout/scene/camera/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/__init__.py rename to plotly/validators/layout/scene/camera/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/_center.py b/plotly/validators/layout/scene/camera/_center.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/_center.py rename to plotly/validators/layout/scene/camera/_center.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/_eye.py b/plotly/validators/layout/scene/camera/_eye.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/_eye.py rename to plotly/validators/layout/scene/camera/_eye.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/_projection.py b/plotly/validators/layout/scene/camera/_projection.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/_projection.py rename to plotly/validators/layout/scene/camera/_projection.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/_up.py b/plotly/validators/layout/scene/camera/_up.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/_up.py rename to plotly/validators/layout/scene/camera/_up.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/center/__init__.py b/plotly/validators/layout/scene/camera/center/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/center/__init__.py rename to plotly/validators/layout/scene/camera/center/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/center/_x.py b/plotly/validators/layout/scene/camera/center/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/center/_x.py rename to plotly/validators/layout/scene/camera/center/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/center/_y.py b/plotly/validators/layout/scene/camera/center/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/center/_y.py rename to plotly/validators/layout/scene/camera/center/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/center/_z.py b/plotly/validators/layout/scene/camera/center/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/center/_z.py rename to plotly/validators/layout/scene/camera/center/_z.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/eye/__init__.py b/plotly/validators/layout/scene/camera/eye/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/eye/__init__.py rename to plotly/validators/layout/scene/camera/eye/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/eye/_x.py b/plotly/validators/layout/scene/camera/eye/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/eye/_x.py rename to plotly/validators/layout/scene/camera/eye/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/eye/_y.py b/plotly/validators/layout/scene/camera/eye/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/eye/_y.py rename to plotly/validators/layout/scene/camera/eye/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/eye/_z.py b/plotly/validators/layout/scene/camera/eye/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/eye/_z.py rename to plotly/validators/layout/scene/camera/eye/_z.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/projection/__init__.py b/plotly/validators/layout/scene/camera/projection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/projection/__init__.py rename to plotly/validators/layout/scene/camera/projection/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/projection/_type.py b/plotly/validators/layout/scene/camera/projection/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/projection/_type.py rename to plotly/validators/layout/scene/camera/projection/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/up/__init__.py b/plotly/validators/layout/scene/camera/up/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/up/__init__.py rename to plotly/validators/layout/scene/camera/up/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/up/_x.py b/plotly/validators/layout/scene/camera/up/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/up/_x.py rename to plotly/validators/layout/scene/camera/up/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/up/_y.py b/plotly/validators/layout/scene/camera/up/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/up/_y.py rename to plotly/validators/layout/scene/camera/up/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/camera/up/_z.py b/plotly/validators/layout/scene/camera/up/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/camera/up/_z.py rename to plotly/validators/layout/scene/camera/up/_z.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/domain/__init__.py b/plotly/validators/layout/scene/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/domain/__init__.py rename to plotly/validators/layout/scene/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/domain/_column.py b/plotly/validators/layout/scene/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/domain/_column.py rename to plotly/validators/layout/scene/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/domain/_row.py b/plotly/validators/layout/scene/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/domain/_row.py rename to plotly/validators/layout/scene/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/domain/_x.py b/plotly/validators/layout/scene/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/domain/_x.py rename to plotly/validators/layout/scene/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/domain/_y.py b/plotly/validators/layout/scene/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/domain/_y.py rename to plotly/validators/layout/scene/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/__init__.py b/plotly/validators/layout/scene/xaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/__init__.py rename to plotly/validators/layout/scene/xaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_autorange.py b/plotly/validators/layout/scene/xaxis/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_autorange.py rename to plotly/validators/layout/scene/xaxis/_autorange.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_autorangeoptions.py b/plotly/validators/layout/scene/xaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_autorangeoptions.py rename to plotly/validators/layout/scene/xaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_autotypenumbers.py b/plotly/validators/layout/scene/xaxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_autotypenumbers.py rename to plotly/validators/layout/scene/xaxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_backgroundcolor.py b/plotly/validators/layout/scene/xaxis/_backgroundcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_backgroundcolor.py rename to plotly/validators/layout/scene/xaxis/_backgroundcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_calendar.py b/plotly/validators/layout/scene/xaxis/_calendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_calendar.py rename to plotly/validators/layout/scene/xaxis/_calendar.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_categoryarray.py b/plotly/validators/layout/scene/xaxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_categoryarray.py rename to plotly/validators/layout/scene/xaxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_categoryarraysrc.py b/plotly/validators/layout/scene/xaxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_categoryarraysrc.py rename to plotly/validators/layout/scene/xaxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_categoryorder.py b/plotly/validators/layout/scene/xaxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_categoryorder.py rename to plotly/validators/layout/scene/xaxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_color.py b/plotly/validators/layout/scene/xaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_color.py rename to plotly/validators/layout/scene/xaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_dtick.py b/plotly/validators/layout/scene/xaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_dtick.py rename to plotly/validators/layout/scene/xaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_exponentformat.py b/plotly/validators/layout/scene/xaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_exponentformat.py rename to plotly/validators/layout/scene/xaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_gridcolor.py b/plotly/validators/layout/scene/xaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_gridcolor.py rename to plotly/validators/layout/scene/xaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_gridwidth.py b/plotly/validators/layout/scene/xaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_gridwidth.py rename to plotly/validators/layout/scene/xaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_hoverformat.py b/plotly/validators/layout/scene/xaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_hoverformat.py rename to plotly/validators/layout/scene/xaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_labelalias.py b/plotly/validators/layout/scene/xaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_labelalias.py rename to plotly/validators/layout/scene/xaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_linecolor.py b/plotly/validators/layout/scene/xaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_linecolor.py rename to plotly/validators/layout/scene/xaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_linewidth.py b/plotly/validators/layout/scene/xaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_linewidth.py rename to plotly/validators/layout/scene/xaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_maxallowed.py b/plotly/validators/layout/scene/xaxis/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_maxallowed.py rename to plotly/validators/layout/scene/xaxis/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_minallowed.py b/plotly/validators/layout/scene/xaxis/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_minallowed.py rename to plotly/validators/layout/scene/xaxis/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_minexponent.py b/plotly/validators/layout/scene/xaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_minexponent.py rename to plotly/validators/layout/scene/xaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_mirror.py b/plotly/validators/layout/scene/xaxis/_mirror.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_mirror.py rename to plotly/validators/layout/scene/xaxis/_mirror.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_nticks.py b/plotly/validators/layout/scene/xaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_nticks.py rename to plotly/validators/layout/scene/xaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_range.py b/plotly/validators/layout/scene/xaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_range.py rename to plotly/validators/layout/scene/xaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_rangemode.py b/plotly/validators/layout/scene/xaxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_rangemode.py rename to plotly/validators/layout/scene/xaxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_separatethousands.py b/plotly/validators/layout/scene/xaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_separatethousands.py rename to plotly/validators/layout/scene/xaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showaxeslabels.py b/plotly/validators/layout/scene/xaxis/_showaxeslabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showaxeslabels.py rename to plotly/validators/layout/scene/xaxis/_showaxeslabels.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showbackground.py b/plotly/validators/layout/scene/xaxis/_showbackground.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showbackground.py rename to plotly/validators/layout/scene/xaxis/_showbackground.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showexponent.py b/plotly/validators/layout/scene/xaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showexponent.py rename to plotly/validators/layout/scene/xaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showgrid.py b/plotly/validators/layout/scene/xaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showgrid.py rename to plotly/validators/layout/scene/xaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showline.py b/plotly/validators/layout/scene/xaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showline.py rename to plotly/validators/layout/scene/xaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showspikes.py b/plotly/validators/layout/scene/xaxis/_showspikes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showspikes.py rename to plotly/validators/layout/scene/xaxis/_showspikes.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showticklabels.py b/plotly/validators/layout/scene/xaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showticklabels.py rename to plotly/validators/layout/scene/xaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showtickprefix.py b/plotly/validators/layout/scene/xaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showtickprefix.py rename to plotly/validators/layout/scene/xaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_showticksuffix.py b/plotly/validators/layout/scene/xaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_showticksuffix.py rename to plotly/validators/layout/scene/xaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_spikecolor.py b/plotly/validators/layout/scene/xaxis/_spikecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_spikecolor.py rename to plotly/validators/layout/scene/xaxis/_spikecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_spikesides.py b/plotly/validators/layout/scene/xaxis/_spikesides.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_spikesides.py rename to plotly/validators/layout/scene/xaxis/_spikesides.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_spikethickness.py b/plotly/validators/layout/scene/xaxis/_spikethickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_spikethickness.py rename to plotly/validators/layout/scene/xaxis/_spikethickness.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tick0.py b/plotly/validators/layout/scene/xaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tick0.py rename to plotly/validators/layout/scene/xaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickangle.py b/plotly/validators/layout/scene/xaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickangle.py rename to plotly/validators/layout/scene/xaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickcolor.py b/plotly/validators/layout/scene/xaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickcolor.py rename to plotly/validators/layout/scene/xaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickfont.py b/plotly/validators/layout/scene/xaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickfont.py rename to plotly/validators/layout/scene/xaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickformat.py b/plotly/validators/layout/scene/xaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickformat.py rename to plotly/validators/layout/scene/xaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickformatstopdefaults.py b/plotly/validators/layout/scene/xaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickformatstopdefaults.py rename to plotly/validators/layout/scene/xaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickformatstops.py b/plotly/validators/layout/scene/xaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickformatstops.py rename to plotly/validators/layout/scene/xaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticklen.py b/plotly/validators/layout/scene/xaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticklen.py rename to plotly/validators/layout/scene/xaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickmode.py b/plotly/validators/layout/scene/xaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickmode.py rename to plotly/validators/layout/scene/xaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickprefix.py b/plotly/validators/layout/scene/xaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickprefix.py rename to plotly/validators/layout/scene/xaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticks.py b/plotly/validators/layout/scene/xaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticks.py rename to plotly/validators/layout/scene/xaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticksuffix.py b/plotly/validators/layout/scene/xaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticksuffix.py rename to plotly/validators/layout/scene/xaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticktext.py b/plotly/validators/layout/scene/xaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticktext.py rename to plotly/validators/layout/scene/xaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticktextsrc.py b/plotly/validators/layout/scene/xaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_ticktextsrc.py rename to plotly/validators/layout/scene/xaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickvals.py b/plotly/validators/layout/scene/xaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickvals.py rename to plotly/validators/layout/scene/xaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickvalssrc.py b/plotly/validators/layout/scene/xaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickvalssrc.py rename to plotly/validators/layout/scene/xaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickwidth.py b/plotly/validators/layout/scene/xaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_tickwidth.py rename to plotly/validators/layout/scene/xaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_title.py b/plotly/validators/layout/scene/xaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_title.py rename to plotly/validators/layout/scene/xaxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_type.py b/plotly/validators/layout/scene/xaxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_type.py rename to plotly/validators/layout/scene/xaxis/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_visible.py b/plotly/validators/layout/scene/xaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_visible.py rename to plotly/validators/layout/scene/xaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_zeroline.py b/plotly/validators/layout/scene/xaxis/_zeroline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_zeroline.py rename to plotly/validators/layout/scene/xaxis/_zeroline.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_zerolinecolor.py b/plotly/validators/layout/scene/xaxis/_zerolinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_zerolinecolor.py rename to plotly/validators/layout/scene/xaxis/_zerolinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/_zerolinewidth.py b/plotly/validators/layout/scene/xaxis/_zerolinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/_zerolinewidth.py rename to plotly/validators/layout/scene/xaxis/_zerolinewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/__init__.py b/plotly/validators/layout/scene/xaxis/autorangeoptions/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/__init__.py rename to plotly/validators/layout/scene/xaxis/autorangeoptions/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_clipmax.py b/plotly/validators/layout/scene/xaxis/autorangeoptions/_clipmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_clipmax.py rename to plotly/validators/layout/scene/xaxis/autorangeoptions/_clipmax.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_clipmin.py b/plotly/validators/layout/scene/xaxis/autorangeoptions/_clipmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_clipmin.py rename to plotly/validators/layout/scene/xaxis/autorangeoptions/_clipmin.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_include.py b/plotly/validators/layout/scene/xaxis/autorangeoptions/_include.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_include.py rename to plotly/validators/layout/scene/xaxis/autorangeoptions/_include.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_includesrc.py b/plotly/validators/layout/scene/xaxis/autorangeoptions/_includesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_includesrc.py rename to plotly/validators/layout/scene/xaxis/autorangeoptions/_includesrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_maxallowed.py b/plotly/validators/layout/scene/xaxis/autorangeoptions/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_maxallowed.py rename to plotly/validators/layout/scene/xaxis/autorangeoptions/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_minallowed.py b/plotly/validators/layout/scene/xaxis/autorangeoptions/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/autorangeoptions/_minallowed.py rename to plotly/validators/layout/scene/xaxis/autorangeoptions/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/__init__.py b/plotly/validators/layout/scene/xaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/__init__.py rename to plotly/validators/layout/scene/xaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_color.py b/plotly/validators/layout/scene/xaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_color.py rename to plotly/validators/layout/scene/xaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_family.py b/plotly/validators/layout/scene/xaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_family.py rename to plotly/validators/layout/scene/xaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_lineposition.py b/plotly/validators/layout/scene/xaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_lineposition.py rename to plotly/validators/layout/scene/xaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_shadow.py b/plotly/validators/layout/scene/xaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_shadow.py rename to plotly/validators/layout/scene/xaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_size.py b/plotly/validators/layout/scene/xaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_size.py rename to plotly/validators/layout/scene/xaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_style.py b/plotly/validators/layout/scene/xaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_style.py rename to plotly/validators/layout/scene/xaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_textcase.py b/plotly/validators/layout/scene/xaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_textcase.py rename to plotly/validators/layout/scene/xaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_variant.py b/plotly/validators/layout/scene/xaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_variant.py rename to plotly/validators/layout/scene/xaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_weight.py b/plotly/validators/layout/scene/xaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickfont/_weight.py rename to plotly/validators/layout/scene/xaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/__init__.py b/plotly/validators/layout/scene/xaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/__init__.py rename to plotly/validators/layout/scene/xaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/scene/xaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/scene/xaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_enabled.py b/plotly/validators/layout/scene/xaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_enabled.py rename to plotly/validators/layout/scene/xaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_name.py b/plotly/validators/layout/scene/xaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_name.py rename to plotly/validators/layout/scene/xaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/scene/xaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/scene/xaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_value.py b/plotly/validators/layout/scene/xaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/tickformatstop/_value.py rename to plotly/validators/layout/scene/xaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/__init__.py b/plotly/validators/layout/scene/xaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/__init__.py rename to plotly/validators/layout/scene/xaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/_font.py b/plotly/validators/layout/scene/xaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/_font.py rename to plotly/validators/layout/scene/xaxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/_text.py b/plotly/validators/layout/scene/xaxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/_text.py rename to plotly/validators/layout/scene/xaxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/__init__.py b/plotly/validators/layout/scene/xaxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/__init__.py rename to plotly/validators/layout/scene/xaxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_color.py b/plotly/validators/layout/scene/xaxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_color.py rename to plotly/validators/layout/scene/xaxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_family.py b/plotly/validators/layout/scene/xaxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_family.py rename to plotly/validators/layout/scene/xaxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_lineposition.py b/plotly/validators/layout/scene/xaxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_lineposition.py rename to plotly/validators/layout/scene/xaxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_shadow.py b/plotly/validators/layout/scene/xaxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_shadow.py rename to plotly/validators/layout/scene/xaxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_size.py b/plotly/validators/layout/scene/xaxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_size.py rename to plotly/validators/layout/scene/xaxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_style.py b/plotly/validators/layout/scene/xaxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_style.py rename to plotly/validators/layout/scene/xaxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_textcase.py b/plotly/validators/layout/scene/xaxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_textcase.py rename to plotly/validators/layout/scene/xaxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_variant.py b/plotly/validators/layout/scene/xaxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_variant.py rename to plotly/validators/layout/scene/xaxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_weight.py b/plotly/validators/layout/scene/xaxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/xaxis/title/font/_weight.py rename to plotly/validators/layout/scene/xaxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/__init__.py b/plotly/validators/layout/scene/yaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/__init__.py rename to plotly/validators/layout/scene/yaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_autorange.py b/plotly/validators/layout/scene/yaxis/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_autorange.py rename to plotly/validators/layout/scene/yaxis/_autorange.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_autorangeoptions.py b/plotly/validators/layout/scene/yaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_autorangeoptions.py rename to plotly/validators/layout/scene/yaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_autotypenumbers.py b/plotly/validators/layout/scene/yaxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_autotypenumbers.py rename to plotly/validators/layout/scene/yaxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_backgroundcolor.py b/plotly/validators/layout/scene/yaxis/_backgroundcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_backgroundcolor.py rename to plotly/validators/layout/scene/yaxis/_backgroundcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_calendar.py b/plotly/validators/layout/scene/yaxis/_calendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_calendar.py rename to plotly/validators/layout/scene/yaxis/_calendar.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_categoryarray.py b/plotly/validators/layout/scene/yaxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_categoryarray.py rename to plotly/validators/layout/scene/yaxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_categoryarraysrc.py b/plotly/validators/layout/scene/yaxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_categoryarraysrc.py rename to plotly/validators/layout/scene/yaxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_categoryorder.py b/plotly/validators/layout/scene/yaxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_categoryorder.py rename to plotly/validators/layout/scene/yaxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_color.py b/plotly/validators/layout/scene/yaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_color.py rename to plotly/validators/layout/scene/yaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_dtick.py b/plotly/validators/layout/scene/yaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_dtick.py rename to plotly/validators/layout/scene/yaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_exponentformat.py b/plotly/validators/layout/scene/yaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_exponentformat.py rename to plotly/validators/layout/scene/yaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_gridcolor.py b/plotly/validators/layout/scene/yaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_gridcolor.py rename to plotly/validators/layout/scene/yaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_gridwidth.py b/plotly/validators/layout/scene/yaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_gridwidth.py rename to plotly/validators/layout/scene/yaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_hoverformat.py b/plotly/validators/layout/scene/yaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_hoverformat.py rename to plotly/validators/layout/scene/yaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_labelalias.py b/plotly/validators/layout/scene/yaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_labelalias.py rename to plotly/validators/layout/scene/yaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_linecolor.py b/plotly/validators/layout/scene/yaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_linecolor.py rename to plotly/validators/layout/scene/yaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_linewidth.py b/plotly/validators/layout/scene/yaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_linewidth.py rename to plotly/validators/layout/scene/yaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_maxallowed.py b/plotly/validators/layout/scene/yaxis/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_maxallowed.py rename to plotly/validators/layout/scene/yaxis/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_minallowed.py b/plotly/validators/layout/scene/yaxis/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_minallowed.py rename to plotly/validators/layout/scene/yaxis/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_minexponent.py b/plotly/validators/layout/scene/yaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_minexponent.py rename to plotly/validators/layout/scene/yaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_mirror.py b/plotly/validators/layout/scene/yaxis/_mirror.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_mirror.py rename to plotly/validators/layout/scene/yaxis/_mirror.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_nticks.py b/plotly/validators/layout/scene/yaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_nticks.py rename to plotly/validators/layout/scene/yaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_range.py b/plotly/validators/layout/scene/yaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_range.py rename to plotly/validators/layout/scene/yaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_rangemode.py b/plotly/validators/layout/scene/yaxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_rangemode.py rename to plotly/validators/layout/scene/yaxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_separatethousands.py b/plotly/validators/layout/scene/yaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_separatethousands.py rename to plotly/validators/layout/scene/yaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showaxeslabels.py b/plotly/validators/layout/scene/yaxis/_showaxeslabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showaxeslabels.py rename to plotly/validators/layout/scene/yaxis/_showaxeslabels.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showbackground.py b/plotly/validators/layout/scene/yaxis/_showbackground.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showbackground.py rename to plotly/validators/layout/scene/yaxis/_showbackground.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showexponent.py b/plotly/validators/layout/scene/yaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showexponent.py rename to plotly/validators/layout/scene/yaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showgrid.py b/plotly/validators/layout/scene/yaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showgrid.py rename to plotly/validators/layout/scene/yaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showline.py b/plotly/validators/layout/scene/yaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showline.py rename to plotly/validators/layout/scene/yaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showspikes.py b/plotly/validators/layout/scene/yaxis/_showspikes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showspikes.py rename to plotly/validators/layout/scene/yaxis/_showspikes.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showticklabels.py b/plotly/validators/layout/scene/yaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showticklabels.py rename to plotly/validators/layout/scene/yaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showtickprefix.py b/plotly/validators/layout/scene/yaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showtickprefix.py rename to plotly/validators/layout/scene/yaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_showticksuffix.py b/plotly/validators/layout/scene/yaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_showticksuffix.py rename to plotly/validators/layout/scene/yaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_spikecolor.py b/plotly/validators/layout/scene/yaxis/_spikecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_spikecolor.py rename to plotly/validators/layout/scene/yaxis/_spikecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_spikesides.py b/plotly/validators/layout/scene/yaxis/_spikesides.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_spikesides.py rename to plotly/validators/layout/scene/yaxis/_spikesides.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_spikethickness.py b/plotly/validators/layout/scene/yaxis/_spikethickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_spikethickness.py rename to plotly/validators/layout/scene/yaxis/_spikethickness.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tick0.py b/plotly/validators/layout/scene/yaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tick0.py rename to plotly/validators/layout/scene/yaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickangle.py b/plotly/validators/layout/scene/yaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickangle.py rename to plotly/validators/layout/scene/yaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickcolor.py b/plotly/validators/layout/scene/yaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickcolor.py rename to plotly/validators/layout/scene/yaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickfont.py b/plotly/validators/layout/scene/yaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickfont.py rename to plotly/validators/layout/scene/yaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickformat.py b/plotly/validators/layout/scene/yaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickformat.py rename to plotly/validators/layout/scene/yaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickformatstopdefaults.py b/plotly/validators/layout/scene/yaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickformatstopdefaults.py rename to plotly/validators/layout/scene/yaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickformatstops.py b/plotly/validators/layout/scene/yaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickformatstops.py rename to plotly/validators/layout/scene/yaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticklen.py b/plotly/validators/layout/scene/yaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticklen.py rename to plotly/validators/layout/scene/yaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickmode.py b/plotly/validators/layout/scene/yaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickmode.py rename to plotly/validators/layout/scene/yaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickprefix.py b/plotly/validators/layout/scene/yaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickprefix.py rename to plotly/validators/layout/scene/yaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticks.py b/plotly/validators/layout/scene/yaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticks.py rename to plotly/validators/layout/scene/yaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticksuffix.py b/plotly/validators/layout/scene/yaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticksuffix.py rename to plotly/validators/layout/scene/yaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticktext.py b/plotly/validators/layout/scene/yaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticktext.py rename to plotly/validators/layout/scene/yaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticktextsrc.py b/plotly/validators/layout/scene/yaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_ticktextsrc.py rename to plotly/validators/layout/scene/yaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickvals.py b/plotly/validators/layout/scene/yaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickvals.py rename to plotly/validators/layout/scene/yaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickvalssrc.py b/plotly/validators/layout/scene/yaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickvalssrc.py rename to plotly/validators/layout/scene/yaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickwidth.py b/plotly/validators/layout/scene/yaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_tickwidth.py rename to plotly/validators/layout/scene/yaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_title.py b/plotly/validators/layout/scene/yaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_title.py rename to plotly/validators/layout/scene/yaxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_type.py b/plotly/validators/layout/scene/yaxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_type.py rename to plotly/validators/layout/scene/yaxis/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_visible.py b/plotly/validators/layout/scene/yaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_visible.py rename to plotly/validators/layout/scene/yaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_zeroline.py b/plotly/validators/layout/scene/yaxis/_zeroline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_zeroline.py rename to plotly/validators/layout/scene/yaxis/_zeroline.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_zerolinecolor.py b/plotly/validators/layout/scene/yaxis/_zerolinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_zerolinecolor.py rename to plotly/validators/layout/scene/yaxis/_zerolinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/_zerolinewidth.py b/plotly/validators/layout/scene/yaxis/_zerolinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/_zerolinewidth.py rename to plotly/validators/layout/scene/yaxis/_zerolinewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/__init__.py b/plotly/validators/layout/scene/yaxis/autorangeoptions/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/__init__.py rename to plotly/validators/layout/scene/yaxis/autorangeoptions/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_clipmax.py b/plotly/validators/layout/scene/yaxis/autorangeoptions/_clipmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_clipmax.py rename to plotly/validators/layout/scene/yaxis/autorangeoptions/_clipmax.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_clipmin.py b/plotly/validators/layout/scene/yaxis/autorangeoptions/_clipmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_clipmin.py rename to plotly/validators/layout/scene/yaxis/autorangeoptions/_clipmin.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_include.py b/plotly/validators/layout/scene/yaxis/autorangeoptions/_include.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_include.py rename to plotly/validators/layout/scene/yaxis/autorangeoptions/_include.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_includesrc.py b/plotly/validators/layout/scene/yaxis/autorangeoptions/_includesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_includesrc.py rename to plotly/validators/layout/scene/yaxis/autorangeoptions/_includesrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_maxallowed.py b/plotly/validators/layout/scene/yaxis/autorangeoptions/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_maxallowed.py rename to plotly/validators/layout/scene/yaxis/autorangeoptions/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_minallowed.py b/plotly/validators/layout/scene/yaxis/autorangeoptions/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/autorangeoptions/_minallowed.py rename to plotly/validators/layout/scene/yaxis/autorangeoptions/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/__init__.py b/plotly/validators/layout/scene/yaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/__init__.py rename to plotly/validators/layout/scene/yaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_color.py b/plotly/validators/layout/scene/yaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_color.py rename to plotly/validators/layout/scene/yaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_family.py b/plotly/validators/layout/scene/yaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_family.py rename to plotly/validators/layout/scene/yaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_lineposition.py b/plotly/validators/layout/scene/yaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_lineposition.py rename to plotly/validators/layout/scene/yaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_shadow.py b/plotly/validators/layout/scene/yaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_shadow.py rename to plotly/validators/layout/scene/yaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_size.py b/plotly/validators/layout/scene/yaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_size.py rename to plotly/validators/layout/scene/yaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_style.py b/plotly/validators/layout/scene/yaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_style.py rename to plotly/validators/layout/scene/yaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_textcase.py b/plotly/validators/layout/scene/yaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_textcase.py rename to plotly/validators/layout/scene/yaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_variant.py b/plotly/validators/layout/scene/yaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_variant.py rename to plotly/validators/layout/scene/yaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_weight.py b/plotly/validators/layout/scene/yaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickfont/_weight.py rename to plotly/validators/layout/scene/yaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/__init__.py b/plotly/validators/layout/scene/yaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/__init__.py rename to plotly/validators/layout/scene/yaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/scene/yaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/scene/yaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_enabled.py b/plotly/validators/layout/scene/yaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_enabled.py rename to plotly/validators/layout/scene/yaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_name.py b/plotly/validators/layout/scene/yaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_name.py rename to plotly/validators/layout/scene/yaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/scene/yaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/scene/yaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_value.py b/plotly/validators/layout/scene/yaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/tickformatstop/_value.py rename to plotly/validators/layout/scene/yaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/__init__.py b/plotly/validators/layout/scene/yaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/__init__.py rename to plotly/validators/layout/scene/yaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/_font.py b/plotly/validators/layout/scene/yaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/_font.py rename to plotly/validators/layout/scene/yaxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/_text.py b/plotly/validators/layout/scene/yaxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/_text.py rename to plotly/validators/layout/scene/yaxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/__init__.py b/plotly/validators/layout/scene/yaxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/__init__.py rename to plotly/validators/layout/scene/yaxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_color.py b/plotly/validators/layout/scene/yaxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_color.py rename to plotly/validators/layout/scene/yaxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_family.py b/plotly/validators/layout/scene/yaxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_family.py rename to plotly/validators/layout/scene/yaxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_lineposition.py b/plotly/validators/layout/scene/yaxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_lineposition.py rename to plotly/validators/layout/scene/yaxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_shadow.py b/plotly/validators/layout/scene/yaxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_shadow.py rename to plotly/validators/layout/scene/yaxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_size.py b/plotly/validators/layout/scene/yaxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_size.py rename to plotly/validators/layout/scene/yaxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_style.py b/plotly/validators/layout/scene/yaxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_style.py rename to plotly/validators/layout/scene/yaxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_textcase.py b/plotly/validators/layout/scene/yaxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_textcase.py rename to plotly/validators/layout/scene/yaxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_variant.py b/plotly/validators/layout/scene/yaxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_variant.py rename to plotly/validators/layout/scene/yaxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_weight.py b/plotly/validators/layout/scene/yaxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/yaxis/title/font/_weight.py rename to plotly/validators/layout/scene/yaxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/__init__.py b/plotly/validators/layout/scene/zaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/__init__.py rename to plotly/validators/layout/scene/zaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_autorange.py b/plotly/validators/layout/scene/zaxis/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_autorange.py rename to plotly/validators/layout/scene/zaxis/_autorange.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_autorangeoptions.py b/plotly/validators/layout/scene/zaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_autorangeoptions.py rename to plotly/validators/layout/scene/zaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_autotypenumbers.py b/plotly/validators/layout/scene/zaxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_autotypenumbers.py rename to plotly/validators/layout/scene/zaxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_backgroundcolor.py b/plotly/validators/layout/scene/zaxis/_backgroundcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_backgroundcolor.py rename to plotly/validators/layout/scene/zaxis/_backgroundcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_calendar.py b/plotly/validators/layout/scene/zaxis/_calendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_calendar.py rename to plotly/validators/layout/scene/zaxis/_calendar.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_categoryarray.py b/plotly/validators/layout/scene/zaxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_categoryarray.py rename to plotly/validators/layout/scene/zaxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_categoryarraysrc.py b/plotly/validators/layout/scene/zaxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_categoryarraysrc.py rename to plotly/validators/layout/scene/zaxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_categoryorder.py b/plotly/validators/layout/scene/zaxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_categoryorder.py rename to plotly/validators/layout/scene/zaxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_color.py b/plotly/validators/layout/scene/zaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_color.py rename to plotly/validators/layout/scene/zaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_dtick.py b/plotly/validators/layout/scene/zaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_dtick.py rename to plotly/validators/layout/scene/zaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_exponentformat.py b/plotly/validators/layout/scene/zaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_exponentformat.py rename to plotly/validators/layout/scene/zaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_gridcolor.py b/plotly/validators/layout/scene/zaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_gridcolor.py rename to plotly/validators/layout/scene/zaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_gridwidth.py b/plotly/validators/layout/scene/zaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_gridwidth.py rename to plotly/validators/layout/scene/zaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_hoverformat.py b/plotly/validators/layout/scene/zaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_hoverformat.py rename to plotly/validators/layout/scene/zaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_labelalias.py b/plotly/validators/layout/scene/zaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_labelalias.py rename to plotly/validators/layout/scene/zaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_linecolor.py b/plotly/validators/layout/scene/zaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_linecolor.py rename to plotly/validators/layout/scene/zaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_linewidth.py b/plotly/validators/layout/scene/zaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_linewidth.py rename to plotly/validators/layout/scene/zaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_maxallowed.py b/plotly/validators/layout/scene/zaxis/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_maxallowed.py rename to plotly/validators/layout/scene/zaxis/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_minallowed.py b/plotly/validators/layout/scene/zaxis/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_minallowed.py rename to plotly/validators/layout/scene/zaxis/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_minexponent.py b/plotly/validators/layout/scene/zaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_minexponent.py rename to plotly/validators/layout/scene/zaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_mirror.py b/plotly/validators/layout/scene/zaxis/_mirror.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_mirror.py rename to plotly/validators/layout/scene/zaxis/_mirror.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_nticks.py b/plotly/validators/layout/scene/zaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_nticks.py rename to plotly/validators/layout/scene/zaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_range.py b/plotly/validators/layout/scene/zaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_range.py rename to plotly/validators/layout/scene/zaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_rangemode.py b/plotly/validators/layout/scene/zaxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_rangemode.py rename to plotly/validators/layout/scene/zaxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_separatethousands.py b/plotly/validators/layout/scene/zaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_separatethousands.py rename to plotly/validators/layout/scene/zaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showaxeslabels.py b/plotly/validators/layout/scene/zaxis/_showaxeslabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showaxeslabels.py rename to plotly/validators/layout/scene/zaxis/_showaxeslabels.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showbackground.py b/plotly/validators/layout/scene/zaxis/_showbackground.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showbackground.py rename to plotly/validators/layout/scene/zaxis/_showbackground.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showexponent.py b/plotly/validators/layout/scene/zaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showexponent.py rename to plotly/validators/layout/scene/zaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showgrid.py b/plotly/validators/layout/scene/zaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showgrid.py rename to plotly/validators/layout/scene/zaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showline.py b/plotly/validators/layout/scene/zaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showline.py rename to plotly/validators/layout/scene/zaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showspikes.py b/plotly/validators/layout/scene/zaxis/_showspikes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showspikes.py rename to plotly/validators/layout/scene/zaxis/_showspikes.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showticklabels.py b/plotly/validators/layout/scene/zaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showticklabels.py rename to plotly/validators/layout/scene/zaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showtickprefix.py b/plotly/validators/layout/scene/zaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showtickprefix.py rename to plotly/validators/layout/scene/zaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_showticksuffix.py b/plotly/validators/layout/scene/zaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_showticksuffix.py rename to plotly/validators/layout/scene/zaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_spikecolor.py b/plotly/validators/layout/scene/zaxis/_spikecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_spikecolor.py rename to plotly/validators/layout/scene/zaxis/_spikecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_spikesides.py b/plotly/validators/layout/scene/zaxis/_spikesides.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_spikesides.py rename to plotly/validators/layout/scene/zaxis/_spikesides.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_spikethickness.py b/plotly/validators/layout/scene/zaxis/_spikethickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_spikethickness.py rename to plotly/validators/layout/scene/zaxis/_spikethickness.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tick0.py b/plotly/validators/layout/scene/zaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tick0.py rename to plotly/validators/layout/scene/zaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickangle.py b/plotly/validators/layout/scene/zaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickangle.py rename to plotly/validators/layout/scene/zaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickcolor.py b/plotly/validators/layout/scene/zaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickcolor.py rename to plotly/validators/layout/scene/zaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickfont.py b/plotly/validators/layout/scene/zaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickfont.py rename to plotly/validators/layout/scene/zaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickformat.py b/plotly/validators/layout/scene/zaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickformat.py rename to plotly/validators/layout/scene/zaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickformatstopdefaults.py b/plotly/validators/layout/scene/zaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickformatstopdefaults.py rename to plotly/validators/layout/scene/zaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickformatstops.py b/plotly/validators/layout/scene/zaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickformatstops.py rename to plotly/validators/layout/scene/zaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticklen.py b/plotly/validators/layout/scene/zaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticklen.py rename to plotly/validators/layout/scene/zaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickmode.py b/plotly/validators/layout/scene/zaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickmode.py rename to plotly/validators/layout/scene/zaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickprefix.py b/plotly/validators/layout/scene/zaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickprefix.py rename to plotly/validators/layout/scene/zaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticks.py b/plotly/validators/layout/scene/zaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticks.py rename to plotly/validators/layout/scene/zaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticksuffix.py b/plotly/validators/layout/scene/zaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticksuffix.py rename to plotly/validators/layout/scene/zaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticktext.py b/plotly/validators/layout/scene/zaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticktext.py rename to plotly/validators/layout/scene/zaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticktextsrc.py b/plotly/validators/layout/scene/zaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_ticktextsrc.py rename to plotly/validators/layout/scene/zaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickvals.py b/plotly/validators/layout/scene/zaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickvals.py rename to plotly/validators/layout/scene/zaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickvalssrc.py b/plotly/validators/layout/scene/zaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickvalssrc.py rename to plotly/validators/layout/scene/zaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickwidth.py b/plotly/validators/layout/scene/zaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_tickwidth.py rename to plotly/validators/layout/scene/zaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_title.py b/plotly/validators/layout/scene/zaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_title.py rename to plotly/validators/layout/scene/zaxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_type.py b/plotly/validators/layout/scene/zaxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_type.py rename to plotly/validators/layout/scene/zaxis/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_visible.py b/plotly/validators/layout/scene/zaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_visible.py rename to plotly/validators/layout/scene/zaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_zeroline.py b/plotly/validators/layout/scene/zaxis/_zeroline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_zeroline.py rename to plotly/validators/layout/scene/zaxis/_zeroline.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_zerolinecolor.py b/plotly/validators/layout/scene/zaxis/_zerolinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_zerolinecolor.py rename to plotly/validators/layout/scene/zaxis/_zerolinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/_zerolinewidth.py b/plotly/validators/layout/scene/zaxis/_zerolinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/_zerolinewidth.py rename to plotly/validators/layout/scene/zaxis/_zerolinewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/__init__.py b/plotly/validators/layout/scene/zaxis/autorangeoptions/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/__init__.py rename to plotly/validators/layout/scene/zaxis/autorangeoptions/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_clipmax.py b/plotly/validators/layout/scene/zaxis/autorangeoptions/_clipmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_clipmax.py rename to plotly/validators/layout/scene/zaxis/autorangeoptions/_clipmax.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_clipmin.py b/plotly/validators/layout/scene/zaxis/autorangeoptions/_clipmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_clipmin.py rename to plotly/validators/layout/scene/zaxis/autorangeoptions/_clipmin.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_include.py b/plotly/validators/layout/scene/zaxis/autorangeoptions/_include.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_include.py rename to plotly/validators/layout/scene/zaxis/autorangeoptions/_include.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_includesrc.py b/plotly/validators/layout/scene/zaxis/autorangeoptions/_includesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_includesrc.py rename to plotly/validators/layout/scene/zaxis/autorangeoptions/_includesrc.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_maxallowed.py b/plotly/validators/layout/scene/zaxis/autorangeoptions/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_maxallowed.py rename to plotly/validators/layout/scene/zaxis/autorangeoptions/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_minallowed.py b/plotly/validators/layout/scene/zaxis/autorangeoptions/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/autorangeoptions/_minallowed.py rename to plotly/validators/layout/scene/zaxis/autorangeoptions/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/__init__.py b/plotly/validators/layout/scene/zaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/__init__.py rename to plotly/validators/layout/scene/zaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_color.py b/plotly/validators/layout/scene/zaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_color.py rename to plotly/validators/layout/scene/zaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_family.py b/plotly/validators/layout/scene/zaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_family.py rename to plotly/validators/layout/scene/zaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_lineposition.py b/plotly/validators/layout/scene/zaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_lineposition.py rename to plotly/validators/layout/scene/zaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_shadow.py b/plotly/validators/layout/scene/zaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_shadow.py rename to plotly/validators/layout/scene/zaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_size.py b/plotly/validators/layout/scene/zaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_size.py rename to plotly/validators/layout/scene/zaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_style.py b/plotly/validators/layout/scene/zaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_style.py rename to plotly/validators/layout/scene/zaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_textcase.py b/plotly/validators/layout/scene/zaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_textcase.py rename to plotly/validators/layout/scene/zaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_variant.py b/plotly/validators/layout/scene/zaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_variant.py rename to plotly/validators/layout/scene/zaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_weight.py b/plotly/validators/layout/scene/zaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickfont/_weight.py rename to plotly/validators/layout/scene/zaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/__init__.py b/plotly/validators/layout/scene/zaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/__init__.py rename to plotly/validators/layout/scene/zaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/scene/zaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/scene/zaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_enabled.py b/plotly/validators/layout/scene/zaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_enabled.py rename to plotly/validators/layout/scene/zaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_name.py b/plotly/validators/layout/scene/zaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_name.py rename to plotly/validators/layout/scene/zaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/scene/zaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/scene/zaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_value.py b/plotly/validators/layout/scene/zaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/tickformatstop/_value.py rename to plotly/validators/layout/scene/zaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/__init__.py b/plotly/validators/layout/scene/zaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/__init__.py rename to plotly/validators/layout/scene/zaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/_font.py b/plotly/validators/layout/scene/zaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/_font.py rename to plotly/validators/layout/scene/zaxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/_text.py b/plotly/validators/layout/scene/zaxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/_text.py rename to plotly/validators/layout/scene/zaxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/__init__.py b/plotly/validators/layout/scene/zaxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/__init__.py rename to plotly/validators/layout/scene/zaxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_color.py b/plotly/validators/layout/scene/zaxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_color.py rename to plotly/validators/layout/scene/zaxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_family.py b/plotly/validators/layout/scene/zaxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_family.py rename to plotly/validators/layout/scene/zaxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_lineposition.py b/plotly/validators/layout/scene/zaxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_lineposition.py rename to plotly/validators/layout/scene/zaxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_shadow.py b/plotly/validators/layout/scene/zaxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_shadow.py rename to plotly/validators/layout/scene/zaxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_size.py b/plotly/validators/layout/scene/zaxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_size.py rename to plotly/validators/layout/scene/zaxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_style.py b/plotly/validators/layout/scene/zaxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_style.py rename to plotly/validators/layout/scene/zaxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_textcase.py b/plotly/validators/layout/scene/zaxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_textcase.py rename to plotly/validators/layout/scene/zaxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_variant.py b/plotly/validators/layout/scene/zaxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_variant.py rename to plotly/validators/layout/scene/zaxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_weight.py b/plotly/validators/layout/scene/zaxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/scene/zaxis/title/font/_weight.py rename to plotly/validators/layout/scene/zaxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/__init__.py b/plotly/validators/layout/selection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/__init__.py rename to plotly/validators/layout/selection/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_line.py b/plotly/validators/layout/selection/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_line.py rename to plotly/validators/layout/selection/_line.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_name.py b/plotly/validators/layout/selection/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_name.py rename to plotly/validators/layout/selection/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_opacity.py b/plotly/validators/layout/selection/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_opacity.py rename to plotly/validators/layout/selection/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_path.py b/plotly/validators/layout/selection/_path.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_path.py rename to plotly/validators/layout/selection/_path.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_templateitemname.py b/plotly/validators/layout/selection/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_templateitemname.py rename to plotly/validators/layout/selection/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_type.py b/plotly/validators/layout/selection/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_type.py rename to plotly/validators/layout/selection/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_x0.py b/plotly/validators/layout/selection/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_x0.py rename to plotly/validators/layout/selection/_x0.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_x1.py b/plotly/validators/layout/selection/_x1.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_x1.py rename to plotly/validators/layout/selection/_x1.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_xref.py b/plotly/validators/layout/selection/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_xref.py rename to plotly/validators/layout/selection/_xref.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_y0.py b/plotly/validators/layout/selection/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_y0.py rename to plotly/validators/layout/selection/_y0.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_y1.py b/plotly/validators/layout/selection/_y1.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_y1.py rename to plotly/validators/layout/selection/_y1.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/_yref.py b/plotly/validators/layout/selection/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/_yref.py rename to plotly/validators/layout/selection/_yref.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/line/__init__.py b/plotly/validators/layout/selection/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/line/__init__.py rename to plotly/validators/layout/selection/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/line/_color.py b/plotly/validators/layout/selection/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/line/_color.py rename to plotly/validators/layout/selection/line/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/line/_dash.py b/plotly/validators/layout/selection/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/line/_dash.py rename to plotly/validators/layout/selection/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/layout/selection/line/_width.py b/plotly/validators/layout/selection/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/selection/line/_width.py rename to plotly/validators/layout/selection/line/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/__init__.py b/plotly/validators/layout/shape/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/__init__.py rename to plotly/validators/layout/shape/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_editable.py b/plotly/validators/layout/shape/_editable.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_editable.py rename to plotly/validators/layout/shape/_editable.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_fillcolor.py b/plotly/validators/layout/shape/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_fillcolor.py rename to plotly/validators/layout/shape/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_fillrule.py b/plotly/validators/layout/shape/_fillrule.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_fillrule.py rename to plotly/validators/layout/shape/_fillrule.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_label.py b/plotly/validators/layout/shape/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_label.py rename to plotly/validators/layout/shape/_label.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_layer.py b/plotly/validators/layout/shape/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_layer.py rename to plotly/validators/layout/shape/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_legend.py b/plotly/validators/layout/shape/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_legend.py rename to plotly/validators/layout/shape/_legend.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_legendgroup.py b/plotly/validators/layout/shape/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_legendgroup.py rename to plotly/validators/layout/shape/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_legendgrouptitle.py b/plotly/validators/layout/shape/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_legendgrouptitle.py rename to plotly/validators/layout/shape/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_legendrank.py b/plotly/validators/layout/shape/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_legendrank.py rename to plotly/validators/layout/shape/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_legendwidth.py b/plotly/validators/layout/shape/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_legendwidth.py rename to plotly/validators/layout/shape/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_line.py b/plotly/validators/layout/shape/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_line.py rename to plotly/validators/layout/shape/_line.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_name.py b/plotly/validators/layout/shape/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_name.py rename to plotly/validators/layout/shape/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_opacity.py b/plotly/validators/layout/shape/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_opacity.py rename to plotly/validators/layout/shape/_opacity.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_path.py b/plotly/validators/layout/shape/_path.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_path.py rename to plotly/validators/layout/shape/_path.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_showlegend.py b/plotly/validators/layout/shape/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_showlegend.py rename to plotly/validators/layout/shape/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_templateitemname.py b/plotly/validators/layout/shape/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_templateitemname.py rename to plotly/validators/layout/shape/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_type.py b/plotly/validators/layout/shape/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_type.py rename to plotly/validators/layout/shape/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_visible.py b/plotly/validators/layout/shape/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_visible.py rename to plotly/validators/layout/shape/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_x0.py b/plotly/validators/layout/shape/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_x0.py rename to plotly/validators/layout/shape/_x0.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_x0shift.py b/plotly/validators/layout/shape/_x0shift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_x0shift.py rename to plotly/validators/layout/shape/_x0shift.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_x1.py b/plotly/validators/layout/shape/_x1.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_x1.py rename to plotly/validators/layout/shape/_x1.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_x1shift.py b/plotly/validators/layout/shape/_x1shift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_x1shift.py rename to plotly/validators/layout/shape/_x1shift.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_xanchor.py b/plotly/validators/layout/shape/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_xanchor.py rename to plotly/validators/layout/shape/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_xref.py b/plotly/validators/layout/shape/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_xref.py rename to plotly/validators/layout/shape/_xref.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_xsizemode.py b/plotly/validators/layout/shape/_xsizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_xsizemode.py rename to plotly/validators/layout/shape/_xsizemode.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_y0.py b/plotly/validators/layout/shape/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_y0.py rename to plotly/validators/layout/shape/_y0.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_y0shift.py b/plotly/validators/layout/shape/_y0shift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_y0shift.py rename to plotly/validators/layout/shape/_y0shift.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_y1.py b/plotly/validators/layout/shape/_y1.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_y1.py rename to plotly/validators/layout/shape/_y1.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_y1shift.py b/plotly/validators/layout/shape/_y1shift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_y1shift.py rename to plotly/validators/layout/shape/_y1shift.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_yanchor.py b/plotly/validators/layout/shape/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_yanchor.py rename to plotly/validators/layout/shape/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_yref.py b/plotly/validators/layout/shape/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_yref.py rename to plotly/validators/layout/shape/_yref.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/_ysizemode.py b/plotly/validators/layout/shape/_ysizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/_ysizemode.py rename to plotly/validators/layout/shape/_ysizemode.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/__init__.py b/plotly/validators/layout/shape/label/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/__init__.py rename to plotly/validators/layout/shape/label/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/_font.py b/plotly/validators/layout/shape/label/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/_font.py rename to plotly/validators/layout/shape/label/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/_padding.py b/plotly/validators/layout/shape/label/_padding.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/_padding.py rename to plotly/validators/layout/shape/label/_padding.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/_text.py b/plotly/validators/layout/shape/label/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/_text.py rename to plotly/validators/layout/shape/label/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/_textangle.py b/plotly/validators/layout/shape/label/_textangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/_textangle.py rename to plotly/validators/layout/shape/label/_textangle.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/_textposition.py b/plotly/validators/layout/shape/label/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/_textposition.py rename to plotly/validators/layout/shape/label/_textposition.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/_texttemplate.py b/plotly/validators/layout/shape/label/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/_texttemplate.py rename to plotly/validators/layout/shape/label/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/_xanchor.py b/plotly/validators/layout/shape/label/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/_xanchor.py rename to plotly/validators/layout/shape/label/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/_yanchor.py b/plotly/validators/layout/shape/label/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/_yanchor.py rename to plotly/validators/layout/shape/label/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/__init__.py b/plotly/validators/layout/shape/label/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/__init__.py rename to plotly/validators/layout/shape/label/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_color.py b/plotly/validators/layout/shape/label/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_color.py rename to plotly/validators/layout/shape/label/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_family.py b/plotly/validators/layout/shape/label/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_family.py rename to plotly/validators/layout/shape/label/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_lineposition.py b/plotly/validators/layout/shape/label/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_lineposition.py rename to plotly/validators/layout/shape/label/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_shadow.py b/plotly/validators/layout/shape/label/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_shadow.py rename to plotly/validators/layout/shape/label/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_size.py b/plotly/validators/layout/shape/label/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_size.py rename to plotly/validators/layout/shape/label/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_style.py b/plotly/validators/layout/shape/label/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_style.py rename to plotly/validators/layout/shape/label/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_textcase.py b/plotly/validators/layout/shape/label/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_textcase.py rename to plotly/validators/layout/shape/label/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_variant.py b/plotly/validators/layout/shape/label/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_variant.py rename to plotly/validators/layout/shape/label/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/label/font/_weight.py b/plotly/validators/layout/shape/label/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/label/font/_weight.py rename to plotly/validators/layout/shape/label/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/__init__.py b/plotly/validators/layout/shape/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/__init__.py rename to plotly/validators/layout/shape/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/_font.py b/plotly/validators/layout/shape/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/_font.py rename to plotly/validators/layout/shape/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/_text.py b/plotly/validators/layout/shape/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/_text.py rename to plotly/validators/layout/shape/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/__init__.py b/plotly/validators/layout/shape/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/__init__.py rename to plotly/validators/layout/shape/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_color.py b/plotly/validators/layout/shape/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_color.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_family.py b/plotly/validators/layout/shape/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_family.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_lineposition.py b/plotly/validators/layout/shape/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_lineposition.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_shadow.py b/plotly/validators/layout/shape/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_shadow.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_size.py b/plotly/validators/layout/shape/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_size.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_style.py b/plotly/validators/layout/shape/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_style.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_textcase.py b/plotly/validators/layout/shape/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_textcase.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_variant.py b/plotly/validators/layout/shape/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_variant.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_weight.py b/plotly/validators/layout/shape/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/legendgrouptitle/font/_weight.py rename to plotly/validators/layout/shape/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/line/__init__.py b/plotly/validators/layout/shape/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/line/__init__.py rename to plotly/validators/layout/shape/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/line/_color.py b/plotly/validators/layout/shape/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/line/_color.py rename to plotly/validators/layout/shape/line/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/line/_dash.py b/plotly/validators/layout/shape/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/line/_dash.py rename to plotly/validators/layout/shape/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/layout/shape/line/_width.py b/plotly/validators/layout/shape/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/shape/line/_width.py rename to plotly/validators/layout/shape/line/_width.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/__init__.py b/plotly/validators/layout/slider/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/__init__.py rename to plotly/validators/layout/slider/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_active.py b/plotly/validators/layout/slider/_active.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_active.py rename to plotly/validators/layout/slider/_active.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_activebgcolor.py b/plotly/validators/layout/slider/_activebgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_activebgcolor.py rename to plotly/validators/layout/slider/_activebgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_bgcolor.py b/plotly/validators/layout/slider/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_bgcolor.py rename to plotly/validators/layout/slider/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_bordercolor.py b/plotly/validators/layout/slider/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_bordercolor.py rename to plotly/validators/layout/slider/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_borderwidth.py b/plotly/validators/layout/slider/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_borderwidth.py rename to plotly/validators/layout/slider/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_currentvalue.py b/plotly/validators/layout/slider/_currentvalue.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_currentvalue.py rename to plotly/validators/layout/slider/_currentvalue.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_font.py b/plotly/validators/layout/slider/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_font.py rename to plotly/validators/layout/slider/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_len.py b/plotly/validators/layout/slider/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_len.py rename to plotly/validators/layout/slider/_len.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_lenmode.py b/plotly/validators/layout/slider/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_lenmode.py rename to plotly/validators/layout/slider/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_minorticklen.py b/plotly/validators/layout/slider/_minorticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_minorticklen.py rename to plotly/validators/layout/slider/_minorticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_name.py b/plotly/validators/layout/slider/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_name.py rename to plotly/validators/layout/slider/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_pad.py b/plotly/validators/layout/slider/_pad.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_pad.py rename to plotly/validators/layout/slider/_pad.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_stepdefaults.py b/plotly/validators/layout/slider/_stepdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_stepdefaults.py rename to plotly/validators/layout/slider/_stepdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_steps.py b/plotly/validators/layout/slider/_steps.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_steps.py rename to plotly/validators/layout/slider/_steps.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_templateitemname.py b/plotly/validators/layout/slider/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_templateitemname.py rename to plotly/validators/layout/slider/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_tickcolor.py b/plotly/validators/layout/slider/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_tickcolor.py rename to plotly/validators/layout/slider/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_ticklen.py b/plotly/validators/layout/slider/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_ticklen.py rename to plotly/validators/layout/slider/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_tickwidth.py b/plotly/validators/layout/slider/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_tickwidth.py rename to plotly/validators/layout/slider/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_transition.py b/plotly/validators/layout/slider/_transition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_transition.py rename to plotly/validators/layout/slider/_transition.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_visible.py b/plotly/validators/layout/slider/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_visible.py rename to plotly/validators/layout/slider/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_x.py b/plotly/validators/layout/slider/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_x.py rename to plotly/validators/layout/slider/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_xanchor.py b/plotly/validators/layout/slider/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_xanchor.py rename to plotly/validators/layout/slider/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_y.py b/plotly/validators/layout/slider/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_y.py rename to plotly/validators/layout/slider/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/_yanchor.py b/plotly/validators/layout/slider/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/_yanchor.py rename to plotly/validators/layout/slider/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/__init__.py b/plotly/validators/layout/slider/currentvalue/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/__init__.py rename to plotly/validators/layout/slider/currentvalue/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/_font.py b/plotly/validators/layout/slider/currentvalue/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/_font.py rename to plotly/validators/layout/slider/currentvalue/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/_offset.py b/plotly/validators/layout/slider/currentvalue/_offset.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/_offset.py rename to plotly/validators/layout/slider/currentvalue/_offset.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/_prefix.py b/plotly/validators/layout/slider/currentvalue/_prefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/_prefix.py rename to plotly/validators/layout/slider/currentvalue/_prefix.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/_suffix.py b/plotly/validators/layout/slider/currentvalue/_suffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/_suffix.py rename to plotly/validators/layout/slider/currentvalue/_suffix.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/_visible.py b/plotly/validators/layout/slider/currentvalue/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/_visible.py rename to plotly/validators/layout/slider/currentvalue/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/_xanchor.py b/plotly/validators/layout/slider/currentvalue/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/_xanchor.py rename to plotly/validators/layout/slider/currentvalue/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/__init__.py b/plotly/validators/layout/slider/currentvalue/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/__init__.py rename to plotly/validators/layout/slider/currentvalue/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_color.py b/plotly/validators/layout/slider/currentvalue/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_color.py rename to plotly/validators/layout/slider/currentvalue/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_family.py b/plotly/validators/layout/slider/currentvalue/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_family.py rename to plotly/validators/layout/slider/currentvalue/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_lineposition.py b/plotly/validators/layout/slider/currentvalue/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_lineposition.py rename to plotly/validators/layout/slider/currentvalue/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_shadow.py b/plotly/validators/layout/slider/currentvalue/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_shadow.py rename to plotly/validators/layout/slider/currentvalue/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_size.py b/plotly/validators/layout/slider/currentvalue/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_size.py rename to plotly/validators/layout/slider/currentvalue/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_style.py b/plotly/validators/layout/slider/currentvalue/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_style.py rename to plotly/validators/layout/slider/currentvalue/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_textcase.py b/plotly/validators/layout/slider/currentvalue/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_textcase.py rename to plotly/validators/layout/slider/currentvalue/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_variant.py b/plotly/validators/layout/slider/currentvalue/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_variant.py rename to plotly/validators/layout/slider/currentvalue/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_weight.py b/plotly/validators/layout/slider/currentvalue/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/currentvalue/font/_weight.py rename to plotly/validators/layout/slider/currentvalue/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/__init__.py b/plotly/validators/layout/slider/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/__init__.py rename to plotly/validators/layout/slider/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_color.py b/plotly/validators/layout/slider/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_color.py rename to plotly/validators/layout/slider/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_family.py b/plotly/validators/layout/slider/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_family.py rename to plotly/validators/layout/slider/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_lineposition.py b/plotly/validators/layout/slider/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_lineposition.py rename to plotly/validators/layout/slider/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_shadow.py b/plotly/validators/layout/slider/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_shadow.py rename to plotly/validators/layout/slider/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_size.py b/plotly/validators/layout/slider/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_size.py rename to plotly/validators/layout/slider/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_style.py b/plotly/validators/layout/slider/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_style.py rename to plotly/validators/layout/slider/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_textcase.py b/plotly/validators/layout/slider/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_textcase.py rename to plotly/validators/layout/slider/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_variant.py b/plotly/validators/layout/slider/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_variant.py rename to plotly/validators/layout/slider/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/font/_weight.py b/plotly/validators/layout/slider/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/font/_weight.py rename to plotly/validators/layout/slider/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/pad/__init__.py b/plotly/validators/layout/slider/pad/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/pad/__init__.py rename to plotly/validators/layout/slider/pad/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/pad/_b.py b/plotly/validators/layout/slider/pad/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/pad/_b.py rename to plotly/validators/layout/slider/pad/_b.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/pad/_l.py b/plotly/validators/layout/slider/pad/_l.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/pad/_l.py rename to plotly/validators/layout/slider/pad/_l.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/pad/_r.py b/plotly/validators/layout/slider/pad/_r.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/pad/_r.py rename to plotly/validators/layout/slider/pad/_r.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/pad/_t.py b/plotly/validators/layout/slider/pad/_t.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/pad/_t.py rename to plotly/validators/layout/slider/pad/_t.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/__init__.py b/plotly/validators/layout/slider/step/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/__init__.py rename to plotly/validators/layout/slider/step/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/_args.py b/plotly/validators/layout/slider/step/_args.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/_args.py rename to plotly/validators/layout/slider/step/_args.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/_execute.py b/plotly/validators/layout/slider/step/_execute.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/_execute.py rename to plotly/validators/layout/slider/step/_execute.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/_label.py b/plotly/validators/layout/slider/step/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/_label.py rename to plotly/validators/layout/slider/step/_label.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/_method.py b/plotly/validators/layout/slider/step/_method.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/_method.py rename to plotly/validators/layout/slider/step/_method.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/_name.py b/plotly/validators/layout/slider/step/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/_name.py rename to plotly/validators/layout/slider/step/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/_templateitemname.py b/plotly/validators/layout/slider/step/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/_templateitemname.py rename to plotly/validators/layout/slider/step/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/_value.py b/plotly/validators/layout/slider/step/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/_value.py rename to plotly/validators/layout/slider/step/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/step/_visible.py b/plotly/validators/layout/slider/step/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/step/_visible.py rename to plotly/validators/layout/slider/step/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/transition/__init__.py b/plotly/validators/layout/slider/transition/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/transition/__init__.py rename to plotly/validators/layout/slider/transition/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/transition/_duration.py b/plotly/validators/layout/slider/transition/_duration.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/transition/_duration.py rename to plotly/validators/layout/slider/transition/_duration.py diff --git a/packages/python/plotly/plotly/validators/layout/slider/transition/_easing.py b/plotly/validators/layout/slider/transition/_easing.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/slider/transition/_easing.py rename to plotly/validators/layout/slider/transition/_easing.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/__init__.py b/plotly/validators/layout/smith/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/__init__.py rename to plotly/validators/layout/smith/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/_bgcolor.py b/plotly/validators/layout/smith/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/_bgcolor.py rename to plotly/validators/layout/smith/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/_domain.py b/plotly/validators/layout/smith/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/_domain.py rename to plotly/validators/layout/smith/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/_imaginaryaxis.py b/plotly/validators/layout/smith/_imaginaryaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/_imaginaryaxis.py rename to plotly/validators/layout/smith/_imaginaryaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/_realaxis.py b/plotly/validators/layout/smith/_realaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/_realaxis.py rename to plotly/validators/layout/smith/_realaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/domain/__init__.py b/plotly/validators/layout/smith/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/domain/__init__.py rename to plotly/validators/layout/smith/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/domain/_column.py b/plotly/validators/layout/smith/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/domain/_column.py rename to plotly/validators/layout/smith/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/domain/_row.py b/plotly/validators/layout/smith/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/domain/_row.py rename to plotly/validators/layout/smith/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/domain/_x.py b/plotly/validators/layout/smith/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/domain/_x.py rename to plotly/validators/layout/smith/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/domain/_y.py b/plotly/validators/layout/smith/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/domain/_y.py rename to plotly/validators/layout/smith/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/__init__.py b/plotly/validators/layout/smith/imaginaryaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/__init__.py rename to plotly/validators/layout/smith/imaginaryaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_color.py b/plotly/validators/layout/smith/imaginaryaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_color.py rename to plotly/validators/layout/smith/imaginaryaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_gridcolor.py b/plotly/validators/layout/smith/imaginaryaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_gridcolor.py rename to plotly/validators/layout/smith/imaginaryaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_griddash.py b/plotly/validators/layout/smith/imaginaryaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_griddash.py rename to plotly/validators/layout/smith/imaginaryaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_gridwidth.py b/plotly/validators/layout/smith/imaginaryaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_gridwidth.py rename to plotly/validators/layout/smith/imaginaryaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_hoverformat.py b/plotly/validators/layout/smith/imaginaryaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_hoverformat.py rename to plotly/validators/layout/smith/imaginaryaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_labelalias.py b/plotly/validators/layout/smith/imaginaryaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_labelalias.py rename to plotly/validators/layout/smith/imaginaryaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_layer.py b/plotly/validators/layout/smith/imaginaryaxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_layer.py rename to plotly/validators/layout/smith/imaginaryaxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_linecolor.py b/plotly/validators/layout/smith/imaginaryaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_linecolor.py rename to plotly/validators/layout/smith/imaginaryaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_linewidth.py b/plotly/validators/layout/smith/imaginaryaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_linewidth.py rename to plotly/validators/layout/smith/imaginaryaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showgrid.py b/plotly/validators/layout/smith/imaginaryaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showgrid.py rename to plotly/validators/layout/smith/imaginaryaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showline.py b/plotly/validators/layout/smith/imaginaryaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showline.py rename to plotly/validators/layout/smith/imaginaryaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showticklabels.py b/plotly/validators/layout/smith/imaginaryaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showticklabels.py rename to plotly/validators/layout/smith/imaginaryaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showtickprefix.py b/plotly/validators/layout/smith/imaginaryaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showtickprefix.py rename to plotly/validators/layout/smith/imaginaryaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showticksuffix.py b/plotly/validators/layout/smith/imaginaryaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_showticksuffix.py rename to plotly/validators/layout/smith/imaginaryaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickcolor.py b/plotly/validators/layout/smith/imaginaryaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickcolor.py rename to plotly/validators/layout/smith/imaginaryaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickfont.py b/plotly/validators/layout/smith/imaginaryaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickfont.py rename to plotly/validators/layout/smith/imaginaryaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickformat.py b/plotly/validators/layout/smith/imaginaryaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickformat.py rename to plotly/validators/layout/smith/imaginaryaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_ticklen.py b/plotly/validators/layout/smith/imaginaryaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_ticklen.py rename to plotly/validators/layout/smith/imaginaryaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickprefix.py b/plotly/validators/layout/smith/imaginaryaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickprefix.py rename to plotly/validators/layout/smith/imaginaryaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_ticks.py b/plotly/validators/layout/smith/imaginaryaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_ticks.py rename to plotly/validators/layout/smith/imaginaryaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_ticksuffix.py b/plotly/validators/layout/smith/imaginaryaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_ticksuffix.py rename to plotly/validators/layout/smith/imaginaryaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickvals.py b/plotly/validators/layout/smith/imaginaryaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickvals.py rename to plotly/validators/layout/smith/imaginaryaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickvalssrc.py b/plotly/validators/layout/smith/imaginaryaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickvalssrc.py rename to plotly/validators/layout/smith/imaginaryaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickwidth.py b/plotly/validators/layout/smith/imaginaryaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_tickwidth.py rename to plotly/validators/layout/smith/imaginaryaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_visible.py b/plotly/validators/layout/smith/imaginaryaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/_visible.py rename to plotly/validators/layout/smith/imaginaryaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/__init__.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/__init__.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_color.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_color.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_family.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_family.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_lineposition.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_lineposition.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_shadow.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_shadow.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_size.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_size.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_style.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_style.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_textcase.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_textcase.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_variant.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_variant.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_weight.py b/plotly/validators/layout/smith/imaginaryaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/imaginaryaxis/tickfont/_weight.py rename to plotly/validators/layout/smith/imaginaryaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/__init__.py b/plotly/validators/layout/smith/realaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/__init__.py rename to plotly/validators/layout/smith/realaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_color.py b/plotly/validators/layout/smith/realaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_color.py rename to plotly/validators/layout/smith/realaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_gridcolor.py b/plotly/validators/layout/smith/realaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_gridcolor.py rename to plotly/validators/layout/smith/realaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_griddash.py b/plotly/validators/layout/smith/realaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_griddash.py rename to plotly/validators/layout/smith/realaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_gridwidth.py b/plotly/validators/layout/smith/realaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_gridwidth.py rename to plotly/validators/layout/smith/realaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_hoverformat.py b/plotly/validators/layout/smith/realaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_hoverformat.py rename to plotly/validators/layout/smith/realaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_labelalias.py b/plotly/validators/layout/smith/realaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_labelalias.py rename to plotly/validators/layout/smith/realaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_layer.py b/plotly/validators/layout/smith/realaxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_layer.py rename to plotly/validators/layout/smith/realaxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_linecolor.py b/plotly/validators/layout/smith/realaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_linecolor.py rename to plotly/validators/layout/smith/realaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_linewidth.py b/plotly/validators/layout/smith/realaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_linewidth.py rename to plotly/validators/layout/smith/realaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_showgrid.py b/plotly/validators/layout/smith/realaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_showgrid.py rename to plotly/validators/layout/smith/realaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_showline.py b/plotly/validators/layout/smith/realaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_showline.py rename to plotly/validators/layout/smith/realaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_showticklabels.py b/plotly/validators/layout/smith/realaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_showticklabels.py rename to plotly/validators/layout/smith/realaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_showtickprefix.py b/plotly/validators/layout/smith/realaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_showtickprefix.py rename to plotly/validators/layout/smith/realaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_showticksuffix.py b/plotly/validators/layout/smith/realaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_showticksuffix.py rename to plotly/validators/layout/smith/realaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_side.py b/plotly/validators/layout/smith/realaxis/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_side.py rename to plotly/validators/layout/smith/realaxis/_side.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickangle.py b/plotly/validators/layout/smith/realaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickangle.py rename to plotly/validators/layout/smith/realaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickcolor.py b/plotly/validators/layout/smith/realaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickcolor.py rename to plotly/validators/layout/smith/realaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickfont.py b/plotly/validators/layout/smith/realaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickfont.py rename to plotly/validators/layout/smith/realaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickformat.py b/plotly/validators/layout/smith/realaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickformat.py rename to plotly/validators/layout/smith/realaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_ticklen.py b/plotly/validators/layout/smith/realaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_ticklen.py rename to plotly/validators/layout/smith/realaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickprefix.py b/plotly/validators/layout/smith/realaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickprefix.py rename to plotly/validators/layout/smith/realaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_ticks.py b/plotly/validators/layout/smith/realaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_ticks.py rename to plotly/validators/layout/smith/realaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_ticksuffix.py b/plotly/validators/layout/smith/realaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_ticksuffix.py rename to plotly/validators/layout/smith/realaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickvals.py b/plotly/validators/layout/smith/realaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickvals.py rename to plotly/validators/layout/smith/realaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickvalssrc.py b/plotly/validators/layout/smith/realaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickvalssrc.py rename to plotly/validators/layout/smith/realaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickwidth.py b/plotly/validators/layout/smith/realaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_tickwidth.py rename to plotly/validators/layout/smith/realaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/_visible.py b/plotly/validators/layout/smith/realaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/_visible.py rename to plotly/validators/layout/smith/realaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/__init__.py b/plotly/validators/layout/smith/realaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/__init__.py rename to plotly/validators/layout/smith/realaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_color.py b/plotly/validators/layout/smith/realaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_color.py rename to plotly/validators/layout/smith/realaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_family.py b/plotly/validators/layout/smith/realaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_family.py rename to plotly/validators/layout/smith/realaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_lineposition.py b/plotly/validators/layout/smith/realaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_lineposition.py rename to plotly/validators/layout/smith/realaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_shadow.py b/plotly/validators/layout/smith/realaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_shadow.py rename to plotly/validators/layout/smith/realaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_size.py b/plotly/validators/layout/smith/realaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_size.py rename to plotly/validators/layout/smith/realaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_style.py b/plotly/validators/layout/smith/realaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_style.py rename to plotly/validators/layout/smith/realaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_textcase.py b/plotly/validators/layout/smith/realaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_textcase.py rename to plotly/validators/layout/smith/realaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_variant.py b/plotly/validators/layout/smith/realaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_variant.py rename to plotly/validators/layout/smith/realaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_weight.py b/plotly/validators/layout/smith/realaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/smith/realaxis/tickfont/_weight.py rename to plotly/validators/layout/smith/realaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/template/__init__.py b/plotly/validators/layout/template/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/__init__.py rename to plotly/validators/layout/template/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/template/_data.py b/plotly/validators/layout/template/_data.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/_data.py rename to plotly/validators/layout/template/_data.py diff --git a/packages/python/plotly/plotly/validators/layout/template/_layout.py b/plotly/validators/layout/template/_layout.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/_layout.py rename to plotly/validators/layout/template/_layout.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/__init__.py b/plotly/validators/layout/template/data/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/__init__.py rename to plotly/validators/layout/template/data/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_bar.py b/plotly/validators/layout/template/data/_bar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_bar.py rename to plotly/validators/layout/template/data/_bar.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_barpolar.py b/plotly/validators/layout/template/data/_barpolar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_barpolar.py rename to plotly/validators/layout/template/data/_barpolar.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_box.py b/plotly/validators/layout/template/data/_box.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_box.py rename to plotly/validators/layout/template/data/_box.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_candlestick.py b/plotly/validators/layout/template/data/_candlestick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_candlestick.py rename to plotly/validators/layout/template/data/_candlestick.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_carpet.py b/plotly/validators/layout/template/data/_carpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_carpet.py rename to plotly/validators/layout/template/data/_carpet.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_choropleth.py b/plotly/validators/layout/template/data/_choropleth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_choropleth.py rename to plotly/validators/layout/template/data/_choropleth.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_choroplethmap.py b/plotly/validators/layout/template/data/_choroplethmap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_choroplethmap.py rename to plotly/validators/layout/template/data/_choroplethmap.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_choroplethmapbox.py b/plotly/validators/layout/template/data/_choroplethmapbox.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_choroplethmapbox.py rename to plotly/validators/layout/template/data/_choroplethmapbox.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_cone.py b/plotly/validators/layout/template/data/_cone.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_cone.py rename to plotly/validators/layout/template/data/_cone.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_contour.py b/plotly/validators/layout/template/data/_contour.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_contour.py rename to plotly/validators/layout/template/data/_contour.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_contourcarpet.py b/plotly/validators/layout/template/data/_contourcarpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_contourcarpet.py rename to plotly/validators/layout/template/data/_contourcarpet.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_densitymap.py b/plotly/validators/layout/template/data/_densitymap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_densitymap.py rename to plotly/validators/layout/template/data/_densitymap.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_densitymapbox.py b/plotly/validators/layout/template/data/_densitymapbox.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_densitymapbox.py rename to plotly/validators/layout/template/data/_densitymapbox.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_funnel.py b/plotly/validators/layout/template/data/_funnel.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_funnel.py rename to plotly/validators/layout/template/data/_funnel.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_funnelarea.py b/plotly/validators/layout/template/data/_funnelarea.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_funnelarea.py rename to plotly/validators/layout/template/data/_funnelarea.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_heatmap.py b/plotly/validators/layout/template/data/_heatmap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_heatmap.py rename to plotly/validators/layout/template/data/_heatmap.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_histogram.py b/plotly/validators/layout/template/data/_histogram.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_histogram.py rename to plotly/validators/layout/template/data/_histogram.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_histogram2d.py b/plotly/validators/layout/template/data/_histogram2d.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_histogram2d.py rename to plotly/validators/layout/template/data/_histogram2d.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_histogram2dcontour.py b/plotly/validators/layout/template/data/_histogram2dcontour.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_histogram2dcontour.py rename to plotly/validators/layout/template/data/_histogram2dcontour.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_icicle.py b/plotly/validators/layout/template/data/_icicle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_icicle.py rename to plotly/validators/layout/template/data/_icicle.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_image.py b/plotly/validators/layout/template/data/_image.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_image.py rename to plotly/validators/layout/template/data/_image.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_indicator.py b/plotly/validators/layout/template/data/_indicator.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_indicator.py rename to plotly/validators/layout/template/data/_indicator.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_isosurface.py b/plotly/validators/layout/template/data/_isosurface.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_isosurface.py rename to plotly/validators/layout/template/data/_isosurface.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_mesh3d.py b/plotly/validators/layout/template/data/_mesh3d.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_mesh3d.py rename to plotly/validators/layout/template/data/_mesh3d.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_ohlc.py b/plotly/validators/layout/template/data/_ohlc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_ohlc.py rename to plotly/validators/layout/template/data/_ohlc.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_parcats.py b/plotly/validators/layout/template/data/_parcats.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_parcats.py rename to plotly/validators/layout/template/data/_parcats.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_parcoords.py b/plotly/validators/layout/template/data/_parcoords.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_parcoords.py rename to plotly/validators/layout/template/data/_parcoords.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_pie.py b/plotly/validators/layout/template/data/_pie.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_pie.py rename to plotly/validators/layout/template/data/_pie.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_sankey.py b/plotly/validators/layout/template/data/_sankey.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_sankey.py rename to plotly/validators/layout/template/data/_sankey.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scatter.py b/plotly/validators/layout/template/data/_scatter.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scatter.py rename to plotly/validators/layout/template/data/_scatter.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scatter3d.py b/plotly/validators/layout/template/data/_scatter3d.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scatter3d.py rename to plotly/validators/layout/template/data/_scatter3d.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scattercarpet.py b/plotly/validators/layout/template/data/_scattercarpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scattercarpet.py rename to plotly/validators/layout/template/data/_scattercarpet.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scattergeo.py b/plotly/validators/layout/template/data/_scattergeo.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scattergeo.py rename to plotly/validators/layout/template/data/_scattergeo.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scattergl.py b/plotly/validators/layout/template/data/_scattergl.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scattergl.py rename to plotly/validators/layout/template/data/_scattergl.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scattermap.py b/plotly/validators/layout/template/data/_scattermap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scattermap.py rename to plotly/validators/layout/template/data/_scattermap.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scattermapbox.py b/plotly/validators/layout/template/data/_scattermapbox.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scattermapbox.py rename to plotly/validators/layout/template/data/_scattermapbox.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scatterpolar.py b/plotly/validators/layout/template/data/_scatterpolar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scatterpolar.py rename to plotly/validators/layout/template/data/_scatterpolar.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scatterpolargl.py b/plotly/validators/layout/template/data/_scatterpolargl.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scatterpolargl.py rename to plotly/validators/layout/template/data/_scatterpolargl.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scattersmith.py b/plotly/validators/layout/template/data/_scattersmith.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scattersmith.py rename to plotly/validators/layout/template/data/_scattersmith.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_scatterternary.py b/plotly/validators/layout/template/data/_scatterternary.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_scatterternary.py rename to plotly/validators/layout/template/data/_scatterternary.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_splom.py b/plotly/validators/layout/template/data/_splom.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_splom.py rename to plotly/validators/layout/template/data/_splom.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_streamtube.py b/plotly/validators/layout/template/data/_streamtube.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_streamtube.py rename to plotly/validators/layout/template/data/_streamtube.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_sunburst.py b/plotly/validators/layout/template/data/_sunburst.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_sunburst.py rename to plotly/validators/layout/template/data/_sunburst.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_surface.py b/plotly/validators/layout/template/data/_surface.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_surface.py rename to plotly/validators/layout/template/data/_surface.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_table.py b/plotly/validators/layout/template/data/_table.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_table.py rename to plotly/validators/layout/template/data/_table.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_treemap.py b/plotly/validators/layout/template/data/_treemap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_treemap.py rename to plotly/validators/layout/template/data/_treemap.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_violin.py b/plotly/validators/layout/template/data/_violin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_violin.py rename to plotly/validators/layout/template/data/_violin.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_volume.py b/plotly/validators/layout/template/data/_volume.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_volume.py rename to plotly/validators/layout/template/data/_volume.py diff --git a/packages/python/plotly/plotly/validators/layout/template/data/_waterfall.py b/plotly/validators/layout/template/data/_waterfall.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/template/data/_waterfall.py rename to plotly/validators/layout/template/data/_waterfall.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/__init__.py b/plotly/validators/layout/ternary/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/__init__.py rename to plotly/validators/layout/ternary/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/_aaxis.py b/plotly/validators/layout/ternary/_aaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/_aaxis.py rename to plotly/validators/layout/ternary/_aaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/_baxis.py b/plotly/validators/layout/ternary/_baxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/_baxis.py rename to plotly/validators/layout/ternary/_baxis.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/_bgcolor.py b/plotly/validators/layout/ternary/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/_bgcolor.py rename to plotly/validators/layout/ternary/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/_caxis.py b/plotly/validators/layout/ternary/_caxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/_caxis.py rename to plotly/validators/layout/ternary/_caxis.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/_domain.py b/plotly/validators/layout/ternary/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/_domain.py rename to plotly/validators/layout/ternary/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/_sum.py b/plotly/validators/layout/ternary/_sum.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/_sum.py rename to plotly/validators/layout/ternary/_sum.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/_uirevision.py b/plotly/validators/layout/ternary/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/_uirevision.py rename to plotly/validators/layout/ternary/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/__init__.py b/plotly/validators/layout/ternary/aaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/__init__.py rename to plotly/validators/layout/ternary/aaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_color.py b/plotly/validators/layout/ternary/aaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_color.py rename to plotly/validators/layout/ternary/aaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_dtick.py b/plotly/validators/layout/ternary/aaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_dtick.py rename to plotly/validators/layout/ternary/aaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_exponentformat.py b/plotly/validators/layout/ternary/aaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_exponentformat.py rename to plotly/validators/layout/ternary/aaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_gridcolor.py b/plotly/validators/layout/ternary/aaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_gridcolor.py rename to plotly/validators/layout/ternary/aaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_griddash.py b/plotly/validators/layout/ternary/aaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_griddash.py rename to plotly/validators/layout/ternary/aaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_gridwidth.py b/plotly/validators/layout/ternary/aaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_gridwidth.py rename to plotly/validators/layout/ternary/aaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_hoverformat.py b/plotly/validators/layout/ternary/aaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_hoverformat.py rename to plotly/validators/layout/ternary/aaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_labelalias.py b/plotly/validators/layout/ternary/aaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_labelalias.py rename to plotly/validators/layout/ternary/aaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_layer.py b/plotly/validators/layout/ternary/aaxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_layer.py rename to plotly/validators/layout/ternary/aaxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_linecolor.py b/plotly/validators/layout/ternary/aaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_linecolor.py rename to plotly/validators/layout/ternary/aaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_linewidth.py b/plotly/validators/layout/ternary/aaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_linewidth.py rename to plotly/validators/layout/ternary/aaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_min.py b/plotly/validators/layout/ternary/aaxis/_min.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_min.py rename to plotly/validators/layout/ternary/aaxis/_min.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_minexponent.py b/plotly/validators/layout/ternary/aaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_minexponent.py rename to plotly/validators/layout/ternary/aaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_nticks.py b/plotly/validators/layout/ternary/aaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_nticks.py rename to plotly/validators/layout/ternary/aaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_separatethousands.py b/plotly/validators/layout/ternary/aaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_separatethousands.py rename to plotly/validators/layout/ternary/aaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showexponent.py b/plotly/validators/layout/ternary/aaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showexponent.py rename to plotly/validators/layout/ternary/aaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showgrid.py b/plotly/validators/layout/ternary/aaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showgrid.py rename to plotly/validators/layout/ternary/aaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showline.py b/plotly/validators/layout/ternary/aaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showline.py rename to plotly/validators/layout/ternary/aaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showticklabels.py b/plotly/validators/layout/ternary/aaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showticklabels.py rename to plotly/validators/layout/ternary/aaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showtickprefix.py b/plotly/validators/layout/ternary/aaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showtickprefix.py rename to plotly/validators/layout/ternary/aaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showticksuffix.py b/plotly/validators/layout/ternary/aaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_showticksuffix.py rename to plotly/validators/layout/ternary/aaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tick0.py b/plotly/validators/layout/ternary/aaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tick0.py rename to plotly/validators/layout/ternary/aaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickangle.py b/plotly/validators/layout/ternary/aaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickangle.py rename to plotly/validators/layout/ternary/aaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickcolor.py b/plotly/validators/layout/ternary/aaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickcolor.py rename to plotly/validators/layout/ternary/aaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickfont.py b/plotly/validators/layout/ternary/aaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickfont.py rename to plotly/validators/layout/ternary/aaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickformat.py b/plotly/validators/layout/ternary/aaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickformat.py rename to plotly/validators/layout/ternary/aaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickformatstopdefaults.py b/plotly/validators/layout/ternary/aaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickformatstopdefaults.py rename to plotly/validators/layout/ternary/aaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickformatstops.py b/plotly/validators/layout/ternary/aaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickformatstops.py rename to plotly/validators/layout/ternary/aaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticklabelstep.py b/plotly/validators/layout/ternary/aaxis/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticklabelstep.py rename to plotly/validators/layout/ternary/aaxis/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticklen.py b/plotly/validators/layout/ternary/aaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticklen.py rename to plotly/validators/layout/ternary/aaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickmode.py b/plotly/validators/layout/ternary/aaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickmode.py rename to plotly/validators/layout/ternary/aaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickprefix.py b/plotly/validators/layout/ternary/aaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickprefix.py rename to plotly/validators/layout/ternary/aaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticks.py b/plotly/validators/layout/ternary/aaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticks.py rename to plotly/validators/layout/ternary/aaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticksuffix.py b/plotly/validators/layout/ternary/aaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticksuffix.py rename to plotly/validators/layout/ternary/aaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticktext.py b/plotly/validators/layout/ternary/aaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticktext.py rename to plotly/validators/layout/ternary/aaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticktextsrc.py b/plotly/validators/layout/ternary/aaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_ticktextsrc.py rename to plotly/validators/layout/ternary/aaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickvals.py b/plotly/validators/layout/ternary/aaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickvals.py rename to plotly/validators/layout/ternary/aaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickvalssrc.py b/plotly/validators/layout/ternary/aaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickvalssrc.py rename to plotly/validators/layout/ternary/aaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickwidth.py b/plotly/validators/layout/ternary/aaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_tickwidth.py rename to plotly/validators/layout/ternary/aaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_title.py b/plotly/validators/layout/ternary/aaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_title.py rename to plotly/validators/layout/ternary/aaxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/_uirevision.py b/plotly/validators/layout/ternary/aaxis/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/_uirevision.py rename to plotly/validators/layout/ternary/aaxis/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/__init__.py b/plotly/validators/layout/ternary/aaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/__init__.py rename to plotly/validators/layout/ternary/aaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_color.py b/plotly/validators/layout/ternary/aaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_color.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_family.py b/plotly/validators/layout/ternary/aaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_family.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_lineposition.py b/plotly/validators/layout/ternary/aaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_lineposition.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_shadow.py b/plotly/validators/layout/ternary/aaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_shadow.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_size.py b/plotly/validators/layout/ternary/aaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_size.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_style.py b/plotly/validators/layout/ternary/aaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_style.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_textcase.py b/plotly/validators/layout/ternary/aaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_textcase.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_variant.py b/plotly/validators/layout/ternary/aaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_variant.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_weight.py b/plotly/validators/layout/ternary/aaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickfont/_weight.py rename to plotly/validators/layout/ternary/aaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/__init__.py b/plotly/validators/layout/ternary/aaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/__init__.py rename to plotly/validators/layout/ternary/aaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/ternary/aaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/ternary/aaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_enabled.py b/plotly/validators/layout/ternary/aaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_enabled.py rename to plotly/validators/layout/ternary/aaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_name.py b/plotly/validators/layout/ternary/aaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_name.py rename to plotly/validators/layout/ternary/aaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/ternary/aaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/ternary/aaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_value.py b/plotly/validators/layout/ternary/aaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/tickformatstop/_value.py rename to plotly/validators/layout/ternary/aaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/__init__.py b/plotly/validators/layout/ternary/aaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/__init__.py rename to plotly/validators/layout/ternary/aaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/_font.py b/plotly/validators/layout/ternary/aaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/_font.py rename to plotly/validators/layout/ternary/aaxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/_text.py b/plotly/validators/layout/ternary/aaxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/_text.py rename to plotly/validators/layout/ternary/aaxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/__init__.py b/plotly/validators/layout/ternary/aaxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/__init__.py rename to plotly/validators/layout/ternary/aaxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_color.py b/plotly/validators/layout/ternary/aaxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_color.py rename to plotly/validators/layout/ternary/aaxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_family.py b/plotly/validators/layout/ternary/aaxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_family.py rename to plotly/validators/layout/ternary/aaxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_lineposition.py b/plotly/validators/layout/ternary/aaxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_lineposition.py rename to plotly/validators/layout/ternary/aaxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_shadow.py b/plotly/validators/layout/ternary/aaxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_shadow.py rename to plotly/validators/layout/ternary/aaxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_size.py b/plotly/validators/layout/ternary/aaxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_size.py rename to plotly/validators/layout/ternary/aaxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_style.py b/plotly/validators/layout/ternary/aaxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_style.py rename to plotly/validators/layout/ternary/aaxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_textcase.py b/plotly/validators/layout/ternary/aaxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_textcase.py rename to plotly/validators/layout/ternary/aaxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_variant.py b/plotly/validators/layout/ternary/aaxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_variant.py rename to plotly/validators/layout/ternary/aaxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_weight.py b/plotly/validators/layout/ternary/aaxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/aaxis/title/font/_weight.py rename to plotly/validators/layout/ternary/aaxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/__init__.py b/plotly/validators/layout/ternary/baxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/__init__.py rename to plotly/validators/layout/ternary/baxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_color.py b/plotly/validators/layout/ternary/baxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_color.py rename to plotly/validators/layout/ternary/baxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_dtick.py b/plotly/validators/layout/ternary/baxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_dtick.py rename to plotly/validators/layout/ternary/baxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_exponentformat.py b/plotly/validators/layout/ternary/baxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_exponentformat.py rename to plotly/validators/layout/ternary/baxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_gridcolor.py b/plotly/validators/layout/ternary/baxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_gridcolor.py rename to plotly/validators/layout/ternary/baxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_griddash.py b/plotly/validators/layout/ternary/baxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_griddash.py rename to plotly/validators/layout/ternary/baxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_gridwidth.py b/plotly/validators/layout/ternary/baxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_gridwidth.py rename to plotly/validators/layout/ternary/baxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_hoverformat.py b/plotly/validators/layout/ternary/baxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_hoverformat.py rename to plotly/validators/layout/ternary/baxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_labelalias.py b/plotly/validators/layout/ternary/baxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_labelalias.py rename to plotly/validators/layout/ternary/baxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_layer.py b/plotly/validators/layout/ternary/baxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_layer.py rename to plotly/validators/layout/ternary/baxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_linecolor.py b/plotly/validators/layout/ternary/baxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_linecolor.py rename to plotly/validators/layout/ternary/baxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_linewidth.py b/plotly/validators/layout/ternary/baxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_linewidth.py rename to plotly/validators/layout/ternary/baxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_min.py b/plotly/validators/layout/ternary/baxis/_min.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_min.py rename to plotly/validators/layout/ternary/baxis/_min.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_minexponent.py b/plotly/validators/layout/ternary/baxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_minexponent.py rename to plotly/validators/layout/ternary/baxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_nticks.py b/plotly/validators/layout/ternary/baxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_nticks.py rename to plotly/validators/layout/ternary/baxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_separatethousands.py b/plotly/validators/layout/ternary/baxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_separatethousands.py rename to plotly/validators/layout/ternary/baxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_showexponent.py b/plotly/validators/layout/ternary/baxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_showexponent.py rename to plotly/validators/layout/ternary/baxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_showgrid.py b/plotly/validators/layout/ternary/baxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_showgrid.py rename to plotly/validators/layout/ternary/baxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_showline.py b/plotly/validators/layout/ternary/baxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_showline.py rename to plotly/validators/layout/ternary/baxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_showticklabels.py b/plotly/validators/layout/ternary/baxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_showticklabels.py rename to plotly/validators/layout/ternary/baxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_showtickprefix.py b/plotly/validators/layout/ternary/baxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_showtickprefix.py rename to plotly/validators/layout/ternary/baxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_showticksuffix.py b/plotly/validators/layout/ternary/baxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_showticksuffix.py rename to plotly/validators/layout/ternary/baxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tick0.py b/plotly/validators/layout/ternary/baxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tick0.py rename to plotly/validators/layout/ternary/baxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickangle.py b/plotly/validators/layout/ternary/baxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickangle.py rename to plotly/validators/layout/ternary/baxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickcolor.py b/plotly/validators/layout/ternary/baxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickcolor.py rename to plotly/validators/layout/ternary/baxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickfont.py b/plotly/validators/layout/ternary/baxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickfont.py rename to plotly/validators/layout/ternary/baxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickformat.py b/plotly/validators/layout/ternary/baxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickformat.py rename to plotly/validators/layout/ternary/baxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickformatstopdefaults.py b/plotly/validators/layout/ternary/baxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickformatstopdefaults.py rename to plotly/validators/layout/ternary/baxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickformatstops.py b/plotly/validators/layout/ternary/baxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickformatstops.py rename to plotly/validators/layout/ternary/baxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticklabelstep.py b/plotly/validators/layout/ternary/baxis/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticklabelstep.py rename to plotly/validators/layout/ternary/baxis/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticklen.py b/plotly/validators/layout/ternary/baxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticklen.py rename to plotly/validators/layout/ternary/baxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickmode.py b/plotly/validators/layout/ternary/baxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickmode.py rename to plotly/validators/layout/ternary/baxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickprefix.py b/plotly/validators/layout/ternary/baxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickprefix.py rename to plotly/validators/layout/ternary/baxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticks.py b/plotly/validators/layout/ternary/baxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticks.py rename to plotly/validators/layout/ternary/baxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticksuffix.py b/plotly/validators/layout/ternary/baxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticksuffix.py rename to plotly/validators/layout/ternary/baxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticktext.py b/plotly/validators/layout/ternary/baxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticktext.py rename to plotly/validators/layout/ternary/baxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticktextsrc.py b/plotly/validators/layout/ternary/baxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_ticktextsrc.py rename to plotly/validators/layout/ternary/baxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickvals.py b/plotly/validators/layout/ternary/baxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickvals.py rename to plotly/validators/layout/ternary/baxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickvalssrc.py b/plotly/validators/layout/ternary/baxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickvalssrc.py rename to plotly/validators/layout/ternary/baxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickwidth.py b/plotly/validators/layout/ternary/baxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_tickwidth.py rename to plotly/validators/layout/ternary/baxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_title.py b/plotly/validators/layout/ternary/baxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_title.py rename to plotly/validators/layout/ternary/baxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/_uirevision.py b/plotly/validators/layout/ternary/baxis/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/_uirevision.py rename to plotly/validators/layout/ternary/baxis/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/__init__.py b/plotly/validators/layout/ternary/baxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/__init__.py rename to plotly/validators/layout/ternary/baxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_color.py b/plotly/validators/layout/ternary/baxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_color.py rename to plotly/validators/layout/ternary/baxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_family.py b/plotly/validators/layout/ternary/baxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_family.py rename to plotly/validators/layout/ternary/baxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_lineposition.py b/plotly/validators/layout/ternary/baxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_lineposition.py rename to plotly/validators/layout/ternary/baxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_shadow.py b/plotly/validators/layout/ternary/baxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_shadow.py rename to plotly/validators/layout/ternary/baxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_size.py b/plotly/validators/layout/ternary/baxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_size.py rename to plotly/validators/layout/ternary/baxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_style.py b/plotly/validators/layout/ternary/baxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_style.py rename to plotly/validators/layout/ternary/baxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_textcase.py b/plotly/validators/layout/ternary/baxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_textcase.py rename to plotly/validators/layout/ternary/baxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_variant.py b/plotly/validators/layout/ternary/baxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_variant.py rename to plotly/validators/layout/ternary/baxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_weight.py b/plotly/validators/layout/ternary/baxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickfont/_weight.py rename to plotly/validators/layout/ternary/baxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/__init__.py b/plotly/validators/layout/ternary/baxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/__init__.py rename to plotly/validators/layout/ternary/baxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/ternary/baxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/ternary/baxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_enabled.py b/plotly/validators/layout/ternary/baxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_enabled.py rename to plotly/validators/layout/ternary/baxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_name.py b/plotly/validators/layout/ternary/baxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_name.py rename to plotly/validators/layout/ternary/baxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/ternary/baxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/ternary/baxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_value.py b/plotly/validators/layout/ternary/baxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/tickformatstop/_value.py rename to plotly/validators/layout/ternary/baxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/__init__.py b/plotly/validators/layout/ternary/baxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/__init__.py rename to plotly/validators/layout/ternary/baxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/_font.py b/plotly/validators/layout/ternary/baxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/_font.py rename to plotly/validators/layout/ternary/baxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/_text.py b/plotly/validators/layout/ternary/baxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/_text.py rename to plotly/validators/layout/ternary/baxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/__init__.py b/plotly/validators/layout/ternary/baxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/__init__.py rename to plotly/validators/layout/ternary/baxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_color.py b/plotly/validators/layout/ternary/baxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_color.py rename to plotly/validators/layout/ternary/baxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_family.py b/plotly/validators/layout/ternary/baxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_family.py rename to plotly/validators/layout/ternary/baxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_lineposition.py b/plotly/validators/layout/ternary/baxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_lineposition.py rename to plotly/validators/layout/ternary/baxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_shadow.py b/plotly/validators/layout/ternary/baxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_shadow.py rename to plotly/validators/layout/ternary/baxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_size.py b/plotly/validators/layout/ternary/baxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_size.py rename to plotly/validators/layout/ternary/baxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_style.py b/plotly/validators/layout/ternary/baxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_style.py rename to plotly/validators/layout/ternary/baxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_textcase.py b/plotly/validators/layout/ternary/baxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_textcase.py rename to plotly/validators/layout/ternary/baxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_variant.py b/plotly/validators/layout/ternary/baxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_variant.py rename to plotly/validators/layout/ternary/baxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_weight.py b/plotly/validators/layout/ternary/baxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/baxis/title/font/_weight.py rename to plotly/validators/layout/ternary/baxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/__init__.py b/plotly/validators/layout/ternary/caxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/__init__.py rename to plotly/validators/layout/ternary/caxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_color.py b/plotly/validators/layout/ternary/caxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_color.py rename to plotly/validators/layout/ternary/caxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_dtick.py b/plotly/validators/layout/ternary/caxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_dtick.py rename to plotly/validators/layout/ternary/caxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_exponentformat.py b/plotly/validators/layout/ternary/caxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_exponentformat.py rename to plotly/validators/layout/ternary/caxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_gridcolor.py b/plotly/validators/layout/ternary/caxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_gridcolor.py rename to plotly/validators/layout/ternary/caxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_griddash.py b/plotly/validators/layout/ternary/caxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_griddash.py rename to plotly/validators/layout/ternary/caxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_gridwidth.py b/plotly/validators/layout/ternary/caxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_gridwidth.py rename to plotly/validators/layout/ternary/caxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_hoverformat.py b/plotly/validators/layout/ternary/caxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_hoverformat.py rename to plotly/validators/layout/ternary/caxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_labelalias.py b/plotly/validators/layout/ternary/caxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_labelalias.py rename to plotly/validators/layout/ternary/caxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_layer.py b/plotly/validators/layout/ternary/caxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_layer.py rename to plotly/validators/layout/ternary/caxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_linecolor.py b/plotly/validators/layout/ternary/caxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_linecolor.py rename to plotly/validators/layout/ternary/caxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_linewidth.py b/plotly/validators/layout/ternary/caxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_linewidth.py rename to plotly/validators/layout/ternary/caxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_min.py b/plotly/validators/layout/ternary/caxis/_min.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_min.py rename to plotly/validators/layout/ternary/caxis/_min.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_minexponent.py b/plotly/validators/layout/ternary/caxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_minexponent.py rename to plotly/validators/layout/ternary/caxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_nticks.py b/plotly/validators/layout/ternary/caxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_nticks.py rename to plotly/validators/layout/ternary/caxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_separatethousands.py b/plotly/validators/layout/ternary/caxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_separatethousands.py rename to plotly/validators/layout/ternary/caxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_showexponent.py b/plotly/validators/layout/ternary/caxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_showexponent.py rename to plotly/validators/layout/ternary/caxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_showgrid.py b/plotly/validators/layout/ternary/caxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_showgrid.py rename to plotly/validators/layout/ternary/caxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_showline.py b/plotly/validators/layout/ternary/caxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_showline.py rename to plotly/validators/layout/ternary/caxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_showticklabels.py b/plotly/validators/layout/ternary/caxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_showticklabels.py rename to plotly/validators/layout/ternary/caxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_showtickprefix.py b/plotly/validators/layout/ternary/caxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_showtickprefix.py rename to plotly/validators/layout/ternary/caxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_showticksuffix.py b/plotly/validators/layout/ternary/caxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_showticksuffix.py rename to plotly/validators/layout/ternary/caxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tick0.py b/plotly/validators/layout/ternary/caxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tick0.py rename to plotly/validators/layout/ternary/caxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickangle.py b/plotly/validators/layout/ternary/caxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickangle.py rename to plotly/validators/layout/ternary/caxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickcolor.py b/plotly/validators/layout/ternary/caxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickcolor.py rename to plotly/validators/layout/ternary/caxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickfont.py b/plotly/validators/layout/ternary/caxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickfont.py rename to plotly/validators/layout/ternary/caxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickformat.py b/plotly/validators/layout/ternary/caxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickformat.py rename to plotly/validators/layout/ternary/caxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickformatstopdefaults.py b/plotly/validators/layout/ternary/caxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickformatstopdefaults.py rename to plotly/validators/layout/ternary/caxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickformatstops.py b/plotly/validators/layout/ternary/caxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickformatstops.py rename to plotly/validators/layout/ternary/caxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticklabelstep.py b/plotly/validators/layout/ternary/caxis/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticklabelstep.py rename to plotly/validators/layout/ternary/caxis/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticklen.py b/plotly/validators/layout/ternary/caxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticklen.py rename to plotly/validators/layout/ternary/caxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickmode.py b/plotly/validators/layout/ternary/caxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickmode.py rename to plotly/validators/layout/ternary/caxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickprefix.py b/plotly/validators/layout/ternary/caxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickprefix.py rename to plotly/validators/layout/ternary/caxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticks.py b/plotly/validators/layout/ternary/caxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticks.py rename to plotly/validators/layout/ternary/caxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticksuffix.py b/plotly/validators/layout/ternary/caxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticksuffix.py rename to plotly/validators/layout/ternary/caxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticktext.py b/plotly/validators/layout/ternary/caxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticktext.py rename to plotly/validators/layout/ternary/caxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticktextsrc.py b/plotly/validators/layout/ternary/caxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_ticktextsrc.py rename to plotly/validators/layout/ternary/caxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickvals.py b/plotly/validators/layout/ternary/caxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickvals.py rename to plotly/validators/layout/ternary/caxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickvalssrc.py b/plotly/validators/layout/ternary/caxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickvalssrc.py rename to plotly/validators/layout/ternary/caxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickwidth.py b/plotly/validators/layout/ternary/caxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_tickwidth.py rename to plotly/validators/layout/ternary/caxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_title.py b/plotly/validators/layout/ternary/caxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_title.py rename to plotly/validators/layout/ternary/caxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/_uirevision.py b/plotly/validators/layout/ternary/caxis/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/_uirevision.py rename to plotly/validators/layout/ternary/caxis/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/__init__.py b/plotly/validators/layout/ternary/caxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/__init__.py rename to plotly/validators/layout/ternary/caxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_color.py b/plotly/validators/layout/ternary/caxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_color.py rename to plotly/validators/layout/ternary/caxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_family.py b/plotly/validators/layout/ternary/caxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_family.py rename to plotly/validators/layout/ternary/caxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_lineposition.py b/plotly/validators/layout/ternary/caxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_lineposition.py rename to plotly/validators/layout/ternary/caxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_shadow.py b/plotly/validators/layout/ternary/caxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_shadow.py rename to plotly/validators/layout/ternary/caxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_size.py b/plotly/validators/layout/ternary/caxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_size.py rename to plotly/validators/layout/ternary/caxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_style.py b/plotly/validators/layout/ternary/caxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_style.py rename to plotly/validators/layout/ternary/caxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_textcase.py b/plotly/validators/layout/ternary/caxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_textcase.py rename to plotly/validators/layout/ternary/caxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_variant.py b/plotly/validators/layout/ternary/caxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_variant.py rename to plotly/validators/layout/ternary/caxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_weight.py b/plotly/validators/layout/ternary/caxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickfont/_weight.py rename to plotly/validators/layout/ternary/caxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/__init__.py b/plotly/validators/layout/ternary/caxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/__init__.py rename to plotly/validators/layout/ternary/caxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/ternary/caxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/ternary/caxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_enabled.py b/plotly/validators/layout/ternary/caxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_enabled.py rename to plotly/validators/layout/ternary/caxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_name.py b/plotly/validators/layout/ternary/caxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_name.py rename to plotly/validators/layout/ternary/caxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/ternary/caxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/ternary/caxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_value.py b/plotly/validators/layout/ternary/caxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/tickformatstop/_value.py rename to plotly/validators/layout/ternary/caxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/__init__.py b/plotly/validators/layout/ternary/caxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/__init__.py rename to plotly/validators/layout/ternary/caxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/_font.py b/plotly/validators/layout/ternary/caxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/_font.py rename to plotly/validators/layout/ternary/caxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/_text.py b/plotly/validators/layout/ternary/caxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/_text.py rename to plotly/validators/layout/ternary/caxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/__init__.py b/plotly/validators/layout/ternary/caxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/__init__.py rename to plotly/validators/layout/ternary/caxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_color.py b/plotly/validators/layout/ternary/caxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_color.py rename to plotly/validators/layout/ternary/caxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_family.py b/plotly/validators/layout/ternary/caxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_family.py rename to plotly/validators/layout/ternary/caxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_lineposition.py b/plotly/validators/layout/ternary/caxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_lineposition.py rename to plotly/validators/layout/ternary/caxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_shadow.py b/plotly/validators/layout/ternary/caxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_shadow.py rename to plotly/validators/layout/ternary/caxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_size.py b/plotly/validators/layout/ternary/caxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_size.py rename to plotly/validators/layout/ternary/caxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_style.py b/plotly/validators/layout/ternary/caxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_style.py rename to plotly/validators/layout/ternary/caxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_textcase.py b/plotly/validators/layout/ternary/caxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_textcase.py rename to plotly/validators/layout/ternary/caxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_variant.py b/plotly/validators/layout/ternary/caxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_variant.py rename to plotly/validators/layout/ternary/caxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_weight.py b/plotly/validators/layout/ternary/caxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/caxis/title/font/_weight.py rename to plotly/validators/layout/ternary/caxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/domain/__init__.py b/plotly/validators/layout/ternary/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/domain/__init__.py rename to plotly/validators/layout/ternary/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/domain/_column.py b/plotly/validators/layout/ternary/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/domain/_column.py rename to plotly/validators/layout/ternary/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/domain/_row.py b/plotly/validators/layout/ternary/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/domain/_row.py rename to plotly/validators/layout/ternary/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/domain/_x.py b/plotly/validators/layout/ternary/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/domain/_x.py rename to plotly/validators/layout/ternary/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/ternary/domain/_y.py b/plotly/validators/layout/ternary/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/ternary/domain/_y.py rename to plotly/validators/layout/ternary/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/title/__init__.py b/plotly/validators/layout/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/__init__.py rename to plotly/validators/layout/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_automargin.py b/plotly/validators/layout/title/_automargin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_automargin.py rename to plotly/validators/layout/title/_automargin.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_font.py b/plotly/validators/layout/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_font.py rename to plotly/validators/layout/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_pad.py b/plotly/validators/layout/title/_pad.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_pad.py rename to plotly/validators/layout/title/_pad.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_subtitle.py b/plotly/validators/layout/title/_subtitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_subtitle.py rename to plotly/validators/layout/title/_subtitle.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_text.py b/plotly/validators/layout/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_text.py rename to plotly/validators/layout/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_x.py b/plotly/validators/layout/title/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_x.py rename to plotly/validators/layout/title/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_xanchor.py b/plotly/validators/layout/title/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_xanchor.py rename to plotly/validators/layout/title/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_xref.py b/plotly/validators/layout/title/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_xref.py rename to plotly/validators/layout/title/_xref.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_y.py b/plotly/validators/layout/title/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_y.py rename to plotly/validators/layout/title/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_yanchor.py b/plotly/validators/layout/title/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_yanchor.py rename to plotly/validators/layout/title/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/title/_yref.py b/plotly/validators/layout/title/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/_yref.py rename to plotly/validators/layout/title/_yref.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/__init__.py b/plotly/validators/layout/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/__init__.py rename to plotly/validators/layout/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_color.py b/plotly/validators/layout/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_color.py rename to plotly/validators/layout/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_family.py b/plotly/validators/layout/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_family.py rename to plotly/validators/layout/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_lineposition.py b/plotly/validators/layout/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_lineposition.py rename to plotly/validators/layout/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_shadow.py b/plotly/validators/layout/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_shadow.py rename to plotly/validators/layout/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_size.py b/plotly/validators/layout/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_size.py rename to plotly/validators/layout/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_style.py b/plotly/validators/layout/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_style.py rename to plotly/validators/layout/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_textcase.py b/plotly/validators/layout/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_textcase.py rename to plotly/validators/layout/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_variant.py b/plotly/validators/layout/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_variant.py rename to plotly/validators/layout/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/title/font/_weight.py b/plotly/validators/layout/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/font/_weight.py rename to plotly/validators/layout/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/title/pad/__init__.py b/plotly/validators/layout/title/pad/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/pad/__init__.py rename to plotly/validators/layout/title/pad/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/title/pad/_b.py b/plotly/validators/layout/title/pad/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/pad/_b.py rename to plotly/validators/layout/title/pad/_b.py diff --git a/packages/python/plotly/plotly/validators/layout/title/pad/_l.py b/plotly/validators/layout/title/pad/_l.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/pad/_l.py rename to plotly/validators/layout/title/pad/_l.py diff --git a/packages/python/plotly/plotly/validators/layout/title/pad/_r.py b/plotly/validators/layout/title/pad/_r.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/pad/_r.py rename to plotly/validators/layout/title/pad/_r.py diff --git a/packages/python/plotly/plotly/validators/layout/title/pad/_t.py b/plotly/validators/layout/title/pad/_t.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/pad/_t.py rename to plotly/validators/layout/title/pad/_t.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/__init__.py b/plotly/validators/layout/title/subtitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/__init__.py rename to plotly/validators/layout/title/subtitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/_font.py b/plotly/validators/layout/title/subtitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/_font.py rename to plotly/validators/layout/title/subtitle/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/_text.py b/plotly/validators/layout/title/subtitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/_text.py rename to plotly/validators/layout/title/subtitle/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/__init__.py b/plotly/validators/layout/title/subtitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/__init__.py rename to plotly/validators/layout/title/subtitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_color.py b/plotly/validators/layout/title/subtitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_color.py rename to plotly/validators/layout/title/subtitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_family.py b/plotly/validators/layout/title/subtitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_family.py rename to plotly/validators/layout/title/subtitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_lineposition.py b/plotly/validators/layout/title/subtitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_lineposition.py rename to plotly/validators/layout/title/subtitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_shadow.py b/plotly/validators/layout/title/subtitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_shadow.py rename to plotly/validators/layout/title/subtitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_size.py b/plotly/validators/layout/title/subtitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_size.py rename to plotly/validators/layout/title/subtitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_style.py b/plotly/validators/layout/title/subtitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_style.py rename to plotly/validators/layout/title/subtitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_textcase.py b/plotly/validators/layout/title/subtitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_textcase.py rename to plotly/validators/layout/title/subtitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_variant.py b/plotly/validators/layout/title/subtitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_variant.py rename to plotly/validators/layout/title/subtitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/title/subtitle/font/_weight.py b/plotly/validators/layout/title/subtitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/title/subtitle/font/_weight.py rename to plotly/validators/layout/title/subtitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/transition/__init__.py b/plotly/validators/layout/transition/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/transition/__init__.py rename to plotly/validators/layout/transition/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/transition/_duration.py b/plotly/validators/layout/transition/_duration.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/transition/_duration.py rename to plotly/validators/layout/transition/_duration.py diff --git a/packages/python/plotly/plotly/validators/layout/transition/_easing.py b/plotly/validators/layout/transition/_easing.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/transition/_easing.py rename to plotly/validators/layout/transition/_easing.py diff --git a/packages/python/plotly/plotly/validators/layout/transition/_ordering.py b/plotly/validators/layout/transition/_ordering.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/transition/_ordering.py rename to plotly/validators/layout/transition/_ordering.py diff --git a/packages/python/plotly/plotly/validators/layout/uniformtext/__init__.py b/plotly/validators/layout/uniformtext/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/uniformtext/__init__.py rename to plotly/validators/layout/uniformtext/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/uniformtext/_minsize.py b/plotly/validators/layout/uniformtext/_minsize.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/uniformtext/_minsize.py rename to plotly/validators/layout/uniformtext/_minsize.py diff --git a/packages/python/plotly/plotly/validators/layout/uniformtext/_mode.py b/plotly/validators/layout/uniformtext/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/uniformtext/_mode.py rename to plotly/validators/layout/uniformtext/_mode.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/__init__.py b/plotly/validators/layout/updatemenu/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/__init__.py rename to plotly/validators/layout/updatemenu/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_active.py b/plotly/validators/layout/updatemenu/_active.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_active.py rename to plotly/validators/layout/updatemenu/_active.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_bgcolor.py b/plotly/validators/layout/updatemenu/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_bgcolor.py rename to plotly/validators/layout/updatemenu/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_bordercolor.py b/plotly/validators/layout/updatemenu/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_bordercolor.py rename to plotly/validators/layout/updatemenu/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_borderwidth.py b/plotly/validators/layout/updatemenu/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_borderwidth.py rename to plotly/validators/layout/updatemenu/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_buttondefaults.py b/plotly/validators/layout/updatemenu/_buttondefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_buttondefaults.py rename to plotly/validators/layout/updatemenu/_buttondefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_buttons.py b/plotly/validators/layout/updatemenu/_buttons.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_buttons.py rename to plotly/validators/layout/updatemenu/_buttons.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_direction.py b/plotly/validators/layout/updatemenu/_direction.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_direction.py rename to plotly/validators/layout/updatemenu/_direction.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_font.py b/plotly/validators/layout/updatemenu/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_font.py rename to plotly/validators/layout/updatemenu/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_name.py b/plotly/validators/layout/updatemenu/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_name.py rename to plotly/validators/layout/updatemenu/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_pad.py b/plotly/validators/layout/updatemenu/_pad.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_pad.py rename to plotly/validators/layout/updatemenu/_pad.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_showactive.py b/plotly/validators/layout/updatemenu/_showactive.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_showactive.py rename to plotly/validators/layout/updatemenu/_showactive.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_templateitemname.py b/plotly/validators/layout/updatemenu/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_templateitemname.py rename to plotly/validators/layout/updatemenu/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_type.py b/plotly/validators/layout/updatemenu/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_type.py rename to plotly/validators/layout/updatemenu/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_visible.py b/plotly/validators/layout/updatemenu/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_visible.py rename to plotly/validators/layout/updatemenu/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_x.py b/plotly/validators/layout/updatemenu/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_x.py rename to plotly/validators/layout/updatemenu/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_xanchor.py b/plotly/validators/layout/updatemenu/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_xanchor.py rename to plotly/validators/layout/updatemenu/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_y.py b/plotly/validators/layout/updatemenu/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_y.py rename to plotly/validators/layout/updatemenu/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/_yanchor.py b/plotly/validators/layout/updatemenu/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/_yanchor.py rename to plotly/validators/layout/updatemenu/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/__init__.py b/plotly/validators/layout/updatemenu/button/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/__init__.py rename to plotly/validators/layout/updatemenu/button/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/_args.py b/plotly/validators/layout/updatemenu/button/_args.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/_args.py rename to plotly/validators/layout/updatemenu/button/_args.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/_args2.py b/plotly/validators/layout/updatemenu/button/_args2.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/_args2.py rename to plotly/validators/layout/updatemenu/button/_args2.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/_execute.py b/plotly/validators/layout/updatemenu/button/_execute.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/_execute.py rename to plotly/validators/layout/updatemenu/button/_execute.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/_label.py b/plotly/validators/layout/updatemenu/button/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/_label.py rename to plotly/validators/layout/updatemenu/button/_label.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/_method.py b/plotly/validators/layout/updatemenu/button/_method.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/_method.py rename to plotly/validators/layout/updatemenu/button/_method.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/_name.py b/plotly/validators/layout/updatemenu/button/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/_name.py rename to plotly/validators/layout/updatemenu/button/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/_templateitemname.py b/plotly/validators/layout/updatemenu/button/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/_templateitemname.py rename to plotly/validators/layout/updatemenu/button/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/button/_visible.py b/plotly/validators/layout/updatemenu/button/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/button/_visible.py rename to plotly/validators/layout/updatemenu/button/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/__init__.py b/plotly/validators/layout/updatemenu/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/__init__.py rename to plotly/validators/layout/updatemenu/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_color.py b/plotly/validators/layout/updatemenu/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_color.py rename to plotly/validators/layout/updatemenu/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_family.py b/plotly/validators/layout/updatemenu/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_family.py rename to plotly/validators/layout/updatemenu/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_lineposition.py b/plotly/validators/layout/updatemenu/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_lineposition.py rename to plotly/validators/layout/updatemenu/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_shadow.py b/plotly/validators/layout/updatemenu/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_shadow.py rename to plotly/validators/layout/updatemenu/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_size.py b/plotly/validators/layout/updatemenu/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_size.py rename to plotly/validators/layout/updatemenu/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_style.py b/plotly/validators/layout/updatemenu/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_style.py rename to plotly/validators/layout/updatemenu/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_textcase.py b/plotly/validators/layout/updatemenu/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_textcase.py rename to plotly/validators/layout/updatemenu/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_variant.py b/plotly/validators/layout/updatemenu/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_variant.py rename to plotly/validators/layout/updatemenu/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/font/_weight.py b/plotly/validators/layout/updatemenu/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/font/_weight.py rename to plotly/validators/layout/updatemenu/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/pad/__init__.py b/plotly/validators/layout/updatemenu/pad/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/pad/__init__.py rename to plotly/validators/layout/updatemenu/pad/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/pad/_b.py b/plotly/validators/layout/updatemenu/pad/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/pad/_b.py rename to plotly/validators/layout/updatemenu/pad/_b.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/pad/_l.py b/plotly/validators/layout/updatemenu/pad/_l.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/pad/_l.py rename to plotly/validators/layout/updatemenu/pad/_l.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/pad/_r.py b/plotly/validators/layout/updatemenu/pad/_r.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/pad/_r.py rename to plotly/validators/layout/updatemenu/pad/_r.py diff --git a/packages/python/plotly/plotly/validators/layout/updatemenu/pad/_t.py b/plotly/validators/layout/updatemenu/pad/_t.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/updatemenu/pad/_t.py rename to plotly/validators/layout/updatemenu/pad/_t.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/__init__.py b/plotly/validators/layout/xaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/__init__.py rename to plotly/validators/layout/xaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_anchor.py b/plotly/validators/layout/xaxis/_anchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_anchor.py rename to plotly/validators/layout/xaxis/_anchor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_automargin.py b/plotly/validators/layout/xaxis/_automargin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_automargin.py rename to plotly/validators/layout/xaxis/_automargin.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_autorange.py b/plotly/validators/layout/xaxis/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_autorange.py rename to plotly/validators/layout/xaxis/_autorange.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_autorangeoptions.py b/plotly/validators/layout/xaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_autorangeoptions.py rename to plotly/validators/layout/xaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_autotickangles.py b/plotly/validators/layout/xaxis/_autotickangles.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_autotickangles.py rename to plotly/validators/layout/xaxis/_autotickangles.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_autotypenumbers.py b/plotly/validators/layout/xaxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_autotypenumbers.py rename to plotly/validators/layout/xaxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_calendar.py b/plotly/validators/layout/xaxis/_calendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_calendar.py rename to plotly/validators/layout/xaxis/_calendar.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_categoryarray.py b/plotly/validators/layout/xaxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_categoryarray.py rename to plotly/validators/layout/xaxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_categoryarraysrc.py b/plotly/validators/layout/xaxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_categoryarraysrc.py rename to plotly/validators/layout/xaxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_categoryorder.py b/plotly/validators/layout/xaxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_categoryorder.py rename to plotly/validators/layout/xaxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_color.py b/plotly/validators/layout/xaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_color.py rename to plotly/validators/layout/xaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_constrain.py b/plotly/validators/layout/xaxis/_constrain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_constrain.py rename to plotly/validators/layout/xaxis/_constrain.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_constraintoward.py b/plotly/validators/layout/xaxis/_constraintoward.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_constraintoward.py rename to plotly/validators/layout/xaxis/_constraintoward.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_dividercolor.py b/plotly/validators/layout/xaxis/_dividercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_dividercolor.py rename to plotly/validators/layout/xaxis/_dividercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_dividerwidth.py b/plotly/validators/layout/xaxis/_dividerwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_dividerwidth.py rename to plotly/validators/layout/xaxis/_dividerwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_domain.py b/plotly/validators/layout/xaxis/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_domain.py rename to plotly/validators/layout/xaxis/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_dtick.py b/plotly/validators/layout/xaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_dtick.py rename to plotly/validators/layout/xaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_exponentformat.py b/plotly/validators/layout/xaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_exponentformat.py rename to plotly/validators/layout/xaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_fixedrange.py b/plotly/validators/layout/xaxis/_fixedrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_fixedrange.py rename to plotly/validators/layout/xaxis/_fixedrange.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_gridcolor.py b/plotly/validators/layout/xaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_gridcolor.py rename to plotly/validators/layout/xaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_griddash.py b/plotly/validators/layout/xaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_griddash.py rename to plotly/validators/layout/xaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_gridwidth.py b/plotly/validators/layout/xaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_gridwidth.py rename to plotly/validators/layout/xaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_hoverformat.py b/plotly/validators/layout/xaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_hoverformat.py rename to plotly/validators/layout/xaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_insiderange.py b/plotly/validators/layout/xaxis/_insiderange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_insiderange.py rename to plotly/validators/layout/xaxis/_insiderange.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_labelalias.py b/plotly/validators/layout/xaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_labelalias.py rename to plotly/validators/layout/xaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_layer.py b/plotly/validators/layout/xaxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_layer.py rename to plotly/validators/layout/xaxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_linecolor.py b/plotly/validators/layout/xaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_linecolor.py rename to plotly/validators/layout/xaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_linewidth.py b/plotly/validators/layout/xaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_linewidth.py rename to plotly/validators/layout/xaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_matches.py b/plotly/validators/layout/xaxis/_matches.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_matches.py rename to plotly/validators/layout/xaxis/_matches.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_maxallowed.py b/plotly/validators/layout/xaxis/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_maxallowed.py rename to plotly/validators/layout/xaxis/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_minallowed.py b/plotly/validators/layout/xaxis/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_minallowed.py rename to plotly/validators/layout/xaxis/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_minexponent.py b/plotly/validators/layout/xaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_minexponent.py rename to plotly/validators/layout/xaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_minor.py b/plotly/validators/layout/xaxis/_minor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_minor.py rename to plotly/validators/layout/xaxis/_minor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_mirror.py b/plotly/validators/layout/xaxis/_mirror.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_mirror.py rename to plotly/validators/layout/xaxis/_mirror.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_nticks.py b/plotly/validators/layout/xaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_nticks.py rename to plotly/validators/layout/xaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_overlaying.py b/plotly/validators/layout/xaxis/_overlaying.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_overlaying.py rename to plotly/validators/layout/xaxis/_overlaying.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_position.py b/plotly/validators/layout/xaxis/_position.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_position.py rename to plotly/validators/layout/xaxis/_position.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_range.py b/plotly/validators/layout/xaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_range.py rename to plotly/validators/layout/xaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_rangebreakdefaults.py b/plotly/validators/layout/xaxis/_rangebreakdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_rangebreakdefaults.py rename to plotly/validators/layout/xaxis/_rangebreakdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_rangebreaks.py b/plotly/validators/layout/xaxis/_rangebreaks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_rangebreaks.py rename to plotly/validators/layout/xaxis/_rangebreaks.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_rangemode.py b/plotly/validators/layout/xaxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_rangemode.py rename to plotly/validators/layout/xaxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_rangeselector.py b/plotly/validators/layout/xaxis/_rangeselector.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_rangeselector.py rename to plotly/validators/layout/xaxis/_rangeselector.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_rangeslider.py b/plotly/validators/layout/xaxis/_rangeslider.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_rangeslider.py rename to plotly/validators/layout/xaxis/_rangeslider.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_scaleanchor.py b/plotly/validators/layout/xaxis/_scaleanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_scaleanchor.py rename to plotly/validators/layout/xaxis/_scaleanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_scaleratio.py b/plotly/validators/layout/xaxis/_scaleratio.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_scaleratio.py rename to plotly/validators/layout/xaxis/_scaleratio.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_separatethousands.py b/plotly/validators/layout/xaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_separatethousands.py rename to plotly/validators/layout/xaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_showdividers.py b/plotly/validators/layout/xaxis/_showdividers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_showdividers.py rename to plotly/validators/layout/xaxis/_showdividers.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_showexponent.py b/plotly/validators/layout/xaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_showexponent.py rename to plotly/validators/layout/xaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_showgrid.py b/plotly/validators/layout/xaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_showgrid.py rename to plotly/validators/layout/xaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_showline.py b/plotly/validators/layout/xaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_showline.py rename to plotly/validators/layout/xaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_showspikes.py b/plotly/validators/layout/xaxis/_showspikes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_showspikes.py rename to plotly/validators/layout/xaxis/_showspikes.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_showticklabels.py b/plotly/validators/layout/xaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_showticklabels.py rename to plotly/validators/layout/xaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_showtickprefix.py b/plotly/validators/layout/xaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_showtickprefix.py rename to plotly/validators/layout/xaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_showticksuffix.py b/plotly/validators/layout/xaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_showticksuffix.py rename to plotly/validators/layout/xaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_side.py b/plotly/validators/layout/xaxis/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_side.py rename to plotly/validators/layout/xaxis/_side.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_spikecolor.py b/plotly/validators/layout/xaxis/_spikecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_spikecolor.py rename to plotly/validators/layout/xaxis/_spikecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_spikedash.py b/plotly/validators/layout/xaxis/_spikedash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_spikedash.py rename to plotly/validators/layout/xaxis/_spikedash.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_spikemode.py b/plotly/validators/layout/xaxis/_spikemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_spikemode.py rename to plotly/validators/layout/xaxis/_spikemode.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_spikesnap.py b/plotly/validators/layout/xaxis/_spikesnap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_spikesnap.py rename to plotly/validators/layout/xaxis/_spikesnap.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_spikethickness.py b/plotly/validators/layout/xaxis/_spikethickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_spikethickness.py rename to plotly/validators/layout/xaxis/_spikethickness.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tick0.py b/plotly/validators/layout/xaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tick0.py rename to plotly/validators/layout/xaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickangle.py b/plotly/validators/layout/xaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickangle.py rename to plotly/validators/layout/xaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickcolor.py b/plotly/validators/layout/xaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickcolor.py rename to plotly/validators/layout/xaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickfont.py b/plotly/validators/layout/xaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickfont.py rename to plotly/validators/layout/xaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickformat.py b/plotly/validators/layout/xaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickformat.py rename to plotly/validators/layout/xaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickformatstopdefaults.py b/plotly/validators/layout/xaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickformatstopdefaults.py rename to plotly/validators/layout/xaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickformatstops.py b/plotly/validators/layout/xaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickformatstops.py rename to plotly/validators/layout/xaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelindex.py b/plotly/validators/layout/xaxis/_ticklabelindex.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelindex.py rename to plotly/validators/layout/xaxis/_ticklabelindex.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelindexsrc.py b/plotly/validators/layout/xaxis/_ticklabelindexsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelindexsrc.py rename to plotly/validators/layout/xaxis/_ticklabelindexsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelmode.py b/plotly/validators/layout/xaxis/_ticklabelmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelmode.py rename to plotly/validators/layout/xaxis/_ticklabelmode.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklabeloverflow.py b/plotly/validators/layout/xaxis/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklabeloverflow.py rename to plotly/validators/layout/xaxis/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelposition.py b/plotly/validators/layout/xaxis/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelposition.py rename to plotly/validators/layout/xaxis/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelshift.py b/plotly/validators/layout/xaxis/_ticklabelshift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelshift.py rename to plotly/validators/layout/xaxis/_ticklabelshift.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelstandoff.py b/plotly/validators/layout/xaxis/_ticklabelstandoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelstandoff.py rename to plotly/validators/layout/xaxis/_ticklabelstandoff.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelstep.py b/plotly/validators/layout/xaxis/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklabelstep.py rename to plotly/validators/layout/xaxis/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticklen.py b/plotly/validators/layout/xaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticklen.py rename to plotly/validators/layout/xaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickmode.py b/plotly/validators/layout/xaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickmode.py rename to plotly/validators/layout/xaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickprefix.py b/plotly/validators/layout/xaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickprefix.py rename to plotly/validators/layout/xaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticks.py b/plotly/validators/layout/xaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticks.py rename to plotly/validators/layout/xaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickson.py b/plotly/validators/layout/xaxis/_tickson.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickson.py rename to plotly/validators/layout/xaxis/_tickson.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticksuffix.py b/plotly/validators/layout/xaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticksuffix.py rename to plotly/validators/layout/xaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticktext.py b/plotly/validators/layout/xaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticktext.py rename to plotly/validators/layout/xaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_ticktextsrc.py b/plotly/validators/layout/xaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_ticktextsrc.py rename to plotly/validators/layout/xaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickvals.py b/plotly/validators/layout/xaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickvals.py rename to plotly/validators/layout/xaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickvalssrc.py b/plotly/validators/layout/xaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickvalssrc.py rename to plotly/validators/layout/xaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_tickwidth.py b/plotly/validators/layout/xaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_tickwidth.py rename to plotly/validators/layout/xaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_title.py b/plotly/validators/layout/xaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_title.py rename to plotly/validators/layout/xaxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_type.py b/plotly/validators/layout/xaxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_type.py rename to plotly/validators/layout/xaxis/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_uirevision.py b/plotly/validators/layout/xaxis/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_uirevision.py rename to plotly/validators/layout/xaxis/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_visible.py b/plotly/validators/layout/xaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_visible.py rename to plotly/validators/layout/xaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_zeroline.py b/plotly/validators/layout/xaxis/_zeroline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_zeroline.py rename to plotly/validators/layout/xaxis/_zeroline.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_zerolinecolor.py b/plotly/validators/layout/xaxis/_zerolinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_zerolinecolor.py rename to plotly/validators/layout/xaxis/_zerolinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/_zerolinewidth.py b/plotly/validators/layout/xaxis/_zerolinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/_zerolinewidth.py rename to plotly/validators/layout/xaxis/_zerolinewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/__init__.py b/plotly/validators/layout/xaxis/autorangeoptions/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/__init__.py rename to plotly/validators/layout/xaxis/autorangeoptions/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_clipmax.py b/plotly/validators/layout/xaxis/autorangeoptions/_clipmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_clipmax.py rename to plotly/validators/layout/xaxis/autorangeoptions/_clipmax.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_clipmin.py b/plotly/validators/layout/xaxis/autorangeoptions/_clipmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_clipmin.py rename to plotly/validators/layout/xaxis/autorangeoptions/_clipmin.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_include.py b/plotly/validators/layout/xaxis/autorangeoptions/_include.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_include.py rename to plotly/validators/layout/xaxis/autorangeoptions/_include.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_includesrc.py b/plotly/validators/layout/xaxis/autorangeoptions/_includesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_includesrc.py rename to plotly/validators/layout/xaxis/autorangeoptions/_includesrc.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_maxallowed.py b/plotly/validators/layout/xaxis/autorangeoptions/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_maxallowed.py rename to plotly/validators/layout/xaxis/autorangeoptions/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_minallowed.py b/plotly/validators/layout/xaxis/autorangeoptions/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/autorangeoptions/_minallowed.py rename to plotly/validators/layout/xaxis/autorangeoptions/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/__init__.py b/plotly/validators/layout/xaxis/minor/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/__init__.py rename to plotly/validators/layout/xaxis/minor/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_dtick.py b/plotly/validators/layout/xaxis/minor/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_dtick.py rename to plotly/validators/layout/xaxis/minor/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_gridcolor.py b/plotly/validators/layout/xaxis/minor/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_gridcolor.py rename to plotly/validators/layout/xaxis/minor/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_griddash.py b/plotly/validators/layout/xaxis/minor/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_griddash.py rename to plotly/validators/layout/xaxis/minor/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_gridwidth.py b/plotly/validators/layout/xaxis/minor/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_gridwidth.py rename to plotly/validators/layout/xaxis/minor/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_nticks.py b/plotly/validators/layout/xaxis/minor/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_nticks.py rename to plotly/validators/layout/xaxis/minor/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_showgrid.py b/plotly/validators/layout/xaxis/minor/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_showgrid.py rename to plotly/validators/layout/xaxis/minor/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_tick0.py b/plotly/validators/layout/xaxis/minor/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_tick0.py rename to plotly/validators/layout/xaxis/minor/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickcolor.py b/plotly/validators/layout/xaxis/minor/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickcolor.py rename to plotly/validators/layout/xaxis/minor/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_ticklen.py b/plotly/validators/layout/xaxis/minor/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_ticklen.py rename to plotly/validators/layout/xaxis/minor/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickmode.py b/plotly/validators/layout/xaxis/minor/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickmode.py rename to plotly/validators/layout/xaxis/minor/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_ticks.py b/plotly/validators/layout/xaxis/minor/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_ticks.py rename to plotly/validators/layout/xaxis/minor/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickvals.py b/plotly/validators/layout/xaxis/minor/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickvals.py rename to plotly/validators/layout/xaxis/minor/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickvalssrc.py b/plotly/validators/layout/xaxis/minor/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickvalssrc.py rename to plotly/validators/layout/xaxis/minor/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickwidth.py b/plotly/validators/layout/xaxis/minor/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/minor/_tickwidth.py rename to plotly/validators/layout/xaxis/minor/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/__init__.py b/plotly/validators/layout/xaxis/rangebreak/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/__init__.py rename to plotly/validators/layout/xaxis/rangebreak/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_bounds.py b/plotly/validators/layout/xaxis/rangebreak/_bounds.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_bounds.py rename to plotly/validators/layout/xaxis/rangebreak/_bounds.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_dvalue.py b/plotly/validators/layout/xaxis/rangebreak/_dvalue.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_dvalue.py rename to plotly/validators/layout/xaxis/rangebreak/_dvalue.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_enabled.py b/plotly/validators/layout/xaxis/rangebreak/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_enabled.py rename to plotly/validators/layout/xaxis/rangebreak/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_name.py b/plotly/validators/layout/xaxis/rangebreak/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_name.py rename to plotly/validators/layout/xaxis/rangebreak/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_pattern.py b/plotly/validators/layout/xaxis/rangebreak/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_pattern.py rename to plotly/validators/layout/xaxis/rangebreak/_pattern.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_templateitemname.py b/plotly/validators/layout/xaxis/rangebreak/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_templateitemname.py rename to plotly/validators/layout/xaxis/rangebreak/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_values.py b/plotly/validators/layout/xaxis/rangebreak/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangebreak/_values.py rename to plotly/validators/layout/xaxis/rangebreak/_values.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/__init__.py b/plotly/validators/layout/xaxis/rangeselector/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/__init__.py rename to plotly/validators/layout/xaxis/rangeselector/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_activecolor.py b/plotly/validators/layout/xaxis/rangeselector/_activecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_activecolor.py rename to plotly/validators/layout/xaxis/rangeselector/_activecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_bgcolor.py b/plotly/validators/layout/xaxis/rangeselector/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_bgcolor.py rename to plotly/validators/layout/xaxis/rangeselector/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_bordercolor.py b/plotly/validators/layout/xaxis/rangeselector/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_bordercolor.py rename to plotly/validators/layout/xaxis/rangeselector/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_borderwidth.py b/plotly/validators/layout/xaxis/rangeselector/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_borderwidth.py rename to plotly/validators/layout/xaxis/rangeselector/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_buttondefaults.py b/plotly/validators/layout/xaxis/rangeselector/_buttondefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_buttondefaults.py rename to plotly/validators/layout/xaxis/rangeselector/_buttondefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_buttons.py b/plotly/validators/layout/xaxis/rangeselector/_buttons.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_buttons.py rename to plotly/validators/layout/xaxis/rangeselector/_buttons.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_font.py b/plotly/validators/layout/xaxis/rangeselector/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_font.py rename to plotly/validators/layout/xaxis/rangeselector/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_visible.py b/plotly/validators/layout/xaxis/rangeselector/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_visible.py rename to plotly/validators/layout/xaxis/rangeselector/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_x.py b/plotly/validators/layout/xaxis/rangeselector/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_x.py rename to plotly/validators/layout/xaxis/rangeselector/_x.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_xanchor.py b/plotly/validators/layout/xaxis/rangeselector/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_xanchor.py rename to plotly/validators/layout/xaxis/rangeselector/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_y.py b/plotly/validators/layout/xaxis/rangeselector/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_y.py rename to plotly/validators/layout/xaxis/rangeselector/_y.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_yanchor.py b/plotly/validators/layout/xaxis/rangeselector/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/_yanchor.py rename to plotly/validators/layout/xaxis/rangeselector/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/__init__.py b/plotly/validators/layout/xaxis/rangeselector/button/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/__init__.py rename to plotly/validators/layout/xaxis/rangeselector/button/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_count.py b/plotly/validators/layout/xaxis/rangeselector/button/_count.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_count.py rename to plotly/validators/layout/xaxis/rangeselector/button/_count.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_label.py b/plotly/validators/layout/xaxis/rangeselector/button/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_label.py rename to plotly/validators/layout/xaxis/rangeselector/button/_label.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_name.py b/plotly/validators/layout/xaxis/rangeselector/button/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_name.py rename to plotly/validators/layout/xaxis/rangeselector/button/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_step.py b/plotly/validators/layout/xaxis/rangeselector/button/_step.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_step.py rename to plotly/validators/layout/xaxis/rangeselector/button/_step.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_stepmode.py b/plotly/validators/layout/xaxis/rangeselector/button/_stepmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_stepmode.py rename to plotly/validators/layout/xaxis/rangeselector/button/_stepmode.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_templateitemname.py b/plotly/validators/layout/xaxis/rangeselector/button/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_templateitemname.py rename to plotly/validators/layout/xaxis/rangeselector/button/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_visible.py b/plotly/validators/layout/xaxis/rangeselector/button/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/button/_visible.py rename to plotly/validators/layout/xaxis/rangeselector/button/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/__init__.py b/plotly/validators/layout/xaxis/rangeselector/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/__init__.py rename to plotly/validators/layout/xaxis/rangeselector/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_color.py b/plotly/validators/layout/xaxis/rangeselector/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_color.py rename to plotly/validators/layout/xaxis/rangeselector/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_family.py b/plotly/validators/layout/xaxis/rangeselector/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_family.py rename to plotly/validators/layout/xaxis/rangeselector/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_lineposition.py b/plotly/validators/layout/xaxis/rangeselector/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_lineposition.py rename to plotly/validators/layout/xaxis/rangeselector/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_shadow.py b/plotly/validators/layout/xaxis/rangeselector/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_shadow.py rename to plotly/validators/layout/xaxis/rangeselector/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_size.py b/plotly/validators/layout/xaxis/rangeselector/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_size.py rename to plotly/validators/layout/xaxis/rangeselector/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_style.py b/plotly/validators/layout/xaxis/rangeselector/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_style.py rename to plotly/validators/layout/xaxis/rangeselector/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_textcase.py b/plotly/validators/layout/xaxis/rangeselector/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_textcase.py rename to plotly/validators/layout/xaxis/rangeselector/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_variant.py b/plotly/validators/layout/xaxis/rangeselector/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_variant.py rename to plotly/validators/layout/xaxis/rangeselector/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_weight.py b/plotly/validators/layout/xaxis/rangeselector/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeselector/font/_weight.py rename to plotly/validators/layout/xaxis/rangeselector/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/__init__.py b/plotly/validators/layout/xaxis/rangeslider/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/__init__.py rename to plotly/validators/layout/xaxis/rangeslider/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_autorange.py b/plotly/validators/layout/xaxis/rangeslider/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_autorange.py rename to plotly/validators/layout/xaxis/rangeslider/_autorange.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_bgcolor.py b/plotly/validators/layout/xaxis/rangeslider/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_bgcolor.py rename to plotly/validators/layout/xaxis/rangeslider/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_bordercolor.py b/plotly/validators/layout/xaxis/rangeslider/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_bordercolor.py rename to plotly/validators/layout/xaxis/rangeslider/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_borderwidth.py b/plotly/validators/layout/xaxis/rangeslider/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_borderwidth.py rename to plotly/validators/layout/xaxis/rangeslider/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_range.py b/plotly/validators/layout/xaxis/rangeslider/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_range.py rename to plotly/validators/layout/xaxis/rangeslider/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_thickness.py b/plotly/validators/layout/xaxis/rangeslider/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_thickness.py rename to plotly/validators/layout/xaxis/rangeslider/_thickness.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_visible.py b/plotly/validators/layout/xaxis/rangeslider/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_visible.py rename to plotly/validators/layout/xaxis/rangeslider/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_yaxis.py b/plotly/validators/layout/xaxis/rangeslider/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/_yaxis.py rename to plotly/validators/layout/xaxis/rangeslider/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/yaxis/__init__.py b/plotly/validators/layout/xaxis/rangeslider/yaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/yaxis/__init__.py rename to plotly/validators/layout/xaxis/rangeslider/yaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/yaxis/_range.py b/plotly/validators/layout/xaxis/rangeslider/yaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/yaxis/_range.py rename to plotly/validators/layout/xaxis/rangeslider/yaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/yaxis/_rangemode.py b/plotly/validators/layout/xaxis/rangeslider/yaxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/rangeslider/yaxis/_rangemode.py rename to plotly/validators/layout/xaxis/rangeslider/yaxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/__init__.py b/plotly/validators/layout/xaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/__init__.py rename to plotly/validators/layout/xaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_color.py b/plotly/validators/layout/xaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_color.py rename to plotly/validators/layout/xaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_family.py b/plotly/validators/layout/xaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_family.py rename to plotly/validators/layout/xaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_lineposition.py b/plotly/validators/layout/xaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_lineposition.py rename to plotly/validators/layout/xaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_shadow.py b/plotly/validators/layout/xaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_shadow.py rename to plotly/validators/layout/xaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_size.py b/plotly/validators/layout/xaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_size.py rename to plotly/validators/layout/xaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_style.py b/plotly/validators/layout/xaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_style.py rename to plotly/validators/layout/xaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_textcase.py b/plotly/validators/layout/xaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_textcase.py rename to plotly/validators/layout/xaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_variant.py b/plotly/validators/layout/xaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_variant.py rename to plotly/validators/layout/xaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_weight.py b/plotly/validators/layout/xaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickfont/_weight.py rename to plotly/validators/layout/xaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/__init__.py b/plotly/validators/layout/xaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/__init__.py rename to plotly/validators/layout/xaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/xaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/xaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_enabled.py b/plotly/validators/layout/xaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_enabled.py rename to plotly/validators/layout/xaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_name.py b/plotly/validators/layout/xaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_name.py rename to plotly/validators/layout/xaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/xaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/xaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_value.py b/plotly/validators/layout/xaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/tickformatstop/_value.py rename to plotly/validators/layout/xaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/__init__.py b/plotly/validators/layout/xaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/__init__.py rename to plotly/validators/layout/xaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/_font.py b/plotly/validators/layout/xaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/_font.py rename to plotly/validators/layout/xaxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/_standoff.py b/plotly/validators/layout/xaxis/title/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/_standoff.py rename to plotly/validators/layout/xaxis/title/_standoff.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/_text.py b/plotly/validators/layout/xaxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/_text.py rename to plotly/validators/layout/xaxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/__init__.py b/plotly/validators/layout/xaxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/__init__.py rename to plotly/validators/layout/xaxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_color.py b/plotly/validators/layout/xaxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_color.py rename to plotly/validators/layout/xaxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_family.py b/plotly/validators/layout/xaxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_family.py rename to plotly/validators/layout/xaxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_lineposition.py b/plotly/validators/layout/xaxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_lineposition.py rename to plotly/validators/layout/xaxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_shadow.py b/plotly/validators/layout/xaxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_shadow.py rename to plotly/validators/layout/xaxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_size.py b/plotly/validators/layout/xaxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_size.py rename to plotly/validators/layout/xaxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_style.py b/plotly/validators/layout/xaxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_style.py rename to plotly/validators/layout/xaxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_textcase.py b/plotly/validators/layout/xaxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_textcase.py rename to plotly/validators/layout/xaxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_variant.py b/plotly/validators/layout/xaxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_variant.py rename to plotly/validators/layout/xaxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/xaxis/title/font/_weight.py b/plotly/validators/layout/xaxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/xaxis/title/font/_weight.py rename to plotly/validators/layout/xaxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/__init__.py b/plotly/validators/layout/yaxis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/__init__.py rename to plotly/validators/layout/yaxis/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_anchor.py b/plotly/validators/layout/yaxis/_anchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_anchor.py rename to plotly/validators/layout/yaxis/_anchor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_automargin.py b/plotly/validators/layout/yaxis/_automargin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_automargin.py rename to plotly/validators/layout/yaxis/_automargin.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_autorange.py b/plotly/validators/layout/yaxis/_autorange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_autorange.py rename to plotly/validators/layout/yaxis/_autorange.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_autorangeoptions.py b/plotly/validators/layout/yaxis/_autorangeoptions.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_autorangeoptions.py rename to plotly/validators/layout/yaxis/_autorangeoptions.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_autoshift.py b/plotly/validators/layout/yaxis/_autoshift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_autoshift.py rename to plotly/validators/layout/yaxis/_autoshift.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_autotickangles.py b/plotly/validators/layout/yaxis/_autotickangles.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_autotickangles.py rename to plotly/validators/layout/yaxis/_autotickangles.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_autotypenumbers.py b/plotly/validators/layout/yaxis/_autotypenumbers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_autotypenumbers.py rename to plotly/validators/layout/yaxis/_autotypenumbers.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_calendar.py b/plotly/validators/layout/yaxis/_calendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_calendar.py rename to plotly/validators/layout/yaxis/_calendar.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_categoryarray.py b/plotly/validators/layout/yaxis/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_categoryarray.py rename to plotly/validators/layout/yaxis/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_categoryarraysrc.py b/plotly/validators/layout/yaxis/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_categoryarraysrc.py rename to plotly/validators/layout/yaxis/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_categoryorder.py b/plotly/validators/layout/yaxis/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_categoryorder.py rename to plotly/validators/layout/yaxis/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_color.py b/plotly/validators/layout/yaxis/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_color.py rename to plotly/validators/layout/yaxis/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_constrain.py b/plotly/validators/layout/yaxis/_constrain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_constrain.py rename to plotly/validators/layout/yaxis/_constrain.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_constraintoward.py b/plotly/validators/layout/yaxis/_constraintoward.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_constraintoward.py rename to plotly/validators/layout/yaxis/_constraintoward.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_dividercolor.py b/plotly/validators/layout/yaxis/_dividercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_dividercolor.py rename to plotly/validators/layout/yaxis/_dividercolor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_dividerwidth.py b/plotly/validators/layout/yaxis/_dividerwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_dividerwidth.py rename to plotly/validators/layout/yaxis/_dividerwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_domain.py b/plotly/validators/layout/yaxis/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_domain.py rename to plotly/validators/layout/yaxis/_domain.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_dtick.py b/plotly/validators/layout/yaxis/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_dtick.py rename to plotly/validators/layout/yaxis/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_exponentformat.py b/plotly/validators/layout/yaxis/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_exponentformat.py rename to plotly/validators/layout/yaxis/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_fixedrange.py b/plotly/validators/layout/yaxis/_fixedrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_fixedrange.py rename to plotly/validators/layout/yaxis/_fixedrange.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_gridcolor.py b/plotly/validators/layout/yaxis/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_gridcolor.py rename to plotly/validators/layout/yaxis/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_griddash.py b/plotly/validators/layout/yaxis/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_griddash.py rename to plotly/validators/layout/yaxis/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_gridwidth.py b/plotly/validators/layout/yaxis/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_gridwidth.py rename to plotly/validators/layout/yaxis/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_hoverformat.py b/plotly/validators/layout/yaxis/_hoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_hoverformat.py rename to plotly/validators/layout/yaxis/_hoverformat.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_insiderange.py b/plotly/validators/layout/yaxis/_insiderange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_insiderange.py rename to plotly/validators/layout/yaxis/_insiderange.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_labelalias.py b/plotly/validators/layout/yaxis/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_labelalias.py rename to plotly/validators/layout/yaxis/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_layer.py b/plotly/validators/layout/yaxis/_layer.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_layer.py rename to plotly/validators/layout/yaxis/_layer.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_linecolor.py b/plotly/validators/layout/yaxis/_linecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_linecolor.py rename to plotly/validators/layout/yaxis/_linecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_linewidth.py b/plotly/validators/layout/yaxis/_linewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_linewidth.py rename to plotly/validators/layout/yaxis/_linewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_matches.py b/plotly/validators/layout/yaxis/_matches.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_matches.py rename to plotly/validators/layout/yaxis/_matches.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_maxallowed.py b/plotly/validators/layout/yaxis/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_maxallowed.py rename to plotly/validators/layout/yaxis/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_minallowed.py b/plotly/validators/layout/yaxis/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_minallowed.py rename to plotly/validators/layout/yaxis/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_minexponent.py b/plotly/validators/layout/yaxis/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_minexponent.py rename to plotly/validators/layout/yaxis/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_minor.py b/plotly/validators/layout/yaxis/_minor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_minor.py rename to plotly/validators/layout/yaxis/_minor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_mirror.py b/plotly/validators/layout/yaxis/_mirror.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_mirror.py rename to plotly/validators/layout/yaxis/_mirror.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_nticks.py b/plotly/validators/layout/yaxis/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_nticks.py rename to plotly/validators/layout/yaxis/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_overlaying.py b/plotly/validators/layout/yaxis/_overlaying.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_overlaying.py rename to plotly/validators/layout/yaxis/_overlaying.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_position.py b/plotly/validators/layout/yaxis/_position.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_position.py rename to plotly/validators/layout/yaxis/_position.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_range.py b/plotly/validators/layout/yaxis/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_range.py rename to plotly/validators/layout/yaxis/_range.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_rangebreakdefaults.py b/plotly/validators/layout/yaxis/_rangebreakdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_rangebreakdefaults.py rename to plotly/validators/layout/yaxis/_rangebreakdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_rangebreaks.py b/plotly/validators/layout/yaxis/_rangebreaks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_rangebreaks.py rename to plotly/validators/layout/yaxis/_rangebreaks.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_rangemode.py b/plotly/validators/layout/yaxis/_rangemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_rangemode.py rename to plotly/validators/layout/yaxis/_rangemode.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_scaleanchor.py b/plotly/validators/layout/yaxis/_scaleanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_scaleanchor.py rename to plotly/validators/layout/yaxis/_scaleanchor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_scaleratio.py b/plotly/validators/layout/yaxis/_scaleratio.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_scaleratio.py rename to plotly/validators/layout/yaxis/_scaleratio.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_separatethousands.py b/plotly/validators/layout/yaxis/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_separatethousands.py rename to plotly/validators/layout/yaxis/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_shift.py b/plotly/validators/layout/yaxis/_shift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_shift.py rename to plotly/validators/layout/yaxis/_shift.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_showdividers.py b/plotly/validators/layout/yaxis/_showdividers.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_showdividers.py rename to plotly/validators/layout/yaxis/_showdividers.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_showexponent.py b/plotly/validators/layout/yaxis/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_showexponent.py rename to plotly/validators/layout/yaxis/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_showgrid.py b/plotly/validators/layout/yaxis/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_showgrid.py rename to plotly/validators/layout/yaxis/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_showline.py b/plotly/validators/layout/yaxis/_showline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_showline.py rename to plotly/validators/layout/yaxis/_showline.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_showspikes.py b/plotly/validators/layout/yaxis/_showspikes.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_showspikes.py rename to plotly/validators/layout/yaxis/_showspikes.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_showticklabels.py b/plotly/validators/layout/yaxis/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_showticklabels.py rename to plotly/validators/layout/yaxis/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_showtickprefix.py b/plotly/validators/layout/yaxis/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_showtickprefix.py rename to plotly/validators/layout/yaxis/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_showticksuffix.py b/plotly/validators/layout/yaxis/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_showticksuffix.py rename to plotly/validators/layout/yaxis/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_side.py b/plotly/validators/layout/yaxis/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_side.py rename to plotly/validators/layout/yaxis/_side.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_spikecolor.py b/plotly/validators/layout/yaxis/_spikecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_spikecolor.py rename to plotly/validators/layout/yaxis/_spikecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_spikedash.py b/plotly/validators/layout/yaxis/_spikedash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_spikedash.py rename to plotly/validators/layout/yaxis/_spikedash.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_spikemode.py b/plotly/validators/layout/yaxis/_spikemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_spikemode.py rename to plotly/validators/layout/yaxis/_spikemode.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_spikesnap.py b/plotly/validators/layout/yaxis/_spikesnap.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_spikesnap.py rename to plotly/validators/layout/yaxis/_spikesnap.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_spikethickness.py b/plotly/validators/layout/yaxis/_spikethickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_spikethickness.py rename to plotly/validators/layout/yaxis/_spikethickness.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tick0.py b/plotly/validators/layout/yaxis/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tick0.py rename to plotly/validators/layout/yaxis/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickangle.py b/plotly/validators/layout/yaxis/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickangle.py rename to plotly/validators/layout/yaxis/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickcolor.py b/plotly/validators/layout/yaxis/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickcolor.py rename to plotly/validators/layout/yaxis/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickfont.py b/plotly/validators/layout/yaxis/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickfont.py rename to plotly/validators/layout/yaxis/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickformat.py b/plotly/validators/layout/yaxis/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickformat.py rename to plotly/validators/layout/yaxis/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickformatstopdefaults.py b/plotly/validators/layout/yaxis/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickformatstopdefaults.py rename to plotly/validators/layout/yaxis/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickformatstops.py b/plotly/validators/layout/yaxis/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickformatstops.py rename to plotly/validators/layout/yaxis/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelindex.py b/plotly/validators/layout/yaxis/_ticklabelindex.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelindex.py rename to plotly/validators/layout/yaxis/_ticklabelindex.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelindexsrc.py b/plotly/validators/layout/yaxis/_ticklabelindexsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelindexsrc.py rename to plotly/validators/layout/yaxis/_ticklabelindexsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelmode.py b/plotly/validators/layout/yaxis/_ticklabelmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelmode.py rename to plotly/validators/layout/yaxis/_ticklabelmode.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklabeloverflow.py b/plotly/validators/layout/yaxis/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklabeloverflow.py rename to plotly/validators/layout/yaxis/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelposition.py b/plotly/validators/layout/yaxis/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelposition.py rename to plotly/validators/layout/yaxis/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelshift.py b/plotly/validators/layout/yaxis/_ticklabelshift.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelshift.py rename to plotly/validators/layout/yaxis/_ticklabelshift.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelstandoff.py b/plotly/validators/layout/yaxis/_ticklabelstandoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelstandoff.py rename to plotly/validators/layout/yaxis/_ticklabelstandoff.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelstep.py b/plotly/validators/layout/yaxis/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklabelstep.py rename to plotly/validators/layout/yaxis/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticklen.py b/plotly/validators/layout/yaxis/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticklen.py rename to plotly/validators/layout/yaxis/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickmode.py b/plotly/validators/layout/yaxis/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickmode.py rename to plotly/validators/layout/yaxis/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickprefix.py b/plotly/validators/layout/yaxis/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickprefix.py rename to plotly/validators/layout/yaxis/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticks.py b/plotly/validators/layout/yaxis/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticks.py rename to plotly/validators/layout/yaxis/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickson.py b/plotly/validators/layout/yaxis/_tickson.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickson.py rename to plotly/validators/layout/yaxis/_tickson.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticksuffix.py b/plotly/validators/layout/yaxis/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticksuffix.py rename to plotly/validators/layout/yaxis/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticktext.py b/plotly/validators/layout/yaxis/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticktext.py rename to plotly/validators/layout/yaxis/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_ticktextsrc.py b/plotly/validators/layout/yaxis/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_ticktextsrc.py rename to plotly/validators/layout/yaxis/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickvals.py b/plotly/validators/layout/yaxis/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickvals.py rename to plotly/validators/layout/yaxis/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickvalssrc.py b/plotly/validators/layout/yaxis/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickvalssrc.py rename to plotly/validators/layout/yaxis/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_tickwidth.py b/plotly/validators/layout/yaxis/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_tickwidth.py rename to plotly/validators/layout/yaxis/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_title.py b/plotly/validators/layout/yaxis/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_title.py rename to plotly/validators/layout/yaxis/_title.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_type.py b/plotly/validators/layout/yaxis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_type.py rename to plotly/validators/layout/yaxis/_type.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_uirevision.py b/plotly/validators/layout/yaxis/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_uirevision.py rename to plotly/validators/layout/yaxis/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_visible.py b/plotly/validators/layout/yaxis/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_visible.py rename to plotly/validators/layout/yaxis/_visible.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_zeroline.py b/plotly/validators/layout/yaxis/_zeroline.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_zeroline.py rename to plotly/validators/layout/yaxis/_zeroline.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_zerolinecolor.py b/plotly/validators/layout/yaxis/_zerolinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_zerolinecolor.py rename to plotly/validators/layout/yaxis/_zerolinecolor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/_zerolinewidth.py b/plotly/validators/layout/yaxis/_zerolinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/_zerolinewidth.py rename to plotly/validators/layout/yaxis/_zerolinewidth.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/__init__.py b/plotly/validators/layout/yaxis/autorangeoptions/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/__init__.py rename to plotly/validators/layout/yaxis/autorangeoptions/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_clipmax.py b/plotly/validators/layout/yaxis/autorangeoptions/_clipmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_clipmax.py rename to plotly/validators/layout/yaxis/autorangeoptions/_clipmax.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_clipmin.py b/plotly/validators/layout/yaxis/autorangeoptions/_clipmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_clipmin.py rename to plotly/validators/layout/yaxis/autorangeoptions/_clipmin.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_include.py b/plotly/validators/layout/yaxis/autorangeoptions/_include.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_include.py rename to plotly/validators/layout/yaxis/autorangeoptions/_include.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_includesrc.py b/plotly/validators/layout/yaxis/autorangeoptions/_includesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_includesrc.py rename to plotly/validators/layout/yaxis/autorangeoptions/_includesrc.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_maxallowed.py b/plotly/validators/layout/yaxis/autorangeoptions/_maxallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_maxallowed.py rename to plotly/validators/layout/yaxis/autorangeoptions/_maxallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_minallowed.py b/plotly/validators/layout/yaxis/autorangeoptions/_minallowed.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/autorangeoptions/_minallowed.py rename to plotly/validators/layout/yaxis/autorangeoptions/_minallowed.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/__init__.py b/plotly/validators/layout/yaxis/minor/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/__init__.py rename to plotly/validators/layout/yaxis/minor/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_dtick.py b/plotly/validators/layout/yaxis/minor/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_dtick.py rename to plotly/validators/layout/yaxis/minor/_dtick.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_gridcolor.py b/plotly/validators/layout/yaxis/minor/_gridcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_gridcolor.py rename to plotly/validators/layout/yaxis/minor/_gridcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_griddash.py b/plotly/validators/layout/yaxis/minor/_griddash.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_griddash.py rename to plotly/validators/layout/yaxis/minor/_griddash.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_gridwidth.py b/plotly/validators/layout/yaxis/minor/_gridwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_gridwidth.py rename to plotly/validators/layout/yaxis/minor/_gridwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_nticks.py b/plotly/validators/layout/yaxis/minor/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_nticks.py rename to plotly/validators/layout/yaxis/minor/_nticks.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_showgrid.py b/plotly/validators/layout/yaxis/minor/_showgrid.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_showgrid.py rename to plotly/validators/layout/yaxis/minor/_showgrid.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_tick0.py b/plotly/validators/layout/yaxis/minor/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_tick0.py rename to plotly/validators/layout/yaxis/minor/_tick0.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickcolor.py b/plotly/validators/layout/yaxis/minor/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickcolor.py rename to plotly/validators/layout/yaxis/minor/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_ticklen.py b/plotly/validators/layout/yaxis/minor/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_ticklen.py rename to plotly/validators/layout/yaxis/minor/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickmode.py b/plotly/validators/layout/yaxis/minor/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickmode.py rename to plotly/validators/layout/yaxis/minor/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_ticks.py b/plotly/validators/layout/yaxis/minor/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_ticks.py rename to plotly/validators/layout/yaxis/minor/_ticks.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickvals.py b/plotly/validators/layout/yaxis/minor/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickvals.py rename to plotly/validators/layout/yaxis/minor/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickvalssrc.py b/plotly/validators/layout/yaxis/minor/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickvalssrc.py rename to plotly/validators/layout/yaxis/minor/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickwidth.py b/plotly/validators/layout/yaxis/minor/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/minor/_tickwidth.py rename to plotly/validators/layout/yaxis/minor/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/__init__.py b/plotly/validators/layout/yaxis/rangebreak/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/__init__.py rename to plotly/validators/layout/yaxis/rangebreak/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_bounds.py b/plotly/validators/layout/yaxis/rangebreak/_bounds.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_bounds.py rename to plotly/validators/layout/yaxis/rangebreak/_bounds.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_dvalue.py b/plotly/validators/layout/yaxis/rangebreak/_dvalue.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_dvalue.py rename to plotly/validators/layout/yaxis/rangebreak/_dvalue.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_enabled.py b/plotly/validators/layout/yaxis/rangebreak/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_enabled.py rename to plotly/validators/layout/yaxis/rangebreak/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_name.py b/plotly/validators/layout/yaxis/rangebreak/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_name.py rename to plotly/validators/layout/yaxis/rangebreak/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_pattern.py b/plotly/validators/layout/yaxis/rangebreak/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_pattern.py rename to plotly/validators/layout/yaxis/rangebreak/_pattern.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_templateitemname.py b/plotly/validators/layout/yaxis/rangebreak/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_templateitemname.py rename to plotly/validators/layout/yaxis/rangebreak/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_values.py b/plotly/validators/layout/yaxis/rangebreak/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/rangebreak/_values.py rename to plotly/validators/layout/yaxis/rangebreak/_values.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/__init__.py b/plotly/validators/layout/yaxis/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/__init__.py rename to plotly/validators/layout/yaxis/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_color.py b/plotly/validators/layout/yaxis/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_color.py rename to plotly/validators/layout/yaxis/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_family.py b/plotly/validators/layout/yaxis/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_family.py rename to plotly/validators/layout/yaxis/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_lineposition.py b/plotly/validators/layout/yaxis/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_lineposition.py rename to plotly/validators/layout/yaxis/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_shadow.py b/plotly/validators/layout/yaxis/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_shadow.py rename to plotly/validators/layout/yaxis/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_size.py b/plotly/validators/layout/yaxis/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_size.py rename to plotly/validators/layout/yaxis/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_style.py b/plotly/validators/layout/yaxis/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_style.py rename to plotly/validators/layout/yaxis/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_textcase.py b/plotly/validators/layout/yaxis/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_textcase.py rename to plotly/validators/layout/yaxis/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_variant.py b/plotly/validators/layout/yaxis/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_variant.py rename to plotly/validators/layout/yaxis/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_weight.py b/plotly/validators/layout/yaxis/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickfont/_weight.py rename to plotly/validators/layout/yaxis/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/__init__.py b/plotly/validators/layout/yaxis/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/__init__.py rename to plotly/validators/layout/yaxis/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_dtickrange.py b/plotly/validators/layout/yaxis/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_dtickrange.py rename to plotly/validators/layout/yaxis/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_enabled.py b/plotly/validators/layout/yaxis/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_enabled.py rename to plotly/validators/layout/yaxis/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_name.py b/plotly/validators/layout/yaxis/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_name.py rename to plotly/validators/layout/yaxis/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_templateitemname.py b/plotly/validators/layout/yaxis/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_templateitemname.py rename to plotly/validators/layout/yaxis/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_value.py b/plotly/validators/layout/yaxis/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/tickformatstop/_value.py rename to plotly/validators/layout/yaxis/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/__init__.py b/plotly/validators/layout/yaxis/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/__init__.py rename to plotly/validators/layout/yaxis/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/_font.py b/plotly/validators/layout/yaxis/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/_font.py rename to plotly/validators/layout/yaxis/title/_font.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/_standoff.py b/plotly/validators/layout/yaxis/title/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/_standoff.py rename to plotly/validators/layout/yaxis/title/_standoff.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/_text.py b/plotly/validators/layout/yaxis/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/_text.py rename to plotly/validators/layout/yaxis/title/_text.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/__init__.py b/plotly/validators/layout/yaxis/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/__init__.py rename to plotly/validators/layout/yaxis/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_color.py b/plotly/validators/layout/yaxis/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_color.py rename to plotly/validators/layout/yaxis/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_family.py b/plotly/validators/layout/yaxis/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_family.py rename to plotly/validators/layout/yaxis/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_lineposition.py b/plotly/validators/layout/yaxis/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_lineposition.py rename to plotly/validators/layout/yaxis/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_shadow.py b/plotly/validators/layout/yaxis/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_shadow.py rename to plotly/validators/layout/yaxis/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_size.py b/plotly/validators/layout/yaxis/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_size.py rename to plotly/validators/layout/yaxis/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_style.py b/plotly/validators/layout/yaxis/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_style.py rename to plotly/validators/layout/yaxis/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_textcase.py b/plotly/validators/layout/yaxis/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_textcase.py rename to plotly/validators/layout/yaxis/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_variant.py b/plotly/validators/layout/yaxis/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_variant.py rename to plotly/validators/layout/yaxis/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/layout/yaxis/title/font/_weight.py b/plotly/validators/layout/yaxis/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/layout/yaxis/title/font/_weight.py rename to plotly/validators/layout/yaxis/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/__init__.py b/plotly/validators/mesh3d/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/__init__.py rename to plotly/validators/mesh3d/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_alphahull.py b/plotly/validators/mesh3d/_alphahull.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_alphahull.py rename to plotly/validators/mesh3d/_alphahull.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_autocolorscale.py b/plotly/validators/mesh3d/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_autocolorscale.py rename to plotly/validators/mesh3d/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_cauto.py b/plotly/validators/mesh3d/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_cauto.py rename to plotly/validators/mesh3d/_cauto.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_cmax.py b/plotly/validators/mesh3d/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_cmax.py rename to plotly/validators/mesh3d/_cmax.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_cmid.py b/plotly/validators/mesh3d/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_cmid.py rename to plotly/validators/mesh3d/_cmid.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_cmin.py b/plotly/validators/mesh3d/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_cmin.py rename to plotly/validators/mesh3d/_cmin.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_color.py b/plotly/validators/mesh3d/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_color.py rename to plotly/validators/mesh3d/_color.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_coloraxis.py b/plotly/validators/mesh3d/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_coloraxis.py rename to plotly/validators/mesh3d/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_colorbar.py b/plotly/validators/mesh3d/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_colorbar.py rename to plotly/validators/mesh3d/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_colorscale.py b/plotly/validators/mesh3d/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_colorscale.py rename to plotly/validators/mesh3d/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_contour.py b/plotly/validators/mesh3d/_contour.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_contour.py rename to plotly/validators/mesh3d/_contour.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_customdata.py b/plotly/validators/mesh3d/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_customdata.py rename to plotly/validators/mesh3d/_customdata.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_customdatasrc.py b/plotly/validators/mesh3d/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_customdatasrc.py rename to plotly/validators/mesh3d/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_delaunayaxis.py b/plotly/validators/mesh3d/_delaunayaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_delaunayaxis.py rename to plotly/validators/mesh3d/_delaunayaxis.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_facecolor.py b/plotly/validators/mesh3d/_facecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_facecolor.py rename to plotly/validators/mesh3d/_facecolor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_facecolorsrc.py b/plotly/validators/mesh3d/_facecolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_facecolorsrc.py rename to plotly/validators/mesh3d/_facecolorsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_flatshading.py b/plotly/validators/mesh3d/_flatshading.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_flatshading.py rename to plotly/validators/mesh3d/_flatshading.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_hoverinfo.py b/plotly/validators/mesh3d/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_hoverinfo.py rename to plotly/validators/mesh3d/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_hoverinfosrc.py b/plotly/validators/mesh3d/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_hoverinfosrc.py rename to plotly/validators/mesh3d/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_hoverlabel.py b/plotly/validators/mesh3d/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_hoverlabel.py rename to plotly/validators/mesh3d/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_hovertemplate.py b/plotly/validators/mesh3d/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_hovertemplate.py rename to plotly/validators/mesh3d/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_hovertemplatesrc.py b/plotly/validators/mesh3d/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_hovertemplatesrc.py rename to plotly/validators/mesh3d/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_hovertext.py b/plotly/validators/mesh3d/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_hovertext.py rename to plotly/validators/mesh3d/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_hovertextsrc.py b/plotly/validators/mesh3d/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_hovertextsrc.py rename to plotly/validators/mesh3d/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_i.py b/plotly/validators/mesh3d/_i.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_i.py rename to plotly/validators/mesh3d/_i.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_ids.py b/plotly/validators/mesh3d/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_ids.py rename to plotly/validators/mesh3d/_ids.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_idssrc.py b/plotly/validators/mesh3d/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_idssrc.py rename to plotly/validators/mesh3d/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_intensity.py b/plotly/validators/mesh3d/_intensity.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_intensity.py rename to plotly/validators/mesh3d/_intensity.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_intensitymode.py b/plotly/validators/mesh3d/_intensitymode.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_intensitymode.py rename to plotly/validators/mesh3d/_intensitymode.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_intensitysrc.py b/plotly/validators/mesh3d/_intensitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_intensitysrc.py rename to plotly/validators/mesh3d/_intensitysrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_isrc.py b/plotly/validators/mesh3d/_isrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_isrc.py rename to plotly/validators/mesh3d/_isrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_j.py b/plotly/validators/mesh3d/_j.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_j.py rename to plotly/validators/mesh3d/_j.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_jsrc.py b/plotly/validators/mesh3d/_jsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_jsrc.py rename to plotly/validators/mesh3d/_jsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_k.py b/plotly/validators/mesh3d/_k.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_k.py rename to plotly/validators/mesh3d/_k.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_ksrc.py b/plotly/validators/mesh3d/_ksrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_ksrc.py rename to plotly/validators/mesh3d/_ksrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_legend.py b/plotly/validators/mesh3d/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_legend.py rename to plotly/validators/mesh3d/_legend.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_legendgroup.py b/plotly/validators/mesh3d/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_legendgroup.py rename to plotly/validators/mesh3d/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_legendgrouptitle.py b/plotly/validators/mesh3d/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_legendgrouptitle.py rename to plotly/validators/mesh3d/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_legendrank.py b/plotly/validators/mesh3d/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_legendrank.py rename to plotly/validators/mesh3d/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_legendwidth.py b/plotly/validators/mesh3d/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_legendwidth.py rename to plotly/validators/mesh3d/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_lighting.py b/plotly/validators/mesh3d/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_lighting.py rename to plotly/validators/mesh3d/_lighting.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_lightposition.py b/plotly/validators/mesh3d/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_lightposition.py rename to plotly/validators/mesh3d/_lightposition.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_meta.py b/plotly/validators/mesh3d/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_meta.py rename to plotly/validators/mesh3d/_meta.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_metasrc.py b/plotly/validators/mesh3d/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_metasrc.py rename to plotly/validators/mesh3d/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_name.py b/plotly/validators/mesh3d/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_name.py rename to plotly/validators/mesh3d/_name.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_opacity.py b/plotly/validators/mesh3d/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_opacity.py rename to plotly/validators/mesh3d/_opacity.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_reversescale.py b/plotly/validators/mesh3d/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_reversescale.py rename to plotly/validators/mesh3d/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_scene.py b/plotly/validators/mesh3d/_scene.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_scene.py rename to plotly/validators/mesh3d/_scene.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_showlegend.py b/plotly/validators/mesh3d/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_showlegend.py rename to plotly/validators/mesh3d/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_showscale.py b/plotly/validators/mesh3d/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_showscale.py rename to plotly/validators/mesh3d/_showscale.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_stream.py b/plotly/validators/mesh3d/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_stream.py rename to plotly/validators/mesh3d/_stream.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_text.py b/plotly/validators/mesh3d/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_text.py rename to plotly/validators/mesh3d/_text.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_textsrc.py b/plotly/validators/mesh3d/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_textsrc.py rename to plotly/validators/mesh3d/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_uid.py b/plotly/validators/mesh3d/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_uid.py rename to plotly/validators/mesh3d/_uid.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_uirevision.py b/plotly/validators/mesh3d/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_uirevision.py rename to plotly/validators/mesh3d/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_vertexcolor.py b/plotly/validators/mesh3d/_vertexcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_vertexcolor.py rename to plotly/validators/mesh3d/_vertexcolor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_vertexcolorsrc.py b/plotly/validators/mesh3d/_vertexcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_vertexcolorsrc.py rename to plotly/validators/mesh3d/_vertexcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_visible.py b/plotly/validators/mesh3d/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_visible.py rename to plotly/validators/mesh3d/_visible.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_x.py b/plotly/validators/mesh3d/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_x.py rename to plotly/validators/mesh3d/_x.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_xcalendar.py b/plotly/validators/mesh3d/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_xcalendar.py rename to plotly/validators/mesh3d/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_xhoverformat.py b/plotly/validators/mesh3d/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_xhoverformat.py rename to plotly/validators/mesh3d/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_xsrc.py b/plotly/validators/mesh3d/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_xsrc.py rename to plotly/validators/mesh3d/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_y.py b/plotly/validators/mesh3d/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_y.py rename to plotly/validators/mesh3d/_y.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_ycalendar.py b/plotly/validators/mesh3d/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_ycalendar.py rename to plotly/validators/mesh3d/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_yhoverformat.py b/plotly/validators/mesh3d/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_yhoverformat.py rename to plotly/validators/mesh3d/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_ysrc.py b/plotly/validators/mesh3d/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_ysrc.py rename to plotly/validators/mesh3d/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_z.py b/plotly/validators/mesh3d/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_z.py rename to plotly/validators/mesh3d/_z.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_zcalendar.py b/plotly/validators/mesh3d/_zcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_zcalendar.py rename to plotly/validators/mesh3d/_zcalendar.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_zhoverformat.py b/plotly/validators/mesh3d/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_zhoverformat.py rename to plotly/validators/mesh3d/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/_zsrc.py b/plotly/validators/mesh3d/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/_zsrc.py rename to plotly/validators/mesh3d/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/__init__.py b/plotly/validators/mesh3d/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/__init__.py rename to plotly/validators/mesh3d/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_bgcolor.py b/plotly/validators/mesh3d/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_bgcolor.py rename to plotly/validators/mesh3d/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_bordercolor.py b/plotly/validators/mesh3d/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_bordercolor.py rename to plotly/validators/mesh3d/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_borderwidth.py b/plotly/validators/mesh3d/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_borderwidth.py rename to plotly/validators/mesh3d/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_dtick.py b/plotly/validators/mesh3d/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_dtick.py rename to plotly/validators/mesh3d/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_exponentformat.py b/plotly/validators/mesh3d/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_exponentformat.py rename to plotly/validators/mesh3d/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_labelalias.py b/plotly/validators/mesh3d/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_labelalias.py rename to plotly/validators/mesh3d/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_len.py b/plotly/validators/mesh3d/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_len.py rename to plotly/validators/mesh3d/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_lenmode.py b/plotly/validators/mesh3d/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_lenmode.py rename to plotly/validators/mesh3d/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_minexponent.py b/plotly/validators/mesh3d/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_minexponent.py rename to plotly/validators/mesh3d/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_nticks.py b/plotly/validators/mesh3d/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_nticks.py rename to plotly/validators/mesh3d/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_orientation.py b/plotly/validators/mesh3d/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_orientation.py rename to plotly/validators/mesh3d/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_outlinecolor.py b/plotly/validators/mesh3d/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_outlinecolor.py rename to plotly/validators/mesh3d/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_outlinewidth.py b/plotly/validators/mesh3d/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_outlinewidth.py rename to plotly/validators/mesh3d/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_separatethousands.py b/plotly/validators/mesh3d/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_separatethousands.py rename to plotly/validators/mesh3d/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_showexponent.py b/plotly/validators/mesh3d/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_showexponent.py rename to plotly/validators/mesh3d/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_showticklabels.py b/plotly/validators/mesh3d/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_showticklabels.py rename to plotly/validators/mesh3d/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_showtickprefix.py b/plotly/validators/mesh3d/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_showtickprefix.py rename to plotly/validators/mesh3d/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_showticksuffix.py b/plotly/validators/mesh3d/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_showticksuffix.py rename to plotly/validators/mesh3d/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_thickness.py b/plotly/validators/mesh3d/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_thickness.py rename to plotly/validators/mesh3d/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_thicknessmode.py b/plotly/validators/mesh3d/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_thicknessmode.py rename to plotly/validators/mesh3d/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tick0.py b/plotly/validators/mesh3d/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tick0.py rename to plotly/validators/mesh3d/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickangle.py b/plotly/validators/mesh3d/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickangle.py rename to plotly/validators/mesh3d/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickcolor.py b/plotly/validators/mesh3d/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickcolor.py rename to plotly/validators/mesh3d/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickfont.py b/plotly/validators/mesh3d/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickfont.py rename to plotly/validators/mesh3d/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickformat.py b/plotly/validators/mesh3d/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickformat.py rename to plotly/validators/mesh3d/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickformatstopdefaults.py b/plotly/validators/mesh3d/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickformatstopdefaults.py rename to plotly/validators/mesh3d/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickformatstops.py b/plotly/validators/mesh3d/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickformatstops.py rename to plotly/validators/mesh3d/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticklabeloverflow.py b/plotly/validators/mesh3d/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticklabeloverflow.py rename to plotly/validators/mesh3d/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticklabelposition.py b/plotly/validators/mesh3d/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticklabelposition.py rename to plotly/validators/mesh3d/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticklabelstep.py b/plotly/validators/mesh3d/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticklabelstep.py rename to plotly/validators/mesh3d/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticklen.py b/plotly/validators/mesh3d/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticklen.py rename to plotly/validators/mesh3d/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickmode.py b/plotly/validators/mesh3d/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickmode.py rename to plotly/validators/mesh3d/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickprefix.py b/plotly/validators/mesh3d/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickprefix.py rename to plotly/validators/mesh3d/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticks.py b/plotly/validators/mesh3d/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticks.py rename to plotly/validators/mesh3d/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticksuffix.py b/plotly/validators/mesh3d/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticksuffix.py rename to plotly/validators/mesh3d/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticktext.py b/plotly/validators/mesh3d/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticktext.py rename to plotly/validators/mesh3d/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticktextsrc.py b/plotly/validators/mesh3d/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ticktextsrc.py rename to plotly/validators/mesh3d/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickvals.py b/plotly/validators/mesh3d/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickvals.py rename to plotly/validators/mesh3d/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickvalssrc.py b/plotly/validators/mesh3d/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickvalssrc.py rename to plotly/validators/mesh3d/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickwidth.py b/plotly/validators/mesh3d/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_tickwidth.py rename to plotly/validators/mesh3d/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_title.py b/plotly/validators/mesh3d/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_title.py rename to plotly/validators/mesh3d/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_x.py b/plotly/validators/mesh3d/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_x.py rename to plotly/validators/mesh3d/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_xanchor.py b/plotly/validators/mesh3d/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_xanchor.py rename to plotly/validators/mesh3d/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_xpad.py b/plotly/validators/mesh3d/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_xpad.py rename to plotly/validators/mesh3d/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_xref.py b/plotly/validators/mesh3d/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_xref.py rename to plotly/validators/mesh3d/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_y.py b/plotly/validators/mesh3d/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_y.py rename to plotly/validators/mesh3d/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_yanchor.py b/plotly/validators/mesh3d/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_yanchor.py rename to plotly/validators/mesh3d/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_ypad.py b/plotly/validators/mesh3d/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_ypad.py rename to plotly/validators/mesh3d/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/_yref.py b/plotly/validators/mesh3d/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/_yref.py rename to plotly/validators/mesh3d/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/__init__.py b/plotly/validators/mesh3d/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/__init__.py rename to plotly/validators/mesh3d/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_color.py b/plotly/validators/mesh3d/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_color.py rename to plotly/validators/mesh3d/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_family.py b/plotly/validators/mesh3d/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_family.py rename to plotly/validators/mesh3d/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_lineposition.py b/plotly/validators/mesh3d/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_lineposition.py rename to plotly/validators/mesh3d/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_shadow.py b/plotly/validators/mesh3d/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_shadow.py rename to plotly/validators/mesh3d/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_size.py b/plotly/validators/mesh3d/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_size.py rename to plotly/validators/mesh3d/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_style.py b/plotly/validators/mesh3d/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_style.py rename to plotly/validators/mesh3d/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_textcase.py b/plotly/validators/mesh3d/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_textcase.py rename to plotly/validators/mesh3d/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_variant.py b/plotly/validators/mesh3d/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_variant.py rename to plotly/validators/mesh3d/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_weight.py b/plotly/validators/mesh3d/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickfont/_weight.py rename to plotly/validators/mesh3d/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/__init__.py b/plotly/validators/mesh3d/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/__init__.py rename to plotly/validators/mesh3d/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/mesh3d/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/mesh3d/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_enabled.py b/plotly/validators/mesh3d/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_enabled.py rename to plotly/validators/mesh3d/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_name.py b/plotly/validators/mesh3d/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_name.py rename to plotly/validators/mesh3d/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/mesh3d/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/mesh3d/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_value.py b/plotly/validators/mesh3d/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/tickformatstop/_value.py rename to plotly/validators/mesh3d/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/__init__.py b/plotly/validators/mesh3d/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/__init__.py rename to plotly/validators/mesh3d/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/_font.py b/plotly/validators/mesh3d/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/_font.py rename to plotly/validators/mesh3d/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/_side.py b/plotly/validators/mesh3d/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/_side.py rename to plotly/validators/mesh3d/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/_text.py b/plotly/validators/mesh3d/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/_text.py rename to plotly/validators/mesh3d/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/__init__.py b/plotly/validators/mesh3d/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/__init__.py rename to plotly/validators/mesh3d/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_color.py b/plotly/validators/mesh3d/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_color.py rename to plotly/validators/mesh3d/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_family.py b/plotly/validators/mesh3d/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_family.py rename to plotly/validators/mesh3d/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_lineposition.py b/plotly/validators/mesh3d/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_lineposition.py rename to plotly/validators/mesh3d/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_shadow.py b/plotly/validators/mesh3d/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_shadow.py rename to plotly/validators/mesh3d/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_size.py b/plotly/validators/mesh3d/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_size.py rename to plotly/validators/mesh3d/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_style.py b/plotly/validators/mesh3d/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_style.py rename to plotly/validators/mesh3d/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_textcase.py b/plotly/validators/mesh3d/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_textcase.py rename to plotly/validators/mesh3d/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_variant.py b/plotly/validators/mesh3d/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_variant.py rename to plotly/validators/mesh3d/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_weight.py b/plotly/validators/mesh3d/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/colorbar/title/font/_weight.py rename to plotly/validators/mesh3d/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/contour/__init__.py b/plotly/validators/mesh3d/contour/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/contour/__init__.py rename to plotly/validators/mesh3d/contour/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/contour/_color.py b/plotly/validators/mesh3d/contour/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/contour/_color.py rename to plotly/validators/mesh3d/contour/_color.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/contour/_show.py b/plotly/validators/mesh3d/contour/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/contour/_show.py rename to plotly/validators/mesh3d/contour/_show.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/contour/_width.py b/plotly/validators/mesh3d/contour/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/contour/_width.py rename to plotly/validators/mesh3d/contour/_width.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/__init__.py b/plotly/validators/mesh3d/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/__init__.py rename to plotly/validators/mesh3d/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_align.py b/plotly/validators/mesh3d/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_align.py rename to plotly/validators/mesh3d/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_alignsrc.py b/plotly/validators/mesh3d/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_alignsrc.py rename to plotly/validators/mesh3d/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_bgcolor.py b/plotly/validators/mesh3d/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_bgcolor.py rename to plotly/validators/mesh3d/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_bgcolorsrc.py b/plotly/validators/mesh3d/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_bgcolorsrc.py rename to plotly/validators/mesh3d/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_bordercolor.py b/plotly/validators/mesh3d/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_bordercolor.py rename to plotly/validators/mesh3d/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_bordercolorsrc.py b/plotly/validators/mesh3d/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_bordercolorsrc.py rename to plotly/validators/mesh3d/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_font.py b/plotly/validators/mesh3d/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_font.py rename to plotly/validators/mesh3d/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_namelength.py b/plotly/validators/mesh3d/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_namelength.py rename to plotly/validators/mesh3d/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_namelengthsrc.py b/plotly/validators/mesh3d/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/_namelengthsrc.py rename to plotly/validators/mesh3d/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/__init__.py b/plotly/validators/mesh3d/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/__init__.py rename to plotly/validators/mesh3d/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_color.py b/plotly/validators/mesh3d/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_color.py rename to plotly/validators/mesh3d/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_colorsrc.py b/plotly/validators/mesh3d/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_colorsrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_family.py b/plotly/validators/mesh3d/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_family.py rename to plotly/validators/mesh3d/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_familysrc.py b/plotly/validators/mesh3d/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_familysrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_lineposition.py b/plotly/validators/mesh3d/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_lineposition.py rename to plotly/validators/mesh3d/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_linepositionsrc.py b/plotly/validators/mesh3d/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_shadow.py b/plotly/validators/mesh3d/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_shadow.py rename to plotly/validators/mesh3d/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_shadowsrc.py b/plotly/validators/mesh3d/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_shadowsrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_size.py b/plotly/validators/mesh3d/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_size.py rename to plotly/validators/mesh3d/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_sizesrc.py b/plotly/validators/mesh3d/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_sizesrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_style.py b/plotly/validators/mesh3d/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_style.py rename to plotly/validators/mesh3d/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_stylesrc.py b/plotly/validators/mesh3d/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_stylesrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_textcase.py b/plotly/validators/mesh3d/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_textcase.py rename to plotly/validators/mesh3d/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_textcasesrc.py b/plotly/validators/mesh3d/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_textcasesrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_variant.py b/plotly/validators/mesh3d/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_variant.py rename to plotly/validators/mesh3d/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_variantsrc.py b/plotly/validators/mesh3d/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_variantsrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_weight.py b/plotly/validators/mesh3d/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_weight.py rename to plotly/validators/mesh3d/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_weightsrc.py b/plotly/validators/mesh3d/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/hoverlabel/font/_weightsrc.py rename to plotly/validators/mesh3d/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/__init__.py b/plotly/validators/mesh3d/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/__init__.py rename to plotly/validators/mesh3d/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/_font.py b/plotly/validators/mesh3d/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/_font.py rename to plotly/validators/mesh3d/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/_text.py b/plotly/validators/mesh3d/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/_text.py rename to plotly/validators/mesh3d/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/__init__.py b/plotly/validators/mesh3d/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/__init__.py rename to plotly/validators/mesh3d/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_color.py b/plotly/validators/mesh3d/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_color.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_family.py b/plotly/validators/mesh3d/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_family.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_lineposition.py b/plotly/validators/mesh3d/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_lineposition.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_shadow.py b/plotly/validators/mesh3d/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_shadow.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_size.py b/plotly/validators/mesh3d/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_size.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_style.py b/plotly/validators/mesh3d/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_style.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_textcase.py b/plotly/validators/mesh3d/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_textcase.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_variant.py b/plotly/validators/mesh3d/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_variant.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_weight.py b/plotly/validators/mesh3d/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/legendgrouptitle/font/_weight.py rename to plotly/validators/mesh3d/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lighting/__init__.py b/plotly/validators/mesh3d/lighting/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lighting/__init__.py rename to plotly/validators/mesh3d/lighting/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lighting/_ambient.py b/plotly/validators/mesh3d/lighting/_ambient.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lighting/_ambient.py rename to plotly/validators/mesh3d/lighting/_ambient.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lighting/_diffuse.py b/plotly/validators/mesh3d/lighting/_diffuse.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lighting/_diffuse.py rename to plotly/validators/mesh3d/lighting/_diffuse.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lighting/_facenormalsepsilon.py b/plotly/validators/mesh3d/lighting/_facenormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lighting/_facenormalsepsilon.py rename to plotly/validators/mesh3d/lighting/_facenormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lighting/_fresnel.py b/plotly/validators/mesh3d/lighting/_fresnel.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lighting/_fresnel.py rename to plotly/validators/mesh3d/lighting/_fresnel.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lighting/_roughness.py b/plotly/validators/mesh3d/lighting/_roughness.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lighting/_roughness.py rename to plotly/validators/mesh3d/lighting/_roughness.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lighting/_specular.py b/plotly/validators/mesh3d/lighting/_specular.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lighting/_specular.py rename to plotly/validators/mesh3d/lighting/_specular.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lighting/_vertexnormalsepsilon.py b/plotly/validators/mesh3d/lighting/_vertexnormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lighting/_vertexnormalsepsilon.py rename to plotly/validators/mesh3d/lighting/_vertexnormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lightposition/__init__.py b/plotly/validators/mesh3d/lightposition/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lightposition/__init__.py rename to plotly/validators/mesh3d/lightposition/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lightposition/_x.py b/plotly/validators/mesh3d/lightposition/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lightposition/_x.py rename to plotly/validators/mesh3d/lightposition/_x.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lightposition/_y.py b/plotly/validators/mesh3d/lightposition/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lightposition/_y.py rename to plotly/validators/mesh3d/lightposition/_y.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/lightposition/_z.py b/plotly/validators/mesh3d/lightposition/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/lightposition/_z.py rename to plotly/validators/mesh3d/lightposition/_z.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/stream/__init__.py b/plotly/validators/mesh3d/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/stream/__init__.py rename to plotly/validators/mesh3d/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/stream/_maxpoints.py b/plotly/validators/mesh3d/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/stream/_maxpoints.py rename to plotly/validators/mesh3d/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/mesh3d/stream/_token.py b/plotly/validators/mesh3d/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/mesh3d/stream/_token.py rename to plotly/validators/mesh3d/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/ohlc/__init__.py b/plotly/validators/ohlc/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/__init__.py rename to plotly/validators/ohlc/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_close.py b/plotly/validators/ohlc/_close.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_close.py rename to plotly/validators/ohlc/_close.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_closesrc.py b/plotly/validators/ohlc/_closesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_closesrc.py rename to plotly/validators/ohlc/_closesrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_customdata.py b/plotly/validators/ohlc/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_customdata.py rename to plotly/validators/ohlc/_customdata.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_customdatasrc.py b/plotly/validators/ohlc/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_customdatasrc.py rename to plotly/validators/ohlc/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_decreasing.py b/plotly/validators/ohlc/_decreasing.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_decreasing.py rename to plotly/validators/ohlc/_decreasing.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_high.py b/plotly/validators/ohlc/_high.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_high.py rename to plotly/validators/ohlc/_high.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_highsrc.py b/plotly/validators/ohlc/_highsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_highsrc.py rename to plotly/validators/ohlc/_highsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_hoverinfo.py b/plotly/validators/ohlc/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_hoverinfo.py rename to plotly/validators/ohlc/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_hoverinfosrc.py b/plotly/validators/ohlc/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_hoverinfosrc.py rename to plotly/validators/ohlc/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_hoverlabel.py b/plotly/validators/ohlc/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_hoverlabel.py rename to plotly/validators/ohlc/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_hovertext.py b/plotly/validators/ohlc/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_hovertext.py rename to plotly/validators/ohlc/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_hovertextsrc.py b/plotly/validators/ohlc/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_hovertextsrc.py rename to plotly/validators/ohlc/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_ids.py b/plotly/validators/ohlc/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_ids.py rename to plotly/validators/ohlc/_ids.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_idssrc.py b/plotly/validators/ohlc/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_idssrc.py rename to plotly/validators/ohlc/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_increasing.py b/plotly/validators/ohlc/_increasing.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_increasing.py rename to plotly/validators/ohlc/_increasing.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_legend.py b/plotly/validators/ohlc/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_legend.py rename to plotly/validators/ohlc/_legend.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_legendgroup.py b/plotly/validators/ohlc/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_legendgroup.py rename to plotly/validators/ohlc/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_legendgrouptitle.py b/plotly/validators/ohlc/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_legendgrouptitle.py rename to plotly/validators/ohlc/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_legendrank.py b/plotly/validators/ohlc/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_legendrank.py rename to plotly/validators/ohlc/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_legendwidth.py b/plotly/validators/ohlc/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_legendwidth.py rename to plotly/validators/ohlc/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_line.py b/plotly/validators/ohlc/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_line.py rename to plotly/validators/ohlc/_line.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_low.py b/plotly/validators/ohlc/_low.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_low.py rename to plotly/validators/ohlc/_low.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_lowsrc.py b/plotly/validators/ohlc/_lowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_lowsrc.py rename to plotly/validators/ohlc/_lowsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_meta.py b/plotly/validators/ohlc/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_meta.py rename to plotly/validators/ohlc/_meta.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_metasrc.py b/plotly/validators/ohlc/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_metasrc.py rename to plotly/validators/ohlc/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_name.py b/plotly/validators/ohlc/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_name.py rename to plotly/validators/ohlc/_name.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_opacity.py b/plotly/validators/ohlc/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_opacity.py rename to plotly/validators/ohlc/_opacity.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_open.py b/plotly/validators/ohlc/_open.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_open.py rename to plotly/validators/ohlc/_open.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_opensrc.py b/plotly/validators/ohlc/_opensrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_opensrc.py rename to plotly/validators/ohlc/_opensrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_selectedpoints.py b/plotly/validators/ohlc/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_selectedpoints.py rename to plotly/validators/ohlc/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_showlegend.py b/plotly/validators/ohlc/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_showlegend.py rename to plotly/validators/ohlc/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_stream.py b/plotly/validators/ohlc/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_stream.py rename to plotly/validators/ohlc/_stream.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_text.py b/plotly/validators/ohlc/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_text.py rename to plotly/validators/ohlc/_text.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_textsrc.py b/plotly/validators/ohlc/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_textsrc.py rename to plotly/validators/ohlc/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_tickwidth.py b/plotly/validators/ohlc/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_tickwidth.py rename to plotly/validators/ohlc/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_uid.py b/plotly/validators/ohlc/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_uid.py rename to plotly/validators/ohlc/_uid.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_uirevision.py b/plotly/validators/ohlc/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_uirevision.py rename to plotly/validators/ohlc/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_visible.py b/plotly/validators/ohlc/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_visible.py rename to plotly/validators/ohlc/_visible.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_x.py b/plotly/validators/ohlc/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_x.py rename to plotly/validators/ohlc/_x.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_xaxis.py b/plotly/validators/ohlc/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_xaxis.py rename to plotly/validators/ohlc/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_xcalendar.py b/plotly/validators/ohlc/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_xcalendar.py rename to plotly/validators/ohlc/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_xhoverformat.py b/plotly/validators/ohlc/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_xhoverformat.py rename to plotly/validators/ohlc/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_xperiod.py b/plotly/validators/ohlc/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_xperiod.py rename to plotly/validators/ohlc/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_xperiod0.py b/plotly/validators/ohlc/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_xperiod0.py rename to plotly/validators/ohlc/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_xperiodalignment.py b/plotly/validators/ohlc/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_xperiodalignment.py rename to plotly/validators/ohlc/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_xsrc.py b/plotly/validators/ohlc/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_xsrc.py rename to plotly/validators/ohlc/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_yaxis.py b/plotly/validators/ohlc/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_yaxis.py rename to plotly/validators/ohlc/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_yhoverformat.py b/plotly/validators/ohlc/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_yhoverformat.py rename to plotly/validators/ohlc/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/ohlc/_zorder.py b/plotly/validators/ohlc/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/_zorder.py rename to plotly/validators/ohlc/_zorder.py diff --git a/packages/python/plotly/plotly/validators/ohlc/decreasing/__init__.py b/plotly/validators/ohlc/decreasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/decreasing/__init__.py rename to plotly/validators/ohlc/decreasing/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/decreasing/_line.py b/plotly/validators/ohlc/decreasing/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/decreasing/_line.py rename to plotly/validators/ohlc/decreasing/_line.py diff --git a/packages/python/plotly/plotly/validators/ohlc/decreasing/line/__init__.py b/plotly/validators/ohlc/decreasing/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/decreasing/line/__init__.py rename to plotly/validators/ohlc/decreasing/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/decreasing/line/_color.py b/plotly/validators/ohlc/decreasing/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/decreasing/line/_color.py rename to plotly/validators/ohlc/decreasing/line/_color.py diff --git a/packages/python/plotly/plotly/validators/ohlc/decreasing/line/_dash.py b/plotly/validators/ohlc/decreasing/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/decreasing/line/_dash.py rename to plotly/validators/ohlc/decreasing/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/ohlc/decreasing/line/_width.py b/plotly/validators/ohlc/decreasing/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/decreasing/line/_width.py rename to plotly/validators/ohlc/decreasing/line/_width.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/__init__.py b/plotly/validators/ohlc/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/__init__.py rename to plotly/validators/ohlc/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_align.py b/plotly/validators/ohlc/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_align.py rename to plotly/validators/ohlc/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_alignsrc.py b/plotly/validators/ohlc/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_alignsrc.py rename to plotly/validators/ohlc/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_bgcolor.py b/plotly/validators/ohlc/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_bgcolor.py rename to plotly/validators/ohlc/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_bgcolorsrc.py b/plotly/validators/ohlc/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_bgcolorsrc.py rename to plotly/validators/ohlc/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_bordercolor.py b/plotly/validators/ohlc/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_bordercolor.py rename to plotly/validators/ohlc/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_bordercolorsrc.py b/plotly/validators/ohlc/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_bordercolorsrc.py rename to plotly/validators/ohlc/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_font.py b/plotly/validators/ohlc/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_font.py rename to plotly/validators/ohlc/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_namelength.py b/plotly/validators/ohlc/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_namelength.py rename to plotly/validators/ohlc/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_namelengthsrc.py b/plotly/validators/ohlc/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_namelengthsrc.py rename to plotly/validators/ohlc/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/_split.py b/plotly/validators/ohlc/hoverlabel/_split.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/_split.py rename to plotly/validators/ohlc/hoverlabel/_split.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/__init__.py b/plotly/validators/ohlc/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/__init__.py rename to plotly/validators/ohlc/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_color.py b/plotly/validators/ohlc/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_color.py rename to plotly/validators/ohlc/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_colorsrc.py b/plotly/validators/ohlc/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_colorsrc.py rename to plotly/validators/ohlc/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_family.py b/plotly/validators/ohlc/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_family.py rename to plotly/validators/ohlc/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_familysrc.py b/plotly/validators/ohlc/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_familysrc.py rename to plotly/validators/ohlc/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_lineposition.py b/plotly/validators/ohlc/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_lineposition.py rename to plotly/validators/ohlc/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_linepositionsrc.py b/plotly/validators/ohlc/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/ohlc/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_shadow.py b/plotly/validators/ohlc/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_shadow.py rename to plotly/validators/ohlc/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_shadowsrc.py b/plotly/validators/ohlc/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_shadowsrc.py rename to plotly/validators/ohlc/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_size.py b/plotly/validators/ohlc/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_size.py rename to plotly/validators/ohlc/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_sizesrc.py b/plotly/validators/ohlc/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_sizesrc.py rename to plotly/validators/ohlc/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_style.py b/plotly/validators/ohlc/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_style.py rename to plotly/validators/ohlc/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_stylesrc.py b/plotly/validators/ohlc/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_stylesrc.py rename to plotly/validators/ohlc/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_textcase.py b/plotly/validators/ohlc/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_textcase.py rename to plotly/validators/ohlc/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_textcasesrc.py b/plotly/validators/ohlc/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_textcasesrc.py rename to plotly/validators/ohlc/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_variant.py b/plotly/validators/ohlc/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_variant.py rename to plotly/validators/ohlc/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_variantsrc.py b/plotly/validators/ohlc/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_variantsrc.py rename to plotly/validators/ohlc/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_weight.py b/plotly/validators/ohlc/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_weight.py rename to plotly/validators/ohlc/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_weightsrc.py b/plotly/validators/ohlc/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/hoverlabel/font/_weightsrc.py rename to plotly/validators/ohlc/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/ohlc/increasing/__init__.py b/plotly/validators/ohlc/increasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/increasing/__init__.py rename to plotly/validators/ohlc/increasing/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/increasing/_line.py b/plotly/validators/ohlc/increasing/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/increasing/_line.py rename to plotly/validators/ohlc/increasing/_line.py diff --git a/packages/python/plotly/plotly/validators/ohlc/increasing/line/__init__.py b/plotly/validators/ohlc/increasing/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/increasing/line/__init__.py rename to plotly/validators/ohlc/increasing/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/increasing/line/_color.py b/plotly/validators/ohlc/increasing/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/increasing/line/_color.py rename to plotly/validators/ohlc/increasing/line/_color.py diff --git a/packages/python/plotly/plotly/validators/ohlc/increasing/line/_dash.py b/plotly/validators/ohlc/increasing/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/increasing/line/_dash.py rename to plotly/validators/ohlc/increasing/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/ohlc/increasing/line/_width.py b/plotly/validators/ohlc/increasing/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/increasing/line/_width.py rename to plotly/validators/ohlc/increasing/line/_width.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/__init__.py b/plotly/validators/ohlc/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/__init__.py rename to plotly/validators/ohlc/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/_font.py b/plotly/validators/ohlc/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/_font.py rename to plotly/validators/ohlc/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/_text.py b/plotly/validators/ohlc/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/_text.py rename to plotly/validators/ohlc/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/__init__.py b/plotly/validators/ohlc/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/__init__.py rename to plotly/validators/ohlc/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_color.py b/plotly/validators/ohlc/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_color.py rename to plotly/validators/ohlc/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_family.py b/plotly/validators/ohlc/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_family.py rename to plotly/validators/ohlc/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_lineposition.py b/plotly/validators/ohlc/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_lineposition.py rename to plotly/validators/ohlc/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_shadow.py b/plotly/validators/ohlc/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_shadow.py rename to plotly/validators/ohlc/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_size.py b/plotly/validators/ohlc/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_size.py rename to plotly/validators/ohlc/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_style.py b/plotly/validators/ohlc/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_style.py rename to plotly/validators/ohlc/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_textcase.py b/plotly/validators/ohlc/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_textcase.py rename to plotly/validators/ohlc/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_variant.py b/plotly/validators/ohlc/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_variant.py rename to plotly/validators/ohlc/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_weight.py b/plotly/validators/ohlc/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/legendgrouptitle/font/_weight.py rename to plotly/validators/ohlc/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/ohlc/line/__init__.py b/plotly/validators/ohlc/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/line/__init__.py rename to plotly/validators/ohlc/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/line/_dash.py b/plotly/validators/ohlc/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/line/_dash.py rename to plotly/validators/ohlc/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/ohlc/line/_width.py b/plotly/validators/ohlc/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/line/_width.py rename to plotly/validators/ohlc/line/_width.py diff --git a/packages/python/plotly/plotly/validators/ohlc/stream/__init__.py b/plotly/validators/ohlc/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/stream/__init__.py rename to plotly/validators/ohlc/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/ohlc/stream/_maxpoints.py b/plotly/validators/ohlc/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/stream/_maxpoints.py rename to plotly/validators/ohlc/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/ohlc/stream/_token.py b/plotly/validators/ohlc/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/ohlc/stream/_token.py rename to plotly/validators/ohlc/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/parcats/__init__.py b/plotly/validators/parcats/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/__init__.py rename to plotly/validators/parcats/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/_arrangement.py b/plotly/validators/parcats/_arrangement.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_arrangement.py rename to plotly/validators/parcats/_arrangement.py diff --git a/packages/python/plotly/plotly/validators/parcats/_bundlecolors.py b/plotly/validators/parcats/_bundlecolors.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_bundlecolors.py rename to plotly/validators/parcats/_bundlecolors.py diff --git a/packages/python/plotly/plotly/validators/parcats/_counts.py b/plotly/validators/parcats/_counts.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_counts.py rename to plotly/validators/parcats/_counts.py diff --git a/packages/python/plotly/plotly/validators/parcats/_countssrc.py b/plotly/validators/parcats/_countssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_countssrc.py rename to plotly/validators/parcats/_countssrc.py diff --git a/packages/python/plotly/plotly/validators/parcats/_dimensiondefaults.py b/plotly/validators/parcats/_dimensiondefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_dimensiondefaults.py rename to plotly/validators/parcats/_dimensiondefaults.py diff --git a/packages/python/plotly/plotly/validators/parcats/_dimensions.py b/plotly/validators/parcats/_dimensions.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_dimensions.py rename to plotly/validators/parcats/_dimensions.py diff --git a/packages/python/plotly/plotly/validators/parcats/_domain.py b/plotly/validators/parcats/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_domain.py rename to plotly/validators/parcats/_domain.py diff --git a/packages/python/plotly/plotly/validators/parcats/_hoverinfo.py b/plotly/validators/parcats/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_hoverinfo.py rename to plotly/validators/parcats/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/parcats/_hoveron.py b/plotly/validators/parcats/_hoveron.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_hoveron.py rename to plotly/validators/parcats/_hoveron.py diff --git a/packages/python/plotly/plotly/validators/parcats/_hovertemplate.py b/plotly/validators/parcats/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_hovertemplate.py rename to plotly/validators/parcats/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/parcats/_labelfont.py b/plotly/validators/parcats/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_labelfont.py rename to plotly/validators/parcats/_labelfont.py diff --git a/packages/python/plotly/plotly/validators/parcats/_legendgrouptitle.py b/plotly/validators/parcats/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_legendgrouptitle.py rename to plotly/validators/parcats/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/parcats/_legendwidth.py b/plotly/validators/parcats/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_legendwidth.py rename to plotly/validators/parcats/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/parcats/_line.py b/plotly/validators/parcats/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_line.py rename to plotly/validators/parcats/_line.py diff --git a/packages/python/plotly/plotly/validators/parcats/_meta.py b/plotly/validators/parcats/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_meta.py rename to plotly/validators/parcats/_meta.py diff --git a/packages/python/plotly/plotly/validators/parcats/_metasrc.py b/plotly/validators/parcats/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_metasrc.py rename to plotly/validators/parcats/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/parcats/_name.py b/plotly/validators/parcats/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_name.py rename to plotly/validators/parcats/_name.py diff --git a/packages/python/plotly/plotly/validators/parcats/_sortpaths.py b/plotly/validators/parcats/_sortpaths.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_sortpaths.py rename to plotly/validators/parcats/_sortpaths.py diff --git a/packages/python/plotly/plotly/validators/parcats/_stream.py b/plotly/validators/parcats/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_stream.py rename to plotly/validators/parcats/_stream.py diff --git a/packages/python/plotly/plotly/validators/parcats/_tickfont.py b/plotly/validators/parcats/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_tickfont.py rename to plotly/validators/parcats/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/parcats/_uid.py b/plotly/validators/parcats/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_uid.py rename to plotly/validators/parcats/_uid.py diff --git a/packages/python/plotly/plotly/validators/parcats/_uirevision.py b/plotly/validators/parcats/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_uirevision.py rename to plotly/validators/parcats/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/parcats/_visible.py b/plotly/validators/parcats/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/_visible.py rename to plotly/validators/parcats/_visible.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/__init__.py b/plotly/validators/parcats/dimension/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/__init__.py rename to plotly/validators/parcats/dimension/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_categoryarray.py b/plotly/validators/parcats/dimension/_categoryarray.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_categoryarray.py rename to plotly/validators/parcats/dimension/_categoryarray.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_categoryarraysrc.py b/plotly/validators/parcats/dimension/_categoryarraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_categoryarraysrc.py rename to plotly/validators/parcats/dimension/_categoryarraysrc.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_categoryorder.py b/plotly/validators/parcats/dimension/_categoryorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_categoryorder.py rename to plotly/validators/parcats/dimension/_categoryorder.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_displayindex.py b/plotly/validators/parcats/dimension/_displayindex.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_displayindex.py rename to plotly/validators/parcats/dimension/_displayindex.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_label.py b/plotly/validators/parcats/dimension/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_label.py rename to plotly/validators/parcats/dimension/_label.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_ticktext.py b/plotly/validators/parcats/dimension/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_ticktext.py rename to plotly/validators/parcats/dimension/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_ticktextsrc.py b/plotly/validators/parcats/dimension/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_ticktextsrc.py rename to plotly/validators/parcats/dimension/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_values.py b/plotly/validators/parcats/dimension/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_values.py rename to plotly/validators/parcats/dimension/_values.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_valuessrc.py b/plotly/validators/parcats/dimension/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_valuessrc.py rename to plotly/validators/parcats/dimension/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/parcats/dimension/_visible.py b/plotly/validators/parcats/dimension/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/dimension/_visible.py rename to plotly/validators/parcats/dimension/_visible.py diff --git a/packages/python/plotly/plotly/validators/parcats/domain/__init__.py b/plotly/validators/parcats/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/domain/__init__.py rename to plotly/validators/parcats/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/domain/_column.py b/plotly/validators/parcats/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/domain/_column.py rename to plotly/validators/parcats/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/parcats/domain/_row.py b/plotly/validators/parcats/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/domain/_row.py rename to plotly/validators/parcats/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/parcats/domain/_x.py b/plotly/validators/parcats/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/domain/_x.py rename to plotly/validators/parcats/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/parcats/domain/_y.py b/plotly/validators/parcats/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/domain/_y.py rename to plotly/validators/parcats/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/__init__.py b/plotly/validators/parcats/labelfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/__init__.py rename to plotly/validators/parcats/labelfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_color.py b/plotly/validators/parcats/labelfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_color.py rename to plotly/validators/parcats/labelfont/_color.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_family.py b/plotly/validators/parcats/labelfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_family.py rename to plotly/validators/parcats/labelfont/_family.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_lineposition.py b/plotly/validators/parcats/labelfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_lineposition.py rename to plotly/validators/parcats/labelfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_shadow.py b/plotly/validators/parcats/labelfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_shadow.py rename to plotly/validators/parcats/labelfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_size.py b/plotly/validators/parcats/labelfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_size.py rename to plotly/validators/parcats/labelfont/_size.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_style.py b/plotly/validators/parcats/labelfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_style.py rename to plotly/validators/parcats/labelfont/_style.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_textcase.py b/plotly/validators/parcats/labelfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_textcase.py rename to plotly/validators/parcats/labelfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_variant.py b/plotly/validators/parcats/labelfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_variant.py rename to plotly/validators/parcats/labelfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcats/labelfont/_weight.py b/plotly/validators/parcats/labelfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/labelfont/_weight.py rename to plotly/validators/parcats/labelfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/__init__.py b/plotly/validators/parcats/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/__init__.py rename to plotly/validators/parcats/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/_font.py b/plotly/validators/parcats/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/_font.py rename to plotly/validators/parcats/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/_text.py b/plotly/validators/parcats/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/_text.py rename to plotly/validators/parcats/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/__init__.py b/plotly/validators/parcats/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/__init__.py rename to plotly/validators/parcats/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_color.py b/plotly/validators/parcats/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_color.py rename to plotly/validators/parcats/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_family.py b/plotly/validators/parcats/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_family.py rename to plotly/validators/parcats/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_lineposition.py b/plotly/validators/parcats/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_lineposition.py rename to plotly/validators/parcats/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_shadow.py b/plotly/validators/parcats/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_shadow.py rename to plotly/validators/parcats/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_size.py b/plotly/validators/parcats/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_size.py rename to plotly/validators/parcats/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_style.py b/plotly/validators/parcats/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_style.py rename to plotly/validators/parcats/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_textcase.py b/plotly/validators/parcats/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_textcase.py rename to plotly/validators/parcats/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_variant.py b/plotly/validators/parcats/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_variant.py rename to plotly/validators/parcats/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_weight.py b/plotly/validators/parcats/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/legendgrouptitle/font/_weight.py rename to plotly/validators/parcats/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/__init__.py b/plotly/validators/parcats/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/__init__.py rename to plotly/validators/parcats/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_autocolorscale.py b/plotly/validators/parcats/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_autocolorscale.py rename to plotly/validators/parcats/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_cauto.py b/plotly/validators/parcats/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_cauto.py rename to plotly/validators/parcats/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_cmax.py b/plotly/validators/parcats/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_cmax.py rename to plotly/validators/parcats/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_cmid.py b/plotly/validators/parcats/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_cmid.py rename to plotly/validators/parcats/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_cmin.py b/plotly/validators/parcats/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_cmin.py rename to plotly/validators/parcats/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_color.py b/plotly/validators/parcats/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_color.py rename to plotly/validators/parcats/line/_color.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_coloraxis.py b/plotly/validators/parcats/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_coloraxis.py rename to plotly/validators/parcats/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_colorbar.py b/plotly/validators/parcats/line/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_colorbar.py rename to plotly/validators/parcats/line/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_colorscale.py b/plotly/validators/parcats/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_colorscale.py rename to plotly/validators/parcats/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_colorsrc.py b/plotly/validators/parcats/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_colorsrc.py rename to plotly/validators/parcats/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_hovertemplate.py b/plotly/validators/parcats/line/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_hovertemplate.py rename to plotly/validators/parcats/line/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_reversescale.py b/plotly/validators/parcats/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_reversescale.py rename to plotly/validators/parcats/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_shape.py b/plotly/validators/parcats/line/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_shape.py rename to plotly/validators/parcats/line/_shape.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/_showscale.py b/plotly/validators/parcats/line/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/_showscale.py rename to plotly/validators/parcats/line/_showscale.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/__init__.py b/plotly/validators/parcats/line/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/__init__.py rename to plotly/validators/parcats/line/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_bgcolor.py b/plotly/validators/parcats/line/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_bgcolor.py rename to plotly/validators/parcats/line/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_bordercolor.py b/plotly/validators/parcats/line/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_bordercolor.py rename to plotly/validators/parcats/line/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_borderwidth.py b/plotly/validators/parcats/line/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_borderwidth.py rename to plotly/validators/parcats/line/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_dtick.py b/plotly/validators/parcats/line/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_dtick.py rename to plotly/validators/parcats/line/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_exponentformat.py b/plotly/validators/parcats/line/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_exponentformat.py rename to plotly/validators/parcats/line/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_labelalias.py b/plotly/validators/parcats/line/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_labelalias.py rename to plotly/validators/parcats/line/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_len.py b/plotly/validators/parcats/line/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_len.py rename to plotly/validators/parcats/line/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_lenmode.py b/plotly/validators/parcats/line/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_lenmode.py rename to plotly/validators/parcats/line/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_minexponent.py b/plotly/validators/parcats/line/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_minexponent.py rename to plotly/validators/parcats/line/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_nticks.py b/plotly/validators/parcats/line/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_nticks.py rename to plotly/validators/parcats/line/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_orientation.py b/plotly/validators/parcats/line/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_orientation.py rename to plotly/validators/parcats/line/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_outlinecolor.py b/plotly/validators/parcats/line/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_outlinecolor.py rename to plotly/validators/parcats/line/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_outlinewidth.py b/plotly/validators/parcats/line/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_outlinewidth.py rename to plotly/validators/parcats/line/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_separatethousands.py b/plotly/validators/parcats/line/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_separatethousands.py rename to plotly/validators/parcats/line/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_showexponent.py b/plotly/validators/parcats/line/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_showexponent.py rename to plotly/validators/parcats/line/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_showticklabels.py b/plotly/validators/parcats/line/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_showticklabels.py rename to plotly/validators/parcats/line/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_showtickprefix.py b/plotly/validators/parcats/line/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_showtickprefix.py rename to plotly/validators/parcats/line/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_showticksuffix.py b/plotly/validators/parcats/line/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_showticksuffix.py rename to plotly/validators/parcats/line/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_thickness.py b/plotly/validators/parcats/line/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_thickness.py rename to plotly/validators/parcats/line/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_thicknessmode.py b/plotly/validators/parcats/line/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_thicknessmode.py rename to plotly/validators/parcats/line/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tick0.py b/plotly/validators/parcats/line/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tick0.py rename to plotly/validators/parcats/line/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickangle.py b/plotly/validators/parcats/line/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickangle.py rename to plotly/validators/parcats/line/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickcolor.py b/plotly/validators/parcats/line/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickcolor.py rename to plotly/validators/parcats/line/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickfont.py b/plotly/validators/parcats/line/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickfont.py rename to plotly/validators/parcats/line/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickformat.py b/plotly/validators/parcats/line/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickformat.py rename to plotly/validators/parcats/line/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickformatstopdefaults.py b/plotly/validators/parcats/line/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickformatstopdefaults.py rename to plotly/validators/parcats/line/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickformatstops.py b/plotly/validators/parcats/line/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickformatstops.py rename to plotly/validators/parcats/line/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticklabeloverflow.py b/plotly/validators/parcats/line/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticklabeloverflow.py rename to plotly/validators/parcats/line/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticklabelposition.py b/plotly/validators/parcats/line/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticklabelposition.py rename to plotly/validators/parcats/line/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticklabelstep.py b/plotly/validators/parcats/line/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticklabelstep.py rename to plotly/validators/parcats/line/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticklen.py b/plotly/validators/parcats/line/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticklen.py rename to plotly/validators/parcats/line/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickmode.py b/plotly/validators/parcats/line/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickmode.py rename to plotly/validators/parcats/line/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickprefix.py b/plotly/validators/parcats/line/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickprefix.py rename to plotly/validators/parcats/line/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticks.py b/plotly/validators/parcats/line/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticks.py rename to plotly/validators/parcats/line/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticksuffix.py b/plotly/validators/parcats/line/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticksuffix.py rename to plotly/validators/parcats/line/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticktext.py b/plotly/validators/parcats/line/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticktext.py rename to plotly/validators/parcats/line/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticktextsrc.py b/plotly/validators/parcats/line/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ticktextsrc.py rename to plotly/validators/parcats/line/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickvals.py b/plotly/validators/parcats/line/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickvals.py rename to plotly/validators/parcats/line/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickvalssrc.py b/plotly/validators/parcats/line/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickvalssrc.py rename to plotly/validators/parcats/line/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickwidth.py b/plotly/validators/parcats/line/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_tickwidth.py rename to plotly/validators/parcats/line/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_title.py b/plotly/validators/parcats/line/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_title.py rename to plotly/validators/parcats/line/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_x.py b/plotly/validators/parcats/line/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_x.py rename to plotly/validators/parcats/line/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_xanchor.py b/plotly/validators/parcats/line/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_xanchor.py rename to plotly/validators/parcats/line/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_xpad.py b/plotly/validators/parcats/line/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_xpad.py rename to plotly/validators/parcats/line/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_xref.py b/plotly/validators/parcats/line/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_xref.py rename to plotly/validators/parcats/line/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_y.py b/plotly/validators/parcats/line/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_y.py rename to plotly/validators/parcats/line/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_yanchor.py b/plotly/validators/parcats/line/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_yanchor.py rename to plotly/validators/parcats/line/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_ypad.py b/plotly/validators/parcats/line/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_ypad.py rename to plotly/validators/parcats/line/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/_yref.py b/plotly/validators/parcats/line/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/_yref.py rename to plotly/validators/parcats/line/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/__init__.py b/plotly/validators/parcats/line/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/__init__.py rename to plotly/validators/parcats/line/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_color.py b/plotly/validators/parcats/line/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_color.py rename to plotly/validators/parcats/line/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_family.py b/plotly/validators/parcats/line/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_family.py rename to plotly/validators/parcats/line/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_lineposition.py b/plotly/validators/parcats/line/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_lineposition.py rename to plotly/validators/parcats/line/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_shadow.py b/plotly/validators/parcats/line/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_shadow.py rename to plotly/validators/parcats/line/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_size.py b/plotly/validators/parcats/line/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_size.py rename to plotly/validators/parcats/line/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_style.py b/plotly/validators/parcats/line/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_style.py rename to plotly/validators/parcats/line/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_textcase.py b/plotly/validators/parcats/line/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_textcase.py rename to plotly/validators/parcats/line/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_variant.py b/plotly/validators/parcats/line/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_variant.py rename to plotly/validators/parcats/line/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_weight.py b/plotly/validators/parcats/line/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickfont/_weight.py rename to plotly/validators/parcats/line/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/__init__.py b/plotly/validators/parcats/line/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/__init__.py rename to plotly/validators/parcats/line/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/parcats/line/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/parcats/line/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_enabled.py b/plotly/validators/parcats/line/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_enabled.py rename to plotly/validators/parcats/line/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_name.py b/plotly/validators/parcats/line/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_name.py rename to plotly/validators/parcats/line/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/parcats/line/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/parcats/line/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_value.py b/plotly/validators/parcats/line/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/tickformatstop/_value.py rename to plotly/validators/parcats/line/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/__init__.py b/plotly/validators/parcats/line/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/__init__.py rename to plotly/validators/parcats/line/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/_font.py b/plotly/validators/parcats/line/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/_font.py rename to plotly/validators/parcats/line/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/_side.py b/plotly/validators/parcats/line/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/_side.py rename to plotly/validators/parcats/line/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/_text.py b/plotly/validators/parcats/line/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/_text.py rename to plotly/validators/parcats/line/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/__init__.py b/plotly/validators/parcats/line/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/__init__.py rename to plotly/validators/parcats/line/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_color.py b/plotly/validators/parcats/line/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_color.py rename to plotly/validators/parcats/line/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_family.py b/plotly/validators/parcats/line/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_family.py rename to plotly/validators/parcats/line/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_lineposition.py b/plotly/validators/parcats/line/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_lineposition.py rename to plotly/validators/parcats/line/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_shadow.py b/plotly/validators/parcats/line/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_shadow.py rename to plotly/validators/parcats/line/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_size.py b/plotly/validators/parcats/line/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_size.py rename to plotly/validators/parcats/line/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_style.py b/plotly/validators/parcats/line/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_style.py rename to plotly/validators/parcats/line/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_textcase.py b/plotly/validators/parcats/line/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_textcase.py rename to plotly/validators/parcats/line/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_variant.py b/plotly/validators/parcats/line/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_variant.py rename to plotly/validators/parcats/line/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_weight.py b/plotly/validators/parcats/line/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/line/colorbar/title/font/_weight.py rename to plotly/validators/parcats/line/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcats/stream/__init__.py b/plotly/validators/parcats/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/stream/__init__.py rename to plotly/validators/parcats/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/stream/_maxpoints.py b/plotly/validators/parcats/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/stream/_maxpoints.py rename to plotly/validators/parcats/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/parcats/stream/_token.py b/plotly/validators/parcats/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/stream/_token.py rename to plotly/validators/parcats/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/__init__.py b/plotly/validators/parcats/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/__init__.py rename to plotly/validators/parcats/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_color.py b/plotly/validators/parcats/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_color.py rename to plotly/validators/parcats/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_family.py b/plotly/validators/parcats/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_family.py rename to plotly/validators/parcats/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_lineposition.py b/plotly/validators/parcats/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_lineposition.py rename to plotly/validators/parcats/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_shadow.py b/plotly/validators/parcats/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_shadow.py rename to plotly/validators/parcats/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_size.py b/plotly/validators/parcats/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_size.py rename to plotly/validators/parcats/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_style.py b/plotly/validators/parcats/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_style.py rename to plotly/validators/parcats/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_textcase.py b/plotly/validators/parcats/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_textcase.py rename to plotly/validators/parcats/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_variant.py b/plotly/validators/parcats/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_variant.py rename to plotly/validators/parcats/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcats/tickfont/_weight.py b/plotly/validators/parcats/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcats/tickfont/_weight.py rename to plotly/validators/parcats/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcoords/__init__.py b/plotly/validators/parcoords/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/__init__.py rename to plotly/validators/parcoords/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_customdata.py b/plotly/validators/parcoords/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_customdata.py rename to plotly/validators/parcoords/_customdata.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_customdatasrc.py b/plotly/validators/parcoords/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_customdatasrc.py rename to plotly/validators/parcoords/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_dimensiondefaults.py b/plotly/validators/parcoords/_dimensiondefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_dimensiondefaults.py rename to plotly/validators/parcoords/_dimensiondefaults.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_dimensions.py b/plotly/validators/parcoords/_dimensions.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_dimensions.py rename to plotly/validators/parcoords/_dimensions.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_domain.py b/plotly/validators/parcoords/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_domain.py rename to plotly/validators/parcoords/_domain.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_ids.py b/plotly/validators/parcoords/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_ids.py rename to plotly/validators/parcoords/_ids.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_idssrc.py b/plotly/validators/parcoords/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_idssrc.py rename to plotly/validators/parcoords/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_labelangle.py b/plotly/validators/parcoords/_labelangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_labelangle.py rename to plotly/validators/parcoords/_labelangle.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_labelfont.py b/plotly/validators/parcoords/_labelfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_labelfont.py rename to plotly/validators/parcoords/_labelfont.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_labelside.py b/plotly/validators/parcoords/_labelside.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_labelside.py rename to plotly/validators/parcoords/_labelside.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_legend.py b/plotly/validators/parcoords/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_legend.py rename to plotly/validators/parcoords/_legend.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_legendgrouptitle.py b/plotly/validators/parcoords/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_legendgrouptitle.py rename to plotly/validators/parcoords/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_legendrank.py b/plotly/validators/parcoords/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_legendrank.py rename to plotly/validators/parcoords/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_legendwidth.py b/plotly/validators/parcoords/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_legendwidth.py rename to plotly/validators/parcoords/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_line.py b/plotly/validators/parcoords/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_line.py rename to plotly/validators/parcoords/_line.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_meta.py b/plotly/validators/parcoords/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_meta.py rename to plotly/validators/parcoords/_meta.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_metasrc.py b/plotly/validators/parcoords/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_metasrc.py rename to plotly/validators/parcoords/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_name.py b/plotly/validators/parcoords/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_name.py rename to plotly/validators/parcoords/_name.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_rangefont.py b/plotly/validators/parcoords/_rangefont.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_rangefont.py rename to plotly/validators/parcoords/_rangefont.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_stream.py b/plotly/validators/parcoords/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_stream.py rename to plotly/validators/parcoords/_stream.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_tickfont.py b/plotly/validators/parcoords/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_tickfont.py rename to plotly/validators/parcoords/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_uid.py b/plotly/validators/parcoords/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_uid.py rename to plotly/validators/parcoords/_uid.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_uirevision.py b/plotly/validators/parcoords/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_uirevision.py rename to plotly/validators/parcoords/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_unselected.py b/plotly/validators/parcoords/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_unselected.py rename to plotly/validators/parcoords/_unselected.py diff --git a/packages/python/plotly/plotly/validators/parcoords/_visible.py b/plotly/validators/parcoords/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/_visible.py rename to plotly/validators/parcoords/_visible.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/__init__.py b/plotly/validators/parcoords/dimension/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/__init__.py rename to plotly/validators/parcoords/dimension/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_constraintrange.py b/plotly/validators/parcoords/dimension/_constraintrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_constraintrange.py rename to plotly/validators/parcoords/dimension/_constraintrange.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_label.py b/plotly/validators/parcoords/dimension/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_label.py rename to plotly/validators/parcoords/dimension/_label.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_multiselect.py b/plotly/validators/parcoords/dimension/_multiselect.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_multiselect.py rename to plotly/validators/parcoords/dimension/_multiselect.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_name.py b/plotly/validators/parcoords/dimension/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_name.py rename to plotly/validators/parcoords/dimension/_name.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_range.py b/plotly/validators/parcoords/dimension/_range.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_range.py rename to plotly/validators/parcoords/dimension/_range.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_templateitemname.py b/plotly/validators/parcoords/dimension/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_templateitemname.py rename to plotly/validators/parcoords/dimension/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_tickformat.py b/plotly/validators/parcoords/dimension/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_tickformat.py rename to plotly/validators/parcoords/dimension/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_ticktext.py b/plotly/validators/parcoords/dimension/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_ticktext.py rename to plotly/validators/parcoords/dimension/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_ticktextsrc.py b/plotly/validators/parcoords/dimension/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_ticktextsrc.py rename to plotly/validators/parcoords/dimension/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_tickvals.py b/plotly/validators/parcoords/dimension/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_tickvals.py rename to plotly/validators/parcoords/dimension/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_tickvalssrc.py b/plotly/validators/parcoords/dimension/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_tickvalssrc.py rename to plotly/validators/parcoords/dimension/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_values.py b/plotly/validators/parcoords/dimension/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_values.py rename to plotly/validators/parcoords/dimension/_values.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_valuessrc.py b/plotly/validators/parcoords/dimension/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_valuessrc.py rename to plotly/validators/parcoords/dimension/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/dimension/_visible.py b/plotly/validators/parcoords/dimension/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/dimension/_visible.py rename to plotly/validators/parcoords/dimension/_visible.py diff --git a/packages/python/plotly/plotly/validators/parcoords/domain/__init__.py b/plotly/validators/parcoords/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/domain/__init__.py rename to plotly/validators/parcoords/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/domain/_column.py b/plotly/validators/parcoords/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/domain/_column.py rename to plotly/validators/parcoords/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/parcoords/domain/_row.py b/plotly/validators/parcoords/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/domain/_row.py rename to plotly/validators/parcoords/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/parcoords/domain/_x.py b/plotly/validators/parcoords/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/domain/_x.py rename to plotly/validators/parcoords/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/parcoords/domain/_y.py b/plotly/validators/parcoords/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/domain/_y.py rename to plotly/validators/parcoords/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/__init__.py b/plotly/validators/parcoords/labelfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/__init__.py rename to plotly/validators/parcoords/labelfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_color.py b/plotly/validators/parcoords/labelfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_color.py rename to plotly/validators/parcoords/labelfont/_color.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_family.py b/plotly/validators/parcoords/labelfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_family.py rename to plotly/validators/parcoords/labelfont/_family.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_lineposition.py b/plotly/validators/parcoords/labelfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_lineposition.py rename to plotly/validators/parcoords/labelfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_shadow.py b/plotly/validators/parcoords/labelfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_shadow.py rename to plotly/validators/parcoords/labelfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_size.py b/plotly/validators/parcoords/labelfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_size.py rename to plotly/validators/parcoords/labelfont/_size.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_style.py b/plotly/validators/parcoords/labelfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_style.py rename to plotly/validators/parcoords/labelfont/_style.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_textcase.py b/plotly/validators/parcoords/labelfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_textcase.py rename to plotly/validators/parcoords/labelfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_variant.py b/plotly/validators/parcoords/labelfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_variant.py rename to plotly/validators/parcoords/labelfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcoords/labelfont/_weight.py b/plotly/validators/parcoords/labelfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/labelfont/_weight.py rename to plotly/validators/parcoords/labelfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/__init__.py b/plotly/validators/parcoords/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/__init__.py rename to plotly/validators/parcoords/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/_font.py b/plotly/validators/parcoords/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/_font.py rename to plotly/validators/parcoords/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/_text.py b/plotly/validators/parcoords/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/_text.py rename to plotly/validators/parcoords/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/__init__.py b/plotly/validators/parcoords/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/__init__.py rename to plotly/validators/parcoords/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_color.py b/plotly/validators/parcoords/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_color.py rename to plotly/validators/parcoords/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_family.py b/plotly/validators/parcoords/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_family.py rename to plotly/validators/parcoords/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_lineposition.py b/plotly/validators/parcoords/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_lineposition.py rename to plotly/validators/parcoords/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_shadow.py b/plotly/validators/parcoords/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_shadow.py rename to plotly/validators/parcoords/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_size.py b/plotly/validators/parcoords/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_size.py rename to plotly/validators/parcoords/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_style.py b/plotly/validators/parcoords/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_style.py rename to plotly/validators/parcoords/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_textcase.py b/plotly/validators/parcoords/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_textcase.py rename to plotly/validators/parcoords/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_variant.py b/plotly/validators/parcoords/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_variant.py rename to plotly/validators/parcoords/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_weight.py b/plotly/validators/parcoords/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/legendgrouptitle/font/_weight.py rename to plotly/validators/parcoords/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/__init__.py b/plotly/validators/parcoords/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/__init__.py rename to plotly/validators/parcoords/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_autocolorscale.py b/plotly/validators/parcoords/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_autocolorscale.py rename to plotly/validators/parcoords/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_cauto.py b/plotly/validators/parcoords/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_cauto.py rename to plotly/validators/parcoords/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_cmax.py b/plotly/validators/parcoords/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_cmax.py rename to plotly/validators/parcoords/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_cmid.py b/plotly/validators/parcoords/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_cmid.py rename to plotly/validators/parcoords/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_cmin.py b/plotly/validators/parcoords/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_cmin.py rename to plotly/validators/parcoords/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_color.py b/plotly/validators/parcoords/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_color.py rename to plotly/validators/parcoords/line/_color.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_coloraxis.py b/plotly/validators/parcoords/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_coloraxis.py rename to plotly/validators/parcoords/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_colorbar.py b/plotly/validators/parcoords/line/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_colorbar.py rename to plotly/validators/parcoords/line/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_colorscale.py b/plotly/validators/parcoords/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_colorscale.py rename to plotly/validators/parcoords/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_colorsrc.py b/plotly/validators/parcoords/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_colorsrc.py rename to plotly/validators/parcoords/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_reversescale.py b/plotly/validators/parcoords/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_reversescale.py rename to plotly/validators/parcoords/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/_showscale.py b/plotly/validators/parcoords/line/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/_showscale.py rename to plotly/validators/parcoords/line/_showscale.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/__init__.py b/plotly/validators/parcoords/line/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/__init__.py rename to plotly/validators/parcoords/line/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_bgcolor.py b/plotly/validators/parcoords/line/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_bgcolor.py rename to plotly/validators/parcoords/line/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_bordercolor.py b/plotly/validators/parcoords/line/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_bordercolor.py rename to plotly/validators/parcoords/line/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_borderwidth.py b/plotly/validators/parcoords/line/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_borderwidth.py rename to plotly/validators/parcoords/line/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_dtick.py b/plotly/validators/parcoords/line/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_dtick.py rename to plotly/validators/parcoords/line/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_exponentformat.py b/plotly/validators/parcoords/line/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_exponentformat.py rename to plotly/validators/parcoords/line/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_labelalias.py b/plotly/validators/parcoords/line/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_labelalias.py rename to plotly/validators/parcoords/line/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_len.py b/plotly/validators/parcoords/line/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_len.py rename to plotly/validators/parcoords/line/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_lenmode.py b/plotly/validators/parcoords/line/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_lenmode.py rename to plotly/validators/parcoords/line/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_minexponent.py b/plotly/validators/parcoords/line/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_minexponent.py rename to plotly/validators/parcoords/line/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_nticks.py b/plotly/validators/parcoords/line/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_nticks.py rename to plotly/validators/parcoords/line/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_orientation.py b/plotly/validators/parcoords/line/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_orientation.py rename to plotly/validators/parcoords/line/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_outlinecolor.py b/plotly/validators/parcoords/line/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_outlinecolor.py rename to plotly/validators/parcoords/line/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_outlinewidth.py b/plotly/validators/parcoords/line/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_outlinewidth.py rename to plotly/validators/parcoords/line/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_separatethousands.py b/plotly/validators/parcoords/line/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_separatethousands.py rename to plotly/validators/parcoords/line/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_showexponent.py b/plotly/validators/parcoords/line/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_showexponent.py rename to plotly/validators/parcoords/line/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_showticklabels.py b/plotly/validators/parcoords/line/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_showticklabels.py rename to plotly/validators/parcoords/line/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_showtickprefix.py b/plotly/validators/parcoords/line/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_showtickprefix.py rename to plotly/validators/parcoords/line/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_showticksuffix.py b/plotly/validators/parcoords/line/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_showticksuffix.py rename to plotly/validators/parcoords/line/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_thickness.py b/plotly/validators/parcoords/line/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_thickness.py rename to plotly/validators/parcoords/line/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_thicknessmode.py b/plotly/validators/parcoords/line/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_thicknessmode.py rename to plotly/validators/parcoords/line/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tick0.py b/plotly/validators/parcoords/line/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tick0.py rename to plotly/validators/parcoords/line/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickangle.py b/plotly/validators/parcoords/line/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickangle.py rename to plotly/validators/parcoords/line/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickcolor.py b/plotly/validators/parcoords/line/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickcolor.py rename to plotly/validators/parcoords/line/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickfont.py b/plotly/validators/parcoords/line/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickfont.py rename to plotly/validators/parcoords/line/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickformat.py b/plotly/validators/parcoords/line/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickformat.py rename to plotly/validators/parcoords/line/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickformatstopdefaults.py b/plotly/validators/parcoords/line/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickformatstopdefaults.py rename to plotly/validators/parcoords/line/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickformatstops.py b/plotly/validators/parcoords/line/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickformatstops.py rename to plotly/validators/parcoords/line/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticklabeloverflow.py b/plotly/validators/parcoords/line/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticklabeloverflow.py rename to plotly/validators/parcoords/line/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticklabelposition.py b/plotly/validators/parcoords/line/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticklabelposition.py rename to plotly/validators/parcoords/line/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticklabelstep.py b/plotly/validators/parcoords/line/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticklabelstep.py rename to plotly/validators/parcoords/line/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticklen.py b/plotly/validators/parcoords/line/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticklen.py rename to plotly/validators/parcoords/line/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickmode.py b/plotly/validators/parcoords/line/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickmode.py rename to plotly/validators/parcoords/line/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickprefix.py b/plotly/validators/parcoords/line/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickprefix.py rename to plotly/validators/parcoords/line/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticks.py b/plotly/validators/parcoords/line/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticks.py rename to plotly/validators/parcoords/line/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticksuffix.py b/plotly/validators/parcoords/line/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticksuffix.py rename to plotly/validators/parcoords/line/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticktext.py b/plotly/validators/parcoords/line/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticktext.py rename to plotly/validators/parcoords/line/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticktextsrc.py b/plotly/validators/parcoords/line/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ticktextsrc.py rename to plotly/validators/parcoords/line/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickvals.py b/plotly/validators/parcoords/line/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickvals.py rename to plotly/validators/parcoords/line/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickvalssrc.py b/plotly/validators/parcoords/line/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickvalssrc.py rename to plotly/validators/parcoords/line/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickwidth.py b/plotly/validators/parcoords/line/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_tickwidth.py rename to plotly/validators/parcoords/line/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_title.py b/plotly/validators/parcoords/line/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_title.py rename to plotly/validators/parcoords/line/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_x.py b/plotly/validators/parcoords/line/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_x.py rename to plotly/validators/parcoords/line/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_xanchor.py b/plotly/validators/parcoords/line/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_xanchor.py rename to plotly/validators/parcoords/line/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_xpad.py b/plotly/validators/parcoords/line/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_xpad.py rename to plotly/validators/parcoords/line/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_xref.py b/plotly/validators/parcoords/line/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_xref.py rename to plotly/validators/parcoords/line/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_y.py b/plotly/validators/parcoords/line/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_y.py rename to plotly/validators/parcoords/line/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_yanchor.py b/plotly/validators/parcoords/line/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_yanchor.py rename to plotly/validators/parcoords/line/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ypad.py b/plotly/validators/parcoords/line/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_ypad.py rename to plotly/validators/parcoords/line/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/_yref.py b/plotly/validators/parcoords/line/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/_yref.py rename to plotly/validators/parcoords/line/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/__init__.py b/plotly/validators/parcoords/line/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/__init__.py rename to plotly/validators/parcoords/line/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_color.py b/plotly/validators/parcoords/line/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_color.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_family.py b/plotly/validators/parcoords/line/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_family.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_lineposition.py b/plotly/validators/parcoords/line/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_lineposition.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_shadow.py b/plotly/validators/parcoords/line/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_shadow.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_size.py b/plotly/validators/parcoords/line/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_size.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_style.py b/plotly/validators/parcoords/line/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_style.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_textcase.py b/plotly/validators/parcoords/line/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_textcase.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_variant.py b/plotly/validators/parcoords/line/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_variant.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_weight.py b/plotly/validators/parcoords/line/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickfont/_weight.py rename to plotly/validators/parcoords/line/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/__init__.py b/plotly/validators/parcoords/line/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/__init__.py rename to plotly/validators/parcoords/line/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/parcoords/line/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/parcoords/line/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_enabled.py b/plotly/validators/parcoords/line/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_enabled.py rename to plotly/validators/parcoords/line/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_name.py b/plotly/validators/parcoords/line/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_name.py rename to plotly/validators/parcoords/line/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/parcoords/line/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/parcoords/line/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_value.py b/plotly/validators/parcoords/line/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/tickformatstop/_value.py rename to plotly/validators/parcoords/line/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/__init__.py b/plotly/validators/parcoords/line/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/__init__.py rename to plotly/validators/parcoords/line/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/_font.py b/plotly/validators/parcoords/line/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/_font.py rename to plotly/validators/parcoords/line/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/_side.py b/plotly/validators/parcoords/line/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/_side.py rename to plotly/validators/parcoords/line/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/_text.py b/plotly/validators/parcoords/line/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/_text.py rename to plotly/validators/parcoords/line/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/__init__.py b/plotly/validators/parcoords/line/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/__init__.py rename to plotly/validators/parcoords/line/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_color.py b/plotly/validators/parcoords/line/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_color.py rename to plotly/validators/parcoords/line/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_family.py b/plotly/validators/parcoords/line/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_family.py rename to plotly/validators/parcoords/line/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_lineposition.py b/plotly/validators/parcoords/line/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_lineposition.py rename to plotly/validators/parcoords/line/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_shadow.py b/plotly/validators/parcoords/line/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_shadow.py rename to plotly/validators/parcoords/line/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_size.py b/plotly/validators/parcoords/line/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_size.py rename to plotly/validators/parcoords/line/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_style.py b/plotly/validators/parcoords/line/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_style.py rename to plotly/validators/parcoords/line/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_textcase.py b/plotly/validators/parcoords/line/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_textcase.py rename to plotly/validators/parcoords/line/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_variant.py b/plotly/validators/parcoords/line/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_variant.py rename to plotly/validators/parcoords/line/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_weight.py b/plotly/validators/parcoords/line/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/line/colorbar/title/font/_weight.py rename to plotly/validators/parcoords/line/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/__init__.py b/plotly/validators/parcoords/rangefont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/__init__.py rename to plotly/validators/parcoords/rangefont/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_color.py b/plotly/validators/parcoords/rangefont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_color.py rename to plotly/validators/parcoords/rangefont/_color.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_family.py b/plotly/validators/parcoords/rangefont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_family.py rename to plotly/validators/parcoords/rangefont/_family.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_lineposition.py b/plotly/validators/parcoords/rangefont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_lineposition.py rename to plotly/validators/parcoords/rangefont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_shadow.py b/plotly/validators/parcoords/rangefont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_shadow.py rename to plotly/validators/parcoords/rangefont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_size.py b/plotly/validators/parcoords/rangefont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_size.py rename to plotly/validators/parcoords/rangefont/_size.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_style.py b/plotly/validators/parcoords/rangefont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_style.py rename to plotly/validators/parcoords/rangefont/_style.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_textcase.py b/plotly/validators/parcoords/rangefont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_textcase.py rename to plotly/validators/parcoords/rangefont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_variant.py b/plotly/validators/parcoords/rangefont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_variant.py rename to plotly/validators/parcoords/rangefont/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcoords/rangefont/_weight.py b/plotly/validators/parcoords/rangefont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/rangefont/_weight.py rename to plotly/validators/parcoords/rangefont/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcoords/stream/__init__.py b/plotly/validators/parcoords/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/stream/__init__.py rename to plotly/validators/parcoords/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/stream/_maxpoints.py b/plotly/validators/parcoords/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/stream/_maxpoints.py rename to plotly/validators/parcoords/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/parcoords/stream/_token.py b/plotly/validators/parcoords/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/stream/_token.py rename to plotly/validators/parcoords/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/__init__.py b/plotly/validators/parcoords/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/__init__.py rename to plotly/validators/parcoords/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_color.py b/plotly/validators/parcoords/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_color.py rename to plotly/validators/parcoords/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_family.py b/plotly/validators/parcoords/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_family.py rename to plotly/validators/parcoords/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_lineposition.py b/plotly/validators/parcoords/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_lineposition.py rename to plotly/validators/parcoords/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_shadow.py b/plotly/validators/parcoords/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_shadow.py rename to plotly/validators/parcoords/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_size.py b/plotly/validators/parcoords/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_size.py rename to plotly/validators/parcoords/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_style.py b/plotly/validators/parcoords/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_style.py rename to plotly/validators/parcoords/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_textcase.py b/plotly/validators/parcoords/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_textcase.py rename to plotly/validators/parcoords/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_variant.py b/plotly/validators/parcoords/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_variant.py rename to plotly/validators/parcoords/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/parcoords/tickfont/_weight.py b/plotly/validators/parcoords/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/tickfont/_weight.py rename to plotly/validators/parcoords/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/parcoords/unselected/__init__.py b/plotly/validators/parcoords/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/unselected/__init__.py rename to plotly/validators/parcoords/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/unselected/_line.py b/plotly/validators/parcoords/unselected/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/unselected/_line.py rename to plotly/validators/parcoords/unselected/_line.py diff --git a/packages/python/plotly/plotly/validators/parcoords/unselected/line/__init__.py b/plotly/validators/parcoords/unselected/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/unselected/line/__init__.py rename to plotly/validators/parcoords/unselected/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/parcoords/unselected/line/_color.py b/plotly/validators/parcoords/unselected/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/unselected/line/_color.py rename to plotly/validators/parcoords/unselected/line/_color.py diff --git a/packages/python/plotly/plotly/validators/parcoords/unselected/line/_opacity.py b/plotly/validators/parcoords/unselected/line/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/parcoords/unselected/line/_opacity.py rename to plotly/validators/parcoords/unselected/line/_opacity.py diff --git a/packages/python/plotly/plotly/validators/pie/__init__.py b/plotly/validators/pie/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/__init__.py rename to plotly/validators/pie/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/_automargin.py b/plotly/validators/pie/_automargin.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_automargin.py rename to plotly/validators/pie/_automargin.py diff --git a/packages/python/plotly/plotly/validators/pie/_customdata.py b/plotly/validators/pie/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_customdata.py rename to plotly/validators/pie/_customdata.py diff --git a/packages/python/plotly/plotly/validators/pie/_customdatasrc.py b/plotly/validators/pie/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_customdatasrc.py rename to plotly/validators/pie/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_direction.py b/plotly/validators/pie/_direction.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_direction.py rename to plotly/validators/pie/_direction.py diff --git a/packages/python/plotly/plotly/validators/pie/_dlabel.py b/plotly/validators/pie/_dlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_dlabel.py rename to plotly/validators/pie/_dlabel.py diff --git a/packages/python/plotly/plotly/validators/pie/_domain.py b/plotly/validators/pie/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_domain.py rename to plotly/validators/pie/_domain.py diff --git a/packages/python/plotly/plotly/validators/pie/_hole.py b/plotly/validators/pie/_hole.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_hole.py rename to plotly/validators/pie/_hole.py diff --git a/packages/python/plotly/plotly/validators/pie/_hoverinfo.py b/plotly/validators/pie/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_hoverinfo.py rename to plotly/validators/pie/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/pie/_hoverinfosrc.py b/plotly/validators/pie/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_hoverinfosrc.py rename to plotly/validators/pie/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_hoverlabel.py b/plotly/validators/pie/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_hoverlabel.py rename to plotly/validators/pie/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/pie/_hovertemplate.py b/plotly/validators/pie/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_hovertemplate.py rename to plotly/validators/pie/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/pie/_hovertemplatesrc.py b/plotly/validators/pie/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_hovertemplatesrc.py rename to plotly/validators/pie/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_hovertext.py b/plotly/validators/pie/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_hovertext.py rename to plotly/validators/pie/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/pie/_hovertextsrc.py b/plotly/validators/pie/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_hovertextsrc.py rename to plotly/validators/pie/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_ids.py b/plotly/validators/pie/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_ids.py rename to plotly/validators/pie/_ids.py diff --git a/packages/python/plotly/plotly/validators/pie/_idssrc.py b/plotly/validators/pie/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_idssrc.py rename to plotly/validators/pie/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_insidetextfont.py b/plotly/validators/pie/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_insidetextfont.py rename to plotly/validators/pie/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/pie/_insidetextorientation.py b/plotly/validators/pie/_insidetextorientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_insidetextorientation.py rename to plotly/validators/pie/_insidetextorientation.py diff --git a/packages/python/plotly/plotly/validators/pie/_label0.py b/plotly/validators/pie/_label0.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_label0.py rename to plotly/validators/pie/_label0.py diff --git a/packages/python/plotly/plotly/validators/pie/_labels.py b/plotly/validators/pie/_labels.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_labels.py rename to plotly/validators/pie/_labels.py diff --git a/packages/python/plotly/plotly/validators/pie/_labelssrc.py b/plotly/validators/pie/_labelssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_labelssrc.py rename to plotly/validators/pie/_labelssrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_legend.py b/plotly/validators/pie/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_legend.py rename to plotly/validators/pie/_legend.py diff --git a/packages/python/plotly/plotly/validators/pie/_legendgroup.py b/plotly/validators/pie/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_legendgroup.py rename to plotly/validators/pie/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/pie/_legendgrouptitle.py b/plotly/validators/pie/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_legendgrouptitle.py rename to plotly/validators/pie/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/pie/_legendrank.py b/plotly/validators/pie/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_legendrank.py rename to plotly/validators/pie/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/pie/_legendwidth.py b/plotly/validators/pie/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_legendwidth.py rename to plotly/validators/pie/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/pie/_marker.py b/plotly/validators/pie/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_marker.py rename to plotly/validators/pie/_marker.py diff --git a/packages/python/plotly/plotly/validators/pie/_meta.py b/plotly/validators/pie/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_meta.py rename to plotly/validators/pie/_meta.py diff --git a/packages/python/plotly/plotly/validators/pie/_metasrc.py b/plotly/validators/pie/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_metasrc.py rename to plotly/validators/pie/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_name.py b/plotly/validators/pie/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_name.py rename to plotly/validators/pie/_name.py diff --git a/packages/python/plotly/plotly/validators/pie/_opacity.py b/plotly/validators/pie/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_opacity.py rename to plotly/validators/pie/_opacity.py diff --git a/packages/python/plotly/plotly/validators/pie/_outsidetextfont.py b/plotly/validators/pie/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_outsidetextfont.py rename to plotly/validators/pie/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/validators/pie/_pull.py b/plotly/validators/pie/_pull.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_pull.py rename to plotly/validators/pie/_pull.py diff --git a/packages/python/plotly/plotly/validators/pie/_pullsrc.py b/plotly/validators/pie/_pullsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_pullsrc.py rename to plotly/validators/pie/_pullsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_rotation.py b/plotly/validators/pie/_rotation.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_rotation.py rename to plotly/validators/pie/_rotation.py diff --git a/packages/python/plotly/plotly/validators/pie/_scalegroup.py b/plotly/validators/pie/_scalegroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_scalegroup.py rename to plotly/validators/pie/_scalegroup.py diff --git a/packages/python/plotly/plotly/validators/pie/_showlegend.py b/plotly/validators/pie/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_showlegend.py rename to plotly/validators/pie/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/pie/_sort.py b/plotly/validators/pie/_sort.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_sort.py rename to plotly/validators/pie/_sort.py diff --git a/packages/python/plotly/plotly/validators/pie/_stream.py b/plotly/validators/pie/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_stream.py rename to plotly/validators/pie/_stream.py diff --git a/packages/python/plotly/plotly/validators/pie/_text.py b/plotly/validators/pie/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_text.py rename to plotly/validators/pie/_text.py diff --git a/packages/python/plotly/plotly/validators/pie/_textfont.py b/plotly/validators/pie/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_textfont.py rename to plotly/validators/pie/_textfont.py diff --git a/packages/python/plotly/plotly/validators/pie/_textinfo.py b/plotly/validators/pie/_textinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_textinfo.py rename to plotly/validators/pie/_textinfo.py diff --git a/packages/python/plotly/plotly/validators/pie/_textposition.py b/plotly/validators/pie/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_textposition.py rename to plotly/validators/pie/_textposition.py diff --git a/packages/python/plotly/plotly/validators/pie/_textpositionsrc.py b/plotly/validators/pie/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_textpositionsrc.py rename to plotly/validators/pie/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_textsrc.py b/plotly/validators/pie/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_textsrc.py rename to plotly/validators/pie/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_texttemplate.py b/plotly/validators/pie/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_texttemplate.py rename to plotly/validators/pie/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/pie/_texttemplatesrc.py b/plotly/validators/pie/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_texttemplatesrc.py rename to plotly/validators/pie/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_title.py b/plotly/validators/pie/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_title.py rename to plotly/validators/pie/_title.py diff --git a/packages/python/plotly/plotly/validators/pie/_uid.py b/plotly/validators/pie/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_uid.py rename to plotly/validators/pie/_uid.py diff --git a/packages/python/plotly/plotly/validators/pie/_uirevision.py b/plotly/validators/pie/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_uirevision.py rename to plotly/validators/pie/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/pie/_values.py b/plotly/validators/pie/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_values.py rename to plotly/validators/pie/_values.py diff --git a/packages/python/plotly/plotly/validators/pie/_valuessrc.py b/plotly/validators/pie/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_valuessrc.py rename to plotly/validators/pie/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/pie/_visible.py b/plotly/validators/pie/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/_visible.py rename to plotly/validators/pie/_visible.py diff --git a/packages/python/plotly/plotly/validators/pie/domain/__init__.py b/plotly/validators/pie/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/domain/__init__.py rename to plotly/validators/pie/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/domain/_column.py b/plotly/validators/pie/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/domain/_column.py rename to plotly/validators/pie/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/pie/domain/_row.py b/plotly/validators/pie/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/domain/_row.py rename to plotly/validators/pie/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/pie/domain/_x.py b/plotly/validators/pie/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/domain/_x.py rename to plotly/validators/pie/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/pie/domain/_y.py b/plotly/validators/pie/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/domain/_y.py rename to plotly/validators/pie/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/__init__.py b/plotly/validators/pie/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/__init__.py rename to plotly/validators/pie/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_align.py b/plotly/validators/pie/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_align.py rename to plotly/validators/pie/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_alignsrc.py b/plotly/validators/pie/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_alignsrc.py rename to plotly/validators/pie/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_bgcolor.py b/plotly/validators/pie/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_bgcolor.py rename to plotly/validators/pie/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_bgcolorsrc.py b/plotly/validators/pie/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_bgcolorsrc.py rename to plotly/validators/pie/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_bordercolor.py b/plotly/validators/pie/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_bordercolor.py rename to plotly/validators/pie/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_bordercolorsrc.py b/plotly/validators/pie/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_bordercolorsrc.py rename to plotly/validators/pie/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_font.py b/plotly/validators/pie/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_font.py rename to plotly/validators/pie/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_namelength.py b/plotly/validators/pie/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_namelength.py rename to plotly/validators/pie/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/_namelengthsrc.py b/plotly/validators/pie/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/_namelengthsrc.py rename to plotly/validators/pie/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/__init__.py b/plotly/validators/pie/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/__init__.py rename to plotly/validators/pie/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_color.py b/plotly/validators/pie/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_color.py rename to plotly/validators/pie/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_colorsrc.py b/plotly/validators/pie/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_colorsrc.py rename to plotly/validators/pie/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_family.py b/plotly/validators/pie/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_family.py rename to plotly/validators/pie/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_familysrc.py b/plotly/validators/pie/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_familysrc.py rename to plotly/validators/pie/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_lineposition.py b/plotly/validators/pie/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_lineposition.py rename to plotly/validators/pie/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_linepositionsrc.py b/plotly/validators/pie/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/pie/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_shadow.py b/plotly/validators/pie/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_shadow.py rename to plotly/validators/pie/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_shadowsrc.py b/plotly/validators/pie/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_shadowsrc.py rename to plotly/validators/pie/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_size.py b/plotly/validators/pie/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_size.py rename to plotly/validators/pie/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_sizesrc.py b/plotly/validators/pie/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_sizesrc.py rename to plotly/validators/pie/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_style.py b/plotly/validators/pie/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_style.py rename to plotly/validators/pie/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_stylesrc.py b/plotly/validators/pie/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_stylesrc.py rename to plotly/validators/pie/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_textcase.py b/plotly/validators/pie/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_textcase.py rename to plotly/validators/pie/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_textcasesrc.py b/plotly/validators/pie/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_textcasesrc.py rename to plotly/validators/pie/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_variant.py b/plotly/validators/pie/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_variant.py rename to plotly/validators/pie/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_variantsrc.py b/plotly/validators/pie/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_variantsrc.py rename to plotly/validators/pie/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_weight.py b/plotly/validators/pie/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_weight.py rename to plotly/validators/pie/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/pie/hoverlabel/font/_weightsrc.py b/plotly/validators/pie/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/hoverlabel/font/_weightsrc.py rename to plotly/validators/pie/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/__init__.py b/plotly/validators/pie/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/__init__.py rename to plotly/validators/pie/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_color.py b/plotly/validators/pie/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_color.py rename to plotly/validators/pie/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_colorsrc.py b/plotly/validators/pie/insidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_colorsrc.py rename to plotly/validators/pie/insidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_family.py b/plotly/validators/pie/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_family.py rename to plotly/validators/pie/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_familysrc.py b/plotly/validators/pie/insidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_familysrc.py rename to plotly/validators/pie/insidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_lineposition.py b/plotly/validators/pie/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_lineposition.py rename to plotly/validators/pie/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_linepositionsrc.py b/plotly/validators/pie/insidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_linepositionsrc.py rename to plotly/validators/pie/insidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_shadow.py b/plotly/validators/pie/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_shadow.py rename to plotly/validators/pie/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_shadowsrc.py b/plotly/validators/pie/insidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_shadowsrc.py rename to plotly/validators/pie/insidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_size.py b/plotly/validators/pie/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_size.py rename to plotly/validators/pie/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_sizesrc.py b/plotly/validators/pie/insidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_sizesrc.py rename to plotly/validators/pie/insidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_style.py b/plotly/validators/pie/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_style.py rename to plotly/validators/pie/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_stylesrc.py b/plotly/validators/pie/insidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_stylesrc.py rename to plotly/validators/pie/insidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_textcase.py b/plotly/validators/pie/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_textcase.py rename to plotly/validators/pie/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_textcasesrc.py b/plotly/validators/pie/insidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_textcasesrc.py rename to plotly/validators/pie/insidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_variant.py b/plotly/validators/pie/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_variant.py rename to plotly/validators/pie/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_variantsrc.py b/plotly/validators/pie/insidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_variantsrc.py rename to plotly/validators/pie/insidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_weight.py b/plotly/validators/pie/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_weight.py rename to plotly/validators/pie/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/pie/insidetextfont/_weightsrc.py b/plotly/validators/pie/insidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/insidetextfont/_weightsrc.py rename to plotly/validators/pie/insidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/__init__.py b/plotly/validators/pie/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/__init__.py rename to plotly/validators/pie/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/_font.py b/plotly/validators/pie/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/_font.py rename to plotly/validators/pie/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/_text.py b/plotly/validators/pie/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/_text.py rename to plotly/validators/pie/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/__init__.py b/plotly/validators/pie/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/__init__.py rename to plotly/validators/pie/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_color.py b/plotly/validators/pie/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_color.py rename to plotly/validators/pie/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_family.py b/plotly/validators/pie/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_family.py rename to plotly/validators/pie/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_lineposition.py b/plotly/validators/pie/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_lineposition.py rename to plotly/validators/pie/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_shadow.py b/plotly/validators/pie/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_shadow.py rename to plotly/validators/pie/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_size.py b/plotly/validators/pie/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_size.py rename to plotly/validators/pie/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_style.py b/plotly/validators/pie/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_style.py rename to plotly/validators/pie/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_textcase.py b/plotly/validators/pie/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_textcase.py rename to plotly/validators/pie/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_variant.py b/plotly/validators/pie/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_variant.py rename to plotly/validators/pie/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_weight.py b/plotly/validators/pie/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/legendgrouptitle/font/_weight.py rename to plotly/validators/pie/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/__init__.py b/plotly/validators/pie/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/__init__.py rename to plotly/validators/pie/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/_colors.py b/plotly/validators/pie/marker/_colors.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/_colors.py rename to plotly/validators/pie/marker/_colors.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/_colorssrc.py b/plotly/validators/pie/marker/_colorssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/_colorssrc.py rename to plotly/validators/pie/marker/_colorssrc.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/_line.py b/plotly/validators/pie/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/_line.py rename to plotly/validators/pie/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/_pattern.py b/plotly/validators/pie/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/_pattern.py rename to plotly/validators/pie/marker/_pattern.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/line/__init__.py b/plotly/validators/pie/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/line/__init__.py rename to plotly/validators/pie/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/line/_color.py b/plotly/validators/pie/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/line/_color.py rename to plotly/validators/pie/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/line/_colorsrc.py b/plotly/validators/pie/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/line/_colorsrc.py rename to plotly/validators/pie/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/line/_width.py b/plotly/validators/pie/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/line/_width.py rename to plotly/validators/pie/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/line/_widthsrc.py b/plotly/validators/pie/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/line/_widthsrc.py rename to plotly/validators/pie/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/__init__.py b/plotly/validators/pie/marker/pattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/__init__.py rename to plotly/validators/pie/marker/pattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_bgcolor.py b/plotly/validators/pie/marker/pattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_bgcolor.py rename to plotly/validators/pie/marker/pattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_bgcolorsrc.py b/plotly/validators/pie/marker/pattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_bgcolorsrc.py rename to plotly/validators/pie/marker/pattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_fgcolor.py b/plotly/validators/pie/marker/pattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_fgcolor.py rename to plotly/validators/pie/marker/pattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_fgcolorsrc.py b/plotly/validators/pie/marker/pattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_fgcolorsrc.py rename to plotly/validators/pie/marker/pattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_fgopacity.py b/plotly/validators/pie/marker/pattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_fgopacity.py rename to plotly/validators/pie/marker/pattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_fillmode.py b/plotly/validators/pie/marker/pattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_fillmode.py rename to plotly/validators/pie/marker/pattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_shape.py b/plotly/validators/pie/marker/pattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_shape.py rename to plotly/validators/pie/marker/pattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_shapesrc.py b/plotly/validators/pie/marker/pattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_shapesrc.py rename to plotly/validators/pie/marker/pattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_size.py b/plotly/validators/pie/marker/pattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_size.py rename to plotly/validators/pie/marker/pattern/_size.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_sizesrc.py b/plotly/validators/pie/marker/pattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_sizesrc.py rename to plotly/validators/pie/marker/pattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_solidity.py b/plotly/validators/pie/marker/pattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_solidity.py rename to plotly/validators/pie/marker/pattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/pie/marker/pattern/_soliditysrc.py b/plotly/validators/pie/marker/pattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/marker/pattern/_soliditysrc.py rename to plotly/validators/pie/marker/pattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/__init__.py b/plotly/validators/pie/outsidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/__init__.py rename to plotly/validators/pie/outsidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_color.py b/plotly/validators/pie/outsidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_color.py rename to plotly/validators/pie/outsidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_colorsrc.py b/plotly/validators/pie/outsidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_colorsrc.py rename to plotly/validators/pie/outsidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_family.py b/plotly/validators/pie/outsidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_family.py rename to plotly/validators/pie/outsidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_familysrc.py b/plotly/validators/pie/outsidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_familysrc.py rename to plotly/validators/pie/outsidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_lineposition.py b/plotly/validators/pie/outsidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_lineposition.py rename to plotly/validators/pie/outsidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_linepositionsrc.py b/plotly/validators/pie/outsidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_linepositionsrc.py rename to plotly/validators/pie/outsidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_shadow.py b/plotly/validators/pie/outsidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_shadow.py rename to plotly/validators/pie/outsidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_shadowsrc.py b/plotly/validators/pie/outsidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_shadowsrc.py rename to plotly/validators/pie/outsidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_size.py b/plotly/validators/pie/outsidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_size.py rename to plotly/validators/pie/outsidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_sizesrc.py b/plotly/validators/pie/outsidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_sizesrc.py rename to plotly/validators/pie/outsidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_style.py b/plotly/validators/pie/outsidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_style.py rename to plotly/validators/pie/outsidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_stylesrc.py b/plotly/validators/pie/outsidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_stylesrc.py rename to plotly/validators/pie/outsidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_textcase.py b/plotly/validators/pie/outsidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_textcase.py rename to plotly/validators/pie/outsidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_textcasesrc.py b/plotly/validators/pie/outsidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_textcasesrc.py rename to plotly/validators/pie/outsidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_variant.py b/plotly/validators/pie/outsidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_variant.py rename to plotly/validators/pie/outsidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_variantsrc.py b/plotly/validators/pie/outsidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_variantsrc.py rename to plotly/validators/pie/outsidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_weight.py b/plotly/validators/pie/outsidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_weight.py rename to plotly/validators/pie/outsidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/pie/outsidetextfont/_weightsrc.py b/plotly/validators/pie/outsidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/outsidetextfont/_weightsrc.py rename to plotly/validators/pie/outsidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/stream/__init__.py b/plotly/validators/pie/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/stream/__init__.py rename to plotly/validators/pie/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/stream/_maxpoints.py b/plotly/validators/pie/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/stream/_maxpoints.py rename to plotly/validators/pie/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/pie/stream/_token.py b/plotly/validators/pie/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/stream/_token.py rename to plotly/validators/pie/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/__init__.py b/plotly/validators/pie/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/__init__.py rename to plotly/validators/pie/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_color.py b/plotly/validators/pie/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_color.py rename to plotly/validators/pie/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_colorsrc.py b/plotly/validators/pie/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_colorsrc.py rename to plotly/validators/pie/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_family.py b/plotly/validators/pie/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_family.py rename to plotly/validators/pie/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_familysrc.py b/plotly/validators/pie/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_familysrc.py rename to plotly/validators/pie/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_lineposition.py b/plotly/validators/pie/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_lineposition.py rename to plotly/validators/pie/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_linepositionsrc.py b/plotly/validators/pie/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_linepositionsrc.py rename to plotly/validators/pie/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_shadow.py b/plotly/validators/pie/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_shadow.py rename to plotly/validators/pie/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_shadowsrc.py b/plotly/validators/pie/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_shadowsrc.py rename to plotly/validators/pie/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_size.py b/plotly/validators/pie/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_size.py rename to plotly/validators/pie/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_sizesrc.py b/plotly/validators/pie/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_sizesrc.py rename to plotly/validators/pie/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_style.py b/plotly/validators/pie/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_style.py rename to plotly/validators/pie/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_stylesrc.py b/plotly/validators/pie/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_stylesrc.py rename to plotly/validators/pie/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_textcase.py b/plotly/validators/pie/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_textcase.py rename to plotly/validators/pie/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_textcasesrc.py b/plotly/validators/pie/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_textcasesrc.py rename to plotly/validators/pie/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_variant.py b/plotly/validators/pie/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_variant.py rename to plotly/validators/pie/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_variantsrc.py b/plotly/validators/pie/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_variantsrc.py rename to plotly/validators/pie/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_weight.py b/plotly/validators/pie/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_weight.py rename to plotly/validators/pie/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/pie/textfont/_weightsrc.py b/plotly/validators/pie/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/textfont/_weightsrc.py rename to plotly/validators/pie/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/__init__.py b/plotly/validators/pie/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/__init__.py rename to plotly/validators/pie/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/title/_font.py b/plotly/validators/pie/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/_font.py rename to plotly/validators/pie/title/_font.py diff --git a/packages/python/plotly/plotly/validators/pie/title/_position.py b/plotly/validators/pie/title/_position.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/_position.py rename to plotly/validators/pie/title/_position.py diff --git a/packages/python/plotly/plotly/validators/pie/title/_text.py b/plotly/validators/pie/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/_text.py rename to plotly/validators/pie/title/_text.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/__init__.py b/plotly/validators/pie/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/__init__.py rename to plotly/validators/pie/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_color.py b/plotly/validators/pie/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_color.py rename to plotly/validators/pie/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_colorsrc.py b/plotly/validators/pie/title/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_colorsrc.py rename to plotly/validators/pie/title/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_family.py b/plotly/validators/pie/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_family.py rename to plotly/validators/pie/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_familysrc.py b/plotly/validators/pie/title/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_familysrc.py rename to plotly/validators/pie/title/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_lineposition.py b/plotly/validators/pie/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_lineposition.py rename to plotly/validators/pie/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_linepositionsrc.py b/plotly/validators/pie/title/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_linepositionsrc.py rename to plotly/validators/pie/title/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_shadow.py b/plotly/validators/pie/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_shadow.py rename to plotly/validators/pie/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_shadowsrc.py b/plotly/validators/pie/title/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_shadowsrc.py rename to plotly/validators/pie/title/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_size.py b/plotly/validators/pie/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_size.py rename to plotly/validators/pie/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_sizesrc.py b/plotly/validators/pie/title/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_sizesrc.py rename to plotly/validators/pie/title/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_style.py b/plotly/validators/pie/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_style.py rename to plotly/validators/pie/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_stylesrc.py b/plotly/validators/pie/title/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_stylesrc.py rename to plotly/validators/pie/title/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_textcase.py b/plotly/validators/pie/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_textcase.py rename to plotly/validators/pie/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_textcasesrc.py b/plotly/validators/pie/title/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_textcasesrc.py rename to plotly/validators/pie/title/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_variant.py b/plotly/validators/pie/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_variant.py rename to plotly/validators/pie/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_variantsrc.py b/plotly/validators/pie/title/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_variantsrc.py rename to plotly/validators/pie/title/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_weight.py b/plotly/validators/pie/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_weight.py rename to plotly/validators/pie/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/pie/title/font/_weightsrc.py b/plotly/validators/pie/title/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/pie/title/font/_weightsrc.py rename to plotly/validators/pie/title/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/__init__.py b/plotly/validators/sankey/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/__init__.py rename to plotly/validators/sankey/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/_arrangement.py b/plotly/validators/sankey/_arrangement.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_arrangement.py rename to plotly/validators/sankey/_arrangement.py diff --git a/packages/python/plotly/plotly/validators/sankey/_customdata.py b/plotly/validators/sankey/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_customdata.py rename to plotly/validators/sankey/_customdata.py diff --git a/packages/python/plotly/plotly/validators/sankey/_customdatasrc.py b/plotly/validators/sankey/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_customdatasrc.py rename to plotly/validators/sankey/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/_domain.py b/plotly/validators/sankey/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_domain.py rename to plotly/validators/sankey/_domain.py diff --git a/packages/python/plotly/plotly/validators/sankey/_hoverinfo.py b/plotly/validators/sankey/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_hoverinfo.py rename to plotly/validators/sankey/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/sankey/_hoverlabel.py b/plotly/validators/sankey/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_hoverlabel.py rename to plotly/validators/sankey/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/sankey/_ids.py b/plotly/validators/sankey/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_ids.py rename to plotly/validators/sankey/_ids.py diff --git a/packages/python/plotly/plotly/validators/sankey/_idssrc.py b/plotly/validators/sankey/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_idssrc.py rename to plotly/validators/sankey/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/_legend.py b/plotly/validators/sankey/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_legend.py rename to plotly/validators/sankey/_legend.py diff --git a/packages/python/plotly/plotly/validators/sankey/_legendgrouptitle.py b/plotly/validators/sankey/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_legendgrouptitle.py rename to plotly/validators/sankey/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/sankey/_legendrank.py b/plotly/validators/sankey/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_legendrank.py rename to plotly/validators/sankey/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/sankey/_legendwidth.py b/plotly/validators/sankey/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_legendwidth.py rename to plotly/validators/sankey/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/sankey/_link.py b/plotly/validators/sankey/_link.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_link.py rename to plotly/validators/sankey/_link.py diff --git a/packages/python/plotly/plotly/validators/sankey/_meta.py b/plotly/validators/sankey/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_meta.py rename to plotly/validators/sankey/_meta.py diff --git a/packages/python/plotly/plotly/validators/sankey/_metasrc.py b/plotly/validators/sankey/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_metasrc.py rename to plotly/validators/sankey/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/_name.py b/plotly/validators/sankey/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_name.py rename to plotly/validators/sankey/_name.py diff --git a/packages/python/plotly/plotly/validators/sankey/_node.py b/plotly/validators/sankey/_node.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_node.py rename to plotly/validators/sankey/_node.py diff --git a/packages/python/plotly/plotly/validators/sankey/_orientation.py b/plotly/validators/sankey/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_orientation.py rename to plotly/validators/sankey/_orientation.py diff --git a/packages/python/plotly/plotly/validators/sankey/_selectedpoints.py b/plotly/validators/sankey/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_selectedpoints.py rename to plotly/validators/sankey/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/sankey/_stream.py b/plotly/validators/sankey/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_stream.py rename to plotly/validators/sankey/_stream.py diff --git a/packages/python/plotly/plotly/validators/sankey/_textfont.py b/plotly/validators/sankey/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_textfont.py rename to plotly/validators/sankey/_textfont.py diff --git a/packages/python/plotly/plotly/validators/sankey/_uid.py b/plotly/validators/sankey/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_uid.py rename to plotly/validators/sankey/_uid.py diff --git a/packages/python/plotly/plotly/validators/sankey/_uirevision.py b/plotly/validators/sankey/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_uirevision.py rename to plotly/validators/sankey/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/sankey/_valueformat.py b/plotly/validators/sankey/_valueformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_valueformat.py rename to plotly/validators/sankey/_valueformat.py diff --git a/packages/python/plotly/plotly/validators/sankey/_valuesuffix.py b/plotly/validators/sankey/_valuesuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_valuesuffix.py rename to plotly/validators/sankey/_valuesuffix.py diff --git a/packages/python/plotly/plotly/validators/sankey/_visible.py b/plotly/validators/sankey/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/_visible.py rename to plotly/validators/sankey/_visible.py diff --git a/packages/python/plotly/plotly/validators/sankey/domain/__init__.py b/plotly/validators/sankey/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/domain/__init__.py rename to plotly/validators/sankey/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/domain/_column.py b/plotly/validators/sankey/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/domain/_column.py rename to plotly/validators/sankey/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/sankey/domain/_row.py b/plotly/validators/sankey/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/domain/_row.py rename to plotly/validators/sankey/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/sankey/domain/_x.py b/plotly/validators/sankey/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/domain/_x.py rename to plotly/validators/sankey/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/sankey/domain/_y.py b/plotly/validators/sankey/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/domain/_y.py rename to plotly/validators/sankey/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/__init__.py b/plotly/validators/sankey/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/__init__.py rename to plotly/validators/sankey/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_align.py b/plotly/validators/sankey/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_align.py rename to plotly/validators/sankey/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_alignsrc.py b/plotly/validators/sankey/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_alignsrc.py rename to plotly/validators/sankey/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_bgcolor.py b/plotly/validators/sankey/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_bgcolor.py rename to plotly/validators/sankey/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_bgcolorsrc.py b/plotly/validators/sankey/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_bgcolorsrc.py rename to plotly/validators/sankey/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_bordercolor.py b/plotly/validators/sankey/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_bordercolor.py rename to plotly/validators/sankey/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_bordercolorsrc.py b/plotly/validators/sankey/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_bordercolorsrc.py rename to plotly/validators/sankey/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_font.py b/plotly/validators/sankey/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_font.py rename to plotly/validators/sankey/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_namelength.py b/plotly/validators/sankey/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_namelength.py rename to plotly/validators/sankey/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/_namelengthsrc.py b/plotly/validators/sankey/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/_namelengthsrc.py rename to plotly/validators/sankey/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/__init__.py b/plotly/validators/sankey/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/__init__.py rename to plotly/validators/sankey/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_color.py b/plotly/validators/sankey/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_color.py rename to plotly/validators/sankey/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_colorsrc.py b/plotly/validators/sankey/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_colorsrc.py rename to plotly/validators/sankey/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_family.py b/plotly/validators/sankey/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_family.py rename to plotly/validators/sankey/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_familysrc.py b/plotly/validators/sankey/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_familysrc.py rename to plotly/validators/sankey/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_lineposition.py b/plotly/validators/sankey/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_lineposition.py rename to plotly/validators/sankey/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_linepositionsrc.py b/plotly/validators/sankey/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/sankey/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_shadow.py b/plotly/validators/sankey/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_shadow.py rename to plotly/validators/sankey/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_shadowsrc.py b/plotly/validators/sankey/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_shadowsrc.py rename to plotly/validators/sankey/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_size.py b/plotly/validators/sankey/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_size.py rename to plotly/validators/sankey/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_sizesrc.py b/plotly/validators/sankey/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_sizesrc.py rename to plotly/validators/sankey/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_style.py b/plotly/validators/sankey/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_style.py rename to plotly/validators/sankey/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_stylesrc.py b/plotly/validators/sankey/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_stylesrc.py rename to plotly/validators/sankey/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_textcase.py b/plotly/validators/sankey/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_textcase.py rename to plotly/validators/sankey/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_textcasesrc.py b/plotly/validators/sankey/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_textcasesrc.py rename to plotly/validators/sankey/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_variant.py b/plotly/validators/sankey/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_variant.py rename to plotly/validators/sankey/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_variantsrc.py b/plotly/validators/sankey/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_variantsrc.py rename to plotly/validators/sankey/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_weight.py b/plotly/validators/sankey/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_weight.py rename to plotly/validators/sankey/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_weightsrc.py b/plotly/validators/sankey/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/hoverlabel/font/_weightsrc.py rename to plotly/validators/sankey/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/__init__.py b/plotly/validators/sankey/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/__init__.py rename to plotly/validators/sankey/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/_font.py b/plotly/validators/sankey/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/_font.py rename to plotly/validators/sankey/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/_text.py b/plotly/validators/sankey/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/_text.py rename to plotly/validators/sankey/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/__init__.py b/plotly/validators/sankey/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/__init__.py rename to plotly/validators/sankey/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_color.py b/plotly/validators/sankey/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_color.py rename to plotly/validators/sankey/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_family.py b/plotly/validators/sankey/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_family.py rename to plotly/validators/sankey/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_lineposition.py b/plotly/validators/sankey/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_lineposition.py rename to plotly/validators/sankey/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_shadow.py b/plotly/validators/sankey/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_shadow.py rename to plotly/validators/sankey/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_size.py b/plotly/validators/sankey/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_size.py rename to plotly/validators/sankey/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_style.py b/plotly/validators/sankey/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_style.py rename to plotly/validators/sankey/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_textcase.py b/plotly/validators/sankey/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_textcase.py rename to plotly/validators/sankey/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_variant.py b/plotly/validators/sankey/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_variant.py rename to plotly/validators/sankey/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_weight.py b/plotly/validators/sankey/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/legendgrouptitle/font/_weight.py rename to plotly/validators/sankey/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/__init__.py b/plotly/validators/sankey/link/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/__init__.py rename to plotly/validators/sankey/link/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_arrowlen.py b/plotly/validators/sankey/link/_arrowlen.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_arrowlen.py rename to plotly/validators/sankey/link/_arrowlen.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_color.py b/plotly/validators/sankey/link/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_color.py rename to plotly/validators/sankey/link/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_colorscaledefaults.py b/plotly/validators/sankey/link/_colorscaledefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_colorscaledefaults.py rename to plotly/validators/sankey/link/_colorscaledefaults.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_colorscales.py b/plotly/validators/sankey/link/_colorscales.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_colorscales.py rename to plotly/validators/sankey/link/_colorscales.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_colorsrc.py b/plotly/validators/sankey/link/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_colorsrc.py rename to plotly/validators/sankey/link/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_customdata.py b/plotly/validators/sankey/link/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_customdata.py rename to plotly/validators/sankey/link/_customdata.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_customdatasrc.py b/plotly/validators/sankey/link/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_customdatasrc.py rename to plotly/validators/sankey/link/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_hovercolor.py b/plotly/validators/sankey/link/_hovercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_hovercolor.py rename to plotly/validators/sankey/link/_hovercolor.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_hovercolorsrc.py b/plotly/validators/sankey/link/_hovercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_hovercolorsrc.py rename to plotly/validators/sankey/link/_hovercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_hoverinfo.py b/plotly/validators/sankey/link/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_hoverinfo.py rename to plotly/validators/sankey/link/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_hoverlabel.py b/plotly/validators/sankey/link/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_hoverlabel.py rename to plotly/validators/sankey/link/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_hovertemplate.py b/plotly/validators/sankey/link/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_hovertemplate.py rename to plotly/validators/sankey/link/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_hovertemplatesrc.py b/plotly/validators/sankey/link/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_hovertemplatesrc.py rename to plotly/validators/sankey/link/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_label.py b/plotly/validators/sankey/link/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_label.py rename to plotly/validators/sankey/link/_label.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_labelsrc.py b/plotly/validators/sankey/link/_labelsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_labelsrc.py rename to plotly/validators/sankey/link/_labelsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_line.py b/plotly/validators/sankey/link/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_line.py rename to plotly/validators/sankey/link/_line.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_source.py b/plotly/validators/sankey/link/_source.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_source.py rename to plotly/validators/sankey/link/_source.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_sourcesrc.py b/plotly/validators/sankey/link/_sourcesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_sourcesrc.py rename to plotly/validators/sankey/link/_sourcesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_target.py b/plotly/validators/sankey/link/_target.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_target.py rename to plotly/validators/sankey/link/_target.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_targetsrc.py b/plotly/validators/sankey/link/_targetsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_targetsrc.py rename to plotly/validators/sankey/link/_targetsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_value.py b/plotly/validators/sankey/link/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_value.py rename to plotly/validators/sankey/link/_value.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/_valuesrc.py b/plotly/validators/sankey/link/_valuesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/_valuesrc.py rename to plotly/validators/sankey/link/_valuesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/colorscale/__init__.py b/plotly/validators/sankey/link/colorscale/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/colorscale/__init__.py rename to plotly/validators/sankey/link/colorscale/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/colorscale/_cmax.py b/plotly/validators/sankey/link/colorscale/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/colorscale/_cmax.py rename to plotly/validators/sankey/link/colorscale/_cmax.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/colorscale/_cmin.py b/plotly/validators/sankey/link/colorscale/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/colorscale/_cmin.py rename to plotly/validators/sankey/link/colorscale/_cmin.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/colorscale/_colorscale.py b/plotly/validators/sankey/link/colorscale/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/colorscale/_colorscale.py rename to plotly/validators/sankey/link/colorscale/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/colorscale/_label.py b/plotly/validators/sankey/link/colorscale/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/colorscale/_label.py rename to plotly/validators/sankey/link/colorscale/_label.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/colorscale/_name.py b/plotly/validators/sankey/link/colorscale/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/colorscale/_name.py rename to plotly/validators/sankey/link/colorscale/_name.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/colorscale/_templateitemname.py b/plotly/validators/sankey/link/colorscale/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/colorscale/_templateitemname.py rename to plotly/validators/sankey/link/colorscale/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/__init__.py b/plotly/validators/sankey/link/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/__init__.py rename to plotly/validators/sankey/link/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_align.py b/plotly/validators/sankey/link/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_align.py rename to plotly/validators/sankey/link/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_alignsrc.py b/plotly/validators/sankey/link/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_alignsrc.py rename to plotly/validators/sankey/link/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_bgcolor.py b/plotly/validators/sankey/link/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_bgcolor.py rename to plotly/validators/sankey/link/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_bgcolorsrc.py b/plotly/validators/sankey/link/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_bgcolorsrc.py rename to plotly/validators/sankey/link/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_bordercolor.py b/plotly/validators/sankey/link/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_bordercolor.py rename to plotly/validators/sankey/link/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_bordercolorsrc.py b/plotly/validators/sankey/link/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_bordercolorsrc.py rename to plotly/validators/sankey/link/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_font.py b/plotly/validators/sankey/link/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_font.py rename to plotly/validators/sankey/link/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_namelength.py b/plotly/validators/sankey/link/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_namelength.py rename to plotly/validators/sankey/link/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_namelengthsrc.py b/plotly/validators/sankey/link/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/_namelengthsrc.py rename to plotly/validators/sankey/link/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/__init__.py b/plotly/validators/sankey/link/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/__init__.py rename to plotly/validators/sankey/link/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_color.py b/plotly/validators/sankey/link/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_color.py rename to plotly/validators/sankey/link/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_colorsrc.py b/plotly/validators/sankey/link/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_colorsrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_family.py b/plotly/validators/sankey/link/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_family.py rename to plotly/validators/sankey/link/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_familysrc.py b/plotly/validators/sankey/link/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_familysrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_lineposition.py b/plotly/validators/sankey/link/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_lineposition.py rename to plotly/validators/sankey/link/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_linepositionsrc.py b/plotly/validators/sankey/link/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_shadow.py b/plotly/validators/sankey/link/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_shadow.py rename to plotly/validators/sankey/link/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_shadowsrc.py b/plotly/validators/sankey/link/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_shadowsrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_size.py b/plotly/validators/sankey/link/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_size.py rename to plotly/validators/sankey/link/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_sizesrc.py b/plotly/validators/sankey/link/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_sizesrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_style.py b/plotly/validators/sankey/link/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_style.py rename to plotly/validators/sankey/link/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_stylesrc.py b/plotly/validators/sankey/link/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_stylesrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_textcase.py b/plotly/validators/sankey/link/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_textcase.py rename to plotly/validators/sankey/link/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_textcasesrc.py b/plotly/validators/sankey/link/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_textcasesrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_variant.py b/plotly/validators/sankey/link/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_variant.py rename to plotly/validators/sankey/link/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_variantsrc.py b/plotly/validators/sankey/link/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_variantsrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_weight.py b/plotly/validators/sankey/link/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_weight.py rename to plotly/validators/sankey/link/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_weightsrc.py b/plotly/validators/sankey/link/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/hoverlabel/font/_weightsrc.py rename to plotly/validators/sankey/link/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/line/__init__.py b/plotly/validators/sankey/link/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/line/__init__.py rename to plotly/validators/sankey/link/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/line/_color.py b/plotly/validators/sankey/link/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/line/_color.py rename to plotly/validators/sankey/link/line/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/line/_colorsrc.py b/plotly/validators/sankey/link/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/line/_colorsrc.py rename to plotly/validators/sankey/link/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/line/_width.py b/plotly/validators/sankey/link/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/line/_width.py rename to plotly/validators/sankey/link/line/_width.py diff --git a/packages/python/plotly/plotly/validators/sankey/link/line/_widthsrc.py b/plotly/validators/sankey/link/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/link/line/_widthsrc.py rename to plotly/validators/sankey/link/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/__init__.py b/plotly/validators/sankey/node/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/__init__.py rename to plotly/validators/sankey/node/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_align.py b/plotly/validators/sankey/node/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_align.py rename to plotly/validators/sankey/node/_align.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_color.py b/plotly/validators/sankey/node/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_color.py rename to plotly/validators/sankey/node/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_colorsrc.py b/plotly/validators/sankey/node/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_colorsrc.py rename to plotly/validators/sankey/node/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_customdata.py b/plotly/validators/sankey/node/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_customdata.py rename to plotly/validators/sankey/node/_customdata.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_customdatasrc.py b/plotly/validators/sankey/node/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_customdatasrc.py rename to plotly/validators/sankey/node/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_groups.py b/plotly/validators/sankey/node/_groups.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_groups.py rename to plotly/validators/sankey/node/_groups.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_hoverinfo.py b/plotly/validators/sankey/node/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_hoverinfo.py rename to plotly/validators/sankey/node/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_hoverlabel.py b/plotly/validators/sankey/node/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_hoverlabel.py rename to plotly/validators/sankey/node/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_hovertemplate.py b/plotly/validators/sankey/node/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_hovertemplate.py rename to plotly/validators/sankey/node/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_hovertemplatesrc.py b/plotly/validators/sankey/node/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_hovertemplatesrc.py rename to plotly/validators/sankey/node/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_label.py b/plotly/validators/sankey/node/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_label.py rename to plotly/validators/sankey/node/_label.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_labelsrc.py b/plotly/validators/sankey/node/_labelsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_labelsrc.py rename to plotly/validators/sankey/node/_labelsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_line.py b/plotly/validators/sankey/node/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_line.py rename to plotly/validators/sankey/node/_line.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_pad.py b/plotly/validators/sankey/node/_pad.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_pad.py rename to plotly/validators/sankey/node/_pad.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_thickness.py b/plotly/validators/sankey/node/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_thickness.py rename to plotly/validators/sankey/node/_thickness.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_x.py b/plotly/validators/sankey/node/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_x.py rename to plotly/validators/sankey/node/_x.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_xsrc.py b/plotly/validators/sankey/node/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_xsrc.py rename to plotly/validators/sankey/node/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_y.py b/plotly/validators/sankey/node/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_y.py rename to plotly/validators/sankey/node/_y.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/_ysrc.py b/plotly/validators/sankey/node/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/_ysrc.py rename to plotly/validators/sankey/node/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/__init__.py b/plotly/validators/sankey/node/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/__init__.py rename to plotly/validators/sankey/node/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_align.py b/plotly/validators/sankey/node/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_align.py rename to plotly/validators/sankey/node/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_alignsrc.py b/plotly/validators/sankey/node/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_alignsrc.py rename to plotly/validators/sankey/node/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_bgcolor.py b/plotly/validators/sankey/node/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_bgcolor.py rename to plotly/validators/sankey/node/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_bgcolorsrc.py b/plotly/validators/sankey/node/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_bgcolorsrc.py rename to plotly/validators/sankey/node/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_bordercolor.py b/plotly/validators/sankey/node/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_bordercolor.py rename to plotly/validators/sankey/node/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_bordercolorsrc.py b/plotly/validators/sankey/node/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_bordercolorsrc.py rename to plotly/validators/sankey/node/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_font.py b/plotly/validators/sankey/node/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_font.py rename to plotly/validators/sankey/node/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_namelength.py b/plotly/validators/sankey/node/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_namelength.py rename to plotly/validators/sankey/node/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_namelengthsrc.py b/plotly/validators/sankey/node/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/_namelengthsrc.py rename to plotly/validators/sankey/node/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/__init__.py b/plotly/validators/sankey/node/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/__init__.py rename to plotly/validators/sankey/node/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_color.py b/plotly/validators/sankey/node/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_color.py rename to plotly/validators/sankey/node/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_colorsrc.py b/plotly/validators/sankey/node/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_colorsrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_family.py b/plotly/validators/sankey/node/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_family.py rename to plotly/validators/sankey/node/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_familysrc.py b/plotly/validators/sankey/node/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_familysrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_lineposition.py b/plotly/validators/sankey/node/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_lineposition.py rename to plotly/validators/sankey/node/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_linepositionsrc.py b/plotly/validators/sankey/node/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_shadow.py b/plotly/validators/sankey/node/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_shadow.py rename to plotly/validators/sankey/node/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_shadowsrc.py b/plotly/validators/sankey/node/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_shadowsrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_size.py b/plotly/validators/sankey/node/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_size.py rename to plotly/validators/sankey/node/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_sizesrc.py b/plotly/validators/sankey/node/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_sizesrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_style.py b/plotly/validators/sankey/node/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_style.py rename to plotly/validators/sankey/node/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_stylesrc.py b/plotly/validators/sankey/node/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_stylesrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_textcase.py b/plotly/validators/sankey/node/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_textcase.py rename to plotly/validators/sankey/node/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_textcasesrc.py b/plotly/validators/sankey/node/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_textcasesrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_variant.py b/plotly/validators/sankey/node/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_variant.py rename to plotly/validators/sankey/node/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_variantsrc.py b/plotly/validators/sankey/node/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_variantsrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_weight.py b/plotly/validators/sankey/node/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_weight.py rename to plotly/validators/sankey/node/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_weightsrc.py b/plotly/validators/sankey/node/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/hoverlabel/font/_weightsrc.py rename to plotly/validators/sankey/node/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/line/__init__.py b/plotly/validators/sankey/node/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/line/__init__.py rename to plotly/validators/sankey/node/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/line/_color.py b/plotly/validators/sankey/node/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/line/_color.py rename to plotly/validators/sankey/node/line/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/line/_colorsrc.py b/plotly/validators/sankey/node/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/line/_colorsrc.py rename to plotly/validators/sankey/node/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/line/_width.py b/plotly/validators/sankey/node/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/line/_width.py rename to plotly/validators/sankey/node/line/_width.py diff --git a/packages/python/plotly/plotly/validators/sankey/node/line/_widthsrc.py b/plotly/validators/sankey/node/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/node/line/_widthsrc.py rename to plotly/validators/sankey/node/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/sankey/stream/__init__.py b/plotly/validators/sankey/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/stream/__init__.py rename to plotly/validators/sankey/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/stream/_maxpoints.py b/plotly/validators/sankey/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/stream/_maxpoints.py rename to plotly/validators/sankey/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/sankey/stream/_token.py b/plotly/validators/sankey/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/stream/_token.py rename to plotly/validators/sankey/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/__init__.py b/plotly/validators/sankey/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/__init__.py rename to plotly/validators/sankey/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_color.py b/plotly/validators/sankey/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_color.py rename to plotly/validators/sankey/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_family.py b/plotly/validators/sankey/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_family.py rename to plotly/validators/sankey/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_lineposition.py b/plotly/validators/sankey/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_lineposition.py rename to plotly/validators/sankey/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_shadow.py b/plotly/validators/sankey/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_shadow.py rename to plotly/validators/sankey/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_size.py b/plotly/validators/sankey/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_size.py rename to plotly/validators/sankey/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_style.py b/plotly/validators/sankey/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_style.py rename to plotly/validators/sankey/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_textcase.py b/plotly/validators/sankey/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_textcase.py rename to plotly/validators/sankey/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_variant.py b/plotly/validators/sankey/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_variant.py rename to plotly/validators/sankey/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/sankey/textfont/_weight.py b/plotly/validators/sankey/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sankey/textfont/_weight.py rename to plotly/validators/sankey/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter/__init__.py b/plotly/validators/scatter/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/__init__.py rename to plotly/validators/scatter/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/_alignmentgroup.py b/plotly/validators/scatter/_alignmentgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_alignmentgroup.py rename to plotly/validators/scatter/_alignmentgroup.py diff --git a/packages/python/plotly/plotly/validators/scatter/_cliponaxis.py b/plotly/validators/scatter/_cliponaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_cliponaxis.py rename to plotly/validators/scatter/_cliponaxis.py diff --git a/packages/python/plotly/plotly/validators/scatter/_connectgaps.py b/plotly/validators/scatter/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_connectgaps.py rename to plotly/validators/scatter/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scatter/_customdata.py b/plotly/validators/scatter/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_customdata.py rename to plotly/validators/scatter/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scatter/_customdatasrc.py b/plotly/validators/scatter/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_customdatasrc.py rename to plotly/validators/scatter/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_dx.py b/plotly/validators/scatter/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_dx.py rename to plotly/validators/scatter/_dx.py diff --git a/packages/python/plotly/plotly/validators/scatter/_dy.py b/plotly/validators/scatter/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_dy.py rename to plotly/validators/scatter/_dy.py diff --git a/packages/python/plotly/plotly/validators/scatter/_error_x.py b/plotly/validators/scatter/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_error_x.py rename to plotly/validators/scatter/_error_x.py diff --git a/packages/python/plotly/plotly/validators/scatter/_error_y.py b/plotly/validators/scatter/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_error_y.py rename to plotly/validators/scatter/_error_y.py diff --git a/packages/python/plotly/plotly/validators/scatter/_fill.py b/plotly/validators/scatter/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_fill.py rename to plotly/validators/scatter/_fill.py diff --git a/packages/python/plotly/plotly/validators/scatter/_fillcolor.py b/plotly/validators/scatter/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_fillcolor.py rename to plotly/validators/scatter/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/_fillgradient.py b/plotly/validators/scatter/_fillgradient.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_fillgradient.py rename to plotly/validators/scatter/_fillgradient.py diff --git a/packages/python/plotly/plotly/validators/scatter/_fillpattern.py b/plotly/validators/scatter/_fillpattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_fillpattern.py rename to plotly/validators/scatter/_fillpattern.py diff --git a/packages/python/plotly/plotly/validators/scatter/_groupnorm.py b/plotly/validators/scatter/_groupnorm.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_groupnorm.py rename to plotly/validators/scatter/_groupnorm.py diff --git a/packages/python/plotly/plotly/validators/scatter/_hoverinfo.py b/plotly/validators/scatter/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_hoverinfo.py rename to plotly/validators/scatter/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scatter/_hoverinfosrc.py b/plotly/validators/scatter/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_hoverinfosrc.py rename to plotly/validators/scatter/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_hoverlabel.py b/plotly/validators/scatter/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_hoverlabel.py rename to plotly/validators/scatter/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scatter/_hoveron.py b/plotly/validators/scatter/_hoveron.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_hoveron.py rename to plotly/validators/scatter/_hoveron.py diff --git a/packages/python/plotly/plotly/validators/scatter/_hovertemplate.py b/plotly/validators/scatter/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_hovertemplate.py rename to plotly/validators/scatter/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scatter/_hovertemplatesrc.py b/plotly/validators/scatter/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_hovertemplatesrc.py rename to plotly/validators/scatter/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_hovertext.py b/plotly/validators/scatter/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_hovertext.py rename to plotly/validators/scatter/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scatter/_hovertextsrc.py b/plotly/validators/scatter/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_hovertextsrc.py rename to plotly/validators/scatter/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_ids.py b/plotly/validators/scatter/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_ids.py rename to plotly/validators/scatter/_ids.py diff --git a/packages/python/plotly/plotly/validators/scatter/_idssrc.py b/plotly/validators/scatter/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_idssrc.py rename to plotly/validators/scatter/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_legend.py b/plotly/validators/scatter/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_legend.py rename to plotly/validators/scatter/_legend.py diff --git a/packages/python/plotly/plotly/validators/scatter/_legendgroup.py b/plotly/validators/scatter/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_legendgroup.py rename to plotly/validators/scatter/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scatter/_legendgrouptitle.py b/plotly/validators/scatter/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_legendgrouptitle.py rename to plotly/validators/scatter/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scatter/_legendrank.py b/plotly/validators/scatter/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_legendrank.py rename to plotly/validators/scatter/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scatter/_legendwidth.py b/plotly/validators/scatter/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_legendwidth.py rename to plotly/validators/scatter/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scatter/_line.py b/plotly/validators/scatter/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_line.py rename to plotly/validators/scatter/_line.py diff --git a/packages/python/plotly/plotly/validators/scatter/_marker.py b/plotly/validators/scatter/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_marker.py rename to plotly/validators/scatter/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatter/_meta.py b/plotly/validators/scatter/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_meta.py rename to plotly/validators/scatter/_meta.py diff --git a/packages/python/plotly/plotly/validators/scatter/_metasrc.py b/plotly/validators/scatter/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_metasrc.py rename to plotly/validators/scatter/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_mode.py b/plotly/validators/scatter/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_mode.py rename to plotly/validators/scatter/_mode.py diff --git a/packages/python/plotly/plotly/validators/scatter/_name.py b/plotly/validators/scatter/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_name.py rename to plotly/validators/scatter/_name.py diff --git a/packages/python/plotly/plotly/validators/scatter/_offsetgroup.py b/plotly/validators/scatter/_offsetgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_offsetgroup.py rename to plotly/validators/scatter/_offsetgroup.py diff --git a/packages/python/plotly/plotly/validators/scatter/_opacity.py b/plotly/validators/scatter/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_opacity.py rename to plotly/validators/scatter/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter/_orientation.py b/plotly/validators/scatter/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_orientation.py rename to plotly/validators/scatter/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scatter/_selected.py b/plotly/validators/scatter/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_selected.py rename to plotly/validators/scatter/_selected.py diff --git a/packages/python/plotly/plotly/validators/scatter/_selectedpoints.py b/plotly/validators/scatter/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_selectedpoints.py rename to plotly/validators/scatter/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scatter/_showlegend.py b/plotly/validators/scatter/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_showlegend.py rename to plotly/validators/scatter/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scatter/_stackgaps.py b/plotly/validators/scatter/_stackgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_stackgaps.py rename to plotly/validators/scatter/_stackgaps.py diff --git a/packages/python/plotly/plotly/validators/scatter/_stackgroup.py b/plotly/validators/scatter/_stackgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_stackgroup.py rename to plotly/validators/scatter/_stackgroup.py diff --git a/packages/python/plotly/plotly/validators/scatter/_stream.py b/plotly/validators/scatter/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_stream.py rename to plotly/validators/scatter/_stream.py diff --git a/packages/python/plotly/plotly/validators/scatter/_text.py b/plotly/validators/scatter/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_text.py rename to plotly/validators/scatter/_text.py diff --git a/packages/python/plotly/plotly/validators/scatter/_textfont.py b/plotly/validators/scatter/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_textfont.py rename to plotly/validators/scatter/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatter/_textposition.py b/plotly/validators/scatter/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_textposition.py rename to plotly/validators/scatter/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scatter/_textpositionsrc.py b/plotly/validators/scatter/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_textpositionsrc.py rename to plotly/validators/scatter/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_textsrc.py b/plotly/validators/scatter/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_textsrc.py rename to plotly/validators/scatter/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_texttemplate.py b/plotly/validators/scatter/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_texttemplate.py rename to plotly/validators/scatter/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scatter/_texttemplatesrc.py b/plotly/validators/scatter/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_texttemplatesrc.py rename to plotly/validators/scatter/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_uid.py b/plotly/validators/scatter/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_uid.py rename to plotly/validators/scatter/_uid.py diff --git a/packages/python/plotly/plotly/validators/scatter/_uirevision.py b/plotly/validators/scatter/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_uirevision.py rename to plotly/validators/scatter/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scatter/_unselected.py b/plotly/validators/scatter/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_unselected.py rename to plotly/validators/scatter/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scatter/_visible.py b/plotly/validators/scatter/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_visible.py rename to plotly/validators/scatter/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatter/_x.py b/plotly/validators/scatter/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_x.py rename to plotly/validators/scatter/_x.py diff --git a/packages/python/plotly/plotly/validators/scatter/_x0.py b/plotly/validators/scatter/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_x0.py rename to plotly/validators/scatter/_x0.py diff --git a/packages/python/plotly/plotly/validators/scatter/_xaxis.py b/plotly/validators/scatter/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_xaxis.py rename to plotly/validators/scatter/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/scatter/_xcalendar.py b/plotly/validators/scatter/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_xcalendar.py rename to plotly/validators/scatter/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/scatter/_xhoverformat.py b/plotly/validators/scatter/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_xhoverformat.py rename to plotly/validators/scatter/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/scatter/_xperiod.py b/plotly/validators/scatter/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_xperiod.py rename to plotly/validators/scatter/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/scatter/_xperiod0.py b/plotly/validators/scatter/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_xperiod0.py rename to plotly/validators/scatter/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/scatter/_xperiodalignment.py b/plotly/validators/scatter/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_xperiodalignment.py rename to plotly/validators/scatter/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/scatter/_xsrc.py b/plotly/validators/scatter/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_xsrc.py rename to plotly/validators/scatter/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_y.py b/plotly/validators/scatter/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_y.py rename to plotly/validators/scatter/_y.py diff --git a/packages/python/plotly/plotly/validators/scatter/_y0.py b/plotly/validators/scatter/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_y0.py rename to plotly/validators/scatter/_y0.py diff --git a/packages/python/plotly/plotly/validators/scatter/_yaxis.py b/plotly/validators/scatter/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_yaxis.py rename to plotly/validators/scatter/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/scatter/_ycalendar.py b/plotly/validators/scatter/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_ycalendar.py rename to plotly/validators/scatter/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/scatter/_yhoverformat.py b/plotly/validators/scatter/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_yhoverformat.py rename to plotly/validators/scatter/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/scatter/_yperiod.py b/plotly/validators/scatter/_yperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_yperiod.py rename to plotly/validators/scatter/_yperiod.py diff --git a/packages/python/plotly/plotly/validators/scatter/_yperiod0.py b/plotly/validators/scatter/_yperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_yperiod0.py rename to plotly/validators/scatter/_yperiod0.py diff --git a/packages/python/plotly/plotly/validators/scatter/_yperiodalignment.py b/plotly/validators/scatter/_yperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_yperiodalignment.py rename to plotly/validators/scatter/_yperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/scatter/_ysrc.py b/plotly/validators/scatter/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_ysrc.py rename to plotly/validators/scatter/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/_zorder.py b/plotly/validators/scatter/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/_zorder.py rename to plotly/validators/scatter/_zorder.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/__init__.py b/plotly/validators/scatter/error_x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/__init__.py rename to plotly/validators/scatter/error_x/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_array.py b/plotly/validators/scatter/error_x/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_array.py rename to plotly/validators/scatter/error_x/_array.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_arrayminus.py b/plotly/validators/scatter/error_x/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_arrayminus.py rename to plotly/validators/scatter/error_x/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_arrayminussrc.py b/plotly/validators/scatter/error_x/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_arrayminussrc.py rename to plotly/validators/scatter/error_x/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_arraysrc.py b/plotly/validators/scatter/error_x/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_arraysrc.py rename to plotly/validators/scatter/error_x/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_color.py b/plotly/validators/scatter/error_x/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_color.py rename to plotly/validators/scatter/error_x/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_copy_ystyle.py b/plotly/validators/scatter/error_x/_copy_ystyle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_copy_ystyle.py rename to plotly/validators/scatter/error_x/_copy_ystyle.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_symmetric.py b/plotly/validators/scatter/error_x/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_symmetric.py rename to plotly/validators/scatter/error_x/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_thickness.py b/plotly/validators/scatter/error_x/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_thickness.py rename to plotly/validators/scatter/error_x/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_traceref.py b/plotly/validators/scatter/error_x/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_traceref.py rename to plotly/validators/scatter/error_x/_traceref.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_tracerefminus.py b/plotly/validators/scatter/error_x/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_tracerefminus.py rename to plotly/validators/scatter/error_x/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_type.py b/plotly/validators/scatter/error_x/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_type.py rename to plotly/validators/scatter/error_x/_type.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_value.py b/plotly/validators/scatter/error_x/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_value.py rename to plotly/validators/scatter/error_x/_value.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_valueminus.py b/plotly/validators/scatter/error_x/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_valueminus.py rename to plotly/validators/scatter/error_x/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_visible.py b/plotly/validators/scatter/error_x/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_visible.py rename to plotly/validators/scatter/error_x/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_x/_width.py b/plotly/validators/scatter/error_x/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_x/_width.py rename to plotly/validators/scatter/error_x/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/__init__.py b/plotly/validators/scatter/error_y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/__init__.py rename to plotly/validators/scatter/error_y/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_array.py b/plotly/validators/scatter/error_y/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_array.py rename to plotly/validators/scatter/error_y/_array.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_arrayminus.py b/plotly/validators/scatter/error_y/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_arrayminus.py rename to plotly/validators/scatter/error_y/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_arrayminussrc.py b/plotly/validators/scatter/error_y/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_arrayminussrc.py rename to plotly/validators/scatter/error_y/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_arraysrc.py b/plotly/validators/scatter/error_y/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_arraysrc.py rename to plotly/validators/scatter/error_y/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_color.py b/plotly/validators/scatter/error_y/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_color.py rename to plotly/validators/scatter/error_y/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_symmetric.py b/plotly/validators/scatter/error_y/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_symmetric.py rename to plotly/validators/scatter/error_y/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_thickness.py b/plotly/validators/scatter/error_y/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_thickness.py rename to plotly/validators/scatter/error_y/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_traceref.py b/plotly/validators/scatter/error_y/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_traceref.py rename to plotly/validators/scatter/error_y/_traceref.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_tracerefminus.py b/plotly/validators/scatter/error_y/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_tracerefminus.py rename to plotly/validators/scatter/error_y/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_type.py b/plotly/validators/scatter/error_y/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_type.py rename to plotly/validators/scatter/error_y/_type.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_value.py b/plotly/validators/scatter/error_y/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_value.py rename to plotly/validators/scatter/error_y/_value.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_valueminus.py b/plotly/validators/scatter/error_y/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_valueminus.py rename to plotly/validators/scatter/error_y/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_visible.py b/plotly/validators/scatter/error_y/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_visible.py rename to plotly/validators/scatter/error_y/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatter/error_y/_width.py b/plotly/validators/scatter/error_y/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/error_y/_width.py rename to plotly/validators/scatter/error_y/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillgradient/__init__.py b/plotly/validators/scatter/fillgradient/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillgradient/__init__.py rename to plotly/validators/scatter/fillgradient/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillgradient/_colorscale.py b/plotly/validators/scatter/fillgradient/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillgradient/_colorscale.py rename to plotly/validators/scatter/fillgradient/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillgradient/_start.py b/plotly/validators/scatter/fillgradient/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillgradient/_start.py rename to plotly/validators/scatter/fillgradient/_start.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillgradient/_stop.py b/plotly/validators/scatter/fillgradient/_stop.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillgradient/_stop.py rename to plotly/validators/scatter/fillgradient/_stop.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillgradient/_type.py b/plotly/validators/scatter/fillgradient/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillgradient/_type.py rename to plotly/validators/scatter/fillgradient/_type.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/__init__.py b/plotly/validators/scatter/fillpattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/__init__.py rename to plotly/validators/scatter/fillpattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_bgcolor.py b/plotly/validators/scatter/fillpattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_bgcolor.py rename to plotly/validators/scatter/fillpattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_bgcolorsrc.py b/plotly/validators/scatter/fillpattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_bgcolorsrc.py rename to plotly/validators/scatter/fillpattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_fgcolor.py b/plotly/validators/scatter/fillpattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_fgcolor.py rename to plotly/validators/scatter/fillpattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_fgcolorsrc.py b/plotly/validators/scatter/fillpattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_fgcolorsrc.py rename to plotly/validators/scatter/fillpattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_fgopacity.py b/plotly/validators/scatter/fillpattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_fgopacity.py rename to plotly/validators/scatter/fillpattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_fillmode.py b/plotly/validators/scatter/fillpattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_fillmode.py rename to plotly/validators/scatter/fillpattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_shape.py b/plotly/validators/scatter/fillpattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_shape.py rename to plotly/validators/scatter/fillpattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_shapesrc.py b/plotly/validators/scatter/fillpattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_shapesrc.py rename to plotly/validators/scatter/fillpattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_size.py b/plotly/validators/scatter/fillpattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_size.py rename to plotly/validators/scatter/fillpattern/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_sizesrc.py b/plotly/validators/scatter/fillpattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_sizesrc.py rename to plotly/validators/scatter/fillpattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_solidity.py b/plotly/validators/scatter/fillpattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_solidity.py rename to plotly/validators/scatter/fillpattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/scatter/fillpattern/_soliditysrc.py b/plotly/validators/scatter/fillpattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/fillpattern/_soliditysrc.py rename to plotly/validators/scatter/fillpattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/__init__.py b/plotly/validators/scatter/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/__init__.py rename to plotly/validators/scatter/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_align.py b/plotly/validators/scatter/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_align.py rename to plotly/validators/scatter/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_alignsrc.py b/plotly/validators/scatter/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_alignsrc.py rename to plotly/validators/scatter/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_bgcolor.py b/plotly/validators/scatter/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_bgcolor.py rename to plotly/validators/scatter/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_bgcolorsrc.py b/plotly/validators/scatter/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scatter/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_bordercolor.py b/plotly/validators/scatter/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_bordercolor.py rename to plotly/validators/scatter/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_bordercolorsrc.py b/plotly/validators/scatter/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scatter/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_font.py b/plotly/validators/scatter/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_font.py rename to plotly/validators/scatter/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_namelength.py b/plotly/validators/scatter/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_namelength.py rename to plotly/validators/scatter/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/_namelengthsrc.py b/plotly/validators/scatter/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/_namelengthsrc.py rename to plotly/validators/scatter/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/__init__.py b/plotly/validators/scatter/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/__init__.py rename to plotly/validators/scatter/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_color.py b/plotly/validators/scatter/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_color.py rename to plotly/validators/scatter/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_colorsrc.py b/plotly/validators/scatter/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_colorsrc.py rename to plotly/validators/scatter/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_family.py b/plotly/validators/scatter/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_family.py rename to plotly/validators/scatter/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_familysrc.py b/plotly/validators/scatter/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_familysrc.py rename to plotly/validators/scatter/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_lineposition.py b/plotly/validators/scatter/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_lineposition.py rename to plotly/validators/scatter/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scatter/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scatter/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_shadow.py b/plotly/validators/scatter/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_shadow.py rename to plotly/validators/scatter/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_shadowsrc.py b/plotly/validators/scatter/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scatter/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_size.py b/plotly/validators/scatter/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_size.py rename to plotly/validators/scatter/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_sizesrc.py b/plotly/validators/scatter/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_sizesrc.py rename to plotly/validators/scatter/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_style.py b/plotly/validators/scatter/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_style.py rename to plotly/validators/scatter/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_stylesrc.py b/plotly/validators/scatter/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_stylesrc.py rename to plotly/validators/scatter/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_textcase.py b/plotly/validators/scatter/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_textcase.py rename to plotly/validators/scatter/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_textcasesrc.py b/plotly/validators/scatter/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scatter/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_variant.py b/plotly/validators/scatter/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_variant.py rename to plotly/validators/scatter/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_variantsrc.py b/plotly/validators/scatter/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_variantsrc.py rename to plotly/validators/scatter/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_weight.py b/plotly/validators/scatter/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_weight.py rename to plotly/validators/scatter/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_weightsrc.py b/plotly/validators/scatter/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/hoverlabel/font/_weightsrc.py rename to plotly/validators/scatter/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/__init__.py b/plotly/validators/scatter/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/__init__.py rename to plotly/validators/scatter/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/_font.py b/plotly/validators/scatter/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/_font.py rename to plotly/validators/scatter/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/_text.py b/plotly/validators/scatter/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/_text.py rename to plotly/validators/scatter/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/__init__.py b/plotly/validators/scatter/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/__init__.py rename to plotly/validators/scatter/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_color.py b/plotly/validators/scatter/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_color.py rename to plotly/validators/scatter/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_family.py b/plotly/validators/scatter/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_family.py rename to plotly/validators/scatter/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_lineposition.py b/plotly/validators/scatter/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scatter/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_shadow.py b/plotly/validators/scatter/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_shadow.py rename to plotly/validators/scatter/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_size.py b/plotly/validators/scatter/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_size.py rename to plotly/validators/scatter/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_style.py b/plotly/validators/scatter/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_style.py rename to plotly/validators/scatter/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_textcase.py b/plotly/validators/scatter/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_textcase.py rename to plotly/validators/scatter/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_variant.py b/plotly/validators/scatter/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_variant.py rename to plotly/validators/scatter/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_weight.py b/plotly/validators/scatter/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/legendgrouptitle/font/_weight.py rename to plotly/validators/scatter/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/__init__.py b/plotly/validators/scatter/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/__init__.py rename to plotly/validators/scatter/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/_backoff.py b/plotly/validators/scatter/line/_backoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/_backoff.py rename to plotly/validators/scatter/line/_backoff.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/_backoffsrc.py b/plotly/validators/scatter/line/_backoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/_backoffsrc.py rename to plotly/validators/scatter/line/_backoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/_color.py b/plotly/validators/scatter/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/_color.py rename to plotly/validators/scatter/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/_dash.py b/plotly/validators/scatter/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/_dash.py rename to plotly/validators/scatter/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/_shape.py b/plotly/validators/scatter/line/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/_shape.py rename to plotly/validators/scatter/line/_shape.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/_simplify.py b/plotly/validators/scatter/line/_simplify.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/_simplify.py rename to plotly/validators/scatter/line/_simplify.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/_smoothing.py b/plotly/validators/scatter/line/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/_smoothing.py rename to plotly/validators/scatter/line/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/scatter/line/_width.py b/plotly/validators/scatter/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/line/_width.py rename to plotly/validators/scatter/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/__init__.py b/plotly/validators/scatter/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/__init__.py rename to plotly/validators/scatter/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_angle.py b/plotly/validators/scatter/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_angle.py rename to plotly/validators/scatter/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_angleref.py b/plotly/validators/scatter/marker/_angleref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_angleref.py rename to plotly/validators/scatter/marker/_angleref.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_anglesrc.py b/plotly/validators/scatter/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_anglesrc.py rename to plotly/validators/scatter/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_autocolorscale.py b/plotly/validators/scatter/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_autocolorscale.py rename to plotly/validators/scatter/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_cauto.py b/plotly/validators/scatter/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_cauto.py rename to plotly/validators/scatter/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_cmax.py b/plotly/validators/scatter/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_cmax.py rename to plotly/validators/scatter/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_cmid.py b/plotly/validators/scatter/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_cmid.py rename to plotly/validators/scatter/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_cmin.py b/plotly/validators/scatter/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_cmin.py rename to plotly/validators/scatter/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_color.py b/plotly/validators/scatter/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_color.py rename to plotly/validators/scatter/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_coloraxis.py b/plotly/validators/scatter/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_coloraxis.py rename to plotly/validators/scatter/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_colorbar.py b/plotly/validators/scatter/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_colorbar.py rename to plotly/validators/scatter/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_colorscale.py b/plotly/validators/scatter/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_colorscale.py rename to plotly/validators/scatter/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_colorsrc.py b/plotly/validators/scatter/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_colorsrc.py rename to plotly/validators/scatter/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_gradient.py b/plotly/validators/scatter/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_gradient.py rename to plotly/validators/scatter/marker/_gradient.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_line.py b/plotly/validators/scatter/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_line.py rename to plotly/validators/scatter/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_maxdisplayed.py b/plotly/validators/scatter/marker/_maxdisplayed.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_maxdisplayed.py rename to plotly/validators/scatter/marker/_maxdisplayed.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_opacity.py b/plotly/validators/scatter/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_opacity.py rename to plotly/validators/scatter/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_opacitysrc.py b/plotly/validators/scatter/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_opacitysrc.py rename to plotly/validators/scatter/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_reversescale.py b/plotly/validators/scatter/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_reversescale.py rename to plotly/validators/scatter/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_showscale.py b/plotly/validators/scatter/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_showscale.py rename to plotly/validators/scatter/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_size.py b/plotly/validators/scatter/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_size.py rename to plotly/validators/scatter/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_sizemin.py b/plotly/validators/scatter/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_sizemin.py rename to plotly/validators/scatter/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_sizemode.py b/plotly/validators/scatter/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_sizemode.py rename to plotly/validators/scatter/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_sizeref.py b/plotly/validators/scatter/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_sizeref.py rename to plotly/validators/scatter/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_sizesrc.py b/plotly/validators/scatter/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_sizesrc.py rename to plotly/validators/scatter/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_standoff.py b/plotly/validators/scatter/marker/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_standoff.py rename to plotly/validators/scatter/marker/_standoff.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_standoffsrc.py b/plotly/validators/scatter/marker/_standoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_standoffsrc.py rename to plotly/validators/scatter/marker/_standoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_symbol.py b/plotly/validators/scatter/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_symbol.py rename to plotly/validators/scatter/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/_symbolsrc.py b/plotly/validators/scatter/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/_symbolsrc.py rename to plotly/validators/scatter/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/__init__.py b/plotly/validators/scatter/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/__init__.py rename to plotly/validators/scatter/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_bgcolor.py b/plotly/validators/scatter/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_bgcolor.py rename to plotly/validators/scatter/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_bordercolor.py b/plotly/validators/scatter/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_bordercolor.py rename to plotly/validators/scatter/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_borderwidth.py b/plotly/validators/scatter/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_borderwidth.py rename to plotly/validators/scatter/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_dtick.py b/plotly/validators/scatter/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_dtick.py rename to plotly/validators/scatter/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_exponentformat.py b/plotly/validators/scatter/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_exponentformat.py rename to plotly/validators/scatter/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_labelalias.py b/plotly/validators/scatter/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_labelalias.py rename to plotly/validators/scatter/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_len.py b/plotly/validators/scatter/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_len.py rename to plotly/validators/scatter/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_lenmode.py b/plotly/validators/scatter/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_lenmode.py rename to plotly/validators/scatter/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_minexponent.py b/plotly/validators/scatter/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_minexponent.py rename to plotly/validators/scatter/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_nticks.py b/plotly/validators/scatter/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_nticks.py rename to plotly/validators/scatter/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_orientation.py b/plotly/validators/scatter/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_orientation.py rename to plotly/validators/scatter/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_outlinecolor.py b/plotly/validators/scatter/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_outlinecolor.py rename to plotly/validators/scatter/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_outlinewidth.py b/plotly/validators/scatter/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_outlinewidth.py rename to plotly/validators/scatter/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_separatethousands.py b/plotly/validators/scatter/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_separatethousands.py rename to plotly/validators/scatter/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_showexponent.py b/plotly/validators/scatter/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_showexponent.py rename to plotly/validators/scatter/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_showticklabels.py b/plotly/validators/scatter/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_showticklabels.py rename to plotly/validators/scatter/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_showtickprefix.py b/plotly/validators/scatter/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_showtickprefix.py rename to plotly/validators/scatter/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_showticksuffix.py b/plotly/validators/scatter/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_showticksuffix.py rename to plotly/validators/scatter/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_thickness.py b/plotly/validators/scatter/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_thickness.py rename to plotly/validators/scatter/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_thicknessmode.py b/plotly/validators/scatter/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_thicknessmode.py rename to plotly/validators/scatter/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tick0.py b/plotly/validators/scatter/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tick0.py rename to plotly/validators/scatter/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickangle.py b/plotly/validators/scatter/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickangle.py rename to plotly/validators/scatter/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickcolor.py b/plotly/validators/scatter/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickcolor.py rename to plotly/validators/scatter/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickfont.py b/plotly/validators/scatter/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickfont.py rename to plotly/validators/scatter/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickformat.py b/plotly/validators/scatter/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickformat.py rename to plotly/validators/scatter/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatter/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scatter/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickformatstops.py b/plotly/validators/scatter/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickformatstops.py rename to plotly/validators/scatter/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scatter/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scatter/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticklabelposition.py b/plotly/validators/scatter/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scatter/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticklabelstep.py b/plotly/validators/scatter/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scatter/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticklen.py b/plotly/validators/scatter/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticklen.py rename to plotly/validators/scatter/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickmode.py b/plotly/validators/scatter/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickmode.py rename to plotly/validators/scatter/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickprefix.py b/plotly/validators/scatter/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickprefix.py rename to plotly/validators/scatter/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticks.py b/plotly/validators/scatter/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticks.py rename to plotly/validators/scatter/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticksuffix.py b/plotly/validators/scatter/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticksuffix.py rename to plotly/validators/scatter/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticktext.py b/plotly/validators/scatter/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticktext.py rename to plotly/validators/scatter/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticktextsrc.py b/plotly/validators/scatter/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scatter/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickvals.py b/plotly/validators/scatter/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickvals.py rename to plotly/validators/scatter/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickvalssrc.py b/plotly/validators/scatter/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scatter/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickwidth.py b/plotly/validators/scatter/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_tickwidth.py rename to plotly/validators/scatter/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_title.py b/plotly/validators/scatter/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_title.py rename to plotly/validators/scatter/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_x.py b/plotly/validators/scatter/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_x.py rename to plotly/validators/scatter/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_xanchor.py b/plotly/validators/scatter/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_xanchor.py rename to plotly/validators/scatter/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_xpad.py b/plotly/validators/scatter/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_xpad.py rename to plotly/validators/scatter/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_xref.py b/plotly/validators/scatter/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_xref.py rename to plotly/validators/scatter/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_y.py b/plotly/validators/scatter/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_y.py rename to plotly/validators/scatter/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_yanchor.py b/plotly/validators/scatter/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_yanchor.py rename to plotly/validators/scatter/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ypad.py b/plotly/validators/scatter/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_ypad.py rename to plotly/validators/scatter/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/_yref.py b/plotly/validators/scatter/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/_yref.py rename to plotly/validators/scatter/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/__init__.py b/plotly/validators/scatter/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scatter/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_color.py b/plotly/validators/scatter/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_color.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_family.py b/plotly/validators/scatter/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_family.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scatter/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scatter/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_size.py b/plotly/validators/scatter/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_size.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_style.py b/plotly/validators/scatter/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_style.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scatter/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_variant.py b/plotly/validators/scatter/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_weight.py b/plotly/validators/scatter/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scatter/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scatter/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scatter/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scatter/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scatter/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scatter/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scatter/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scatter/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scatter/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scatter/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scatter/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scatter/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scatter/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/__init__.py b/plotly/validators/scatter/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/__init__.py rename to plotly/validators/scatter/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/_font.py b/plotly/validators/scatter/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/_font.py rename to plotly/validators/scatter/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/_side.py b/plotly/validators/scatter/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/_side.py rename to plotly/validators/scatter/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/_text.py b/plotly/validators/scatter/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/_text.py rename to plotly/validators/scatter/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/__init__.py b/plotly/validators/scatter/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/__init__.py rename to plotly/validators/scatter/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_color.py b/plotly/validators/scatter/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_color.py rename to plotly/validators/scatter/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_family.py b/plotly/validators/scatter/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_family.py rename to plotly/validators/scatter/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scatter/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scatter/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_shadow.py b/plotly/validators/scatter/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scatter/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_size.py b/plotly/validators/scatter/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_size.py rename to plotly/validators/scatter/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_style.py b/plotly/validators/scatter/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_style.py rename to plotly/validators/scatter/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_textcase.py b/plotly/validators/scatter/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scatter/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_variant.py b/plotly/validators/scatter/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_variant.py rename to plotly/validators/scatter/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_weight.py b/plotly/validators/scatter/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/colorbar/title/font/_weight.py rename to plotly/validators/scatter/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/gradient/__init__.py b/plotly/validators/scatter/marker/gradient/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/gradient/__init__.py rename to plotly/validators/scatter/marker/gradient/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/gradient/_color.py b/plotly/validators/scatter/marker/gradient/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/gradient/_color.py rename to plotly/validators/scatter/marker/gradient/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/gradient/_colorsrc.py b/plotly/validators/scatter/marker/gradient/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/gradient/_colorsrc.py rename to plotly/validators/scatter/marker/gradient/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/gradient/_type.py b/plotly/validators/scatter/marker/gradient/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/gradient/_type.py rename to plotly/validators/scatter/marker/gradient/_type.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/gradient/_typesrc.py b/plotly/validators/scatter/marker/gradient/_typesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/gradient/_typesrc.py rename to plotly/validators/scatter/marker/gradient/_typesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/__init__.py b/plotly/validators/scatter/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/__init__.py rename to plotly/validators/scatter/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_autocolorscale.py b/plotly/validators/scatter/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_autocolorscale.py rename to plotly/validators/scatter/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_cauto.py b/plotly/validators/scatter/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_cauto.py rename to plotly/validators/scatter/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_cmax.py b/plotly/validators/scatter/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_cmax.py rename to plotly/validators/scatter/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_cmid.py b/plotly/validators/scatter/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_cmid.py rename to plotly/validators/scatter/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_cmin.py b/plotly/validators/scatter/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_cmin.py rename to plotly/validators/scatter/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_color.py b/plotly/validators/scatter/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_color.py rename to plotly/validators/scatter/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_coloraxis.py b/plotly/validators/scatter/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_coloraxis.py rename to plotly/validators/scatter/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_colorscale.py b/plotly/validators/scatter/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_colorscale.py rename to plotly/validators/scatter/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_colorsrc.py b/plotly/validators/scatter/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_colorsrc.py rename to plotly/validators/scatter/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_reversescale.py b/plotly/validators/scatter/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_reversescale.py rename to plotly/validators/scatter/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_width.py b/plotly/validators/scatter/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_width.py rename to plotly/validators/scatter/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter/marker/line/_widthsrc.py b/plotly/validators/scatter/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/marker/line/_widthsrc.py rename to plotly/validators/scatter/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/__init__.py b/plotly/validators/scatter/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/__init__.py rename to plotly/validators/scatter/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/_marker.py b/plotly/validators/scatter/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/_marker.py rename to plotly/validators/scatter/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/_textfont.py b/plotly/validators/scatter/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/_textfont.py rename to plotly/validators/scatter/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/marker/__init__.py b/plotly/validators/scatter/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/marker/__init__.py rename to plotly/validators/scatter/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/marker/_color.py b/plotly/validators/scatter/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/marker/_color.py rename to plotly/validators/scatter/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/marker/_opacity.py b/plotly/validators/scatter/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/marker/_opacity.py rename to plotly/validators/scatter/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/marker/_size.py b/plotly/validators/scatter/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/marker/_size.py rename to plotly/validators/scatter/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/textfont/__init__.py b/plotly/validators/scatter/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/textfont/__init__.py rename to plotly/validators/scatter/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/selected/textfont/_color.py b/plotly/validators/scatter/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/selected/textfont/_color.py rename to plotly/validators/scatter/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/stream/__init__.py b/plotly/validators/scatter/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/stream/__init__.py rename to plotly/validators/scatter/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/stream/_maxpoints.py b/plotly/validators/scatter/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/stream/_maxpoints.py rename to plotly/validators/scatter/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scatter/stream/_token.py b/plotly/validators/scatter/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/stream/_token.py rename to plotly/validators/scatter/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/__init__.py b/plotly/validators/scatter/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/__init__.py rename to plotly/validators/scatter/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_color.py b/plotly/validators/scatter/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_color.py rename to plotly/validators/scatter/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_colorsrc.py b/plotly/validators/scatter/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_colorsrc.py rename to plotly/validators/scatter/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_family.py b/plotly/validators/scatter/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_family.py rename to plotly/validators/scatter/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_familysrc.py b/plotly/validators/scatter/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_familysrc.py rename to plotly/validators/scatter/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_lineposition.py b/plotly/validators/scatter/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_lineposition.py rename to plotly/validators/scatter/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_linepositionsrc.py b/plotly/validators/scatter/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_linepositionsrc.py rename to plotly/validators/scatter/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_shadow.py b/plotly/validators/scatter/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_shadow.py rename to plotly/validators/scatter/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_shadowsrc.py b/plotly/validators/scatter/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_shadowsrc.py rename to plotly/validators/scatter/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_size.py b/plotly/validators/scatter/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_size.py rename to plotly/validators/scatter/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_sizesrc.py b/plotly/validators/scatter/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_sizesrc.py rename to plotly/validators/scatter/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_style.py b/plotly/validators/scatter/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_style.py rename to plotly/validators/scatter/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_stylesrc.py b/plotly/validators/scatter/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_stylesrc.py rename to plotly/validators/scatter/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_textcase.py b/plotly/validators/scatter/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_textcase.py rename to plotly/validators/scatter/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_textcasesrc.py b/plotly/validators/scatter/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_textcasesrc.py rename to plotly/validators/scatter/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_variant.py b/plotly/validators/scatter/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_variant.py rename to plotly/validators/scatter/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_variantsrc.py b/plotly/validators/scatter/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_variantsrc.py rename to plotly/validators/scatter/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_weight.py b/plotly/validators/scatter/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_weight.py rename to plotly/validators/scatter/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter/textfont/_weightsrc.py b/plotly/validators/scatter/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/textfont/_weightsrc.py rename to plotly/validators/scatter/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/__init__.py b/plotly/validators/scatter/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/__init__.py rename to plotly/validators/scatter/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/_marker.py b/plotly/validators/scatter/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/_marker.py rename to plotly/validators/scatter/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/_textfont.py b/plotly/validators/scatter/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/_textfont.py rename to plotly/validators/scatter/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/marker/__init__.py b/plotly/validators/scatter/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/marker/__init__.py rename to plotly/validators/scatter/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/marker/_color.py b/plotly/validators/scatter/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/marker/_color.py rename to plotly/validators/scatter/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/marker/_opacity.py b/plotly/validators/scatter/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/marker/_opacity.py rename to plotly/validators/scatter/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/marker/_size.py b/plotly/validators/scatter/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/marker/_size.py rename to plotly/validators/scatter/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/textfont/__init__.py b/plotly/validators/scatter/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/textfont/__init__.py rename to plotly/validators/scatter/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter/unselected/textfont/_color.py b/plotly/validators/scatter/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter/unselected/textfont/_color.py rename to plotly/validators/scatter/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/__init__.py b/plotly/validators/scatter3d/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/__init__.py rename to plotly/validators/scatter3d/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_connectgaps.py b/plotly/validators/scatter3d/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_connectgaps.py rename to plotly/validators/scatter3d/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_customdata.py b/plotly/validators/scatter3d/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_customdata.py rename to plotly/validators/scatter3d/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_customdatasrc.py b/plotly/validators/scatter3d/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_customdatasrc.py rename to plotly/validators/scatter3d/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_error_x.py b/plotly/validators/scatter3d/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_error_x.py rename to plotly/validators/scatter3d/_error_x.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_error_y.py b/plotly/validators/scatter3d/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_error_y.py rename to plotly/validators/scatter3d/_error_y.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_error_z.py b/plotly/validators/scatter3d/_error_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_error_z.py rename to plotly/validators/scatter3d/_error_z.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_hoverinfo.py b/plotly/validators/scatter3d/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_hoverinfo.py rename to plotly/validators/scatter3d/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_hoverinfosrc.py b/plotly/validators/scatter3d/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_hoverinfosrc.py rename to plotly/validators/scatter3d/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_hoverlabel.py b/plotly/validators/scatter3d/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_hoverlabel.py rename to plotly/validators/scatter3d/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_hovertemplate.py b/plotly/validators/scatter3d/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_hovertemplate.py rename to plotly/validators/scatter3d/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_hovertemplatesrc.py b/plotly/validators/scatter3d/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_hovertemplatesrc.py rename to plotly/validators/scatter3d/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_hovertext.py b/plotly/validators/scatter3d/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_hovertext.py rename to plotly/validators/scatter3d/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_hovertextsrc.py b/plotly/validators/scatter3d/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_hovertextsrc.py rename to plotly/validators/scatter3d/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_ids.py b/plotly/validators/scatter3d/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_ids.py rename to plotly/validators/scatter3d/_ids.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_idssrc.py b/plotly/validators/scatter3d/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_idssrc.py rename to plotly/validators/scatter3d/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_legend.py b/plotly/validators/scatter3d/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_legend.py rename to plotly/validators/scatter3d/_legend.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_legendgroup.py b/plotly/validators/scatter3d/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_legendgroup.py rename to plotly/validators/scatter3d/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_legendgrouptitle.py b/plotly/validators/scatter3d/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_legendgrouptitle.py rename to plotly/validators/scatter3d/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_legendrank.py b/plotly/validators/scatter3d/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_legendrank.py rename to plotly/validators/scatter3d/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_legendwidth.py b/plotly/validators/scatter3d/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_legendwidth.py rename to plotly/validators/scatter3d/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_line.py b/plotly/validators/scatter3d/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_line.py rename to plotly/validators/scatter3d/_line.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_marker.py b/plotly/validators/scatter3d/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_marker.py rename to plotly/validators/scatter3d/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_meta.py b/plotly/validators/scatter3d/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_meta.py rename to plotly/validators/scatter3d/_meta.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_metasrc.py b/plotly/validators/scatter3d/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_metasrc.py rename to plotly/validators/scatter3d/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_mode.py b/plotly/validators/scatter3d/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_mode.py rename to plotly/validators/scatter3d/_mode.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_name.py b/plotly/validators/scatter3d/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_name.py rename to plotly/validators/scatter3d/_name.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_opacity.py b/plotly/validators/scatter3d/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_opacity.py rename to plotly/validators/scatter3d/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_projection.py b/plotly/validators/scatter3d/_projection.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_projection.py rename to plotly/validators/scatter3d/_projection.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_scene.py b/plotly/validators/scatter3d/_scene.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_scene.py rename to plotly/validators/scatter3d/_scene.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_showlegend.py b/plotly/validators/scatter3d/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_showlegend.py rename to plotly/validators/scatter3d/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_stream.py b/plotly/validators/scatter3d/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_stream.py rename to plotly/validators/scatter3d/_stream.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_surfaceaxis.py b/plotly/validators/scatter3d/_surfaceaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_surfaceaxis.py rename to plotly/validators/scatter3d/_surfaceaxis.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_surfacecolor.py b/plotly/validators/scatter3d/_surfacecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_surfacecolor.py rename to plotly/validators/scatter3d/_surfacecolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_text.py b/plotly/validators/scatter3d/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_text.py rename to plotly/validators/scatter3d/_text.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_textfont.py b/plotly/validators/scatter3d/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_textfont.py rename to plotly/validators/scatter3d/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_textposition.py b/plotly/validators/scatter3d/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_textposition.py rename to plotly/validators/scatter3d/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_textpositionsrc.py b/plotly/validators/scatter3d/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_textpositionsrc.py rename to plotly/validators/scatter3d/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_textsrc.py b/plotly/validators/scatter3d/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_textsrc.py rename to plotly/validators/scatter3d/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_texttemplate.py b/plotly/validators/scatter3d/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_texttemplate.py rename to plotly/validators/scatter3d/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_texttemplatesrc.py b/plotly/validators/scatter3d/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_texttemplatesrc.py rename to plotly/validators/scatter3d/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_uid.py b/plotly/validators/scatter3d/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_uid.py rename to plotly/validators/scatter3d/_uid.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_uirevision.py b/plotly/validators/scatter3d/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_uirevision.py rename to plotly/validators/scatter3d/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_visible.py b/plotly/validators/scatter3d/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_visible.py rename to plotly/validators/scatter3d/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_x.py b/plotly/validators/scatter3d/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_x.py rename to plotly/validators/scatter3d/_x.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_xcalendar.py b/plotly/validators/scatter3d/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_xcalendar.py rename to plotly/validators/scatter3d/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_xhoverformat.py b/plotly/validators/scatter3d/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_xhoverformat.py rename to plotly/validators/scatter3d/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_xsrc.py b/plotly/validators/scatter3d/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_xsrc.py rename to plotly/validators/scatter3d/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_y.py b/plotly/validators/scatter3d/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_y.py rename to plotly/validators/scatter3d/_y.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_ycalendar.py b/plotly/validators/scatter3d/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_ycalendar.py rename to plotly/validators/scatter3d/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_yhoverformat.py b/plotly/validators/scatter3d/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_yhoverformat.py rename to plotly/validators/scatter3d/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_ysrc.py b/plotly/validators/scatter3d/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_ysrc.py rename to plotly/validators/scatter3d/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_z.py b/plotly/validators/scatter3d/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_z.py rename to plotly/validators/scatter3d/_z.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_zcalendar.py b/plotly/validators/scatter3d/_zcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_zcalendar.py rename to plotly/validators/scatter3d/_zcalendar.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_zhoverformat.py b/plotly/validators/scatter3d/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_zhoverformat.py rename to plotly/validators/scatter3d/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/_zsrc.py b/plotly/validators/scatter3d/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/_zsrc.py rename to plotly/validators/scatter3d/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/__init__.py b/plotly/validators/scatter3d/error_x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/__init__.py rename to plotly/validators/scatter3d/error_x/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_array.py b/plotly/validators/scatter3d/error_x/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_array.py rename to plotly/validators/scatter3d/error_x/_array.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_arrayminus.py b/plotly/validators/scatter3d/error_x/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_arrayminus.py rename to plotly/validators/scatter3d/error_x/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_arrayminussrc.py b/plotly/validators/scatter3d/error_x/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_arrayminussrc.py rename to plotly/validators/scatter3d/error_x/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_arraysrc.py b/plotly/validators/scatter3d/error_x/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_arraysrc.py rename to plotly/validators/scatter3d/error_x/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_color.py b/plotly/validators/scatter3d/error_x/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_color.py rename to plotly/validators/scatter3d/error_x/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_copy_zstyle.py b/plotly/validators/scatter3d/error_x/_copy_zstyle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_copy_zstyle.py rename to plotly/validators/scatter3d/error_x/_copy_zstyle.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_symmetric.py b/plotly/validators/scatter3d/error_x/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_symmetric.py rename to plotly/validators/scatter3d/error_x/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_thickness.py b/plotly/validators/scatter3d/error_x/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_thickness.py rename to plotly/validators/scatter3d/error_x/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_traceref.py b/plotly/validators/scatter3d/error_x/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_traceref.py rename to plotly/validators/scatter3d/error_x/_traceref.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_tracerefminus.py b/plotly/validators/scatter3d/error_x/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_tracerefminus.py rename to plotly/validators/scatter3d/error_x/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_type.py b/plotly/validators/scatter3d/error_x/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_type.py rename to plotly/validators/scatter3d/error_x/_type.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_value.py b/plotly/validators/scatter3d/error_x/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_value.py rename to plotly/validators/scatter3d/error_x/_value.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_valueminus.py b/plotly/validators/scatter3d/error_x/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_valueminus.py rename to plotly/validators/scatter3d/error_x/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_visible.py b/plotly/validators/scatter3d/error_x/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_visible.py rename to plotly/validators/scatter3d/error_x/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_x/_width.py b/plotly/validators/scatter3d/error_x/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_x/_width.py rename to plotly/validators/scatter3d/error_x/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/__init__.py b/plotly/validators/scatter3d/error_y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/__init__.py rename to plotly/validators/scatter3d/error_y/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_array.py b/plotly/validators/scatter3d/error_y/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_array.py rename to plotly/validators/scatter3d/error_y/_array.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_arrayminus.py b/plotly/validators/scatter3d/error_y/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_arrayminus.py rename to plotly/validators/scatter3d/error_y/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_arrayminussrc.py b/plotly/validators/scatter3d/error_y/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_arrayminussrc.py rename to plotly/validators/scatter3d/error_y/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_arraysrc.py b/plotly/validators/scatter3d/error_y/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_arraysrc.py rename to plotly/validators/scatter3d/error_y/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_color.py b/plotly/validators/scatter3d/error_y/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_color.py rename to plotly/validators/scatter3d/error_y/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_copy_zstyle.py b/plotly/validators/scatter3d/error_y/_copy_zstyle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_copy_zstyle.py rename to plotly/validators/scatter3d/error_y/_copy_zstyle.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_symmetric.py b/plotly/validators/scatter3d/error_y/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_symmetric.py rename to plotly/validators/scatter3d/error_y/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_thickness.py b/plotly/validators/scatter3d/error_y/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_thickness.py rename to plotly/validators/scatter3d/error_y/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_traceref.py b/plotly/validators/scatter3d/error_y/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_traceref.py rename to plotly/validators/scatter3d/error_y/_traceref.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_tracerefminus.py b/plotly/validators/scatter3d/error_y/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_tracerefminus.py rename to plotly/validators/scatter3d/error_y/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_type.py b/plotly/validators/scatter3d/error_y/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_type.py rename to plotly/validators/scatter3d/error_y/_type.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_value.py b/plotly/validators/scatter3d/error_y/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_value.py rename to plotly/validators/scatter3d/error_y/_value.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_valueminus.py b/plotly/validators/scatter3d/error_y/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_valueminus.py rename to plotly/validators/scatter3d/error_y/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_visible.py b/plotly/validators/scatter3d/error_y/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_visible.py rename to plotly/validators/scatter3d/error_y/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_y/_width.py b/plotly/validators/scatter3d/error_y/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_y/_width.py rename to plotly/validators/scatter3d/error_y/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/__init__.py b/plotly/validators/scatter3d/error_z/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/__init__.py rename to plotly/validators/scatter3d/error_z/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_array.py b/plotly/validators/scatter3d/error_z/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_array.py rename to plotly/validators/scatter3d/error_z/_array.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_arrayminus.py b/plotly/validators/scatter3d/error_z/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_arrayminus.py rename to plotly/validators/scatter3d/error_z/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_arrayminussrc.py b/plotly/validators/scatter3d/error_z/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_arrayminussrc.py rename to plotly/validators/scatter3d/error_z/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_arraysrc.py b/plotly/validators/scatter3d/error_z/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_arraysrc.py rename to plotly/validators/scatter3d/error_z/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_color.py b/plotly/validators/scatter3d/error_z/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_color.py rename to plotly/validators/scatter3d/error_z/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_symmetric.py b/plotly/validators/scatter3d/error_z/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_symmetric.py rename to plotly/validators/scatter3d/error_z/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_thickness.py b/plotly/validators/scatter3d/error_z/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_thickness.py rename to plotly/validators/scatter3d/error_z/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_traceref.py b/plotly/validators/scatter3d/error_z/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_traceref.py rename to plotly/validators/scatter3d/error_z/_traceref.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_tracerefminus.py b/plotly/validators/scatter3d/error_z/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_tracerefminus.py rename to plotly/validators/scatter3d/error_z/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_type.py b/plotly/validators/scatter3d/error_z/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_type.py rename to plotly/validators/scatter3d/error_z/_type.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_value.py b/plotly/validators/scatter3d/error_z/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_value.py rename to plotly/validators/scatter3d/error_z/_value.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_valueminus.py b/plotly/validators/scatter3d/error_z/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_valueminus.py rename to plotly/validators/scatter3d/error_z/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_visible.py b/plotly/validators/scatter3d/error_z/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_visible.py rename to plotly/validators/scatter3d/error_z/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/error_z/_width.py b/plotly/validators/scatter3d/error_z/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/error_z/_width.py rename to plotly/validators/scatter3d/error_z/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/__init__.py b/plotly/validators/scatter3d/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/__init__.py rename to plotly/validators/scatter3d/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_align.py b/plotly/validators/scatter3d/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_align.py rename to plotly/validators/scatter3d/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_alignsrc.py b/plotly/validators/scatter3d/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_alignsrc.py rename to plotly/validators/scatter3d/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_bgcolor.py b/plotly/validators/scatter3d/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_bgcolor.py rename to plotly/validators/scatter3d/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_bgcolorsrc.py b/plotly/validators/scatter3d/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scatter3d/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_bordercolor.py b/plotly/validators/scatter3d/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_bordercolor.py rename to plotly/validators/scatter3d/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_bordercolorsrc.py b/plotly/validators/scatter3d/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scatter3d/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_font.py b/plotly/validators/scatter3d/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_font.py rename to plotly/validators/scatter3d/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_namelength.py b/plotly/validators/scatter3d/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_namelength.py rename to plotly/validators/scatter3d/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_namelengthsrc.py b/plotly/validators/scatter3d/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/_namelengthsrc.py rename to plotly/validators/scatter3d/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/__init__.py b/plotly/validators/scatter3d/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/__init__.py rename to plotly/validators/scatter3d/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_color.py b/plotly/validators/scatter3d/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_color.py rename to plotly/validators/scatter3d/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_colorsrc.py b/plotly/validators/scatter3d/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_colorsrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_family.py b/plotly/validators/scatter3d/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_family.py rename to plotly/validators/scatter3d/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_familysrc.py b/plotly/validators/scatter3d/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_familysrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_lineposition.py b/plotly/validators/scatter3d/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_lineposition.py rename to plotly/validators/scatter3d/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scatter3d/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_shadow.py b/plotly/validators/scatter3d/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_shadow.py rename to plotly/validators/scatter3d/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_shadowsrc.py b/plotly/validators/scatter3d/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_size.py b/plotly/validators/scatter3d/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_size.py rename to plotly/validators/scatter3d/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_sizesrc.py b/plotly/validators/scatter3d/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_sizesrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_style.py b/plotly/validators/scatter3d/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_style.py rename to plotly/validators/scatter3d/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_stylesrc.py b/plotly/validators/scatter3d/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_stylesrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_textcase.py b/plotly/validators/scatter3d/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_textcase.py rename to plotly/validators/scatter3d/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_textcasesrc.py b/plotly/validators/scatter3d/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_variant.py b/plotly/validators/scatter3d/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_variant.py rename to plotly/validators/scatter3d/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_variantsrc.py b/plotly/validators/scatter3d/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_variantsrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_weight.py b/plotly/validators/scatter3d/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_weight.py rename to plotly/validators/scatter3d/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_weightsrc.py b/plotly/validators/scatter3d/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/hoverlabel/font/_weightsrc.py rename to plotly/validators/scatter3d/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/__init__.py b/plotly/validators/scatter3d/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/__init__.py rename to plotly/validators/scatter3d/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/_font.py b/plotly/validators/scatter3d/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/_font.py rename to plotly/validators/scatter3d/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/_text.py b/plotly/validators/scatter3d/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/_text.py rename to plotly/validators/scatter3d/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/__init__.py b/plotly/validators/scatter3d/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/__init__.py rename to plotly/validators/scatter3d/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_color.py b/plotly/validators/scatter3d/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_color.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_family.py b/plotly/validators/scatter3d/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_family.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_lineposition.py b/plotly/validators/scatter3d/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_shadow.py b/plotly/validators/scatter3d/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_shadow.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_size.py b/plotly/validators/scatter3d/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_size.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_style.py b/plotly/validators/scatter3d/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_style.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_textcase.py b/plotly/validators/scatter3d/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_textcase.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_variant.py b/plotly/validators/scatter3d/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_variant.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_weight.py b/plotly/validators/scatter3d/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/legendgrouptitle/font/_weight.py rename to plotly/validators/scatter3d/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/__init__.py b/plotly/validators/scatter3d/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/__init__.py rename to plotly/validators/scatter3d/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_autocolorscale.py b/plotly/validators/scatter3d/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_autocolorscale.py rename to plotly/validators/scatter3d/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_cauto.py b/plotly/validators/scatter3d/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_cauto.py rename to plotly/validators/scatter3d/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_cmax.py b/plotly/validators/scatter3d/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_cmax.py rename to plotly/validators/scatter3d/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_cmid.py b/plotly/validators/scatter3d/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_cmid.py rename to plotly/validators/scatter3d/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_cmin.py b/plotly/validators/scatter3d/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_cmin.py rename to plotly/validators/scatter3d/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_color.py b/plotly/validators/scatter3d/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_color.py rename to plotly/validators/scatter3d/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_coloraxis.py b/plotly/validators/scatter3d/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_coloraxis.py rename to plotly/validators/scatter3d/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_colorbar.py b/plotly/validators/scatter3d/line/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_colorbar.py rename to plotly/validators/scatter3d/line/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_colorscale.py b/plotly/validators/scatter3d/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_colorscale.py rename to plotly/validators/scatter3d/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_colorsrc.py b/plotly/validators/scatter3d/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_colorsrc.py rename to plotly/validators/scatter3d/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_dash.py b/plotly/validators/scatter3d/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_dash.py rename to plotly/validators/scatter3d/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_reversescale.py b/plotly/validators/scatter3d/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_reversescale.py rename to plotly/validators/scatter3d/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_showscale.py b/plotly/validators/scatter3d/line/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_showscale.py rename to plotly/validators/scatter3d/line/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/_width.py b/plotly/validators/scatter3d/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/_width.py rename to plotly/validators/scatter3d/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/__init__.py b/plotly/validators/scatter3d/line/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/__init__.py rename to plotly/validators/scatter3d/line/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_bgcolor.py b/plotly/validators/scatter3d/line/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_bgcolor.py rename to plotly/validators/scatter3d/line/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_bordercolor.py b/plotly/validators/scatter3d/line/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_bordercolor.py rename to plotly/validators/scatter3d/line/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_borderwidth.py b/plotly/validators/scatter3d/line/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_borderwidth.py rename to plotly/validators/scatter3d/line/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_dtick.py b/plotly/validators/scatter3d/line/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_dtick.py rename to plotly/validators/scatter3d/line/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_exponentformat.py b/plotly/validators/scatter3d/line/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_exponentformat.py rename to plotly/validators/scatter3d/line/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_labelalias.py b/plotly/validators/scatter3d/line/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_labelalias.py rename to plotly/validators/scatter3d/line/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_len.py b/plotly/validators/scatter3d/line/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_len.py rename to plotly/validators/scatter3d/line/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_lenmode.py b/plotly/validators/scatter3d/line/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_lenmode.py rename to plotly/validators/scatter3d/line/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_minexponent.py b/plotly/validators/scatter3d/line/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_minexponent.py rename to plotly/validators/scatter3d/line/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_nticks.py b/plotly/validators/scatter3d/line/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_nticks.py rename to plotly/validators/scatter3d/line/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_orientation.py b/plotly/validators/scatter3d/line/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_orientation.py rename to plotly/validators/scatter3d/line/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_outlinecolor.py b/plotly/validators/scatter3d/line/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_outlinecolor.py rename to plotly/validators/scatter3d/line/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_outlinewidth.py b/plotly/validators/scatter3d/line/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_outlinewidth.py rename to plotly/validators/scatter3d/line/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_separatethousands.py b/plotly/validators/scatter3d/line/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_separatethousands.py rename to plotly/validators/scatter3d/line/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_showexponent.py b/plotly/validators/scatter3d/line/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_showexponent.py rename to plotly/validators/scatter3d/line/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_showticklabels.py b/plotly/validators/scatter3d/line/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_showticklabels.py rename to plotly/validators/scatter3d/line/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_showtickprefix.py b/plotly/validators/scatter3d/line/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_showtickprefix.py rename to plotly/validators/scatter3d/line/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_showticksuffix.py b/plotly/validators/scatter3d/line/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_showticksuffix.py rename to plotly/validators/scatter3d/line/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_thickness.py b/plotly/validators/scatter3d/line/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_thickness.py rename to plotly/validators/scatter3d/line/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_thicknessmode.py b/plotly/validators/scatter3d/line/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_thicknessmode.py rename to plotly/validators/scatter3d/line/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tick0.py b/plotly/validators/scatter3d/line/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tick0.py rename to plotly/validators/scatter3d/line/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickangle.py b/plotly/validators/scatter3d/line/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickangle.py rename to plotly/validators/scatter3d/line/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickcolor.py b/plotly/validators/scatter3d/line/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickcolor.py rename to plotly/validators/scatter3d/line/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickfont.py b/plotly/validators/scatter3d/line/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickfont.py rename to plotly/validators/scatter3d/line/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickformat.py b/plotly/validators/scatter3d/line/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickformat.py rename to plotly/validators/scatter3d/line/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatter3d/line/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scatter3d/line/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickformatstops.py b/plotly/validators/scatter3d/line/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickformatstops.py rename to plotly/validators/scatter3d/line/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticklabeloverflow.py b/plotly/validators/scatter3d/line/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticklabeloverflow.py rename to plotly/validators/scatter3d/line/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticklabelposition.py b/plotly/validators/scatter3d/line/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticklabelposition.py rename to plotly/validators/scatter3d/line/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticklabelstep.py b/plotly/validators/scatter3d/line/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticklabelstep.py rename to plotly/validators/scatter3d/line/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticklen.py b/plotly/validators/scatter3d/line/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticklen.py rename to plotly/validators/scatter3d/line/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickmode.py b/plotly/validators/scatter3d/line/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickmode.py rename to plotly/validators/scatter3d/line/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickprefix.py b/plotly/validators/scatter3d/line/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickprefix.py rename to plotly/validators/scatter3d/line/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticks.py b/plotly/validators/scatter3d/line/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticks.py rename to plotly/validators/scatter3d/line/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticksuffix.py b/plotly/validators/scatter3d/line/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticksuffix.py rename to plotly/validators/scatter3d/line/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticktext.py b/plotly/validators/scatter3d/line/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticktext.py rename to plotly/validators/scatter3d/line/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticktextsrc.py b/plotly/validators/scatter3d/line/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ticktextsrc.py rename to plotly/validators/scatter3d/line/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickvals.py b/plotly/validators/scatter3d/line/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickvals.py rename to plotly/validators/scatter3d/line/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickvalssrc.py b/plotly/validators/scatter3d/line/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickvalssrc.py rename to plotly/validators/scatter3d/line/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickwidth.py b/plotly/validators/scatter3d/line/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_tickwidth.py rename to plotly/validators/scatter3d/line/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_title.py b/plotly/validators/scatter3d/line/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_title.py rename to plotly/validators/scatter3d/line/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_x.py b/plotly/validators/scatter3d/line/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_x.py rename to plotly/validators/scatter3d/line/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_xanchor.py b/plotly/validators/scatter3d/line/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_xanchor.py rename to plotly/validators/scatter3d/line/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_xpad.py b/plotly/validators/scatter3d/line/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_xpad.py rename to plotly/validators/scatter3d/line/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_xref.py b/plotly/validators/scatter3d/line/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_xref.py rename to plotly/validators/scatter3d/line/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_y.py b/plotly/validators/scatter3d/line/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_y.py rename to plotly/validators/scatter3d/line/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_yanchor.py b/plotly/validators/scatter3d/line/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_yanchor.py rename to plotly/validators/scatter3d/line/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ypad.py b/plotly/validators/scatter3d/line/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_ypad.py rename to plotly/validators/scatter3d/line/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_yref.py b/plotly/validators/scatter3d/line/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/_yref.py rename to plotly/validators/scatter3d/line/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/__init__.py b/plotly/validators/scatter3d/line/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/__init__.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_color.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_color.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_family.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_family.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_lineposition.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_lineposition.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_shadow.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_shadow.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_size.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_size.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_style.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_style.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_textcase.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_textcase.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_variant.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_variant.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_weight.py b/plotly/validators/scatter3d/line/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickfont/_weight.py rename to plotly/validators/scatter3d/line/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/__init__.py b/plotly/validators/scatter3d/line/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/__init__.py rename to plotly/validators/scatter3d/line/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scatter3d/line/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scatter3d/line/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_enabled.py b/plotly/validators/scatter3d/line/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scatter3d/line/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_name.py b/plotly/validators/scatter3d/line/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_name.py rename to plotly/validators/scatter3d/line/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scatter3d/line/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scatter3d/line/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_value.py b/plotly/validators/scatter3d/line/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/tickformatstop/_value.py rename to plotly/validators/scatter3d/line/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/__init__.py b/plotly/validators/scatter3d/line/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/__init__.py rename to plotly/validators/scatter3d/line/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/_font.py b/plotly/validators/scatter3d/line/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/_font.py rename to plotly/validators/scatter3d/line/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/_side.py b/plotly/validators/scatter3d/line/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/_side.py rename to plotly/validators/scatter3d/line/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/_text.py b/plotly/validators/scatter3d/line/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/_text.py rename to plotly/validators/scatter3d/line/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/__init__.py b/plotly/validators/scatter3d/line/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/__init__.py rename to plotly/validators/scatter3d/line/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_color.py b/plotly/validators/scatter3d/line/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_color.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_family.py b/plotly/validators/scatter3d/line/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_family.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_lineposition.py b/plotly/validators/scatter3d/line/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_lineposition.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_shadow.py b/plotly/validators/scatter3d/line/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_shadow.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_size.py b/plotly/validators/scatter3d/line/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_size.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_style.py b/plotly/validators/scatter3d/line/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_style.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_textcase.py b/plotly/validators/scatter3d/line/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_textcase.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_variant.py b/plotly/validators/scatter3d/line/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_variant.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_weight.py b/plotly/validators/scatter3d/line/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/line/colorbar/title/font/_weight.py rename to plotly/validators/scatter3d/line/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/__init__.py b/plotly/validators/scatter3d/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/__init__.py rename to plotly/validators/scatter3d/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_autocolorscale.py b/plotly/validators/scatter3d/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_autocolorscale.py rename to plotly/validators/scatter3d/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_cauto.py b/plotly/validators/scatter3d/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_cauto.py rename to plotly/validators/scatter3d/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_cmax.py b/plotly/validators/scatter3d/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_cmax.py rename to plotly/validators/scatter3d/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_cmid.py b/plotly/validators/scatter3d/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_cmid.py rename to plotly/validators/scatter3d/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_cmin.py b/plotly/validators/scatter3d/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_cmin.py rename to plotly/validators/scatter3d/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_color.py b/plotly/validators/scatter3d/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_color.py rename to plotly/validators/scatter3d/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_coloraxis.py b/plotly/validators/scatter3d/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_coloraxis.py rename to plotly/validators/scatter3d/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_colorbar.py b/plotly/validators/scatter3d/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_colorbar.py rename to plotly/validators/scatter3d/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_colorscale.py b/plotly/validators/scatter3d/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_colorscale.py rename to plotly/validators/scatter3d/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_colorsrc.py b/plotly/validators/scatter3d/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_colorsrc.py rename to plotly/validators/scatter3d/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_line.py b/plotly/validators/scatter3d/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_line.py rename to plotly/validators/scatter3d/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_opacity.py b/plotly/validators/scatter3d/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_opacity.py rename to plotly/validators/scatter3d/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_reversescale.py b/plotly/validators/scatter3d/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_reversescale.py rename to plotly/validators/scatter3d/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_showscale.py b/plotly/validators/scatter3d/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_showscale.py rename to plotly/validators/scatter3d/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_size.py b/plotly/validators/scatter3d/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_size.py rename to plotly/validators/scatter3d/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_sizemin.py b/plotly/validators/scatter3d/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_sizemin.py rename to plotly/validators/scatter3d/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_sizemode.py b/plotly/validators/scatter3d/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_sizemode.py rename to plotly/validators/scatter3d/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_sizeref.py b/plotly/validators/scatter3d/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_sizeref.py rename to plotly/validators/scatter3d/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_sizesrc.py b/plotly/validators/scatter3d/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_sizesrc.py rename to plotly/validators/scatter3d/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_symbol.py b/plotly/validators/scatter3d/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_symbol.py rename to plotly/validators/scatter3d/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/_symbolsrc.py b/plotly/validators/scatter3d/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/_symbolsrc.py rename to plotly/validators/scatter3d/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/__init__.py b/plotly/validators/scatter3d/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/__init__.py rename to plotly/validators/scatter3d/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_bgcolor.py b/plotly/validators/scatter3d/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_bgcolor.py rename to plotly/validators/scatter3d/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_bordercolor.py b/plotly/validators/scatter3d/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_bordercolor.py rename to plotly/validators/scatter3d/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_borderwidth.py b/plotly/validators/scatter3d/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_borderwidth.py rename to plotly/validators/scatter3d/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_dtick.py b/plotly/validators/scatter3d/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_dtick.py rename to plotly/validators/scatter3d/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_exponentformat.py b/plotly/validators/scatter3d/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_exponentformat.py rename to plotly/validators/scatter3d/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_labelalias.py b/plotly/validators/scatter3d/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_labelalias.py rename to plotly/validators/scatter3d/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_len.py b/plotly/validators/scatter3d/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_len.py rename to plotly/validators/scatter3d/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_lenmode.py b/plotly/validators/scatter3d/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_lenmode.py rename to plotly/validators/scatter3d/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_minexponent.py b/plotly/validators/scatter3d/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_minexponent.py rename to plotly/validators/scatter3d/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_nticks.py b/plotly/validators/scatter3d/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_nticks.py rename to plotly/validators/scatter3d/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_orientation.py b/plotly/validators/scatter3d/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_orientation.py rename to plotly/validators/scatter3d/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_outlinecolor.py b/plotly/validators/scatter3d/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_outlinecolor.py rename to plotly/validators/scatter3d/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_outlinewidth.py b/plotly/validators/scatter3d/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_outlinewidth.py rename to plotly/validators/scatter3d/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_separatethousands.py b/plotly/validators/scatter3d/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_separatethousands.py rename to plotly/validators/scatter3d/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_showexponent.py b/plotly/validators/scatter3d/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_showexponent.py rename to plotly/validators/scatter3d/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_showticklabels.py b/plotly/validators/scatter3d/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_showticklabels.py rename to plotly/validators/scatter3d/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_showtickprefix.py b/plotly/validators/scatter3d/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_showtickprefix.py rename to plotly/validators/scatter3d/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_showticksuffix.py b/plotly/validators/scatter3d/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_showticksuffix.py rename to plotly/validators/scatter3d/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_thickness.py b/plotly/validators/scatter3d/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_thickness.py rename to plotly/validators/scatter3d/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_thicknessmode.py b/plotly/validators/scatter3d/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_thicknessmode.py rename to plotly/validators/scatter3d/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tick0.py b/plotly/validators/scatter3d/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tick0.py rename to plotly/validators/scatter3d/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickangle.py b/plotly/validators/scatter3d/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickangle.py rename to plotly/validators/scatter3d/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickcolor.py b/plotly/validators/scatter3d/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickcolor.py rename to plotly/validators/scatter3d/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickfont.py b/plotly/validators/scatter3d/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickfont.py rename to plotly/validators/scatter3d/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickformat.py b/plotly/validators/scatter3d/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickformat.py rename to plotly/validators/scatter3d/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatter3d/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scatter3d/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickformatstops.py b/plotly/validators/scatter3d/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickformatstops.py rename to plotly/validators/scatter3d/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scatter3d/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scatter3d/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticklabelposition.py b/plotly/validators/scatter3d/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scatter3d/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticklabelstep.py b/plotly/validators/scatter3d/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scatter3d/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticklen.py b/plotly/validators/scatter3d/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticklen.py rename to plotly/validators/scatter3d/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickmode.py b/plotly/validators/scatter3d/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickmode.py rename to plotly/validators/scatter3d/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickprefix.py b/plotly/validators/scatter3d/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickprefix.py rename to plotly/validators/scatter3d/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticks.py b/plotly/validators/scatter3d/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticks.py rename to plotly/validators/scatter3d/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticksuffix.py b/plotly/validators/scatter3d/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticksuffix.py rename to plotly/validators/scatter3d/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticktext.py b/plotly/validators/scatter3d/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticktext.py rename to plotly/validators/scatter3d/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticktextsrc.py b/plotly/validators/scatter3d/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scatter3d/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickvals.py b/plotly/validators/scatter3d/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickvals.py rename to plotly/validators/scatter3d/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickvalssrc.py b/plotly/validators/scatter3d/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scatter3d/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickwidth.py b/plotly/validators/scatter3d/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_tickwidth.py rename to plotly/validators/scatter3d/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_title.py b/plotly/validators/scatter3d/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_title.py rename to plotly/validators/scatter3d/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_x.py b/plotly/validators/scatter3d/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_x.py rename to plotly/validators/scatter3d/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_xanchor.py b/plotly/validators/scatter3d/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_xanchor.py rename to plotly/validators/scatter3d/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_xpad.py b/plotly/validators/scatter3d/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_xpad.py rename to plotly/validators/scatter3d/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_xref.py b/plotly/validators/scatter3d/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_xref.py rename to plotly/validators/scatter3d/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_y.py b/plotly/validators/scatter3d/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_y.py rename to plotly/validators/scatter3d/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_yanchor.py b/plotly/validators/scatter3d/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_yanchor.py rename to plotly/validators/scatter3d/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ypad.py b/plotly/validators/scatter3d/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_ypad.py rename to plotly/validators/scatter3d/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_yref.py b/plotly/validators/scatter3d/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/_yref.py rename to plotly/validators/scatter3d/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/__init__.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_color.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_color.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_family.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_family.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_size.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_size.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_style.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_style.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_variant.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_weight.py b/plotly/validators/scatter3d/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scatter3d/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scatter3d/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scatter3d/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scatter3d/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scatter3d/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scatter3d/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scatter3d/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scatter3d/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/__init__.py b/plotly/validators/scatter3d/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/__init__.py rename to plotly/validators/scatter3d/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/_font.py b/plotly/validators/scatter3d/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/_font.py rename to plotly/validators/scatter3d/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/_side.py b/plotly/validators/scatter3d/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/_side.py rename to plotly/validators/scatter3d/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/_text.py b/plotly/validators/scatter3d/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/_text.py rename to plotly/validators/scatter3d/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/__init__.py b/plotly/validators/scatter3d/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/__init__.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_color.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_color.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_family.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_family.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_shadow.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_size.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_size.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_style.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_style.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_textcase.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_variant.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_variant.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_weight.py b/plotly/validators/scatter3d/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/colorbar/title/font/_weight.py rename to plotly/validators/scatter3d/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/__init__.py b/plotly/validators/scatter3d/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/__init__.py rename to plotly/validators/scatter3d/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_autocolorscale.py b/plotly/validators/scatter3d/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_autocolorscale.py rename to plotly/validators/scatter3d/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_cauto.py b/plotly/validators/scatter3d/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_cauto.py rename to plotly/validators/scatter3d/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_cmax.py b/plotly/validators/scatter3d/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_cmax.py rename to plotly/validators/scatter3d/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_cmid.py b/plotly/validators/scatter3d/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_cmid.py rename to plotly/validators/scatter3d/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_cmin.py b/plotly/validators/scatter3d/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_cmin.py rename to plotly/validators/scatter3d/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_color.py b/plotly/validators/scatter3d/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_color.py rename to plotly/validators/scatter3d/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_coloraxis.py b/plotly/validators/scatter3d/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_coloraxis.py rename to plotly/validators/scatter3d/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_colorscale.py b/plotly/validators/scatter3d/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_colorscale.py rename to plotly/validators/scatter3d/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_colorsrc.py b/plotly/validators/scatter3d/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_colorsrc.py rename to plotly/validators/scatter3d/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_reversescale.py b/plotly/validators/scatter3d/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_reversescale.py rename to plotly/validators/scatter3d/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/marker/line/_width.py b/plotly/validators/scatter3d/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/marker/line/_width.py rename to plotly/validators/scatter3d/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/__init__.py b/plotly/validators/scatter3d/projection/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/__init__.py rename to plotly/validators/scatter3d/projection/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/_x.py b/plotly/validators/scatter3d/projection/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/_x.py rename to plotly/validators/scatter3d/projection/_x.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/_y.py b/plotly/validators/scatter3d/projection/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/_y.py rename to plotly/validators/scatter3d/projection/_y.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/_z.py b/plotly/validators/scatter3d/projection/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/_z.py rename to plotly/validators/scatter3d/projection/_z.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/x/__init__.py b/plotly/validators/scatter3d/projection/x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/x/__init__.py rename to plotly/validators/scatter3d/projection/x/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/x/_opacity.py b/plotly/validators/scatter3d/projection/x/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/x/_opacity.py rename to plotly/validators/scatter3d/projection/x/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/x/_scale.py b/plotly/validators/scatter3d/projection/x/_scale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/x/_scale.py rename to plotly/validators/scatter3d/projection/x/_scale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/x/_show.py b/plotly/validators/scatter3d/projection/x/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/x/_show.py rename to plotly/validators/scatter3d/projection/x/_show.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/y/__init__.py b/plotly/validators/scatter3d/projection/y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/y/__init__.py rename to plotly/validators/scatter3d/projection/y/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/y/_opacity.py b/plotly/validators/scatter3d/projection/y/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/y/_opacity.py rename to plotly/validators/scatter3d/projection/y/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/y/_scale.py b/plotly/validators/scatter3d/projection/y/_scale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/y/_scale.py rename to plotly/validators/scatter3d/projection/y/_scale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/y/_show.py b/plotly/validators/scatter3d/projection/y/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/y/_show.py rename to plotly/validators/scatter3d/projection/y/_show.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/z/__init__.py b/plotly/validators/scatter3d/projection/z/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/z/__init__.py rename to plotly/validators/scatter3d/projection/z/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/z/_opacity.py b/plotly/validators/scatter3d/projection/z/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/z/_opacity.py rename to plotly/validators/scatter3d/projection/z/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/z/_scale.py b/plotly/validators/scatter3d/projection/z/_scale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/z/_scale.py rename to plotly/validators/scatter3d/projection/z/_scale.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/projection/z/_show.py b/plotly/validators/scatter3d/projection/z/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/projection/z/_show.py rename to plotly/validators/scatter3d/projection/z/_show.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/stream/__init__.py b/plotly/validators/scatter3d/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/stream/__init__.py rename to plotly/validators/scatter3d/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/stream/_maxpoints.py b/plotly/validators/scatter3d/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/stream/_maxpoints.py rename to plotly/validators/scatter3d/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/stream/_token.py b/plotly/validators/scatter3d/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/stream/_token.py rename to plotly/validators/scatter3d/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/__init__.py b/plotly/validators/scatter3d/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/__init__.py rename to plotly/validators/scatter3d/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_color.py b/plotly/validators/scatter3d/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_color.py rename to plotly/validators/scatter3d/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_colorsrc.py b/plotly/validators/scatter3d/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_colorsrc.py rename to plotly/validators/scatter3d/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_family.py b/plotly/validators/scatter3d/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_family.py rename to plotly/validators/scatter3d/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_familysrc.py b/plotly/validators/scatter3d/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_familysrc.py rename to plotly/validators/scatter3d/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_size.py b/plotly/validators/scatter3d/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_size.py rename to plotly/validators/scatter3d/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_sizesrc.py b/plotly/validators/scatter3d/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_sizesrc.py rename to plotly/validators/scatter3d/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_style.py b/plotly/validators/scatter3d/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_style.py rename to plotly/validators/scatter3d/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_stylesrc.py b/plotly/validators/scatter3d/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_stylesrc.py rename to plotly/validators/scatter3d/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_variant.py b/plotly/validators/scatter3d/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_variant.py rename to plotly/validators/scatter3d/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_variantsrc.py b/plotly/validators/scatter3d/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_variantsrc.py rename to plotly/validators/scatter3d/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_weight.py b/plotly/validators/scatter3d/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_weight.py rename to plotly/validators/scatter3d/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatter3d/textfont/_weightsrc.py b/plotly/validators/scatter3d/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatter3d/textfont/_weightsrc.py rename to plotly/validators/scatter3d/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/__init__.py b/plotly/validators/scattercarpet/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/__init__.py rename to plotly/validators/scattercarpet/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_a.py b/plotly/validators/scattercarpet/_a.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_a.py rename to plotly/validators/scattercarpet/_a.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_asrc.py b/plotly/validators/scattercarpet/_asrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_asrc.py rename to plotly/validators/scattercarpet/_asrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_b.py b/plotly/validators/scattercarpet/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_b.py rename to plotly/validators/scattercarpet/_b.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_bsrc.py b/plotly/validators/scattercarpet/_bsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_bsrc.py rename to plotly/validators/scattercarpet/_bsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_carpet.py b/plotly/validators/scattercarpet/_carpet.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_carpet.py rename to plotly/validators/scattercarpet/_carpet.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_connectgaps.py b/plotly/validators/scattercarpet/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_connectgaps.py rename to plotly/validators/scattercarpet/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_customdata.py b/plotly/validators/scattercarpet/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_customdata.py rename to plotly/validators/scattercarpet/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_customdatasrc.py b/plotly/validators/scattercarpet/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_customdatasrc.py rename to plotly/validators/scattercarpet/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_fill.py b/plotly/validators/scattercarpet/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_fill.py rename to plotly/validators/scattercarpet/_fill.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_fillcolor.py b/plotly/validators/scattercarpet/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_fillcolor.py rename to plotly/validators/scattercarpet/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_hoverinfo.py b/plotly/validators/scattercarpet/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_hoverinfo.py rename to plotly/validators/scattercarpet/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_hoverinfosrc.py b/plotly/validators/scattercarpet/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_hoverinfosrc.py rename to plotly/validators/scattercarpet/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_hoverlabel.py b/plotly/validators/scattercarpet/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_hoverlabel.py rename to plotly/validators/scattercarpet/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_hoveron.py b/plotly/validators/scattercarpet/_hoveron.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_hoveron.py rename to plotly/validators/scattercarpet/_hoveron.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_hovertemplate.py b/plotly/validators/scattercarpet/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_hovertemplate.py rename to plotly/validators/scattercarpet/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_hovertemplatesrc.py b/plotly/validators/scattercarpet/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_hovertemplatesrc.py rename to plotly/validators/scattercarpet/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_hovertext.py b/plotly/validators/scattercarpet/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_hovertext.py rename to plotly/validators/scattercarpet/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_hovertextsrc.py b/plotly/validators/scattercarpet/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_hovertextsrc.py rename to plotly/validators/scattercarpet/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_ids.py b/plotly/validators/scattercarpet/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_ids.py rename to plotly/validators/scattercarpet/_ids.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_idssrc.py b/plotly/validators/scattercarpet/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_idssrc.py rename to plotly/validators/scattercarpet/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_legend.py b/plotly/validators/scattercarpet/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_legend.py rename to plotly/validators/scattercarpet/_legend.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_legendgroup.py b/plotly/validators/scattercarpet/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_legendgroup.py rename to plotly/validators/scattercarpet/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_legendgrouptitle.py b/plotly/validators/scattercarpet/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_legendgrouptitle.py rename to plotly/validators/scattercarpet/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_legendrank.py b/plotly/validators/scattercarpet/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_legendrank.py rename to plotly/validators/scattercarpet/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_legendwidth.py b/plotly/validators/scattercarpet/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_legendwidth.py rename to plotly/validators/scattercarpet/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_line.py b/plotly/validators/scattercarpet/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_line.py rename to plotly/validators/scattercarpet/_line.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_marker.py b/plotly/validators/scattercarpet/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_marker.py rename to plotly/validators/scattercarpet/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_meta.py b/plotly/validators/scattercarpet/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_meta.py rename to plotly/validators/scattercarpet/_meta.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_metasrc.py b/plotly/validators/scattercarpet/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_metasrc.py rename to plotly/validators/scattercarpet/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_mode.py b/plotly/validators/scattercarpet/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_mode.py rename to plotly/validators/scattercarpet/_mode.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_name.py b/plotly/validators/scattercarpet/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_name.py rename to plotly/validators/scattercarpet/_name.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_opacity.py b/plotly/validators/scattercarpet/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_opacity.py rename to plotly/validators/scattercarpet/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_selected.py b/plotly/validators/scattercarpet/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_selected.py rename to plotly/validators/scattercarpet/_selected.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_selectedpoints.py b/plotly/validators/scattercarpet/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_selectedpoints.py rename to plotly/validators/scattercarpet/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_showlegend.py b/plotly/validators/scattercarpet/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_showlegend.py rename to plotly/validators/scattercarpet/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_stream.py b/plotly/validators/scattercarpet/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_stream.py rename to plotly/validators/scattercarpet/_stream.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_text.py b/plotly/validators/scattercarpet/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_text.py rename to plotly/validators/scattercarpet/_text.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_textfont.py b/plotly/validators/scattercarpet/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_textfont.py rename to plotly/validators/scattercarpet/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_textposition.py b/plotly/validators/scattercarpet/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_textposition.py rename to plotly/validators/scattercarpet/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_textpositionsrc.py b/plotly/validators/scattercarpet/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_textpositionsrc.py rename to plotly/validators/scattercarpet/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_textsrc.py b/plotly/validators/scattercarpet/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_textsrc.py rename to plotly/validators/scattercarpet/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_texttemplate.py b/plotly/validators/scattercarpet/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_texttemplate.py rename to plotly/validators/scattercarpet/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_texttemplatesrc.py b/plotly/validators/scattercarpet/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_texttemplatesrc.py rename to plotly/validators/scattercarpet/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_uid.py b/plotly/validators/scattercarpet/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_uid.py rename to plotly/validators/scattercarpet/_uid.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_uirevision.py b/plotly/validators/scattercarpet/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_uirevision.py rename to plotly/validators/scattercarpet/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_unselected.py b/plotly/validators/scattercarpet/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_unselected.py rename to plotly/validators/scattercarpet/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_visible.py b/plotly/validators/scattercarpet/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_visible.py rename to plotly/validators/scattercarpet/_visible.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_xaxis.py b/plotly/validators/scattercarpet/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_xaxis.py rename to plotly/validators/scattercarpet/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_yaxis.py b/plotly/validators/scattercarpet/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_yaxis.py rename to plotly/validators/scattercarpet/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/_zorder.py b/plotly/validators/scattercarpet/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/_zorder.py rename to plotly/validators/scattercarpet/_zorder.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/__init__.py b/plotly/validators/scattercarpet/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/__init__.py rename to plotly/validators/scattercarpet/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_align.py b/plotly/validators/scattercarpet/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_align.py rename to plotly/validators/scattercarpet/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_alignsrc.py b/plotly/validators/scattercarpet/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_alignsrc.py rename to plotly/validators/scattercarpet/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_bgcolor.py b/plotly/validators/scattercarpet/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_bgcolor.py rename to plotly/validators/scattercarpet/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_bgcolorsrc.py b/plotly/validators/scattercarpet/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scattercarpet/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_bordercolor.py b/plotly/validators/scattercarpet/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_bordercolor.py rename to plotly/validators/scattercarpet/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_bordercolorsrc.py b/plotly/validators/scattercarpet/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scattercarpet/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_font.py b/plotly/validators/scattercarpet/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_font.py rename to plotly/validators/scattercarpet/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_namelength.py b/plotly/validators/scattercarpet/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_namelength.py rename to plotly/validators/scattercarpet/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_namelengthsrc.py b/plotly/validators/scattercarpet/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/_namelengthsrc.py rename to plotly/validators/scattercarpet/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/__init__.py b/plotly/validators/scattercarpet/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/__init__.py rename to plotly/validators/scattercarpet/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_color.py b/plotly/validators/scattercarpet/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_color.py rename to plotly/validators/scattercarpet/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_colorsrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_colorsrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_family.py b/plotly/validators/scattercarpet/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_family.py rename to plotly/validators/scattercarpet/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_familysrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_familysrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_lineposition.py b/plotly/validators/scattercarpet/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_lineposition.py rename to plotly/validators/scattercarpet/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_shadow.py b/plotly/validators/scattercarpet/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_shadow.py rename to plotly/validators/scattercarpet/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_shadowsrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_size.py b/plotly/validators/scattercarpet/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_size.py rename to plotly/validators/scattercarpet/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_sizesrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_sizesrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_style.py b/plotly/validators/scattercarpet/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_style.py rename to plotly/validators/scattercarpet/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_stylesrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_stylesrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_textcase.py b/plotly/validators/scattercarpet/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_textcase.py rename to plotly/validators/scattercarpet/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_textcasesrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_variant.py b/plotly/validators/scattercarpet/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_variant.py rename to plotly/validators/scattercarpet/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_variantsrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_variantsrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_weight.py b/plotly/validators/scattercarpet/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_weight.py rename to plotly/validators/scattercarpet/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_weightsrc.py b/plotly/validators/scattercarpet/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/hoverlabel/font/_weightsrc.py rename to plotly/validators/scattercarpet/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/__init__.py b/plotly/validators/scattercarpet/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/__init__.py rename to plotly/validators/scattercarpet/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/_font.py b/plotly/validators/scattercarpet/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/_font.py rename to plotly/validators/scattercarpet/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/_text.py b/plotly/validators/scattercarpet/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/_text.py rename to plotly/validators/scattercarpet/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/__init__.py b/plotly/validators/scattercarpet/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/__init__.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_color.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_color.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_family.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_family.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_lineposition.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_shadow.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_shadow.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_size.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_size.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_style.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_style.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_textcase.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_textcase.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_variant.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_variant.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_weight.py b/plotly/validators/scattercarpet/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/legendgrouptitle/font/_weight.py rename to plotly/validators/scattercarpet/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/line/__init__.py b/plotly/validators/scattercarpet/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/line/__init__.py rename to plotly/validators/scattercarpet/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/line/_backoff.py b/plotly/validators/scattercarpet/line/_backoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/line/_backoff.py rename to plotly/validators/scattercarpet/line/_backoff.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/line/_backoffsrc.py b/plotly/validators/scattercarpet/line/_backoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/line/_backoffsrc.py rename to plotly/validators/scattercarpet/line/_backoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/line/_color.py b/plotly/validators/scattercarpet/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/line/_color.py rename to plotly/validators/scattercarpet/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/line/_dash.py b/plotly/validators/scattercarpet/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/line/_dash.py rename to plotly/validators/scattercarpet/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/line/_shape.py b/plotly/validators/scattercarpet/line/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/line/_shape.py rename to plotly/validators/scattercarpet/line/_shape.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/line/_smoothing.py b/plotly/validators/scattercarpet/line/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/line/_smoothing.py rename to plotly/validators/scattercarpet/line/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/line/_width.py b/plotly/validators/scattercarpet/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/line/_width.py rename to plotly/validators/scattercarpet/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/__init__.py b/plotly/validators/scattercarpet/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/__init__.py rename to plotly/validators/scattercarpet/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_angle.py b/plotly/validators/scattercarpet/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_angle.py rename to plotly/validators/scattercarpet/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_angleref.py b/plotly/validators/scattercarpet/marker/_angleref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_angleref.py rename to plotly/validators/scattercarpet/marker/_angleref.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_anglesrc.py b/plotly/validators/scattercarpet/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_anglesrc.py rename to plotly/validators/scattercarpet/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_autocolorscale.py b/plotly/validators/scattercarpet/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_autocolorscale.py rename to plotly/validators/scattercarpet/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_cauto.py b/plotly/validators/scattercarpet/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_cauto.py rename to plotly/validators/scattercarpet/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_cmax.py b/plotly/validators/scattercarpet/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_cmax.py rename to plotly/validators/scattercarpet/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_cmid.py b/plotly/validators/scattercarpet/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_cmid.py rename to plotly/validators/scattercarpet/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_cmin.py b/plotly/validators/scattercarpet/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_cmin.py rename to plotly/validators/scattercarpet/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_color.py b/plotly/validators/scattercarpet/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_color.py rename to plotly/validators/scattercarpet/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_coloraxis.py b/plotly/validators/scattercarpet/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_coloraxis.py rename to plotly/validators/scattercarpet/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_colorbar.py b/plotly/validators/scattercarpet/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_colorbar.py rename to plotly/validators/scattercarpet/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_colorscale.py b/plotly/validators/scattercarpet/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_colorscale.py rename to plotly/validators/scattercarpet/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_colorsrc.py b/plotly/validators/scattercarpet/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_colorsrc.py rename to plotly/validators/scattercarpet/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_gradient.py b/plotly/validators/scattercarpet/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_gradient.py rename to plotly/validators/scattercarpet/marker/_gradient.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_line.py b/plotly/validators/scattercarpet/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_line.py rename to plotly/validators/scattercarpet/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_maxdisplayed.py b/plotly/validators/scattercarpet/marker/_maxdisplayed.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_maxdisplayed.py rename to plotly/validators/scattercarpet/marker/_maxdisplayed.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_opacity.py b/plotly/validators/scattercarpet/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_opacity.py rename to plotly/validators/scattercarpet/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_opacitysrc.py b/plotly/validators/scattercarpet/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_opacitysrc.py rename to plotly/validators/scattercarpet/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_reversescale.py b/plotly/validators/scattercarpet/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_reversescale.py rename to plotly/validators/scattercarpet/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_showscale.py b/plotly/validators/scattercarpet/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_showscale.py rename to plotly/validators/scattercarpet/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_size.py b/plotly/validators/scattercarpet/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_size.py rename to plotly/validators/scattercarpet/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_sizemin.py b/plotly/validators/scattercarpet/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_sizemin.py rename to plotly/validators/scattercarpet/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_sizemode.py b/plotly/validators/scattercarpet/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_sizemode.py rename to plotly/validators/scattercarpet/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_sizeref.py b/plotly/validators/scattercarpet/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_sizeref.py rename to plotly/validators/scattercarpet/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_sizesrc.py b/plotly/validators/scattercarpet/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_sizesrc.py rename to plotly/validators/scattercarpet/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_standoff.py b/plotly/validators/scattercarpet/marker/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_standoff.py rename to plotly/validators/scattercarpet/marker/_standoff.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_standoffsrc.py b/plotly/validators/scattercarpet/marker/_standoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_standoffsrc.py rename to plotly/validators/scattercarpet/marker/_standoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_symbol.py b/plotly/validators/scattercarpet/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_symbol.py rename to plotly/validators/scattercarpet/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/_symbolsrc.py b/plotly/validators/scattercarpet/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/_symbolsrc.py rename to plotly/validators/scattercarpet/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/__init__.py b/plotly/validators/scattercarpet/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/__init__.py rename to plotly/validators/scattercarpet/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_bgcolor.py b/plotly/validators/scattercarpet/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_bgcolor.py rename to plotly/validators/scattercarpet/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_bordercolor.py b/plotly/validators/scattercarpet/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_bordercolor.py rename to plotly/validators/scattercarpet/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_borderwidth.py b/plotly/validators/scattercarpet/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_borderwidth.py rename to plotly/validators/scattercarpet/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_dtick.py b/plotly/validators/scattercarpet/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_dtick.py rename to plotly/validators/scattercarpet/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_exponentformat.py b/plotly/validators/scattercarpet/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_exponentformat.py rename to plotly/validators/scattercarpet/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_labelalias.py b/plotly/validators/scattercarpet/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_labelalias.py rename to plotly/validators/scattercarpet/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_len.py b/plotly/validators/scattercarpet/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_len.py rename to plotly/validators/scattercarpet/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_lenmode.py b/plotly/validators/scattercarpet/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_lenmode.py rename to plotly/validators/scattercarpet/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_minexponent.py b/plotly/validators/scattercarpet/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_minexponent.py rename to plotly/validators/scattercarpet/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_nticks.py b/plotly/validators/scattercarpet/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_nticks.py rename to plotly/validators/scattercarpet/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_orientation.py b/plotly/validators/scattercarpet/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_orientation.py rename to plotly/validators/scattercarpet/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_outlinecolor.py b/plotly/validators/scattercarpet/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_outlinecolor.py rename to plotly/validators/scattercarpet/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_outlinewidth.py b/plotly/validators/scattercarpet/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_outlinewidth.py rename to plotly/validators/scattercarpet/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_separatethousands.py b/plotly/validators/scattercarpet/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_separatethousands.py rename to plotly/validators/scattercarpet/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_showexponent.py b/plotly/validators/scattercarpet/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_showexponent.py rename to plotly/validators/scattercarpet/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_showticklabels.py b/plotly/validators/scattercarpet/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_showticklabels.py rename to plotly/validators/scattercarpet/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_showtickprefix.py b/plotly/validators/scattercarpet/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_showtickprefix.py rename to plotly/validators/scattercarpet/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_showticksuffix.py b/plotly/validators/scattercarpet/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_showticksuffix.py rename to plotly/validators/scattercarpet/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_thickness.py b/plotly/validators/scattercarpet/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_thickness.py rename to plotly/validators/scattercarpet/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_thicknessmode.py b/plotly/validators/scattercarpet/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_thicknessmode.py rename to plotly/validators/scattercarpet/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tick0.py b/plotly/validators/scattercarpet/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tick0.py rename to plotly/validators/scattercarpet/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickangle.py b/plotly/validators/scattercarpet/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickangle.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickcolor.py b/plotly/validators/scattercarpet/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickcolor.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickfont.py b/plotly/validators/scattercarpet/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickfont.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickformat.py b/plotly/validators/scattercarpet/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickformat.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattercarpet/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickformatstops.py b/plotly/validators/scattercarpet/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickformatstops.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scattercarpet/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scattercarpet/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticklabelposition.py b/plotly/validators/scattercarpet/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scattercarpet/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticklabelstep.py b/plotly/validators/scattercarpet/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scattercarpet/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticklen.py b/plotly/validators/scattercarpet/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticklen.py rename to plotly/validators/scattercarpet/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickmode.py b/plotly/validators/scattercarpet/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickmode.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickprefix.py b/plotly/validators/scattercarpet/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickprefix.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticks.py b/plotly/validators/scattercarpet/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticks.py rename to plotly/validators/scattercarpet/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticksuffix.py b/plotly/validators/scattercarpet/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticksuffix.py rename to plotly/validators/scattercarpet/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticktext.py b/plotly/validators/scattercarpet/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticktext.py rename to plotly/validators/scattercarpet/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticktextsrc.py b/plotly/validators/scattercarpet/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scattercarpet/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickvals.py b/plotly/validators/scattercarpet/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickvals.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickvalssrc.py b/plotly/validators/scattercarpet/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickwidth.py b/plotly/validators/scattercarpet/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_tickwidth.py rename to plotly/validators/scattercarpet/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_title.py b/plotly/validators/scattercarpet/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_title.py rename to plotly/validators/scattercarpet/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_x.py b/plotly/validators/scattercarpet/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_x.py rename to plotly/validators/scattercarpet/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_xanchor.py b/plotly/validators/scattercarpet/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_xanchor.py rename to plotly/validators/scattercarpet/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_xpad.py b/plotly/validators/scattercarpet/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_xpad.py rename to plotly/validators/scattercarpet/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_xref.py b/plotly/validators/scattercarpet/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_xref.py rename to plotly/validators/scattercarpet/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_y.py b/plotly/validators/scattercarpet/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_y.py rename to plotly/validators/scattercarpet/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_yanchor.py b/plotly/validators/scattercarpet/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_yanchor.py rename to plotly/validators/scattercarpet/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ypad.py b/plotly/validators/scattercarpet/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_ypad.py rename to plotly/validators/scattercarpet/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_yref.py b/plotly/validators/scattercarpet/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/_yref.py rename to plotly/validators/scattercarpet/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/__init__.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_color.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_color.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_family.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_family.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_size.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_size.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_style.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_style.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_variant.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_weight.py b/plotly/validators/scattercarpet/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scattercarpet/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scattercarpet/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scattercarpet/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/__init__.py b/plotly/validators/scattercarpet/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/__init__.py rename to plotly/validators/scattercarpet/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/_font.py b/plotly/validators/scattercarpet/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/_font.py rename to plotly/validators/scattercarpet/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/_side.py b/plotly/validators/scattercarpet/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/_side.py rename to plotly/validators/scattercarpet/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/_text.py b/plotly/validators/scattercarpet/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/_text.py rename to plotly/validators/scattercarpet/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/__init__.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/__init__.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_color.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_color.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_family.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_family.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_shadow.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_size.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_size.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_style.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_style.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_textcase.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_variant.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_variant.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_weight.py b/plotly/validators/scattercarpet/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/colorbar/title/font/_weight.py rename to plotly/validators/scattercarpet/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/__init__.py b/plotly/validators/scattercarpet/marker/gradient/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/__init__.py rename to plotly/validators/scattercarpet/marker/gradient/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/_color.py b/plotly/validators/scattercarpet/marker/gradient/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/_color.py rename to plotly/validators/scattercarpet/marker/gradient/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/_colorsrc.py b/plotly/validators/scattercarpet/marker/gradient/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/_colorsrc.py rename to plotly/validators/scattercarpet/marker/gradient/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/_type.py b/plotly/validators/scattercarpet/marker/gradient/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/_type.py rename to plotly/validators/scattercarpet/marker/gradient/_type.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/_typesrc.py b/plotly/validators/scattercarpet/marker/gradient/_typesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/gradient/_typesrc.py rename to plotly/validators/scattercarpet/marker/gradient/_typesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/__init__.py b/plotly/validators/scattercarpet/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/__init__.py rename to plotly/validators/scattercarpet/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_autocolorscale.py b/plotly/validators/scattercarpet/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_autocolorscale.py rename to plotly/validators/scattercarpet/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_cauto.py b/plotly/validators/scattercarpet/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_cauto.py rename to plotly/validators/scattercarpet/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_cmax.py b/plotly/validators/scattercarpet/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_cmax.py rename to plotly/validators/scattercarpet/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_cmid.py b/plotly/validators/scattercarpet/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_cmid.py rename to plotly/validators/scattercarpet/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_cmin.py b/plotly/validators/scattercarpet/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_cmin.py rename to plotly/validators/scattercarpet/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_color.py b/plotly/validators/scattercarpet/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_color.py rename to plotly/validators/scattercarpet/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_coloraxis.py b/plotly/validators/scattercarpet/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_coloraxis.py rename to plotly/validators/scattercarpet/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_colorscale.py b/plotly/validators/scattercarpet/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_colorscale.py rename to plotly/validators/scattercarpet/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_colorsrc.py b/plotly/validators/scattercarpet/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_colorsrc.py rename to plotly/validators/scattercarpet/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_reversescale.py b/plotly/validators/scattercarpet/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_reversescale.py rename to plotly/validators/scattercarpet/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_width.py b/plotly/validators/scattercarpet/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_width.py rename to plotly/validators/scattercarpet/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/marker/line/_widthsrc.py b/plotly/validators/scattercarpet/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/marker/line/_widthsrc.py rename to plotly/validators/scattercarpet/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/__init__.py b/plotly/validators/scattercarpet/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/__init__.py rename to plotly/validators/scattercarpet/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/_marker.py b/plotly/validators/scattercarpet/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/_marker.py rename to plotly/validators/scattercarpet/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/_textfont.py b/plotly/validators/scattercarpet/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/_textfont.py rename to plotly/validators/scattercarpet/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/marker/__init__.py b/plotly/validators/scattercarpet/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/marker/__init__.py rename to plotly/validators/scattercarpet/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/marker/_color.py b/plotly/validators/scattercarpet/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/marker/_color.py rename to plotly/validators/scattercarpet/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/marker/_opacity.py b/plotly/validators/scattercarpet/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/marker/_opacity.py rename to plotly/validators/scattercarpet/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/marker/_size.py b/plotly/validators/scattercarpet/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/marker/_size.py rename to plotly/validators/scattercarpet/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/textfont/__init__.py b/plotly/validators/scattercarpet/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/textfont/__init__.py rename to plotly/validators/scattercarpet/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/selected/textfont/_color.py b/plotly/validators/scattercarpet/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/selected/textfont/_color.py rename to plotly/validators/scattercarpet/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/stream/__init__.py b/plotly/validators/scattercarpet/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/stream/__init__.py rename to plotly/validators/scattercarpet/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/stream/_maxpoints.py b/plotly/validators/scattercarpet/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/stream/_maxpoints.py rename to plotly/validators/scattercarpet/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/stream/_token.py b/plotly/validators/scattercarpet/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/stream/_token.py rename to plotly/validators/scattercarpet/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/__init__.py b/plotly/validators/scattercarpet/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/__init__.py rename to plotly/validators/scattercarpet/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_color.py b/plotly/validators/scattercarpet/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_color.py rename to plotly/validators/scattercarpet/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_colorsrc.py b/plotly/validators/scattercarpet/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_colorsrc.py rename to plotly/validators/scattercarpet/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_family.py b/plotly/validators/scattercarpet/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_family.py rename to plotly/validators/scattercarpet/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_familysrc.py b/plotly/validators/scattercarpet/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_familysrc.py rename to plotly/validators/scattercarpet/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_lineposition.py b/plotly/validators/scattercarpet/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_lineposition.py rename to plotly/validators/scattercarpet/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_linepositionsrc.py b/plotly/validators/scattercarpet/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_linepositionsrc.py rename to plotly/validators/scattercarpet/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_shadow.py b/plotly/validators/scattercarpet/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_shadow.py rename to plotly/validators/scattercarpet/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_shadowsrc.py b/plotly/validators/scattercarpet/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_shadowsrc.py rename to plotly/validators/scattercarpet/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_size.py b/plotly/validators/scattercarpet/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_size.py rename to plotly/validators/scattercarpet/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_sizesrc.py b/plotly/validators/scattercarpet/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_sizesrc.py rename to plotly/validators/scattercarpet/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_style.py b/plotly/validators/scattercarpet/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_style.py rename to plotly/validators/scattercarpet/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_stylesrc.py b/plotly/validators/scattercarpet/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_stylesrc.py rename to plotly/validators/scattercarpet/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_textcase.py b/plotly/validators/scattercarpet/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_textcase.py rename to plotly/validators/scattercarpet/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_textcasesrc.py b/plotly/validators/scattercarpet/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_textcasesrc.py rename to plotly/validators/scattercarpet/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_variant.py b/plotly/validators/scattercarpet/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_variant.py rename to plotly/validators/scattercarpet/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_variantsrc.py b/plotly/validators/scattercarpet/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_variantsrc.py rename to plotly/validators/scattercarpet/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_weight.py b/plotly/validators/scattercarpet/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_weight.py rename to plotly/validators/scattercarpet/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/textfont/_weightsrc.py b/plotly/validators/scattercarpet/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/textfont/_weightsrc.py rename to plotly/validators/scattercarpet/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/__init__.py b/plotly/validators/scattercarpet/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/__init__.py rename to plotly/validators/scattercarpet/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/_marker.py b/plotly/validators/scattercarpet/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/_marker.py rename to plotly/validators/scattercarpet/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/_textfont.py b/plotly/validators/scattercarpet/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/_textfont.py rename to plotly/validators/scattercarpet/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/marker/__init__.py b/plotly/validators/scattercarpet/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/marker/__init__.py rename to plotly/validators/scattercarpet/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/marker/_color.py b/plotly/validators/scattercarpet/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/marker/_color.py rename to plotly/validators/scattercarpet/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/marker/_opacity.py b/plotly/validators/scattercarpet/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/marker/_opacity.py rename to plotly/validators/scattercarpet/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/marker/_size.py b/plotly/validators/scattercarpet/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/marker/_size.py rename to plotly/validators/scattercarpet/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/textfont/__init__.py b/plotly/validators/scattercarpet/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/textfont/__init__.py rename to plotly/validators/scattercarpet/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattercarpet/unselected/textfont/_color.py b/plotly/validators/scattercarpet/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattercarpet/unselected/textfont/_color.py rename to plotly/validators/scattercarpet/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/__init__.py b/plotly/validators/scattergeo/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/__init__.py rename to plotly/validators/scattergeo/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_connectgaps.py b/plotly/validators/scattergeo/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_connectgaps.py rename to plotly/validators/scattergeo/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_customdata.py b/plotly/validators/scattergeo/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_customdata.py rename to plotly/validators/scattergeo/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_customdatasrc.py b/plotly/validators/scattergeo/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_customdatasrc.py rename to plotly/validators/scattergeo/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_featureidkey.py b/plotly/validators/scattergeo/_featureidkey.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_featureidkey.py rename to plotly/validators/scattergeo/_featureidkey.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_fill.py b/plotly/validators/scattergeo/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_fill.py rename to plotly/validators/scattergeo/_fill.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_fillcolor.py b/plotly/validators/scattergeo/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_fillcolor.py rename to plotly/validators/scattergeo/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_geo.py b/plotly/validators/scattergeo/_geo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_geo.py rename to plotly/validators/scattergeo/_geo.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_geojson.py b/plotly/validators/scattergeo/_geojson.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_geojson.py rename to plotly/validators/scattergeo/_geojson.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_hoverinfo.py b/plotly/validators/scattergeo/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_hoverinfo.py rename to plotly/validators/scattergeo/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_hoverinfosrc.py b/plotly/validators/scattergeo/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_hoverinfosrc.py rename to plotly/validators/scattergeo/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_hoverlabel.py b/plotly/validators/scattergeo/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_hoverlabel.py rename to plotly/validators/scattergeo/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_hovertemplate.py b/plotly/validators/scattergeo/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_hovertemplate.py rename to plotly/validators/scattergeo/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_hovertemplatesrc.py b/plotly/validators/scattergeo/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_hovertemplatesrc.py rename to plotly/validators/scattergeo/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_hovertext.py b/plotly/validators/scattergeo/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_hovertext.py rename to plotly/validators/scattergeo/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_hovertextsrc.py b/plotly/validators/scattergeo/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_hovertextsrc.py rename to plotly/validators/scattergeo/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_ids.py b/plotly/validators/scattergeo/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_ids.py rename to plotly/validators/scattergeo/_ids.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_idssrc.py b/plotly/validators/scattergeo/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_idssrc.py rename to plotly/validators/scattergeo/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_lat.py b/plotly/validators/scattergeo/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_lat.py rename to plotly/validators/scattergeo/_lat.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_latsrc.py b/plotly/validators/scattergeo/_latsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_latsrc.py rename to plotly/validators/scattergeo/_latsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_legend.py b/plotly/validators/scattergeo/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_legend.py rename to plotly/validators/scattergeo/_legend.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_legendgroup.py b/plotly/validators/scattergeo/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_legendgroup.py rename to plotly/validators/scattergeo/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_legendgrouptitle.py b/plotly/validators/scattergeo/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_legendgrouptitle.py rename to plotly/validators/scattergeo/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_legendrank.py b/plotly/validators/scattergeo/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_legendrank.py rename to plotly/validators/scattergeo/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_legendwidth.py b/plotly/validators/scattergeo/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_legendwidth.py rename to plotly/validators/scattergeo/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_line.py b/plotly/validators/scattergeo/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_line.py rename to plotly/validators/scattergeo/_line.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_locationmode.py b/plotly/validators/scattergeo/_locationmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_locationmode.py rename to plotly/validators/scattergeo/_locationmode.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_locations.py b/plotly/validators/scattergeo/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_locations.py rename to plotly/validators/scattergeo/_locations.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_locationssrc.py b/plotly/validators/scattergeo/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_locationssrc.py rename to plotly/validators/scattergeo/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_lon.py b/plotly/validators/scattergeo/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_lon.py rename to plotly/validators/scattergeo/_lon.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_lonsrc.py b/plotly/validators/scattergeo/_lonsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_lonsrc.py rename to plotly/validators/scattergeo/_lonsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_marker.py b/plotly/validators/scattergeo/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_marker.py rename to plotly/validators/scattergeo/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_meta.py b/plotly/validators/scattergeo/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_meta.py rename to plotly/validators/scattergeo/_meta.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_metasrc.py b/plotly/validators/scattergeo/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_metasrc.py rename to plotly/validators/scattergeo/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_mode.py b/plotly/validators/scattergeo/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_mode.py rename to plotly/validators/scattergeo/_mode.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_name.py b/plotly/validators/scattergeo/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_name.py rename to plotly/validators/scattergeo/_name.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_opacity.py b/plotly/validators/scattergeo/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_opacity.py rename to plotly/validators/scattergeo/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_selected.py b/plotly/validators/scattergeo/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_selected.py rename to plotly/validators/scattergeo/_selected.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_selectedpoints.py b/plotly/validators/scattergeo/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_selectedpoints.py rename to plotly/validators/scattergeo/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_showlegend.py b/plotly/validators/scattergeo/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_showlegend.py rename to plotly/validators/scattergeo/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_stream.py b/plotly/validators/scattergeo/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_stream.py rename to plotly/validators/scattergeo/_stream.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_text.py b/plotly/validators/scattergeo/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_text.py rename to plotly/validators/scattergeo/_text.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_textfont.py b/plotly/validators/scattergeo/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_textfont.py rename to plotly/validators/scattergeo/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_textposition.py b/plotly/validators/scattergeo/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_textposition.py rename to plotly/validators/scattergeo/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_textpositionsrc.py b/plotly/validators/scattergeo/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_textpositionsrc.py rename to plotly/validators/scattergeo/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_textsrc.py b/plotly/validators/scattergeo/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_textsrc.py rename to plotly/validators/scattergeo/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_texttemplate.py b/plotly/validators/scattergeo/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_texttemplate.py rename to plotly/validators/scattergeo/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_texttemplatesrc.py b/plotly/validators/scattergeo/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_texttemplatesrc.py rename to plotly/validators/scattergeo/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_uid.py b/plotly/validators/scattergeo/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_uid.py rename to plotly/validators/scattergeo/_uid.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_uirevision.py b/plotly/validators/scattergeo/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_uirevision.py rename to plotly/validators/scattergeo/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_unselected.py b/plotly/validators/scattergeo/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_unselected.py rename to plotly/validators/scattergeo/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/_visible.py b/plotly/validators/scattergeo/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/_visible.py rename to plotly/validators/scattergeo/_visible.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/__init__.py b/plotly/validators/scattergeo/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/__init__.py rename to plotly/validators/scattergeo/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_align.py b/plotly/validators/scattergeo/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_align.py rename to plotly/validators/scattergeo/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_alignsrc.py b/plotly/validators/scattergeo/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_alignsrc.py rename to plotly/validators/scattergeo/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_bgcolor.py b/plotly/validators/scattergeo/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_bgcolor.py rename to plotly/validators/scattergeo/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_bgcolorsrc.py b/plotly/validators/scattergeo/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scattergeo/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_bordercolor.py b/plotly/validators/scattergeo/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_bordercolor.py rename to plotly/validators/scattergeo/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_bordercolorsrc.py b/plotly/validators/scattergeo/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scattergeo/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_font.py b/plotly/validators/scattergeo/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_font.py rename to plotly/validators/scattergeo/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_namelength.py b/plotly/validators/scattergeo/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_namelength.py rename to plotly/validators/scattergeo/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_namelengthsrc.py b/plotly/validators/scattergeo/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/_namelengthsrc.py rename to plotly/validators/scattergeo/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/__init__.py b/plotly/validators/scattergeo/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/__init__.py rename to plotly/validators/scattergeo/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_color.py b/plotly/validators/scattergeo/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_color.py rename to plotly/validators/scattergeo/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_colorsrc.py b/plotly/validators/scattergeo/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_colorsrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_family.py b/plotly/validators/scattergeo/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_family.py rename to plotly/validators/scattergeo/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_familysrc.py b/plotly/validators/scattergeo/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_familysrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_lineposition.py b/plotly/validators/scattergeo/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_lineposition.py rename to plotly/validators/scattergeo/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scattergeo/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_shadow.py b/plotly/validators/scattergeo/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_shadow.py rename to plotly/validators/scattergeo/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_shadowsrc.py b/plotly/validators/scattergeo/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_size.py b/plotly/validators/scattergeo/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_size.py rename to plotly/validators/scattergeo/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_sizesrc.py b/plotly/validators/scattergeo/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_sizesrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_style.py b/plotly/validators/scattergeo/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_style.py rename to plotly/validators/scattergeo/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_stylesrc.py b/plotly/validators/scattergeo/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_stylesrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_textcase.py b/plotly/validators/scattergeo/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_textcase.py rename to plotly/validators/scattergeo/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_textcasesrc.py b/plotly/validators/scattergeo/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_variant.py b/plotly/validators/scattergeo/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_variant.py rename to plotly/validators/scattergeo/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_variantsrc.py b/plotly/validators/scattergeo/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_variantsrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_weight.py b/plotly/validators/scattergeo/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_weight.py rename to plotly/validators/scattergeo/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_weightsrc.py b/plotly/validators/scattergeo/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/hoverlabel/font/_weightsrc.py rename to plotly/validators/scattergeo/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/__init__.py b/plotly/validators/scattergeo/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/__init__.py rename to plotly/validators/scattergeo/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/_font.py b/plotly/validators/scattergeo/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/_font.py rename to plotly/validators/scattergeo/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/_text.py b/plotly/validators/scattergeo/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/_text.py rename to plotly/validators/scattergeo/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/__init__.py b/plotly/validators/scattergeo/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/__init__.py rename to plotly/validators/scattergeo/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_color.py b/plotly/validators/scattergeo/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_color.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_family.py b/plotly/validators/scattergeo/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_family.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_lineposition.py b/plotly/validators/scattergeo/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_shadow.py b/plotly/validators/scattergeo/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_shadow.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_size.py b/plotly/validators/scattergeo/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_size.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_style.py b/plotly/validators/scattergeo/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_style.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_textcase.py b/plotly/validators/scattergeo/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_textcase.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_variant.py b/plotly/validators/scattergeo/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_variant.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_weight.py b/plotly/validators/scattergeo/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/legendgrouptitle/font/_weight.py rename to plotly/validators/scattergeo/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/line/__init__.py b/plotly/validators/scattergeo/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/line/__init__.py rename to plotly/validators/scattergeo/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/line/_color.py b/plotly/validators/scattergeo/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/line/_color.py rename to plotly/validators/scattergeo/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/line/_dash.py b/plotly/validators/scattergeo/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/line/_dash.py rename to plotly/validators/scattergeo/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/line/_width.py b/plotly/validators/scattergeo/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/line/_width.py rename to plotly/validators/scattergeo/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/__init__.py b/plotly/validators/scattergeo/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/__init__.py rename to plotly/validators/scattergeo/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_angle.py b/plotly/validators/scattergeo/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_angle.py rename to plotly/validators/scattergeo/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_angleref.py b/plotly/validators/scattergeo/marker/_angleref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_angleref.py rename to plotly/validators/scattergeo/marker/_angleref.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_anglesrc.py b/plotly/validators/scattergeo/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_anglesrc.py rename to plotly/validators/scattergeo/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_autocolorscale.py b/plotly/validators/scattergeo/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_autocolorscale.py rename to plotly/validators/scattergeo/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_cauto.py b/plotly/validators/scattergeo/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_cauto.py rename to plotly/validators/scattergeo/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_cmax.py b/plotly/validators/scattergeo/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_cmax.py rename to plotly/validators/scattergeo/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_cmid.py b/plotly/validators/scattergeo/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_cmid.py rename to plotly/validators/scattergeo/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_cmin.py b/plotly/validators/scattergeo/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_cmin.py rename to plotly/validators/scattergeo/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_color.py b/plotly/validators/scattergeo/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_color.py rename to plotly/validators/scattergeo/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_coloraxis.py b/plotly/validators/scattergeo/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_coloraxis.py rename to plotly/validators/scattergeo/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_colorbar.py b/plotly/validators/scattergeo/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_colorbar.py rename to plotly/validators/scattergeo/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_colorscale.py b/plotly/validators/scattergeo/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_colorscale.py rename to plotly/validators/scattergeo/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_colorsrc.py b/plotly/validators/scattergeo/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_colorsrc.py rename to plotly/validators/scattergeo/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_gradient.py b/plotly/validators/scattergeo/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_gradient.py rename to plotly/validators/scattergeo/marker/_gradient.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_line.py b/plotly/validators/scattergeo/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_line.py rename to plotly/validators/scattergeo/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_opacity.py b/plotly/validators/scattergeo/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_opacity.py rename to plotly/validators/scattergeo/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_opacitysrc.py b/plotly/validators/scattergeo/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_opacitysrc.py rename to plotly/validators/scattergeo/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_reversescale.py b/plotly/validators/scattergeo/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_reversescale.py rename to plotly/validators/scattergeo/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_showscale.py b/plotly/validators/scattergeo/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_showscale.py rename to plotly/validators/scattergeo/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_size.py b/plotly/validators/scattergeo/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_size.py rename to plotly/validators/scattergeo/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_sizemin.py b/plotly/validators/scattergeo/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_sizemin.py rename to plotly/validators/scattergeo/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_sizemode.py b/plotly/validators/scattergeo/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_sizemode.py rename to plotly/validators/scattergeo/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_sizeref.py b/plotly/validators/scattergeo/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_sizeref.py rename to plotly/validators/scattergeo/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_sizesrc.py b/plotly/validators/scattergeo/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_sizesrc.py rename to plotly/validators/scattergeo/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_standoff.py b/plotly/validators/scattergeo/marker/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_standoff.py rename to plotly/validators/scattergeo/marker/_standoff.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_standoffsrc.py b/plotly/validators/scattergeo/marker/_standoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_standoffsrc.py rename to plotly/validators/scattergeo/marker/_standoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_symbol.py b/plotly/validators/scattergeo/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_symbol.py rename to plotly/validators/scattergeo/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/_symbolsrc.py b/plotly/validators/scattergeo/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/_symbolsrc.py rename to plotly/validators/scattergeo/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/__init__.py b/plotly/validators/scattergeo/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/__init__.py rename to plotly/validators/scattergeo/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_bgcolor.py b/plotly/validators/scattergeo/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_bgcolor.py rename to plotly/validators/scattergeo/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_bordercolor.py b/plotly/validators/scattergeo/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_bordercolor.py rename to plotly/validators/scattergeo/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_borderwidth.py b/plotly/validators/scattergeo/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_borderwidth.py rename to plotly/validators/scattergeo/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_dtick.py b/plotly/validators/scattergeo/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_dtick.py rename to plotly/validators/scattergeo/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_exponentformat.py b/plotly/validators/scattergeo/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_exponentformat.py rename to plotly/validators/scattergeo/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_labelalias.py b/plotly/validators/scattergeo/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_labelalias.py rename to plotly/validators/scattergeo/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_len.py b/plotly/validators/scattergeo/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_len.py rename to plotly/validators/scattergeo/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_lenmode.py b/plotly/validators/scattergeo/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_lenmode.py rename to plotly/validators/scattergeo/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_minexponent.py b/plotly/validators/scattergeo/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_minexponent.py rename to plotly/validators/scattergeo/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_nticks.py b/plotly/validators/scattergeo/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_nticks.py rename to plotly/validators/scattergeo/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_orientation.py b/plotly/validators/scattergeo/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_orientation.py rename to plotly/validators/scattergeo/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_outlinecolor.py b/plotly/validators/scattergeo/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_outlinecolor.py rename to plotly/validators/scattergeo/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_outlinewidth.py b/plotly/validators/scattergeo/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_outlinewidth.py rename to plotly/validators/scattergeo/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_separatethousands.py b/plotly/validators/scattergeo/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_separatethousands.py rename to plotly/validators/scattergeo/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_showexponent.py b/plotly/validators/scattergeo/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_showexponent.py rename to plotly/validators/scattergeo/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_showticklabels.py b/plotly/validators/scattergeo/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_showticklabels.py rename to plotly/validators/scattergeo/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_showtickprefix.py b/plotly/validators/scattergeo/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_showtickprefix.py rename to plotly/validators/scattergeo/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_showticksuffix.py b/plotly/validators/scattergeo/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_showticksuffix.py rename to plotly/validators/scattergeo/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_thickness.py b/plotly/validators/scattergeo/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_thickness.py rename to plotly/validators/scattergeo/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_thicknessmode.py b/plotly/validators/scattergeo/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_thicknessmode.py rename to plotly/validators/scattergeo/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tick0.py b/plotly/validators/scattergeo/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tick0.py rename to plotly/validators/scattergeo/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickangle.py b/plotly/validators/scattergeo/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickangle.py rename to plotly/validators/scattergeo/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickcolor.py b/plotly/validators/scattergeo/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickcolor.py rename to plotly/validators/scattergeo/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickfont.py b/plotly/validators/scattergeo/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickfont.py rename to plotly/validators/scattergeo/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickformat.py b/plotly/validators/scattergeo/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickformat.py rename to plotly/validators/scattergeo/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattergeo/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scattergeo/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickformatstops.py b/plotly/validators/scattergeo/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickformatstops.py rename to plotly/validators/scattergeo/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scattergeo/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scattergeo/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticklabelposition.py b/plotly/validators/scattergeo/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scattergeo/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticklabelstep.py b/plotly/validators/scattergeo/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scattergeo/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticklen.py b/plotly/validators/scattergeo/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticklen.py rename to plotly/validators/scattergeo/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickmode.py b/plotly/validators/scattergeo/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickmode.py rename to plotly/validators/scattergeo/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickprefix.py b/plotly/validators/scattergeo/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickprefix.py rename to plotly/validators/scattergeo/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticks.py b/plotly/validators/scattergeo/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticks.py rename to plotly/validators/scattergeo/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticksuffix.py b/plotly/validators/scattergeo/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticksuffix.py rename to plotly/validators/scattergeo/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticktext.py b/plotly/validators/scattergeo/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticktext.py rename to plotly/validators/scattergeo/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticktextsrc.py b/plotly/validators/scattergeo/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scattergeo/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickvals.py b/plotly/validators/scattergeo/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickvals.py rename to plotly/validators/scattergeo/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickvalssrc.py b/plotly/validators/scattergeo/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scattergeo/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickwidth.py b/plotly/validators/scattergeo/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_tickwidth.py rename to plotly/validators/scattergeo/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_title.py b/plotly/validators/scattergeo/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_title.py rename to plotly/validators/scattergeo/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_x.py b/plotly/validators/scattergeo/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_x.py rename to plotly/validators/scattergeo/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_xanchor.py b/plotly/validators/scattergeo/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_xanchor.py rename to plotly/validators/scattergeo/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_xpad.py b/plotly/validators/scattergeo/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_xpad.py rename to plotly/validators/scattergeo/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_xref.py b/plotly/validators/scattergeo/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_xref.py rename to plotly/validators/scattergeo/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_y.py b/plotly/validators/scattergeo/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_y.py rename to plotly/validators/scattergeo/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_yanchor.py b/plotly/validators/scattergeo/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_yanchor.py rename to plotly/validators/scattergeo/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ypad.py b/plotly/validators/scattergeo/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_ypad.py rename to plotly/validators/scattergeo/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_yref.py b/plotly/validators/scattergeo/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/_yref.py rename to plotly/validators/scattergeo/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/__init__.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_color.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_color.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_family.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_family.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_size.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_size.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_style.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_style.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_variant.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_weight.py b/plotly/validators/scattergeo/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scattergeo/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scattergeo/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scattergeo/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scattergeo/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scattergeo/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scattergeo/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scattergeo/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scattergeo/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/__init__.py b/plotly/validators/scattergeo/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/__init__.py rename to plotly/validators/scattergeo/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/_font.py b/plotly/validators/scattergeo/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/_font.py rename to plotly/validators/scattergeo/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/_side.py b/plotly/validators/scattergeo/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/_side.py rename to plotly/validators/scattergeo/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/_text.py b/plotly/validators/scattergeo/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/_text.py rename to plotly/validators/scattergeo/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/__init__.py b/plotly/validators/scattergeo/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/__init__.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_color.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_color.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_family.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_family.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_shadow.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_size.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_size.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_style.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_style.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_textcase.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_variant.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_variant.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_weight.py b/plotly/validators/scattergeo/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/colorbar/title/font/_weight.py rename to plotly/validators/scattergeo/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/gradient/__init__.py b/plotly/validators/scattergeo/marker/gradient/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/gradient/__init__.py rename to plotly/validators/scattergeo/marker/gradient/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/gradient/_color.py b/plotly/validators/scattergeo/marker/gradient/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/gradient/_color.py rename to plotly/validators/scattergeo/marker/gradient/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/gradient/_colorsrc.py b/plotly/validators/scattergeo/marker/gradient/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/gradient/_colorsrc.py rename to plotly/validators/scattergeo/marker/gradient/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/gradient/_type.py b/plotly/validators/scattergeo/marker/gradient/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/gradient/_type.py rename to plotly/validators/scattergeo/marker/gradient/_type.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/gradient/_typesrc.py b/plotly/validators/scattergeo/marker/gradient/_typesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/gradient/_typesrc.py rename to plotly/validators/scattergeo/marker/gradient/_typesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/__init__.py b/plotly/validators/scattergeo/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/__init__.py rename to plotly/validators/scattergeo/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_autocolorscale.py b/plotly/validators/scattergeo/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_autocolorscale.py rename to plotly/validators/scattergeo/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_cauto.py b/plotly/validators/scattergeo/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_cauto.py rename to plotly/validators/scattergeo/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_cmax.py b/plotly/validators/scattergeo/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_cmax.py rename to plotly/validators/scattergeo/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_cmid.py b/plotly/validators/scattergeo/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_cmid.py rename to plotly/validators/scattergeo/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_cmin.py b/plotly/validators/scattergeo/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_cmin.py rename to plotly/validators/scattergeo/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_color.py b/plotly/validators/scattergeo/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_color.py rename to plotly/validators/scattergeo/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_coloraxis.py b/plotly/validators/scattergeo/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_coloraxis.py rename to plotly/validators/scattergeo/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_colorscale.py b/plotly/validators/scattergeo/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_colorscale.py rename to plotly/validators/scattergeo/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_colorsrc.py b/plotly/validators/scattergeo/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_colorsrc.py rename to plotly/validators/scattergeo/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_reversescale.py b/plotly/validators/scattergeo/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_reversescale.py rename to plotly/validators/scattergeo/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_width.py b/plotly/validators/scattergeo/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_width.py rename to plotly/validators/scattergeo/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/marker/line/_widthsrc.py b/plotly/validators/scattergeo/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/marker/line/_widthsrc.py rename to plotly/validators/scattergeo/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/__init__.py b/plotly/validators/scattergeo/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/__init__.py rename to plotly/validators/scattergeo/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/_marker.py b/plotly/validators/scattergeo/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/_marker.py rename to plotly/validators/scattergeo/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/_textfont.py b/plotly/validators/scattergeo/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/_textfont.py rename to plotly/validators/scattergeo/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/marker/__init__.py b/plotly/validators/scattergeo/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/marker/__init__.py rename to plotly/validators/scattergeo/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/marker/_color.py b/plotly/validators/scattergeo/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/marker/_color.py rename to plotly/validators/scattergeo/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/marker/_opacity.py b/plotly/validators/scattergeo/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/marker/_opacity.py rename to plotly/validators/scattergeo/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/marker/_size.py b/plotly/validators/scattergeo/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/marker/_size.py rename to plotly/validators/scattergeo/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/textfont/__init__.py b/plotly/validators/scattergeo/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/textfont/__init__.py rename to plotly/validators/scattergeo/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/selected/textfont/_color.py b/plotly/validators/scattergeo/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/selected/textfont/_color.py rename to plotly/validators/scattergeo/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/stream/__init__.py b/plotly/validators/scattergeo/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/stream/__init__.py rename to plotly/validators/scattergeo/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/stream/_maxpoints.py b/plotly/validators/scattergeo/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/stream/_maxpoints.py rename to plotly/validators/scattergeo/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/stream/_token.py b/plotly/validators/scattergeo/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/stream/_token.py rename to plotly/validators/scattergeo/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/__init__.py b/plotly/validators/scattergeo/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/__init__.py rename to plotly/validators/scattergeo/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_color.py b/plotly/validators/scattergeo/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_color.py rename to plotly/validators/scattergeo/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_colorsrc.py b/plotly/validators/scattergeo/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_colorsrc.py rename to plotly/validators/scattergeo/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_family.py b/plotly/validators/scattergeo/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_family.py rename to plotly/validators/scattergeo/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_familysrc.py b/plotly/validators/scattergeo/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_familysrc.py rename to plotly/validators/scattergeo/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_lineposition.py b/plotly/validators/scattergeo/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_lineposition.py rename to plotly/validators/scattergeo/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_linepositionsrc.py b/plotly/validators/scattergeo/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_linepositionsrc.py rename to plotly/validators/scattergeo/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_shadow.py b/plotly/validators/scattergeo/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_shadow.py rename to plotly/validators/scattergeo/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_shadowsrc.py b/plotly/validators/scattergeo/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_shadowsrc.py rename to plotly/validators/scattergeo/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_size.py b/plotly/validators/scattergeo/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_size.py rename to plotly/validators/scattergeo/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_sizesrc.py b/plotly/validators/scattergeo/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_sizesrc.py rename to plotly/validators/scattergeo/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_style.py b/plotly/validators/scattergeo/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_style.py rename to plotly/validators/scattergeo/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_stylesrc.py b/plotly/validators/scattergeo/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_stylesrc.py rename to plotly/validators/scattergeo/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_textcase.py b/plotly/validators/scattergeo/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_textcase.py rename to plotly/validators/scattergeo/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_textcasesrc.py b/plotly/validators/scattergeo/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_textcasesrc.py rename to plotly/validators/scattergeo/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_variant.py b/plotly/validators/scattergeo/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_variant.py rename to plotly/validators/scattergeo/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_variantsrc.py b/plotly/validators/scattergeo/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_variantsrc.py rename to plotly/validators/scattergeo/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_weight.py b/plotly/validators/scattergeo/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_weight.py rename to plotly/validators/scattergeo/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/textfont/_weightsrc.py b/plotly/validators/scattergeo/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/textfont/_weightsrc.py rename to plotly/validators/scattergeo/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/__init__.py b/plotly/validators/scattergeo/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/__init__.py rename to plotly/validators/scattergeo/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/_marker.py b/plotly/validators/scattergeo/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/_marker.py rename to plotly/validators/scattergeo/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/_textfont.py b/plotly/validators/scattergeo/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/_textfont.py rename to plotly/validators/scattergeo/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/marker/__init__.py b/plotly/validators/scattergeo/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/marker/__init__.py rename to plotly/validators/scattergeo/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/marker/_color.py b/plotly/validators/scattergeo/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/marker/_color.py rename to plotly/validators/scattergeo/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/marker/_opacity.py b/plotly/validators/scattergeo/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/marker/_opacity.py rename to plotly/validators/scattergeo/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/marker/_size.py b/plotly/validators/scattergeo/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/marker/_size.py rename to plotly/validators/scattergeo/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/textfont/__init__.py b/plotly/validators/scattergeo/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/textfont/__init__.py rename to plotly/validators/scattergeo/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergeo/unselected/textfont/_color.py b/plotly/validators/scattergeo/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergeo/unselected/textfont/_color.py rename to plotly/validators/scattergeo/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/__init__.py b/plotly/validators/scattergl/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/__init__.py rename to plotly/validators/scattergl/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_connectgaps.py b/plotly/validators/scattergl/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_connectgaps.py rename to plotly/validators/scattergl/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_customdata.py b/plotly/validators/scattergl/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_customdata.py rename to plotly/validators/scattergl/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_customdatasrc.py b/plotly/validators/scattergl/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_customdatasrc.py rename to plotly/validators/scattergl/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_dx.py b/plotly/validators/scattergl/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_dx.py rename to plotly/validators/scattergl/_dx.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_dy.py b/plotly/validators/scattergl/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_dy.py rename to plotly/validators/scattergl/_dy.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_error_x.py b/plotly/validators/scattergl/_error_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_error_x.py rename to plotly/validators/scattergl/_error_x.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_error_y.py b/plotly/validators/scattergl/_error_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_error_y.py rename to plotly/validators/scattergl/_error_y.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_fill.py b/plotly/validators/scattergl/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_fill.py rename to plotly/validators/scattergl/_fill.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_fillcolor.py b/plotly/validators/scattergl/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_fillcolor.py rename to plotly/validators/scattergl/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_hoverinfo.py b/plotly/validators/scattergl/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_hoverinfo.py rename to plotly/validators/scattergl/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_hoverinfosrc.py b/plotly/validators/scattergl/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_hoverinfosrc.py rename to plotly/validators/scattergl/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_hoverlabel.py b/plotly/validators/scattergl/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_hoverlabel.py rename to plotly/validators/scattergl/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_hovertemplate.py b/plotly/validators/scattergl/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_hovertemplate.py rename to plotly/validators/scattergl/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_hovertemplatesrc.py b/plotly/validators/scattergl/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_hovertemplatesrc.py rename to plotly/validators/scattergl/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_hovertext.py b/plotly/validators/scattergl/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_hovertext.py rename to plotly/validators/scattergl/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_hovertextsrc.py b/plotly/validators/scattergl/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_hovertextsrc.py rename to plotly/validators/scattergl/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_ids.py b/plotly/validators/scattergl/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_ids.py rename to plotly/validators/scattergl/_ids.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_idssrc.py b/plotly/validators/scattergl/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_idssrc.py rename to plotly/validators/scattergl/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_legend.py b/plotly/validators/scattergl/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_legend.py rename to plotly/validators/scattergl/_legend.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_legendgroup.py b/plotly/validators/scattergl/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_legendgroup.py rename to plotly/validators/scattergl/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_legendgrouptitle.py b/plotly/validators/scattergl/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_legendgrouptitle.py rename to plotly/validators/scattergl/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_legendrank.py b/plotly/validators/scattergl/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_legendrank.py rename to plotly/validators/scattergl/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_legendwidth.py b/plotly/validators/scattergl/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_legendwidth.py rename to plotly/validators/scattergl/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_line.py b/plotly/validators/scattergl/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_line.py rename to plotly/validators/scattergl/_line.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_marker.py b/plotly/validators/scattergl/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_marker.py rename to plotly/validators/scattergl/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_meta.py b/plotly/validators/scattergl/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_meta.py rename to plotly/validators/scattergl/_meta.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_metasrc.py b/plotly/validators/scattergl/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_metasrc.py rename to plotly/validators/scattergl/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_mode.py b/plotly/validators/scattergl/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_mode.py rename to plotly/validators/scattergl/_mode.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_name.py b/plotly/validators/scattergl/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_name.py rename to plotly/validators/scattergl/_name.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_opacity.py b/plotly/validators/scattergl/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_opacity.py rename to plotly/validators/scattergl/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_selected.py b/plotly/validators/scattergl/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_selected.py rename to plotly/validators/scattergl/_selected.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_selectedpoints.py b/plotly/validators/scattergl/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_selectedpoints.py rename to plotly/validators/scattergl/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_showlegend.py b/plotly/validators/scattergl/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_showlegend.py rename to plotly/validators/scattergl/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_stream.py b/plotly/validators/scattergl/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_stream.py rename to plotly/validators/scattergl/_stream.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_text.py b/plotly/validators/scattergl/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_text.py rename to plotly/validators/scattergl/_text.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_textfont.py b/plotly/validators/scattergl/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_textfont.py rename to plotly/validators/scattergl/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_textposition.py b/plotly/validators/scattergl/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_textposition.py rename to plotly/validators/scattergl/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_textpositionsrc.py b/plotly/validators/scattergl/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_textpositionsrc.py rename to plotly/validators/scattergl/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_textsrc.py b/plotly/validators/scattergl/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_textsrc.py rename to plotly/validators/scattergl/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_texttemplate.py b/plotly/validators/scattergl/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_texttemplate.py rename to plotly/validators/scattergl/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_texttemplatesrc.py b/plotly/validators/scattergl/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_texttemplatesrc.py rename to plotly/validators/scattergl/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_uid.py b/plotly/validators/scattergl/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_uid.py rename to plotly/validators/scattergl/_uid.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_uirevision.py b/plotly/validators/scattergl/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_uirevision.py rename to plotly/validators/scattergl/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_unselected.py b/plotly/validators/scattergl/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_unselected.py rename to plotly/validators/scattergl/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_visible.py b/plotly/validators/scattergl/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_visible.py rename to plotly/validators/scattergl/_visible.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_x.py b/plotly/validators/scattergl/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_x.py rename to plotly/validators/scattergl/_x.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_x0.py b/plotly/validators/scattergl/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_x0.py rename to plotly/validators/scattergl/_x0.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_xaxis.py b/plotly/validators/scattergl/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_xaxis.py rename to plotly/validators/scattergl/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_xcalendar.py b/plotly/validators/scattergl/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_xcalendar.py rename to plotly/validators/scattergl/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_xhoverformat.py b/plotly/validators/scattergl/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_xhoverformat.py rename to plotly/validators/scattergl/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_xperiod.py b/plotly/validators/scattergl/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_xperiod.py rename to plotly/validators/scattergl/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_xperiod0.py b/plotly/validators/scattergl/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_xperiod0.py rename to plotly/validators/scattergl/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_xperiodalignment.py b/plotly/validators/scattergl/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_xperiodalignment.py rename to plotly/validators/scattergl/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_xsrc.py b/plotly/validators/scattergl/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_xsrc.py rename to plotly/validators/scattergl/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_y.py b/plotly/validators/scattergl/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_y.py rename to plotly/validators/scattergl/_y.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_y0.py b/plotly/validators/scattergl/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_y0.py rename to plotly/validators/scattergl/_y0.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_yaxis.py b/plotly/validators/scattergl/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_yaxis.py rename to plotly/validators/scattergl/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_ycalendar.py b/plotly/validators/scattergl/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_ycalendar.py rename to plotly/validators/scattergl/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_yhoverformat.py b/plotly/validators/scattergl/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_yhoverformat.py rename to plotly/validators/scattergl/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_yperiod.py b/plotly/validators/scattergl/_yperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_yperiod.py rename to plotly/validators/scattergl/_yperiod.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_yperiod0.py b/plotly/validators/scattergl/_yperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_yperiod0.py rename to plotly/validators/scattergl/_yperiod0.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_yperiodalignment.py b/plotly/validators/scattergl/_yperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_yperiodalignment.py rename to plotly/validators/scattergl/_yperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/scattergl/_ysrc.py b/plotly/validators/scattergl/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/_ysrc.py rename to plotly/validators/scattergl/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/__init__.py b/plotly/validators/scattergl/error_x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/__init__.py rename to plotly/validators/scattergl/error_x/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_array.py b/plotly/validators/scattergl/error_x/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_array.py rename to plotly/validators/scattergl/error_x/_array.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_arrayminus.py b/plotly/validators/scattergl/error_x/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_arrayminus.py rename to plotly/validators/scattergl/error_x/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_arrayminussrc.py b/plotly/validators/scattergl/error_x/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_arrayminussrc.py rename to plotly/validators/scattergl/error_x/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_arraysrc.py b/plotly/validators/scattergl/error_x/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_arraysrc.py rename to plotly/validators/scattergl/error_x/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_color.py b/plotly/validators/scattergl/error_x/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_color.py rename to plotly/validators/scattergl/error_x/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_copy_ystyle.py b/plotly/validators/scattergl/error_x/_copy_ystyle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_copy_ystyle.py rename to plotly/validators/scattergl/error_x/_copy_ystyle.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_symmetric.py b/plotly/validators/scattergl/error_x/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_symmetric.py rename to plotly/validators/scattergl/error_x/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_thickness.py b/plotly/validators/scattergl/error_x/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_thickness.py rename to plotly/validators/scattergl/error_x/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_traceref.py b/plotly/validators/scattergl/error_x/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_traceref.py rename to plotly/validators/scattergl/error_x/_traceref.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_tracerefminus.py b/plotly/validators/scattergl/error_x/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_tracerefminus.py rename to plotly/validators/scattergl/error_x/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_type.py b/plotly/validators/scattergl/error_x/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_type.py rename to plotly/validators/scattergl/error_x/_type.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_value.py b/plotly/validators/scattergl/error_x/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_value.py rename to plotly/validators/scattergl/error_x/_value.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_valueminus.py b/plotly/validators/scattergl/error_x/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_valueminus.py rename to plotly/validators/scattergl/error_x/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_visible.py b/plotly/validators/scattergl/error_x/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_visible.py rename to plotly/validators/scattergl/error_x/_visible.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_x/_width.py b/plotly/validators/scattergl/error_x/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_x/_width.py rename to plotly/validators/scattergl/error_x/_width.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/__init__.py b/plotly/validators/scattergl/error_y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/__init__.py rename to plotly/validators/scattergl/error_y/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_array.py b/plotly/validators/scattergl/error_y/_array.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_array.py rename to plotly/validators/scattergl/error_y/_array.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_arrayminus.py b/plotly/validators/scattergl/error_y/_arrayminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_arrayminus.py rename to plotly/validators/scattergl/error_y/_arrayminus.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_arrayminussrc.py b/plotly/validators/scattergl/error_y/_arrayminussrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_arrayminussrc.py rename to plotly/validators/scattergl/error_y/_arrayminussrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_arraysrc.py b/plotly/validators/scattergl/error_y/_arraysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_arraysrc.py rename to plotly/validators/scattergl/error_y/_arraysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_color.py b/plotly/validators/scattergl/error_y/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_color.py rename to plotly/validators/scattergl/error_y/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_symmetric.py b/plotly/validators/scattergl/error_y/_symmetric.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_symmetric.py rename to plotly/validators/scattergl/error_y/_symmetric.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_thickness.py b/plotly/validators/scattergl/error_y/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_thickness.py rename to plotly/validators/scattergl/error_y/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_traceref.py b/plotly/validators/scattergl/error_y/_traceref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_traceref.py rename to plotly/validators/scattergl/error_y/_traceref.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_tracerefminus.py b/plotly/validators/scattergl/error_y/_tracerefminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_tracerefminus.py rename to plotly/validators/scattergl/error_y/_tracerefminus.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_type.py b/plotly/validators/scattergl/error_y/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_type.py rename to plotly/validators/scattergl/error_y/_type.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_value.py b/plotly/validators/scattergl/error_y/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_value.py rename to plotly/validators/scattergl/error_y/_value.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_valueminus.py b/plotly/validators/scattergl/error_y/_valueminus.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_valueminus.py rename to plotly/validators/scattergl/error_y/_valueminus.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_visible.py b/plotly/validators/scattergl/error_y/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_visible.py rename to plotly/validators/scattergl/error_y/_visible.py diff --git a/packages/python/plotly/plotly/validators/scattergl/error_y/_width.py b/plotly/validators/scattergl/error_y/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/error_y/_width.py rename to plotly/validators/scattergl/error_y/_width.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/__init__.py b/plotly/validators/scattergl/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/__init__.py rename to plotly/validators/scattergl/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_align.py b/plotly/validators/scattergl/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_align.py rename to plotly/validators/scattergl/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_alignsrc.py b/plotly/validators/scattergl/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_alignsrc.py rename to plotly/validators/scattergl/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_bgcolor.py b/plotly/validators/scattergl/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_bgcolor.py rename to plotly/validators/scattergl/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_bgcolorsrc.py b/plotly/validators/scattergl/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scattergl/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_bordercolor.py b/plotly/validators/scattergl/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_bordercolor.py rename to plotly/validators/scattergl/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_bordercolorsrc.py b/plotly/validators/scattergl/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scattergl/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_font.py b/plotly/validators/scattergl/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_font.py rename to plotly/validators/scattergl/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_namelength.py b/plotly/validators/scattergl/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_namelength.py rename to plotly/validators/scattergl/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/_namelengthsrc.py b/plotly/validators/scattergl/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/_namelengthsrc.py rename to plotly/validators/scattergl/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/__init__.py b/plotly/validators/scattergl/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/__init__.py rename to plotly/validators/scattergl/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_color.py b/plotly/validators/scattergl/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_color.py rename to plotly/validators/scattergl/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_colorsrc.py b/plotly/validators/scattergl/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_colorsrc.py rename to plotly/validators/scattergl/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_family.py b/plotly/validators/scattergl/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_family.py rename to plotly/validators/scattergl/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_familysrc.py b/plotly/validators/scattergl/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_familysrc.py rename to plotly/validators/scattergl/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_lineposition.py b/plotly/validators/scattergl/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_lineposition.py rename to plotly/validators/scattergl/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scattergl/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scattergl/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_shadow.py b/plotly/validators/scattergl/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_shadow.py rename to plotly/validators/scattergl/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_shadowsrc.py b/plotly/validators/scattergl/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scattergl/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_size.py b/plotly/validators/scattergl/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_size.py rename to plotly/validators/scattergl/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_sizesrc.py b/plotly/validators/scattergl/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_sizesrc.py rename to plotly/validators/scattergl/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_style.py b/plotly/validators/scattergl/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_style.py rename to plotly/validators/scattergl/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_stylesrc.py b/plotly/validators/scattergl/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_stylesrc.py rename to plotly/validators/scattergl/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_textcase.py b/plotly/validators/scattergl/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_textcase.py rename to plotly/validators/scattergl/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_textcasesrc.py b/plotly/validators/scattergl/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scattergl/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_variant.py b/plotly/validators/scattergl/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_variant.py rename to plotly/validators/scattergl/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_variantsrc.py b/plotly/validators/scattergl/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_variantsrc.py rename to plotly/validators/scattergl/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_weight.py b/plotly/validators/scattergl/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_weight.py rename to plotly/validators/scattergl/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_weightsrc.py b/plotly/validators/scattergl/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/hoverlabel/font/_weightsrc.py rename to plotly/validators/scattergl/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/__init__.py b/plotly/validators/scattergl/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/__init__.py rename to plotly/validators/scattergl/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/_font.py b/plotly/validators/scattergl/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/_font.py rename to plotly/validators/scattergl/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/_text.py b/plotly/validators/scattergl/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/_text.py rename to plotly/validators/scattergl/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/__init__.py b/plotly/validators/scattergl/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/__init__.py rename to plotly/validators/scattergl/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_color.py b/plotly/validators/scattergl/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_color.py rename to plotly/validators/scattergl/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_family.py b/plotly/validators/scattergl/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_family.py rename to plotly/validators/scattergl/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_lineposition.py b/plotly/validators/scattergl/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scattergl/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_shadow.py b/plotly/validators/scattergl/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_shadow.py rename to plotly/validators/scattergl/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_size.py b/plotly/validators/scattergl/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_size.py rename to plotly/validators/scattergl/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_style.py b/plotly/validators/scattergl/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_style.py rename to plotly/validators/scattergl/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_textcase.py b/plotly/validators/scattergl/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_textcase.py rename to plotly/validators/scattergl/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_variant.py b/plotly/validators/scattergl/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_variant.py rename to plotly/validators/scattergl/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_weight.py b/plotly/validators/scattergl/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/legendgrouptitle/font/_weight.py rename to plotly/validators/scattergl/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergl/line/__init__.py b/plotly/validators/scattergl/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/line/__init__.py rename to plotly/validators/scattergl/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/line/_color.py b/plotly/validators/scattergl/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/line/_color.py rename to plotly/validators/scattergl/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/line/_dash.py b/plotly/validators/scattergl/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/line/_dash.py rename to plotly/validators/scattergl/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scattergl/line/_shape.py b/plotly/validators/scattergl/line/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/line/_shape.py rename to plotly/validators/scattergl/line/_shape.py diff --git a/packages/python/plotly/plotly/validators/scattergl/line/_width.py b/plotly/validators/scattergl/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/line/_width.py rename to plotly/validators/scattergl/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/__init__.py b/plotly/validators/scattergl/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/__init__.py rename to plotly/validators/scattergl/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_angle.py b/plotly/validators/scattergl/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_angle.py rename to plotly/validators/scattergl/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_anglesrc.py b/plotly/validators/scattergl/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_anglesrc.py rename to plotly/validators/scattergl/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_autocolorscale.py b/plotly/validators/scattergl/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_autocolorscale.py rename to plotly/validators/scattergl/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_cauto.py b/plotly/validators/scattergl/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_cauto.py rename to plotly/validators/scattergl/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_cmax.py b/plotly/validators/scattergl/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_cmax.py rename to plotly/validators/scattergl/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_cmid.py b/plotly/validators/scattergl/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_cmid.py rename to plotly/validators/scattergl/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_cmin.py b/plotly/validators/scattergl/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_cmin.py rename to plotly/validators/scattergl/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_color.py b/plotly/validators/scattergl/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_color.py rename to plotly/validators/scattergl/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_coloraxis.py b/plotly/validators/scattergl/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_coloraxis.py rename to plotly/validators/scattergl/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_colorbar.py b/plotly/validators/scattergl/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_colorbar.py rename to plotly/validators/scattergl/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_colorscale.py b/plotly/validators/scattergl/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_colorscale.py rename to plotly/validators/scattergl/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_colorsrc.py b/plotly/validators/scattergl/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_colorsrc.py rename to plotly/validators/scattergl/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_line.py b/plotly/validators/scattergl/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_line.py rename to plotly/validators/scattergl/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_opacity.py b/plotly/validators/scattergl/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_opacity.py rename to plotly/validators/scattergl/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_opacitysrc.py b/plotly/validators/scattergl/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_opacitysrc.py rename to plotly/validators/scattergl/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_reversescale.py b/plotly/validators/scattergl/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_reversescale.py rename to plotly/validators/scattergl/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_showscale.py b/plotly/validators/scattergl/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_showscale.py rename to plotly/validators/scattergl/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_size.py b/plotly/validators/scattergl/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_size.py rename to plotly/validators/scattergl/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_sizemin.py b/plotly/validators/scattergl/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_sizemin.py rename to plotly/validators/scattergl/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_sizemode.py b/plotly/validators/scattergl/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_sizemode.py rename to plotly/validators/scattergl/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_sizeref.py b/plotly/validators/scattergl/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_sizeref.py rename to plotly/validators/scattergl/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_sizesrc.py b/plotly/validators/scattergl/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_sizesrc.py rename to plotly/validators/scattergl/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_symbol.py b/plotly/validators/scattergl/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_symbol.py rename to plotly/validators/scattergl/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/_symbolsrc.py b/plotly/validators/scattergl/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/_symbolsrc.py rename to plotly/validators/scattergl/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/__init__.py b/plotly/validators/scattergl/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/__init__.py rename to plotly/validators/scattergl/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_bgcolor.py b/plotly/validators/scattergl/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_bgcolor.py rename to plotly/validators/scattergl/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_bordercolor.py b/plotly/validators/scattergl/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_bordercolor.py rename to plotly/validators/scattergl/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_borderwidth.py b/plotly/validators/scattergl/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_borderwidth.py rename to plotly/validators/scattergl/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_dtick.py b/plotly/validators/scattergl/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_dtick.py rename to plotly/validators/scattergl/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_exponentformat.py b/plotly/validators/scattergl/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_exponentformat.py rename to plotly/validators/scattergl/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_labelalias.py b/plotly/validators/scattergl/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_labelalias.py rename to plotly/validators/scattergl/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_len.py b/plotly/validators/scattergl/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_len.py rename to plotly/validators/scattergl/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_lenmode.py b/plotly/validators/scattergl/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_lenmode.py rename to plotly/validators/scattergl/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_minexponent.py b/plotly/validators/scattergl/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_minexponent.py rename to plotly/validators/scattergl/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_nticks.py b/plotly/validators/scattergl/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_nticks.py rename to plotly/validators/scattergl/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_orientation.py b/plotly/validators/scattergl/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_orientation.py rename to plotly/validators/scattergl/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_outlinecolor.py b/plotly/validators/scattergl/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_outlinecolor.py rename to plotly/validators/scattergl/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_outlinewidth.py b/plotly/validators/scattergl/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_outlinewidth.py rename to plotly/validators/scattergl/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_separatethousands.py b/plotly/validators/scattergl/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_separatethousands.py rename to plotly/validators/scattergl/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_showexponent.py b/plotly/validators/scattergl/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_showexponent.py rename to plotly/validators/scattergl/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_showticklabels.py b/plotly/validators/scattergl/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_showticklabels.py rename to plotly/validators/scattergl/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_showtickprefix.py b/plotly/validators/scattergl/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_showtickprefix.py rename to plotly/validators/scattergl/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_showticksuffix.py b/plotly/validators/scattergl/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_showticksuffix.py rename to plotly/validators/scattergl/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_thickness.py b/plotly/validators/scattergl/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_thickness.py rename to plotly/validators/scattergl/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_thicknessmode.py b/plotly/validators/scattergl/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_thicknessmode.py rename to plotly/validators/scattergl/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tick0.py b/plotly/validators/scattergl/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tick0.py rename to plotly/validators/scattergl/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickangle.py b/plotly/validators/scattergl/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickangle.py rename to plotly/validators/scattergl/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickcolor.py b/plotly/validators/scattergl/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickcolor.py rename to plotly/validators/scattergl/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickfont.py b/plotly/validators/scattergl/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickfont.py rename to plotly/validators/scattergl/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickformat.py b/plotly/validators/scattergl/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickformat.py rename to plotly/validators/scattergl/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattergl/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scattergl/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickformatstops.py b/plotly/validators/scattergl/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickformatstops.py rename to plotly/validators/scattergl/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scattergl/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scattergl/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticklabelposition.py b/plotly/validators/scattergl/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scattergl/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticklabelstep.py b/plotly/validators/scattergl/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scattergl/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticklen.py b/plotly/validators/scattergl/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticklen.py rename to plotly/validators/scattergl/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickmode.py b/plotly/validators/scattergl/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickmode.py rename to plotly/validators/scattergl/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickprefix.py b/plotly/validators/scattergl/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickprefix.py rename to plotly/validators/scattergl/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticks.py b/plotly/validators/scattergl/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticks.py rename to plotly/validators/scattergl/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticksuffix.py b/plotly/validators/scattergl/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticksuffix.py rename to plotly/validators/scattergl/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticktext.py b/plotly/validators/scattergl/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticktext.py rename to plotly/validators/scattergl/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticktextsrc.py b/plotly/validators/scattergl/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scattergl/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickvals.py b/plotly/validators/scattergl/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickvals.py rename to plotly/validators/scattergl/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickvalssrc.py b/plotly/validators/scattergl/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scattergl/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickwidth.py b/plotly/validators/scattergl/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_tickwidth.py rename to plotly/validators/scattergl/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_title.py b/plotly/validators/scattergl/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_title.py rename to plotly/validators/scattergl/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_x.py b/plotly/validators/scattergl/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_x.py rename to plotly/validators/scattergl/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_xanchor.py b/plotly/validators/scattergl/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_xanchor.py rename to plotly/validators/scattergl/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_xpad.py b/plotly/validators/scattergl/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_xpad.py rename to plotly/validators/scattergl/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_xref.py b/plotly/validators/scattergl/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_xref.py rename to plotly/validators/scattergl/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_y.py b/plotly/validators/scattergl/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_y.py rename to plotly/validators/scattergl/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_yanchor.py b/plotly/validators/scattergl/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_yanchor.py rename to plotly/validators/scattergl/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ypad.py b/plotly/validators/scattergl/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_ypad.py rename to plotly/validators/scattergl/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_yref.py b/plotly/validators/scattergl/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/_yref.py rename to plotly/validators/scattergl/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/__init__.py b/plotly/validators/scattergl/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_color.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_color.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_family.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_family.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_size.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_size.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_style.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_style.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_variant.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_weight.py b/plotly/validators/scattergl/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scattergl/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scattergl/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scattergl/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scattergl/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scattergl/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scattergl/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scattergl/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scattergl/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scattergl/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scattergl/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scattergl/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scattergl/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scattergl/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/__init__.py b/plotly/validators/scattergl/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/__init__.py rename to plotly/validators/scattergl/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/_font.py b/plotly/validators/scattergl/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/_font.py rename to plotly/validators/scattergl/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/_side.py b/plotly/validators/scattergl/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/_side.py rename to plotly/validators/scattergl/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/_text.py b/plotly/validators/scattergl/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/_text.py rename to plotly/validators/scattergl/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/__init__.py b/plotly/validators/scattergl/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/__init__.py rename to plotly/validators/scattergl/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_color.py b/plotly/validators/scattergl/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_color.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_family.py b/plotly/validators/scattergl/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_family.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scattergl/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_shadow.py b/plotly/validators/scattergl/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_size.py b/plotly/validators/scattergl/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_size.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_style.py b/plotly/validators/scattergl/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_style.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_textcase.py b/plotly/validators/scattergl/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_variant.py b/plotly/validators/scattergl/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_variant.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_weight.py b/plotly/validators/scattergl/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/colorbar/title/font/_weight.py rename to plotly/validators/scattergl/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/__init__.py b/plotly/validators/scattergl/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/__init__.py rename to plotly/validators/scattergl/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_autocolorscale.py b/plotly/validators/scattergl/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_autocolorscale.py rename to plotly/validators/scattergl/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_cauto.py b/plotly/validators/scattergl/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_cauto.py rename to plotly/validators/scattergl/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_cmax.py b/plotly/validators/scattergl/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_cmax.py rename to plotly/validators/scattergl/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_cmid.py b/plotly/validators/scattergl/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_cmid.py rename to plotly/validators/scattergl/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_cmin.py b/plotly/validators/scattergl/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_cmin.py rename to plotly/validators/scattergl/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_color.py b/plotly/validators/scattergl/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_color.py rename to plotly/validators/scattergl/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_coloraxis.py b/plotly/validators/scattergl/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_coloraxis.py rename to plotly/validators/scattergl/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_colorscale.py b/plotly/validators/scattergl/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_colorscale.py rename to plotly/validators/scattergl/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_colorsrc.py b/plotly/validators/scattergl/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_colorsrc.py rename to plotly/validators/scattergl/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_reversescale.py b/plotly/validators/scattergl/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_reversescale.py rename to plotly/validators/scattergl/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_width.py b/plotly/validators/scattergl/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_width.py rename to plotly/validators/scattergl/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattergl/marker/line/_widthsrc.py b/plotly/validators/scattergl/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/marker/line/_widthsrc.py rename to plotly/validators/scattergl/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/__init__.py b/plotly/validators/scattergl/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/__init__.py rename to plotly/validators/scattergl/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/_marker.py b/plotly/validators/scattergl/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/_marker.py rename to plotly/validators/scattergl/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/_textfont.py b/plotly/validators/scattergl/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/_textfont.py rename to plotly/validators/scattergl/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/marker/__init__.py b/plotly/validators/scattergl/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/marker/__init__.py rename to plotly/validators/scattergl/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/marker/_color.py b/plotly/validators/scattergl/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/marker/_color.py rename to plotly/validators/scattergl/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/marker/_opacity.py b/plotly/validators/scattergl/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/marker/_opacity.py rename to plotly/validators/scattergl/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/marker/_size.py b/plotly/validators/scattergl/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/marker/_size.py rename to plotly/validators/scattergl/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/textfont/__init__.py b/plotly/validators/scattergl/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/textfont/__init__.py rename to plotly/validators/scattergl/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/selected/textfont/_color.py b/plotly/validators/scattergl/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/selected/textfont/_color.py rename to plotly/validators/scattergl/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/stream/__init__.py b/plotly/validators/scattergl/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/stream/__init__.py rename to plotly/validators/scattergl/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/stream/_maxpoints.py b/plotly/validators/scattergl/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/stream/_maxpoints.py rename to plotly/validators/scattergl/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scattergl/stream/_token.py b/plotly/validators/scattergl/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/stream/_token.py rename to plotly/validators/scattergl/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/__init__.py b/plotly/validators/scattergl/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/__init__.py rename to plotly/validators/scattergl/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_color.py b/plotly/validators/scattergl/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_color.py rename to plotly/validators/scattergl/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_colorsrc.py b/plotly/validators/scattergl/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_colorsrc.py rename to plotly/validators/scattergl/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_family.py b/plotly/validators/scattergl/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_family.py rename to plotly/validators/scattergl/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_familysrc.py b/plotly/validators/scattergl/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_familysrc.py rename to plotly/validators/scattergl/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_size.py b/plotly/validators/scattergl/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_size.py rename to plotly/validators/scattergl/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_sizesrc.py b/plotly/validators/scattergl/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_sizesrc.py rename to plotly/validators/scattergl/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_style.py b/plotly/validators/scattergl/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_style.py rename to plotly/validators/scattergl/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_stylesrc.py b/plotly/validators/scattergl/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_stylesrc.py rename to plotly/validators/scattergl/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_variant.py b/plotly/validators/scattergl/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_variant.py rename to plotly/validators/scattergl/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_variantsrc.py b/plotly/validators/scattergl/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_variantsrc.py rename to plotly/validators/scattergl/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_weight.py b/plotly/validators/scattergl/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_weight.py rename to plotly/validators/scattergl/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattergl/textfont/_weightsrc.py b/plotly/validators/scattergl/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/textfont/_weightsrc.py rename to plotly/validators/scattergl/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/__init__.py b/plotly/validators/scattergl/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/__init__.py rename to plotly/validators/scattergl/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/_marker.py b/plotly/validators/scattergl/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/_marker.py rename to plotly/validators/scattergl/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/_textfont.py b/plotly/validators/scattergl/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/_textfont.py rename to plotly/validators/scattergl/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/marker/__init__.py b/plotly/validators/scattergl/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/marker/__init__.py rename to plotly/validators/scattergl/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/marker/_color.py b/plotly/validators/scattergl/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/marker/_color.py rename to plotly/validators/scattergl/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/marker/_opacity.py b/plotly/validators/scattergl/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/marker/_opacity.py rename to plotly/validators/scattergl/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/marker/_size.py b/plotly/validators/scattergl/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/marker/_size.py rename to plotly/validators/scattergl/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/textfont/__init__.py b/plotly/validators/scattergl/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/textfont/__init__.py rename to plotly/validators/scattergl/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattergl/unselected/textfont/_color.py b/plotly/validators/scattergl/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattergl/unselected/textfont/_color.py rename to plotly/validators/scattergl/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/__init__.py b/plotly/validators/scattermap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/__init__.py rename to plotly/validators/scattermap/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_below.py b/plotly/validators/scattermap/_below.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_below.py rename to plotly/validators/scattermap/_below.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_cluster.py b/plotly/validators/scattermap/_cluster.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_cluster.py rename to plotly/validators/scattermap/_cluster.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_connectgaps.py b/plotly/validators/scattermap/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_connectgaps.py rename to plotly/validators/scattermap/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_customdata.py b/plotly/validators/scattermap/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_customdata.py rename to plotly/validators/scattermap/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_customdatasrc.py b/plotly/validators/scattermap/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_customdatasrc.py rename to plotly/validators/scattermap/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_fill.py b/plotly/validators/scattermap/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_fill.py rename to plotly/validators/scattermap/_fill.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_fillcolor.py b/plotly/validators/scattermap/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_fillcolor.py rename to plotly/validators/scattermap/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_hoverinfo.py b/plotly/validators/scattermap/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_hoverinfo.py rename to plotly/validators/scattermap/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_hoverinfosrc.py b/plotly/validators/scattermap/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_hoverinfosrc.py rename to plotly/validators/scattermap/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_hoverlabel.py b/plotly/validators/scattermap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_hoverlabel.py rename to plotly/validators/scattermap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_hovertemplate.py b/plotly/validators/scattermap/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_hovertemplate.py rename to plotly/validators/scattermap/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_hovertemplatesrc.py b/plotly/validators/scattermap/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_hovertemplatesrc.py rename to plotly/validators/scattermap/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_hovertext.py b/plotly/validators/scattermap/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_hovertext.py rename to plotly/validators/scattermap/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_hovertextsrc.py b/plotly/validators/scattermap/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_hovertextsrc.py rename to plotly/validators/scattermap/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_ids.py b/plotly/validators/scattermap/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_ids.py rename to plotly/validators/scattermap/_ids.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_idssrc.py b/plotly/validators/scattermap/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_idssrc.py rename to plotly/validators/scattermap/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_lat.py b/plotly/validators/scattermap/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_lat.py rename to plotly/validators/scattermap/_lat.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_latsrc.py b/plotly/validators/scattermap/_latsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_latsrc.py rename to plotly/validators/scattermap/_latsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_legend.py b/plotly/validators/scattermap/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_legend.py rename to plotly/validators/scattermap/_legend.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_legendgroup.py b/plotly/validators/scattermap/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_legendgroup.py rename to plotly/validators/scattermap/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_legendgrouptitle.py b/plotly/validators/scattermap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_legendgrouptitle.py rename to plotly/validators/scattermap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_legendrank.py b/plotly/validators/scattermap/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_legendrank.py rename to plotly/validators/scattermap/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_legendwidth.py b/plotly/validators/scattermap/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_legendwidth.py rename to plotly/validators/scattermap/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_line.py b/plotly/validators/scattermap/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_line.py rename to plotly/validators/scattermap/_line.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_lon.py b/plotly/validators/scattermap/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_lon.py rename to plotly/validators/scattermap/_lon.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_lonsrc.py b/plotly/validators/scattermap/_lonsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_lonsrc.py rename to plotly/validators/scattermap/_lonsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_marker.py b/plotly/validators/scattermap/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_marker.py rename to plotly/validators/scattermap/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_meta.py b/plotly/validators/scattermap/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_meta.py rename to plotly/validators/scattermap/_meta.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_metasrc.py b/plotly/validators/scattermap/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_metasrc.py rename to plotly/validators/scattermap/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_mode.py b/plotly/validators/scattermap/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_mode.py rename to plotly/validators/scattermap/_mode.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_name.py b/plotly/validators/scattermap/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_name.py rename to plotly/validators/scattermap/_name.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_opacity.py b/plotly/validators/scattermap/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_opacity.py rename to plotly/validators/scattermap/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_selected.py b/plotly/validators/scattermap/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_selected.py rename to plotly/validators/scattermap/_selected.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_selectedpoints.py b/plotly/validators/scattermap/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_selectedpoints.py rename to plotly/validators/scattermap/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_showlegend.py b/plotly/validators/scattermap/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_showlegend.py rename to plotly/validators/scattermap/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_stream.py b/plotly/validators/scattermap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_stream.py rename to plotly/validators/scattermap/_stream.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_subplot.py b/plotly/validators/scattermap/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_subplot.py rename to plotly/validators/scattermap/_subplot.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_text.py b/plotly/validators/scattermap/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_text.py rename to plotly/validators/scattermap/_text.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_textfont.py b/plotly/validators/scattermap/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_textfont.py rename to plotly/validators/scattermap/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_textposition.py b/plotly/validators/scattermap/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_textposition.py rename to plotly/validators/scattermap/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_textsrc.py b/plotly/validators/scattermap/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_textsrc.py rename to plotly/validators/scattermap/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_texttemplate.py b/plotly/validators/scattermap/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_texttemplate.py rename to plotly/validators/scattermap/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_texttemplatesrc.py b/plotly/validators/scattermap/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_texttemplatesrc.py rename to plotly/validators/scattermap/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_uid.py b/plotly/validators/scattermap/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_uid.py rename to plotly/validators/scattermap/_uid.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_uirevision.py b/plotly/validators/scattermap/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_uirevision.py rename to plotly/validators/scattermap/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_unselected.py b/plotly/validators/scattermap/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_unselected.py rename to plotly/validators/scattermap/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scattermap/_visible.py b/plotly/validators/scattermap/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/_visible.py rename to plotly/validators/scattermap/_visible.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/__init__.py b/plotly/validators/scattermap/cluster/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/__init__.py rename to plotly/validators/scattermap/cluster/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_color.py b/plotly/validators/scattermap/cluster/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_color.py rename to plotly/validators/scattermap/cluster/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_colorsrc.py b/plotly/validators/scattermap/cluster/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_colorsrc.py rename to plotly/validators/scattermap/cluster/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_enabled.py b/plotly/validators/scattermap/cluster/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_enabled.py rename to plotly/validators/scattermap/cluster/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_maxzoom.py b/plotly/validators/scattermap/cluster/_maxzoom.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_maxzoom.py rename to plotly/validators/scattermap/cluster/_maxzoom.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_opacity.py b/plotly/validators/scattermap/cluster/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_opacity.py rename to plotly/validators/scattermap/cluster/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_opacitysrc.py b/plotly/validators/scattermap/cluster/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_opacitysrc.py rename to plotly/validators/scattermap/cluster/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_size.py b/plotly/validators/scattermap/cluster/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_size.py rename to plotly/validators/scattermap/cluster/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_sizesrc.py b/plotly/validators/scattermap/cluster/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_sizesrc.py rename to plotly/validators/scattermap/cluster/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_step.py b/plotly/validators/scattermap/cluster/_step.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_step.py rename to plotly/validators/scattermap/cluster/_step.py diff --git a/packages/python/plotly/plotly/validators/scattermap/cluster/_stepsrc.py b/plotly/validators/scattermap/cluster/_stepsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/cluster/_stepsrc.py rename to plotly/validators/scattermap/cluster/_stepsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/__init__.py b/plotly/validators/scattermap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/__init__.py rename to plotly/validators/scattermap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_align.py b/plotly/validators/scattermap/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_align.py rename to plotly/validators/scattermap/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_alignsrc.py b/plotly/validators/scattermap/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_alignsrc.py rename to plotly/validators/scattermap/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_bgcolor.py b/plotly/validators/scattermap/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_bgcolor.py rename to plotly/validators/scattermap/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_bgcolorsrc.py b/plotly/validators/scattermap/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scattermap/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_bordercolor.py b/plotly/validators/scattermap/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_bordercolor.py rename to plotly/validators/scattermap/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_bordercolorsrc.py b/plotly/validators/scattermap/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scattermap/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_font.py b/plotly/validators/scattermap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_font.py rename to plotly/validators/scattermap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_namelength.py b/plotly/validators/scattermap/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_namelength.py rename to plotly/validators/scattermap/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/_namelengthsrc.py b/plotly/validators/scattermap/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/_namelengthsrc.py rename to plotly/validators/scattermap/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/__init__.py b/plotly/validators/scattermap/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/__init__.py rename to plotly/validators/scattermap/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_color.py b/plotly/validators/scattermap/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_color.py rename to plotly/validators/scattermap/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_colorsrc.py b/plotly/validators/scattermap/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_colorsrc.py rename to plotly/validators/scattermap/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_family.py b/plotly/validators/scattermap/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_family.py rename to plotly/validators/scattermap/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_familysrc.py b/plotly/validators/scattermap/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_familysrc.py rename to plotly/validators/scattermap/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_lineposition.py b/plotly/validators/scattermap/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_lineposition.py rename to plotly/validators/scattermap/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scattermap/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scattermap/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_shadow.py b/plotly/validators/scattermap/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_shadow.py rename to plotly/validators/scattermap/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_shadowsrc.py b/plotly/validators/scattermap/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scattermap/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_size.py b/plotly/validators/scattermap/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_size.py rename to plotly/validators/scattermap/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_sizesrc.py b/plotly/validators/scattermap/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_sizesrc.py rename to plotly/validators/scattermap/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_style.py b/plotly/validators/scattermap/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_style.py rename to plotly/validators/scattermap/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_stylesrc.py b/plotly/validators/scattermap/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_stylesrc.py rename to plotly/validators/scattermap/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_textcase.py b/plotly/validators/scattermap/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_textcase.py rename to plotly/validators/scattermap/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_textcasesrc.py b/plotly/validators/scattermap/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scattermap/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_variant.py b/plotly/validators/scattermap/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_variant.py rename to plotly/validators/scattermap/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_variantsrc.py b/plotly/validators/scattermap/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_variantsrc.py rename to plotly/validators/scattermap/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_weight.py b/plotly/validators/scattermap/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_weight.py rename to plotly/validators/scattermap/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_weightsrc.py b/plotly/validators/scattermap/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/hoverlabel/font/_weightsrc.py rename to plotly/validators/scattermap/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/__init__.py b/plotly/validators/scattermap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/__init__.py rename to plotly/validators/scattermap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/_font.py b/plotly/validators/scattermap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/_font.py rename to plotly/validators/scattermap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/_text.py b/plotly/validators/scattermap/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/_text.py rename to plotly/validators/scattermap/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/__init__.py b/plotly/validators/scattermap/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/__init__.py rename to plotly/validators/scattermap/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_color.py b/plotly/validators/scattermap/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_color.py rename to plotly/validators/scattermap/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_family.py b/plotly/validators/scattermap/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_family.py rename to plotly/validators/scattermap/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_lineposition.py b/plotly/validators/scattermap/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scattermap/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_shadow.py b/plotly/validators/scattermap/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_shadow.py rename to plotly/validators/scattermap/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_size.py b/plotly/validators/scattermap/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_size.py rename to plotly/validators/scattermap/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_style.py b/plotly/validators/scattermap/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_style.py rename to plotly/validators/scattermap/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_textcase.py b/plotly/validators/scattermap/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_textcase.py rename to plotly/validators/scattermap/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_variant.py b/plotly/validators/scattermap/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_variant.py rename to plotly/validators/scattermap/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_weight.py b/plotly/validators/scattermap/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/legendgrouptitle/font/_weight.py rename to plotly/validators/scattermap/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermap/line/__init__.py b/plotly/validators/scattermap/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/line/__init__.py rename to plotly/validators/scattermap/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/line/_color.py b/plotly/validators/scattermap/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/line/_color.py rename to plotly/validators/scattermap/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/line/_width.py b/plotly/validators/scattermap/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/line/_width.py rename to plotly/validators/scattermap/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/__init__.py b/plotly/validators/scattermap/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/__init__.py rename to plotly/validators/scattermap/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_allowoverlap.py b/plotly/validators/scattermap/marker/_allowoverlap.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_allowoverlap.py rename to plotly/validators/scattermap/marker/_allowoverlap.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_angle.py b/plotly/validators/scattermap/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_angle.py rename to plotly/validators/scattermap/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_anglesrc.py b/plotly/validators/scattermap/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_anglesrc.py rename to plotly/validators/scattermap/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_autocolorscale.py b/plotly/validators/scattermap/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_autocolorscale.py rename to plotly/validators/scattermap/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_cauto.py b/plotly/validators/scattermap/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_cauto.py rename to plotly/validators/scattermap/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_cmax.py b/plotly/validators/scattermap/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_cmax.py rename to plotly/validators/scattermap/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_cmid.py b/plotly/validators/scattermap/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_cmid.py rename to plotly/validators/scattermap/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_cmin.py b/plotly/validators/scattermap/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_cmin.py rename to plotly/validators/scattermap/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_color.py b/plotly/validators/scattermap/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_color.py rename to plotly/validators/scattermap/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_coloraxis.py b/plotly/validators/scattermap/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_coloraxis.py rename to plotly/validators/scattermap/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_colorbar.py b/plotly/validators/scattermap/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_colorbar.py rename to plotly/validators/scattermap/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_colorscale.py b/plotly/validators/scattermap/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_colorscale.py rename to plotly/validators/scattermap/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_colorsrc.py b/plotly/validators/scattermap/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_colorsrc.py rename to plotly/validators/scattermap/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_opacity.py b/plotly/validators/scattermap/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_opacity.py rename to plotly/validators/scattermap/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_opacitysrc.py b/plotly/validators/scattermap/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_opacitysrc.py rename to plotly/validators/scattermap/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_reversescale.py b/plotly/validators/scattermap/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_reversescale.py rename to plotly/validators/scattermap/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_showscale.py b/plotly/validators/scattermap/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_showscale.py rename to plotly/validators/scattermap/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_size.py b/plotly/validators/scattermap/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_size.py rename to plotly/validators/scattermap/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_sizemin.py b/plotly/validators/scattermap/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_sizemin.py rename to plotly/validators/scattermap/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_sizemode.py b/plotly/validators/scattermap/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_sizemode.py rename to plotly/validators/scattermap/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_sizeref.py b/plotly/validators/scattermap/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_sizeref.py rename to plotly/validators/scattermap/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_sizesrc.py b/plotly/validators/scattermap/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_sizesrc.py rename to plotly/validators/scattermap/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_symbol.py b/plotly/validators/scattermap/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_symbol.py rename to plotly/validators/scattermap/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/_symbolsrc.py b/plotly/validators/scattermap/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/_symbolsrc.py rename to plotly/validators/scattermap/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/__init__.py b/plotly/validators/scattermap/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/__init__.py rename to plotly/validators/scattermap/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_bgcolor.py b/plotly/validators/scattermap/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_bgcolor.py rename to plotly/validators/scattermap/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_bordercolor.py b/plotly/validators/scattermap/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_bordercolor.py rename to plotly/validators/scattermap/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_borderwidth.py b/plotly/validators/scattermap/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_borderwidth.py rename to plotly/validators/scattermap/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_dtick.py b/plotly/validators/scattermap/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_dtick.py rename to plotly/validators/scattermap/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_exponentformat.py b/plotly/validators/scattermap/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_exponentformat.py rename to plotly/validators/scattermap/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_labelalias.py b/plotly/validators/scattermap/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_labelalias.py rename to plotly/validators/scattermap/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_len.py b/plotly/validators/scattermap/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_len.py rename to plotly/validators/scattermap/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_lenmode.py b/plotly/validators/scattermap/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_lenmode.py rename to plotly/validators/scattermap/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_minexponent.py b/plotly/validators/scattermap/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_minexponent.py rename to plotly/validators/scattermap/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_nticks.py b/plotly/validators/scattermap/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_nticks.py rename to plotly/validators/scattermap/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_orientation.py b/plotly/validators/scattermap/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_orientation.py rename to plotly/validators/scattermap/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_outlinecolor.py b/plotly/validators/scattermap/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_outlinecolor.py rename to plotly/validators/scattermap/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_outlinewidth.py b/plotly/validators/scattermap/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_outlinewidth.py rename to plotly/validators/scattermap/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_separatethousands.py b/plotly/validators/scattermap/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_separatethousands.py rename to plotly/validators/scattermap/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_showexponent.py b/plotly/validators/scattermap/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_showexponent.py rename to plotly/validators/scattermap/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_showticklabels.py b/plotly/validators/scattermap/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_showticklabels.py rename to plotly/validators/scattermap/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_showtickprefix.py b/plotly/validators/scattermap/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_showtickprefix.py rename to plotly/validators/scattermap/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_showticksuffix.py b/plotly/validators/scattermap/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_showticksuffix.py rename to plotly/validators/scattermap/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_thickness.py b/plotly/validators/scattermap/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_thickness.py rename to plotly/validators/scattermap/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_thicknessmode.py b/plotly/validators/scattermap/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_thicknessmode.py rename to plotly/validators/scattermap/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tick0.py b/plotly/validators/scattermap/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tick0.py rename to plotly/validators/scattermap/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickangle.py b/plotly/validators/scattermap/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickangle.py rename to plotly/validators/scattermap/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickcolor.py b/plotly/validators/scattermap/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickcolor.py rename to plotly/validators/scattermap/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickfont.py b/plotly/validators/scattermap/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickfont.py rename to plotly/validators/scattermap/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickformat.py b/plotly/validators/scattermap/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickformat.py rename to plotly/validators/scattermap/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattermap/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scattermap/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickformatstops.py b/plotly/validators/scattermap/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickformatstops.py rename to plotly/validators/scattermap/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scattermap/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scattermap/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticklabelposition.py b/plotly/validators/scattermap/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scattermap/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticklabelstep.py b/plotly/validators/scattermap/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scattermap/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticklen.py b/plotly/validators/scattermap/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticklen.py rename to plotly/validators/scattermap/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickmode.py b/plotly/validators/scattermap/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickmode.py rename to plotly/validators/scattermap/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickprefix.py b/plotly/validators/scattermap/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickprefix.py rename to plotly/validators/scattermap/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticks.py b/plotly/validators/scattermap/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticks.py rename to plotly/validators/scattermap/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticksuffix.py b/plotly/validators/scattermap/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticksuffix.py rename to plotly/validators/scattermap/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticktext.py b/plotly/validators/scattermap/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticktext.py rename to plotly/validators/scattermap/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticktextsrc.py b/plotly/validators/scattermap/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scattermap/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickvals.py b/plotly/validators/scattermap/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickvals.py rename to plotly/validators/scattermap/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickvalssrc.py b/plotly/validators/scattermap/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scattermap/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickwidth.py b/plotly/validators/scattermap/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_tickwidth.py rename to plotly/validators/scattermap/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_title.py b/plotly/validators/scattermap/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_title.py rename to plotly/validators/scattermap/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_x.py b/plotly/validators/scattermap/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_x.py rename to plotly/validators/scattermap/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_xanchor.py b/plotly/validators/scattermap/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_xanchor.py rename to plotly/validators/scattermap/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_xpad.py b/plotly/validators/scattermap/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_xpad.py rename to plotly/validators/scattermap/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_xref.py b/plotly/validators/scattermap/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_xref.py rename to plotly/validators/scattermap/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_y.py b/plotly/validators/scattermap/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_y.py rename to plotly/validators/scattermap/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_yanchor.py b/plotly/validators/scattermap/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_yanchor.py rename to plotly/validators/scattermap/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ypad.py b/plotly/validators/scattermap/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_ypad.py rename to plotly/validators/scattermap/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_yref.py b/plotly/validators/scattermap/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/_yref.py rename to plotly/validators/scattermap/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/__init__.py b/plotly/validators/scattermap/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_color.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_color.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_family.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_family.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_size.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_size.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_style.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_style.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_variant.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_weight.py b/plotly/validators/scattermap/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scattermap/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scattermap/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scattermap/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scattermap/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scattermap/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scattermap/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scattermap/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scattermap/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scattermap/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scattermap/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scattermap/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scattermap/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scattermap/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/__init__.py b/plotly/validators/scattermap/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/__init__.py rename to plotly/validators/scattermap/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/_font.py b/plotly/validators/scattermap/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/_font.py rename to plotly/validators/scattermap/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/_side.py b/plotly/validators/scattermap/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/_side.py rename to plotly/validators/scattermap/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/_text.py b/plotly/validators/scattermap/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/_text.py rename to plotly/validators/scattermap/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/__init__.py b/plotly/validators/scattermap/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/__init__.py rename to plotly/validators/scattermap/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_color.py b/plotly/validators/scattermap/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_color.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_family.py b/plotly/validators/scattermap/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_family.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scattermap/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_shadow.py b/plotly/validators/scattermap/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_size.py b/plotly/validators/scattermap/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_size.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_style.py b/plotly/validators/scattermap/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_style.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_textcase.py b/plotly/validators/scattermap/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_variant.py b/plotly/validators/scattermap/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_variant.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_weight.py b/plotly/validators/scattermap/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/marker/colorbar/title/font/_weight.py rename to plotly/validators/scattermap/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermap/selected/__init__.py b/plotly/validators/scattermap/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/selected/__init__.py rename to plotly/validators/scattermap/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/selected/_marker.py b/plotly/validators/scattermap/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/selected/_marker.py rename to plotly/validators/scattermap/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattermap/selected/marker/__init__.py b/plotly/validators/scattermap/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/selected/marker/__init__.py rename to plotly/validators/scattermap/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/selected/marker/_color.py b/plotly/validators/scattermap/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/selected/marker/_color.py rename to plotly/validators/scattermap/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/selected/marker/_opacity.py b/plotly/validators/scattermap/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/selected/marker/_opacity.py rename to plotly/validators/scattermap/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermap/selected/marker/_size.py b/plotly/validators/scattermap/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/selected/marker/_size.py rename to plotly/validators/scattermap/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermap/stream/__init__.py b/plotly/validators/scattermap/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/stream/__init__.py rename to plotly/validators/scattermap/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/stream/_maxpoints.py b/plotly/validators/scattermap/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/stream/_maxpoints.py rename to plotly/validators/scattermap/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scattermap/stream/_token.py b/plotly/validators/scattermap/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/stream/_token.py rename to plotly/validators/scattermap/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scattermap/textfont/__init__.py b/plotly/validators/scattermap/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/textfont/__init__.py rename to plotly/validators/scattermap/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/textfont/_color.py b/plotly/validators/scattermap/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/textfont/_color.py rename to plotly/validators/scattermap/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/textfont/_family.py b/plotly/validators/scattermap/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/textfont/_family.py rename to plotly/validators/scattermap/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermap/textfont/_size.py b/plotly/validators/scattermap/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/textfont/_size.py rename to plotly/validators/scattermap/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermap/textfont/_style.py b/plotly/validators/scattermap/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/textfont/_style.py rename to plotly/validators/scattermap/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermap/textfont/_weight.py b/plotly/validators/scattermap/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/textfont/_weight.py rename to plotly/validators/scattermap/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermap/unselected/__init__.py b/plotly/validators/scattermap/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/unselected/__init__.py rename to plotly/validators/scattermap/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/unselected/_marker.py b/plotly/validators/scattermap/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/unselected/_marker.py rename to plotly/validators/scattermap/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattermap/unselected/marker/__init__.py b/plotly/validators/scattermap/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/unselected/marker/__init__.py rename to plotly/validators/scattermap/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermap/unselected/marker/_color.py b/plotly/validators/scattermap/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/unselected/marker/_color.py rename to plotly/validators/scattermap/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermap/unselected/marker/_opacity.py b/plotly/validators/scattermap/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/unselected/marker/_opacity.py rename to plotly/validators/scattermap/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermap/unselected/marker/_size.py b/plotly/validators/scattermap/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermap/unselected/marker/_size.py rename to plotly/validators/scattermap/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/__init__.py b/plotly/validators/scattermapbox/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/__init__.py rename to plotly/validators/scattermapbox/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_below.py b/plotly/validators/scattermapbox/_below.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_below.py rename to plotly/validators/scattermapbox/_below.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_cluster.py b/plotly/validators/scattermapbox/_cluster.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_cluster.py rename to plotly/validators/scattermapbox/_cluster.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_connectgaps.py b/plotly/validators/scattermapbox/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_connectgaps.py rename to plotly/validators/scattermapbox/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_customdata.py b/plotly/validators/scattermapbox/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_customdata.py rename to plotly/validators/scattermapbox/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_customdatasrc.py b/plotly/validators/scattermapbox/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_customdatasrc.py rename to plotly/validators/scattermapbox/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_fill.py b/plotly/validators/scattermapbox/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_fill.py rename to plotly/validators/scattermapbox/_fill.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_fillcolor.py b/plotly/validators/scattermapbox/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_fillcolor.py rename to plotly/validators/scattermapbox/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_hoverinfo.py b/plotly/validators/scattermapbox/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_hoverinfo.py rename to plotly/validators/scattermapbox/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_hoverinfosrc.py b/plotly/validators/scattermapbox/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_hoverinfosrc.py rename to plotly/validators/scattermapbox/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_hoverlabel.py b/plotly/validators/scattermapbox/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_hoverlabel.py rename to plotly/validators/scattermapbox/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_hovertemplate.py b/plotly/validators/scattermapbox/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_hovertemplate.py rename to plotly/validators/scattermapbox/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_hovertemplatesrc.py b/plotly/validators/scattermapbox/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_hovertemplatesrc.py rename to plotly/validators/scattermapbox/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_hovertext.py b/plotly/validators/scattermapbox/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_hovertext.py rename to plotly/validators/scattermapbox/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_hovertextsrc.py b/plotly/validators/scattermapbox/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_hovertextsrc.py rename to plotly/validators/scattermapbox/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_ids.py b/plotly/validators/scattermapbox/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_ids.py rename to plotly/validators/scattermapbox/_ids.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_idssrc.py b/plotly/validators/scattermapbox/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_idssrc.py rename to plotly/validators/scattermapbox/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_lat.py b/plotly/validators/scattermapbox/_lat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_lat.py rename to plotly/validators/scattermapbox/_lat.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_latsrc.py b/plotly/validators/scattermapbox/_latsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_latsrc.py rename to plotly/validators/scattermapbox/_latsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_legend.py b/plotly/validators/scattermapbox/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_legend.py rename to plotly/validators/scattermapbox/_legend.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_legendgroup.py b/plotly/validators/scattermapbox/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_legendgroup.py rename to plotly/validators/scattermapbox/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_legendgrouptitle.py b/plotly/validators/scattermapbox/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_legendgrouptitle.py rename to plotly/validators/scattermapbox/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_legendrank.py b/plotly/validators/scattermapbox/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_legendrank.py rename to plotly/validators/scattermapbox/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_legendwidth.py b/plotly/validators/scattermapbox/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_legendwidth.py rename to plotly/validators/scattermapbox/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_line.py b/plotly/validators/scattermapbox/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_line.py rename to plotly/validators/scattermapbox/_line.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_lon.py b/plotly/validators/scattermapbox/_lon.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_lon.py rename to plotly/validators/scattermapbox/_lon.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_lonsrc.py b/plotly/validators/scattermapbox/_lonsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_lonsrc.py rename to plotly/validators/scattermapbox/_lonsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_marker.py b/plotly/validators/scattermapbox/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_marker.py rename to plotly/validators/scattermapbox/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_meta.py b/plotly/validators/scattermapbox/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_meta.py rename to plotly/validators/scattermapbox/_meta.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_metasrc.py b/plotly/validators/scattermapbox/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_metasrc.py rename to plotly/validators/scattermapbox/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_mode.py b/plotly/validators/scattermapbox/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_mode.py rename to plotly/validators/scattermapbox/_mode.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_name.py b/plotly/validators/scattermapbox/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_name.py rename to plotly/validators/scattermapbox/_name.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_opacity.py b/plotly/validators/scattermapbox/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_opacity.py rename to plotly/validators/scattermapbox/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_selected.py b/plotly/validators/scattermapbox/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_selected.py rename to plotly/validators/scattermapbox/_selected.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_selectedpoints.py b/plotly/validators/scattermapbox/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_selectedpoints.py rename to plotly/validators/scattermapbox/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_showlegend.py b/plotly/validators/scattermapbox/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_showlegend.py rename to plotly/validators/scattermapbox/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_stream.py b/plotly/validators/scattermapbox/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_stream.py rename to plotly/validators/scattermapbox/_stream.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_subplot.py b/plotly/validators/scattermapbox/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_subplot.py rename to plotly/validators/scattermapbox/_subplot.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_text.py b/plotly/validators/scattermapbox/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_text.py rename to plotly/validators/scattermapbox/_text.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_textfont.py b/plotly/validators/scattermapbox/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_textfont.py rename to plotly/validators/scattermapbox/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_textposition.py b/plotly/validators/scattermapbox/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_textposition.py rename to plotly/validators/scattermapbox/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_textsrc.py b/plotly/validators/scattermapbox/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_textsrc.py rename to plotly/validators/scattermapbox/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_texttemplate.py b/plotly/validators/scattermapbox/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_texttemplate.py rename to plotly/validators/scattermapbox/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_texttemplatesrc.py b/plotly/validators/scattermapbox/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_texttemplatesrc.py rename to plotly/validators/scattermapbox/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_uid.py b/plotly/validators/scattermapbox/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_uid.py rename to plotly/validators/scattermapbox/_uid.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_uirevision.py b/plotly/validators/scattermapbox/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_uirevision.py rename to plotly/validators/scattermapbox/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_unselected.py b/plotly/validators/scattermapbox/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_unselected.py rename to plotly/validators/scattermapbox/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/_visible.py b/plotly/validators/scattermapbox/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/_visible.py rename to plotly/validators/scattermapbox/_visible.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/__init__.py b/plotly/validators/scattermapbox/cluster/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/__init__.py rename to plotly/validators/scattermapbox/cluster/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_color.py b/plotly/validators/scattermapbox/cluster/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_color.py rename to plotly/validators/scattermapbox/cluster/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_colorsrc.py b/plotly/validators/scattermapbox/cluster/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_colorsrc.py rename to plotly/validators/scattermapbox/cluster/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_enabled.py b/plotly/validators/scattermapbox/cluster/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_enabled.py rename to plotly/validators/scattermapbox/cluster/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_maxzoom.py b/plotly/validators/scattermapbox/cluster/_maxzoom.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_maxzoom.py rename to plotly/validators/scattermapbox/cluster/_maxzoom.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_opacity.py b/plotly/validators/scattermapbox/cluster/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_opacity.py rename to plotly/validators/scattermapbox/cluster/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_opacitysrc.py b/plotly/validators/scattermapbox/cluster/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_opacitysrc.py rename to plotly/validators/scattermapbox/cluster/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_size.py b/plotly/validators/scattermapbox/cluster/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_size.py rename to plotly/validators/scattermapbox/cluster/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_sizesrc.py b/plotly/validators/scattermapbox/cluster/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_sizesrc.py rename to plotly/validators/scattermapbox/cluster/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_step.py b/plotly/validators/scattermapbox/cluster/_step.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_step.py rename to plotly/validators/scattermapbox/cluster/_step.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/cluster/_stepsrc.py b/plotly/validators/scattermapbox/cluster/_stepsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/cluster/_stepsrc.py rename to plotly/validators/scattermapbox/cluster/_stepsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/__init__.py b/plotly/validators/scattermapbox/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/__init__.py rename to plotly/validators/scattermapbox/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_align.py b/plotly/validators/scattermapbox/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_align.py rename to plotly/validators/scattermapbox/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_alignsrc.py b/plotly/validators/scattermapbox/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_alignsrc.py rename to plotly/validators/scattermapbox/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_bgcolor.py b/plotly/validators/scattermapbox/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_bgcolor.py rename to plotly/validators/scattermapbox/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_bgcolorsrc.py b/plotly/validators/scattermapbox/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scattermapbox/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_bordercolor.py b/plotly/validators/scattermapbox/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_bordercolor.py rename to plotly/validators/scattermapbox/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_bordercolorsrc.py b/plotly/validators/scattermapbox/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scattermapbox/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_font.py b/plotly/validators/scattermapbox/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_font.py rename to plotly/validators/scattermapbox/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_namelength.py b/plotly/validators/scattermapbox/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_namelength.py rename to plotly/validators/scattermapbox/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_namelengthsrc.py b/plotly/validators/scattermapbox/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/_namelengthsrc.py rename to plotly/validators/scattermapbox/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/__init__.py b/plotly/validators/scattermapbox/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/__init__.py rename to plotly/validators/scattermapbox/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_color.py b/plotly/validators/scattermapbox/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_color.py rename to plotly/validators/scattermapbox/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_colorsrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_colorsrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_family.py b/plotly/validators/scattermapbox/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_family.py rename to plotly/validators/scattermapbox/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_familysrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_familysrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_lineposition.py b/plotly/validators/scattermapbox/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_lineposition.py rename to plotly/validators/scattermapbox/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_shadow.py b/plotly/validators/scattermapbox/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_shadow.py rename to plotly/validators/scattermapbox/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_shadowsrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_size.py b/plotly/validators/scattermapbox/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_size.py rename to plotly/validators/scattermapbox/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_sizesrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_sizesrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_style.py b/plotly/validators/scattermapbox/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_style.py rename to plotly/validators/scattermapbox/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_stylesrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_stylesrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_textcase.py b/plotly/validators/scattermapbox/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_textcase.py rename to plotly/validators/scattermapbox/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_textcasesrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_variant.py b/plotly/validators/scattermapbox/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_variant.py rename to plotly/validators/scattermapbox/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_variantsrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_variantsrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_weight.py b/plotly/validators/scattermapbox/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_weight.py rename to plotly/validators/scattermapbox/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_weightsrc.py b/plotly/validators/scattermapbox/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/hoverlabel/font/_weightsrc.py rename to plotly/validators/scattermapbox/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/__init__.py b/plotly/validators/scattermapbox/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/__init__.py rename to plotly/validators/scattermapbox/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/_font.py b/plotly/validators/scattermapbox/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/_font.py rename to plotly/validators/scattermapbox/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/_text.py b/plotly/validators/scattermapbox/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/_text.py rename to plotly/validators/scattermapbox/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/__init__.py b/plotly/validators/scattermapbox/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/__init__.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_color.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_color.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_family.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_family.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_lineposition.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_shadow.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_shadow.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_size.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_size.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_style.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_style.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_textcase.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_textcase.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_variant.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_variant.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_weight.py b/plotly/validators/scattermapbox/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/legendgrouptitle/font/_weight.py rename to plotly/validators/scattermapbox/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/line/__init__.py b/plotly/validators/scattermapbox/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/line/__init__.py rename to plotly/validators/scattermapbox/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/line/_color.py b/plotly/validators/scattermapbox/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/line/_color.py rename to plotly/validators/scattermapbox/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/line/_width.py b/plotly/validators/scattermapbox/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/line/_width.py rename to plotly/validators/scattermapbox/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/__init__.py b/plotly/validators/scattermapbox/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/__init__.py rename to plotly/validators/scattermapbox/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_allowoverlap.py b/plotly/validators/scattermapbox/marker/_allowoverlap.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_allowoverlap.py rename to plotly/validators/scattermapbox/marker/_allowoverlap.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_angle.py b/plotly/validators/scattermapbox/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_angle.py rename to plotly/validators/scattermapbox/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_anglesrc.py b/plotly/validators/scattermapbox/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_anglesrc.py rename to plotly/validators/scattermapbox/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_autocolorscale.py b/plotly/validators/scattermapbox/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_autocolorscale.py rename to plotly/validators/scattermapbox/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_cauto.py b/plotly/validators/scattermapbox/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_cauto.py rename to plotly/validators/scattermapbox/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_cmax.py b/plotly/validators/scattermapbox/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_cmax.py rename to plotly/validators/scattermapbox/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_cmid.py b/plotly/validators/scattermapbox/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_cmid.py rename to plotly/validators/scattermapbox/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_cmin.py b/plotly/validators/scattermapbox/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_cmin.py rename to plotly/validators/scattermapbox/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_color.py b/plotly/validators/scattermapbox/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_color.py rename to plotly/validators/scattermapbox/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_coloraxis.py b/plotly/validators/scattermapbox/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_coloraxis.py rename to plotly/validators/scattermapbox/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_colorbar.py b/plotly/validators/scattermapbox/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_colorbar.py rename to plotly/validators/scattermapbox/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_colorscale.py b/plotly/validators/scattermapbox/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_colorscale.py rename to plotly/validators/scattermapbox/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_colorsrc.py b/plotly/validators/scattermapbox/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_colorsrc.py rename to plotly/validators/scattermapbox/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_opacity.py b/plotly/validators/scattermapbox/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_opacity.py rename to plotly/validators/scattermapbox/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_opacitysrc.py b/plotly/validators/scattermapbox/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_opacitysrc.py rename to plotly/validators/scattermapbox/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_reversescale.py b/plotly/validators/scattermapbox/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_reversescale.py rename to plotly/validators/scattermapbox/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_showscale.py b/plotly/validators/scattermapbox/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_showscale.py rename to plotly/validators/scattermapbox/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_size.py b/plotly/validators/scattermapbox/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_size.py rename to plotly/validators/scattermapbox/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_sizemin.py b/plotly/validators/scattermapbox/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_sizemin.py rename to plotly/validators/scattermapbox/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_sizemode.py b/plotly/validators/scattermapbox/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_sizemode.py rename to plotly/validators/scattermapbox/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_sizeref.py b/plotly/validators/scattermapbox/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_sizeref.py rename to plotly/validators/scattermapbox/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_sizesrc.py b/plotly/validators/scattermapbox/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_sizesrc.py rename to plotly/validators/scattermapbox/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_symbol.py b/plotly/validators/scattermapbox/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_symbol.py rename to plotly/validators/scattermapbox/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/_symbolsrc.py b/plotly/validators/scattermapbox/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/_symbolsrc.py rename to plotly/validators/scattermapbox/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/__init__.py b/plotly/validators/scattermapbox/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/__init__.py rename to plotly/validators/scattermapbox/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_bgcolor.py b/plotly/validators/scattermapbox/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_bgcolor.py rename to plotly/validators/scattermapbox/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_bordercolor.py b/plotly/validators/scattermapbox/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_bordercolor.py rename to plotly/validators/scattermapbox/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_borderwidth.py b/plotly/validators/scattermapbox/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_borderwidth.py rename to plotly/validators/scattermapbox/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_dtick.py b/plotly/validators/scattermapbox/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_dtick.py rename to plotly/validators/scattermapbox/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_exponentformat.py b/plotly/validators/scattermapbox/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_exponentformat.py rename to plotly/validators/scattermapbox/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_labelalias.py b/plotly/validators/scattermapbox/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_labelalias.py rename to plotly/validators/scattermapbox/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_len.py b/plotly/validators/scattermapbox/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_len.py rename to plotly/validators/scattermapbox/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_lenmode.py b/plotly/validators/scattermapbox/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_lenmode.py rename to plotly/validators/scattermapbox/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_minexponent.py b/plotly/validators/scattermapbox/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_minexponent.py rename to plotly/validators/scattermapbox/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_nticks.py b/plotly/validators/scattermapbox/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_nticks.py rename to plotly/validators/scattermapbox/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_orientation.py b/plotly/validators/scattermapbox/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_orientation.py rename to plotly/validators/scattermapbox/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_outlinecolor.py b/plotly/validators/scattermapbox/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_outlinecolor.py rename to plotly/validators/scattermapbox/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_outlinewidth.py b/plotly/validators/scattermapbox/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_outlinewidth.py rename to plotly/validators/scattermapbox/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_separatethousands.py b/plotly/validators/scattermapbox/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_separatethousands.py rename to plotly/validators/scattermapbox/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_showexponent.py b/plotly/validators/scattermapbox/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_showexponent.py rename to plotly/validators/scattermapbox/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_showticklabels.py b/plotly/validators/scattermapbox/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_showticklabels.py rename to plotly/validators/scattermapbox/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_showtickprefix.py b/plotly/validators/scattermapbox/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_showtickprefix.py rename to plotly/validators/scattermapbox/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_showticksuffix.py b/plotly/validators/scattermapbox/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_showticksuffix.py rename to plotly/validators/scattermapbox/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_thickness.py b/plotly/validators/scattermapbox/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_thickness.py rename to plotly/validators/scattermapbox/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_thicknessmode.py b/plotly/validators/scattermapbox/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_thicknessmode.py rename to plotly/validators/scattermapbox/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tick0.py b/plotly/validators/scattermapbox/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tick0.py rename to plotly/validators/scattermapbox/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickangle.py b/plotly/validators/scattermapbox/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickangle.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickcolor.py b/plotly/validators/scattermapbox/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickcolor.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickfont.py b/plotly/validators/scattermapbox/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickfont.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickformat.py b/plotly/validators/scattermapbox/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickformat.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattermapbox/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickformatstops.py b/plotly/validators/scattermapbox/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickformatstops.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scattermapbox/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scattermapbox/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticklabelposition.py b/plotly/validators/scattermapbox/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scattermapbox/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticklabelstep.py b/plotly/validators/scattermapbox/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scattermapbox/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticklen.py b/plotly/validators/scattermapbox/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticklen.py rename to plotly/validators/scattermapbox/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickmode.py b/plotly/validators/scattermapbox/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickmode.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickprefix.py b/plotly/validators/scattermapbox/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickprefix.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticks.py b/plotly/validators/scattermapbox/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticks.py rename to plotly/validators/scattermapbox/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticksuffix.py b/plotly/validators/scattermapbox/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticksuffix.py rename to plotly/validators/scattermapbox/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticktext.py b/plotly/validators/scattermapbox/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticktext.py rename to plotly/validators/scattermapbox/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticktextsrc.py b/plotly/validators/scattermapbox/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scattermapbox/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickvals.py b/plotly/validators/scattermapbox/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickvals.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickvalssrc.py b/plotly/validators/scattermapbox/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickwidth.py b/plotly/validators/scattermapbox/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_tickwidth.py rename to plotly/validators/scattermapbox/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_title.py b/plotly/validators/scattermapbox/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_title.py rename to plotly/validators/scattermapbox/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_x.py b/plotly/validators/scattermapbox/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_x.py rename to plotly/validators/scattermapbox/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_xanchor.py b/plotly/validators/scattermapbox/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_xanchor.py rename to plotly/validators/scattermapbox/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_xpad.py b/plotly/validators/scattermapbox/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_xpad.py rename to plotly/validators/scattermapbox/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_xref.py b/plotly/validators/scattermapbox/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_xref.py rename to plotly/validators/scattermapbox/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_y.py b/plotly/validators/scattermapbox/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_y.py rename to plotly/validators/scattermapbox/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_yanchor.py b/plotly/validators/scattermapbox/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_yanchor.py rename to plotly/validators/scattermapbox/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ypad.py b/plotly/validators/scattermapbox/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_ypad.py rename to plotly/validators/scattermapbox/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_yref.py b/plotly/validators/scattermapbox/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/_yref.py rename to plotly/validators/scattermapbox/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/__init__.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_color.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_color.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_family.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_family.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_size.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_size.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_style.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_style.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_variant.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_weight.py b/plotly/validators/scattermapbox/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scattermapbox/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scattermapbox/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scattermapbox/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/__init__.py b/plotly/validators/scattermapbox/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/__init__.py rename to plotly/validators/scattermapbox/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/_font.py b/plotly/validators/scattermapbox/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/_font.py rename to plotly/validators/scattermapbox/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/_side.py b/plotly/validators/scattermapbox/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/_side.py rename to plotly/validators/scattermapbox/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/_text.py b/plotly/validators/scattermapbox/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/_text.py rename to plotly/validators/scattermapbox/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/__init__.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/__init__.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_color.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_color.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_family.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_family.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_shadow.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_size.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_size.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_style.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_style.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_textcase.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_variant.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_variant.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_weight.py b/plotly/validators/scattermapbox/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/marker/colorbar/title/font/_weight.py rename to plotly/validators/scattermapbox/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/selected/__init__.py b/plotly/validators/scattermapbox/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/selected/__init__.py rename to plotly/validators/scattermapbox/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/selected/_marker.py b/plotly/validators/scattermapbox/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/selected/_marker.py rename to plotly/validators/scattermapbox/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/selected/marker/__init__.py b/plotly/validators/scattermapbox/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/selected/marker/__init__.py rename to plotly/validators/scattermapbox/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/selected/marker/_color.py b/plotly/validators/scattermapbox/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/selected/marker/_color.py rename to plotly/validators/scattermapbox/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/selected/marker/_opacity.py b/plotly/validators/scattermapbox/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/selected/marker/_opacity.py rename to plotly/validators/scattermapbox/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/selected/marker/_size.py b/plotly/validators/scattermapbox/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/selected/marker/_size.py rename to plotly/validators/scattermapbox/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/stream/__init__.py b/plotly/validators/scattermapbox/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/stream/__init__.py rename to plotly/validators/scattermapbox/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/stream/_maxpoints.py b/plotly/validators/scattermapbox/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/stream/_maxpoints.py rename to plotly/validators/scattermapbox/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/stream/_token.py b/plotly/validators/scattermapbox/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/stream/_token.py rename to plotly/validators/scattermapbox/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/textfont/__init__.py b/plotly/validators/scattermapbox/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/textfont/__init__.py rename to plotly/validators/scattermapbox/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/textfont/_color.py b/plotly/validators/scattermapbox/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/textfont/_color.py rename to plotly/validators/scattermapbox/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/textfont/_family.py b/plotly/validators/scattermapbox/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/textfont/_family.py rename to plotly/validators/scattermapbox/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/textfont/_size.py b/plotly/validators/scattermapbox/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/textfont/_size.py rename to plotly/validators/scattermapbox/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/textfont/_style.py b/plotly/validators/scattermapbox/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/textfont/_style.py rename to plotly/validators/scattermapbox/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/textfont/_weight.py b/plotly/validators/scattermapbox/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/textfont/_weight.py rename to plotly/validators/scattermapbox/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/unselected/__init__.py b/plotly/validators/scattermapbox/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/unselected/__init__.py rename to plotly/validators/scattermapbox/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/unselected/_marker.py b/plotly/validators/scattermapbox/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/unselected/_marker.py rename to plotly/validators/scattermapbox/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/unselected/marker/__init__.py b/plotly/validators/scattermapbox/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/unselected/marker/__init__.py rename to plotly/validators/scattermapbox/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/unselected/marker/_color.py b/plotly/validators/scattermapbox/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/unselected/marker/_color.py rename to plotly/validators/scattermapbox/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/unselected/marker/_opacity.py b/plotly/validators/scattermapbox/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/unselected/marker/_opacity.py rename to plotly/validators/scattermapbox/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattermapbox/unselected/marker/_size.py b/plotly/validators/scattermapbox/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattermapbox/unselected/marker/_size.py rename to plotly/validators/scattermapbox/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/__init__.py b/plotly/validators/scatterpolar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/__init__.py rename to plotly/validators/scatterpolar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_cliponaxis.py b/plotly/validators/scatterpolar/_cliponaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_cliponaxis.py rename to plotly/validators/scatterpolar/_cliponaxis.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_connectgaps.py b/plotly/validators/scatterpolar/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_connectgaps.py rename to plotly/validators/scatterpolar/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_customdata.py b/plotly/validators/scatterpolar/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_customdata.py rename to plotly/validators/scatterpolar/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_customdatasrc.py b/plotly/validators/scatterpolar/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_customdatasrc.py rename to plotly/validators/scatterpolar/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_dr.py b/plotly/validators/scatterpolar/_dr.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_dr.py rename to plotly/validators/scatterpolar/_dr.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_dtheta.py b/plotly/validators/scatterpolar/_dtheta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_dtheta.py rename to plotly/validators/scatterpolar/_dtheta.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_fill.py b/plotly/validators/scatterpolar/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_fill.py rename to plotly/validators/scatterpolar/_fill.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_fillcolor.py b/plotly/validators/scatterpolar/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_fillcolor.py rename to plotly/validators/scatterpolar/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_hoverinfo.py b/plotly/validators/scatterpolar/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_hoverinfo.py rename to plotly/validators/scatterpolar/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_hoverinfosrc.py b/plotly/validators/scatterpolar/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_hoverinfosrc.py rename to plotly/validators/scatterpolar/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_hoverlabel.py b/plotly/validators/scatterpolar/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_hoverlabel.py rename to plotly/validators/scatterpolar/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_hoveron.py b/plotly/validators/scatterpolar/_hoveron.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_hoveron.py rename to plotly/validators/scatterpolar/_hoveron.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_hovertemplate.py b/plotly/validators/scatterpolar/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_hovertemplate.py rename to plotly/validators/scatterpolar/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_hovertemplatesrc.py b/plotly/validators/scatterpolar/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_hovertemplatesrc.py rename to plotly/validators/scatterpolar/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_hovertext.py b/plotly/validators/scatterpolar/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_hovertext.py rename to plotly/validators/scatterpolar/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_hovertextsrc.py b/plotly/validators/scatterpolar/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_hovertextsrc.py rename to plotly/validators/scatterpolar/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_ids.py b/plotly/validators/scatterpolar/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_ids.py rename to plotly/validators/scatterpolar/_ids.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_idssrc.py b/plotly/validators/scatterpolar/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_idssrc.py rename to plotly/validators/scatterpolar/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_legend.py b/plotly/validators/scatterpolar/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_legend.py rename to plotly/validators/scatterpolar/_legend.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_legendgroup.py b/plotly/validators/scatterpolar/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_legendgroup.py rename to plotly/validators/scatterpolar/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_legendgrouptitle.py b/plotly/validators/scatterpolar/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_legendgrouptitle.py rename to plotly/validators/scatterpolar/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_legendrank.py b/plotly/validators/scatterpolar/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_legendrank.py rename to plotly/validators/scatterpolar/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_legendwidth.py b/plotly/validators/scatterpolar/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_legendwidth.py rename to plotly/validators/scatterpolar/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_line.py b/plotly/validators/scatterpolar/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_line.py rename to plotly/validators/scatterpolar/_line.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_marker.py b/plotly/validators/scatterpolar/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_marker.py rename to plotly/validators/scatterpolar/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_meta.py b/plotly/validators/scatterpolar/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_meta.py rename to plotly/validators/scatterpolar/_meta.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_metasrc.py b/plotly/validators/scatterpolar/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_metasrc.py rename to plotly/validators/scatterpolar/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_mode.py b/plotly/validators/scatterpolar/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_mode.py rename to plotly/validators/scatterpolar/_mode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_name.py b/plotly/validators/scatterpolar/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_name.py rename to plotly/validators/scatterpolar/_name.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_opacity.py b/plotly/validators/scatterpolar/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_opacity.py rename to plotly/validators/scatterpolar/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_r.py b/plotly/validators/scatterpolar/_r.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_r.py rename to plotly/validators/scatterpolar/_r.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_r0.py b/plotly/validators/scatterpolar/_r0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_r0.py rename to plotly/validators/scatterpolar/_r0.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_rsrc.py b/plotly/validators/scatterpolar/_rsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_rsrc.py rename to plotly/validators/scatterpolar/_rsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_selected.py b/plotly/validators/scatterpolar/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_selected.py rename to plotly/validators/scatterpolar/_selected.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_selectedpoints.py b/plotly/validators/scatterpolar/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_selectedpoints.py rename to plotly/validators/scatterpolar/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_showlegend.py b/plotly/validators/scatterpolar/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_showlegend.py rename to plotly/validators/scatterpolar/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_stream.py b/plotly/validators/scatterpolar/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_stream.py rename to plotly/validators/scatterpolar/_stream.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_subplot.py b/plotly/validators/scatterpolar/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_subplot.py rename to plotly/validators/scatterpolar/_subplot.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_text.py b/plotly/validators/scatterpolar/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_text.py rename to plotly/validators/scatterpolar/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_textfont.py b/plotly/validators/scatterpolar/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_textfont.py rename to plotly/validators/scatterpolar/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_textposition.py b/plotly/validators/scatterpolar/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_textposition.py rename to plotly/validators/scatterpolar/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_textpositionsrc.py b/plotly/validators/scatterpolar/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_textpositionsrc.py rename to plotly/validators/scatterpolar/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_textsrc.py b/plotly/validators/scatterpolar/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_textsrc.py rename to plotly/validators/scatterpolar/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_texttemplate.py b/plotly/validators/scatterpolar/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_texttemplate.py rename to plotly/validators/scatterpolar/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_texttemplatesrc.py b/plotly/validators/scatterpolar/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_texttemplatesrc.py rename to plotly/validators/scatterpolar/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_theta.py b/plotly/validators/scatterpolar/_theta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_theta.py rename to plotly/validators/scatterpolar/_theta.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_theta0.py b/plotly/validators/scatterpolar/_theta0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_theta0.py rename to plotly/validators/scatterpolar/_theta0.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_thetasrc.py b/plotly/validators/scatterpolar/_thetasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_thetasrc.py rename to plotly/validators/scatterpolar/_thetasrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_thetaunit.py b/plotly/validators/scatterpolar/_thetaunit.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_thetaunit.py rename to plotly/validators/scatterpolar/_thetaunit.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_uid.py b/plotly/validators/scatterpolar/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_uid.py rename to plotly/validators/scatterpolar/_uid.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_uirevision.py b/plotly/validators/scatterpolar/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_uirevision.py rename to plotly/validators/scatterpolar/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_unselected.py b/plotly/validators/scatterpolar/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_unselected.py rename to plotly/validators/scatterpolar/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/_visible.py b/plotly/validators/scatterpolar/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/_visible.py rename to plotly/validators/scatterpolar/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/__init__.py b/plotly/validators/scatterpolar/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/__init__.py rename to plotly/validators/scatterpolar/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_align.py b/plotly/validators/scatterpolar/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_align.py rename to plotly/validators/scatterpolar/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_alignsrc.py b/plotly/validators/scatterpolar/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_alignsrc.py rename to plotly/validators/scatterpolar/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_bgcolor.py b/plotly/validators/scatterpolar/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_bgcolor.py rename to plotly/validators/scatterpolar/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_bgcolorsrc.py b/plotly/validators/scatterpolar/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scatterpolar/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_bordercolor.py b/plotly/validators/scatterpolar/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_bordercolor.py rename to plotly/validators/scatterpolar/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_bordercolorsrc.py b/plotly/validators/scatterpolar/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scatterpolar/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_font.py b/plotly/validators/scatterpolar/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_font.py rename to plotly/validators/scatterpolar/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_namelength.py b/plotly/validators/scatterpolar/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_namelength.py rename to plotly/validators/scatterpolar/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_namelengthsrc.py b/plotly/validators/scatterpolar/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/_namelengthsrc.py rename to plotly/validators/scatterpolar/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/__init__.py b/plotly/validators/scatterpolar/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/__init__.py rename to plotly/validators/scatterpolar/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_color.py b/plotly/validators/scatterpolar/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_color.py rename to plotly/validators/scatterpolar/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_colorsrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_colorsrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_family.py b/plotly/validators/scatterpolar/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_family.py rename to plotly/validators/scatterpolar/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_familysrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_familysrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_lineposition.py b/plotly/validators/scatterpolar/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_lineposition.py rename to plotly/validators/scatterpolar/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_shadow.py b/plotly/validators/scatterpolar/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_shadow.py rename to plotly/validators/scatterpolar/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_shadowsrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_size.py b/plotly/validators/scatterpolar/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_size.py rename to plotly/validators/scatterpolar/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_sizesrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_sizesrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_style.py b/plotly/validators/scatterpolar/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_style.py rename to plotly/validators/scatterpolar/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_stylesrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_stylesrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_textcase.py b/plotly/validators/scatterpolar/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_textcase.py rename to plotly/validators/scatterpolar/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_textcasesrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_variant.py b/plotly/validators/scatterpolar/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_variant.py rename to plotly/validators/scatterpolar/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_variantsrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_variantsrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_weight.py b/plotly/validators/scatterpolar/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_weight.py rename to plotly/validators/scatterpolar/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_weightsrc.py b/plotly/validators/scatterpolar/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/hoverlabel/font/_weightsrc.py rename to plotly/validators/scatterpolar/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/__init__.py b/plotly/validators/scatterpolar/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/__init__.py rename to plotly/validators/scatterpolar/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/_font.py b/plotly/validators/scatterpolar/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/_font.py rename to plotly/validators/scatterpolar/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/_text.py b/plotly/validators/scatterpolar/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/_text.py rename to plotly/validators/scatterpolar/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/__init__.py b/plotly/validators/scatterpolar/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/__init__.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_color.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_color.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_family.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_family.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_lineposition.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_shadow.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_shadow.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_size.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_size.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_style.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_style.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_textcase.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_textcase.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_variant.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_variant.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_weight.py b/plotly/validators/scatterpolar/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/legendgrouptitle/font/_weight.py rename to plotly/validators/scatterpolar/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/line/__init__.py b/plotly/validators/scatterpolar/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/line/__init__.py rename to plotly/validators/scatterpolar/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/line/_backoff.py b/plotly/validators/scatterpolar/line/_backoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/line/_backoff.py rename to plotly/validators/scatterpolar/line/_backoff.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/line/_backoffsrc.py b/plotly/validators/scatterpolar/line/_backoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/line/_backoffsrc.py rename to plotly/validators/scatterpolar/line/_backoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/line/_color.py b/plotly/validators/scatterpolar/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/line/_color.py rename to plotly/validators/scatterpolar/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/line/_dash.py b/plotly/validators/scatterpolar/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/line/_dash.py rename to plotly/validators/scatterpolar/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/line/_shape.py b/plotly/validators/scatterpolar/line/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/line/_shape.py rename to plotly/validators/scatterpolar/line/_shape.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/line/_smoothing.py b/plotly/validators/scatterpolar/line/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/line/_smoothing.py rename to plotly/validators/scatterpolar/line/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/line/_width.py b/plotly/validators/scatterpolar/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/line/_width.py rename to plotly/validators/scatterpolar/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/__init__.py b/plotly/validators/scatterpolar/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/__init__.py rename to plotly/validators/scatterpolar/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_angle.py b/plotly/validators/scatterpolar/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_angle.py rename to plotly/validators/scatterpolar/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_angleref.py b/plotly/validators/scatterpolar/marker/_angleref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_angleref.py rename to plotly/validators/scatterpolar/marker/_angleref.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_anglesrc.py b/plotly/validators/scatterpolar/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_anglesrc.py rename to plotly/validators/scatterpolar/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_autocolorscale.py b/plotly/validators/scatterpolar/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_autocolorscale.py rename to plotly/validators/scatterpolar/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_cauto.py b/plotly/validators/scatterpolar/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_cauto.py rename to plotly/validators/scatterpolar/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_cmax.py b/plotly/validators/scatterpolar/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_cmax.py rename to plotly/validators/scatterpolar/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_cmid.py b/plotly/validators/scatterpolar/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_cmid.py rename to plotly/validators/scatterpolar/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_cmin.py b/plotly/validators/scatterpolar/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_cmin.py rename to plotly/validators/scatterpolar/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_color.py b/plotly/validators/scatterpolar/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_color.py rename to plotly/validators/scatterpolar/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_coloraxis.py b/plotly/validators/scatterpolar/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_coloraxis.py rename to plotly/validators/scatterpolar/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_colorbar.py b/plotly/validators/scatterpolar/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_colorbar.py rename to plotly/validators/scatterpolar/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_colorscale.py b/plotly/validators/scatterpolar/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_colorscale.py rename to plotly/validators/scatterpolar/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_colorsrc.py b/plotly/validators/scatterpolar/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_colorsrc.py rename to plotly/validators/scatterpolar/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_gradient.py b/plotly/validators/scatterpolar/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_gradient.py rename to plotly/validators/scatterpolar/marker/_gradient.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_line.py b/plotly/validators/scatterpolar/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_line.py rename to plotly/validators/scatterpolar/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_maxdisplayed.py b/plotly/validators/scatterpolar/marker/_maxdisplayed.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_maxdisplayed.py rename to plotly/validators/scatterpolar/marker/_maxdisplayed.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_opacity.py b/plotly/validators/scatterpolar/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_opacity.py rename to plotly/validators/scatterpolar/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_opacitysrc.py b/plotly/validators/scatterpolar/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_opacitysrc.py rename to plotly/validators/scatterpolar/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_reversescale.py b/plotly/validators/scatterpolar/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_reversescale.py rename to plotly/validators/scatterpolar/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_showscale.py b/plotly/validators/scatterpolar/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_showscale.py rename to plotly/validators/scatterpolar/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_size.py b/plotly/validators/scatterpolar/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_size.py rename to plotly/validators/scatterpolar/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_sizemin.py b/plotly/validators/scatterpolar/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_sizemin.py rename to plotly/validators/scatterpolar/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_sizemode.py b/plotly/validators/scatterpolar/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_sizemode.py rename to plotly/validators/scatterpolar/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_sizeref.py b/plotly/validators/scatterpolar/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_sizeref.py rename to plotly/validators/scatterpolar/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_sizesrc.py b/plotly/validators/scatterpolar/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_sizesrc.py rename to plotly/validators/scatterpolar/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_standoff.py b/plotly/validators/scatterpolar/marker/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_standoff.py rename to plotly/validators/scatterpolar/marker/_standoff.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_standoffsrc.py b/plotly/validators/scatterpolar/marker/_standoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_standoffsrc.py rename to plotly/validators/scatterpolar/marker/_standoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_symbol.py b/plotly/validators/scatterpolar/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_symbol.py rename to plotly/validators/scatterpolar/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/_symbolsrc.py b/plotly/validators/scatterpolar/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/_symbolsrc.py rename to plotly/validators/scatterpolar/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/__init__.py b/plotly/validators/scatterpolar/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/__init__.py rename to plotly/validators/scatterpolar/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_bgcolor.py b/plotly/validators/scatterpolar/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_bgcolor.py rename to plotly/validators/scatterpolar/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_bordercolor.py b/plotly/validators/scatterpolar/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_bordercolor.py rename to plotly/validators/scatterpolar/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_borderwidth.py b/plotly/validators/scatterpolar/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_borderwidth.py rename to plotly/validators/scatterpolar/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_dtick.py b/plotly/validators/scatterpolar/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_dtick.py rename to plotly/validators/scatterpolar/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_exponentformat.py b/plotly/validators/scatterpolar/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_exponentformat.py rename to plotly/validators/scatterpolar/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_labelalias.py b/plotly/validators/scatterpolar/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_labelalias.py rename to plotly/validators/scatterpolar/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_len.py b/plotly/validators/scatterpolar/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_len.py rename to plotly/validators/scatterpolar/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_lenmode.py b/plotly/validators/scatterpolar/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_lenmode.py rename to plotly/validators/scatterpolar/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_minexponent.py b/plotly/validators/scatterpolar/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_minexponent.py rename to plotly/validators/scatterpolar/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_nticks.py b/plotly/validators/scatterpolar/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_nticks.py rename to plotly/validators/scatterpolar/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_orientation.py b/plotly/validators/scatterpolar/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_orientation.py rename to plotly/validators/scatterpolar/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_outlinecolor.py b/plotly/validators/scatterpolar/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_outlinecolor.py rename to plotly/validators/scatterpolar/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_outlinewidth.py b/plotly/validators/scatterpolar/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_outlinewidth.py rename to plotly/validators/scatterpolar/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_separatethousands.py b/plotly/validators/scatterpolar/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_separatethousands.py rename to plotly/validators/scatterpolar/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_showexponent.py b/plotly/validators/scatterpolar/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_showexponent.py rename to plotly/validators/scatterpolar/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_showticklabels.py b/plotly/validators/scatterpolar/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_showticklabels.py rename to plotly/validators/scatterpolar/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_showtickprefix.py b/plotly/validators/scatterpolar/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_showtickprefix.py rename to plotly/validators/scatterpolar/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_showticksuffix.py b/plotly/validators/scatterpolar/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_showticksuffix.py rename to plotly/validators/scatterpolar/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_thickness.py b/plotly/validators/scatterpolar/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_thickness.py rename to plotly/validators/scatterpolar/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_thicknessmode.py b/plotly/validators/scatterpolar/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_thicknessmode.py rename to plotly/validators/scatterpolar/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tick0.py b/plotly/validators/scatterpolar/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tick0.py rename to plotly/validators/scatterpolar/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickangle.py b/plotly/validators/scatterpolar/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickangle.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickcolor.py b/plotly/validators/scatterpolar/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickcolor.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickfont.py b/plotly/validators/scatterpolar/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickfont.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickformat.py b/plotly/validators/scatterpolar/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickformat.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatterpolar/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickformatstops.py b/plotly/validators/scatterpolar/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickformatstops.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scatterpolar/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scatterpolar/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticklabelposition.py b/plotly/validators/scatterpolar/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scatterpolar/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticklabelstep.py b/plotly/validators/scatterpolar/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scatterpolar/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticklen.py b/plotly/validators/scatterpolar/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticklen.py rename to plotly/validators/scatterpolar/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickmode.py b/plotly/validators/scatterpolar/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickmode.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickprefix.py b/plotly/validators/scatterpolar/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickprefix.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticks.py b/plotly/validators/scatterpolar/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticks.py rename to plotly/validators/scatterpolar/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticksuffix.py b/plotly/validators/scatterpolar/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticksuffix.py rename to plotly/validators/scatterpolar/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticktext.py b/plotly/validators/scatterpolar/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticktext.py rename to plotly/validators/scatterpolar/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticktextsrc.py b/plotly/validators/scatterpolar/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scatterpolar/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickvals.py b/plotly/validators/scatterpolar/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickvals.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickvalssrc.py b/plotly/validators/scatterpolar/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickwidth.py b/plotly/validators/scatterpolar/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_tickwidth.py rename to plotly/validators/scatterpolar/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_title.py b/plotly/validators/scatterpolar/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_title.py rename to plotly/validators/scatterpolar/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_x.py b/plotly/validators/scatterpolar/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_x.py rename to plotly/validators/scatterpolar/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_xanchor.py b/plotly/validators/scatterpolar/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_xanchor.py rename to plotly/validators/scatterpolar/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_xpad.py b/plotly/validators/scatterpolar/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_xpad.py rename to plotly/validators/scatterpolar/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_xref.py b/plotly/validators/scatterpolar/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_xref.py rename to plotly/validators/scatterpolar/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_y.py b/plotly/validators/scatterpolar/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_y.py rename to plotly/validators/scatterpolar/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_yanchor.py b/plotly/validators/scatterpolar/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_yanchor.py rename to plotly/validators/scatterpolar/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ypad.py b/plotly/validators/scatterpolar/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_ypad.py rename to plotly/validators/scatterpolar/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_yref.py b/plotly/validators/scatterpolar/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/_yref.py rename to plotly/validators/scatterpolar/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/__init__.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_color.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_color.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_family.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_family.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_size.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_size.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_style.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_style.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_variant.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_weight.py b/plotly/validators/scatterpolar/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scatterpolar/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scatterpolar/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scatterpolar/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/__init__.py b/plotly/validators/scatterpolar/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/__init__.py rename to plotly/validators/scatterpolar/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/_font.py b/plotly/validators/scatterpolar/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/_font.py rename to plotly/validators/scatterpolar/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/_side.py b/plotly/validators/scatterpolar/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/_side.py rename to plotly/validators/scatterpolar/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/_text.py b/plotly/validators/scatterpolar/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/_text.py rename to plotly/validators/scatterpolar/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/__init__.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/__init__.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_color.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_color.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_family.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_family.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_shadow.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_size.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_size.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_style.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_style.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_textcase.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_variant.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_variant.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_weight.py b/plotly/validators/scatterpolar/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/colorbar/title/font/_weight.py rename to plotly/validators/scatterpolar/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/__init__.py b/plotly/validators/scatterpolar/marker/gradient/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/__init__.py rename to plotly/validators/scatterpolar/marker/gradient/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/_color.py b/plotly/validators/scatterpolar/marker/gradient/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/_color.py rename to plotly/validators/scatterpolar/marker/gradient/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/_colorsrc.py b/plotly/validators/scatterpolar/marker/gradient/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/_colorsrc.py rename to plotly/validators/scatterpolar/marker/gradient/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/_type.py b/plotly/validators/scatterpolar/marker/gradient/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/_type.py rename to plotly/validators/scatterpolar/marker/gradient/_type.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/_typesrc.py b/plotly/validators/scatterpolar/marker/gradient/_typesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/gradient/_typesrc.py rename to plotly/validators/scatterpolar/marker/gradient/_typesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/__init__.py b/plotly/validators/scatterpolar/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/__init__.py rename to plotly/validators/scatterpolar/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_autocolorscale.py b/plotly/validators/scatterpolar/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_autocolorscale.py rename to plotly/validators/scatterpolar/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_cauto.py b/plotly/validators/scatterpolar/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_cauto.py rename to plotly/validators/scatterpolar/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_cmax.py b/plotly/validators/scatterpolar/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_cmax.py rename to plotly/validators/scatterpolar/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_cmid.py b/plotly/validators/scatterpolar/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_cmid.py rename to plotly/validators/scatterpolar/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_cmin.py b/plotly/validators/scatterpolar/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_cmin.py rename to plotly/validators/scatterpolar/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_color.py b/plotly/validators/scatterpolar/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_color.py rename to plotly/validators/scatterpolar/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_coloraxis.py b/plotly/validators/scatterpolar/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_coloraxis.py rename to plotly/validators/scatterpolar/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_colorscale.py b/plotly/validators/scatterpolar/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_colorscale.py rename to plotly/validators/scatterpolar/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_colorsrc.py b/plotly/validators/scatterpolar/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_colorsrc.py rename to plotly/validators/scatterpolar/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_reversescale.py b/plotly/validators/scatterpolar/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_reversescale.py rename to plotly/validators/scatterpolar/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_width.py b/plotly/validators/scatterpolar/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_width.py rename to plotly/validators/scatterpolar/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/marker/line/_widthsrc.py b/plotly/validators/scatterpolar/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/marker/line/_widthsrc.py rename to plotly/validators/scatterpolar/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/__init__.py b/plotly/validators/scatterpolar/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/__init__.py rename to plotly/validators/scatterpolar/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/_marker.py b/plotly/validators/scatterpolar/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/_marker.py rename to plotly/validators/scatterpolar/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/_textfont.py b/plotly/validators/scatterpolar/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/_textfont.py rename to plotly/validators/scatterpolar/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/marker/__init__.py b/plotly/validators/scatterpolar/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/marker/__init__.py rename to plotly/validators/scatterpolar/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/marker/_color.py b/plotly/validators/scatterpolar/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/marker/_color.py rename to plotly/validators/scatterpolar/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/marker/_opacity.py b/plotly/validators/scatterpolar/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/marker/_opacity.py rename to plotly/validators/scatterpolar/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/marker/_size.py b/plotly/validators/scatterpolar/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/marker/_size.py rename to plotly/validators/scatterpolar/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/textfont/__init__.py b/plotly/validators/scatterpolar/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/textfont/__init__.py rename to plotly/validators/scatterpolar/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/selected/textfont/_color.py b/plotly/validators/scatterpolar/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/selected/textfont/_color.py rename to plotly/validators/scatterpolar/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/stream/__init__.py b/plotly/validators/scatterpolar/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/stream/__init__.py rename to plotly/validators/scatterpolar/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/stream/_maxpoints.py b/plotly/validators/scatterpolar/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/stream/_maxpoints.py rename to plotly/validators/scatterpolar/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/stream/_token.py b/plotly/validators/scatterpolar/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/stream/_token.py rename to plotly/validators/scatterpolar/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/__init__.py b/plotly/validators/scatterpolar/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/__init__.py rename to plotly/validators/scatterpolar/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_color.py b/plotly/validators/scatterpolar/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_color.py rename to plotly/validators/scatterpolar/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_colorsrc.py b/plotly/validators/scatterpolar/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_colorsrc.py rename to plotly/validators/scatterpolar/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_family.py b/plotly/validators/scatterpolar/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_family.py rename to plotly/validators/scatterpolar/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_familysrc.py b/plotly/validators/scatterpolar/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_familysrc.py rename to plotly/validators/scatterpolar/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_lineposition.py b/plotly/validators/scatterpolar/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_lineposition.py rename to plotly/validators/scatterpolar/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_linepositionsrc.py b/plotly/validators/scatterpolar/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_linepositionsrc.py rename to plotly/validators/scatterpolar/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_shadow.py b/plotly/validators/scatterpolar/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_shadow.py rename to plotly/validators/scatterpolar/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_shadowsrc.py b/plotly/validators/scatterpolar/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_shadowsrc.py rename to plotly/validators/scatterpolar/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_size.py b/plotly/validators/scatterpolar/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_size.py rename to plotly/validators/scatterpolar/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_sizesrc.py b/plotly/validators/scatterpolar/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_sizesrc.py rename to plotly/validators/scatterpolar/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_style.py b/plotly/validators/scatterpolar/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_style.py rename to plotly/validators/scatterpolar/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_stylesrc.py b/plotly/validators/scatterpolar/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_stylesrc.py rename to plotly/validators/scatterpolar/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_textcase.py b/plotly/validators/scatterpolar/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_textcase.py rename to plotly/validators/scatterpolar/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_textcasesrc.py b/plotly/validators/scatterpolar/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_textcasesrc.py rename to plotly/validators/scatterpolar/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_variant.py b/plotly/validators/scatterpolar/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_variant.py rename to plotly/validators/scatterpolar/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_variantsrc.py b/plotly/validators/scatterpolar/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_variantsrc.py rename to plotly/validators/scatterpolar/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_weight.py b/plotly/validators/scatterpolar/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_weight.py rename to plotly/validators/scatterpolar/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/textfont/_weightsrc.py b/plotly/validators/scatterpolar/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/textfont/_weightsrc.py rename to plotly/validators/scatterpolar/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/__init__.py b/plotly/validators/scatterpolar/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/__init__.py rename to plotly/validators/scatterpolar/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/_marker.py b/plotly/validators/scatterpolar/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/_marker.py rename to plotly/validators/scatterpolar/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/_textfont.py b/plotly/validators/scatterpolar/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/_textfont.py rename to plotly/validators/scatterpolar/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/marker/__init__.py b/plotly/validators/scatterpolar/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/marker/__init__.py rename to plotly/validators/scatterpolar/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/marker/_color.py b/plotly/validators/scatterpolar/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/marker/_color.py rename to plotly/validators/scatterpolar/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/marker/_opacity.py b/plotly/validators/scatterpolar/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/marker/_opacity.py rename to plotly/validators/scatterpolar/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/marker/_size.py b/plotly/validators/scatterpolar/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/marker/_size.py rename to plotly/validators/scatterpolar/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/textfont/__init__.py b/plotly/validators/scatterpolar/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/textfont/__init__.py rename to plotly/validators/scatterpolar/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolar/unselected/textfont/_color.py b/plotly/validators/scatterpolar/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolar/unselected/textfont/_color.py rename to plotly/validators/scatterpolar/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/__init__.py b/plotly/validators/scatterpolargl/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/__init__.py rename to plotly/validators/scatterpolargl/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_connectgaps.py b/plotly/validators/scatterpolargl/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_connectgaps.py rename to plotly/validators/scatterpolargl/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_customdata.py b/plotly/validators/scatterpolargl/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_customdata.py rename to plotly/validators/scatterpolargl/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_customdatasrc.py b/plotly/validators/scatterpolargl/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_customdatasrc.py rename to plotly/validators/scatterpolargl/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_dr.py b/plotly/validators/scatterpolargl/_dr.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_dr.py rename to plotly/validators/scatterpolargl/_dr.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_dtheta.py b/plotly/validators/scatterpolargl/_dtheta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_dtheta.py rename to plotly/validators/scatterpolargl/_dtheta.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_fill.py b/plotly/validators/scatterpolargl/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_fill.py rename to plotly/validators/scatterpolargl/_fill.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_fillcolor.py b/plotly/validators/scatterpolargl/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_fillcolor.py rename to plotly/validators/scatterpolargl/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_hoverinfo.py b/plotly/validators/scatterpolargl/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_hoverinfo.py rename to plotly/validators/scatterpolargl/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_hoverinfosrc.py b/plotly/validators/scatterpolargl/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_hoverinfosrc.py rename to plotly/validators/scatterpolargl/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_hoverlabel.py b/plotly/validators/scatterpolargl/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_hoverlabel.py rename to plotly/validators/scatterpolargl/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_hovertemplate.py b/plotly/validators/scatterpolargl/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_hovertemplate.py rename to plotly/validators/scatterpolargl/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_hovertemplatesrc.py b/plotly/validators/scatterpolargl/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_hovertemplatesrc.py rename to plotly/validators/scatterpolargl/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_hovertext.py b/plotly/validators/scatterpolargl/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_hovertext.py rename to plotly/validators/scatterpolargl/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_hovertextsrc.py b/plotly/validators/scatterpolargl/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_hovertextsrc.py rename to plotly/validators/scatterpolargl/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_ids.py b/plotly/validators/scatterpolargl/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_ids.py rename to plotly/validators/scatterpolargl/_ids.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_idssrc.py b/plotly/validators/scatterpolargl/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_idssrc.py rename to plotly/validators/scatterpolargl/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_legend.py b/plotly/validators/scatterpolargl/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_legend.py rename to plotly/validators/scatterpolargl/_legend.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_legendgroup.py b/plotly/validators/scatterpolargl/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_legendgroup.py rename to plotly/validators/scatterpolargl/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_legendgrouptitle.py b/plotly/validators/scatterpolargl/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_legendgrouptitle.py rename to plotly/validators/scatterpolargl/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_legendrank.py b/plotly/validators/scatterpolargl/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_legendrank.py rename to plotly/validators/scatterpolargl/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_legendwidth.py b/plotly/validators/scatterpolargl/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_legendwidth.py rename to plotly/validators/scatterpolargl/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_line.py b/plotly/validators/scatterpolargl/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_line.py rename to plotly/validators/scatterpolargl/_line.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_marker.py b/plotly/validators/scatterpolargl/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_marker.py rename to plotly/validators/scatterpolargl/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_meta.py b/plotly/validators/scatterpolargl/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_meta.py rename to plotly/validators/scatterpolargl/_meta.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_metasrc.py b/plotly/validators/scatterpolargl/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_metasrc.py rename to plotly/validators/scatterpolargl/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_mode.py b/plotly/validators/scatterpolargl/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_mode.py rename to plotly/validators/scatterpolargl/_mode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_name.py b/plotly/validators/scatterpolargl/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_name.py rename to plotly/validators/scatterpolargl/_name.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_opacity.py b/plotly/validators/scatterpolargl/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_opacity.py rename to plotly/validators/scatterpolargl/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_r.py b/plotly/validators/scatterpolargl/_r.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_r.py rename to plotly/validators/scatterpolargl/_r.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_r0.py b/plotly/validators/scatterpolargl/_r0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_r0.py rename to plotly/validators/scatterpolargl/_r0.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_rsrc.py b/plotly/validators/scatterpolargl/_rsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_rsrc.py rename to plotly/validators/scatterpolargl/_rsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_selected.py b/plotly/validators/scatterpolargl/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_selected.py rename to plotly/validators/scatterpolargl/_selected.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_selectedpoints.py b/plotly/validators/scatterpolargl/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_selectedpoints.py rename to plotly/validators/scatterpolargl/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_showlegend.py b/plotly/validators/scatterpolargl/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_showlegend.py rename to plotly/validators/scatterpolargl/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_stream.py b/plotly/validators/scatterpolargl/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_stream.py rename to plotly/validators/scatterpolargl/_stream.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_subplot.py b/plotly/validators/scatterpolargl/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_subplot.py rename to plotly/validators/scatterpolargl/_subplot.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_text.py b/plotly/validators/scatterpolargl/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_text.py rename to plotly/validators/scatterpolargl/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_textfont.py b/plotly/validators/scatterpolargl/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_textfont.py rename to plotly/validators/scatterpolargl/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_textposition.py b/plotly/validators/scatterpolargl/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_textposition.py rename to plotly/validators/scatterpolargl/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_textpositionsrc.py b/plotly/validators/scatterpolargl/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_textpositionsrc.py rename to plotly/validators/scatterpolargl/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_textsrc.py b/plotly/validators/scatterpolargl/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_textsrc.py rename to plotly/validators/scatterpolargl/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_texttemplate.py b/plotly/validators/scatterpolargl/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_texttemplate.py rename to plotly/validators/scatterpolargl/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_texttemplatesrc.py b/plotly/validators/scatterpolargl/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_texttemplatesrc.py rename to plotly/validators/scatterpolargl/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_theta.py b/plotly/validators/scatterpolargl/_theta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_theta.py rename to plotly/validators/scatterpolargl/_theta.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_theta0.py b/plotly/validators/scatterpolargl/_theta0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_theta0.py rename to plotly/validators/scatterpolargl/_theta0.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_thetasrc.py b/plotly/validators/scatterpolargl/_thetasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_thetasrc.py rename to plotly/validators/scatterpolargl/_thetasrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_thetaunit.py b/plotly/validators/scatterpolargl/_thetaunit.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_thetaunit.py rename to plotly/validators/scatterpolargl/_thetaunit.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_uid.py b/plotly/validators/scatterpolargl/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_uid.py rename to plotly/validators/scatterpolargl/_uid.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_uirevision.py b/plotly/validators/scatterpolargl/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_uirevision.py rename to plotly/validators/scatterpolargl/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_unselected.py b/plotly/validators/scatterpolargl/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_unselected.py rename to plotly/validators/scatterpolargl/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/_visible.py b/plotly/validators/scatterpolargl/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/_visible.py rename to plotly/validators/scatterpolargl/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/__init__.py b/plotly/validators/scatterpolargl/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/__init__.py rename to plotly/validators/scatterpolargl/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_align.py b/plotly/validators/scatterpolargl/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_align.py rename to plotly/validators/scatterpolargl/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_alignsrc.py b/plotly/validators/scatterpolargl/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_alignsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_bgcolor.py b/plotly/validators/scatterpolargl/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_bgcolor.py rename to plotly/validators/scatterpolargl/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_bgcolorsrc.py b/plotly/validators/scatterpolargl/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_bordercolor.py b/plotly/validators/scatterpolargl/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_bordercolor.py rename to plotly/validators/scatterpolargl/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_bordercolorsrc.py b/plotly/validators/scatterpolargl/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_font.py b/plotly/validators/scatterpolargl/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_font.py rename to plotly/validators/scatterpolargl/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_namelength.py b/plotly/validators/scatterpolargl/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_namelength.py rename to plotly/validators/scatterpolargl/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_namelengthsrc.py b/plotly/validators/scatterpolargl/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/_namelengthsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/__init__.py b/plotly/validators/scatterpolargl/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/__init__.py rename to plotly/validators/scatterpolargl/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_color.py b/plotly/validators/scatterpolargl/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_color.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_colorsrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_colorsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_family.py b/plotly/validators/scatterpolargl/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_family.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_familysrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_familysrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_lineposition.py b/plotly/validators/scatterpolargl/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_lineposition.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_shadow.py b/plotly/validators/scatterpolargl/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_shadow.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_shadowsrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_size.py b/plotly/validators/scatterpolargl/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_size.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_sizesrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_sizesrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_style.py b/plotly/validators/scatterpolargl/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_style.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_stylesrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_stylesrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_textcase.py b/plotly/validators/scatterpolargl/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_textcase.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_textcasesrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_variant.py b/plotly/validators/scatterpolargl/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_variant.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_variantsrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_variantsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_weight.py b/plotly/validators/scatterpolargl/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_weight.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_weightsrc.py b/plotly/validators/scatterpolargl/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/hoverlabel/font/_weightsrc.py rename to plotly/validators/scatterpolargl/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/__init__.py b/plotly/validators/scatterpolargl/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/__init__.py rename to plotly/validators/scatterpolargl/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/_font.py b/plotly/validators/scatterpolargl/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/_font.py rename to plotly/validators/scatterpolargl/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/_text.py b/plotly/validators/scatterpolargl/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/_text.py rename to plotly/validators/scatterpolargl/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/__init__.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/__init__.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_color.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_color.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_family.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_family.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_lineposition.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_shadow.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_shadow.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_size.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_size.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_style.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_style.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_textcase.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_textcase.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_variant.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_variant.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_weight.py b/plotly/validators/scatterpolargl/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/legendgrouptitle/font/_weight.py rename to plotly/validators/scatterpolargl/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/line/__init__.py b/plotly/validators/scatterpolargl/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/line/__init__.py rename to plotly/validators/scatterpolargl/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/line/_color.py b/plotly/validators/scatterpolargl/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/line/_color.py rename to plotly/validators/scatterpolargl/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/line/_dash.py b/plotly/validators/scatterpolargl/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/line/_dash.py rename to plotly/validators/scatterpolargl/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/line/_width.py b/plotly/validators/scatterpolargl/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/line/_width.py rename to plotly/validators/scatterpolargl/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/__init__.py b/plotly/validators/scatterpolargl/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/__init__.py rename to plotly/validators/scatterpolargl/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_angle.py b/plotly/validators/scatterpolargl/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_angle.py rename to plotly/validators/scatterpolargl/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_anglesrc.py b/plotly/validators/scatterpolargl/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_anglesrc.py rename to plotly/validators/scatterpolargl/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_autocolorscale.py b/plotly/validators/scatterpolargl/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_autocolorscale.py rename to plotly/validators/scatterpolargl/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_cauto.py b/plotly/validators/scatterpolargl/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_cauto.py rename to plotly/validators/scatterpolargl/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_cmax.py b/plotly/validators/scatterpolargl/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_cmax.py rename to plotly/validators/scatterpolargl/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_cmid.py b/plotly/validators/scatterpolargl/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_cmid.py rename to plotly/validators/scatterpolargl/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_cmin.py b/plotly/validators/scatterpolargl/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_cmin.py rename to plotly/validators/scatterpolargl/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_color.py b/plotly/validators/scatterpolargl/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_color.py rename to plotly/validators/scatterpolargl/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_coloraxis.py b/plotly/validators/scatterpolargl/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_coloraxis.py rename to plotly/validators/scatterpolargl/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_colorbar.py b/plotly/validators/scatterpolargl/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_colorbar.py rename to plotly/validators/scatterpolargl/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_colorscale.py b/plotly/validators/scatterpolargl/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_colorscale.py rename to plotly/validators/scatterpolargl/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_colorsrc.py b/plotly/validators/scatterpolargl/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_colorsrc.py rename to plotly/validators/scatterpolargl/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_line.py b/plotly/validators/scatterpolargl/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_line.py rename to plotly/validators/scatterpolargl/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_opacity.py b/plotly/validators/scatterpolargl/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_opacity.py rename to plotly/validators/scatterpolargl/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_opacitysrc.py b/plotly/validators/scatterpolargl/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_opacitysrc.py rename to plotly/validators/scatterpolargl/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_reversescale.py b/plotly/validators/scatterpolargl/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_reversescale.py rename to plotly/validators/scatterpolargl/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_showscale.py b/plotly/validators/scatterpolargl/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_showscale.py rename to plotly/validators/scatterpolargl/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_size.py b/plotly/validators/scatterpolargl/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_size.py rename to plotly/validators/scatterpolargl/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_sizemin.py b/plotly/validators/scatterpolargl/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_sizemin.py rename to plotly/validators/scatterpolargl/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_sizemode.py b/plotly/validators/scatterpolargl/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_sizemode.py rename to plotly/validators/scatterpolargl/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_sizeref.py b/plotly/validators/scatterpolargl/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_sizeref.py rename to plotly/validators/scatterpolargl/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_sizesrc.py b/plotly/validators/scatterpolargl/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_sizesrc.py rename to plotly/validators/scatterpolargl/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_symbol.py b/plotly/validators/scatterpolargl/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_symbol.py rename to plotly/validators/scatterpolargl/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/_symbolsrc.py b/plotly/validators/scatterpolargl/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/_symbolsrc.py rename to plotly/validators/scatterpolargl/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/__init__.py b/plotly/validators/scatterpolargl/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/__init__.py rename to plotly/validators/scatterpolargl/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_bgcolor.py b/plotly/validators/scatterpolargl/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_bgcolor.py rename to plotly/validators/scatterpolargl/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_bordercolor.py b/plotly/validators/scatterpolargl/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_bordercolor.py rename to plotly/validators/scatterpolargl/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_borderwidth.py b/plotly/validators/scatterpolargl/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_borderwidth.py rename to plotly/validators/scatterpolargl/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_dtick.py b/plotly/validators/scatterpolargl/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_dtick.py rename to plotly/validators/scatterpolargl/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_exponentformat.py b/plotly/validators/scatterpolargl/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_exponentformat.py rename to plotly/validators/scatterpolargl/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_labelalias.py b/plotly/validators/scatterpolargl/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_labelalias.py rename to plotly/validators/scatterpolargl/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_len.py b/plotly/validators/scatterpolargl/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_len.py rename to plotly/validators/scatterpolargl/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_lenmode.py b/plotly/validators/scatterpolargl/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_lenmode.py rename to plotly/validators/scatterpolargl/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_minexponent.py b/plotly/validators/scatterpolargl/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_minexponent.py rename to plotly/validators/scatterpolargl/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_nticks.py b/plotly/validators/scatterpolargl/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_nticks.py rename to plotly/validators/scatterpolargl/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_orientation.py b/plotly/validators/scatterpolargl/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_orientation.py rename to plotly/validators/scatterpolargl/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_outlinecolor.py b/plotly/validators/scatterpolargl/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_outlinecolor.py rename to plotly/validators/scatterpolargl/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_outlinewidth.py b/plotly/validators/scatterpolargl/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_outlinewidth.py rename to plotly/validators/scatterpolargl/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_separatethousands.py b/plotly/validators/scatterpolargl/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_separatethousands.py rename to plotly/validators/scatterpolargl/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_showexponent.py b/plotly/validators/scatterpolargl/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_showexponent.py rename to plotly/validators/scatterpolargl/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_showticklabels.py b/plotly/validators/scatterpolargl/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_showticklabels.py rename to plotly/validators/scatterpolargl/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_showtickprefix.py b/plotly/validators/scatterpolargl/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_showtickprefix.py rename to plotly/validators/scatterpolargl/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_showticksuffix.py b/plotly/validators/scatterpolargl/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_showticksuffix.py rename to plotly/validators/scatterpolargl/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_thickness.py b/plotly/validators/scatterpolargl/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_thickness.py rename to plotly/validators/scatterpolargl/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_thicknessmode.py b/plotly/validators/scatterpolargl/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_thicknessmode.py rename to plotly/validators/scatterpolargl/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tick0.py b/plotly/validators/scatterpolargl/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tick0.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickangle.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickangle.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickcolor.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickcolor.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickfont.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickfont.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickformat.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickformat.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstops.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickformatstops.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scatterpolargl/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticklabelposition.py b/plotly/validators/scatterpolargl/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticklabelstep.py b/plotly/validators/scatterpolargl/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticklen.py b/plotly/validators/scatterpolargl/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticklen.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickmode.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickmode.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickprefix.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickprefix.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticks.py b/plotly/validators/scatterpolargl/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticks.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticksuffix.py b/plotly/validators/scatterpolargl/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticksuffix.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticktext.py b/plotly/validators/scatterpolargl/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticktext.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticktextsrc.py b/plotly/validators/scatterpolargl/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickvals.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickvals.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickvalssrc.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickwidth.py b/plotly/validators/scatterpolargl/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_tickwidth.py rename to plotly/validators/scatterpolargl/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_title.py b/plotly/validators/scatterpolargl/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_title.py rename to plotly/validators/scatterpolargl/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_x.py b/plotly/validators/scatterpolargl/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_x.py rename to plotly/validators/scatterpolargl/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_xanchor.py b/plotly/validators/scatterpolargl/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_xanchor.py rename to plotly/validators/scatterpolargl/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_xpad.py b/plotly/validators/scatterpolargl/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_xpad.py rename to plotly/validators/scatterpolargl/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_xref.py b/plotly/validators/scatterpolargl/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_xref.py rename to plotly/validators/scatterpolargl/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_y.py b/plotly/validators/scatterpolargl/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_y.py rename to plotly/validators/scatterpolargl/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_yanchor.py b/plotly/validators/scatterpolargl/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_yanchor.py rename to plotly/validators/scatterpolargl/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ypad.py b/plotly/validators/scatterpolargl/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_ypad.py rename to plotly/validators/scatterpolargl/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_yref.py b/plotly/validators/scatterpolargl/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/_yref.py rename to plotly/validators/scatterpolargl/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/__init__.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_color.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_color.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_family.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_family.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_size.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_size.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_style.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_style.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_variant.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_weight.py b/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scatterpolargl/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/__init__.py b/plotly/validators/scatterpolargl/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/__init__.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/_font.py b/plotly/validators/scatterpolargl/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/_font.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/_side.py b/plotly/validators/scatterpolargl/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/_side.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/_text.py b/plotly/validators/scatterpolargl/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/_text.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/__init__.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/__init__.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_color.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_color.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_family.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_family.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_shadow.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_size.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_size.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_style.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_style.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_textcase.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_variant.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_variant.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_weight.py b/plotly/validators/scatterpolargl/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/colorbar/title/font/_weight.py rename to plotly/validators/scatterpolargl/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/__init__.py b/plotly/validators/scatterpolargl/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/__init__.py rename to plotly/validators/scatterpolargl/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_autocolorscale.py b/plotly/validators/scatterpolargl/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_autocolorscale.py rename to plotly/validators/scatterpolargl/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_cauto.py b/plotly/validators/scatterpolargl/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_cauto.py rename to plotly/validators/scatterpolargl/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_cmax.py b/plotly/validators/scatterpolargl/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_cmax.py rename to plotly/validators/scatterpolargl/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_cmid.py b/plotly/validators/scatterpolargl/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_cmid.py rename to plotly/validators/scatterpolargl/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_cmin.py b/plotly/validators/scatterpolargl/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_cmin.py rename to plotly/validators/scatterpolargl/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_color.py b/plotly/validators/scatterpolargl/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_color.py rename to plotly/validators/scatterpolargl/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_coloraxis.py b/plotly/validators/scatterpolargl/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_coloraxis.py rename to plotly/validators/scatterpolargl/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_colorscale.py b/plotly/validators/scatterpolargl/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_colorscale.py rename to plotly/validators/scatterpolargl/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_colorsrc.py b/plotly/validators/scatterpolargl/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_colorsrc.py rename to plotly/validators/scatterpolargl/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_reversescale.py b/plotly/validators/scatterpolargl/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_reversescale.py rename to plotly/validators/scatterpolargl/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_width.py b/plotly/validators/scatterpolargl/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_width.py rename to plotly/validators/scatterpolargl/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_widthsrc.py b/plotly/validators/scatterpolargl/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/marker/line/_widthsrc.py rename to plotly/validators/scatterpolargl/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/__init__.py b/plotly/validators/scatterpolargl/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/__init__.py rename to plotly/validators/scatterpolargl/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/_marker.py b/plotly/validators/scatterpolargl/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/_marker.py rename to plotly/validators/scatterpolargl/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/_textfont.py b/plotly/validators/scatterpolargl/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/_textfont.py rename to plotly/validators/scatterpolargl/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/marker/__init__.py b/plotly/validators/scatterpolargl/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/marker/__init__.py rename to plotly/validators/scatterpolargl/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/marker/_color.py b/plotly/validators/scatterpolargl/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/marker/_color.py rename to plotly/validators/scatterpolargl/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/marker/_opacity.py b/plotly/validators/scatterpolargl/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/marker/_opacity.py rename to plotly/validators/scatterpolargl/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/marker/_size.py b/plotly/validators/scatterpolargl/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/marker/_size.py rename to plotly/validators/scatterpolargl/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/textfont/__init__.py b/plotly/validators/scatterpolargl/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/textfont/__init__.py rename to plotly/validators/scatterpolargl/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/selected/textfont/_color.py b/plotly/validators/scatterpolargl/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/selected/textfont/_color.py rename to plotly/validators/scatterpolargl/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/stream/__init__.py b/plotly/validators/scatterpolargl/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/stream/__init__.py rename to plotly/validators/scatterpolargl/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/stream/_maxpoints.py b/plotly/validators/scatterpolargl/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/stream/_maxpoints.py rename to plotly/validators/scatterpolargl/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/stream/_token.py b/plotly/validators/scatterpolargl/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/stream/_token.py rename to plotly/validators/scatterpolargl/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/__init__.py b/plotly/validators/scatterpolargl/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/__init__.py rename to plotly/validators/scatterpolargl/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_color.py b/plotly/validators/scatterpolargl/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_color.py rename to plotly/validators/scatterpolargl/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_colorsrc.py b/plotly/validators/scatterpolargl/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_colorsrc.py rename to plotly/validators/scatterpolargl/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_family.py b/plotly/validators/scatterpolargl/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_family.py rename to plotly/validators/scatterpolargl/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_familysrc.py b/plotly/validators/scatterpolargl/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_familysrc.py rename to plotly/validators/scatterpolargl/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_size.py b/plotly/validators/scatterpolargl/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_size.py rename to plotly/validators/scatterpolargl/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_sizesrc.py b/plotly/validators/scatterpolargl/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_sizesrc.py rename to plotly/validators/scatterpolargl/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_style.py b/plotly/validators/scatterpolargl/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_style.py rename to plotly/validators/scatterpolargl/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_stylesrc.py b/plotly/validators/scatterpolargl/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_stylesrc.py rename to plotly/validators/scatterpolargl/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_variant.py b/plotly/validators/scatterpolargl/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_variant.py rename to plotly/validators/scatterpolargl/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_variantsrc.py b/plotly/validators/scatterpolargl/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_variantsrc.py rename to plotly/validators/scatterpolargl/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_weight.py b/plotly/validators/scatterpolargl/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_weight.py rename to plotly/validators/scatterpolargl/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/textfont/_weightsrc.py b/plotly/validators/scatterpolargl/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/textfont/_weightsrc.py rename to plotly/validators/scatterpolargl/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/__init__.py b/plotly/validators/scatterpolargl/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/__init__.py rename to plotly/validators/scatterpolargl/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/_marker.py b/plotly/validators/scatterpolargl/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/_marker.py rename to plotly/validators/scatterpolargl/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/_textfont.py b/plotly/validators/scatterpolargl/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/_textfont.py rename to plotly/validators/scatterpolargl/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/marker/__init__.py b/plotly/validators/scatterpolargl/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/marker/__init__.py rename to plotly/validators/scatterpolargl/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/marker/_color.py b/plotly/validators/scatterpolargl/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/marker/_color.py rename to plotly/validators/scatterpolargl/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/marker/_opacity.py b/plotly/validators/scatterpolargl/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/marker/_opacity.py rename to plotly/validators/scatterpolargl/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/marker/_size.py b/plotly/validators/scatterpolargl/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/marker/_size.py rename to plotly/validators/scatterpolargl/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/textfont/__init__.py b/plotly/validators/scatterpolargl/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/textfont/__init__.py rename to plotly/validators/scatterpolargl/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterpolargl/unselected/textfont/_color.py b/plotly/validators/scatterpolargl/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterpolargl/unselected/textfont/_color.py rename to plotly/validators/scatterpolargl/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/__init__.py b/plotly/validators/scattersmith/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/__init__.py rename to plotly/validators/scattersmith/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_cliponaxis.py b/plotly/validators/scattersmith/_cliponaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_cliponaxis.py rename to plotly/validators/scattersmith/_cliponaxis.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_connectgaps.py b/plotly/validators/scattersmith/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_connectgaps.py rename to plotly/validators/scattersmith/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_customdata.py b/plotly/validators/scattersmith/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_customdata.py rename to plotly/validators/scattersmith/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_customdatasrc.py b/plotly/validators/scattersmith/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_customdatasrc.py rename to plotly/validators/scattersmith/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_fill.py b/plotly/validators/scattersmith/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_fill.py rename to plotly/validators/scattersmith/_fill.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_fillcolor.py b/plotly/validators/scattersmith/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_fillcolor.py rename to plotly/validators/scattersmith/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_hoverinfo.py b/plotly/validators/scattersmith/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_hoverinfo.py rename to plotly/validators/scattersmith/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_hoverinfosrc.py b/plotly/validators/scattersmith/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_hoverinfosrc.py rename to plotly/validators/scattersmith/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_hoverlabel.py b/plotly/validators/scattersmith/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_hoverlabel.py rename to plotly/validators/scattersmith/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_hoveron.py b/plotly/validators/scattersmith/_hoveron.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_hoveron.py rename to plotly/validators/scattersmith/_hoveron.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_hovertemplate.py b/plotly/validators/scattersmith/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_hovertemplate.py rename to plotly/validators/scattersmith/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_hovertemplatesrc.py b/plotly/validators/scattersmith/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_hovertemplatesrc.py rename to plotly/validators/scattersmith/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_hovertext.py b/plotly/validators/scattersmith/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_hovertext.py rename to plotly/validators/scattersmith/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_hovertextsrc.py b/plotly/validators/scattersmith/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_hovertextsrc.py rename to plotly/validators/scattersmith/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_ids.py b/plotly/validators/scattersmith/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_ids.py rename to plotly/validators/scattersmith/_ids.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_idssrc.py b/plotly/validators/scattersmith/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_idssrc.py rename to plotly/validators/scattersmith/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_imag.py b/plotly/validators/scattersmith/_imag.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_imag.py rename to plotly/validators/scattersmith/_imag.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_imagsrc.py b/plotly/validators/scattersmith/_imagsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_imagsrc.py rename to plotly/validators/scattersmith/_imagsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_legend.py b/plotly/validators/scattersmith/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_legend.py rename to plotly/validators/scattersmith/_legend.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_legendgroup.py b/plotly/validators/scattersmith/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_legendgroup.py rename to plotly/validators/scattersmith/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_legendgrouptitle.py b/plotly/validators/scattersmith/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_legendgrouptitle.py rename to plotly/validators/scattersmith/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_legendrank.py b/plotly/validators/scattersmith/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_legendrank.py rename to plotly/validators/scattersmith/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_legendwidth.py b/plotly/validators/scattersmith/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_legendwidth.py rename to plotly/validators/scattersmith/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_line.py b/plotly/validators/scattersmith/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_line.py rename to plotly/validators/scattersmith/_line.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_marker.py b/plotly/validators/scattersmith/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_marker.py rename to plotly/validators/scattersmith/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_meta.py b/plotly/validators/scattersmith/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_meta.py rename to plotly/validators/scattersmith/_meta.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_metasrc.py b/plotly/validators/scattersmith/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_metasrc.py rename to plotly/validators/scattersmith/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_mode.py b/plotly/validators/scattersmith/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_mode.py rename to plotly/validators/scattersmith/_mode.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_name.py b/plotly/validators/scattersmith/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_name.py rename to plotly/validators/scattersmith/_name.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_opacity.py b/plotly/validators/scattersmith/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_opacity.py rename to plotly/validators/scattersmith/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_real.py b/plotly/validators/scattersmith/_real.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_real.py rename to plotly/validators/scattersmith/_real.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_realsrc.py b/plotly/validators/scattersmith/_realsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_realsrc.py rename to plotly/validators/scattersmith/_realsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_selected.py b/plotly/validators/scattersmith/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_selected.py rename to plotly/validators/scattersmith/_selected.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_selectedpoints.py b/plotly/validators/scattersmith/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_selectedpoints.py rename to plotly/validators/scattersmith/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_showlegend.py b/plotly/validators/scattersmith/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_showlegend.py rename to plotly/validators/scattersmith/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_stream.py b/plotly/validators/scattersmith/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_stream.py rename to plotly/validators/scattersmith/_stream.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_subplot.py b/plotly/validators/scattersmith/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_subplot.py rename to plotly/validators/scattersmith/_subplot.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_text.py b/plotly/validators/scattersmith/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_text.py rename to plotly/validators/scattersmith/_text.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_textfont.py b/plotly/validators/scattersmith/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_textfont.py rename to plotly/validators/scattersmith/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_textposition.py b/plotly/validators/scattersmith/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_textposition.py rename to plotly/validators/scattersmith/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_textpositionsrc.py b/plotly/validators/scattersmith/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_textpositionsrc.py rename to plotly/validators/scattersmith/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_textsrc.py b/plotly/validators/scattersmith/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_textsrc.py rename to plotly/validators/scattersmith/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_texttemplate.py b/plotly/validators/scattersmith/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_texttemplate.py rename to plotly/validators/scattersmith/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_texttemplatesrc.py b/plotly/validators/scattersmith/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_texttemplatesrc.py rename to plotly/validators/scattersmith/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_uid.py b/plotly/validators/scattersmith/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_uid.py rename to plotly/validators/scattersmith/_uid.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_uirevision.py b/plotly/validators/scattersmith/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_uirevision.py rename to plotly/validators/scattersmith/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_unselected.py b/plotly/validators/scattersmith/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_unselected.py rename to plotly/validators/scattersmith/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/_visible.py b/plotly/validators/scattersmith/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/_visible.py rename to plotly/validators/scattersmith/_visible.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/__init__.py b/plotly/validators/scattersmith/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/__init__.py rename to plotly/validators/scattersmith/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_align.py b/plotly/validators/scattersmith/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_align.py rename to plotly/validators/scattersmith/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_alignsrc.py b/plotly/validators/scattersmith/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_alignsrc.py rename to plotly/validators/scattersmith/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_bgcolor.py b/plotly/validators/scattersmith/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_bgcolor.py rename to plotly/validators/scattersmith/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_bgcolorsrc.py b/plotly/validators/scattersmith/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scattersmith/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_bordercolor.py b/plotly/validators/scattersmith/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_bordercolor.py rename to plotly/validators/scattersmith/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_bordercolorsrc.py b/plotly/validators/scattersmith/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scattersmith/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_font.py b/plotly/validators/scattersmith/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_font.py rename to plotly/validators/scattersmith/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_namelength.py b/plotly/validators/scattersmith/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_namelength.py rename to plotly/validators/scattersmith/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_namelengthsrc.py b/plotly/validators/scattersmith/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/_namelengthsrc.py rename to plotly/validators/scattersmith/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/__init__.py b/plotly/validators/scattersmith/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/__init__.py rename to plotly/validators/scattersmith/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_color.py b/plotly/validators/scattersmith/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_color.py rename to plotly/validators/scattersmith/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_colorsrc.py b/plotly/validators/scattersmith/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_colorsrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_family.py b/plotly/validators/scattersmith/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_family.py rename to plotly/validators/scattersmith/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_familysrc.py b/plotly/validators/scattersmith/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_familysrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_lineposition.py b/plotly/validators/scattersmith/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_lineposition.py rename to plotly/validators/scattersmith/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scattersmith/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_shadow.py b/plotly/validators/scattersmith/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_shadow.py rename to plotly/validators/scattersmith/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_shadowsrc.py b/plotly/validators/scattersmith/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_size.py b/plotly/validators/scattersmith/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_size.py rename to plotly/validators/scattersmith/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_sizesrc.py b/plotly/validators/scattersmith/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_sizesrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_style.py b/plotly/validators/scattersmith/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_style.py rename to plotly/validators/scattersmith/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_stylesrc.py b/plotly/validators/scattersmith/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_stylesrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_textcase.py b/plotly/validators/scattersmith/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_textcase.py rename to plotly/validators/scattersmith/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_textcasesrc.py b/plotly/validators/scattersmith/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_variant.py b/plotly/validators/scattersmith/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_variant.py rename to plotly/validators/scattersmith/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_variantsrc.py b/plotly/validators/scattersmith/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_variantsrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_weight.py b/plotly/validators/scattersmith/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_weight.py rename to plotly/validators/scattersmith/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_weightsrc.py b/plotly/validators/scattersmith/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/hoverlabel/font/_weightsrc.py rename to plotly/validators/scattersmith/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/__init__.py b/plotly/validators/scattersmith/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/__init__.py rename to plotly/validators/scattersmith/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/_font.py b/plotly/validators/scattersmith/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/_font.py rename to plotly/validators/scattersmith/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/_text.py b/plotly/validators/scattersmith/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/_text.py rename to plotly/validators/scattersmith/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/__init__.py b/plotly/validators/scattersmith/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/__init__.py rename to plotly/validators/scattersmith/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_color.py b/plotly/validators/scattersmith/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_color.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_family.py b/plotly/validators/scattersmith/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_family.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_lineposition.py b/plotly/validators/scattersmith/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_shadow.py b/plotly/validators/scattersmith/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_shadow.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_size.py b/plotly/validators/scattersmith/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_size.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_style.py b/plotly/validators/scattersmith/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_style.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_textcase.py b/plotly/validators/scattersmith/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_textcase.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_variant.py b/plotly/validators/scattersmith/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_variant.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_weight.py b/plotly/validators/scattersmith/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/legendgrouptitle/font/_weight.py rename to plotly/validators/scattersmith/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/line/__init__.py b/plotly/validators/scattersmith/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/line/__init__.py rename to plotly/validators/scattersmith/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/line/_backoff.py b/plotly/validators/scattersmith/line/_backoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/line/_backoff.py rename to plotly/validators/scattersmith/line/_backoff.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/line/_backoffsrc.py b/plotly/validators/scattersmith/line/_backoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/line/_backoffsrc.py rename to plotly/validators/scattersmith/line/_backoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/line/_color.py b/plotly/validators/scattersmith/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/line/_color.py rename to plotly/validators/scattersmith/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/line/_dash.py b/plotly/validators/scattersmith/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/line/_dash.py rename to plotly/validators/scattersmith/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/line/_shape.py b/plotly/validators/scattersmith/line/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/line/_shape.py rename to plotly/validators/scattersmith/line/_shape.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/line/_smoothing.py b/plotly/validators/scattersmith/line/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/line/_smoothing.py rename to plotly/validators/scattersmith/line/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/line/_width.py b/plotly/validators/scattersmith/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/line/_width.py rename to plotly/validators/scattersmith/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/__init__.py b/plotly/validators/scattersmith/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/__init__.py rename to plotly/validators/scattersmith/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_angle.py b/plotly/validators/scattersmith/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_angle.py rename to plotly/validators/scattersmith/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_angleref.py b/plotly/validators/scattersmith/marker/_angleref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_angleref.py rename to plotly/validators/scattersmith/marker/_angleref.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_anglesrc.py b/plotly/validators/scattersmith/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_anglesrc.py rename to plotly/validators/scattersmith/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_autocolorscale.py b/plotly/validators/scattersmith/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_autocolorscale.py rename to plotly/validators/scattersmith/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_cauto.py b/plotly/validators/scattersmith/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_cauto.py rename to plotly/validators/scattersmith/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_cmax.py b/plotly/validators/scattersmith/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_cmax.py rename to plotly/validators/scattersmith/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_cmid.py b/plotly/validators/scattersmith/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_cmid.py rename to plotly/validators/scattersmith/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_cmin.py b/plotly/validators/scattersmith/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_cmin.py rename to plotly/validators/scattersmith/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_color.py b/plotly/validators/scattersmith/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_color.py rename to plotly/validators/scattersmith/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_coloraxis.py b/plotly/validators/scattersmith/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_coloraxis.py rename to plotly/validators/scattersmith/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_colorbar.py b/plotly/validators/scattersmith/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_colorbar.py rename to plotly/validators/scattersmith/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_colorscale.py b/plotly/validators/scattersmith/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_colorscale.py rename to plotly/validators/scattersmith/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_colorsrc.py b/plotly/validators/scattersmith/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_colorsrc.py rename to plotly/validators/scattersmith/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_gradient.py b/plotly/validators/scattersmith/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_gradient.py rename to plotly/validators/scattersmith/marker/_gradient.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_line.py b/plotly/validators/scattersmith/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_line.py rename to plotly/validators/scattersmith/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_maxdisplayed.py b/plotly/validators/scattersmith/marker/_maxdisplayed.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_maxdisplayed.py rename to plotly/validators/scattersmith/marker/_maxdisplayed.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_opacity.py b/plotly/validators/scattersmith/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_opacity.py rename to plotly/validators/scattersmith/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_opacitysrc.py b/plotly/validators/scattersmith/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_opacitysrc.py rename to plotly/validators/scattersmith/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_reversescale.py b/plotly/validators/scattersmith/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_reversescale.py rename to plotly/validators/scattersmith/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_showscale.py b/plotly/validators/scattersmith/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_showscale.py rename to plotly/validators/scattersmith/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_size.py b/plotly/validators/scattersmith/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_size.py rename to plotly/validators/scattersmith/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_sizemin.py b/plotly/validators/scattersmith/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_sizemin.py rename to plotly/validators/scattersmith/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_sizemode.py b/plotly/validators/scattersmith/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_sizemode.py rename to plotly/validators/scattersmith/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_sizeref.py b/plotly/validators/scattersmith/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_sizeref.py rename to plotly/validators/scattersmith/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_sizesrc.py b/plotly/validators/scattersmith/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_sizesrc.py rename to plotly/validators/scattersmith/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_standoff.py b/plotly/validators/scattersmith/marker/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_standoff.py rename to plotly/validators/scattersmith/marker/_standoff.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_standoffsrc.py b/plotly/validators/scattersmith/marker/_standoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_standoffsrc.py rename to plotly/validators/scattersmith/marker/_standoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_symbol.py b/plotly/validators/scattersmith/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_symbol.py rename to plotly/validators/scattersmith/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/_symbolsrc.py b/plotly/validators/scattersmith/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/_symbolsrc.py rename to plotly/validators/scattersmith/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/__init__.py b/plotly/validators/scattersmith/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/__init__.py rename to plotly/validators/scattersmith/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_bgcolor.py b/plotly/validators/scattersmith/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_bgcolor.py rename to plotly/validators/scattersmith/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_bordercolor.py b/plotly/validators/scattersmith/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_bordercolor.py rename to plotly/validators/scattersmith/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_borderwidth.py b/plotly/validators/scattersmith/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_borderwidth.py rename to plotly/validators/scattersmith/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_dtick.py b/plotly/validators/scattersmith/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_dtick.py rename to plotly/validators/scattersmith/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_exponentformat.py b/plotly/validators/scattersmith/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_exponentformat.py rename to plotly/validators/scattersmith/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_labelalias.py b/plotly/validators/scattersmith/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_labelalias.py rename to plotly/validators/scattersmith/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_len.py b/plotly/validators/scattersmith/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_len.py rename to plotly/validators/scattersmith/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_lenmode.py b/plotly/validators/scattersmith/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_lenmode.py rename to plotly/validators/scattersmith/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_minexponent.py b/plotly/validators/scattersmith/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_minexponent.py rename to plotly/validators/scattersmith/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_nticks.py b/plotly/validators/scattersmith/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_nticks.py rename to plotly/validators/scattersmith/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_orientation.py b/plotly/validators/scattersmith/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_orientation.py rename to plotly/validators/scattersmith/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_outlinecolor.py b/plotly/validators/scattersmith/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_outlinecolor.py rename to plotly/validators/scattersmith/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_outlinewidth.py b/plotly/validators/scattersmith/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_outlinewidth.py rename to plotly/validators/scattersmith/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_separatethousands.py b/plotly/validators/scattersmith/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_separatethousands.py rename to plotly/validators/scattersmith/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_showexponent.py b/plotly/validators/scattersmith/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_showexponent.py rename to plotly/validators/scattersmith/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_showticklabels.py b/plotly/validators/scattersmith/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_showticklabels.py rename to plotly/validators/scattersmith/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_showtickprefix.py b/plotly/validators/scattersmith/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_showtickprefix.py rename to plotly/validators/scattersmith/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_showticksuffix.py b/plotly/validators/scattersmith/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_showticksuffix.py rename to plotly/validators/scattersmith/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_thickness.py b/plotly/validators/scattersmith/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_thickness.py rename to plotly/validators/scattersmith/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_thicknessmode.py b/plotly/validators/scattersmith/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_thicknessmode.py rename to plotly/validators/scattersmith/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tick0.py b/plotly/validators/scattersmith/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tick0.py rename to plotly/validators/scattersmith/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickangle.py b/plotly/validators/scattersmith/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickangle.py rename to plotly/validators/scattersmith/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickcolor.py b/plotly/validators/scattersmith/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickcolor.py rename to plotly/validators/scattersmith/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickfont.py b/plotly/validators/scattersmith/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickfont.py rename to plotly/validators/scattersmith/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickformat.py b/plotly/validators/scattersmith/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickformat.py rename to plotly/validators/scattersmith/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scattersmith/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scattersmith/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickformatstops.py b/plotly/validators/scattersmith/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickformatstops.py rename to plotly/validators/scattersmith/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scattersmith/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scattersmith/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticklabelposition.py b/plotly/validators/scattersmith/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scattersmith/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticklabelstep.py b/plotly/validators/scattersmith/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scattersmith/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticklen.py b/plotly/validators/scattersmith/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticklen.py rename to plotly/validators/scattersmith/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickmode.py b/plotly/validators/scattersmith/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickmode.py rename to plotly/validators/scattersmith/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickprefix.py b/plotly/validators/scattersmith/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickprefix.py rename to plotly/validators/scattersmith/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticks.py b/plotly/validators/scattersmith/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticks.py rename to plotly/validators/scattersmith/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticksuffix.py b/plotly/validators/scattersmith/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticksuffix.py rename to plotly/validators/scattersmith/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticktext.py b/plotly/validators/scattersmith/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticktext.py rename to plotly/validators/scattersmith/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticktextsrc.py b/plotly/validators/scattersmith/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scattersmith/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickvals.py b/plotly/validators/scattersmith/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickvals.py rename to plotly/validators/scattersmith/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickvalssrc.py b/plotly/validators/scattersmith/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scattersmith/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickwidth.py b/plotly/validators/scattersmith/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_tickwidth.py rename to plotly/validators/scattersmith/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_title.py b/plotly/validators/scattersmith/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_title.py rename to plotly/validators/scattersmith/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_x.py b/plotly/validators/scattersmith/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_x.py rename to plotly/validators/scattersmith/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_xanchor.py b/plotly/validators/scattersmith/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_xanchor.py rename to plotly/validators/scattersmith/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_xpad.py b/plotly/validators/scattersmith/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_xpad.py rename to plotly/validators/scattersmith/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_xref.py b/plotly/validators/scattersmith/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_xref.py rename to plotly/validators/scattersmith/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_y.py b/plotly/validators/scattersmith/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_y.py rename to plotly/validators/scattersmith/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_yanchor.py b/plotly/validators/scattersmith/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_yanchor.py rename to plotly/validators/scattersmith/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ypad.py b/plotly/validators/scattersmith/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_ypad.py rename to plotly/validators/scattersmith/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_yref.py b/plotly/validators/scattersmith/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/_yref.py rename to plotly/validators/scattersmith/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/__init__.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_color.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_color.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_family.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_family.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_size.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_size.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_style.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_style.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_variant.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_weight.py b/plotly/validators/scattersmith/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scattersmith/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scattersmith/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scattersmith/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scattersmith/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scattersmith/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scattersmith/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scattersmith/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scattersmith/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/__init__.py b/plotly/validators/scattersmith/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/__init__.py rename to plotly/validators/scattersmith/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/_font.py b/plotly/validators/scattersmith/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/_font.py rename to plotly/validators/scattersmith/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/_side.py b/plotly/validators/scattersmith/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/_side.py rename to plotly/validators/scattersmith/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/_text.py b/plotly/validators/scattersmith/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/_text.py rename to plotly/validators/scattersmith/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/__init__.py b/plotly/validators/scattersmith/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/__init__.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_color.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_color.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_family.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_family.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_shadow.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_size.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_size.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_style.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_style.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_textcase.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_variant.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_variant.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_weight.py b/plotly/validators/scattersmith/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/colorbar/title/font/_weight.py rename to plotly/validators/scattersmith/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/gradient/__init__.py b/plotly/validators/scattersmith/marker/gradient/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/gradient/__init__.py rename to plotly/validators/scattersmith/marker/gradient/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/gradient/_color.py b/plotly/validators/scattersmith/marker/gradient/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/gradient/_color.py rename to plotly/validators/scattersmith/marker/gradient/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/gradient/_colorsrc.py b/plotly/validators/scattersmith/marker/gradient/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/gradient/_colorsrc.py rename to plotly/validators/scattersmith/marker/gradient/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/gradient/_type.py b/plotly/validators/scattersmith/marker/gradient/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/gradient/_type.py rename to plotly/validators/scattersmith/marker/gradient/_type.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/gradient/_typesrc.py b/plotly/validators/scattersmith/marker/gradient/_typesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/gradient/_typesrc.py rename to plotly/validators/scattersmith/marker/gradient/_typesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/__init__.py b/plotly/validators/scattersmith/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/__init__.py rename to plotly/validators/scattersmith/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_autocolorscale.py b/plotly/validators/scattersmith/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_autocolorscale.py rename to plotly/validators/scattersmith/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_cauto.py b/plotly/validators/scattersmith/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_cauto.py rename to plotly/validators/scattersmith/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_cmax.py b/plotly/validators/scattersmith/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_cmax.py rename to plotly/validators/scattersmith/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_cmid.py b/plotly/validators/scattersmith/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_cmid.py rename to plotly/validators/scattersmith/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_cmin.py b/plotly/validators/scattersmith/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_cmin.py rename to plotly/validators/scattersmith/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_color.py b/plotly/validators/scattersmith/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_color.py rename to plotly/validators/scattersmith/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_coloraxis.py b/plotly/validators/scattersmith/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_coloraxis.py rename to plotly/validators/scattersmith/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_colorscale.py b/plotly/validators/scattersmith/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_colorscale.py rename to plotly/validators/scattersmith/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_colorsrc.py b/plotly/validators/scattersmith/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_colorsrc.py rename to plotly/validators/scattersmith/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_reversescale.py b/plotly/validators/scattersmith/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_reversescale.py rename to plotly/validators/scattersmith/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_width.py b/plotly/validators/scattersmith/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_width.py rename to plotly/validators/scattersmith/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/marker/line/_widthsrc.py b/plotly/validators/scattersmith/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/marker/line/_widthsrc.py rename to plotly/validators/scattersmith/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/__init__.py b/plotly/validators/scattersmith/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/__init__.py rename to plotly/validators/scattersmith/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/_marker.py b/plotly/validators/scattersmith/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/_marker.py rename to plotly/validators/scattersmith/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/_textfont.py b/plotly/validators/scattersmith/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/_textfont.py rename to plotly/validators/scattersmith/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/marker/__init__.py b/plotly/validators/scattersmith/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/marker/__init__.py rename to plotly/validators/scattersmith/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/marker/_color.py b/plotly/validators/scattersmith/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/marker/_color.py rename to plotly/validators/scattersmith/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/marker/_opacity.py b/plotly/validators/scattersmith/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/marker/_opacity.py rename to plotly/validators/scattersmith/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/marker/_size.py b/plotly/validators/scattersmith/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/marker/_size.py rename to plotly/validators/scattersmith/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/textfont/__init__.py b/plotly/validators/scattersmith/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/textfont/__init__.py rename to plotly/validators/scattersmith/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/selected/textfont/_color.py b/plotly/validators/scattersmith/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/selected/textfont/_color.py rename to plotly/validators/scattersmith/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/stream/__init__.py b/plotly/validators/scattersmith/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/stream/__init__.py rename to plotly/validators/scattersmith/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/stream/_maxpoints.py b/plotly/validators/scattersmith/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/stream/_maxpoints.py rename to plotly/validators/scattersmith/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/stream/_token.py b/plotly/validators/scattersmith/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/stream/_token.py rename to plotly/validators/scattersmith/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/__init__.py b/plotly/validators/scattersmith/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/__init__.py rename to plotly/validators/scattersmith/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_color.py b/plotly/validators/scattersmith/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_color.py rename to plotly/validators/scattersmith/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_colorsrc.py b/plotly/validators/scattersmith/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_colorsrc.py rename to plotly/validators/scattersmith/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_family.py b/plotly/validators/scattersmith/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_family.py rename to plotly/validators/scattersmith/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_familysrc.py b/plotly/validators/scattersmith/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_familysrc.py rename to plotly/validators/scattersmith/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_lineposition.py b/plotly/validators/scattersmith/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_lineposition.py rename to plotly/validators/scattersmith/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_linepositionsrc.py b/plotly/validators/scattersmith/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_linepositionsrc.py rename to plotly/validators/scattersmith/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_shadow.py b/plotly/validators/scattersmith/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_shadow.py rename to plotly/validators/scattersmith/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_shadowsrc.py b/plotly/validators/scattersmith/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_shadowsrc.py rename to plotly/validators/scattersmith/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_size.py b/plotly/validators/scattersmith/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_size.py rename to plotly/validators/scattersmith/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_sizesrc.py b/plotly/validators/scattersmith/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_sizesrc.py rename to plotly/validators/scattersmith/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_style.py b/plotly/validators/scattersmith/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_style.py rename to plotly/validators/scattersmith/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_stylesrc.py b/plotly/validators/scattersmith/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_stylesrc.py rename to plotly/validators/scattersmith/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_textcase.py b/plotly/validators/scattersmith/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_textcase.py rename to plotly/validators/scattersmith/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_textcasesrc.py b/plotly/validators/scattersmith/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_textcasesrc.py rename to plotly/validators/scattersmith/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_variant.py b/plotly/validators/scattersmith/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_variant.py rename to plotly/validators/scattersmith/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_variantsrc.py b/plotly/validators/scattersmith/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_variantsrc.py rename to plotly/validators/scattersmith/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_weight.py b/plotly/validators/scattersmith/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_weight.py rename to plotly/validators/scattersmith/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/textfont/_weightsrc.py b/plotly/validators/scattersmith/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/textfont/_weightsrc.py rename to plotly/validators/scattersmith/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/__init__.py b/plotly/validators/scattersmith/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/__init__.py rename to plotly/validators/scattersmith/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/_marker.py b/plotly/validators/scattersmith/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/_marker.py rename to plotly/validators/scattersmith/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/_textfont.py b/plotly/validators/scattersmith/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/_textfont.py rename to plotly/validators/scattersmith/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/marker/__init__.py b/plotly/validators/scattersmith/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/marker/__init__.py rename to plotly/validators/scattersmith/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/marker/_color.py b/plotly/validators/scattersmith/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/marker/_color.py rename to plotly/validators/scattersmith/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/marker/_opacity.py b/plotly/validators/scattersmith/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/marker/_opacity.py rename to plotly/validators/scattersmith/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/marker/_size.py b/plotly/validators/scattersmith/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/marker/_size.py rename to plotly/validators/scattersmith/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/textfont/__init__.py b/plotly/validators/scattersmith/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/textfont/__init__.py rename to plotly/validators/scattersmith/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scattersmith/unselected/textfont/_color.py b/plotly/validators/scattersmith/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scattersmith/unselected/textfont/_color.py rename to plotly/validators/scattersmith/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/__init__.py b/plotly/validators/scatterternary/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/__init__.py rename to plotly/validators/scatterternary/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_a.py b/plotly/validators/scatterternary/_a.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_a.py rename to plotly/validators/scatterternary/_a.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_asrc.py b/plotly/validators/scatterternary/_asrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_asrc.py rename to plotly/validators/scatterternary/_asrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_b.py b/plotly/validators/scatterternary/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_b.py rename to plotly/validators/scatterternary/_b.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_bsrc.py b/plotly/validators/scatterternary/_bsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_bsrc.py rename to plotly/validators/scatterternary/_bsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_c.py b/plotly/validators/scatterternary/_c.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_c.py rename to plotly/validators/scatterternary/_c.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_cliponaxis.py b/plotly/validators/scatterternary/_cliponaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_cliponaxis.py rename to plotly/validators/scatterternary/_cliponaxis.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_connectgaps.py b/plotly/validators/scatterternary/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_connectgaps.py rename to plotly/validators/scatterternary/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_csrc.py b/plotly/validators/scatterternary/_csrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_csrc.py rename to plotly/validators/scatterternary/_csrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_customdata.py b/plotly/validators/scatterternary/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_customdata.py rename to plotly/validators/scatterternary/_customdata.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_customdatasrc.py b/plotly/validators/scatterternary/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_customdatasrc.py rename to plotly/validators/scatterternary/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_fill.py b/plotly/validators/scatterternary/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_fill.py rename to plotly/validators/scatterternary/_fill.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_fillcolor.py b/plotly/validators/scatterternary/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_fillcolor.py rename to plotly/validators/scatterternary/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_hoverinfo.py b/plotly/validators/scatterternary/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_hoverinfo.py rename to plotly/validators/scatterternary/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_hoverinfosrc.py b/plotly/validators/scatterternary/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_hoverinfosrc.py rename to plotly/validators/scatterternary/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_hoverlabel.py b/plotly/validators/scatterternary/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_hoverlabel.py rename to plotly/validators/scatterternary/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_hoveron.py b/plotly/validators/scatterternary/_hoveron.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_hoveron.py rename to plotly/validators/scatterternary/_hoveron.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_hovertemplate.py b/plotly/validators/scatterternary/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_hovertemplate.py rename to plotly/validators/scatterternary/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_hovertemplatesrc.py b/plotly/validators/scatterternary/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_hovertemplatesrc.py rename to plotly/validators/scatterternary/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_hovertext.py b/plotly/validators/scatterternary/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_hovertext.py rename to plotly/validators/scatterternary/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_hovertextsrc.py b/plotly/validators/scatterternary/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_hovertextsrc.py rename to plotly/validators/scatterternary/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_ids.py b/plotly/validators/scatterternary/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_ids.py rename to plotly/validators/scatterternary/_ids.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_idssrc.py b/plotly/validators/scatterternary/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_idssrc.py rename to plotly/validators/scatterternary/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_legend.py b/plotly/validators/scatterternary/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_legend.py rename to plotly/validators/scatterternary/_legend.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_legendgroup.py b/plotly/validators/scatterternary/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_legendgroup.py rename to plotly/validators/scatterternary/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_legendgrouptitle.py b/plotly/validators/scatterternary/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_legendgrouptitle.py rename to plotly/validators/scatterternary/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_legendrank.py b/plotly/validators/scatterternary/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_legendrank.py rename to plotly/validators/scatterternary/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_legendwidth.py b/plotly/validators/scatterternary/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_legendwidth.py rename to plotly/validators/scatterternary/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_line.py b/plotly/validators/scatterternary/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_line.py rename to plotly/validators/scatterternary/_line.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_marker.py b/plotly/validators/scatterternary/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_marker.py rename to plotly/validators/scatterternary/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_meta.py b/plotly/validators/scatterternary/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_meta.py rename to plotly/validators/scatterternary/_meta.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_metasrc.py b/plotly/validators/scatterternary/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_metasrc.py rename to plotly/validators/scatterternary/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_mode.py b/plotly/validators/scatterternary/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_mode.py rename to plotly/validators/scatterternary/_mode.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_name.py b/plotly/validators/scatterternary/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_name.py rename to plotly/validators/scatterternary/_name.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_opacity.py b/plotly/validators/scatterternary/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_opacity.py rename to plotly/validators/scatterternary/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_selected.py b/plotly/validators/scatterternary/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_selected.py rename to plotly/validators/scatterternary/_selected.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_selectedpoints.py b/plotly/validators/scatterternary/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_selectedpoints.py rename to plotly/validators/scatterternary/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_showlegend.py b/plotly/validators/scatterternary/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_showlegend.py rename to plotly/validators/scatterternary/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_stream.py b/plotly/validators/scatterternary/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_stream.py rename to plotly/validators/scatterternary/_stream.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_subplot.py b/plotly/validators/scatterternary/_subplot.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_subplot.py rename to plotly/validators/scatterternary/_subplot.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_sum.py b/plotly/validators/scatterternary/_sum.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_sum.py rename to plotly/validators/scatterternary/_sum.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_text.py b/plotly/validators/scatterternary/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_text.py rename to plotly/validators/scatterternary/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_textfont.py b/plotly/validators/scatterternary/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_textfont.py rename to plotly/validators/scatterternary/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_textposition.py b/plotly/validators/scatterternary/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_textposition.py rename to plotly/validators/scatterternary/_textposition.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_textpositionsrc.py b/plotly/validators/scatterternary/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_textpositionsrc.py rename to plotly/validators/scatterternary/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_textsrc.py b/plotly/validators/scatterternary/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_textsrc.py rename to plotly/validators/scatterternary/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_texttemplate.py b/plotly/validators/scatterternary/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_texttemplate.py rename to plotly/validators/scatterternary/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_texttemplatesrc.py b/plotly/validators/scatterternary/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_texttemplatesrc.py rename to plotly/validators/scatterternary/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_uid.py b/plotly/validators/scatterternary/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_uid.py rename to plotly/validators/scatterternary/_uid.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_uirevision.py b/plotly/validators/scatterternary/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_uirevision.py rename to plotly/validators/scatterternary/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_unselected.py b/plotly/validators/scatterternary/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_unselected.py rename to plotly/validators/scatterternary/_unselected.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/_visible.py b/plotly/validators/scatterternary/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/_visible.py rename to plotly/validators/scatterternary/_visible.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/__init__.py b/plotly/validators/scatterternary/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/__init__.py rename to plotly/validators/scatterternary/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_align.py b/plotly/validators/scatterternary/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_align.py rename to plotly/validators/scatterternary/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_alignsrc.py b/plotly/validators/scatterternary/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_alignsrc.py rename to plotly/validators/scatterternary/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_bgcolor.py b/plotly/validators/scatterternary/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_bgcolor.py rename to plotly/validators/scatterternary/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_bgcolorsrc.py b/plotly/validators/scatterternary/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_bgcolorsrc.py rename to plotly/validators/scatterternary/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_bordercolor.py b/plotly/validators/scatterternary/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_bordercolor.py rename to plotly/validators/scatterternary/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_bordercolorsrc.py b/plotly/validators/scatterternary/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_bordercolorsrc.py rename to plotly/validators/scatterternary/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_font.py b/plotly/validators/scatterternary/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_font.py rename to plotly/validators/scatterternary/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_namelength.py b/plotly/validators/scatterternary/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_namelength.py rename to plotly/validators/scatterternary/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_namelengthsrc.py b/plotly/validators/scatterternary/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/_namelengthsrc.py rename to plotly/validators/scatterternary/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/__init__.py b/plotly/validators/scatterternary/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/__init__.py rename to plotly/validators/scatterternary/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_color.py b/plotly/validators/scatterternary/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_color.py rename to plotly/validators/scatterternary/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_colorsrc.py b/plotly/validators/scatterternary/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_colorsrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_family.py b/plotly/validators/scatterternary/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_family.py rename to plotly/validators/scatterternary/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_familysrc.py b/plotly/validators/scatterternary/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_familysrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_lineposition.py b/plotly/validators/scatterternary/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_lineposition.py rename to plotly/validators/scatterternary/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_linepositionsrc.py b/plotly/validators/scatterternary/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_shadow.py b/plotly/validators/scatterternary/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_shadow.py rename to plotly/validators/scatterternary/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_shadowsrc.py b/plotly/validators/scatterternary/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_shadowsrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_size.py b/plotly/validators/scatterternary/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_size.py rename to plotly/validators/scatterternary/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_sizesrc.py b/plotly/validators/scatterternary/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_sizesrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_style.py b/plotly/validators/scatterternary/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_style.py rename to plotly/validators/scatterternary/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_stylesrc.py b/plotly/validators/scatterternary/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_stylesrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_textcase.py b/plotly/validators/scatterternary/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_textcase.py rename to plotly/validators/scatterternary/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_textcasesrc.py b/plotly/validators/scatterternary/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_textcasesrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_variant.py b/plotly/validators/scatterternary/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_variant.py rename to plotly/validators/scatterternary/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_variantsrc.py b/plotly/validators/scatterternary/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_variantsrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_weight.py b/plotly/validators/scatterternary/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_weight.py rename to plotly/validators/scatterternary/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_weightsrc.py b/plotly/validators/scatterternary/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/hoverlabel/font/_weightsrc.py rename to plotly/validators/scatterternary/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/__init__.py b/plotly/validators/scatterternary/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/__init__.py rename to plotly/validators/scatterternary/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/_font.py b/plotly/validators/scatterternary/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/_font.py rename to plotly/validators/scatterternary/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/_text.py b/plotly/validators/scatterternary/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/_text.py rename to plotly/validators/scatterternary/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/__init__.py b/plotly/validators/scatterternary/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/__init__.py rename to plotly/validators/scatterternary/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_color.py b/plotly/validators/scatterternary/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_color.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_family.py b/plotly/validators/scatterternary/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_family.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_lineposition.py b/plotly/validators/scatterternary/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_lineposition.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_shadow.py b/plotly/validators/scatterternary/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_shadow.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_size.py b/plotly/validators/scatterternary/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_size.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_style.py b/plotly/validators/scatterternary/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_style.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_textcase.py b/plotly/validators/scatterternary/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_textcase.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_variant.py b/plotly/validators/scatterternary/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_variant.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_weight.py b/plotly/validators/scatterternary/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/legendgrouptitle/font/_weight.py rename to plotly/validators/scatterternary/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/line/__init__.py b/plotly/validators/scatterternary/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/line/__init__.py rename to plotly/validators/scatterternary/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/line/_backoff.py b/plotly/validators/scatterternary/line/_backoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/line/_backoff.py rename to plotly/validators/scatterternary/line/_backoff.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/line/_backoffsrc.py b/plotly/validators/scatterternary/line/_backoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/line/_backoffsrc.py rename to plotly/validators/scatterternary/line/_backoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/line/_color.py b/plotly/validators/scatterternary/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/line/_color.py rename to plotly/validators/scatterternary/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/line/_dash.py b/plotly/validators/scatterternary/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/line/_dash.py rename to plotly/validators/scatterternary/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/line/_shape.py b/plotly/validators/scatterternary/line/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/line/_shape.py rename to plotly/validators/scatterternary/line/_shape.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/line/_smoothing.py b/plotly/validators/scatterternary/line/_smoothing.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/line/_smoothing.py rename to plotly/validators/scatterternary/line/_smoothing.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/line/_width.py b/plotly/validators/scatterternary/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/line/_width.py rename to plotly/validators/scatterternary/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/__init__.py b/plotly/validators/scatterternary/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/__init__.py rename to plotly/validators/scatterternary/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_angle.py b/plotly/validators/scatterternary/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_angle.py rename to plotly/validators/scatterternary/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_angleref.py b/plotly/validators/scatterternary/marker/_angleref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_angleref.py rename to plotly/validators/scatterternary/marker/_angleref.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_anglesrc.py b/plotly/validators/scatterternary/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_anglesrc.py rename to plotly/validators/scatterternary/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_autocolorscale.py b/plotly/validators/scatterternary/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_autocolorscale.py rename to plotly/validators/scatterternary/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_cauto.py b/plotly/validators/scatterternary/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_cauto.py rename to plotly/validators/scatterternary/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_cmax.py b/plotly/validators/scatterternary/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_cmax.py rename to plotly/validators/scatterternary/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_cmid.py b/plotly/validators/scatterternary/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_cmid.py rename to plotly/validators/scatterternary/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_cmin.py b/plotly/validators/scatterternary/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_cmin.py rename to plotly/validators/scatterternary/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_color.py b/plotly/validators/scatterternary/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_color.py rename to plotly/validators/scatterternary/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_coloraxis.py b/plotly/validators/scatterternary/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_coloraxis.py rename to plotly/validators/scatterternary/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_colorbar.py b/plotly/validators/scatterternary/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_colorbar.py rename to plotly/validators/scatterternary/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_colorscale.py b/plotly/validators/scatterternary/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_colorscale.py rename to plotly/validators/scatterternary/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_colorsrc.py b/plotly/validators/scatterternary/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_colorsrc.py rename to plotly/validators/scatterternary/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_gradient.py b/plotly/validators/scatterternary/marker/_gradient.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_gradient.py rename to plotly/validators/scatterternary/marker/_gradient.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_line.py b/plotly/validators/scatterternary/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_line.py rename to plotly/validators/scatterternary/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_maxdisplayed.py b/plotly/validators/scatterternary/marker/_maxdisplayed.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_maxdisplayed.py rename to plotly/validators/scatterternary/marker/_maxdisplayed.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_opacity.py b/plotly/validators/scatterternary/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_opacity.py rename to plotly/validators/scatterternary/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_opacitysrc.py b/plotly/validators/scatterternary/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_opacitysrc.py rename to plotly/validators/scatterternary/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_reversescale.py b/plotly/validators/scatterternary/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_reversescale.py rename to plotly/validators/scatterternary/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_showscale.py b/plotly/validators/scatterternary/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_showscale.py rename to plotly/validators/scatterternary/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_size.py b/plotly/validators/scatterternary/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_size.py rename to plotly/validators/scatterternary/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_sizemin.py b/plotly/validators/scatterternary/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_sizemin.py rename to plotly/validators/scatterternary/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_sizemode.py b/plotly/validators/scatterternary/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_sizemode.py rename to plotly/validators/scatterternary/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_sizeref.py b/plotly/validators/scatterternary/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_sizeref.py rename to plotly/validators/scatterternary/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_sizesrc.py b/plotly/validators/scatterternary/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_sizesrc.py rename to plotly/validators/scatterternary/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_standoff.py b/plotly/validators/scatterternary/marker/_standoff.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_standoff.py rename to plotly/validators/scatterternary/marker/_standoff.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_standoffsrc.py b/plotly/validators/scatterternary/marker/_standoffsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_standoffsrc.py rename to plotly/validators/scatterternary/marker/_standoffsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_symbol.py b/plotly/validators/scatterternary/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_symbol.py rename to plotly/validators/scatterternary/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/_symbolsrc.py b/plotly/validators/scatterternary/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/_symbolsrc.py rename to plotly/validators/scatterternary/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/__init__.py b/plotly/validators/scatterternary/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/__init__.py rename to plotly/validators/scatterternary/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_bgcolor.py b/plotly/validators/scatterternary/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_bgcolor.py rename to plotly/validators/scatterternary/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_bordercolor.py b/plotly/validators/scatterternary/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_bordercolor.py rename to plotly/validators/scatterternary/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_borderwidth.py b/plotly/validators/scatterternary/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_borderwidth.py rename to plotly/validators/scatterternary/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_dtick.py b/plotly/validators/scatterternary/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_dtick.py rename to plotly/validators/scatterternary/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_exponentformat.py b/plotly/validators/scatterternary/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_exponentformat.py rename to plotly/validators/scatterternary/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_labelalias.py b/plotly/validators/scatterternary/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_labelalias.py rename to plotly/validators/scatterternary/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_len.py b/plotly/validators/scatterternary/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_len.py rename to plotly/validators/scatterternary/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_lenmode.py b/plotly/validators/scatterternary/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_lenmode.py rename to plotly/validators/scatterternary/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_minexponent.py b/plotly/validators/scatterternary/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_minexponent.py rename to plotly/validators/scatterternary/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_nticks.py b/plotly/validators/scatterternary/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_nticks.py rename to plotly/validators/scatterternary/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_orientation.py b/plotly/validators/scatterternary/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_orientation.py rename to plotly/validators/scatterternary/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_outlinecolor.py b/plotly/validators/scatterternary/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_outlinecolor.py rename to plotly/validators/scatterternary/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_outlinewidth.py b/plotly/validators/scatterternary/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_outlinewidth.py rename to plotly/validators/scatterternary/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_separatethousands.py b/plotly/validators/scatterternary/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_separatethousands.py rename to plotly/validators/scatterternary/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_showexponent.py b/plotly/validators/scatterternary/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_showexponent.py rename to plotly/validators/scatterternary/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_showticklabels.py b/plotly/validators/scatterternary/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_showticklabels.py rename to plotly/validators/scatterternary/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_showtickprefix.py b/plotly/validators/scatterternary/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_showtickprefix.py rename to plotly/validators/scatterternary/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_showticksuffix.py b/plotly/validators/scatterternary/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_showticksuffix.py rename to plotly/validators/scatterternary/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_thickness.py b/plotly/validators/scatterternary/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_thickness.py rename to plotly/validators/scatterternary/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_thicknessmode.py b/plotly/validators/scatterternary/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_thicknessmode.py rename to plotly/validators/scatterternary/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tick0.py b/plotly/validators/scatterternary/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tick0.py rename to plotly/validators/scatterternary/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickangle.py b/plotly/validators/scatterternary/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickangle.py rename to plotly/validators/scatterternary/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickcolor.py b/plotly/validators/scatterternary/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickcolor.py rename to plotly/validators/scatterternary/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickfont.py b/plotly/validators/scatterternary/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickfont.py rename to plotly/validators/scatterternary/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickformat.py b/plotly/validators/scatterternary/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickformat.py rename to plotly/validators/scatterternary/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/scatterternary/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/scatterternary/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickformatstops.py b/plotly/validators/scatterternary/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickformatstops.py rename to plotly/validators/scatterternary/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/scatterternary/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/scatterternary/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticklabelposition.py b/plotly/validators/scatterternary/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticklabelposition.py rename to plotly/validators/scatterternary/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticklabelstep.py b/plotly/validators/scatterternary/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticklabelstep.py rename to plotly/validators/scatterternary/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticklen.py b/plotly/validators/scatterternary/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticklen.py rename to plotly/validators/scatterternary/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickmode.py b/plotly/validators/scatterternary/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickmode.py rename to plotly/validators/scatterternary/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickprefix.py b/plotly/validators/scatterternary/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickprefix.py rename to plotly/validators/scatterternary/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticks.py b/plotly/validators/scatterternary/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticks.py rename to plotly/validators/scatterternary/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticksuffix.py b/plotly/validators/scatterternary/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticksuffix.py rename to plotly/validators/scatterternary/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticktext.py b/plotly/validators/scatterternary/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticktext.py rename to plotly/validators/scatterternary/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticktextsrc.py b/plotly/validators/scatterternary/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ticktextsrc.py rename to plotly/validators/scatterternary/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickvals.py b/plotly/validators/scatterternary/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickvals.py rename to plotly/validators/scatterternary/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickvalssrc.py b/plotly/validators/scatterternary/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickvalssrc.py rename to plotly/validators/scatterternary/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickwidth.py b/plotly/validators/scatterternary/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_tickwidth.py rename to plotly/validators/scatterternary/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_title.py b/plotly/validators/scatterternary/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_title.py rename to plotly/validators/scatterternary/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_x.py b/plotly/validators/scatterternary/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_x.py rename to plotly/validators/scatterternary/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_xanchor.py b/plotly/validators/scatterternary/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_xanchor.py rename to plotly/validators/scatterternary/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_xpad.py b/plotly/validators/scatterternary/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_xpad.py rename to plotly/validators/scatterternary/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_xref.py b/plotly/validators/scatterternary/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_xref.py rename to plotly/validators/scatterternary/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_y.py b/plotly/validators/scatterternary/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_y.py rename to plotly/validators/scatterternary/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_yanchor.py b/plotly/validators/scatterternary/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_yanchor.py rename to plotly/validators/scatterternary/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ypad.py b/plotly/validators/scatterternary/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_ypad.py rename to plotly/validators/scatterternary/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_yref.py b/plotly/validators/scatterternary/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/_yref.py rename to plotly/validators/scatterternary/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/__init__.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/__init__.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_color.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_color.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_family.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_family.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_shadow.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_size.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_size.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_style.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_style.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_textcase.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_variant.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_variant.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_weight.py b/plotly/validators/scatterternary/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickfont/_weight.py rename to plotly/validators/scatterternary/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/scatterternary/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/scatterternary/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/scatterternary/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/scatterternary/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_name.py b/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/scatterternary/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/scatterternary/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_value.py b/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/scatterternary/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/__init__.py b/plotly/validators/scatterternary/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/__init__.py rename to plotly/validators/scatterternary/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/_font.py b/plotly/validators/scatterternary/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/_font.py rename to plotly/validators/scatterternary/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/_side.py b/plotly/validators/scatterternary/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/_side.py rename to plotly/validators/scatterternary/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/_text.py b/plotly/validators/scatterternary/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/_text.py rename to plotly/validators/scatterternary/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/__init__.py b/plotly/validators/scatterternary/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/__init__.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_color.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_color.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_family.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_family.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_lineposition.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_shadow.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_shadow.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_size.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_size.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_style.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_style.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_textcase.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_textcase.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_variant.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_variant.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_weight.py b/plotly/validators/scatterternary/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/colorbar/title/font/_weight.py rename to plotly/validators/scatterternary/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/gradient/__init__.py b/plotly/validators/scatterternary/marker/gradient/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/gradient/__init__.py rename to plotly/validators/scatterternary/marker/gradient/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/gradient/_color.py b/plotly/validators/scatterternary/marker/gradient/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/gradient/_color.py rename to plotly/validators/scatterternary/marker/gradient/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/gradient/_colorsrc.py b/plotly/validators/scatterternary/marker/gradient/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/gradient/_colorsrc.py rename to plotly/validators/scatterternary/marker/gradient/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/gradient/_type.py b/plotly/validators/scatterternary/marker/gradient/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/gradient/_type.py rename to plotly/validators/scatterternary/marker/gradient/_type.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/gradient/_typesrc.py b/plotly/validators/scatterternary/marker/gradient/_typesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/gradient/_typesrc.py rename to plotly/validators/scatterternary/marker/gradient/_typesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/__init__.py b/plotly/validators/scatterternary/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/__init__.py rename to plotly/validators/scatterternary/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_autocolorscale.py b/plotly/validators/scatterternary/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_autocolorscale.py rename to plotly/validators/scatterternary/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_cauto.py b/plotly/validators/scatterternary/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_cauto.py rename to plotly/validators/scatterternary/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_cmax.py b/plotly/validators/scatterternary/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_cmax.py rename to plotly/validators/scatterternary/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_cmid.py b/plotly/validators/scatterternary/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_cmid.py rename to plotly/validators/scatterternary/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_cmin.py b/plotly/validators/scatterternary/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_cmin.py rename to plotly/validators/scatterternary/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_color.py b/plotly/validators/scatterternary/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_color.py rename to plotly/validators/scatterternary/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_coloraxis.py b/plotly/validators/scatterternary/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_coloraxis.py rename to plotly/validators/scatterternary/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_colorscale.py b/plotly/validators/scatterternary/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_colorscale.py rename to plotly/validators/scatterternary/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_colorsrc.py b/plotly/validators/scatterternary/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_colorsrc.py rename to plotly/validators/scatterternary/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_reversescale.py b/plotly/validators/scatterternary/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_reversescale.py rename to plotly/validators/scatterternary/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_width.py b/plotly/validators/scatterternary/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_width.py rename to plotly/validators/scatterternary/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/marker/line/_widthsrc.py b/plotly/validators/scatterternary/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/marker/line/_widthsrc.py rename to plotly/validators/scatterternary/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/__init__.py b/plotly/validators/scatterternary/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/__init__.py rename to plotly/validators/scatterternary/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/_marker.py b/plotly/validators/scatterternary/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/_marker.py rename to plotly/validators/scatterternary/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/_textfont.py b/plotly/validators/scatterternary/selected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/_textfont.py rename to plotly/validators/scatterternary/selected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/marker/__init__.py b/plotly/validators/scatterternary/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/marker/__init__.py rename to plotly/validators/scatterternary/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/marker/_color.py b/plotly/validators/scatterternary/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/marker/_color.py rename to plotly/validators/scatterternary/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/marker/_opacity.py b/plotly/validators/scatterternary/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/marker/_opacity.py rename to plotly/validators/scatterternary/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/marker/_size.py b/plotly/validators/scatterternary/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/marker/_size.py rename to plotly/validators/scatterternary/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/textfont/__init__.py b/plotly/validators/scatterternary/selected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/textfont/__init__.py rename to plotly/validators/scatterternary/selected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/selected/textfont/_color.py b/plotly/validators/scatterternary/selected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/selected/textfont/_color.py rename to plotly/validators/scatterternary/selected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/stream/__init__.py b/plotly/validators/scatterternary/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/stream/__init__.py rename to plotly/validators/scatterternary/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/stream/_maxpoints.py b/plotly/validators/scatterternary/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/stream/_maxpoints.py rename to plotly/validators/scatterternary/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/stream/_token.py b/plotly/validators/scatterternary/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/stream/_token.py rename to plotly/validators/scatterternary/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/__init__.py b/plotly/validators/scatterternary/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/__init__.py rename to plotly/validators/scatterternary/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_color.py b/plotly/validators/scatterternary/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_color.py rename to plotly/validators/scatterternary/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_colorsrc.py b/plotly/validators/scatterternary/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_colorsrc.py rename to plotly/validators/scatterternary/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_family.py b/plotly/validators/scatterternary/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_family.py rename to plotly/validators/scatterternary/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_familysrc.py b/plotly/validators/scatterternary/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_familysrc.py rename to plotly/validators/scatterternary/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_lineposition.py b/plotly/validators/scatterternary/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_lineposition.py rename to plotly/validators/scatterternary/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_linepositionsrc.py b/plotly/validators/scatterternary/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_linepositionsrc.py rename to plotly/validators/scatterternary/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_shadow.py b/plotly/validators/scatterternary/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_shadow.py rename to plotly/validators/scatterternary/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_shadowsrc.py b/plotly/validators/scatterternary/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_shadowsrc.py rename to plotly/validators/scatterternary/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_size.py b/plotly/validators/scatterternary/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_size.py rename to plotly/validators/scatterternary/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_sizesrc.py b/plotly/validators/scatterternary/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_sizesrc.py rename to plotly/validators/scatterternary/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_style.py b/plotly/validators/scatterternary/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_style.py rename to plotly/validators/scatterternary/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_stylesrc.py b/plotly/validators/scatterternary/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_stylesrc.py rename to plotly/validators/scatterternary/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_textcase.py b/plotly/validators/scatterternary/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_textcase.py rename to plotly/validators/scatterternary/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_textcasesrc.py b/plotly/validators/scatterternary/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_textcasesrc.py rename to plotly/validators/scatterternary/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_variant.py b/plotly/validators/scatterternary/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_variant.py rename to plotly/validators/scatterternary/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_variantsrc.py b/plotly/validators/scatterternary/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_variantsrc.py rename to plotly/validators/scatterternary/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_weight.py b/plotly/validators/scatterternary/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_weight.py rename to plotly/validators/scatterternary/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/textfont/_weightsrc.py b/plotly/validators/scatterternary/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/textfont/_weightsrc.py rename to plotly/validators/scatterternary/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/__init__.py b/plotly/validators/scatterternary/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/__init__.py rename to plotly/validators/scatterternary/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/_marker.py b/plotly/validators/scatterternary/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/_marker.py rename to plotly/validators/scatterternary/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/_textfont.py b/plotly/validators/scatterternary/unselected/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/_textfont.py rename to plotly/validators/scatterternary/unselected/_textfont.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/marker/__init__.py b/plotly/validators/scatterternary/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/marker/__init__.py rename to plotly/validators/scatterternary/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/marker/_color.py b/plotly/validators/scatterternary/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/marker/_color.py rename to plotly/validators/scatterternary/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/marker/_opacity.py b/plotly/validators/scatterternary/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/marker/_opacity.py rename to plotly/validators/scatterternary/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/marker/_size.py b/plotly/validators/scatterternary/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/marker/_size.py rename to plotly/validators/scatterternary/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/textfont/__init__.py b/plotly/validators/scatterternary/unselected/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/textfont/__init__.py rename to plotly/validators/scatterternary/unselected/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/scatterternary/unselected/textfont/_color.py b/plotly/validators/scatterternary/unselected/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/scatterternary/unselected/textfont/_color.py rename to plotly/validators/scatterternary/unselected/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/__init__.py b/plotly/validators/splom/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/__init__.py rename to plotly/validators/splom/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/_customdata.py b/plotly/validators/splom/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_customdata.py rename to plotly/validators/splom/_customdata.py diff --git a/packages/python/plotly/plotly/validators/splom/_customdatasrc.py b/plotly/validators/splom/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_customdatasrc.py rename to plotly/validators/splom/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/splom/_diagonal.py b/plotly/validators/splom/_diagonal.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_diagonal.py rename to plotly/validators/splom/_diagonal.py diff --git a/packages/python/plotly/plotly/validators/splom/_dimensiondefaults.py b/plotly/validators/splom/_dimensiondefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_dimensiondefaults.py rename to plotly/validators/splom/_dimensiondefaults.py diff --git a/packages/python/plotly/plotly/validators/splom/_dimensions.py b/plotly/validators/splom/_dimensions.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_dimensions.py rename to plotly/validators/splom/_dimensions.py diff --git a/packages/python/plotly/plotly/validators/splom/_hoverinfo.py b/plotly/validators/splom/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_hoverinfo.py rename to plotly/validators/splom/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/splom/_hoverinfosrc.py b/plotly/validators/splom/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_hoverinfosrc.py rename to plotly/validators/splom/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/splom/_hoverlabel.py b/plotly/validators/splom/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_hoverlabel.py rename to plotly/validators/splom/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/splom/_hovertemplate.py b/plotly/validators/splom/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_hovertemplate.py rename to plotly/validators/splom/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/splom/_hovertemplatesrc.py b/plotly/validators/splom/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_hovertemplatesrc.py rename to plotly/validators/splom/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/splom/_hovertext.py b/plotly/validators/splom/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_hovertext.py rename to plotly/validators/splom/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/splom/_hovertextsrc.py b/plotly/validators/splom/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_hovertextsrc.py rename to plotly/validators/splom/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/_ids.py b/plotly/validators/splom/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_ids.py rename to plotly/validators/splom/_ids.py diff --git a/packages/python/plotly/plotly/validators/splom/_idssrc.py b/plotly/validators/splom/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_idssrc.py rename to plotly/validators/splom/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/splom/_legend.py b/plotly/validators/splom/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_legend.py rename to plotly/validators/splom/_legend.py diff --git a/packages/python/plotly/plotly/validators/splom/_legendgroup.py b/plotly/validators/splom/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_legendgroup.py rename to plotly/validators/splom/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/splom/_legendgrouptitle.py b/plotly/validators/splom/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_legendgrouptitle.py rename to plotly/validators/splom/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/splom/_legendrank.py b/plotly/validators/splom/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_legendrank.py rename to plotly/validators/splom/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/splom/_legendwidth.py b/plotly/validators/splom/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_legendwidth.py rename to plotly/validators/splom/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/splom/_marker.py b/plotly/validators/splom/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_marker.py rename to plotly/validators/splom/_marker.py diff --git a/packages/python/plotly/plotly/validators/splom/_meta.py b/plotly/validators/splom/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_meta.py rename to plotly/validators/splom/_meta.py diff --git a/packages/python/plotly/plotly/validators/splom/_metasrc.py b/plotly/validators/splom/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_metasrc.py rename to plotly/validators/splom/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/splom/_name.py b/plotly/validators/splom/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_name.py rename to plotly/validators/splom/_name.py diff --git a/packages/python/plotly/plotly/validators/splom/_opacity.py b/plotly/validators/splom/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_opacity.py rename to plotly/validators/splom/_opacity.py diff --git a/packages/python/plotly/plotly/validators/splom/_selected.py b/plotly/validators/splom/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_selected.py rename to plotly/validators/splom/_selected.py diff --git a/packages/python/plotly/plotly/validators/splom/_selectedpoints.py b/plotly/validators/splom/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_selectedpoints.py rename to plotly/validators/splom/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/splom/_showlegend.py b/plotly/validators/splom/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_showlegend.py rename to plotly/validators/splom/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/splom/_showlowerhalf.py b/plotly/validators/splom/_showlowerhalf.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_showlowerhalf.py rename to plotly/validators/splom/_showlowerhalf.py diff --git a/packages/python/plotly/plotly/validators/splom/_showupperhalf.py b/plotly/validators/splom/_showupperhalf.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_showupperhalf.py rename to plotly/validators/splom/_showupperhalf.py diff --git a/packages/python/plotly/plotly/validators/splom/_stream.py b/plotly/validators/splom/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_stream.py rename to plotly/validators/splom/_stream.py diff --git a/packages/python/plotly/plotly/validators/splom/_text.py b/plotly/validators/splom/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_text.py rename to plotly/validators/splom/_text.py diff --git a/packages/python/plotly/plotly/validators/splom/_textsrc.py b/plotly/validators/splom/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_textsrc.py rename to plotly/validators/splom/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/_uid.py b/plotly/validators/splom/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_uid.py rename to plotly/validators/splom/_uid.py diff --git a/packages/python/plotly/plotly/validators/splom/_uirevision.py b/plotly/validators/splom/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_uirevision.py rename to plotly/validators/splom/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/splom/_unselected.py b/plotly/validators/splom/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_unselected.py rename to plotly/validators/splom/_unselected.py diff --git a/packages/python/plotly/plotly/validators/splom/_visible.py b/plotly/validators/splom/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_visible.py rename to plotly/validators/splom/_visible.py diff --git a/packages/python/plotly/plotly/validators/splom/_xaxes.py b/plotly/validators/splom/_xaxes.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_xaxes.py rename to plotly/validators/splom/_xaxes.py diff --git a/packages/python/plotly/plotly/validators/splom/_xhoverformat.py b/plotly/validators/splom/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_xhoverformat.py rename to plotly/validators/splom/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/splom/_yaxes.py b/plotly/validators/splom/_yaxes.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_yaxes.py rename to plotly/validators/splom/_yaxes.py diff --git a/packages/python/plotly/plotly/validators/splom/_yhoverformat.py b/plotly/validators/splom/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/_yhoverformat.py rename to plotly/validators/splom/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/splom/diagonal/__init__.py b/plotly/validators/splom/diagonal/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/diagonal/__init__.py rename to plotly/validators/splom/diagonal/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/diagonal/_visible.py b/plotly/validators/splom/diagonal/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/diagonal/_visible.py rename to plotly/validators/splom/diagonal/_visible.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/__init__.py b/plotly/validators/splom/dimension/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/__init__.py rename to plotly/validators/splom/dimension/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/_axis.py b/plotly/validators/splom/dimension/_axis.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/_axis.py rename to plotly/validators/splom/dimension/_axis.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/_label.py b/plotly/validators/splom/dimension/_label.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/_label.py rename to plotly/validators/splom/dimension/_label.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/_name.py b/plotly/validators/splom/dimension/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/_name.py rename to plotly/validators/splom/dimension/_name.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/_templateitemname.py b/plotly/validators/splom/dimension/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/_templateitemname.py rename to plotly/validators/splom/dimension/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/_values.py b/plotly/validators/splom/dimension/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/_values.py rename to plotly/validators/splom/dimension/_values.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/_valuessrc.py b/plotly/validators/splom/dimension/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/_valuessrc.py rename to plotly/validators/splom/dimension/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/_visible.py b/plotly/validators/splom/dimension/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/_visible.py rename to plotly/validators/splom/dimension/_visible.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/axis/__init__.py b/plotly/validators/splom/dimension/axis/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/axis/__init__.py rename to plotly/validators/splom/dimension/axis/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/axis/_matches.py b/plotly/validators/splom/dimension/axis/_matches.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/axis/_matches.py rename to plotly/validators/splom/dimension/axis/_matches.py diff --git a/packages/python/plotly/plotly/validators/splom/dimension/axis/_type.py b/plotly/validators/splom/dimension/axis/_type.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/dimension/axis/_type.py rename to plotly/validators/splom/dimension/axis/_type.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/__init__.py b/plotly/validators/splom/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/__init__.py rename to plotly/validators/splom/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_align.py b/plotly/validators/splom/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_align.py rename to plotly/validators/splom/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_alignsrc.py b/plotly/validators/splom/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_alignsrc.py rename to plotly/validators/splom/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_bgcolor.py b/plotly/validators/splom/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_bgcolor.py rename to plotly/validators/splom/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_bgcolorsrc.py b/plotly/validators/splom/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_bgcolorsrc.py rename to plotly/validators/splom/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_bordercolor.py b/plotly/validators/splom/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_bordercolor.py rename to plotly/validators/splom/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_bordercolorsrc.py b/plotly/validators/splom/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_bordercolorsrc.py rename to plotly/validators/splom/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_font.py b/plotly/validators/splom/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_font.py rename to plotly/validators/splom/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_namelength.py b/plotly/validators/splom/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_namelength.py rename to plotly/validators/splom/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/_namelengthsrc.py b/plotly/validators/splom/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/_namelengthsrc.py rename to plotly/validators/splom/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/__init__.py b/plotly/validators/splom/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/__init__.py rename to plotly/validators/splom/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_color.py b/plotly/validators/splom/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_color.py rename to plotly/validators/splom/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_colorsrc.py b/plotly/validators/splom/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_colorsrc.py rename to plotly/validators/splom/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_family.py b/plotly/validators/splom/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_family.py rename to plotly/validators/splom/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_familysrc.py b/plotly/validators/splom/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_familysrc.py rename to plotly/validators/splom/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_lineposition.py b/plotly/validators/splom/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_lineposition.py rename to plotly/validators/splom/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_linepositionsrc.py b/plotly/validators/splom/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/splom/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_shadow.py b/plotly/validators/splom/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_shadow.py rename to plotly/validators/splom/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_shadowsrc.py b/plotly/validators/splom/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_shadowsrc.py rename to plotly/validators/splom/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_size.py b/plotly/validators/splom/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_size.py rename to plotly/validators/splom/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_sizesrc.py b/plotly/validators/splom/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_sizesrc.py rename to plotly/validators/splom/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_style.py b/plotly/validators/splom/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_style.py rename to plotly/validators/splom/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_stylesrc.py b/plotly/validators/splom/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_stylesrc.py rename to plotly/validators/splom/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_textcase.py b/plotly/validators/splom/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_textcase.py rename to plotly/validators/splom/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_textcasesrc.py b/plotly/validators/splom/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_textcasesrc.py rename to plotly/validators/splom/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_variant.py b/plotly/validators/splom/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_variant.py rename to plotly/validators/splom/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_variantsrc.py b/plotly/validators/splom/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_variantsrc.py rename to plotly/validators/splom/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_weight.py b/plotly/validators/splom/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_weight.py rename to plotly/validators/splom/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/splom/hoverlabel/font/_weightsrc.py b/plotly/validators/splom/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/hoverlabel/font/_weightsrc.py rename to plotly/validators/splom/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/__init__.py b/plotly/validators/splom/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/__init__.py rename to plotly/validators/splom/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/_font.py b/plotly/validators/splom/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/_font.py rename to plotly/validators/splom/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/_text.py b/plotly/validators/splom/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/_text.py rename to plotly/validators/splom/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/__init__.py b/plotly/validators/splom/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/__init__.py rename to plotly/validators/splom/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_color.py b/plotly/validators/splom/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_color.py rename to plotly/validators/splom/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_family.py b/plotly/validators/splom/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_family.py rename to plotly/validators/splom/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_lineposition.py b/plotly/validators/splom/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_lineposition.py rename to plotly/validators/splom/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_shadow.py b/plotly/validators/splom/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_shadow.py rename to plotly/validators/splom/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_size.py b/plotly/validators/splom/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_size.py rename to plotly/validators/splom/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_style.py b/plotly/validators/splom/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_style.py rename to plotly/validators/splom/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_textcase.py b/plotly/validators/splom/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_textcase.py rename to plotly/validators/splom/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_variant.py b/plotly/validators/splom/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_variant.py rename to plotly/validators/splom/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_weight.py b/plotly/validators/splom/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/legendgrouptitle/font/_weight.py rename to plotly/validators/splom/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/__init__.py b/plotly/validators/splom/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/__init__.py rename to plotly/validators/splom/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_angle.py b/plotly/validators/splom/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_angle.py rename to plotly/validators/splom/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_anglesrc.py b/plotly/validators/splom/marker/_anglesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_anglesrc.py rename to plotly/validators/splom/marker/_anglesrc.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_autocolorscale.py b/plotly/validators/splom/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_autocolorscale.py rename to plotly/validators/splom/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_cauto.py b/plotly/validators/splom/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_cauto.py rename to plotly/validators/splom/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_cmax.py b/plotly/validators/splom/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_cmax.py rename to plotly/validators/splom/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_cmid.py b/plotly/validators/splom/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_cmid.py rename to plotly/validators/splom/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_cmin.py b/plotly/validators/splom/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_cmin.py rename to plotly/validators/splom/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_color.py b/plotly/validators/splom/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_color.py rename to plotly/validators/splom/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_coloraxis.py b/plotly/validators/splom/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_coloraxis.py rename to plotly/validators/splom/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_colorbar.py b/plotly/validators/splom/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_colorbar.py rename to plotly/validators/splom/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_colorscale.py b/plotly/validators/splom/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_colorscale.py rename to plotly/validators/splom/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_colorsrc.py b/plotly/validators/splom/marker/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_colorsrc.py rename to plotly/validators/splom/marker/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_line.py b/plotly/validators/splom/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_line.py rename to plotly/validators/splom/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_opacity.py b/plotly/validators/splom/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_opacity.py rename to plotly/validators/splom/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_opacitysrc.py b/plotly/validators/splom/marker/_opacitysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_opacitysrc.py rename to plotly/validators/splom/marker/_opacitysrc.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_reversescale.py b/plotly/validators/splom/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_reversescale.py rename to plotly/validators/splom/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_showscale.py b/plotly/validators/splom/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_showscale.py rename to plotly/validators/splom/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_size.py b/plotly/validators/splom/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_size.py rename to plotly/validators/splom/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_sizemin.py b/plotly/validators/splom/marker/_sizemin.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_sizemin.py rename to plotly/validators/splom/marker/_sizemin.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_sizemode.py b/plotly/validators/splom/marker/_sizemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_sizemode.py rename to plotly/validators/splom/marker/_sizemode.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_sizeref.py b/plotly/validators/splom/marker/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_sizeref.py rename to plotly/validators/splom/marker/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_sizesrc.py b/plotly/validators/splom/marker/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_sizesrc.py rename to plotly/validators/splom/marker/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_symbol.py b/plotly/validators/splom/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_symbol.py rename to plotly/validators/splom/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/_symbolsrc.py b/plotly/validators/splom/marker/_symbolsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/_symbolsrc.py rename to plotly/validators/splom/marker/_symbolsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/__init__.py b/plotly/validators/splom/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/__init__.py rename to plotly/validators/splom/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_bgcolor.py b/plotly/validators/splom/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_bgcolor.py rename to plotly/validators/splom/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_bordercolor.py b/plotly/validators/splom/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_bordercolor.py rename to plotly/validators/splom/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_borderwidth.py b/plotly/validators/splom/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_borderwidth.py rename to plotly/validators/splom/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_dtick.py b/plotly/validators/splom/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_dtick.py rename to plotly/validators/splom/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_exponentformat.py b/plotly/validators/splom/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_exponentformat.py rename to plotly/validators/splom/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_labelalias.py b/plotly/validators/splom/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_labelalias.py rename to plotly/validators/splom/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_len.py b/plotly/validators/splom/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_len.py rename to plotly/validators/splom/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_lenmode.py b/plotly/validators/splom/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_lenmode.py rename to plotly/validators/splom/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_minexponent.py b/plotly/validators/splom/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_minexponent.py rename to plotly/validators/splom/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_nticks.py b/plotly/validators/splom/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_nticks.py rename to plotly/validators/splom/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_orientation.py b/plotly/validators/splom/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_orientation.py rename to plotly/validators/splom/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_outlinecolor.py b/plotly/validators/splom/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_outlinecolor.py rename to plotly/validators/splom/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_outlinewidth.py b/plotly/validators/splom/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_outlinewidth.py rename to plotly/validators/splom/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_separatethousands.py b/plotly/validators/splom/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_separatethousands.py rename to plotly/validators/splom/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_showexponent.py b/plotly/validators/splom/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_showexponent.py rename to plotly/validators/splom/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_showticklabels.py b/plotly/validators/splom/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_showticklabels.py rename to plotly/validators/splom/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_showtickprefix.py b/plotly/validators/splom/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_showtickprefix.py rename to plotly/validators/splom/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_showticksuffix.py b/plotly/validators/splom/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_showticksuffix.py rename to plotly/validators/splom/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_thickness.py b/plotly/validators/splom/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_thickness.py rename to plotly/validators/splom/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_thicknessmode.py b/plotly/validators/splom/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_thicknessmode.py rename to plotly/validators/splom/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tick0.py b/plotly/validators/splom/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tick0.py rename to plotly/validators/splom/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickangle.py b/plotly/validators/splom/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickangle.py rename to plotly/validators/splom/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickcolor.py b/plotly/validators/splom/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickcolor.py rename to plotly/validators/splom/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickfont.py b/plotly/validators/splom/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickfont.py rename to plotly/validators/splom/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickformat.py b/plotly/validators/splom/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickformat.py rename to plotly/validators/splom/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/splom/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/splom/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickformatstops.py b/plotly/validators/splom/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickformatstops.py rename to plotly/validators/splom/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/splom/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/splom/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticklabelposition.py b/plotly/validators/splom/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticklabelposition.py rename to plotly/validators/splom/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticklabelstep.py b/plotly/validators/splom/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticklabelstep.py rename to plotly/validators/splom/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticklen.py b/plotly/validators/splom/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticklen.py rename to plotly/validators/splom/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickmode.py b/plotly/validators/splom/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickmode.py rename to plotly/validators/splom/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickprefix.py b/plotly/validators/splom/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickprefix.py rename to plotly/validators/splom/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticks.py b/plotly/validators/splom/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticks.py rename to plotly/validators/splom/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticksuffix.py b/plotly/validators/splom/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticksuffix.py rename to plotly/validators/splom/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticktext.py b/plotly/validators/splom/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticktext.py rename to plotly/validators/splom/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticktextsrc.py b/plotly/validators/splom/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ticktextsrc.py rename to plotly/validators/splom/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickvals.py b/plotly/validators/splom/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickvals.py rename to plotly/validators/splom/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickvalssrc.py b/plotly/validators/splom/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickvalssrc.py rename to plotly/validators/splom/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickwidth.py b/plotly/validators/splom/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_tickwidth.py rename to plotly/validators/splom/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_title.py b/plotly/validators/splom/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_title.py rename to plotly/validators/splom/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_x.py b/plotly/validators/splom/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_x.py rename to plotly/validators/splom/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_xanchor.py b/plotly/validators/splom/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_xanchor.py rename to plotly/validators/splom/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_xpad.py b/plotly/validators/splom/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_xpad.py rename to plotly/validators/splom/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_xref.py b/plotly/validators/splom/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_xref.py rename to plotly/validators/splom/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_y.py b/plotly/validators/splom/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_y.py rename to plotly/validators/splom/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_yanchor.py b/plotly/validators/splom/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_yanchor.py rename to plotly/validators/splom/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_ypad.py b/plotly/validators/splom/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_ypad.py rename to plotly/validators/splom/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/_yref.py b/plotly/validators/splom/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/_yref.py rename to plotly/validators/splom/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/__init__.py b/plotly/validators/splom/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/__init__.py rename to plotly/validators/splom/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_color.py b/plotly/validators/splom/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_color.py rename to plotly/validators/splom/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_family.py b/plotly/validators/splom/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_family.py rename to plotly/validators/splom/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/splom/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/splom/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_shadow.py b/plotly/validators/splom/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/splom/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_size.py b/plotly/validators/splom/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_size.py rename to plotly/validators/splom/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_style.py b/plotly/validators/splom/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_style.py rename to plotly/validators/splom/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_textcase.py b/plotly/validators/splom/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/splom/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_variant.py b/plotly/validators/splom/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_variant.py rename to plotly/validators/splom/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_weight.py b/plotly/validators/splom/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickfont/_weight.py rename to plotly/validators/splom/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/splom/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/splom/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/splom/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/splom/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/splom/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/splom/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_name.py b/plotly/validators/splom/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/splom/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/splom/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/splom/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_value.py b/plotly/validators/splom/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/splom/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/__init__.py b/plotly/validators/splom/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/__init__.py rename to plotly/validators/splom/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/_font.py b/plotly/validators/splom/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/_font.py rename to plotly/validators/splom/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/_side.py b/plotly/validators/splom/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/_side.py rename to plotly/validators/splom/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/_text.py b/plotly/validators/splom/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/_text.py rename to plotly/validators/splom/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/__init__.py b/plotly/validators/splom/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/__init__.py rename to plotly/validators/splom/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_color.py b/plotly/validators/splom/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_color.py rename to plotly/validators/splom/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_family.py b/plotly/validators/splom/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_family.py rename to plotly/validators/splom/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_lineposition.py b/plotly/validators/splom/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/splom/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_shadow.py b/plotly/validators/splom/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_shadow.py rename to plotly/validators/splom/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_size.py b/plotly/validators/splom/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_size.py rename to plotly/validators/splom/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_style.py b/plotly/validators/splom/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_style.py rename to plotly/validators/splom/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_textcase.py b/plotly/validators/splom/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_textcase.py rename to plotly/validators/splom/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_variant.py b/plotly/validators/splom/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_variant.py rename to plotly/validators/splom/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_weight.py b/plotly/validators/splom/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/colorbar/title/font/_weight.py rename to plotly/validators/splom/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/__init__.py b/plotly/validators/splom/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/__init__.py rename to plotly/validators/splom/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_autocolorscale.py b/plotly/validators/splom/marker/line/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_autocolorscale.py rename to plotly/validators/splom/marker/line/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_cauto.py b/plotly/validators/splom/marker/line/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_cauto.py rename to plotly/validators/splom/marker/line/_cauto.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_cmax.py b/plotly/validators/splom/marker/line/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_cmax.py rename to plotly/validators/splom/marker/line/_cmax.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_cmid.py b/plotly/validators/splom/marker/line/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_cmid.py rename to plotly/validators/splom/marker/line/_cmid.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_cmin.py b/plotly/validators/splom/marker/line/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_cmin.py rename to plotly/validators/splom/marker/line/_cmin.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_color.py b/plotly/validators/splom/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_color.py rename to plotly/validators/splom/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_coloraxis.py b/plotly/validators/splom/marker/line/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_coloraxis.py rename to plotly/validators/splom/marker/line/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_colorscale.py b/plotly/validators/splom/marker/line/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_colorscale.py rename to plotly/validators/splom/marker/line/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_colorsrc.py b/plotly/validators/splom/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_colorsrc.py rename to plotly/validators/splom/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_reversescale.py b/plotly/validators/splom/marker/line/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_reversescale.py rename to plotly/validators/splom/marker/line/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_width.py b/plotly/validators/splom/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_width.py rename to plotly/validators/splom/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/splom/marker/line/_widthsrc.py b/plotly/validators/splom/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/marker/line/_widthsrc.py rename to plotly/validators/splom/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/splom/selected/__init__.py b/plotly/validators/splom/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/selected/__init__.py rename to plotly/validators/splom/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/selected/_marker.py b/plotly/validators/splom/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/selected/_marker.py rename to plotly/validators/splom/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/splom/selected/marker/__init__.py b/plotly/validators/splom/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/selected/marker/__init__.py rename to plotly/validators/splom/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/selected/marker/_color.py b/plotly/validators/splom/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/selected/marker/_color.py rename to plotly/validators/splom/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/selected/marker/_opacity.py b/plotly/validators/splom/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/selected/marker/_opacity.py rename to plotly/validators/splom/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/splom/selected/marker/_size.py b/plotly/validators/splom/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/selected/marker/_size.py rename to plotly/validators/splom/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/splom/stream/__init__.py b/plotly/validators/splom/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/stream/__init__.py rename to plotly/validators/splom/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/stream/_maxpoints.py b/plotly/validators/splom/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/stream/_maxpoints.py rename to plotly/validators/splom/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/splom/stream/_token.py b/plotly/validators/splom/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/stream/_token.py rename to plotly/validators/splom/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/splom/unselected/__init__.py b/plotly/validators/splom/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/unselected/__init__.py rename to plotly/validators/splom/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/unselected/_marker.py b/plotly/validators/splom/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/unselected/_marker.py rename to plotly/validators/splom/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/splom/unselected/marker/__init__.py b/plotly/validators/splom/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/unselected/marker/__init__.py rename to plotly/validators/splom/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/splom/unselected/marker/_color.py b/plotly/validators/splom/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/unselected/marker/_color.py rename to plotly/validators/splom/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/splom/unselected/marker/_opacity.py b/plotly/validators/splom/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/unselected/marker/_opacity.py rename to plotly/validators/splom/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/splom/unselected/marker/_size.py b/plotly/validators/splom/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/splom/unselected/marker/_size.py rename to plotly/validators/splom/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/streamtube/__init__.py b/plotly/validators/streamtube/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/__init__.py rename to plotly/validators/streamtube/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_autocolorscale.py b/plotly/validators/streamtube/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_autocolorscale.py rename to plotly/validators/streamtube/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_cauto.py b/plotly/validators/streamtube/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_cauto.py rename to plotly/validators/streamtube/_cauto.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_cmax.py b/plotly/validators/streamtube/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_cmax.py rename to plotly/validators/streamtube/_cmax.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_cmid.py b/plotly/validators/streamtube/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_cmid.py rename to plotly/validators/streamtube/_cmid.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_cmin.py b/plotly/validators/streamtube/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_cmin.py rename to plotly/validators/streamtube/_cmin.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_coloraxis.py b/plotly/validators/streamtube/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_coloraxis.py rename to plotly/validators/streamtube/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_colorbar.py b/plotly/validators/streamtube/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_colorbar.py rename to plotly/validators/streamtube/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_colorscale.py b/plotly/validators/streamtube/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_colorscale.py rename to plotly/validators/streamtube/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_customdata.py b/plotly/validators/streamtube/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_customdata.py rename to plotly/validators/streamtube/_customdata.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_customdatasrc.py b/plotly/validators/streamtube/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_customdatasrc.py rename to plotly/validators/streamtube/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_hoverinfo.py b/plotly/validators/streamtube/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_hoverinfo.py rename to plotly/validators/streamtube/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_hoverinfosrc.py b/plotly/validators/streamtube/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_hoverinfosrc.py rename to plotly/validators/streamtube/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_hoverlabel.py b/plotly/validators/streamtube/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_hoverlabel.py rename to plotly/validators/streamtube/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_hovertemplate.py b/plotly/validators/streamtube/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_hovertemplate.py rename to plotly/validators/streamtube/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_hovertemplatesrc.py b/plotly/validators/streamtube/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_hovertemplatesrc.py rename to plotly/validators/streamtube/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_hovertext.py b/plotly/validators/streamtube/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_hovertext.py rename to plotly/validators/streamtube/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_ids.py b/plotly/validators/streamtube/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_ids.py rename to plotly/validators/streamtube/_ids.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_idssrc.py b/plotly/validators/streamtube/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_idssrc.py rename to plotly/validators/streamtube/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_legend.py b/plotly/validators/streamtube/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_legend.py rename to plotly/validators/streamtube/_legend.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_legendgroup.py b/plotly/validators/streamtube/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_legendgroup.py rename to plotly/validators/streamtube/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_legendgrouptitle.py b/plotly/validators/streamtube/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_legendgrouptitle.py rename to plotly/validators/streamtube/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_legendrank.py b/plotly/validators/streamtube/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_legendrank.py rename to plotly/validators/streamtube/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_legendwidth.py b/plotly/validators/streamtube/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_legendwidth.py rename to plotly/validators/streamtube/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_lighting.py b/plotly/validators/streamtube/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_lighting.py rename to plotly/validators/streamtube/_lighting.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_lightposition.py b/plotly/validators/streamtube/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_lightposition.py rename to plotly/validators/streamtube/_lightposition.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_maxdisplayed.py b/plotly/validators/streamtube/_maxdisplayed.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_maxdisplayed.py rename to plotly/validators/streamtube/_maxdisplayed.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_meta.py b/plotly/validators/streamtube/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_meta.py rename to plotly/validators/streamtube/_meta.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_metasrc.py b/plotly/validators/streamtube/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_metasrc.py rename to plotly/validators/streamtube/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_name.py b/plotly/validators/streamtube/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_name.py rename to plotly/validators/streamtube/_name.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_opacity.py b/plotly/validators/streamtube/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_opacity.py rename to plotly/validators/streamtube/_opacity.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_reversescale.py b/plotly/validators/streamtube/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_reversescale.py rename to plotly/validators/streamtube/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_scene.py b/plotly/validators/streamtube/_scene.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_scene.py rename to plotly/validators/streamtube/_scene.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_showlegend.py b/plotly/validators/streamtube/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_showlegend.py rename to plotly/validators/streamtube/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_showscale.py b/plotly/validators/streamtube/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_showscale.py rename to plotly/validators/streamtube/_showscale.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_sizeref.py b/plotly/validators/streamtube/_sizeref.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_sizeref.py rename to plotly/validators/streamtube/_sizeref.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_starts.py b/plotly/validators/streamtube/_starts.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_starts.py rename to plotly/validators/streamtube/_starts.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_stream.py b/plotly/validators/streamtube/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_stream.py rename to plotly/validators/streamtube/_stream.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_text.py b/plotly/validators/streamtube/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_text.py rename to plotly/validators/streamtube/_text.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_u.py b/plotly/validators/streamtube/_u.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_u.py rename to plotly/validators/streamtube/_u.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_uhoverformat.py b/plotly/validators/streamtube/_uhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_uhoverformat.py rename to plotly/validators/streamtube/_uhoverformat.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_uid.py b/plotly/validators/streamtube/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_uid.py rename to plotly/validators/streamtube/_uid.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_uirevision.py b/plotly/validators/streamtube/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_uirevision.py rename to plotly/validators/streamtube/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_usrc.py b/plotly/validators/streamtube/_usrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_usrc.py rename to plotly/validators/streamtube/_usrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_v.py b/plotly/validators/streamtube/_v.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_v.py rename to plotly/validators/streamtube/_v.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_vhoverformat.py b/plotly/validators/streamtube/_vhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_vhoverformat.py rename to plotly/validators/streamtube/_vhoverformat.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_visible.py b/plotly/validators/streamtube/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_visible.py rename to plotly/validators/streamtube/_visible.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_vsrc.py b/plotly/validators/streamtube/_vsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_vsrc.py rename to plotly/validators/streamtube/_vsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_w.py b/plotly/validators/streamtube/_w.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_w.py rename to plotly/validators/streamtube/_w.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_whoverformat.py b/plotly/validators/streamtube/_whoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_whoverformat.py rename to plotly/validators/streamtube/_whoverformat.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_wsrc.py b/plotly/validators/streamtube/_wsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_wsrc.py rename to plotly/validators/streamtube/_wsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_x.py b/plotly/validators/streamtube/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_x.py rename to plotly/validators/streamtube/_x.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_xhoverformat.py b/plotly/validators/streamtube/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_xhoverformat.py rename to plotly/validators/streamtube/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_xsrc.py b/plotly/validators/streamtube/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_xsrc.py rename to plotly/validators/streamtube/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_y.py b/plotly/validators/streamtube/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_y.py rename to plotly/validators/streamtube/_y.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_yhoverformat.py b/plotly/validators/streamtube/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_yhoverformat.py rename to plotly/validators/streamtube/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_ysrc.py b/plotly/validators/streamtube/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_ysrc.py rename to plotly/validators/streamtube/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_z.py b/plotly/validators/streamtube/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_z.py rename to plotly/validators/streamtube/_z.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_zhoverformat.py b/plotly/validators/streamtube/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_zhoverformat.py rename to plotly/validators/streamtube/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/streamtube/_zsrc.py b/plotly/validators/streamtube/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/_zsrc.py rename to plotly/validators/streamtube/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/__init__.py b/plotly/validators/streamtube/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/__init__.py rename to plotly/validators/streamtube/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_bgcolor.py b/plotly/validators/streamtube/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_bgcolor.py rename to plotly/validators/streamtube/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_bordercolor.py b/plotly/validators/streamtube/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_bordercolor.py rename to plotly/validators/streamtube/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_borderwidth.py b/plotly/validators/streamtube/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_borderwidth.py rename to plotly/validators/streamtube/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_dtick.py b/plotly/validators/streamtube/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_dtick.py rename to plotly/validators/streamtube/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_exponentformat.py b/plotly/validators/streamtube/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_exponentformat.py rename to plotly/validators/streamtube/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_labelalias.py b/plotly/validators/streamtube/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_labelalias.py rename to plotly/validators/streamtube/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_len.py b/plotly/validators/streamtube/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_len.py rename to plotly/validators/streamtube/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_lenmode.py b/plotly/validators/streamtube/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_lenmode.py rename to plotly/validators/streamtube/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_minexponent.py b/plotly/validators/streamtube/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_minexponent.py rename to plotly/validators/streamtube/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_nticks.py b/plotly/validators/streamtube/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_nticks.py rename to plotly/validators/streamtube/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_orientation.py b/plotly/validators/streamtube/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_orientation.py rename to plotly/validators/streamtube/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_outlinecolor.py b/plotly/validators/streamtube/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_outlinecolor.py rename to plotly/validators/streamtube/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_outlinewidth.py b/plotly/validators/streamtube/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_outlinewidth.py rename to plotly/validators/streamtube/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_separatethousands.py b/plotly/validators/streamtube/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_separatethousands.py rename to plotly/validators/streamtube/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_showexponent.py b/plotly/validators/streamtube/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_showexponent.py rename to plotly/validators/streamtube/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_showticklabels.py b/plotly/validators/streamtube/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_showticklabels.py rename to plotly/validators/streamtube/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_showtickprefix.py b/plotly/validators/streamtube/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_showtickprefix.py rename to plotly/validators/streamtube/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_showticksuffix.py b/plotly/validators/streamtube/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_showticksuffix.py rename to plotly/validators/streamtube/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_thickness.py b/plotly/validators/streamtube/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_thickness.py rename to plotly/validators/streamtube/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_thicknessmode.py b/plotly/validators/streamtube/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_thicknessmode.py rename to plotly/validators/streamtube/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tick0.py b/plotly/validators/streamtube/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tick0.py rename to plotly/validators/streamtube/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickangle.py b/plotly/validators/streamtube/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickangle.py rename to plotly/validators/streamtube/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickcolor.py b/plotly/validators/streamtube/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickcolor.py rename to plotly/validators/streamtube/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickfont.py b/plotly/validators/streamtube/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickfont.py rename to plotly/validators/streamtube/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickformat.py b/plotly/validators/streamtube/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickformat.py rename to plotly/validators/streamtube/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickformatstopdefaults.py b/plotly/validators/streamtube/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickformatstopdefaults.py rename to plotly/validators/streamtube/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickformatstops.py b/plotly/validators/streamtube/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickformatstops.py rename to plotly/validators/streamtube/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ticklabeloverflow.py b/plotly/validators/streamtube/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ticklabeloverflow.py rename to plotly/validators/streamtube/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ticklabelposition.py b/plotly/validators/streamtube/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ticklabelposition.py rename to plotly/validators/streamtube/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ticklabelstep.py b/plotly/validators/streamtube/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ticklabelstep.py rename to plotly/validators/streamtube/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ticklen.py b/plotly/validators/streamtube/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ticklen.py rename to plotly/validators/streamtube/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickmode.py b/plotly/validators/streamtube/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickmode.py rename to plotly/validators/streamtube/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickprefix.py b/plotly/validators/streamtube/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickprefix.py rename to plotly/validators/streamtube/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ticks.py b/plotly/validators/streamtube/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ticks.py rename to plotly/validators/streamtube/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ticksuffix.py b/plotly/validators/streamtube/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ticksuffix.py rename to plotly/validators/streamtube/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ticktext.py b/plotly/validators/streamtube/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ticktext.py rename to plotly/validators/streamtube/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ticktextsrc.py b/plotly/validators/streamtube/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ticktextsrc.py rename to plotly/validators/streamtube/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickvals.py b/plotly/validators/streamtube/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickvals.py rename to plotly/validators/streamtube/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickvalssrc.py b/plotly/validators/streamtube/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickvalssrc.py rename to plotly/validators/streamtube/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_tickwidth.py b/plotly/validators/streamtube/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_tickwidth.py rename to plotly/validators/streamtube/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_title.py b/plotly/validators/streamtube/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_title.py rename to plotly/validators/streamtube/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_x.py b/plotly/validators/streamtube/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_x.py rename to plotly/validators/streamtube/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_xanchor.py b/plotly/validators/streamtube/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_xanchor.py rename to plotly/validators/streamtube/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_xpad.py b/plotly/validators/streamtube/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_xpad.py rename to plotly/validators/streamtube/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_xref.py b/plotly/validators/streamtube/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_xref.py rename to plotly/validators/streamtube/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_y.py b/plotly/validators/streamtube/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_y.py rename to plotly/validators/streamtube/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_yanchor.py b/plotly/validators/streamtube/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_yanchor.py rename to plotly/validators/streamtube/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_ypad.py b/plotly/validators/streamtube/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_ypad.py rename to plotly/validators/streamtube/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/_yref.py b/plotly/validators/streamtube/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/_yref.py rename to plotly/validators/streamtube/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/__init__.py b/plotly/validators/streamtube/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/__init__.py rename to plotly/validators/streamtube/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_color.py b/plotly/validators/streamtube/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_color.py rename to plotly/validators/streamtube/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_family.py b/plotly/validators/streamtube/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_family.py rename to plotly/validators/streamtube/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_lineposition.py b/plotly/validators/streamtube/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_lineposition.py rename to plotly/validators/streamtube/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_shadow.py b/plotly/validators/streamtube/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_shadow.py rename to plotly/validators/streamtube/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_size.py b/plotly/validators/streamtube/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_size.py rename to plotly/validators/streamtube/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_style.py b/plotly/validators/streamtube/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_style.py rename to plotly/validators/streamtube/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_textcase.py b/plotly/validators/streamtube/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_textcase.py rename to plotly/validators/streamtube/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_variant.py b/plotly/validators/streamtube/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_variant.py rename to plotly/validators/streamtube/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_weight.py b/plotly/validators/streamtube/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickfont/_weight.py rename to plotly/validators/streamtube/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/__init__.py b/plotly/validators/streamtube/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/__init__.py rename to plotly/validators/streamtube/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/streamtube/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/streamtube/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_enabled.py b/plotly/validators/streamtube/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_enabled.py rename to plotly/validators/streamtube/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_name.py b/plotly/validators/streamtube/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_name.py rename to plotly/validators/streamtube/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/streamtube/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/streamtube/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_value.py b/plotly/validators/streamtube/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/tickformatstop/_value.py rename to plotly/validators/streamtube/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/__init__.py b/plotly/validators/streamtube/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/__init__.py rename to plotly/validators/streamtube/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/_font.py b/plotly/validators/streamtube/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/_font.py rename to plotly/validators/streamtube/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/_side.py b/plotly/validators/streamtube/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/_side.py rename to plotly/validators/streamtube/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/_text.py b/plotly/validators/streamtube/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/_text.py rename to plotly/validators/streamtube/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/__init__.py b/plotly/validators/streamtube/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/__init__.py rename to plotly/validators/streamtube/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_color.py b/plotly/validators/streamtube/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_color.py rename to plotly/validators/streamtube/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_family.py b/plotly/validators/streamtube/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_family.py rename to plotly/validators/streamtube/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_lineposition.py b/plotly/validators/streamtube/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_lineposition.py rename to plotly/validators/streamtube/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_shadow.py b/plotly/validators/streamtube/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_shadow.py rename to plotly/validators/streamtube/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_size.py b/plotly/validators/streamtube/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_size.py rename to plotly/validators/streamtube/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_style.py b/plotly/validators/streamtube/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_style.py rename to plotly/validators/streamtube/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_textcase.py b/plotly/validators/streamtube/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_textcase.py rename to plotly/validators/streamtube/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_variant.py b/plotly/validators/streamtube/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_variant.py rename to plotly/validators/streamtube/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_weight.py b/plotly/validators/streamtube/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/colorbar/title/font/_weight.py rename to plotly/validators/streamtube/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/__init__.py b/plotly/validators/streamtube/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/__init__.py rename to plotly/validators/streamtube/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_align.py b/plotly/validators/streamtube/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_align.py rename to plotly/validators/streamtube/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_alignsrc.py b/plotly/validators/streamtube/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_alignsrc.py rename to plotly/validators/streamtube/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_bgcolor.py b/plotly/validators/streamtube/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_bgcolor.py rename to plotly/validators/streamtube/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_bgcolorsrc.py b/plotly/validators/streamtube/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_bgcolorsrc.py rename to plotly/validators/streamtube/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_bordercolor.py b/plotly/validators/streamtube/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_bordercolor.py rename to plotly/validators/streamtube/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_bordercolorsrc.py b/plotly/validators/streamtube/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_bordercolorsrc.py rename to plotly/validators/streamtube/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_font.py b/plotly/validators/streamtube/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_font.py rename to plotly/validators/streamtube/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_namelength.py b/plotly/validators/streamtube/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_namelength.py rename to plotly/validators/streamtube/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/_namelengthsrc.py b/plotly/validators/streamtube/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/_namelengthsrc.py rename to plotly/validators/streamtube/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/__init__.py b/plotly/validators/streamtube/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/__init__.py rename to plotly/validators/streamtube/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_color.py b/plotly/validators/streamtube/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_color.py rename to plotly/validators/streamtube/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_colorsrc.py b/plotly/validators/streamtube/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_colorsrc.py rename to plotly/validators/streamtube/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_family.py b/plotly/validators/streamtube/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_family.py rename to plotly/validators/streamtube/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_familysrc.py b/plotly/validators/streamtube/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_familysrc.py rename to plotly/validators/streamtube/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_lineposition.py b/plotly/validators/streamtube/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_lineposition.py rename to plotly/validators/streamtube/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_linepositionsrc.py b/plotly/validators/streamtube/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/streamtube/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_shadow.py b/plotly/validators/streamtube/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_shadow.py rename to plotly/validators/streamtube/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_shadowsrc.py b/plotly/validators/streamtube/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_shadowsrc.py rename to plotly/validators/streamtube/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_size.py b/plotly/validators/streamtube/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_size.py rename to plotly/validators/streamtube/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_sizesrc.py b/plotly/validators/streamtube/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_sizesrc.py rename to plotly/validators/streamtube/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_style.py b/plotly/validators/streamtube/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_style.py rename to plotly/validators/streamtube/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_stylesrc.py b/plotly/validators/streamtube/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_stylesrc.py rename to plotly/validators/streamtube/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_textcase.py b/plotly/validators/streamtube/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_textcase.py rename to plotly/validators/streamtube/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_textcasesrc.py b/plotly/validators/streamtube/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_textcasesrc.py rename to plotly/validators/streamtube/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_variant.py b/plotly/validators/streamtube/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_variant.py rename to plotly/validators/streamtube/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_variantsrc.py b/plotly/validators/streamtube/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_variantsrc.py rename to plotly/validators/streamtube/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_weight.py b/plotly/validators/streamtube/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_weight.py rename to plotly/validators/streamtube/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_weightsrc.py b/plotly/validators/streamtube/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/hoverlabel/font/_weightsrc.py rename to plotly/validators/streamtube/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/__init__.py b/plotly/validators/streamtube/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/__init__.py rename to plotly/validators/streamtube/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/_font.py b/plotly/validators/streamtube/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/_font.py rename to plotly/validators/streamtube/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/_text.py b/plotly/validators/streamtube/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/_text.py rename to plotly/validators/streamtube/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/__init__.py b/plotly/validators/streamtube/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/__init__.py rename to plotly/validators/streamtube/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_color.py b/plotly/validators/streamtube/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_color.py rename to plotly/validators/streamtube/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_family.py b/plotly/validators/streamtube/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_family.py rename to plotly/validators/streamtube/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_lineposition.py b/plotly/validators/streamtube/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_lineposition.py rename to plotly/validators/streamtube/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_shadow.py b/plotly/validators/streamtube/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_shadow.py rename to plotly/validators/streamtube/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_size.py b/plotly/validators/streamtube/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_size.py rename to plotly/validators/streamtube/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_style.py b/plotly/validators/streamtube/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_style.py rename to plotly/validators/streamtube/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_textcase.py b/plotly/validators/streamtube/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_textcase.py rename to plotly/validators/streamtube/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_variant.py b/plotly/validators/streamtube/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_variant.py rename to plotly/validators/streamtube/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_weight.py b/plotly/validators/streamtube/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/legendgrouptitle/font/_weight.py rename to plotly/validators/streamtube/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lighting/__init__.py b/plotly/validators/streamtube/lighting/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lighting/__init__.py rename to plotly/validators/streamtube/lighting/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lighting/_ambient.py b/plotly/validators/streamtube/lighting/_ambient.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lighting/_ambient.py rename to plotly/validators/streamtube/lighting/_ambient.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lighting/_diffuse.py b/plotly/validators/streamtube/lighting/_diffuse.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lighting/_diffuse.py rename to plotly/validators/streamtube/lighting/_diffuse.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lighting/_facenormalsepsilon.py b/plotly/validators/streamtube/lighting/_facenormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lighting/_facenormalsepsilon.py rename to plotly/validators/streamtube/lighting/_facenormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lighting/_fresnel.py b/plotly/validators/streamtube/lighting/_fresnel.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lighting/_fresnel.py rename to plotly/validators/streamtube/lighting/_fresnel.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lighting/_roughness.py b/plotly/validators/streamtube/lighting/_roughness.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lighting/_roughness.py rename to plotly/validators/streamtube/lighting/_roughness.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lighting/_specular.py b/plotly/validators/streamtube/lighting/_specular.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lighting/_specular.py rename to plotly/validators/streamtube/lighting/_specular.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lighting/_vertexnormalsepsilon.py b/plotly/validators/streamtube/lighting/_vertexnormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lighting/_vertexnormalsepsilon.py rename to plotly/validators/streamtube/lighting/_vertexnormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lightposition/__init__.py b/plotly/validators/streamtube/lightposition/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lightposition/__init__.py rename to plotly/validators/streamtube/lightposition/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lightposition/_x.py b/plotly/validators/streamtube/lightposition/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lightposition/_x.py rename to plotly/validators/streamtube/lightposition/_x.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lightposition/_y.py b/plotly/validators/streamtube/lightposition/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lightposition/_y.py rename to plotly/validators/streamtube/lightposition/_y.py diff --git a/packages/python/plotly/plotly/validators/streamtube/lightposition/_z.py b/plotly/validators/streamtube/lightposition/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/lightposition/_z.py rename to plotly/validators/streamtube/lightposition/_z.py diff --git a/packages/python/plotly/plotly/validators/streamtube/starts/__init__.py b/plotly/validators/streamtube/starts/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/starts/__init__.py rename to plotly/validators/streamtube/starts/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/starts/_x.py b/plotly/validators/streamtube/starts/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/starts/_x.py rename to plotly/validators/streamtube/starts/_x.py diff --git a/packages/python/plotly/plotly/validators/streamtube/starts/_xsrc.py b/plotly/validators/streamtube/starts/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/starts/_xsrc.py rename to plotly/validators/streamtube/starts/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/starts/_y.py b/plotly/validators/streamtube/starts/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/starts/_y.py rename to plotly/validators/streamtube/starts/_y.py diff --git a/packages/python/plotly/plotly/validators/streamtube/starts/_ysrc.py b/plotly/validators/streamtube/starts/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/starts/_ysrc.py rename to plotly/validators/streamtube/starts/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/starts/_z.py b/plotly/validators/streamtube/starts/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/starts/_z.py rename to plotly/validators/streamtube/starts/_z.py diff --git a/packages/python/plotly/plotly/validators/streamtube/starts/_zsrc.py b/plotly/validators/streamtube/starts/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/starts/_zsrc.py rename to plotly/validators/streamtube/starts/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/streamtube/stream/__init__.py b/plotly/validators/streamtube/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/stream/__init__.py rename to plotly/validators/streamtube/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/streamtube/stream/_maxpoints.py b/plotly/validators/streamtube/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/stream/_maxpoints.py rename to plotly/validators/streamtube/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/streamtube/stream/_token.py b/plotly/validators/streamtube/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/streamtube/stream/_token.py rename to plotly/validators/streamtube/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/sunburst/__init__.py b/plotly/validators/sunburst/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/__init__.py rename to plotly/validators/sunburst/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_branchvalues.py b/plotly/validators/sunburst/_branchvalues.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_branchvalues.py rename to plotly/validators/sunburst/_branchvalues.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_count.py b/plotly/validators/sunburst/_count.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_count.py rename to plotly/validators/sunburst/_count.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_customdata.py b/plotly/validators/sunburst/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_customdata.py rename to plotly/validators/sunburst/_customdata.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_customdatasrc.py b/plotly/validators/sunburst/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_customdatasrc.py rename to plotly/validators/sunburst/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_domain.py b/plotly/validators/sunburst/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_domain.py rename to plotly/validators/sunburst/_domain.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_hoverinfo.py b/plotly/validators/sunburst/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_hoverinfo.py rename to plotly/validators/sunburst/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_hoverinfosrc.py b/plotly/validators/sunburst/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_hoverinfosrc.py rename to plotly/validators/sunburst/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_hoverlabel.py b/plotly/validators/sunburst/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_hoverlabel.py rename to plotly/validators/sunburst/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_hovertemplate.py b/plotly/validators/sunburst/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_hovertemplate.py rename to plotly/validators/sunburst/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_hovertemplatesrc.py b/plotly/validators/sunburst/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_hovertemplatesrc.py rename to plotly/validators/sunburst/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_hovertext.py b/plotly/validators/sunburst/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_hovertext.py rename to plotly/validators/sunburst/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_hovertextsrc.py b/plotly/validators/sunburst/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_hovertextsrc.py rename to plotly/validators/sunburst/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_ids.py b/plotly/validators/sunburst/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_ids.py rename to plotly/validators/sunburst/_ids.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_idssrc.py b/plotly/validators/sunburst/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_idssrc.py rename to plotly/validators/sunburst/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_insidetextfont.py b/plotly/validators/sunburst/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_insidetextfont.py rename to plotly/validators/sunburst/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_insidetextorientation.py b/plotly/validators/sunburst/_insidetextorientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_insidetextorientation.py rename to plotly/validators/sunburst/_insidetextorientation.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_labels.py b/plotly/validators/sunburst/_labels.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_labels.py rename to plotly/validators/sunburst/_labels.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_labelssrc.py b/plotly/validators/sunburst/_labelssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_labelssrc.py rename to plotly/validators/sunburst/_labelssrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_leaf.py b/plotly/validators/sunburst/_leaf.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_leaf.py rename to plotly/validators/sunburst/_leaf.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_legend.py b/plotly/validators/sunburst/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_legend.py rename to plotly/validators/sunburst/_legend.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_legendgrouptitle.py b/plotly/validators/sunburst/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_legendgrouptitle.py rename to plotly/validators/sunburst/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_legendrank.py b/plotly/validators/sunburst/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_legendrank.py rename to plotly/validators/sunburst/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_legendwidth.py b/plotly/validators/sunburst/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_legendwidth.py rename to plotly/validators/sunburst/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_level.py b/plotly/validators/sunburst/_level.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_level.py rename to plotly/validators/sunburst/_level.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_marker.py b/plotly/validators/sunburst/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_marker.py rename to plotly/validators/sunburst/_marker.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_maxdepth.py b/plotly/validators/sunburst/_maxdepth.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_maxdepth.py rename to plotly/validators/sunburst/_maxdepth.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_meta.py b/plotly/validators/sunburst/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_meta.py rename to plotly/validators/sunburst/_meta.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_metasrc.py b/plotly/validators/sunburst/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_metasrc.py rename to plotly/validators/sunburst/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_name.py b/plotly/validators/sunburst/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_name.py rename to plotly/validators/sunburst/_name.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_opacity.py b/plotly/validators/sunburst/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_opacity.py rename to plotly/validators/sunburst/_opacity.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_outsidetextfont.py b/plotly/validators/sunburst/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_outsidetextfont.py rename to plotly/validators/sunburst/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_parents.py b/plotly/validators/sunburst/_parents.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_parents.py rename to plotly/validators/sunburst/_parents.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_parentssrc.py b/plotly/validators/sunburst/_parentssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_parentssrc.py rename to plotly/validators/sunburst/_parentssrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_root.py b/plotly/validators/sunburst/_root.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_root.py rename to plotly/validators/sunburst/_root.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_rotation.py b/plotly/validators/sunburst/_rotation.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_rotation.py rename to plotly/validators/sunburst/_rotation.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_sort.py b/plotly/validators/sunburst/_sort.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_sort.py rename to plotly/validators/sunburst/_sort.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_stream.py b/plotly/validators/sunburst/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_stream.py rename to plotly/validators/sunburst/_stream.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_text.py b/plotly/validators/sunburst/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_text.py rename to plotly/validators/sunburst/_text.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_textfont.py b/plotly/validators/sunburst/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_textfont.py rename to plotly/validators/sunburst/_textfont.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_textinfo.py b/plotly/validators/sunburst/_textinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_textinfo.py rename to plotly/validators/sunburst/_textinfo.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_textsrc.py b/plotly/validators/sunburst/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_textsrc.py rename to plotly/validators/sunburst/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_texttemplate.py b/plotly/validators/sunburst/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_texttemplate.py rename to plotly/validators/sunburst/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_texttemplatesrc.py b/plotly/validators/sunburst/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_texttemplatesrc.py rename to plotly/validators/sunburst/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_uid.py b/plotly/validators/sunburst/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_uid.py rename to plotly/validators/sunburst/_uid.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_uirevision.py b/plotly/validators/sunburst/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_uirevision.py rename to plotly/validators/sunburst/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_values.py b/plotly/validators/sunburst/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_values.py rename to plotly/validators/sunburst/_values.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_valuessrc.py b/plotly/validators/sunburst/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_valuessrc.py rename to plotly/validators/sunburst/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/_visible.py b/plotly/validators/sunburst/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/_visible.py rename to plotly/validators/sunburst/_visible.py diff --git a/packages/python/plotly/plotly/validators/sunburst/domain/__init__.py b/plotly/validators/sunburst/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/domain/__init__.py rename to plotly/validators/sunburst/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/domain/_column.py b/plotly/validators/sunburst/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/domain/_column.py rename to plotly/validators/sunburst/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/sunburst/domain/_row.py b/plotly/validators/sunburst/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/domain/_row.py rename to plotly/validators/sunburst/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/sunburst/domain/_x.py b/plotly/validators/sunburst/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/domain/_x.py rename to plotly/validators/sunburst/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/sunburst/domain/_y.py b/plotly/validators/sunburst/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/domain/_y.py rename to plotly/validators/sunburst/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/__init__.py b/plotly/validators/sunburst/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/__init__.py rename to plotly/validators/sunburst/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_align.py b/plotly/validators/sunburst/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_align.py rename to plotly/validators/sunburst/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_alignsrc.py b/plotly/validators/sunburst/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_alignsrc.py rename to plotly/validators/sunburst/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_bgcolor.py b/plotly/validators/sunburst/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_bgcolor.py rename to plotly/validators/sunburst/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_bgcolorsrc.py b/plotly/validators/sunburst/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_bgcolorsrc.py rename to plotly/validators/sunburst/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_bordercolor.py b/plotly/validators/sunburst/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_bordercolor.py rename to plotly/validators/sunburst/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_bordercolorsrc.py b/plotly/validators/sunburst/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_bordercolorsrc.py rename to plotly/validators/sunburst/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_font.py b/plotly/validators/sunburst/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_font.py rename to plotly/validators/sunburst/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_namelength.py b/plotly/validators/sunburst/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_namelength.py rename to plotly/validators/sunburst/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/_namelengthsrc.py b/plotly/validators/sunburst/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/_namelengthsrc.py rename to plotly/validators/sunburst/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/__init__.py b/plotly/validators/sunburst/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/__init__.py rename to plotly/validators/sunburst/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_color.py b/plotly/validators/sunburst/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_color.py rename to plotly/validators/sunburst/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_colorsrc.py b/plotly/validators/sunburst/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_colorsrc.py rename to plotly/validators/sunburst/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_family.py b/plotly/validators/sunburst/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_family.py rename to plotly/validators/sunburst/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_familysrc.py b/plotly/validators/sunburst/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_familysrc.py rename to plotly/validators/sunburst/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_lineposition.py b/plotly/validators/sunburst/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_lineposition.py rename to plotly/validators/sunburst/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_linepositionsrc.py b/plotly/validators/sunburst/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/sunburst/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_shadow.py b/plotly/validators/sunburst/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_shadow.py rename to plotly/validators/sunburst/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_shadowsrc.py b/plotly/validators/sunburst/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_shadowsrc.py rename to plotly/validators/sunburst/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_size.py b/plotly/validators/sunburst/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_size.py rename to plotly/validators/sunburst/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_sizesrc.py b/plotly/validators/sunburst/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_sizesrc.py rename to plotly/validators/sunburst/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_style.py b/plotly/validators/sunburst/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_style.py rename to plotly/validators/sunburst/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_stylesrc.py b/plotly/validators/sunburst/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_stylesrc.py rename to plotly/validators/sunburst/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_textcase.py b/plotly/validators/sunburst/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_textcase.py rename to plotly/validators/sunburst/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_textcasesrc.py b/plotly/validators/sunburst/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_textcasesrc.py rename to plotly/validators/sunburst/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_variant.py b/plotly/validators/sunburst/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_variant.py rename to plotly/validators/sunburst/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_variantsrc.py b/plotly/validators/sunburst/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_variantsrc.py rename to plotly/validators/sunburst/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_weight.py b/plotly/validators/sunburst/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_weight.py rename to plotly/validators/sunburst/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_weightsrc.py b/plotly/validators/sunburst/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/hoverlabel/font/_weightsrc.py rename to plotly/validators/sunburst/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/__init__.py b/plotly/validators/sunburst/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/__init__.py rename to plotly/validators/sunburst/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_color.py b/plotly/validators/sunburst/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_color.py rename to plotly/validators/sunburst/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_colorsrc.py b/plotly/validators/sunburst/insidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_colorsrc.py rename to plotly/validators/sunburst/insidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_family.py b/plotly/validators/sunburst/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_family.py rename to plotly/validators/sunburst/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_familysrc.py b/plotly/validators/sunburst/insidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_familysrc.py rename to plotly/validators/sunburst/insidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_lineposition.py b/plotly/validators/sunburst/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_lineposition.py rename to plotly/validators/sunburst/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_linepositionsrc.py b/plotly/validators/sunburst/insidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_linepositionsrc.py rename to plotly/validators/sunburst/insidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_shadow.py b/plotly/validators/sunburst/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_shadow.py rename to plotly/validators/sunburst/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_shadowsrc.py b/plotly/validators/sunburst/insidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_shadowsrc.py rename to plotly/validators/sunburst/insidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_size.py b/plotly/validators/sunburst/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_size.py rename to plotly/validators/sunburst/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_sizesrc.py b/plotly/validators/sunburst/insidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_sizesrc.py rename to plotly/validators/sunburst/insidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_style.py b/plotly/validators/sunburst/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_style.py rename to plotly/validators/sunburst/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_stylesrc.py b/plotly/validators/sunburst/insidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_stylesrc.py rename to plotly/validators/sunburst/insidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_textcase.py b/plotly/validators/sunburst/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_textcase.py rename to plotly/validators/sunburst/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_textcasesrc.py b/plotly/validators/sunburst/insidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_textcasesrc.py rename to plotly/validators/sunburst/insidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_variant.py b/plotly/validators/sunburst/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_variant.py rename to plotly/validators/sunburst/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_variantsrc.py b/plotly/validators/sunburst/insidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_variantsrc.py rename to plotly/validators/sunburst/insidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_weight.py b/plotly/validators/sunburst/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_weight.py rename to plotly/validators/sunburst/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/sunburst/insidetextfont/_weightsrc.py b/plotly/validators/sunburst/insidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/insidetextfont/_weightsrc.py rename to plotly/validators/sunburst/insidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/leaf/__init__.py b/plotly/validators/sunburst/leaf/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/leaf/__init__.py rename to plotly/validators/sunburst/leaf/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/leaf/_opacity.py b/plotly/validators/sunburst/leaf/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/leaf/_opacity.py rename to plotly/validators/sunburst/leaf/_opacity.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/__init__.py b/plotly/validators/sunburst/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/__init__.py rename to plotly/validators/sunburst/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/_font.py b/plotly/validators/sunburst/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/_font.py rename to plotly/validators/sunburst/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/_text.py b/plotly/validators/sunburst/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/_text.py rename to plotly/validators/sunburst/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/__init__.py b/plotly/validators/sunburst/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/__init__.py rename to plotly/validators/sunburst/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_color.py b/plotly/validators/sunburst/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_color.py rename to plotly/validators/sunburst/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_family.py b/plotly/validators/sunburst/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_family.py rename to plotly/validators/sunburst/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_lineposition.py b/plotly/validators/sunburst/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_lineposition.py rename to plotly/validators/sunburst/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_shadow.py b/plotly/validators/sunburst/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_shadow.py rename to plotly/validators/sunburst/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_size.py b/plotly/validators/sunburst/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_size.py rename to plotly/validators/sunburst/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_style.py b/plotly/validators/sunburst/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_style.py rename to plotly/validators/sunburst/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_textcase.py b/plotly/validators/sunburst/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_textcase.py rename to plotly/validators/sunburst/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_variant.py b/plotly/validators/sunburst/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_variant.py rename to plotly/validators/sunburst/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_weight.py b/plotly/validators/sunburst/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/legendgrouptitle/font/_weight.py rename to plotly/validators/sunburst/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/__init__.py b/plotly/validators/sunburst/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/__init__.py rename to plotly/validators/sunburst/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_autocolorscale.py b/plotly/validators/sunburst/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_autocolorscale.py rename to plotly/validators/sunburst/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_cauto.py b/plotly/validators/sunburst/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_cauto.py rename to plotly/validators/sunburst/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_cmax.py b/plotly/validators/sunburst/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_cmax.py rename to plotly/validators/sunburst/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_cmid.py b/plotly/validators/sunburst/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_cmid.py rename to plotly/validators/sunburst/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_cmin.py b/plotly/validators/sunburst/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_cmin.py rename to plotly/validators/sunburst/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_coloraxis.py b/plotly/validators/sunburst/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_coloraxis.py rename to plotly/validators/sunburst/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_colorbar.py b/plotly/validators/sunburst/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_colorbar.py rename to plotly/validators/sunburst/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_colors.py b/plotly/validators/sunburst/marker/_colors.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_colors.py rename to plotly/validators/sunburst/marker/_colors.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_colorscale.py b/plotly/validators/sunburst/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_colorscale.py rename to plotly/validators/sunburst/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_colorssrc.py b/plotly/validators/sunburst/marker/_colorssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_colorssrc.py rename to plotly/validators/sunburst/marker/_colorssrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_line.py b/plotly/validators/sunburst/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_line.py rename to plotly/validators/sunburst/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_pattern.py b/plotly/validators/sunburst/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_pattern.py rename to plotly/validators/sunburst/marker/_pattern.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_reversescale.py b/plotly/validators/sunburst/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_reversescale.py rename to plotly/validators/sunburst/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/_showscale.py b/plotly/validators/sunburst/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/_showscale.py rename to plotly/validators/sunburst/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/__init__.py b/plotly/validators/sunburst/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/__init__.py rename to plotly/validators/sunburst/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_bgcolor.py b/plotly/validators/sunburst/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_bgcolor.py rename to plotly/validators/sunburst/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_bordercolor.py b/plotly/validators/sunburst/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_bordercolor.py rename to plotly/validators/sunburst/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_borderwidth.py b/plotly/validators/sunburst/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_borderwidth.py rename to plotly/validators/sunburst/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_dtick.py b/plotly/validators/sunburst/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_dtick.py rename to plotly/validators/sunburst/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_exponentformat.py b/plotly/validators/sunburst/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_exponentformat.py rename to plotly/validators/sunburst/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_labelalias.py b/plotly/validators/sunburst/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_labelalias.py rename to plotly/validators/sunburst/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_len.py b/plotly/validators/sunburst/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_len.py rename to plotly/validators/sunburst/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_lenmode.py b/plotly/validators/sunburst/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_lenmode.py rename to plotly/validators/sunburst/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_minexponent.py b/plotly/validators/sunburst/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_minexponent.py rename to plotly/validators/sunburst/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_nticks.py b/plotly/validators/sunburst/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_nticks.py rename to plotly/validators/sunburst/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_orientation.py b/plotly/validators/sunburst/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_orientation.py rename to plotly/validators/sunburst/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_outlinecolor.py b/plotly/validators/sunburst/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_outlinecolor.py rename to plotly/validators/sunburst/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_outlinewidth.py b/plotly/validators/sunburst/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_outlinewidth.py rename to plotly/validators/sunburst/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_separatethousands.py b/plotly/validators/sunburst/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_separatethousands.py rename to plotly/validators/sunburst/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_showexponent.py b/plotly/validators/sunburst/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_showexponent.py rename to plotly/validators/sunburst/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_showticklabels.py b/plotly/validators/sunburst/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_showticklabels.py rename to plotly/validators/sunburst/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_showtickprefix.py b/plotly/validators/sunburst/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_showtickprefix.py rename to plotly/validators/sunburst/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_showticksuffix.py b/plotly/validators/sunburst/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_showticksuffix.py rename to plotly/validators/sunburst/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_thickness.py b/plotly/validators/sunburst/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_thickness.py rename to plotly/validators/sunburst/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_thicknessmode.py b/plotly/validators/sunburst/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_thicknessmode.py rename to plotly/validators/sunburst/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tick0.py b/plotly/validators/sunburst/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tick0.py rename to plotly/validators/sunburst/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickangle.py b/plotly/validators/sunburst/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickangle.py rename to plotly/validators/sunburst/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickcolor.py b/plotly/validators/sunburst/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickcolor.py rename to plotly/validators/sunburst/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickfont.py b/plotly/validators/sunburst/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickfont.py rename to plotly/validators/sunburst/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickformat.py b/plotly/validators/sunburst/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickformat.py rename to plotly/validators/sunburst/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/sunburst/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/sunburst/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickformatstops.py b/plotly/validators/sunburst/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickformatstops.py rename to plotly/validators/sunburst/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/sunburst/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/sunburst/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticklabelposition.py b/plotly/validators/sunburst/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticklabelposition.py rename to plotly/validators/sunburst/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticklabelstep.py b/plotly/validators/sunburst/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticklabelstep.py rename to plotly/validators/sunburst/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticklen.py b/plotly/validators/sunburst/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticklen.py rename to plotly/validators/sunburst/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickmode.py b/plotly/validators/sunburst/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickmode.py rename to plotly/validators/sunburst/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickprefix.py b/plotly/validators/sunburst/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickprefix.py rename to plotly/validators/sunburst/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticks.py b/plotly/validators/sunburst/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticks.py rename to plotly/validators/sunburst/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticksuffix.py b/plotly/validators/sunburst/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticksuffix.py rename to plotly/validators/sunburst/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticktext.py b/plotly/validators/sunburst/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticktext.py rename to plotly/validators/sunburst/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticktextsrc.py b/plotly/validators/sunburst/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ticktextsrc.py rename to plotly/validators/sunburst/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickvals.py b/plotly/validators/sunburst/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickvals.py rename to plotly/validators/sunburst/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickvalssrc.py b/plotly/validators/sunburst/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickvalssrc.py rename to plotly/validators/sunburst/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickwidth.py b/plotly/validators/sunburst/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_tickwidth.py rename to plotly/validators/sunburst/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_title.py b/plotly/validators/sunburst/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_title.py rename to plotly/validators/sunburst/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_x.py b/plotly/validators/sunburst/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_x.py rename to plotly/validators/sunburst/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_xanchor.py b/plotly/validators/sunburst/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_xanchor.py rename to plotly/validators/sunburst/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_xpad.py b/plotly/validators/sunburst/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_xpad.py rename to plotly/validators/sunburst/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_xref.py b/plotly/validators/sunburst/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_xref.py rename to plotly/validators/sunburst/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_y.py b/plotly/validators/sunburst/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_y.py rename to plotly/validators/sunburst/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_yanchor.py b/plotly/validators/sunburst/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_yanchor.py rename to plotly/validators/sunburst/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ypad.py b/plotly/validators/sunburst/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_ypad.py rename to plotly/validators/sunburst/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_yref.py b/plotly/validators/sunburst/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/_yref.py rename to plotly/validators/sunburst/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/__init__.py b/plotly/validators/sunburst/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/__init__.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_color.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_color.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_family.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_family.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_shadow.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_size.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_size.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_style.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_style.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_textcase.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_variant.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_variant.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_weight.py b/plotly/validators/sunburst/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickfont/_weight.py rename to plotly/validators/sunburst/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/sunburst/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/sunburst/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/sunburst/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/sunburst/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/sunburst/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/sunburst/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_name.py b/plotly/validators/sunburst/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/sunburst/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/sunburst/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/sunburst/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_value.py b/plotly/validators/sunburst/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/sunburst/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/__init__.py b/plotly/validators/sunburst/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/__init__.py rename to plotly/validators/sunburst/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/_font.py b/plotly/validators/sunburst/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/_font.py rename to plotly/validators/sunburst/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/_side.py b/plotly/validators/sunburst/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/_side.py rename to plotly/validators/sunburst/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/_text.py b/plotly/validators/sunburst/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/_text.py rename to plotly/validators/sunburst/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/__init__.py b/plotly/validators/sunburst/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/__init__.py rename to plotly/validators/sunburst/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_color.py b/plotly/validators/sunburst/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_color.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_family.py b/plotly/validators/sunburst/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_family.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_lineposition.py b/plotly/validators/sunburst/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_shadow.py b/plotly/validators/sunburst/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_shadow.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_size.py b/plotly/validators/sunburst/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_size.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_style.py b/plotly/validators/sunburst/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_style.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_textcase.py b/plotly/validators/sunburst/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_textcase.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_variant.py b/plotly/validators/sunburst/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_variant.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_weight.py b/plotly/validators/sunburst/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/colorbar/title/font/_weight.py rename to plotly/validators/sunburst/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/line/__init__.py b/plotly/validators/sunburst/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/line/__init__.py rename to plotly/validators/sunburst/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/line/_color.py b/plotly/validators/sunburst/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/line/_color.py rename to plotly/validators/sunburst/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/line/_colorsrc.py b/plotly/validators/sunburst/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/line/_colorsrc.py rename to plotly/validators/sunburst/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/line/_width.py b/plotly/validators/sunburst/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/line/_width.py rename to plotly/validators/sunburst/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/line/_widthsrc.py b/plotly/validators/sunburst/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/line/_widthsrc.py rename to plotly/validators/sunburst/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/__init__.py b/plotly/validators/sunburst/marker/pattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/__init__.py rename to plotly/validators/sunburst/marker/pattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_bgcolor.py b/plotly/validators/sunburst/marker/pattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_bgcolor.py rename to plotly/validators/sunburst/marker/pattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_bgcolorsrc.py b/plotly/validators/sunburst/marker/pattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_bgcolorsrc.py rename to plotly/validators/sunburst/marker/pattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_fgcolor.py b/plotly/validators/sunburst/marker/pattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_fgcolor.py rename to plotly/validators/sunburst/marker/pattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_fgcolorsrc.py b/plotly/validators/sunburst/marker/pattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_fgcolorsrc.py rename to plotly/validators/sunburst/marker/pattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_fgopacity.py b/plotly/validators/sunburst/marker/pattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_fgopacity.py rename to plotly/validators/sunburst/marker/pattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_fillmode.py b/plotly/validators/sunburst/marker/pattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_fillmode.py rename to plotly/validators/sunburst/marker/pattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_shape.py b/plotly/validators/sunburst/marker/pattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_shape.py rename to plotly/validators/sunburst/marker/pattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_shapesrc.py b/plotly/validators/sunburst/marker/pattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_shapesrc.py rename to plotly/validators/sunburst/marker/pattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_size.py b/plotly/validators/sunburst/marker/pattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_size.py rename to plotly/validators/sunburst/marker/pattern/_size.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_sizesrc.py b/plotly/validators/sunburst/marker/pattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_sizesrc.py rename to plotly/validators/sunburst/marker/pattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_solidity.py b/plotly/validators/sunburst/marker/pattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_solidity.py rename to plotly/validators/sunburst/marker/pattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/sunburst/marker/pattern/_soliditysrc.py b/plotly/validators/sunburst/marker/pattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/marker/pattern/_soliditysrc.py rename to plotly/validators/sunburst/marker/pattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/__init__.py b/plotly/validators/sunburst/outsidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/__init__.py rename to plotly/validators/sunburst/outsidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_color.py b/plotly/validators/sunburst/outsidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_color.py rename to plotly/validators/sunburst/outsidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_colorsrc.py b/plotly/validators/sunburst/outsidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_colorsrc.py rename to plotly/validators/sunburst/outsidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_family.py b/plotly/validators/sunburst/outsidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_family.py rename to plotly/validators/sunburst/outsidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_familysrc.py b/plotly/validators/sunburst/outsidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_familysrc.py rename to plotly/validators/sunburst/outsidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_lineposition.py b/plotly/validators/sunburst/outsidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_lineposition.py rename to plotly/validators/sunburst/outsidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_linepositionsrc.py b/plotly/validators/sunburst/outsidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_linepositionsrc.py rename to plotly/validators/sunburst/outsidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_shadow.py b/plotly/validators/sunburst/outsidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_shadow.py rename to plotly/validators/sunburst/outsidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_shadowsrc.py b/plotly/validators/sunburst/outsidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_shadowsrc.py rename to plotly/validators/sunburst/outsidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_size.py b/plotly/validators/sunburst/outsidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_size.py rename to plotly/validators/sunburst/outsidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_sizesrc.py b/plotly/validators/sunburst/outsidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_sizesrc.py rename to plotly/validators/sunburst/outsidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_style.py b/plotly/validators/sunburst/outsidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_style.py rename to plotly/validators/sunburst/outsidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_stylesrc.py b/plotly/validators/sunburst/outsidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_stylesrc.py rename to plotly/validators/sunburst/outsidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_textcase.py b/plotly/validators/sunburst/outsidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_textcase.py rename to plotly/validators/sunburst/outsidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_textcasesrc.py b/plotly/validators/sunburst/outsidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_textcasesrc.py rename to plotly/validators/sunburst/outsidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_variant.py b/plotly/validators/sunburst/outsidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_variant.py rename to plotly/validators/sunburst/outsidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_variantsrc.py b/plotly/validators/sunburst/outsidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_variantsrc.py rename to plotly/validators/sunburst/outsidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_weight.py b/plotly/validators/sunburst/outsidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_weight.py rename to plotly/validators/sunburst/outsidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_weightsrc.py b/plotly/validators/sunburst/outsidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/outsidetextfont/_weightsrc.py rename to plotly/validators/sunburst/outsidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/root/__init__.py b/plotly/validators/sunburst/root/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/root/__init__.py rename to plotly/validators/sunburst/root/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/root/_color.py b/plotly/validators/sunburst/root/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/root/_color.py rename to plotly/validators/sunburst/root/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/stream/__init__.py b/plotly/validators/sunburst/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/stream/__init__.py rename to plotly/validators/sunburst/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/stream/_maxpoints.py b/plotly/validators/sunburst/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/stream/_maxpoints.py rename to plotly/validators/sunburst/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/sunburst/stream/_token.py b/plotly/validators/sunburst/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/stream/_token.py rename to plotly/validators/sunburst/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/__init__.py b/plotly/validators/sunburst/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/__init__.py rename to plotly/validators/sunburst/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_color.py b/plotly/validators/sunburst/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_color.py rename to plotly/validators/sunburst/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_colorsrc.py b/plotly/validators/sunburst/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_colorsrc.py rename to plotly/validators/sunburst/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_family.py b/plotly/validators/sunburst/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_family.py rename to plotly/validators/sunburst/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_familysrc.py b/plotly/validators/sunburst/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_familysrc.py rename to plotly/validators/sunburst/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_lineposition.py b/plotly/validators/sunburst/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_lineposition.py rename to plotly/validators/sunburst/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_linepositionsrc.py b/plotly/validators/sunburst/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_linepositionsrc.py rename to plotly/validators/sunburst/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_shadow.py b/plotly/validators/sunburst/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_shadow.py rename to plotly/validators/sunburst/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_shadowsrc.py b/plotly/validators/sunburst/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_shadowsrc.py rename to plotly/validators/sunburst/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_size.py b/plotly/validators/sunburst/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_size.py rename to plotly/validators/sunburst/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_sizesrc.py b/plotly/validators/sunburst/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_sizesrc.py rename to plotly/validators/sunburst/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_style.py b/plotly/validators/sunburst/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_style.py rename to plotly/validators/sunburst/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_stylesrc.py b/plotly/validators/sunburst/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_stylesrc.py rename to plotly/validators/sunburst/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_textcase.py b/plotly/validators/sunburst/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_textcase.py rename to plotly/validators/sunburst/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_textcasesrc.py b/plotly/validators/sunburst/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_textcasesrc.py rename to plotly/validators/sunburst/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_variant.py b/plotly/validators/sunburst/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_variant.py rename to plotly/validators/sunburst/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_variantsrc.py b/plotly/validators/sunburst/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_variantsrc.py rename to plotly/validators/sunburst/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_weight.py b/plotly/validators/sunburst/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_weight.py rename to plotly/validators/sunburst/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/sunburst/textfont/_weightsrc.py b/plotly/validators/sunburst/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/sunburst/textfont/_weightsrc.py rename to plotly/validators/sunburst/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/__init__.py b/plotly/validators/surface/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/__init__.py rename to plotly/validators/surface/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/_autocolorscale.py b/plotly/validators/surface/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_autocolorscale.py rename to plotly/validators/surface/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/surface/_cauto.py b/plotly/validators/surface/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_cauto.py rename to plotly/validators/surface/_cauto.py diff --git a/packages/python/plotly/plotly/validators/surface/_cmax.py b/plotly/validators/surface/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_cmax.py rename to plotly/validators/surface/_cmax.py diff --git a/packages/python/plotly/plotly/validators/surface/_cmid.py b/plotly/validators/surface/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_cmid.py rename to plotly/validators/surface/_cmid.py diff --git a/packages/python/plotly/plotly/validators/surface/_cmin.py b/plotly/validators/surface/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_cmin.py rename to plotly/validators/surface/_cmin.py diff --git a/packages/python/plotly/plotly/validators/surface/_coloraxis.py b/plotly/validators/surface/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_coloraxis.py rename to plotly/validators/surface/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/surface/_colorbar.py b/plotly/validators/surface/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_colorbar.py rename to plotly/validators/surface/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/surface/_colorscale.py b/plotly/validators/surface/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_colorscale.py rename to plotly/validators/surface/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/surface/_connectgaps.py b/plotly/validators/surface/_connectgaps.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_connectgaps.py rename to plotly/validators/surface/_connectgaps.py diff --git a/packages/python/plotly/plotly/validators/surface/_contours.py b/plotly/validators/surface/_contours.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_contours.py rename to plotly/validators/surface/_contours.py diff --git a/packages/python/plotly/plotly/validators/surface/_customdata.py b/plotly/validators/surface/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_customdata.py rename to plotly/validators/surface/_customdata.py diff --git a/packages/python/plotly/plotly/validators/surface/_customdatasrc.py b/plotly/validators/surface/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_customdatasrc.py rename to plotly/validators/surface/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_hidesurface.py b/plotly/validators/surface/_hidesurface.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_hidesurface.py rename to plotly/validators/surface/_hidesurface.py diff --git a/packages/python/plotly/plotly/validators/surface/_hoverinfo.py b/plotly/validators/surface/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_hoverinfo.py rename to plotly/validators/surface/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/surface/_hoverinfosrc.py b/plotly/validators/surface/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_hoverinfosrc.py rename to plotly/validators/surface/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_hoverlabel.py b/plotly/validators/surface/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_hoverlabel.py rename to plotly/validators/surface/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/surface/_hovertemplate.py b/plotly/validators/surface/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_hovertemplate.py rename to plotly/validators/surface/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/surface/_hovertemplatesrc.py b/plotly/validators/surface/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_hovertemplatesrc.py rename to plotly/validators/surface/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_hovertext.py b/plotly/validators/surface/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_hovertext.py rename to plotly/validators/surface/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/surface/_hovertextsrc.py b/plotly/validators/surface/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_hovertextsrc.py rename to plotly/validators/surface/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_ids.py b/plotly/validators/surface/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_ids.py rename to plotly/validators/surface/_ids.py diff --git a/packages/python/plotly/plotly/validators/surface/_idssrc.py b/plotly/validators/surface/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_idssrc.py rename to plotly/validators/surface/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_legend.py b/plotly/validators/surface/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_legend.py rename to plotly/validators/surface/_legend.py diff --git a/packages/python/plotly/plotly/validators/surface/_legendgroup.py b/plotly/validators/surface/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_legendgroup.py rename to plotly/validators/surface/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/surface/_legendgrouptitle.py b/plotly/validators/surface/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_legendgrouptitle.py rename to plotly/validators/surface/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/surface/_legendrank.py b/plotly/validators/surface/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_legendrank.py rename to plotly/validators/surface/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/surface/_legendwidth.py b/plotly/validators/surface/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_legendwidth.py rename to plotly/validators/surface/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/surface/_lighting.py b/plotly/validators/surface/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_lighting.py rename to plotly/validators/surface/_lighting.py diff --git a/packages/python/plotly/plotly/validators/surface/_lightposition.py b/plotly/validators/surface/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_lightposition.py rename to plotly/validators/surface/_lightposition.py diff --git a/packages/python/plotly/plotly/validators/surface/_meta.py b/plotly/validators/surface/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_meta.py rename to plotly/validators/surface/_meta.py diff --git a/packages/python/plotly/plotly/validators/surface/_metasrc.py b/plotly/validators/surface/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_metasrc.py rename to plotly/validators/surface/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_name.py b/plotly/validators/surface/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_name.py rename to plotly/validators/surface/_name.py diff --git a/packages/python/plotly/plotly/validators/surface/_opacity.py b/plotly/validators/surface/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_opacity.py rename to plotly/validators/surface/_opacity.py diff --git a/packages/python/plotly/plotly/validators/surface/_opacityscale.py b/plotly/validators/surface/_opacityscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_opacityscale.py rename to plotly/validators/surface/_opacityscale.py diff --git a/packages/python/plotly/plotly/validators/surface/_reversescale.py b/plotly/validators/surface/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_reversescale.py rename to plotly/validators/surface/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/surface/_scene.py b/plotly/validators/surface/_scene.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_scene.py rename to plotly/validators/surface/_scene.py diff --git a/packages/python/plotly/plotly/validators/surface/_showlegend.py b/plotly/validators/surface/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_showlegend.py rename to plotly/validators/surface/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/surface/_showscale.py b/plotly/validators/surface/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_showscale.py rename to plotly/validators/surface/_showscale.py diff --git a/packages/python/plotly/plotly/validators/surface/_stream.py b/plotly/validators/surface/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_stream.py rename to plotly/validators/surface/_stream.py diff --git a/packages/python/plotly/plotly/validators/surface/_surfacecolor.py b/plotly/validators/surface/_surfacecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_surfacecolor.py rename to plotly/validators/surface/_surfacecolor.py diff --git a/packages/python/plotly/plotly/validators/surface/_surfacecolorsrc.py b/plotly/validators/surface/_surfacecolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_surfacecolorsrc.py rename to plotly/validators/surface/_surfacecolorsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_text.py b/plotly/validators/surface/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_text.py rename to plotly/validators/surface/_text.py diff --git a/packages/python/plotly/plotly/validators/surface/_textsrc.py b/plotly/validators/surface/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_textsrc.py rename to plotly/validators/surface/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_uid.py b/plotly/validators/surface/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_uid.py rename to plotly/validators/surface/_uid.py diff --git a/packages/python/plotly/plotly/validators/surface/_uirevision.py b/plotly/validators/surface/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_uirevision.py rename to plotly/validators/surface/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/surface/_visible.py b/plotly/validators/surface/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_visible.py rename to plotly/validators/surface/_visible.py diff --git a/packages/python/plotly/plotly/validators/surface/_x.py b/plotly/validators/surface/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_x.py rename to plotly/validators/surface/_x.py diff --git a/packages/python/plotly/plotly/validators/surface/_xcalendar.py b/plotly/validators/surface/_xcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_xcalendar.py rename to plotly/validators/surface/_xcalendar.py diff --git a/packages/python/plotly/plotly/validators/surface/_xhoverformat.py b/plotly/validators/surface/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_xhoverformat.py rename to plotly/validators/surface/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/surface/_xsrc.py b/plotly/validators/surface/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_xsrc.py rename to plotly/validators/surface/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_y.py b/plotly/validators/surface/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_y.py rename to plotly/validators/surface/_y.py diff --git a/packages/python/plotly/plotly/validators/surface/_ycalendar.py b/plotly/validators/surface/_ycalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_ycalendar.py rename to plotly/validators/surface/_ycalendar.py diff --git a/packages/python/plotly/plotly/validators/surface/_yhoverformat.py b/plotly/validators/surface/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_yhoverformat.py rename to plotly/validators/surface/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/surface/_ysrc.py b/plotly/validators/surface/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_ysrc.py rename to plotly/validators/surface/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/surface/_z.py b/plotly/validators/surface/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_z.py rename to plotly/validators/surface/_z.py diff --git a/packages/python/plotly/plotly/validators/surface/_zcalendar.py b/plotly/validators/surface/_zcalendar.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_zcalendar.py rename to plotly/validators/surface/_zcalendar.py diff --git a/packages/python/plotly/plotly/validators/surface/_zhoverformat.py b/plotly/validators/surface/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_zhoverformat.py rename to plotly/validators/surface/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/surface/_zsrc.py b/plotly/validators/surface/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/_zsrc.py rename to plotly/validators/surface/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/__init__.py b/plotly/validators/surface/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/__init__.py rename to plotly/validators/surface/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_bgcolor.py b/plotly/validators/surface/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_bgcolor.py rename to plotly/validators/surface/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_bordercolor.py b/plotly/validators/surface/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_bordercolor.py rename to plotly/validators/surface/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_borderwidth.py b/plotly/validators/surface/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_borderwidth.py rename to plotly/validators/surface/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_dtick.py b/plotly/validators/surface/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_dtick.py rename to plotly/validators/surface/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_exponentformat.py b/plotly/validators/surface/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_exponentformat.py rename to plotly/validators/surface/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_labelalias.py b/plotly/validators/surface/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_labelalias.py rename to plotly/validators/surface/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_len.py b/plotly/validators/surface/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_len.py rename to plotly/validators/surface/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_lenmode.py b/plotly/validators/surface/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_lenmode.py rename to plotly/validators/surface/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_minexponent.py b/plotly/validators/surface/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_minexponent.py rename to plotly/validators/surface/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_nticks.py b/plotly/validators/surface/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_nticks.py rename to plotly/validators/surface/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_orientation.py b/plotly/validators/surface/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_orientation.py rename to plotly/validators/surface/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_outlinecolor.py b/plotly/validators/surface/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_outlinecolor.py rename to plotly/validators/surface/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_outlinewidth.py b/plotly/validators/surface/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_outlinewidth.py rename to plotly/validators/surface/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_separatethousands.py b/plotly/validators/surface/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_separatethousands.py rename to plotly/validators/surface/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_showexponent.py b/plotly/validators/surface/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_showexponent.py rename to plotly/validators/surface/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_showticklabels.py b/plotly/validators/surface/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_showticklabels.py rename to plotly/validators/surface/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_showtickprefix.py b/plotly/validators/surface/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_showtickprefix.py rename to plotly/validators/surface/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_showticksuffix.py b/plotly/validators/surface/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_showticksuffix.py rename to plotly/validators/surface/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_thickness.py b/plotly/validators/surface/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_thickness.py rename to plotly/validators/surface/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_thicknessmode.py b/plotly/validators/surface/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_thicknessmode.py rename to plotly/validators/surface/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tick0.py b/plotly/validators/surface/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tick0.py rename to plotly/validators/surface/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickangle.py b/plotly/validators/surface/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickangle.py rename to plotly/validators/surface/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickcolor.py b/plotly/validators/surface/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickcolor.py rename to plotly/validators/surface/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickfont.py b/plotly/validators/surface/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickfont.py rename to plotly/validators/surface/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickformat.py b/plotly/validators/surface/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickformat.py rename to plotly/validators/surface/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickformatstopdefaults.py b/plotly/validators/surface/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickformatstopdefaults.py rename to plotly/validators/surface/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickformatstops.py b/plotly/validators/surface/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickformatstops.py rename to plotly/validators/surface/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ticklabeloverflow.py b/plotly/validators/surface/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ticklabeloverflow.py rename to plotly/validators/surface/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ticklabelposition.py b/plotly/validators/surface/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ticklabelposition.py rename to plotly/validators/surface/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ticklabelstep.py b/plotly/validators/surface/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ticklabelstep.py rename to plotly/validators/surface/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ticklen.py b/plotly/validators/surface/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ticklen.py rename to plotly/validators/surface/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickmode.py b/plotly/validators/surface/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickmode.py rename to plotly/validators/surface/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickprefix.py b/plotly/validators/surface/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickprefix.py rename to plotly/validators/surface/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ticks.py b/plotly/validators/surface/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ticks.py rename to plotly/validators/surface/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ticksuffix.py b/plotly/validators/surface/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ticksuffix.py rename to plotly/validators/surface/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ticktext.py b/plotly/validators/surface/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ticktext.py rename to plotly/validators/surface/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ticktextsrc.py b/plotly/validators/surface/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ticktextsrc.py rename to plotly/validators/surface/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickvals.py b/plotly/validators/surface/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickvals.py rename to plotly/validators/surface/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickvalssrc.py b/plotly/validators/surface/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickvalssrc.py rename to plotly/validators/surface/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_tickwidth.py b/plotly/validators/surface/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_tickwidth.py rename to plotly/validators/surface/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_title.py b/plotly/validators/surface/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_title.py rename to plotly/validators/surface/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_x.py b/plotly/validators/surface/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_x.py rename to plotly/validators/surface/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_xanchor.py b/plotly/validators/surface/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_xanchor.py rename to plotly/validators/surface/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_xpad.py b/plotly/validators/surface/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_xpad.py rename to plotly/validators/surface/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_xref.py b/plotly/validators/surface/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_xref.py rename to plotly/validators/surface/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_y.py b/plotly/validators/surface/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_y.py rename to plotly/validators/surface/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_yanchor.py b/plotly/validators/surface/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_yanchor.py rename to plotly/validators/surface/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_ypad.py b/plotly/validators/surface/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_ypad.py rename to plotly/validators/surface/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/_yref.py b/plotly/validators/surface/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/_yref.py rename to plotly/validators/surface/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/__init__.py b/plotly/validators/surface/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/__init__.py rename to plotly/validators/surface/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_color.py b/plotly/validators/surface/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_color.py rename to plotly/validators/surface/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_family.py b/plotly/validators/surface/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_family.py rename to plotly/validators/surface/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_lineposition.py b/plotly/validators/surface/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_lineposition.py rename to plotly/validators/surface/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_shadow.py b/plotly/validators/surface/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_shadow.py rename to plotly/validators/surface/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_size.py b/plotly/validators/surface/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_size.py rename to plotly/validators/surface/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_style.py b/plotly/validators/surface/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_style.py rename to plotly/validators/surface/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_textcase.py b/plotly/validators/surface/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_textcase.py rename to plotly/validators/surface/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_variant.py b/plotly/validators/surface/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_variant.py rename to plotly/validators/surface/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_weight.py b/plotly/validators/surface/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickfont/_weight.py rename to plotly/validators/surface/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/__init__.py b/plotly/validators/surface/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/__init__.py rename to plotly/validators/surface/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/surface/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/surface/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_enabled.py b/plotly/validators/surface/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_enabled.py rename to plotly/validators/surface/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_name.py b/plotly/validators/surface/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_name.py rename to plotly/validators/surface/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/surface/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/surface/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_value.py b/plotly/validators/surface/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/tickformatstop/_value.py rename to plotly/validators/surface/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/__init__.py b/plotly/validators/surface/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/__init__.py rename to plotly/validators/surface/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/_font.py b/plotly/validators/surface/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/_font.py rename to plotly/validators/surface/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/_side.py b/plotly/validators/surface/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/_side.py rename to plotly/validators/surface/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/_text.py b/plotly/validators/surface/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/_text.py rename to plotly/validators/surface/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/__init__.py b/plotly/validators/surface/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/__init__.py rename to plotly/validators/surface/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_color.py b/plotly/validators/surface/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_color.py rename to plotly/validators/surface/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_family.py b/plotly/validators/surface/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_family.py rename to plotly/validators/surface/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_lineposition.py b/plotly/validators/surface/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_lineposition.py rename to plotly/validators/surface/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_shadow.py b/plotly/validators/surface/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_shadow.py rename to plotly/validators/surface/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_size.py b/plotly/validators/surface/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_size.py rename to plotly/validators/surface/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_style.py b/plotly/validators/surface/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_style.py rename to plotly/validators/surface/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_textcase.py b/plotly/validators/surface/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_textcase.py rename to plotly/validators/surface/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_variant.py b/plotly/validators/surface/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_variant.py rename to plotly/validators/surface/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/surface/colorbar/title/font/_weight.py b/plotly/validators/surface/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/colorbar/title/font/_weight.py rename to plotly/validators/surface/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/__init__.py b/plotly/validators/surface/contours/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/__init__.py rename to plotly/validators/surface/contours/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/_x.py b/plotly/validators/surface/contours/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/_x.py rename to plotly/validators/surface/contours/_x.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/_y.py b/plotly/validators/surface/contours/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/_y.py rename to plotly/validators/surface/contours/_y.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/_z.py b/plotly/validators/surface/contours/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/_z.py rename to plotly/validators/surface/contours/_z.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/__init__.py b/plotly/validators/surface/contours/x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/__init__.py rename to plotly/validators/surface/contours/x/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_color.py b/plotly/validators/surface/contours/x/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_color.py rename to plotly/validators/surface/contours/x/_color.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_end.py b/plotly/validators/surface/contours/x/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_end.py rename to plotly/validators/surface/contours/x/_end.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_highlight.py b/plotly/validators/surface/contours/x/_highlight.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_highlight.py rename to plotly/validators/surface/contours/x/_highlight.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_highlightcolor.py b/plotly/validators/surface/contours/x/_highlightcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_highlightcolor.py rename to plotly/validators/surface/contours/x/_highlightcolor.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_highlightwidth.py b/plotly/validators/surface/contours/x/_highlightwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_highlightwidth.py rename to plotly/validators/surface/contours/x/_highlightwidth.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_project.py b/plotly/validators/surface/contours/x/_project.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_project.py rename to plotly/validators/surface/contours/x/_project.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_show.py b/plotly/validators/surface/contours/x/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_show.py rename to plotly/validators/surface/contours/x/_show.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_size.py b/plotly/validators/surface/contours/x/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_size.py rename to plotly/validators/surface/contours/x/_size.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_start.py b/plotly/validators/surface/contours/x/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_start.py rename to plotly/validators/surface/contours/x/_start.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_usecolormap.py b/plotly/validators/surface/contours/x/_usecolormap.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_usecolormap.py rename to plotly/validators/surface/contours/x/_usecolormap.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/_width.py b/plotly/validators/surface/contours/x/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/_width.py rename to plotly/validators/surface/contours/x/_width.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/project/__init__.py b/plotly/validators/surface/contours/x/project/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/project/__init__.py rename to plotly/validators/surface/contours/x/project/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/project/_x.py b/plotly/validators/surface/contours/x/project/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/project/_x.py rename to plotly/validators/surface/contours/x/project/_x.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/project/_y.py b/plotly/validators/surface/contours/x/project/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/project/_y.py rename to plotly/validators/surface/contours/x/project/_y.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/x/project/_z.py b/plotly/validators/surface/contours/x/project/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/x/project/_z.py rename to plotly/validators/surface/contours/x/project/_z.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/__init__.py b/plotly/validators/surface/contours/y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/__init__.py rename to plotly/validators/surface/contours/y/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_color.py b/plotly/validators/surface/contours/y/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_color.py rename to plotly/validators/surface/contours/y/_color.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_end.py b/plotly/validators/surface/contours/y/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_end.py rename to plotly/validators/surface/contours/y/_end.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_highlight.py b/plotly/validators/surface/contours/y/_highlight.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_highlight.py rename to plotly/validators/surface/contours/y/_highlight.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_highlightcolor.py b/plotly/validators/surface/contours/y/_highlightcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_highlightcolor.py rename to plotly/validators/surface/contours/y/_highlightcolor.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_highlightwidth.py b/plotly/validators/surface/contours/y/_highlightwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_highlightwidth.py rename to plotly/validators/surface/contours/y/_highlightwidth.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_project.py b/plotly/validators/surface/contours/y/_project.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_project.py rename to plotly/validators/surface/contours/y/_project.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_show.py b/plotly/validators/surface/contours/y/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_show.py rename to plotly/validators/surface/contours/y/_show.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_size.py b/plotly/validators/surface/contours/y/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_size.py rename to plotly/validators/surface/contours/y/_size.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_start.py b/plotly/validators/surface/contours/y/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_start.py rename to plotly/validators/surface/contours/y/_start.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_usecolormap.py b/plotly/validators/surface/contours/y/_usecolormap.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_usecolormap.py rename to plotly/validators/surface/contours/y/_usecolormap.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/_width.py b/plotly/validators/surface/contours/y/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/_width.py rename to plotly/validators/surface/contours/y/_width.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/project/__init__.py b/plotly/validators/surface/contours/y/project/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/project/__init__.py rename to plotly/validators/surface/contours/y/project/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/project/_x.py b/plotly/validators/surface/contours/y/project/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/project/_x.py rename to plotly/validators/surface/contours/y/project/_x.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/project/_y.py b/plotly/validators/surface/contours/y/project/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/project/_y.py rename to plotly/validators/surface/contours/y/project/_y.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/y/project/_z.py b/plotly/validators/surface/contours/y/project/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/y/project/_z.py rename to plotly/validators/surface/contours/y/project/_z.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/__init__.py b/plotly/validators/surface/contours/z/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/__init__.py rename to plotly/validators/surface/contours/z/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_color.py b/plotly/validators/surface/contours/z/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_color.py rename to plotly/validators/surface/contours/z/_color.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_end.py b/plotly/validators/surface/contours/z/_end.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_end.py rename to plotly/validators/surface/contours/z/_end.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_highlight.py b/plotly/validators/surface/contours/z/_highlight.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_highlight.py rename to plotly/validators/surface/contours/z/_highlight.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_highlightcolor.py b/plotly/validators/surface/contours/z/_highlightcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_highlightcolor.py rename to plotly/validators/surface/contours/z/_highlightcolor.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_highlightwidth.py b/plotly/validators/surface/contours/z/_highlightwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_highlightwidth.py rename to plotly/validators/surface/contours/z/_highlightwidth.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_project.py b/plotly/validators/surface/contours/z/_project.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_project.py rename to plotly/validators/surface/contours/z/_project.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_show.py b/plotly/validators/surface/contours/z/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_show.py rename to plotly/validators/surface/contours/z/_show.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_size.py b/plotly/validators/surface/contours/z/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_size.py rename to plotly/validators/surface/contours/z/_size.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_start.py b/plotly/validators/surface/contours/z/_start.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_start.py rename to plotly/validators/surface/contours/z/_start.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_usecolormap.py b/plotly/validators/surface/contours/z/_usecolormap.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_usecolormap.py rename to plotly/validators/surface/contours/z/_usecolormap.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/_width.py b/plotly/validators/surface/contours/z/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/_width.py rename to plotly/validators/surface/contours/z/_width.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/project/__init__.py b/plotly/validators/surface/contours/z/project/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/project/__init__.py rename to plotly/validators/surface/contours/z/project/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/project/_x.py b/plotly/validators/surface/contours/z/project/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/project/_x.py rename to plotly/validators/surface/contours/z/project/_x.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/project/_y.py b/plotly/validators/surface/contours/z/project/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/project/_y.py rename to plotly/validators/surface/contours/z/project/_y.py diff --git a/packages/python/plotly/plotly/validators/surface/contours/z/project/_z.py b/plotly/validators/surface/contours/z/project/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/contours/z/project/_z.py rename to plotly/validators/surface/contours/z/project/_z.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/__init__.py b/plotly/validators/surface/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/__init__.py rename to plotly/validators/surface/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_align.py b/plotly/validators/surface/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_align.py rename to plotly/validators/surface/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_alignsrc.py b/plotly/validators/surface/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_alignsrc.py rename to plotly/validators/surface/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_bgcolor.py b/plotly/validators/surface/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_bgcolor.py rename to plotly/validators/surface/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_bgcolorsrc.py b/plotly/validators/surface/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_bgcolorsrc.py rename to plotly/validators/surface/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_bordercolor.py b/plotly/validators/surface/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_bordercolor.py rename to plotly/validators/surface/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_bordercolorsrc.py b/plotly/validators/surface/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_bordercolorsrc.py rename to plotly/validators/surface/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_font.py b/plotly/validators/surface/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_font.py rename to plotly/validators/surface/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_namelength.py b/plotly/validators/surface/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_namelength.py rename to plotly/validators/surface/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/_namelengthsrc.py b/plotly/validators/surface/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/_namelengthsrc.py rename to plotly/validators/surface/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/__init__.py b/plotly/validators/surface/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/__init__.py rename to plotly/validators/surface/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_color.py b/plotly/validators/surface/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_color.py rename to plotly/validators/surface/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_colorsrc.py b/plotly/validators/surface/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_colorsrc.py rename to plotly/validators/surface/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_family.py b/plotly/validators/surface/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_family.py rename to plotly/validators/surface/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_familysrc.py b/plotly/validators/surface/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_familysrc.py rename to plotly/validators/surface/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_lineposition.py b/plotly/validators/surface/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_lineposition.py rename to plotly/validators/surface/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_linepositionsrc.py b/plotly/validators/surface/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/surface/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_shadow.py b/plotly/validators/surface/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_shadow.py rename to plotly/validators/surface/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_shadowsrc.py b/plotly/validators/surface/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_shadowsrc.py rename to plotly/validators/surface/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_size.py b/plotly/validators/surface/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_size.py rename to plotly/validators/surface/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_sizesrc.py b/plotly/validators/surface/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_sizesrc.py rename to plotly/validators/surface/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_style.py b/plotly/validators/surface/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_style.py rename to plotly/validators/surface/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_stylesrc.py b/plotly/validators/surface/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_stylesrc.py rename to plotly/validators/surface/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_textcase.py b/plotly/validators/surface/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_textcase.py rename to plotly/validators/surface/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_textcasesrc.py b/plotly/validators/surface/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_textcasesrc.py rename to plotly/validators/surface/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_variant.py b/plotly/validators/surface/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_variant.py rename to plotly/validators/surface/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_variantsrc.py b/plotly/validators/surface/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_variantsrc.py rename to plotly/validators/surface/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_weight.py b/plotly/validators/surface/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_weight.py rename to plotly/validators/surface/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/surface/hoverlabel/font/_weightsrc.py b/plotly/validators/surface/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/hoverlabel/font/_weightsrc.py rename to plotly/validators/surface/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/__init__.py b/plotly/validators/surface/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/__init__.py rename to plotly/validators/surface/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/_font.py b/plotly/validators/surface/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/_font.py rename to plotly/validators/surface/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/_text.py b/plotly/validators/surface/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/_text.py rename to plotly/validators/surface/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/__init__.py b/plotly/validators/surface/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/__init__.py rename to plotly/validators/surface/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_color.py b/plotly/validators/surface/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_color.py rename to plotly/validators/surface/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_family.py b/plotly/validators/surface/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_family.py rename to plotly/validators/surface/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_lineposition.py b/plotly/validators/surface/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_lineposition.py rename to plotly/validators/surface/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_shadow.py b/plotly/validators/surface/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_shadow.py rename to plotly/validators/surface/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_size.py b/plotly/validators/surface/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_size.py rename to plotly/validators/surface/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_style.py b/plotly/validators/surface/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_style.py rename to plotly/validators/surface/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_textcase.py b/plotly/validators/surface/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_textcase.py rename to plotly/validators/surface/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_variant.py b/plotly/validators/surface/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_variant.py rename to plotly/validators/surface/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_weight.py b/plotly/validators/surface/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/legendgrouptitle/font/_weight.py rename to plotly/validators/surface/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/surface/lighting/__init__.py b/plotly/validators/surface/lighting/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lighting/__init__.py rename to plotly/validators/surface/lighting/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/lighting/_ambient.py b/plotly/validators/surface/lighting/_ambient.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lighting/_ambient.py rename to plotly/validators/surface/lighting/_ambient.py diff --git a/packages/python/plotly/plotly/validators/surface/lighting/_diffuse.py b/plotly/validators/surface/lighting/_diffuse.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lighting/_diffuse.py rename to plotly/validators/surface/lighting/_diffuse.py diff --git a/packages/python/plotly/plotly/validators/surface/lighting/_fresnel.py b/plotly/validators/surface/lighting/_fresnel.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lighting/_fresnel.py rename to plotly/validators/surface/lighting/_fresnel.py diff --git a/packages/python/plotly/plotly/validators/surface/lighting/_roughness.py b/plotly/validators/surface/lighting/_roughness.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lighting/_roughness.py rename to plotly/validators/surface/lighting/_roughness.py diff --git a/packages/python/plotly/plotly/validators/surface/lighting/_specular.py b/plotly/validators/surface/lighting/_specular.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lighting/_specular.py rename to plotly/validators/surface/lighting/_specular.py diff --git a/packages/python/plotly/plotly/validators/surface/lightposition/__init__.py b/plotly/validators/surface/lightposition/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lightposition/__init__.py rename to plotly/validators/surface/lightposition/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/lightposition/_x.py b/plotly/validators/surface/lightposition/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lightposition/_x.py rename to plotly/validators/surface/lightposition/_x.py diff --git a/packages/python/plotly/plotly/validators/surface/lightposition/_y.py b/plotly/validators/surface/lightposition/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lightposition/_y.py rename to plotly/validators/surface/lightposition/_y.py diff --git a/packages/python/plotly/plotly/validators/surface/lightposition/_z.py b/plotly/validators/surface/lightposition/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/lightposition/_z.py rename to plotly/validators/surface/lightposition/_z.py diff --git a/packages/python/plotly/plotly/validators/surface/stream/__init__.py b/plotly/validators/surface/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/stream/__init__.py rename to plotly/validators/surface/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/surface/stream/_maxpoints.py b/plotly/validators/surface/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/stream/_maxpoints.py rename to plotly/validators/surface/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/surface/stream/_token.py b/plotly/validators/surface/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/surface/stream/_token.py rename to plotly/validators/surface/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/table/__init__.py b/plotly/validators/table/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/__init__.py rename to plotly/validators/table/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/_cells.py b/plotly/validators/table/_cells.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_cells.py rename to plotly/validators/table/_cells.py diff --git a/packages/python/plotly/plotly/validators/table/_columnorder.py b/plotly/validators/table/_columnorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_columnorder.py rename to plotly/validators/table/_columnorder.py diff --git a/packages/python/plotly/plotly/validators/table/_columnordersrc.py b/plotly/validators/table/_columnordersrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_columnordersrc.py rename to plotly/validators/table/_columnordersrc.py diff --git a/packages/python/plotly/plotly/validators/table/_columnwidth.py b/plotly/validators/table/_columnwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_columnwidth.py rename to plotly/validators/table/_columnwidth.py diff --git a/packages/python/plotly/plotly/validators/table/_columnwidthsrc.py b/plotly/validators/table/_columnwidthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_columnwidthsrc.py rename to plotly/validators/table/_columnwidthsrc.py diff --git a/packages/python/plotly/plotly/validators/table/_customdata.py b/plotly/validators/table/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_customdata.py rename to plotly/validators/table/_customdata.py diff --git a/packages/python/plotly/plotly/validators/table/_customdatasrc.py b/plotly/validators/table/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_customdatasrc.py rename to plotly/validators/table/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/table/_domain.py b/plotly/validators/table/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_domain.py rename to plotly/validators/table/_domain.py diff --git a/packages/python/plotly/plotly/validators/table/_header.py b/plotly/validators/table/_header.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_header.py rename to plotly/validators/table/_header.py diff --git a/packages/python/plotly/plotly/validators/table/_hoverinfo.py b/plotly/validators/table/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_hoverinfo.py rename to plotly/validators/table/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/table/_hoverinfosrc.py b/plotly/validators/table/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_hoverinfosrc.py rename to plotly/validators/table/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/table/_hoverlabel.py b/plotly/validators/table/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_hoverlabel.py rename to plotly/validators/table/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/table/_ids.py b/plotly/validators/table/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_ids.py rename to plotly/validators/table/_ids.py diff --git a/packages/python/plotly/plotly/validators/table/_idssrc.py b/plotly/validators/table/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_idssrc.py rename to plotly/validators/table/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/table/_legend.py b/plotly/validators/table/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_legend.py rename to plotly/validators/table/_legend.py diff --git a/packages/python/plotly/plotly/validators/table/_legendgrouptitle.py b/plotly/validators/table/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_legendgrouptitle.py rename to plotly/validators/table/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/table/_legendrank.py b/plotly/validators/table/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_legendrank.py rename to plotly/validators/table/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/table/_legendwidth.py b/plotly/validators/table/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_legendwidth.py rename to plotly/validators/table/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/table/_meta.py b/plotly/validators/table/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_meta.py rename to plotly/validators/table/_meta.py diff --git a/packages/python/plotly/plotly/validators/table/_metasrc.py b/plotly/validators/table/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_metasrc.py rename to plotly/validators/table/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/table/_name.py b/plotly/validators/table/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_name.py rename to plotly/validators/table/_name.py diff --git a/packages/python/plotly/plotly/validators/table/_stream.py b/plotly/validators/table/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_stream.py rename to plotly/validators/table/_stream.py diff --git a/packages/python/plotly/plotly/validators/table/_uid.py b/plotly/validators/table/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_uid.py rename to plotly/validators/table/_uid.py diff --git a/packages/python/plotly/plotly/validators/table/_uirevision.py b/plotly/validators/table/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_uirevision.py rename to plotly/validators/table/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/table/_visible.py b/plotly/validators/table/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/_visible.py rename to plotly/validators/table/_visible.py diff --git a/packages/python/plotly/plotly/validators/table/cells/__init__.py b/plotly/validators/table/cells/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/__init__.py rename to plotly/validators/table/cells/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_align.py b/plotly/validators/table/cells/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_align.py rename to plotly/validators/table/cells/_align.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_alignsrc.py b/plotly/validators/table/cells/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_alignsrc.py rename to plotly/validators/table/cells/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_fill.py b/plotly/validators/table/cells/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_fill.py rename to plotly/validators/table/cells/_fill.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_font.py b/plotly/validators/table/cells/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_font.py rename to plotly/validators/table/cells/_font.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_format.py b/plotly/validators/table/cells/_format.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_format.py rename to plotly/validators/table/cells/_format.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_formatsrc.py b/plotly/validators/table/cells/_formatsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_formatsrc.py rename to plotly/validators/table/cells/_formatsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_height.py b/plotly/validators/table/cells/_height.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_height.py rename to plotly/validators/table/cells/_height.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_line.py b/plotly/validators/table/cells/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_line.py rename to plotly/validators/table/cells/_line.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_prefix.py b/plotly/validators/table/cells/_prefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_prefix.py rename to plotly/validators/table/cells/_prefix.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_prefixsrc.py b/plotly/validators/table/cells/_prefixsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_prefixsrc.py rename to plotly/validators/table/cells/_prefixsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_suffix.py b/plotly/validators/table/cells/_suffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_suffix.py rename to plotly/validators/table/cells/_suffix.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_suffixsrc.py b/plotly/validators/table/cells/_suffixsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_suffixsrc.py rename to plotly/validators/table/cells/_suffixsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_values.py b/plotly/validators/table/cells/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_values.py rename to plotly/validators/table/cells/_values.py diff --git a/packages/python/plotly/plotly/validators/table/cells/_valuessrc.py b/plotly/validators/table/cells/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/_valuessrc.py rename to plotly/validators/table/cells/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/fill/__init__.py b/plotly/validators/table/cells/fill/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/fill/__init__.py rename to plotly/validators/table/cells/fill/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/cells/fill/_color.py b/plotly/validators/table/cells/fill/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/fill/_color.py rename to plotly/validators/table/cells/fill/_color.py diff --git a/packages/python/plotly/plotly/validators/table/cells/fill/_colorsrc.py b/plotly/validators/table/cells/fill/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/fill/_colorsrc.py rename to plotly/validators/table/cells/fill/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/__init__.py b/plotly/validators/table/cells/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/__init__.py rename to plotly/validators/table/cells/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_color.py b/plotly/validators/table/cells/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_color.py rename to plotly/validators/table/cells/font/_color.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_colorsrc.py b/plotly/validators/table/cells/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_colorsrc.py rename to plotly/validators/table/cells/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_family.py b/plotly/validators/table/cells/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_family.py rename to plotly/validators/table/cells/font/_family.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_familysrc.py b/plotly/validators/table/cells/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_familysrc.py rename to plotly/validators/table/cells/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_lineposition.py b/plotly/validators/table/cells/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_lineposition.py rename to plotly/validators/table/cells/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_linepositionsrc.py b/plotly/validators/table/cells/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_linepositionsrc.py rename to plotly/validators/table/cells/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_shadow.py b/plotly/validators/table/cells/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_shadow.py rename to plotly/validators/table/cells/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_shadowsrc.py b/plotly/validators/table/cells/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_shadowsrc.py rename to plotly/validators/table/cells/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_size.py b/plotly/validators/table/cells/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_size.py rename to plotly/validators/table/cells/font/_size.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_sizesrc.py b/plotly/validators/table/cells/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_sizesrc.py rename to plotly/validators/table/cells/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_style.py b/plotly/validators/table/cells/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_style.py rename to plotly/validators/table/cells/font/_style.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_stylesrc.py b/plotly/validators/table/cells/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_stylesrc.py rename to plotly/validators/table/cells/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_textcase.py b/plotly/validators/table/cells/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_textcase.py rename to plotly/validators/table/cells/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_textcasesrc.py b/plotly/validators/table/cells/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_textcasesrc.py rename to plotly/validators/table/cells/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_variant.py b/plotly/validators/table/cells/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_variant.py rename to plotly/validators/table/cells/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_variantsrc.py b/plotly/validators/table/cells/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_variantsrc.py rename to plotly/validators/table/cells/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_weight.py b/plotly/validators/table/cells/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_weight.py rename to plotly/validators/table/cells/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/table/cells/font/_weightsrc.py b/plotly/validators/table/cells/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/font/_weightsrc.py rename to plotly/validators/table/cells/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/line/__init__.py b/plotly/validators/table/cells/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/line/__init__.py rename to plotly/validators/table/cells/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/cells/line/_color.py b/plotly/validators/table/cells/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/line/_color.py rename to plotly/validators/table/cells/line/_color.py diff --git a/packages/python/plotly/plotly/validators/table/cells/line/_colorsrc.py b/plotly/validators/table/cells/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/line/_colorsrc.py rename to plotly/validators/table/cells/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/cells/line/_width.py b/plotly/validators/table/cells/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/line/_width.py rename to plotly/validators/table/cells/line/_width.py diff --git a/packages/python/plotly/plotly/validators/table/cells/line/_widthsrc.py b/plotly/validators/table/cells/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/cells/line/_widthsrc.py rename to plotly/validators/table/cells/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/table/domain/__init__.py b/plotly/validators/table/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/domain/__init__.py rename to plotly/validators/table/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/domain/_column.py b/plotly/validators/table/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/domain/_column.py rename to plotly/validators/table/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/table/domain/_row.py b/plotly/validators/table/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/domain/_row.py rename to plotly/validators/table/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/table/domain/_x.py b/plotly/validators/table/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/domain/_x.py rename to plotly/validators/table/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/table/domain/_y.py b/plotly/validators/table/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/domain/_y.py rename to plotly/validators/table/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/table/header/__init__.py b/plotly/validators/table/header/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/__init__.py rename to plotly/validators/table/header/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/header/_align.py b/plotly/validators/table/header/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_align.py rename to plotly/validators/table/header/_align.py diff --git a/packages/python/plotly/plotly/validators/table/header/_alignsrc.py b/plotly/validators/table/header/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_alignsrc.py rename to plotly/validators/table/header/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/_fill.py b/plotly/validators/table/header/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_fill.py rename to plotly/validators/table/header/_fill.py diff --git a/packages/python/plotly/plotly/validators/table/header/_font.py b/plotly/validators/table/header/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_font.py rename to plotly/validators/table/header/_font.py diff --git a/packages/python/plotly/plotly/validators/table/header/_format.py b/plotly/validators/table/header/_format.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_format.py rename to plotly/validators/table/header/_format.py diff --git a/packages/python/plotly/plotly/validators/table/header/_formatsrc.py b/plotly/validators/table/header/_formatsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_formatsrc.py rename to plotly/validators/table/header/_formatsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/_height.py b/plotly/validators/table/header/_height.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_height.py rename to plotly/validators/table/header/_height.py diff --git a/packages/python/plotly/plotly/validators/table/header/_line.py b/plotly/validators/table/header/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_line.py rename to plotly/validators/table/header/_line.py diff --git a/packages/python/plotly/plotly/validators/table/header/_prefix.py b/plotly/validators/table/header/_prefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_prefix.py rename to plotly/validators/table/header/_prefix.py diff --git a/packages/python/plotly/plotly/validators/table/header/_prefixsrc.py b/plotly/validators/table/header/_prefixsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_prefixsrc.py rename to plotly/validators/table/header/_prefixsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/_suffix.py b/plotly/validators/table/header/_suffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_suffix.py rename to plotly/validators/table/header/_suffix.py diff --git a/packages/python/plotly/plotly/validators/table/header/_suffixsrc.py b/plotly/validators/table/header/_suffixsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_suffixsrc.py rename to plotly/validators/table/header/_suffixsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/_values.py b/plotly/validators/table/header/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_values.py rename to plotly/validators/table/header/_values.py diff --git a/packages/python/plotly/plotly/validators/table/header/_valuessrc.py b/plotly/validators/table/header/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/_valuessrc.py rename to plotly/validators/table/header/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/fill/__init__.py b/plotly/validators/table/header/fill/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/fill/__init__.py rename to plotly/validators/table/header/fill/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/header/fill/_color.py b/plotly/validators/table/header/fill/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/fill/_color.py rename to plotly/validators/table/header/fill/_color.py diff --git a/packages/python/plotly/plotly/validators/table/header/fill/_colorsrc.py b/plotly/validators/table/header/fill/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/fill/_colorsrc.py rename to plotly/validators/table/header/fill/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/__init__.py b/plotly/validators/table/header/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/__init__.py rename to plotly/validators/table/header/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_color.py b/plotly/validators/table/header/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_color.py rename to plotly/validators/table/header/font/_color.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_colorsrc.py b/plotly/validators/table/header/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_colorsrc.py rename to plotly/validators/table/header/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_family.py b/plotly/validators/table/header/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_family.py rename to plotly/validators/table/header/font/_family.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_familysrc.py b/plotly/validators/table/header/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_familysrc.py rename to plotly/validators/table/header/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_lineposition.py b/plotly/validators/table/header/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_lineposition.py rename to plotly/validators/table/header/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_linepositionsrc.py b/plotly/validators/table/header/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_linepositionsrc.py rename to plotly/validators/table/header/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_shadow.py b/plotly/validators/table/header/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_shadow.py rename to plotly/validators/table/header/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_shadowsrc.py b/plotly/validators/table/header/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_shadowsrc.py rename to plotly/validators/table/header/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_size.py b/plotly/validators/table/header/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_size.py rename to plotly/validators/table/header/font/_size.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_sizesrc.py b/plotly/validators/table/header/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_sizesrc.py rename to plotly/validators/table/header/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_style.py b/plotly/validators/table/header/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_style.py rename to plotly/validators/table/header/font/_style.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_stylesrc.py b/plotly/validators/table/header/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_stylesrc.py rename to plotly/validators/table/header/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_textcase.py b/plotly/validators/table/header/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_textcase.py rename to plotly/validators/table/header/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_textcasesrc.py b/plotly/validators/table/header/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_textcasesrc.py rename to plotly/validators/table/header/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_variant.py b/plotly/validators/table/header/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_variant.py rename to plotly/validators/table/header/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_variantsrc.py b/plotly/validators/table/header/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_variantsrc.py rename to plotly/validators/table/header/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_weight.py b/plotly/validators/table/header/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_weight.py rename to plotly/validators/table/header/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/table/header/font/_weightsrc.py b/plotly/validators/table/header/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/font/_weightsrc.py rename to plotly/validators/table/header/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/line/__init__.py b/plotly/validators/table/header/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/line/__init__.py rename to plotly/validators/table/header/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/header/line/_color.py b/plotly/validators/table/header/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/line/_color.py rename to plotly/validators/table/header/line/_color.py diff --git a/packages/python/plotly/plotly/validators/table/header/line/_colorsrc.py b/plotly/validators/table/header/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/line/_colorsrc.py rename to plotly/validators/table/header/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/header/line/_width.py b/plotly/validators/table/header/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/line/_width.py rename to plotly/validators/table/header/line/_width.py diff --git a/packages/python/plotly/plotly/validators/table/header/line/_widthsrc.py b/plotly/validators/table/header/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/header/line/_widthsrc.py rename to plotly/validators/table/header/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/__init__.py b/plotly/validators/table/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/__init__.py rename to plotly/validators/table/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_align.py b/plotly/validators/table/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_align.py rename to plotly/validators/table/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_alignsrc.py b/plotly/validators/table/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_alignsrc.py rename to plotly/validators/table/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_bgcolor.py b/plotly/validators/table/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_bgcolor.py rename to plotly/validators/table/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_bgcolorsrc.py b/plotly/validators/table/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_bgcolorsrc.py rename to plotly/validators/table/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_bordercolor.py b/plotly/validators/table/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_bordercolor.py rename to plotly/validators/table/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_bordercolorsrc.py b/plotly/validators/table/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_bordercolorsrc.py rename to plotly/validators/table/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_font.py b/plotly/validators/table/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_font.py rename to plotly/validators/table/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_namelength.py b/plotly/validators/table/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_namelength.py rename to plotly/validators/table/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/_namelengthsrc.py b/plotly/validators/table/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/_namelengthsrc.py rename to plotly/validators/table/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/__init__.py b/plotly/validators/table/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/__init__.py rename to plotly/validators/table/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_color.py b/plotly/validators/table/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_color.py rename to plotly/validators/table/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_colorsrc.py b/plotly/validators/table/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_colorsrc.py rename to plotly/validators/table/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_family.py b/plotly/validators/table/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_family.py rename to plotly/validators/table/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_familysrc.py b/plotly/validators/table/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_familysrc.py rename to plotly/validators/table/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_lineposition.py b/plotly/validators/table/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_lineposition.py rename to plotly/validators/table/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_linepositionsrc.py b/plotly/validators/table/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/table/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_shadow.py b/plotly/validators/table/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_shadow.py rename to plotly/validators/table/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_shadowsrc.py b/plotly/validators/table/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_shadowsrc.py rename to plotly/validators/table/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_size.py b/plotly/validators/table/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_size.py rename to plotly/validators/table/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_sizesrc.py b/plotly/validators/table/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_sizesrc.py rename to plotly/validators/table/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_style.py b/plotly/validators/table/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_style.py rename to plotly/validators/table/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_stylesrc.py b/plotly/validators/table/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_stylesrc.py rename to plotly/validators/table/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_textcase.py b/plotly/validators/table/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_textcase.py rename to plotly/validators/table/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_textcasesrc.py b/plotly/validators/table/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_textcasesrc.py rename to plotly/validators/table/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_variant.py b/plotly/validators/table/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_variant.py rename to plotly/validators/table/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_variantsrc.py b/plotly/validators/table/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_variantsrc.py rename to plotly/validators/table/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_weight.py b/plotly/validators/table/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_weight.py rename to plotly/validators/table/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/table/hoverlabel/font/_weightsrc.py b/plotly/validators/table/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/hoverlabel/font/_weightsrc.py rename to plotly/validators/table/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/__init__.py b/plotly/validators/table/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/__init__.py rename to plotly/validators/table/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/_font.py b/plotly/validators/table/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/_font.py rename to plotly/validators/table/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/_text.py b/plotly/validators/table/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/_text.py rename to plotly/validators/table/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/__init__.py b/plotly/validators/table/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/__init__.py rename to plotly/validators/table/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_color.py b/plotly/validators/table/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_color.py rename to plotly/validators/table/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_family.py b/plotly/validators/table/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_family.py rename to plotly/validators/table/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_lineposition.py b/plotly/validators/table/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_lineposition.py rename to plotly/validators/table/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_shadow.py b/plotly/validators/table/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_shadow.py rename to plotly/validators/table/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_size.py b/plotly/validators/table/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_size.py rename to plotly/validators/table/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_style.py b/plotly/validators/table/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_style.py rename to plotly/validators/table/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_textcase.py b/plotly/validators/table/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_textcase.py rename to plotly/validators/table/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_variant.py b/plotly/validators/table/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_variant.py rename to plotly/validators/table/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_weight.py b/plotly/validators/table/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/legendgrouptitle/font/_weight.py rename to plotly/validators/table/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/table/stream/__init__.py b/plotly/validators/table/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/stream/__init__.py rename to plotly/validators/table/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/table/stream/_maxpoints.py b/plotly/validators/table/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/stream/_maxpoints.py rename to plotly/validators/table/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/table/stream/_token.py b/plotly/validators/table/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/table/stream/_token.py rename to plotly/validators/table/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/treemap/__init__.py b/plotly/validators/treemap/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/__init__.py rename to plotly/validators/treemap/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/_branchvalues.py b/plotly/validators/treemap/_branchvalues.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_branchvalues.py rename to plotly/validators/treemap/_branchvalues.py diff --git a/packages/python/plotly/plotly/validators/treemap/_count.py b/plotly/validators/treemap/_count.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_count.py rename to plotly/validators/treemap/_count.py diff --git a/packages/python/plotly/plotly/validators/treemap/_customdata.py b/plotly/validators/treemap/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_customdata.py rename to plotly/validators/treemap/_customdata.py diff --git a/packages/python/plotly/plotly/validators/treemap/_customdatasrc.py b/plotly/validators/treemap/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_customdatasrc.py rename to plotly/validators/treemap/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_domain.py b/plotly/validators/treemap/_domain.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_domain.py rename to plotly/validators/treemap/_domain.py diff --git a/packages/python/plotly/plotly/validators/treemap/_hoverinfo.py b/plotly/validators/treemap/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_hoverinfo.py rename to plotly/validators/treemap/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/treemap/_hoverinfosrc.py b/plotly/validators/treemap/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_hoverinfosrc.py rename to plotly/validators/treemap/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_hoverlabel.py b/plotly/validators/treemap/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_hoverlabel.py rename to plotly/validators/treemap/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/treemap/_hovertemplate.py b/plotly/validators/treemap/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_hovertemplate.py rename to plotly/validators/treemap/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/treemap/_hovertemplatesrc.py b/plotly/validators/treemap/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_hovertemplatesrc.py rename to plotly/validators/treemap/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_hovertext.py b/plotly/validators/treemap/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_hovertext.py rename to plotly/validators/treemap/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/treemap/_hovertextsrc.py b/plotly/validators/treemap/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_hovertextsrc.py rename to plotly/validators/treemap/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_ids.py b/plotly/validators/treemap/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_ids.py rename to plotly/validators/treemap/_ids.py diff --git a/packages/python/plotly/plotly/validators/treemap/_idssrc.py b/plotly/validators/treemap/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_idssrc.py rename to plotly/validators/treemap/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_insidetextfont.py b/plotly/validators/treemap/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_insidetextfont.py rename to plotly/validators/treemap/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/treemap/_labels.py b/plotly/validators/treemap/_labels.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_labels.py rename to plotly/validators/treemap/_labels.py diff --git a/packages/python/plotly/plotly/validators/treemap/_labelssrc.py b/plotly/validators/treemap/_labelssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_labelssrc.py rename to plotly/validators/treemap/_labelssrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_legend.py b/plotly/validators/treemap/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_legend.py rename to plotly/validators/treemap/_legend.py diff --git a/packages/python/plotly/plotly/validators/treemap/_legendgrouptitle.py b/plotly/validators/treemap/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_legendgrouptitle.py rename to plotly/validators/treemap/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/treemap/_legendrank.py b/plotly/validators/treemap/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_legendrank.py rename to plotly/validators/treemap/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/treemap/_legendwidth.py b/plotly/validators/treemap/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_legendwidth.py rename to plotly/validators/treemap/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/treemap/_level.py b/plotly/validators/treemap/_level.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_level.py rename to plotly/validators/treemap/_level.py diff --git a/packages/python/plotly/plotly/validators/treemap/_marker.py b/plotly/validators/treemap/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_marker.py rename to plotly/validators/treemap/_marker.py diff --git a/packages/python/plotly/plotly/validators/treemap/_maxdepth.py b/plotly/validators/treemap/_maxdepth.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_maxdepth.py rename to plotly/validators/treemap/_maxdepth.py diff --git a/packages/python/plotly/plotly/validators/treemap/_meta.py b/plotly/validators/treemap/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_meta.py rename to plotly/validators/treemap/_meta.py diff --git a/packages/python/plotly/plotly/validators/treemap/_metasrc.py b/plotly/validators/treemap/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_metasrc.py rename to plotly/validators/treemap/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_name.py b/plotly/validators/treemap/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_name.py rename to plotly/validators/treemap/_name.py diff --git a/packages/python/plotly/plotly/validators/treemap/_opacity.py b/plotly/validators/treemap/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_opacity.py rename to plotly/validators/treemap/_opacity.py diff --git a/packages/python/plotly/plotly/validators/treemap/_outsidetextfont.py b/plotly/validators/treemap/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_outsidetextfont.py rename to plotly/validators/treemap/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/validators/treemap/_parents.py b/plotly/validators/treemap/_parents.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_parents.py rename to plotly/validators/treemap/_parents.py diff --git a/packages/python/plotly/plotly/validators/treemap/_parentssrc.py b/plotly/validators/treemap/_parentssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_parentssrc.py rename to plotly/validators/treemap/_parentssrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_pathbar.py b/plotly/validators/treemap/_pathbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_pathbar.py rename to plotly/validators/treemap/_pathbar.py diff --git a/packages/python/plotly/plotly/validators/treemap/_root.py b/plotly/validators/treemap/_root.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_root.py rename to plotly/validators/treemap/_root.py diff --git a/packages/python/plotly/plotly/validators/treemap/_sort.py b/plotly/validators/treemap/_sort.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_sort.py rename to plotly/validators/treemap/_sort.py diff --git a/packages/python/plotly/plotly/validators/treemap/_stream.py b/plotly/validators/treemap/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_stream.py rename to plotly/validators/treemap/_stream.py diff --git a/packages/python/plotly/plotly/validators/treemap/_text.py b/plotly/validators/treemap/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_text.py rename to plotly/validators/treemap/_text.py diff --git a/packages/python/plotly/plotly/validators/treemap/_textfont.py b/plotly/validators/treemap/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_textfont.py rename to plotly/validators/treemap/_textfont.py diff --git a/packages/python/plotly/plotly/validators/treemap/_textinfo.py b/plotly/validators/treemap/_textinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_textinfo.py rename to plotly/validators/treemap/_textinfo.py diff --git a/packages/python/plotly/plotly/validators/treemap/_textposition.py b/plotly/validators/treemap/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_textposition.py rename to plotly/validators/treemap/_textposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/_textsrc.py b/plotly/validators/treemap/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_textsrc.py rename to plotly/validators/treemap/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_texttemplate.py b/plotly/validators/treemap/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_texttemplate.py rename to plotly/validators/treemap/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/treemap/_texttemplatesrc.py b/plotly/validators/treemap/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_texttemplatesrc.py rename to plotly/validators/treemap/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_tiling.py b/plotly/validators/treemap/_tiling.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_tiling.py rename to plotly/validators/treemap/_tiling.py diff --git a/packages/python/plotly/plotly/validators/treemap/_uid.py b/plotly/validators/treemap/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_uid.py rename to plotly/validators/treemap/_uid.py diff --git a/packages/python/plotly/plotly/validators/treemap/_uirevision.py b/plotly/validators/treemap/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_uirevision.py rename to plotly/validators/treemap/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/treemap/_values.py b/plotly/validators/treemap/_values.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_values.py rename to plotly/validators/treemap/_values.py diff --git a/packages/python/plotly/plotly/validators/treemap/_valuessrc.py b/plotly/validators/treemap/_valuessrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_valuessrc.py rename to plotly/validators/treemap/_valuessrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/_visible.py b/plotly/validators/treemap/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/_visible.py rename to plotly/validators/treemap/_visible.py diff --git a/packages/python/plotly/plotly/validators/treemap/domain/__init__.py b/plotly/validators/treemap/domain/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/domain/__init__.py rename to plotly/validators/treemap/domain/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/domain/_column.py b/plotly/validators/treemap/domain/_column.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/domain/_column.py rename to plotly/validators/treemap/domain/_column.py diff --git a/packages/python/plotly/plotly/validators/treemap/domain/_row.py b/plotly/validators/treemap/domain/_row.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/domain/_row.py rename to plotly/validators/treemap/domain/_row.py diff --git a/packages/python/plotly/plotly/validators/treemap/domain/_x.py b/plotly/validators/treemap/domain/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/domain/_x.py rename to plotly/validators/treemap/domain/_x.py diff --git a/packages/python/plotly/plotly/validators/treemap/domain/_y.py b/plotly/validators/treemap/domain/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/domain/_y.py rename to plotly/validators/treemap/domain/_y.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/__init__.py b/plotly/validators/treemap/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/__init__.py rename to plotly/validators/treemap/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_align.py b/plotly/validators/treemap/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_align.py rename to plotly/validators/treemap/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_alignsrc.py b/plotly/validators/treemap/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_alignsrc.py rename to plotly/validators/treemap/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_bgcolor.py b/plotly/validators/treemap/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_bgcolor.py rename to plotly/validators/treemap/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_bgcolorsrc.py b/plotly/validators/treemap/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_bgcolorsrc.py rename to plotly/validators/treemap/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_bordercolor.py b/plotly/validators/treemap/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_bordercolor.py rename to plotly/validators/treemap/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_bordercolorsrc.py b/plotly/validators/treemap/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_bordercolorsrc.py rename to plotly/validators/treemap/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_font.py b/plotly/validators/treemap/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_font.py rename to plotly/validators/treemap/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_namelength.py b/plotly/validators/treemap/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_namelength.py rename to plotly/validators/treemap/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/_namelengthsrc.py b/plotly/validators/treemap/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/_namelengthsrc.py rename to plotly/validators/treemap/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/__init__.py b/plotly/validators/treemap/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/__init__.py rename to plotly/validators/treemap/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_color.py b/plotly/validators/treemap/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_color.py rename to plotly/validators/treemap/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_colorsrc.py b/plotly/validators/treemap/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_colorsrc.py rename to plotly/validators/treemap/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_family.py b/plotly/validators/treemap/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_family.py rename to plotly/validators/treemap/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_familysrc.py b/plotly/validators/treemap/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_familysrc.py rename to plotly/validators/treemap/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_lineposition.py b/plotly/validators/treemap/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_lineposition.py rename to plotly/validators/treemap/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_linepositionsrc.py b/plotly/validators/treemap/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/treemap/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_shadow.py b/plotly/validators/treemap/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_shadow.py rename to plotly/validators/treemap/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_shadowsrc.py b/plotly/validators/treemap/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_shadowsrc.py rename to plotly/validators/treemap/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_size.py b/plotly/validators/treemap/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_size.py rename to plotly/validators/treemap/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_sizesrc.py b/plotly/validators/treemap/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_sizesrc.py rename to plotly/validators/treemap/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_style.py b/plotly/validators/treemap/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_style.py rename to plotly/validators/treemap/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_stylesrc.py b/plotly/validators/treemap/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_stylesrc.py rename to plotly/validators/treemap/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_textcase.py b/plotly/validators/treemap/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_textcase.py rename to plotly/validators/treemap/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_textcasesrc.py b/plotly/validators/treemap/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_textcasesrc.py rename to plotly/validators/treemap/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_variant.py b/plotly/validators/treemap/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_variant.py rename to plotly/validators/treemap/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_variantsrc.py b/plotly/validators/treemap/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_variantsrc.py rename to plotly/validators/treemap/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_weight.py b/plotly/validators/treemap/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_weight.py rename to plotly/validators/treemap/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_weightsrc.py b/plotly/validators/treemap/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/hoverlabel/font/_weightsrc.py rename to plotly/validators/treemap/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/__init__.py b/plotly/validators/treemap/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/__init__.py rename to plotly/validators/treemap/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_color.py b/plotly/validators/treemap/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_color.py rename to plotly/validators/treemap/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_colorsrc.py b/plotly/validators/treemap/insidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_colorsrc.py rename to plotly/validators/treemap/insidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_family.py b/plotly/validators/treemap/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_family.py rename to plotly/validators/treemap/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_familysrc.py b/plotly/validators/treemap/insidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_familysrc.py rename to plotly/validators/treemap/insidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_lineposition.py b/plotly/validators/treemap/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_lineposition.py rename to plotly/validators/treemap/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_linepositionsrc.py b/plotly/validators/treemap/insidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_linepositionsrc.py rename to plotly/validators/treemap/insidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_shadow.py b/plotly/validators/treemap/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_shadow.py rename to plotly/validators/treemap/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_shadowsrc.py b/plotly/validators/treemap/insidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_shadowsrc.py rename to plotly/validators/treemap/insidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_size.py b/plotly/validators/treemap/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_size.py rename to plotly/validators/treemap/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_sizesrc.py b/plotly/validators/treemap/insidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_sizesrc.py rename to plotly/validators/treemap/insidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_style.py b/plotly/validators/treemap/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_style.py rename to plotly/validators/treemap/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_stylesrc.py b/plotly/validators/treemap/insidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_stylesrc.py rename to plotly/validators/treemap/insidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_textcase.py b/plotly/validators/treemap/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_textcase.py rename to plotly/validators/treemap/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_textcasesrc.py b/plotly/validators/treemap/insidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_textcasesrc.py rename to plotly/validators/treemap/insidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_variant.py b/plotly/validators/treemap/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_variant.py rename to plotly/validators/treemap/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_variantsrc.py b/plotly/validators/treemap/insidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_variantsrc.py rename to plotly/validators/treemap/insidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_weight.py b/plotly/validators/treemap/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_weight.py rename to plotly/validators/treemap/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/treemap/insidetextfont/_weightsrc.py b/plotly/validators/treemap/insidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/insidetextfont/_weightsrc.py rename to plotly/validators/treemap/insidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/__init__.py b/plotly/validators/treemap/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/__init__.py rename to plotly/validators/treemap/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/_font.py b/plotly/validators/treemap/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/_font.py rename to plotly/validators/treemap/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/_text.py b/plotly/validators/treemap/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/_text.py rename to plotly/validators/treemap/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/__init__.py b/plotly/validators/treemap/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/__init__.py rename to plotly/validators/treemap/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_color.py b/plotly/validators/treemap/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_color.py rename to plotly/validators/treemap/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_family.py b/plotly/validators/treemap/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_family.py rename to plotly/validators/treemap/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_lineposition.py b/plotly/validators/treemap/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_lineposition.py rename to plotly/validators/treemap/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_shadow.py b/plotly/validators/treemap/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_shadow.py rename to plotly/validators/treemap/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_size.py b/plotly/validators/treemap/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_size.py rename to plotly/validators/treemap/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_style.py b/plotly/validators/treemap/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_style.py rename to plotly/validators/treemap/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_textcase.py b/plotly/validators/treemap/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_textcase.py rename to plotly/validators/treemap/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_variant.py b/plotly/validators/treemap/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_variant.py rename to plotly/validators/treemap/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_weight.py b/plotly/validators/treemap/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/legendgrouptitle/font/_weight.py rename to plotly/validators/treemap/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/__init__.py b/plotly/validators/treemap/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/__init__.py rename to plotly/validators/treemap/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_autocolorscale.py b/plotly/validators/treemap/marker/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_autocolorscale.py rename to plotly/validators/treemap/marker/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_cauto.py b/plotly/validators/treemap/marker/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_cauto.py rename to plotly/validators/treemap/marker/_cauto.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_cmax.py b/plotly/validators/treemap/marker/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_cmax.py rename to plotly/validators/treemap/marker/_cmax.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_cmid.py b/plotly/validators/treemap/marker/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_cmid.py rename to plotly/validators/treemap/marker/_cmid.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_cmin.py b/plotly/validators/treemap/marker/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_cmin.py rename to plotly/validators/treemap/marker/_cmin.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_coloraxis.py b/plotly/validators/treemap/marker/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_coloraxis.py rename to plotly/validators/treemap/marker/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_colorbar.py b/plotly/validators/treemap/marker/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_colorbar.py rename to plotly/validators/treemap/marker/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_colors.py b/plotly/validators/treemap/marker/_colors.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_colors.py rename to plotly/validators/treemap/marker/_colors.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_colorscale.py b/plotly/validators/treemap/marker/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_colorscale.py rename to plotly/validators/treemap/marker/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_colorssrc.py b/plotly/validators/treemap/marker/_colorssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_colorssrc.py rename to plotly/validators/treemap/marker/_colorssrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_cornerradius.py b/plotly/validators/treemap/marker/_cornerradius.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_cornerradius.py rename to plotly/validators/treemap/marker/_cornerradius.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_depthfade.py b/plotly/validators/treemap/marker/_depthfade.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_depthfade.py rename to plotly/validators/treemap/marker/_depthfade.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_line.py b/plotly/validators/treemap/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_line.py rename to plotly/validators/treemap/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_pad.py b/plotly/validators/treemap/marker/_pad.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_pad.py rename to plotly/validators/treemap/marker/_pad.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_pattern.py b/plotly/validators/treemap/marker/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_pattern.py rename to plotly/validators/treemap/marker/_pattern.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_reversescale.py b/plotly/validators/treemap/marker/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_reversescale.py rename to plotly/validators/treemap/marker/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/_showscale.py b/plotly/validators/treemap/marker/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/_showscale.py rename to plotly/validators/treemap/marker/_showscale.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/__init__.py b/plotly/validators/treemap/marker/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/__init__.py rename to plotly/validators/treemap/marker/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_bgcolor.py b/plotly/validators/treemap/marker/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_bgcolor.py rename to plotly/validators/treemap/marker/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_bordercolor.py b/plotly/validators/treemap/marker/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_bordercolor.py rename to plotly/validators/treemap/marker/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_borderwidth.py b/plotly/validators/treemap/marker/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_borderwidth.py rename to plotly/validators/treemap/marker/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_dtick.py b/plotly/validators/treemap/marker/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_dtick.py rename to plotly/validators/treemap/marker/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_exponentformat.py b/plotly/validators/treemap/marker/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_exponentformat.py rename to plotly/validators/treemap/marker/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_labelalias.py b/plotly/validators/treemap/marker/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_labelalias.py rename to plotly/validators/treemap/marker/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_len.py b/plotly/validators/treemap/marker/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_len.py rename to plotly/validators/treemap/marker/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_lenmode.py b/plotly/validators/treemap/marker/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_lenmode.py rename to plotly/validators/treemap/marker/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_minexponent.py b/plotly/validators/treemap/marker/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_minexponent.py rename to plotly/validators/treemap/marker/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_nticks.py b/plotly/validators/treemap/marker/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_nticks.py rename to plotly/validators/treemap/marker/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_orientation.py b/plotly/validators/treemap/marker/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_orientation.py rename to plotly/validators/treemap/marker/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_outlinecolor.py b/plotly/validators/treemap/marker/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_outlinecolor.py rename to plotly/validators/treemap/marker/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_outlinewidth.py b/plotly/validators/treemap/marker/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_outlinewidth.py rename to plotly/validators/treemap/marker/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_separatethousands.py b/plotly/validators/treemap/marker/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_separatethousands.py rename to plotly/validators/treemap/marker/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_showexponent.py b/plotly/validators/treemap/marker/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_showexponent.py rename to plotly/validators/treemap/marker/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_showticklabels.py b/plotly/validators/treemap/marker/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_showticklabels.py rename to plotly/validators/treemap/marker/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_showtickprefix.py b/plotly/validators/treemap/marker/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_showtickprefix.py rename to plotly/validators/treemap/marker/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_showticksuffix.py b/plotly/validators/treemap/marker/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_showticksuffix.py rename to plotly/validators/treemap/marker/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_thickness.py b/plotly/validators/treemap/marker/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_thickness.py rename to plotly/validators/treemap/marker/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_thicknessmode.py b/plotly/validators/treemap/marker/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_thicknessmode.py rename to plotly/validators/treemap/marker/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tick0.py b/plotly/validators/treemap/marker/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tick0.py rename to plotly/validators/treemap/marker/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickangle.py b/plotly/validators/treemap/marker/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickangle.py rename to plotly/validators/treemap/marker/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickcolor.py b/plotly/validators/treemap/marker/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickcolor.py rename to plotly/validators/treemap/marker/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickfont.py b/plotly/validators/treemap/marker/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickfont.py rename to plotly/validators/treemap/marker/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickformat.py b/plotly/validators/treemap/marker/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickformat.py rename to plotly/validators/treemap/marker/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickformatstopdefaults.py b/plotly/validators/treemap/marker/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickformatstopdefaults.py rename to plotly/validators/treemap/marker/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickformatstops.py b/plotly/validators/treemap/marker/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickformatstops.py rename to plotly/validators/treemap/marker/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticklabeloverflow.py b/plotly/validators/treemap/marker/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticklabeloverflow.py rename to plotly/validators/treemap/marker/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticklabelposition.py b/plotly/validators/treemap/marker/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticklabelposition.py rename to plotly/validators/treemap/marker/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticklabelstep.py b/plotly/validators/treemap/marker/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticklabelstep.py rename to plotly/validators/treemap/marker/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticklen.py b/plotly/validators/treemap/marker/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticklen.py rename to plotly/validators/treemap/marker/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickmode.py b/plotly/validators/treemap/marker/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickmode.py rename to plotly/validators/treemap/marker/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickprefix.py b/plotly/validators/treemap/marker/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickprefix.py rename to plotly/validators/treemap/marker/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticks.py b/plotly/validators/treemap/marker/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticks.py rename to plotly/validators/treemap/marker/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticksuffix.py b/plotly/validators/treemap/marker/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticksuffix.py rename to plotly/validators/treemap/marker/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticktext.py b/plotly/validators/treemap/marker/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticktext.py rename to plotly/validators/treemap/marker/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticktextsrc.py b/plotly/validators/treemap/marker/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ticktextsrc.py rename to plotly/validators/treemap/marker/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickvals.py b/plotly/validators/treemap/marker/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickvals.py rename to plotly/validators/treemap/marker/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickvalssrc.py b/plotly/validators/treemap/marker/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickvalssrc.py rename to plotly/validators/treemap/marker/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickwidth.py b/plotly/validators/treemap/marker/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_tickwidth.py rename to plotly/validators/treemap/marker/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_title.py b/plotly/validators/treemap/marker/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_title.py rename to plotly/validators/treemap/marker/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_x.py b/plotly/validators/treemap/marker/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_x.py rename to plotly/validators/treemap/marker/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_xanchor.py b/plotly/validators/treemap/marker/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_xanchor.py rename to plotly/validators/treemap/marker/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_xpad.py b/plotly/validators/treemap/marker/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_xpad.py rename to plotly/validators/treemap/marker/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_xref.py b/plotly/validators/treemap/marker/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_xref.py rename to plotly/validators/treemap/marker/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_y.py b/plotly/validators/treemap/marker/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_y.py rename to plotly/validators/treemap/marker/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_yanchor.py b/plotly/validators/treemap/marker/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_yanchor.py rename to plotly/validators/treemap/marker/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ypad.py b/plotly/validators/treemap/marker/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_ypad.py rename to plotly/validators/treemap/marker/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/_yref.py b/plotly/validators/treemap/marker/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/_yref.py rename to plotly/validators/treemap/marker/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/__init__.py b/plotly/validators/treemap/marker/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/__init__.py rename to plotly/validators/treemap/marker/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_color.py b/plotly/validators/treemap/marker/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_color.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_family.py b/plotly/validators/treemap/marker/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_family.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_lineposition.py b/plotly/validators/treemap/marker/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_lineposition.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_shadow.py b/plotly/validators/treemap/marker/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_shadow.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_size.py b/plotly/validators/treemap/marker/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_size.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_style.py b/plotly/validators/treemap/marker/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_style.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_textcase.py b/plotly/validators/treemap/marker/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_textcase.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_variant.py b/plotly/validators/treemap/marker/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_variant.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_weight.py b/plotly/validators/treemap/marker/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickfont/_weight.py rename to plotly/validators/treemap/marker/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/__init__.py b/plotly/validators/treemap/marker/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/__init__.py rename to plotly/validators/treemap/marker/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/treemap/marker/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/treemap/marker/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_enabled.py b/plotly/validators/treemap/marker/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_enabled.py rename to plotly/validators/treemap/marker/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_name.py b/plotly/validators/treemap/marker/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_name.py rename to plotly/validators/treemap/marker/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/treemap/marker/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/treemap/marker/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_value.py b/plotly/validators/treemap/marker/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/tickformatstop/_value.py rename to plotly/validators/treemap/marker/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/__init__.py b/plotly/validators/treemap/marker/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/__init__.py rename to plotly/validators/treemap/marker/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/_font.py b/plotly/validators/treemap/marker/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/_font.py rename to plotly/validators/treemap/marker/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/_side.py b/plotly/validators/treemap/marker/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/_side.py rename to plotly/validators/treemap/marker/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/_text.py b/plotly/validators/treemap/marker/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/_text.py rename to plotly/validators/treemap/marker/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/__init__.py b/plotly/validators/treemap/marker/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/__init__.py rename to plotly/validators/treemap/marker/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_color.py b/plotly/validators/treemap/marker/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_color.py rename to plotly/validators/treemap/marker/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_family.py b/plotly/validators/treemap/marker/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_family.py rename to plotly/validators/treemap/marker/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_lineposition.py b/plotly/validators/treemap/marker/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_lineposition.py rename to plotly/validators/treemap/marker/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_shadow.py b/plotly/validators/treemap/marker/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_shadow.py rename to plotly/validators/treemap/marker/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_size.py b/plotly/validators/treemap/marker/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_size.py rename to plotly/validators/treemap/marker/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_style.py b/plotly/validators/treemap/marker/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_style.py rename to plotly/validators/treemap/marker/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_textcase.py b/plotly/validators/treemap/marker/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_textcase.py rename to plotly/validators/treemap/marker/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_variant.py b/plotly/validators/treemap/marker/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_variant.py rename to plotly/validators/treemap/marker/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_weight.py b/plotly/validators/treemap/marker/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/colorbar/title/font/_weight.py rename to plotly/validators/treemap/marker/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/line/__init__.py b/plotly/validators/treemap/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/line/__init__.py rename to plotly/validators/treemap/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/line/_color.py b/plotly/validators/treemap/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/line/_color.py rename to plotly/validators/treemap/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/line/_colorsrc.py b/plotly/validators/treemap/marker/line/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/line/_colorsrc.py rename to plotly/validators/treemap/marker/line/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/line/_width.py b/plotly/validators/treemap/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/line/_width.py rename to plotly/validators/treemap/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/line/_widthsrc.py b/plotly/validators/treemap/marker/line/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/line/_widthsrc.py rename to plotly/validators/treemap/marker/line/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pad/__init__.py b/plotly/validators/treemap/marker/pad/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pad/__init__.py rename to plotly/validators/treemap/marker/pad/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pad/_b.py b/plotly/validators/treemap/marker/pad/_b.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pad/_b.py rename to plotly/validators/treemap/marker/pad/_b.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pad/_l.py b/plotly/validators/treemap/marker/pad/_l.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pad/_l.py rename to plotly/validators/treemap/marker/pad/_l.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pad/_r.py b/plotly/validators/treemap/marker/pad/_r.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pad/_r.py rename to plotly/validators/treemap/marker/pad/_r.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pad/_t.py b/plotly/validators/treemap/marker/pad/_t.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pad/_t.py rename to plotly/validators/treemap/marker/pad/_t.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/__init__.py b/plotly/validators/treemap/marker/pattern/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/__init__.py rename to plotly/validators/treemap/marker/pattern/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_bgcolor.py b/plotly/validators/treemap/marker/pattern/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_bgcolor.py rename to plotly/validators/treemap/marker/pattern/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_bgcolorsrc.py b/plotly/validators/treemap/marker/pattern/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_bgcolorsrc.py rename to plotly/validators/treemap/marker/pattern/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_fgcolor.py b/plotly/validators/treemap/marker/pattern/_fgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_fgcolor.py rename to plotly/validators/treemap/marker/pattern/_fgcolor.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_fgcolorsrc.py b/plotly/validators/treemap/marker/pattern/_fgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_fgcolorsrc.py rename to plotly/validators/treemap/marker/pattern/_fgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_fgopacity.py b/plotly/validators/treemap/marker/pattern/_fgopacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_fgopacity.py rename to plotly/validators/treemap/marker/pattern/_fgopacity.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_fillmode.py b/plotly/validators/treemap/marker/pattern/_fillmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_fillmode.py rename to plotly/validators/treemap/marker/pattern/_fillmode.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_shape.py b/plotly/validators/treemap/marker/pattern/_shape.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_shape.py rename to plotly/validators/treemap/marker/pattern/_shape.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_shapesrc.py b/plotly/validators/treemap/marker/pattern/_shapesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_shapesrc.py rename to plotly/validators/treemap/marker/pattern/_shapesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_size.py b/plotly/validators/treemap/marker/pattern/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_size.py rename to plotly/validators/treemap/marker/pattern/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_sizesrc.py b/plotly/validators/treemap/marker/pattern/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_sizesrc.py rename to plotly/validators/treemap/marker/pattern/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_solidity.py b/plotly/validators/treemap/marker/pattern/_solidity.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_solidity.py rename to plotly/validators/treemap/marker/pattern/_solidity.py diff --git a/packages/python/plotly/plotly/validators/treemap/marker/pattern/_soliditysrc.py b/plotly/validators/treemap/marker/pattern/_soliditysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/marker/pattern/_soliditysrc.py rename to plotly/validators/treemap/marker/pattern/_soliditysrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/__init__.py b/plotly/validators/treemap/outsidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/__init__.py rename to plotly/validators/treemap/outsidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_color.py b/plotly/validators/treemap/outsidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_color.py rename to plotly/validators/treemap/outsidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_colorsrc.py b/plotly/validators/treemap/outsidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_colorsrc.py rename to plotly/validators/treemap/outsidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_family.py b/plotly/validators/treemap/outsidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_family.py rename to plotly/validators/treemap/outsidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_familysrc.py b/plotly/validators/treemap/outsidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_familysrc.py rename to plotly/validators/treemap/outsidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_lineposition.py b/plotly/validators/treemap/outsidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_lineposition.py rename to plotly/validators/treemap/outsidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_linepositionsrc.py b/plotly/validators/treemap/outsidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_linepositionsrc.py rename to plotly/validators/treemap/outsidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_shadow.py b/plotly/validators/treemap/outsidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_shadow.py rename to plotly/validators/treemap/outsidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_shadowsrc.py b/plotly/validators/treemap/outsidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_shadowsrc.py rename to plotly/validators/treemap/outsidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_size.py b/plotly/validators/treemap/outsidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_size.py rename to plotly/validators/treemap/outsidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_sizesrc.py b/plotly/validators/treemap/outsidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_sizesrc.py rename to plotly/validators/treemap/outsidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_style.py b/plotly/validators/treemap/outsidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_style.py rename to plotly/validators/treemap/outsidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_stylesrc.py b/plotly/validators/treemap/outsidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_stylesrc.py rename to plotly/validators/treemap/outsidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_textcase.py b/plotly/validators/treemap/outsidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_textcase.py rename to plotly/validators/treemap/outsidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_textcasesrc.py b/plotly/validators/treemap/outsidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_textcasesrc.py rename to plotly/validators/treemap/outsidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_variant.py b/plotly/validators/treemap/outsidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_variant.py rename to plotly/validators/treemap/outsidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_variantsrc.py b/plotly/validators/treemap/outsidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_variantsrc.py rename to plotly/validators/treemap/outsidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_weight.py b/plotly/validators/treemap/outsidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_weight.py rename to plotly/validators/treemap/outsidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/treemap/outsidetextfont/_weightsrc.py b/plotly/validators/treemap/outsidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/outsidetextfont/_weightsrc.py rename to plotly/validators/treemap/outsidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/__init__.py b/plotly/validators/treemap/pathbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/__init__.py rename to plotly/validators/treemap/pathbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/_edgeshape.py b/plotly/validators/treemap/pathbar/_edgeshape.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/_edgeshape.py rename to plotly/validators/treemap/pathbar/_edgeshape.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/_side.py b/plotly/validators/treemap/pathbar/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/_side.py rename to plotly/validators/treemap/pathbar/_side.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/_textfont.py b/plotly/validators/treemap/pathbar/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/_textfont.py rename to plotly/validators/treemap/pathbar/_textfont.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/_thickness.py b/plotly/validators/treemap/pathbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/_thickness.py rename to plotly/validators/treemap/pathbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/_visible.py b/plotly/validators/treemap/pathbar/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/_visible.py rename to plotly/validators/treemap/pathbar/_visible.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/__init__.py b/plotly/validators/treemap/pathbar/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/__init__.py rename to plotly/validators/treemap/pathbar/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_color.py b/plotly/validators/treemap/pathbar/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_color.py rename to plotly/validators/treemap/pathbar/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_colorsrc.py b/plotly/validators/treemap/pathbar/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_colorsrc.py rename to plotly/validators/treemap/pathbar/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_family.py b/plotly/validators/treemap/pathbar/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_family.py rename to plotly/validators/treemap/pathbar/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_familysrc.py b/plotly/validators/treemap/pathbar/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_familysrc.py rename to plotly/validators/treemap/pathbar/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_lineposition.py b/plotly/validators/treemap/pathbar/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_lineposition.py rename to plotly/validators/treemap/pathbar/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_linepositionsrc.py b/plotly/validators/treemap/pathbar/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_linepositionsrc.py rename to plotly/validators/treemap/pathbar/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_shadow.py b/plotly/validators/treemap/pathbar/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_shadow.py rename to plotly/validators/treemap/pathbar/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_shadowsrc.py b/plotly/validators/treemap/pathbar/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_shadowsrc.py rename to plotly/validators/treemap/pathbar/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_size.py b/plotly/validators/treemap/pathbar/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_size.py rename to plotly/validators/treemap/pathbar/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_sizesrc.py b/plotly/validators/treemap/pathbar/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_sizesrc.py rename to plotly/validators/treemap/pathbar/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_style.py b/plotly/validators/treemap/pathbar/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_style.py rename to plotly/validators/treemap/pathbar/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_stylesrc.py b/plotly/validators/treemap/pathbar/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_stylesrc.py rename to plotly/validators/treemap/pathbar/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_textcase.py b/plotly/validators/treemap/pathbar/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_textcase.py rename to plotly/validators/treemap/pathbar/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_textcasesrc.py b/plotly/validators/treemap/pathbar/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_textcasesrc.py rename to plotly/validators/treemap/pathbar/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_variant.py b/plotly/validators/treemap/pathbar/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_variant.py rename to plotly/validators/treemap/pathbar/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_variantsrc.py b/plotly/validators/treemap/pathbar/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_variantsrc.py rename to plotly/validators/treemap/pathbar/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_weight.py b/plotly/validators/treemap/pathbar/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_weight.py rename to plotly/validators/treemap/pathbar/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_weightsrc.py b/plotly/validators/treemap/pathbar/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/pathbar/textfont/_weightsrc.py rename to plotly/validators/treemap/pathbar/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/root/__init__.py b/plotly/validators/treemap/root/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/root/__init__.py rename to plotly/validators/treemap/root/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/root/_color.py b/plotly/validators/treemap/root/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/root/_color.py rename to plotly/validators/treemap/root/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/stream/__init__.py b/plotly/validators/treemap/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/stream/__init__.py rename to plotly/validators/treemap/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/stream/_maxpoints.py b/plotly/validators/treemap/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/stream/_maxpoints.py rename to plotly/validators/treemap/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/treemap/stream/_token.py b/plotly/validators/treemap/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/stream/_token.py rename to plotly/validators/treemap/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/__init__.py b/plotly/validators/treemap/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/__init__.py rename to plotly/validators/treemap/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_color.py b/plotly/validators/treemap/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_color.py rename to plotly/validators/treemap/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_colorsrc.py b/plotly/validators/treemap/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_colorsrc.py rename to plotly/validators/treemap/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_family.py b/plotly/validators/treemap/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_family.py rename to plotly/validators/treemap/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_familysrc.py b/plotly/validators/treemap/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_familysrc.py rename to plotly/validators/treemap/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_lineposition.py b/plotly/validators/treemap/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_lineposition.py rename to plotly/validators/treemap/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_linepositionsrc.py b/plotly/validators/treemap/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_linepositionsrc.py rename to plotly/validators/treemap/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_shadow.py b/plotly/validators/treemap/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_shadow.py rename to plotly/validators/treemap/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_shadowsrc.py b/plotly/validators/treemap/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_shadowsrc.py rename to plotly/validators/treemap/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_size.py b/plotly/validators/treemap/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_size.py rename to plotly/validators/treemap/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_sizesrc.py b/plotly/validators/treemap/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_sizesrc.py rename to plotly/validators/treemap/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_style.py b/plotly/validators/treemap/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_style.py rename to plotly/validators/treemap/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_stylesrc.py b/plotly/validators/treemap/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_stylesrc.py rename to plotly/validators/treemap/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_textcase.py b/plotly/validators/treemap/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_textcase.py rename to plotly/validators/treemap/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_textcasesrc.py b/plotly/validators/treemap/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_textcasesrc.py rename to plotly/validators/treemap/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_variant.py b/plotly/validators/treemap/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_variant.py rename to plotly/validators/treemap/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_variantsrc.py b/plotly/validators/treemap/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_variantsrc.py rename to plotly/validators/treemap/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_weight.py b/plotly/validators/treemap/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_weight.py rename to plotly/validators/treemap/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/treemap/textfont/_weightsrc.py b/plotly/validators/treemap/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/textfont/_weightsrc.py rename to plotly/validators/treemap/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/treemap/tiling/__init__.py b/plotly/validators/treemap/tiling/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/tiling/__init__.py rename to plotly/validators/treemap/tiling/__init__.py diff --git a/packages/python/plotly/plotly/validators/treemap/tiling/_flip.py b/plotly/validators/treemap/tiling/_flip.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/tiling/_flip.py rename to plotly/validators/treemap/tiling/_flip.py diff --git a/packages/python/plotly/plotly/validators/treemap/tiling/_packing.py b/plotly/validators/treemap/tiling/_packing.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/tiling/_packing.py rename to plotly/validators/treemap/tiling/_packing.py diff --git a/packages/python/plotly/plotly/validators/treemap/tiling/_pad.py b/plotly/validators/treemap/tiling/_pad.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/tiling/_pad.py rename to plotly/validators/treemap/tiling/_pad.py diff --git a/packages/python/plotly/plotly/validators/treemap/tiling/_squarifyratio.py b/plotly/validators/treemap/tiling/_squarifyratio.py similarity index 100% rename from packages/python/plotly/plotly/validators/treemap/tiling/_squarifyratio.py rename to plotly/validators/treemap/tiling/_squarifyratio.py diff --git a/packages/python/plotly/plotly/validators/violin/__init__.py b/plotly/validators/violin/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/__init__.py rename to plotly/validators/violin/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/_alignmentgroup.py b/plotly/validators/violin/_alignmentgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_alignmentgroup.py rename to plotly/validators/violin/_alignmentgroup.py diff --git a/packages/python/plotly/plotly/validators/violin/_bandwidth.py b/plotly/validators/violin/_bandwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_bandwidth.py rename to plotly/validators/violin/_bandwidth.py diff --git a/packages/python/plotly/plotly/validators/violin/_box.py b/plotly/validators/violin/_box.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_box.py rename to plotly/validators/violin/_box.py diff --git a/packages/python/plotly/plotly/validators/violin/_customdata.py b/plotly/validators/violin/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_customdata.py rename to plotly/validators/violin/_customdata.py diff --git a/packages/python/plotly/plotly/validators/violin/_customdatasrc.py b/plotly/validators/violin/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_customdatasrc.py rename to plotly/validators/violin/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_fillcolor.py b/plotly/validators/violin/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_fillcolor.py rename to plotly/validators/violin/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/violin/_hoverinfo.py b/plotly/validators/violin/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_hoverinfo.py rename to plotly/validators/violin/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/violin/_hoverinfosrc.py b/plotly/validators/violin/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_hoverinfosrc.py rename to plotly/validators/violin/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_hoverlabel.py b/plotly/validators/violin/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_hoverlabel.py rename to plotly/validators/violin/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/violin/_hoveron.py b/plotly/validators/violin/_hoveron.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_hoveron.py rename to plotly/validators/violin/_hoveron.py diff --git a/packages/python/plotly/plotly/validators/violin/_hovertemplate.py b/plotly/validators/violin/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_hovertemplate.py rename to plotly/validators/violin/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/violin/_hovertemplatesrc.py b/plotly/validators/violin/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_hovertemplatesrc.py rename to plotly/validators/violin/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_hovertext.py b/plotly/validators/violin/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_hovertext.py rename to plotly/validators/violin/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/violin/_hovertextsrc.py b/plotly/validators/violin/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_hovertextsrc.py rename to plotly/validators/violin/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_ids.py b/plotly/validators/violin/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_ids.py rename to plotly/validators/violin/_ids.py diff --git a/packages/python/plotly/plotly/validators/violin/_idssrc.py b/plotly/validators/violin/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_idssrc.py rename to plotly/validators/violin/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_jitter.py b/plotly/validators/violin/_jitter.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_jitter.py rename to plotly/validators/violin/_jitter.py diff --git a/packages/python/plotly/plotly/validators/violin/_legend.py b/plotly/validators/violin/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_legend.py rename to plotly/validators/violin/_legend.py diff --git a/packages/python/plotly/plotly/validators/violin/_legendgroup.py b/plotly/validators/violin/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_legendgroup.py rename to plotly/validators/violin/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/violin/_legendgrouptitle.py b/plotly/validators/violin/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_legendgrouptitle.py rename to plotly/validators/violin/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/violin/_legendrank.py b/plotly/validators/violin/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_legendrank.py rename to plotly/validators/violin/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/violin/_legendwidth.py b/plotly/validators/violin/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_legendwidth.py rename to plotly/validators/violin/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/violin/_line.py b/plotly/validators/violin/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_line.py rename to plotly/validators/violin/_line.py diff --git a/packages/python/plotly/plotly/validators/violin/_marker.py b/plotly/validators/violin/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_marker.py rename to plotly/validators/violin/_marker.py diff --git a/packages/python/plotly/plotly/validators/violin/_meanline.py b/plotly/validators/violin/_meanline.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_meanline.py rename to plotly/validators/violin/_meanline.py diff --git a/packages/python/plotly/plotly/validators/violin/_meta.py b/plotly/validators/violin/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_meta.py rename to plotly/validators/violin/_meta.py diff --git a/packages/python/plotly/plotly/validators/violin/_metasrc.py b/plotly/validators/violin/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_metasrc.py rename to plotly/validators/violin/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_name.py b/plotly/validators/violin/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_name.py rename to plotly/validators/violin/_name.py diff --git a/packages/python/plotly/plotly/validators/violin/_offsetgroup.py b/plotly/validators/violin/_offsetgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_offsetgroup.py rename to plotly/validators/violin/_offsetgroup.py diff --git a/packages/python/plotly/plotly/validators/violin/_opacity.py b/plotly/validators/violin/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_opacity.py rename to plotly/validators/violin/_opacity.py diff --git a/packages/python/plotly/plotly/validators/violin/_orientation.py b/plotly/validators/violin/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_orientation.py rename to plotly/validators/violin/_orientation.py diff --git a/packages/python/plotly/plotly/validators/violin/_pointpos.py b/plotly/validators/violin/_pointpos.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_pointpos.py rename to plotly/validators/violin/_pointpos.py diff --git a/packages/python/plotly/plotly/validators/violin/_points.py b/plotly/validators/violin/_points.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_points.py rename to plotly/validators/violin/_points.py diff --git a/packages/python/plotly/plotly/validators/violin/_quartilemethod.py b/plotly/validators/violin/_quartilemethod.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_quartilemethod.py rename to plotly/validators/violin/_quartilemethod.py diff --git a/packages/python/plotly/plotly/validators/violin/_scalegroup.py b/plotly/validators/violin/_scalegroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_scalegroup.py rename to plotly/validators/violin/_scalegroup.py diff --git a/packages/python/plotly/plotly/validators/violin/_scalemode.py b/plotly/validators/violin/_scalemode.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_scalemode.py rename to plotly/validators/violin/_scalemode.py diff --git a/packages/python/plotly/plotly/validators/violin/_selected.py b/plotly/validators/violin/_selected.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_selected.py rename to plotly/validators/violin/_selected.py diff --git a/packages/python/plotly/plotly/validators/violin/_selectedpoints.py b/plotly/validators/violin/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_selectedpoints.py rename to plotly/validators/violin/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/violin/_showlegend.py b/plotly/validators/violin/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_showlegend.py rename to plotly/validators/violin/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/violin/_side.py b/plotly/validators/violin/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_side.py rename to plotly/validators/violin/_side.py diff --git a/packages/python/plotly/plotly/validators/violin/_span.py b/plotly/validators/violin/_span.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_span.py rename to plotly/validators/violin/_span.py diff --git a/packages/python/plotly/plotly/validators/violin/_spanmode.py b/plotly/validators/violin/_spanmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_spanmode.py rename to plotly/validators/violin/_spanmode.py diff --git a/packages/python/plotly/plotly/validators/violin/_stream.py b/plotly/validators/violin/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_stream.py rename to plotly/validators/violin/_stream.py diff --git a/packages/python/plotly/plotly/validators/violin/_text.py b/plotly/validators/violin/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_text.py rename to plotly/validators/violin/_text.py diff --git a/packages/python/plotly/plotly/validators/violin/_textsrc.py b/plotly/validators/violin/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_textsrc.py rename to plotly/validators/violin/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_uid.py b/plotly/validators/violin/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_uid.py rename to plotly/validators/violin/_uid.py diff --git a/packages/python/plotly/plotly/validators/violin/_uirevision.py b/plotly/validators/violin/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_uirevision.py rename to plotly/validators/violin/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/violin/_unselected.py b/plotly/validators/violin/_unselected.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_unselected.py rename to plotly/validators/violin/_unselected.py diff --git a/packages/python/plotly/plotly/validators/violin/_visible.py b/plotly/validators/violin/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_visible.py rename to plotly/validators/violin/_visible.py diff --git a/packages/python/plotly/plotly/validators/violin/_width.py b/plotly/validators/violin/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_width.py rename to plotly/validators/violin/_width.py diff --git a/packages/python/plotly/plotly/validators/violin/_x.py b/plotly/validators/violin/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_x.py rename to plotly/validators/violin/_x.py diff --git a/packages/python/plotly/plotly/validators/violin/_x0.py b/plotly/validators/violin/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_x0.py rename to plotly/validators/violin/_x0.py diff --git a/packages/python/plotly/plotly/validators/violin/_xaxis.py b/plotly/validators/violin/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_xaxis.py rename to plotly/validators/violin/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/violin/_xhoverformat.py b/plotly/validators/violin/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_xhoverformat.py rename to plotly/validators/violin/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/violin/_xsrc.py b/plotly/validators/violin/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_xsrc.py rename to plotly/validators/violin/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_y.py b/plotly/validators/violin/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_y.py rename to plotly/validators/violin/_y.py diff --git a/packages/python/plotly/plotly/validators/violin/_y0.py b/plotly/validators/violin/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_y0.py rename to plotly/validators/violin/_y0.py diff --git a/packages/python/plotly/plotly/validators/violin/_yaxis.py b/plotly/validators/violin/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_yaxis.py rename to plotly/validators/violin/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/violin/_yhoverformat.py b/plotly/validators/violin/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_yhoverformat.py rename to plotly/validators/violin/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/violin/_ysrc.py b/plotly/validators/violin/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_ysrc.py rename to plotly/validators/violin/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/violin/_zorder.py b/plotly/validators/violin/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/_zorder.py rename to plotly/validators/violin/_zorder.py diff --git a/packages/python/plotly/plotly/validators/violin/box/__init__.py b/plotly/validators/violin/box/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/box/__init__.py rename to plotly/validators/violin/box/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/box/_fillcolor.py b/plotly/validators/violin/box/_fillcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/box/_fillcolor.py rename to plotly/validators/violin/box/_fillcolor.py diff --git a/packages/python/plotly/plotly/validators/violin/box/_line.py b/plotly/validators/violin/box/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/box/_line.py rename to plotly/validators/violin/box/_line.py diff --git a/packages/python/plotly/plotly/validators/violin/box/_visible.py b/plotly/validators/violin/box/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/box/_visible.py rename to plotly/validators/violin/box/_visible.py diff --git a/packages/python/plotly/plotly/validators/violin/box/_width.py b/plotly/validators/violin/box/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/box/_width.py rename to plotly/validators/violin/box/_width.py diff --git a/packages/python/plotly/plotly/validators/violin/box/line/__init__.py b/plotly/validators/violin/box/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/box/line/__init__.py rename to plotly/validators/violin/box/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/box/line/_color.py b/plotly/validators/violin/box/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/box/line/_color.py rename to plotly/validators/violin/box/line/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/box/line/_width.py b/plotly/validators/violin/box/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/box/line/_width.py rename to plotly/validators/violin/box/line/_width.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/__init__.py b/plotly/validators/violin/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/__init__.py rename to plotly/validators/violin/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_align.py b/plotly/validators/violin/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_align.py rename to plotly/validators/violin/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_alignsrc.py b/plotly/validators/violin/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_alignsrc.py rename to plotly/validators/violin/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_bgcolor.py b/plotly/validators/violin/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_bgcolor.py rename to plotly/validators/violin/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_bgcolorsrc.py b/plotly/validators/violin/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_bgcolorsrc.py rename to plotly/validators/violin/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_bordercolor.py b/plotly/validators/violin/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_bordercolor.py rename to plotly/validators/violin/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_bordercolorsrc.py b/plotly/validators/violin/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_bordercolorsrc.py rename to plotly/validators/violin/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_font.py b/plotly/validators/violin/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_font.py rename to plotly/validators/violin/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_namelength.py b/plotly/validators/violin/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_namelength.py rename to plotly/validators/violin/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/_namelengthsrc.py b/plotly/validators/violin/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/_namelengthsrc.py rename to plotly/validators/violin/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/__init__.py b/plotly/validators/violin/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/__init__.py rename to plotly/validators/violin/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_color.py b/plotly/validators/violin/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_color.py rename to plotly/validators/violin/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_colorsrc.py b/plotly/validators/violin/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_colorsrc.py rename to plotly/validators/violin/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_family.py b/plotly/validators/violin/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_family.py rename to plotly/validators/violin/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_familysrc.py b/plotly/validators/violin/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_familysrc.py rename to plotly/validators/violin/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_lineposition.py b/plotly/validators/violin/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_lineposition.py rename to plotly/validators/violin/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_linepositionsrc.py b/plotly/validators/violin/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/violin/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_shadow.py b/plotly/validators/violin/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_shadow.py rename to plotly/validators/violin/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_shadowsrc.py b/plotly/validators/violin/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_shadowsrc.py rename to plotly/validators/violin/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_size.py b/plotly/validators/violin/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_size.py rename to plotly/validators/violin/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_sizesrc.py b/plotly/validators/violin/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_sizesrc.py rename to plotly/validators/violin/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_style.py b/plotly/validators/violin/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_style.py rename to plotly/validators/violin/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_stylesrc.py b/plotly/validators/violin/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_stylesrc.py rename to plotly/validators/violin/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_textcase.py b/plotly/validators/violin/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_textcase.py rename to plotly/validators/violin/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_textcasesrc.py b/plotly/validators/violin/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_textcasesrc.py rename to plotly/validators/violin/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_variant.py b/plotly/validators/violin/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_variant.py rename to plotly/validators/violin/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_variantsrc.py b/plotly/validators/violin/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_variantsrc.py rename to plotly/validators/violin/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_weight.py b/plotly/validators/violin/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_weight.py rename to plotly/validators/violin/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/violin/hoverlabel/font/_weightsrc.py b/plotly/validators/violin/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/hoverlabel/font/_weightsrc.py rename to plotly/validators/violin/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/__init__.py b/plotly/validators/violin/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/__init__.py rename to plotly/validators/violin/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/_font.py b/plotly/validators/violin/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/_font.py rename to plotly/validators/violin/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/_text.py b/plotly/validators/violin/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/_text.py rename to plotly/validators/violin/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/__init__.py b/plotly/validators/violin/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/__init__.py rename to plotly/validators/violin/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_color.py b/plotly/validators/violin/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_color.py rename to plotly/validators/violin/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_family.py b/plotly/validators/violin/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_family.py rename to plotly/validators/violin/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_lineposition.py b/plotly/validators/violin/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_lineposition.py rename to plotly/validators/violin/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_shadow.py b/plotly/validators/violin/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_shadow.py rename to plotly/validators/violin/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_size.py b/plotly/validators/violin/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_size.py rename to plotly/validators/violin/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_style.py b/plotly/validators/violin/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_style.py rename to plotly/validators/violin/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_textcase.py b/plotly/validators/violin/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_textcase.py rename to plotly/validators/violin/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_variant.py b/plotly/validators/violin/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_variant.py rename to plotly/validators/violin/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_weight.py b/plotly/validators/violin/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/legendgrouptitle/font/_weight.py rename to plotly/validators/violin/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/violin/line/__init__.py b/plotly/validators/violin/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/line/__init__.py rename to plotly/validators/violin/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/line/_color.py b/plotly/validators/violin/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/line/_color.py rename to plotly/validators/violin/line/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/line/_width.py b/plotly/validators/violin/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/line/_width.py rename to plotly/validators/violin/line/_width.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/__init__.py b/plotly/validators/violin/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/__init__.py rename to plotly/validators/violin/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/_angle.py b/plotly/validators/violin/marker/_angle.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/_angle.py rename to plotly/validators/violin/marker/_angle.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/_color.py b/plotly/validators/violin/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/_color.py rename to plotly/validators/violin/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/_line.py b/plotly/validators/violin/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/_line.py rename to plotly/validators/violin/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/_opacity.py b/plotly/validators/violin/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/_opacity.py rename to plotly/validators/violin/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/_outliercolor.py b/plotly/validators/violin/marker/_outliercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/_outliercolor.py rename to plotly/validators/violin/marker/_outliercolor.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/_size.py b/plotly/validators/violin/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/_size.py rename to plotly/validators/violin/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/_symbol.py b/plotly/validators/violin/marker/_symbol.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/_symbol.py rename to plotly/validators/violin/marker/_symbol.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/line/__init__.py b/plotly/validators/violin/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/line/__init__.py rename to plotly/validators/violin/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/line/_color.py b/plotly/validators/violin/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/line/_color.py rename to plotly/validators/violin/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/line/_outliercolor.py b/plotly/validators/violin/marker/line/_outliercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/line/_outliercolor.py rename to plotly/validators/violin/marker/line/_outliercolor.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/line/_outlierwidth.py b/plotly/validators/violin/marker/line/_outlierwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/line/_outlierwidth.py rename to plotly/validators/violin/marker/line/_outlierwidth.py diff --git a/packages/python/plotly/plotly/validators/violin/marker/line/_width.py b/plotly/validators/violin/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/marker/line/_width.py rename to plotly/validators/violin/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/violin/meanline/__init__.py b/plotly/validators/violin/meanline/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/meanline/__init__.py rename to plotly/validators/violin/meanline/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/meanline/_color.py b/plotly/validators/violin/meanline/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/meanline/_color.py rename to plotly/validators/violin/meanline/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/meanline/_visible.py b/plotly/validators/violin/meanline/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/meanline/_visible.py rename to plotly/validators/violin/meanline/_visible.py diff --git a/packages/python/plotly/plotly/validators/violin/meanline/_width.py b/plotly/validators/violin/meanline/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/meanline/_width.py rename to plotly/validators/violin/meanline/_width.py diff --git a/packages/python/plotly/plotly/validators/violin/selected/__init__.py b/plotly/validators/violin/selected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/selected/__init__.py rename to plotly/validators/violin/selected/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/selected/_marker.py b/plotly/validators/violin/selected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/selected/_marker.py rename to plotly/validators/violin/selected/_marker.py diff --git a/packages/python/plotly/plotly/validators/violin/selected/marker/__init__.py b/plotly/validators/violin/selected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/selected/marker/__init__.py rename to plotly/validators/violin/selected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/selected/marker/_color.py b/plotly/validators/violin/selected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/selected/marker/_color.py rename to plotly/validators/violin/selected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/selected/marker/_opacity.py b/plotly/validators/violin/selected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/selected/marker/_opacity.py rename to plotly/validators/violin/selected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/violin/selected/marker/_size.py b/plotly/validators/violin/selected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/selected/marker/_size.py rename to plotly/validators/violin/selected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/violin/stream/__init__.py b/plotly/validators/violin/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/stream/__init__.py rename to plotly/validators/violin/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/stream/_maxpoints.py b/plotly/validators/violin/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/stream/_maxpoints.py rename to plotly/validators/violin/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/violin/stream/_token.py b/plotly/validators/violin/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/stream/_token.py rename to plotly/validators/violin/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/violin/unselected/__init__.py b/plotly/validators/violin/unselected/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/unselected/__init__.py rename to plotly/validators/violin/unselected/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/unselected/_marker.py b/plotly/validators/violin/unselected/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/unselected/_marker.py rename to plotly/validators/violin/unselected/_marker.py diff --git a/packages/python/plotly/plotly/validators/violin/unselected/marker/__init__.py b/plotly/validators/violin/unselected/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/unselected/marker/__init__.py rename to plotly/validators/violin/unselected/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/violin/unselected/marker/_color.py b/plotly/validators/violin/unselected/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/unselected/marker/_color.py rename to plotly/validators/violin/unselected/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/violin/unselected/marker/_opacity.py b/plotly/validators/violin/unselected/marker/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/unselected/marker/_opacity.py rename to plotly/validators/violin/unselected/marker/_opacity.py diff --git a/packages/python/plotly/plotly/validators/violin/unselected/marker/_size.py b/plotly/validators/violin/unselected/marker/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/violin/unselected/marker/_size.py rename to plotly/validators/violin/unselected/marker/_size.py diff --git a/packages/python/plotly/plotly/validators/volume/__init__.py b/plotly/validators/volume/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/__init__.py rename to plotly/validators/volume/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/_autocolorscale.py b/plotly/validators/volume/_autocolorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_autocolorscale.py rename to plotly/validators/volume/_autocolorscale.py diff --git a/packages/python/plotly/plotly/validators/volume/_caps.py b/plotly/validators/volume/_caps.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_caps.py rename to plotly/validators/volume/_caps.py diff --git a/packages/python/plotly/plotly/validators/volume/_cauto.py b/plotly/validators/volume/_cauto.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_cauto.py rename to plotly/validators/volume/_cauto.py diff --git a/packages/python/plotly/plotly/validators/volume/_cmax.py b/plotly/validators/volume/_cmax.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_cmax.py rename to plotly/validators/volume/_cmax.py diff --git a/packages/python/plotly/plotly/validators/volume/_cmid.py b/plotly/validators/volume/_cmid.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_cmid.py rename to plotly/validators/volume/_cmid.py diff --git a/packages/python/plotly/plotly/validators/volume/_cmin.py b/plotly/validators/volume/_cmin.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_cmin.py rename to plotly/validators/volume/_cmin.py diff --git a/packages/python/plotly/plotly/validators/volume/_coloraxis.py b/plotly/validators/volume/_coloraxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_coloraxis.py rename to plotly/validators/volume/_coloraxis.py diff --git a/packages/python/plotly/plotly/validators/volume/_colorbar.py b/plotly/validators/volume/_colorbar.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_colorbar.py rename to plotly/validators/volume/_colorbar.py diff --git a/packages/python/plotly/plotly/validators/volume/_colorscale.py b/plotly/validators/volume/_colorscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_colorscale.py rename to plotly/validators/volume/_colorscale.py diff --git a/packages/python/plotly/plotly/validators/volume/_contour.py b/plotly/validators/volume/_contour.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_contour.py rename to plotly/validators/volume/_contour.py diff --git a/packages/python/plotly/plotly/validators/volume/_customdata.py b/plotly/validators/volume/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_customdata.py rename to plotly/validators/volume/_customdata.py diff --git a/packages/python/plotly/plotly/validators/volume/_customdatasrc.py b/plotly/validators/volume/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_customdatasrc.py rename to plotly/validators/volume/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_flatshading.py b/plotly/validators/volume/_flatshading.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_flatshading.py rename to plotly/validators/volume/_flatshading.py diff --git a/packages/python/plotly/plotly/validators/volume/_hoverinfo.py b/plotly/validators/volume/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_hoverinfo.py rename to plotly/validators/volume/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/volume/_hoverinfosrc.py b/plotly/validators/volume/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_hoverinfosrc.py rename to plotly/validators/volume/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_hoverlabel.py b/plotly/validators/volume/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_hoverlabel.py rename to plotly/validators/volume/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/volume/_hovertemplate.py b/plotly/validators/volume/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_hovertemplate.py rename to plotly/validators/volume/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/volume/_hovertemplatesrc.py b/plotly/validators/volume/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_hovertemplatesrc.py rename to plotly/validators/volume/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_hovertext.py b/plotly/validators/volume/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_hovertext.py rename to plotly/validators/volume/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/volume/_hovertextsrc.py b/plotly/validators/volume/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_hovertextsrc.py rename to plotly/validators/volume/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_ids.py b/plotly/validators/volume/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_ids.py rename to plotly/validators/volume/_ids.py diff --git a/packages/python/plotly/plotly/validators/volume/_idssrc.py b/plotly/validators/volume/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_idssrc.py rename to plotly/validators/volume/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_isomax.py b/plotly/validators/volume/_isomax.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_isomax.py rename to plotly/validators/volume/_isomax.py diff --git a/packages/python/plotly/plotly/validators/volume/_isomin.py b/plotly/validators/volume/_isomin.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_isomin.py rename to plotly/validators/volume/_isomin.py diff --git a/packages/python/plotly/plotly/validators/volume/_legend.py b/plotly/validators/volume/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_legend.py rename to plotly/validators/volume/_legend.py diff --git a/packages/python/plotly/plotly/validators/volume/_legendgroup.py b/plotly/validators/volume/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_legendgroup.py rename to plotly/validators/volume/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/volume/_legendgrouptitle.py b/plotly/validators/volume/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_legendgrouptitle.py rename to plotly/validators/volume/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/volume/_legendrank.py b/plotly/validators/volume/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_legendrank.py rename to plotly/validators/volume/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/volume/_legendwidth.py b/plotly/validators/volume/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_legendwidth.py rename to plotly/validators/volume/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/volume/_lighting.py b/plotly/validators/volume/_lighting.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_lighting.py rename to plotly/validators/volume/_lighting.py diff --git a/packages/python/plotly/plotly/validators/volume/_lightposition.py b/plotly/validators/volume/_lightposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_lightposition.py rename to plotly/validators/volume/_lightposition.py diff --git a/packages/python/plotly/plotly/validators/volume/_meta.py b/plotly/validators/volume/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_meta.py rename to plotly/validators/volume/_meta.py diff --git a/packages/python/plotly/plotly/validators/volume/_metasrc.py b/plotly/validators/volume/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_metasrc.py rename to plotly/validators/volume/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_name.py b/plotly/validators/volume/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_name.py rename to plotly/validators/volume/_name.py diff --git a/packages/python/plotly/plotly/validators/volume/_opacity.py b/plotly/validators/volume/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_opacity.py rename to plotly/validators/volume/_opacity.py diff --git a/packages/python/plotly/plotly/validators/volume/_opacityscale.py b/plotly/validators/volume/_opacityscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_opacityscale.py rename to plotly/validators/volume/_opacityscale.py diff --git a/packages/python/plotly/plotly/validators/volume/_reversescale.py b/plotly/validators/volume/_reversescale.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_reversescale.py rename to plotly/validators/volume/_reversescale.py diff --git a/packages/python/plotly/plotly/validators/volume/_scene.py b/plotly/validators/volume/_scene.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_scene.py rename to plotly/validators/volume/_scene.py diff --git a/packages/python/plotly/plotly/validators/volume/_showlegend.py b/plotly/validators/volume/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_showlegend.py rename to plotly/validators/volume/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/volume/_showscale.py b/plotly/validators/volume/_showscale.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_showscale.py rename to plotly/validators/volume/_showscale.py diff --git a/packages/python/plotly/plotly/validators/volume/_slices.py b/plotly/validators/volume/_slices.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_slices.py rename to plotly/validators/volume/_slices.py diff --git a/packages/python/plotly/plotly/validators/volume/_spaceframe.py b/plotly/validators/volume/_spaceframe.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_spaceframe.py rename to plotly/validators/volume/_spaceframe.py diff --git a/packages/python/plotly/plotly/validators/volume/_stream.py b/plotly/validators/volume/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_stream.py rename to plotly/validators/volume/_stream.py diff --git a/packages/python/plotly/plotly/validators/volume/_surface.py b/plotly/validators/volume/_surface.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_surface.py rename to plotly/validators/volume/_surface.py diff --git a/packages/python/plotly/plotly/validators/volume/_text.py b/plotly/validators/volume/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_text.py rename to plotly/validators/volume/_text.py diff --git a/packages/python/plotly/plotly/validators/volume/_textsrc.py b/plotly/validators/volume/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_textsrc.py rename to plotly/validators/volume/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_uid.py b/plotly/validators/volume/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_uid.py rename to plotly/validators/volume/_uid.py diff --git a/packages/python/plotly/plotly/validators/volume/_uirevision.py b/plotly/validators/volume/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_uirevision.py rename to plotly/validators/volume/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/volume/_value.py b/plotly/validators/volume/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_value.py rename to plotly/validators/volume/_value.py diff --git a/packages/python/plotly/plotly/validators/volume/_valuehoverformat.py b/plotly/validators/volume/_valuehoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_valuehoverformat.py rename to plotly/validators/volume/_valuehoverformat.py diff --git a/packages/python/plotly/plotly/validators/volume/_valuesrc.py b/plotly/validators/volume/_valuesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_valuesrc.py rename to plotly/validators/volume/_valuesrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_visible.py b/plotly/validators/volume/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_visible.py rename to plotly/validators/volume/_visible.py diff --git a/packages/python/plotly/plotly/validators/volume/_x.py b/plotly/validators/volume/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_x.py rename to plotly/validators/volume/_x.py diff --git a/packages/python/plotly/plotly/validators/volume/_xhoverformat.py b/plotly/validators/volume/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_xhoverformat.py rename to plotly/validators/volume/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/volume/_xsrc.py b/plotly/validators/volume/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_xsrc.py rename to plotly/validators/volume/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_y.py b/plotly/validators/volume/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_y.py rename to plotly/validators/volume/_y.py diff --git a/packages/python/plotly/plotly/validators/volume/_yhoverformat.py b/plotly/validators/volume/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_yhoverformat.py rename to plotly/validators/volume/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/volume/_ysrc.py b/plotly/validators/volume/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_ysrc.py rename to plotly/validators/volume/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/volume/_z.py b/plotly/validators/volume/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_z.py rename to plotly/validators/volume/_z.py diff --git a/packages/python/plotly/plotly/validators/volume/_zhoverformat.py b/plotly/validators/volume/_zhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_zhoverformat.py rename to plotly/validators/volume/_zhoverformat.py diff --git a/packages/python/plotly/plotly/validators/volume/_zsrc.py b/plotly/validators/volume/_zsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/_zsrc.py rename to plotly/validators/volume/_zsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/__init__.py b/plotly/validators/volume/caps/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/__init__.py rename to plotly/validators/volume/caps/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/_x.py b/plotly/validators/volume/caps/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/_x.py rename to plotly/validators/volume/caps/_x.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/_y.py b/plotly/validators/volume/caps/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/_y.py rename to plotly/validators/volume/caps/_y.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/_z.py b/plotly/validators/volume/caps/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/_z.py rename to plotly/validators/volume/caps/_z.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/x/__init__.py b/plotly/validators/volume/caps/x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/x/__init__.py rename to plotly/validators/volume/caps/x/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/x/_fill.py b/plotly/validators/volume/caps/x/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/x/_fill.py rename to plotly/validators/volume/caps/x/_fill.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/x/_show.py b/plotly/validators/volume/caps/x/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/x/_show.py rename to plotly/validators/volume/caps/x/_show.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/y/__init__.py b/plotly/validators/volume/caps/y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/y/__init__.py rename to plotly/validators/volume/caps/y/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/y/_fill.py b/plotly/validators/volume/caps/y/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/y/_fill.py rename to plotly/validators/volume/caps/y/_fill.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/y/_show.py b/plotly/validators/volume/caps/y/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/y/_show.py rename to plotly/validators/volume/caps/y/_show.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/z/__init__.py b/plotly/validators/volume/caps/z/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/z/__init__.py rename to plotly/validators/volume/caps/z/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/z/_fill.py b/plotly/validators/volume/caps/z/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/z/_fill.py rename to plotly/validators/volume/caps/z/_fill.py diff --git a/packages/python/plotly/plotly/validators/volume/caps/z/_show.py b/plotly/validators/volume/caps/z/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/caps/z/_show.py rename to plotly/validators/volume/caps/z/_show.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/__init__.py b/plotly/validators/volume/colorbar/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/__init__.py rename to plotly/validators/volume/colorbar/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_bgcolor.py b/plotly/validators/volume/colorbar/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_bgcolor.py rename to plotly/validators/volume/colorbar/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_bordercolor.py b/plotly/validators/volume/colorbar/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_bordercolor.py rename to plotly/validators/volume/colorbar/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_borderwidth.py b/plotly/validators/volume/colorbar/_borderwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_borderwidth.py rename to plotly/validators/volume/colorbar/_borderwidth.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_dtick.py b/plotly/validators/volume/colorbar/_dtick.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_dtick.py rename to plotly/validators/volume/colorbar/_dtick.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_exponentformat.py b/plotly/validators/volume/colorbar/_exponentformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_exponentformat.py rename to plotly/validators/volume/colorbar/_exponentformat.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_labelalias.py b/plotly/validators/volume/colorbar/_labelalias.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_labelalias.py rename to plotly/validators/volume/colorbar/_labelalias.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_len.py b/plotly/validators/volume/colorbar/_len.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_len.py rename to plotly/validators/volume/colorbar/_len.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_lenmode.py b/plotly/validators/volume/colorbar/_lenmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_lenmode.py rename to plotly/validators/volume/colorbar/_lenmode.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_minexponent.py b/plotly/validators/volume/colorbar/_minexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_minexponent.py rename to plotly/validators/volume/colorbar/_minexponent.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_nticks.py b/plotly/validators/volume/colorbar/_nticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_nticks.py rename to plotly/validators/volume/colorbar/_nticks.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_orientation.py b/plotly/validators/volume/colorbar/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_orientation.py rename to plotly/validators/volume/colorbar/_orientation.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_outlinecolor.py b/plotly/validators/volume/colorbar/_outlinecolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_outlinecolor.py rename to plotly/validators/volume/colorbar/_outlinecolor.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_outlinewidth.py b/plotly/validators/volume/colorbar/_outlinewidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_outlinewidth.py rename to plotly/validators/volume/colorbar/_outlinewidth.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_separatethousands.py b/plotly/validators/volume/colorbar/_separatethousands.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_separatethousands.py rename to plotly/validators/volume/colorbar/_separatethousands.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_showexponent.py b/plotly/validators/volume/colorbar/_showexponent.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_showexponent.py rename to plotly/validators/volume/colorbar/_showexponent.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_showticklabels.py b/plotly/validators/volume/colorbar/_showticklabels.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_showticklabels.py rename to plotly/validators/volume/colorbar/_showticklabels.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_showtickprefix.py b/plotly/validators/volume/colorbar/_showtickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_showtickprefix.py rename to plotly/validators/volume/colorbar/_showtickprefix.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_showticksuffix.py b/plotly/validators/volume/colorbar/_showticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_showticksuffix.py rename to plotly/validators/volume/colorbar/_showticksuffix.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_thickness.py b/plotly/validators/volume/colorbar/_thickness.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_thickness.py rename to plotly/validators/volume/colorbar/_thickness.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_thicknessmode.py b/plotly/validators/volume/colorbar/_thicknessmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_thicknessmode.py rename to plotly/validators/volume/colorbar/_thicknessmode.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tick0.py b/plotly/validators/volume/colorbar/_tick0.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tick0.py rename to plotly/validators/volume/colorbar/_tick0.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickangle.py b/plotly/validators/volume/colorbar/_tickangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickangle.py rename to plotly/validators/volume/colorbar/_tickangle.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickcolor.py b/plotly/validators/volume/colorbar/_tickcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickcolor.py rename to plotly/validators/volume/colorbar/_tickcolor.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickfont.py b/plotly/validators/volume/colorbar/_tickfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickfont.py rename to plotly/validators/volume/colorbar/_tickfont.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickformat.py b/plotly/validators/volume/colorbar/_tickformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickformat.py rename to plotly/validators/volume/colorbar/_tickformat.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickformatstopdefaults.py b/plotly/validators/volume/colorbar/_tickformatstopdefaults.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickformatstopdefaults.py rename to plotly/validators/volume/colorbar/_tickformatstopdefaults.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickformatstops.py b/plotly/validators/volume/colorbar/_tickformatstops.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickformatstops.py rename to plotly/validators/volume/colorbar/_tickformatstops.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ticklabeloverflow.py b/plotly/validators/volume/colorbar/_ticklabeloverflow.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ticklabeloverflow.py rename to plotly/validators/volume/colorbar/_ticklabeloverflow.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ticklabelposition.py b/plotly/validators/volume/colorbar/_ticklabelposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ticklabelposition.py rename to plotly/validators/volume/colorbar/_ticklabelposition.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ticklabelstep.py b/plotly/validators/volume/colorbar/_ticklabelstep.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ticklabelstep.py rename to plotly/validators/volume/colorbar/_ticklabelstep.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ticklen.py b/plotly/validators/volume/colorbar/_ticklen.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ticklen.py rename to plotly/validators/volume/colorbar/_ticklen.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickmode.py b/plotly/validators/volume/colorbar/_tickmode.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickmode.py rename to plotly/validators/volume/colorbar/_tickmode.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickprefix.py b/plotly/validators/volume/colorbar/_tickprefix.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickprefix.py rename to plotly/validators/volume/colorbar/_tickprefix.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ticks.py b/plotly/validators/volume/colorbar/_ticks.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ticks.py rename to plotly/validators/volume/colorbar/_ticks.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ticksuffix.py b/plotly/validators/volume/colorbar/_ticksuffix.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ticksuffix.py rename to plotly/validators/volume/colorbar/_ticksuffix.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ticktext.py b/plotly/validators/volume/colorbar/_ticktext.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ticktext.py rename to plotly/validators/volume/colorbar/_ticktext.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ticktextsrc.py b/plotly/validators/volume/colorbar/_ticktextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ticktextsrc.py rename to plotly/validators/volume/colorbar/_ticktextsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickvals.py b/plotly/validators/volume/colorbar/_tickvals.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickvals.py rename to plotly/validators/volume/colorbar/_tickvals.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickvalssrc.py b/plotly/validators/volume/colorbar/_tickvalssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickvalssrc.py rename to plotly/validators/volume/colorbar/_tickvalssrc.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_tickwidth.py b/plotly/validators/volume/colorbar/_tickwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_tickwidth.py rename to plotly/validators/volume/colorbar/_tickwidth.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_title.py b/plotly/validators/volume/colorbar/_title.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_title.py rename to plotly/validators/volume/colorbar/_title.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_x.py b/plotly/validators/volume/colorbar/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_x.py rename to plotly/validators/volume/colorbar/_x.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_xanchor.py b/plotly/validators/volume/colorbar/_xanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_xanchor.py rename to plotly/validators/volume/colorbar/_xanchor.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_xpad.py b/plotly/validators/volume/colorbar/_xpad.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_xpad.py rename to plotly/validators/volume/colorbar/_xpad.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_xref.py b/plotly/validators/volume/colorbar/_xref.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_xref.py rename to plotly/validators/volume/colorbar/_xref.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_y.py b/plotly/validators/volume/colorbar/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_y.py rename to plotly/validators/volume/colorbar/_y.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_yanchor.py b/plotly/validators/volume/colorbar/_yanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_yanchor.py rename to plotly/validators/volume/colorbar/_yanchor.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_ypad.py b/plotly/validators/volume/colorbar/_ypad.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_ypad.py rename to plotly/validators/volume/colorbar/_ypad.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/_yref.py b/plotly/validators/volume/colorbar/_yref.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/_yref.py rename to plotly/validators/volume/colorbar/_yref.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/__init__.py b/plotly/validators/volume/colorbar/tickfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/__init__.py rename to plotly/validators/volume/colorbar/tickfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_color.py b/plotly/validators/volume/colorbar/tickfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_color.py rename to plotly/validators/volume/colorbar/tickfont/_color.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_family.py b/plotly/validators/volume/colorbar/tickfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_family.py rename to plotly/validators/volume/colorbar/tickfont/_family.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_lineposition.py b/plotly/validators/volume/colorbar/tickfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_lineposition.py rename to plotly/validators/volume/colorbar/tickfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_shadow.py b/plotly/validators/volume/colorbar/tickfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_shadow.py rename to plotly/validators/volume/colorbar/tickfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_size.py b/plotly/validators/volume/colorbar/tickfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_size.py rename to plotly/validators/volume/colorbar/tickfont/_size.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_style.py b/plotly/validators/volume/colorbar/tickfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_style.py rename to plotly/validators/volume/colorbar/tickfont/_style.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_textcase.py b/plotly/validators/volume/colorbar/tickfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_textcase.py rename to plotly/validators/volume/colorbar/tickfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_variant.py b/plotly/validators/volume/colorbar/tickfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_variant.py rename to plotly/validators/volume/colorbar/tickfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_weight.py b/plotly/validators/volume/colorbar/tickfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickfont/_weight.py rename to plotly/validators/volume/colorbar/tickfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/__init__.py b/plotly/validators/volume/colorbar/tickformatstop/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/__init__.py rename to plotly/validators/volume/colorbar/tickformatstop/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_dtickrange.py b/plotly/validators/volume/colorbar/tickformatstop/_dtickrange.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_dtickrange.py rename to plotly/validators/volume/colorbar/tickformatstop/_dtickrange.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_enabled.py b/plotly/validators/volume/colorbar/tickformatstop/_enabled.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_enabled.py rename to plotly/validators/volume/colorbar/tickformatstop/_enabled.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_name.py b/plotly/validators/volume/colorbar/tickformatstop/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_name.py rename to plotly/validators/volume/colorbar/tickformatstop/_name.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_templateitemname.py b/plotly/validators/volume/colorbar/tickformatstop/_templateitemname.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_templateitemname.py rename to plotly/validators/volume/colorbar/tickformatstop/_templateitemname.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_value.py b/plotly/validators/volume/colorbar/tickformatstop/_value.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/tickformatstop/_value.py rename to plotly/validators/volume/colorbar/tickformatstop/_value.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/__init__.py b/plotly/validators/volume/colorbar/title/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/__init__.py rename to plotly/validators/volume/colorbar/title/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/_font.py b/plotly/validators/volume/colorbar/title/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/_font.py rename to plotly/validators/volume/colorbar/title/_font.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/_side.py b/plotly/validators/volume/colorbar/title/_side.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/_side.py rename to plotly/validators/volume/colorbar/title/_side.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/_text.py b/plotly/validators/volume/colorbar/title/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/_text.py rename to plotly/validators/volume/colorbar/title/_text.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/__init__.py b/plotly/validators/volume/colorbar/title/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/__init__.py rename to plotly/validators/volume/colorbar/title/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_color.py b/plotly/validators/volume/colorbar/title/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_color.py rename to plotly/validators/volume/colorbar/title/font/_color.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_family.py b/plotly/validators/volume/colorbar/title/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_family.py rename to plotly/validators/volume/colorbar/title/font/_family.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_lineposition.py b/plotly/validators/volume/colorbar/title/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_lineposition.py rename to plotly/validators/volume/colorbar/title/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_shadow.py b/plotly/validators/volume/colorbar/title/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_shadow.py rename to plotly/validators/volume/colorbar/title/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_size.py b/plotly/validators/volume/colorbar/title/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_size.py rename to plotly/validators/volume/colorbar/title/font/_size.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_style.py b/plotly/validators/volume/colorbar/title/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_style.py rename to plotly/validators/volume/colorbar/title/font/_style.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_textcase.py b/plotly/validators/volume/colorbar/title/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_textcase.py rename to plotly/validators/volume/colorbar/title/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_variant.py b/plotly/validators/volume/colorbar/title/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_variant.py rename to plotly/validators/volume/colorbar/title/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/volume/colorbar/title/font/_weight.py b/plotly/validators/volume/colorbar/title/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/colorbar/title/font/_weight.py rename to plotly/validators/volume/colorbar/title/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/volume/contour/__init__.py b/plotly/validators/volume/contour/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/contour/__init__.py rename to plotly/validators/volume/contour/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/contour/_color.py b/plotly/validators/volume/contour/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/contour/_color.py rename to plotly/validators/volume/contour/_color.py diff --git a/packages/python/plotly/plotly/validators/volume/contour/_show.py b/plotly/validators/volume/contour/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/contour/_show.py rename to plotly/validators/volume/contour/_show.py diff --git a/packages/python/plotly/plotly/validators/volume/contour/_width.py b/plotly/validators/volume/contour/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/contour/_width.py rename to plotly/validators/volume/contour/_width.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/__init__.py b/plotly/validators/volume/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/__init__.py rename to plotly/validators/volume/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_align.py b/plotly/validators/volume/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_align.py rename to plotly/validators/volume/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_alignsrc.py b/plotly/validators/volume/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_alignsrc.py rename to plotly/validators/volume/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_bgcolor.py b/plotly/validators/volume/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_bgcolor.py rename to plotly/validators/volume/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_bgcolorsrc.py b/plotly/validators/volume/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_bgcolorsrc.py rename to plotly/validators/volume/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_bordercolor.py b/plotly/validators/volume/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_bordercolor.py rename to plotly/validators/volume/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_bordercolorsrc.py b/plotly/validators/volume/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_bordercolorsrc.py rename to plotly/validators/volume/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_font.py b/plotly/validators/volume/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_font.py rename to plotly/validators/volume/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_namelength.py b/plotly/validators/volume/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_namelength.py rename to plotly/validators/volume/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/_namelengthsrc.py b/plotly/validators/volume/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/_namelengthsrc.py rename to plotly/validators/volume/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/__init__.py b/plotly/validators/volume/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/__init__.py rename to plotly/validators/volume/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_color.py b/plotly/validators/volume/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_color.py rename to plotly/validators/volume/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_colorsrc.py b/plotly/validators/volume/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_colorsrc.py rename to plotly/validators/volume/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_family.py b/plotly/validators/volume/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_family.py rename to plotly/validators/volume/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_familysrc.py b/plotly/validators/volume/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_familysrc.py rename to plotly/validators/volume/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_lineposition.py b/plotly/validators/volume/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_lineposition.py rename to plotly/validators/volume/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_linepositionsrc.py b/plotly/validators/volume/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/volume/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_shadow.py b/plotly/validators/volume/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_shadow.py rename to plotly/validators/volume/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_shadowsrc.py b/plotly/validators/volume/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_shadowsrc.py rename to plotly/validators/volume/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_size.py b/plotly/validators/volume/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_size.py rename to plotly/validators/volume/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_sizesrc.py b/plotly/validators/volume/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_sizesrc.py rename to plotly/validators/volume/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_style.py b/plotly/validators/volume/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_style.py rename to plotly/validators/volume/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_stylesrc.py b/plotly/validators/volume/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_stylesrc.py rename to plotly/validators/volume/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_textcase.py b/plotly/validators/volume/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_textcase.py rename to plotly/validators/volume/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_textcasesrc.py b/plotly/validators/volume/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_textcasesrc.py rename to plotly/validators/volume/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_variant.py b/plotly/validators/volume/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_variant.py rename to plotly/validators/volume/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_variantsrc.py b/plotly/validators/volume/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_variantsrc.py rename to plotly/validators/volume/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_weight.py b/plotly/validators/volume/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_weight.py rename to plotly/validators/volume/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/volume/hoverlabel/font/_weightsrc.py b/plotly/validators/volume/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/hoverlabel/font/_weightsrc.py rename to plotly/validators/volume/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/__init__.py b/plotly/validators/volume/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/__init__.py rename to plotly/validators/volume/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/_font.py b/plotly/validators/volume/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/_font.py rename to plotly/validators/volume/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/_text.py b/plotly/validators/volume/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/_text.py rename to plotly/validators/volume/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/__init__.py b/plotly/validators/volume/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/__init__.py rename to plotly/validators/volume/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_color.py b/plotly/validators/volume/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_color.py rename to plotly/validators/volume/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_family.py b/plotly/validators/volume/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_family.py rename to plotly/validators/volume/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_lineposition.py b/plotly/validators/volume/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_lineposition.py rename to plotly/validators/volume/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_shadow.py b/plotly/validators/volume/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_shadow.py rename to plotly/validators/volume/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_size.py b/plotly/validators/volume/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_size.py rename to plotly/validators/volume/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_style.py b/plotly/validators/volume/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_style.py rename to plotly/validators/volume/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_textcase.py b/plotly/validators/volume/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_textcase.py rename to plotly/validators/volume/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_variant.py b/plotly/validators/volume/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_variant.py rename to plotly/validators/volume/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_weight.py b/plotly/validators/volume/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/legendgrouptitle/font/_weight.py rename to plotly/validators/volume/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/volume/lighting/__init__.py b/plotly/validators/volume/lighting/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lighting/__init__.py rename to plotly/validators/volume/lighting/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/lighting/_ambient.py b/plotly/validators/volume/lighting/_ambient.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lighting/_ambient.py rename to plotly/validators/volume/lighting/_ambient.py diff --git a/packages/python/plotly/plotly/validators/volume/lighting/_diffuse.py b/plotly/validators/volume/lighting/_diffuse.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lighting/_diffuse.py rename to plotly/validators/volume/lighting/_diffuse.py diff --git a/packages/python/plotly/plotly/validators/volume/lighting/_facenormalsepsilon.py b/plotly/validators/volume/lighting/_facenormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lighting/_facenormalsepsilon.py rename to plotly/validators/volume/lighting/_facenormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/volume/lighting/_fresnel.py b/plotly/validators/volume/lighting/_fresnel.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lighting/_fresnel.py rename to plotly/validators/volume/lighting/_fresnel.py diff --git a/packages/python/plotly/plotly/validators/volume/lighting/_roughness.py b/plotly/validators/volume/lighting/_roughness.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lighting/_roughness.py rename to plotly/validators/volume/lighting/_roughness.py diff --git a/packages/python/plotly/plotly/validators/volume/lighting/_specular.py b/plotly/validators/volume/lighting/_specular.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lighting/_specular.py rename to plotly/validators/volume/lighting/_specular.py diff --git a/packages/python/plotly/plotly/validators/volume/lighting/_vertexnormalsepsilon.py b/plotly/validators/volume/lighting/_vertexnormalsepsilon.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lighting/_vertexnormalsepsilon.py rename to plotly/validators/volume/lighting/_vertexnormalsepsilon.py diff --git a/packages/python/plotly/plotly/validators/volume/lightposition/__init__.py b/plotly/validators/volume/lightposition/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lightposition/__init__.py rename to plotly/validators/volume/lightposition/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/lightposition/_x.py b/plotly/validators/volume/lightposition/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lightposition/_x.py rename to plotly/validators/volume/lightposition/_x.py diff --git a/packages/python/plotly/plotly/validators/volume/lightposition/_y.py b/plotly/validators/volume/lightposition/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lightposition/_y.py rename to plotly/validators/volume/lightposition/_y.py diff --git a/packages/python/plotly/plotly/validators/volume/lightposition/_z.py b/plotly/validators/volume/lightposition/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/lightposition/_z.py rename to plotly/validators/volume/lightposition/_z.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/__init__.py b/plotly/validators/volume/slices/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/__init__.py rename to plotly/validators/volume/slices/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/_x.py b/plotly/validators/volume/slices/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/_x.py rename to plotly/validators/volume/slices/_x.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/_y.py b/plotly/validators/volume/slices/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/_y.py rename to plotly/validators/volume/slices/_y.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/_z.py b/plotly/validators/volume/slices/_z.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/_z.py rename to plotly/validators/volume/slices/_z.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/x/__init__.py b/plotly/validators/volume/slices/x/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/x/__init__.py rename to plotly/validators/volume/slices/x/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/x/_fill.py b/plotly/validators/volume/slices/x/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/x/_fill.py rename to plotly/validators/volume/slices/x/_fill.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/x/_locations.py b/plotly/validators/volume/slices/x/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/x/_locations.py rename to plotly/validators/volume/slices/x/_locations.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/x/_locationssrc.py b/plotly/validators/volume/slices/x/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/x/_locationssrc.py rename to plotly/validators/volume/slices/x/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/x/_show.py b/plotly/validators/volume/slices/x/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/x/_show.py rename to plotly/validators/volume/slices/x/_show.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/y/__init__.py b/plotly/validators/volume/slices/y/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/y/__init__.py rename to plotly/validators/volume/slices/y/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/y/_fill.py b/plotly/validators/volume/slices/y/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/y/_fill.py rename to plotly/validators/volume/slices/y/_fill.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/y/_locations.py b/plotly/validators/volume/slices/y/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/y/_locations.py rename to plotly/validators/volume/slices/y/_locations.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/y/_locationssrc.py b/plotly/validators/volume/slices/y/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/y/_locationssrc.py rename to plotly/validators/volume/slices/y/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/y/_show.py b/plotly/validators/volume/slices/y/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/y/_show.py rename to plotly/validators/volume/slices/y/_show.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/z/__init__.py b/plotly/validators/volume/slices/z/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/z/__init__.py rename to plotly/validators/volume/slices/z/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/z/_fill.py b/plotly/validators/volume/slices/z/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/z/_fill.py rename to plotly/validators/volume/slices/z/_fill.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/z/_locations.py b/plotly/validators/volume/slices/z/_locations.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/z/_locations.py rename to plotly/validators/volume/slices/z/_locations.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/z/_locationssrc.py b/plotly/validators/volume/slices/z/_locationssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/z/_locationssrc.py rename to plotly/validators/volume/slices/z/_locationssrc.py diff --git a/packages/python/plotly/plotly/validators/volume/slices/z/_show.py b/plotly/validators/volume/slices/z/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/slices/z/_show.py rename to plotly/validators/volume/slices/z/_show.py diff --git a/packages/python/plotly/plotly/validators/volume/spaceframe/__init__.py b/plotly/validators/volume/spaceframe/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/spaceframe/__init__.py rename to plotly/validators/volume/spaceframe/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/spaceframe/_fill.py b/plotly/validators/volume/spaceframe/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/spaceframe/_fill.py rename to plotly/validators/volume/spaceframe/_fill.py diff --git a/packages/python/plotly/plotly/validators/volume/spaceframe/_show.py b/plotly/validators/volume/spaceframe/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/spaceframe/_show.py rename to plotly/validators/volume/spaceframe/_show.py diff --git a/packages/python/plotly/plotly/validators/volume/stream/__init__.py b/plotly/validators/volume/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/stream/__init__.py rename to plotly/validators/volume/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/stream/_maxpoints.py b/plotly/validators/volume/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/stream/_maxpoints.py rename to plotly/validators/volume/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/volume/stream/_token.py b/plotly/validators/volume/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/stream/_token.py rename to plotly/validators/volume/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/volume/surface/__init__.py b/plotly/validators/volume/surface/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/surface/__init__.py rename to plotly/validators/volume/surface/__init__.py diff --git a/packages/python/plotly/plotly/validators/volume/surface/_count.py b/plotly/validators/volume/surface/_count.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/surface/_count.py rename to plotly/validators/volume/surface/_count.py diff --git a/packages/python/plotly/plotly/validators/volume/surface/_fill.py b/plotly/validators/volume/surface/_fill.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/surface/_fill.py rename to plotly/validators/volume/surface/_fill.py diff --git a/packages/python/plotly/plotly/validators/volume/surface/_pattern.py b/plotly/validators/volume/surface/_pattern.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/surface/_pattern.py rename to plotly/validators/volume/surface/_pattern.py diff --git a/packages/python/plotly/plotly/validators/volume/surface/_show.py b/plotly/validators/volume/surface/_show.py similarity index 100% rename from packages/python/plotly/plotly/validators/volume/surface/_show.py rename to plotly/validators/volume/surface/_show.py diff --git a/packages/python/plotly/plotly/validators/waterfall/__init__.py b/plotly/validators/waterfall/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/__init__.py rename to plotly/validators/waterfall/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_alignmentgroup.py b/plotly/validators/waterfall/_alignmentgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_alignmentgroup.py rename to plotly/validators/waterfall/_alignmentgroup.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_base.py b/plotly/validators/waterfall/_base.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_base.py rename to plotly/validators/waterfall/_base.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_cliponaxis.py b/plotly/validators/waterfall/_cliponaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_cliponaxis.py rename to plotly/validators/waterfall/_cliponaxis.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_connector.py b/plotly/validators/waterfall/_connector.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_connector.py rename to plotly/validators/waterfall/_connector.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_constraintext.py b/plotly/validators/waterfall/_constraintext.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_constraintext.py rename to plotly/validators/waterfall/_constraintext.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_customdata.py b/plotly/validators/waterfall/_customdata.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_customdata.py rename to plotly/validators/waterfall/_customdata.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_customdatasrc.py b/plotly/validators/waterfall/_customdatasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_customdatasrc.py rename to plotly/validators/waterfall/_customdatasrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_decreasing.py b/plotly/validators/waterfall/_decreasing.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_decreasing.py rename to plotly/validators/waterfall/_decreasing.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_dx.py b/plotly/validators/waterfall/_dx.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_dx.py rename to plotly/validators/waterfall/_dx.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_dy.py b/plotly/validators/waterfall/_dy.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_dy.py rename to plotly/validators/waterfall/_dy.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_hoverinfo.py b/plotly/validators/waterfall/_hoverinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_hoverinfo.py rename to plotly/validators/waterfall/_hoverinfo.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_hoverinfosrc.py b/plotly/validators/waterfall/_hoverinfosrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_hoverinfosrc.py rename to plotly/validators/waterfall/_hoverinfosrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_hoverlabel.py b/plotly/validators/waterfall/_hoverlabel.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_hoverlabel.py rename to plotly/validators/waterfall/_hoverlabel.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_hovertemplate.py b/plotly/validators/waterfall/_hovertemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_hovertemplate.py rename to plotly/validators/waterfall/_hovertemplate.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_hovertemplatesrc.py b/plotly/validators/waterfall/_hovertemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_hovertemplatesrc.py rename to plotly/validators/waterfall/_hovertemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_hovertext.py b/plotly/validators/waterfall/_hovertext.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_hovertext.py rename to plotly/validators/waterfall/_hovertext.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_hovertextsrc.py b/plotly/validators/waterfall/_hovertextsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_hovertextsrc.py rename to plotly/validators/waterfall/_hovertextsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_ids.py b/plotly/validators/waterfall/_ids.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_ids.py rename to plotly/validators/waterfall/_ids.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_idssrc.py b/plotly/validators/waterfall/_idssrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_idssrc.py rename to plotly/validators/waterfall/_idssrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_increasing.py b/plotly/validators/waterfall/_increasing.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_increasing.py rename to plotly/validators/waterfall/_increasing.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_insidetextanchor.py b/plotly/validators/waterfall/_insidetextanchor.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_insidetextanchor.py rename to plotly/validators/waterfall/_insidetextanchor.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_insidetextfont.py b/plotly/validators/waterfall/_insidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_insidetextfont.py rename to plotly/validators/waterfall/_insidetextfont.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_legend.py b/plotly/validators/waterfall/_legend.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_legend.py rename to plotly/validators/waterfall/_legend.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_legendgroup.py b/plotly/validators/waterfall/_legendgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_legendgroup.py rename to plotly/validators/waterfall/_legendgroup.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_legendgrouptitle.py b/plotly/validators/waterfall/_legendgrouptitle.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_legendgrouptitle.py rename to plotly/validators/waterfall/_legendgrouptitle.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_legendrank.py b/plotly/validators/waterfall/_legendrank.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_legendrank.py rename to plotly/validators/waterfall/_legendrank.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_legendwidth.py b/plotly/validators/waterfall/_legendwidth.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_legendwidth.py rename to plotly/validators/waterfall/_legendwidth.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_measure.py b/plotly/validators/waterfall/_measure.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_measure.py rename to plotly/validators/waterfall/_measure.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_measuresrc.py b/plotly/validators/waterfall/_measuresrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_measuresrc.py rename to plotly/validators/waterfall/_measuresrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_meta.py b/plotly/validators/waterfall/_meta.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_meta.py rename to plotly/validators/waterfall/_meta.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_metasrc.py b/plotly/validators/waterfall/_metasrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_metasrc.py rename to plotly/validators/waterfall/_metasrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_name.py b/plotly/validators/waterfall/_name.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_name.py rename to plotly/validators/waterfall/_name.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_offset.py b/plotly/validators/waterfall/_offset.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_offset.py rename to plotly/validators/waterfall/_offset.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_offsetgroup.py b/plotly/validators/waterfall/_offsetgroup.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_offsetgroup.py rename to plotly/validators/waterfall/_offsetgroup.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_offsetsrc.py b/plotly/validators/waterfall/_offsetsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_offsetsrc.py rename to plotly/validators/waterfall/_offsetsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_opacity.py b/plotly/validators/waterfall/_opacity.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_opacity.py rename to plotly/validators/waterfall/_opacity.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_orientation.py b/plotly/validators/waterfall/_orientation.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_orientation.py rename to plotly/validators/waterfall/_orientation.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_outsidetextfont.py b/plotly/validators/waterfall/_outsidetextfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_outsidetextfont.py rename to plotly/validators/waterfall/_outsidetextfont.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_selectedpoints.py b/plotly/validators/waterfall/_selectedpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_selectedpoints.py rename to plotly/validators/waterfall/_selectedpoints.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_showlegend.py b/plotly/validators/waterfall/_showlegend.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_showlegend.py rename to plotly/validators/waterfall/_showlegend.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_stream.py b/plotly/validators/waterfall/_stream.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_stream.py rename to plotly/validators/waterfall/_stream.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_text.py b/plotly/validators/waterfall/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_text.py rename to plotly/validators/waterfall/_text.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_textangle.py b/plotly/validators/waterfall/_textangle.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_textangle.py rename to plotly/validators/waterfall/_textangle.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_textfont.py b/plotly/validators/waterfall/_textfont.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_textfont.py rename to plotly/validators/waterfall/_textfont.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_textinfo.py b/plotly/validators/waterfall/_textinfo.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_textinfo.py rename to plotly/validators/waterfall/_textinfo.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_textposition.py b/plotly/validators/waterfall/_textposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_textposition.py rename to plotly/validators/waterfall/_textposition.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_textpositionsrc.py b/plotly/validators/waterfall/_textpositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_textpositionsrc.py rename to plotly/validators/waterfall/_textpositionsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_textsrc.py b/plotly/validators/waterfall/_textsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_textsrc.py rename to plotly/validators/waterfall/_textsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_texttemplate.py b/plotly/validators/waterfall/_texttemplate.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_texttemplate.py rename to plotly/validators/waterfall/_texttemplate.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_texttemplatesrc.py b/plotly/validators/waterfall/_texttemplatesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_texttemplatesrc.py rename to plotly/validators/waterfall/_texttemplatesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_totals.py b/plotly/validators/waterfall/_totals.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_totals.py rename to plotly/validators/waterfall/_totals.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_uid.py b/plotly/validators/waterfall/_uid.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_uid.py rename to plotly/validators/waterfall/_uid.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_uirevision.py b/plotly/validators/waterfall/_uirevision.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_uirevision.py rename to plotly/validators/waterfall/_uirevision.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_visible.py b/plotly/validators/waterfall/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_visible.py rename to plotly/validators/waterfall/_visible.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_width.py b/plotly/validators/waterfall/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_width.py rename to plotly/validators/waterfall/_width.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_widthsrc.py b/plotly/validators/waterfall/_widthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_widthsrc.py rename to plotly/validators/waterfall/_widthsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_x.py b/plotly/validators/waterfall/_x.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_x.py rename to plotly/validators/waterfall/_x.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_x0.py b/plotly/validators/waterfall/_x0.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_x0.py rename to plotly/validators/waterfall/_x0.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_xaxis.py b/plotly/validators/waterfall/_xaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_xaxis.py rename to plotly/validators/waterfall/_xaxis.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_xhoverformat.py b/plotly/validators/waterfall/_xhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_xhoverformat.py rename to plotly/validators/waterfall/_xhoverformat.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_xperiod.py b/plotly/validators/waterfall/_xperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_xperiod.py rename to plotly/validators/waterfall/_xperiod.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_xperiod0.py b/plotly/validators/waterfall/_xperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_xperiod0.py rename to plotly/validators/waterfall/_xperiod0.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_xperiodalignment.py b/plotly/validators/waterfall/_xperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_xperiodalignment.py rename to plotly/validators/waterfall/_xperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_xsrc.py b/plotly/validators/waterfall/_xsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_xsrc.py rename to plotly/validators/waterfall/_xsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_y.py b/plotly/validators/waterfall/_y.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_y.py rename to plotly/validators/waterfall/_y.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_y0.py b/plotly/validators/waterfall/_y0.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_y0.py rename to plotly/validators/waterfall/_y0.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_yaxis.py b/plotly/validators/waterfall/_yaxis.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_yaxis.py rename to plotly/validators/waterfall/_yaxis.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_yhoverformat.py b/plotly/validators/waterfall/_yhoverformat.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_yhoverformat.py rename to plotly/validators/waterfall/_yhoverformat.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_yperiod.py b/plotly/validators/waterfall/_yperiod.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_yperiod.py rename to plotly/validators/waterfall/_yperiod.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_yperiod0.py b/plotly/validators/waterfall/_yperiod0.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_yperiod0.py rename to plotly/validators/waterfall/_yperiod0.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_yperiodalignment.py b/plotly/validators/waterfall/_yperiodalignment.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_yperiodalignment.py rename to plotly/validators/waterfall/_yperiodalignment.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_ysrc.py b/plotly/validators/waterfall/_ysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_ysrc.py rename to plotly/validators/waterfall/_ysrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/_zorder.py b/plotly/validators/waterfall/_zorder.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/_zorder.py rename to plotly/validators/waterfall/_zorder.py diff --git a/packages/python/plotly/plotly/validators/waterfall/connector/__init__.py b/plotly/validators/waterfall/connector/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/connector/__init__.py rename to plotly/validators/waterfall/connector/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/connector/_line.py b/plotly/validators/waterfall/connector/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/connector/_line.py rename to plotly/validators/waterfall/connector/_line.py diff --git a/packages/python/plotly/plotly/validators/waterfall/connector/_mode.py b/plotly/validators/waterfall/connector/_mode.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/connector/_mode.py rename to plotly/validators/waterfall/connector/_mode.py diff --git a/packages/python/plotly/plotly/validators/waterfall/connector/_visible.py b/plotly/validators/waterfall/connector/_visible.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/connector/_visible.py rename to plotly/validators/waterfall/connector/_visible.py diff --git a/packages/python/plotly/plotly/validators/waterfall/connector/line/__init__.py b/plotly/validators/waterfall/connector/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/connector/line/__init__.py rename to plotly/validators/waterfall/connector/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/connector/line/_color.py b/plotly/validators/waterfall/connector/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/connector/line/_color.py rename to plotly/validators/waterfall/connector/line/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/connector/line/_dash.py b/plotly/validators/waterfall/connector/line/_dash.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/connector/line/_dash.py rename to plotly/validators/waterfall/connector/line/_dash.py diff --git a/packages/python/plotly/plotly/validators/waterfall/connector/line/_width.py b/plotly/validators/waterfall/connector/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/connector/line/_width.py rename to plotly/validators/waterfall/connector/line/_width.py diff --git a/packages/python/plotly/plotly/validators/waterfall/decreasing/__init__.py b/plotly/validators/waterfall/decreasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/decreasing/__init__.py rename to plotly/validators/waterfall/decreasing/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/decreasing/_marker.py b/plotly/validators/waterfall/decreasing/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/decreasing/_marker.py rename to plotly/validators/waterfall/decreasing/_marker.py diff --git a/packages/python/plotly/plotly/validators/waterfall/decreasing/marker/__init__.py b/plotly/validators/waterfall/decreasing/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/decreasing/marker/__init__.py rename to plotly/validators/waterfall/decreasing/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/decreasing/marker/_color.py b/plotly/validators/waterfall/decreasing/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/decreasing/marker/_color.py rename to plotly/validators/waterfall/decreasing/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/decreasing/marker/_line.py b/plotly/validators/waterfall/decreasing/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/decreasing/marker/_line.py rename to plotly/validators/waterfall/decreasing/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/waterfall/decreasing/marker/line/__init__.py b/plotly/validators/waterfall/decreasing/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/decreasing/marker/line/__init__.py rename to plotly/validators/waterfall/decreasing/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/decreasing/marker/line/_color.py b/plotly/validators/waterfall/decreasing/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/decreasing/marker/line/_color.py rename to plotly/validators/waterfall/decreasing/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/decreasing/marker/line/_width.py b/plotly/validators/waterfall/decreasing/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/decreasing/marker/line/_width.py rename to plotly/validators/waterfall/decreasing/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/__init__.py b/plotly/validators/waterfall/hoverlabel/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/__init__.py rename to plotly/validators/waterfall/hoverlabel/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_align.py b/plotly/validators/waterfall/hoverlabel/_align.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_align.py rename to plotly/validators/waterfall/hoverlabel/_align.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_alignsrc.py b/plotly/validators/waterfall/hoverlabel/_alignsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_alignsrc.py rename to plotly/validators/waterfall/hoverlabel/_alignsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_bgcolor.py b/plotly/validators/waterfall/hoverlabel/_bgcolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_bgcolor.py rename to plotly/validators/waterfall/hoverlabel/_bgcolor.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_bgcolorsrc.py b/plotly/validators/waterfall/hoverlabel/_bgcolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_bgcolorsrc.py rename to plotly/validators/waterfall/hoverlabel/_bgcolorsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_bordercolor.py b/plotly/validators/waterfall/hoverlabel/_bordercolor.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_bordercolor.py rename to plotly/validators/waterfall/hoverlabel/_bordercolor.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_bordercolorsrc.py b/plotly/validators/waterfall/hoverlabel/_bordercolorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_bordercolorsrc.py rename to plotly/validators/waterfall/hoverlabel/_bordercolorsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_font.py b/plotly/validators/waterfall/hoverlabel/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_font.py rename to plotly/validators/waterfall/hoverlabel/_font.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_namelength.py b/plotly/validators/waterfall/hoverlabel/_namelength.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_namelength.py rename to plotly/validators/waterfall/hoverlabel/_namelength.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/_namelengthsrc.py b/plotly/validators/waterfall/hoverlabel/_namelengthsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/_namelengthsrc.py rename to plotly/validators/waterfall/hoverlabel/_namelengthsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/__init__.py b/plotly/validators/waterfall/hoverlabel/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/__init__.py rename to plotly/validators/waterfall/hoverlabel/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_color.py b/plotly/validators/waterfall/hoverlabel/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_color.py rename to plotly/validators/waterfall/hoverlabel/font/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_colorsrc.py b/plotly/validators/waterfall/hoverlabel/font/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_colorsrc.py rename to plotly/validators/waterfall/hoverlabel/font/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_family.py b/plotly/validators/waterfall/hoverlabel/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_family.py rename to plotly/validators/waterfall/hoverlabel/font/_family.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_familysrc.py b/plotly/validators/waterfall/hoverlabel/font/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_familysrc.py rename to plotly/validators/waterfall/hoverlabel/font/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_lineposition.py b/plotly/validators/waterfall/hoverlabel/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_lineposition.py rename to plotly/validators/waterfall/hoverlabel/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_linepositionsrc.py b/plotly/validators/waterfall/hoverlabel/font/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_linepositionsrc.py rename to plotly/validators/waterfall/hoverlabel/font/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_shadow.py b/plotly/validators/waterfall/hoverlabel/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_shadow.py rename to plotly/validators/waterfall/hoverlabel/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_shadowsrc.py b/plotly/validators/waterfall/hoverlabel/font/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_shadowsrc.py rename to plotly/validators/waterfall/hoverlabel/font/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_size.py b/plotly/validators/waterfall/hoverlabel/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_size.py rename to plotly/validators/waterfall/hoverlabel/font/_size.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_sizesrc.py b/plotly/validators/waterfall/hoverlabel/font/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_sizesrc.py rename to plotly/validators/waterfall/hoverlabel/font/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_style.py b/plotly/validators/waterfall/hoverlabel/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_style.py rename to plotly/validators/waterfall/hoverlabel/font/_style.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_stylesrc.py b/plotly/validators/waterfall/hoverlabel/font/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_stylesrc.py rename to plotly/validators/waterfall/hoverlabel/font/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_textcase.py b/plotly/validators/waterfall/hoverlabel/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_textcase.py rename to plotly/validators/waterfall/hoverlabel/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_textcasesrc.py b/plotly/validators/waterfall/hoverlabel/font/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_textcasesrc.py rename to plotly/validators/waterfall/hoverlabel/font/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_variant.py b/plotly/validators/waterfall/hoverlabel/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_variant.py rename to plotly/validators/waterfall/hoverlabel/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_variantsrc.py b/plotly/validators/waterfall/hoverlabel/font/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_variantsrc.py rename to plotly/validators/waterfall/hoverlabel/font/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_weight.py b/plotly/validators/waterfall/hoverlabel/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_weight.py rename to plotly/validators/waterfall/hoverlabel/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_weightsrc.py b/plotly/validators/waterfall/hoverlabel/font/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/hoverlabel/font/_weightsrc.py rename to plotly/validators/waterfall/hoverlabel/font/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/increasing/__init__.py b/plotly/validators/waterfall/increasing/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/increasing/__init__.py rename to plotly/validators/waterfall/increasing/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/increasing/_marker.py b/plotly/validators/waterfall/increasing/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/increasing/_marker.py rename to plotly/validators/waterfall/increasing/_marker.py diff --git a/packages/python/plotly/plotly/validators/waterfall/increasing/marker/__init__.py b/plotly/validators/waterfall/increasing/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/increasing/marker/__init__.py rename to plotly/validators/waterfall/increasing/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/increasing/marker/_color.py b/plotly/validators/waterfall/increasing/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/increasing/marker/_color.py rename to plotly/validators/waterfall/increasing/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/increasing/marker/_line.py b/plotly/validators/waterfall/increasing/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/increasing/marker/_line.py rename to plotly/validators/waterfall/increasing/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/waterfall/increasing/marker/line/__init__.py b/plotly/validators/waterfall/increasing/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/increasing/marker/line/__init__.py rename to plotly/validators/waterfall/increasing/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/increasing/marker/line/_color.py b/plotly/validators/waterfall/increasing/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/increasing/marker/line/_color.py rename to plotly/validators/waterfall/increasing/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/increasing/marker/line/_width.py b/plotly/validators/waterfall/increasing/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/increasing/marker/line/_width.py rename to plotly/validators/waterfall/increasing/marker/line/_width.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/__init__.py b/plotly/validators/waterfall/insidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/__init__.py rename to plotly/validators/waterfall/insidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_color.py b/plotly/validators/waterfall/insidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_color.py rename to plotly/validators/waterfall/insidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_colorsrc.py b/plotly/validators/waterfall/insidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_colorsrc.py rename to plotly/validators/waterfall/insidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_family.py b/plotly/validators/waterfall/insidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_family.py rename to plotly/validators/waterfall/insidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_familysrc.py b/plotly/validators/waterfall/insidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_familysrc.py rename to plotly/validators/waterfall/insidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_lineposition.py b/plotly/validators/waterfall/insidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_lineposition.py rename to plotly/validators/waterfall/insidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_linepositionsrc.py b/plotly/validators/waterfall/insidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_linepositionsrc.py rename to plotly/validators/waterfall/insidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_shadow.py b/plotly/validators/waterfall/insidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_shadow.py rename to plotly/validators/waterfall/insidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_shadowsrc.py b/plotly/validators/waterfall/insidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_shadowsrc.py rename to plotly/validators/waterfall/insidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_size.py b/plotly/validators/waterfall/insidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_size.py rename to plotly/validators/waterfall/insidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_sizesrc.py b/plotly/validators/waterfall/insidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_sizesrc.py rename to plotly/validators/waterfall/insidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_style.py b/plotly/validators/waterfall/insidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_style.py rename to plotly/validators/waterfall/insidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_stylesrc.py b/plotly/validators/waterfall/insidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_stylesrc.py rename to plotly/validators/waterfall/insidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_textcase.py b/plotly/validators/waterfall/insidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_textcase.py rename to plotly/validators/waterfall/insidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_textcasesrc.py b/plotly/validators/waterfall/insidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_textcasesrc.py rename to plotly/validators/waterfall/insidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_variant.py b/plotly/validators/waterfall/insidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_variant.py rename to plotly/validators/waterfall/insidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_variantsrc.py b/plotly/validators/waterfall/insidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_variantsrc.py rename to plotly/validators/waterfall/insidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_weight.py b/plotly/validators/waterfall/insidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_weight.py rename to plotly/validators/waterfall/insidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/waterfall/insidetextfont/_weightsrc.py b/plotly/validators/waterfall/insidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/insidetextfont/_weightsrc.py rename to plotly/validators/waterfall/insidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/__init__.py b/plotly/validators/waterfall/legendgrouptitle/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/__init__.py rename to plotly/validators/waterfall/legendgrouptitle/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/_font.py b/plotly/validators/waterfall/legendgrouptitle/_font.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/_font.py rename to plotly/validators/waterfall/legendgrouptitle/_font.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/_text.py b/plotly/validators/waterfall/legendgrouptitle/_text.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/_text.py rename to plotly/validators/waterfall/legendgrouptitle/_text.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/__init__.py b/plotly/validators/waterfall/legendgrouptitle/font/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/__init__.py rename to plotly/validators/waterfall/legendgrouptitle/font/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_color.py b/plotly/validators/waterfall/legendgrouptitle/font/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_color.py rename to plotly/validators/waterfall/legendgrouptitle/font/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_family.py b/plotly/validators/waterfall/legendgrouptitle/font/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_family.py rename to plotly/validators/waterfall/legendgrouptitle/font/_family.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_lineposition.py b/plotly/validators/waterfall/legendgrouptitle/font/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_lineposition.py rename to plotly/validators/waterfall/legendgrouptitle/font/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_shadow.py b/plotly/validators/waterfall/legendgrouptitle/font/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_shadow.py rename to plotly/validators/waterfall/legendgrouptitle/font/_shadow.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_size.py b/plotly/validators/waterfall/legendgrouptitle/font/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_size.py rename to plotly/validators/waterfall/legendgrouptitle/font/_size.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_style.py b/plotly/validators/waterfall/legendgrouptitle/font/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_style.py rename to plotly/validators/waterfall/legendgrouptitle/font/_style.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_textcase.py b/plotly/validators/waterfall/legendgrouptitle/font/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_textcase.py rename to plotly/validators/waterfall/legendgrouptitle/font/_textcase.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_variant.py b/plotly/validators/waterfall/legendgrouptitle/font/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_variant.py rename to plotly/validators/waterfall/legendgrouptitle/font/_variant.py diff --git a/packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_weight.py b/plotly/validators/waterfall/legendgrouptitle/font/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/legendgrouptitle/font/_weight.py rename to plotly/validators/waterfall/legendgrouptitle/font/_weight.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/__init__.py b/plotly/validators/waterfall/outsidetextfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/__init__.py rename to plotly/validators/waterfall/outsidetextfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_color.py b/plotly/validators/waterfall/outsidetextfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_color.py rename to plotly/validators/waterfall/outsidetextfont/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_colorsrc.py b/plotly/validators/waterfall/outsidetextfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_colorsrc.py rename to plotly/validators/waterfall/outsidetextfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_family.py b/plotly/validators/waterfall/outsidetextfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_family.py rename to plotly/validators/waterfall/outsidetextfont/_family.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_familysrc.py b/plotly/validators/waterfall/outsidetextfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_familysrc.py rename to plotly/validators/waterfall/outsidetextfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_lineposition.py b/plotly/validators/waterfall/outsidetextfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_lineposition.py rename to plotly/validators/waterfall/outsidetextfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_linepositionsrc.py b/plotly/validators/waterfall/outsidetextfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_linepositionsrc.py rename to plotly/validators/waterfall/outsidetextfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_shadow.py b/plotly/validators/waterfall/outsidetextfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_shadow.py rename to plotly/validators/waterfall/outsidetextfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_shadowsrc.py b/plotly/validators/waterfall/outsidetextfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_shadowsrc.py rename to plotly/validators/waterfall/outsidetextfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_size.py b/plotly/validators/waterfall/outsidetextfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_size.py rename to plotly/validators/waterfall/outsidetextfont/_size.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_sizesrc.py b/plotly/validators/waterfall/outsidetextfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_sizesrc.py rename to plotly/validators/waterfall/outsidetextfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_style.py b/plotly/validators/waterfall/outsidetextfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_style.py rename to plotly/validators/waterfall/outsidetextfont/_style.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_stylesrc.py b/plotly/validators/waterfall/outsidetextfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_stylesrc.py rename to plotly/validators/waterfall/outsidetextfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_textcase.py b/plotly/validators/waterfall/outsidetextfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_textcase.py rename to plotly/validators/waterfall/outsidetextfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_textcasesrc.py b/plotly/validators/waterfall/outsidetextfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_textcasesrc.py rename to plotly/validators/waterfall/outsidetextfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_variant.py b/plotly/validators/waterfall/outsidetextfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_variant.py rename to plotly/validators/waterfall/outsidetextfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_variantsrc.py b/plotly/validators/waterfall/outsidetextfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_variantsrc.py rename to plotly/validators/waterfall/outsidetextfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_weight.py b/plotly/validators/waterfall/outsidetextfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_weight.py rename to plotly/validators/waterfall/outsidetextfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_weightsrc.py b/plotly/validators/waterfall/outsidetextfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/outsidetextfont/_weightsrc.py rename to plotly/validators/waterfall/outsidetextfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/stream/__init__.py b/plotly/validators/waterfall/stream/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/stream/__init__.py rename to plotly/validators/waterfall/stream/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/stream/_maxpoints.py b/plotly/validators/waterfall/stream/_maxpoints.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/stream/_maxpoints.py rename to plotly/validators/waterfall/stream/_maxpoints.py diff --git a/packages/python/plotly/plotly/validators/waterfall/stream/_token.py b/plotly/validators/waterfall/stream/_token.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/stream/_token.py rename to plotly/validators/waterfall/stream/_token.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/__init__.py b/plotly/validators/waterfall/textfont/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/__init__.py rename to plotly/validators/waterfall/textfont/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_color.py b/plotly/validators/waterfall/textfont/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_color.py rename to plotly/validators/waterfall/textfont/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_colorsrc.py b/plotly/validators/waterfall/textfont/_colorsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_colorsrc.py rename to plotly/validators/waterfall/textfont/_colorsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_family.py b/plotly/validators/waterfall/textfont/_family.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_family.py rename to plotly/validators/waterfall/textfont/_family.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_familysrc.py b/plotly/validators/waterfall/textfont/_familysrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_familysrc.py rename to plotly/validators/waterfall/textfont/_familysrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_lineposition.py b/plotly/validators/waterfall/textfont/_lineposition.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_lineposition.py rename to plotly/validators/waterfall/textfont/_lineposition.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_linepositionsrc.py b/plotly/validators/waterfall/textfont/_linepositionsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_linepositionsrc.py rename to plotly/validators/waterfall/textfont/_linepositionsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_shadow.py b/plotly/validators/waterfall/textfont/_shadow.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_shadow.py rename to plotly/validators/waterfall/textfont/_shadow.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_shadowsrc.py b/plotly/validators/waterfall/textfont/_shadowsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_shadowsrc.py rename to plotly/validators/waterfall/textfont/_shadowsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_size.py b/plotly/validators/waterfall/textfont/_size.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_size.py rename to plotly/validators/waterfall/textfont/_size.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_sizesrc.py b/plotly/validators/waterfall/textfont/_sizesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_sizesrc.py rename to plotly/validators/waterfall/textfont/_sizesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_style.py b/plotly/validators/waterfall/textfont/_style.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_style.py rename to plotly/validators/waterfall/textfont/_style.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_stylesrc.py b/plotly/validators/waterfall/textfont/_stylesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_stylesrc.py rename to plotly/validators/waterfall/textfont/_stylesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_textcase.py b/plotly/validators/waterfall/textfont/_textcase.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_textcase.py rename to plotly/validators/waterfall/textfont/_textcase.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_textcasesrc.py b/plotly/validators/waterfall/textfont/_textcasesrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_textcasesrc.py rename to plotly/validators/waterfall/textfont/_textcasesrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_variant.py b/plotly/validators/waterfall/textfont/_variant.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_variant.py rename to plotly/validators/waterfall/textfont/_variant.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_variantsrc.py b/plotly/validators/waterfall/textfont/_variantsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_variantsrc.py rename to plotly/validators/waterfall/textfont/_variantsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_weight.py b/plotly/validators/waterfall/textfont/_weight.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_weight.py rename to plotly/validators/waterfall/textfont/_weight.py diff --git a/packages/python/plotly/plotly/validators/waterfall/textfont/_weightsrc.py b/plotly/validators/waterfall/textfont/_weightsrc.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/textfont/_weightsrc.py rename to plotly/validators/waterfall/textfont/_weightsrc.py diff --git a/packages/python/plotly/plotly/validators/waterfall/totals/__init__.py b/plotly/validators/waterfall/totals/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/totals/__init__.py rename to plotly/validators/waterfall/totals/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/totals/_marker.py b/plotly/validators/waterfall/totals/_marker.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/totals/_marker.py rename to plotly/validators/waterfall/totals/_marker.py diff --git a/packages/python/plotly/plotly/validators/waterfall/totals/marker/__init__.py b/plotly/validators/waterfall/totals/marker/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/totals/marker/__init__.py rename to plotly/validators/waterfall/totals/marker/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/totals/marker/_color.py b/plotly/validators/waterfall/totals/marker/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/totals/marker/_color.py rename to plotly/validators/waterfall/totals/marker/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/totals/marker/_line.py b/plotly/validators/waterfall/totals/marker/_line.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/totals/marker/_line.py rename to plotly/validators/waterfall/totals/marker/_line.py diff --git a/packages/python/plotly/plotly/validators/waterfall/totals/marker/line/__init__.py b/plotly/validators/waterfall/totals/marker/line/__init__.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/totals/marker/line/__init__.py rename to plotly/validators/waterfall/totals/marker/line/__init__.py diff --git a/packages/python/plotly/plotly/validators/waterfall/totals/marker/line/_color.py b/plotly/validators/waterfall/totals/marker/line/_color.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/totals/marker/line/_color.py rename to plotly/validators/waterfall/totals/marker/line/_color.py diff --git a/packages/python/plotly/plotly/validators/waterfall/totals/marker/line/_width.py b/plotly/validators/waterfall/totals/marker/line/_width.py similarity index 100% rename from packages/python/plotly/plotly/validators/waterfall/totals/marker/line/_width.py rename to plotly/validators/waterfall/totals/marker/line/_width.py diff --git a/pyproject.toml b/pyproject.toml index 2f858078f76..579a914d6a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,64 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + +[project.urls] +"HomePage" = "https://plotly.com/python/" +"Documentation" = "https://plotly.com/python/" +"Github" = "https://github.com/plotly/plotly.py" +"Changelog" = "https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md" + +[tool.pytest.ini_options] +markers = [ + "nodev: mark a test as nodev", + "matplotlib: mark a test as matplotlib" +] + +[project] +name = "plotly" +authors = [ + { name = "Chris P", email = "chris@plot.ly" } +] +maintainers = [ + { name="Martha Cryan", email="martha.cryan@plot.ly" }, + { name="Emily Kellison-Linn", email="emily@plot.ly" } +] +description = "An open-source interactive data visualization library for Python" +readme = {file = "README.md", content-type = "text/markdown"} +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Scientific/Engineering :: Visualization", + "License :: OSI Approved :: MIT License" +] +requires-python = ">=3.8" +license = {file="LICENSE.txt"} +version = "6.0.1" +dependencies = [ + "narwhals>=1.15.1", + "packaging" +] + +[project.optional-dependencies] +express = ["numpy"] + +[tool.setuptools.packages.find] +where = ["."] +include = ["plotly*", "_plotly*"] +exclude = ["__pycache__*", "tests*"] + +[tool.setuptools.package-data] +plotly = [ + "package_data/*", + "package_data/templates/*", + "package_data/datasets/*", +] + [tool.black] line-length = 88 target_version = ['py36', 'py37', 'py38', 'py39'] @@ -17,8 +78,7 @@ exclude = ''' | build | dist | submodules - | packages/javascript - | packages/python/plotly/plotly/matplotlylib/mplexporter + | plotly/matplotlylib/mplexporter )/ | versioneer.py ) diff --git a/release.md b/release.md deleted file mode 100644 index 939993d283e..00000000000 --- a/release.md +++ /dev/null @@ -1,245 +0,0 @@ - -# How to release plotly packages - -There are 3 Python packages (`plotly`, `plotly-geo` and `chart-studio`) which need to be -published to PyPI and conda. In addition, there are various changelogs, github releases and forum announcements to do :) - -## Release process - `plotly` package and extensions - -This is the release process for releasing `plotly.py` version `X.Y.Z`. - -### Finalize changelog - -Review the contents of `packages/python/plotly/CHANGELOG.md`. We try to follow -the [keepachangelog](https://keepachangelog.com/en/1.0.0/) guidelines. -Make sure the changelog includes the version being published at the top, along -with the expected publication date. - -Use the `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, and `Security` -labels for all changes to plotly.py. If the version of plotly.js has -been updated, include this as the first `Updated` entry. Call out any -notable changes as sub-bullets (new trace types in particular), and provide -a link to the plotly.js CHANGELOG. - -### Finalize versions - -**Create a branch `git checkout -b release-X.Y.Z` *from the tip of `origin/master`*.** - -Manually update the versions to `X.Y.Z` in the files specified below. - - - `CHANGELOG.md` - + update the release date - - `packages/python/plotly/plotly/_widget_version.py`: - + Update `__frontend_version__` to `^X.Y.Z` (Note the `^` prefix) - - Commit your changes on the branch: - + `git commit -a -m "version changes for vX.Y.Z"` - - ### Triggering (and Retriggering) the build - - - Commit and add this specific tag which `versioneer` will pick up, and push to Github so that CI will build the release artifacts. This is an atomic push so that CI will read the tag on the commit: - + `git tag vX.Y.Z` - + `git push --atomic origin release-X.Y.Z vX.Y.Z` - - Create a Github pull request from `release-X.Y.Z` to `master` and wait for CI to be green - - *If something goes wrong below*, you'll need to trigger the build process again after a fix. You'll need to commit your changes in the release branch, move the tag and atomically force push: - + `git commit ....` - + `git tag -f vX.Y.Z` - + `git push --force --atomic origin release-X.Y.Z vX.Y.Z` - -### Download and QA CI Artifacts - -The `full_build` job in the `release_build` workflow in CircleCI produces a tarball of artifacts `output.tgz` which you should download and decompress, which will give you a directory called `output`. The filenames contained within will contain version numbers. - -**Note: if any of the version numbers are not simply `X.Y.Z` but include some kind of git hash, then this is a dirty build and you'll need to clean up whatever is dirtying the tree and follow the instructions above to trigger the build again.** (That said, you can do QA on dirty builds, you just can't publish them.) - -To locally install the PyPI dist, make sure you have an environment with JupyterLab installed (maybe one created with `conda create -n condatest python=3.10 jupyter anywidget pandas`): - -- `tar xzf output.tgz` -- `pip uninstall plotly` -- `conda uninstall plotly` (just in case!) -- `pip install path/to/output/dist/plotly-X.Y.X-py3-none-any.whl` - -To locally install the Conda dist (generally do this in a different, clean environment from the one above!): - -- `conda uninstall plotly` -- `pip uninstall plotly` (just in case!) -- `conda install path/to/output/plotly-X.Y.Z.tar.bz2` - -You'll want to check, in both Lab and Notebook, **in a brand new notebook in each** so that there is no caching of previous results, that `go.Figure()` and `go.FigureWidget()` work without error. - -If something is broken, you'll need to fix it and trigger the build again (see above section). - -### Publishing - -Once you're satisfied that things render in Lab and Notebook in Widget and regular mode, -you can publish the artifacts. **You will need special credentials from Plotly leadership to do this.**. - - -Publishing to PyPI: -```bash -(plotly_dev) $ cd path/to/output/dist -(plotly_dev) $ twine upload plotly-X.Y.Z* -``` - -Publishing to `plotly` conda channel (make sure you have run `conda install anaconda-client` to get the `anaconda` command): - -``` -(plotly_dev) $ cd path/to/output -(plotly_dev) $ anaconda upload plotly-X.Y.Z.tar.bz2 -``` - - -### Merge the PR and make a Release - -1. Merge the pull request you created above into `master` -2. Go to https://github.com/plotly/plotly.py/releases and "Draft a new release" -3. Enter the `vX.Y.Z` tag you created already above and make "Release title" the same string as the tag. -4. Copy the changelog section for this version as the "Describe this release" - -### Update documentation site - -1. Search for the previous version string in the docs and replace it with the new version string, including but not necessarily limited to the following files: - - `doc/python/getting-started.md` - - `doc/apidoc/conf.py` - - `doc/requirements.txt` - - `binder/requirements.txt` -2. `doc-prod` should already have been merged on a regular basis into `master`, but -start by doing it first if not. Then merge `master` into `doc-prod` to deploy the doc related -to features in the release. -3. in a clone of the [`graphing-library-docs` repo](https://github.com/plotly/graphing-library-docs): - 1. bump the version of Plotly.py in `_data/pyversion.json` - 2. bump the version of Plotly.js with `cd _data && python get_plotschema.py ` fixing any errors that come up. - - If Plotly.js contains any new traces or trace or layout attributes, you'll get a warning `β€œmissing key in attributes: `. To resolve, add the attribute to the relevant section in `/_data/orderings.json` in the position you want it to appear in the reference docs. - 3. rebuild the Algolia `schema` index with `ALGOLIA_API_KEY= make update_ref_search` - 4. Rebuild the Algolia `python` index with `ALGOLIA_API_KEY= make update_python_search` - 5. Commit and push the changes to `master` in that repo - -### Notify Stakeholders - -* Post an announcement to the Plotly Python forum, with links to the README installation instructions and to the CHANGELOG. -* Update the previous announcement to point to this one -* Update the Github Release entry and CHANGELOG entry to have the nice title and a link to the announcement -* Follow up on issues resolved in this release or forum posts with better answers as of this release - -## Release *Candidate* process - `plotly` package and extensions - -(rough notes for a rough/ad hoc process!) - -It's the same process as above except that the `X.Y.Z` version has a suffix and there are special instructions below for publishing an RC: note that the `npm` suffix is `-rc.1` and the PyPI suffix is `rc1`. We also don't update the docs with RC information and we inform a limited number of stakeholders. - -PyPI RC (no special flags, just the `rc1` suffix): - -```bash -(plotly_dev) $ twine upload dist/plotly-X.Y.Zrc1* -``` - -The `--tag next` part ensures that users won't install this version unless -they explicitly ask for the version or for the version with the `next` tag. - -Conda RC: - -``` -$ anaconda upload --label test plotly-*.tar.bz2 -``` - -The `--label test` part ensures that users won't install this version unless -they explicitly ask for the version or for the version with the `next` tag. - - -## Release process - `plotly-geo` package - -The `plotly-geo` package contains the shape file resources used by plotly.py. -These files are relatively large and change infrequently so it is useful -to release them in a separate package. - -### Update version - -Update the version of the `plotly-geo` package in -`packages/python/plotly-geo/setup.py`. - -This version is not intended to match the version of plotly.py. - -### Update CHANGELOG - -Add a new entry to the CHANGELOG at `packages/python/plotly-geo/CHANGELOG.md` -and commit the changes. - -### Tag Release - -Create a new tag for the release - -```bash -(plotly_dev) $ git checkout master -(plotly_dev) $ git stash -(plotly_dev) $ git pull origin master -(plotly_dev) $ git tag plotly-geo-vX.Y.Z -(plotly_dev) $ git push origin plotly-geo-vX.Y.Z -``` - -### Publishing to PYPI - -Publish the final version to PyPI - -```bash -(plotly_dev) $ cd packages/python/plotly-geo -(plotly_dev) $ python setup.py sdist bdist_wheel -(plotly_dev) $ twine upload dist/plotly-geo-X.Y.Z.tar.gz -(plotly_dev) $ twine upload dist/plotly_geo-X.Y.Z-py3-none-any.whl -``` - -### Publish to plotly anaconda channel - -From `packages/python/plotly-geo`, build the conda package -```bash -(plotly_dev) $ conda build recipe/ -``` - -Then upload to the plotly anaconda channel as described above - -## Release process - `chart-studio` package - -The `chart-studio` package contains the utilities for interacting with -Chart Studio (both Cloud or On-Prem). - -### Update version - -Update the version of the `chart-studio` package in -`packages/python/chart-studio/setup.py`. - -This version is not intended to match the version of plotly.py. - -### Update CHANGELOG - -Add a new entry to the CHANGELOG at `packages/python/chart-studio/CHANGELOG.md` -and commit the changes. - -### Tag Release - -Create a new tag for the release - -```bash -(plotly_dev) $ git checkout master -(plotly_dev) $ git stash -(plotly_dev) $ git pull origin master -(plotly_dev) $ git tag chart-studio-vX.Y.Z -(plotly_dev) $ git push origin chart-studio-vX.Y.Z -``` - -### Publishing to PYPI - -Publish the final version to PyPI - -```bash -(plotly_dev) $ cd packages/python/chart-studio -(plotly_dev) $ python setup.py sdist bdist_wheel -(plotly_dev) $ twine upload dist/chart-studio-X.Y.Z.tar.gz -(plotly_dev) $ twine upload dist/chart_studio-X.Y.Z-py3-none-any.whl -``` - -### Publish to plotly anaconda channel - -From `packages/python/plotly-geo`, build the conda package -```bash -(plotly_dev) $ conda build recipe/ -``` - -Then upload to the plotly anaconda channel as described above. diff --git a/packages/python/plotly/requires-optional.txt b/requires-optional.txt similarity index 95% rename from packages/python/plotly/requires-optional.txt rename to requires-optional.txt index b36d45c31fa..a772dedd876 100644 --- a/packages/python/plotly/requires-optional.txt +++ b/requires-optional.txt @@ -20,16 +20,13 @@ numpy # matplotlib==2.2.2 ## testing dependencies ## +# see also test_requirements/*.txt for specific Python versions coverage==4.3.1 mock==2.0.0 pytest==8.1.1 xarray pytz -## orca dependencies ## -requests -psutil - ## code formatting ## pre-commit black==22.3.0 diff --git a/setup.py b/setup.py deleted file mode 100644 index 6adbfebc8c6..00000000000 --- a/setup.py +++ /dev/null @@ -1,13 +0,0 @@ -from setuptools import setup - - -raise Exception( - """ - - This file exists to set up the Github "Used By" counter properly and is not meant to be run. - - Please refer to ./packages/python/plotly/setup.py instead. - """ -) - -setup(name="plotly") diff --git a/packages/python/chart-studio/chart_studio/tests/test_optional/__init__.py b/templategen/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_optional/__init__.py rename to templategen/__init__.py diff --git a/packages/python/plotly/templategen/__main__.py b/templategen/__main__.py similarity index 100% rename from packages/python/plotly/templategen/__main__.py rename to templategen/__main__.py diff --git a/packages/python/plotly/templategen/definitions.py b/templategen/definitions.py similarity index 100% rename from packages/python/plotly/templategen/definitions.py rename to templategen/definitions.py diff --git a/packages/python/plotly/templategen/utils/__init__.py b/templategen/utils/__init__.py similarity index 100% rename from packages/python/plotly/templategen/utils/__init__.py rename to templategen/utils/__init__.py diff --git a/packages/python/plotly/templategen/utils/colors.py b/templategen/utils/colors.py similarity index 100% rename from packages/python/plotly/templategen/utils/colors.py rename to templategen/utils/colors.py diff --git a/test/vv/lib/python2.7/site-packages/plotly/version.py b/test/vv/lib/python2.7/site-packages/plotly/version.py deleted file mode 100644 index f6bb6f4de32..00000000000 --- a/test/vv/lib/python2.7/site-packages/plotly/version.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "2.0.4" diff --git a/packages/python/plotly/test_init/README.md b/test_init/README.md similarity index 100% rename from packages/python/plotly/test_init/README.md rename to test_init/README.md diff --git a/packages/python/plotly/test_init/__init__.py b/test_init/__init__.py similarity index 100% rename from packages/python/plotly/test_init/__init__.py rename to test_init/__init__.py diff --git a/packages/python/plotly/test_init/test_dependencies_not_imported.py b/test_init/test_dependencies_not_imported.py similarity index 100% rename from packages/python/plotly/test_init/test_dependencies_not_imported.py rename to test_init/test_dependencies_not_imported.py diff --git a/packages/python/plotly/test_init/test_lazy_imports.py b/test_init/test_lazy_imports.py similarity index 100% rename from packages/python/plotly/test_init/test_lazy_imports.py rename to test_init/test_lazy_imports.py diff --git a/test_requirements/requirements_core.txt b/test_requirements/requirements_core.txt new file mode 100644 index 00000000000..2001f3e2567 --- /dev/null +++ b/test_requirements/requirements_core.txt @@ -0,0 +1,2 @@ +requests +pytest diff --git a/test_requirements/requirements_optional.txt b/test_requirements/requirements_optional.txt new file mode 100644 index 00000000000..a48fe001d56 --- /dev/null +++ b/test_requirements/requirements_optional.txt @@ -0,0 +1,25 @@ +requests +pandas +numpy +xarray +statsmodels +Pillow +pytest +pytz +ipython +jupyter +anywidget +scipy +Shapely +geopandas +fiona<=1.9.6;python_version<="3.8" # fiona>1.9.6 is not compatible with geopandas<1; geopandas>=1 is not compatible with python 3.8 +pyshp +matplotlib +scikit-image +psutil +kaleido +orjson +polars[timezone] +pyarrow +plotly-geo +vaex;python_version<="3.9" diff --git a/packages/python/plotly/plotly/tests/__init__.py b/tests/__init__.py similarity index 100% rename from packages/python/plotly/plotly/tests/__init__.py rename to tests/__init__.py diff --git a/test/percy/compare-pandas.py b/tests/percy/compare-pandas.py similarity index 100% rename from test/percy/compare-pandas.py rename to tests/percy/compare-pandas.py diff --git a/test/percy/plotly-express.py b/tests/percy/plotly-express.py similarity index 99% rename from test/percy/plotly-express.py rename to tests/percy/plotly-express.py index 428e30572e4..78283cd67e5 100644 --- a/test/percy/plotly-express.py +++ b/tests/percy/plotly-express.py @@ -7,7 +7,7 @@ # tested with percy. # this directory -dir_name = os.path.join("test", "percy") +dir_name = os.path.join("tests", "percy") # #### Scatter and Line plots diff --git a/test/percy/snapshots.yml b/tests/percy/snapshots.yml similarity index 100% rename from test/percy/snapshots.yml rename to tests/percy/snapshots.yml diff --git a/packages/python/plotly/plotly/tests/test_core/__init__.py b/tests/test_core/__init__.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/__init__.py rename to tests/test_core/__init__.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_optional/test_grid/__init__.py b/tests/test_core/test_colors/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_optional/test_grid/__init__.py rename to tests/test_core/test_colors/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_colors/test_colors.py b/tests/test_core/test_colors/test_colors.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_colors/test_colors.py rename to tests/test_core/test_colors/test_colors.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_errors/test_dict_path_errors.py b/tests/test_core/test_errors/test_dict_path_errors.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_errors/test_dict_path_errors.py rename to tests/test_core/test_errors/test_dict_path_errors.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_messages/__init__.py b/tests/test_core/test_figure_messages/__init__.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_messages/__init__.py rename to tests/test_core/test_figure_messages/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_add_traces.py b/tests/test_core/test_figure_messages/test_add_traces.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_add_traces.py rename to tests/test_core/test_figure_messages/test_add_traces.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_batch_animate.py b/tests/test_core/test_figure_messages/test_batch_animate.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_batch_animate.py rename to tests/test_core/test_figure_messages/test_batch_animate.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_move_delete_traces.py b/tests/test_core/test_figure_messages/test_move_delete_traces.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_move_delete_traces.py rename to tests/test_core/test_figure_messages/test_move_delete_traces.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_on_change.py b/tests/test_core/test_figure_messages/test_on_change.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_on_change.py rename to tests/test_core/test_figure_messages/test_on_change.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_plotly_relayout.py b/tests/test_core/test_figure_messages/test_plotly_relayout.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_plotly_relayout.py rename to tests/test_core/test_figure_messages/test_plotly_relayout.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_plotly_restyle.py b/tests/test_core/test_figure_messages/test_plotly_restyle.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_plotly_restyle.py rename to tests/test_core/test_figure_messages/test_plotly_restyle.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_plotly_update.py b/tests/test_core/test_figure_messages/test_plotly_update.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_messages/test_plotly_update.py rename to tests/test_core/test_figure_messages/test_plotly_update.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_optional/test_matplotlylib/__init__.py b/tests/test_core/test_figure_widget_backend/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_optional/test_matplotlylib/__init__.py rename to tests/test_core/test_figure_widget_backend/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_widget_backend/test_missing_anywidget.py b/tests/test_core/test_figure_widget_backend/test_missing_anywidget.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_widget_backend/test_missing_anywidget.py rename to tests/test_core/test_figure_widget_backend/test_missing_anywidget.py diff --git a/tests/test_core/test_figure_widget_backend/test_validate_initialization.py b/tests/test_core/test_figure_widget_backend/test_validate_initialization.py new file mode 100644 index 00000000000..5f68bd343d0 --- /dev/null +++ b/tests/test_core/test_figure_widget_backend/test_validate_initialization.py @@ -0,0 +1,21 @@ +from unittest import TestCase +import plotly.graph_objs as go +import pytest + +try: + go.FigureWidget() + figure_widget_available = True +except ImportError: + figure_widget_available = False + + +class TestInitialization(TestCase): + if figure_widget_available: + + def test_widget_layout_present_on_init(self): + fig = go.FigureWidget(data=go.Scatter(x=[1, 2], y=[1, 2])) + assert fig._widget_layout != {} + + def test_widget_data_present_on_init(self): + fig = go.FigureWidget(data=go.Bar(x=[1, 2], y=[1, 2])) + assert fig._widget_data != [] diff --git a/packages/python/plotly/plotly/tests/test_core/test_figure_widget_backend/test_validate_no_frames.py b/tests/test_core/test_figure_widget_backend/test_validate_no_frames.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_figure_widget_backend/test_validate_no_frames.py rename to tests/test_core/test_figure_widget_backend/test_validate_no_frames.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_figure/__init__.py b/tests/test_core/test_graph_objs/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_figure/__init__.py rename to tests/test_core/test_graph_objs/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_annotations.py b/tests/test_core/test_graph_objs/test_annotations.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_annotations.py rename to tests/test_core/test_graph_objs/test_annotations.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_append_trace.py b/tests/test_core/test_graph_objs/test_append_trace.py similarity index 98% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_append_trace.py rename to tests/test_core/test_graph_objs/test_append_trace.py index c4d0214baf9..da6b11404f6 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_append_trace.py +++ b/tests/test_core/test_graph_objs/test_append_trace.py @@ -10,7 +10,7 @@ XAxis, YAxis, ) -from plotly.tests.utils import strip_dict_params +from ...utils import strip_dict_params import plotly.tools as tls diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_constructor.py b/tests/test_core/test_graph_objs/test_constructor.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_constructor.py rename to tests/test_core/test_graph_objs/test_constructor.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_data.py b/tests/test_core/test_graph_objs/test_data.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_data.py rename to tests/test_core/test_graph_objs/test_data.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_error_bars.py b/tests/test_core/test_graph_objs/test_error_bars.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_error_bars.py rename to tests/test_core/test_graph_objs/test_error_bars.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_figure.py b/tests/test_core/test_graph_objs/test_figure.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_figure.py rename to tests/test_core/test_graph_objs/test_figure.py index 57a6ca574eb..c050816e857 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_figure.py +++ b/tests/test_core/test_graph_objs/test_figure.py @@ -1,6 +1,6 @@ import plotly.graph_objects as go from plotly.subplots import make_subplots -from plotly.tests.utils import TestCaseNoTemplate +from ...utils import TestCaseNoTemplate import pytest diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_figure_properties.py b/tests/test_core/test_graph_objs/test_figure_properties.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_figure_properties.py rename to tests/test_core/test_graph_objs/test_figure_properties.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_frames.py b/tests/test_core/test_graph_objs/test_frames.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_frames.py rename to tests/test_core/test_graph_objs/test_frames.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_graph_objs.py b/tests/test_core/test_graph_objs/test_graph_objs.py similarity index 82% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_graph_objs.py rename to tests/test_core/test_graph_objs/test_graph_objs.py index 8c5f62c7534..5b0e3dbbdf7 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_graph_objs.py +++ b/tests/test_core/test_graph_objs/test_graph_objs.py @@ -1,5 +1,7 @@ from unittest import TestCase +import warnings +import pytest import plotly.graph_objs as go @@ -46,7 +48,6 @@ class TestBackwardsCompat(TestCase): def test_old_class_names(self): - # these were all defined at one point, we want to maintain backwards # compat, so we basically just create a checkpoint with this test. @@ -154,3 +155,29 @@ def test_pop_invalid_prop_key_error(self): def test_pop_invalid_prop_with_default(self): self.assertEqual(self.layout.pop("bogus", 42), 42) + + +class TestDeprecationWarnings(TestCase): + def test_warn_on_deprecated_mapbox_traces(self): + # This test will fail if any of the following traces + # fails to emit a DeprecationWarning + for trace_constructor in [ + go.Scattermapbox, + go.Densitymapbox, + go.Choroplethmapbox, + ]: + with pytest.warns(DeprecationWarning): + _ = go.Figure([trace_constructor()]) + + def test_no_warn_on_non_deprecated_traces(self): + # This test will fail if any of the following traces emits a DeprecationWarning + for trace_constructor in [ + go.Scatter, + go.Bar, + go.Scattermap, + go.Densitymap, + go.Choroplethmap, + ]: + with warnings.catch_warnings(): + warnings.simplefilter("error") + _ = go.Figure([trace_constructor()]) diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_instantiate_hierarchy.py b/tests/test_core/test_graph_objs/test_instantiate_hierarchy.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_instantiate_hierarchy.py rename to tests/test_core/test_graph_objs/test_instantiate_hierarchy.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_layout_subplots.py b/tests/test_core/test_graph_objs/test_layout_subplots.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_layout_subplots.py rename to tests/test_core/test_graph_objs/test_layout_subplots.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_properties_validated.py b/tests/test_core/test_graph_objs/test_properties_validated.py similarity index 96% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_properties_validated.py rename to tests/test_core/test_graph_objs/test_properties_validated.py index c3edcfb1113..5ad0a2e5262 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_properties_validated.py +++ b/tests/test_core/test_graph_objs/test_properties_validated.py @@ -12,7 +12,7 @@ def setUp(self): def test_validators_work_attr(self): """ Note: all of the individual validators are tested in - `_plotly_utils/tests/validators`. Here we're just making sure that + `tests/test_plotly_utils/validators`. Here we're just making sure that datatypes make use of validators """ with pytest.raises(ValueError): @@ -21,7 +21,7 @@ def test_validators_work_attr(self): def test_validators_work_item(self): """ Note: all of the individual validators are tested in - `_plotly_utils/tests/validators`. Here we're just making sure that + `tests/test_plotly_utils/validators`. Here we're just making sure that datatypes make use of validators """ with pytest.raises(ValueError): diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_property_assignment.py b/tests/test_core/test_graph_objs/test_property_assignment.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_property_assignment.py rename to tests/test_core/test_graph_objs/test_property_assignment.py index 3b5b94dd2fd..7e2dfc9b48b 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_property_assignment.py +++ b/tests/test_core/test_graph_objs/test_property_assignment.py @@ -1,7 +1,7 @@ from unittest import TestCase import plotly.graph_objs as go -from plotly.tests.utils import strip_dict_params +from ...utils import strip_dict_params class TestAssignmentPrimitive(TestCase): diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_repr.py b/tests/test_core/test_graph_objs/test_repr.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_repr.py rename to tests/test_core/test_graph_objs/test_repr.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_scatter.py b/tests/test_core/test_graph_objs/test_scatter.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_scatter.py rename to tests/test_core/test_graph_objs/test_scatter.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_template.py b/tests/test_core/test_graph_objs/test_template.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_template.py rename to tests/test_core/test_graph_objs/test_template.py index ab8cfc60b6e..7b03beea497 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_template.py +++ b/tests/test_core/test_graph_objs/test_template.py @@ -4,7 +4,7 @@ import plotly.io as pio import plotly.graph_objs as go -from plotly.tests.utils import TestCaseNoTemplate +from ...utils import TestCaseNoTemplate class TemplateTest(TestCase): diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_to_ordered_dict.py b/tests/test_core/test_graph_objs/test_to_ordered_dict.py similarity index 98% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_to_ordered_dict.py rename to tests/test_core/test_graph_objs/test_to_ordered_dict.py index 0a0846ae849..a5f63b95848 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_to_ordered_dict.py +++ b/tests/test_core/test_graph_objs/test_to_ordered_dict.py @@ -1,6 +1,6 @@ import plotly.graph_objs as go from collections import OrderedDict -from plotly.tests.utils import TestCaseNoTemplate +from ...utils import TestCaseNoTemplate class FigureTest(TestCaseNoTemplate): diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_update.py b/tests/test_core/test_graph_objs/test_update.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_update.py rename to tests/test_core/test_graph_objs/test_update.py index 74670bb0d06..20a79455d3b 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_update.py +++ b/tests/test_core/test_graph_objs/test_update.py @@ -2,7 +2,7 @@ import plotly.graph_objs as go from plotly.graph_objs import Data, Figure, Layout, Line, Scatter, scatter, XAxis -from plotly.tests.utils import strip_dict_params +from ...utils import strip_dict_params from unittest import TestCase diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_validate.py b/tests/test_core/test_graph_objs/test_validate.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_validate.py rename to tests/test_core/test_graph_objs/test_validate.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_offline/test_offline.py b/tests/test_core/test_offline/test_offline.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_offline/test_offline.py rename to tests/test_core/test_offline/test_offline.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_optional/test_utils/__init__.py b/tests/test_core/test_optional_imports/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_optional/test_utils/__init__.py rename to tests/test_core/test_optional_imports/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_optional_imports/exploding_module.py b/tests/test_core/test_optional_imports/exploding_module.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_optional_imports/exploding_module.py rename to tests/test_core/test_optional_imports/exploding_module.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_optional_imports/test_optional_imports.py b/tests/test_core/test_optional_imports/test_optional_imports.py similarity index 95% rename from packages/python/plotly/plotly/tests/test_core/test_optional_imports/test_optional_imports.py rename to tests/test_core/test_optional_imports/test_optional_imports.py index defe88afd51..4e5fa3c4e5d 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_optional_imports/test_optional_imports.py +++ b/tests/test_core/test_optional_imports/test_optional_imports.py @@ -24,7 +24,7 @@ def test_get_module_does_not_exist(self): def test_get_module_import_exception(self): # Get module that raises an exception on import - module_str = "plotly.tests.test_core." "test_optional_imports.exploding_module" + module_str = "tests.test_core.test_optional_imports.exploding_module" if sys.version_info >= (3, 4): with self.assertLogs("_plotly_utils.optional_imports", level="ERROR") as cm: @@ -38,7 +38,6 @@ def test_get_module_import_exception(self): "ERROR:_plotly_utils.optional_imports:" "Error importing optional module " + module_str ) - self.assertEqual(cm.output[0][: len(expected_start)], expected_start) # Check that exception message is included after log message diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/__init__.py b/tests/test_core/test_subplots/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/__init__.py rename to tests/test_core/test_subplots/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_subplots/test_find_nonempty_subplots.py b/tests/test_core/test_subplots/test_find_nonempty_subplots.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_subplots/test_find_nonempty_subplots.py rename to tests/test_core/test_subplots/test_find_nonempty_subplots.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_subplots/test_get_subplot.py b/tests/test_core/test_subplots/test_get_subplot.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_subplots/test_get_subplot.py rename to tests/test_core/test_subplots/test_get_subplot.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_subplots/test_make_subplots.py b/tests/test_core/test_subplots/test_make_subplots.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_core/test_subplots/test_make_subplots.py rename to tests/test_core/test_subplots/test_make_subplots.py index 539cbecc852..868ee0e3169 100644 --- a/packages/python/plotly/plotly/tests/test_core/test_subplots/test_make_subplots.py +++ b/tests/test_core/test_subplots/test_make_subplots.py @@ -1954,10 +1954,10 @@ def test_make_subplots_spacing_error(): # vertical_spacing is raised when spacing exceeds that value for match in [ ( - "^%s spacing cannot be greater than \(1 / \(%s - 1\)\) = %f." + r"^%s spacing cannot be greater than \(1 / \(%s - 1\)\) = %f." % ("Vertical", "rows", 1.0 / 50.0) - ).replace(".", "\."), - "The resulting plot would have 51 rows \(rows=51\)\.$", + ).replace(".", r"\."), + r"The resulting plot would have 51 rows \(rows=51\)\.$", ]: with pytest.raises( ValueError, @@ -1966,10 +1966,10 @@ def test_make_subplots_spacing_error(): fig = subplots.make_subplots(51, 1, vertical_spacing=0.0201) for match in [ ( - "^%s spacing cannot be greater than \(1 / \(%s - 1\)\) = %f." + r"^%s spacing cannot be greater than \(1 / \(%s - 1\)\) = %f." % ("Horizontal", "cols", 1.0 / 50.0) - ).replace(".", "\."), - "The resulting plot would have 51 columns \(cols=51\)\.$", + ).replace(".", r"\."), + r"The resulting plot would have 51 columns \(cols=51\)\.$", ]: with pytest.raises( ValueError, @@ -2011,18 +2011,18 @@ def test_make_subplots_spacing_error(): # This shouldn't happen so we assert False to force failure assert False with pytest.raises( - ValueError, match="^Horizontal spacing must be between 0 and 1\.$" + ValueError, match=r"^Horizontal spacing must be between 0 and 1\.$" ): fig = subplots.make_subplots(1, 1, horizontal_spacing=-0.01) with pytest.raises( - ValueError, match="^Horizontal spacing must be between 0 and 1\.$" + ValueError, match=r"^Horizontal spacing must be between 0 and 1\.$" ): fig = subplots.make_subplots(1, 1, horizontal_spacing=1.01) with pytest.raises( - ValueError, match="^Vertical spacing must be between 0 and 1\.$" + ValueError, match=r"^Vertical spacing must be between 0 and 1\.$" ): fig = subplots.make_subplots(1, 1, vertical_spacing=-0.01) with pytest.raises( - ValueError, match="^Vertical spacing must be between 0 and 1\.$" + ValueError, match=r"^Vertical spacing must be between 0 and 1\.$" ): fig = subplots.make_subplots(1, 1, vertical_spacing=1.01) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/__init__.py b/tests/test_core/test_update_objects/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_api/test_v2/__init__.py rename to tests/test_core/test_update_objects/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_update_objects/test_row_col_subplot_addressing.py b/tests/test_core/test_update_objects/test_row_col_subplot_addressing.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_update_objects/test_row_col_subplot_addressing.py rename to tests/test_core/test_update_objects/test_row_col_subplot_addressing.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_update_objects/test_selector_matches.py b/tests/test_core/test_update_objects/test_selector_matches.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_update_objects/test_selector_matches.py rename to tests/test_core/test_update_objects/test_selector_matches.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_annotations.py b/tests/test_core/test_update_objects/test_update_annotations.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_annotations.py rename to tests/test_core/test_update_objects/test_update_annotations.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_layout.py b/tests/test_core/test_update_objects/test_update_layout.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_layout.py rename to tests/test_core/test_update_objects/test_update_layout.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_subplots.py b/tests/test_core/test_update_objects/test_update_subplots.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_subplots.py rename to tests/test_core/test_update_objects/test_update_subplots.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_traces.py b/tests/test_core/test_update_objects/test_update_traces.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_update_objects/test_update_traces.py rename to tests/test_core/test_update_objects/test_update_traces.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_plotly/__init__.py b/tests/test_core/test_utils/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_plotly/__init__.py rename to tests/test_core/test_utils/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_utils/test_utils.py b/tests/test_core/test_utils/test_utils.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_utils/test_utils.py rename to tests/test_core/test_utils/test_utils.py diff --git a/packages/python/plotly/plotly/tests/test_io/test_deepcopy_pickle.py b/tests/test_io/test_deepcopy_pickle.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_io/test_deepcopy_pickle.py rename to tests/test_io/test_deepcopy_pickle.py diff --git a/packages/python/plotly/plotly/tests/test_io/test_html.py b/tests/test_io/test_html.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_io/test_html.py rename to tests/test_io/test_html.py diff --git a/packages/python/plotly/plotly/tests/test_io/test_pathlib.py b/tests/test_io/test_pathlib.py similarity index 95% rename from packages/python/plotly/plotly/tests/test_io/test_pathlib.py rename to tests/test_io/test_pathlib.py index 092ffe6a9a6..f641b02d833 100644 --- a/packages/python/plotly/plotly/tests/test_io/test_pathlib.py +++ b/tests/test_io/test_pathlib.py @@ -1,7 +1,7 @@ """Test compatibility with pathlib.Path. See also relevant tests in - packages/python/plotly/plotly/tests/test_optional/test_kaleido/test_kaleido.py + tests/test_optional/test_kaleido/test_kaleido.py """ from unittest import mock diff --git a/packages/python/plotly/plotly/tests/test_io/test_renderers.py b/tests/test_io/test_renderers.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_io/test_renderers.py rename to tests/test_io/test_renderers.py index 57c2920e4fb..d09504af39c 100644 --- a/packages/python/plotly/plotly/tests/test_io/test_renderers.py +++ b/tests/test_io/test_renderers.py @@ -124,7 +124,7 @@ def test_plotly_mimetype_renderer_show(fig1, renderer): # Static Image # ------------ -# See plotly/tests/test_orca/test_image_renderers.py +# See tests/test_orca/test_image_renderers.py # HTML diff --git a/packages/python/plotly/plotly/tests/test_io/test_to_from_json.py b/tests/test_io/test_to_from_json.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_io/test_to_from_json.py rename to tests/test_io/test_to_from_json.py diff --git a/packages/python/plotly/plotly/tests/test_io/test_to_from_plotly_json.py b/tests/test_io/test_to_from_plotly_json.py similarity index 97% rename from packages/python/plotly/plotly/tests/test_io/test_to_from_plotly_json.py rename to tests/test_io/test_to_from_plotly_json.py index 38bbcdaeceb..1c0440b0330 100644 --- a/packages/python/plotly/plotly/tests/test_io/test_to_from_plotly_json.py +++ b/tests/test_io/test_to_from_plotly_json.py @@ -244,7 +244,8 @@ def test_sanitize_json(engine): fig = go.Figure(layout=layout) fig_json = pio.to_json_plotly(fig, engine=engine) layout_2 = json.loads(fig_json)["layout"] - del layout_2["template"] + if "template" in layout_2: + del layout_2["template"] assert layout == layout_2 @@ -259,3 +260,9 @@ def test_sanitize_json(engine): for bad, good in replacements.items(): assert bad not in fig_json assert good in fig_json + + +@pytest.mark.parametrize("na_value", [np.nan, pd.NaT, pd.NA]) +def test_na_values(engine, na_value): + result = pio.to_json_plotly(na_value, engine=engine) + assert result == "null" diff --git a/packages/python/chart-studio/chart_studio/tests/__init__.py b/tests/test_optional/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/__init__.py rename to tests/test_optional/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/optional_utils.py b/tests/test_optional/optional_utils.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_optional/optional_utils.py rename to tests/test_optional/optional_utils.py index 35a4aacb657..8d76836e827 100644 --- a/packages/python/plotly/plotly/tests/test_optional/optional_utils.py +++ b/tests/test_optional/optional_utils.py @@ -1,7 +1,7 @@ import numpy as np from plotly import optional_imports -from plotly.tests.utils import is_num_list +from ..utils import is_num_list from plotly.utils import get_by_path, node_generator import copy diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_dashboard/__init__.py b/tests/test_optional/test_autoshapes/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_dashboard/__init__.py rename to tests/test_optional/test_autoshapes/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_autoshapes/common.py b/tests/test_optional/test_autoshapes/common.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_autoshapes/common.py rename to tests/test_optional/test_autoshapes/common.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_autoshapes/test_annotated_shapes.py b/tests/test_optional/test_autoshapes/test_annotated_shapes.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_autoshapes/test_annotated_shapes.py rename to tests/test_optional/test_autoshapes/test_annotated_shapes.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_autoshapes/test_annotated_shapes_annotations.json b/tests/test_optional/test_autoshapes/test_annotated_shapes_annotations.json similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_autoshapes/test_annotated_shapes_annotations.json rename to tests/test_optional/test_autoshapes/test_annotated_shapes_annotations.json diff --git a/packages/python/plotly/plotly/tests/test_optional/test_autoshapes/test_axis_span_shapes.py b/tests/test_optional/test_autoshapes/test_axis_span_shapes.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_autoshapes/test_axis_span_shapes.py rename to tests/test_optional/test_autoshapes/test_axis_span_shapes.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_file/__init__.py b/tests/test_optional/test_figure_factory/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_file/__init__.py rename to tests/test_optional/test_figure_factory/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_figure_factory/test_figure_factory.py b/tests/test_optional/test_figure_factory/test_figure_factory.py similarity index 98% rename from packages/python/plotly/plotly/tests/test_optional/test_figure_factory/test_figure_factory.py rename to tests/test_optional/test_figure_factory/test_figure_factory.py index 077a39dcb17..b0d623776d7 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_figure_factory/test_figure_factory.py +++ b/tests/test_optional/test_figure_factory/test_figure_factory.py @@ -5,11 +5,11 @@ import plotly.io as pio import plotly.figure_factory as ff -from plotly.tests.test_optional.optional_utils import NumpyTestUtilsMixin -from plotly.tests.test_optional.test_utils.test_utils import np_nan, np_inf +from ...test_optional.optional_utils import NumpyTestUtilsMixin +from ...test_optional.test_utils.test_utils import np_nan, np_inf import numpy as np -from plotly.tests.utils import TestCaseNoTemplate +from ...utils import TestCaseNoTemplate from scipy.spatial import Delaunay import pandas as pd @@ -4108,66 +4108,6 @@ def test_scope_is_not_list(self): scope="foo", ) - def test_full_choropleth(self): - fips = [1001] - values = [1] - fig = ff.create_choropleth(fips=fips, values=values, simplify_county=1) - - exp_fig_head = ( - -88.053375, - -88.02916499999999, - -88.02432999999999, - -88.04504299999999, - -88.053375, - np_nan(), - -88.211209, - -88.209999, - -88.208733, - -88.209559, - -88.211209, - np_nan(), - -88.22511999999999, - -88.22128099999999, - -88.218694, - -88.22465299999999, - -88.22511999999999, - np_nan(), - -88.264659, - -88.25782699999999, - -88.25947, - -88.255659, - -88.264659, - np_nan(), - -88.327302, - -88.20146799999999, - -88.141143, - -88.124658, - -88.074854, - -88.12493599999999, - -88.10665399999999, - -88.149812, - -88.327302, - np_nan(), - -88.346745, - -88.341235, - -88.33288999999999, - -88.346823, - -88.346745, - np_nan(), - -88.473227, - -88.097888, - -88.154617, - -88.20295899999999, - -85.605165, - -85.18440000000001, - -85.12218899999999, - -85.142567, - -85.113329, - -85.10533699999999, - ) - - self.assertEqual(fig["data"][2]["x"][:50], exp_fig_head) - class TestQuiver(TestCaseNoTemplate): def test_scaleratio_param(self): diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_requests/__init__.py b/tests/test_optional/test_graph_objs/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_get_requests/__init__.py rename to tests/test_optional/test_graph_objs/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_graph_objs/test_skipped_b64_keys.py b/tests/test_optional/test_graph_objs/test_skipped_b64_keys.py similarity index 95% rename from packages/python/plotly/plotly/tests/test_optional/test_graph_objs/test_skipped_b64_keys.py rename to tests/test_optional/test_graph_objs/test_skipped_b64_keys.py index ee85785644b..3e36cff177b 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_graph_objs/test_skipped_b64_keys.py +++ b/tests/test_optional/test_graph_objs/test_skipped_b64_keys.py @@ -1,7 +1,7 @@ import json from unittest import TestCase import numpy as np -from plotly.tests.test_optional.optional_utils import NumpyTestUtilsMixin +from ...test_optional.optional_utils import NumpyTestUtilsMixin import plotly.graph_objs as go @@ -66,7 +66,7 @@ def test_np_layers(self): "center": {"lon": 0.5, "lat": 51}, }, } - data = [{"type": "scattermapbox"}] + data = [{"type": "scattermap"}] fig = go.Figure(data=data, layout=layout) diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_grid/__init__.py b/tests/test_optional/test_kaleido/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_grid/__init__.py rename to tests/test_optional/test_kaleido/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_kaleido/test_kaleido.py b/tests/test_optional/test_kaleido/test_kaleido.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_kaleido/test_kaleido.py rename to tests/test_optional/test_kaleido/test_kaleido.py diff --git a/packages/python/plotly/plotly/tests/test_core/test_graph_objs/__init__.py b/tests/test_optional/test_matplotlylib/__init__.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_graph_objs/__init__.py rename to tests/test_optional/test_matplotlylib/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/__init__.py b/tests/test_optional/test_matplotlylib/data/__init__.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/__init__.py rename to tests/test_optional/test_matplotlylib/data/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/annotations.py b/tests/test_optional/test_matplotlylib/data/annotations.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/annotations.py rename to tests/test_optional/test_matplotlylib/data/annotations.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/axis_scales.py b/tests/test_optional/test_matplotlylib/data/axis_scales.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/axis_scales.py rename to tests/test_optional/test_matplotlylib/data/axis_scales.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/bars.py b/tests/test_optional/test_matplotlylib/data/bars.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/bars.py rename to tests/test_optional/test_matplotlylib/data/bars.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/data.py b/tests/test_optional/test_matplotlylib/data/data.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/data.py rename to tests/test_optional/test_matplotlylib/data/data.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/lines.py b/tests/test_optional/test_matplotlylib/data/lines.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/lines.py rename to tests/test_optional/test_matplotlylib/data/lines.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/scatter.py b/tests/test_optional/test_matplotlylib/data/scatter.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/scatter.py rename to tests/test_optional/test_matplotlylib/data/scatter.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/subplots.py b/tests/test_optional/test_matplotlylib/data/subplots.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/data/subplots.py rename to tests/test_optional/test_matplotlylib/data/subplots.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_annotations.py b/tests/test_optional/test_matplotlylib/test_annotations.py similarity index 84% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_annotations.py rename to tests/test_optional/test_matplotlylib/test_annotations.py index bef9abf1d85..1ed9cfbaffe 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_annotations.py +++ b/tests/test_optional/test_matplotlylib/test_annotations.py @@ -7,9 +7,9 @@ if matplotlylib: import matplotlib.pyplot as plt - from plotly.tests.utils import compare_dict, strip_dict_params - from plotly.tests.test_optional.optional_utils import run_fig - from plotly.tests.test_optional.test_matplotlylib.data.annotations import * + from ...utils import compare_dict, strip_dict_params + from ..optional_utils import run_fig + from ..test_matplotlylib.data.annotations import * @pytest.mark.skip diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_axis_scales.py b/tests/test_optional/test_matplotlylib/test_axis_scales.py similarity index 84% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_axis_scales.py rename to tests/test_optional/test_matplotlylib/test_axis_scales.py index e4536e2f37d..4aaf208e08b 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_axis_scales.py +++ b/tests/test_optional/test_matplotlylib/test_axis_scales.py @@ -1,9 +1,9 @@ import pytest from plotly import optional_imports -from plotly.tests.utils import compare_dict, strip_dict_params -from plotly.tests.test_optional.optional_utils import run_fig -from plotly.tests.test_optional.test_matplotlylib.data.axis_scales import * +from ...utils import compare_dict, strip_dict_params +from ...test_optional.optional_utils import run_fig +from ...test_optional.test_matplotlylib.data.axis_scales import * matplotlylib = optional_imports.get_module("plotly.matplotlylib") diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_bars.py b/tests/test_optional/test_matplotlylib/test_bars.py similarity index 91% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_bars.py rename to tests/test_optional/test_matplotlylib/test_bars.py index 683277105d3..490ae573805 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_bars.py +++ b/tests/test_optional/test_matplotlylib/test_bars.py @@ -1,9 +1,9 @@ import pytest from plotly import optional_imports -from plotly.tests.utils import compare_dict, strip_dict_params -from plotly.tests.test_optional.optional_utils import run_fig -from plotly.tests.test_optional.test_matplotlylib.data.bars import * +from ...utils import compare_dict, strip_dict_params +from ...test_optional.optional_utils import run_fig +from ...test_optional.test_matplotlylib.data.bars import * matplotlylib = optional_imports.get_module("plotly.matplotlylib") diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_data.py b/tests/test_optional/test_matplotlylib/test_data.py similarity index 95% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_data.py rename to tests/test_optional/test_matplotlylib/test_data.py index 213fd5f3816..5fd430ca373 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_data.py +++ b/tests/test_optional/test_matplotlylib/test_data.py @@ -1,8 +1,8 @@ import pytest from plotly import optional_imports -from plotly.tests.test_optional.optional_utils import run_fig -from plotly.tests.test_optional.test_matplotlylib.data.data import * +from ...test_optional.optional_utils import run_fig +from ...test_optional.test_matplotlylib.data.data import * matplotlylib = optional_imports.get_module("plotly.matplotlylib") diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_date_times.py b/tests/test_optional/test_matplotlylib/test_date_times.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_date_times.py rename to tests/test_optional/test_matplotlylib/test_date_times.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_lines.py b/tests/test_optional/test_matplotlylib/test_lines.py similarity index 89% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_lines.py rename to tests/test_optional/test_matplotlylib/test_lines.py index e12d49afd60..e3482f9c711 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_lines.py +++ b/tests/test_optional/test_matplotlylib/test_lines.py @@ -1,9 +1,9 @@ import pytest from plotly import optional_imports -from plotly.tests.utils import compare_dict, strip_dict_params -from plotly.tests.test_optional.optional_utils import run_fig -from plotly.tests.test_optional.test_matplotlylib.data.lines import * +from ...utils import compare_dict, strip_dict_params +from ...test_optional.optional_utils import run_fig +from ...test_optional.test_matplotlylib.data.lines import * matplotlylib = optional_imports.get_module("plotly.matplotlylib") diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_scatter.py b/tests/test_optional/test_matplotlylib/test_scatter.py similarity index 87% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_scatter.py rename to tests/test_optional/test_matplotlylib/test_scatter.py index 35bc85d8460..ad5c54e2a0d 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_scatter.py +++ b/tests/test_optional/test_matplotlylib/test_scatter.py @@ -1,9 +1,9 @@ import pytest from plotly import optional_imports -from plotly.tests.utils import compare_dict, strip_dict_params -from plotly.tests.test_optional.optional_utils import run_fig -from plotly.tests.test_optional.test_matplotlylib.data.scatter import * +from ...utils import compare_dict, strip_dict_params +from ...test_optional.optional_utils import run_fig +from ...test_optional.test_matplotlylib.data.scatter import * matplotlylib = optional_imports.get_module("plotly.matplotlylib") diff --git a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_subplots.py b/tests/test_optional/test_matplotlylib/test_subplots.py similarity index 83% rename from packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_subplots.py rename to tests/test_optional/test_matplotlylib/test_subplots.py index 147fecdc50a..0680f90a524 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_matplotlylib/test_subplots.py +++ b/tests/test_optional/test_matplotlylib/test_subplots.py @@ -1,9 +1,9 @@ import pytest from plotly import optional_imports -from plotly.tests.utils import compare_dict, strip_dict_params -from plotly.tests.test_optional.optional_utils import run_fig -from plotly.tests.test_optional.test_matplotlylib.data.subplots import * +from ...utils import compare_dict, strip_dict_params +from ...test_optional.optional_utils import run_fig +from ...test_optional.test_matplotlylib.data.subplots import * matplotlylib = optional_imports.get_module("plotly.matplotlylib") diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_image/__init__.py b/tests/test_optional/test_offline/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_image/__init__.py rename to tests/test_optional/test_offline/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_offline/test_offline.py b/tests/test_optional/test_offline/test_offline.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_offline/test_offline.py rename to tests/test_optional/test_offline/test_offline.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_meta/__init__.py b/tests/test_optional/test_px/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_meta/__init__.py rename to tests/test_optional/test_px/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/conftest.py b/tests/test_optional/test_px/conftest.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_px/conftest.py rename to tests/test_optional/test_px/conftest.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_colors.py b/tests/test_optional/test_px/test_colors.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_colors.py rename to tests/test_optional/test_px/test_colors.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_facets.py b/tests/test_optional/test_px/test_facets.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_facets.py rename to tests/test_optional/test_px/test_facets.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_imshow.py b/tests/test_optional/test_px/test_imshow.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_imshow.py rename to tests/test_optional/test_px/test_imshow.py index f06b91bca0e..86e843a6ff9 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_px/test_imshow.py +++ b/tests/test_optional/test_px/test_imshow.py @@ -7,7 +7,7 @@ import base64 import datetime from plotly.express.imshow_utils import rescale_intensity -from plotly.tests.test_optional.test_utils.test_utils import np_nan +from ...test_optional.test_utils.test_utils import np_nan img_rgb = np.array([[[255, 0, 0], [0, 255, 0], [0, 0, 255]]], dtype=np.uint8) img_gray = np.arange(100, dtype=float).reshape((10, 10)) diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_marginals.py b/tests/test_optional/test_px/test_marginals.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_marginals.py rename to tests/test_optional/test_px/test_marginals.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_pandas_backend.py b/tests/test_optional/test_px/test_pandas_backend.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_pandas_backend.py rename to tests/test_optional/test_px/test_pandas_backend.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px.py b/tests/test_optional/test_px/test_px.py similarity index 84% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_px.py rename to tests/test_optional/test_px/test_px.py index e7a090bde21..3a8ddabcd0a 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px.py +++ b/tests/test_optional/test_px/test_px.py @@ -1,9 +1,11 @@ +from itertools import permutations +import warnings + import plotly.express as px import plotly.io as pio import narwhals.stable.v1 as nw import numpy as np import pytest -from itertools import permutations def test_scatter(backend): @@ -375,3 +377,68 @@ def test_empty_df_int64(backend): ) # to_dict() should not raise an exception fig.to_dict() + + +@pytest.mark.parametrize("return_type", ["pandas", "polars", "pyarrow"]) +def test_load_px_data(return_type): + # Test that all px.data functions can be called without error + data_func_names = [ + f + for f in dir(px.data) + if not f.startswith("_") + and callable(getattr(px.data, f)) + and not f == "import_module" + ] + for fname in data_func_names: + if fname == "election_geojson": + # As a geojson file, election_geojson does not support the return_type argument + df = getattr(px.data, fname)() + else: + df = getattr(px.data, fname)(return_type=return_type) + assert len(df) > 0 + + +def test_warn_on_deprecated_mapbox_px_constructors(): + # This test will fail if any of the following px constructors + # fails to emit a DeprecationWarning + for fig_constructor in [ + px.line_mapbox, + px.scatter_mapbox, + px.density_mapbox, + px.choropleth_mapbox, + ]: + # Look for warnings with the string "_mapbox" in them + # to make sure the warning is coming from px rather than go + with pytest.warns(DeprecationWarning, match="_mapbox"): + if fig_constructor == px.choropleth_mapbox: + fig_constructor(locations=["CA", "TX", "NY"]) + else: + fig_constructor(lat=[10, 20, 30], lon=[10, 20, 30]) + + +def test_no_warn_on_non_deprecated_px_constructors(): + # This test will fail if any of the following px constructors + # emits a DeprecationWarning + for fig_constructor in [ + px.scatter, + px.line, + px.scatter_map, + px.density_map, + px.choropleth_map, + ]: + with warnings.catch_warnings(): + warnings.simplefilter("error") + if fig_constructor == px.choropleth_map: + fig_constructor(locations=["CA", "TX", "NY"]) + elif fig_constructor in {px.scatter_map, px.density_map}: + fig_constructor(lat=[10, 20, 30], lon=[10, 20, 30]) + else: + fig_constructor(x=[1, 2, 3], y=[1, 2, 3]) + + +def test_no_warn_on_update_template(): + # This test will fail if update_layout(template=...) emits a DeprecationWarning + fig = px.line(x=[1, 2, 3], y=[1, 2, 3]) + with warnings.catch_warnings(): + warnings.simplefilter("error") + fig.update_layout(template="plotly_white") diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px_functions.py b/tests/test_optional/test_px/test_px_functions.py similarity index 95% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_px_functions.py rename to tests/test_optional/test_px/test_px_functions.py index 84822a32e10..7cab028b21f 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px_functions.py +++ b/tests/test_optional/test_px/test_px_functions.py @@ -56,6 +56,39 @@ def test_pie_like_px(): _compare_figures(trace, fig) +def test_pie_custom_category_order(constructor): + # https://github.com/plotly/plotly.py/issues/4999 + data = { + "status": ["On Route", "Pending", "Waiting Result", "Delivered"], + "count": [28, 10, 73, 8], + } + df = constructor(data) + custom_order = ["Pending", "Waiting Result", "On Route", "Delivered"] + result = px.pie( + data_frame=df, + values="count", + names="status", + category_orders={"status": custom_order}, + ) + assert list(result.to_dict()["data"][0]["labels"]) == [ + "Pending", + "Waiting Result", + "On Route", + "Delivered", + ] + values_ = np.array( + [ + x[0] + for x in sorted( + zip(data["count"], data["status"]), + key=lambda t: custom_order.index(t[1]), + ) + ] + ) + trace = go.Pie(values=values_, labels=custom_order) + _compare_figures(trace, result) + + def test_sunburst_treemap_colorscales(): labels = ["Eve", "Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"] parents = ["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve"] diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px_hover.py b/tests/test_optional/test_px/test_px_hover.py similarity index 98% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_px_hover.py rename to tests/test_optional/test_px/test_px_hover.py index 35a91a5c34f..eede0120f59 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px_hover.py +++ b/tests/test_optional/test_px/test_px_hover.py @@ -186,7 +186,7 @@ def test_sunburst_hoverdict_color(backend): def test_date_in_hover(constructor): df = nw.from_native( - constructor({"date": ["2015-04-04 19:31:30+01:00"], "value": [3]}) + constructor({"date": ["2015-04-04 19:31:30+0100"], "value": [3]}) ).with_columns(date=nw.col("date").str.to_datetime(format="%Y-%m-%d %H:%M:%S%z")) fig = px.scatter(df.to_native(), x="value", y="value", hover_data=["date"]) diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px_input.py b/tests/test_optional/test_px/test_px_input.py similarity index 98% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_px_input.py rename to tests/test_optional/test_px/test_px_input.py index 45325b7c5f5..78b0bc3f76b 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px_input.py +++ b/tests/test_optional/test_px/test_px_input.py @@ -8,11 +8,18 @@ from packaging import version import unittest.mock as mock from plotly.express._core import build_dataframe +from plotly import optional_imports from pandas.testing import assert_frame_equal import sys import warnings +if optional_imports.get_module("vaex") is None and sys.version_info > (3, 9): + TEST_LIBS = ["polars"] +else: + TEST_LIBS = ["vaex", "polars"] + + def test_numpy(): fig = px.scatter(x=[1, 2, 3], y=[2, 3, 4], color=[1, 3, 9]) assert np.all(fig.data[0].x == np.array([1, 2, 3])) @@ -342,7 +349,7 @@ def __dataframe__(self, allow_copy: bool = True): or sys.version_info >= (3, 12), reason="plotly doesn't use a dataframe interchange protocol for pandas < 2.0.2", ) -@pytest.mark.parametrize("test_lib", ["vaex", "polars"]) +@pytest.mark.parametrize("test_lib", TEST_LIBS) def test_build_df_from_vaex_and_polars(test_lib): if test_lib == "vaex": import vaex as lib @@ -365,7 +372,7 @@ def test_build_df_from_vaex_and_polars(test_lib): or sys.version_info >= (3, 12), reason="plotly doesn't use a dataframe interchange protocol for pandas < 2.0.2", ) -@pytest.mark.parametrize("test_lib", ["vaex", "polars"]) +@pytest.mark.parametrize("test_lib", TEST_LIBS) @pytest.mark.parametrize( "hover_data", [["sepal_width"], {"sepal_length": False, "sepal_width": ":.2f"}] ) @@ -393,7 +400,7 @@ def test_build_df_with_hover_data_from_vaex_and_polars(test_lib, hover_data): def test_timezones(constructor): df = nw.from_native( - constructor({"date": ["2015-04-04 19:31:30+01:00"], "value": [3]}) + constructor({"date": ["2015-04-04 19:31:30+0100"], "value": [3]}) ).with_columns(nw.col("date").str.to_datetime(format="%Y-%m-%d %H:%M:%S%z")) args = dict(data_frame=df.to_native(), x="date", y="value") out = build_dataframe(args, go.Scatter) diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_px_wide.py b/tests/test_optional/test_px/test_px_wide.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_px_wide.py rename to tests/test_optional/test_px/test_px_wide.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_px/test_trendline.py b/tests/test_optional/test_px/test_trendline.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_optional/test_px/test_trendline.py rename to tests/test_optional/test_px/test_trendline.py index 0deecd8586d..8224474fe6a 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_px/test_trendline.py +++ b/tests/test_optional/test_px/test_trendline.py @@ -3,7 +3,7 @@ import numpy as np import pytest from datetime import datetime -from plotly.tests.test_optional.test_utils.test_utils import np_nan +from ...test_optional.test_utils.test_utils import np_nan @pytest.mark.parametrize( diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_session/__init__.py b/tests/test_optional/test_subplots/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_session/__init__.py rename to tests/test_optional/test_subplots/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_subplots/test_make_subplots.py b/tests/test_optional/test_subplots/test_make_subplots.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_optional/test_subplots/test_make_subplots.py rename to tests/test_optional/test_subplots/test_make_subplots.py diff --git a/packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_spectacle_presentation/__init__.py b/tests/test_optional/test_tools/__init__.py similarity index 100% rename from packages/python/chart-studio/chart_studio/tests/test_plot_ly/test_spectacle_presentation/__init__.py rename to tests/test_optional/test_tools/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_tools/test_figure_factory.py b/tests/test_optional/test_tools/test_figure_factory.py similarity index 99% rename from packages/python/plotly/plotly/tests/test_optional/test_tools/test_figure_factory.py rename to tests/test_optional/test_tools/test_figure_factory.py index bcebfa2914d..3ec00a3555f 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_tools/test_figure_factory.py +++ b/tests/test_optional/test_tools/test_figure_factory.py @@ -6,9 +6,9 @@ import plotly.io as pio from plotly.exceptions import PlotlyError -from plotly.tests.test_optional.optional_utils import NumpyTestUtilsMixin +from ...test_optional.optional_utils import NumpyTestUtilsMixin from plotly.graph_objs import graph_objs -from plotly.tests.utils import TestCaseNoTemplate +from ...utils import TestCaseNoTemplate class TestQuiver(TestCaseNoTemplate, NumpyTestUtilsMixin): diff --git a/packages/python/plotly/plotly/tests/test_core/test_utils/__init__.py b/tests/test_optional/test_utils/__init__.py similarity index 100% rename from packages/python/plotly/plotly/tests/test_core/test_utils/__init__.py rename to tests/test_optional/test_utils/__init__.py diff --git a/packages/python/plotly/plotly/tests/test_optional/test_utils/test_utils.py b/tests/test_optional/test_utils/test_utils.py similarity index 98% rename from packages/python/plotly/plotly/tests/test_optional/test_utils/test_utils.py rename to tests/test_optional/test_utils/test_utils.py index 52695c679ac..34a708dfe54 100644 --- a/packages/python/plotly/plotly/tests/test_optional/test_utils/test_utils.py +++ b/tests/test_optional/test_utils/test_utils.py @@ -400,7 +400,12 @@ def test_pil_image_encoding(self): import _plotly_utils img_path = os.path.join( - _plotly_utils.__path__[0], "tests", "resources", "1x1-black.png" + os.path.dirname(os.path.abspath(__file__)), + "..", + "..", + "test_plotly_utils", + "resources", + "1x1-black.png", ) with open(img_path, "rb") as f: diff --git a/packages/python/plotly/_plotly_utils/__init__.py b/tests/test_plotly_utils/__init__.py similarity index 100% rename from packages/python/plotly/_plotly_utils/__init__.py rename to tests/test_plotly_utils/__init__.py diff --git a/packages/python/plotly/_plotly_utils/tests/resources/1x1-black.png b/tests/test_plotly_utils/resources/1x1-black.png similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/resources/1x1-black.png rename to tests/test_plotly_utils/resources/1x1-black.png diff --git a/packages/python/plotly/_plotly_utils/tests/__init__.py b/tests/test_plotly_utils/validators/__init__.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/__init__.py rename to tests/test_plotly_utils/validators/__init__.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_angle_validator.py b/tests/test_plotly_utils/validators/test_angle_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_angle_validator.py rename to tests/test_plotly_utils/validators/test_angle_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_any_validator.py b/tests/test_plotly_utils/validators/test_any_validator.py similarity index 94% rename from packages/python/plotly/_plotly_utils/tests/validators/test_any_validator.py rename to tests/test_plotly_utils/validators/test_any_validator.py index 57ff05f2181..eb0eaeb44b8 100644 --- a/packages/python/plotly/_plotly_utils/tests/validators/test_any_validator.py +++ b/tests/test_plotly_utils/validators/test_any_validator.py @@ -1,7 +1,7 @@ import pytest from _plotly_utils.basevalidators import AnyValidator import numpy as np -from plotly.tests.test_optional.test_utils.test_utils import np_nan, np_inf +from ...test_optional.test_utils.test_utils import np_nan, np_inf # Fixtures diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_basetraces_validator.py b/tests/test_plotly_utils/validators/test_basetraces_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_basetraces_validator.py rename to tests/test_plotly_utils/validators/test_basetraces_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_boolean_validator.py b/tests/test_plotly_utils/validators/test_boolean_validator.py similarity index 91% rename from packages/python/plotly/_plotly_utils/tests/validators/test_boolean_validator.py rename to tests/test_plotly_utils/validators/test_boolean_validator.py index bc714d9f8d2..ee739f0497a 100644 --- a/packages/python/plotly/_plotly_utils/tests/validators/test_boolean_validator.py +++ b/tests/test_plotly_utils/validators/test_boolean_validator.py @@ -1,6 +1,6 @@ import pytest from _plotly_utils.basevalidators import BooleanValidator -from plotly.tests.test_optional.test_utils.test_utils import np_nan +from ...test_optional.test_utils.test_utils import np_nan # Boolean Validator # ================= diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_color_validator.py b/tests/test_plotly_utils/validators/test_color_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_color_validator.py rename to tests/test_plotly_utils/validators/test_color_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_colorlist_validator.py b/tests/test_plotly_utils/validators/test_colorlist_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_colorlist_validator.py rename to tests/test_plotly_utils/validators/test_colorlist_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_colorscale_validator.py b/tests/test_plotly_utils/validators/test_colorscale_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_colorscale_validator.py rename to tests/test_plotly_utils/validators/test_colorscale_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_compound_validator.py b/tests/test_plotly_utils/validators/test_compound_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_compound_validator.py rename to tests/test_plotly_utils/validators/test_compound_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_compoundarray_validator.py b/tests/test_plotly_utils/validators/test_compoundarray_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_compoundarray_validator.py rename to tests/test_plotly_utils/validators/test_compoundarray_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_dash_validator.py b/tests/test_plotly_utils/validators/test_dash_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_dash_validator.py rename to tests/test_plotly_utils/validators/test_dash_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_dataarray_validator.py b/tests/test_plotly_utils/validators/test_dataarray_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_dataarray_validator.py rename to tests/test_plotly_utils/validators/test_dataarray_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_enumerated_validator.py b/tests/test_plotly_utils/validators/test_enumerated_validator.py similarity index 96% rename from packages/python/plotly/_plotly_utils/tests/validators/test_enumerated_validator.py rename to tests/test_plotly_utils/validators/test_enumerated_validator.py index 5090610384e..6aa5fa99017 100644 --- a/packages/python/plotly/_plotly_utils/tests/validators/test_enumerated_validator.py +++ b/tests/test_plotly_utils/validators/test_enumerated_validator.py @@ -2,7 +2,7 @@ import numpy as np import pandas as pd from _plotly_utils.basevalidators import EnumeratedValidator -from plotly.tests.test_optional.test_utils.test_utils import np_inf +from ...test_optional.test_utils.test_utils import np_inf # Fixtures # -------- @@ -14,7 +14,7 @@ def validator(): @pytest.fixture() def validator_re(): - values = ["foo", "/bar(\d)+/", "baz"] + values = ["foo", r"/bar(\d)+/", "baz"] return EnumeratedValidator("prop", "parent", values, array_ok=False) @@ -26,7 +26,7 @@ def validator_aok(): @pytest.fixture() def validator_aok_re(): - values = ["foo", "/bar(\d)+/", "baz"] + values = ["foo", r"/bar(\d)+/", "baz"] return EnumeratedValidator("prop", "parent", values, array_ok=True) diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_fig_deepcopy.py b/tests/test_plotly_utils/validators/test_fig_deepcopy.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_fig_deepcopy.py rename to tests/test_plotly_utils/validators/test_fig_deepcopy.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_flaglist_validator.py b/tests/test_plotly_utils/validators/test_flaglist_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_flaglist_validator.py rename to tests/test_plotly_utils/validators/test_flaglist_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_imageuri_validator.py b/tests/test_plotly_utils/validators/test_imageuri_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_imageuri_validator.py rename to tests/test_plotly_utils/validators/test_imageuri_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_infoarray_validator.py b/tests/test_plotly_utils/validators/test_infoarray_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_infoarray_validator.py rename to tests/test_plotly_utils/validators/test_infoarray_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_integer_validator.py b/tests/test_plotly_utils/validators/test_integer_validator.py similarity index 98% rename from packages/python/plotly/_plotly_utils/tests/validators/test_integer_validator.py rename to tests/test_plotly_utils/validators/test_integer_validator.py index 446e9495452..64d27c0d23c 100644 --- a/packages/python/plotly/_plotly_utils/tests/validators/test_integer_validator.py +++ b/tests/test_plotly_utils/validators/test_integer_validator.py @@ -5,7 +5,7 @@ from _plotly_utils.basevalidators import IntegerValidator import numpy as np import pandas as pd -from plotly.tests.test_optional.test_utils.test_utils import np_nan, np_inf +from ...test_optional.test_utils.test_utils import np_nan, np_inf # ### Fixtures ### @pytest.fixture() diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_literal_validator.py b/tests/test_plotly_utils/validators/test_literal_validator.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_literal_validator.py rename to tests/test_plotly_utils/validators/test_literal_validator.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_number_validator.py b/tests/test_plotly_utils/validators/test_number_validator.py similarity index 98% rename from packages/python/plotly/_plotly_utils/tests/validators/test_number_validator.py rename to tests/test_plotly_utils/validators/test_number_validator.py index 847f02619ad..bb81f630bfc 100644 --- a/packages/python/plotly/_plotly_utils/tests/validators/test_number_validator.py +++ b/tests/test_plotly_utils/validators/test_number_validator.py @@ -4,7 +4,7 @@ from _plotly_utils.basevalidators import NumberValidator import numpy as np import pandas as pd -from plotly.tests.test_optional.test_utils.test_utils import np_nan, np_inf +from ...test_optional.test_utils.test_utils import np_nan, np_inf # Fixtures # -------- diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_pandas_series_input.py b/tests/test_plotly_utils/validators/test_pandas_series_input.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_pandas_series_input.py rename to tests/test_plotly_utils/validators/test_pandas_series_input.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_string_validator.py b/tests/test_plotly_utils/validators/test_string_validator.py similarity index 98% rename from packages/python/plotly/_plotly_utils/tests/validators/test_string_validator.py rename to tests/test_plotly_utils/validators/test_string_validator.py index f9f96f4f793..01c336df46c 100644 --- a/packages/python/plotly/_plotly_utils/tests/validators/test_string_validator.py +++ b/tests/test_plotly_utils/validators/test_string_validator.py @@ -2,7 +2,7 @@ from _plotly_utils.basevalidators import StringValidator import numpy as np -from plotly.tests.test_optional.test_utils.test_utils import np_nan +from ...test_optional.test_utils.test_utils import np_nan # Fixtures diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_subplotid_validator.py b/tests/test_plotly_utils/validators/test_subplotid_validator.py similarity index 93% rename from packages/python/plotly/_plotly_utils/tests/validators/test_subplotid_validator.py rename to tests/test_plotly_utils/validators/test_subplotid_validator.py index 39b3c96f044..2263509e1d4 100644 --- a/packages/python/plotly/_plotly_utils/tests/validators/test_subplotid_validator.py +++ b/tests/test_plotly_utils/validators/test_subplotid_validator.py @@ -1,6 +1,6 @@ import pytest from _plotly_utils.basevalidators import SubplotidValidator -from plotly.tests.test_optional.test_utils.test_utils import np_nan, np_inf +from ...test_optional.test_utils.test_utils import np_nan, np_inf # Fixtures diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_validators_common.py b/tests/test_plotly_utils/validators/test_validators_common.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_validators_common.py rename to tests/test_plotly_utils/validators/test_validators_common.py diff --git a/packages/python/plotly/_plotly_utils/tests/validators/test_xarray_input.py b/tests/test_plotly_utils/validators/test_xarray_input.py similarity index 100% rename from packages/python/plotly/_plotly_utils/tests/validators/test_xarray_input.py rename to tests/test_plotly_utils/validators/test_xarray_input.py diff --git a/packages/python/plotly/plotly/tests/utils.py b/tests/utils.py similarity index 96% rename from packages/python/plotly/plotly/tests/utils.py rename to tests/utils.py index fc0ad0e8c75..89ffb9c9b12 100644 --- a/packages/python/plotly/plotly/tests/utils.py +++ b/tests/utils.py @@ -48,7 +48,7 @@ def strip_dict_params(d1, d2, ignore=["uid"]): """ Helper function for assert_dict_equal - Nearly duplicate of assert_fig_equal in plotly/tests/test_optional/optional_utils.py + Nearly duplicate of assert_fig_equal in tests/test_optional/optional_utils.py Removes `ignore` params from d1 and/or d2 if they exist then returns stripped dictionaries

3:)O/t&?_OelBIcc],KI[%-550r?;;6H-KAt0sGU`\un -BsI!h;>9>'8874B%p#Un!T3/fin_cNlEU!Hl1/Tbp/2*UlP?,#%U,hqWRd[Z/;4C0nS0?DsVG[;"oNl__-Q^:4Hg`+/MX^](kek/V8O -^C?4#kn_As(;M,c_-UaMWhMB -E%V63];BQE,=o92@]'dKVXPgs$7O4(nAD0eo?D82X)X%;E/+R9Ri(X1$_?![EN.W1 -Ok9,(r\D5-nS7](c?4,:h!sX\nm7#j+QDq6i?j%$SPL>tk7n\l.WQuP8e,TV9@S"0 -d.7btnp$gGW]bD@cgn?TndZJ7k;)V^q^eKco1@5KWQk%L204;:o0(Onh\\RE/98R/ -F3ci5^?BX95M:N>]g"jTa$g;I&mN+ABEn1(D`4:Z8p!!dl?>s9^Iq?u7i]H4oBimV -pC;,1"EYPbF[&WDG6N+__fZR0opNk;k>Lf!';D[nqsk)k@C(N246*tgo"ZU$[d+<).i8/Ptd*YL08YXd6FO#;+G3D-YjUW?R09' -p:KV`*&70KPkOpoG;j#U@/G-o&U1Cgn5!e*msXqF]"@D``clMe2gLp3J8HBTO,$t: -2hbsi5b84')+T@)$3BGJFEZ3QpHF,s2i)"BL.anZpi:_+Z++t>D>3SWq$2hY)YIfM --1)LtFTh;]5#1l/b]82\b`A'mhisECMAe^Kq/M![9XW4@%GY$T^-A5Sn"t=o&Gb=H -H6K]m!Ef/#X*UtDQiEiM*s#MWH[2`PH?9jIKALP@P02sn`/f`o?`a+5[X-r+qXk;> -7u6sTQ291GH^D'caP?YjR![MlHFZOmLP5Oh\\Ks*O4R.H,5jetN"NnGKR)r>q^1r1C?GWQ3'1he0D9DkU];cM\tr -_#MINT?-`pao/'_rZBa=(ts?Jg&9DYrNVB2%jug5h6iU+q3RK6kMiVaeXF8?)Zq+0 -9QL-P1Oa%iIE(4EO6JO%Xm]4EGV@[hO7"1+oDWCs$s2+5?he,d'Gad5T)\_<5_))W -:cK^9%0qPQ@8OIE2B<A(q9dc/tAQ$'L[TtPR -9P.3`UdOGPXV8hhB[bVl2EDikQ -CDW&Q+2Q;$Q;]/rb[pBKD!#@lS'PbhGmu*e9a8W%oif%@[p?2iCj'#GVUo[oghq=? -\t5gF^Yj'U>W?p(M9"[tH!:b;0:gGQFDosj^"]Z6ls9KiDO5R\hj8IJ*^;$=bq6rg -r;@'?J)0MeBKfbk?e9/SqgO$%^ZY@hs1f0S"TcE!Mt$kb&53eU_!kSL#JpiG)[OR9A$ -L>d>uCIto3G^c2c( -h95&6:b@JgKTQ:CF)upE7CU)m.,5g6pLIuI$a?Q]#?ql@7aM>,/Jp`mi;=sV:p%/k -aB[fb@RGi'`M:=1B[G_F2e^J@%6Z(=%[Y*oL^_uL+_XFZdB#\p&IKgPfUTujHfp7M -*[X<63>H#0(lJu;N3l]5aC=0'MfFI^3*;.6@R=dfOY,$O\D8+aKQ0<*N]BQWgDsS\ -FH7$e=q^VF#2Yks>;>D//ng,m,>9AEVWL39\K)pUKTUA]p.7=@)^SNiQ]he3El[s& -/L9'%P>[*?aE-qs@mgB_LYb,8\Qp`IKWur2N`djBBe<=Y\!IH$@*.Mc0%N.rQjRS, -*ViP=:Mdp,;[R)0fpsqU*6aiZ!`mQ(^GMgpe<5JW?U;6.Y,9.p:QlLU9Qq",NJuhe -');9DI%ks[%mZr3/CH;.%6Ke0)8\^OE1 -UJ01V0;f)MJ=>aibGj0qVc#QD,3ZiEiNRN&BO(:MgQ_,cOQ>_KN;dT9WJ?gIrI -/9Ug**_QfJ<4,f4$ECVbHPW/'4cadZi58WrJRj^6Og>g@c<8RuAutV-YuZQN=pml= -lto_/oA\0O\[=$UZe`%?B%G]uD/J[Z[%S8tSD.7mSS^7!27BAIgaW>CXtn8-Kmq\+ -]96ST%F;Ue:82#5W,$:Yf;Mapm3DLaV!dWj[s*Nf;pq4XP -'("L3&UeT&=1dX1r1r*;InU%.-o[mR?ip4Tn2:Th;D//\ZI+;DFb@D17/u/VMhMcR -&AncGjchk6$*`7k_K^hK@Tpm.YqdTCGbkdWN*&_lZp2Onrtf0#Tn%u3+2'Yg#NECA -O5ZjHa9`Y)A2FmXE\U&*)'k!t&SQKr@QMVV79R$'FJpsgHcgVH/h;-qQV$ULbRC*f -ju+fZF"sl?`O)`/PY[[QEA5E96S%.)inSTEGL'$Do4P_tSoaR]]Qs_bB+0Qah,]9W -KV(\HZrMlPSopG^33m5R.AbI^l-gP860YuF*jC_LrpFu"!dU^L7r9p;ZbDU7$5[#knX -GI7$$`S1][D/Hi4[s%:UO;j1nPc_d3DT:kq(Mr`*9q.sQ=^Kc#a*Je<@D,[\lJDpB -I;cR!^N]2`d1V#_E"2r%3&_'rVPeXGmM3CE:ClGWh.N@?QX0XuQEj -iO_1.Q6&E8GsT!^>R-JY*a>Z?ICA1A:MB<_LWjk<,HKVS/TDhWcdUa[h0e6YFA4^A -XPYf\>pE#7be_T7G@V#IH>jn4n,^H_ted0uUj3i>PfCaTtJ+rQ`i4!'_ -p.:n2ZbIl!rX;6h5<%gsr8Y\'Ce@&0gudr8JJF('_,$80i\s.=V\2I(%G]J -0kD,?Bbmsj(@cA\0m+:PGo*`6(\*%n0ngHaM&`%D)Y('O0sqs?\Jqfe)tC`a0uY'R73&-g*-'@H1"@:afc@?R*V&)00s_LTkXVo> -*qAbB1%cW.q&cm?+7]FT1'Je@#p?M_+S$*f1)1_OSKW"o+n?d#1*n,b.3c&L,4YgU -b.h74 -GpfnG-h;g:15-Om2(56[-utG!16j;/R3;P2.Ip7a,Y';hW@G3U.e9hp1:8WQ\LXu! -/+JfA1;PM^aXjaB/Fq1=16!Mj?S+%h/b7jQ14q&Skbf!u_/et[;Y#3t$tXE)0!.,A -DFH.6Nsef$%!)(r',810'#5/!^U"u,Yi.7a"Yjub0C5YMXoAIo/16W+1UB?XPN=#P,92iPJmP>8g?G.k5.Et_G6F+1ccL3f%? -g[eu7j23b'PrYS9n>pIdX1LDc[5s',06K2,J_@HDn*C9"N6d(0O#&QYVIHo44#EtEPd&oh2XW8T`c`/[8## -,u0@?:;r>hWd.>N;bmRr9&pdZPUTDXj\Vq#:l>KS$Nj6p=\:5Z:QRS6KkjCtQVFjC -;H4.,P`dH_ZI.2VY15_=F[B!6*57[]"*I(2[/j'EP>`Y;-sodF+2/PEL(<[rqh'@T<*#4o1u4OoImoqG2]HD2.(!0sET2-3l0 ->?MXj=nTHa[?P4;c($B&:[LL%j[@#BSF"E.V%M-e\m@9)llN[nIY1aEO2?hM5t.KjrnMp.8o;"47J22O;oqf*OZc06$1uDF.3B%jPuBU^r,2\sQ"2d#r9IPA5dOOi/W[tf.2;g./+ -FALqBDkD9RTmD[Igke.%(Ta%V[Oa@F?^E]8Qb.O"gJ`<9;mUUm:RulILOFeJF\+TA -:R?LHWHdXMG#cG/QcPZhc$\tuAepSA=7hfg"u*OE>?D5u3"j-X$%]2ELNeqYGNFPBC`/.#9n;@NN(FD:%GcoOf]7hRJi81=R(&!@M0E&(@Q;kuGk*2K -DMX\@oN8#E`s7M<7?@6,"r?H(fYKJup5Z[%-(+P"q%kr67>Id,OI#p.faeCt]'btC -o,/U03C5"db\$Z?NVEmC7pV;p/X,uhQ0W^[khVOqf9V"5Pdhm"F'3hB/9uL!E4K8? -)21Z8K()oZN&cnA3?i=.P)D8)Pt/NQR$!cHLRPTdRZ?'hW3)OlQ>ZN*MK])fVtlc` -_j_OGSFl9?cI&-FT:#FnK"9Crf"[XZ&Y,7,SiP2j.fZ&qSY(_-PW@T=)>o=lB:MLq -T%PQb)>0\(:p']rJZgC`:IXRaU*FWMIT! -X!gb9HGYqnUGKL?XSVEY>4.$Sp4E$9XiM$VW$t+Q=*pCVKfO:Z3u#Fk"G/]RJ_)QU -LY]62l`FY1Y%aN2ZRrJP(ULC6ZH_pGL^e9,,_151[+di!HOFiJ%u;0'ZeJomgCpSk -?J[THYSpHKY]$s\,I8)t[CEQPRq&sM&[tS$\Bkbs(AE[,HBT:DS9pL5ptL\Ka0S\\ -\bh5q2(Q1@YIZRR]>M[r\o#(hV$*98V#.8K>HteEfT(="g&'?L2A*T*+2.')r**6/ -4+WL*\\5WQ[/8mhHgKD8fs_h>^htmC!`Qc/om[_*_-?rV3GZJA6,JUs=?I%OHi#K, -bJ,o#^NhWQHmQ^H(VhEM`5fu#)sE;%:jd/O_43a+en)_R8]JC.`)>j=Vo;P==-$U" -jkORfeA]?D>K7_#aQhU%8&NGOUW;C:_^T$9MAs?Y@EdXnOHpY4.,\Y3:$dCf9R4Y>)f8==lc -leP=_1Tel*J'nqoXh>T;SO6608(>4h&GLCp]i1&!E_Kb@Tj;D[(s18*A_8AOf\LK! -0:CAO8,3:&BNi=I#YVB*s(M$_o2^Y^D/hqd8L/:64#'As,QhEimPl`8tQdYb`g -hnBtB*U2Kg.A)&6J0$(P?7mEBb,$-gNW'2+h>,:.B2H<,ikA7n?:,7;:3-s-j1:*/ -E;4jq+69"tMZ,Qr5'<2THe+d/bE#NZ9$uea+EUq)f6stX^5;$%R1,Zu%mH>SSt7js -KWguAEG"=rqr-A"'C(%9lffYZq$6*O;qsQEXBrh_C!VR(ViA0`l^BcuhSJW)e*N$m -m3_huIa=_%m)5nj+eD3"52i?pqsL'cIf=]Th[>'!am-F?mSGUJU'L!fC%-I`nfJD6 -4=B_3X7$r1_VZ?@h`PRK>-CbXkra%WIl6n1h=P=DouJGq?M:]I?tTF3mBFq0&uG<: -=neX>pR.HB=CLfg5ImDFi/ecM9CqlJfAOCqY2>N=hkZKDU\R-24e$TfCMihN:&0L@ -d!q[oJ#iEqaB/DOCnK!hCm"??ebpgTqorR(?;"%#h>G%T:&hC'hs,/!^&(Hc+:dTL -%L2rc6/`BB<%]$tLI:&5(mIcE'oPN@&X_'c3?=/Nj:W=EN_(O\8`^SPJc$MfQ:n'[ -q38m50Ukbuo3'$"FZ#F[kS+pM%Z*WL;<\d`M -a%%iYpqV:F[)usc\U;t@3LJ-)oD.1-O%H1s7rgY=r#_;"R*e6I>lRou-;u;YJ(,**X4'd4AWB7Vll:rP.m0Eu[*cUjF1D -cmo\MaDrNC(s'!NP9ie@A=Fr>=n_.h;:33/!+O7=3o!1s\eGDI+oE>=_:ims=0$pso&s?%T;$TXPl*52"a44-+)c,4O3UW;bg2T#t3BD-U._ -=>LB%2%DK&\+Tn-?<@sNK4+ID'87pG-5VFr -G]"U[2409#FlN.5-]K:ZXuDDK=2jo]+^#QOO6#[cWK^t3-9IN)q1`CIAoneoRV)%p -24S;qG&3u7(M8;k@JTVPCui/s6W,,>9\Z=Vl]+uDC2SH2j^+]^34M[+l/`@kguDuY4?e,cBThk -?Ir'5Hp'-hnpLI-e+H!K2qO&f^NM!uqRhL%psqZbmc"&8idG"E#P?uI*!("3joRem -&HZ?;O+>S/ImDX+]cK!%G)3F0Wb\P@;%[d9Tek(qe(%lsYj8Q8:RH`u3jK5)i70T1'SHjC;qXNA8Y;`L&]G -N\km=as&N0fB!qs"G;f!(%b#<%%lTKM,1323%7uITO_;i+OT/kSOk1T';U,A9F=J8 -fg.#t'%rK>N@db*9U20LZAMN!84o-4.O-L1MbV:\b:-h`,ilL@EoLCuq1151<.^K1 -H='?F7jHS&#anBoA1"::&*9U47u.4[bk-<9k/,Z;o58J@q7qocm,:?RNcH9,RlY+s -k=lVY"\h!0K;WhX6Z[!g.s^;@kLBC$P29YDeRq'Z!UlRW\lQtb#*l,#kaiF:r?9l2 -6$JbJ>P1V@FNr$<,.[s3AhSP*@e0kcTMN6 -Pm2nAUl/8XeOQ=Qk(Qd7_)*R:Bi&r0[T<7`<@`33A[S8D,3j^_/%SC1@-D:Q8-QM03?qgi^('uRPJ(?8YHO`G>>bINrt -k?RnXFDdAm\sHI`>jEb6DS=f:QZhh'qn[Mq(#urnQLeF0d<]\i/$,);pKmaUHuG;A -^6dFJ?[MQ^>/&dmb(Lm;NN,b.>`gG?s@sd8:1"HTMPtN*, -r.0rM(.602(F*IAj-"QqIP]E'gb*MK0AT^G,En4I&R2NqDY,@!Gg1gN.u$4jf2*_VEt'D7qkDX -`jKuk/@oV#+Pg\4p"$`nqWD0"]mZ\67`/^sr;g^Kl`;nk0A.9]X(uRC8+c5sg7),1 -Cu)0k2TBC^R]AHO]sDGF]//,8@Nk/&_bW2Il%PV%G&I9;!k2M+-sP!;D;DuoF[l!c -S(Sm$?"2DEpA?3u6\6>m#Jp1:$X-d_L(Z*Z=?"1a14+L[nGUj8g#i?^g@of2K:B]f -!R]mhO-=U,1!+],)!+`WM8p6*m.jfDjesDaDJ(9?H'o?,>jeW^rdE.>'3jX*%?>N? -L!/S'8a*i)n+;AmIbYL`R]C-"LN -NkDOJe[ie321qZ%h[=L8!iCf2pReo8a61TX#XLaQ29^pk'C0Lp)ME4Qk)OH -,#=a%L#^X/df]":#K->-Lo>]-[I5poZLB1/iGsF>>J8@>LqcH8qu;fI^/s"bT62pf -DAi3m-d;0O(\)p'[Z*J=q2JaRKDgkD>lT$h&@Y=JSU:e]E8n]M&OA/=YsQ4&g_i#W&]%#B_9;%'a*[00BpoIl0n$,o#%70(!=`%rp& -<]&T,`>Ptq4Bk7u>pJ-+7G/MHl9<0Zb,Bu$7J's)W8C$p3@uLZ[)?.f1e1#'BL\M, -1MgO?X/![tE5iP]Od'Ibo3fR;9X@E2Zs77`^skidF@TSZ#t/g@7!FruDDS#ka&I5n -]R(XQ/4$VO["N\2,]h#=+\0b-81]B_4BtE>2Fc+l8".?:,_7GPE?Fg0aFn]W%#"tG -J&oio2)L<""HSg!LD*@CZl452S/KCYNjpRc8R$A[<0p18R7D@W7mrN)/:#5Q4A!.K -V(@iNdt10PE_1)8_rR1W/>Pm/NQMnk8msbPb\iiMR`Akla[=M!S8--`V+Pj+9'XL? -iuUho.S>A?'QgT7l3>B+V7Vtn7\m.Y9XDn6\LY>&XXq&H*3qA"[`6/Gb-T,]]$SWJ -UeCp%bUcI]gh9A)&Bi4S8j'usdBQ>CiQP9)as>$;KZ$QsbsDQU/9K1!N5d$*bf6', -bObR(qSc,BUlE!n"[N:n -`,,X9<<&C-#H-YXcA`%H<0$.)rf,c(sLoacto#b'!LVSrSYm1QD3%*7NEd-VVo -m2!VL$^BHZSQ-Q@4UTK*(o`c8aNYaQI39ad+/q+@MU`WToZ'DV'@9`'W:_4Q<@6-' -.3_2/W7r&@D1qASsdqfjAbr)THIRi(< -aA"J1br\k7_paKn;rp/@q?5:o[L_3NE)`)s+=1#;2*&LcFOL[&eTu.6,`'tS -<)q[de[4sKTh!XJ$e=d^eF8Q#,%oInA6$Qpel?$WH1=na2pqS4;akCP%7NlH4OlT- --5C,_D/RpYE?+XjcdcflXWsP.6[LtG^f1OY1X"N=Jh -6J2*N=95AQgaZGN9j#WR=[eA(I'D:Gc<67ZfbKTOU2O/%/m'Cjfi8PV[6N@;Qs(L: -=i;#qh4%K"UEqdg5;f:^eYg50Q:fE#g*Ndojf6+L;qai[=qO)(1V2;a#MS`:g75WV -'s$(][+cg@gH`2Nic\O73a-8N>BBl"P!WA0q,uge>O.F+_El"T\0rB5&q-ts"hR"D -_U4(1;q8kAouItEa.o-u>TG1s8d3tBl.h^cguX>%"__06aP@__h%DM,Xii04dm,3] -h.rN=4j6-meY=G(9te8H-/:G-fqSqiIpS$8hWX7]&I`#%-/V]P>\uR[AaeN6 -Hs[9J[Is)HXnX!of-sU]hONM2bNdu-1Z/H4?n#/b-$X@9%)Mn?CjCO'sbui-Me> -K\#+&'k'MriMIB!qG-"uh;Q/KiKIb\&@:=.c=-=pi^+=;jRlto+C^nMiZuborZa^@ -.2LbZ9/\B7mO'/)-r6]niheM:VD>fI0&k(Kj%3D5;C5mq^Z1Np@iS?U%Q!.e/`X\W -+O2l*2EhFB/sY9YTT2@3Fur,&6fZ`e.OI2BsbS]OX_=ACa62 -rX*3-\fmV'-nNj/&N"#9F6(;*j[6H6'f0E5:h?)3j`@UMIT#:OZJ3)t&meQT5$9!l -@+BF&;Z:+dVIU9VA"V.jjHJH[(13jI.nmZgT>"&sG$a<+D.XQ"]#dERFm%oO$g*EK -At6p(WVGVh$tg>mkA3e8BgJ -L2pq@KB/VK9J1H`#)27FM*$HJ\b:X8-AIe7HTBB/b.`hXQAqC/i2G2/DE64`hU\P&k>mVlc1^/F -#3kPNm7+PL]$<3OajWU(ZL8]t>e]XlY4KuJld:1NDVk+Dp>r1Nb\q4C58NJI`q7VI -prQ;-C0(<%IfL=/rfh-O.$*%@gK*_Trh`Y7s8Tr3bDjM@UAn(-6F5&9/+!EMOoL>o.L1'_0rfnQS`X -CdW48+(6N7E+^=lLDrQ-*)Q)EET\\gh^"o)+;e`>[W9da]*!(g!qNK=nm*tjk9oj/ -L@YHOEh=EBmDiC;,-br\F[eHF,@WQpB>Z!XE7LJFJVn+oiguH7!.*]oPjTtA,Go+>kJY_F7q2. --#dtU'0qi#c)Yrt=Lm?hK1`,PPW9s&s>r -<(8X=#sV?O[q!F%B]*N(N\pgCo4.,T9UEcdOWCN"u6[s@*pIa??"Gc-`22j0)cN,0Ss_dA(qFrpHr -mWb"XGo_M4Vj$r#HMN^Gq-D8@_RTDgl?IQ*>nc5[4RY)4jUP5J%0id\U0s[H`t&. -^V"p>]mJYNHge^%Br66`@pD_puU*)?c[VUaaB`'I':_@^W_)O -c$\EoI-U[8ciAG'rI"@fI4G'j5LY$VeU6i*rG!n^?eBdffmTLHIBVCR^YF7`h0n2; -/W\;-qr;WV7XBnV0V2;qU[WOjQ_1Qi,n/H-"F:!`[1Uo;>s);H&#)m -egUP&N..b-IjaLPYO`$,T6]=U\i9&%n*g9oaSp:nIYHe](\@[KQ2[u[hs^@H"9&H+ -JjEekGXNkn$\h#Wd.i8`,nl/)@aTG=Ai1Nf7q9sB"GRJ;#=%:4Be5iU.@*RPd^ab6 -@5FURH:90G9;YX%eG=kgV,Mq,WmuF/;RK`3=)6@` -"bt!+Z<4.CHS),FCURGaf)(0@b@eCJY#fthk4O)8?Z4H[X]kaW_I7E9Hq#IuMoK7H -f_gIo-'QJ_EnPg-#47f'B5o*d]$is>d-1,U>t1#XVq('TRf.E-4gV,"[[V]bkB.?0 -DeJt4%f_7!ic$4V/iO<)]B40[h#;t.D:.WkHJO%h3banp,W>H]LtM -lh5[RhZ&AOjn&=sIc#U(X7?),Cc/Enr;a8[":!FANhc7L_,+>Gjh]5A+QC6lH\eE5 -OLeX#6VuPt`5+.o5nLt.4?jFrd6(77]M'#<(<+[I_\0s$S7rn]dCaH=a&1W;&4TO` -J;-)gK*.?^Y6-]s'"2XV9&\l -$Iun4c'@sSG$WB4Z#nf'SCMmkQb9eS?PhLMB]#0SkC$_T*XRGVfKKmnd'u^:ER6Ws -*JQ#1(*sGrpMGJ>\SmKWMW<.Q(Q[WSXuhd,c^k#uj\\cGQ0$\J@@61[RbO.jLmB'O -iY2A*\jD!q#]lTBhu`uVOF``&l%cN^/FlWW/UY3XYfZ__;: -I`YdZkf1NHYPK#oU2?>]Bsd83ReaL3S%UV>mi1"5WpcGS_nC"/*sogRgcT_kAG[Gd -S_W!e+iSI/DVqpDgMF2Lnm%eIM==d=5kO[H%nO-Ih(MU4F+$hef(IjK@&N[B0,q4e -dN;qPG(%LBb4?YGTgAF$kD4ccIP6W>q&SWojn[%PQ08!MT;h,Brf+JBqcn?HK6nS& -J]msHND]0A]e@Y%o:Jh/aEbO=i.h3&O6QN?hn?/ffY66[rkQk=A3)Z@pu!CV9$9g) -5R.#c?rM,tO>Z?u\01ttHkV+Y?49,a_Za$Rr.E5a%3;=/lej;.JC'^76-)CCTi#N#qrPV@iRhAenMFF.H%Ob<,umR+8Z%p%I3LsVZUZD`TkR<2)YN/f8Rp-/uF -PHTiu<\-\,[2-t+=&"eU0H(e=&E"3bM"%,p[g&*6UDjDsOgT\Ypu&mGUiUs(Q9.U( -ocE/PNfH[h0Z4+q+(P.oNA2VF3L9+WA*W!7Ou7'sq&m**XHRSn8kVaD2(%>$Qpq\m -+3DUG#hUDXN=mMp3gi,ZQ;joMMX"88ojK.XP?sP1em(k9FU_itXHX4NEm)!_>o(qe -R*,NqbB\d:AaITTF"1fP$#)5"FO6J??>N?%eMWD`^Q;%pD,%q.1$(OZPqYsQ9r03u -B2c[8ZaH4G3T/+oAFlDAhL%#Fl?O`Jr1>[#@OWbJ5gYHfT6'rk:jN\AkZ&!ae&mG7 -3T!5-o -HBXgj2`K/Z2l@tmO]3/.0WG"07s,TB,AN?=>Ds2oN)le)qP@0VU)^0[3h\uBn^>,'rn`E)Wb5MbqkRUEibopl!+e-,cim!7oS^? ->oNs"Y_sF6=EEq8Cf8bF"K"C"NM3pma#;Dt]<.Ec";DIq)' -`$XT2)f8n1mEM1[lJ5_9)0BcDe[q/ik?[u#F"ToAS^hoT?CTJkbUqg&QVPb2b;OUg -^"BOu')<,4h0r(hqnIkls'P@JH#OC7^c3,5@%%m_aK=rJGUiN`_S(B"g/u2pG6VK# -rGcf)9uAr4`*c8(QSAC``7UYU@T""pW9,MF.AW_I9#$:A4t=R+q\s$co8[hr&$m-Ci=2#?WEL's:=jXk/Q-?0h*oWjWN*f@q*PCmtg)Msdp=31F,I9pLJ,B%'%m -+);GTZ*nQ,OP>R5D=.;@\CA0@g!UB6D&k[M2^SOW41+/<*T:q9#4k%5'71`?jh>s$ -rCde:F1[@\]!]36ho=i-n'2TZ3*u"0*$!f(hBBi4V+o[?;h2^mRDCeJ'ft,CL2QuQ -AGHGhiV\Y\EaDVcq.ARG6n=5aMdOL`=ZX9e[B+EJEO@Tp44nrHT4/hScrZ8nka`fk -.]a_=m\Q<8G!h^;>)#@(o1rh[8Jp@m1aq -SX3/rro&pMQZL>!emigb5 -H/eCLhoC"l2fY8A6HQS+/^'DjWh`Ul7RCtbsmti="&)mHqC\E5)8GO2( -n*A;bpIbbMr1BV(I4mj!k,6c%Sh&$5cd52^2rO[BcaS;Zna-:YYQ(g#!"QgC9Tk_q -gjEsbrpU!A&+ork<<4cl3`$n"![dha-IM<#!mi_*9!J853rk*n!7#?,0JNZJb5tL4 -+n,E\E)b@!.g6Hm"HZsp:hD<;7cref%Gm/._#)Bkt&:u$d>mQMU#]Ph2 -:mUU44J0^&#:Fmjd!X=3W<]Yk#k4qDY`/s@2%*6m$k4cCkX,\.S5,0[dP0&VE3T\1 -eBr6G$mI84d,PUpoaGK`%'=E9:tZ+.k0_QRc]J4RE8_;$,nNo]&IbuUk?STFfWig! -#*BE-0d-a@,gMMY&M:C'OY[Z3k7M>-&[9J`Yq40T8C$a!c#HS(cM&!RUD%WO((\!u -#1!u6G%$M4bRnh00jb(rFN]e$(+5(XOb4L3DXC!=qTn%58`LY,2]'k_)6bt9m&_*: -MVa7O)UYl166,K,,o3@1RrP2*0rGiX`<+H.aq:Zn1!pq[g:],a?ZEfB-T`?-M]T.P -*7-&Sm"ZTYXWMQ=+:I8]Kt/6s^j0r!a0H:!On/Ve'ZT\?(pY/)1+'Z^,U;je?&.qo -bY]U$Bd9]R,O@oE&W%bg.4!)r,c,c(01L^P;SuC;`"HIp&nJgV7i4!q,k>u_dJ"jt -k)HZc_%M;GZ5E\KKYUK&(,Cjs;O4Rb/LRTDQ'.BHP,0StM#gMQ^/C(/'!WmK\ufoN -.HM\D'"GVqaX]-K!&Dd31:7k&eLT))WU;&`-SD7Dgq7[p/TT5='(EN=fb:[e/e\;` -/A3ZL:p&1H\apCdZLn0<'Y;[p0Mk\&P9ViC.(V2A_TQ(:bF(/%SMRQK12l>/d5a#S -.l>B9-R0up$h5FI6N%Qi\MIX&ZXgNY+Z/MY2:HJ&9naf9gGNf>-8T]?PA%H>LpdtU -[IZm%1QaV;Rg0KmEfsKb;/IBd@l2Z&3:hh#Z`tm!D)p"Hk4?>M:Peb^4#c>T%J-t( -;n4\_eG9j2ZW!,$1Z:H;lA&-g,]fjJ04@#iT0A0'5O0OZ.j7)R&O:F)5mT2-oCS]X -q`s_A5I8s.0:+uj%m[B-6F7Cn8-)"rPU4V;6RtMbdr.W(kl?$f0F"'VDB1R(g8?0-f0^2.cI7_Ih2t10G -Wi8U4Pt')<8ue^ZE8sSJT1d3t%l@9Ymqk^tVbF+S9^7U1E5PC,^J2`[f$W;JWbkLQ -eP'ms:9&#&E5>=,hbV8sj0IQIp'rB!;!BsZt!9^O]npj=Ye#f;nlNo -T3K<:&^tl,WRY6r[7KtE>42JpE8+YU^Ko#%1Gj;]Y5)>%gKpka?KnY!E;Nsahd=k: -?`rd'.B-]tnR+!4@&]](E?elas'aDO@BRd^.@4LXULL3H@d/#DE@YKV+(NI:@juJ0 -.s-ME+NT=5@qh&A[8(Am_NKnB^UpoEI2CXIqdG->k8&2BesLIKk[]BC8iRpE(at)T52U^C@6LcW_I:^M/6l4 -Cp%bnELgr)^MVNFkHm0akkT+>a_ETiDQ*5FEM[N\hf%'TDY40OY#fO"l#:N;E2`/B -EQ<%ls)HUEENVHE.-GVao5_-dE\8k^ER/\b+*6"EE&Aq_Xs\8a.ZL6XrVn6Z$`[oHSSfLF.7S:^O=-9I."7e -17bhbEmoR5s+/&n#acig==8]f -.tZD,K,?Cs=>tl"4+l0MKG[(0=@\%398(qnKc!aB=BC3D>D:^:L)=ET=D*AUCPLJ[ -LDY)f=EfOfH\^7'L_tc#=GM^"Mhp#HM&;G5=I4l3Ru,diMAW+G=Jq%DX,>Q5M\rdY -=LX3U]8P=VN#9Hk=N?AfbDb*"N>U-(=P&P"gPskCNYpf:=Qb=H+'87%Nu7JL=SIlD -qiBD0O;S.^=U1%V$]s$POVngp=Vm3g)j/eqOr5L-=XTB#/!AR=P8Q0?=Z;P44-S>^ -O!"If=RB&_6'U%uPo3Mc=]^lV>F!lKQ5O1u=_F%gCR3XlQPjk2=a-4#H^EE8Ql1OD -=biB3:R%9-Q5COoGS>TFQ%9gCp"?$'O"ElTR@+qr"Erfm=fd5n\XBqi.=&RXfG?2d -V4/@JH.g-,)9hn:fp[2o5rmGHQe+0Ajdd:W4dkYf=nI4^pjp!RIej%nfuYtZh4GSq -Fh.^)\eKU^)5)9af/an#)@6?]-(u50hc_/R)D$;?3MLgVs4T`gg*nj^7ACbrE;D\D -\l="0=FBsMHCA6c=m90p9r/bGE#N8RRDC7SFf%3:$Mo#q3_;4*JYsEHDOQ!E3fOKX -RA`.)5oQ"2qIr?dSZ*O1CRV&E)ROcNXf8mc,l5#qRY^n<`N'p&]t1ld3n4c;f[?54 -G<4Z*3ls@-h5qU`B):S3)YAp@mB*t9,hi$9g?C\FrN@.MAbuY)3t2aJ(sol/FdjM= ->,a@U-*\CAd+\RFRk/t,*>3]V,'u:kRgDDc6*hM+@bX$Yqc+?B=VUa=(OJk!)bE3i -@C7%lKfa,i)eDcKFga?)52/JI4)%5iJ[ZSYU:Z)#)jMJ6I2.*S*P7]!q5HlrV7@PJ -.9im%gRQGK[CU^E4F=c<4"4?;Tt;8iDVN!6>Kn*k`OgKM*IG=8S&mFth7Xcq,Fe%= -S+LZHpi*kCUDr/6gZ_aD"hu#fG+7R8HiS_F't_*ua]o[$H\hLQ-,CQRIU"$;gbd*B -/]#(/,b-k[W.GA]-]Z -/\H3Lr+TFVJ]AajK)Bk/r03N&KcrRK`S?hr]I?1;Tue:W:Agrh4KQL![E6(@1n;*% -*/SE8`QK7H:)po^>h!NdfP>liRJb;h4@qu3iQW<;cGlL&.BCa!a353`ca$p%QLWHZ=hR5"jo.9dB"#(O,;22&$Gj\NI<$"4Z+X9+%%&/._P"`>sZop8k2#u -L0[A#I9"cYeQ\SI/H&#,I::X]Cu67RFY>m@9O25$4ako;MqHjHfc?:0 -?'j68S(ZVig)ZsB?)QDIX4lC5gE!WT?+8RZ]A)/Vg`=;f?,t`kbM:q"h&Xu#?.[o' -gYL]ChAtY5?0C(8le^Idh];=G?2*6Iqqp60i#W!Y?3fD[$fKkPi>rZk?5MRl)r]Wq -iZ9?(?74a(/)oD=iuU#:?8po946,0^j;p\L?:X(J9B=r*jW7@^?NO^KjrS$p -?>&DlCZaJlk8n^-??bS(Hfs78kT5B??AIa9Ms0#YkoQ&Q?C0oJS*Ae%l5l_c?Dm([ -X6SQFlQ3Cu?FT6l]Be=gllO(2?H;E(bO"*3m2jaD?J"S9g[3kTmN1EV?K^aJlgEWu -miM)h?MEo[qsWDAn/hc%?O-(m$h3$anK/G7?Pi7))tDf-nfK+I?RPE:/+VRNo,fd[ -?T7SK47h>ooH-Hm?Usa\9D%+;ocI-*?WZom>P6l\p)df7Kg\p$erZC2"?g%E\li,f1ru^k4?haSmqu=M5s+*Gn -OB==\&IF.XiK2]64s:Mp7,j>2ZsGI)NCMrjf^sVY+d#=VP$'W5;(7c&jc\;=^0raa -9]hOA[,,d_SPJ@3g%>8p6(q-=PZfpcO\)BIl'0nE5+tiQ<9f`P[9g+@X]FbQg@]p2 -@Bir$QX(B>jdq_[GLG!]jC/og\(RIJ\ba`Qs;Nk&W+J9nX/*T -59Z02AFc-n[U1bWc"?R8h"H4`U![QGRU%hD;5r)\opX][^L=D#D"a?([bl)8h/;tV -h=gl"_;TA.S6e,rOic^*q4-;c5G?KhFS_P7[pQDnm<8AthY2N9iUM0jSmOFKdHU=M -rLVnj^Z"_YI/]aF\)6`OrI4d=ht-jJ5VNlW!^NtH%g50P<#5a)Y]Lrm684WO$::u( -0+:3%e2Ik)Yk1-k6noBG&k&u]:D?5P<*'i(Z#j=i7PU-?)Fh!=D]D8%e9;s(Z1NMg -82:m7,"T!rO!I:P<0nq'Z?2]e8huX/.S@"RY:N=%e@.&'ZLkmc9J[C'1/,#2cSS?P -<7a$&ZZP(a:,A-t3_m#gmlXB%eFu.&Zh48_:c&ml6;Y$H%n'8O<>S,%ZumH];DaXd -8lE%(02,;$eMg6%[.QX[<&GC\;H1%]:K1=O#r&=Dd6@$eTY>$ -[Io#W=>gnL@T^&rO(;BOW3DIAiZ/iRV'+=Dk(H# -ep!]u\b:NGBK?oaU1h+rO/-JN@-2ca7ON^A#D3 -Hp8Ffnf^3Sch)WM=4d.o^N\T1IQs1^qL62gn,.Z"fD#8o^[qJU&-`/#3!fUn1^ARC --3ZSgb6)-o%tY?^#s)`9"^n\RK+MW(6+Ao[@.YOo&;Cc`2pVWc1adtgVA2G+lNn_V -08:%X)+-At%:QV&LC`M_6b%CP@Iud?%0cMp(l8i61e3B7-7(<9LD&Tg:Po`R.7H4p -X`)E_07;0(FUD.<.cA@0A%;cfQZq>GbC*,_i9D#!dR.!o[#>6Jq0;]H'R8Z(j9:n'_ -P*Fmdd-=Cu-B.GiFGc=3l;pfX4Y!=o-Da\QR8[L9*1f"Ne'hbN:C+(!+I'Hl<>ZQt -lCeQbeN0s93ltN?1UjFG)RPo9ejF3^5H'gTKiAtQ:MZBWXgHrrep@.!C\<1]%T9B- -3q#T(1u>J1'!@?)#"%V2G-P\C\'95q?u36;ZPI/t2N%&jXIW:p2'/sRdJmo2eXs+4 -(/`afGA(gKYI54dfip@kBrN\mXqn=h:I;U*i3a`,'@la.8l/!Z`3-R;EmEE4R<*7g -cajMljcDQj%YuY;.eRNd>UtD!m!9&NG@'@d)p*AD2bPaPu*5DbALfBD*'9*s -mT[OTF"`f["dnkhDpB6@3G1/&P-Y?p^otc;?VJM0M;E]h3U72`r6^T8(3V'n[jYl` -)5D:sO4"7l2<[/.@PejST,I^"kA<)CF$+9`-AP!%r+29QrfP_LVc@KF=^dr50[CZ, -9%1HiJhm^)e!ek]BM&f/N@(DJ=t<82h2/C[2TOJT*pcBk99s_7[+KZe:6U+(XgO2? -H\A^sRB;%;p28=5q^6B$4it6Y0i-J5UMK2/f:DReeXZL%=_4=!]5\%K1jaFkm/.a6 -[m'iM*!_%64^j\dp?^Y'6YP_$1Vr\np:#E&4mj9"XRrD)`;9'>n=16529-3I]CUVp -5"WkA2^]kTD^Xgslc;!i,23j`FC9Oo`4;tF[%'C6nucm]CQua"qkgc"L\]%nH/=2ok_16dkZM4hgaCJFHge(iJ'^jLr$[o_rc1nUH8O]pIQD -'N=MsT,748#L*([-hVr'g&#RRbPU/F(&?.!gj;P1rB"fEps+T1![Eu("99Q,!Bei] -5EkFqS'sV![_L"]5\mR=HhTdi$,E>DVuo6!4!DAn*PT/DZMV5K;p2kdT/%q`\U"b$ -,ITj(lSs7R]9F#>j79qF))=l%5dVKH`#QVAAiAEU5P,OD1K_K[%Da"e]#1MWg]b>W -hnf4(4/OB'#/AK*o_ZW'=`&trc'JU:X^k'M-1G -9LYa\`O&j@l?bph:r/mm^7839KNXkN( -`jBNQ'O=00<5j5^^#SrSoP'0s@R_8u4m[*\$uj+K@)_Hja!=s1`-B=eH,lVq5Id]5 -J==Nk#=g$17h[5AoQ;=AJO2a]3%RHdj=SERKudeZaDoM:/:^3KM+!#17r-UDGcJN1 -a2^T(_aFo%MM]@>%S+`uaY]4'7$O.1O$rVsN9l_IPVfSVD9,D=8*#0A<1M([S]Tis -aJbt-JnN1EmLS@HaLjaY<%LU_T#tT@b&jPM<1h'=To=)d^dOooP^^-$GKQ_[9(]=1 -"L+:^5r04D0l40\e;UJm\'%I?_G%4-KXf3i\XC[B)B9McUqFn#^!#BTbAk!a,ehJ: -_9=1AbV[5]7)[;K`QVl4b]LnLKZMB%aipR'bd>R;`6?HTc-57obk06+"OPC-dENrb -br!no7+BI\e]hXUc#hR^K\4P6g!->Hc*Z6M`8&Veh9G$;c1Ko="Q7Q>iQ`_.c8=S, -7-)Wmjj%E!c?/6pK]p^Gl-?*icEuo_`9be!mEXe\cLgSO"Rs_On]rKOcSY7>7.ef) -p!71BcZJp-K_WlXq9Pl5ca9!dBsq@`>m:U*RWsidIeU0"X)5.+jqY\dPW8t73p;]-.6?OdWHqcKdbB7 -.FP%Bd^:UR`@THf/^i`5de,9B"YeC?1".F(dkrr175WIn2:H+pdrdUuKfIPH3Rafc -e$V9d`B;W"4k&LVe+GrT"[LQP6.@2Ie29VC77>X*7FYm5?J_29#fJS<67>0;nL"KskfQDu%Ko"BHM:eY^fX6Xi`JiI"NS*?Qf_(g@_Z("gH_rZ.gS1gGQ=l -7C:fL[G,9$gNC![Kt,m&\_EslgU4ZJ`OssU^"_Y_g\&>:"i/n._;$?Rgbm")7E!t] -`S>%Egi^ZmKui&7akW`8gpP>\`Q[,fc.qF+h"B"L"jl'?dG6+sh)3[;7F^-ne_Off -h0%?*L"P4Hg"iLYh6l"n`SB;"h;.2Lh=][^"lS5PiSGm?hDO?M7HE<*jkaS2hKA#< -L$7BYl/&,7#RC~> -grestore -showpage -%%PageTrailer -pdfEndPage -%%Trailer -end -%%DocumentSuppliedResources: -%%EOF diff --git a/packages/python/plotly/plotly/tests/test_orca/images/darwin/topofig.eps b/packages/python/plotly/plotly/tests/test_orca/images/darwin/topofig.eps deleted file mode 100644 index a55db000afb..00000000000 --- a/packages/python/plotly/plotly/tests/test_orca/images/darwin/topofig.eps +++ /dev/null @@ -1,2162 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%Produced by poppler pdftops version: 0.81.0 (http://poppler.freedesktop.org) -%%Creator: Chromium -%%LanguageLevel: 2 -%%DocumentSuppliedResources: (atend) -%%BoundingBox: 0 0 529 379 -%%HiResBoundingBox: 0 0 529 379 -%%DocumentSuppliedResources: (atend) -%%EndComments -%%BeginProlog -%%BeginResource: procset xpdf 3.00 0 -%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC -/xpdf 75 dict def xpdf begin -% PDF special state -/pdfDictSize 15 def -/pdfSetup { - /setpagedevice where { - pop 2 dict begin - /Policies 1 dict dup begin /PageSize 6 def end def - { /Duplex true def } if - currentdict end setpagedevice - } { - pop - } ifelse -} def -/pdfSetupPaper { - % Change paper size, but only if different from previous paper size otherwise - % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size - % so we use the same when checking if the size changes. - /setpagedevice where { - pop currentpagedevice - /PageSize known { - 2 copy - currentpagedevice /PageSize get aload pop - exch 4 1 roll - sub abs 5 gt - 3 1 roll - sub abs 5 gt - or - } { - true - } ifelse - { - 2 array astore - 2 dict begin - /PageSize exch def - /ImagingBBox null def - currentdict end - setpagedevice - } { - pop pop - } ifelse - } { - pop - } ifelse -} def -/pdfStartPage { - pdfDictSize dict begin - /pdfFillCS [] def - /pdfFillXform {} def - /pdfStrokeCS [] def - /pdfStrokeXform {} def - /pdfFill [0] def - /pdfStroke [0] def - /pdfFillOP false def - /pdfStrokeOP false def - /pdfLastFill false def - /pdfLastStroke false def - /pdfTextMat [1 0 0 1 0 0] def - /pdfFontSize 0 def - /pdfCharSpacing 0 def - /pdfTextRender 0 def - /pdfPatternCS false def - /pdfTextRise 0 def - /pdfWordSpacing 0 def - /pdfHorizScaling 1 def - /pdfTextClipPath [] def -} def -/pdfEndPage { end } def -% PDF color state -/cs { /pdfFillXform exch def dup /pdfFillCS exch def - setcolorspace } def -/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def - setcolorspace } def -/sc { pdfLastFill not { pdfFillCS setcolorspace } if - dup /pdfFill exch def aload pop pdfFillXform setcolor - /pdfLastFill true def /pdfLastStroke false def } def -/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if - dup /pdfStroke exch def aload pop pdfStrokeXform setcolor - /pdfLastStroke true def /pdfLastFill false def } def -/op { /pdfFillOP exch def - pdfLastFill { pdfFillOP setoverprint } if } def -/OP { /pdfStrokeOP exch def - pdfLastStroke { pdfStrokeOP setoverprint } if } def -/fCol { - pdfLastFill not { - pdfFillCS setcolorspace - pdfFill aload pop pdfFillXform setcolor - pdfFillOP setoverprint - /pdfLastFill true def /pdfLastStroke false def - } if -} def -/sCol { - pdfLastStroke not { - pdfStrokeCS setcolorspace - pdfStroke aload pop pdfStrokeXform setcolor - pdfStrokeOP setoverprint - /pdfLastStroke true def /pdfLastFill false def - } if -} def -% build a font -/pdfMakeFont { - 4 3 roll findfont - 4 2 roll matrix scale makefont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /Encoding exch def - currentdict - end - definefont pop -} def -/pdfMakeFont16 { - exch findfont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /WMode exch def - currentdict - end - definefont pop -} def -% graphics state operators -/q { gsave pdfDictSize dict begin } def -/Q { - end grestore - /pdfLastFill where { - pop - pdfLastFill { - pdfFillOP setoverprint - } { - pdfStrokeOP setoverprint - } ifelse - } if -} def -/cm { concat } def -/d { setdash } def -/i { setflat } def -/j { setlinejoin } def -/J { setlinecap } def -/M { setmiterlimit } def -/w { setlinewidth } def -% path segment operators -/m { moveto } def -/l { lineto } def -/c { curveto } def -/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } def -/h { closepath } def -% path painting operators -/S { sCol stroke } def -/Sf { fCol stroke } def -/f { fCol fill } def -/f* { fCol eofill } def -% clipping operators -/W { clip newpath } def -/W* { eoclip newpath } def -/Ws { strokepath clip newpath } def -% text state operators -/Tc { /pdfCharSpacing exch def } def -/Tf { dup /pdfFontSize exch def - dup pdfHorizScaling mul exch matrix scale - pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put - exch findfont exch makefont setfont } def -/Tr { /pdfTextRender exch def } def -/Tp { /pdfPatternCS exch def } def -/Ts { /pdfTextRise exch def } def -/Tw { /pdfWordSpacing exch def } def -/Tz { /pdfHorizScaling exch def } def -% text positioning operators -/Td { pdfTextMat transform moveto } def -/Tm { /pdfTextMat exch def } def -% text string operators -/xyshow where { - pop - /xyshow2 { - dup length array - 0 2 2 index length 1 sub { - 2 index 1 index 2 copy get 3 1 roll 1 add get - pdfTextMat dtransform - 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put - } for - exch pop - xyshow - } def -}{ - /xyshow2 { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval show moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval show moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/cshow where { - pop - /xycp { - 0 3 2 roll - { - pop pop currentpoint 3 2 roll - 1 string dup 0 4 3 roll put false charpath moveto - 2 copy get 2 index 2 index 1 add get - pdfTextMat dtransform rmoveto - 2 add - } exch cshow - pop pop - } def -}{ - /xycp { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval false charpath moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval false charpath moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/Tj { - fCol - 0 pdfTextRise pdfTextMat dtransform rmoveto - currentpoint 4 2 roll - pdfTextRender 1 and 0 eq { - 2 copy xyshow2 - } if - pdfTextRender 3 and dup 1 eq exch 2 eq or { - 3 index 3 index moveto - 2 copy - currentfont /FontType get 3 eq { fCol } { sCol } ifelse - xycp currentpoint stroke moveto - } if - pdfTextRender 4 and 0 ne { - 4 2 roll moveto xycp - /pdfTextClipPath [ pdfTextClipPath aload pop - {/moveto cvx} - {/lineto cvx} - {/curveto cvx} - {/closepath cvx} - pathforall ] def - currentpoint newpath moveto - } { - pop pop pop pop - } ifelse - 0 pdfTextRise neg pdfTextMat dtransform rmoveto -} def -/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0 - pdfTextMat dtransform rmoveto } def -/TJmV { 0.001 mul pdfFontSize mul neg 0 exch - pdfTextMat dtransform rmoveto } def -/Tclip { pdfTextClipPath cvx exec clip newpath - /pdfTextClipPath [] def } def -/Tclip* { pdfTextClipPath cvx exec eoclip newpath - /pdfTextClipPath [] def } def -% Level 2/3 image operators -/pdfImBuf 100 string def -/pdfImStr { - 2 copy exch length lt { - 2 copy get exch 1 add exch - } { - () - } ifelse -} def -/skipEOD { - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pdfIm { image skipEOD } def -/pdfImM { fCol imagemask skipEOD } def -/pr { 2 index 2 index 3 2 roll putinterval 4 add } def -/pdfImClip { - gsave - 0 2 4 index length 1 sub { - dup 4 index exch 2 copy - get 5 index div put - 1 add 3 index exch 2 copy - get 3 index div put - } for - pop pop rectclip -} def -/pdfImClipEnd { grestore } def -% shading operators -/colordelta { - false 0 1 3 index length 1 sub { - dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { - pop true - } if - } for - exch pop exch pop -} def -/funcCol { func n array astore } def -/funcSH { - dup 0 eq { - true - } { - dup 6 eq { - false - } { - 4 index 4 index funcCol dup - 6 index 4 index funcCol dup - 3 1 roll colordelta 3 1 roll - 5 index 5 index funcCol dup - 3 1 roll colordelta 3 1 roll - 6 index 8 index funcCol dup - 3 1 roll colordelta 3 1 roll - colordelta or or or - } ifelse - } ifelse - { - 1 add - 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch - 6 index 6 index 4 index 4 index 4 index funcSH - 2 index 6 index 6 index 4 index 4 index funcSH - 6 index 2 index 4 index 6 index 4 index funcSH - 5 3 roll 3 2 roll funcSH pop pop - } { - pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul - funcCol sc - dup 4 index exch mat transform m - 3 index 3 index mat transform l - 1 index 3 index mat transform l - mat transform l pop pop h f* - } ifelse -} def -/axialCol { - dup 0 lt { - pop t0 - } { - dup 1 gt { - pop t1 - } { - dt mul t0 add - } ifelse - } ifelse - func n array astore -} def -/axialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index axialCol 2 index axialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index axialSH - exch 3 2 roll axialSH - } { - pop 2 copy add 0.5 mul - axialCol sc - exch dup dx mul x0 add exch dy mul y0 add - 3 2 roll dup dx mul x0 add exch dy mul y0 add - dx abs dy abs ge { - 2 copy yMin sub dy mul dx div add yMin m - yMax sub dy mul dx div add yMax l - 2 copy yMax sub dy mul dx div add yMax l - yMin sub dy mul dx div add yMin l - h f* - } { - exch 2 copy xMin sub dx mul dy div add xMin exch m - xMax sub dx mul dy div add xMax exch l - exch 2 copy xMax sub dx mul dy div add xMax exch l - xMin sub dx mul dy div add xMin exch l - h f* - } ifelse - } ifelse -} def -/radialCol { - dup t0 lt { - pop t0 - } { - dup t1 gt { - pop t1 - } if - } ifelse - func n array astore -} def -/radialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index dt mul t0 add radialCol - 2 index dt mul t0 add radialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index radialSH - exch 3 2 roll radialSH - } { - pop 2 copy add 0.5 mul dt mul t0 add - radialCol sc - encl { - exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 0 360 arc h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 360 0 arcn h f - } { - 2 copy - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arcn - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arcn h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arc - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arc h f - } ifelse - } ifelse -} def -end -%%EndResource -%%EndProlog -%%BeginSetup -xpdf begin -%%EndSetup -pdfStartPage -%%EndPageSetup -gsave -[528.96 0 0 378.96 0 0] concat -/DeviceRGB setcolorspace -<< - /ImageType 1 - /Width 2204 - /Height 1579 - /ImageMatrix [2204 0 0 -1579 0 1579] - /BitsPerComponent 8 - /Decode [0 1 0 1 0 1] - /DataSource currentfile - /ASCII85Decode filter - /LZWDecode filter ->> -image -J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H ->q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/mioWjnAY&^gM+`4=1jRLW!YA -=M/6)*KS9PE`kN%="Tc_Aoh+fk'&t\ctIN)4XQLiVpoI(>.nOW?*DmsG$@,,f58"P -DKfeXi0S^6MAH=;fBr>1IXb_>kP+oS^^pnX!PjdJ%0OEX9GI`IODGpB_@VYP -$,Ve*/ITH-bV]jIOR,+@`"`Y"/@)9.f?D&^M-b]OrH -OmIKN1*g(o[EC"elTX_ZZ,c*_ECQL2A(g_UF= -ESQm4c#_\W:"=CBQYkQ&hA;15H/=mim3UV:)/KA -Qu3q"iY[\%M;jo*/W8X+c8CUAR-m+uj;AFrOlVo_9p=ZV:0!S@R;Q;sjr'1jRHBp? -D4B]+c?5]@RI5KqkSaqbU$.ptNMG_V:6h[?RVn[ol5G\ZWToqTXfLb+cF'e?RdRkm -ll-GRZ0[r4c*QdV:=Zc>Rr7&kmMh2J\aGrimCVg+cLnm>S*p6in/MrB_=3sJ%E%]U -:DLk=S8TFgnf3]:amtt*/^*`*cS`u=SF8VeoGnH2dI`t_:"/bU:K>sj*caE0; -T'sA]r#ZHgnbf"4c1ClU:Y#.:T5WQ[rZ@3_q>R"imJHo*ch78:TC;^Xhuj(2:_!Ol -=:G;h6j\E@/d=Sn*moVE0nrNM)FIVD%H55cLJ[C[6eHetiWMQ';%=d<=H*pP6qN54/ga!=SJ1"9 -;2S4G.RdIA(#m/7Mc"@E7G,9iirieL;3!D$=Nq`D6tqWXXu8c%h&GC-EK3oA3_*<> -*TP(`O&>=/8(db^j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kE/;-03"4P>Z9n -8_H6SjTM9A;N=XI=\U@,7&cGLY#\0J>q>#iZ'J;5>"`"8/`jp]QW!6X9A+_HjoiMf -;\!81=cG/u7*1iq/nRf1SMTD]d@+!/C/%j52>"qTQ74G'4Y*Mu>>taF90r@pq -RT!C,:$KVWVc<)U;qcXql30JP<=Ya&>)cDE77jIY/uDV%SQ"g-;6!VkW`<6)0U497;8l(Y-qBbh-93!ENWt#)=5*U[ -lihsE7G$-7>\9M0#h#J*FnGiOg8"_b#qq#AaIC(ZW:th=kc)Pm002j>8i!7B*[qY1?e2?#/h]Z*m]Yg07cuD=,MFREmKLG:E*Xj7EN)A -0'6EnSTF4QdCNCSlKqH^7HqKeY4c2Vh0\UE -n\/)MqHmIoIIG/N^K9k&?ebO/n-/p/=:YI@>Rc8R7L?n50*Yh>*JYU(F7Oc;YY81U&?&S6-0ud>A)Im#hNUb"Ka&qdO -A))KnnchD$=Uu]e>`Fm:7S1^)0.(5bSWiW!;9E$;.V2keQ1Dptb?8a9A_atco*/XI -=cY=M>g8].7VU+MY;U"Jh4+"jER%_53bM^bSb'jHcWT^#BAEHXoEKln=qn*M" -7Z#Mr01KX2*M`7]Oj[E/8nhQ_V=_cqdopZbC#(qMo`h,>>)uQr>tq&.D\XnB]Ef37WLCYaEBp'/@c>7Y1Z?&c,_7`j=f04o%VS[8$EdFqf# -C2I7Y[J%VngKST6D;Dn7pBKU3>Eh7NE9n_RKrH>d*V^%]PB -hcoPuDr(B,p]giX>RuF*?4FaG7g\-Z08=H&*Q.Z-&`R%kMK)rS`V@Ikj'6M_ES`k! -q$/)(>`Y%g?;8Q;7k*P)YEj4c?-E&!1$2`eRWDePc2#C?k?RJIF5D>kq?K=M>n>6Gjo!/eo3Q@\H/CdJrSb)i9dJ@3Gl@!$Ap&<"bqd4:0 -IG_a4rs.N\?]Xc,?d8EH8*TtZYP*G&h>@5-nbunAqL;l>rVsq6s'P6oJ)C2(n,WMC -"TWKJ!3cn4n.>[T'`i7k!O*RFn0%ie,m&$7!jF6Xn1b#!2$7eX"0aojn3I1270IR$ -"L(T'n50?C<<[>E"gD89n6lMTAHm*f#-_qKn8S[eFU)l2#I&U]n::j!Ka;XS#dB9o -n<"#2PmMDt$*]s,n=^1CV$_1@$F$W>n?E?T[0pra$a@;PnA,Me`=-_-%'[tbnBh\! -eI?KN%C"XtnDOj2jUQ7o%^>=1nF7#Coac$;&$Z!CnGs1U"V>Y[&?uZUnIZ?f'bPF' -&[<>gnKAN",nb2H'!X#$nM(\32%ssi'BLV'sV$Z -nR31fAJT9"(9q]lnSo@"FVf%C(U8B)nUVN3Kc"fd(pT&;nW=\DPo4S0)6o_MnY$jU -V&F?Q)R6C_nZa#f[2X+r)mR'qn\H2"`>im>*3ma.n^/@3eK&Y_*O4E@n_kNDjW8F+ -*jP)RnaR\UocJ2L+0kbdnc9jg"X%gl+L2G!ne!$#'d7T8+gN+3nf]24,pI@Y,-idE -nhD@E2'[-%,I0HWnj+NV73lnF,dL,inkg\g<@)Zg-*gf&nmNk#AL;G3-F.J8no6$4 -FXM3T-aJ.Jnpr2EKd^tu.'eg\nrY@VPppaA.C,Knnt@NgV(-Mb.^H0+o!']#[4?:. -/$ci=o"ck4`@Q&O/@*MOo$K$EeLbgp/[F1ao&22VjXtT<0!ajso'n@goe1@]0=(O0 -o)UO$"Yb!(0XD3Bo+<]5'esbI0s_lTo-#kF,r0Nj1:&Pfo.`$W2)B;61UB5#o0G2h -75T'W1p]n5o2.A$8:o:\3$V)i[s3jYqLo*OF`B84`4L<9p -o?f]WeNJ!,4gWs-oAMkhjZ[bM5-sW?oC5%$ofmNn5I:;QoDq36"[I/8n_pJdU!Z-t -'1!"k# -7+=:eoNapC2aqh&&/8>b-#nP>DB:j!4B2#gE+"&&dR;"Y,loc6peGu7Qi -mPP2#2'l-8$WD1*;mb(Q[6X)D*%]Vr<4+_ceNH].6WJ$);^07^'k()7AQ:U%7Whj7 -mYOsfcmuMH=1)[BeSA/bEEI*s=$j;s'p2SjPuoo3.']#eXKZ@ -Tj)Cd>6:R('u=)H`EP4A=k1&fmL*8WVC@e\?+%^Ye]V/sd9^\U?535aFmWK-oj0NO -?Sj9>Q2o_UrEeK5@!23Oeb`bJ'hFVm@BHS=(!J%K+^oOA@5]];(*-m:Mdj+#-Pe^O -Q9f!R6Y#au@oc:S[Rjl87qHj4A[Y0AoX/6'ACL6N@THWD(0tPGF_BU3pAp4$d.")&m"B\&_f[\7C.ULU`tC96f:Q9Au+[;&aQC%f/1i[>dT`#\Qi -*VQUOm([<;DemqWCNeHJJh_)Mj_T,'CmO=%G0t4ZR;G9-D>*pFf)][Za_j$*DV#>8 -[h3SfbAUH!a-QKIW;"*0_SFE^Gl[_m/F -3H]OGF#Q=+lrS9QCNPnWFSBQH@OlSf2g)TRF$_>r_9*fXJTt7KG^"pd(QcFVA1!X] -H+.X9p+:=:FaA7WEFLSGf8Fu7M0jHOH^BA12o*,8NHA5pI(,Yof:c.&/UEb1I@%#Z -f=QJj[=22jI^cq:2t4F\a*)[UJ%*gTpWmT+++;bAJ@@Uh([$?.m=A@'J[cSEp[`te -NIPDIJ2dFYfE#6$F+DmLICAZlp`G'37=j)]KK)PT=AZGn-mfccKt&dipBDi:4,.ra -,+(rVpe?N'98@b3H[&JElU-A8?\R,gLq&:3=/CP:Q$9]eLKJn[pmm:%H&>^TMQ7bR -6=#EB@>e6I;Kp`LG\MBSD2MGhMKmC)\C$8&+c=q)Y;ia4\@IVZ[uPU^,$;aCpcj/FW=-4@lNg8R[3?=%qCQDUOQ+8?/fe&Kaq32'kPM'f:R;\;"3L5D$CY7U1 -fn#8gK4!;/Nu:lHi['m.Q'PQ_RCSZPf[lIDh3U.$QPlol=g=Db8!hm>R!HB4=i"BH -Mj7G+IJK(pR@g$1d@GQVS[[jQ7B`/jZ(>+_ReblOH+B/b^Qc:HT6A!oH&\3DS"86c -SQZ>mq@0,W[@ZK,T"4$QqAl9`(h21h-!C&Fm8)5&sUOr=_'q@TMA'r3l^LUng. -q/R`A,GH)ZU&&&h>#&NF.O@,1T=SlVq8]#9aeRQ_Ufr2E\q-Z'KnMKr9mPeEH<6s> ->H'ZEW2:T4@S1'GJ;liG+ -WWG>`H>fgPjc6&[URH=Eg'=\t]rQJTYBp/N>"u,PJ#uns+SuJI3g[*5&Xtib@/AY' ->2cbJkGl)oWr"BO(rriVqlh"uZb&*$q#@Up=g7cpZ!0l+HIoMn"/c2^Z5kE_RgW$-1Q"" -+2Bt__n5gj)qCj6&]+Aa_-B^Q]MZV9qniMW_OL5;r*?]m=C&C,+Zqd)qupGSe$A`$ -[_,DT>^sgW;oi3pX.3cY>[tY+PK"OLaQ;$nU'o!]4i]Y3\_KQ>r-cY6[E-"kaIKre -H[!TL$d!er0hj2:d*$e`FWrh*]dWED?C%c;tD'h,W"=L"JPFeX_WN -G^\/[5Lquces`)]7Ch#u6/#Ue?u<`>MWT:h>Q*^^(Hl@YMNHe -,Aj^)HYrak=8Q0A48krE-l5&0QC -F5u,V[/P;TSk8-0J#9o+jVmUOhOX!sQgA%Jm!d4G\jgRdUZVPumCoXgh)FWsea$Q+ -lSsaX5)JU\%O-ALm%41Brr;H%!UtILCE@9YDXH_=(%*'2mR>IihRE&>JaXVaiOlMd -5;DZ"1[na3o7&odU+dM%X;sMooUeYG^JXY'7V.&[j%f.7Ic'i\&+SFhnmrkI^ss5mLWWV-:ts1bc\ -%qgO+"U'Cm@1[Z_)Arg1_r;7FPYNYBMacYKu$tID0(WGT6>a!JA9uE>VAL -U.XHc47Uu4IRbiNb@Ips>g?\6S]f,[c<$$]8#"FGo\,igY>MCOCN^WpQFgk9g?eOf -S]:,:^"mV9S,O3/M88.jq#"Gg09sfCoD+peG=SX]lZB`Z?I)udhZ^"@5jX%0o2gKHgdi -E24ul6L_oL%7>*q3tEU8=qZS.0dK7&6r??F'ZBN@>8BZt>[i?'nYBq>7e+E<*Ck,1 -HQPcK"G7jgE[6Pf8Ff04,tW(?b&SOYET3Illrt,Q9(K?q.a)kN\LgI\"MZZadj2gd -YR(t*c-:?=htKjpmtd?J'C1[o9G_/ss"bU5cFsW&V=S>1IAQa1fRqGmtKqepr2Pcs[b"8,JD+o-.cYm$s"hAVW -pDq.l>jNCK3).k]gNHlhHU1/!GGXJL;4#8fI,=VJqgMoHh?/78=9]"_2jB"V:Z5De -4bhp?FsDfPG^_0"@b@I%BiUEL(i3]-#"+M`GpZ1JAGJPV?KH=\=^Pb9G%23I3MpS] -B)0GfSS*61H_4sI#(rU!p:cH#B_K;MF(ohNRriAuAtQ&;3i8UO/D!nXFmFA)]/%e&D#5:&ZY`o9f=,V/L=k)9354^;meFfn]5LonpV1XZ#5Q)Rn-4W*j02l" -`Gp9<)olsrKjgB])/h%JEr;JTaRafB43r!H#=Hm\I4%\:FRY$E-ts]$U7,i.T!-di -I@"a%pALn/1aJEB]rlRgB#2#prZ:+ZGlBXciq\$nRH8_.LI1Tij6\k1I+[g"#&76CMM3$485:E-; -@Y@[;;-#&18?iq>e6@inFI,6@_#\$S#(TQs1IcW:)Il`^NKLY.7ekn0i3XA^CL!7D -3:R;be0L*;k!$hm]*[G$.&c[(]fN&Jg3QPOpJ>T.6_@/cM:?j6;JK0DTbJDM<8%XVlBP;JPuaqcHEgLc ->o&Hb?EViQ>Y4/`*3>BRZIV(]8#[4KXclnkP,`(uBmk$!29rg8>4Gl>FYp"]p79h3 -HXLX^K!5SgT@@'W:omAZYuB5U=Sj7PCm--E'gBf?lS+-2SXZsOG0a=g6"k*K)lo9j -Y=E%n=tN`e[?[W>g>oXaX*#_sQ*?P*WpagUc+1l,=ZDK;V]G?4$8Ha&0>XdQKhD9:V'_0Bl5j1L_Eo3QH=Br_E8]oskHg=ot^ -Dh[ek(Y#tL.r/teCag[^#2e1irIAhk"2FUH*F([eEj/RN_3Ze[@(Qh=/qqckQqn)c -bL)&`ef2M[DXUld6$F_0*Q4>3'4Q>dMK)U0]i__H&mOIGYGO%oR*H7D]Ch2&c2=^] -'*2KWI?8IR6c]!;6K!eEK5cQpuutMI0ZE&c@XYOpKhY1GG0+Z_pOqi7I5GYiCONCfpY9?kpP)^[[,Cr -N:Te]I5eT*G1G?:GAh?s_74CfWQgd;eRn2UX*'Heh4(LLhi2?_FgN\FgA>1EII4al -#5[3a4(2rBPJDDJ"5+S77r8_JZhRSHiJ`,'E;h$!;81]3]N7jJ/ht@jf,Nb?Ft[`. -5gfrSmbM-7G4KM%]JlFijca"=Dr+p;3L9R)SB%(gNW6h?f)k,_':r-/&&S*;%Hq(6 -U0UMWdX"tf-9P5)D5s)S3gWe1SQDk7Fe?a!03bgeK9C8(_:SPuHe*SJH#h^5bP@bg -m@CGiF+3)!H-\_Sj-`\5BIN& -N"WrG/&2i66!?.[$iRi`_nfk$6(AiZX;`Y%!]Mo8#oj,bli]WH"UcjH5^Xb@F6s8J -$GoIF6<"B1A(%YN&4#jt6B!B[$edm//3u*E5t!=O//uJ(0H\LT6Q?q-bV6ps1daqo -6Wu'-bN?CjOhprU64>nA!rJPL,=$oF2l%]c>X(Pk5JhM-\Z@2GS3oW-6pdr,6G+ne -bV$hM847es6Y&eWWLZC%(W=N67'o]Wlq^%I:`6>n3ma*YZoQ)^3k7'j_os=Be-SMW -5XgW67@ZZL*(%S;6c;r07E_>lA4]12?por]_W4P5/7TG(9L_]2`6;`2ChH4bBL[h# -73!=8J28iZePZl*YF@SA2`OoKq`-4^fGV3N67N?_D -'RN:HH_7rb8)/P*b[j2lA]2N9a;fe&/;$JS@n*P77^3=jgf2@AP_ffLaII5saZ7C@ -F%FMsaOH/3=HZ,6GKBu4aU1bY'RIgb]<@4N2]G8n=bkgqQMH -7u7YSb+,ES*5`Vfk/tW]9&.D.lUV>pX@m*G3lJ4-pe@cq8%F*FlSL[9C(t-S?d7#Zb>l<%#0N/E8;]72aSMO(MY0MmE;;j+O73L',=&L%` -;k5,]XX#SH$W:h);LKoN1/_#85Z4^Ld_.q2Pql<"oMY&je6M(a77U=*85tGe;`u&J -78$U^9IZWPA^q5d<<[$d -Q%)hoJ6&HTa=P3r2Q$V*] -O%JUAXaN-0eRld6T%FdC=8eE:$%uD,K3=1e=d*@J#gYf>K[>"Y+/rc=Y5'T4E1\@QJ0TL>2>Mm4d]BCYZO&n1fZcn -]sCklZe=)(g-rFuAYE56\5#2qgRYo[Xh+l3VH_&CuNR%DgT<>pjs>.'PmLm_Gs -Y1uIb;m^^NV8ldLa/f0.>=H\=ik*Q -nQfI$k['85ag#!7U8@.^>c1>5[oNL?V?4GfH*VLQ` -P?oiahjsR;ha2ZhqW_=`W'F05;N9_oXq'Cg.Gt[J,2MD=jo$Zh&`HJ"@9g'F:)@;-(gns5iI2Y8 -@2e'9*+'[1M%0l#Sf_@++CMVe@)_m"+c>+t&7G2-@S=GoAg\^5'&nobbg%TqXt*to -B47Yh@@f)[XtAZ,0%u-e@Eo*dd!*ic*o[A\j'1#B(*_`Z3+I51@-/cqXsISk[Go1h -*Bko\2EsFg4ld)=A/m:4r^10*6t6EiA3Loh`\M(Q_FrH;@K&/qSUb3n,@ca-j-+%H -^-#o6-=m6YjCAR8D$7Rgs<7-0.ljc3MP+Jr\(1=ZjkA>W[D[S"Mn -9Ou^_AECniN_ng9A7dq!j_eZK%THs;.A/S2k+6="X/TZrCh9bcjdp@#@%_)NE*Bp* -AaWpg-?DV9@-/eYADVJo>^>I,;.kW/++A!nUdI&8 -C0mcPC@^V4W+fS:l#*J8XrCZ,R:oLPjkcMA[]\l--eeQlC$(<=..Z@eTkM`Fd\`pX -Bk$@&OQMB;lZTjTY.H66WU%j1CY#M$mA:1ZXR$DMM&rj:0!K.R\SDteCECK+f!K4! -[-W_Glb:LVI^j4*bNuCVCu3GcG.qel^$Qh*p7EYk\VY!M-e\K -6pC!]eaC`L8kt4Z?LMa$O_q8VD]ZtPQJHE?hb!',3DDV!BX0*3D"mdCAaD2d1e(@pk-#J9f[Dbg^Y7c&'k8+1?S -muHD]#7PSO&9/$VDsmRD-N8!<'QH:m>TU"TDX6dMmI>rL7pRE[B(,8uSn\K9ESg7U -+joeXG&dg"<(?TNf(\\&,]Md\nfK3!D^QOf'69-Jns:)!*n,+HlBdP4nW*eCk:]*( -"S'MeEP*ajf,jNJ#dD.kncq'l[e4Zh/TNK%nD5FH]:e%lWth2f]]t;1CTEE09aq,iM6focI(S -.aiDL<-/@FF73-%9/b;o/8u((M#TkcY=3P*)0BL]Fl+q)hKSUa?une"SEEQ=0/n#2 -(Nf*jFT522D05JABQfGN.&U-iY?(A3B^[ -oVZk#T42ogG]^uOFOt6Qhdpl$,P"o44C=(-?fH(8u2Qh:SS,3`#'GlT$kDB$%=7uTdqd)B)IuX>TU@1mWc6&m, -a(BPIVQgZBqqo,7kc9$5^j=&:qU:Q5=+o\eL&2s^Hsa,lkHatTZ[@ZZA#GuIYB?SM -a*WT:I+QVioM>dKGG$pYH`rP<&#X;(c[AU>I9<6A+4klVfR,#7DuWr0DQX8S`I)U[ -IE:=DJ$]+RaY"qGI)!*r2n+-pjF#kGr9"IccZoCt"T8=II[B>J&*XBRdX#9LHdB>E -^Z^.Hn:(_2rI8Y2("GYUV3LB-\L9L;Q/+1Ejp\3m9-RB -X-NPSL:^s"=Y*TX7@r%A[T[OV]62-PF19Vs2g`O+om=D[DqFmk#6fas@;skH7OJq/ -`aa#@r.[]fPKIHWfmLeP24Mm(F4pAqQ,rLCBf(-A7\<\XenT?=]lqG)Ze+Sf>A^7p -Fh-@H2qu%FpOU6@EHjTp-R4Vmk&U:QY(ns2cfoRsdcVR+hq@Dj]:JrqLV)U9Gs#D? -8"\>op3M/$^N?U%j`p_&^I`Y(p%84]s3L$3r]j9W#6;Q$4:MG/YZqbE5u;A@#Js;Z -.1!epS1P/e&DSoK_bftc&&_>E84M5 -@-]jt4jA)[QX/!^>utn%GMZDDl$2'oSaCg^(W3KP?dF0$pL%)%#Cta"43%(^M2Y^W -iRi#k(h,IR-&U]L^*em!f[_d:j4NccNau8k7hJ432Gl6k;^PY3jge]'R-#9X?^g+[ -[V;5o=jCWD;AoEPTMbOqM4s.e(6P?U3^/h+l'.1K_GmoH9rdKI^8J'taXt?2CDu"\ -W9d_0ag19`I;cLDgKeI#<_7>6?1')RI:ZOX^?rSd)rC,!0&&Sk_!kSN$,Z2e57tj( ->[JAgn_AU;aRVlUpNuJ_f.Y;<*8`X!o0!%5cu\"R8^1VP2c52"=@ZHBop>MP""'Eh -Bp*Ym%r^1r*T)"rpHAP%i-4#gM;dK_5'`ZD=l5S,q4<),kkVrbU$?r1YG%S&g0_DX -qq?P3n9b0Gamo;XT-ftAhd4.&rSM8FYhEH>l1XCl:\"A_?e[u*(+C[HJOH6-I3Rg6l1amU'*i>d2!uq8Y0d74leb> -V"PkBga]<`P:1 -3Cd(6)l)JBO3S495R7T;Ua1Lln.f7g2X:JkA.OgL3_1e-s!6[$Q'0R%9M(X0-KO6Y -PL=nV'1cC;AL+%8d)o<[=]6d2<3;F?\f*q\FY)X=[>/Xm`C/s5'4p6#QZDq/bP?iG -AgG0ZcOMABfXD[Z<6^hp5%VtVSM[3r15mr^2Fa[N2WiNFRkoM0(t#iYk8^;mbE6_53jZ<`QTq9`iHkZkr+QqO6T9K6RaG/k%TM1E/Z:9ICQLd:RAIY?_ -5)<&S,t-sn'r'2a2bNmI7ceb4UJuDu;>N^OW8t4Lo$W`FC/GJ"Cr;Y3(7.r<@8,p6 -25X@,RT"<-8g^AtRWSODe/Ea3WWbbgdo_gYah]p9-$b5YLWWf -=;qEOlm7@idYAVm\C0#uW!(J1T3.^IR$bV34):2K#OZde9cg'^,YD'bsa -ba+i">?+NPAOj/:Y1Hks@.n>0:oVu7gY837DX*@CX#BsY>T0ebbai=H24ER\R,DE@ -29iZJ3^),BV0(6VDn=K1lrP.38h6]o.Q,q5?5iE[X4)R0Q_*hUS(2iRAaR1_^A)%J -3Fm')OM9:fpi(ncXiTQp6O*6S.UAB4q5>13sIff:Md.^'uH>E -g#6a'L+Qrf\!H=7@JiQME?de(pB'=5N)ai%7Ei=;^?&i4TlS?-1WEPS(rmTWNq)3, -]/O'`A/p.DaZ\Il[t=/2S'-'HmS1gV5:C(_V3LPJ:=.rDere?#h4D -)S4:"afP&6Zn6TN>\fmQY4^qjf@p74=Brb22C;e`gCIf\?'-ZEDJ.2(UM+KA$;Iiu -.aD7*3bLU`[Pm!qgRETukA:1.oCh:l]:X+]MLhFB54-^d]0gK5DGP@Tp!LD+8+1c* -:c.$thqD^n5B:2IGRjc3MP";GR/ ->oK&I/^:kQB1qLDX/L-k7Kh&8#Q#5AaFiCYkH21 -g@_&@f"L7YlK#.RHlg&l]+;e%H=++.T&&u*JJRXf5NR(G,P9Q"G5C%Hm!"Ms`-A2- -qq_.-GRc\-r#$pP^RpToDlNU5BC5ZT^\E:#jX!%8p%%"pc$uAU@X5GUs3En0$j%Y- -"S@aZ!7+dK%oWK_%foHup$ZMdmqVt9-N[*oRI!'1:bqdL2##?V)Zik2O@&`gMZf,0 -X$Uk'&"*2I@0.eJ0FIo#`rWC^%+**)nB/)a -*s0e[o(XUVJ&CD=lIi)cL%?TNYEKM,8jV`'$Mului0r#6k -V[l7f&!0Eq0`N(([i7oc`j$Bn;%FXD_J@Jg*!kpHOjYNf/J<'V'!^14%dkW_1EMX. --IFsF:ko`<%hrpo*DuhZ&d'7S#9]0:]ocqN&Rut=Bd&Q,-8B]g&TK!LFGB"+(pYe3 -Ou!q12'W_l57AnWdR+nX7i@I_)(qm,Oeiu%=!^9G)Y(EY11M8dAAt;Q*0JPeEcBrj -7i`3O-c.GUdXrSrKcT^F'+fR5XtD'knL9C2#a+p4"d(2'V^dk1.akLN'!d"-(FtX` -/(,@en?4#+,qP3./CGm.OaA>$4"ZUU/^i6&mBmf%9dGlj/s>ZUc.o6R:>k:\UV -37@=Vo89!";(pCf0GBuqP6EYh#r(tNlf0cUZ?86-)#3](42Q>"F"K/R_^LZ1.21#V -6=D=L5*q51Asb#:VQ0?U&UA5El*HJnI"6#<+GY/B/Da'GEH* -(H=5j5t>g\1Qt.(O[>7s6H>i]PFk3?s$M`:3`E.AF@/G*+Au.E4-WM9Zh$UP=Zhng -7FT4F&M>@c2%s^)j&=\gdIB%KU7kOf8(<#Z'SAqULAd>78CRH-'ELcQ7OF?+5h)>s -&,ndM*C5o39%9n7'W?f(;aRi=6M.l`'Y[6b>si\,9[q5''L+XCf0iTk"N*GleDiW. -&P//O,.(QD1ga#j,jf0.I)1f6h>eIte[(K$G:;9R9VoT`sbl -20>4&m92r)noWqL37kQVC9JjF_'i.h/`#UZj6aY6@ojVY(JPF[19snn- -F1O/,j[Bil;=tf&FS/a8o2q224VVS[bIL,#QV_`h.J)IMQ%)t;Vco@d>1KeTPq>mV -[8OEA>Kct1iZ8p*^)2:GhGf2PQd,un#H2-F6#k;]kT9_Dst(%.#\Bic$d -=#Kk_'M)DmGoS]H::5^VQ4[P#*Da)*=Q5062$mEH"%RL,/9VJ4(,KH$2e/.7C,NV6 -'tIjT^I^:;>a<95[S]tt>@"YeA[U3&emcmu?!`fVB%Ca1%r2Z_nRn-[?SYk4]acj^o:nG=*<^2K)o&pMX"bpGRM6[fL-\$"'!RB\*c6 -f+PSmiD+E5CfGgt(8#VJSOOA6C6WF8F"5hV-QDG1Q&(p??ckJ6Or'GLlS6n1QG=#C)R=Gf9>q[Yo-,&U@HI -"G8:?/!G)IIr[IsHF=A2efALDe0DF_HdBfL;PAD\a*a5sI+Q\AQWnT6f6p`T(:.^d -=(?\AT'mY^n10:4.=4)>\ --[PP:K$\@]2_Teb\0I?TF*3mu.M%,57td7&K\0'MGMR\6=,!#BbEg\-Qt(SiB!W<@ -J!]b]p\0F[G'6LVJ/8$;nX_$d$&FrX3ML#7R$3)GQ[uGW0c2'8=A_M3.sfi$MN76R -QaH4*1P=>l=ju7bGbp@$a,HD/N6eJW=OVu6eV1nl(>*2I=Q>DL20QKTLH+a_f^jR[ -:P^t3cM.X#fSb9_YU9.1M7At8fb95uD/n4S8=6T)=s4uopD/!-VYk<=WnKP0RDYfr6`ZYGX0ZrE\l#9Wa/iIeo\*G-fYs^+AZ_'f -03W4j3oR5FE>uc6\B$1g3iI!YK8+8G(U9GJ0Uf2G -4!Cn,A#jphZJ%aC(?)@@>qK5[Z[4pC`"/seqTotRXaY\r!mP_kB%Ja;1nW>D#FLRjqW\\D*(T)j@g!OQnSV6D]@,rmj'(W!VHUW)#8 -a4u0c(ra<2)8TR5+a-Srr0+uS$bH6a63B6c4IsVCTd1Snb1o%qVZM1oah6BObJom" -*)Fd`:!B,)VZKr=HLZ!PYK.q=`Z3mU;($uXosahoa#j1&eIA68gWuDeceSP9gl9Cg -#KWGD\m-E+*0iee-c6-(=o>2G*2GsW2nV:(b5Ep8#$rW=6d,D=9q9,F]Z87P6e%M5 -bm2sTGbG9=!&7a;`][[T]][;CX3TJuf%E"&@bK;&GLrC4f@5N$>mo:JLM\58d9VgT -FiVV;)BL6IdQO"oh'peNVpdd`g;J@crAiV344G9@gYGkF1c9BMg]k2("_rWD("GMi<7ZG$e3*Xch1A(i=siLQXr4rrWHQf9'U,XQ5"IP65B -]A,S5j.<=;%`-ZXh:4X>76YZ:IS]<:;YrXZcBN1>Smh"ll`%V7mG?ag*oc]RFm$L' -m`82ere9:%pI\W,<+7CEraj-*pZVVb65AD;?CC=IS_AJ%l+)qiUL$7=t(8I7UqR:oPQl6O@\G1=U^ln.$I87P.1A' -@540DjpQ=D@Vn)oc=`?Oo]gujT[2h$=sY5F8Y]1_'Y8EFThMFal?+#A?EHbe:#l]BsV!F(;"^tiG?&/mWTVHhX,U"hX;9(eb9)o_-aF6*%gHfM8`ro -R+ujL+d'lWnP-V"=kT1eAb2=[mVb7^ctN%I>o&o$Vq#O(),5:h@BnL%p7#?rhf63_ -DYKXUCRr]?i,H1g4uX:?`8u"7I%Ft8S^HTlqAi=t=0^BEFh=32QG);HH['pe0.3C: -l14]L*m[oO?Li>(ra/HnfCAV6ID;DHlh:?D0E_UZ2paAl"@4_@(C!10F<:cT0U*pl -6EmgM$pu_u2\&3ZoKNmT0bd+j7'SRE'La`U/4u)TY:[pQjM*?A1@3%89Tp16 -1edI%??)K*I+pU)dtHmE::#oJ3_pEro0,rko^tIFZjct#:p_MZ6.%MH'gto@FW3kJ -%=-0m8[/O?!CE2op&fd<].!l>?<]$ -G?^ZdS6&YA2'mrT=EZQ[A6>-tO(I!&AY3U=2Jo@*>*UTbQ.m`f[[,[6e[od)pD(A^ ->W47TF'U^nf5ocWmbf,,T2HI5T#hN)F29o9nml/R74U4Ka6/9/Se66-R:XsU$B4'3_2FXlq -G.2s>G'=t9F5D+hpN>D<^(5_PGZU15J)FX7PNI-3GF.Lg^4N25@NMs*lf,Y!\*\OV -cbJmq(lq<+A9eYVoDLm4fCUpb-f=]J/>dF`B)f;Rqu4@Np\d1u_`h`f!Wb*`>gced -#Ct/IV8/emr1J-BJe1BX5r^:s@'g`&&7uA;\2ae%oH/_tK`j@.qVWMJ-\RSY'1/Wp -$K6(YL(LX.6MBK0*/lgrd,E)6\9/5`>N/2B8gi-0"cD*oV6KTNY/]Z`q\X9=.-@@ -c\=SQR/$HOoQuYhp-:=!U4hE6l@#rb6qFiuCLeuWOpH(,^R6MM,cm2mdUl/ma8XF. -*!)8DM4q_@(F`o@Vh'gC8BSJG.qNh+Q4h2?90$].Mi.%> -FO%D%[>fQIN7"YM:H@N"B8lSVPN$pbOtpjKV#QHs#!5X2!C5j'<&O4RKh*+"+R!)@ -TsR"?10Mn>,]&@4nhQ/$ZW0G-o]MEY?BIgZ7n@>?-TG`+:XZd?YFmGDPr-@G8r684 -l*WIJ']trb\p7(cofoAi#,,!W5;DF[b,FneUf=pj;ef$&WKfak_eH;SB!k^0'kXLH -Wj*)r>ii%#P-IbCa]N=1@oh+mG##$k>@Q+NT68/%=#p(]X0$KHe`OM6ZXZ::o`VK5 -*l-D)"MYA9';?6h`)sSq@r,/*/qh$Se*8`#B]YPT'4LN%,Wa10_JAQ;@7 -F)'g_X*7%r>pt,&lUBF,pL^a;]$FjN>89Gd]fARUALlT$o!VQA),Y>0$gE)Fp0GlYh_AK- -s-[g9!6lCN2!/iQ:iJl.^q%3=ik4K50TH[\=lVYXGrT[1[AKe1@h%Wa25+`UFjV*T -7;0@PUNC[?dMbVI8Gm>$ENYYJ>%:3>SN3Rq<]J.ppE4367B(D=?H?7oR4Y0EF`2=/!+ZZ]<#c.U-OB+:i1 -W2>d5#Wk4_S[Y3ajWfu!=$UXQ>\,`MKYtEnN\cM -Xms."pAL?3K2QH5#JkOA#1W6(GOVEd`V"usebhp>nNJ,830n^=g@(!dhDN>uk9&_p -6XX_ILWOfh-eO@da_^rZZT2pKjkRjB;r+R`G+UXRqqIYZ4hK$`rnciIj)F2[aF#Fc -kij%eFP@:Lds?46l5`BoFZueTHEo6_)tU1MrjUI)k?mQ/I*$>fahdj5"RPkYJLC%3 -i6Xf92S<,%EA$Fn]=2qO)&h4L*^/C@#CZ(^s1r%Pu9)"Mdt?^gmYbF9fU4nic=G^#TO6r!Pcc$^2Of^*F3&4:aV,&A*J2_#tC8 -5hE`flTUgR_,M2d9GbNRc_/JM6)3qcX78Kg*5Sk?^E`A81\ANe+,X:q^Phg&1\a:! -,,>iAN54&[]DB1a-c0[*[`e\6"=q7R/0FB'5RZ$e';N>neO'oE_PAs)1c*$;1rE9M -_dkZaHjmoG$q$6g6]=&he.+bA4M_^p5r7I,j?CKb'9&.m6$*s^1d],K6:=d?_3(oe -e/Ud0848\4`1nj!lla.:9Z4kD_Ad#P<):A):r5UtR'I:!E6:M3.)f.6%1G0P>Ur.b -=N,msN1;N6.rrEF"%C]oRVZ%ooO#T@@)`mh`[##u*'2)-3Q=`S7V$)"fZD&?4iW_" -`hOT3KPJMq+iG?i7cZtWlp\qdE5r*$U0/;NX@^?hF2q7%a'uakU`i.UGXUUe66oDs -"B%asI)82^+)oh#9NF[[bXOB'7@Yr#1g)j:>/Ko9\heCrgb>t^J]O(4aJ=^7[#<#D -N1Z>I7T>DfCl_-JO/886c0( -P__kW6cuL8b9XC:1pb@n[*);&aUGW""LlJe[nDRnNHCFW7$Ys6]?A^94&FO#[$jRF -^ruqtbP]6$&gje-T?L9,9Os^!FUCs!/C9q>;T'-*SIX*P%9!]H;^F0DTZL%g1smm4d1nQ%+NVr1372:P -SlHS(SJbAF(t!aMdENWVF[&3`-ReX/e0On*r;4nVY=Nd[c%uT=D*_-T8CWnre>5de -Yn9m1.8m9B<96g!'e\#?/l`W?"G?9*5\9Osj@2Ct@-R -f&^f#ol#\H9\1"Rf,[Vh*Db3+:t7.>f4B)p,qmekGh$AN1_;-=5@(^ -npZO_?!%hJ=KK\/Y[;rqNAF[/tp"P3]Wen'`iHI>iQr)+N<]ibnI`JN7O -OP(A2fd2g)4`]4EE`lC`-=(^pF`gi@G1hhf:pkUP[;FbULY.Tc>,$u/1.'X$B%kd&N2:5F$ntKA'1?]]\2,S=lmA%omGI.^tK76g*Ik7@%,/tNfXj8o%BgZ^Y?N$kh'LM*2:LAMe?ier -gMN53A7aG:]3DDjgSNW?"h\'qgtV5P>P6i=9u(![_-ASNh@m][4f$k%jPE.<>\1t4 -Ff/PtLY-IdhPJE"/_(qsc!(uJpAOd5[u -Q5a8K\)4%ZiT9rFp&)O8;rA,c?hPZ&2BoiWh0A(EbNY!?Lr -@,pllbH=1jr^5g+A@4\FA9LFQIV._s8)dQ@Au82_Y"Kfo9Oal9jP@e7VCc?hE9.+W -;mn>h#'8lgpZ8rLj^r\tFG-+=hIg/?kGERg[X6*(?>%hpkN6+6p)4Nd@HIcF=_8]: -5(huuKONutAq#KsG),4?7G\5akb`-/[VQb&j5eLFk2GP6`c,Q3OD,95$u3lA^/S`7 -PXlR;&WV'HDO8MVW+_3WBr7?`[[ZO!fB;"?kO+o*p3u-&@;$^Ul4LGf2MC?bA85-A -BP*'6G)5F7Y*8*F[-(/aBuq%Q -G.6X]TFmKgjG(,/[_(kF]^+#]l2I8ip:fktTP+h0BI:UW$aJtlKksf.hp+XTQD\PR -\nmVoC8S(IY061?ba4?llLp6SlM=bOZ>1N/ijc1-0!oD#Q#0K$le)hbL6ub:R#s#C -Z]!D[2P7$?4#nDV$Al#7YY@/FN&kOEU27#;=Je -X)CK_g7K=G:DNIjphPuDnpX^42`L>`3:iIsOB3HBpE"Cb4RqS8EZ[L"L;\+.5k7E2 -f5Du+G=1qV7.Y7+g%QrfG:Rca!cl=5nE3CsYmBpp9^rd_o+r']-?JdOh=FDXo2c`G -LI>ZS;"[miok.=uG-\(maB(D:"FH;%K,Y-jT96aNO1Cl,3 -Y>'2JW,5%#GbqDP)=qKJE-3Ofoe=I3%DMRP]r14mO*=+FntS] -IJ*W.pXA0smp^PAJ9f1'AtN[[5G*6*_e.MTH7*Ceikb>Xq2^tiQ^[f+7!d1MH`*D2 -[@@!\K6e'#qp\2^:SRVkUHCH=G`S\K.R3cJVu0NgHAcN8hl?OfaS^[.q7jMN\?54t -Y^G'Ir9)AV=0_WeZMb$Uq.CgqJ$l:h?2K\lI:q*?:V$A;bC,`0eUN/IhqS%s^,Y#b -r"m.soZI]q_gWDud@mT:GAPhb%^V\2r1C$=Dom'%b5J0.pD[4^pZqh!m/GMiI4*D@ -p[8%d4o8%)HVtN$^Xi:3o`%3=FqJ6t-`fHr_O/MFHQ&R,h^>)iqbp;E6"g9dc/tAQ$'L[T;.7 -9HBRZ\^^=o5Ft\!e/BVCNC'FOGPXV8hhB]3]Cl]=mq2I_K1Y=<&Xi%>2RWE>Z>g -MQH;k4gGqVN__6lb[iS5I,8KrT?h1l\ig7]7A[3PF]s1;IpK81Cj'#GVUo[oghq=? -^#o';^Yj'U>WsMONQ:+#H!J'r2kA:YFF%4VVcU"Plum_]^?9^Rhl@Ipkl2H_a5ur= -rEaDTVq^P3I"!/%J(NfUqL/BNTBG84rP.fr^lb.b+l`X>n2(^\_,+q]#JlLT*=0ND -S1P%7&?IYq_bf\[&&WAq4V:'o*)-Yg-Q0jH`DL/I(<-r6AJ[guN,'SWa"[LG!"V!cEoIUYDd8Xrr8(!QT -*D"VCSLmE3'Wj/ado>]p:XaFq4],/n*DKG^'dZjYeTFSh=46BUDHiSFSSMD0e]i)> -f(JEQ?WWNkKj`Q!"cZsCp+;DK!NF5$jJ:XIQ0WeRQd+oG?O>JLIbqPg"bF-6@hXLQfLm0:@H/kqPk),=1sjdC!lQf]0GAXV\KY&0Zk -):!AqkF(acft\L6qk689/r?@eH;9HrBc:h71WX`^Pr,)".(/msE@U^[Kqfqn_bA-O%B4Ze\p+ -e\#a-a)RW!--5YILFpX=r3%j"o3C`?cguodAS^#.cUlUXh+p\ooc7[Ff(L,6A_1-Y -h:LE;h8S('pKd6/htN]IIGO%1"o739ISYsbGog.`iq_G#J*FK<^TEE@(rriIHTp?# -mee-h`UBssf+%?A'@Vg1ZX0Qcp\l7qjn\nJYO25e+4'WYs.AcXs54"\J4@q`^fHj( -g2mOM0HpZcfGO`-'4,I6AdUg`/Hh`b'n\2BX#E"#gn=glKCFa0_Dk6r@72Ap:nACc -BA![J4>D6qar!K*D%0pl1l"o`_)S>XkFE#IL_1+=`)q^*U*N6c;'mVXLn(Ld)ma]? -dOE.;V%r!c=GkL-e-(RZ6&FE)T2c8ZA&KcHk8 -"-5j,njhtoFO?NdnfL90T+bhDfp`XmCX(P?2l>ZnS5BnI`RqRYk;;F] -e"V!1WS'AhWNM3oc8Ep=dllm$q4=XPRn&>6*@Lc-TM+u?cj8ka?^->-Z6G$"\fF,9 -Kajb54c2pYVT0MfN1gr'N`"Ln8*L1#Uf`R>hlb<(b/-9-%L.I>tN:,,S?r>0NqqLpL-"c<8mbBC,krZrW48>$F^8 -c>>D8G-76:gJr$kAZn8Hg7;0cD/F./4[_.+Ug)Q<;JlZP\2O?F>ZT.9WkDE\?a`VL?f=P*fmTl-m.gg?N]C)A7\Z<.UXi*6G:YU0Tap/SuDlS;JaScHW0:C:N8/VW]6 -)8fQp%Un-SCor^@[MY&:@SB3?ffcgR=K<3APTpEN-8E#TcJrD.AW:]L1:\2k*aJ&Y -FKu*8aB8:PqEpuU8hQg^MRbJYV$ -hsAU:ZT\"?fqj5Xj0=3?:3")fcT#Q2jalo1Eb5EpGRo2s4j)mt,\_0UBO)(@oL=\b -=t`?Yh&W9_JR-4*:D;tt9r7KZQp8*Y(MVZ+Vm08V`nHInl:c,qoerf!XfEK'9S9CO -*j=-ua'*6f$$A"P9\3J2?=aRiYI3f5<-_+gAY"gH2Fb[=3uHc84e7tKL1/e3%l3:, -Xa]u`CjJRoD.!5cE\jlWcMNYaDI(5lN%TAsbk"'eh#!`9%^Xpec['M8mCi86q;5EF -IW*]OVK`<2i&YY*E&gD2EGhE->UJ\oL]YH9m9@s?E^7&cW0:EF$/%8;lKS"W,(:' -W:sWehL"..n,P[ciWiY -#lnoQpk#aCn.bQB)"nLW!Q,mgjut:KD!F^p2Gbb%&2aQ/3.UjmDiZ7"H"gD>;csYfCUAi#b_.blO'iW$IA)I/W.`4p@FBZ$a@DeL3!>kaT/Qg!71lP@T`a$ -f`A>3!YF:`8i!Bm.-bb&h@MA7&Ch;1q%'_.&+KZ30a/+u^BG2Y"S!'-;%j+BYm(d\ -##QNJ0dR$9=U*5f5gC;Rd5;/K2[Ak9';j@2Y`T3r7gSWV'_+m",-M="UD:%:(%A%8 -0j=,:YnjRI(@\^J$IlbMq[>0n(U8K5nAbsbM%(&T%.TG6E<-O=R17Q7%PaRc6`/EG -lONFNl7iSa0sqs?\Jqfe)tC`a,-MRJ'caL#*:Xe-@^?[:-PA/e*V%qhctN7fkn>d3 -*q;H:&O@L3KbRB]'X@`]nc]a`!b>c>((jgf;@t'm'd9ZP(6N_`0lnOYD'Fa5N"L[Y -dPW7%G%Zr$(t(\pnjN+)"W=S=,k=YU0qp=ROW]Y7.hF34Z,J&1BdU-&-Lu.(13Co` -d2^Q_-dmPnX(N$LiuPFb*YOM^Z.NVb/@TNU+*$m%18-1;q!Lqg-.9%@ZF(fq[`?UO -+d*Ki1;PM^*@ut1+qcIZ1+Oqs,qXh4.kuN+1,ggXmj$5@0(M@_&k=T&P9dG8,ng5( -;ZSRa*+Uh99ei[q0s;)8G;6EE1%QPD1F4et.":`@-hAu>1GL9H=Xd94.5O7='1F=S -k0tTU.^H$';c,Dn=d/eMr8- -.amQA1?UZ1LhG013V)i(1AH-8r@jE;3qKI81B];3j#2Yt0f'Uae&=)KaZQoS4S-r` -1Y"WuF#,W.1NPE;.pj<<5;[FK5-scCnr5K).j!/D2)G=kPQO/4k;DkE2KTNhZkYjk -0]Y$:2cLqdoHcHG+=biu6M#mu'9,@jD)i8t3Dqk*"iPi1e/7PkoN<4,@U\Nto'/+b8WF>MV57F_C`ZjfZH#::,%%hsFh2&/u2),[d^;=3aAP_2kV,uR\+ -8X2#%FYu`j3Bq/U8lVobPsJAh5>)^(:mFmN[8T`J_+`@t=r2#g]9R#lFq4o.)270/Z -.nE[R;O,!\@]NFM1K1^'>kQ>tk%@YY6X@+Q?14sreQ6("TiC^N'\-DgS^1In]=]%d9O+cA[Z#Q2*>J.iEau&B(g'#[@^dVH!Ze`@u`]Z2>^a' -s(HS8BVueW2@4)@#ALUTMUiAJG,8:5Ipoc/@Fc`>o;)Pt1Lg$DC\GEr[Pqj[a^hj) -D"c7n2UuYffK#6t>W1PP2WB9g=_:]EAbPM02Xs"3f4Pk7Dta-K.?#abI;lWGE7W+j -*(82fS."lYgt8GP:]S(O\lPBlFi/Gh8&_[WclG%sbVt -H-<*#G9;-T,C6gBHM8[7[kVoi\T7GV/`O$V\&EEJUN?/uF>l^<$4-E.=+.PS/n8=< -cXUp\T[-\VIeWA^2t_ZEq(fF'DKl2+=9:\X4*YuZGZYQ&3#,?rD0\($E*++"\!MQQ -T7XP?K%(`c=06e8Z%I9a<`^YqfL:.0Eb9O9C3Rd@a8(-bc\8jV^JBE0=CjPrKna1o -Jp,7c\93ROH&&nXL[[0Np]ZIuKj6sJJN+0kG`di-Ps6U:JiFp23$,#B>Cr4qMYO<3 -2%,%=4,^U/MtfLP=@7b/aBIs=K_WrK.+!IR=bZY,NOC2.phc%-j?!)"@lNY)(<_LN -q2`&aO8/g&"j>E(U>PjWF>(u^2%=(3h0Nqm(0-;TpTb6U*#PaQNX3H^[6H'bNmOI6WH -3Ip&[NKMm3Onk!)3K\Q@H'3HDP#mp7ff,*tWKT?E+P.Eo=[@ua[@='EQblUafu8q> -h3D,GSG;!4(Y8?6Bq;!JB/s[hdTr@\l(5HQT)%oK-?Y]$%A0&A[?q>i=c]5%"e`Dm -JVJ04q'haE6&->URea"XoOXLP\Y?XDUA;HYg%Ck\;4NL2J9b@p3RldY?[_Xc:e0o5 -q;i<9oqf6*V>=Vt3b193rMI.&VWh6G3Y.n;$)`)tVn*+r3Z"`@'WDukU,nF2)O34, -.AIe5UH5*Jo7*Uj3NBYQ+rWbCH./g=gSDDVUr`V"fPRSQQ_o)RXSU>H3n:?AZ)64S -Xnpk(R>\!>H*4aCY53]o>(rod)6\VKXI:H73s2I.=[Cc",K\[+hd,S^d^Q+ikX3iNmkmZ^X+a_elK"o5Rse[/3_.4&r\7?*65.[G'R7U8b=/ieH\GHfI(d1`I)A'`5\\"KEgS)3*V7O:6 -])/J=)m-^r\Zso&Kde1NHc<:k#kr[#V$:kF4$gQ,5J=\Z^"_5I6XR3PW>_7/^AIH8 -48$@5GIAIh[JU"g\c]E'CV[Q%^t]7)ReO;&r;0Z!\=82VHmQ#'Dm=[A\Qgl"2mUj. -ZbsDa_u$j[4?^Vf6,\.F`4SscS5mN*=2d9l]=P2c4!5dt-+nRR`pD0[qS?tPH+j-( -^-$t\*/2H1g+3'bYS.V`S<_3DRE<+4A@qlM4Jdj;Fho'"_#1IR4LM+-(Ur25':^/] -Hm-^]`O+DN_`TTi>gpr1j2IPE`SBFk]]IE9kKZ3ScM[(U4R:=@n^!`u\f>.uI0I7N -G`k1+d/1on:;=I;A7p:HdJSXF*/Ds*.EFi^aSSSa>bBJn3RbZ)e+@q.4[m.AHcj"- -b5A`urDhB-(Une,_2V=6*6H&\C"@URYh[jT*HfV-Laq3WfDP[$4T3o\J_6NIfY*F" -rKZ$kRFs`mc8%-$SYZ`D-d`oRd5.`o*>t0?FjaR/d_3EDIDsu'hC@>9^:cDR*S&to -g"j?t*'Hg7I7`:C"^HIYeK+21IIl=oob*"%_7a5o^!YEdbLXB8']X&^I<4#3).23J -fmTFN4sAp6TAmR2inc-Dr\`_"3#CBQg3j4$gV_be8_W`#ll"eqh9"Fn=knI1jaLL` -ckFH3+0;$jk5KA`5'?%5KAN0ZkOB58h>-8_pZTtgUA`3QYi81.sA%gi- -WStRk;][%@*jt$W\)Y35li+Ta5.g01_;j.b`a1rar^Z&*Xg3CQk(;rJhI5i$?gbX< -m[imRK"6>4ET`qln,EFX56TjBJ_j`Ce@Oi,hN@>X(%K#!n^/P/hNu(5J`*,pl2N_ -Op(u>_-mn"<#QV\L;Mos(kbX+'o>ARO=0sD3?=/Nj:W=,S]pYf8YiY;<2NeHQV-B1 -fn@X^/Wicj%gR10FS;5#kS+pM%Z*WL;<\d`qD&jED\9 -;?V=ha79q&,"V8EP9WXs7$f8mZ@nVp8b/C#V\,^ZI4S#hbdT5uZNRfn9Cj.@1/.9r -dk]0h7+jFlZ\73r:",ou3mMfRo/ofi]_aife)^Np9hI^]D4QnK&OXr&AJ[j6<.u8^ -dI`\S8lG;P1J:YG`A^Rk[08Qf;tV.u;Gp@qg2540=kQj+ojqW7<`Oid>?8/NBjFd4 -h/cn(p%GYZAdO]`OThi[fsNd>Lt&- -Z.`ooV0(N0&XS -Er'Eo`d++fYF:Re`3DdiU1jBEPG;hq7[L#e\qZWPC&4ErWbV#uD65@0VRn8Bd]UKl -CjQ*(Z#&/Aca?C;%bj6coH)u#DEF`Y]5Cimlb)Z_f)*0S1bDG<<4jMQ_=655&&iNN -B+`1(HJ4Kmfetc>b&[EP1WsiEa#D=c]`hW]oP#&mQun/G_fFO\='O6urEj'dG#oU> -dp7C@gLt^MkBl*1rWe)7G^_#uj*:PnPN@(=B:J(0re9"c_/P(d8@anV?O`iBHpq[eW'P!)aQ8;!Td2GkdhMmS>2a-rj*$]iNNfS&H^DG]I -A&N_Bnb,+9kkQ=]'S/>#H2Pa-m33'.qgi]5#"\P1,\1_TOqLYa8Qdbod"t:/io"Xp -dBaaf&RU. -l^a6JG>@tl>U-=jSs.HH7lg*&B?Y?QEY:W5q$0/4o`:_M%YIS-&9(6DmiA1SL/@.S -6g/m7O]5>O+,Mj$W7761FCpP1qE7A_m3@1FE_f:7;+^"OT;?Y,Q;[Qb-mss_PgZFt -ds4cK$:M4deFoJ4q/9)Dog5Skp0>fkOYCNL^8Z6%VG&q21M0n6W`<*"HO1![oW@a>\fUGY*ISM=*jBtkIgYpQ0uC_])c8T -%!SC%*eN$K&Rk$+L9[$kK@%1SA8$[\U/jn/ffCQ+?aU`HP_tQ*gHfK>'qVduL=3HO -9h[!QX0l!:R+f_jCTW;sV=ir#;i5EeD:GO6FV`k697]q-'u.8&#,7@IT2Vmm9t?T; -k0+'osZ\qn75lmGhEWE[f9+hcfHulb/XnpKmaUHuG;A -^6dFJ=/uF1lkTE4=8)RLpV=j$D2Y[O(BRul#D-nQ$8pohbM`7LKP[Lu_A6S>ZeIKR -m5>p$=E`0Pr&KQeoEqua`tMZN:Md::.E.[L(Ljp.ACdQ -Mo*%a79OknM"HuWd[5e_Bg",GFN,WGppV)SrB7*$m\A8MP>Q&ld>dg"2M.=Z+_pq- -XE"NOef)sLj@kiAE_a6gHM1WTgnU,m(;\Xk:1\%Lb$21F@a#cEB5HCtZS*5rS0cl= -B0EN.G1PF&Rs/dfrP?!f'%P;ggN.7Z&:1tE -YIOF19Bi!+Vf_p3e9[H[Y1ojqm]NhFqUTf8]?>Ekrk6s.Vdeut7sf1"dCss&rU$/Z -$F$*2giu>1i;M9!SaX=5DYr?Rs+0[2&&VlOe])k&,Oq:jP'I!Gj=WGb -jd`6lH!`;02?u&0SCa3Tq2KgYR82rEQ_'k.ZKe6(AlXHlK!\6p@[n5.hrNbTB.Zl42kE^C0Ks4i@X1r((5 -5YO+%6o[G7d4^.\6`^U3ZjXdq4@@m4$<.MNgY"sl%1_C),/b3a4@DS277:BM6u5@] -H6U1A(dW787&i2TA/rP3*(8R#`8jW&e/cC?+2o3s74]QM415NE-:1ZW79in_CfiCH --UQXdFR4<+,SBVWHJ@7)#C_^o7]kcdEZAOBF/'bW4I!A/?Gmd#57%ATo -XF(I6)+=+G7-oCkr.%2r:rPh$73mIU4G-0t[>O) -?HC'EaOH5!=bNHjm4H_goY=;au7V]TUKU>6!R&\AG7au?GjI8`bS4VJc -$?U=/,]QERT8JRp$2d,n7!ZpKV+P!i8o1CtI&K3pI)ill9!#$GgjR6@I`Mr"9'i]: -oBAeFKLdZ"9,t92'NBrPM9B.\95KC,FLDaFMTG.q8GnNA]Xl;)]1^<]aU&nQoTMj? -_+Y9S8ONLc'UCaHV+I2s8X.7R3qg\.a[t"(alLT<\S[4_Th5a=8d*I-pnc+]O%MBu -8rV4n4Od)!eP0<"9kp*=SCgH@fZ1A#b5ABd]WY&JgEZ'hb:L"po\`A)i6+GV98qn( -K]GdRj[a3ubM;8ReEBQdkK]=Uc?\GD2!dmUm*%$J)g#W'e94N%C/5Q7+r^4"XRo3) -oZX]93W,LCm*3cPpeRC4MDWa;4P*BQrD25J:[J*Wr;[Zcg!C_l:b8Z+/5/dg"\m5G -:#-$r7,H3(#sQktd&dW!o]".ij3Cp>;!e`f<9DK.&Pf/8:7W%q*>?1f&B4.KcJ9:3 -m-[`1(SOP'MR;s#*66I;?U/H#;=+#(o_$W?e'-><:Q6SpTVP:.)U_n<;JddZI4/!Q -.12%9:d"nYX0+,k#1-W\dbQQSl'dJm$VgOBM"NLO4U\aB%++YVdqq!AI1N:<("#`: -;+3QD/N_F`4>f*Y:8#)DSNp&+5gbi_'I>2c"W^Ib78^q(-\uLATQF.XF:):s;>j-e -X\;UnD,5QT<:(p[ocsl+1=SHb<@q-L4]GEUM -<)#h_oOoU`8QQp'<0^'TeP"L_9\3!^-J53FrHM3kcIH3H=06gN]mNo+I6H+]eW!Y^ -l@)a(>Z`"NfI^@Hr=j^M7j@p#:4fVOE9h.B]aNE2U1En@/Y#tW8W$Mjg$NobrH?ls0oBOe -eHM^?*IZX9V-70%>&C0@HFVT2J(gHC9q\964b?kVK3HI]fM.-$kb$T-YtI4gfWDJ^ -]sLnL[7c^;=RD2SICEF?OP?>96?oh>7?ZEM]Na,o,5%:,rK^[lQJ;qd>TL^e'uX?/ -QQ@08ghiH;)KT&ha]ZlX$:URj%Er(jbu,R+f9N,do[$cqd9Rd@>qON24k(MnWEQFS -h.XXLXfbj`filq[/8_RmIBX%fZ.N(5=C@n.9s`S[i*IDa`LXPDXlNeOj]eSChFc@W -"hn3kP?sgE5J_tW9uGadm9\'*?H)A>h='4fmG)9nf)>0e]u]!*oi]heg"L,n(&2%Y -ptX\K5g@Y_^!G$,eDK*]?g[l#rW$=3]%qM[>,D?1"k[+Of\N\6?tqpI*T#Vkh[1+S -i2ncjrS_//i8EGN@,RU42R+cgo."*VBfN?-!ukc?a]gc/GS-=.:Sku@]h4j^+9Q` -"5l'i?n-J!:'Y050k1\K+*Iot[G6Wt1h0_2=H3humPn^*3CT%+@3uZJ^,oiM'4]PU -@87SJrYK)L(po+EG;"b(-ZeMc?3j?SE/gWkD"1pmE<'^;JI4IkO,*[5,;pgV.s4O -BF^qR"KQ2WKBOq@C8M2Kg_l#)l(^:S1+\shKEB-+fG1,J1?FQqAmg""8[rkrOE`G,QNMEZ?&HeE.G -a_[QkCp(rt\p.t==DET8NBUM1T$V5Td,httk_3COm]JuJYA4oXCED)ECP7R'[HgSo -D6DT0^=fWH`Tri"BeJ:[krK0K]'^WPDC3&7/]*le^@#8qhbM&T(?f+3_sC^Jlt5O# -^7f2Bm93!'DXQt2rpXh9nK(`UD_BcDEeA?M1b5,C'jiXX+':#I_o_]l0c"j -DQaRM[3BMEr,3YiEA%uF588*/H1*Z:nRhDq(A7-7)"F.LlGh>m*r0`/Lunp>na?